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