時間: 分類:電子論文 瀏覽次數:
摘要微處理器是現代信息系統的核心基礎設施.大數據、人工智能、5G等技術的快速發展催生了數據量的爆發性增長,隨之對數據處理能力的需求也急劇增長.專用計算技術被廣泛認為是后摩爾時代的計算機體系結構演化的重要方向.專用處理器技術的發展一直伴生著通用處理器的發展,數字信號處理技術甚至早于傳統意義上的通用處理器.通用處理器技術的發展,不僅在商業上取得了巨大的成功,很多關鍵技術也被專用處理器吸收借鑒用于提升專用計算的性能、優化可編程性等.本文主要分析了數字信號處理器(DSP)、圖像處理器(GPU)、深度學習處理器(AI芯片)和網絡處理器(NPU)的關鍵技術特征,并進一步對專用計算架構未來發展可能涉及的關鍵點作出了簡要的評述.
關鍵詞專用處理器,數字信號處理,圖像處理,深度學習,網絡處理
1引言
如果不考慮成本因素,一顆理想的處理器應該可以像CPU(centralprocessingunit)一樣通用,像DSP(digitalsignalprocessor)一樣處理數字信號,像GPU(graphicsprocessingunit)一樣處理圖像數據,像NPU(networkprocessingunit,網絡處理器,也簡稱NP)一樣處理網絡數據包,像“礦機”一樣競爭加密貨幣共識算力,像神經網絡芯片一樣運行深度神經網絡訓練和推理等.
但是,實現如此萬能的處理器芯片是不現實的,至少從經濟成本角度不具備可行性,專用化就成為了發展的必然[1].專用處理器并不是通用CPU完全改弦易轍,而更像是基于通用處理器技術的一種分化.所以我們看到現代DSP、基帶處理器、網絡處理器的很多成功產品都包含一個甚至多個通用RISC(reducedinstructionsetcomputer)核來做系統管理、運行操作系統、與主機通信,將協處理器也變成一個具備自我管理能力的主動設備.從時間上看,DSP可能也是出現最早的計算芯片,在集成電路發明(1958年)之前,德州儀器(TI)公司已經在大批量生產硅晶體管器件.
TI公司在1967年發明手持計算器,1971年研制了單芯片微型計算機.在此之前的“DSP”只能稱為利用分立器件信號處理(processing),還不是名副其實的“processor”.DSP沒有被冠名某個“PU”的稱呼也許正是由于出現過早,當時“PU”的稱呼還沒流行起來.CPU最早出現在1971年,GPU出現在1993年(雖然當時的名稱還不叫GPU),網絡處理器(NPU)出現在1999年.從這些時間關系上看,我們大體可以看出人們首先是對信號處理有需求,然后才擴展到其他更普遍的數據處理需求上,因此有了對通用CPU的需求.再由于應用的驅動,CPU難以滿足性能要求,進而發展出了GPU,NPU等更專用的計算芯片.
從這個意義上看,通用CPU技術可以視為處理芯片的基本技術,在此基礎上發展了高性能CPU、現代高效能DSP[2]、高吞吐GPU、高通量NPU[3]等各種“XPU”.個人認為分析這些XPU的結構特征有助于更深刻地理解“通用”和“專用”的本質差異.針對專用處理器有很多關鍵問題,包括:芯片在架構上有什么差異,各自具備什么樣的軟件生態,能否取得商業上的成功的決定性因素是什么等,而答案也莫衷一是.本文的重點是試圖從架構層面去看待這些不同類別的專用處理器芯片的差異,幫助我們預測未來架構的發展趨勢,對于專用處理器技術未來的發展做了些許開放性的討論,拋磚引玉.
其次,本文主要討論經典專用處理器的演化,而把通用CPU的發展作為背景而暫不加以專門討論.同時,本文主要以DSP、GPU、AI芯片和NPU(網絡處理器)為主要參考對象,其中DSP以TI公司的C6000系列為主要參考,GPU以英偉達(Nvidia)公司的Tesla架構為主要參考[4],AI芯片以寒武紀的DianNao[5]深度學習處理器和Google公司的TPU(tensorprocessingunit)[6]為主要參考,NPU以邁絡思(Mellanox)公司(已經被Nvidia公司收購)的NP-5和因特爾(Intel)的IXP[3]為主要參考,均為各個公司比較有代表性的產品.限于篇幅,本文尚未將新出現DPU(dataprocessingunit)[7]芯片架構納入討論,相關內容將作為未來工作.專用計算架構的設計難度不亞于通用CPU,核心目標就是“有條件地”高性能.
無論是一個3W的DSP,還是一個300W的GPU,也無論是面向哪一個專用領域定制化的設計,都追求在給定的功耗、芯片面積約束下實現高性能.然而,這個問題的復雜性在于專用計算并不僅僅是設計幾個運算單元,配合幾條數據通路那么簡單,它涉及到IO子系統、操作系統內核、網絡協議棧、訪問安全、虛擬化、二次開發的方便程度等層面的問題,其中任何一個層面的問題的專業性都極強,要能融匯貫通并能系統地組織起來是一個巨大的挑戰.掛一漏萬,本文的內容只代表筆者的觀點.本文余下內容安排如下:
第2節闡述了專用處理器的基本概念,第3∼6節分別介紹了數字信號處理器(DSP)、圖形處理器(GPU)、AI芯片和網絡處理器(NPU)4類重要的專用處理器的基本特征,第7節表述了筆者對于專用處理器的幾點思考,據此在第8節提出了構建專用處理器系統結構的關鍵點,第9節總結全文.
2專用處理器的基本概念專用處理器(或專用加速器),顧名思義,就是用于處理“特定應用”的處理器,相對于通用處理器而言,這類處理器性能更高、功耗更低、通常價格也更便宜,但是使用范圍也相對有限.計算芯片產業在過去50年的發展歷程中,比較成功的專用處理器門類只有數字信號處理器(DSP)、圖形處理器(GPU)和網絡處理器(NPU),這是20世紀90年代就已經基本定型的格局.在過去5年中,用于處理深度學習的神經網絡處理器(AI芯片)也開始快速發展,比較成功的案例包括Google公司的張量處理器TPU[6]、寒武紀公司的DianNao系列深度學習處理器[5]等.
專用處理器的最終目標不是替代通用CPU,而是與現有的通用CPU技術協作,即將部分CPU運行效率低下的應用卸載(offloading)到專用加速器上運行,通過構建異構計算平臺來高效地處理計算任務.從產業生態的視角來看,相比于通用處理器的硬件與軟件分離的“水平”模式,專用加速器更注重軟硬協同的“垂直”發展模式.
這里效能指的是單位功耗下提供的計算能力,適應性就是通常意義下的通用性.業界通常將數據處理芯片大體分為三大類:
處理器芯片、ASIC(applicationspecificintegratedcircuit)芯片和FPGA(fieldprogrammablegatearray)芯片.處理器芯片包括CPU,GPU,DSP等,是用戶可編程的芯片;ASIC是面向特定應用(application-specific)的專用集成電路[8],通常也稱之為全定制芯片,不可編程;FPGA器件屬于專用集成電路中的一種半定制電路,是可“編程”的邏輯列陣,利用查找表來實現組合邏輯,但FPGA的“編程”與處理器芯片的軟件編程不同,主要是配置邏輯,可以理解為硬件編程.從相對性能來看,ASIC芯片最好,處理器芯片最差,FPGA介于二者之間;但是從應用的適應性來看,處理器芯片最好,FPGA次之,ASIC芯片最差.
值得注意的是這種分類標準并不是按照電路制造工藝,例如處理器芯片和ASIC芯片本質上都是全定制的集成電路,處理器芯片本質也是一種ASIC,但與通常意義上ASIC的最大差別還在于是否具有指令集,有指令集的就更類似傳統的處理器,反之就歸類為ASIC.此外,處理器芯片由于其使用廣泛、出貨量大,與軟件生態聯系尤其緊密,所以將其獨立為一個大的類別.專用處理器芯片的研發追求達到效能和適應性的一個新的帕累托最優(Paretooptimality):效能接近ASIC,但是適應性向處理器芯片靠近.
在效能上,專用加速器通過定制化實現遠高于通用處理器芯片的效能;在適應性上,從面向特定應用(application-specific)的ASIC范式進化為面向特定領域(domain-specific)的新范式,不妨稱之為“DSIC(domain-specificintegratedcirucuit)”.DSIC與處理器芯片相比雖然弱化了通用性,但與ASIC相比也強化了適應性. 無論是DSP、GPU、AI芯片、NPU,還是現在更新的各種“XPU”,都是處理數據的芯片,最終都需要執行二進制代碼的程序來完成計算.因此專用處理器設計也大都需要涉及如下6方面內容:
(1)約定二進制代碼的格式,即指令;(2)需要將指令變換為機器碼,即匯編;(3)為了提高編程方便程度,需要將高層程序語言轉換為匯編語言,即編譯;(4)為了提高編程的效率,提供了各種編程環境,即集成開發環境(integrateddevelopmentenvironment,IDE);(5)充分復用高度優化的代碼,即應用程序庫;(6)為了方便程序調試,還需要提供各種仿真工具,即仿真器(emulator).
所以,從系統抽象層次來看,與通用處理器幾乎沒有區別.但是不同的DSIC側重點不同,有些DSIC只提供API(applicationprogramminginterface)方式的調用,例如早期的GPU,將編譯、匯編等過程全都凝結在運行時庫中,從用戶角度看,調用過程與使用OpenCL[9]中的“內建核函數(built-inkernels)”類似,與調用普通的庫函數過程相同;雖弱化的可編程性,但是強化了用戶使用的便利性.但也有些DSIC,如DSP,使用了大量底層編程,雖編程難度高,但方便精確地性能調優.
3DSP:靈活的數據格式
DSP也許是最早出現的專用集成電路.DSP的使用范圍非常廣,從簡單的MP3播放器到最新一代的5G通信都有使用場景.常見的DSP大多帶有豐富的外設接口,例如PCIe、以太網、UART、I2C等,尤其在很多嵌入式設備中,豐富的外設接口對于提高系統的集成度、降低成本和功耗都有很大幫助,所以很多DSP產品也演變成帶有豐富外設接口的SoC(systemonchip)芯片.
但是DSP最大的特點還是進行數字信號處理的核.大多數DSP由于使用場景多為移動設備,或者只是作為CPU系統的數據輸入前端,在系統中的地位并不高,通常在功耗、散熱等方面都不可能給予太高容限,所以功耗敏感、計算位寬對DSP很重要,定點、浮點,半精度、單精度、雙精度,16位、24位、32位、40位等各種數據格式規范“五花八門”.在尋址上,DSP對于數據對齊方式也最靈活,設置了大量專門的指令對數據進行對齊操作.TI公司是DSP芯片的龍頭,被媒體評為是半導體行業利潤率最高的公司.2019財年營業總收入144億美金,稅后凈利潤高達50億美金,利潤率高達35%.作為比較,同期Intel收入720億美金,利潤率29%;英偉達總營收110億美金,利潤率25%.TI公司的DSP主要分為3大系列:
C2000系列,集成了AD轉換、Flash存儲等,主要用于控制馬達、變頻器等工控產品;C5000系列,16位定點,主要用于便攜聲音、視頻、機頂盒等設備;C6000系列,采用了VLIW(verylonginstructionword)架構,每秒執行指令峰值可達百億條,主要用于數字通信、圖像增強、傳輸、加密解密等對性能要求更高的場景.粗略觀察DSP核其實與通常的RISC核沒有太多區別:都包括了取指令、指令分發、譯碼、寄存器讀寫、Load/Store、計算執行等環節,但微體系結構有非常顯著的特色.例如,普通采用超長指令字(VLIW)架構、突出的浮點處理能力、指令與數據分離等,分析如下.
3.1通過VLIW架構提高性能
在C6000系列的DSP中,采用了超長指令字(VLIW)技術,性能的提升主要是通過引入SIMD(singleinstructionmultipledata)來實現.
從2路16位、4路8位SIMD操作,到8路16位、4路32位向量操作.為了支持較寬的向量化操作,C66x系列DSP設置了8個功能單元、兩組寄存器堆文件、兩條獨立數據通路;每組寄存器文件包含32個32位通用寄存器,而且可以支持8,16,32,40,64位等非常靈活的數據位寬打包存儲.例如一個完整32位寄存器連同相鄰寄存器的低8位存儲一個40位的浮點數,同時相鄰寄存器的高24位還可以用于存其他的數.乘法器支持128,40,64位數據.顯然支持那么多“非標”的定點和浮點數,如何來安排寄存器的分配成為一個很有挑戰的問題.
3.2浮點乘性能突出
功能單元的乘法計算能力極強,8個功能單元的每一個都能做到單個周期完成一條指令的執行,包括乘法(.M).單精度浮點乘在1個周期內完成,雙精度浮點乘在4個周期內完成,而且可以支持不同精度的浮點數直接相乘.算術(.S)、邏輯(.L)指令用來處理算術、分支計算、邏輯運算,此外,邏輯指令還可以在兩個周期內完成對復數進行90◦,270◦旋轉操作,計算復數共軛等操作.作為比較,2006年Sparc-T1處理器的浮點單元(floatingpointunit,FPU)執行一個單精度乘需要7個時鐘周期.其實,乘法器的性能對于浮點性能至關重要,現在FPGA芯片為了突出計算性能,甚至把乘法器硬核的數量作為一個重要指標(FPGA中通常將其稱之為DSP核).
3.3指令緩存和程序緩存分離
將指令與數據分離也就是著名的“哈佛結構”,一級程序緩存(L1P)采用直接映射,一級數據緩存(L1D)采用多路組相連.這樣導致了緩存替換策略的不同,L1P采用新緩存行替換同一位置的舊緩存行,采用讀–分配(read-allocate)策略.相較而言,L1D復雜的多,采用了最近最少使用(leastrecentlyused,LRU)替換策略和回寫(writeback)機制:當數據被更新時,并不立即更新相應的緩存位置和存儲器地址,而只做“dirty”標記,只有數據被替換出緩存,或者手動啟動一致性操作指令,或出現長距離訪問(此時所有高速緩存的局部性都極有可能被破壞),才會寫回到存儲器.
這也說明指令的局部性是比數據的局部性顯著得多,而且對于核而言,指令緩存是只讀的,而數據緩存可讀可寫,從這個意義上看,將二者分開也是有好處的.此外,DSP的緩存還支持很多先進的管理功能,例如強制凍結模式(freezemode),可以防止中斷程序破壞已經建立在緩存中的數據局部性,降低中斷恢復后“冷啟動”性能開銷.這些操作也全都由程序員來完成.
3.4硬件指令支持一致性管理
多核并不是CPU的“專利”,C6000系列也提供多核的DSP,由于多核引入會導致數據一致性的問題,C66x系列DSP也提供了柵欄指令(MFENCE)來處理緩存回寫,強制或阻止一致性操作的執行等,方便程序員管理數據一致性.
3.5硬件化的帶寬管理防止運行阻塞
DSP核中還設置了硬件化帶寬管理,負責管理一級數據緩存(L1D)、一級程序緩存(L1P)、二級緩存(L2)、寄存器配置總線等4類資源的訪問優先級.訪問發起方包括DSP、外部DMA(enhanceddirectmemoryaccess,EDMA)、內部DMA(internaldirectmemoryaccess,IDMA)、數據一致性操作.管理按照每次訪問授予優先級,而不是按照訪問類型固定優先級,通過設置競爭強度計數器來反映對資源的“饑渴”程度,即便是最低優先級的訪問,隨著等待時間增加,優先級就會逐漸升高,當達到最長等待周期數,就會強制授予一次訪問.
而這些都是硬件管理的,程序員只能設置最長等待時間,不能設置競爭計數器.這樣的硬件化維護資源公平性的設置在CPU中并不常見.由以上分析可以看出,DSP作為一類典型的專用處理器,其結構與數字信號處理需要豐富的IO接口便于集成,強大的浮點處理能力支持高帶寬的信號處理,還提供了豐富的底層數據通路的控制手段方便專業用戶的性能調優.
4GPU:數據并行的典型代表
GPU是專為圖形(graphic)處理設計的專用處理器.隨著多媒體可視化需求的爆發,傳統的CPU是無法應對每秒動輒數百兆的視頻渲染等任務.高清圖像、視頻數據天然具備數據并行的特征,可以通過高度的并行性來同時計算像素塊中所有像素的色度、亮度等數據.之所以經典,是因為從這一代架構開始,GPU開始朝著通用GPU(即GPGPU)發展,為后續GPU在深度學習領域的廣泛應用奠定了基礎.
4.1采用了單指令多線程(SIMT)的結構
單指令多線程(singleinstructionmultiplethread,SIMT)是英偉達針對其GPGPU提出來的一種處理器執行模型,與傳統的單指令多數據(SIMD)略有差別.SIMT具備了動態調度機制,每個線程(thread)都可以獨立處理分支,而SIMD更像VLIW,需要軟件來管理批量取數(batchload)和分支.其實這點靈活性給GPU的優化帶來了很多麻煩,之所以要使每個線程都可以獨立分支,本質是為了更好地服務于通用GPU(即GPGPU).因為在圖像處理之外的計算負載很少能找到能同時成千上萬個同構的線程,否者直接采用SIMD就滿足要求了.
但是為了控制管理這些線程的復雜度,GPU將這些線程組織成群(在英偉達公司的GPU技術里稱之為Warp,在AMD公司的GPU體系中稱之為Wavefront,若無特殊說明,后文均以Warp為例),調度是以Warp為單位,這就意味著同一個Warp中的線程必須以分支范圍為界,所有分支必須在同步前匯合(converge),這就很容易導致其他線程等待而不能充分利用GPU的運算資源.這在運行控制密集型負載時負面影響尤為突出.為了降低由于同一Warp內某些線程分叉(diverge)帶來的同步開銷,在Tesla架構下,每個Warp的大小被限制在32線程,只有上代產品的一半.
4.2GPU對于AI的支持
由AI以及渲染需求帶來的GPU架構變化,以NVIDIAAmpere架構和AMDRDNA/CDNA為例.首先,支持多精度/混合精度訓練.大多數深度學習模型使用32位單精度浮點數(FP32)進行訓練,而混合精度訓練的方法則通過如16位浮點數(FP16)進行深度學習模型訓練,從而減少了訓練深度學習模型所需的內存.同時由于FP16運算比FP32運算更快,進一步提高了硬件效率.AMD設計“matrixfusedmultiply-add”指令集進行混合精度計算,支持8位整型(INT8)、16位半精度浮點FP(FP16)、16位“brain”FP(BF16)和32位單精度浮點(FP32).NVIDIAAmpere架構進一步提升了FP32的計算速度,GeForceRTX3090實現35TFLOPS(采用FP32),是其上一代Turing的兩倍.其次,引入新的計算資源.NVIDIAAmpere架構包括:
可編程的shadingcores(由NVIDIACUDAcore組成),新一代raytracingcore(RTcore)用于加速光線追蹤時的boundingvolumehierarchy(BVH)遍歷,以及場景劃分.其中tensorcores用于提升神經網絡的計算和推理性能.AMD的RDNA架構最主要的核心改動就是將原先的矢量集架構改成了標量集架構.之前AMD的Wavefront是64個線程,這一代的架構改成了32個線程.這一點與Tesla架構采用32線程的Warp設置是一致的.采用32個線程的配置的優點是可以減少Warp內分支的性能開銷,單個Warp也只需要更少的寄存器,同等的硬件資源可以支持更多的Warp(wavefront),從而有效地提高吞吐量和隱藏延遲.
4.3現場調度做到
“零開銷(zero-overhead)”傳統意義上線程的調度涉及保護現場、上下文切換、指令重新載入等環節,通常來看線程的調度會破壞緩存內數據的局部性,導致緩存缺失率的上升,而且現場狀態保存等也需要消耗時間,所以理論上看是不可能零開銷的.但是GPU中線程由于量級很輕,同一個Warp內的線程調度并不需要換入、換出現場的狀態(主要是寄存器內容),所以可以做到近似零開銷.在Tesla架構下,Warp是調度的最小單位,指令的調度也就是Warp的調度,在Warp間調度開銷也很低.
每個Warp由32個執行同一指令的線程組成,每一個線程(thread)都有自己的寄存器狀態,獨立判斷分支的狀態執行,由于分支決策依賴于數據,所以同一個Warp中的不同的線程可能會“分道揚鑣”(diverge),同一個Warp中的線程通過Barrier來同步,只需要執行一條流式多處理器(streamingmultiprocessor)指令.每一條線程從創建、調度、同步的效率都很高.具體的調度機制采用記分板機制來實現,調度的優先級涉及到Warp類型、指令類型和公平性,由于涉及到技術機密,Nvidia公司沒有公開更細節的內容.類似的降低指令調度開銷的技術在網絡處理器(NPU)里也常見到.調度做到“零開銷”對于優化公平性很有幫助,不會因為計算資源輪詢共享而犧牲性能.
4.4引入特殊超越函數處理單元
GPU中的特殊功能單元(special-functionunit,SFU)用于計算超越函數,例如倒數、平方根、冪函數、對數、三角函數等.基本方法是采用查表結合二次插值的方法來計算,做到了性能、誤差和面積的平衡.性能上做到了每周期出一個結果,誤差上界可控,面積遠小于單純的查表方案.GPU中的SFU和現在流行的神經網絡處理器里用到的“Sigmoid”函數有類似的地方,SFU中的計算方法用來處理Sigmoid計算是足夠用的.此外,之所以現在GPU被廣泛應用于神經網絡計算并不單純因為性能高,而是GPU中的流式處理器(streamingmultiprocessor)的結構與神經網絡的矩陣–向量–Sigmoid的操作比較匹配.
5AI加速器:大規模張量處理
隨著深度學習算法效果在圖像處理中取得突破,深度學習在越來越多的應用領域被應用.在過去5年中,用于處理深度學習的神經網絡處理器(AI芯片)快速發展,其中比較成功的案例包括寒武紀的DianNao系列深度學習處理器[5]、Google的張量處理器TPU[6] 等.AI加速器大多針對機器學習中張量運算展開加速,多基于SIMD方式實現,單條指令通常可以完成一個矩陣的乘法運算,因此也稱為張量處理器.除了張量處理之外,還會伴有一些激活函數處理等非線性操作,運算量相對較小,實現起來也相對簡單.此類加速器重在張量處理,控制相對簡單,通常不會集成通用處理核.
6NPU:為網絡數據包處理而生
計算機網絡是計算機系統發展過程中的一個偉大發明,網絡是大規模并行計算、分布式計算的必要條件.IBM于1974年發布SNA(systemnetworkarchitecture)系列網絡協議,主要解決IBM的大型機與外圍節點的通信問題.這些節點并不是完整的計算機,而是像用于ASCII圖像顯示終端的IBM-3174控制器、打印機等設備.1974年之前程序還寫在紙帶上,主要處理模式還是批處理;SNA引入以后,開啟了事務處理的先河,把網絡通信中容錯任務交給了網絡協議來處理,并且基于SNA后來發展出了應用程序接口(API)等概念.
隨著后續幾年越來越多的設備開始采用網絡來連接,不同廠商提供了不同的網絡,為了解決不同網絡間的互連互通(internetworkcommunication),美國標準化組織于1981年提出了經典了開放系統互連(opensystemsinterconnection,OSI)7層模型[13],這個參考模型一直沿用至今,仍未過時.網絡處理器的出現是網絡技術發展的必然.隨著OSI模型的普及和廣泛接受,在2000年前后,NPU還是學術界研究的熱點領域.
第1顆網絡處理器于1999年問世,隨后得到了許多半導體公司、網絡設備廠商的關注,據不完全統計,前后有30余家廠商完成了500余款NPU的設計,和現在的各種“XPU”的多樣性相比有過之而無不及.IBM、因特爾、思科、EZChip(于2015年被Mellanox收購)都推出了相應的系列產品,典型如Intel的IXP系列和Mellanox的NP系列網絡處理器.各家NPU產品雖然各有差異,覆蓋不同的協議層次,面向不同的協議內容,但是它們的結構模塊具有相似性,例如都包含的模塊包括通用處理器核、隊列管理單元、路由管理、緩存管理、IO接口管理等.值得一提的是,最近興起的DPU架構,有很多特征借鑒了NPU技術,特別是在對路由、交換、數據包處理的高效支持上,相關討論將作為未來工作開展.
6.1控制平面與數據平面相分離
網絡處理器的功能可以從控制平面和數據平面來區分.判斷一個任務屬于控制平面還是數據平面的一個簡單的方法就是看數據包的路徑:如果一個數據包需要穿過處理器,就屬于數據平面,如果是由處理器發起,或者終結在某個處理器,就屬于控制平面.其中數據平面的計算主要由專用計算引擎完成,而控制平面的計算主要由通用處理器核完成.不同于GPU,浮點處理性能不是網絡處理器的重點,可以靈活支持OSI7層協議中不同層次的各種網絡協議的高效卸載才是網絡處理器比拼的焦點.
NP-5的上一代NP-4是業界首個100Gbps電信級以太網網絡處理器,到了NP-5已經把標稱性能提高到了240Gbps的高度.任務優化處理器(taskoptimizedprocessor,TOP)是NP系列專用處理器的核心,是以流水線方式排列的超標量處理器.NP-1聲稱專為處理第2∼7層數據包而設計處理速度為10Gbps.有一個單獨用于控制處理器來處理控制平面操作的接口.EZchip采用微碼編程,具有用于NP-1的軟件開發環境,包括匯編器、調試器和仿真器,此外還提供常用的交換、路由、分片、組包、組播、QoS等應用程序庫.
7關于專用處理器的幾點思考
對前述的DSP,GPU,AI芯片和NPU從架構特征、編程特點和性能刻畫3個維度進行了比較,概述了這4類專用處理器的主要區別.分析可以看出,專用處理器的設計相比于通用CPU而言,側重點非常不同.比如,不太強調指令集,也沒過多的突出應用生態,但是非常注重極致的性能優化,注重與具體計算模式的匹配.以下是筆者關于專用處理器的本質特征的幾點思考,拋磚引玉.
7.1專用處理器的指令集架構沒有最好的,只有最合適的指令級體系結構(instructionsetarchitecture,ISA)特征,通常分為CISC,RISC,VLIW三個大類,前兩類大家都比較熟悉,在此略過.VLIW一直未在通用市場上取得成功,在20世紀80年代,最有名的一家希望在通用市場推廣VLIW的公司應該是Multiflow,由耶魯大學(YaleUniversity)的計算機科學家JoshFisher創立于1984年,他們在VLIW的編譯優化方面做了很多研究,這家公司只生存了6年,總共只賣了一百多臺VLIW機器,隨后Fisher教授加入了惠普(Hewlett-Packard)公司.
雖然公司沒有成功,但對VLIW的貢獻為其贏得了計算機體系結構領域最高獎Eckert-MauchlyAward.20世紀90年代正值摩爾定律飛速發展的時代,Multiflow研發的VLIW處理器的性能一直跟不上RISC和CISC的微處理器,最后被淘汰出局.即便是Intel和惠普提出安騰(Itanium)架構,即IA-64系列,又發起了VLIW的嘗試.
第1顆IA-64架構的處理器發布于1999年,雖然與X86師出同門,但仍未動搖到RISC的ARM和CISC的X86的市場地位,2017年安騰徹底退出歷史舞臺.VLIW處理器優勢使得控制結構大幅消減,提升了單位面積的有效計算的密度,功耗效率也得到了提升,但與CISC和RISC相比最大的差異是編譯依賴.VLIW的性能對編譯優化極其敏感,將開發指令集并行(instructionlevelparallelism,ILP)的責任交由編譯器來完成,不僅導致編譯器的復雜度大大提高,而且還帶來了一系列兼容性的問題:VLIW的代碼都有很強的機器依賴(machinedependence),更新代際的機器執行之前的代碼并不會獲得性能的明顯提升.
此外,理論性能與實際性能的落差過大始終是VLIW繞不過去的坎,這也許是VLIW未獲得廣泛市場認可的重要原因.然而,如果把VLIW的目標范圍縮小到僅僅是數字信號處理的范疇,對編譯優化的要求也會隨之降低,這就有可能在一個可接受的編譯優化復雜度下,比較充分地利用VLIW架構的計算資源.TI的C6000系列DSP已經用事實證明了這一技術路線的可行性.所以,脫離了實際的應用范疇談體系結構的優劣都很容易“刻舟求劍”.VLIW沒有成功代替X86,并不能說明VLIW就是失敗的;X86服務器出貨量占到了所有通用服務器出貨量的90%以上,也不能證偽其他技術存在的合理性.
8討論:構建專用處理器系統結構的幾個關鍵點
專用處理器與通用處理器是處理器發展的兩個互補的方向,雖然單獨一類專用處理器的市場要遠小于通用處理器,但是多類專用處理器的市場總和將遠遠大于通用處理器的市場.而且,專用處理器的發展將會在很多增量的應用市場中占有絕對的性能優勢,且受到通用計算的生態限制更少,有利于專用架構逐步擴展去覆蓋更長尾端的應用.在過去處理器芯片發展的60年里,前50年都是通用處理器的發展以絕對優勢占據了處理器芯片的市場份額,相信在接下來的30年,隨著數據的爆發和“端、邊、云一體”這種計算范式的繼續滲透,將形成通用處理器與專用處理器并行的新局面,在2020年7月的CommunicationsoftheACM中,有一篇文章提出了一個新概念:“ASICclouds”,全文標題是“ASICclouds:specializingthedatacenterforplanet-scaleapplications”[8],這里的“ASIC”就是各種專用處理器的呈現形式,我們相信專用處理器將迎來空前的增長機遇.
9結論
采用專用處理器芯片是計算系統提升算力、提高效率的有效手段,業界對于“XPU”概念的廣泛關注反映了人們對新型計算芯片期望.本文以經典的數字信號處理器DSP、圖形處理器GPU、AI芯片、網絡處理器(NPU)作為案例,以這4類專用處理器的結構特征為分析重點,總結得出DSP最重要的結構特征是支持靈活的數據格式,能效比優化極致;GPU是充分利用數據并行的典型,并且正在朝著通用化的方向發展;AI芯片圍繞大規模張量處理,支持可變精度來優化性能;NPU聚焦網絡數據包處理,構造高通量的流水線.
筆者發現一些在通用CPU中沒有得到成功發展的技術,如VLIW,在專用處理器中發揮了重要作用;而通用處理器體系下最重要維度,如指令系統,在專用處理器中反而被弱化了.這些差異進一步引發了筆者從經典體系結構的角度對專用處理器的幾點思考.最后,本文討論構建專用處理器系統結構的4個關鍵點:即針對數據平面的架構,融合新存儲、傳輸、封裝等新技術,面向領域專用語言和充分利用好“專用”這個特征來簡化系統設計.
參考文獻
1HennessyJL,PattersonDA.Anewgoldenageforcomputerarchitecture.CommunACM,2019,62:48–60
2WalravensC,DehaeneW.Low-powerdigitalsignalprocessorarchitectureforwirelesssensornodes.IEEETransVLSISyst,2014,22:313–321
3GeorgeL,BlumeM.TamingtheIXPnetworkprocessor.SIGPLANNot,2003,38:26–37
4LindholmE,NickollsJ,ObermanS,etal.NVIDIATesla:aunifiedgraphicsandcomputingarchitecture.IEEEMicro,2008,28:39–55
5ChenTS,DuZD,SunNH,etal.DianNao:asmall-footprinthigh-throughputacceleratorforubiquitousmachinelearning.SIGARCHComputArchitNews,2014,42:269–284
6JouppiNP,YoungC,PatilN,etal.In-datacenterperformanceanalysisofatensorprocessingunit.In:Proceedingsofthe44thAnnualInternationalSymposiumonComputerArchitecture(ISCA),2017
7YanGH,LuWY,LiXW,etal.DPU:data-centricdomain-specificprocessor.CommunCCF,2021,17:51–56[鄢貴海,盧文巖,李曉維,等.DPU:以數據為中心的專用處理器.中國計算機學會通訊,2021,17:51–56]
8TaylorMB,VegaL,KhazraeeM,etal.ASICclouds:specializingthedatacenterforplanet-scaleapplications.CommunACM,2020,63:103–109
9StoneJE,GoharaD,ShiG.OpenCL:aparallelprogrammingstandardforheterogeneouscomputingsystems.ComputSciEng,2010,12:66–73
作者:鄢貴海*,盧文巖,李曉維,孫凝暉
級別:北大核心,JST,CSCD,CSSCI,WJCI
ISSN:1002-2104
刊期:進入查看
格式:咨詢顧問
數據庫:SCI
ISSN:2045-2322
刊期:進入查看
格式:咨詢顧問
數據庫:SCI
ISSN:0284-1851
刊期:進入查看
格式:咨詢顧問
數據庫:SCI
ISSN:2352-4928
刊期:進入查看
格式:咨詢顧問
數據庫:SCI
ISSN:0169-4332
刊期:進入查看
格式:咨詢顧問
數據庫:SCI
ISSN:0960-7412
刊期:進入查看
格式:咨詢顧問