一条指令流水线有 4 个阶段:指令取回(IF)、指令解码(ID)、执行指令(Ex)、回写(WB)。所有指令都占用所有阶段并需要 4 个时钟周期。分支指令不重叠,即分支之后的指令直到分支已知时才被提取。分支在执行阶段是已知的。假设 20% 的指令是有条件的,而 80% 的指令是无条件的。计算 100 条指令的加速(最多 2 位小数)。忽略分支可能不被采用的情况。
(一) 2.86
(二) 3.21
(C) 1.65
(四) 2.57答案:(一)
说明:假设每个阶段需要 1 秒。
20 个条件 – 20*3 s(条件指令的每条指令周期为 3,因为分支在第三阶段已知)
80 无条件 – 80 s(无条件每条指令的周期数为 1)
所以管道花费的总时间 = 20*3 + 80
= 140 秒
没有流水线所花费的时间 = 4 * 100(所有指令的周期为 4)
加速 = 400 / 140 = 2.86这个问题的测验