與普通處理器有何區別?NEC最新矢量處理器解析

日本在半導體產業尤其是處理器、SoC芯片等方向似乎沒有太多聲音。從近幾年日本半導體產業發展來看,雖然具體的產品並沒有太多,不過但凡有新品出現,都以獨特的設計和規格讓人眼前一亮。NEC在2017年發佈了一款全新的矢量處理器,並在2018年正式將其推向市場。和傳統的通用處理器、GPU加速器相比,矢量處理器還比較少見。今天,本文將和你一起解讀NEC矢量處理器背後的祕密。

NEC在高性能處理器設計上擁有豐富的經驗,其輝煌的頂點是在2002年左右推出的Earth Simulator Computer也就是地球模擬器超級計算機,這款產品佔據了全球最快超級計算機的寶座長達三年之久,並且大部分核心處理器都由NEC設計完成,其特點就是先進的矢量計算設計。不過,由於當時的普通用戶對矢量計算需求不足,因此這類產品距離主流市場較遠,NEC的矢量處理器往往只能用於大型設備,完全稱不上大眾化。

與普通處理器有何區別?NEC最新矢量處理器解析

▲NEC在高性能處理器研究上具有豐富的經驗

事物在發生著變化。隨著AI計算的興起,矢量加速器又開始逐漸成為很多用戶的選擇。鑑於此,NEC又開始重新考慮將矢量計算相關產品推向主流市場。2017年,NEC宣佈推出全新的矢量超級計算機SX-Aurora TSUBAME,其中的計算核心Vector Engine超級矢量卡(下文簡稱為“VE卡”)一經發布就引起了眾人關注。

這款採用主流PCIe接口設計、專攻矢量計算的產品使用範圍極其廣泛,NEC稱其能夠支持“標準環境”,也就是支持Linux和英特爾x86架構。考慮到NEC在之前矢量處理器設計上的保守,這不得不說是一次重大改變。

有何優勢?淺析矢量處理器的優勢

對長期關注本刊的讀者來說,矢量和標量的概念應該不陌生。所謂矢量,又可稱為向量,就是指具有方向和大小、且滿足平行四邊形法則的幾何對象。標量則只有大小,沒有方向。一般來說,矢量多用在工程學、物理學中,比如位移、加速度、力矩、電流密度等都需要用矢量來表示。值得注意的是,矢量在代數中可以用矩陣的方式表示。比如矢量a可以表示為a=[a, b, c],其中a,b,c分別是矢量在三維座標體系中的座標值。

由於矢量的數組特性使其可以一次性進行多組計算,因此從一開始矢量計算和相關矢量處理器就頗受重視。從20世紀70年代一直到20世紀90年代,矢量計算和相關矢量處理器都是超級計算機的核心。隨之興起的就是一些處理多重矢量的技術,包括MIMD多指令多數據、SIMD單指令多數據、VLIM超長指令集架構等。這些技術都是希望通過減少指令的數量,通過大量數據進行並行計算,一次性處理更多的內容。

在這裡,我們通過一個例子來顯示CPU傳統的“循環”計算和矢量處理器在計算方面的差異。

與普通處理器有何區別?NEC最新矢量處理器解析

從例子可以看出,CPU每次只能加一個數據,10個週期才能做完這件事情。但是對矢量處理器而言,利用規模優勢,一次可以執行10次運算,一個週期就能做完10個計算。這是典型的單指令多數據流處理方法。相比傳統的CPU,在面對大量並行數據時,矢量處理器效率更高。

由於矢量處理器在大規模數據計算上的優勢,因此任何現代計算架構都無法忽視其存在。實際上,現代CPU往往都已經包含了矢量計算模塊。比如英特爾和AMD很早就推出了MMX、SSE、3D Now!、AVX等指令集,通過特殊的矢量加速模塊和指令,能夠大幅度加速相關矢量計算。

不過,CPU依舊有其在邏輯計算上的優勢,矢量計算並不是它的重點,一般只有在IBM Power 9這樣專為超級計算機和大型機設計的處理器中才專門設計了超大規模的矢量計算核心。即使如此,矢量計算也會給傳統處理器帶來極大的性能提升。比如英特爾新近加入的AVX-512指令集就能夠大幅度加強AI計算等這類天然的大數據量、並行度極高的矢量計算。

