1. 程式人生 > >計算機組成與設計(九)—— 流水線處理器

計算機組成與設計(九)—— 流水線處理器

明顯 取出 pan -a decode mage 變量 事先 並行

流水線的基本原理

指令的主要執行步驟

這個是之前設計的單周期寄存器,它已經能正確的執行MIPS指令。

技術分享圖片

而MIPS的指令可以分成如下5個階段:

  1. 取指(Fetch)::從存儲器取指令,並更新PC
  2. 譯碼(Decode):指令譯碼,從寄存器堆讀出寄存器的值
  3. 執行(Execute):運算指令:進行算術邏輯運算,訪存指令:計算存儲器的地址
  4. 訪存(Memory):Load指令:從存儲器讀指令,Store指令:將數據寫入寄存器
  5. 回寫(Write Back):將數據寫入寄存器堆

與示意圖結合如下:

技術分享圖片

單周期與流水線的區別

全在這個圖裏:

技術分享圖片

實際上,流水線並不會縮短單條指令的執行時間(甚至會增加時間),而是提高指令的吞吐率

(單位時間進多少指令,有多少指令完成)。

添加流水線寄存器

我們要改造成流水線寄存器的話,我們發現每個階段所需的硬件資源基本是獨立的,如果我們能把指令存儲器輸出的指令編碼事先保存下來,那我們就可以提前更新PC寄存器的值,並用這新的值去指令存儲器當中取出一個新的指令,而在取新指令的同時,剛才取出的那條指令的編碼就會被分解成不同位域,而寄存器堆也會根據輸入送出對應寄存器的內容。所以需要添加流水線寄存器。

流水線寄存器:保存了前一個階段要向後一個階段傳遞的所有信息。

所以每過一個時鐘周期,都可以更新寄存器的值,而不會影響當前的執行過程,當前執行所需要的全部信息都保存好在流水線寄存器中。

在兩個階段之間添加流水線寄存器後,如圖:

技術分享圖片

性能分析,與之前的流水線相比,多了流水線寄存器的延遲,周期200到250ps。

技術分享圖片

流水線的優化

“超級流水線”技術

“超級流水線”技術:將五級流水線細分為更多的階段,增加流水線的深度。

這樣縮短了周期,從而提升了時鐘頻率,從而提高了指令吞吐率。

技術分享圖片

流水線的級數

流水線的級數是越大越好嗎?肯定不是。級數越大,所用的流水線寄存器相應增加,單條指令的延遲增加,流水線寄存器延遲比例增加;填滿流水線的指令條數更多,指令之間的關系更加復雜。

技術分享圖片

超標量流水線

超標量結構

超標量結構:通常,將具有兩條或兩條以上的並行工作的流水線結構稱為超標量結構,亦稱為“超標量流水線”或超標量。

如圖,我們對每個階段擴大一倍,那麽可以同時對兩個指令進行操作。第一、二條指令同時進入階段一,經過一個時鐘周期,第一、二條指令進入階段二,同時第三、四條指令進入階段一......這樣每個階段兩條指令並行前行,到第五個周期就有兩條指令同時被完成。

技術分享圖片

像這樣兩者並行的結構叫作雙發射的結構。按這種方式擴大,就能得到三發射、四發射,這就是超變量流水線寄存器的原理。

超標量的應用

ARM Cortex-A9的超標量流水線

它每個時鐘周期可以發射4條指令,根據指令的不同,總共會經過8~11級流水線。在流水線的前端比如說 取指,譯碼並沒有分成多條流水線而是采用統一的部件。當然我們要知道這些部件雖然看上去是一個,但它實際上比標量流水線要大得多,比如說取指部件至少一次要能取來四條指令甚至更多,而譯碼部件一次也至少應該完成四條指令的譯碼,而到了流水線的後端, 才會從結構表示上體現出多條並行流水線的形態。

技術分享圖片

Core i7的超標量流水線

  1. 取指令:從高速緩存中取出指令,取回128bit,16個字節
  2. 將這16個字節放入指令譯碼器:因為x86指令長度是不固定的,所以首先要經過一個 指令長度的譯碼器,分解出到底哪幾個字節是一條指令。 那麽在這一點上類似的指令系統就體現出了明顯的優勢, 它每條指令都是定長的,不用額外進行這樣的識別工作。
  3. 微指令譯碼:在譯碼器當中通過硬件會將x86的指令轉換成更為簡單的類MIPS指令, Inter稱之為“微操作”那從這裏可以看出有三個簡單的譯碼器,用於對那些比較簡單的x86指令進行轉換,每條指令對應一個微操作;而那些非常復雜的指令則會通過這個復雜的譯碼器轉換成多條V操作。從而可以充分運用大量面向RISC處理器研發出的高級流水線的技術,這也就是為什麽我們現在經常說x86雖然是一個CISC的指令系統, 但它實際上是用RISC的方式去實現的
  4. ......

技術分享圖片

超標量與多核CPU

現在的多核CPU通常是在一個CPU芯片中集成了多個超標量處理器核。同時包含指令高速緩存和數據高速緩存,對應了我們原理結構當中的指令存儲器和數據存儲器。為了提高性能現在的處理器當中一般還配備了二級的高速緩存。 這些部件的關系非常緊密,我們通常也就把這一部分稱為一個處理器核。

那麽剛才看到那個四發射十六級流水線的結構圖就是在只這麽一個處理器核內部的結構,那麽可以說這一個處理器核就是一個超標量流水線的處理器核。

技術分享圖片

參考鏈接:https://www.coursera.org/learn/jisuanji-zucheng/lecture/dL6g2/604-liu-shui-xian-de-mou-xian

計算機組成與設計(九)—— 流水線處理器