floating-point - 为什么浮点寄存器不同于通用寄存器
问题描述
大多数架构都有不同的寄存器集来存储常规整数和浮点数。从二进制存储的角度来看,存储东西的位置不应该是对的吗?它只是 1 和 0,难道他们不能将相同的通用寄存器传送到浮点 ALU 中吗?
SIMD(xmm
在 x64 中)寄存器能够存储浮点数和常规整数,那么为什么相同的概念不适用于常规寄存器呢?
解决方案
对于实际的处理器设计,比“二进制存储观点”要考虑的问题要多得多。
例如,线路长度很重要,因为一次可以移动数十位的并行路径占用了芯片空间,并且因为沿着线路获取信号需要时间。几分之一英寸的时间不多,但当一个周期是几分之一纳秒时仍然很重要。相比之下,真空中的光在一纳秒内可以传播约 11.8 英寸。电线中的电信号较慢。
这使得将寄存器放在将要使用其内容的算术单元附近是一个好主意。使用单独的整数和浮点寄存器,处理器可以具有接近通用 ALU 的整数寄存器和接近浮点单元的浮点寄存器。
还存在用于读取和写入寄存器的路径数量有限的问题。通过独立的寄存器组,ALU 和浮点单元具有独立的寄存器访问路径,允许同时发生更多事情。周期时间不再迅速下降,处理器速度提高的其他来源之一是并行执行更多操作。
我不知道这些问题中的哪一个目前很重要,但总的来说,分离寄存器组给处理器设计人员提供了机会,如果将这些组结合起来,他们就不会拥有这些机会。
推荐阅读
- excel - 无法仅粘贴值
- json - ionic4 cordova插件http.get接收json,预期传递json,但传递字符串
- vba - 在 VBA 中实现接口的事件
- mysql - mysql命令行不输出结果
- amazon-web-services - 如何在禁用集群模式的情况下从 redis 只读副本读取?
- java - 如何接收来自特定号码的短信消息?
- laravel-5 - 如何在 Laravel 项目中使用 OpenSSL 在 Wamp 中配置本地颁发者证书?
- amazon-web-services - 如何自动化 AWS 数据迁移服务
- node.js - 从docusign下载签名文档为JSON
- ios - 无法使用 FCM 向 iOS 发送静默推送通知