加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 補(bǔ)一下歷史課
    • 改變抽象性
    • 結(jié)論
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

我們常說的xPU到底是什么?

2021/11/30
1909
閱讀需 16 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

近些日子,隔三差五就會(huì)有新處理器架構(gòu)的發(fā)布,然后我們常會(huì)見到幾個(gè)縮寫字母TPU、IPU、NPU…… 但我們真正能區(qū)分它們是什么?真的有那么多獨(dú)特的處理器架構(gòu)嗎?

2018年,John L. Hennessy和David A. Patterson發(fā)表了題為“計(jì)算機(jī)架構(gòu)的新黃金時(shí)代”的圖靈演講。他們集中討論的是CPU及其演變方式,但這只是整個(gè)方程式的一小部分。Arteris IP的研究員和系統(tǒng)架構(gòu)師Michael Frank說:“CPU從本質(zhì)上來講,這些東西大多數(shù)并不是真正意義上的處理器。它們更像是一個(gè)GPU,一個(gè)用于特殊工作負(fù)載的加速器,而且它們內(nèi)部有相當(dāng)多的多樣性。機(jī)器學(xué)習(xí)(ML)是一類處理器,你可以把它們都稱為ML加速器,但它們所加速的處理部分有很大的不同。”

Xilinx的營銷總監(jiān)Manuel Uhm說:“一個(gè)處理器的本質(zhì)可以歸結(jié)為三點(diǎn)。歸根結(jié)底,它確實(shí)是回到了指令集架構(gòu)(ISA)。這定義了你要做什么。然后你有I/O和內(nèi)存,它們支持ISA和它要完成的任務(wù)。這將是一個(gè)非常有趣的時(shí)代,因?yàn)槲覀儗⒖吹奖冗^去二、三十年來更多的創(chuàng)新和變化。”

許多新的架構(gòu)都不是單一的處理器。Cadence的技術(shù)和戰(zhàn)略營銷總監(jiān)Pierre-Xavier Thomas說:“我們看到的是不同類型的處理器或可編程引擎的組合。它們?cè)谕粋€(gè)SoC或同一個(gè)系統(tǒng)中,軟件任務(wù)被分派到不同的硬件或靈活的可編程引擎。所有的處理器可能共享一個(gè)通用的API,但執(zhí)行領(lǐng)域?qū)⑹遣煌?。所以你?huì)看到具有不同特征的不同類型的處理。”

事實(shí)是,大部分的命名都只不過是營銷手段而已。Imperas的CEO Simon Davidmann說:“最關(guān)鍵的是,人們使用這些名字和首字母縮寫有兩個(gè)不同的目的。一個(gè)是用于解釋處理器的架構(gòu),如SIMD(Single Instruction Multiple Data)。

另一個(gè)是定義它所處理的應(yīng)用段。因此,它既可以定義處理器架構(gòu),也可以定義一個(gè)品牌名稱,如Google的TPU(Tensor Processing Unit)。他們?cè)诮o自己的異構(gòu)或同構(gòu)架構(gòu)命名,而不是單一的處理器。”

補(bǔ)一下歷史課

40年前,事情要簡(jiǎn)單得多。當(dāng)時(shí)的CPU雖然有許多變種,但基本上都是馮諾伊曼架構(gòu)、圖靈完備的處理器。每種處理器都有不同的指令集,使它們?cè)趫?zhí)行某些任務(wù)時(shí)更有效率,關(guān)于復(fù)雜指令集(CISC)與精簡(jiǎn)指令集(RISC)的相對(duì)優(yōu)勢(shì)有很多討論。

RISC-V的出現(xiàn)使人們對(duì)ISA產(chǎn)生了極大的關(guān)注。Xilinx的Uhm說:“人們想了解ISA,因?yàn)檎荌SA定義了處理器對(duì)一個(gè)確定任務(wù)的優(yōu)化程度。他們可以查看ISA,然后開始計(jì)算周期。如果一個(gè)ISA有一條本地指令,并以1GHz的速度運(yùn)行,那么我可以將其與另一個(gè)處理器ISA進(jìn)行比較,后者的相同功能可能需要兩條指令,但處理器以1.5GHz運(yùn)行。哪一個(gè)能讓我走得更遠(yuǎn)?他們?yōu)橹匾墓δ茏隽擞?jì)算。”

CPU有很多封裝方式,有時(shí)將IO或內(nèi)存放在同一個(gè)封裝中,稱為MCU。

