我的计算机体系结构书籍解释说
“由于对寄存器文件的写入是边沿触发的,我们的设计可以在一个时钟周期内合法地读取和写入同一个寄存器:读取将获得在较早时钟周期写入的值,而写入的值将可用于读入随后的时钟周期。”
这有点道理,我有点理解寄存器文件发生了什么。但是,我不明白每个事件何时发生。假设我们正在读取 32 个寄存器文件之一,并在同一个周期中写入它。什么时候读取寄存器?什么时候写?我不完全理解时钟边沿是如何触发事件的,所以解释一下也是有帮助的。谢谢!
我的计算机体系结构书籍解释说
“由于对寄存器文件的写入是边沿触发的,我们的设计可以在一个时钟周期内合法地读取和写入同一个寄存器:读取将获得在较早时钟周期写入的值,而写入的值将可用于读入随后的时钟周期。”
这有点道理,我有点理解寄存器文件发生了什么。但是,我不明白每个事件何时发生。假设我们正在读取 32 个寄存器文件之一,并在同一个周期中写入它。什么时候读取寄存器?什么时候写?我不完全理解时钟边沿是如何触发事件的,所以解释一下也是有帮助的。谢谢!
读取寄存器的值是异步的,而在您在课堂上工作的体系结构中,寄存器是同步写入的(即写入是边沿触发的)。
这意味着您可以读取寄存器的当前值,对其应用一些操作(例如添加一些立即数)并在下一个时钟上升沿写入结果。
假设您要发出一个addiu $1, $1, 123
,即取 的当前值$1
,加上 123 并将结果存储回$1
.
在时钟周期开始时,控制单元将指示寄存器文件将 $1 的内容放入进入 ALU 的数据总线之一。控制单元还将指示将立即数 123 放入也进入 ALU 的其他数据总线。加法只是在 ALU 内部实现的组合电路,将计算所述加法并将结果放入连接寄存器文件的数据总线中进行存储。所有这些都是在时钟上升沿发生之前完成的,并且加法的结果会在下一个上升沿出现。在某个时刻出现上升沿,加法的结果现在被写回寄存器$1
。
寄存器文件是由触发器构建的。每个触发器都有一个存储、一个输入、一个输出和一个触发器。输出始终呈现存储的值,因此可以一直读取。随着触发器的上升沿,输入值移动到存储中。