考虑一个四级流水线处理器。下面显示了S1,S2,S3,S4阶段的四个指令I1,I2,I3,I4所需的周期数:
S1
|
S2
|
S3
|
S4
|
|
I1
|
2
|
1
|
1
|
1
|
I2
|
1
|
3
|
2
|
2
|
I3
|
2
|
1
|
1
|
3
|
I4
|
1
|
2
|
2
|
2
|
执行以下循环所需的周期数是多少?
对于(i = 1到2){I1; I2; I3; I4;}
(A) 16
(B) 23
(C) 28
(D) 30答案: (B)
说明:该问题与流水线上的其他问题在每个阶段在每个指令上占用的周期数不同,即此处的一条指令在不同阶段可能占用不同的周期数,并且两条指令可能占用不同的周期数。循环也处于同一阶段。
因此,这里我们必须考虑两件事:1)资格2)可用性
也就是说,指令i应该有资格被授予阶段j,阶段j应该可以(免费)用于处理/处理指令i。
现在,让我们看看如何同时实现以上两个目标。
当且仅当指令i已完成阶段j-1时,才有资格向阶段j发出指令i。
类似地,当且仅当阶段j已完成指令i-1时,阶段j才可用于指令i。
因此,通过遵循并满足以上两个条件,我们必须确定这些指令在2次迭代的循环中所占用的总周期数。
注意:一条指令i在且仅当它已完成其在迭代1中的处理时,才有资格在迭代2中进行处理。
这个问题的测验