當(dāng)調(diào)制解調(diào)器成為時(shí)尚時(shí),DSP出現(xiàn)了。它們之所以不同,因?yàn)樗鼈兪褂霉鸺軜?gòu)。這將指令總線與數(shù)據(jù)總線分開。其中一些還實(shí)現(xiàn)了SIMD架構(gòu),提高了數(shù)據(jù)處理效率。

指令和數(shù)據(jù)的分離是為了提高吞吐率,盡管它限制了一些可以進(jìn)行的邊緣編程,如自寫程序。Uhm說:“通常情況下,邊界條件不是計(jì)算,而是越來越多的I/O或內(nèi)存。業(yè)界從提升計(jì)算能力,轉(zhuǎn)而確保有足夠的數(shù)據(jù)來保持計(jì)算能力并維持性能。”

當(dāng)單個(gè)處理器不再變得更快,多個(gè)處理器被連接在一起,通常共享內(nèi)存,并保持每個(gè)處理器和總的處理器集群保持圖靈完備的概念。一個(gè)程序的任何部分在哪個(gè)核上執(zhí)行并不重要,其結(jié)果是一樣的。

下一個(gè)重大發(fā)展是GPU,它打破了這個(gè)模式,因?yàn)槊總€(gè)處理元素或管道都有自己的內(nèi)存,不能在處理器之外尋址。由于內(nèi)存是有限的,這意味著它不能執(zhí)行任何任意的處理任務(wù),只能執(zhí)行那些能適合所提供的內(nèi)存空間的任務(wù)。

Uhm指出:“對(duì)于某些類型的功能來說,GPU是非常強(qiáng)大的處理器,但它們有極長(zhǎng)的管道。這些管道使GPU單元不斷地壓縮數(shù)據(jù),但在某些時(shí)候,如果你必須沖刷管道,那就是一個(gè)巨大的打擊。系統(tǒng)中存在大量的延遲和非確定性。”

雖然已經(jīng)定義了許多其他加速器,但GPU以及后來的通用GPU(GPGPU)定義了一種編程范式和軟件堆棧,使它們比過去的加速器更容易接近。Imperas的Davidmann說:“多年來,某些工作已經(jīng)被專門化了。以前有CPU,用于順序程序。還有GPU,它專注于屏幕上的數(shù)據(jù)操作,把我們引入了一個(gè)高度并行的世界。任務(wù)是使用許多小的處理元件來執(zhí)行的。而現(xiàn)在有了ML任務(wù)。”

還有什么其他的構(gòu)造規(guī)則要被打破,可以解釋所有的新架構(gòu)?在過去,處理器陣列通常通過內(nèi)存連接,或固定的網(wǎng)絡(luò)拓?fù)?/a>結(jié)構(gòu),如網(wǎng)狀或環(huán)狀。最近出現(xiàn)的是加入了NoC(Network on Chip),使分布式的異構(gòu)處理器能夠以更靈活的方式進(jìn)行通信。在未來,它們也可能在不使用內(nèi)存的情況下實(shí)現(xiàn)通信。

Arteris的Frank說:“在這一點(diǎn)上,NoC只攜帶數(shù)據(jù)。在未來,NoC可以擴(kuò)展到其他領(lǐng)域,加速器之間的通信超越了數(shù)據(jù)。它可以發(fā)送命令,可以發(fā)送通知,等等。加速器陣列或加速器海洋的通信需求可能與CPU或標(biāo)準(zhǔn)SoC等的通信需求不同。但芯片上的網(wǎng)絡(luò)并不局限于一個(gè)子集。你可以通過支持加速器的特殊通信需求來優(yōu)化和提高性能。”

執(zhí)行架構(gòu)區(qū)分處理器的一種方式是為特定的操作環(huán)境進(jìn)行優(yōu)化。例如,軟件可能在云端運(yùn)行,但你也可能在一個(gè)微小的物聯(lián)網(wǎng)設(shè)備上執(zhí)行相同的軟件。執(zhí)行架構(gòu)會(huì)非常不同,在性能、功耗、成本或在極端條件下的運(yùn)行能力方面實(shí)現(xiàn)不同的操作點(diǎn)。

