单选题
通常可以将计算机系统中执行每一条指令的过程分为取指令、分析和执行指令3步。若取指令时间为4Δt,分析时间为2Δt,执行时间为3Δt。按顺序方式从头到尾执行完600条指令所需时间为______Δt。如果按照执行第i条、分析第i+1条、读取第i+2条重叠的流水线方式执行指令,则从头到尾执行完600条指令所需时间为______Δt。
【正确答案】
B
【答案解析】[解析] 若取指令时间为4Δt,分析时间为2Δt,执行时间为3Δt。不采用流水线而按顺序方式从头到尾执行完600条指令所需时间为5400Δt。
流水线(Pipeline)是一种将指令分解为多个小的步骤,并让几条不同指令的各个操作步骤重叠,从而实现几条指令并行处理以加速程序运行速度的技术。因为计算机中的一个指令可以分解成多个小步骤,如取指令、译码、执行等。在CPU内部,取指令、译码和执行都是由不同的部件来完成的。因此在理想的运行状态下,尽管单条指令的执行时间没有减少,但是由多个不同部件同时工作,同一时间执行指令的不同步骤,从而使总执行时间极大地降低,甚至可以低至这个过程中最慢的那个步骤的处理时间。如果各个步骤的处理时间相同,则指令分解成多少个步骤,处理速度就能提高到标准执行速度的多少倍。
如果采用流水线执行方式,在第1个T时间内,第1条指令在取指令,其余两个部件空闲。在第2个T时间内,第1条指令已经完成取指令,直接交给第2个部件进行分析,同时取指令部件可以去取第2条指令。此时同时有两条指令在运行,其中只有执行部件空闲。在第3个T时间内,第1条指令可以直接进入执行部件执行,第2条指令直接进入分析部件分析,取指令部件可以去取第3条指令。此时3个部件都在工作,同时有3条指令在运行。
依此类推,可以看到,每经过一个T时间,就会有一条指令执行完毕,因此执行N条指令的总时间是3T+(n-1)×T,也就是第1条指令从开始执行到执行完毕的总时间是3T,以后每隔一个T时间就会多完成一条指令。因此只要再过(n-1)×T时间后,余下的n-1条指令都会执行完毕。
在线性流水线中,流水线各段执行时间最长的那段变成了整个流水线的瓶颈。一般地,将其执行时间称为流水线的周期。所以执行的总时间主要取决于流水线操作步骤中最长时间的那个操作。在本题中为4Δt。
如果按照执行第i条、分析第i+1条、读取第i+2条重叠的流水线方式执行指令,则从头到尾执行完600条指令所需时间为4Δt+2Δt+3Δt+(600-1)×4Δt=-2405Δt。