聽說過CPU、GPU 琳琅滿目的XPU到底是什麼?

文章推薦指數: 80 %
投票人數:10人

從CPU 及其發展方式的角度來看,這些「XPU」中的大部分都不是真正的處理器。

機器學習加速器是一類處理器,但它們用來加速的處理部分卻多種多樣。

聽說過CPU、GPU琳琅滿目的XPU到底是什麼? 2021年11月16日 資訊 XPU 在AI崛起的這幾年來,大家經常會看到「TPU、IPU、NPU」之類的名字,這些「XPU」有什麼分別?是真的有那麼多不同的架構?還是廠商的概念營銷? 為了解答這個問題,外媒SemiEngineering搜集了大量業內人的看法並匯總成文,我們進行精簡和編譯,原文鏈接://semiengineering.com/what-is-an-xpu 從CPU及其發展方式的角度來看,這些「XPU」中的大部分都不是真正的處理器。

機器學習加速器是一類處理器,但它們用來加速的處理部分卻多種多樣。

它們更像是GPU,是用於執行特殊工作負載的加速器,而且它們本身就有很多類型。

處理器的本質可以歸結為三件事,最後還是回到指令集架構(ISA):首先定義要做的事,然後是I/O和記憶體(支援ISA和它試圖完成的任務)。

而未來我們將看到比過去兩、三年更多的創新和變化。

許多新架構都不是單一處理器,它們是不同類型的處理器或可編程引擎的組合,它們存在於同一個SoC或同一個系統中,將軟體任務分派到不同的硬體或可靈活變動的可編程引擎上。

所有這些處理器可能共享一個公共API,但執行域有所不同。

在這個層面,確實是有各種類型的不同架構。

但現實情況是,大部分「XPU」的命名都是營銷,而且這些命名和縮寫,同時指代兩種東西:一種是用於解釋處理器的架構,例如SIMD(單指令多數據),而另一種定義了它正在定址的應用程式段。

所以它既可以用來定義處理器架構,也可以用作如「張量處理單元(TPU)」這樣的品牌名,畢竟廠商們不是在為單個處理器命名,而是在為他們的架構命名。

歷史 在40年前,命名的問題要簡單很多。

首先是中央處理器(CPU),雖然它有很多演變版本,但它們基本上都是馮諾依曼架構,是圖靈完備的處理器。

每個都有不同的指令集來提升處理效率,當年還針對複雜指令集(CISC)與精簡指令集(RISC)優缺點,有過非常廣泛的討論。

後來的RISC-V的出現給ISA帶來了很多關注。

ISA定義了處理器針對已定義任務的優化程度,人們可以查看ISA並開始計算周期。

例如,如果一個ISA具有本機指令並以1GHz運行,那我們就能將它與另一個ISA處理器進行比較,後者要完成相同的功能可能需要兩條指令,但頻率是1.5GHz,孰強孰弱就很明顯了。

CPU有多種封裝方式,有時將I/O或記憶體放在同一個封裝中,而後兩者被稱為微控制器單元(MCU)。

在數據機大行其道的時候,數字訊號處理器(DSP)出現了,它們的不同之處在於它們使用了哈佛架構,將指令匯流排與數據匯流排分開了,其中一些還用了SIMD架構來提升數據處理效率。

指令和數據的分離是為了提高吞吐率(雖然它確實限制了自編程之類的邊緣編程)。

通常,這裡的邊界條件不是計算,而是I/O或記憶體。

業內的重點已經從提升計算能力,轉變成確保有足夠的數據來讓計算進行下去並保持性能。

當單個處理器的性能無法再繼續提升,那就把多個處理器連在一起。

通常它們還會使用共享記憶體,讓每個處理器和整個處理器集群都保持圖靈完備。

程式的任何部分在哪個核心上執行都無關緊要,反正結果是一樣的。

而下一個重大發展,是圖形處理單元(GPU)的出現。

GPU打破了常規,因為每個處理單元或管線都有自己的記憶體,無法在處理單元外部定址。

因為記憶體大小有限,只能執行那些能放入記憶體的任務,所以對任務本身有限制。

對於某些類型任務,GPU是非常強大,但它們的管線非常長,導致了延遲和不確定性。

這些管線讓GPU單元不斷處理數據,但如果要刷新管線,效率就會大打折扣。