除了CPU之外,GPU則可被稱為天然的矢量加速器。傳統的圖形計算的頂點轉換本身就是為矢量計算而生,再加上像素計算方面RGBA的固定模式,因此GPU的每一個計算核心都可以被看做一個矢量加速單元。諸如英偉達最新的Volta、Turning等架構,更是可以看成是專為圖形計算設計的矢量加速器。

除了CPU和GPU外,市場上還有專門的矢量加速處理器、矢量計算機等。這類產品在核心架構上設計更為簡潔,並不包含太多的附加功能,也沒有為特定用途優化,其目的就是通過純粹的矢量計算核心設計,為AI計算、特殊並行計算、超級計算機等提供加速計算的能力。

本期的主角VE超級矢量卡以及其核心SX-Aurora處理器正是這種“純粹”的產品,專為加速而生,別無旁騖。術業有專攻,專業的加速處理器自然有一定的優勢,在架構設計上也可能存在和傳統通用加速器的差異,值得研究。

與普通處理器有何區別?NEC最新矢量處理器解析

▲SX-Aurora TSUBAME超級計算機

從SX-Aurora TSUBAME超級計算機到VE超級矢量卡

要了解VE超級矢量卡,我們先來一起看看SX-Aurora TSUBAME超級計算機。這款超算是NEC對所謂“標準環境”的首次嘗試,其特點就是採用了英特爾的處理器,支持PCIe總線。根據不同的配置,在風冷環境下,SX-Aurora TSUBAME可以實現1顆或者2顆處理器,但是搭載1個、2個、4個甚至8個VE卡的不同配置方案。在水冷環境下,SX-Aurora TSUBAME最多能夠實現8個機架搭配64個VE卡的方案。

與普通處理器有何區別?NEC最新矢量處理器解析

▲不同規格的SX-Aurora TSUBAME超級計算機和硬件搭配

為了更好地區分不同的配置,NEC也根據不同的配置情況對產品的命名進行了調整。比如1顆處理器搭配1個VE卡的型號是A100-1,這是最基本的方案。進階配置中,1顆處理器搭配2個VE卡型號被稱為A300-2,2顆處理器搭配4個VE卡則是A300-4。風冷條件下最強的型號是A300-8,採用2顆處理器搭配8個VE卡的設計。最高端的則是水冷型號,NEC採用InfiniBand連接8個機架,組成了16顆處理器和64個VE卡的產品,型號則是A500。

與普通處理器有何區別?NEC最新矢量處理器解析

▲不同類型的VE超級矢量卡

SX-Aurora TSUBAME在CPU方面採用的是英特爾Skylake-SP架構的Xeon Gold或者Xeon Sliver處理器,主角部分則是本文的核心VE超級矢量卡。

對這款產品,熟悉PC DIY的用戶可能會誤認為VE卡是哪一家新廠商推出的新顯卡。誠然,從外觀來看,採用標準PCIe接口、側吹散熱的VE超級矢量卡在外觀上和一般的顯卡別無二致。令人想不到的是,其火紅的外觀下隱藏的是完全不一樣的核心。

深入VE超級矢量卡的內部世界

VE超級矢量卡在計算架構上和一般的加速卡存在很大差異。根據NEC的說明,VE卡的工作模式遵循OS卸載模式。簡而言之,除了偶爾的系統調用或者I/O功能外,VE卡在工作中需要將所有的執行程序和數據轉移到本地存儲並在處理器上運行,只有計算完成後才輸出結果。在軟件支持方面,VE卡可以使用標準的語言模型,比如C、C++或者Fortran,無需特殊的編程模型或者平臺支持。

這種設計的優勢在於大大降低了處理器和加速卡之間的傳輸瓶頸,尤其是PCIe帶寬壓力,也避免了一般加速卡出現的由於CPU和加速器數據傳輸延遲導致的性能下降等問題。但是,這種設計方法也存在一定的缺陷,那就是計算靈活度可能會受到限制,因此需要完善軟件優化以及合適的算法搭配,這樣才能更有效地利用VE卡的計算能力。

與普通處理器有何區別?NEC最新矢量處理器解析

▲VE超級矢量卡的獨特運行模式

另外,在物理規格上,這種設計也對VE卡的本地存儲能力提出了要求,VE卡依賴於更大的本地存儲(目前為48GB),畢竟本地存儲空間越大,能夠計算的數據量也就越大。

