我知道算术逻辑单元(处理器的ALU )执行算术(和位)操作,结果被存储为ALU的输出--但是哪些组件、设备或软件实际上正在访问/使用ALU的输出?如果说ALU返回一个操作的结果是有效的,还是说这是错误的?
发布于 2018-02-11 23:28:11
这在很大程度上取决于处理器的设计;但是,大体上我要说,来自请求的操作的ALU输出是暂时可用的,并且取决于正在执行的指令:
最后,并非所有指令都向ALU提出请求--考虑一个分支指令,也许,它有自己的计算新pc值的方法,而不涉及ALU。但是,即使在不使用时,ALU仍然存在,并且仍然有输出行,只是捕获/转发机制被配置为不处理输出。
是的,所以让我们来讨论一种执行ADD r3,r1,r2的机器指令,其中r1 & r2是来自寄存器文件的源,而r3是寄存器文件中的目标。
寄存器r3将(在已知读取ALU结果的一个适当周期)切换到捕获模式,并将ALU输出提供给寄存器文件数据行。到下一个时钟,ALU输出将被捕获到r3中。
如果指令是"LOAD r3,“然后将发生相同的捕获启用,但是数据总线值将提供给寄存器文件数据行而不是ALU。
稍后,如果执行STORE r3,...,r3中的值将被放置到数据总线上,用于内存写入。
注册文件被“移植”。它可以有多个读和/或写端口。每个端口允许在同一周期内访问寄存器文件。因此,两个读端口和一个写端口意味着两个不同的寄存器可以在同一个周期中读取,一个可以在同一个周期中写入。
https://softwareengineering.stackexchange.com/questions/365768
复制相似问题