在過去的10-20年間,硬體技術取得了驚人的進步,但在高效能資料中心和高度受限的移動環境中卻仍然不能“奢求”廉價的效能。很多人認為,硬體的下一個進步是將神經網路加速器新增到CPU + GPU叢集中。然而,這可能會扼殺SoC的效能……

拯救 CPU!

作者 | Tony King-Smith

譯者 | 彎月,責編 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下為譯文:

自從CPU問世以來,AI是計算方式的一次根本性轉變,越來越多的人開始接受這個觀點。由於大多數演算法都是先寫成CPU上執行的順序程式碼,然後再利用GPU加速來處理神經網路工作負載,因此很多人認為,硬體的下一個進步是將神經網路加速器新增到CPU + GPU叢集中。然而,這可能會扼殺SoC的效能,可能無法提供預期的效能或效率。但在本文中,我將介紹一些其他的解決方法。

#FormatImgID_3##FormatImgID_4#

簡介:SoC的興起

智慧手機的崛起在技術領域——尤其是計算硬體取得了巨大進步。片上系統(Systems on Chip,即SoC)只需幾瓦的功耗就能提供桌面級系統的效能,然而,由於低功耗和熱力學上限方面對高效能的嚴格要求,我們不得不思考如何設計高效能Soc,利用僅有幾瓦特的功率提供媲美桌面級晶片的高效能。

拯救 CPU!

隨著移動SoC的發展,片上功能的複雜性也不斷髮展。最初在2G手機早期,我們只有16位的MCU,而到今時今日移動Soc逐漸發展成為了有史以來最複雜的計算平臺之一。它包含了一個晶片上可能載入的所有功能:軟體執行(CPU +快取)、圖形加速(GPU)、通訊(Wi-Fi、3G / 4G調變解調器、藍芽)、影片壓縮和解壓縮、相機管線(ISP),還要連線一系列低速外圍裝置——包括顯示控制器、觸控式螢幕、感測器介面、電源管理、散熱管理等。如今的移動SOC處理器一般都是6個甚至更多的CPU組成的64位CPU叢集,再加上數百或數千個ALU核心組成的GPU,提供的計算能力甚至超過了3-4年前的臺式計算機。

拯救 CPU!

鑑於我們現在已經掌握了這種先進的SoC設計技術,當然應該一如既往地堅持我們正在開展的工作,並加入神經網路加速器,不是嗎?對於運算元在每秒100G左右的任務來說,這個主意不錯。然而,對於要求運算元在每秒50-100T甚至更多處理能力的車用多感測器系統來說,這是一項艱鉅的任務。提高時鐘速度和效能說起來容易做起來難,因為我們已經在拼命壓榨效能了。神經網路加速器需要數十GB/s或更多頻寬,而這些頻寬只能佔用CPU和GPU的中央儲存器資源,因此這項任務會更為艱難。

拯救 CPU!

片上頻寬非常複雜

如果每個處理器無法在執行每項任務時獲得所需的資料,那麼即便SoC的效能再高也沒有任何意義。這就是為什麼如今的移動SoC上都載入了先進的片上儲存器快取以及複雜的高頻寬片上網路(Networks-On-Chip,即NOC),目的都是為了將各種處理器和加速器連線到儲存器、外圍裝置等。然而,如今的SoC中許多功能塊都連線到了NOC上(通常是NOC網路)。因此,每次資料移動,都必須決定誰有優先權。最終這發展成為了一項非常複雜的任務,而且難度隨著時鐘速度的提高而加劇。由於優先順序決策而丟失的每個時鐘週期都會導致頻寬丟失,而功能塊等待訪問NOC,實際上就相當於丟失了時鐘週期。隨著先進矽工藝的發展,我們主要的受益是能夠在晶片上放置更多的儲存器——通常是SRAM(靜態RAM)。儲存器越接近需要儲存的功能塊,它的訪問速度就越快,讀取或寫入資料所需的功耗就越小。SRAM非常易於使用,因為你可以隨機讀取或寫入任何資料單元,而且速度非常快。這就是許多應用都使用SRAM的原因,比如片上高速緩衝儲存器、FIFO、緩衝器,以及緊密耦合的本地儲存器。但是,由於片上的儲存器越來越多,因此在這些SRAM塊之間移動資料的情況也越來與頻繁。於是,SoC上的NOC的巨大需求出現了。我們放在晶片上的儲存器越多,對整個晶片架構的需求就越苛刻。所有高效能SoC設計人員所面臨的最大挑戰之一就是,如何在眾多工作負載和各種操作條件下,管理和優先處理異常複雜的資料流。

