站長資訊網
        最全最豐富的資訊網站

        琳瑯滿目的 XPU,到底是什么?

          在 AI 崛起的這幾年來,大家經常會看到“TPU、IPU、NPU”之類的名字,這些“XPU”有什么分別?是真的有那么多不同的架構?還是廠商的概念營銷?

          為了解答這個問題,外媒 SemiEngineering 搜集了大量業(yè)內人的看法并匯總成文,我們進行精簡和編譯,原文鏈接:https://semiengineering.com/what-is-an-xpu

        琳瑯滿目的 XPU,到底是什么?

        ▲ 圖源 aita

          從 CPU 及其發(fā)展方式的角度來看,這些“XPU”中的大部分都不是真正的處理器。機器學習加速器是一類處理器,但它們用來加速的處理部分卻多種多樣。它們更像是 GPU,是用于執(zhí)行特殊工作負載的加速器,而且它們本身就有很多類型

          處理器的本質可以歸結為三件事,最后還是回到指令集架構 (ISA):首先定義要做的事,然后是 I/O 和內存(支持 ISA 和它試圖完成的任務)。而未來我們將看到比過去兩、三年更多的創(chuàng)新和變化。

          許多新架構都不是單一處理器,它們是不同類型的處理器或可編程引擎的組合,它們存在于同一個 SoC 或同一個系統中,將軟件任務分派到不同的硬件或可靈活變動的可編程引擎上。所有這些處理器可能共享一個公共 API,但執(zhí)行域有所不同。在這個層面,確實是有各種類型的不同架構。

          但現實情況是,大部分“XPU”的命名都是營銷,而且這些命名和縮寫,同時指代兩種東西:一種是用于解釋處理器的架構,例如 SIMD(單指令多數據),而另一種定義了它正在尋址的應用程序段。所以它既可以用來定義處理器架構,也可以用作如“張量處理單元(TPU)”這樣的品牌名,畢竟廠商們不是在為單個處理器命名,而是在為他們的架構命名。

          歷史

          在 40 年前,命名的問題要簡單很多。首先是中央處理器 (CPU),雖然它有很多演變版本,但它們基本上都是馮諾依曼架構,是圖靈完備的處理器。每個都有不同的指令集來提升處理效率,當年還針對復雜指令集 (CISC) 與精簡指令集 (RISC) 優(yōu)缺點,有過非常廣泛的討論。

          后來的 RISC-V 的出現給 ISA 帶來了很多關注。ISA 定義了處理器針對已定義任務的優(yōu)化程度,人們可以查看 ISA 并開始計算周期。例如,如果一個 ISA 具有本機指令并以 1GHz 運行,那我們就能將它與另一個 ISA 處理器進行比較,后者要完成相同的功能可能需要兩條指令,但頻率是 1.5GHz,孰強孰弱就很明顯了。

          CPU 有多種封裝方式,有時將 I/O 或內存放在同一個封裝中,而后兩者被稱為微控制器單元 (MCU)。在調制解調器大行其道的時候,數字信號處理器 (DSP) 出現了,它們的不同之處在于它們使用了哈佛架構,將指令總線與數據總線分開了,其中一些還用了 SIMD 架構來提升數據處理效率。

          指令和數據的分離是為了提高吞吐率(雖然它確實限制了自編程之類的邊緣編程)。通常,這里的邊界條件不是計算,而是 I/O 或內存。業(yè)內的重點已經從提升計算能力,轉變成確保有足夠的數據來讓計算進行下去并保持性能。

          當單個處理器的性能無法再繼續(xù)提升,那就把多個處理器連在一起。通常它們還會使用共享內存,讓每個處理器和整個處理器集群都保持圖靈完備。程序的任何部分在哪個核心上執(zhí)行都無關緊要,反正結果是一樣的。

          而下一個重大發(fā)展,是圖形處理單元 (GPU) 的出現。GPU 打破了常規(guī),因為每個處理單元或管線都有自己的內存,無法在處理單元外部尋址。因為內存大小有限,只能執(zhí)行那些能放入內存的任務,所以對任務本身有限制。

          對于某些類型任務,GPU 是非常強大,但它們的管線非常長,導致了延遲和不確定性。這些管線讓 GPU 單元不斷處理數據,但如果要刷新管線,效率就會大打折扣。

          GPU 和后來的通用 GPU (GPGPU) 定義了一種編程范式和軟件棧,使它們比以前的加速器更容易上手。多年來,某些工作一直是專業(yè)化的,有用于運行連續(xù)程序的 CPU,有專注于圖像顯示,并將我們帶入高度并行世界的圖形處理器,后者使用很多小的處理單元來執(zhí)行任務(包括現在的機器學習任務)。

          那有什么架構規(guī)則可以用來解釋所有的新架構嗎?有的,或許片上網絡 (NoC) 是個合適的定義 。過去,處理器陣列通常用內存或固定網絡拓撲連接(網狀或環(huán)形),而 NoC 讓分布式異構處理器能以更靈活的方式進行通信。而將來,它們還可以在不使用內存的情況下進行通信。

          現在的 NoC 是針對數據的,而未來的 NoC 也能發(fā)命令和通知等數據,可以擴展到那些加速器間不只是交互數據的領域。加速器陣列或集群的通信需求可能與 CPU 或標準 SoC 的通信需求不同,但 NoC 并不會將設計者限制在一個子集里,他們能通過滿足不同加速器的特殊通信需求來優(yōu)化和提高性能。

          執(zhí)行架構

          另一種區(qū)分處理器的方式,是看它們對特定運行環(huán)境進行的優(yōu)化。例如,云端和微型物聯網設備上可能可以跑相同的軟件,但在不同環(huán)境中使用的架構是完全不同的,它們對性能、功耗、成本、極端條件下的運行能力等要求都是不同的。

          這可能是因為對低延遲的需求,或者是因為功耗的原因,一些原來針對云計算的軟件,現在被逐漸放到設備端側運行。雖然是不同的硬件架構,但大家自然希望擁有完全相同的軟件棧,以便軟件能夠在兩種場合跑起來。云端需要提供靈活性,因為它會跑不同類型的應用程序,而且用戶眾多。這要求服務器硬件又要有針對應用的優(yōu)化,又要能提供不同的規(guī)模。

          而機器學習任務也有自己的要求,在使用神經網絡和機器學習構建系統時,你需要使用軟件框架和通用軟件棧,讓網絡編程并映射到硬件,然后你可以從 PPA 的角度讓軟件適配不同的硬件。這推動了“讓不同類型的處理和處理器適應各種硬件”的需求。

          這些需求是由應用定義的。舉個例子,就像一家公司設計了一個用于圖形操作的處理器,他們優(yōu)化和加速圖形跟蹤,并執(zhí)行諸如圖形重新排之類的操作,還有其他像矩陣乘法之類的加速機器學習的蠻力部分。

          而內存訪問對于每個架構來說都是一個特殊的問題,因為當你構建加速器時,最重要的目標是讓它盡量長時間保持滿載,你必須將盡可能多的數據傳送到 ALU,讓它盡可能多地吞吐數據。

          它們有許多共同之處,它們都有本地內存,有片上網絡來進行通信,每個執(zhí)行算法的處理器都在處理一小塊數據,這些操作都由運行在 CPU 上的操作系統調度。

          對于硬件設計人員,棘手之處在于任務預測。盡管在某些層面上會有類似的操作類型,但人們正在研究不同層面上差異。為了處理神經網絡,需要幾種類型的處理能力。這意味著你需要對神經網絡的一部分進行某種方式的處理,然后在另一層又可能需要另一種處理操作,而且數據移動和數據量也是逐層變化的。

          你需要為處理管線構建一整套不同的加速器,而理解和分析算法并定義優(yōu)化過程,是涉及到完整體系結構的任務。就像對于基因組測序,你可能需要進行某些處理,但你不能用單一類型的加速器來加速所有東西。CPU 負責管理執(zhí)行流水線,對其進行設置、執(zhí)行 DMA、進行決策。

          當中可能涉及到分區(qū)執(zhí)行的問題。沒有任何一種處理器可以針對每種任務進行優(yōu)化 ——FPGA、CPU、GPU、DSP 都做不到。芯片設計商可以創(chuàng)建一系列包含所有這些處理器的芯片,但客戶應用端的難點在于,他們要自己確定系統的各個部分要在哪些處理器上運行,是在 CPU 上?在 FPGA 上?還是在 GPU 上?

          但無論如何,里面總是需要有 CPU 的,CPU 要負責執(zhí)行程序的不規(guī)則部分,CPU 的通用性有自己的優(yōu)勢。但反過來,如果是專門的數據結構或數學運算,CPU 就不行了。畢竟 CPU 是通用處理器,它沒有針對任何東西進行優(yōu)化,沒有特別擅長的項目。

          抽象層的改變

          以前,硬件/軟件邊界由 ISA 定義,并且該內存是連續(xù)可尋址的。而涉及到多處理器時,一般內存定義也是也是一致的。但是可以想象,在數據流引擎中,一致性并不那么重要,因為數據會從一個加速器直接傳到另一個加速器。

          如果你對數據集進行分區(qū),那一致性會成為障礙,你需要對照和更新數據,并會占用額外的運算周期。所以我們需要,也必須考慮不同的內存結構,畢竟可用的內存就那么點。或許可以訪問相鄰的內存,但也會很快耗盡,然后無法及時訪問。所以必須在設計中加以理解,而且是要在理解架構的情況下去設計它。

          我們還需要更高級別的抽象層。有些框架可以將已知網絡映射或編譯到目標硬件上,例如在一組低級內核或 API,它們將在軟件堆棧中使用,并最終由神經網絡的映射器使用。在底層,你可能在用不同類型的硬件,這由你想要實現的目標來決定。反正就是用不同的硬件,不同的 PPA ,實現了相同的功能。

          而這會給編譯器帶來很大的壓力。主要的問題是你未來要如何對加速器進行編程?你是否搞了個像初代 GPU 那樣串在一起的硬連線引擎?或者你是否構建了具有自己指令集的小型可編程引擎?現在你必須單獨對這些東西進行編程,并將這些引擎中的每一個都與數據流連接起來,然后執(zhí)行任務。

          一個處理器擁有整個指令集的某個子集,另一個處理器擁有一個不同的子集,它們都將共享控制流的某些重疊部分,編譯器得了解它的庫并進行映射。

          結論

          其實處理器的架構并沒有改變,它們仍然遵守過去 40 年來一直遵循的規(guī)則。變的是芯片的構造方式,它們現在包含大量異構處理器,這些芯片根據各自的任務,對內存和通信進行優(yōu)化。每個芯片都對處理器性能、優(yōu)化目標、所需的數據吞吐量以及數據流做出了不同的選擇。

          每個硬件供應商都希望將自己的芯片與其他芯片區(qū)分開來,品牌推廣比談論內部技術細節(jié)要容易得多。廠商給自己的芯片起了“XPU”的名字,并將它與特定類型的應用聯系起來,但“XPU”并不是關于某個特定硬件架構的名字。

        特別提醒:本網信息來自于互聯網,目的在于傳遞更多信息,并不代表本網贊同其觀點。其原創(chuàng)性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,并請自行核實相關內容。本站不承擔此類作品侵權行為的直接責任及連帶責任。如若本網有任何內容侵犯您的權益,請及時聯系我們,本站將會在24小時內處理完畢。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲欧洲精品成人久久奇米网 | 精品国产香蕉伊思人在线在线亚洲一区二区 | 国产精品爱搞视频网站| 久久精品无码一区二区日韩AV| 精品久久一区二区| 国产精品第1页| 国产成人精品日本亚洲18图| 亚洲精品第一国产综合精品99| 办公室久久精品| 久久亚洲国产午夜精品理论片| 精品性影院一区二区三区内射| 亚洲AV无码乱码精品国产| 国产午夜精品久久久久九九| 亚洲国产精品久久久久婷婷软件 | 在线电影国产精品| 99热成人精品热久久669| 久久国产精品无码HDAV| 午夜精品久久久久9999高清| 国产精品爽爽ⅴa在线观看| 97精品伊人久久久大香线蕉| 国产精品18久久久久久vr| 久久成人国产精品| 蜜国产精品jk白丝AV网站| 中文精品久久久久人妻| 欧美激情精品久久久久久久九九九 | 国产精品久久久久久久午夜片 | 国产午夜精品一区二区三区| 四虎精品免费永久免费视频| 精品99久久aaa一级毛片| 成人国产精品秘 果冻传媒在线 | 国产精品视频一区国模私拍| 91精品最新国内在线播放| 久久国产免费观看精品3| 国内少妇偷人精品视频免费| 精品无码人妻一区二区三区品| 久久99精品久久久久久hb无码| 欧美精品v欧洲精品| 人妻精品久久无码专区精东影业| 欧美精品久久久久久久自慰| 精品国际久久久久999波多野| 国产乱码精品一品二品|