我计划在 FPGA 上用 VHDL 设计一个类似 MIPS 的 CPU。 CPU 将具有经典的五级管道,没有转发和危险预防。在计算机体系结构课程中,我了解到第一个 MIPS-CPU 用于在时钟上升沿读取寄存器文件并在时钟下降沿写入。我使用的FPGA不支持同时使用上升和下降时钟沿(关于寄存器的读取和写入),所以我不能完全像原来的MIPS那样,必须在上升时钟沿上完成这一切。
所以,这是我遇到问题的部分。该指令在回写阶段回写寄存器。写回阶段将数据直接发送到解码阶段。解码阶段中的另一条指令想要读取写回阶段想要写入的同一寄存器。
在这种情况下会发生什么?解码阶段是否采用指令的新值或仍在寄存器文件中的旧值?
适合经典五级设计的解码级的寄存器文件由一个三端口 RAM(或两个双端口 RAM)以及两个复用器和比较器组成。比较器和复用器需要绕过来自写回级的数据。这是需要的,因为写数据在下一个周期写入三端口 RAM。因为来自写回级的信号是同步的,所以这不是问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)