拯救 CPU!

外部儲存器的需求也很高

SoC中的CPU、GPU或其他加速器和功能塊的設計人員都需要想法設法儘量將資料留在晶片上。實際上,在功能塊內儲存的資料越多,需要請求NOC傳輸的資料就越少。但是,片上的儲存器很昂貴——CPU核心的最大快取很少超過1MB。如果來自感測器的資料以GB為單位,而應用程式所需的儲存器也是GB級別,那麼距離SoC與外部儲存器通訊也就不遠了。通常,外部儲存器都採用DRAM(動態RAM),其容量密度是SRAM的5-6倍。然而,為了享受大容量密度帶來的好處,你必須嘗試請求整塊資料,而不能僅僅請求單個位元組。這一點與片上SRAM完全不同,後者無論隨機訪問何處都能提供高效能。這種以結構化的方式訪問外部DRAM的需求引發了全新的複雜度:如何組織資料請求,才能最大地壓榨儲存器的最高資料速率。如果不考慮這一點,那麼一不小心就會損失50%甚至更多的儲存器頻寬。這個數字非常驚人。假設有一個單核64位CPU,其時鐘為2GHz。每個週期取一條指令、讀取或寫入一條資料,那麼就大致需要16GB/s的資料速率。即使我們假設75%的資料訪問都能命中片上的L1和L2快取,那麼每個CPU需要的頻寬也會高達4GB/s。如果是8個CPU組成的叢集,假設叢集的利用率為50%,則為16GB/s。而這只是CPU叢集需要的頻寬!由於中央處理器是大多數SoC的核心,因此必須為CPU和GPU叢集提供充裕的儲存器頻寬。否則它們的速度很容易被拖慢,即便理論上的最高處理能力再高,大部分也會被白白浪費。因此,除非CPU的大部分時間都在訪問快取中的資料,否則外部儲存器的頻寬很快就會成為大問題。GPU消耗的頻寬CPU遠超CPU,因為它們是並行處理器,每個時鐘週期都可以執行更多工作,因為它們是並行工作的可程式設計ALU陣列。

#FormatImgID_13##FormatImgID_14#

HBM2儲存棧是高效能解決方案,但受其過高的功耗限制,無法應用到車輛和其他嵌入式平臺。

最新的儲存技術(比如HBM2)可以提供高達256GB/s的驚人頻寬。但這些高功率技術是專門為資料中心而設計的,不適合嵌入式車輛或移動應用。我們需要使用更現實的低功耗儲存器技術——一般是LPDDR(低功耗動態RAM),它能提供的頻寬只是前者的零頭。如今嵌入式或移動裝置中最常用的記憶體是LPDDR4,其每個引腳可提供4。2Gbps的速率。且不論其他方面(例如GPU、調變解調器或影片)的使用,僅僅為CPU叢集提供資料傳輸就可以輕鬆消耗掉這個頻寬。下一代LPDDR5即將推出,其每個引腳能夠提供8Gbps的速率。但這將以消耗更多功率和產生更多熱量為代價。因此,距離LPDDR5在車輛系統中廣泛使用,我們還需要耐心地再等幾年。

#FormatImgID_15##FormatImgID_16#

使用快取還是使用外部資料?

我們需要考慮的另一個領域是,通用移動平臺與嵌入式車輛應用程式之間的工作負載差異。通用移動平臺有能力處理數百萬種應用程式,而嵌入式車輛應用程式的工作非常有限。這意味著我們可以針對車輛應用更好地最佳化工作負載的情況。對於要求苛刻的移動應用程式(比如遊戲)來說,大部分資料都儲存在本地。我們可以利用各種快取方案最佳化片上本地儲存的資料量,從而最大限度地減少外部儲存器上的流量。然而,對於自動駕駛車輛等實時系統來說,它們需要以MB/s級別或更高的速率不斷從感測器接收新資料。由於這些資料來自應用程式外部,因此必須透過外部儲存器子系統,至少一次。

