進軍服務器RISC-V能否與x86一戰?
眾所周知,目前x86架構處理器統治著PC和服務器市場,而Arm架構處理器則統治著移動市場,並在IoT市場佔據著較大的市場份額。但是,近年來RISC-V架構則憑藉著開源、指令精簡、可擴展等優勢,在註重能效比的物聯網領域大受追捧。
在RISC-V International及相關芯片廠商的推動下,RISC-V也開始進入更高性能需求的服務器市場。
2023年初,RISC-V International將HPC確定為RISC-V增長的戰略優先領域,再加上最近批准的矢量擴展和大量移植關鍵HPC庫和工具的HPC軟件工作,很明顯,這一領域的勢頭正在迅速增長。
世界各地的很多項目,如歐洲eProcessor項目、擁有上千RISC-V核心的Esperanto CPU,以及旨在開發RISC-V關鍵軟件組件支持的多供應商RISE項目,都有可能推動RISC-V在包括HPC在內的高端計算中普及,並最終使社區能夠圍繞這一技術構建超級計算機。
此外,早期的應用研究對RISC-V可以為高性能工作負載帶來的好處也表示贊同。
2022年12月,芯片初創企業Ventana Microsystems公司在RISC-V峰會上發布了全球首款面向服務市場的基於RISC-V架構的最高192核CPU——Veyron V1。
據介紹,Veyron V1採用先進的5nm製程工藝,基於Ventana自研的高性能RISC-V內核,8流水線設計,支持亂序執行,主頻高達3.6GHz,每個集群最多16個內核,多集群最多可擴展至192核,擁有48MB共享三級緩存,擁有高級側信道攻擊緩解措施、IOMMU和高級中斷架構(AIA)、支持全面的RAS功能、自上而下的軟件性能調整方法,可以滿足數據中心的各種需求。
根據Ventana披露的數據顯示,在SPECint 2017測試中,128核心版本的Veyron V1在300W功耗下,大幅性能領先於64核的AMD EPYC Milan 7763(280W),並且達到了64核心AWS Graviton G3(Neoverse v1內核)、40核心Intel Xeon Ice Lake 8380(270W)的兩倍。當然這也主要得益於其核心數量達到了競品的兩倍。
需要指出的是,Veyron V1並沒有SIMD或向量執行單元,這對上有AVX-512的Intel或AMD的服務器處理器會非常吃虧。
另外,Veyron V1目前還沒有量產,之前承諾的是今年第二季或第三季向客戶提供樣品。所以,以上官方公佈的數據都還是紙面上的數據。
相比之下,今年三月國內某廠商推出的64核RISC-V服務器芯片SG2042目前已經小批量出貨。
近日,國外研究人員Nick Brown 通過RAJAPerf基準測試套件對於這款芯片進行了實測,發現其與最新的廣泛可用的RISC-V芯片相比,其平均每個核心的性能提高了5到10倍。但是在多線程工作負載下,x86高性能CPU的平均性能依然達到了它的4-8倍。
據該研究報告顯示,該64核RISC-V處理器,運行頻率為2GHz,由四個高性能的C920內核組成,並採用了12級無序多問題超標量管道設計。
C920提供RV64GCV指令集,具有三個解碼、四個重命名/調度、八個發布/執行和兩個加載/存儲執行單元。支持矢量化標準擴展(RVV v0.7.1),矢量寬度為128位,支持數據類型FP16、FP32、INT8、INT16、INT32和INT64。然而,C920並不支持FP64矢量化
研究稱,雙精度浮點是絕大多數高性能工作負載的基礎,因此能夠支持矢量化這些操作的核心可能會為HPC提供更高的性能。每個C920核心還包含6 4K B的L1指令(I)和數據(D)緩存,1MB的L2緩存,在四個核心的集群之間共享,64MB的L3系統緩存,由集群中的所有核心共享。還提供四個DDR4-3200內存控制器和32條PCIe Gen4通道。
HPC工作負載的一個重要考慮因素是矢量化,由於C920核心僅支持RVV v0.7.1,編譯器支持是一個挑戰。RISC-V GNU編譯器的當前上游版本不支持任何版本的矢量擴展。雖然GNU存儲庫包含一個rvv下一個分支,其目的是支持rvv v1.0,但在研究人員撰寫研究報告時,它並沒有得到積極維護。
此外,還有一個針對rvv v0.7.1的rvv-0.7.1分支,但該分支已被刪除。由於缺乏對主線GCC的支持,阿里平頭哥(T-Head)提供了自己的GNU編譯器分支(玄鐵GCC),該編譯器已針對其處理器進行了優化。
T-Head的定制編譯器同時支持RVV v0.7.1和他們自己定制的自定義擴展。雖然已經提供了該編譯器的幾個版本,但作為其20210618版本的一部分,GCC8.4提供了最佳的自動向量化能力,因此這是研究人員進行的基準測試實驗選擇的版本。
該版本的編譯器生成矢量長度特定(VLS)RVV組件,該組件專門針對C920的128位矢量寬度。所有內核都在優化級別三進行編譯,所有報告的結果都在五次運行中取平均值。
與其他高性能RISC-V內核比較
研究人員比較了SG2042與賽昉(StarFive)開發板VisionFive V1和Vision V2的性能,V1包含賽昉JH7100 SoC,而V2包含賽昉JH7110 SoC。
JH7100和JH7110這兩個SoC都是基於64位RISC-V SiFive U74內核構建的,JH7100包含兩個內核,JH7110包含四個內核。SoC被列為以1.5GHz運行,U74內核包含32KB(D)和32KB(I)L1緩存,兩種SoC型號還包含內核之間共享的2MB L2緩存。
然而,SiFive U74僅提供RV64GC,因此不支持RISC-V矢量擴展。
△圖1展示了VisionFive V2和V1與SG2042在雙精度(FP64)和單精度(FP32)方面的單核性能比較。其中條形圖是整個類別中速度更快或更慢的平均次數,線條的範圍從最大到最小。
從圖1中可以看出,單個C920核心在雙精度和單精度方面都優於V2和V1的U74核心。
在雙倍精度下,C920核心的平均性能是V2中U74以雙倍精度運行時的4.3至6.5倍。此外,在單精度下,C920的性能是基準測試平均性能的5.6至11.8倍。這是一個令人印象深刻的性能提升,並且C920內核上沒有比U74運行得慢的內核。
一些內核在C920上的性能非常令人印象深刻,例如,來自算法組的內存集基准在FP32中的運行速度是U74的40倍,在FP64中運行速度是U74的18倍。
需要強調的是,該基準測試在這些核心上都是以盡可能好的配置,即C920上利用了矢量化,但是U74不支持矢量化,因此在V1或V2上不可用。
SG2042上的FP32和FP64之間存在顯著的性能差異,這表明事實上C920矢量運算不支持FP64。相比之下,在V2上運行雙精度和單精度之間的性能差異要小得多。
圖1中結果的一個方面讓研究人員感到驚訝的是,VisionFive V1比V2慢得多。考慮到測試只是在單核上運行RAJAPerf,所以芯片的雙核和四核性質並不重要,因為它們都包含相同的U74核心,那麼其性能應該相當相似。
但是,在雙倍精度下,V1比V2慢了六倍到三倍,單精度則慢了一倍到三倍。雖然可以假設V1可能以比V2更低的時鐘頻率運行,儘管它們在數據表中都被列為以1.5GHz運行,但機器上沒有任何文件或輸出可以證實這一點。
從圖1中可以看出,與現有的、公開可用的商品RISC-V內核相比,單個C920核心所獲得的性能令人印象深刻。T-Head將該核心描述為一種高性能RISC-V處理器。
測試也表明,其與U74相比,在整個基準測試套件中的性能有了很大的提高,U74以前被認為是廣泛可用的RISC-V CPU的最佳選擇,可以在其上進行HPC工作負載的實驗。
除了單核性能外,SG2042在核數量方面也顯著領先於V1的JH7100和V2的JH7110 SoC。
與x86服務器CPU性能比較
那麼相對於其他商用的x86服務器芯片,SG2042在HPC工作負載中的表現如何呢?
對此,研究人員將其與當前一代服務器中使用的其他CPU進行了比較,分別為64核的AMD Rome EPYC 7742、18核的Intel Broadwell Xeon E5-2695、28核的Intel IceLake Xeon 6330、4核心的Intel SandyBridge Xeon E5-2609。
測試只在這些x86 CPU的物理內核上執行,因為默認情況下禁用了所有SMT。
AMD EPYC 7742在四個NUMA區域中包含64個物理內核,每個區域有16個內核,但有八個內存控制器。每個核心包含32KB(I)和32KB(D)L1緩存,512KB的L2緩存,四個核心之間共享16MB的L3緩存。EPYC 7742提供支持AVX2,具有256位寬的矢量寄存器,是SG2042的兩倍,並支持FP64的矢量化。
Intel Xeon E5-2695的18個物理內核位於一個NUMA區域中,提供32KB(I)和32KB(D)L1緩存,256KB的L2緩存,以及45MB的跨內核共享的L3緩存。與AMD EPYC 7742類似,Xeon E5-2695支持AVX2,並且有四個內存控制器。
Intel Xeon 6330是比較的最新CPU,所有28個物理內核都在一個NUMA區域中,具有8個內存控制器,具有32KB(I)和48KB(D)L1緩存,每個內核1MB L2緩存,以及43MB共享L3緩存。Xeon 6330支持AVX512,並提供512位寬的矢量寄存器。
Intel Xeon E5-2609屬於本次測試當中最古老的CPU,其於2012年發布,僅提供四個物理核,每個核都有64KB(I)和64KB(D)L1緩存,以及256KB的L2緩存和共享的10MB L3緩存。該E5-2609僅支持AVX,因此矢量寄存器長度與SG2042相同,為128位,儘管AVX支持FP64。
在所有測試當中,研究人員禁用了x86物理內核的超線程。除了ARCHER2之外,研究人員在所有系統上都使用GCC版本8.3,編譯始終在優化級別O3下進行。全部在性能最高的線程數量上執行的系統。
△圖4展示了各芯片在FP64上運行基準測試套件的單核性能。其中條形圖是整個類別中速度更快或更慢的平均次數,線條的範圍從最大到最小。SG2042為均值基線。
從測試結果來看,除了除了古老的Xeon E5-2609內核之外,所有x86內核的性能都優於C920,後者在流和算法基準類中的平均性能較慢。
AMD EPYC 7742和Intel Xeon 6330 CPU的表現往往優於Intel Xeon E5-2695,這是可以理解的,因為Xeon E5-2695是這三款CPU中的老款。
△圖5展示了各芯片在FP32上運行基準測試套件的單核性能與基線相比的快慢次數。
從圖5可以看出,AMD EPYC 7742在單精度執行時與雙倍精度執行時相當乏善可陳,而英特爾處理器的平均性能也一樣好,事實上,當使用FP32時,古老的Xeon E5-2609內核在每種級別上的平均性能都優於C920。
然而,圖5中的平均條形圖並不能提供完整的圖片。
C920僅支持FP32的矢量化,事實上,從圖5和圖4中的線條可以看出,FP32的許多基準類的最大速度比FP64快。
此外,有更多運行速度最慢的內核在x86 CPU上的執行速度比FP32上的C920慢。這些內核是有效應用自動矢量化的地方,事實上,可以看出,對於lcals基準類,所有x86 CPU上至少有一個內核的性能低於C920。
總結來說,在單核性能比較上,FP32下的AMD EPYC 7742平均表現要比C920快3倍,Intel Xeon E5-2695要快2倍,Intel Xeon 6330也要快4倍,Xeon E5-2609則快2倍,FP64下的這些數字則分別快4倍、4倍、5倍和20%。
△FP64多線程性能比較,報告比基線快或慢的次數
圖6展示了針對雙精度FP64的性能比較。
可以看出,basic、lcals、polybench和stream類測試從更多的內核中受益最大,因此SG2042的平均性能優於古老的Xeon E5-2609。
△FP32多線程性能比較,報告比基線快或慢的次數
圖7展示了FP32的多線程性能比較,這些結果包含最大的差異。為了提高可讀性,研究人員限制了縱軸,並標記了超過該值的實際數值。
在多線程FP32方面,SG2042往往比FP64在與x86 CPU的競爭中表現得略強,儘管polybench類是一個異常,因為它在三個最新的x86 CPU上的表現要好得多,而Intel Xeon E5- 2609的表現則差得多。
總結來說,在SG2042多線程性能與x86 CPU進行比較時,在FP32和FP64上運行的所有基準類型測試中,其64核平均性能優於4核的Intel Xeon E5-2609。
64核的AMD EPYC 7742在FP32和FP64方面的性能分別是SG2042的8倍和5倍。18核的Intel Xeon E5-2695在單精度和雙精度方面分別平均達到了6倍和4倍。最後,28核的Intel Xeon 6330在FP32和FP64方面的表現分別是其6倍和8倍。
結論:
研究人員表示,儘管當前有許多公司在開發高性能RISC-V硬件原型,但到目前為止,當希望在可商用的RISC-V軟件上運行工作負載時,選擇非常有限。
不管怎樣,儘管這些解決方案能夠對RISC-V進行實驗,但它們並不能在體系結構上提供生產高性能工作負載所需的功能。因此,儘管HPC社區對RISC-V很感興趣,但它還沒有完全準備好迎接這項技術。
當然,作為世界上第一款廣泛可用的針對HPC的多核RISC-V服務器芯片,SG2042可能會大大提高HPC社區對RISC-V的興趣和採用率。然而,一個關鍵的問題是其與當前一代超級計算機中普遍存在的x86 CPU相比依然有著較大的差距。
不過,與目前可商用的RISC-V硬件相比,這是一款非常令人興奮的RISC-V服務器芯片,它提供了一些重大的變化。
雖然性能還沒有達到x86服務器CPU的水平,但應該強調的是,RISC-V供應商在短時間內取得了長足的進步。相比之下,x86 CPU有著悠久的歷史,並從他們多年的開發中受益。
目前RISC-V進入服務器CPU市場的競爭對手主要還是Arm服務器CPU,畢竟其理論上RISC-V CPU可以擁有相比Arm CPU更低的成本、更高的定制化和可擴展性。
對於下一代高性能RISC-V處理器來說,研究人員認為,提供RVV v1.0將非常有用,因為這將提供使用用於編譯矢量化代碼的主線GCC和Clang。
此外,提供FP64矢量化、更寬的矢量寄存器、增加的L1高速緩存以及每個NUMA區域更多的存儲器控制器也可能帶來顯著的性能優勢,並有助於縮小與x86高性能處理器的差距。