什么是CPU中推土機(jī)架構(gòu)
什么是CPU中推土機(jī)架構(gòu)
CPU中推土機(jī)架構(gòu)是什么?聰明的你們有了解過嗎?下面是學(xué)習(xí)啦小編收集整理關(guān)于CPU中推土機(jī)架構(gòu)的資料以供大家參考學(xué)習(xí),希望大家喜歡。
CPU中推土機(jī)架構(gòu)
CMP和SMT
CMP:CMP的方式非常直接,簡單來說,CMP是通過“復(fù)制”物理核心來擴(kuò)展處理器在多線程軟件中的性能,這是獲得最佳性能一種最簡單和最有效的方式。但CMP的缺點(diǎn)是制造成本很昂貴,并且也要受到處理器制造工藝的限制,畢竟不能將芯片做的越來越大。并且CMP的方式對負(fù)載要求也很高,只有經(jīng)過適當(dāng)并行優(yōu)化的負(fù)載才能充分發(fā)揮CMP的性能,很多核心的CMP常常會浪費(fèi)資源,在一些應(yīng)用中,主頻更高、結(jié)構(gòu)更簡單的雙核和四核處理器就往往可以獲得更好的性能。
SMT:SMT是一個相對廉價的技術(shù),比如英特爾的Hyper-Threading,允許每個物理核心運(yùn)行兩個同步線程。SMT的設(shè)計(jì)思想是充分利用每個核心的資源。如果一個物理核心只有一個執(zhí)行線程,那么在等待內(nèi)存中的關(guān)鍵代碼或數(shù)據(jù)的時候,線程處于停頓狀態(tài),這樣核心的利用率是低下的。而SMT技術(shù)允許一個物理核心運(yùn)行兩個或更多的線程,可以根據(jù)當(dāng)前的狀況動態(tài)進(jìn)行切換,如果一個線程處于停頓狀態(tài)等待內(nèi)存,另一個線程的指令則可以使用這個物理核心的所有執(zhí)行單元,讓物理核心利用的更加充分。
為了讓SMT正常工作,處理器的所有代碼和存儲部分需要被復(fù)制或分區(qū)。例如,一個雙線程SMT處理器需要兩套架構(gòu)寄存器和重命名寄存器,一套給線程A,一套給線程B。另外組成指令窗口的共享指令隊(duì)列要具備很大的空間,這樣指令窗口才能容納足夠多的來自兩個線程的指令,讓執(zhí)行單元可以保持在忙碌狀態(tài)。最后,兩個線程任何共享單元,比如處理管線不同部分的指令緩存,都不能被任一個線程獨(dú)占。換句話說,SMT核心的兩個線程需要和另一個緊密的共享資源,保證核心的緩存單元不會空置沒有線程利用。
推土機(jī)架構(gòu)分析
AMD“推土機(jī)”將采用32nmSOI工藝,這讓“推土機(jī)”相比“馬尼庫爾”皓龍?zhí)幚砥骺梢栽诓辉黾庸牡那疤嵯略黾?3%的核心數(shù)量、增加50%的吞吐量。與AMD之前所有處理器都有所不同的是,“推土機(jī)”采用了“模塊化”的設(shè)計(jì),每個“模塊”包含兩個處理器核心,這有些像一個啟用了SMT的單核處理器。每個核心具有各自的整數(shù)調(diào)度器和四個專有的管線,兩個核心共享一個浮點(diǎn)調(diào)度器和兩個128位FMAC乘法累加器。
所不同的,在K10架構(gòu)中,ALU和AGU共享三個管線(平均1.5個),“推土機(jī)”中每個核心整數(shù)單元管線的數(shù)量增加為4個,2個AGU專有、2個ALU專有。L1緩存也有所不同,在K10架構(gòu)中,每個核心具有64KB L1指令緩存和64KB L1數(shù)據(jù)緩存;而“推土機(jī)”每個核心具有16KBL1數(shù)據(jù)緩存、每個模塊具有64KB雙向L1指令緩存,至于減小的L1緩存是否會影響性能還有待觀察。兩個核心共享L2緩存,模塊之間共享L3緩存及北橋。
AMD“推土機(jī)”模塊
“模塊”和“核心”,這讓我們不免會產(chǎn)生混淆,實(shí)際對于用戶們來說,沒必要去刻意的關(guān)注“模塊”的概念,這只不過是AMD在設(shè)計(jì)上的稱謂,而當(dāng)產(chǎn)品投放市場的時候,依舊會以核心數(shù)量為標(biāo)識,比如我們說采用推土機(jī)架構(gòu)的“Interlagos”服務(wù)器處理器具有16個核心,而不會說是8個模塊。對于為何采用這種“模塊”設(shè)計(jì)的主要原因,AMD表示是“為了減少CPU的冗余電路”。
如果采用CMP的方式,隨著核心數(shù)量的增加,CPU的核心面積也會越來越大,重復(fù)的電路也會越來越多,功耗也會隨之增加——因?yàn)镃MP是采用復(fù)制核心的方式。而采用“模塊”設(shè)計(jì)可以大大減少冗余電路,這對核心的大量增加很有意義。比如“推土機(jī)”,兩個核心共享浮點(diǎn)部分,對于大部分服務(wù)器應(yīng)用來說,整數(shù)運(yùn)算的部分要遠(yuǎn)遠(yuǎn)高于浮點(diǎn)運(yùn)算(高性能計(jì)算除外),所以將浮點(diǎn)執(zhí)行單元共享并不會影響大多數(shù)應(yīng)用中的性能。而整數(shù)部分則不是共享的,否則會造成瓶頸。
上文我們回顧過CMP和SMT設(shè)計(jì)的特點(diǎn),我們可以把AMD“推土機(jī)”架構(gòu)看做是介于這兩種之間的一種設(shè)計(jì):兩個線程(核心)共享浮點(diǎn)執(zhí)行單元,但是各自具有獨(dú)立的整數(shù)執(zhí)行資源。這看上去像是SMT的另一種形式,或者說是經(jīng)過AMD改良的一種“AMD式的第三種方式”。但與傳統(tǒng)的SMT設(shè)計(jì)不同,SMT僅僅復(fù)制的是核心的存儲部分,一個線程一個存儲模塊(registerfile),而AMD“推土機(jī)”架構(gòu)中,每個線程復(fù)制的是完整的整數(shù)執(zhí)行單元硬件,一個線程具有一個存儲模塊(registerfile)和一組完整的整數(shù)執(zhí)行單元。
猜你喜歡: