CPU 具有五级流水线并以 1 GHz 频率运行。取指令发生在流水线的第一阶段。条件分支指令计算目标地址并评估流水线第三阶段的条件。处理器在条件分支之后停止获取新指令,直到知道分支结果为止。一个程序执行 10^9 条指令,其中 20% 是条件分支。如果每条指令平均需要一个周期完成,则程序的总执行时间为:
(A) 1.0 秒
(B) 1.2 秒
(C) 1.4 秒
(D) 1.6 秒
CPU 具有五级流水线并以 1 GHz 频率运行。取指令发生在流水线的第一阶段。条件分支指令计算目标地址并评估流水线第三阶段的条件。处理器在条件分支之后停止获取新指令,直到知道分支结果为止。一个程序执行 10^9 条指令,其中 20% 是条件分支。如果每条指令平均需要一个周期完成,则程序的总执行时间为:
(A) 1.0 秒
(B) 1.2 秒
(C) 1.4 秒
(D) 1.6 秒
Total_execution_time = (1+stall_cycle*stall_frequency)*exec_time_each_inst
exec_time_each_inst = 1s [i.e @1ghz need to execute 10^9 inst => 1 inst = 1 sec]
stall_frequency = 20% = .20
stall_cycle = 2
[即在管道的第 3 阶段,我们知道分支结果,因此会有 2 个停顿周期]
因此 Total_execution_time = (1+2*.20)*1 = 1.4 秒
我不知道如何更好地解释它,但希望它有点帮助:)