目錄
一條經典的5段流水線
一條指令的執行過程分為以下5個週期:
取指令週期(if)
指令解碼/讀暫存器週期(id)
執行/有效位址計算週期(ex)
儲存器訪問/分支完成週期(mem)
寫回週期(wb)
體系結構 | 流水線 | 流水線相關 | 流水線衝突
以程式計數器
pc中的內容作為位址,從儲存器中取出指令並放入指令暫存器ir;
同時pc值加
4(假設每條指令佔
4個位元組),指向順序的下一條指令。
對指令進行解碼,並用
ir中的暫存器位址去訪問通用暫存器組,讀出所需的運算元。
不同指令所進行的操作不同:
load
和store指令:
alu把指令中所指定的暫存器的內容與偏移量相加,形成訪存有效位址。
暫存器-暫存器
alu指令
:alu
按照操作碼指定的操作對從通用暫存器組中讀出的資料進行運算。
暫存器-立即數
alu指令
:alu
按照操作碼指定的操作對從通用暫存器組中讀出的運算元和指令中給出的立即數進行運算。
分支指令
:alu
把指令中給出的偏移量與pc
值相加,形成轉移目標的位址。同時,對在前乙個週期讀出的運算元進行判斷,確定分支是否成功。
該週期處理的指令只有
load
、store
和分支指令。
其它型別的指令在此週期不做任何操作。
load
指令:讀出相應的資料;
store
指令:把指定的資料寫入這個有效位址所指出的存
儲器單元。
分支「成功」,就把轉移目標位址送入pc。
分支指令執行完成。
alu運算指令和
load
指令在這個週期把結果資料寫入通用暫存器組。
alu運算指令:
結果資料來自
alu。
load
指令:結果資料來自儲存器。
分支指令需要
4個時鐘
週期(如果把分支指令的執行
提前到id
週期,則只需要2個
週期);
store
指令需要4個
週期;
其它指令需要5個
週期才能完成。
體系結構 五段流水線 流水線技術
以程式計數器pc中的內容作為位址,從儲存器中取出指令並放入指令暫存器ir 同時pc值加4 假設每條指令佔4個位元組 指向順序的下一條指令 對指令進行解碼,並用ir中的暫存器位址去訪問通用暫存器組,讀出所需的運算元 不同指令所進行的操作不同 暫存器 暫存器alu指令 alu按照操作碼指定的操作對從通用...
流水線技術理解
流水線,這個詞語最早出於工廠裡面,是資本家為了提高產品的產量而採用的一種技術。我們姑且不去看他的定義,我們從生活中的例子理解什麼是流水線技術 假如我們有很多衣服要洗,現在有一台洗衣機和一台乾衣機,洗衣機用時30分鐘,乾衣機用時60分鐘。如果洗一桶衣服,如下圖所示 很顯然,總時間 洗衣時間 乾衣時間 ...
ARM ARM流水線技術
處理器按照一系列步驟來執行每一條指令,典型的步驟如下 1 從儲存器讀取指令 fetch 2 解碼以鑑別它屬於哪一條指令 decode 3 從指令中提取指令的運算元 這些運算元往往存在於暫存器 reg 中 4 將運算元進行組合以得到結果或儲存器位址 alu 5 如果需要,則訪問儲存器以儲存資料 mem...