2006年9月13日,以長征勝利70周年命名為CZ70的龍芯2E通過科技部組織的驗收,時任科技部部長徐冠華親自參加了龍芯2E的驗收會。龍芯2E的研制是“十五”末國家863計劃緊急安排的一個任務(wù)。當(dāng)時“漢芯”造假事件被曝光,加上“十五”863計劃早期支持的龍芯2C沒有達(dá)到合同要求的SPEC CPU2000分值300分的目標(biāo),自主處理器研發(fā)受到普遍質(zhì)疑。
龍芯總設(shè)計師胡偉武
2005年4月,科技部高新司領(lǐng)導(dǎo)把我叫到辦公室,問我到2005年年底前能不能完成863計劃“十五”初制定的主頻1GHz、SPEC CPU2000分值達(dá)到500分的目標(biāo)。我說剩下不到一年時間,肯定來不及。他說根據(jù)有關(guān)規(guī)定,項目時間到期后三個月內(nèi)(即2006年3月底前)提出驗收申請就算按時完成。我硬著頭皮接了該任務(wù),因為我知道如果“十五”的任務(wù)完不成,那“十一五”國家是不是還支持自主CPU研發(fā)就成問題。經(jīng)過艱苦的努力,龍芯2E在2005年11月底交付流片(把設(shè)計好的技術(shù)文件交給芯片生產(chǎn)廠家進(jìn)行生產(chǎn)),2006年3月18日流片成功,達(dá)到了技術(shù)指標(biāo)。雖然達(dá)到這些指標(biāo)有些勉強(qiáng)(SPEC CPU2000分值達(dá)到500分是計算所的編譯組做了很多編譯優(yōu)化實現(xiàn)的,但SPEC CPU的測試是允許進(jìn)行編譯優(yōu)化的),但畢竟完成了指標(biāo)。
龍芯2E的意義從徐冠華部長參加完驗收會后接受記者采訪時說的一句話可以看出:龍芯2E的成功表明,我國在“十五”期間安排的自主CPU研發(fā)是成功的。這也為“十一五”期間國家繼續(xù)支持自主CPU研發(fā)打下了基礎(chǔ)。
2005年深秋,利用龍芯2E流片后等待芯片回來的時間,我?guī)е糠铸埿菊n題組的骨干在香山別墅討論龍芯3號的結(jié)構(gòu)方案。
在龍芯3號結(jié)構(gòu)基本確定后就展開了龍芯3號CPU的研發(fā)。但當(dāng)時“十五”863課題結(jié)束了,“十一五”“核高基”(即“核心電子器件、高端通用芯片和基礎(chǔ)軟件產(chǎn)品”重大專項)課題遲遲啟動不了。為此,科學(xué)院對龍芯3號的研制給了500萬元的前期經(jīng)費支持(執(zhí)行期限2007年1月到2007年12月)。科技部高新司馮記春司長得知龍芯3號的第一款芯片龍芯3A1000已經(jīng)基本完成設(shè)計,但缺少流片費時,在863計劃內(nèi)緊急安排了2000萬的經(jīng)費支持龍芯3號的研制(執(zhí)行期限2008年1月到2010年12月)。原計算所所長李國杰院士曾經(jīng)在計算所中層干部會上當(dāng)眾點我的名說,“胡偉武,你不能以任何經(jīng)費的理由放緩龍芯3號的研制,計算所就是砸鍋賣鐵也要支持龍芯的研發(fā)”,并在所內(nèi)設(shè)立了一個經(jīng)費沒有封頂?shù)恼n題,到2010年龍芯第一筆“核高基”課題經(jīng)費到賬時,龍芯課題組已經(jīng)預(yù)支了計算所七八千萬元經(jīng)費。
不記得經(jīng)歷了多少加班加點,龍芯3A1000于2008年底交付流片。只記得流片前的幾個月每天晚上10點開例會安排工作。晚上10點例會是非常高效的一種工作方法,會后大家把有關(guān)設(shè)計在EDA服務(wù)器上跑起來再回家,第二天早上上班時剛好跑出結(jié)果來;如果是早上上班后開始在EDA服務(wù)器上跑,基本上大半天就在等待服務(wù)器運行出結(jié)果中度過。在此后龍芯CPU問題的攻關(guān)中,一直沿襲了晚上例會安排工作的方法。
2009年5月20日龍芯3A1000晶圓生產(chǎn)下線,9月28日樣片回來,成功啟動操作系統(tǒng),主頻800MHz~1GHz。龍芯3A1000在2012年又進(jìn)行了第二次改版。3A1000的第二次改版于2012年2月下旬流片,2012年8月中旬流片成功。至此龍芯3A1000就很穩(wěn)定了,至今還是龍芯銷售的一款重要芯片,尤其是在工控領(lǐng)域。
現(xiàn)在回頭看,龍芯3A1000的研制是成功的。3A1000是我國第一個四核CPU芯片。在3A1000的研制過程中,我們掌握了多核CPU的片內(nèi)互連及Cache一致性技術(shù),以及片間多路互連技術(shù)。直到今日,龍芯仍然是唯一能支持多路服務(wù)器的自主CPU。在最近國外CPU企業(yè)對中國企業(yè)的CPU技術(shù)授權(quán)中,支持多路服務(wù)器的技術(shù)受美國政府限制還是不能給中國的。龍芯3A1000處理器核的性能略高于Pentium III的水平,在2006年龍芯2E剛出來時這個性能還說得過去。龍芯3A1000仍沿用該處理器核有點慢了,但在應(yīng)用比較固定的很多領(lǐng)域還能用,按理說龍芯的下一款CPU應(yīng)該致力于處理器核的性能優(yōu)化,大幅度提高通用處理性能,但在學(xué)院派的思想主導(dǎo)下,隨后的龍芯3B走了彎路,使龍芯遭受了挫折。
龍芯3B的研發(fā)得到“核高基”重大專項的支持,是在龍芯團(tuán)隊轉(zhuǎn)型成立公司(龍芯中科技術(shù)有限公司)以及有關(guān)部門大力展開自主基礎(chǔ)軟硬件應(yīng)用試點的背景下展開研制的。2010年把龍芯課題組轉(zhuǎn)型成立公司是下了很大決心的,當(dāng)時已認(rèn)識到不能腳踩兩只船,辦企業(yè)和做研究不一樣,即使嘔心瀝血,也是九死一生,因此一定要專心,要求絕大多數(shù)技術(shù)骨干都從計算所辭職。
龍芯公司的成立得到很多領(lǐng)導(dǎo)專家的支持。龍芯3B的研發(fā)工作在2008年底龍芯3A交付流片后開始全面展開。首款龍芯3B1000繼續(xù)基于65nm工藝,目標(biāo)主頻800MHz~1GHz,八核結(jié)構(gòu),每個核包含兩個256位向量部件,峰值浮點性能達(dá)到128GFLOPS,這在當(dāng)時處于世界領(lǐng)先行列。龍芯3B1000于2010年6月20日左右流片,2010年11月底回來第一批芯片。但第一批芯片回來測試并不順利,連操作系統(tǒng)都啟動不了。很快就找到了原因:由于芯片可測性設(shè)計部分的邏輯設(shè)計錯誤,在功能模式下誤把內(nèi)存引腳置為測試狀態(tài),導(dǎo)致芯片訪問不了內(nèi)存,通過FIB(用離子束改變硅片上的連線)修復(fù)后功能正常。
這是一個重大的打擊,龍芯歷史上從來沒有犯過這樣簡單的錯誤,而且在同一時期流片的龍芯1A、龍芯2I等芯片也出現(xiàn)了由于簡單工作失誤引起的錯誤。究其原因,是龍芯團(tuán)隊在2010年初從課題組管理機(jī)制轉(zhuǎn)向公司管理機(jī)制的過程中,原來“作坊式”的設(shè)計流程被打破了,“工業(yè)化”的設(shè)計流程沒有建立起來。在課題組階段,我作為課題組長,每顆芯片從結(jié)構(gòu)設(shè)計、邏輯設(shè)計、功能驗證、可測性設(shè)計、定制設(shè)計、物理設(shè)計各個環(huán)節(jié)從頭盯到尾,及時協(xié)調(diào)各組的配合,關(guān)注每一個細(xì)節(jié),因此沒有出現(xiàn)管理上的錯誤。而在3B1000的研制過程中,龍芯課題組轉(zhuǎn)型成立了龍芯公司,我的主要精力轉(zhuǎn)向公司,芯片研發(fā)的總協(xié)調(diào)人缺位,導(dǎo)致頻頻失誤。痛定思痛,從此我著手芯片研制的質(zhì)量體系建設(shè),建立了“五步法”(立項、方案、簽核、測試、結(jié)項)研制過程,并詳細(xì)規(guī)定了每個階段的研發(fā)和審核內(nèi)容。在此后龍芯公司進(jìn)行的幾十次流片中,沒有出現(xiàn)過嚴(yán)重的質(zhì)量問題,而且比我作為課題組長天天盯著效率高很多。
龍芯3B的研制過程真是一波三折。出現(xiàn)過龍芯從課題組向公司轉(zhuǎn)型過程中的管理問題,生產(chǎn)廠家引起的問題,多核互相訪問引起的死鎖問題,處理器核Cache一致性引起的問題。在解決了一個個問題后總算取得了成功。
但龍芯3B的主要問題不在研制過程中,而是剛開始定方向就出了很大偏差。主要問題在于雖然龍芯團(tuán)隊從課題組轉(zhuǎn)型成為了公司,但龍芯3B的研發(fā)還保持著學(xué)院派導(dǎo)向,過度追求多核以及浮點峰值性能的單一指標(biāo),通用處理性能不足,滿足不了在“十一五”期間展開的自主CPU應(yīng)用和試點對性能的要求。
龍芯3B在學(xué)術(shù)上是成功的,3B1500峰值浮點運算速度達(dá)到160GFLOPS,現(xiàn)在拿出來也不丟人,當(dāng)時在國際上算高的。但3B1500的通用處理能力比3A1000提高得不多,通過每個處理器核增加128KB的私有二級Cache以及主頻及內(nèi)存頻率的提高,3B1500的單核通用處理性能比3A1000提高了30%~50%,但與國外主流產(chǎn)品的性能差距還很大。
“十一五”期間,多核CPU成為國際學(xué)術(shù)界的熱點研究方向。因此,學(xué)院派思想主導(dǎo)的國內(nèi)CPU在“十一五”期間都放松了單核性能的提高,而是轉(zhuǎn)做多核,而且核數(shù)做得比國外還多。2006年研制成功的龍芯2E的通用處理性能與市場上主流X86處理器差一到兩倍,但龍芯CPU的單核性能從2006年的龍芯2E到2013年的龍芯3B1500只提高了50%左右;而在此期間市場主流X86處理器的單核通用處理性能提高了5倍以上。也就是說,“十一五”期間我國CPU通用處理性能被國外大幅度拉開了距離,從相差一到兩倍到相差一個數(shù)量級。
技術(shù)上的差距體現(xiàn)在市場上就是不好用?!笆晃濉逼陂g,國家有關(guān)部門在涉及國家安全的領(lǐng)域開始了自主CPU應(yīng)用試點,大量的應(yīng)用往基于自主CPU和操作系統(tǒng)的計算機(jī)上移植。在2011—2013年的3年中,以嵌入式計算機(jī)為代表的裝備類應(yīng)用取得了不少成功;而以通用PC和服務(wù)器為代表的信息化類應(yīng)用雖然通過基礎(chǔ)軟硬件的磨合優(yōu)化取得了較大進(jìn)展,但由于自主CPU的性能基礎(chǔ)與國外產(chǎn)品有數(shù)量級差距,在很多應(yīng)用中遭遇性能瓶頸。
由于自主CPU的通用處理性能不夠,2013年起,“核高基”基本上放棄了CPU自主研發(fā)路線,轉(zhuǎn)而支持引進(jìn)國外CPU技術(shù)的路線。以IBM、AMD、威盛、ARM為代表的國外/境外CPU乘虛而入,紛紛尋求與國內(nèi)企業(yè)合資或開放技術(shù)授權(quán)的方式,把原來的產(chǎn)品搖身一變成為自主CPU(操作系統(tǒng)和數(shù)據(jù)庫也有類似情況)。這使得主要靠國家支持進(jìn)行研發(fā)的龍芯CPU陷入了巨大困境。
雖然當(dāng)時對“核高基”支持引進(jìn)CPU不滿,但究其原因,還是我們自己在“十一五”“核高基”支持的龍芯3B上沒有擺脫學(xué)院派的慣性,走了彎路,滿足不了當(dāng)時迫切的自主信息化市場需求。
痛定思痛,知恥后勇。2013年5月,龍芯公司結(jié)合市場需求對CPU的研發(fā)路線進(jìn)行了認(rèn)真調(diào)整。
一是龍芯3號系列多核CPU不追求核的個數(shù)而是大幅度提高單核性能,放棄高性能機(jī)專用CPU的研制,暫停16核處理器研制,重點把雙核、四核處理器做精做透。二是龍芯2號系列SOC芯片不追求“大而全”的復(fù)雜度,而是重視結(jié)合用戶需求定義芯片,以及SOC片內(nèi)互連的通暢性。三是龍芯1號系列結(jié)合特定應(yīng)用,如宇航、石油、流量表等研制專用芯片,專用芯片產(chǎn)業(yè)鏈短,容易形成技術(shù)優(yōu)勢并快速形成銷售(如面向宇航應(yīng)用的龍芯1E和1F已經(jīng)為龍芯公司帶來持續(xù)穩(wěn)定的銷售收入)。
從2014年下半年開始,龍芯研發(fā)和市場結(jié)合的作用開始顯現(xiàn),2014年龍芯公司銷售收入比2013年增長51%;2015年在2014年基礎(chǔ)上再增長57%,為龍芯公司的可持續(xù)發(fā)展奠定了良好的基礎(chǔ)。龍芯公司逐漸擺脫國家項目的支持,能夠主要通過市場銷售養(yǎng)活團(tuán)隊和產(chǎn)品研發(fā)。
基于上述對龍芯CPU研發(fā)路線的調(diào)整,2013年5月,我們暫停了已經(jīng)完成主要設(shè)計的16核龍芯3C處理器流片,開始四核3A2000處理器的研發(fā)。核多了沒有用,單核必須要強(qiáng)。就像體育比賽,靠人多取勝的只有拔河(相當(dāng)于計算機(jī)中的高性能計算機(jī)),絕大多數(shù)項目要靠運動員個人素質(zhì)。3A2000主要目標(biāo)就是大幅度提高單核性能,使單核通用處理器性能提高3倍以上。
目前3A2000已經(jīng)進(jìn)入量產(chǎn)階段,其中經(jīng)過測試支持通過直連形成多路服務(wù)器的芯片成為3B2000。
龍芯3A3000是在2015年5月臨時安排研制的。2015年5月初,我去常熟跟龍芯夢蘭公司的張福新、吳少剛等人討論3A2000整機(jī)解決方案的研發(fā)。大家對3A2000大幅度提升性能都很高興,大大增強(qiáng)了信心。經(jīng)過認(rèn)真討論,我們認(rèn)為如果我們采用Intel的Tick-Tock(嘀嗒)研發(fā)策略,應(yīng)該可以很快推出主頻1.5GHz以上,綜合性能超過2GHz的ARM和威盛的處理器。Tick指的是結(jié)構(gòu)不變,通過工藝優(yōu)化提升性能;Tock指的是工藝不變,通過結(jié)構(gòu)優(yōu)化提升性能。Tick-Tock策略可以把兩個芯片流水推進(jìn),加快進(jìn)度的同時降低技術(shù)風(fēng)險。
2016年10月17日,龍芯3A3000通過了龍芯公司質(zhì)量體系要求的商業(yè)級產(chǎn)品的鑒定檢驗摸底測試(工業(yè)級產(chǎn)品鑒定檢驗工作正在同步展開),表明龍芯3A3000可以進(jìn)入批量生產(chǎn)狀態(tài)。目前3A3000已開始小批量生產(chǎn),其中經(jīng)過測試支持通過直連形成多路服務(wù)器的芯片成為3B3000。
龍芯3A3000運行SPEC CPU2000定點分值1100多分,浮點分值1700多分,運行一遍不到一個半小時?;叵?002年龍芯1號剛誕生時,運行一遍SPEC CPU2000需要近3天時間,龍芯2C由于SEPC CPU2000分值沒有達(dá)到863課題合同要求的300分而沒有完成驗收,龍芯2E費了九牛二虎之力才勉強(qiáng)達(dá)到500分,真是“向來枉費推移力,今日中流自在行”。
3A3000研制成功對自主CPU來說具有里程碑意義。
首先,3A3000的通用處理性能已經(jīng)跨過了國際通用處理器性能的第一個門檻,其單核SPEC CPU2006性能已經(jīng)不低于ARM用于服務(wù)器的高端處理器、Intel的低端系列(凌動系列)處理器以及威盛處理器,而且3A3000的訪存帶寬已經(jīng)與AMD以及Intel的高端系列(酷睿系列)持平。這樣的性能玩復(fù)雜的3D游戲可能還有差距,但對于以黨政辦公為代表的事務(wù)處理應(yīng)用是足夠了(如果軟件做適當(dāng)磨合優(yōu)化,3A2000就夠了)。龍芯3A3000跨過了國際通用處理器性能的第一個門檻后,也為下一步跨越第二個門檻(即達(dá)到Intel和AMD主流處理器的性能)打下了堅實的基礎(chǔ)。
其次,3A3000的通用處理性能超過了目前靠引進(jìn)ARM和威盛技術(shù)發(fā)展的國內(nèi)同類(四核)CPU?!笆晃濉遍_始的自主信息化應(yīng)用試點發(fā)現(xiàn)第一代自主CPU通用處理性能不夠的問題后,國內(nèi)CPU研制單位均展開了第二代CPU的研發(fā),并衍生出三條不同的技術(shù)路線。第一條是以龍芯和申威為代表的“研”的路線,即通過分析第一代產(chǎn)品應(yīng)用中發(fā)現(xiàn)的問題進(jìn)行自主研發(fā)升級。第二條是“攢”的路線,即使用國外的處理器核“攢”SOC,并在此基礎(chǔ)上對處理器核進(jìn)行局部優(yōu)化。第三條是“O(ODM)”的路線,即中國人掏錢請外國人干,目前主要是把國外/境外已有的現(xiàn)成設(shè)計直接拿過來換成中國的品牌。由于自主研發(fā)路線在“十一五”期間走了彎路,很多人對自主研發(fā)路線產(chǎn)生了疑慮,覺得此路不通,因此“核高基”在“十二五”期間主要支持以ARM的處理器核“攢”SOC的路線和“O”威盛的路線為主。一是錢多,二是引進(jìn)別人的產(chǎn)品省時間,加上龍芯3A2000與境內(nèi)工藝磨合,在產(chǎn)品化方面花了較多時間,從2014年年底到2016年年初大約一年半的時間,采用引進(jìn)技術(shù)的CPU大肆攻擊自主CPU性能不行,要求在已有的自主信息化試點中換掉龍芯(而且確實換掉了一些),給龍芯造成很大壓力。
3A3000的通用處理性能超過引進(jìn)的ARM和威盛技術(shù)的CPU,加上前些日子使用申威處理器的“太湖之光”高性能機(jī)取得世界第一的好成績,充分說明不論是通用CPU還是高性能機(jī)專用CPU,自主研發(fā)的道路都是走得通的,不僅安全性好,性能也高。尤其是通過自主研發(fā)形成持續(xù)改進(jìn)能力后,未來的后勁更足??梢哉f,在與引進(jìn)CPU的技術(shù)路線的斗爭中,龍芯3A3000拉開了自主CPU戰(zhàn)略反攻的序幕。尤其值得指出的是,龍芯3A3000的研制沒有得到國家項目的補(bǔ)助,是完全由企業(yè)自己掏錢研制的自主通用CPU,也具有里程碑意義。
(此文為龍芯總設(shè)計師胡偉武于2016年10月撰寫的《我們的龍芯3號——致龍芯15周年》。原文共兩萬余字,本文有刪減,標(biāo)題為編者所加。)