MIPS 32位架构:如何在同一个时钟周期内读取和写入寄存器文件中的寄存器?

Mah*_*ans 6 mips computer-architecture cpu-registers

我的计算机架构书解释说

"由于对寄存器文件的写入是边沿触发的,我们的设计可以在一个时钟周期内合法地读取和写入相同的寄存器:读取将获得在较早的时钟周期中写入的值,而写入的值将可用于读取随后的时钟周期."

这有点道理,我有点理解寄存器文件发生了什么.但是,我不明白每个事件发生的时间.假设我们正在从32个寄存器文件中的一个读取并在同一周期中写入它.何时读取寄存器?什么时候写到?我不完全理解事件是如何由时钟边缘触发的,所以它也有助于解释.谢谢!

gus*_*bro 5

读取寄存器的值是异步的,而在您正在使用类的体系结构中,寄存器是同步写入的(即,写入是边沿触发的)。

这意味着您可以读取寄存器的当前值,对其进行一些操作(例如,添加一些立即数),然后在下一个时钟上升沿写入结果。

假设您要发出一个addiu $1, $1, 123,即采用的当前值$1,加123并将结果存储回$1

在时钟周期开始时,控制单元将指示寄存器文件将$ 1的内容放入进入ALU的数据总线之一中。控制单元还将指示将立即数123放入也进入ALU的另一条数据总线中。加法器只是在ALU内部实现的组合电路,将计算所述加法器,并将结果放入连接寄存器堆进行存储的数据总线中。所有这些操作都是在时钟的上升沿发生之前完成的,并且相加的结果会一直显示到下一个上升沿。在某个时候出现上升沿,并且相加的结果现在被写回到寄存器中$1