在多周期中实现跳转寄存器(jr,sll,slti)

时间:2020-06-03 02:08:39

标签: mips cycle fsm

我被要求为指令(js,sll,slti)一起绘制多周期数据路径和控制单元。并为这3条指令绘制主控制器FSM。

我正在努力,我知道如何使用单周期数据路径而不是多周期。

请帮助

1 个答案:

答案 0 :(得分:0)

如果您知道单周期数据路径,并且想将其用于多周期,通常来说,我们将单周期细分为多个阶段。

由于一次只能执行一个阶段,因此,相对简单的状态机控制当前/下一个阶段要执行,以激活适当的阶段,并停用其他阶段。

这些阶段与流水线处理器的阶段相似,即与指令获取,解码,执行,内存和写回相对应的那些阶段。

在流水线机器中,所有指令都需要经过所有阶段,但是,在多周期机器中,某些指令可以跳过某些状态,这应该在状态机中体现出来。例如,尽管所有指令共享指令提取和解码,但只有加载和存储与数据存储器交互,因此任何其他指令都可以跳过Mem阶段。

最简单的状态机可以为每条指令连续选择所有状态,而无需查阅该指令。这将无法利用对某些不需要这些指令的指令跳过阶段的功能,当然,除了最简单的状态机之外,您还被要求做更多的事情。

更好的状态机可能以指令获取作为活动状态开始,然后进入解码状态,然后,它可以使用实际指令的知识来确定对于该给定指令跳过哪些剩余阶段。

您可以想象控制逻辑会获取一些位,这些位通知状态机对于任何给定的操作码可以跳过哪些阶段。剩下的状态/阶段只有三个,因此Control所需要的只是每个状态的布尔值。

有关更多信息,尤其是有关阶段及其作用的更多信息,我建议搜索流水线/管道MIPS,因为我认为流水线处理器的资料比多周期设计更多。您不必担心管道问题,但是将单周期设计分解为阶段可能会有所帮助。

相关问题