為了解決這些問題,NEC提出了一些新的優化思路,被稱為VH Call和VEO。這兩個設計的優勢在於,在VH調用模型下,應用程序被存放在矢量加速卡中,並在主處理器上執行標量相關計算。而VEO則是Vector Engine Offload的簡稱,在這種模式下,僅有矢量化部分被載入,標量化部分則交由系統處理器完成。

在程序執行方面,VE卡使用名為ve_exec的特殊程序調用用戶的適量程序,然後,ve_exec程序會自動請求在矢量計算卡上運行OS創建新的進程。接下來,ve_exec迭代可執行的ELF文件,讀取每個段落並將其傳遞給矢量計算卡。

與普通處理器有何區別?NEC最新矢量處理器解析

▲VE卡的工作模式遵循OS卸載模式

同時,系統會在x86也就是向量主機上生成偽進程,這個偽進程具有與矢量計算卡虛擬地址空間平行的虛擬地址空間。舉例來說,在某個存儲器操作時,首先分配的是虛擬地址頁面,然後向矢量計算卡的OS請求在VE卡上的物理地址空間上分配頁面,並由VE卡進行相關的虛擬地址轉換和數據保護。

此外,NEC還為SX-Aurora設計了一個名為存儲主機存儲器(SHM)的特殊指令。在異常情況下,SHM指令用於將系統調用ID以及其參數傳遞給矢量OS中的偽進程,然後執行監視器調用指令,該指令將停止VE內核並在VH上調用中斷程序。接下來操作系統就可以喚醒偽進程進行異常處理了,這相當於是加入了一個錯誤排除機制。

SX-Aurora矢量引擎處理器

如果拆開VE超級矢量卡的話,可以看到PCB板上除了電源和一部分功能芯片外,實際上只存在一顆碩大的芯片,那就是名為SX-Aurora的矢量引擎處理器。這顆處理器擁有8顆矢量核心和相對應的6顆HBM2存儲顆粒。這顆核心採用了臺積電16nm工藝製造。

與普通處理器有何區別?NEC最新矢量處理器解析

▲矢量處理單元架構簡圖

相比之下,NEC設計的前代產品也就是SX-Ace採用的是DDR3內存,通道數量高達16條—如此多的DDR3通道數量除了需要佔據相當大的電路板空間外,芯片的存儲控制器部分也是一筆不小的開支。最終這款產品所需要的電路面積過於龐大,只能使用傳統的服務器主板搭載。

而新的SX-Aurora則採用了全新的HBM2存儲顆粒,通過先進的封裝設計大幅度降低了芯片和數據傳輸對PCB面積的需求,不但提高了存儲帶寬,還使得最終成品使用PCIe規格的尺寸就能夠搭載,大大提高了產品的靈活性。

矢量核心設計

前文說過,一顆SX-Aurora矢量引擎處理器內包含了8顆矢量核心,相比前代產品的4顆而言數量翻倍。儘管核心數量看起來很低,但是每顆核心一個循環就可以執行192個雙精度浮點運算。以芯片的頻率為1.6GHz來看的話,每顆內核的計算能力高達307.2Giga Flops,總計8顆核心高達2.45 TFlos,注意,這是雙精度計算能力。

繼續拆解的話,可以看到每顆核心由三個功能模塊組成:標量處理單元SPU、矢量處理單元VPU和NoC接口。一般來說,即使是一款矢量處理器,標量單元依舊非常重要。這是因為應用程序需要完全在矢量處理器上運行,因此SPU相對應的必須有良好的序列化代碼性能,這裡需要重點提及SPU單元的設計。

NEC在SPU的設計上採用了一個四發射的亂序執行設計方案,它能夠在每個週期內拾取、解碼和重命名四條指令。NEC還表示,SPU具有硬件預取和複雜的分支預測器,整體深度為8階段,具有運行一個完整操作系統所需要的所有功能。

與普通處理器有何區別?NEC最新矢量處理器解析

▲矢量處理單元內部配置方案

後端設計上,SPU包含一套統一的調度程序,每週期可以發送五條指令,一旦解決了指令的相關性問題,就會以亂序執行的方式發送指令給五個獨立的執行單元。這五個獨立執行單元包括用於通用標量算數的整數和浮點ALU、一個專用分支ALU、一個LSU和一個矢量EU。除了典型的標量操作外,SPU還需要計算矢量訪問的基本內存地址。

