胡偉武
(1. 龍芯中科技術有限公司,北京 100095; 2. 中國科學院計算技術研究所,北京 100190)
通用中央處理器(CPU)芯片是信息產業的基礎部件,也是武器裝備的核心器件。我國缺少具有自主知識產權的CPU技術和產業,不僅造成信息產業受制于人,而且國家安全也難以得到全面保障。“十五”期間,國家“863計劃”開始支持自主研發CPU。“十一五”期間,“核心電子器件、高端通用芯片及基礎軟件產品”(“核高基”)重大專項將“863計劃”中的CPU成果引入產業。從“十二五”開始,我國在多個領域進行自主研發CPU的應用和試點,在一定范圍內形成了自主技術和產業體系,可滿足武器裝備、信息化等領域的應用需求。但國外CPU壟斷已久,我國自主研發CPU產品和市場的成熟還需要一定時間。
目前,我國CPU的發展主要有自主研發和引進技術兩條路線。后一路線的支持者認為,引進技術的CPU性能強于自主研發CPU,且引進技術的CPU軟件生態更優。很多自主研發路線的支持者也對堅持自主研發龍芯CPU的選擇產生懷疑。
在我國航天應用領域,高性能抗輻照處理器長期受國外禁運影響。要從根本上解決問題,擺脫對國外進口元器件的依賴,必須要有能力自主正向設計高性能抗輻照處理器。
現代計算機大多采用馮·諾依曼結構,由存儲器、運算器、控制器、輸入設備、輸出設備組成。控制器先從輸入設備接收程序和數據,并將其存放在存儲器中;然后從存儲器取出程序和數據,將其送至運算器進行運算,并將運算結果保存到存儲器中;最后將結果數據通過輸出設備輸出。其中,運算器和控制器被合稱為CPU。CPU從存儲器中調取、執行指令并將執行結果寫回存儲器的過程被稱為一個指令周期。計算機不斷重復指令周期,直到完成程序的執行。計算機系統結構研究的一個主題就是不斷縮短上述指令的執行周期,從而提高計算機運行程序的效率[1-2]。相關研究者提出了許多提高指令執行效率的技術,包括精簡指令系統計算機(RISC)技術[3]、指令流水線技術、高速緩存技術、轉移預測技術、亂序執行技術[4]、超標量(多發射)技術[5]等。

圖1 CPU的不同體現方式Fig.1 Different implementation types of CPUs
CPU有多種體現方式,如圖1所示。在IBM時代,CPU體現為若干個柜子。1967年交付使用的109丙機如圖1(a)所示,運算速度為50 000次/s。由于該機在“兩彈一星”的研制中起到了重要作用,因此又被稱為功勛機。在Intel時代,CPU體現為一個芯片。2017年發布的龍芯3A3000處理器如圖1(b)所示。該處理器集成4個CPU核心,每個核心都有獨立的運算器和控制器,峰值浮點運算速度為24億次/s。在ARM時代,CPU體現為一個IP核,其中,軟IP為源代碼,硬IP為版圖,授權給相關企業用于芯片設計,我國絕大多數手機芯片均采用ARM的CPU核設計。通過集成CPU、內存控制器、IO接口、互連等模塊設計的芯片被稱為系統級芯片(SoC)。
CPU的價值在于承載生態。雖然全球80%左右的計算機由中國生產,但2011年,我國IT產業百強企業的利潤總和僅為美國蘋果公司的40%。2016年,蘋果公司和三星公司的手機利潤占全球市場利潤的94%。2017年,蘋果、聯想、英特爾、海思和展銳公司的銷售收入及利潤對比見表1。其中,海思、展銳公司的利潤不可查。IT產業本質上是為客戶提供解決方案,而解決方案決定最終的用戶習慣,用戶習慣則會形成很高的商業“門檻”。根據谷歌公司最近公布的資料,雖然谷歌公司的Android系統免費,但該系統給谷歌公司帶來的盈利超過420億美元,其根本原因在于谷歌公司控制了手機的解決方案。我國IT產業的出路在于自主研發CPU和操作系統,建立獨立于Wintel體系(Intel X86 CPU+微軟Windows操作系統)和AA體系(ARM CPU+Android操作系統)的自主技術和產業體系,而不是在已有的Wintel和AA體系中做產品。發展自主CPU的最終目標就是要建立自主可控的信息技術平臺和產業體系。
從上述分析可看出,CPU的“體”是運算器加控制器,只有自主研發運算器和控制器才是自主CPU。引進國外的CPU核做芯片只能被稱為自主SoC,直接引進國外設計的自主流片更不能被稱為自主CPU。CPU的“相”可體現為機柜、芯片或IP。CPU的“用”是承載軟件生態,研制自主CPU的目標是“構建安全可控的信息技術體系”,而不是在已有體系中開發產品。有一種觀點認為,X86和ARM產業生態好,因此發展自主CPU只能走與X86和ARM兼容的道路。但引進X86和ARM的CPU技術并不是對現有技術體系的創新,這樣做很難動搖國外企業對技術平臺的把控,長此以往會造成國內企業依賴現有國外IT生態的惰性,加劇國外企業已形成的壟斷。
要建立自主體系,應打造計算機系統的技術鏈,消除鏈上的技術難點。通用計算機系統的結構層次如圖2所示。由圖可見:計算機系統分為應用程序、操作系統、硬件系統、晶體管4個層次[6]。

