在本文中,我們將從三個方面介紹人工智能系統(tǒng)中使用的核心處理器體系結(jié)構(gòu)的最常見選擇:標(biāo)量、向量和空間。對于每種情況,我們都將對其性能特征和優(yōu)化算法的類型進(jìn)行一些概括。在后面的文章中,我們將更深入地討論它們是如何實現(xiàn)的,以及它們在不同類型的AI工作負(fù)載上的性能。
Flynn分類法
如果沒有相當(dāng)流行的“Flynn分類法”,任何對處理器架構(gòu)的闡述都是不完整的,因為命名法很常見。它的初衷是描述一臺哈佛架構(gòu)計算機(jī)如何攝取指令和數(shù)據(jù)流,并且盡可能在這種情況下最有意義。盡管如此,現(xiàn)代處理器通常比其他處理器更接近于一種特性,因此我們經(jīng)常用這種方式來指代它們,但我們應(yīng)該注意,假設(shè)任何現(xiàn)代處理器都完全符合其中一種類型,那將是一個嚴(yán)重的過度簡化。這里介紹的是一種比較開放的稍微現(xiàn)代一些的分類法。
SISD:單指令單數(shù)據(jù)
最簡單的CPU形式適合這一類。CPU的每個循環(huán)攝取指令和數(shù)據(jù)元素并處理它們以便修改全局狀態(tài)。這個概念是計算機(jī)科學(xué)的基礎(chǔ),因此大多數(shù)編程語言都編譯成一組針對這種架構(gòu)的指令。大多數(shù)現(xiàn)代CPU也模擬SISD操作,盡管軟件和硬件中可能會用到非常不同的概念。
SIMD:單指令多數(shù)據(jù)
最簡單的SIMD架構(gòu)是矢量處理器,類似于具有更寬數(shù)據(jù)類型的SISD架構(gòu),因此每條指令在多個連續(xù)數(shù)據(jù)元素上運行。稍微復(fù)雜的是線程并行性,其中單個指令在多個線程狀態(tài)上操作,這是更通用的編程模型。
MISD:多指令單數(shù)據(jù)
對于什么是錯誤處理程序沒有普遍的共識,所以我在這里將不做限制。考慮一個架構(gòu),它能夠在單個數(shù)據(jù)輸入上以單個周期的順序執(zhí)行多個任意指令。這基本上需要從輸出到輸入進(jìn)行多路復(fù)用,而不存儲中間結(jié)果。稍后,我們將看到這種高級體系結(jié)構(gòu)的優(yōu)點。
MIMD:多指令多數(shù)據(jù)
我再次不設(shè)限地說,一個非常長的指令字(VLIW)處理器最適合這個類別。這種處理器的目的是公開一個更精確地適合處理器可用資源的編程模型。VLIW指令能夠同時向所有執(zhí)行單元發(fā)送數(shù)據(jù),這通過指令級并行(ILP)具有很大的性能優(yōu)勢,但編譯器必須具有體系結(jié)構(gòu)感知能力并執(zhí)行所有調(diào)度優(yōu)化。一般來說,這被證實具有挑戰(zhàn)性。
標(biāo)量(CPUs):混合性能
現(xiàn)代CPU是一個非常復(fù)雜的系統(tǒng),旨在很好地完成各種任務(wù)。它的元素涵蓋了Flynn的每一類分類。您當(dāng)然可以將其編程為SISD機(jī)器,它將為您提供輸出,就好像程序是按照您給出的順序計算的一樣。但是,每個CISC指令通常被轉(zhuǎn)換為多個RISC指令鏈,以便在單個數(shù)據(jù)元素(MISD)上執(zhí)行。它還將查看您提供的所有指令和數(shù)據(jù),并將它們并行排列以便在許多不同的執(zhí)行單元(MIMD)上執(zhí)行數(shù)據(jù)。還有許多操作,例如在AVX指令集中,對許多并行對齊的數(shù)據(jù)元素(SIMD)執(zhí)行相同的計算。此外,由于多個內(nèi)核和多個線程并行運行以在單個內(nèi)核上同時使用資源,因此可以實現(xiàn)Flynn分類法中的幾乎任何類型的并行性。
代碼優(yōu)化器
如果CPU要以簡單的SISD模式運行,從存儲器中一次一個地抓取每個指令和數(shù)據(jù)元素,那么不管頻率有多高,它都會非常慢。在現(xiàn)代處理器中,只有相對較小部分的管芯區(qū)域?qū)S糜趯嶋H執(zhí)行算術(shù)和邏輯。其余部分專門用于預(yù)測程序接下來要做什么,并在不違反任何因果約束的情況下排列指令和數(shù)據(jù)以有效執(zhí)行。也許與CPU的性能和其他體系結(jié)構(gòu)相比,關(guān)系最密切的是對條件分支的處理。它不是等待解析一個分支,而是預(yù)測要朝哪個方向走,然后在出錯時完全恢復(fù)處理器狀態(tài)。在硅片上蝕刻了數(shù)百個這樣的技巧,這些技巧在各種各樣的工作負(fù)載上進(jìn)行測試,在執(zhí)行高度復(fù)雜的任意代碼時提供極大的優(yōu)勢。
摩爾定律哲學(xué)
在我的第一份工作中,我被指派去集成一個非常昂貴的專用集成電路,這被認(rèn)為是實時解碼衛(wèi)星圖像所必需的。我注意到這個設(shè)計有幾年的歷史了,我做了一些計算,結(jié)果告訴我,我可以在英特爾處理器上擁有幾乎相同的計算能力。在ASIC可用之前,我用C語言編寫了該算法,并在奔騰III CPU上演示了該系統(tǒng)。那時候,'Dennard Scaling'的速度如此之快,以至于在一小段時間內(nèi),通用處理器的性能提升超過了對專用處理器的需求。選擇通用處理器的最大優(yōu)勢可能是它易于編程,這使其成為算法開發(fā)和系統(tǒng)集成的首選平臺。可以將算法優(yōu)化為更專業(yè)的處理器,但CPU已經(jīng)非常擅長為您執(zhí)行此操作。在我的特殊情況下,第一版衛(wèi)星使用Reed-Solomon碼,但以后的設(shè)計還是考慮用Turbo碼。使用ASIC的下行鏈路站點必須更換整個系統(tǒng),我們的站點將使用簡單的軟件更新和常規(guī)CPU升級。因此,您可以花時間優(yōu)化代碼,也可以將時間花在創(chuàng)新應(yīng)用程序上。摩爾定律的推論是,很快就會足夠快。
矢量(GPU和TPU):簡單和平行
在許多方面,矢量處理器是最簡單的現(xiàn)代體系結(jié)構(gòu):一個非常有限的計算單元,它在芯片上重復(fù)多次,以便在大量數(shù)據(jù)上執(zhí)行相同的操作。這些都是第一次普及的圖形,因此術(shù)語GPU。一般來說,GPU不具備CPU為優(yōu)化復(fù)雜的任意代碼所做的預(yù)測gymnastics功能,并且具體地具有僅限于支持某些類型的計算的有限指令集。GPU性能的大部分進(jìn)步都是通過密度,面積,頻率和內(nèi)存帶寬的基本技術(shù)擴(kuò)展實現(xiàn)的。
GPGPU
最近有一種趨勢是擴(kuò)展GPU指令集以支持通用計算。這些gp指令必須經(jīng)過調(diào)整才能在simd體系結(jié)構(gòu)上運行,這就暴露了一些優(yōu)點和缺點,具體取決于算法。許多被編程為在CPU上作為重復(fù)循環(huán)運行的算法實際上只是在每個循環(huán)中對數(shù)組的每個相鄰數(shù)據(jù)元素執(zhí)行相同的操作。通過一些程序員的努力,它們可以很容易地并行化,有時在GPU上大規(guī)模地并行化。
值得注意的是。如果任何元素上有任何條件,那么所有分支都必須在所有元素上運行。對于復(fù)雜代碼,這可能意味著計算時間相對于CPU呈指數(shù)增長。GPU具有非常寬的內(nèi)存總線,可以提供出色的流數(shù)據(jù)性能,但是如果內(nèi)存訪問與向量處理器元素不一致,那么每個數(shù)據(jù)元素都需要來自內(nèi)存總線的單獨請求,而CPU具有非常復(fù)雜的預(yù)測緩存機(jī)制,可以大大補(bǔ)償這一點。
內(nèi)存本身非常快的同時也非常小,并且依賴于PCIe總線上的數(shù)據(jù)訪問傳輸。在一般情況下,GPGPU算法的開發(fā)比CPU要困難得多。然而,這種挑戰(zhàn)在一定程度上是通過發(fā)現(xiàn)和優(yōu)化高效的并行算法來解決的,這些算法通過統(tǒng)一的執(zhí)行分支和對齊的內(nèi)存訪問獲得相同的結(jié)果。通常,這些算法在原始操作方面效率較低,但在并行架構(gòu)中執(zhí)行速度更快。
AI操作
許多人工智能中流行的算法都是基于線性代數(shù)的,而參數(shù)矩陣的大規(guī)模擴(kuò)展使得該領(lǐng)域有了很大的進(jìn)步。GPU的并行性允許最基本的線性代數(shù)的大規(guī)模加速,因此它適合AI研究人員,只要它們保持在矩陣上密集線性代數(shù)的范圍內(nèi),矩陣足夠大以占據(jù)大部分處理元素,小到足以容納GPU的內(nèi)存。然而,這種加速是如此之快,以至于到今天為止,在這些限制下,在深入學(xué)習(xí)方面已經(jīng)取得了很大的進(jìn)展。
GPU中現(xiàn)代開發(fā)的兩個主要推動力是Tensor Processing Unit(TPU),它們在一個周期內(nèi)執(zhí)行全矩陣運算,而多GPU互連則用于處理更大的網(wǎng)絡(luò)。我們在專用圖形的硬件架構(gòu)和為AI設(shè)計的硬件之間經(jīng)歷了更大的分歧。
今天,我們在專用圖形的硬件架構(gòu)和為AI設(shè)計的硬件之間遇到了更大的分歧。最簡單的分歧是在精度上,AI正在開發(fā)基于低精度浮點和整數(shù)運算的技術(shù)。稍顯遲鈍的是圖形處理器用來實時呈現(xiàn)令人信服的復(fù)雜場景重現(xiàn)的快捷方式,通常使用非常專業(yè)的計算單元。因此,架構(gòu)之間的相似性以兩者的最高優(yōu)化級別結(jié)束。
Systolic Arrays
ASIC或FPGA可以為任何類型的計算體系結(jié)構(gòu)設(shè)計,但是這里我們關(guān)注的是特定類型的體系結(jié)構(gòu),它與其他選擇有些不同,并且與人工智能相關(guān)。在諸如CPU或GPU的時鐘體系結(jié)構(gòu)中,每個時鐘周期從寄存器加載數(shù)據(jù)元素,將數(shù)據(jù)移動到處理元件,等待操作完成,然后將結(jié)果存儲回寄存器以進(jìn)行下一個操作。在空間數(shù)據(jù)流中,操作在處理器上物理連接,以便一旦計算結(jié)果就執(zhí)行下一個操作,并且結(jié)果不存儲在寄存器中。當(dāng)在處理元素本地的寄存器中包含它們自己的狀態(tài)的中等復(fù)雜單元以這種方式鏈接在一起時,我們將其稱為“Systolic Arrays”。
功耗、延遲和吞吐量
有一些直接的優(yōu)勢很容易實現(xiàn)。在基于寄存器的處理器中,功耗主要是由寄存器之間的數(shù)據(jù)存儲和傳輸造成的。其中唯一消耗的能量是處理元素,并將數(shù)據(jù)傳輸?shù)较乱浑A段。另一個主要優(yōu)點是元素之間的延遲,這不再局限于時鐘周期。在吞吐量方面也有一些潛在的優(yōu)勢,因為數(shù)據(jù)可以以最慢處理階段限制的速率被時鐘發(fā)送到Systolic Arrays中。數(shù)據(jù)以相同的速率在另一端輸出,其間存在一些延遲,從而建立數(shù)據(jù)流。與同步時鐘 - 執(zhí)行 - 存儲循環(huán)相比,這可以是更高能效和/或更快的數(shù)量級,這取決于架構(gòu)的目標(biāo)。
數(shù)據(jù)流設(shè)計
如果說CPU是最容易編程的,并且GPU提出了更大的挑戰(zhàn),那么FPGA需要非常大的努力和大量的技能,而ASIC則需要更大量的成本和工程投資。盡管如此,特定算法的好處仍然很大。
要想知道這有多大的優(yōu)勢,可以考慮在現(xiàn)代硅工藝中驅(qū)動另一個逆變器的“標(biāo)準(zhǔn)化延遲”以單皮秒為單位測量,而時鐘周期接近納秒。類似地,傳輸能量是電阻和電容的函數(shù),其可以根據(jù)互連的長度來計算,并且處理元件之間的距離可以比到在時鐘周期之間保持?jǐn)?shù)據(jù)的寄存器的距離短幾個數(shù)量級。FPGA沒有太大的優(yōu)勢,因為元件之間存在額外的扇出,切換和傳輸延遲,但它提供了靈活性,可以通過一個芯片適應(yīng)多種數(shù)據(jù)流架構(gòu)。雖然可以實現(xiàn)任何類型的算法,但是復(fù)雜性存在限制,因為條件需要兩個分支的布局,這大大增加了面積并降低了利用效率。FPGA和ASICS還可以采用同步和收縮結(jié)構(gòu)的混合來優(yōu)化布局效率和速度之間的權(quán)衡。
數(shù)據(jù)流系統(tǒng)
用于AI實現(xiàn)的最常見的systolic array 類型是張量核心,它作為TPU或GPU的一部分集成到同步體系結(jié)構(gòu)中。還提出了許多不同類型的卷積核心。已經(jīng)在FPGA系統(tǒng)中實現(xiàn)了整個深度學(xué)習(xí)架構(gòu)(如ResNet-50)的完整數(shù)據(jù)流實現(xiàn),從而在延遲和功耗效率方面實現(xiàn)了最先進(jìn)的性能。可定制性還允許任意位長精度,這會減小布局大小和處理延遲,但必須仔細(xì)調(diào)整以適應(yīng)系統(tǒng)的統(tǒng)計性能要求。然而,主要的獨特功能是處理的實時性質(zhì)允許AI與實時系統(tǒng)中的其他信號處理組件集成。
結(jié)論
在為特定系統(tǒng)選擇AI處理器時,了解每種算法在所用算法的上下文中的相對優(yōu)勢以及系統(tǒng)要求和性能目標(biāo)非常重要。在后面的章節(jié)中,我們將介紹一些注意事項和示例。我們將看到這些處理器體系結(jié)構(gòu)中的每一個在各種系統(tǒng)級考慮因素中都比其他處理器體系結(jié)構(gòu)更具優(yōu)勢。
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7145瀏覽量
89591 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3055瀏覽量
74338 -
AI處理器
+關(guān)注
關(guān)注
0文章
92瀏覽量
9549
發(fā)布評論請先 登錄
相關(guān)推薦
評論