超标量体系结构_CPU体系结构以及指令流水原理
計算機CPU的體系結構
什么是cpu指令流水
指令流水線(英語:Instruction pipeline)是為了讓計算機和其它數字電子設備能夠加速指令的通過速度(單位時間內被運行的指令數量)而設計的技術。
流水線在處理器的內部被組織成層級,各個層級的流水線能半獨立地單獨運作。每一個層級都被管理并且鏈接到一條“鏈”,因而每個層級的輸出被送到其它層級直至任務完成。 處理器的這種組織方式能使總體的處理時間顯著縮短。
未流水線的架構產生的效率低,因為有些CPU的模塊在其他模塊運行時是閑置的。流水線雖并不會完全消除CPU的閑置時間,但是能夠讓這些模塊并發運作而大幅提升程序運行的效率。
但并不是所有的指令都是獨立的。在一條簡單的流水線中,完成一個指令可能需要5層。如右圖所示,要在最佳性能下運算,當第一個指令被運行時,這個流水線需要運行隨后4條獨立的指令。如果隨后4條指令依賴于第一條指令的輸出,流水線控制邏輯必須插入延遲時脈周期到流水線內,直到依賴被解除。而轉發技術能顯著減少延時。憑借多個層,雖然流水線在理論上能提高性能,優勝于無流水線的內核(假設時脈也因應層的數量按比例增加),但事實上,許多腳本設計中并不會考慮到理想的運行。
指令流水的原理
為簡單起見,把指令的處理過程分為取指令和執行指令兩個階段,在不采用指令流水技術的計算機里,取指令和執行指令是周而復始地重復出現,各條指令按順序串行執行著,如下如所示:
取指令1 -->> 執行指令1 -->> 取指令2 -->> 執行指令2 -->> 取指令3 -->> 執行指令3 -->> ......
上述流程中,取指令操作可由指令部件完成,執行指令的操作可由執行部件完成。進一步分析發現,這種順序執行雖然控制簡單,但執行中各部件的利用率不高,如指令部件在工作時,執行部件基本空閑,而執行部件工作時,指令部件基本空閑。
其實,當一條指令在執行階段,我們完全可以利用這段時間取下一條指令,這樣就使取下一條指令的操作和執行當前指令的操作同時進行,這樣就達到兩條不同的指令可以重疊的被CPU處理,這就是指令的二級流水。如下圖所示:
為了進一步提高處理速度,可將指令的處理過程分解為更細的子階段,如下:
(1)取指FI
從存儲器取出一條指令并暫時存入指令部件的緩存區
(2)指令譯碼DI
確定操作性質和操作數地址的形成方式
(3)計算操作數地址CO
計算操作數的有效地址,涉及寄存器間接尋址、間接尋址、變址、基址、相對尋址等各種地址計算方式
(4)取操作數FO
從存儲器中取操作數
(5)執行指令EI
執行指令所需的操作,并將結果存于目的位置(寄存器中)
(6)寫操作數WO
將結果存入寄存器
為了方便起見,假設上述各段的時間都是相等的,于是采用指令流水技術后,可形成指令六級流水時序,如下圖:
指令流水的多種優化技術
流水線技術是計算機系統結構產生了重大革新,為了進一步發展,處理采用好的指令調度算法、重新組織指令執行順序、減低相關帶來的干擾以及優化編譯外,還可開發流水線中的多發技術,設法在一個時鐘周期(機器CPU主頻的倒數)內,產生更多條指令的結果。常見的多發技術有超標量(Super Scalar)技術、超流水線技術和超長指令字技術。假設處理一條指令分4個階段,分別為取指FI、譯碼ID、執行EX和回寫WR。下圖是三種多發技術與普通的四級流水線的比較:
流水線是將組合邏輯分割成多個小塊,因為每段的關鍵路徑變短了,所以能提高系統主頻。同時能讓任務以類似并行方式處理,提高硬件模塊的利用率,提高系統頻率,提高吞吐量(throughput)。
為什么CPU流水線設計的級越長,完成一條指令的速度就越快?
答:流水線級越長,一條指令執行速度反而更慢了,因為要插入寄存器分割組合邏輯,而寄存器讀寫也需要時間。流水線提高的是系統吞吐量,也就是單位時間內處理的指令條數。
那為什么一條指令執行速度更慢,而單位時間內處理的指令條數增多呢? 因為 流水線能同時處理多條指令,類似并行形式。如下圖,五條指令在同時處理。
cpu流水的本質
以空間換取時間(吞吐量)。
優缺點
優點
缺點
總結
以上是生活随笔為你收集整理的超标量体系结构_CPU体系结构以及指令流水原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: int类型存小数 mysql_2020年
- 下一篇: 什么叫ipv6网络_(建议收藏)IPv6