MIPS 32位体系结构:如何在同一时钟周期中读取并写入寄存器文件中的寄存器



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

"由于写入寄存器文件是边缘触发的,因此我们的设计可以 在时钟周期内合法读写相同的寄存器: 读取将在早期的时钟周期中获得值,而 编写的值将在随后的时钟周期中阅读。"

这是有道理的,我在某种程度上了解了寄存器文件的情况。但是,我不明白每个事件何时发生。假设我们正在从32个寄存器文件之一中读取并在同一周期中写给它。何时从寄存器中阅读?什么时候写信?我不完全了解时钟边缘如何触发事件,因此也可以解释这一点。谢谢!

读取寄存器的值是异步的,而在您在课堂上工作的架构中,寄存器是同步编写的(即,写字是边缘触发的)。

)。

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

假设您要发行addiu $1, $1, 123,那就是$1的当前值,添加123并将结果存储在$1中。

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

寄存器文件是从触发器构建的。每个触发器都有一个商店,输入,输出和触发器。输出始终显示存储的值,因此可以一直读取。触发器上的边缘上升,输入值移至商店。

最新更新