如何解决更改为更改寄存器文件的多周期实现,使其只有一个读取端口
对于sw指令,第3个周期的RegRead不需要设置为1;
解决方法
sw
指令有两个寄存器源,add
指令也是如此。
add
需要在 ID 阶段获取两个源(如果是多周期则是循环,如果是流水线则是阶段),以便可以在下一阶段 EX 中添加它们的值。
但是sw
只需要在ID阶段获取rs
(和imm
),以便在下一阶段(EX)添加它们。获取 rt
寄存器(Write Data 的值)可以延迟到 EX 阶段,因为实际存储不会发生,直到 EX 之后的下一个阶段,即 MEM 阶段。
因此,虽然延迟读取 rt
可以将 sw
指令的寄存器文件上的读取端口减少到 1,但它对 add
指令没有任何作用——为了减少对于所有指令的一个读取端口,我们将不得不插入一个额外的阶段。
此外,这种方法仅适用于多周期机器,但流水线机器需要一些其他方法,因为所有阶段(流水线阶段)重叠——将一条指令的读取分散到多个周期并不会减轻负载在注册文件上。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。