實際上,資料可能會多次傳入和傳出外部儲存器,因為應用程式需要讀取並修改資料,然後再寫出來。如果利用資料執行低階功能(例如資料過濾或神經網路功能),則這種現象尤為突出。如果由主CPU預處理這些資料,那麼即使是簡單的迴圈也會迅速加重外部儲存器子系統頻寬的負擔。如果接下來讓GPU處理這些資料,則還需要讀取CPU寫出的資料,經過處理後輸出結果。這些頻寬消耗都需要考慮在內。管理現代嵌入式SoC資料的任務已經成為SoC設計人員面臨的最大挑戰之一。因此,如果我們還想著新增另一個高效能、資料密集型加速器(比如神經網路加速器),那麼就必須面對這種挑戰。

#FormatImgID_17##FormatImgID_18#

為什麼神經網路處理的要求如此苛刻?

神經網路處理是一種超大規模的並行處理任務。以前建立任何重大的神經網路加速器都是不切實際的,因為矽技術無法完成整合所需的大量計算任務。直到最近,這個問題才有所緩解。然而,該領域的許多人都已經認識到,神經網路計算實際上是資料驅動的問題,而不是計算驅動的問題。所有神經網路加速器的效能都取決於在網路預測過程中,資料如何在數千個計算引擎之間移動。由於神經網路加速器是資料密集型,因此如何透過最佳方式利用片上和片外的儲存器將是一個至關重要的架構問題。但有一件事是肯定的:在實時處理多個高畫質感測器輸入時,系統的持續資料傳輸量將是巨大的。

此外,隨著我們對演算法的不斷深入瞭解,神經網路也變得越來越寬、越來越深。AI從業者的擔憂在於,高畫質攝像頭的大量使用導致神經網路需要以30fps或更高的速度處理多達八個或更多的尺寸為3x1920x1024的攝像頭輸入。每個攝像頭的流量幾乎是200MB/s,那麼總共是將近1。6GB/s——這還僅僅是輸入資料!

#FormatImgID_19##FormatImgID_20#

自動駕駛車輛必須透過360°檢視全權掌握周圍的環境。為此必須使用多個高解析度的感測器,而每個感測器都會給處理平臺帶來進一步的壓力。

執行多次卷積的前幾層很可能需要多次寫入差不多大小的輸出,後面的操作才能處理規模較小的輸入資料。即便我們擁有10GB/s的頻寬,恐怕也不容樂觀。這就是為什麼我們認為,為了滿足多個攝像頭(或LIDAR、Radar 或其他精密感測器融合系統)所需的超大頻寬,必須慎重考慮整個系統架構的環境中的神經網路計算平臺。管理執行每個功能所需的系統頻寬,並保證每個功能處理塊儘可能高效地執行是關鍵。

拯救 CPU!

這是一個數據的問題,而不是速度的問題

我們公司裡負責建立aiDrive軟體棧的研究工程師在針對他們開發的許多神經網路工作負載展開了廣泛分析後,得出了這樣一個結論:計算能力並非完全取決於能夠同時執行多少個MAC。事實上,這完全取決於資料的移動:每個中間結果怎樣透過加速器從一個計算移動到下一個計算。這說明,權重和中間結果的儲存位置與相關的執行單元越近,處理效率就越高。因此,在執行期間減少中間快取或中央共享儲存對於提高效能至關重要。

這就是我們建立aiWare的原因:在硬體引擎中實現基於實際工作負載的資料流技術,這比傳統的方法更有效。我們希望建立一個能夠持續提供高效神經網路計算的引擎,同時管理加速器內部以及神經網路加速器和硬體平臺其他部分(尤其是基於CPU的SoC)之間的資料頻寬。最近很多神經網路加速器的實現人員都發現,他們的設計依賴於使用了多少本地儲存。對於aiWare來說,本地SRAM塊佔用了大約全部儲存的80%-85%。儲存的使用以及資料的傳輸才是最重要的因素。

拯救 CPU!

這是實時推理的問題,與訓練無關