Cadence的Thomas說:“有些應(yīng)用是針對(duì)云的,而現(xiàn)在我們把它們帶到了邊緣。這可能是因?yàn)檠舆t的要求,或者是能量或功耗的要求,這就需要一個(gè)不同的架構(gòu)。你可能希望有完全相同的軟件堆棧,能夠在兩個(gè)地方運(yùn)行。云端需要提供靈活性,因?yàn)樗鼘⒔邮詹煌愋偷膽?yīng)用,并且必須能夠聚集大量用戶。這就要求服務(wù)器上的硬件具有特定的應(yīng)用能力,但一刀切的做法并不適合所有應(yīng)用。”

ML增加了它自己的要求。Thomas補(bǔ)充說:“當(dāng)用神經(jīng)網(wǎng)絡(luò)和ML構(gòu)建智能系統(tǒng)時(shí),你需要對(duì)新的網(wǎng)絡(luò)進(jìn)行編程,并將其映射到硬件上,使用軟件框架和通用軟件堆棧。然后你可以從PPA的角度將軟件應(yīng)用調(diào)整到合適的硬件。這推動(dòng)了對(duì)不同類型的處理和處理器的需求,以便能夠在硬件層解決這些需求。”

這些需求是由應(yīng)用定義的。Frank說:“一家公司創(chuàng)造了一個(gè)用于圖形操作的處理器。他們優(yōu)化并加速了如何跟蹤圖形,并進(jìn)行圖形的重新排序等操作。還有一些公司主要加速M(fèi)L的蠻力部分,也就是矩陣乘法。內(nèi)存訪問對(duì)每個(gè)架構(gòu)來說都是一個(gè)特殊的問題,因?yàn)楫?dāng)你構(gòu)建一個(gè)加速器時(shí),最重要的目標(biāo)是讓它保持忙碌。你必須讓ALU獲得盡可能多的數(shù)據(jù)。”

這些應(yīng)用有許多共同點(diǎn)。Davidmann說:“它們都有一些本地內(nèi)存,它們?cè)谛酒嫌幸粋€(gè)網(wǎng)絡(luò)來進(jìn)行通信,每個(gè)處理器執(zhí)行一個(gè)軟件算法,都在對(duì)一小塊數(shù)據(jù)進(jìn)行處理。這些工作由一個(gè)在更傳統(tǒng)的CPU上運(yùn)行的操作系統(tǒng)來安排。”

對(duì)硬件設(shè)計(jì)者來說,棘手的地方在于預(yù)測(cè)它將執(zhí)行哪些任務(wù)。Thomas說:“雖然在一些層中會(huì)有類似的操作類型,但人們正在關(guān)注各層中的差異化。為了能夠處理神經(jīng)網(wǎng)絡(luò)需要幾種類型的處理能力,這意味著你需要能夠以某種方式處理神經(jīng)網(wǎng)絡(luò)的一個(gè)部分,然后可能需要另一種類型的操作來處理另一層。數(shù)據(jù)移動(dòng)和數(shù)據(jù)量也在一層一層地變化。”

這種差異化可以超出數(shù)據(jù)移動(dòng)的范圍。Frank說:“對(duì)于基因組測(cè)序,你需要做特定的處理。但你不能用單一類型的加速器來加速一切。你必須為管道建立一套完整的不同的加速器。CPU成為監(jiān)護(hù)執(zhí)行流程的守護(hù)者。它設(shè)置事情,做DMA,提供中間的決策過程。理解和分析算法并定義如何優(yōu)化它們的處理是一項(xiàng)完整的架構(gòu)任務(wù)。”

這個(gè)過程的一部分需要進(jìn)行分區(qū)。Uhm說:“沒有一種處理器類型是為每一個(gè)處理器任務(wù)而優(yōu)化的,FPGA、CPU、GPU、DSP都不行。我們創(chuàng)造了一系列包含所有這些的設(shè)備,但客戶方面的困難是,他們必須提供智能,以確定這整個(gè)系統(tǒng)的哪些部分要針對(duì)處理器,或針對(duì)可編程邏輯,或針對(duì)AI引擎。每個(gè)人都希望有一個(gè)自動(dòng)魔法工具,一個(gè)可以立即決定把這個(gè)放在CPU上,把那個(gè)放在FPGA上,把那個(gè)放在GPU上的工具。這種工具目前并不存在。”

盡管如此,CPU始終會(huì)有一個(gè)角色。Frank說:”CPU需要執(zhí)行程序的不規(guī)則部分。CPU的一般可編程性有其優(yōu)勢(shì)。只是如果你有專門的數(shù)據(jù)結(jié)構(gòu)或數(shù)學(xué)運(yùn)算,它就不能很好地工作。CPU是一個(gè)通用處理器,它沒有為任何東西進(jìn)行優(yōu)化。它什么都不擅長(zhǎng)。”