圖2 計算機系統的分層模型Fig.2 Hierarchical model of computer system
第一層是應用程序。我國的應用軟件(APP)較為發達,如社交、電商類APP已能與美國比肩。
第二層是操作系統。操作系統負責為編寫APP提供應用程序編程接口(API)。常見的API包括C語言、Java語言、JavaScript語言、OpenGL圖形編程接口等。我國基于上述API編程的工程師有很多,但能設計這些API軟件(如Java虛擬機、C編譯器等)的工程師則很少。
第三層是以CPU為核心的硬件系統。CPU提供指令系統(ISA)作為軟硬件界面。常見的ISA包括X86,ARM,MIPS等。我國每年使用ARM的CPU核研制的芯片銷售額數以億計,但其主要IP核都是市場上的大眾化產品,同質化競爭嚴重。
第四層是晶體管。我國一直高度重視生產工藝的建設,雖然與國際水平還有一定差距,且主要生產設備依賴進口,但我國的生產工藝水平總體上可滿足自主信息化需求。目前40 nm低功耗工藝已經成熟穩定,28 nm工藝亦趨于成熟。介于硬件系統與晶體管之間的工藝模型是芯片生產廠家提供給芯片設計者的界面,包括仿真電路模擬器(SPICE)模型、標準單元庫、有關宏單元等。
建立自主軟硬件體系要走“應用牽引、系統優化、軟硬結合、規范適用”的技術道路。從系統的角度進行優化設計,做到在局部性能不如國外系統的情況下,整個系統的性能超過國外系統。例如:在某數據庫應用中,使用X86服務器需50 min,使用基于龍芯CPU的服務器,經過軟硬件磨合只需80 s;某雷達顯控應用在海量目標場景下,X86高端商業計算機的圖像處理速度為10幀/s,經過深度優化,龍芯平臺可將處理速度提升至20幀/s。現在的信息系統冗余較多,只要根據適用的原則進行系統優化,就可以做出集約型的優化系統。蘋果公司產品iPAD的CPU性能不如Intel的桌面CPU,但因蘋果公司堅持建立自主的軟硬件體系,故iPAD的用戶體驗比桌面電腦要好。俄羅斯的CPU技術遠不如我國,但因其堅持自主體系,故其武器裝備水平性能也相對優越。
“十二五”以來,自主CPU在應用試點過程中暴露出性能不足的問題。部分研究人員認為自主CPU滿足不了應用需求,傾向于引進國外CPU,或使用引進的CPU核設計芯片。自主CPU是新事物,要用長遠的眼光看待其發展,碰到問題和困難不應立刻下結論,而是要找真正的原因。只有“定位準確、機理清楚”,采取的措施才能有效。
CPU的性能優化要緊密結合市場需求,將國外CPU發展趨勢和我國自主信息化的具體需求相結合。我國自主CPU的研發源自“十五”期間“863計劃”的支持,自主進行技術攻關的CPU包括中國科學院計算機研究所的龍芯CPU、上海高性能CPU研發中心的申威CPU、國防科技大學的飛騰CPU等。在與產業結合過程中,由于科研與產業相背離的問題沒有得到解決,因此雖然個別技術指標達到世界領先水平[7-8],但桌面、服務器等的通用處理能力很低,系統中還存在明顯短板。
經過深入分析發現,雖然“十二五”初期主要產品1 GHz龍芯3A1000[9-10]的主頻只有市場主流產品的1/3,但其性能的主要瓶頸仍是微結構差距導致流水線效率低,尤其是訪存帶寬與市場主流產品有較大差距,供數和供指令不足引起了指令流水線頻繁阻塞。通過優化微結構設計,大幅提高了訪存性能和轉移猜測準確度,并通過增加有關隊列解決指令流水線堵塞問題,使用境內40 nm工藝研制出龍芯3A2000[11]。雖然龍芯3A2000的主頻仍是1 GHz,但其通用處理性能為3A1000的2~3倍,訪存帶寬有較大提高。在此基礎上,使用境外28 nm工藝研制出的龍芯3A3000的主頻提高到1.5 GHz,通用處理性能達到3A1000的4~5倍。
龍芯3A1000,3A2000,3A3000的性能比較見表2。表中,INT2006和FP2006分別是國際公認的CPU性能測試程序SPEC CPU2006的定點和浮點測試集[12],STREAM是國際公認的訪存帶寬測試集。表2還給出了1.5 GHz的AMD K10處理器的測試結果。由表可見:1.5 GHz的龍芯3A3000的綜合性能與1.5 GHz的AMD K10相當(測試時將AMD K10的主頻降低到1.5 GHz,主要是為了比較3A3000和K10的流水線效率)。

