微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更改为更改寄存器文件的多周期实现,使其只有一个读取端口

如何解决更改为更改寄存器文件的多周期实现,使其只有一个读取端口

单读端口:

single read port

对于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 举报,一经查实,本站将立刻删除。