题目
如果一条指令的执行过程分为取指令、指令译码、指令执行三个子过程,每个子过程时间都为100ns。(1)请分别画出指令顺序执行和流水执行方式的时空图[1]。(2)计算两种情况下执行n=1000条指令所需的时间。(3)流水方式比顺序方式执行指令的速度提高了几倍?
如果一条指令的执行过程分为取指令、指令译码、指令执行三个子过程,每个子过程时间都为100ns。
(1)请分别画出指令顺序执行和流水执行方式的时空图[1]。
(2)计算两种情况下执行n=1000条指令所需的时间。
(3)流水方式比顺序方式执行指令的速度提高了几倍?
题目解答
答案
(1) 指令顺序执行的时空图如下:

在指令顺序执行方式中,每条指令都要经过取指令、指令译码、指令执行三个子过程。每个子过程都需要100ns的时间。因此,三条指令的执行总时间为900ns。
流水执行方式的时空图如下:

在流水执行方式中,每条指令的子过程可以并行执行。当第一条指令的取指过程完成后,第二条指令断续开始取指。当第一条指令断续进行指令译码时,第二条指令断续开始取指,第三条指令断续开始取指。这样,三条指令的执行总时间为500ns。
(2) 根据题目给出的条件,指令顺序执行方式下所有n=1000条指令所需时间为:总时间 = 3 ×时间/条 × n = 300,000 ns。
而流水线方式下,在初始阶段有4条流水线级别(包括取指、译码、运算和写回),那么第一条命令从头到尾共需要400ns(4 ×100)。但是随着其他命令的进入,后续命令将会受到前面命令所占用的流水线级别数目的影响。因此,在这种情况下所有n=1000条指令所需时间为:总时间 = 流水线长度 × 时间/条 × n = 400,000 ns。
(3) 综上所述,流水方式比顺序方式执行指令的速度提高了1.33倍(
)。