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