流水線是軟考中經常考的一部分內容,並且常以要求計算的形式出現,所以,這里詳細總結一下流水線的相關知識點。
流水線的概念
流水線是指在程序執行時多條指令重疊進行操作的一種准並行處理實現技術。即可以同時為多條指令的不同部分進行工作,以提高各部件的利用率和指令的平均執行速度。
我們都知道,在執行一條指令的過程中,最少要經歷 取指
分析
執行
三個步驟,也就是說,假設有三個指令1 、2、 3,當我們在正常情況下,在執行指令1的時候,會首先對指令1按照以上三個步驟進行處理,處理完畢后在對指令2進行處理,以此類推。而流水線的應用,就是像我們在工廠中一樣,當對指令1進行分析工作時,同時對指令2進行取指,繼續執行,當指令1到達執行階段時,指令2進入分析階段1同時對於指令3進行取指處理,這樣就大大增加了對於時間的利用率。
流水線的計算
1、流水線的執行時長
①關於流水線的周期,我們需要知道的是,流水線周期(△t)為指令執行階段中執行時間最長的一段。
②流水線的計算公式為:
完成一條指令所需的時間+(指令條數-1)*流水線周期,在這個公式中,又存在理論公式和實踐公式。
理論公式:
實踐公式:(k+n-1)*△t k為一條指令所包含的部分的多少
例題:若指令流水線一條指令分為取指、分析、執行三個階段,並且這三個階段的時間分別為取指1ns,分析2ns,執行1ns,則流水線的周期為多少?100條指令全部執行完畢需要執行的時間是多少?
分析:上面已經說過,流水線的周期為花費時間最長的階段所花費的時間,所以流水線的周期就是2ns。
根據理論公式,T=(1+2+1)+(100-1)*2=4+99*2=202ns
根據實踐公式,T=(3+100-1)*2=204ns
在這里,需要注意的是,因為流水線的理論公式和實踐公式的結果不一樣,但是在考試過程中可能都會考到,所以,在應用時,先考慮理論公式,后考慮實踐公式。
2、流水線的加速比計算
流水線的加速比指的是在完成同一批任務時,不使用流水線所用的時間與使用流水線所用的時間之比稱之為流水下的加速比。加速比是越大越好的,它呈現了使用流水線的效果的好壞程度。
基本公式為:S=不使用流水線執行時間 / 使用流水線的執行時間
如1中的例題:其加速比為S=(1+2+1)*100/(1+2+1)+(100-1)*2
3、流水線的效率
流水線的效率指的是流水線的設備利用率。在時空圖上,流水線的效率定義為n個任務占用的時空與k個流水線總的時空區之比。
假設有一個需要完成的任務由四部分組成,如圖一所示:
在實際流水線執行中,有以下時空圖表示,如下圖所示:
由圖一可知,流水線的周期長為3△t
由時空圖可知,在流水線應用過程中,並不是所有的時間都完美應用到,仍有時間存在空置,所以,在效率計算時,可以從兩個方面進行理解。
①從公式計算:E=n個任務占用的時空區 / k個流水線的總的時空區
如上圖結果為:E=(△t+△t+△t+3△t)*4 / 15△t*4
②從圖中的面積理解:流水線的效率等於陰影所占方塊與圖中所有方塊的比值
4、流水線吞吐率的計算
流水線的吞吐率指的是在單位時間內流水線所完成的任務數量或輸出的結果數量。基本公式為:
流水線的最大吞吐率為: