时钟周期和 R 型命令执行次数

问题描述

时钟周期需要多长时间,在 ns 中执行 R 型命令 ADD $1,$2,$3 需要多长时间:

单周期数据路径

多周期数据路径

流水线数据路径

img

解决方法

对于单周期处理器,一个周期的时序和一条指令的时序是相同的值。所有的函数都必须能在同一个周期内发生,所以把所有函数的时序加起来,既是一个周期的最小时序,也是一条指令的时序。

对于多周期处理器和流水线处理器,周期和指令的时序是分开的,因为指令分布在多个周期上。

对于流水线处理器,每个功能(阶段)必须具有相同的周期时间,因为所有阶段都重叠。因此,循环时间是各个阶段中的最大值。将该周期时间乘以阶段数,即指令的持续时间。 (同样由于阶段重叠,每条指令都要经过每个阶段。)

所以,这给出了一条指令通过整个流水线的时间;然而,由于指令执行重叠,在理想情况下,尽管每个周期经过 5 个流水线阶段,但在理想情况下,每个周期完成一条指令,因此对于添加指令的周期数给出了另一个答案。

多周期更复杂(与流水线相比),因为没有阶段重叠,没有真正要求(1)所有阶段具有相同的持续时间,以及(2)每条指令执行所有阶段。

关于前者,每个阶段的时间可能会有所不同,因为没有理由将任何单独的阶段拉长到不必要的时间。这样做的方法是运行一个更快的时钟,并使各个阶段成为该更快时钟的倍数。例如,使用 1ns 时钟,第一阶段可能需要 3 个周期来完成 3ns 的工作,然后分别为 2、2、4 和 2。这使得第一个问题难以回答,因为它要求的时钟速度在我的示例中必须是 1ns,但也可以是 1/2 ns 或 1/4 ns,只要每个阶段使用尽可能多的周期因为它需要导致该持续时间。

对于后者,Data Mem 阶段与添加指令无关,因此很可能会被阶段控制单元跳过。在那种情况下,添加指令的时间将是相关阶段的总和。