ALU是否有自己的内存或寄存器来存储输入操作数等,还是只使用CPU寄存器(不只是专门用于ALU任务)?
发布于 2021-01-27 22:24:00
ALU是CPU的一部分,所以你的问题措辞有点混乱。ALU寄存器定义为CPU寄存器。尽管如此,有些寄存器是命名的,对程序员来说是可见的,还有一些寄存器没有真正的名称,只在内部使用,尤其是在流水线处理器中。他们的价值观将类似于“EAX 3时钟周期以前的情况”。任何时候,一个价值都需要被记住一段时间。
发布于 2021-01-28 01:47:55
在硬件方面,有两种布线方式:
CPU寄存器是有效的时序电路,它们从一个周期到另一个周期记住数据值,以便根据正在执行的程序的指令对这些数据值进行操作,也就是说,尽管执行相同的指令(循环的主体),程序循环还是对不同的数据进行操作,因为寄存器是更新的。
一般说来,ALU是一个组合电路,它只根据输入提供计算结果,而不存储以前的操作。
以上是对现代处理器的严重过度简化。
多周期处理器将单个指令的执行扩展到多个周期,流水线处理器也是如此;两者都需要额外的状态来管理,所以使用附加的内部寄存器。
寄存器重命名和处理器的许多其他特性(分支预测、缓存等)还涉及到我们将考虑顺序电路的状态,即涉及寄存器或其他存储。
发布于 2021-07-26 04:34:20
现代处理器使用两种类型的寄存器。
X86/AArch64只有几个体系结构寄存器,这是对性能的巨大限制,因为只有有限数量的寄存器,指令需要等待寄存器的出现。
这就是为什么处理器使用Tomasulo算法来重命名寄存器,在运行时将架构寄存器分配给物理寄存器。例如,arm AArch64只有31个结构寄存器,但M1有600多个物理寄存器。结合一个用于无序执行的巨大窗口、超级标量资源和流水线,以相对较低的频率,与简单的顺序执行相比,仍然可以获得巨大的性能改进。
https://softwareengineering.stackexchange.com/questions/421555
复制相似问题