我的计算机体系结构书籍解释了这一点
“由于对寄存器文件的写入是边沿触发的,因此我们的设计可以
在一个时钟周期内合法地读写同一个寄存器:
read 将得到在较早的时钟周期写入的值,而
写入的值将可在后续时钟周期中读取。”
这是有道理的,我有点明白寄存器文件是怎么回事。但是,我不明白每个事件何时发生。假设我们正在同一个周期中读取 32 个寄存器文件之一并对其进行写入。寄存器什么时候被读取?会写到什么时候呢?我不完全理解事件是如何由时钟边沿触发的,因此解释一下也会有所帮助。谢谢你!
读取寄存器的值是异步的,而在您在类中工作的架构中,寄存器是同步写入的(即写入是边沿触发的)。
这意味着您可以读取寄存器的当前值,对其应用一些操作(例如添加一些立即数)并在下一个时钟上升沿写入结果。
假设您想发行addiu $1, $1, 123
,即取当前值$1
,加上 123 并将结果存储回$1
.
在时钟周期开始时,控制单元将指示寄存器文件将 $1 的内容放入进入 ALU 的数据总线之一。控制单元还会指示将立即数 123 放入也进入 ALU 的另一条数据总线中。加法只是在 ALU 内部实现的组合电路,它会计算所述加法并将结果放入连接寄存器文件的数据总线中进行存储。
所有这些都是在时钟上升沿发生之前完成的,并且相加结果直到下一个上升沿出现为止。在某个时刻出现上升沿,加法结果现在被写回到寄存器中$1
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)