表2 龍芯3A1000,3A2000,3A3000性能比較
在研龍芯3A4000與3A3000在FPGA仿真平臺上的性能比較見表3。由于仿真平臺主頻較低,約為1 MHz,因此使用SPEC CPU2000 test程序進行測試。測試時模擬3A4000和3A3000的主頻均為1 GHz,內存控制器頻率均為500 MHz。由表可見:在相同主頻下,龍芯3A4000比3A3000的定點性能高48.54%,浮點性能高43.77%。上述對比未考慮龍芯3A4000支持256位向量優化。根據在X86平臺上的性能測試,編譯器自動向量化可將SPEC CPU的定點性能提高約5%,浮點性能提高約15%。龍芯3A4000使用3A3000的28 nm工藝,通過優化設計將主頻從1.5 GHz提高到2.0 GHz。在相同的工藝條件下,龍芯3A4000性能為3A3000的2倍。在此基礎上,若使用更先進的工藝技術將主頻提高到2.5~3.0 GHz,則龍芯CPU的通用處理性能可達到國際主流CPU的水平。

表3 龍芯3A3000和3A4000仿真平臺性能比較
上述結果表明:自主CPU的性能可在持續改進過程中不斷提高,滿足自主信息化需求,并不需要依靠引進。CPU系統較為復雜,應在產業化實踐中通過不斷試錯、長期演進來逐步發展。對于以自主CPU和操作系統為代表的核心技術,只有在自主創新實踐中發現問題,在解決問題的過程中提高能力,才能保障國家信息安全,支撐產業持續發展。
我國應構建面向工控系統和信息系統的兩大軟件生態。一是面向“中國制造2025”的工業互聯網生態體系。目前,不同的工控系統相互孤立且愈加復雜,如Android平臺改變服務模式,實現了“軟件即服務”。我國需要一個“軟件即制造”的平臺來提升信息化水平,在該平臺上實現使用APP即可進入相關領域的控制系統,如飛機、高鐵等。二是面向自主信息化的桌面和服務器生態體系。如果說建設工業互聯網生態是“開拓疆域”的話,那么建設信息系統生態就是“收復失地”。在桌面和服務器領域,必須建設信息系統生態。我國至少要發展面向國防、能源、交通、金融、電信等涉及國家安全和國民經濟安全的自主基礎軟硬件平臺。
生態的關鍵是開發者。對于系統開發者,技術平臺要保持系統結構的長期穩定,要以保持操作系統二進制兼容為重點;對于應用開發者,技術平臺要便于應用開發,要以完善應用程序編程接口為重點。
1) 通過統一系統架構,保持操作系統跨硬件平臺的二進制兼容,可大幅提高系統開發效率。Wintel的所有平臺都能安裝Windows操作系統;而以前龍芯的平臺,每升級一次CPU,就必須適配一次操作系統,甚至不同廠家的主板也得適配操作系統。通過指令系統兼容可實現應用程序的二進制兼容,但要實現操作系統的二進制兼容則需要從包括CPU、橋片、BIOS、操作系統等在內的全系統的角度進行規范并保持長期兼容。除了主導X86指令系統的發展,英特爾公司還主導了主板和操作系統界面的統一可擴展固件接口(UEFI)規范,以及IO設備與操作系統界面的外設部件互連標準(PCI)規范等。“Outside”是英特爾公司設立的技術門檻,是其保持壟斷的重要手段。
統一系統架構對CPU、橋片、BIOS和操作系統的研發都提出了要求,包括跨代兼容的指令系統、標準化的全局地址空間分布、標準化的中斷路由和中斷編程、標準化的多核間同步通信編程接口、可動態枚舉的擴展組件、可動態插拔的外設接口等。除了CPU,橋片是確定系統架構的核心要素。計算機系統通過橋片定義系統空間布局,確定中斷系統,實現系統組件標準化(HPET,RTC)、外設接口動態插拔、擴展組件動態枚舉等。為此,龍芯中科技術有限公司(簡稱龍芯中科)自主研發了龍芯7A1000橋片,并與龍芯3號系列CPU形成統一系統架構規范,保持操作系統對不同主板及升級后的CPU和橋片的兼容,大幅減少了軟硬件適配工作量,提高了軟硬件開發效率。
2) 優化API,促進應用遷移,提升用戶體驗。API是應用開發者的生產工具,大多數APP是基于API接口(Java,JavaScript,QT等)開發出來的。只有掌握API,才能吸引大量開發者圍繞龍芯中科的技術平臺進行應用開發工作,并在此基礎上逐步形成產業生態。API是生態建設的必爭之地。
用于“人機交互”的圖形API和用于“機機交互”的網絡API是IT產業的兩大核心要素。谷歌的Android操作系統的內核和很多模塊都直接來源于Linux,但對圖形和網絡子系統進行了深入改造。在圖形系統方面,Linux中包括Xserver,GTK,QT,OpenGL在內的圖形系統在發展過程中由于缺少規劃,冗余高且效率低。谷歌在OpenGL的基礎上推出了功能完整、簡潔高效的OpenGL-ES圖形系統API。在網絡系統方面,Linux的火狐瀏覽器(Firefox)臃腫且復雜,谷歌的Chrome瀏覽器簡潔且高效,現已超過微軟的IE瀏覽器成為世界上用戶最多的瀏覽器。
“十二五”期間,在信息系統生態方面,龍芯中科結合政務處理系統、指揮系統等應用需求,基于Linux研制了Loongnix通用操作系統平臺。Loongnix以“規范適用”為原則,與龍芯CPU進行了深度適配,尤其是優化了包括編譯器、Java虛擬機[13-14]、瀏覽器、媒體播放[15]、OpenGL和QT圖形庫[16]、Flash等在內的重點軟件包。龍芯平臺Java虛擬機和JavaScript優化前后比較見表4。龍芯中科將在“十三五”期間對Xserver圖形系統進行重新梳理與深度優化,使龍芯平臺的用戶體驗得到大幅度提升。Loongnix為開放平臺,操作系統企業、整機企業和集成商均可基于Loongnix開發發行版操作系統。同時,龍芯中科將國際開源社區作為生態建設的重要陣地,積極向國際開源社區提供軟件包,以避免每次社區版本升級都要重新適配。