GPU和後來的通用GPU(GPGPU)定義了一種編程範式和軟體棧,使它們比以前的加速器更容易上手。

多年來,某些工作一直是專業化的,有用於運行連續程式的CPU,有專註於影像顯示,並將我們帶入高度並行世界的圖形處理器,後者使用很多小的處理單元來執行任務(包括現在的機器學習任務)。

那有什麼架構規則可以用來解釋所有的新架構嗎?有的,或許片上網路(NoC)是個合適的定義。

過去,處理器陣列通常用記憶體或固定網路拓撲連接(網狀或環形),而NoC讓分散式異構處理器能以更靈活的方式進行通訊。

而將來,它們還可以在不使用記憶體的情況下進行通訊。

現在的NoC是針對數據的,而未來的NoC也能發命令和通知等數據,可以擴展到那些加速器間不只是交互數據的領域。

加速器陣列或集群的通訊需求可能與CPU或標準SoC的通訊需求不同,但NoC並不會將設計者限制在一個子集里,他們能通過滿足不同加速器的特殊通訊需求來優化和提高性能。

執行架構 另一種區分處理器的方式,是看它們對特定運行環境進行的優化。

例如,雲端和微型物聯網設備上可能可以跑相同的軟體,但在不同環境中使用的架構是完全不同的,它們對性能、功耗、成本、極端條件下的運行能力等要求都是不同的。

這可能是因為對低延遲的需求,或者是因為功耗的原因,一些原來針對雲計算的軟體,現在被逐漸放到設備端側運行。

雖然是不同的硬體架構,但大家自然希望擁有完全相同的軟體棧,以便軟體能夠在兩種場合跑起來。

雲端需要提供靈活性,因為它會跑不同類型的應用程式,而且用戶眾多。

這要求伺服器硬體又要有針對應用的優化,又要能提供不同的規模。

而機器學習任務也有自己的要求,在使用神經網路和機器學習構建系統時,你需要使用軟體框架和通用軟體棧,讓網路編程並映射到硬體,然後你可以從PPA的角度讓軟體適配不同的硬體。

這推動了「讓不同類型的處理和處理器適應各種硬體」的需求。

這些需求是由應用定義的。

舉個例子,就像一家公司設計了一個用於圖形操作的處理器,他們優化和加速圖形跟蹤,並執行諸如圖形重新排之類的操作,還有其他像矩陣乘法之類的加速機器學習的蠻力部分。

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

它們有許多共同之處,它們都有本地記憶體,有片上網路來進行通訊,每個執行演算法的處理器都在處理一小塊數據,這些操作都由運行在CPU上的作業系統調度。

對於硬體設計人員,棘手之處在於任務預測。

儘管在某些層面上會有類似的操作類型,但人們正在研究不同層面上差異。

為了處理神經網路,需要幾種類型的處理能力。

這意味著你需要對神經網路的一部分進行某種方式的處理,然後在另一層又可能需要另一種處理操作,而且數據移動和數據量也是逐層變化的。

你需要為處理管線構建一整套不同的加速器,而理解和分析演算法並定義優化過程,是涉及到完整體系結構的任務。

就像對於基因組測序,你可能需要進行某些處理,但你不能用單一類型的加速器來加速所有東西。

CPU負責管理執行流水線,對其進行設置、執行DMA、進行決策。

當中可能涉及到分區執行的問題。

沒有任何一種處理器可以針對每種任務進行優化——FPGA、CPU、GPU、DSP都做不到。

晶片設計商可以創建一系列包含所有這些處理器的晶片,但客戶應用端的難點在於,他們要自己確定系統的各個部分要在哪些處理器上運行,是在CPU上?在FPGA上?還是在GPU上? 但無論如何,裡面總是需要有CPU的,CPU要負責執行程式的不規則部分,CPU的通用性有自己的優勢。

但反過來,如果是專門的數據結構或數學運算,CPU就不行了。

畢竟CPU是通用處理器,它沒有針對任何東西進行優化,沒有特別擅長的項目。

抽象層的改變 以前,硬體/軟體邊界由ISA定義,並且該記憶體是連續可定址的。

而涉及到多處理器時,一般記憶體定義也是也是一致的。

但是可以想像,在數據流引擎中,一致性並不那麼重要,因為數據會從一個加速器直接傳到另一個加速器。

