【发布时间】:2020-09-21 15:15:38
【问题描述】:
我被要求为指令(js、sll、slti)一起绘制一个多周期数据路径和控制单元。并为这3条指令绘制主控制器FSM。
我很纠结,我知道如何使用单周期数据路径而不是多周期。
请帮忙
【问题讨论】:
我被要求为指令(js、sll、slti)一起绘制一个多周期数据路径和控制单元。并为这3条指令绘制主控制器FSM。
我很纠结,我知道如何使用单周期数据路径而不是多周期。
请帮忙
【问题讨论】:
如果您知道单周期数据路径,并希望将其转化为多周期,一般来说我们将单周期细分为多个阶段。
由于一次只执行一个阶段,一个相对简单的状态机控制当前/下一个要执行的阶段以激活适当的阶段,并停用其他阶段。
这些阶段类似于流水线处理器的阶段,即对应于指令获取、解码、执行、内存和写回的阶段。
在流水线机器中,所有指令都需要经过所有阶段,但是在多周期机器中,某些指令可以跳过某些状态,这应该在状态机中体现出来。例如,虽然所有指令共享指令获取和解码,但仅加载和存储与数据存储器交互,因此任何其他指令都可以跳过 Mem 阶段。
最简单的状态机只是为每条指令连续选择所有状态,而无需咨询指令。这将无法利用跳过某些不需要这些阶段的指令的阶段的能力,当然,您需要做的不仅仅是最简单的状态机。
一个更好的状态机可能会从指令获取作为活动状态开始,然后进入解码状态,然后它可以使用实际指令的知识来决定为该给定指令跳过哪些剩余阶段。
您可以想象,控制逻辑会获取一些位,这些位会通知状态机对于任何给定的操作码可以跳过哪些阶段。只剩下三个状态/阶段,因此 Control 所需的只是一个布尔值。
如需更多信息,尤其是关于阶段及其作用的信息,我建议搜索流水线/流水线 MIPS,因为我相信流水线处理器的资料比多周期设计的资料要多。您不必担心流水线危害,但将单周期设计分解为多个阶段可能会有所帮助。
【讨论】: