考虑一个 4 级流水线处理器。 S1、S2、S3、S4阶段4条指令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;}
(一) 16
(乙) 23
(三) 28
(四) 30答案:(乙)
说明:这道题不同于流水线上的其他题,每条指令在每一阶段所占用的周期数不同,即这里的一条指令在不同阶段所占用的周期数可能不同,而且两条指令所占用的周期数也可能不同。也在同一阶段循环。
因此,在这里我们必须考虑两件事:1) 资格 2) 可用性
即指令 i 应该有资格被给予阶段 j,并且阶段 j 应该可用(免费)来处理/处理指令 i。
现在,让我们看看如何实现上述两件事。
当且仅当指令 i 已完成阶段 j-1 时,指令 i 才有资格进入阶段 j。
类似地,当且仅当阶段 j 已完成指令 i-1 时,阶段 j 将可用于指令 i。
因此,通过遵循并满足以上两个标准,我们必须确定这些指令在 2 次迭代的循环中占用的总周期数。
注意:指令 i 将有资格在迭代 2 中处理,当且仅当它在迭代 1 中完成了处理。
这个问题的测验