如果你對數據集進行分區,那一致性會成為障礙,你需要對照和更新數據,並會佔用額外的運算周期。

所以我們需要,也必須考慮不同的記憶體結構,畢竟可用的記憶體就那麼點。

或許可以訪問相鄰的記憶體,但也會很快耗盡,然後無法及時訪問。

所以必須在設計中加以理解,而且是要在理解架構的情況下去設計它。

我們還需要更高級別的抽象層。

有些框架可以將已知網路映射或編譯到目標硬體上,例如在一組低級內核或API,它們將在軟體堆棧中使用,並最終由神經網路的映射器使用。

在底層,你可能在用不同類型的硬體,這由你想要實現的目標來決定。

反正就是用不同的硬體,不同的PPA,實現了相同的功能。

而這會給編譯器帶來很大的壓力。

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

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

結論 其實處理器的架構並沒有改變,它們仍然遵守過去40年來一直遵循的規則。

變的是晶片的構造方式,它們現在包含大量異構處理器,這些晶片根據各自的任務,對記憶體和通訊進行優化。

每個晶片都對處理器性能、優化目標、所需的數據吞吐量以及數據流做出了不同的選擇。

每個硬體供應商都希望將自己的晶片與其他晶片區分開來,品牌推廣比談論內部技術細節要容易得多。

廠商給自己的晶片起了「XPU」的名字,並將它與特定類型的應用聯繫起來,但「XPU」並不是關於某個特定硬體架構的名字。

分享此文:分享到Twitter(在新視窗中開啟)按一下以分享至Facebook(在新視窗中開啟)按一下以分享到Telegram(在新視窗中開啟)分享到Pinterest(在新視窗中開啟)更多點這裡列印(在新視窗中開啟)分享到LinkedIn(在新視窗中開啟)分享到Reddit(在新視窗中開啟)分享到Tumblr(在新視窗中開啟)分享到Pocket(在新視窗中開啟)分享到WhatsApp(在新視窗中開啟)按一下即可分享至Skype(在新視窗中開啟) Tags:XPU RelatedPosts 2021年5月21日 諜照首曝:A卡7nm小鋼炮來了 2020年2月8日 病毒能存活五天?快遞這樣取才能更加安全 Previouspost告別口腔細菌!高露潔進口漱口水250ml*3瓶29.9元 Nextpost重磅版權回歸!中國音樂平台巨頭重啟IPO VirMach便宜VPS BlackFridayFlashSale (2021/9/14~) 1CoreCPU 1GBRam 20GBSSD 1年只要USD$5up!!! Tips:Offer10分鐘更新一次 Newcustomers,75%offfor2months. 1CoreCPU 1GBRam 25GBSSD 每月只要USD$1.75!!! VirMachVPSHosting VPSGamersVPSHosting VPSCraftVPSHosting VPSharedVPSHosting QNews 熱門文章 系統架構設計師-軟體水平考試(高級)-論文-可靠性設計 7nmZen2完美收官!AMD全新桌面RyzenAPU全線曝光 PHP基礎之面向對象篇 IDEA半天卡住buid(編譯)不動——解決辦法(適用於maven和gradle)及定位思路 比友商Pro頂級旗艦多了什麼?堅果R2評價來了:OS成功圈粉 翻遍蘋果M1筆記型電腦首測後我決定不買了! java8–java17升級指北 微軟在Win10中讓用戶更容易刪除Cortana網友:最無用功能 手把手教你在win10下搭建pytorchGPU環境(Anaconda+Pycharm) 根治高性能SSD發燙問題金士頓KC25001TBSSD上手:滿載溫度也很低 熱門搜尋.NET .NETCore 5G AMD c# CPU處理器 docker Intel iPhone12 iPhone手機 JAVA javascript linux MySQL NVIDIA Python Redmi Windows10 Windows作業系統 三星 豐田 華為 圖賞 小米 微信 微軟 新冠疫苗 新冠病毒 新冠肺炎 日本 顯示卡 智慧手機 比亞迪 汽車 遊戲 特斯拉 生科醫學 電動車 電影 演算法 美國 騰訊 晶片 蘋果 榮耀 . 简体中文 大陆简体 港澳繁體 马新简体 马来西亚简体 繁體中文



請為這篇文章評分?