表4 龍芯平臺Java虛擬機和JavaScript優化前后比較
“十二五”期間,在工業互聯網生態方面,龍芯中科結合用戶需求研制了面向工業互聯網應用的實時操作系統LoongOS。該操作系統在RT-Linux和VxWorks內核的基礎上,完善了OpenGL,QT等圖形界面,在裝甲裝備、艦船、飛機顯控系統等領域得到了初步應用。基于VxWorks的龍芯2D,3D圖形API所繪制的圖形如圖3所示。龍芯中科下一步將完善LoongOS的網絡API,以方便網絡編程。

圖3 基于VxWorks的龍芯2D,3D圖形API所繪畫的圖形Fig.3 Graphics drawn by Loongson 2D and 3D graphical APIs based on VxWorks real-time operating system
在Wintel體系中,Intel主導指令系統、主板與操作系統接口UEFI、操作系統與外設接口PCI等軟硬件接口規范,微軟主導操作系統與應用的API接口規范。在AA體系中,ARM主導指令系統及片內總線接口AMBA(advanced microcontroller bus architecture)規范,谷歌主導操作系統與應用的API接口規范。蘋果公司雖然使用ARM指令系統,但其軟硬件自成體系,能進行系統優化,所以用戶體驗較Wintel和AA要好。上述3個生態體系中有以下幾個重要特點:
1) 開放。越開放合作伙伴越多,產業生態力量越大,ARM公司在這方面做得最好。
2) 兼容。越兼容越容易形成合力,產業生態不易碎片化,英特爾公司在這方面做得最好。
3) 優化。以用戶體驗為中心,通過軟硬件緊密結合進行優化,蘋果公司在這方面做得最好。
龍芯CPU+開放操作系統的模式能做到比Wintel更開放,比AA更容易統一系統架構,并實現操作系統二進制兼容,比Wintel和AA更容易通過軟硬件磨合并實現系統優化。
伴隨我國航天事業的發展,航天型號任務中火箭、飛船和衛星的平臺與載荷大規模采用的CPU主要用于信號處理、信號和設備控制、數據計算和傳輸,以及綜合多任務調度。航天裝備的元器件、器部件和載荷必須采用宇航級器件以提升空間環境抗輻照的能力,這對國產化自主可控CPU提出了更高的要求[17-19]。現階段,自主CPU在我國航天領域的應用情況主要為:1)通過反向設計,仿造國外同類型的抗輻照處理器,實現國產化的目標;2)采用未被禁運的商業級、工業級的高性能處理器產品,并對其進行篩選和航天工程化處理,滿足型號任務對高性能處理器的需求[20-21]。
龍芯中科從2006年開始研制抗輻照CPU技術,經過10余年的積累,掌握了宇航級抗輻照處理器的技術重點和難點,推出系列抗輻照CPU產品。目前,龍芯抗輻照CPU主要發展兩個系列:一是基于0.18 μm體硅進行抗輻照加固設計的低端系列;二是基于0.13 μm 硅技術(SOI)工藝進行加固設計的高端系列。龍芯抗輻照/抗核CPU發展路線見表5。

