張平
RISC-V近年來的發展勢頭不錯,其開放、免費的特性吸引了大批企業、研究人員的關注,采用RISC-V架構的產品也逐漸向各個方面延伸。2020年底,一家名為Esperanto的公司公布了一款采用RISC-V架構的超大規模高性能Al芯片,由于其獨特的設計和理念,在發布后就引發了業內關注。不過當時并未公布太多信息,直到近期,Esperanto才披露了這款產品在架構、設計以及運行方面的詳細信息,值得一看。
目前AI芯片是業內熱門的發展方向,考慮到未來AI計算廣闊的市場前進,大量企業都希望參與其中。目前設計AI芯片的方法多種多樣,比如采用x86架構、ARM架構組建CPU來實現,或者采用自有指令集設計,這些不同的方法擁有各自的優勢和不足。Esperanto作為一家初創公司,選擇了RISC-V指令集來制造一款全新的AI芯片。不僅如此,這款產品還包含了高達238億晶體管,以及超過1000個核心,規模之大令人咋舌。ET-SOC-1處理器總覽
Esperanto推出的首款處理器全稱是“Esperanto Technologies Supercomputer-on-Chip 1”,縮寫為“ET-SoC-l”。它定位一款推理加速器,而不是常見的訓練加速器。一般來說,神經網絡需要在訓練完成建立模型后,才交由推理加速器進行推理。在訓練階段需要大量的原始數據、極高的計算能力和較長的訓練時間。推理時間則相對短一些,它使用訓練模型來完成,因此對計算能力要求不高,但是對延遲很敏感。因此在設計方面,ET-SoC-1需要進行針對性優化。
ET-SoC-1包含了2個類型的核心,一個被稱為ET-Minion,是一種順序執行的小核心,用于處理矩陣乘法、自定義張量計算等。另一個被稱為ET-Maxion,是一個較復雜的大內核,能夠運行Linux操作系統。在ET-SoC-1中,ET-Maxion被用作控制CPU,ET-Minion則被用作并行數據處理使用。
ET-SoC-1設計了一個6×6網格,一共36個區塊,其中2個被用作控制處理器集群和PCle控制器,其余34個全部布局了被稱作Minion Shires的ET-Minion處理器集群。1個Minion Shires中包含了總計32個,分為4組的ET-Minion核心,這樣它一共擁有1088個(34×32) ET-Minion核心,以及這些核心所擁有的總計136MB L2緩存。實際上ET-SoC-1中還有1個額外的ET-Minion核心用作服務處理器。在控制中心方面,4個ET-Maxion和4MB L2被集成在一個區塊上,用于運行操作系統等。此外,ET-SoC-1面向超大規模的數據中心市場,這意味著它也可以和高性能獨立處理器一起工作。對一些邊緣應用而言,ET-SoC-1配合高性能獨立處理器可以發揮更大的作用。加總起來,ET-SoC-1擁有1093個核心。
ET-SoC-1采用了臺積電7nm工藝,擁有238億晶體管。雖無芯片面積和封裝尺寸的信息,但根據同類產品進行估計,ET-SoC-1的封裝面積可能在350mm2以上,算得上中大型處理器。單個ET-Minion可以在1GHz頻率下實現INT8精度的1280PS/周期或者128GOPS算力。用此數據計算的話,在1GHz頻率下,所有1088個ET-Minion核心可以輸出最多139.3 TOPS算力(INT8)。隨著頻率提升,ET-SoC-1的算力也會增長,比如在1.5GHz下,ET-SoC-1的算力會提升至208.9TOPS (INT8)。ET-SoC-1支持FP16(半精度)或者FP32的計算,但算力相比INT8低不少。在1GHz時,ET-SoC-1的FP16算力為35TFLOPS,在1.5GHz時會提升至52TFLOPS。
ET-SoC-1使用低功耗的LPDDR4接口進行數據通信和供電,最多支持32GB容量的DRAM,最大帶寬可達137GB/s。ET-SoC-1還可以通過PCIe 4.0x8接口和外界連接。ET-SoC-1的典型工作功耗大約在20W,也可以低于它。這么低的功耗是由于芯片的運行頻率非常低,只有1GHz~1.5GHz,且整體規模不大,這使得ET-SoC-1符合OCPM.2加速器模塊的規格。不過未來ET-SoC-1還可能會衍生出支持PCIe接口,具備更高規格和功耗的產品。深入ET-SoC-1核心架構
接下來讓我們深入ET-SoC-1內部,去看看這款RISC-V架構的處理器到底有哪些獨特之處。首先是負責控制的ET-Maxion核心的架構設計。
ET-Maxion:性能堪比Cortex-A72的控制核心
ET-Maxion是一個典型的高性能大核心。和之前提到ET-Minion運行在大約1GHz~1.5GHz不同的是,ET-Maxion運行的頻率要高一些,超過了2GHz。從設計上來看,ET-Maxion實際上是UC Berkeley Out-of-Order Machine (BOOM)v2 CPU(簡寫為RISC-V BOOM)的一個分支。它是采用Chisel硬件構建語言編寫的一個可合成和可參數化的開源RV64GC RISC-V核心。由于它是開源的,所以廠商可以在開源許可文件的約束下自由使用它,一般人們會利用RSIC-V BOOM構建高性能處理器。Esperanto正是利用RISC-V BOOM構建了ET-Maxion的基本架構。
相比RISC-V BOOM,ET-Maxion在各方面都進行了大刀闊斧的改進,比如ET-Maxion更寬、更長、規模也更大,前端經過了重新設計,執行單元也進行了重制,并加入了分支預測器和預取器,還帶來了新的底層緩存和支持ECC的TLB。由于ET-Maxion要面向商業用戶,因此還增加了商業級別芯片的調試和性能監控等功能。
在SPEC2006的ISO頻率上ET-Maxion的性能略遜于Cortex-A72,但高于Cortex-A57。僅從性能來看,ET-Maxion在RISC-V架構下排名靠前,僅弱于SiFive的P550內核,后者的IPC顯著高于ET-Maxion以及Cortex-A72,SPEC2006測試成績大約有8.65/GHz。
ET-Maxion是典型的10級流水線的亂序執行架構。它的前端是一個4發射結構,每周期能夠獲取16B的數據,解碼后以每周期4條指令的速度將其分派到后端執行部分。整個架構也可以從具有奇偶校驗和ECC功能的32KB分塊指令緩存中獲取指令。Esperanto花了相當大的精力為它設計了先進的條件預測器和擁有2K條目深度,支持BTB、基于路徑的間接預測器。最終,ET-Maxion的分支預測器實現了2級預測:高速度且單周期運行、基于BTB的預測執行得到結果后,輸入第二級多周期、高精度分支預測器中進一步處理,后者的結果可能會覆蓋前者,也可能不會。
ET-Maxion的前端每周期最多可以向調度部分發送4個指令。ET-Maxion使用的是分布式調度器,總容量為64個條目。ET-Maxion的重命名/分配/提交重排序緩沖區的深度為128條目。前端解碼后的微指令在這里暫存并進行排序、重命名或者分配處理,等待進入后續的執行單元。
執行單元的分派部分設計非常獨特,由1個128條目的整數通用寄存器文件和1個64條目的浮點寄存器實現,整個分派部分每次可以輸出5條指令。這5條指令指向后部的4個調度隊列,每個調度隊列都是16深度的。其中,FPU執行單元擁有1個調度隊列,剩余整數部分的復雜ALU、2個簡單ALU和AGU各擁有1個調度隊列。值得注意的是,2個簡單ALU共享一個調度器,另外,復雜ALU還加入了分支預測單元,能夠處理部分分支預測操作。所有4個調度隊列每周期可以處理5個微指令輸出的操作。浮點單元設計為64bit寬度,能夠支持RISC-V 32和雙精度的RISC-V 64浮點擴展。
Esperanto本來計劃選擇自定義指令集,但是考慮到通用性、簡單性和市場接受度等因素最終選擇了RISC-V。Esperanto希望將更多精力花在性能和架構方面的優化上,而不是去解決ISA的問題。Esperanto展示了ET-Maxion的平面圖,其中幾乎1/3的面積用在緩存和分支預測上。另外占據較大面積的部件包括硬件預取器HPF、FPU浮點單元、LSU、000亂序引擎等。ET-Maxion的硬件預取器選用了更慢但是更準確的版本,反而可以提高性能,將其放置在芯片的頂部以及關鍵路徑的外部,可以簡化接線。
ET-Minion:專精于大規模計算的小核心
Esperanto設計了用于大規模并行計算的專用小核心ET-Minion。它和ET-Maxion存在巨大差異,雖然也是一個64位的RISC-V核心,但采用的是順序執行架構。ET-Minion由于面向吞吐量,因此也采用了多線程的方案,它具有2個可以在停頓時交換的線程。ET-Minion采用標量流水線設計,每個周期獲取、解碼和發出一條指令,然后進行處理并輸出結果。
ET-Minion的主要目的是加速推理計算,針對這個類型的計算,Esperanto為其設計了全新的執行引擎。ET-Minion的后端為矢量密集型,為了節約資源給矢量計算,ET-Minion只設計了一個執行單元來執行RISC-V架構所需的所有必要操作。其余部分包括2個執行管道,1個256bit的浮點矢量單元和1個512bit的整數矢量單元。伴隨著這些矢量單元的是2個寄存器,1個32條目的256bit浮點寄存器和1個32條目、256bit的整數寄存器。寄存器對每個線程來說都是重復的,這意味著總計有2個“整數寄存器+浮點寄存器”組,每一組分別服務于一個線程。浮點矢量單元又可以細分為8×32的FMA,每周期可以提供單精度16FLOPs的性能,或者每周期半精度32FLOPs的性能。整數矢量單元的寬度是浮點單元的2倍,又被細分為16×32 TIMA,每周期能夠執行128個INT8操作。在工作模式上,FP矢量單元從FP矢量寄存器中讀入數據,但是整數矢量單元需要從FP矢量寄存器文件中獲得一半的矢量信息(256bit),再和私有整數矢量寄存器中獲得的信息組合起來,才能實現整個512bit寬度的寄存器文件。
從整個架構設計來看,Esperanto在ET-Minion中加入了如此強大的浮點計算能力,這還是非常少見的。因為絕大部分類似的產品都只提供INT8操作的能力。雖然對現有的計算來說,INT8其實很多場合下已經足夠使用了,但是對那些需要FP16或者FP32的工作負載來說,ET-Minion的確更具優勢。
ET-Minion包含一個矢量超越單元。這個單元可以執行超越函數,比如各類三角函數、指數、對數的計算,以加速諸如激活函數等操作。這個超越單元的設計非常有趣,它基于ROM進行,這有助于降低功耗。
除了矢量單元外,ET-Minion還集成了一個矢量超越單元,可以執行超越函數,如各種三角函數、指數和對數,以加快激活函數等。另外,Esperanto在矢量單元的設計上還做了一些獨特的操作,除了標準的RISC-V的矢量指令外,Esperanto還加入了2條獨特的矢量擴展指令,一個是多周期張量指令,另一個是伴隨前者的矢量超越指令。實際上,這兩條指令對AI相關的計算是非常重要的,RISC-V和其他指令一樣,都對AI計算這種新生事物缺乏支持,原始的指令集也沒有集成相關加速的指令,因此廠商在這里添加了自有的指令集,這也是可以理解的。實際上,RISC-C基金會也—直在做類似的操作,比如將自定義擴展植入規范中,以便更多的用戶使用。不過這里存在一個知識產權的問題,Esperanto可以宣稱這個指令集是自己的知識產權以阻止第三方使用,但是現在Esperanto沒有這樣做,目前尚不清楚Esperanto對這些私有的指令集的處理方法,如果能夠開放給業界使用的話,肯定能在很大程度上推進整個產業的發展。
具體到這兩個指令集來看的話,多周期張量指令集的特點是允許內核讀取一條指令,通過引入張量定序器狀態機(Tensor Sequencer),可以在100多個甚至1000多個周期內重復操作。和大多數定序器一樣,ET-Minion為整個前端和其他每一個在張量操作發布和執行時沒有被利用的單元設計了門控操作。這使得內核能夠進一步削減功耗。
另外還有一點需要提及。ET-Minion的物理設計為了低功耗做出了很多優化。比如為了提高低電壓下的頻率,ET-Minion的流水線被設計為較少的級數。另外,Esperanto還設計了自己定制的SRAM而不是臺積電的標準SRAM。這種定制單元雖然在物理實現上要比臺積電的標準單元更大,但是可以在更低的電壓下穩定運行,甚至遠遠低于額定電壓。這里的額定電壓可能在0.75V左右,但是Esperanto的SRAM可以在0.4V下穩定運行,這又可以節省—大部分功耗。
從核心到區塊再到片區:ET-SoC-1的實現方式
ET-SOC-1內擁有大量的核心,那么他們是如何集成和工作的呢?在這里,Esperanto帶來了區塊和片區的概念。
先來看看區塊。以1個ET-Minion為基本單位的話,8個ET-Minion可以被看作是一個區塊。在一個區塊內,每個內核會競爭性的共享32KB指令緩存。每個周期,一個緩存行數據被發送至2個內核。換句話說,指令緩存在每個周期內輪詢一堆內核,將64B的16條指令發送到2個獨立的內核,內核對這些信息進行緩沖存儲,允許他們在指令緩存轉移到其他內核的時候繼續運行。
在區塊之上是片區。4個區塊結合成為1個片區,1個片區擁有32個核心。每個區塊通過交叉開關連接到周圍的4組L2緩存。1個L2緩存包含4個1MB的SRAM組,可以通過軟件配置其為高速緩存或者暫存器訪存。在暫存器的配置下,整個緩存將被視作一個很大的地址空間,軟件可以使用它精確地訪問數據。有趣的是,默認情況下,片區的L2緩存都是私有的,當然也可以配置為跨越整個芯片的最后一級緩存,所有這些功能都以每個緩存Bank的粒度進行配置。比如,一個緩存Bank可以被保留為暫存器,另一個可以用于1MB的片區LCC,另外兩個Bank可以配置為2MB的私有L2。每個片區都可以通過網狀互聯和其他的片區通訊,每個區塊都有一個網絡接口站點。
最后每個片區都通過網狀連接至其他任何區塊和芯片上其他任何組件,鏈接采用的數據位寬可能是1024b。此外,芯片上另一些組件比如內存通道和PCIe接口等,都通過類似的網絡連接至整個芯片上,最終組成ET-SoC-1芯片。
最后來看看有關ET-SoC-1芯片的具體產品實現。Esperanto現在推出了名為OCP Glacier Point V2的加速卡,采用OCP M.2加速器模塊加速。Esperanto宣稱可以最多在OCP Glacier Point V2加速卡上封裝6個加速器模塊,這樣一來,每個OCP Glacier Point V2加速卡將擁有6558個RISC-V內核、192GB的LPDDR4X內存以及822G B/s的DRAM帶寬。這個模塊的理論峰值速度將達到835.6TOPS (INT8)或者210TFLOPS(FP16)。
寫在最后
可以看出,ET-SoC-1是一款面向應用市場推出的產品,其設計和架構都針對應用做出了優化,并且最終的產品實現也非常成熟。同時,ET-SoC-1代表著RISC-V首次同時涉足高性能控制核心和超大規模并行計算。目前ET-SoC-1還處于早期實驗和推廣階段,它的理論性能和實際表現究竟如何還不清楚。在今年的HotChip 33上,ET-SoC-1芯片也有更進一步的展示,本刊會繼續保持關注,在之后給大家帶來更深入的報道。