張平
作為全球著名的半導體企業(yè),威盛在各類處理器、音視頻編解碼芯片、嵌入式設備等行業(yè)中有著深厚的技術積累。之前,威盛曾經在x86處理器研發(fā)上有獨到之處,先后推出過多代自主架構的x86處理器產品。不過由于性能較差、市場接受度不高等原因,威盛數年前在x86處理器市場上就幾乎銷聲匿跡。但是近期威盛又推出了一款全新的x86處理器,其獨特之處在于大幅度加強7AI計算性能,那么,這款處理器有什么特色設計與用途呢?今天本文就將為你揭開這個秘密。
威盛在x86處理器的故事其實很早就開始了,這還要從_家名為Cyrix的公司說起。Cyrix公司是一家成立于1988年的無晶圓半導體設計企業(yè),以生產兼容英特爾286、386、486等指令集的高性能處理器為主,曾一度在性能或者規(guī)格上超越英特爾的產品。不過,在經歷了專利、財務、并購、產品和設計方面的重重阻礙后,Cyrix最終落敗,被威盛收購(實際上收購時Cyrix的設計團隊已經幾乎全部離職了)。經此一役,威盛也得到了Cyrix所有的知識產權,再加上其另外從IDT收購的處理器設計部門組建的Centaur Technology公司,威盛也能夠獨立進行x86處理器的設計了。
威盛的首款x86處理器是2001年發(fā)布的C3,—度采用VIA CyrixⅢ的命名,但實際上技術來自于CentaurTechnology公司的WinChip,和Cyrix關系不大。C3處理器前后經歷了4代核心,工藝制程從0.18微米進步至0.13微米,早期由于FPU單元時鐘頻率僅為處理器核心頻率的一半,因此其浮點效能比較差,后期有所改善。C3處理器整體性能比AMD和英特爾同期產品要弱,同時功耗也更低,因此在移動產品和嵌入式設備、工業(yè)設備中比較受歡迎。
在C3處理器之后,威盛在2005年發(fā)布了C7處理器。C7處理器采用CooIStream架構,使用90nm工藝制造,桌面版本在2.OGHz頻率下的最大功耗僅為20W。由于功耗低,因此威盛繼續(xù)瞄準嵌入式設備、HTPC市場以及移動設備等。隨后威盛還推出了面向移動產品的C7-M,超低功耗版本C7-M的最大功耗僅為8W,進一步奠定了威盛在低功耗市場的地位。
接下來的2008年,威盛發(fā)布了旗下第三款處理器架構和對應的產品,VIA NANO,中文名稱為凌瓏。這款處理器的架構名為“以賽亞”,最大特點在于采用了亂序執(zhí)行架構,制程方面則使用65nm工藝和40nm工藝制造,早期為單核心產品,后期推出了雙核心版本,處理器主頻最高可達2.OGHz。功耗方面,桌面產品功耗不高于25W,移動產品的功耗在5W-8W之間,后期雙核心版本最低達到3.5W,最高9W-25W,依舊非常之低。
和之前的處理器一樣,威盛凌瓏也面向的是移動設備、低功耗設備、工業(yè)設備等場合,業(yè)內普遍認為威盛凌瓏處理器是英特爾Atom處理器最大的競爭對手之一。后期威盛還基于這款處理器架構推出了四核心版本,被稱為VIA QuadCore,這也是威盛首個四核心處理器產品。總體來看,VIA NANO的性能、功耗都具備與當時對手的同級產品Atom競爭的能力,顯示出在專業(yè)市場威盛依然有希望分得一杯羹,為此威盛開始開發(fā)他們的第四款處理器。
威盛第四款處理器問世——Centaur
威盛在2019年年底的時候公開了一種名為”Centaur”的全新處理器系列。這也是威盛旗下的處理器部門在建立后推出的第四個全新的處理器架構,距離上一代處理器發(fā)布的時間已經過超過8年之久。Centaur的意思是半人馬,這是一種在希臘神話中出現的怪物,人頭馬身,戰(zhàn)斗力和移動能力都非常驚人。考慮到這款處理器特色的性能和定位,命名其為Centaur半人馬也是相當符合其預期的形象。
Centaur處理器的研發(fā)代號為”CHA”,特點在于將八個高性能的CPU核心和深度定制的深度學習加速器DLA相結合,因此能夠在AI計算上表現出非常出色的效能。這也是全球首個宣布在CPU中集成DLA相關模塊的產品或者公司。新加入的名為Ncore的加速器甚至擁有比英特爾Xeon至強處理器還出色很多的神經網絡計算能力,但同時它大大降低了用戶使用外部GPU來加速類似計算所耗費的成本。威盛從2019年9月開始測試這款處理器的硅片,首款產品可能會在2020年生產或者上市——當然實際情況是迄今為止威盛都沒有展示任何的產品計劃,因此還有待進一步的觀察。
在威盛的設計中,作為協處理器運行的Ncore并沒有使用目前深度學習最常見的MAC(乘積累加運算,Multiply Accumulate,MAC)陣列,而是采用了更為傳統的可編程SIMD引擎,不過令人驚訝的是,Ncore的SIMD的效率驚人,計算倍數極高。在這里,威盛設計了一個單元,可以一次性并行處理4096字節(jié),在計算INT8也就是8位整數的時候峰值性能能夠達到每秒20萬億次。此外,為了滿足寬幅計算的需求,威盛還為這個加速器配備了專用的16MB SRAM單元。Ncore的架構師Glenn Henry將這種方法比喻為AVX-32768,這意味著威盛的SIMD架構寬度是英特爾的64倍。
除了專用的加速單元外,Centaur處理器還擁有一種全新的x86微體系架構,被稱為CNS,其目標是每時鐘周期的性能(IPC)比威盛之前的產品有大幅度提升。這種新的體系結構可以每個周期解碼4條x86指令,并行執(zhí)行10個包括3次加載,存儲的微指令等。在頻率方面,這款處理器使用了臺積電成熟的16nm工藝,主頻為2.5GHz。宏觀架構方面,一個Centaur處理器內部包含了8個x86核心,所有的核心共享16MB L3緩存。外部數據連接方面,這款處理器擁有4個DDR4通道,提供44條PCle 3.0通道。處理器還可以支持雙路系統,目標瞄準低成本服務器和邊緣計算等任務。
另外還有一些消息值得分享。威盛的處理器設計單位并不在威盛位于我國臺灣的總部,而是威盛位于美國德克薩斯州奧斯汀的全資子公司Centaur Technology(注意公司名稱),這家公司為威盛設計處理器已經有20多年了,不過一直以來都不被外界人員過多關注和了解。公司近期以來比較大的變化是增加了名為AlLoper的新總裁,之前的總裁Henry則繼續(xù)擔任公司的AI架構設計師。這可能也是Centaur處理器誕生的原因之一吧。
新設計:N co re加速核心
作為片上加速器,Ncore在片上集成的很大優(yōu)勢就在于這種設計能夠降低成本、功耗、芯片面積,并且在數據交換方面相比外置設計無論是速率還是能效比都更為出色,同時還帶來了更為寬松的計算任務劃分靈活性。
在架構設計方面,之所以沒有選擇目前流行的MAC架構,是因為設計單位CentaurLB心MAC架構可能會在快速進化的神經網絡算法應用中過時,因此最后還是選擇了經典的SIMD架構。SIMD架構的缺陷在于相比MAC架構其計算開銷更多,因為它必須在每個周期將數據移入和移出寄存器,但是SIMD靈活性更高,能夠處理更廣泛的算法,包括那些經常執(zhí)行非MAC操作的算法,因此在這里選擇SIMD是更為合適的。
目前的DLA計算往往都實現了VLIW的架構和算法,也就是說,一條128位的指令可以控制整個管道的運作方式。在Centaur處理器中,x86核心可以將這些VILW指令加載到Ncore的指令RAM中,該RAM可以容納768條指令(12KB)。另外還有一個4KB的特殊指令緩存,包含了一些自檢代碼和常見的子程序,這樣可以減少指令RAM中的死區(qū),能夠有更多更寬裕的空間用于真正的計算指令存放。Ncore每個周期存取一條指令,然后對其解碼,并使用定序器控制計算管道和內存。定序器包含16個地址寄存器和一個地址計算單元,后者可以通過可選的、自動遞增的方式來計算各種地址的硬件(比如基準值+偏移量)。另外,Ncore內還擁有循環(huán)計數器和其他的特殊寄存器等。定序器還能控制環(huán)形接口的2個DMA引擎,從而允許指令直接向x86處理器的存儲器傳遞數據。
在Ncore的內部存儲器方面,目前的設計將這個存儲器分為了兩部分,分別是D-RAM和W-RAM。每個RAM部分可以在每周期提供4096字節(jié)的向量,在2.5GHz時產生20T B/s的總帶寬。不過由于總線設計原因,Ncore內部的RAM每周期只能選擇一個寫入,這樣可以與計算管道的輸出速率匹配。另外,整個處理器內部的環(huán)形總線會中斷Ncore內部存儲器的序列,這可能是由于優(yōu)先級更高的原因。不過這樣的中斷很少發(fā)生,因為4096字節(jié)的數據寫入需要花費64個時鐘周期才能加載完成。對一些高可靠性應用,2個RAM都在整個4096字節(jié)的輸出值中采用了64位ECC校驗,確保數據的穩(wěn)定可靠。
在計算過程中,來自RAM的數據首先進入數據單元,在執(zhí)行了各種移位和置換功能之后等待進一步處理。具體而言,這一步操作可以在2.5GHz時鐘周期內執(zhí)行多達3項功能,比如將整個4096字節(jié)向量旋轉最多64個字節(jié)、廣播單個INT8值(比如權重數據)以填充向量,壓縮塊、交換字節(jié)等。
對于單個寄存器來說,如此寬的向量需要占用可觀的芯片面積,并且整個數據單元還包含了4個類似的寄存器,這個設計可能充分考慮了寄存器給每平方毫米性能帶來的影響。最終我們看到處理器可以在每個時鐘周期讀取或者寫入這些寄存器的任意一個,例如它可以使用其他寄存器之一作為字節(jié)掩碼,將RAM數值和寄存器數值合并。此外,在能源方面,1到2個閑置的RAM可以在一定周期內關閉電源,但這種操作并不影響整個計算單元繼續(xù)以峰值吞吐量進行計算。
Al計算:強大的SIMD引擎
Ncore的計算能力來自于其內部強大的SIMD引擎。這個SIMD引擎能夠處理每個周期從數據單元寄存器中提取的2個向量操作數,并針對INT8數據進行優(yōu)化,使其在每個周期都可以納入計算。此外,這個計算單元還可以INT16和Bfloat 16數值進行操作,不過這些數據需要3個周期才能完成計算,這樣一來吞吐量就有所降低,一些用戶更喜歡1 6位數據以提高精度。另一個小技巧是,由于一些計算通常對INT8數值進行量化,因此在進一步計算之前,處理單元會將其轉換為帶符號的INT9數值(通過減去可變偏移量)進行操作。另外計算單元可以執(zhí)行MAC操作,使用4096x32位的累加器,支持INT32或者FP32,并在溢出時達到飽和。除此之外,計算單元還可以執(zhí)行ALU操作,包括min/max等。計算單元內還加入了8個預測寄存器,允許指令有條件地更新累加器。
計算完成后,輸出單元將執(zhí)行后續(xù)部分的處理。它通常將32位累加器的數值轉換為INT8、INT16或者BF16格式,以便在內存中實現更高效的存儲。如果需要,完整的32位值可以作為4個4096字節(jié)的向量輸出。輸出單元還擁有歸一化的功能,比如對線性整流函數(Rectified Linear Unit,簡稱ReLU)、Sigmoid函數以及雙曲正切函數tanh,都可以將結果直接轉發(fā)到數據單元以進行下一輪處理,也可以將結果存儲在2個RAM之中。
整個Ncore的設計在臺積電的16nmFFC工藝中大約需要34.4平方毫米,這個面積大概是8核心CPU集群的一半。DLA部分的裸片面積大約有三分之二都被16MB的SRAM占據。Ncore的模型圖中顯示了將計算單元分為16個區(qū)塊以簡化設計過程,其中的綠色區(qū)域表示數據單元中密集的金屬布線。這個部分是作為數據路由使用,主要用于重新排列數據,中央部分還包含了指令單元和環(huán)形總線接口等部件。
在軟件方面,Centaur公司的設計人員構建了一個基本的軟件堆棧,可將TensorFlow Lite模型轉換為內部圖形格式,然后將其編譯為Ncore所需的格式進行計算。不僅如此,這個基本軟件堆棧還為x86內核提供運行的編譯或者轉換,還可以管理DLA部分,并可以利用程序代碼運行預編譯的神經網絡。這個軟件可以很好地處理推理功能,但是不處理訓練。在未來的計劃中,Centaur公司希望為這款處理器增加對其他標準框架(如TensorFlow和Pytorch)以及標準ONNX格式和新興MLIR格式的支持。
CPU架構設計:更多的微指令和更好的IPC
從架構設計來看,本次威盛在CNS CPU的架構設計上相比之前威盛的所有處理器都大大向前推進了一大步,比如之前的“以賽亞”架構等。但是,還是有不少技術顯示了技術的繼承關系。比如威盛之前的“以賽亞”架構每個周期可以解碼3條x86指令,并且在起亂序執(zhí)行流水線中每周期可以完成7個微指令。在CNS架構上,新的架構將解碼能力擴展到了4解碼和10個執(zhí)行單元,再加上工藝進步帶來的晶體管數量富余,因此新架構還實現了更大的重排序窗口設計、更準確的分支預測單元和更復雜的程序調度能力。特殊功能方面,Centaur公司還加入了一些新的專有指令,用于將數據傳輸到DLA并進行處理。當然,考慮到這款處理器對AI計算的支持,這樣的操作也是理所應當的。
此外,CNS架構還支持256位的AVX和AVX2操作,甚至也能夠支持比較初級的AVX-512擴展。尤其是AVX-512擴展,雖然目前的消息顯示其比較早期,但是考慮到AMD暫時沒有引入這項指令集擴展,同時在實際應用中AVX-512能夠表現出非常出色的性能優(yōu)勢,CNS架構在這一點上還是值得期待的。還有一個值得關注的特性就是,CNS不支持SMT等技術,每個內核只有一個線程,因此目前的8個物理內核只能提供8個線程。
進一步來看CNS架構的內部設計。當一個計算流水線正常啟動時,分支預測器會確定下一條指令的地址,然后CPU從指令緩存中獲取32個字節(jié)的指令并交由預解碼器確定指令邊界,接下來會將四個x86指令加載到指令隊列中。解碼器通常每個周期處理4個指令,但是某些x86指令對可以一起解碼,最多可以在一個周期內產生5個指令。接下來,解碼器可以將這些指令轉換為微指令( micro-ops)。
接下來,寄存器重命名單元會將請求的寄存器空間映射到更大的物理寄存器內,并形成新的文件。新的文件包含了192個整數條目和192個FP/AVX條目。寄存器重命名單元每個周期可以處理6個微指令,并將它們分配給統一調度程序。當這些輸入數值準備完成,就會由64-entry的排序調度單元發(fā)出微指令。當微指令發(fā)生停頓時,也不會阻塞整個管道流水線,調度程序在等待這個阻塞解決的同時也會繼續(xù)發(fā)出后續(xù)的微指令,確保整個流程順利完成。
調度程序會同時向10個執(zhí)行單元發(fā)出微指令。整個CNS內部有4個整數單元,其中2個具有乘法器,另外2個具有位處理單元(BMU),所有的整數單元每周期最多可以處理2個分支指令。CPU還有2個FP/AVX單元,其中包含浮點乘法累加(MAC)單元。另外,第3個FP/AVX單元能夠處理FP分屏和AES加速操作,這3個單元都能夠處理AVX整數指令。由于這些單元的寬度全部都是256位,因此AVX-512指令可以被指令解碼單元分解為2個微指令。MAC單元每個周期能夠產生一個結果,加法或者乘法操作具有3個周期的延遲,相比之下,完整的MAC計算需要耗費5個周期。
數據處理方面,CNS架構具有2個數據加載單元和1個數據地址存儲單元。數據加載單元也可以執(zhí)行存儲地址的操作,因為這個功能和生成加載地址的功能是基本相同的。整數單元和FP/AVX單元可以立刻執(zhí)行這些操作。另外,擁有116-entry的存儲器順序緩沖器即MOB則不斷地進行負載和存儲操作,直到這些單元可以訪問32KB的數據高速緩存為止。此數據高速緩存每個周期可以處理2個256位的加載或者存儲(以任何方式組合都可以),也可以將信息存儲至整數或者FP/AVX寄存器內。和計算指令一樣,AVX512的加載和存儲需要分為2個微指令完成,高速緩存的每個周期總共只提供512位數據,AVX可能一次就將其占滿。另外,2個L1緩存由一個專用的256KB L2緩存提供數據支持。緩沖區(qū)方面,192-entry的重排序緩沖區(qū)(ROB)會按照順序對指令進行重排序并完成工作。
總的來看,CNS的管道需要20個步驟才能完成基本的整數計算,22個步驟才能完成數據緩存,緩存訪問也高達5個階段。采用如此多的計算階段可以提高整個處理器的時鐘頻率,就像英特爾在Netbrust架構中做的那樣(比如Pentium 4當時的高頻率)。即使這樣,這款處理器在16n m下的頻率也僅為2.5GHz,遠低于英特爾和AMD同期工藝的頻率,比如目前英特爾14nm工藝可以將處理器頻率推高至5GHz。不過,相比英特爾和AMD這樣的競爭對手,Centaur公司在優(yōu)化物理設計上花費的時間較少,從而在很大程度上限制了處理器頻率的進一步提升。
緩存方面,每個CPU內核都有2MB的L3緩存,并可以直接對其訪問。8個CPU和它們的L3緩存通過環(huán)狀總線相連接。整個環(huán)狀總線設計了2個512位寬的總線,數據傳遞總在節(jié)點和節(jié)點之間完成。環(huán)狀總線的運行頻率和CPU相同,理論帶寬為320GB/s。由于數據通過一次環(huán)狀總線可能需要多個周期,因此實際可用吞吐量應該不到此數據的一半。
同時CNS支持四通道DDR4 3200內存配置,并支持ECC內存,可以提供最高102GB/s的峰值帶寬。另外處理器內部還整合了44條PCle 3.0通道,也可以根據需求配置為不同的端口,這些前文也提到過了。處理器內部本身集成了標準南橋功能,因此實現了完全的集成化解決方案。
特色鮮明:Centaur處理器的性能和市場
目前Centaur公司將這款處理器的性能等級稱為“Haswell”級,這還是相當公允的。從其架構設計來看,這款處理器的設計在大多數微架構參數上都達到或者超過了英特爾Haswell的級別。這款架構提供了更多的重命名寄存器和更大的互聯帶寬,不過缺少2個重要功能:SMT超線程技術和微指令緩存。前者在很多服務器的工作負載上能夠帶來20%-30%的性能提升,而后者可以通過大多數周期的禁用x86的解碼器來降低功耗。
當然,Haswell是2013年發(fā)布的處理器架構了,英特爾當前的處理器架構核心基于Skylake(依舊非常古老),Skylake在某些方面比CNS架構更為強大,比如前面說到的超線程功能和微指令緩存。對于任何指令組合,Skylake可以每個周期解碼5個指令而CNS只有在某些情況下才能達到4個,這就帶來了巨大的性能差距。
不僅如此,兩類處理器之間最大的區(qū)別在于,Skylake和之后的改進型架構在使用14nm+++的工藝下,能夠運行在5GHz這樣的高頻率之下(超頻后甚至能達到5.2~5.3GHz),這相比CNS的峰值速度直接翻倍。不過,考慮到大多數服務器都會運行在略低的頻率以節(jié)省功耗,英特爾在速度方面的優(yōu)勢也得到了一定的限制。當然,接下來英特爾lOnm、基于SunnyCove新架構的服務器處理器也即將在2020年末發(fā)布,同時期CNS架構也會正式投入生產。據悉,相比Skylake,SunnyCove的IPC司提升18%,英特爾進一步拉開了差距。
不過,雖然無法企及英特爾高端處理器的性能,但是CNS也有其獨特優(yōu)勢,有在低端市場上和英特爾產品進行競爭的機會。比如英特爾入門級的Xeon Sliver 4208,這款處理器有8個Skylake內核、支持6通道DDR4-2400內存和48個PCle 3.0通道。Centaur處理器擁有類似的DRAM和PCle規(guī)格,在TDP為85W的情況下,Xeon Sliver4208的運行頻率只有2.1GHz,這要低于Centaur處理器,不過在輕負載下,Xeon Sliver 4208的頻率將能通過睿頻提升到3.2GHz。Centaur處理器的TDP數據現在尚未公布,不過據估計這款處理器即使在最高頻率下運行,其TDP也比Xeon Sliver 4208更小一些,并且后者的標價高達417美元,Centaur處理器如何定價尚不得而知。
Centaur處理器最大的優(yōu)勢在于提供了對DLA的支持,根據Centaur的估計,這款處理器Ncore的MLPerf性能大約和5000美元的Xeon Platinum相當。這款處理器支持專門為深度學習量身打造的AVX512_VNNI指令集,在諸如MobileNet和ResNet-50等AI相關的測試中,支持這個指令集的處理器要比相似規(guī)格但不支持AVX512_VNNI指令集的Xeon Sliver處理器快了大約5倍。盡快英特爾可以將Xeon Sliver處理器和其新推出的NNP-I神經網絡處理器結合起來以實現更高的性能,但同時將會帶來高得多的價格。英特爾目前還沒有正式給出NNP-I的價格,但是可能會在500-1000美元的水平。此外,GPU加速卡的價格也非常的昂貴,比如英偉達T4這種產品售價也高達2000美元,都遠高于Centaur處理器。
DLA引領者:瞄準專業(yè)的市場
Centaur公司的目標是提供同類產品中性價比最高的神經網絡性能。威盛將最終決定Centaur處理器的價格,如果這款處理器的定價和XeonSlive r相當的話,那么實際上客戶將免費獲得DLA性能。即使NNP-I或者T4的外部DLA加速器能夠帶來更出色的性能,但是昂貴的價格還是會嚇走一部分預算吃緊的客戶,實際上這類產品的價格遠高于處理器本身。因此,和沒有外部加速器的系統相比,Ncore將帶來數字為0的額外支出和至少5倍的DLA性能。不僅如此,Centaur公司還在進一步優(yōu)化這款處理器的DLA性能,比如它在測試芯片收到后一個月就發(fā)布了新的MLPerf測試結果,顯示了進一步的性能提升。因此在最終上市時,Centaur處理器的DLA性能還可能進一步提高。
從架構上來說,SIMD的設計即使是采用了Ncore這樣的超寬寬度,也不太可能和市場上的Spring Hill這類經過充分優(yōu)化、采用MAC陣列的處理器具有相匹配的每瓦特性能。但是集成的DLA單元可以大大降低成本,這將有助于Centaur處理器實現它的目的。另外,SIMD的架構設計也比MAC架構更為靈活,即使使用早期的軟件,Centaur公司依舊在SSD(此處指的是single-shot detection即單次檢測,不是固態(tài)硬盤)以及GNMT(Google NeuralMachine Translation谷歌神經網絡機器翻譯系統)這樣的測試模型中獲得了可觀的分數。在這種應用中,英特爾甚至都沒有發(fā)布NNP-I處理器的性能分數。因此,Ncore在多樣化的神經網絡應用中將擁有和CPU、GPU-樣靈活而寬泛的應用范圍。
Centaur處理器的弱點依舊是其CPU部分。在那些對CPU性能有要求的負載的性能結果上,Centaur處理器可能會低于Xeon Sliver處理器,主要是缺少多線程功能。對于單線程,其性能可能會接近Skylake處理器的IPC,但是在某些測試中會有差異。Centaur處理器在內核數量、內存通道、PCle帶寬方面和低端的Xeon處理器相似,集成南橋也是一個加分項目。Centaur處理器的這種新設計非常適合邊緣服務器,這意味著用于網絡邊緣(比如5G基站)或者客戶駐地(比如工廠和商店)。這些系統必須體積小且成本低,因此高集成度的處理器優(yōu)勢很明顯。
從市場情況來看,盡管英特爾已經做出了巨大的努力,但是單憑x86處理器并不是解決所有問題的最佳方案。目前,許多處理器都包含了圖形處理器GPU、視頻加速器VPU、數字信號處理器DSP或者其他專用體系結構,它們可以提高性能或者減少常見工作負載。隨著神經網絡計算變得越來越普遍,添加DLA這類專用處理器也提供了類似的優(yōu)勢。這樣的協處理器目前已經在ARM架構的移動處理器中變得非常常見,但是英特爾和AMD還尚未在其PC和服務器處理器中加入DLA。通過發(fā)布首款集成AI加速器的x86處理器,Centaur公司和威盛現在站在了市場引領者的位置上。