一篇有關AI處理器的最強科普
來源:本文由公眾號半導體行業觀察(ID:icbank)翻譯自「linked in」,作者:John Lakness,謝謝。
在本文中,我們將從三個方面介紹人工智慧系統中使用的核心處理器體系結構的最常見選擇:標量、向量和空間。對於每種情況,我們都將對其性能特徵和優化演算法的類型進行一些概括。在後面的文章中,我們將更深入地討論它們是如何實現的,以及它們在不同類型的AI工作負載上的性能。
Flynn分類法
如果沒有相當流行的「Flynn分類法」,任何對處理器架構的闡述都是不完整的,因為命名法很常見。它的初衷是描述一台哈佛架構計算機如何攝取指令和數據流,並且儘可能在這種情況下最有意義。儘管如此,現代處理器通常比其他處理器更接近於一種特性,因此我們經常用這種方式來指代它們,但我們應該注意,假設任何現代處理器都完全符合其中一種類型,那將是一個嚴重的過度簡化。這裡介紹的是一種比較開放的稍微現代一些的分類法。
SISD:單指令單數據
最簡單的CPU形式適合這一類。CPU的每個循環攝取指令和數據元素並處理它們以便修改全局狀態。這個概念是計算機科學的基礎,因此大多數編程語言都編譯成一組針對這種架構的指令。大多數現代CPU也模擬SISD操作,儘管軟體和硬體中可能會用到非常不同的概念。
SIMD:單指令多數據
最簡單的SIMD架構是矢量處理器,類似於具有更寬數據類型的SISD架構,因此每條指令在多個連續數據元素上運行。稍微複雜的是線程並行性,其中單個指令在多個線程狀態上操作,這是更通用的編程模型。
MISD:多指令單數據
對於什麼是錯誤處理程序沒有普遍的共識,所以我在這裡將不做限制。考慮一個架構,它能夠在單個數據輸入上以單個周期的順序執行多個任意指令。這基本上需要從輸出到輸入進行多路復用,而不存儲中間結果。稍後,我們將看到這種高級體系結構的優點。
MIMD:多指令多數據
我再次不設限地說,一個非常長的指令字(VLIW)處理器最適合這個類別。這種處理器的目的是公開一個更精確地適合處理器可用資源的編程模型。VLIW指令能夠同時向所有執行單元發送數據,這通過指令級並行(ILP)具有很大的性能優勢,但編譯器必須具有體系結構感知能力並執行所有調度優化。一般來說,這被證實具有挑戰性。
標量(CPUs):混合性能
現代CPU是一個非常複雜的系統,旨在很好地完成各種任務。它的元素涵蓋了Flynn的每一類分類。您當然可以將其編程為SISD機器,它將為您提供輸出,就好像程序是按照您給出的順序計算的一樣。但是,每個CISC指令通常被轉換為多個RISC指令鏈,以便在單個數據元素(MISD)上執行。它還將查看您提供的所有指令和數據,並將它們並行排列以便在許多不同的執行單元(MIMD)上執行數據。還有許多操作,例如在AVX指令集中,對許多並行對齊的數據元素(SIMD)執行相同的計算。此外,由於多個內核和多個線程並行運行以在單個內核上同時使用資源,因此可以實現Flynn分類法中的幾乎任何類型的並行性。
代碼優化器
如果CPU要以簡單的SISD模式運行,從存儲器中一次一個地抓取每個指令和數據元素,那麼不管頻率有多高,它都會非常慢。在現代處理器中,只有相對較小部分的管芯區域專用於實際執行算術和邏輯。其餘部分專門用於預測程序接下來要做什麼,並在不違反任何因果約束的情況下排列指令和數據以有效執行。也許與CPU的性能和其他體系結構相比,關係最密切的是對條件分支的處理。它不是等待解析一個分支,而是預測要朝哪個方向走,然後在出錯時完全恢復處理器狀態。在矽片上蝕刻了數百個這樣的技巧,這些技巧在各種各樣的工作負載上進行測試,在執行高度複雜的任意代碼時提供極大的優勢。
摩爾定律哲學
在我的第一份工作中,我被指派去集成一個非常昂貴的專用集成電路,這被認為是實時解碼衛星圖像所必需的。我注意到這個設計有幾年的歷史了,我做了一些計算,結果告訴我,我可以在英特爾處理器上擁有幾乎相同的計算能力。在ASIC可用之前,我用C語言編寫了該演算法,並在奔騰III CPU上演示了該系統。那時候,"Dennard Scaling"的速度如此之快,以至於在一小段時間內,通用處理器的性能提升超過了對專用處理器的需求。選擇通用處理器的最大優勢可能是它易於編程,這使其成為演算法開發和系統集成的首選平台。可以將演算法優化為更專業的處理器,但CPU已經非常擅長為您執行此操作。在我的特殊情況下,第一版衛星使用Reed-Solomon碼,但以後的設計還是考慮用Turbo碼。使用ASIC的下行鏈路站點必須更換整個系統,我們的站點將使用簡單的軟體更新和常規CPU升級。因此,您可以花時間優化代碼,也可以將時間花在創新應用程序上。摩爾定律的推論是,很快就會足夠快。
矢量(GPU和TPU):簡單和平行
在許多方面,矢量處理器是最簡單的現代體系結構:一個非常有限的計算單元,它在晶元上重複多次,以便在大量數據上執行相同的操作。這些都是第一次普及的圖形,因此術語GPU。一般來說,GPU不具備CPU為優化複雜的任意代碼所做的預測gymnastics功能,並且具體地具有僅限於支持某些類型的計算的有限指令集。GPU性能的大部分進步都是通過密度,面積,頻率和內存帶寬的基本技術擴展實現的。
GPGPU
最近有一種趨勢是擴展GPU指令集以支持通用計算。這些gp指令必須經過調整才能在simd體系結構上運行,這就暴露了一些優點和缺點,具體取決於演算法。許多被編程為在CPU上作為重複循環運行的演算法實際上只是在每個循環中對數組的每個相鄰數據元素執行相同的操作。通過一些程序員的努力,它們可以很容易地並行化,有時在GPU上大規模地並行化。
值得注意的是。如果任何元素上有任何條件,那麼所有分支都必須在所有元素上運行。對於複雜代碼,這可能意味著計算時間相對於CPU呈指數增長。GPU具有非常寬的內存匯流排,可以提供出色的流數據性能,但是如果內存訪問與向量處理器元素不一致,那麼每個數據元素都需要來自內存匯流排的單獨請求,而CPU具有非常複雜的預測緩存機制,可以大大補償這一點。
內存本身非常快的同時也非常小,並且依賴於PCIe匯流排上的數據訪問傳輸。在一般情況下,GPGPU演算法的開發比CPU要困難得多。然而,這種挑戰在一定程度上是通過發現和優化高效的並行演算法來解決的,這些演算法通過統一的執行分支和對齊的內存訪問獲得相同的結果。通常,這些演算法在原始操作方面效率較低,但在並行架構中執行速度更快。
AI操作
許多人工智慧中流行的演算法都是基於線性代數的,而參數矩陣的大規模擴展使得該領域有了很大的進步。GPU的並行性允許最基本的線性代數的大規模加速,因此它適合AI研究人員,只要它們保持在矩陣上密集線性代數的範圍內,矩陣足夠大以佔據大部分處理元素,小到足以容納GPU的內存。然而,這種加速是如此之快,以至於到今天為止,在這些限制下,在深入學習方面已經取得了很大的進展。
GPU中現代開發的兩個主要推動力是Tensor Processing Unit(TPU),它們在一個周期內執行全矩陣運算,而多GPU互連則用於處理更大的網路。我們在專用圖形的硬體架構和為AI設計的硬體之間經歷了更大的分歧。
今天,我們在專用圖形的硬體架構和為AI設計的硬體之間遇到了更大的分歧。最簡單的分歧是在精度上,AI正在開發基於低精度浮點和整數運算的技術。稍顯遲鈍的是圖形處理器用來實時呈現令人信服的複雜場景重現的快捷方式,通常使用非常專業的計算單元。因此,架構之間的相似性以兩者的最高優化級別結束。
Systolic Arrays
ASIC或FPGA可以為任何類型的計算體系結構設計,但是這裡我們關注的是特定類型的體系結構,它與其他選擇有些不同,並且與人工智慧相關。在諸如CPU或GPU的時鐘體系結構中,每個時鐘周期從寄存器載入數據元素,將數據移動到處理元件,等待操作完成,然後將結果存儲回寄存器以進行下一個操作。在空間數據流中,操作在處理器上物理連接,以便一旦計算結果就執行下一個操作,並且結果不存儲在寄存器中。當在處理元素本地的寄存器中包含它們自己的狀態的中等複雜單元以這種方式鏈接在一起時,我們將其稱為「Systolic Arrays」。
功耗、延遲和吞吐量
有一些直接的優勢很容易實現。在基於寄存器的處理器中,功耗主要是由寄存器之間的數據存儲和傳輸造成的。其中唯一消耗的能量是處理元素,並將數據傳輸到下一階段。另一個主要優點是元素之間的延遲,這不再局限於時鍾周期。在吞吐量方面也有一些潛在的優勢,因為數據可以以最慢處理階段限制的速率被時鐘發送到Systolic Arrays中。數據以相同的速率在另一端輸出,其間存在一些延遲,從而建立數據流。與同步時鐘 - 執行 - 存儲循環相比,這可以是更高能效和/或更快的數量級,這取決於架構的目標。
數據流設計
如果說CPU是最容易編程的,並且GPU提出了更大的挑戰,那麼FPGA需要非常大的努力和大量的技能,而ASIC則需要更大量的成本和工程投資。儘管如此,特定演算法的好處仍然很大。
要想知道這有多大的優勢,可以考慮在現代硅工藝中驅動另一個逆變器的「標準化延遲」以單皮秒為單位測量,而時鐘周期接近納秒。類似地,傳輸能量是電阻和電容的函數,其可以根據互連的長度來計算,並且處理元件之間的距離可以比到在時鐘周期之間保持數據的寄存器的距離短几個數量級。FPGA沒有太大的優勢,因為元件之間存在額外的扇出,切換和傳輸延遲,但它提供了靈活性,可以通過一個晶元適應多種數據流架構。雖然可以實現任何類型的演算法,但是複雜性存在限制,因為條件需要兩個分支的布局,這大大增加了面積並降低了利用效率。FPGA和ASICS還可以採用同步和收縮結構的混合來優化布局效率和速度之間的權衡。
數據流系統
用於AI實現的最常見的systolic array 類型是張量核心,它作為TPU或GPU的一部分集成到同步體系結構中。還提出了許多不同類型的卷積核心。已經在FPGA系統中實現了整個深度學習架構(如ResNet-50)的完整數據流實現,從而在延遲和功耗效率方面實現了最先進的性能。可定製性還允許任意位長精度,這會減小布局大小和處理延遲,但必須仔細調整以適應系統的統計性能要求。然而,主要的獨特功能是處理的實時性質允許AI與實時系統中的其他信號處理組件集成。
結論
在為特定系統選擇AI處理器時,了解每種演算法在所用演算法的上下文中的相對優勢以及系統要求和性能目標非常重要。在後面的章節中,我們將介紹一些注意事項和示例。我們將看到這些處理器體系結構中的每一個在各種系統級考慮因素中都比其他處理器體系結構更具優勢。
1.Fowers,J.,K.Ovtcharov,M.Papamichael,T.Massengill,M.Liu,D.Lo,D.Burger等。「用於實時AI的可配置雲規模DNN處理器」,2018年ACM/IEEE第45屆國際計算機體系結構研討會(ISCA),2018年。doi:10.1109/isca.2018.00012。
2.Hennessy,J.L.和D.A.Patterson。計算機體系結構:定量方法。Burlington, MA:Morgan Kaufmann,2017。
3.Sze,V.,Y.Chen,T.Yang和J.S.Emer,「深層神經網路的高效處理:指導和調查」,《IEEE 105會議錄》,第12期(2017),2295-2329。doi:10.1109/jproc.2017.2761740。
4.Scott Cyphers、Arjun K.Bansal、Anahita Bhiwandiwalla、Jayaram Bobba、Matthew Brookhart、Avijit Chakraborty、Will Constable、Christian Transvey、Leona Cook、Omar Kanawi、Robert Kimball、Jason Knight、Nikolay Korovaiko、Varun Kumar、Yixing Lao、Christopher R.Lishka、Jaikrishnan Menon、Jennifer Myers、Sandep Aswath Narayana、Adam Procter:「Intel nGraph:深度學習的中間表示、編譯器和執行器」,2018;arxiv:1801.08058。
**點擊文末閱讀原文,可閱讀英文原文。
*免責聲明:本文由作者原創。文章內容系作者個人觀點,半導體行業觀察轉載僅為了傳達一種不同的觀點,不代表半導體行業觀察對該觀點贊同或支持,如果有任何異議,歡迎聯繫半導體行業觀察。
今天是《半導體行業觀察》為您分享的第1994期內容,歡迎關注。
推薦閱讀
★全球硅晶圓市場里的中國X因素
★這將是FPGA的下一代形態?
★一文看懂中國集成電路材料現狀
2018半導體行業資料合集 長期有效!
半導體行業觀察
『半導體第一垂直媒體』
實時 專業 原創 深度
識別二維碼,回復下方關鍵詞,閱讀更多
華為|三星|台積電|博通|EDA|AI|美國|IGBT
回復 投稿,看《如何成為「半導體行業觀察」的一員 》
回復 搜索,還能輕鬆找到其他你感興趣的文章!
點擊這裡,閱讀
英文原文!


※三星與英飛凌談合作,加速晶圓代工業務|半導體行業觀察
※美企把持下的EDA產業現狀
TAG:半導體行業觀察 |