我知道单周期程序效率不高。原因之一是并非所有指令的长度都相等,但在单周期程序中,所有指令都在相同的时间长度内完成。
在pipeline中,吞吐量增加,这意味着在达到某一点后,一个输出与下一个输出之间的时间将比单周期实现更短。但是,你能说指令在流水线方法采取相同的时间(从IF/指令取到WB/回写)?或者这个结论是错误的?
看到所有指令在一个单周期非流水线结构不一定需要相同的时间,而下一个指令执行后,一个指令不能开始,直到下一个时钟周期,当前指令可能在当前周期之前完成,因为周期长度是由最长的指令决定的,例如在RISC中添加寄存器在加载之前完成。
现在在流水线结构中处理器是
多阶段用寄存器来存储和传播处理器的状态。现在基本上在流水线处理器上,我们通过重叠两个指令的子阶段来节省时间。因此,尽管个别教学的长度增加了,但总体时间却减少了。现在看到每个指令可能不会经过所有的阶段,例如加载和添加因此,每条指令的总延迟将由所有阶段组成,但它的执行可能花费了更少的周期数
所以你可以说每条指令的延迟是相同的但不是执行时间或周期消耗