流水线
指令执行过程:
取指→分析→执行
“1”:第一条指令
“2”:第二条指令
“3”:第三条指令
1S | 2S | 3S | 4S | 5S | 6S | 7S | 8S | 9S | |
---|---|---|---|---|---|---|---|---|---|
取指 | 1 | 2 | 3 | ||||||
分析 | 1 | 2 | 3 | ||||||
执行 | 1 | 2 | 3 |
一条指令需要经过三个步骤才能执行完成,如果每执行一个步骤就需要1S,一条指令就需要3S,执行三条指令就需要9S才能完成执行
第一秒的时候第一条指令取指,第二秒的时候第一条指令分析,第三秒的时候第一条指令执行,第四秒的时候第二条指令取指,第五秒的时候第二条指令分析,第六秒的时候第二条指令执行,第七秒的时候第三条指令取指,第八秒的时候第三条指令分析,第九秒的时候第三条指令执行
1S | 2S | 3S | 4S | 5S | 6S | 7S | 8S | 9S | |
---|---|---|---|---|---|---|---|---|---|
取指 | 1 | 2 | 3 | . | . | . | n | ||
分析 | 1 | 2 | 3 | . | . | . | n | ||
执行 | 1 | 2 | 3 | . | . | . | n |
使用流水线后,如果一个步骤需要一秒,那么三条指令只需要五秒就可以执行完成
第一秒的时候第一条指令取指,第二秒的时候第一条指令分析,同时第二条指令取指,第三秒的时候第一条指令执行,同时第二条指令分析,第三条指令取指,第四秒的时候第二条指令执行,第三条指令分析,第五秒的时候第三条指令执行。
流水线执行时间计算公式
(t₁+t₂+t₃)+(n-1)t₁
t₁是流水线周期,它代表执行时间最长的一段
列题
例如:若指令流水线把一条指令分为取指,分析,执行三部分,且三部分的时间分别是取指2ns,分析2ns,执行1ns,那么,流水线周期是?100条指令全部执行需要多长时间。
公式:(t₁+t₂+t₃)+(n-1)t₁
(2+2+1)+(100-1)×2
=5+198
=203(ns)
答,流水线周期为2ns,一百条指令全部执行完需要203ns。
流水线指标
①吞吐率:TP=n/TK
②加速比:S=TS/TK
③效率
理论最大吞吐率:TP = 周期的倒数
n为指令条数,TK为流水线时间
加速比是使用流水线和不适用流水线的比
效率在不同的时间段内效率不同,例如下表,时间为第一秒的时候效率为三分之一,时间在第二秒的时候效率为三分之二,时间在第三秒的时候效率为百分之百。
1S | 2S | 3S | 4S | 5S | 6S | 7S | 8S | 9S | |
---|---|---|---|---|---|---|---|---|---|
取指 | 1 | 2 | 3 | . | . | . | n | ||
分析 | 1 | 2 | 3 | . | . | . | n | ||
执行 | 1 | 2 | 3 | . | . | . | n | ||
效率 | 三分之一 | 三分之二 | 百分之白 | 百分之百 | 百分之百 | 百分之百 | 百分之百 | 三分之二 | 三分之一 |