cpu - MIPS 中的注册文件转发

标签 cpu mips cpu-architecture

我正在阅读计算机组织和设计中的第 4.7 节:数据转发的硬件/软件接口(interface)。书中给出的例子中,有寄存器文件转发。(书中就是这样写的example)

为什么需要注册文件转发?寄存器中的数据在前半个时钟写入,在后半个时钟读取,所以不用转发应该是安全的。

只是为了阐明上面链接中给出的示例:Reg 的左侧阴影表示它被写入,右侧 - 被读取。

谢谢!

最佳答案

Figure 4.53 of Computer Organization and Design, (c)2009 Elsevier

您需要寄存器文件转发以防止停顿。

如果仔细观察第二条指令(和$12、$2、$5)需要使用寄存器$2,但是在前一条指令()中计算的值sub $2, $1, $3) 将在时钟周期 5 中写回到寄存器文件中。因此,如果不是因为寄存器文件转发,第二条指令将不得不暂停,直到寄存器 $2 被写回。转发在指令 1 的 ALU 运算结果和指令 2 的 ALU 运算的第一个参数之间用天蓝色线显示。

同样,第三条指令(或$13、$6、$2)在第一条指令实际写回寄存器文件之前也需要使用$2。因此,再次为了防止停顿,寄存器转发用于将第一条指令的结果用作第三条指令的参数。

另一方面,第四条指令(add $14, $2, $2)不需要使用流水线寄存器转发,因为第一条指令的结果在前半段写回周期 5,因此当第四条指令需要时,它的内容已经更新。

关于cpu - MIPS 中的注册文件转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13354606/

相关文章:

windows - 如何获取 Powershell 中的 CPU 内核数?

c# - 使用 Threads C# 制作的聊天服务器的 CPU 使用率 100%

arrays - .space 在 mips 中有什么作用?

c - 如何将 C 代码转换为 MIPS 程序集?

security - 什么是 retpoline,它是如何工作的?

assembly - native 可执行文件的哪一部分(特别是)使其不可移植?

caching - Linux perf 如何计算缓存引用和缓存未命中事件

linux - Linux 上有没有一些命令可以只输出 CPU 和内存使用情况?

linux - 龙芯CPU和MIPS汇编?

architecture - 什么是存储缓冲区?