當(dāng)今的處理器架構(gòu)能否更高效?
多年來(lái),處理器在專注于性能的同時(shí)幾乎沒(méi)有對(duì)其他任何東西負(fù)責(zé)。但現(xiàn)在,性能雖然還是很重要的參考指標(biāo),但處理器還必須對(duì)功耗負(fù)責(zé)。
如果性能上的微小提升導(dǎo)致不成比例的功率增益,設(shè)計(jì)人員可能需要放棄此類改進(jìn),轉(zhuǎn)而采用更節(jié)能的改進(jìn)。盡管當(dāng)前的架構(gòu)在性能和功耗方面不斷改進(jìn),但實(shí)現(xiàn)額外的增益變得越來(lái)越困難。
“每個(gè)人都在檢查和重構(gòu)他們的微架構(gòu),以期能通過(guò)改進(jìn)它們來(lái)實(shí)現(xiàn)更出色的功耗表現(xiàn),”Cadence Tensilica 音頻/語(yǔ)音 DSP 產(chǎn)品營(yíng)銷總監(jiān) Prakash Madhvapathy 說(shuō)。
許多旨在提高計(jì)算吞吐量的處理器功能(例如無(wú)序執(zhí)行)增加了電路的復(fù)雜性,從而提高了功率和電路面積。由于功耗成本的原因,類似的改進(jìn)今天可能不會(huì)被接受。那么,我們當(dāng)前的處理器架構(gòu)還有哪些機(jī)會(huì)呢?
高效的實(shí)現(xiàn)還不夠
“許多提高效率的努力都涉及對(duì)現(xiàn)有架構(gòu)進(jìn)行更好的設(shè)計(jì),并且仍然需要一些新的技術(shù)突破。特別是在實(shí)施方面要融入更多節(jié)能技術(shù),”Ansys產(chǎn)品營(yíng)銷總監(jiān)Marc Swinnen說(shuō)。一種非?;镜姆椒ㄊ抢昧鞒谈倪M(jìn),以更少的功率完成更多工作?!澳柖刹](méi)有消亡,” Swinnen說(shuō)?!拔覀?nèi)栽讷@得更小的工藝技術(shù),這一直是降低功耗的首要方法。摩爾定律可能很快走到盡頭,但現(xiàn)在還沒(méi)有完全實(shí)現(xiàn)?!?/p>
這也可以推動(dòng)流程決策?!爱?dāng)你選擇某個(gè)工藝節(jié)點(diǎn)時(shí),你還需要考慮到能效,”Madhvapathy 說(shuō)?!?2nm從基礎(chǔ)上來(lái)看比28nm具有更好的功耗曲線?!彼赋觯?2nm將是節(jié)能設(shè)計(jì)的另一個(gè)流行節(jié)點(diǎn)。
3D-IC 提供了介于單片芯片和 PCB 級(jí)組件之間新的功耗節(jié)點(diǎn)。Swinnen指出:“3D-IC的功耗將比單片芯片更高,但3D-IC的整體系統(tǒng)功耗更低,速度比通過(guò)傳統(tǒng)PCB走線連接的多個(gè)芯片系統(tǒng)的要低得多。
共封裝光學(xué)器件 (CPO) 使光學(xué)器件更接近硅,這也可以降低功耗,但這已經(jīng)等了很長(zhǎng)時(shí)間?!癈PO 已經(jīng)存在了很長(zhǎng)時(shí)間,但在經(jīng)濟(jì)上很難證明技術(shù)復(fù)雜度的合理性,而且最終的權(quán)衡不一定是有利的,”Swinnen 解釋道?!安贿^(guò)這似乎正在發(fā)生變化。部分原因是技術(shù)變得更好,部分原因是對(duì)高速數(shù)字通信的需求變得如此強(qiáng)烈,以至于人們?cè)敢鉃榇酥Ц陡噘M(fèi)用。
并非所有技術(shù)都實(shí)用
有些實(shí)現(xiàn)技術(shù)聽(tīng)起來(lái)很有趣,但也有其自身的挑戰(zhàn)。異步設(shè)計(jì)就是其中之一。“從好的方面來(lái)說(shuō),每個(gè)寄存器都會(huì)盡可能快地與下一個(gè)寄存器通信,”Swinnen 解釋道?!皼](méi)有中央時(shí)鐘,所以整個(gè)時(shí)鐘架構(gòu)都消失了。沒(méi)有時(shí)間給你等待,其中一條數(shù)據(jù)路徑正在等待其他數(shù)據(jù)路徑。它已經(jīng)存在了幾十年,但由于性能不可預(yù)測(cè),它未能突破(特定情況除外)。這是一個(gè)猜謎游戲,突破的時(shí)間點(diǎn)會(huì)是什么,由于工藝的可變性,每個(gè)芯片都可能略有不同。也不清楚它最終是否真的節(jié)省了電力?!白詣?dòng)定時(shí)握手意味著觸發(fā)器電路必須復(fù)雜得多,”斯溫寧說(shuō)。“當(dāng)你把它全部拿出來(lái)時(shí),所有觸發(fā)器電路都會(huì)消耗更多的電力。一個(gè)問(wèn)題仍然存在:“它真的最終會(huì)為所有這些復(fù)雜性和缺乏可預(yù)測(cè)性節(jié)省很多電力嗎?綜合來(lái)看,它還沒(méi)有能夠作為一種設(shè)計(jì)方法論得到公認(rèn)。
也可以使用數(shù)據(jù)和時(shí)鐘門控來(lái)馴服雜散電源或毛刺電源以降低功耗?!八鼤?huì)增加面積,但對(duì)雜散電源的影響可能相當(dāng)大,”Madhvapathy 說(shuō)。這需要分析以確定功耗的主要貢獻(xiàn)者?!八粌H可以測(cè)量毛刺功率,還可以識(shí)別導(dǎo)致此毛刺的原因,”Swinnen 指出。
最后,每一個(gè)問(wèn)題在實(shí)現(xiàn)層面上的影響有限?!癛TL能走多遠(yuǎn)是有限制的,這很諷刺,因?yàn)榇蠖鄶?shù)節(jié)能機(jī)會(huì)都在RTL級(jí)別,”Swinnen 說(shuō)?!白畲蟮暮锰帉?shí)際上是在架構(gòu)層面。”
昂貴的功能
人工智能(AI)計(jì)算已將設(shè)計(jì)團(tuán)隊(duì)推向內(nèi)存墻,因此鑒于行業(yè)對(duì)AI訓(xùn)練和推理的關(guān)注,人們將大量注意力轉(zhuǎn)移到將數(shù)萬(wàn)億個(gè)參數(shù)放在需要的地方,以避免摧毀系統(tǒng)。但處理器本身也會(huì)消耗能量,其他工作負(fù)載將在執(zhí)行能力和數(shù)據(jù)移動(dòng)能力之間表現(xiàn)出不同的平衡。
盡管時(shí)鐘頻率繼續(xù)逐漸攀升,但這種變化實(shí)際上并沒(méi)有像以前那樣推動(dòng)性能提升。改進(jìn)的真正目標(biāo)是試圖讓盡可能多的處理器保持忙碌。三個(gè)架構(gòu)特征可以說(shuō)明為這種收益所做的復(fù)雜變化——推測(cè)執(zhí)行(也稱為分支預(yù)測(cè))、無(wú)序執(zhí)行和有限的并行性。
推測(cè)執(zhí)行的目的是避免輸入分支指令并且必須等待結(jié)果后再?zèng)Q定遵循哪些分支的情況。到那個(gè)點(diǎn)時(shí)就會(huì)延遲結(jié)果,直到系統(tǒng)獲取分支結(jié)果指示的指令——可能一直來(lái)自DRAM。相反,推測(cè)性地遵循一個(gè)分支——希望是最有可能的分支。通常,完成分支決策將驗(yàn)證該決策,但有時(shí)不會(huì)。此時(shí),必須退出推測(cè)計(jì)算并重新啟動(dòng)另一個(gè)分支(包括從 DRAM 獲取的潛在指令)。
分支預(yù)測(cè)通常伴隨著無(wú)序執(zhí)行,該功能允許某些指令以與它們?cè)诔绦蛑械娘@示方式不同的順序執(zhí)行。這個(gè)想法是,一條指令可能會(huì)停頓等待數(shù)據(jù),而另一條后續(xù)指令現(xiàn)在已準(zhǔn)備就緒。請(qǐng)注意,后一條指令不能依賴于前一條指令,但串行編程范式的主要限制之一是指令必須按順序列出,即使它們不相互依賴。所以亂序執(zhí)行是一個(gè)復(fù)雜的系統(tǒng),可以提前啟動(dòng)多條指令,確保原始程序語(yǔ)義得到尊重。
圖 1:Intel 處理器微架構(gòu)示例。此特定單元包括亂序處理。由于需要向后代碼兼容性,因此在執(zhí)行之前,首先將指令轉(zhuǎn)換為微代碼。此模型有 11 個(gè)函數(shù)單元,其中 8 個(gè)用于執(zhí)行,3 個(gè)用于數(shù)據(jù)加載/存儲(chǔ)。
面積與性能
這些架構(gòu)并不是簡(jiǎn)單的系統(tǒng),它們的價(jià)格可能與其收益不成比例,具體取決于它們的構(gòu)建方式?!袄?,分支預(yù)測(cè)器會(huì)保留先前采用的分支列表,”西門子 EDA 高級(jí)合成部門項(xiàng)目總監(jiān) Russ Klein說(shuō)。“就像緩存一樣,該列表通常使用分支目標(biāo)的底部N位作為哈希鍵進(jìn)入所采用的分支列表。因此N可以是4或16或更多,列表中的條目數(shù)可以是1或2或32。您可以存儲(chǔ)完整的目標(biāo)分支地址,或者僅存儲(chǔ)底部12位或16位。對(duì)所采用的分支的更大、更詳細(xì)的存儲(chǔ)器會(huì)帶來(lái)更好的性能,但顯然會(huì)占用更多的空間(和功率)。
由此產(chǎn)生的好處可能會(huì)相應(yīng)地有所不同?!耙粋€(gè)小型的簡(jiǎn)單分支預(yù)測(cè)器可能會(huì)將處理器加速 15%,而一個(gè)大型、復(fù)雜的分支預(yù)測(cè)器可以將性能提高30%。但它可能比小而簡(jiǎn)單的處理器面積上大10倍(或更多),“Klein解釋道。“就面積而言,對(duì)性能設(shè)計(jì)者也許不是那么在意,但對(duì)于功耗來(lái)說(shuō),面積確實(shí)是一件大事?!?/p>
Cadence 通過(guò)重組某些編解碼器來(lái)提高它們的性能,從而產(chǎn)生分支很少的代碼?!拔覀兛吹娇?jī)效提高了約5%至15%,”Madhvapathy 說(shuō)?!熬幗獯a器中的分支數(shù)量不到5%,在我們使用 ZOL(零開(kāi)銷循環(huán))的內(nèi)部執(zhí)行循環(huán)中幾乎沒(méi)有分支。”
更通俗的說(shuō),該公司在典型項(xiàng)目中找到了更多的分支?!胺枪俜降拇a大約有20%的指令是分支,”Madhvapathy。“這些都代表著隨機(jī)執(zhí)行的機(jī)會(huì)。性能提升可以達(dá)到30%或更高,因?yàn)槊總€(gè)周期執(zhí)行的平均指令會(huì)顯著增加——即使這些預(yù)測(cè)中有一半是成功的。綜合開(kāi)銷 [分支預(yù)測(cè)和無(wú)序執(zhí)行] 可能在20%到30%的范圍內(nèi)。
Klein回憶起 Tilera 的創(chuàng)始人阿南特·阿加瓦爾 (Anant Agarwal)對(duì)Kill Rule的觀點(diǎn)?!敖K止規(guī)則規(guī)定的是,如果你要將一個(gè)功能放入你的 CPU 中但它會(huì)增加面積,如果增加的面積大于你獲得的性能提升,你就不會(huì)添加該功能,”他說(shuō)。
并行計(jì)算是“簡(jiǎn)單”的答案
并行性顯然提供了另一種提高性能的方法,但當(dāng)前處理器中可用的功能是有限的。當(dāng)今的主流處理器有兩種方式提供并行性——通過(guò)實(shí)例化多個(gè)內(nèi)核,以及通過(guò)內(nèi)核內(nèi)的多個(gè)功能單元。
功能單元是過(guò)去的簡(jiǎn)單算術(shù)邏輯單元(ALU),它是執(zhí)行實(shí)際指令的。給定的功能單元通常能夠執(zhí)行簡(jiǎn)單數(shù)學(xué)之外的一定數(shù)量的指令。它們還可能包括乘法器、分隔器、地址生成,甚至分支。通過(guò)提供多個(gè)這樣的單元,當(dāng)一個(gè)單元繁忙時(shí),另一個(gè)單元可以處理不同的指令,這可能是無(wú)序的。
不同的處理器具有不同數(shù)量的功能單元,代碼分析有助于確定其中指令支持的組合和分布。這有助于在可能的情況下并行化指令執(zhí)行,但處理器開(kāi)銷(例如指令獲?。┦谴邪l(fā)生的。
真正并行化計(jì)算是提高性能的最佳機(jī)會(huì)之一,并且可以使用較少的處理器以提高能效。這樣的解決方案并不新鮮,多核處理器在十多年前就已上市,但未能獲得真正意義上的關(guān)注。
很少有算法是完全可并行化的。那些通常被稱為“令人尷尬的并行”。其他所有內(nèi)容都混合了可并行化的代碼和必須串行運(yùn)行的段。阿姆達(dá)爾定律將這些連續(xù)部分確定為最終限制器。有些程序可以高度并行化,有些則不然。但即使算法看起來(lái)不并行,也可能存在其他機(jī)會(huì)。
分形就是一個(gè)例子?!澳愕?nbsp;f of x 就是 f of x – 1,” Klein解釋道?!懊總€(gè)像素都是通過(guò)長(zhǎng)串行鏈單獨(dú)計(jì)算的。但是,如果你正在制作圖像,你有 1,024 x 1,024 或任何圖像大小,所以你有很多并行性的機(jī)會(huì) [通過(guò)同時(shí)計(jì)算多個(gè)像素]。
當(dāng)今用于數(shù)據(jù)中心服務(wù)器的處理器具有多達(dá)100個(gè)左右的內(nèi)核。但與之前的多核處理器不同的是,它們不用于單個(gè)程序。它們?cè)试S為需要云計(jì)算的不同用戶執(zhí)行多個(gè)程序。
并行的問(wèn)題
即使處理器執(zhí)行可以并行化,真正的問(wèn)題是處理器必須并行編程。這通常意味著顯式管理代碼的并行性質(zhì),例如通過(guò)調(diào)用pThreads。這比典型的編程要繁瑣得多,需要了解數(shù)據(jù)依賴關(guān)系以確保滿足按順序的語(yǔ)義。盡管已經(jīng)存在一些工具來(lái)幫助解決這個(gè)問(wèn)題,但沒(méi)有一個(gè)工具進(jìn)入現(xiàn)在的主流軟件開(kāi)發(fā)。
此外,手動(dòng)管理并行性可能需要針對(duì)不同的處理器使用不同的程序。程序可以運(yùn)行,但如果需要的線程數(shù)超過(guò)給定處理器在硬件中可以管理的線程數(shù),則程序可能不是最佳的。由于上下文切換過(guò)程中不可避免存在系統(tǒng)開(kāi)銷(虛耗),使用軟件并行性可能會(huì)損害性能。
最大的問(wèn)題是軟件開(kāi)發(fā)人員對(duì)顯式并行編程嗤之以鼻。人們強(qiáng)烈希望任何新事物都可以使用當(dāng)前的方法進(jìn)行編程?!败浖<乙呀?jīng)堅(jiān)決拒絕了100核處理器的概念,除了我們看到它開(kāi)始蔓延的一個(gè)領(lǐng)域——GPU和TPU,” Klein觀察到。
這就是多核處理器在商業(yè)上失敗的原因。即便如此,并行化主要還是與性能有關(guān)。降低功耗需要適度的核心數(shù)量和積極的待機(jī)功耗策略,以便空閑核心不會(huì)消耗能量。并行性還有助于恢復(fù)在提高內(nèi)核效率時(shí)可能丟失的整體性能。
“我的論點(diǎn)是,大量真正簡(jiǎn)單的CPU是正確的選擇,但它確實(shí)需要改變編程方法,” Klein說(shuō)。“我對(duì)這種情況的唯一希望是人工智能能夠創(chuàng)建一個(gè)并行編譯器,這是我們作為一個(gè)行業(yè)永遠(yuǎn)無(wú)法做到的事情?!?/p>
我們今天處理在通用處理器上陷入困境算法時(shí)的實(shí)用方法是使用加速器作為非阻塞卸載,以便加速器可以在 CPU 執(zhí)行其他作(或休眠)時(shí)有效地處理其任務(wù)。
加速器可以是寬的,也可以是窄的
所有類型的加速器已經(jīng)存在了幾十年。如今,人們非常重視那些可以加快訓(xùn)練和推理速度的加速器,因?yàn)樾枰浅>唧w的密集計(jì)算。但這樣的加速器并不新鮮。
“異構(gòu)計(jì)算結(jié)合了處理內(nèi)核,以提供優(yōu)化的功率和性能,”艾伯德?tīng)I(yíng)銷副總裁Paul Karazuba 說(shuō)?!斑@顯然包括NPU,NPU解決了來(lái)自效率較低的CPU和GPU進(jìn)行AI處理時(shí)的問(wèn)題。然而,并非所有NPU都是平等的——不僅在方法上,而且在架構(gòu)和利用率上。
這是因?yàn)榧铀倨骺赡苁歉叨忍囟ǖ摹踔潦嵌ㄖ频摹渌铀倨鲗⑷匀皇歉ㄓ玫??!叭绻鸄I工作負(fù)載是眾所周知且穩(wěn)定的,定制NPU可以在功耗和成本效率方面帶來(lái)顯著提升,”Karazuba 繼續(xù)說(shuō)道?!叭绻枰`活地支持多種模型或未來(lái)的人工智能趨勢(shì),通用 NPU更具適應(yīng)性,更容易與現(xiàn)有軟件生態(tài)系統(tǒng)集成?!?/p>
自定義加速器將更具體地根據(jù)其工作負(fù)載進(jìn)行調(diào)整,并且這種努力應(yīng)該會(huì)提高功耗效率。Karazuza 說(shuō):“提高處理器子系統(tǒng)效率(特定于NPU)的一種方法是創(chuàng)建一個(gè)更注重應(yīng)用程序的NPU,而不是采用更通用的NPU?!白远xNPU通常使用專門的MAC陣列和執(zhí)行管道,這些陣列和執(zhí)行管道可以針對(duì)特定數(shù)據(jù)類型和模型結(jié)構(gòu)進(jìn)行調(diào)整。通用NPU包含支持多種數(shù)據(jù)類型的可配置計(jì)算元素,通??商幚砀鼜V泛的層和運(yùn)算符。
放棄給定任務(wù)不需要的功能可以產(chǎn)生顯著的結(jié)果?!霸趯?shí)際應(yīng)用中,當(dāng)部署定制NPU時(shí),Expedera通常會(huì)看到處理器效率提高約3-4倍(以 TOPS/W 為單位)而利用率提高兩倍以上,這里的利用率定義為實(shí)際吞吐量/理論最大吞吐量?!?/p>
顯然在提高處理器和處理子系統(tǒng)的效率方面,仍然存在一些機(jī)會(huì)。但在不久的將來(lái),我們可能會(huì)面臨想法耗盡的風(fēng)險(xiǎn)。然后會(huì)發(fā)生什么?這就是新的處理器架構(gòu)可能有用的地方。然而,考慮到當(dāng)前架構(gòu)背后的龐大生態(tài)系統(tǒng),這樣的變化并非易事。幸運(yùn)的是,有一些新的架構(gòu)想法以及放棄一些通用性的可能性。
評(píng)論