改變抽象性

在過去,硬件/軟件的邊界是由ISA定義的,而且內(nèi)存是可連續(xù)尋址的。當(dāng)存在多個(gè)處理器時(shí),它們通常是內(nèi)存一致的。

Frank說:“一致性是一種契約。它是代理之間的契約,‘我向你保證,我將永遠(yuǎn)向你提供最新的數(shù)據(jù)’。平等同行之間的一致性是非常重要的,不會(huì)消失。但你可以想象,在一個(gè)數(shù)據(jù)流引擎中,一致性就不那么重要了,因?yàn)槟銈鬏數(shù)氖窃谶吘壱苿?dòng)的數(shù)據(jù),直接從一個(gè)加速器到另一個(gè)。如果你對(duì)數(shù)據(jù)集進(jìn)行分割,一致性就會(huì)受到影響,因?yàn)樗鼤?huì)花費(fèi)你額外的周期。你必須要查找東西。你必須提供更新的信息。”

這就需要不同的內(nèi)存架構(gòu)。Uhm說:“你必須考慮內(nèi)存結(jié)構(gòu),因?yàn)槟阒挥羞@么多緊密耦合的內(nèi)存。你可以訪問相鄰的內(nèi)存,但你很快就會(huì)耗盡相鄰的內(nèi)存。設(shè)計(jì)中必須理解這一點(diǎn)。隨著工具的成熟,更多東西將開始由工具來理解。今天,它是由人類的智慧完成的,通過理解架構(gòu)并應(yīng)用它。”

還需要更高層次的抽象。Thomas說:“有一些框架可以將已知的網(wǎng)絡(luò)映射或編譯到目標(biāo)硬件上。你有一套低級(jí)內(nèi)核,或API,將在軟件堆棧中使用,然后最終由神經(jīng)網(wǎng)絡(luò)的映射器使用。在這之下,你可能有不同類型的硬件,這取決于你想實(shí)現(xiàn)的目標(biāo),取決于你的產(chǎn)品細(xì)節(jié)。它實(shí)現(xiàn)了相同的功能,但不是用相同的硬件,也不是基于相同的PPA權(quán)衡。”

這給那些編譯器帶來了很大的壓力。Frank問道:“主要的問題是你在未來如何對(duì)加速器進(jìn)行編程?你會(huì)實(shí)現(xiàn)像第一代GPU那樣將硬連線引擎串在一起?或者你建立了有自己的指令集的小型可編程引擎?而現(xiàn)在你必須對(duì)這些東西進(jìn)行單獨(dú)編程,并將這些引擎中的每一個(gè),執(zhí)行任務(wù)的引擎用數(shù)據(jù)流連接起來。一個(gè)處理器有總指令集的一些子集,另一個(gè)有不同的子集,它們都將共享控制流的一些重疊部分。你可能有一些有稍微不同的加速能力。編譯器,或了解它的庫,會(huì)相應(yīng)地進(jìn)行映射。”

結(jié)論

處理器架構(gòu)并沒有改變。它們?nèi)匀蛔袷剡^去40年中存在的相同選擇。正在改變的是芯片的構(gòu)造方式。它們現(xiàn)在包含大量的異構(gòu)處理器,這些處理器的內(nèi)存和通信都是為應(yīng)用任務(wù)的一個(gè)子集而優(yōu)化的。每個(gè)芯片都對(duì)處理器的能力和它們被優(yōu)化的內(nèi)容、所需的數(shù)據(jù)吞吐量以及通常會(huì)看到的數(shù)據(jù)流做出了不同的選擇。

每個(gè)硬件供應(yīng)商都想把自己的芯片與其他的芯片區(qū)分開來,但是通過品牌效應(yīng)來做到這一點(diǎn)要比談?wù)搩?nèi)部的技術(shù)細(xì)節(jié)容易得多。因此,他們都號(hào)稱是什么第一、最快、最大,并將其與特定類型的應(yīng)用問題掛鉤。這些三個(gè)字母的縮寫已經(jīng)成為應(yīng)用任務(wù)的名稱,但它們并沒有定義硬件架構(gòu)。

[參考文章]

What is a XPU — Brain Bailey

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

C.A.S.E.及大出行領(lǐng)域?qū)W習(xí)及知識(shí)分享。歡迎業(yè)內(nèi)朋友交流~!