表5 龍芯抗輻照/抗核CPU發展路線
低端系列包括龍芯1E04(主處理器)和1F04(協處理器)兩款產品。其中龍芯1E04集成了雙發射GS232處理器核,是一款通用的抗輻照CPU,主頻為66 MHz;龍芯1F04主要特點是集成了比較豐富的航天專用接口,可用一片1F處理器替代若干現場可編程門陣列(FPGA)所實現的功能。龍芯1F04還集成了GS132處理器核,主頻為33 MHz。在對性能要求較低的場合,龍芯1F可以單獨作為SoC使用;在對性能要求較高的場合,龍芯1E04和龍芯1F04可以通過PCI總線配合使用。目前龍芯1E04和龍芯1F04已經研制成功,并于2014年完成鑒定檢驗。初步測試結果表明:實測抗輻照能力遠大于項目立項時的目標值。如總劑量目標值為100 krad(Si),實測值大于500 krad(Si);單粒子鎖定目標值大于75 MeV·cm2·mg-1,實測值大于99.8 MeV·cm2·mg-1;IGSO軌道翻轉率目標值小于10-10次·位-1·d-1,實測值小于10-13次·位-1·d-1。
高端系列使用0.13 μm SOI工藝將龍芯1E04和1F04升級為龍芯1E300和1F300。在功能上,龍芯1E300較1E04增加了一個Spacewire接口,其余不變。在性能上,龍芯1E300集成了64位雙發射GS264處理器核,支持128位向量,主頻提高到200 MHz以上,運算能力達到400 億次/s,性能相比1E04提高了3~5倍。龍芯1F300的處理器核主頻也相應提高,同時集成SpaceWire高速總線接口。在提升抗輻照能力上,使用SOI工藝要優于使用體硅加固技術。龍芯1E300已于2018年推出,龍芯1F300預計于2019年推出。
龍芯中科還研制了抗輻照MCU龍芯1 J,該芯片采用130 nm Flash工藝,具有低功耗、高可靠、高集成度的優點,已于2018年推出。
依托北斗衛星專項,龍芯抗輻照CPU已在北斗裝備星上得到應用[22-24]。2015年3月31日,我國首顆IGSO新一代北斗導航衛星搭載龍芯1E04和1F04發射升空。2016年2月1日發射的新一代北斗導航中地球軌道(MEO)衛星,采用改版龍芯1E04和1F04芯片,工作狀態良好。2018年,北斗三號6顆組網裝備衛星上采用龍芯抗輻照1E04和1F04的終端處理器及平臺控制載荷,工作狀態良好。目前龍芯1E300已成功在北斗三號衛星上搭載試驗,解決了我國航天工程中高性能抗輻照處理器受制于國外禁運的問題,實現了我國航天器國產化處理器在性能方面的跨越式發展。
龍芯抗輻照CPU片內所有IP(包括處理器核)均從源代碼開始自主設計,流片封裝均采用境內工藝,BIOS和操作系統的源代碼均是自主掌握。龍芯抗輻照CPU采用的龍芯系列處理器核通過了地面軍用、民用芯片的批量(100萬片以上)應用檢驗,結構和邏輯成熟度高;其他邏輯模塊及接口在不同龍芯處理器上也得到了充分地面應用驗證。龍芯CPU的抗輻照技術包括使用環柵進行抗總劑量加固及抗閂鎖加固;使用三模冗余的互鎖觸發器,提升觸發器抗單粒子輻照能力;使用互鎖存儲結構及錯誤檢查糾正(ECC),提升存儲器抗單粒子輻照能力;設計采用時空三模冗余,增強組合邏輯對單粒子輻射的承受能力。北斗裝備星在空間環境惡劣,距地面20 000 km的軌道上運行了3年,未出現一次可確認的單粒子翻轉事件。
基于龍芯抗輻照CPU可形成穩定的系列化系統解決方案。龍芯1F04及1F300分別形成高低搭配的獨立SoC解決方案。龍芯1E04+1F04及1E300+1F300分別形成高低搭配的CPU+橋片解決方案;龍芯1 J則形成微控制單元(MCU)解決方案。其中:在衛星平臺綜合電子系統(星上數據處理系統)中,可采用龍芯1E(主處理器)+1F(協處理器)(橋片)的方案替代原先的AT695/AT697+ FPGA擴展外部接口的方案。例如:北斗三號型號任務中,中國航天電子技術研究院研制的星務計算機系統首次采用龍芯1E300+1F設計方案替代原有的AT697方案。在衛星平臺姿態控制載荷中,可采用龍芯1E+FPGA方案替代原有FPGA,AT697+FPGA和部分DSP+FPGA的方案。例如:北京航天時代光電科技有限公司的光纖陀螺、中國科學院成都光電技術研究所的太陽敏感器、中國科學院上海技術物理研究所的地球敏感器等均采用龍芯處理器替代方案。在航天工程應用上也可以考慮選用獨立龍芯1F處理器替代原有進口的單片機(80C31,80C32等)、FPGA(30萬門以下)和性能要求較低的數字信號處理器(DSP)。
現階段,龍芯中科已掌握MIPS(microprocessor without interlocked pipod stages)指令集和處理器微結構設計,以及抗輻照加固技術、工藝及設計規范,設計研制了以LS1E和LS1F為代表的抗輻照處理器,其性能達到國外抗輻照處理器的指標。在航天型號任務中,采用MIPS架構的抗輻照處理器技術路線作為SPARC(scalable processor ARChitecture)架構技術路線的有力補充,能有效提升國產航天器綜合電子系統的安全性和可靠性。在衛星平臺和載荷中,也可采用龍芯抗輻照處理器的替代方案,將其作為主份或備份載荷,從而形成我國特有的國產化安全自主可控抗輻照處理器的體系。
發展自主CPU應堅持走“以市場帶技術”的自主研發道路,而不應走“以市場換技術”的引進技術道路。發展自主CPU,構建自主可控的信息技術體系,在航天領域研制高性能自主可控抗輻照處理器,是我國航天裝備發展的需要。龍芯CPU研發和應用實踐表明:堅持自主研發,堅持建設自主生態的CPU是很有必要的。