在實際應用中,SPU可以保證VPU單元滿載並且不間斷地工作,還可以將每個週期的一條指令傳遞到VPU的緩衝區以等待執行,另外還能夠向地址生成單元發送矢量指令,以便可以提前計算矢量地址。這些設計都能夠大大提高效率,保證核心計算的效能。

矢量處理單元

進一步向細節深入的話,在矢量核心中最重要的部分就是矢量處理單元也就是VPU了。理想情況下,絕大部分密集型計算應該在VPU中完成。VPU的控制邏輯類似於流水線,擁有一個相當簡單的管道,並且也採用了亂序執行的設計。

與普通處理器有何區別?NEC最新矢量處理器解析

▲SX-Aurora矢量引擎處理器核心架構圖


與普通處理器有何區別?NEC最新矢量處理器解析

▲矢量核心內部結構示意


與普通處理器有何區別?NEC最新矢量處理器解析

▲SX-Aurora矢量引擎處理器內部佈局示意圖,可見6個HMB2內存和8個矢量核心。

實際操作中,在SPU發出的指令會被放置到指令緩衝區,並在那裡將其重命名、重排序和調度,等待VPU的處理。系統將64個矢量寄存器重命名為256個物理寄存器,支持增強預加載功能,並避免WAR/WAW等依賴性的存在。

調度方面,VPU的調度相對比較簡單且擁有一個專門的複雜操作管道。一般來說,調度程序往往會獨佔一個專用端口,用於複雜操作執行單元和矢量並行管道(VPP),複雜操作執行單元一般用於處理高延遲操作,比如矢量求和、除法、掩碼填充計數等操作會被髮送至該單元,這可以防止由於這些操作涉及到了高延遲而導致整個流水線的停頓。

在SX-Aurora中,一個VPU中有32個VPP,相比上代產品翻倍。另外VPP部分還配備了一個8端口的矢量寄存器、16個屏蔽寄存器和6個執行管道。其中,6個執行管道包括3個浮點管道、2個整數ALU以及一條用於數據輸出,設計複雜的存儲管道,在這裡一個ALU管道和一個存儲管道共享相同的讀取端口。

類似的還有FMA和另一個ALU共享一個讀取端口,總而言之,每個週期執行的有效管道數量實際上是4個。和前代產品相比,現在的產品每個VPP擁有一個額外的FMA單位,可以在一定程度上加強處理器的計算能力。

性能方面,VPU部分能夠實現的峰值理論性能是每週期每VPP 3個FMA操作,每個VPU包括32個VPP,因此總計是96個FMA每週期、192個DP Flops/週期。考慮到頻率為1.6GHz,因此每個VPU的峰值性能是307.2Giga Flops。對單精度計算而言,每個FMA都可以對打包數據進行操作,因此可以將2個32位數據打包為一個雙精度數據進行處理,這樣單精度的浮點峰值性能就是雙精度的一倍,為614.4Giga Flops。

內存子系統設計

從上文的數據也可以看出,整個VPU部分的吞吐能力非常強大,這樣強大的計算能力對內存子系統的設計提出了極高的要求,原因也很簡單,如果喂不飽VPU,那麼計算效率將嚴重降低。

在2013年推出的SX-Ace包含了4個VPU核心,每個VPU有16個VPP,每個VPP有2個FMA。在1GHz頻率下,每個核心將帶來64 GigaFlops或者總計256 GigaFlops的計算能力。為了滿足這顆核心的吞吐能力,四個內核連接至一個CrossBar,總帶寬為256GB/s,共計16條內存通道,搭配的內存為DDR3-2133,內存帶寬也恰好為256GB/s,所以每GigaFlops對應了1GB/s的帶寬,這是之前的數據和帶寬匹配情況。

與普通處理器有何區別?NEC最新矢量處理器解析

▲SX-Aurora的存儲子系統設計

在新的處理器上,NEC的每核心Flops從之前的64增加到了307.2,在緩存設計上也不再採用1MB的可分配數據緩衝區(ADB),轉而採用16MB共享末級緩存。核心和高速緩存通過網格連接,採用16層2D網狀網絡,其目的是通過最小化物理傳輸距離來實現最大化的帶寬。

SX-Aurora每顆核心的交叉總線每週期可以發出16個請求指令,在1.6GHz頻率下,每週期的帶寬就是410GB/s。內存子系統方面,最後一級緩存的帶寬為3TB/s。再向下一層的LLC方面,高速緩存被分為8個2MB的塊,每個塊由16個存儲器構成,每一組LLC和IMC的帶寬為200GB/s,共計8組LLC和2組IMC之間的總帶寬為1600GB/s。IMC連接了6組HBM2內存,總計擁有1.22TB/s的帶寬。通過計算可知,整個處理器的計算能力是2.45 TFlos,對外連接帶寬是1.22TB/s。

