對於一條具體的指令執行過程,通常可以分為五個部分:取指令,指令解碼,取運算元,運算,寫結果.其中前三步一般由指令控制器完成,後兩步則由運算器完成
若採用順序執行的方式, 則執行前三步時運算器空閒, 執行後兩步時指令控制器空閒.
流水線技術的基本原理是: 指令控制器完成了對第一條指令的處理後, 不等待運算器完成後續的處理直接開始對第二條指令的處理.這裡的指令控制器和運算器只是對參與指令處理的部件的舉例.
時空圖是對處理狀態的圖形描述, 橫座標為時間, 縱座標離散為處理的階段(表示對處理部件的占用, 即空間).每一塊代表某一指令的某一處理階段, 標有同一序號的各階段的塊表示某一指令的處理流程.
各階段等時長的時空圖:
各階段不等時長的時空圖:
吞吐率tp是衡量處理能力的主要指標, 其含義為單位時間內處理的指令數.
對單指令流水線而言,最大吞吐率\(tp_\)為處理過程中用時最長階段單次耗時的倒數.
實際吞吐率則根據定義來計算.
由時空圖我們可以計算出處理n條指令所花費的時間t, 並可以計算出採用順序處理消耗的時間\(t_\).
定義加速比\(s = \frac}\).
瓶頸是指處理時間較長的處理階段, 從上面各階段不等長的時空圖可以看出這些處理階段使得後續階段需要等待其完成浪費了處理時間.
對於瓶頸階段的解決方案可以採用將瓶頸階段拆分為多個較短的處理階段,或者採用多個處理部件並行處理.
將瓶頸階段拆分後單指令處理時間未變, 但是多條指令總體處理時間縮短.
相關是指流水線處理過程中相鄰或相近的任務之間存在依賴制約關係.相關將會降低流水線的處理效率,因此, 需要採取措施避免相關性帶來的損害.
相關性分為幾類:
處理控制相關的方法除了上文提到的對瓶頸的處理外還有定向和互鎖硬體.
定向裝置是流水線段之間直接的連通同路,又稱旁路或短路.
流水線互鎖硬體在發現存在資料相關時先讓流水線暫停工作,直到資料相關消失為止.
條件轉移指令導致已經進入流水線的指令不再執行, 需要將轉移目標處的指令重新加入流水線中,降低效率.
處理控制相關的主要思路是分支**,分支**分為靜態**和動態**兩種.
靜態**比較重要的方法是編譯器**,比如對於乙個迴圈,編譯器認為繼續迴圈比跳出迴圈的概率要大.
動態分支**的一種方法是採用分支歷史表, 通過一或兩個標誌位記錄該分支處歷史資訊,用於**分支.
分支目標緩衝器則是儲存歷史跳轉目標, 若當前條件與歷史吻合時則用歷史記錄進行跳轉.
延遲分支是分支**之外的另一種處理方法, 它利用編譯器對指令重排, 通過插入空指令或有用指令盡量使流水線處於充滿狀態.
將分支指令延遲為長度為n的分支指令,其後緊跟n個分支延遲槽, 利用延遲槽中的指令掩蓋必須插入的停頓週期, 減少分支開銷.
中斷分為內部中斷和外部中斷,內部中斷主要是異常處理中斷,外部中斷則型別很多發生比較隨機,如io中斷.
斷點分為不精確斷點和精確斷點.不精確斷點的處理機制是禁止新的指令進入流水線,已進入的指令執行完畢後流水線中斷.
除了中斷位置不精確外,如果是異常中斷不精確斷點會使異常指令繼續執行容易產生錯誤結果.
精確斷點則是立即中斷, 流水線中現場資訊全部保留下來以便在中斷返回後恢復現場.
提高流水線深度(段數)是經典的加速方法, 但也伴隨著許多問題.現在有很多新技術用於加速處理.
指令排程是在一段程式中重新排序指令,使得程式中相關指令盡可能消除.
亂序執行則採用跳過相關指令,先執行不相關指令的方法加速.
超標量處理機基於重複硬體執行多條流水線,使得在乙個時鐘週期內可以發射或流出多條指令.
超流水線處理機將階段更加細分, 級數大於等於8級的流水線稱為超流水線.
超長指令字是把不相關的多條指令組合在一起作為一條位數超長的指令一同發射到流水線中,並行執行.
流水線技術理解
流水線,這個詞語最早出於工廠裡面,是資本家為了提高產品的產量而採用的一種技術。我們姑且不去看他的定義,我們從生活中的例子理解什麼是流水線技術 假如我們有很多衣服要洗,現在有一台洗衣機和一台乾衣機,洗衣機用時30分鐘,乾衣機用時60分鐘。如果洗一桶衣服,如下圖所示 很顯然,總時間 洗衣時間 乾衣時間 ...
ARM ARM流水線技術
處理器按照一系列步驟來執行每一條指令,典型的步驟如下 1 從儲存器讀取指令 fetch 2 解碼以鑑別它屬於哪一條指令 decode 3 從指令中提取指令的運算元 這些運算元往往存在於暫存器 reg 中 4 將運算元進行組合以得到結果或儲存器位址 alu 5 如果需要,則訪問儲存器以儲存資料 mem...
體系結構 五段流水線 流水線技術
目錄 一條經典的5段流水線 一條指令的執行過程分為以下5個週期 取指令週期 if 指令解碼 讀暫存器週期 id 執行 有效位址計算週期 ex 儲存器訪問 分支完成週期 mem 寫回週期 wb 體系結構 流水線 流水線相關 流水線衝突 以程式計數器 pc中的內容作為位址,從儲存器中取出指令並放入指令暫...