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

时间:2012-11-04 20:30:32

标签: mips cpu-registers computer-architecture

我的计算机架构书籍解释了

  

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

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

2 个答案:

答案 0 :(得分:4)

读取寄存器的值是异步的,而在您在类中工作的架构中,寄存器是同步写入的(即写入是边沿触发的)。

这意味着您可以读取寄存器的当前值,对其应用某些操作(例如,立即添加一些操作)并在下一个提升时钟边沿写入结果。

假设您要发布addiu $1, $1, 123,即获取当前值$1,添加123并将结果存回$1

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

答案 1 :(得分:0)

寄存器文件由触发器构成。每个触发器都有一个存储器,一个输入,一个输出和一个触发器。输出始终显示存储的值,因此可以一直读取。 通过触发器的上升沿,输入值将移动到存储区中。