近年來,,幾乎每天都會發(fā)布關(guān)于新處理器架構(gòu)的公告,并給出一個三個字母的首字母縮略詞——TPU,、IPU,、NPU。但真正區(qū)分它們的是什么,?真的有那么多獨(dú)特的處理器架構(gòu),,還是發(fā)生了其他事情,?
2018 年,John L. Hennessy 和 David A. Patterson 發(fā)表了題為“計(jì)算機(jī)架構(gòu)的新黃金時代”的圖靈講座,。他們關(guān)注的是 CPU 及其發(fā)展方式,,但這只是整個方程式的一小部分。Arteris IP研究員兼系統(tǒng)架構(gòu)師 Michael Frank 表示:“從 CPU 的角度來看,,這些xPU中的大多數(shù)都不是真正的處理器,。” “它們更像是一個 GPU,,一個用于特殊工作負(fù)載的加速器,,而且它們內(nèi)部有相當(dāng)多的多樣性。機(jī)器學(xué)習(xí)是一類處理器,,您可以將它們統(tǒng)稱為機(jī)器學(xué)習(xí)加速器,,但它們加速的處理部分卻多種多樣?!?/p>
處理器的本質(zhì)可以歸結(jié)為三件事,。“歸根結(jié)底,,它確實(shí)回到了指令集架構(gòu) (ISA),,”賽靈思芯片營銷總監(jiān) Manuel Uhm 說?!斑@定義了你想要做什么,。然后你有 I/O 和內(nèi)存,它們支持 ISA 和它試圖完成的任務(wù),。未來這將是一個非常有趣的時刻,,因?yàn)槲覀儗⒖吹奖冗^去兩三年多的時間更多的創(chuàng)新和變化?!?/p>
許多新架構(gòu)都不是單處理器,。“我們看到的是不同類型的處理器或可編程引擎的組合,,它們存在于同一個 SoC 或同一個系統(tǒng)中,,” Cadence技術(shù)和戰(zhàn)略營銷集團(tuán)總監(jiān) Pierre-Xavier Thomas 說?!皩④浖蝿?wù)分派到不同的硬件或靈活的可編程引擎,。所有處理器可能共享一個公共 API,但執(zhí)行域?qū)⒂兴煌?。在這里,,您確實(shí)會看到具有不同類型特征的不同類型的處理。”
現(xiàn)實(shí)情況是,,大部分命名都是營銷,。
“關(guān)鍵是人們將這些名稱和首字母縮略詞用于兩個不同的目的,” Imperas Software 的首席執(zhí)行官 Simon Davidmann 說,?!耙粋€用于解釋處理器的架構(gòu),例如 SIMD(單指令多數(shù)據(jù)),。另一個定義了它正在尋址的應(yīng)用程序段,。所以它可以定義處理器架構(gòu),或者像張量處理單元(TPU)這樣的品牌名稱,。他們正在為他們的異構(gòu)或同構(gòu)架構(gòu)命名,,而不是單個處理器?!?/p>
一點(diǎn)歷史
40 年前,,事情要簡單得多。當(dāng)時有中央處理器(CPU),, 也有很多它的變體,,但它們基本上都是馮諾依曼架構(gòu),圖靈完備的處理器,。每個都有不同的指令集,,使它們在某些任務(wù)上更高效,并且有很多關(guān)于復(fù)雜指令集 (CISC) 與精簡指令集 (RISC) 的相對優(yōu)點(diǎn)的討論,。
RISC-V的出現(xiàn)給ISA帶來了很多關(guān)注,。“人們想要了解 ISA,,因?yàn)檎?ISA 定義了處理器針對已定義任務(wù)的優(yōu)化程度,,”賽靈思的 Uhm 說?!八麄兛梢圆榭?ISA 并開始計(jì)算周期,。如果一個 ISA 具有本機(jī)指令并以 1 GHz 運(yùn)行,我可以將其與另一個處理器 ISA 進(jìn)行比較,,后者相同的功能可能需要兩條指令,但處理器以 1.5 GHz 運(yùn)行,。哪一個讓我走得更遠(yuǎn),?他們?yōu)橹匾墓δ苓M(jìn)行數(shù)學(xué)計(jì)算?!?/p>
CPU 有多種封裝方式,,有時將 IO 或內(nèi)存放在同一個封裝中,它們被稱為微控制器單元 (MCU)。
當(dāng)調(diào)制解調(diào)器變得流行時,,數(shù)字信號處理器(DSP) 出現(xiàn)了,,它們的不同之處在于它們使用了哈佛架構(gòu)。這將指令總線與數(shù)據(jù)總線分開,。其中一些還實(shí)施了 SIMD 架構(gòu),,使數(shù)據(jù)處理更加高效。
指令和數(shù)據(jù)的分離是為了提高吞吐率,,盡管它限制了一些可以完成的邊緣編程,,例如自寫程序?!巴ǔ?,邊界條件不是計(jì)算,”Uhm 說,?!八絹碓蕉嗟厥?I/O 或內(nèi)存。該行業(yè)從提升計(jì)算能力轉(zhuǎn)向確保有足夠的數(shù)據(jù)來保持計(jì)算能力并保持性能,?!?/p>
當(dāng)單個處理器不再變得更快時,他們把多個處理器連接在一起,,這些處理器通常共享內(nèi)存并保持每個處理器和整個處理器集群保持圖靈完備的概念,。程序的任何部分在哪個核心上執(zhí)行都無關(guān)緊要,因?yàn)榻Y(jié)果是一樣的,。
下一個重大發(fā)展是圖形處理單元(GPU),,它的出現(xiàn)打破了常規(guī),因?yàn)槊總€處理元素或pipeline都有自己的內(nèi)存,,無法在處理器外部尋址,。因?yàn)閮?nèi)存是有限的,這意味著它不能執(zhí)行任何任意的處理任務(wù),,只能執(zhí)行那些可以放入提供的內(nèi)存空間的任務(wù),。
“對于某些類型的功能,GPU 是非常強(qiáng)大的處理器,,但它們的pipeline非常長,,”Uhm 指出?!斑@些pipeline讓 GPU 單元不斷處理數(shù)據(jù),,但在某些時候,如果您必須刷新pipeline,,那將是一個巨大的打擊,。系統(tǒng)中內(nèi)置了大量的延遲和不確定性。”
雖然已經(jīng)定義了許多其他加速器,,但 GPU——以及后來的通用 GPU (GPGPU)——定義了一種編程范式和軟件堆棧,,使它們比過去的加速器更容易上手?!岸嗄陙?,某些工作是專門化的,”Imperas 的Davidmann說,?!坝杏糜陧樞虺绦虻?CPU。有圖形處理器,,它專注于為屏幕處理數(shù)據(jù),,并將我們帶入了一個高度并行的世界。使用許多小的處理元素來執(zhí)行任務(wù)?,F(xiàn)在有機(jī)器學(xué)習(xí)任務(wù),。”
還有什么其他的構(gòu)造規(guī)則可以解釋所有的新架構(gòu),?過去,,處理器陣列通常通過內(nèi)存或固定網(wǎng)絡(luò)拓?fù)洌ɡ缇W(wǎng)狀或環(huán)形)連接。最近出現(xiàn)的是片上網(wǎng)絡(luò) (NoC) 的結(jié)合,,使分布式異構(gòu)處理器能夠以更靈活的方式進(jìn)行通信,。將來,它們還可以在不使用內(nèi)存的情況下實(shí)現(xiàn)通信,。
“此時,,NoC 只攜帶數(shù)據(jù),”Arteris 的 Frank 說,?!拔磥恚琋oC 可以擴(kuò)展到加速器之間的通信超越數(shù)據(jù)的其他領(lǐng)域,。它可以發(fā)送命令,、發(fā)送通知等。加速器陣列的通信需求可能與 CPU 或標(biāo)準(zhǔn) SoC 等的通信需求不同,。但是片上網(wǎng)絡(luò)并不會將您限制在一個子集上,。您可以通過支持加速器的特殊通信需求來優(yōu)化和提高性能?!?/p>
實(shí)現(xiàn)架構(gòu)
處理器區(qū)分的一種方式是針對特定操作環(huán)境進(jìn)行優(yōu)化,。例如,軟件可能在云中運(yùn)行,,但您也可以在微型物聯(lián)網(wǎng)設(shè)備上執(zhí)行相同的軟件。實(shí)現(xiàn)架構(gòu)將大不相同,并在性能,、功耗,、成本或在極端條件下運(yùn)行的能力方面實(shí)現(xiàn)不同的運(yùn)行點(diǎn)。
“一些應(yīng)用程序是針對云計(jì)算的,,現(xiàn)在我們正在讓它們更接近邊緣,,”Cadence 的 Thomas 說?!斑@可能是因?yàn)檠舆t要求,,或者能量或功率耗散,這將需要不同類型的架構(gòu),。您可能希望擁有完全相同的軟件堆棧,,以便能夠在兩個位置運(yùn)行。云需要提供靈活性,,因?yàn)樗鼘⒔邮詹煌愋偷膽?yīng)用程序,,并且必須能夠聚合大量用戶。這要求服務(wù)器上的硬件具有特定于應(yīng)用程序的能力,,但一種尺寸并不適合所有人,。”
ML增加了自己的要求,?!霸谑褂蒙窠?jīng)網(wǎng)絡(luò)和機(jī)器學(xué)習(xí)構(gòu)建智能系統(tǒng)時,您需要使用軟件框架和通用軟件堆棧對新網(wǎng)絡(luò)進(jìn)行編程并將其映射到硬件,,”Thomas 補(bǔ)充道,。“然后,,您可以從PPA 的角度使軟件應(yīng)用程序適應(yīng)正確的硬件,。這推動了對不同類型的處理和處理器的需求,以便能夠在硬件層滿足這些需求,?!?/p>
這些需求由應(yīng)用定義?!耙患夜疽呀?jīng)創(chuàng)建了一個用于圖形操作的處理器,,” Frank說?!八麄儍?yōu)化和加速如何跟蹤圖形,,并執(zhí)行諸如重新排序圖形之類的操作。還有其他一些主要加速機(jī)器學(xué)習(xí)的蠻力部分(brute force ),,即矩陣乘法,。內(nèi)存訪問對于每個架構(gòu)來說都是一個特殊的問題,,因?yàn)楫?dāng)你構(gòu)建加速器時,最重要的目標(biāo)是讓它保持忙碌,。你必須將盡可能多的數(shù)據(jù)傳送到 ALU,,因?yàn)樗梢韵M(fèi)和生產(chǎn)?!?/p>
許多這些應(yīng)用有許多共同點(diǎn),。“它們都有一些本地內(nèi)存,,它們有一個片上網(wǎng)絡(luò)來進(jìn)行通信,,每個執(zhí)行軟件算法的處理器都在處理一小塊數(shù)據(jù),”Davidmann說,?!斑@些工作由運(yùn)行在更傳統(tǒng) CPU 上的操作系統(tǒng)調(diào)度?!?/p>
硬件設(shè)計(jì)人員的棘手之處在于預(yù)測它將被要求執(zhí)行哪些任務(wù),。“盡管您將在某些層中進(jìn)行類似類型的操作,,但人們正在關(guān)注層中的差異化,,”Thomas 說?!盀榱四軌蛱幚砩窠?jīng)網(wǎng)絡(luò),,需要幾種類型的處理能力。這意味著您需要能夠?qū)ι窠?jīng)網(wǎng)絡(luò)的一部分進(jìn)行某種方式的處理,,然后可能需要另一種類型的操作來處理另一層,。數(shù)據(jù)移動和數(shù)據(jù)量也在逐層變化?!?/p>
這種差異化可以超越數(shù)據(jù)移動,。“對于基因組測序,,您需要進(jìn)行某些處理,,”Frank說?!暗悄悴荒苡脝我活愋偷募铀倨鱽砑铀偎袞|西,。您必須為不同的pipeline構(gòu)建一整套不同的加速器。CPU 成為管理執(zhí)行流程的守護(hù)者,。它進(jìn)行設(shè)置,,執(zhí)行 DMA,提供兩者之間的決策過程,。理解和分析算法并定義您希望如何優(yōu)化它們的處理是一項(xiàng)完整的架構(gòu)任務(wù),?!?/p>
該過程的一部分需要分區(qū)?!皼]有一種處理器類型可以針對每個處理器任務(wù)進(jìn)行優(yōu)化—— FPGA不行,,CPU不行,GPU不行,,DSP也必行,”Uhm 說,?!拔覀儎?chuàng)建了一系列包含所有這些的設(shè)備,但客戶方面的困難部分是他們必須提供智能,,以確定整個系統(tǒng)的哪些部分將針對處理器或可編程邏輯,,或在 AI 引擎。每個人都想要那個自動神奇的工具,,一個可以立即決定把它放在 CPU 上,,把它放在 FPGA 上,把它放在 GPU 上的工具,。那個工具今天不存在,。”
盡管如此,,CPU 總會發(fā)揮作用,。“需要 CPU 來執(zhí)行程序的不規(guī)則部分,,”Frank說,。“CPU 的通用可編程性有其優(yōu)勢,。如果您有專門的數(shù)據(jù)結(jié)構(gòu)或數(shù)學(xué)運(yùn)算,,它就不能很好地工作。CPU 是一個通用處理器,,它沒有針對任何東西進(jìn)行優(yōu)化,。它什么都不擅長?!?/p>
改變“抽象”
過去,,硬件/軟件邊界由 ISA 定義,并且該內(nèi)存是連續(xù)可尋址的,。當(dāng)存在多個處理器時,,它們通常是內(nèi)存一致的。
“一致性是一種契約,,”Frank說,?!斑@種一致性非常重要,不會消失,。但是您可以想象,,在數(shù)據(jù)流引擎中,一致性并不那么重要,,因?yàn)槟鷮⒃谶吘壱苿拥臄?shù)據(jù)直接從一個加速器傳送到另一個加速器,。如果您對數(shù)據(jù)集進(jìn)行分區(qū),則一致性會成為障礙,,因?yàn)樗鼤ㄙM(fèi)您額外的周期,。你必須查資料。您必須提供更新信息,?!?/p>
這需要不同的內(nèi)存架構(gòu)?!澳惚仨毧紤]內(nèi)存結(jié)構(gòu),,因?yàn)槟阒挥羞@么多緊密耦合的內(nèi)存,”Uhm 說,?!澳憧梢栽L問相鄰的內(nèi)存,但你很快就會耗盡相鄰的內(nèi)存,,無法及時訪問,。這必須在設(shè)計(jì)中加以理解。隨著工具的成熟,,工具將開始了解更多內(nèi)容,。今天,它是由人類智能完成的,,能夠理解架構(gòu)并應(yīng)用它,。”
還需要更高級別的抽象( abstraction),?!坝行┛蚣芸梢詫⒁阎W(wǎng)絡(luò)映射或編譯到目標(biāo)硬件上,”Thomas 說,?!澳幸唤M低級內(nèi)核或 API,它們將在軟件堆棧中使用,,然后最終由神經(jīng)網(wǎng)絡(luò)的映射器使用,。在下面,您可能擁有不同類型的硬件,,具體取決于您想要實(shí)現(xiàn)的目標(biāo),,取決于您的產(chǎn)品詳細(xì)信息,。它實(shí)現(xiàn)了相同的功能,但不是使用相同的硬件,,也不是相同的 PPA 權(quán)衡,。”
這給那些編譯器帶來了很大的壓力,?!爸饕膯栴}是你未來如何對加速器進(jìn)行編程?” Frank問道,?!澳欠駥?shí)現(xiàn)了像第一代 GPU 那樣串在一起的硬連線引擎?或者您是否構(gòu)建了具有自己指令集的小型可編程引擎,?現(xiàn)在你必須單獨(dú)對這些東西進(jìn)行編程,并將這些引擎中的每一個與數(shù)據(jù)流連接起來,,執(zhí)行任務(wù),。一個處理器擁有整個指令集的某個子集,另一個處理器擁有一個不同的子集,,它們都將共享控制流的一些重疊部分,。您可能有一些加速能力略有不同的產(chǎn)品。編譯器或了解它的庫會相應(yīng)地進(jìn)行映射,?!?/p>
總結(jié)
處理器的架構(gòu)沒有改變。他們?nèi)匀蛔袷剡^去 40 年來一直存在的相同選擇,。正在改變的是芯片的構(gòu)造方式,。它們現(xiàn)在包含大量異構(gòu)處理器,這些處理器具有針對應(yīng)用任務(wù)子集優(yōu)化的內(nèi)存和通信,。每個芯片都對處理器功能及其優(yōu)化目的,、所需的數(shù)據(jù)吞吐量以及通常會看到的數(shù)據(jù)流做出了不同的選擇。
每個硬件供應(yīng)商都希望將自己的芯片與其他芯片區(qū)分開來,,但是通過品牌推廣比談?wù)搩?nèi)部技術(shù)細(xì)節(jié)要容易得多,。所以他們給它起了個名字,稱它為第一個,、最快的,、最大的,并將它與特定類型的應(yīng)用程序問題聯(lián)系起來,。這三個字母的首字母縮寫詞已成為應(yīng)用任務(wù)名稱,,但它們并未定義硬件架構(gòu)。