【问题标题】:CPU Pipeline: How to find average instruction execution timeCPU 流水线:如何找到平均指令执行时间
【发布时间】:2017-06-02 07:01:06
【问题描述】:
在具有由获取、解码、执行和写入组成的四 (4) 级管道的 CPU 中
后面,每个阶段分别需要 10、6、8 和 8 ns。以下哪一项是
CPU 中以纳秒 (ns) 为单位的近似平均指令执行时间?在这里,
要执行的指令数量足够多。此外,开销为
流水线过程可以忽略不计,并且忽略所有危险的延迟影响。
a) 6
b) 8
三)10
d) 32
答案是 10ns。但我认为它可能是 8ns,因为执行阶段需要 8ns。请简单解释一下。谢谢
【问题讨论】:
标签:
pipeline
cpu-architecture
【解决方案1】:
每条指令都必须经过四个阶段。一旦流水线满了,指令的进出流由最长阶段的持续时间决定:
Fetch|Decode|Exec|Write|
10ns | 6ns |8ns | 8ns |
-----+------+----+-----+
I7 I6 I5 --> I4 : I3 : I2 : I1 --> out
-----+------+----+-----+
I1..I7 are instructions. I1..I4 are in the pipeline, I5..I7 are
waiting to enter the pipeline.
6ns 后,I3 准备好从 Decode 移动到 Exec,但由于阶段 Exec 仍被 I2 占用而无法移动
再过 2ns(总共 8ns)后,I1 移出 Write,I2 从 Exec 移到 Write,I3 终于可以从 Decode 移到 Exec
I4还在阻塞Fetch,所以I5无法进入
再过 2ns(总共 10ns)后,I4 从 Fetch 移动到 Exec,并且 I5 可以进入。
您会看到管道停止,直到最长的阶段完成;每 10ns 一条指令进入流水线。 (Decode 阶段将有 40% 的时间空闲,Exec 和 Write 阶段有 20% 的时间。)
【解决方案2】:
在流水线的情况下,“产生输出的速率”由最慢的阶段决定。不管管道的其余部分工作多快,事情都受速率解码器操作的约束。因此,我们可以期望流水线每 10 ns 产生一个输出。 “产生输出的速率”可以解释为平均执行时间。所以它是 10 ns。