• 正文
    • 補一下歷史課
    • 改變抽象性
    • 結論
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

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

2021/11/30
1473
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

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

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

Xilinx的營銷總監(jiān)Manuel Uhm說:“一個處理器的本質可以歸結為三點。歸根結底,它確實是回到了指令集架構(ISA)。這定義了你要做什么。然后你有I/O和內(nèi)存,它們支持ISA和它要完成的任務。這將是一個非常有趣的時代,因為我們將看到比過去二、三十年來更多的創(chuàng)新和變化。”

許多新的架構都不是單一的處理器。Cadence的技術和戰(zhàn)略營銷總監(jiān)Pierre-Xavier Thomas說:“我們看到的是不同類型的處理器或可編程引擎的組合。它們在同一個SoC或同一個系統(tǒng)中,軟件任務被分派到不同的硬件或靈活的可編程引擎。所有的處理器可能共享一個通用的API,但執(zhí)行領域將是不同的。所以你會看到具有不同特征的不同類型的處理。”

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

另一個是定義它所處理的應用段。因此,它既可以定義處理器架構,也可以定義一個品牌名稱,如Google的TPU(Tensor Processing Unit)。他們在給自己的異構或同構架構命名,而不是單一的處理器。”

補一下歷史課

40年前,事情要簡單得多。當時的CPU雖然有許多變種,但基本上都是馮諾伊曼架構、圖靈完備的處理器。每種處理器都有不同的指令集,使它們在執(zhí)行某些任務時更有效率,關于復雜指令集(CISC)與精簡指令集(RISC)的相對優(yōu)勢有很多討論。

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

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

調制解調器成為時尚時,DSP出現(xiàn)了。它們之所以不同,因為它們使用哈佛架構。這將指令總線與數(shù)據(jù)總線分開。其中一些還實現(xiàn)了SIMD架構,提高了數(shù)據(jù)處理效率。

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

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

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

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

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

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

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

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

Cadence的Thomas說:“有些應用是針對云的,而現(xiàn)在我們把它們帶到了邊緣。這可能是因為延遲的要求,或者是能量或功耗的要求,這就需要一個不同的架構。你可能希望有完全相同的軟件堆棧,能夠在兩個地方運行。云端需要提供靈活性,因為它將接收不同類型的應用,并且必須能夠聚集大量用戶。這就要求服務器上的硬件具有特定的應用能力,但一刀切的做法并不適合所有應用。”

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

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

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

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

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

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

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

改變抽象性

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

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

這就需要不同的內(nèi)存架構。Uhm說:“你必須考慮內(nèi)存結構,因為你只有這么多緊密耦合的內(nèi)存。你可以訪問相鄰的內(nèi)存,但你很快就會耗盡相鄰的內(nèi)存。設計中必須理解這一點。隨著工具的成熟,更多東西將開始由工具來理解。今天,它是由人類的智慧完成的,通過理解架構并應用它。”

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

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

結論

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

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

[參考文章]

What is a XPU — Brain Bailey

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