在過去幾年中,人們設計了很多神經網路加速器,幾乎每週都有新產品湧現!但是,這些加速器大多數針對的都是在資料中心應用程式上執行的訓練過程。一些小型引擎也可以用於移動應用程式,但它們僅適用於語音識別和影象分類等低頻寬任務。很多設計人員從事的工作涉及車輛以及其他有功耗限制的高可靠性嵌入式應用程式的實時推理引擎,他們都面臨著不同的問題,雖然市場上有很多神經網路加速器,但它們的效能最終都取決於如何解決設計人員的問題。對於自動駕駛車輛等嵌入式應用程式中的連續性操作來說,關鍵在於連續幾個小時一幀又一幀地不斷傳輸資料。

這類系統沒有時間定期清理緩衝區、收集垃圾或以其他方式暫停維護。而這些都是資料中心主機或者非實時的移動應用程式習以為常的東西。對於車輛嵌入式推理系統來說,其所使用的儲存器策略必須經得起任何條件的考驗,而且必須能夠連續工作。

#FormatImgID_25##FormatImgID_26#

那麼,為什麼不能加快速度呢?

SoC的速度年年都在加快,而且我們還在不斷縮小流程節點。如果我們能夠加快現有晶片的速度,那麼問題不就解決了嗎?如下限制表明這種方法並不可行:

1. 距離:

儘管距離可能會隨著每次流程節點的技術進步而縮短,但它們與更高層整合之間的通訊所需的距離更長。傳送訊號所需的距離越長,所需的能量就越多。物理尺寸越小,每個訊號的能量就越少,除非你放大它——而這會增加功耗。因此,即使矽工藝的物理尺寸繼續縮小,我們也無法簡單地透過新增更多邏輯來加快晶片速度。

2. 成本:

每個更先進的矽節點都需要花費上一代技術的4倍才能製作晶片的掩模。雖然每個電晶體的成本降低了,但由於製造工藝的複雜性,最終的成本降低也沒有以前那般顯著。因此,先進的工藝節點花費在設計和最終裝置上的成本要高得多。

3. 噪聲:

隨著工藝節點變小,電壓下降,每個位元移動的電子更少。然而,這導致每個訊號更容易受到噪聲的影響。如果晶片需要在每個時鐘週期傳輸數十億條導線,那麼情況就會非常糟糕,此外車輛中的電噪聲會加劇這種情況。隨著我們繼續縮小晶片,這些系統還能保持健壯嗎?

4.摩爾定律:

著名的摩爾定律表明邏輯密度每18個月就會翻一番,多年以來這項定律一直得到了應驗。然而,如今就不適用了:每代晶片的邏輯密度只能增加1。2-1。4倍。但是,儲存器依然遵循該規律。因此,對於未來的工藝節點,設計中儲存器越是占主導地位,其擴充套件性就越好。

5.儲存器:

外部儲存器頻寬的擴充套件速度無法跟上片上儲存器的擴充套件速度。這是因為資料從晶片上傳入和傳出需要很高的速度——HBM2每個引腳高達2Gbps。這需要很大的功率,而且如果資料傳輸集中在一個小區域也會導致很大的散熱問題。加倍外部儲存器頻寬可不是一件易事,特別是如果有苛刻的功率限制和熱力學上限(比如嵌入式車輛應用程式)時。

拯救 CPU!

中央處理器就是中央!

許多行業利益相關者認為,未來的自動駕駛汽車將依賴強大的中央處理單元。事實上,越來越多的汽車電子工程師正在考慮為未來的車輛打造“車輪上的資料中心”,就像智慧手機是“掌上電腦”一樣。這樣做有一定的意義:基於中央處理的方法具有一定靈活性,意味著我們不需要在構建處理器硬體平臺時照顧到方方面面。例如,我們可以利用現代資料中心的方法,新增和替換計算伺服器並虛擬化所有資源,從而實現可升級性。

拯救 CPU!

車輪上的資料中心可能不是車輛生產製造商終端使用者的最佳解決方案。車輛硬體平臺必須小巧、高效、高效能。

然而,難點在於資料中心並不是為實時系統設計的。有時,它會自動停止並重新配置;重啟某些處理器,同時將計算負載轉移給其他處理器;如果發生瓶頸就會不斷改變工作負載。此外,為了實現這種靈活性,它還需要消耗大量功率,這就是為什麼現代資料中心面臨的最大問題就是電力問題。這聽起來像是理想的車輛解決方案嗎?這種方法可以用於未來車輛中的許多非關鍵功能。

