2012-11-04 37 views
4

我的计算机体系结构的书解释说,MIPS 32位架构:一个寄存器文件中的寄存器如何在同一个时钟周期内读写?

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

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

回答

2

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

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

假设你想发出一个addiu $1, $1, 123,即取当前值$1,加123并将结果存回$1

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

0

寄存器文件是从触发器构建的。每个触发器都有一个存储器,一个输入,一个输出和一个触发器。输出始终显示存储值,因此可以始终读取。 随着触发器的上升沿,输入值移动到存储器中。