流水線技術的部分總結

流水線:按流水作業特點所組成的生產程序。
流水線技術:把一個複雜的過程分解爲若干子過程,每個子過程由專門的功能部件來實現。(把多個處理過程在時間上相互錯開,依次通過各功能段,這樣每個子過程就可以與其他的子過程並行執行)
流水線的段流:流水線中的每個子過程及其功能部件稱爲流水線的段。流水線的段數稱爲流水線的深度。流水線深度一直是影響處理器效率的重要原因,流水線深度的增加可以讓處理器時鐘頻率進一步提高,但是會讓處理器單個週期執行效率降低,同時容易產生分支預測等問題。

流水線的性能指標

吞吐率:在單位時間內流水線所完成任務數量或輸出結果。
Tp=n / Tk ( n: 任務數;Tk: 處理完成這n個任務所用的時間)
各段時間均相等的流水線(時空圖) x(時間)-y(工序數)
在這裏插入圖片描述
流水線完成n個連續任務所需要的總時間爲:
Tk=kΔt+(n-1)Δt=(k+n-1)Δt

流水線的實際吞吐率
TP=n / (k+n-1)Δt

最大吞吐率(對n取無窮大)
TPmax=lim[n / (k+n-1)Δt]=1 / Δt

最大吞吐率與實際吞吐率的關係:
TP=[n / (k+n-1)]TPmax
(TP與流水線段數k和輸入到流水線的任務數n有關)

各段時間不完全相等的流水線
流水線中時間最長的段稱爲流水線的瓶頸段
消除瓶頸問題的方法:
1.細分瓶頸段(即把瓶頸段切分爲時間更短的段)
2.重複設置瓶頸段(這相當於把多個瓶頸段並聯起來)

流水線的加速比

完成同一批任務,不適用流水線所用的時間與用流水線所用的時間之比稱爲流水線的加速比。用S表示
S=Ts / Tk

1.流水線各段時間相等(都是Δt)
流水線實際加速比
S=nk / (k+n-1)

最大加速比
Smax=lim[nk / (k+n-1)]=k

2.流水線的各段時間不完全相等時(一條k段流水線完成n個連續任務的實際加速比爲:)
在這裏插入圖片描述

流水線的效率

流水線中的設備實際使用時間與整個運行時間的比值,即流水線設備的利用率。
從時空圖上看,效率就是n個任務佔用的時空面積和k個段總的時空面積之比。

流水線衝突(冒險)

對於具體的流水線來說,由於相關的存在,使得指令流中的下一條指令不能在指定的時鐘週期執行。
流水線衝突有3種類型:
結構衝突:因硬件資源滿足不了指令重疊執行的要求而發生的衝突。
數據衝突:當指令在流水線中重疊執行時,因需要用到前面指令的執行結果而發生的衝突。
控制衝突:流水線遇到分支指令和其他會改變PC值的指令所引起的衝突。(控制冒險造成的性能損失大於數據冒險)

流水線衝突的解決方法:
結構衝突
1.可以在前一條指令訪問存儲器時,將流水線停頓一個時鐘週期,推遲後面取指令的操作,這個停頓週期(stall)往往被稱爲流水線氣泡.
2.設置相互獨立的指令存儲器和數據存儲器,或者將統一的Cache分成獨立的指令Cache和數據Cache

數據衝突:
寫後讀衝突(RAW)
在i寫入之前,j先去讀,j讀出的內容是錯誤的
寫後寫衝突(WAW)
在i寫入之前,j先寫。最後寫入的結果是i 的。
讀後寫衝突(WAR)
在i讀之前,j先寫,i讀出的內容是錯誤的,由反相關引起的。
數據衝突的解決辦法:
1.可以採用 定向技術/旁路(forwarding/by-passing)(將計算結果從其產生的地方直接送到其他指令需要它的地方避免停頓)來解決寫後讀衝突。
2.需要設置一個“流水線互鎖機制”功能部件,其作用是檢測發現數據衝突,並使流水線停頓(插入氣泡bubble),直至衝突消失。
3.讓編譯器重新組織指令順序來消除衝突,這種技術稱爲指令調度或流水線調度。(通過調整原本指令執行的順序可消除原來爲了避免衝突加入的停頓)

控制衝突的解決辦法
處理分支指令最簡單的辦法是“凍結”或“排空”流水線,即一旦流水線的譯碼階段(ID)檢測到分支指令,就暫停執行其後的所有指令,直到分支指令到達訪存(MEM)段,確定是否成功,並計算出新的PC值爲止。
由分支指令引起的延遲稱爲分支延遲,可採用兩種措施來減少分支延遲:
1在流水線中儘早判斷出分支轉移是否成功
2.儘早計算出分支目標地址
延遲分支實際上使用延遲槽中的指令來掩蓋分支延遲

流水線技術要點

1.流水線技術並不能提高單個任務的執行效率,它可以提高整個系統的吞吐率。
2.流水線中的瓶頸----最慢的那一段
3.多個任務同時執行,但使用不同的資源
4.其潛在的加速比=流水線的級數
5.流水線所需時間不均衡降低加速比
6.流水線存在裝入時間和排空時間,使得加速比降低
7.由於存在相關問題,會導致流水線停頓
8.流水線提高的是指令帶寬(吞吐率),而不是單條指令的執行速度
9.相關限制了流水線性能的發揮(相關(dependence)並不一定產生冒險,冒險發生了就會產生stall,就會降低性能,所以說相關是潛在的冒險):
結構相關(硬件資源不足導致):需要更多的硬件資源
數據相關:需要定向(forwarding/bypassing),編譯器調度(軟件方法)
控制相關(影響最大,大概會導致30%的性能下滑):儘早檢測條件,計算目標地址,延遲轉移,預測
10.增加流水線的級數會增加相關產生的可能性
11.異常,浮點運算使得流水線控制更加複雜
12.編譯器可降低數據相關和控制相關的開銷:
Load延遲槽
Branch延遲槽
Branch預測

五級指令流水線

取址(IF):從指令高速緩存中獲取下一條指令並計算PC+4
譯碼(ID):從寄存器取數,同時指令在譯碼器進行譯碼
執行(EX):在ALU中對操作數進行計算或邏輯操作
訪存(MEM):該階段指令可以讀寫數據高速緩存中的內存變量
寫回(WR):把ALU計算的結果寫到寄存器堆中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章