胡向東 柯希明 尹 飛 張 新 馬永飛 顏世云 馬 超
(上海高性能集成電路設(shè)計中心 上海 201204)
(huxdisme@vip.sina.com)
為了滿足國產(chǎn)超級計算機研制對國產(chǎn)高性能CPU(central processing unit)的迫切需求,“十一五”期間,在“核高基”國家科技重大專項的支持下,申威處理器研發(fā)團隊完成了高性能多核CPU芯片申威1600的研發(fā)[1],申威1600被成功應(yīng)用于第一臺全部基于國產(chǎn)CPU芯片構(gòu)建的國產(chǎn)千萬億次超級計算機系統(tǒng)“神威·藍光”.“十二五”期間,申威研發(fā)團隊繼續(xù)在國家“核高基”重大專項的支持下,成功完成了高性能眾核處理器申威26010的研發(fā).為了在性能和穩(wěn)定可靠性等方面滿足構(gòu)建國產(chǎn)新一代超級計算機系統(tǒng)的需求,芯片研發(fā)團隊在高性能多核處理器申威1600研發(fā)成果和技術(shù)基礎(chǔ)上,突破了芯片結(jié)構(gòu)設(shè)計、低功耗設(shè)計、穩(wěn)定可靠性和成品率設(shè)計等多個方面的關(guān)鍵技術(shù),最終于2014年完成芯片研制,并大規(guī)模應(yīng)用于國產(chǎn)10萬萬億次計算機系統(tǒng)——“神威·太湖之光”,該系統(tǒng)從2016年6月開始連續(xù)4次蟬聯(lián)全球超級計算機排行榜Top500冠軍,基于該系統(tǒng)的應(yīng)用課題2次斬獲超級計算應(yīng)用最高獎——“戈登·貝爾獎”.
申威26010芯片采用片上系統(tǒng)(system on chip,SoC)技術(shù),片上集成了4個運算控制核心和256個運算核心,以及4路128位DDR3存儲訪問接口和8通路PCI-E3.0等I/O接口.該芯片采用28 nm工藝流片,晶體管數(shù)量達到50億,die面積超過500 mm2,已接近芯片代工生產(chǎn)極限.處理器核心工作頻率達到1.5 GHz,雙精度浮點峰值性能達3.168TFLOPS,峰值功耗近300W.要實現(xiàn)芯片的性能、功耗和穩(wěn)定可靠性等多個方面技術(shù)指標,芯片研發(fā)在結(jié)構(gòu)和微結(jié)構(gòu)、正確性、低功耗、穩(wěn)定可靠性和成品率等方面遇到了巨大的挑戰(zhàn),本文主要闡述應(yīng)對這些挑戰(zhàn)的設(shè)計方法.
申威26010處理器采用分布共享SoC芯片架構(gòu)[2-3],全芯片共集成了4個運算控制核心和256個運算核心,以及4路128 b的DDR3存儲器控制接口和8通路PCI-E3.0等I/O接口,總體結(jié)構(gòu)如圖1所示.申威26010片上包含4個核組、1個系統(tǒng)接口和1套片上網(wǎng)絡(luò).每個核組包含1個運算控制核心、1個8×8的運算核心陣列和1個協(xié)議處理部件及智能存儲器訪問控制接口iMC;系統(tǒng)接口連接PCIE3.0和以太網(wǎng)等I/O接口;片上網(wǎng)絡(luò)實現(xiàn)4個核組和系統(tǒng)接口之間的互連.
Fig.1 The overall structure of Shenwei 26010圖1 申威26010總體結(jié)構(gòu)圖
自主指令集是國產(chǎn)處理器沖破國外同行業(yè)的技術(shù)封鎖和知識產(chǎn)權(quán)壁壘的基礎(chǔ),申威26010處理器的2類核心采用申威自主64 b的RISC指令集,運算控制核心和運算核心的基礎(chǔ)指令集保持兼容,支持8 b,16 b,32 b和64 b整數(shù)運算、單精度和雙精度浮點運算,并根據(jù)高性能應(yīng)用需求進行了擴展:2類核心均支持256 b的SIMD擴展指令,支持整數(shù)和浮點的短向量操作,使得運算控制核心每個時鐘周期最快可以完成16個雙精度浮點運算,運算核心每個時鐘周期最快可以完成8個雙精度浮點運算.
芯片集成的運算控制核心負責(zé)芯片資源管理,提供各種系統(tǒng)服務(wù)功能,并承擔(dān)系統(tǒng)中無法并行化的應(yīng)用程序段的執(zhí)行,因此對該核心的管理功能和計算性能要求均很高.申威26010的運算控制核心由指令流水線、運算流水線、訪存流水線和2級Cache等部分組成.采用4譯碼7發(fā)射指令流水線結(jié)構(gòu),支持同時發(fā)射5條整數(shù)類指令(含訪存指令)和2條浮點類指令,支持指令預(yù)取、轉(zhuǎn)移預(yù)測、寄存器更名、亂序發(fā)射、亂序執(zhí)行和推測執(zhí)行.運算流水線包含5條整數(shù)流水線、2條支持256 b的SIMD指令的浮點流水線以及對應(yīng)的寄存器文件.訪存流水線處理訪存指令,實現(xiàn)對存儲器空間和I/O空間的訪問,控制數(shù)據(jù)Cache的訪問.每個核心集成了容量均為32 KB的一級指令Cache和一級數(shù)據(jù)Cache,以及指令和數(shù)據(jù)共享的512 KB二級Cache.運算控制核心的總體結(jié)構(gòu)如圖2所示.
芯片集成的運算核心主要承擔(dān)計算任務(wù),由指令流水線、運算流水線、訪存流水線、16 KB一級指令Cache和64 KB可重構(gòu)局部數(shù)據(jù)存儲器等部分組成.運算核心指令流水線采用2譯碼2發(fā)射結(jié)構(gòu),支持亂序發(fā)射、亂序執(zhí)行和亂序退出.運算流水線包含2條運算流水線,其中1條運算流水線支持256 b的SIMD指令,支持整數(shù)和浮點的短向量加速計算,另一條為整數(shù)運算流水線,支持32 b和64 b整數(shù)算術(shù)運算、邏輯運算、移位運算以及訪存地址的計算等,2條運算流水線共享1個寄存器文件.訪存流水線處理訪存指令,實現(xiàn)對存儲器空間的訪問,并控制可重構(gòu)局部數(shù)據(jù)存儲器的訪問.根據(jù)應(yīng)用需要,可將核心局部數(shù)據(jù)存儲器重構(gòu)成軟硬件協(xié)同Cache結(jié)構(gòu).
Fig.2 The structure of the computation-controlling core圖2 運算控制核心結(jié)構(gòu)圖
芯片的2類核心通過支持256 b的單指令流多數(shù)據(jù)流SIMD指令,支持整數(shù)和浮點的短向量操作,實現(xiàn)單條指令同時對多個不同數(shù)據(jù)完成相同操作,實現(xiàn)核心內(nèi)的數(shù)據(jù)級并行;2類核心實現(xiàn)的超標量結(jié)構(gòu)支持核心內(nèi)的指令級并行處理;核組內(nèi)的不同核心之間和核組之間支持線程級或進程級等更高層次的并行處理.基于芯片支持的多粒度多層次并行處理功能,使得在1.5 GHz工作頻率下單個運算控制核心的雙精度浮點峰值性能達到24GFLOPS,單個運算核心的雙精度浮點峰值性能達到12GFLOPS,芯片集成的260個核心提供的雙精度浮點峰值性能可達3.168TFLOPS.
芯片集成的運算核心采用了局部數(shù)據(jù)存儲器技術(shù),每個運算核心的局部數(shù)據(jù)存儲器可由軟件完成數(shù)據(jù)的緩存管理,不同管理方式可同時存在并支持局部數(shù)據(jù)存儲器容量的動態(tài)劃分,充分結(jié)合硬件的高效性和軟件的靈活性,降低芯片實現(xiàn)開銷并滿足應(yīng)用對存儲的需要.
運算核心的指令存儲器采用Cache結(jié)構(gòu),硬件支持對一級指令Cache的指令脫靶進行合并,提高了存儲總線帶寬的利用率.運算核心陣列集成了更大容量的共享二級指令Cache,進一步提高了具有局部性的指令訪問命中率,降低指令脫靶訪問延遲,并且減少指令脫靶對主存儲器的頻繁訪問.
為支持片上存儲的高效使用和數(shù)據(jù)在運算核心中的靈活分配,運算核心在能夠直接訪問主存空間的同時,采用了多模式數(shù)據(jù)流傳輸技術(shù),支持數(shù)據(jù)在核心局部數(shù)據(jù)存儲器和主存間的批量帶跨步的異步數(shù)據(jù)傳輸,實現(xiàn)計算與訪存的并行.每個存儲訪問接口還實現(xiàn)了智能訪存優(yōu)化算法,優(yōu)化算法可以依據(jù)不同課題的訪存特征對訪存請求進行訪問優(yōu)化,以有效提高存儲帶寬的使用效率.
申威26010核組的運算核心陣列還實現(xiàn)了基于預(yù)約調(diào)度的傳輸總線技術(shù),多個運算核心的訪存行為由集中控制器進行統(tǒng)一管理,多核心復(fù)用的總線資源按照效率優(yōu)先兼顧公平的算法進行節(jié)拍級調(diào)度和分配,充分保證運算核心的服務(wù)質(zhì)量,提升了訪存效率.
總之,申威26010處理器的片上存儲結(jié)構(gòu)有效利用了片上資源,緩解了訪存墻問題.
高性能處理器的正確性驗證至今仍是一個業(yè)界難題,而申威26010處理器設(shè)計規(guī)模龐大、結(jié)構(gòu)復(fù)雜,內(nèi)部包含4個運算控制核心、256個運算核心、4路高帶寬DDR3存儲控制接口等眾多功能模塊,組成了一個邏輯極其復(fù)雜的片上系統(tǒng).申威26010還包含核心、核組和芯片等多個設(shè)計層次,較多的設(shè)計層次使得片內(nèi)運行控制更加復(fù)雜,邏輯信號傳遞路徑越深,傳遞過程中的各種組合情況越復(fù)雜,設(shè)計錯誤隱藏也越深,驗證難度越大.這個復(fù)雜的片上系統(tǒng)對正確性驗證提出了嚴峻的挑戰(zhàn),如果僅僅采用傳統(tǒng)處理器驗證方法,難以在有限的研發(fā)周期內(nèi)完成芯片的驗證工作,為此,芯片驗證團隊在借鑒以往驗證經(jīng)驗的基礎(chǔ)上,主要采用了3種技術(shù)方法:
1)綜合采用多種驗證手段.申威26010芯片綜合采用了模擬驗證[4-5]、硬件仿真加速器驗證[6-7]、FPGA實物驗證[8]和形式驗證[9]等多種驗證方法.模擬驗證作為一種傳統(tǒng)的驗證方法,可觀性好,錯誤定位快,但其驗證速度隨著驗證對象規(guī)模的增大而降低,由于申威26010在設(shè)計的模塊級和部件級規(guī)模相對較小,主要采用該方法來進行驗證,取得了較好驗證效果;硬件仿真加速器驗證的驗證速度可以比模擬驗證快很多,而且可觀性好,驗證過程中的信號狀態(tài)可以全程跟蹤,錯誤定位便捷,用于驗證的中后期,芯片有了基本正確性以后,在核心以上層次支撐操作系統(tǒng)及應(yīng)用程序等較大規(guī)模測試程序的驗證,申威26010的硬件仿真加速器驗證環(huán)境上幾乎發(fā)現(xiàn)了全部軟硬件接口相關(guān)的設(shè)計錯誤,取得了很好的驗證效果;FPGA實物驗證的驗證速度比硬件仿真加速驗證更快,主要用于在核心以上層次支撐大量應(yīng)用級測試程序的驗證,申威26010基于自研的單核、單核組、多核組和全片等多種不同規(guī)模的FPGA驗證平臺,實現(xiàn)了多個層次在應(yīng)用級的快速驗證,有效加快了芯片的錯誤收斂速度;形式驗證在申威26010中主要用于RTL設(shè)計與后端物理實現(xiàn)之間的等價性驗證.
2)采用層次化的驗證策略.針對申威26010的層次化結(jié)構(gòu)和芯片規(guī)模超大特性,將芯片的正確性驗證分為模塊級、部件級和芯片級3個層次,開發(fā)以白盒、黑盒和灰盒測試理論指導(dǎo)下的基于約束的隨機激勵、基于斷言的定向激勵以及多元化事務(wù)激勵、場景激勵,分解激勵開發(fā)和驗證難度,滿足不同層次驗證環(huán)境對運行速度和驗證資源的需求.模塊級運行速度快,資源用量少,側(cè)重白盒焦點驗證,在信號層面開發(fā)各種激勵確保底層模塊驗證覆蓋率.部件級運行速度較快,驗證資源用量中等,側(cè)重在協(xié)議層面開發(fā)激勵,既包含白盒焦點驗證和灰盒驗證,也含有黑盒自動化驗證.芯片級運行速度慢,驗證資源用量大,側(cè)重于在指令序列等軟件可見狀態(tài)層面構(gòu)建自動化驗證環(huán)境進行黑盒方式驗證.
3)構(gòu)建可重構(gòu)芯片級驗證環(huán)境.可重構(gòu)芯片級驗證環(huán)境支持多種參數(shù)化配置,使得驗證人員能夠根據(jù)不同的驗證需求,自由靈活地構(gòu)建芯片級驗證環(huán)境,較好地解決了驗證覆蓋率和模擬仿真速度之間的矛盾,也較好地解決了驗證規(guī)模與運算資源之間的矛盾,取得了很好的驗證效果.申威26010的可重構(gòu)芯片級驗證環(huán)境如圖3所示.該環(huán)境支持芯片中的核組數(shù)量可配置,可以配置芯片的核組數(shù)量為1~4個,支持單核組中運算核心數(shù)量可配置,可以配置的運算核心數(shù)量為1~64個;支持對各核組內(nèi)的運算核心陣列中的真、偽運算核心進行替換,其中偽運算核心是一個運算核心接口模型,偽運算核心模型的接口行為與真實核心完全一致,但其設(shè)計規(guī)模遠小于真實運算核心;支持對各核組中的訪存接口進行多種配置,包括使用真實的設(shè)計模型、虛擬存儲器接口模型等;支持對芯片中的PCI-E和以太網(wǎng)接口進行配置,可選擇芯片RTL模型中是否包含這2個接口.
申威26010通過綜合采用多種驗證方法,以及多層次、多規(guī)模的驗證,發(fā)揮各種驗證方法的優(yōu)勢,從不同驗證層次和驗證視角實現(xiàn)交叉驗證和優(yōu)勢互補,最終取得了很好的驗證效果,實現(xiàn)了一次流片成功的目標.
Fig.3 Reconfigurable chip-level verification environment圖3 可重構(gòu)芯片級驗證環(huán)境
申威26010規(guī)模龐大,芯片尺寸已接近生產(chǎn)極限,這對物理實現(xiàn)來說是個極大的挑戰(zhàn),為了完成如此大規(guī)模芯片的物理設(shè)計且實現(xiàn)高性能的目標,本芯片采用高可復(fù)用層次化物理設(shè)計、高性能時鐘系統(tǒng)設(shè)計和定制綜合混合設(shè)計等方法,基于28 nm工藝實現(xiàn)了1.5 GHz的頻率指標.
層次化物理設(shè)計方法是實現(xiàn)超大規(guī)模芯片設(shè)計的基礎(chǔ),該方法實現(xiàn)了物理設(shè)計并行化,提高了后端設(shè)計團隊在統(tǒng)一平臺上分工協(xié)作的效率,同時層次化的設(shè)計可以縮小模塊的設(shè)計規(guī)模,減輕設(shè)計及檢查分析對計算資源需求的壓力,縮短設(shè)計優(yōu)化的周期,從而可以通過增加優(yōu)化迭代的次數(shù),取得更好的設(shè)計優(yōu)化效果.本芯片采用的高可復(fù)用物理設(shè)計方法支持電路和版圖的層次化設(shè)計,同時支持靜態(tài)時序分析、功耗分析、等價性驗證和可靠性分析等層次化的檢查分析,從而高效地實現(xiàn)了申威26010這款極大規(guī)模芯片的物理設(shè)計.
申威26010物理實現(xiàn)上分為核心、核組和芯片3個全局層次,采用自頂向下的策略,以全片F(xiàn)loorplan設(shè)計、全局電地設(shè)計以及全局時鐘設(shè)計為主導(dǎo),根據(jù)芯片總體要求和信號連接關(guān)系,依次確定芯片、核組和核心的面積和各層次模塊的相對位置關(guān)系,制定時鐘網(wǎng)絡(luò)的實現(xiàn)方案,給出各層次頂層的設(shè)計資源和設(shè)計約束,實現(xiàn)芯片的總體布局和規(guī)劃.各模塊在頂層模塊給予的設(shè)計約束下進行設(shè)計和優(yōu)化,并將結(jié)果依次反饋給上一層次進行調(diào)整優(yōu)化,實現(xiàn)自底向上的反饋回路.層次化的設(shè)計中采用了高可復(fù)用性的策略,功能模塊和緩存模塊設(shè)計好后進行IP化處理,給核心層進行復(fù)用,核心層固化后在核組層進行復(fù)用,在芯片層對核組進行復(fù)用,實現(xiàn)了高效的層次化設(shè)計.
全芯片包含了多種不同頻率時鐘,包括:控制核心時鐘、運算核心時鐘、存控時鐘、PCI-E時鐘、全局時鐘、接口及維護時鐘等.其中全局時鐘頻率達到1.4 GHz,控制核心和運算核心的頻率均達到1.5GHz.不同時鐘在分布范圍、時鐘偏斜和時鐘功耗上有不同的指標要求,需要根據(jù)它們的特點分別采用不同的設(shè)計方法:
1)對于運算核心時鐘、控制核心時鐘和全局時鐘3種高頻率且分布范圍廣的時鐘,采用“全局+局部”2層的時鐘設(shè)計結(jié)構(gòu),分層次進行低偏斜時鐘設(shè)計;為增強抗OCV(on-chip variation)的能力,全局時鐘采用對稱H-tree型結(jié)構(gòu),實現(xiàn)時鐘從源頭到各終點傳播延時的精準控制.在模塊局部時鐘設(shè)計中,直接采用“大驅(qū)動+MESH”的方式直連到各時序單元,確保時鐘信號傳播的低延時和低偏斜.一個運算核組的時鐘分布如圖4所示.
2)對于分布范圍較小或頻率較低的其他時鐘按照平衡時鐘樹的方式進行單層時鐘結(jié)構(gòu)設(shè)計,在滿足設(shè)計性能的同時也大大降低了設(shè)計復(fù)雜度.
Fig.4 Clock network distribution of an computing core group圖4 一個運算核組的時鐘網(wǎng)絡(luò)分布圖
通過上述設(shè)計方法,申威26010的各高頻時鐘全片分布最大偏斜均控制在10 ps以內(nèi),時鐘占空比達到49.85%~50.15%,經(jīng)流片測試各時鐘均可以穩(wěn)定運行在設(shè)計頻率下,達到了設(shè)計目標.
申威26010芯片2類核心的邏輯非常復(fù)雜,為了達到頻率設(shè)計目標,采用了多種定制設(shè)計技術(shù):
1)全局通路設(shè)計
在全局芯片布局設(shè)計時優(yōu)先考慮關(guān)鍵時序通路的設(shè)計,盡可能縮短其物理長度.此外在全局布線的金屬資源選取上,也將傳播速度較快的高層金屬盡量向關(guān)鍵通路傾斜,確保關(guān)鍵通路的時序可以滿足設(shè)計要求.
2)定制存儲器設(shè)計
訪存路徑一直是處理器的關(guān)鍵路徑所在,需要進一步提升片上SRAM陣列的訪存速度.商用的存儲器綜合工具(Memory Compiler)已無法滿足存儲器的頻率要求,申威26010處理器內(nèi)部主要Cache陣列均為定制實現(xiàn),包含單端口和雙端口陣列.定制存儲器采用了容偏差靈敏放大器設(shè)計、高速譯碼器設(shè)計和自定時電路等關(guān)鍵技術(shù)[10],速度比基于商用工具生成的存儲器快27%~37%.
此外寄存器文件也是關(guān)鍵路徑所在,由于讀寫端口眾多,綜合實現(xiàn)方法無法有效地布通走線,且時序難以達到指標,申威26010中的5讀5寫和7讀4寫寄存器文件均為定制設(shè)計,采用了自研多端口bitcell(存儲單元)、高速譯碼電路和多米諾讀出電路等關(guān)鍵技術(shù),最終滿足了寄存器文件的頻率設(shè)計要求.
3)高性能時鐘樹定制設(shè)計
為盡可能降低時鐘偏斜、降低時鐘延時和增強其抗OCV的能力,全芯片3個主要高頻時鐘均采用定制設(shè)計方式實現(xiàn),時鐘主干采用定制H-tree時鐘樹結(jié)構(gòu),時鐘的一級驅(qū)動單元、二級驅(qū)動單元及門控驅(qū)動單元均采用定制實現(xiàn),確保整個時鐘樹設(shè)計具備低傳播延時和低傳播偏斜的特性.
通過這3種技術(shù)手段,芯片最終可以穩(wěn)定運行在1.5 GHz,工作頻率高于國際上同期同類芯片,使芯片性能達到了設(shè)計預(yù)期,雙精度浮點峰值性能達到了3.168TFLOPS的設(shè)計指標.
為提高設(shè)計效率,芯片的大部分控制與運算邏輯模塊均采用了綜合設(shè)計方法來實現(xiàn),在傳統(tǒng)商用綜合設(shè)計流程的基礎(chǔ)上,芯片開發(fā)團隊根據(jù)芯片的特點自行定制開發(fā)了多項自動化功能,例如:自動填充物理信息的邏輯綜合功能、關(guān)鍵邏輯自動打包聚集功能、根據(jù)時序自動調(diào)整并優(yōu)化關(guān)鍵路徑權(quán)重功能、自動創(chuàng)建定制Mesh時鐘樹功能、對關(guān)鍵路徑或指定路徑優(yōu)先進行布線功能、自動在大反轉(zhuǎn)電流單元兩側(cè)插入去耦電容功能[11]、集成時序分析及時序自動優(yōu)化功能、集成設(shè)計規(guī)則檢查及自動修復(fù)功能等.通過對綜合流程的深度定制化開發(fā),大大提高了綜合設(shè)計質(zhì)量和效率,模塊級設(shè)計頻率較標準商用流程提升15%~20%,布線錯誤率下降90%,極大地提高了設(shè)計的效率和質(zhì)量.
隨著晶體管數(shù)量的增加和工作頻率的提高,降低處理器的功耗變得越來越重要[12-13].申威26010在實現(xiàn)高性能的同時,從結(jié)構(gòu)級、微結(jié)構(gòu)級到電路級,綜合采用多層次功耗優(yōu)化技術(shù)來降低處理器的功耗.
1)結(jié)構(gòu)級低功耗設(shè)計
申威26010在結(jié)構(gòu)級采用的低功耗設(shè)計技術(shù)有:
①申威26010的結(jié)構(gòu)設(shè)計思想是通過集成眾多核心來提升性能,適當(dāng)降低單核心最高工作頻率的要求,避免過高工作頻率帶來功耗的快速上升,從而有效地提升了芯片的能效比.
②支持多種形態(tài)的工作模式.包括深度睡眠、淺睡眠和低功耗運行模式.對較長時間無工作負載的核心,可控制使其處于極低工作頻率的深度睡眠狀態(tài),最大限度降低運行功耗;對短時間無工作負載的核心,特殊的停機指令可使核心處于淺睡眠狀態(tài),杜絕核心絕大多數(shù)信號的翻轉(zhuǎn)從而降低功耗;對運行速度要求較低的應(yīng)用程序,可以動態(tài)調(diào)整指令發(fā)射速度,達到降低運行功耗的目的.
③多頻率設(shè)計.在滿足性能需求前提下,僅核心采用最高工作頻率,互連部件、存儲控制器和系統(tǒng)接口則采取較低的工作頻率,降低運行功耗.
2)微結(jié)構(gòu)級低功耗設(shè)計
申威26010在微結(jié)構(gòu)級采用的低功耗設(shè)計技術(shù)有:
①功能部件動態(tài)配置.采用動態(tài)切割方式,支持不同層次的部件切割,以降低功耗.一是核心級,可以根據(jù)應(yīng)用需求的核心數(shù)量,將不使用的核心斷開,使其處于極低工作頻率狀態(tài);二是部件級,對浮點部件或SIMD運算部件,在運行無浮點操作或無SIMD運算的應(yīng)用時,可動態(tài)關(guān)閉浮點部件或SIMD部件的時鐘,降低核心的運行功耗.
②多端口存儲器設(shè)計.Cache存儲器設(shè)計采用“虛擬多端口”技術(shù)來減少物理端口數(shù)量,既降低功耗,也有效降低芯片面積.其中運算控制核心的指令Cache和二級Cache都采用物理單端口存儲器,虛擬實現(xiàn)雙端口功能,數(shù)據(jù)Cache則采用雙端口存儲器實現(xiàn)了虛擬三端口的功能.
③I/O低功耗支持.DDR3存儲器接口和PCI-E接口都支持低功耗模式,在沒有訪問請求時,可自動處于低功耗狀態(tài).
3)電路級低功耗設(shè)計
申威26010在電路級采用的低功耗設(shè)計技術(shù)有:
①采用多層次多粒度的門控時鐘方式.降低平均運行功耗,細粒度控制可在模塊內(nèi)部實現(xiàn)對一定數(shù)量的觸發(fā)器進行控制,粗粒度控制可在模塊級、核心級和核組級進行時鐘控制,從而實現(xiàn)不同工作模式下降低功耗的目標.同時采取動態(tài)功耗分析和電壓降分析,通過布局優(yōu)化和放置片上電容,避免門控時鐘在降低功耗的同時造成動態(tài)電壓降影響電路工作的穩(wěn)定性.
②采用多閾值晶體管混合設(shè)計.以常規(guī)閾值晶體管為主體進行設(shè)計,用速度最快的低閾值晶體管進行關(guān)鍵時序路徑的優(yōu)化,這樣在滿足設(shè)計頻率目標前提下,盡可能采用高閾值晶體管來優(yōu)化漏電功耗.通過此設(shè)計策略,在申威26010的50億晶體管中,低閾值晶體管數(shù)量僅占1.97%,使得常溫下漏電功耗僅為12 W.
申威26010在使用中根據(jù)運行課題的不同,芯片的實際功耗往往會在幾十瓦到幾百瓦之間來回波動.頻繁的大幅度功耗波動給芯片的穩(wěn)定可靠性帶來了嚴峻的挑戰(zhàn).為了確保芯片可以在實際系統(tǒng)中穩(wěn)定運行,申威26010從結(jié)構(gòu)設(shè)計到物理設(shè)計綜合采用了多種高可靠性設(shè)計方法,有效地降低了功耗波動對電源網(wǎng)絡(luò)系統(tǒng)的影響,確保了芯片在實際系統(tǒng)中的穩(wěn)定工作.芯片穩(wěn)定可靠性設(shè)計所采用的關(guān)鍵技術(shù)方法有:
1)電地網(wǎng)絡(luò)強化設(shè)計.在各運算核心和運算控制核心上均采用BUMP垂直供電技術(shù),確保各部分的充足供電;采用自頂向下每層均垂直交叉打孔的網(wǎng)格狀方式進行連接;除相互電地隔離的區(qū)域外,所有模塊電地均在芯片頂層連在一起,構(gòu)成一張統(tǒng)一完整的大網(wǎng),確保電源網(wǎng)絡(luò)的強壯性.
2)電地網(wǎng)絡(luò)隔離設(shè)計.同時對于不同核心區(qū)域的電地進行物理隔離,避免功耗波動導(dǎo)致的電壓波動相互影響.
3)去耦電容的按需使用.通過設(shè)計流程優(yōu)化確保各大功耗單元周圍插入去耦電容單元[14],減少電源波動.
4)片上時鐘變化平滑過渡的控制方法.在芯片整體或局部部件進行時鐘頻率提升或降低時,按照預(yù)設(shè)的部件粒度和時間間隔進行頻率的變化,使得芯片內(nèi)部時鐘頻率變化時功耗按梯度變化,有效降低功耗波動給芯片可靠運行帶來的風(fēng)險.
5)片上存儲器采取容工藝偏差自調(diào)節(jié)設(shè)計方法.在芯片運行過程中實時感知工藝參數(shù)的變化,并根據(jù)工藝參數(shù)的變化情況自動調(diào)整存儲器電路的相關(guān)參數(shù),以有效容忍制造工藝偏差,提高電路運行的穩(wěn)定可靠性.
越大的芯片面積會導(dǎo)致更大的工藝偏差和更高的制造缺陷概率,從而會導(dǎo)致部分芯片出現(xiàn)性能或功能上的問題,降低芯片成品率.申威26010在設(shè)計時采用了多種提升成品率的技術(shù)方法,主要采取的技術(shù)方法有:
1)容偏差存儲器設(shè)計
由于SRAM晶體管占了芯片總晶體管數(shù)的40%,而且存儲單元采用最小尺寸設(shè)計,所以SRAM陣列是對芯片成品率影響最大的部分.片內(nèi)主要SRAM存儲器均采用定制設(shè)計實現(xiàn),在設(shè)計時采用了容偏差存儲器設(shè)計來確保在大的工藝偏差下仍然能正常工作,同時采用了多種修復(fù)策略來消除制造缺陷對成品率的影響.
容偏差存儲器主要采用容偏差靈敏放大器設(shè)計和自定時電路2種關(guān)鍵技術(shù).在靈敏放大器電路中,包含有互補反相器對和對稱的放電通路,需要很好的匹配才能保證邏輯的可靠性,目前常用的靈敏放大器分為電壓型和電流型2種,通過蒙特卡羅仿真對比[15],電壓型靈敏放大器具有更好的速度和穩(wěn)定性,所以設(shè)計采用了電壓型結(jié)構(gòu).
在版圖設(shè)計時為了保證嚴格的對稱性,首先采用半邊設(shè)計方式,然后X軸鏡像調(diào)用以保證對稱性.同時對敏感器件采用中心對稱的設(shè)計方式和金屬線屏蔽.放大管采用大于2倍最小管長的方式減小失配(mismatch),并采用非最小規(guī)則進行版圖設(shè)計.蒙特卡洛仿真表明電壓差為10 m V時良率為98.17%,電壓差為20 m V時靈敏放大器良率已達到100%,具有很高的容偏差能力.
工藝偏差將導(dǎo)致靈敏放大器差分輸入端的電壓差發(fā)生變化,直接影響靈敏放大器的可靠性,繼而影響整個存儲器的可靠性.為了改善靈敏放大器開啟時間的控制,本設(shè)計采用了自定時靈敏放大器設(shè)計,能夠自適應(yīng)地調(diào)節(jié)開啟時間,確保SRAM正常工作.
當(dāng)有效電壓差達到預(yù)定值時,靈敏放大器開啟較高的正確放大概率,但是由于工藝偏差的影響,每一塊SRAM的開啟時間都有所不同,失配嚴重的將會引起功能錯誤.為了解決這個問題,靈敏放大器的信號延時部分采用了4級可選延時結(jié)構(gòu),陣列會根據(jù)存儲器內(nèi)建自測試的結(jié)果來自動選擇開啟的時間,首先選擇最快開啟檔位,如果存儲器失效,則依次降低開啟檔位直到存儲器正常工作,在確保功能的前提下實現(xiàn)最高的性能.
此外,為了消除制造缺陷對成品率的影響,采用了多維度冗余自修復(fù)策略,對32 KB的一級Cache采用了列冗余修復(fù)策略,對容量較大的512 KB二級Cache采用了行列冗余同時修復(fù)的策略.結(jié)合BIST測試算法,實現(xiàn)了自測試自修復(fù)的功能,經(jīng)測試在標準電壓下SRAM良率達到100%,頻率達到設(shè)計目標.
2)選取合理的時序余量(margin)
在設(shè)計分析時添加適當(dāng)?shù)臅r序margin是確保芯片在一定工藝偏差下仍可以達到工作頻率的重要手段.過大的margin會導(dǎo)致嚴重的功耗問題,過小的margin則有可能導(dǎo)致性能不達標甚至出錯,因此如何設(shè)定合理的時序分析margin就成為了關(guān)鍵.
申威26010在設(shè)計時會先對全局關(guān)鍵時鐘信號進行全Corner偏差仿真,再根據(jù)不同關(guān)鍵路徑間的局部相對關(guān)系和位置來確定每組路徑具體的時序分析標準及margin的設(shè)定.這樣既可以通過添加合理的時序margin來對抗可能的工藝偏差,也可以避免對其他無關(guān)通路的過約束設(shè)計.
3)可制造性設(shè)計優(yōu)化
為進一步減少因工藝制造偏差所導(dǎo)致的芯片失效,全片在物理實現(xiàn)時均采用了“多孔、寬線”的可制造性優(yōu)化方法,即在不影響性能和布局布線的前提下,盡量采用更寬的互連線,金屬層之間盡量用多通孔來代替單通孔,盡可能地減少因制造失效導(dǎo)致的芯片功能錯誤.
通過這3種技術(shù)手段,申威26010芯片的量產(chǎn)成品率達到了50%以上,對于如此大規(guī)模的芯片已是非常高的成品率.
申威26010工作頻率達到1.5 GHz,在此頻率下,全芯片雙精度浮點峰值速度達到3.168TFLOPS,整數(shù)峰值速度達到3.522TOPS;實測單處理器LINPACK效率 為80.10%,持 續(xù) 性 能 為2.538TFLOPS;實測HPL-DGEMM效率為97.558%,性能為3.091 TFLOPS,芯片峰值運行功耗為292.7 W,性能功耗比為10.559GFLOPS/W.申威26010芯片于2014年底設(shè)計定型,各項指標均達到了同期國際領(lǐng)先水平[16],申威26010與2011~2015年國際上峰值性能超過1TFLOPS的CPU/GPU之間的對比,如表1所示.
國家“863計劃”支持研制的“神威·太湖之光”超級計算機系統(tǒng),全部采用“申威26010”處理器.該系統(tǒng)共集成了40 960顆申威26010處理器,系統(tǒng)峰值運算速度達到125.43PFLOPS,實測Linpack效率達到74.1%,成為世界上率先突破每秒10億億次的超級計算機系統(tǒng),也是我國全部采用國產(chǎn)處理器的超級計算機首次位居世界第一,系統(tǒng)連續(xù)4次蟬聯(lián)超級計算機TOP500排行榜冠軍,打破了美國對我國超級計算機處理器芯片禁運的封鎖.在此系統(tǒng)上完成的“千萬核可擴展大氣動力學(xué)全隱式模擬”和“非線性大地震模擬”2項應(yīng)用獲得高性能計算機應(yīng)用領(lǐng)域的最高獎“戈登·貝爾獎”.同時,系統(tǒng)應(yīng)用覆蓋海洋、金融、氣候、航天、新藥、材料等10多個應(yīng)用領(lǐng)域,為國民經(jīng)濟、國防、科研的發(fā)展產(chǎn)生了強大的推動作用,取得了顯著的社會效益.
Table 1 Comparison Between Shenwei 26010 and CPU/GPU with Performance Exceeding 1TFLOPS表1 申威26010與國際上性能超過1TFLOPS的CPU/GPU對比
申威26010眾核處理器是我國第一款64 b高性能通用眾核處理器,實現(xiàn)國產(chǎn)處理器“從多核到眾核”“從每秒千億次到萬億次”的跨越.申威26010采用多粒度并行處理的SoC芯片架構(gòu),綜合采用多種正確性驗證方法,采用多種低功耗設(shè)計與管理技術(shù),物理設(shè)計采用定制與邏輯綜合相結(jié)合和容工藝偏差設(shè)計等多種設(shè)計方法,尤其在芯片的頻率設(shè)計、穩(wěn)定可靠性設(shè)計和成品率設(shè)計方面采取了一系列的技術(shù)方法,最終同時實現(xiàn)了芯片的高性能、高能效比和高穩(wěn)定可靠性目標,并在高性能計算領(lǐng)域?qū)崿F(xiàn)應(yīng)用的突破.由此可見,雖然國產(chǎn)高性能處理器起步較晚,生產(chǎn)工藝較低,但通過架構(gòu)和物理設(shè)計等方面的創(chuàng)新,完全有能力在特定應(yīng)用領(lǐng)域?qū)崿F(xiàn)有效應(yīng)用.但與國際主流高性能眾核處理器相比,申威26010眾核處理器在配套的軟件應(yīng)用生態(tài)鏈建設(shè)方面還需要進一步完善,以進一步提升芯片的適應(yīng)性.
繼申威26010之后,申威眾核處理器一直在探索和創(chuàng)新中發(fā)展,隨著工藝和設(shè)計能力的提升,針對性能和效率提升這些問題采取了諸多創(chuàng)新性手段.在提高運算性能方面,進一步提高芯片工作頻率,將運算核組數(shù)量從4個增加到5~8個,擴展運算核心內(nèi)的SIMD寬度到512 b,并針對應(yīng)用需求完善SIMD指令集;在高能效設(shè)計方面,創(chuàng)新低功耗設(shè)計方法與功耗管理措施,將申威眾核處理器的峰值功耗和運行功耗控制在合理的范圍之內(nèi).最后在訪存與通信帶寬優(yōu)化方面,使用DDR4或者HBM和PCI-E4.0等新型存儲器及高速互連接口,使眾核處理器的計算、訪存和通信性能達到更優(yōu)的平衡,提升實際應(yīng)用效率.