與普通處理器有何區別?NEC最新矢量處理器解析

▲SX-Aurora內部交叉總線設計

工藝和封裝

從架構設計來看,封裝是SX-Aurora實現高性能的關鍵,尤其是HBM2內存的使用。SX-Aurora擁有6顆HBM2內存,採用的是4層或者8層堆棧方案。這顆芯片在封裝上採用了臺積電的CoWoS技術,也就是第二代基板上芯片封裝技術。這也使得SX-Aurora成為全球第一款使用6通道HBM2內存的芯片。

為了更好地散除熱量,SX-Aurora沒有使用處理器常見的金屬頂蓋,硅片裸露在外,周圍使用了等高的金屬層來改善封裝的機械可靠性。NEC指出在散熱方面,SX-Aurora需要和散熱器有效接觸,否則會由於高溫導致性能降低。

與普通處理器有何區別?NEC最新矢量處理器解析


與普通處理器有何區別?NEC最新矢量處理器解析

▲SX-Aurora芯片的外觀和分區示意圖

SX-Aurora的芯片面積為493.68平方毫米,不算特別巨大,大概尺寸接近英偉達GP104或者TU106的規格。NEC也展示了SX-Aurora的PCB設計,也就是前文提到的VE超級矢量卡,和常見的顯卡非常類似。

與普通處理器有何區別?NEC最新矢量處理器解析

▲VE超級矢量卡的PCB,可見供電部分和PCIe插槽。

PCIe插槽上方就是SX-Aurora矢量引擎處理器,肉眼可見6顆HBM2顯存。右側是多相數字供電電路,上下橋合併封裝。接口採用了單8Pin方案,最大供電能力150W。NEC沒有公佈VE超級矢量卡的功耗情況,從供電接口設計來看,其最大功耗應該不超過225W。

性能不錯 價格低廉

最後再來對比一下業內類似定位的芯片性能。這裡的數據是VE超級矢量卡、英特爾Xeon Platinum 8180 28核心處理器和英偉達Tesla V100。從下面的性能對比表我們可以看出VE超級矢量卡和傳統的處理器、GPU之間的差異。由於架構設計的側重點完全不同,因此在單核心的統計方法、內存類型和容量、內存帶寬方面顯示出了巨大差異。

與普通處理器有何區別?NEC最新矢量處理器解析


與普通處理器有何區別?NEC最新矢量處理器解析


與普通處理器有何區別?NEC最新矢量處理器解析

▲NEC給出的VE超級矢量卡與英特爾Xeon、英偉達Tesla V100性能對比圖

尤其是在和Tesla V100的對比中,VE超級矢量卡的內存容量三倍於對方,內存帶寬也超出不少,不過在核心規模上還有所欠缺,因此理論性能上存在差異。考慮到VE超級矢量卡的OS卸載模式和Tesla V100的傳統模式存在很大差異,因此在優化得當的情況下效率表現還是可圈可點。

除了理論性能外,NEC還給出了一些性能相對值對比。從這些測試可以看出,VE超級矢量卡的優勢在於相對英特爾Xeon處理器有更高的性能、更好的性能功耗比。在絕對性能上暫時不能和英偉達Tesla V100相比,但是NEC也特別指出,VE超級矢量卡的價格相對低廉,整體性價比將更為出色。

總的來說,NEC通過此次推出的SX-Aurora處理器和相關產品,顯示了其在高性能處理器設計領域的雄厚積累。通過面向AI等目前熱門的應用和環境,再加上良好的擴展性和獨特的技術模式,SX-Aurora處理器和相關產品有可能在未來的市場競爭中分得一杯羹。另外,NEC的這款產品也有可能進入超算產品中。

從歷史角度來看,日本曾有一段輝煌超算時代,比如NEC的地球模擬器就以強勁的實力霸榜三年之久。但近幾年來隨著中美兩國漸漸發力,日本在超算行業中的聲音逐漸走低。現在,NEC又帶來了如此強勁的計算設備,很有可能會進一步研發改進、加以擴展後推出新一代超算的可能,值得人們關注。

相關推薦

推薦中...