然而,對於實時的、生命攸關的功能,例如L4 / L5車輛的基本控制系統,我們必須權衡所有情況下類似資料中心方法的靈活性與可靠性和穩健性,同時還需要考慮功耗、散熱以及電噪聲的限制。這意味著我們必須在中央處理器周圍建立越來越智慧的子系統,透過這些子系統以更分散的方式管理頻寬、處理和功率限制。例如,將一些神經網路處理轉移到每個感測器,就可以減少中央神經網路加速器的資源消耗,方便管理,這樣就可以利用中央神經網路加速器專門處理關鍵性的任務,例如軌跡規劃或高層物件跟蹤等。行業利益相關者將投入大量資源,為集中式和分散式解決方案尋找最佳選擇。事實上,在未來幾年中,車輛生產製造商和一級供應商在實現自己的自動駕駛系統時選擇的硬體平臺和解決方案可能會成為市場差異化的主要因素。

#FormatImgID_31##FormatImgID_32#

減輕中央處理器的負擔

在瞭解視覺優先系統時,我們意識到距離汽車行業在最佳硬體架構上達成一致還需要等待很多年。然而,為了將基於AI的軟體解決方案所需的處理能力集中到一個小盒子中,神經網路加速器必須具備一定的靈活性,並隨著新解決方案的開發,適用於所有型別的硬體架構。這包括從中央處理資源到分散式邊緣處理方法。

一個關鍵因素是如何管理系統頻寬。每個攝像頭都會生成高頻寬的資料流。用於前端感知和分類的神經網路計算需要非常快且百分百可靠。我們的 aiWare儲存器架構旨在為系統設計人員提供一套方法,可以將預處理的攝像頭(或其他HD感測器)資料直接傳輸到aiWare的外部儲存器。如此一來就可以減輕所有與感測器資料的收集和預處理相關的頻寬壓力,因為這些處理都脫離了主處理器SoC。接下來,aiWare子系統會將只需少量頻寬的結果傳送到中央處理器,以供後續功能(例如軌跡規劃和控制等)使用。

這種方法可以實現更好的可擴充套件性,因為想法設法擴充套件複雜的處理器和管理巨大頻寬與儲存流量的難度非常大,與之相比,設計基於低階硬體且融合到前端系統的可擴充套件專用感測器的難度則小得多。這也意味著中央處理器的靈活性可以發揮最大作用:靈活、複雜的啟發式、可處理形形色色的應用程式。例如,AI處理管道的後續階段大多數時候都依賴於傳統計算機視覺和其他演算法的綜合,這些演算法在通用平臺上執行的效果更好。因此,在中央處理器內提供適度的神經網路加速,透過高效能的外部神經網路處理來增強功能,就可以在儘可能低功耗的條件下實現效能可擴充套件的理想組合方案。此外,還可以利用更分散的方法,實現安全永遠有保障的冗餘方案。

拯救 CPU!

總結

一想到未來世界我們將擁有自動駕駛汽車,就讓人覺得激動不已。然而,為了獲得世界各地人們的青睞,我們必須極力控制功耗,並在苛刻的操作環境成本預算中,提供前所未有的效能。一味地按照以往的工作方式並不能實現這些偉大的目標。

儘管在過去的10-20年間,硬體技術取得了驚人的進步,但在高效能資料中心和高度受限的移動環境中,我們不能幻想廉價的效能。尤其是汽車行業的條件尤為苛刻:極端的操作條件,高度受限的功耗和散熱資源,嚴格的成本限制,漫長的開發時間,乃至更長的產品壽命。

硬體創新不僅可以透過使用最先進的技術來整合更多功能並加快速度,還可以幫助我們解決這些難題。我們可以另闢蹊徑利用現有成熟技術下的硬體架構,發揮創新的最大優勢,推進汽車行業以及其他嵌入式硬體平臺的發展。透過結合這兩種創新,我們將有望滿足未來那個激動人心的新市場需求。

原文:

https://

medium。com/aimotive/off

load-now-or-your-cpu-dies-ae1d9c5aec3c

本文為 CSDN 翻譯,轉載請註明來源出處。