近日,,龍芯中科宣布3A3000四核處理器芯片完成流片并通過系統(tǒng)測(cè)試,。根據(jù)現(xiàn)有的測(cè)試結(jié)果,龍芯3A3000達(dá)到了預(yù)定的設(shè)計(jì)性能目標(biāo),。其中,,綜合計(jì)算性能方面,在1.5GHz主頻下,,GCC編譯的SPEC CPU 2006定點(diǎn)和浮點(diǎn)單核分值分別超過11分和10分,;訪存性能方面,Steam分值超過13GBps,。 龍芯3A3000的流片成功,,標(biāo)志著我國(guó)自主研發(fā)的高性能微處理器芯片,可以超越目前引進(jìn)的同類芯片性能,。龍芯CPU首席科學(xué)家胡偉武撰文披露了龍芯3號(hào)開發(fā)的歷程,。
龍芯3A3000芯片
2016年是紅軍長(zhǎng)征勝利80周年,2016年研制成功的龍芯3A3000處理器即以CZ80命名,,每顆芯片的硅片上都刻有CZ80字樣,。
1936年10月,,紅一、二,、四方面軍經(jīng)過艱苦卓絕的努力,,三大主力會(huì)師,開創(chuàng)了中國(guó)革命的新局面,。它雄辯地表明,,只要堅(jiān)持理想,實(shí)事求是,,中國(guó)共產(chǎn)黨完全有能力摧堅(jiān)于正銳,、挽瀾于極危,從重大挫折中走出來(lái),。
2016年10月,,以長(zhǎng)征勝利80周年命名為CZ80的龍芯3A3000處理器研制成功。它雄辯地表明,,只要堅(jiān)持自主研發(fā),進(jìn)行持續(xù)改進(jìn),,自主研發(fā)的CPU性能完全可以超過引進(jìn)技術(shù)的CPU,,滿足自主信息化需求。
2016年10月7日,,我懷著虔誠(chéng)的心情走進(jìn)毛主席紀(jì)念堂,,向毛主席匯報(bào)龍芯3A3000的研制成功。步出毛主席紀(jì)念堂,,我感慨萬(wàn)千,。當(dāng)十年前我開始龍芯3號(hào)研制時(shí),完全沒有想到龍芯3號(hào)系列CPU發(fā)展道路之曲折,,奮斗之艱辛,,付出之巨大。
2006年9月13日,,以長(zhǎng)征勝利70周年命名為CZ70的龍芯2E通過科技部組織的驗(yàn)收,,時(shí)任科技部部長(zhǎng)徐冠華親自參加了龍芯2E的驗(yàn)收會(huì)。龍芯2E的研制是“十五”末國(guó)家863計(jì)劃緊急安排的一個(gè)任務(wù),。當(dāng)時(shí)“漢芯”造假事件被曝光,,加上“十五”863計(jì)劃早期支持的龍芯2C沒有達(dá)到合同要求的SPEC CPU2000分值300分的目標(biāo),自主處理器研發(fā)受到普遍質(zhì)疑,。2005年4月,,科技部高新司領(lǐng)導(dǎo)把我叫到辦公室,問我到2005年年底前能不能完成863計(jì)劃“十五”初制定的主頻1GHz,、SPEC CPU2000分值達(dá)到500分的目標(biāo),。我說(shuō)剩下不到一年時(shí)間,,肯定來(lái)不及。他說(shuō)根據(jù)有關(guān)規(guī)定,,項(xiàng)目時(shí)間到期后三個(gè)月內(nèi)(即2006年3月底前)提出驗(yàn)收申請(qǐng)就算按時(shí)完成,。我硬著頭皮接了該任務(wù),因?yàn)槲抑廊绻笆濉钡娜蝿?wù)完不成,,那“十一五”國(guó)家是不是還支持自主CPU研發(fā)就成問題,。經(jīng)過艱苦的努力,龍芯2E在2005年11月底交付流片(把設(shè)計(jì)好的技術(shù)文件交給芯片生產(chǎn)廠家進(jìn)行生產(chǎn)),,2006年3月18日流片成功,,達(dá)到了技術(shù)指標(biāo)。雖然達(dá)到這些指標(biāo)有些勉強(qiáng)(SPEC CPU2000分值達(dá)到500分是計(jì)算所的編譯組做了很多編譯優(yōu)化實(shí)現(xiàn)的,,但SPEC CPU的測(cè)試是允許進(jìn)行編譯優(yōu)化的),,但畢竟完成了指標(biāo)。龍芯2E的意義從徐冠華部長(zhǎng)參加完驗(yàn)收會(huì)后接受新聞聯(lián)播記者采訪時(shí)說(shuō)的一句話可以看出:龍芯2E的成功表明,,我國(guó)在“十五”期間安排的自主CPU研發(fā)是成功的,。這也為“十一五”期間國(guó)家繼續(xù)支持自主CPU研發(fā)打下了基礎(chǔ)。
2005年深秋,,利用龍芯2E流片后等待芯片回來(lái)的時(shí)間我?guī)е糠铸埿菊n題組的骨干在香山別墅討論龍芯3號(hào)的結(jié)構(gòu)方案,。香山別墅和香山飯店一樣在香山公園內(nèi),但比香山飯店便宜而且清靜,。香山別墅三天討論的成果是基本明確了龍芯3號(hào)系列CPU的可伸縮互連結(jié)構(gòu)以及基于目錄的Cache一致性協(xié)議,。龍芯3號(hào)的互連結(jié)構(gòu)中,每個(gè)結(jié)點(diǎn)四個(gè)處理器核通過交叉開關(guān)進(jìn)行全相連,,結(jié)點(diǎn)間(不論片上還是片間)通過可伸縮的mesh網(wǎng)絡(luò)相連,;多核的Cache一致性采用基于目錄的一致性協(xié)議,目錄設(shè)置在片上共享的最后一級(jí)Cache(LLC)上,。上述結(jié)構(gòu)有別于當(dāng)時(shí)主流的環(huán)狀多核互連以及基于偵聽的Cache一致性協(xié)議?,F(xiàn)在看來(lái),該結(jié)構(gòu)是成功的,,目前商用主流處理器隨著核數(shù)的增加也越來(lái)越多采用可伸縮的互連結(jié)構(gòu)以及基于目錄的Cache一致性協(xié)議,。
在香山別墅的討論中還明確了龍芯3號(hào)片內(nèi)集成內(nèi)存控制器以及HyperTransport(簡(jiǎn)稱HT)接口。HT是AMD主推的系統(tǒng)總線接口,。當(dāng)時(shí)計(jì)算所高性能中心與AMD合作緊密,,希望我們使用HT接口。此外HT接口比較開放,,只要每年交5000美元就可以用于商業(yè)應(yīng)用,,但AMD開放的HT接口不支持多片互連的Cache一致性協(xié)議,我們自己進(jìn)行了擴(kuò)充。曾經(jīng)有一段時(shí)間,,我后悔選擇了HT總線,,覺得HT總線不如PCIE總線普及,一是HT總線沒有現(xiàn)成的PHY(片內(nèi)高速接口模塊)可以買到,,每次工藝升級(jí)都需要定制HT的PHY,,而PCIE的PHY有很多;二是PCIE接口的外圍器件很多,,而HT接口的橋片只有AMD有,。但現(xiàn)在覺得選用HT是對(duì)的。HT是系統(tǒng)總線,,協(xié)議簡(jiǎn)單高效,,相當(dāng)于Intel的QPI系統(tǒng)總線,而PCIE是IO總線,,通過HT總線可以方便地把多片龍芯3號(hào)直連起來(lái)形成多路服務(wù)器,。雖然每次工藝升級(jí)都要定制HT PHY,但可以使龍芯CPU不依賴別人的IP,,自主性強(qiáng),。龍芯3號(hào)所有CPU中,沒有一款CPU需要到廠家merge第三方IP,。尤其是龍芯3A2000和3A3000,,除了廠家提供的標(biāo)準(zhǔn)單元庫(kù)、單/雙端口RAM以及低速IO單元,,每一行代碼(包括CPU核、內(nèi)存控制器,、HT控制器,、互連網(wǎng)絡(luò)等)以及每一個(gè)定制模塊(包括多端口寄存器堆、鎖相環(huán),、HT PHY,、DDR2/3 PHY等)都自主設(shè)計(jì)。至于外圍橋片,,龍芯已經(jīng)開始研制并提供外圍橋片,,橋片上支持足夠多的PCIE接口。以后不論AMD是否繼續(xù)發(fā)展HT接口,,龍芯都能自成體系往前走了,。
香山別墅會(huì)議的另外一個(gè)成果是明確了龍芯抗輻照CPU的發(fā)展。有一天晚上8點(diǎn)左右,,我們正在會(huì)議室熱烈地討論龍芯3號(hào)的結(jié)構(gòu),,當(dāng)時(shí)在計(jì)算所科研處工作的夏洪流和傅信國(guó)給我打電話說(shuō)是要來(lái)跟我談一個(gè)項(xiàng)目的事。他們到香山別墅已是晚上9點(diǎn)多,,我們就坐在香山別墅的走廊盡頭談,,他們說(shuō)科學(xué)院有一個(gè)抗輻照CPU的預(yù)研項(xiàng)目,,希望龍芯課題組來(lái)承擔(dān)。我剛開始不愿意做,,結(jié)果他們好說(shuō)歹說(shuō)地讓我勉強(qiáng)答應(yīng)了,,當(dāng)時(shí)的一個(gè)理由是領(lǐng)導(dǎo)每年對(duì)他們爭(zhēng)取的項(xiàng)目經(jīng)費(fèi)有要求,我如果不做這個(gè)抗輻照CPU項(xiàng)目,,他們的任務(wù)就完不成了,,我頭腦一熱就答應(yīng)了。現(xiàn)在龍芯抗輻照CPU已經(jīng)隨著以北斗為代表的多顆衛(wèi)星在天空翱翔,,每年還為龍芯公司帶來(lái)較可觀的收入,,成為龍芯公司的戰(zhàn)略產(chǎn)品并開始走向系列化。真是非常感謝夏洪流和傅信國(guó)那天晚上的苦口婆心,。
在龍芯3號(hào)結(jié)構(gòu)基本確定后就展開了龍芯3號(hào)CPU的研發(fā),。但當(dāng)時(shí)“十五”863課題結(jié)束了,“十一五”“核高基”(即“核心電子器件,、高端通用芯片和基礎(chǔ)軟件產(chǎn)品”重大專項(xiàng))課題遲遲啟動(dòng)不了,。為此,科學(xué)院對(duì)龍芯3號(hào)的研制給了500萬(wàn)元的前期經(jīng)費(fèi)支持(執(zhí)行期限2007年1月到2007年12月),??萍疾扛咝滤抉T記春司長(zhǎng)得知龍芯3號(hào)的第一款芯片龍芯3A1000已經(jīng)基本完成設(shè)計(jì),但缺少流片費(fèi)時(shí),,在863計(jì)劃內(nèi)緊急安排了2000萬(wàn)的經(jīng)費(fèi)支持龍芯3號(hào)的研制(執(zhí)行期限2008年1月到2010年12月),。原計(jì)算所所長(zhǎng)李國(guó)杰院士曾經(jīng)在計(jì)算所中層干部會(huì)上當(dāng)眾點(diǎn)我的名說(shuō),“胡偉武,,你不能以任何經(jīng)費(fèi)的理由放緩龍芯3號(hào)的研制,,計(jì)算所就是砸鍋賣鐵也要支持龍芯的研發(fā)”,并在所內(nèi)設(shè)立了一個(gè)經(jīng)費(fèi)沒有封頂?shù)恼n題,,到2010年龍芯第一筆“核高基”課題經(jīng)費(fèi)到賬時(shí),,龍芯課題組已經(jīng)預(yù)支了計(jì)算所七、八千萬(wàn)元經(jīng)費(fèi),。
在龍芯3號(hào)研制過程中,,作為中法兩國(guó)在IT領(lǐng)域戰(zhàn)略合作的一部分,科技部安排龍芯CPU在意法半導(dǎo)體流片,。2006年10月26日,,在胡錦濤總書記和希拉克總統(tǒng)共同見證下,中國(guó)科學(xué)院與意法半導(dǎo)體在人民大會(huì)堂簽署了關(guān)于龍芯CPU戰(zhàn)略合作的文件,?;邶埿?E的成功,意法半導(dǎo)體還花三百多萬(wàn)美元授權(quán)費(fèi)購(gòu)買了龍芯2號(hào)系列產(chǎn)品的授權(quán),其中龍芯的第一個(gè)產(chǎn)品芯片龍芯2F于2007年7月31日流片成功,,目前仍在大量應(yīng)用中,。后來(lái)意法半導(dǎo)體由于自身業(yè)務(wù)的原因終止了購(gòu)買龍芯2號(hào)系列的產(chǎn)品授權(quán),計(jì)算所收回了龍芯2號(hào)的產(chǎn)品權(quán)利并同意不再收取剩余的三分之一左右授權(quán)費(fèi),,但我們從龍芯2F的研制中學(xué)會(huì)了意法半導(dǎo)體的芯片質(zhì)量管理,,學(xué)會(huì)如何把一個(gè)樣品變成產(chǎn)品。龍芯CPU在意法半導(dǎo)體的流片一直延續(xù)了下來(lái),,龍芯3A1000即使用意法半導(dǎo)體的65nm工藝流片,。
不記得經(jīng)歷了多少加班加點(diǎn),龍芯3A1000于2008年底交付流片,。只記得流片前的幾個(gè)月每天晚上十點(diǎn)開例會(huì)安排工作,。晚上十點(diǎn)例會(huì)是非常高效的一種工作方法,會(huì)后大家把有關(guān)設(shè)計(jì)在EDA服務(wù)器上跑起來(lái)再回家,,第二天早上上班時(shí)剛好跑出結(jié)果來(lái),;如果是早上上班后開始在EDA服務(wù)器上跑,基本上大半天就在等待服務(wù)器運(yùn)行出結(jié)果中度過,。在此后龍芯CPU問題的攻關(guān)中,,一直沿襲了晚上例會(huì)安排工作的方法。
2009年5月20日龍芯3A1000晶圓生產(chǎn)下線,,9月28日樣片回來(lái),,成功啟動(dòng)操作系統(tǒng),主頻800MHz-1GHz,。這是龍芯CPU第一次啟動(dòng)多核操作系統(tǒng),,免不了調(diào)一通。印象最深刻的是10月2日晚上熬了個(gè)通宵,,一起的有王劍等人,,剛開始是挨個(gè)核跑單核操作系統(tǒng),把每個(gè)核都跑一遍,,再把多核操作系統(tǒng)搞穩(wěn)定,一直到第二天早上才弄完,。
中國(guó)科學(xué)技術(shù)大學(xué)的陳國(guó)良院士曾經(jīng)在2007年用三百多顆龍芯2F搭建了峰值性能達(dá)到1TetaFLOPS的高性能計(jì)算機(jī)KD50,。在龍芯3A1000出來(lái)以后又用80顆龍芯3A1000搭建了KD60高性能計(jì)算機(jī)。在KD60運(yùn)行LINPACK過程中,,總是出現(xiàn)偶發(fā)性錯(cuò)誤,。這個(gè)錯(cuò)誤如果單個(gè)芯片跑一個(gè)月也碰不上一次,只有像KD60這樣80多片一起跑才會(huì)一天碰到一次,。有三個(gè)多月的時(shí)間,,我們一直進(jìn)行各種嘗試,試圖定位該錯(cuò)誤并明確其機(jī)理。現(xiàn)在只記得2010年春節(jié)的大年三十晚上還在跟當(dāng)時(shí)負(fù)責(zé)軟件的高翔商量進(jìn)行各種嘗試,,縮小搜索范圍,。一直到春節(jié)后才定位了這個(gè)錯(cuò)誤,錯(cuò)誤的原因是當(dāng)訪問Cache失效,,從內(nèi)存回填(Refill)數(shù)據(jù)時(shí),,同時(shí)回填一級(jí)和二級(jí)Cache,通常為了提高性能,,這是應(yīng)該的,。但在某種極端情況下出現(xiàn)了錯(cuò)誤,即二級(jí)Cache的回填由于二級(jí)Cache忙需要等待,,而處理器核得到一級(jí)Cache回填數(shù)據(jù)后繼續(xù)運(yùn)行,,該數(shù)據(jù)被修改后再?gòu)囊患?jí)Cache中替換出來(lái)寫回二級(jí)Cache,替換回來(lái)的新數(shù)據(jù)寫到二級(jí)Cache后,,從內(nèi)存回來(lái)的老數(shù)據(jù)再回填二級(jí)Cache把新數(shù)據(jù)沖掉了,,從而引起錯(cuò)誤。這個(gè)問題以及其它的小問題導(dǎo)致龍芯3A1000進(jìn)行了第一次改版并于2010年5月中旬流片,,10月底第一次改版流片成功,,然后開始了小批量生產(chǎn)。
龍芯3A1000在2012年又進(jìn)行了第二次改版,。第二次改版主要是雙路直連時(shí)在特定訪問序列下導(dǎo)致兩片間的互連網(wǎng)絡(luò)死鎖,。大致機(jī)理是HT協(xié)議的虛通道只有三個(gè),分別是POST,、NONPOST,、RESPONSE,而龍芯的片上網(wǎng)絡(luò)協(xié)議AXI有五個(gè)實(shí)通道,,分別是讀請(qǐng)求,、寫請(qǐng)求、寫數(shù)據(jù),、讀響應(yīng),、寫響應(yīng)。于是在通過HT傳輸Cache一致性協(xié)議時(shí),,就將寫請(qǐng)求與寫數(shù)據(jù)合并一個(gè)通道,,讀響應(yīng)與寫響應(yīng)合并一個(gè)通道傳輸。Cache一致性協(xié)議要求寫響應(yīng)不能被堵,,而讀響應(yīng)通道發(fā)出的二級(jí)Cache給一級(jí)Cache的一致性請(qǐng)求有時(shí)會(huì)因?yàn)橐患?jí)Cache處理不過來(lái)而被堵住,,這時(shí)就會(huì)順帶堵死寫響應(yīng)通道,導(dǎo)致死鎖,。當(dāng)時(shí)解決的辦法是在HT原有三個(gè)虛通道的基礎(chǔ)上增加了第四個(gè)虛通道并且允許寫命令與寫數(shù)據(jù)之間插入寫響應(yīng)包,。3A1000的第二次改版還解決了HT互連時(shí)一個(gè)異步握手的問題,。3A1000的第二次改版于2012年2月下旬流片,2012年8月中旬流片成功,。至此龍芯3A1000就很穩(wěn)定了,至今還是龍芯銷售的一款重要芯片,,尤其是在工控領(lǐng)域。
現(xiàn)在回頭看,,龍芯3A1000的研制是成功的,。3A1000是我國(guó)第一個(gè)四核CPU芯片。在3A1000的研制過程中,,我們掌握了多核CPU的片內(nèi)互連及Cache一致性技術(shù),,以及片間多路互連技術(shù)。直到今日,,龍芯仍然是唯一能支持多路服務(wù)器的自主CPU,。在最近國(guó)外CPU企業(yè)對(duì)中國(guó)企業(yè)的CPU技術(shù)授權(quán)中,支持多路服務(wù)器的技術(shù)受美國(guó)政府限制還是不能給中國(guó)的,。龍芯3A1000的處理器核沿襲了龍芯2E和龍芯2F的處理器核結(jié)構(gòu),,雖然在MIPS64兼容性方面有較大改進(jìn),性能只進(jìn)行了局部?jī)?yōu)化,。龍芯3A1000處理器核的性能略高于Pentium III的水平,,在2006年龍芯2E剛出來(lái)時(shí)這個(gè)性能還說(shuō)得過去。龍芯3A1000仍沿用該處理器核有點(diǎn)慢了,,但在應(yīng)用比較固定的很多領(lǐng)域還能用,,按理說(shuō)龍芯的下一款CPU應(yīng)該致力于處理器核的性能優(yōu)化,大幅度提高通用處理性能,,但在學(xué)院派的思想主導(dǎo)下,,隨后的龍芯3B走了彎路,使龍芯遭受了挫折,。
龍芯3B的研發(fā)得到“核高基”重大專項(xiàng)的支持,,是在龍芯團(tuán)隊(duì)轉(zhuǎn)型成立公司(龍芯中科技術(shù)有限公司)以及有關(guān)部門大力展開自主基礎(chǔ)軟硬件應(yīng)用試點(diǎn)的背景下展開研制的。2010年把龍芯課題組轉(zhuǎn)型成立公司是下了很大決心的,,當(dāng)時(shí)已認(rèn)識(shí)到不能腳踩兩只船,,辦企業(yè)和做研究不一樣,即使嘔心瀝血,,也是九死一生,,因此一定要專心,要求絕大多數(shù)技術(shù)骨干都從計(jì)算所辭職,。像張戈25歲就已經(jīng)是副高職稱,是學(xué)術(shù)上很有前途的苗子,,也毅然從計(jì)算所辭職,。下這么大決心,,與我當(dāng)時(shí)擔(dān)任全國(guó)人大代表,對(duì)中央以企業(yè)作為創(chuàng)新主體,,科技創(chuàng)新要為經(jīng)濟(jì)社會(huì)發(fā)展服務(wù)的精神非常了解有很大關(guān)系,。尤其是在“十七大”報(bào)告中,傳統(tǒng)的“科教文衛(wèi)”不再單獨(dú)作為一個(gè)板塊,,科技創(chuàng)新直接在經(jīng)濟(jì)發(fā)展的第一部分來(lái)描述,,對(duì)我觸動(dòng)很大。龍芯公司的成立得到很多領(lǐng)導(dǎo)專家的支持,。除了李國(guó)杰所長(zhǎng)的大力支持外,,路甬祥院長(zhǎng)專門批示,要求科學(xué)院有關(guān)部門落實(shí)龍芯團(tuán)隊(duì)的股權(quán)激勵(lì),。原國(guó)家外專局局長(zhǎng)馬俊如從2006年起就曾多次對(duì)我說(shuō),,龍芯在科學(xué)院里面已經(jīng)做得很好了,不能再好了,,要想更好,,就必須下海辦企業(yè);在成立企業(yè)后馬局長(zhǎng)又給了我很多指導(dǎo),。工信部的電子司司長(zhǎng)丁文武也給了我很多鼓勵(lì),。
龍芯3B的研發(fā)工作在2008年底龍芯3A交付流片后開始全面展開。首款龍芯3B1000繼續(xù)基于65nm工藝,,目標(biāo)主頻800MHz-1GHz,,八核結(jié)構(gòu),每個(gè)核包含兩個(gè)256位向量部件,,峰值浮點(diǎn)性能達(dá)到128GFLOPS,,這在當(dāng)時(shí)處于世界領(lǐng)先行列。龍芯3B1000于2010年6月20日左右流片,,2010年11月底回來(lái)第一批芯片,。但第一批芯片回來(lái)測(cè)試并不順利,連操作系統(tǒng)都啟動(dòng)不了,。很快就找到了原因:由于芯片可測(cè)性設(shè)計(jì)部分的邏輯設(shè)計(jì)錯(cuò)誤,,在功能模式下誤把內(nèi)存引腳置為測(cè)試狀態(tài),導(dǎo)致芯片訪問不了內(nèi)存,,通過FIB(用離子束改變硅片上的連線)修復(fù)后功能正常,。
這是一個(gè)重大的打擊,龍芯歷史上從來(lái)沒有犯過這樣簡(jiǎn)單的錯(cuò)誤,,而且在同一時(shí)期流片的龍芯1A,、龍芯2I等芯片也出現(xiàn)了由于簡(jiǎn)單工作失誤引起的錯(cuò)誤。究其原因,,是龍芯團(tuán)隊(duì)在2010年初從課題組管理機(jī)制轉(zhuǎn)向公司管理機(jī)制的過程中,,原來(lái)“作坊式”的設(shè)計(jì)流程被打破了,,“工業(yè)化”的設(shè)計(jì)流程沒有建立起來(lái)。在課題組階段,,我作為課題組長(zhǎng),,每顆芯片從結(jié)構(gòu)設(shè)計(jì)、邏輯設(shè)計(jì),、功能驗(yàn)證,、可測(cè)性設(shè)計(jì)、定制設(shè)計(jì),、物理設(shè)計(jì)各個(gè)環(huán)節(jié)從頭盯到尾,,及時(shí)協(xié)調(diào)各組的配合,關(guān)注每一個(gè)細(xì)節(jié),,因此沒有出現(xiàn)管理上的錯(cuò)誤,。而在3B1000的研制過程中,龍芯課題組轉(zhuǎn)型成立了龍芯公司,,我的主要精力轉(zhuǎn)向公司,,芯片研發(fā)的總協(xié)調(diào)人缺位,導(dǎo)致頻頻失誤,。痛定思痛,,從此我著手芯片研制的質(zhì)量體系建設(shè),建立了“五步法”(立項(xiàng),、方案,、簽核、測(cè)試,、結(jié)項(xiàng))研制過程,,并詳細(xì)規(guī)定了每個(gè)階段的研發(fā)和審核內(nèi)容。在此后龍芯公司進(jìn)行的幾十次流片中,,沒有出現(xiàn)過嚴(yán)重的質(zhì)量問題,,而且比我作為課題組長(zhǎng)天天盯著效率高很多。
龍芯3B1000首款流片不成功促使我們馬上進(jìn)行改版,,好在只要改一層金屬,,時(shí)間和費(fèi)用上都比較省。3B1000的第一次改版2011年2月初流片,,7月初回來(lái),,調(diào)試比較順利。但在壓力測(cè)試時(shí)又出現(xiàn)死機(jī)現(xiàn)象,,經(jīng)過幾個(gè)月的攻關(guān)發(fā)現(xiàn)又是死鎖問題,。大致機(jī)理是一個(gè)處理器核訪問其它結(jié)點(diǎn)的內(nèi)存時(shí),寫地址和寫數(shù)據(jù)是分開發(fā)出的,,結(jié)果在另外一個(gè)結(jié)點(diǎn)的處理器核也過來(lái)訪問內(nèi)存,,而且同時(shí)有幾十個(gè)這樣的互相訪問時(shí),,寫地址過去了但寫數(shù)據(jù)互相堵住,導(dǎo)致死鎖,。避免死鎖的辦法是要求寫地址和寫數(shù)據(jù)保持原子性,即必須一起發(fā)出和傳輸,。為此龍芯3B1000進(jìn)行了第二次改版,,于2011年12月初流片,2012年4月底回來(lái),。從此達(dá)到穩(wěn)定狀態(tài),。
在掌握65nm工藝的基礎(chǔ)上,我們于2009年11月開始評(píng)估32/28nm工藝,,并準(zhǔn)備把它作為龍芯CPU的下一個(gè)工藝結(jié)點(diǎn),。2010年12月選定意法半導(dǎo)體與三星合作的32nm工藝并開始八核3B1500的設(shè)計(jì)。3B1500基于3B1000的設(shè)計(jì),,主要通過工藝升級(jí)提高性能,,同時(shí)做了局部的性能優(yōu)化,尤其是在處理器核中增加了私有二級(jí)Cache,。2012年1月中旬完成3B1500的設(shè)計(jì)并交付流片,。2012年8月底拿到樣片,初步測(cè)試正常,,頻率從3B1000的900MHz提高到1.25GHz(最高可達(dá)1.5GHz),。在經(jīng)過測(cè)試后對(duì)該芯片進(jìn)行了萬(wàn)片規(guī)模的小批量生產(chǎn)。在應(yīng)用驗(yàn)證過程中,,出現(xiàn)了在很大的應(yīng)用壓力下個(gè)別芯片不穩(wěn)定現(xiàn)象,。剛開始覺得是個(gè)體問題,后來(lái)出現(xiàn)的次數(shù)多了,,開始于2013年1月31日組織人員攻關(guān)定位問題,,查找機(jī)理。也是每天晚上召開例會(huì)討論,,安排各種嘗試,,在這個(gè)過程中發(fā)現(xiàn)了幾個(gè)軟硬件磨合的問題并通過軟件調(diào)整后,出問題的概率小了很多,,但問題如幽靈般還在,。直到2013年4月12日,才抓到了該問題,。這個(gè)問題是從3B1000到3B1500改版過程中引進(jìn)的,,為了提高性能,處理器核收到多個(gè)維護(hù)Cache一致性的無(wú)效請(qǐng)求時(shí),,原來(lái)每?jī)膳牟拍芴幚硪粋€(gè),,改成可以連續(xù)處理,,導(dǎo)致清除LL/SC同步指令的同步位llbit時(shí)錯(cuò)了一拍,誤把IO DMA引起的Cache無(wú)效請(qǐng)求當(dāng)作0號(hào)處理器核的Cache無(wú)效請(qǐng)求(IO DMA的編號(hào)剛好為0,,與0號(hào)處理器核區(qū)分不開),,通過軟件調(diào)整可以規(guī)避此問題。經(jīng)過批量測(cè)試,,原不穩(wěn)定現(xiàn)象消失,。
為了從根本上消除該問題和其它一些小問題,我們對(duì)3B1500進(jìn)行改版,。改版時(shí)根據(jù)生產(chǎn)廠家的建議,,工藝從32nm遷移到28nm,于2013年4月底流片,,10月底收到樣片,,功能正常,但成品率極低,,與廠家確認(rèn)后明確是廠家生產(chǎn)問題,。廠家又建議我們恢復(fù)到32nm工藝流片,并以某種方式補(bǔ)償此次流片費(fèi)用,,于是又再次改版,,于2015年1月底流片,2015年6月下旬收到樣片,,測(cè)試后功能正常,,而且成品率正常,目前已經(jīng)量產(chǎn),。
龍芯3B的研制過程真是一波三折,。出現(xiàn)過龍芯從課題組向公司轉(zhuǎn)型過程中的管理問題,生產(chǎn)廠家引起的問題,,多核互相訪問引起的死鎖問題,,處理器核Cache一致性引起的問題。在解決了一個(gè)個(gè)問題后總算取得了成功,。
但龍芯3B的主要問題不在研制過程中,,而是剛開始定方向就出了很大偏差。主要問題在于雖然龍芯團(tuán)隊(duì)從課題組轉(zhuǎn)型成為了公司,,但龍芯3B的研發(fā)還保持著學(xué)院派導(dǎo)向,,過度追求多核以及浮點(diǎn)峰值性能的單一指標(biāo),通用處理性能不足,,滿足不了在“十一五”期間展開的自主CPU應(yīng)用和試點(diǎn)對(duì)性能的要求,。
龍芯3B在學(xué)術(shù)上是成功的,3B1500峰值浮點(diǎn)運(yùn)算速度達(dá)到160GFLOPS,現(xiàn)在拿出來(lái)也不丟人,,當(dāng)時(shí)在國(guó)際上算高的,。論文分別被國(guó)際頂級(jí)會(huì)議Hotchips和ISSCC錄用,龍芯3B的報(bào)告引起了很大反響,,美國(guó)IT Times對(duì)此專門進(jìn)行了報(bào)道,,MIT也發(fā)表評(píng)論,認(rèn)為龍芯3B的浮點(diǎn)性能超過了同期的Intel處理器,。但3B1500的通用處理能力比3A1000提高得不多,,通過每個(gè)處理器核增加128KB的私有二級(jí)Cache以及主頻及內(nèi)存頻率的提高,3B1500的單核通用處理性能比3A1000提高了30%-50%,,但與國(guó)外主流產(chǎn)品的性能差距還很大。
SPEC CPU是一組國(guó)際上公認(rèn)的測(cè)試通用處理器性能的測(cè)試程序,。2006年SPEC CPU2006剛出來(lái)時(shí),,廠家公布的SUN的blade服務(wù)器單核性能為2-4分左右,高端Pentium IV的分值是10來(lái)分,。2006-2013年是國(guó)外主流處理器通用處理性能高速增長(zhǎng)期,,在主頻不怎么提高的基礎(chǔ)上,通過微結(jié)構(gòu)優(yōu)化,,廠家公布的SPEC CPU2006單核分值提高到50分左右,,平均提高了5倍以上。當(dāng)然廠家公布的分值都是經(jīng)過精雕細(xì)刻編譯優(yōu)化(包括使用向量和多核加速)的,,一般我們使用gcc編譯出來(lái)的單核分值需要把這些廠家自己公布的分值打7折左右,,大致是20-40分。2013年以后,,國(guó)際單核性能的提高趨緩,,每代提升5%就不錯(cuò),已經(jīng)到了天花板,。SPEC CPU先后發(fā)展了1989,、1992、1995,、2000,、2006五個(gè)版本,開始時(shí)每三年更新一版,,后來(lái)五,、六年更新一版,到2006年后就沒有更新,。從中也可以看出,,CPU的通用處理性能到2010年前后已經(jīng)到了天花板,運(yùn)行SPEC CPU2006的時(shí)間就夠長(zhǎng)了。
“十一五”期間,,多核CPU成為國(guó)際學(xué)術(shù)界的熱點(diǎn)研究方向,。因此,學(xué)院派思想主導(dǎo)的國(guó)內(nèi)CPU在“十一五”期間都放松了單核性能的提高,,而是轉(zhuǎn)做多核,,而且核數(shù)做得比國(guó)外還多。2006年研制成功的龍芯2E的通用處理性能與市場(chǎng)上主流X86處理器差1-2倍(與龍芯2E微結(jié)構(gòu)相同的龍芯3A1000在900MHz時(shí)SPEC CPU2006單核分值為定點(diǎn)2.4分,,浮點(diǎn)2.3分),,但龍芯CPU的單核性能從2006年的龍芯2E到2013年的龍芯3B1500只提高了50%左右;而在此期間市場(chǎng)主流X86處理器的單核通用處理性能提高了5倍以上,。也就是說(shuō),,“十一五”期間我國(guó)CPU通用處理性能被國(guó)外大幅度拉開了距離,從相差1-2倍到相差一個(gè)數(shù)量級(jí),。
技術(shù)上的差距體現(xiàn)在市場(chǎng)上就是不好用,。“十一五”期間,,國(guó)家有關(guān)部門在涉及國(guó)家安全的領(lǐng)域開始了自主CPU應(yīng)用試點(diǎn),,大量的應(yīng)用往基于自主CPU和操作系統(tǒng)的計(jì)算機(jī)上移植。在2011-2013年的三年中,,以嵌入式計(jì)算機(jī)為代表的裝備類應(yīng)用取得了不少成功,;而以通用PC和服務(wù)器為代表的信息化類應(yīng)用雖然通過基礎(chǔ)軟硬件的磨合優(yōu)化取得了較大進(jìn)展,但由于自主CPU的性能基礎(chǔ)與國(guó)外產(chǎn)品有數(shù)量級(jí)差距,,在很多應(yīng)用中遭遇性能瓶頸,。
由于自主CPU的通用處理性能不夠,2013年起,,“核高基”基本上放棄了CPU自主研發(fā)路線,,轉(zhuǎn)而支持引進(jìn)國(guó)外CPU技術(shù)的路線。以IBM,、AMD,、威盛、ARM為代表的國(guó)外/境外CPU趁虛而入,,紛紛尋求與國(guó)內(nèi)企業(yè)合資或開放技術(shù)授權(quán)的方式,,把原來(lái)的產(chǎn)品搖身一變成為自主CPU(操作系統(tǒng)和數(shù)據(jù)庫(kù)也有類似情況)。這使得主要靠國(guó)家支持進(jìn)行研發(fā)的龍芯CPU陷入了巨大困境,。
雖然當(dāng)時(shí)對(duì)“核高基”支持引進(jìn)CPU不滿,,但究其原因,還是我們自己在“十一五”“核高基”支持的龍芯3B上沒有擺脫學(xué)院派的慣性,,走了彎路,,滿足不了當(dāng)時(shí)迫切的自主信息化市場(chǎng)需求。問題還是出在我們自己身上?!笆濉逼陂g負(fù)責(zé)863計(jì)劃的科技部高新司領(lǐng)導(dǎo)在龍芯2C沒有達(dá)到預(yù)期技術(shù)指標(biāo),,龍芯2E立項(xiàng)專家提出19條反對(duì)意見的情況下作為非共識(shí)項(xiàng)目支持龍芯2E的研發(fā),給了我們一次改進(jìn)的機(jī)會(huì),。而這次,,機(jī)會(huì)沒有了,需要我們自己想辦法,。
痛定思痛,,知恥后勇。2013年5月,,龍芯公司結(jié)合市場(chǎng)需求對(duì)CPU的研發(fā)路線進(jìn)行了認(rèn)真調(diào)整,。一是龍芯3號(hào)系列多核CPU不追求核的個(gè)數(shù)而是大幅度提高單核性能,放棄高性能機(jī)專用CPU的研制,,暫停16核處理器研制,,重點(diǎn)把雙核、四核處理器做精做透,。二是龍芯2號(hào)系列SOC芯片不追求“大而全”的復(fù)雜度,而是重視結(jié)合用戶需求定義芯片,,以及SOC片內(nèi)互連的通暢性,。三是龍芯1號(hào)系列結(jié)合特定應(yīng)用,如宇航,、石油,、流量表等研制專用芯片,專用芯片產(chǎn)業(yè)鏈短,,容易形成技術(shù)優(yōu)勢(shì)并快速形成銷售(如面向宇航應(yīng)用的龍芯1E和1F已經(jīng)為龍芯公司帶來(lái)持續(xù)穩(wěn)定的銷售收入),。種瓜得瓜、種豆得豆,。從2014年下半年開始,,龍芯研發(fā)和市場(chǎng)結(jié)合的作用開始顯現(xiàn),2014年龍芯公司銷售收入比2013年增長(zhǎng)51%,;2015年在2014年基礎(chǔ)上再增長(zhǎng)57%,,為龍芯公司的可持續(xù)發(fā)展奠定了良好的基礎(chǔ)。龍芯公司逐漸擺脫國(guó)家項(xiàng)目的支持,,能夠主要通過市場(chǎng)銷售養(yǎng)活團(tuán)隊(duì)和產(chǎn)品研發(fā),。
龍芯3A2000芯片
基于上述對(duì)龍芯CPU研發(fā)路線的調(diào)整,2013年5月,,我們暫停了已經(jīng)完成主要設(shè)計(jì)的16核龍芯3C處理器流片,,開始四核3A2000處理器的研發(fā)。核多了沒有用,單核必須要強(qiáng),。就像體育比賽,,靠人多取勝的只有拔河(相當(dāng)于計(jì)算機(jī)中的高性能計(jì)算機(jī)),絕大多數(shù)項(xiàng)目要靠運(yùn)動(dòng)員個(gè)人素質(zhì),。3A2000主要目標(biāo)就是大幅度提高單核性能,,使單核通用處理器性能提高3倍以上。當(dāng)時(shí)龍芯公司承擔(dān)了基于某境內(nèi)40nm LL工藝的高可靠嵌入式CPU研制項(xiàng)目,,雖然工藝性能不高,,甚至比我們?cè)瓉?lái)用的65nm GP工藝還慢30%,但至少流片的錢有地方出了,,我們就基于該工藝研制3A2000,。當(dāng)時(shí)還有一個(gè)重要決定就是保持3A2000與3A1000的引腳兼容,這樣龍芯客戶中基于3A1000研制的已有上百種板卡解決方案可以直接通過換焊3A2000來(lái)提高性能,?;诰硟?nèi)工藝、通過微結(jié)構(gòu)優(yōu)化大幅提升性能以及與3A1000引腳兼容說(shuō)明3A2000開始擺脫了學(xué)院派慣性,,走出結(jié)合用戶需求研發(fā)CPU的關(guān)鍵一步,。
2013年初,在龍芯最困難的時(shí)候,,中科院計(jì)算所孫凝暉所長(zhǎng)在所里資金本身就很困難的情況下,,拿出500萬(wàn)元支持龍芯3A2000處理器核GS464E的前期研發(fā)。雖然與研制3A2000所需要的上億元經(jīng)費(fèi)相比,,500萬(wàn)顯得很少,,但在龍芯最困難的時(shí)候得到來(lái)自龍芯“娘家”計(jì)算所的支持,覺得非常溫暖,。
事實(shí)上2012年初龍芯公司在香山飯店召開年度規(guī)劃會(huì)時(shí)就決定對(duì)GS464處理器核(龍芯2F,、2H、3A1000,、3B1000,、3B1500等都基于GS464微結(jié)構(gòu))進(jìn)行優(yōu)化,形成新一代龍芯微結(jié)構(gòu)GS464E,。GS464處理器核一直是我自己維護(hù),,其中有一半左右代碼(包括流水線控制部分如寄存器重命名、亂序發(fā)射隊(duì)列,、寄存器堆控制,、重排序緩存,以及訪存部分如地址運(yùn)算,、一級(jí)數(shù)據(jù)Cache,、TLB,、訪存失效隊(duì)列、最后一級(jí)共享Cache)是我自己寫的,,2012年上半年我在機(jī)房中花了整整兩周時(shí)間為GS464升級(jí)為GS464E打好必要的基礎(chǔ)(我當(dāng)時(shí)說(shuō)要把馬的架子變成駱駝的架子,,先要把一個(gè)訪存部件升級(jí)為兩個(gè)訪存部件)后,把維護(hù)和升級(jí)處理器核的任務(wù)移交給汪文祥和吳瑞陽(yáng),。這很可能是我最后一次有機(jī)會(huì)寫龍芯CPU的代碼了?,F(xiàn)在回憶起來(lái),能夠在機(jī)房中心無(wú)旁騖地寫代碼真是莫大的幸福,,有無(wú)比的成就感,,但我不能讓自己成為龍芯CPU發(fā)展的瓶頸。而且經(jīng)過多年實(shí)踐的鍛煉,,龍芯的年輕人已經(jīng)充分地成長(zhǎng)起來(lái)了,。龍芯3A1000、3B1000和3B1500都是我自己當(dāng)技術(shù)負(fù)責(zé)人,,3A2000開始由年輕人擔(dān)任芯片的技術(shù)負(fù)責(zé)人,,3A2000的技術(shù)負(fù)責(zé)人是王煥東,3A3000的技術(shù)負(fù)責(zé)人是楊梁,。承擔(dān)國(guó)家項(xiàng)目也主要由年輕人作為項(xiàng)目負(fù)責(zé)人,。
GS464E對(duì)GS464的改造是全方位的。在指令系統(tǒng)方面,,我們?cè)贛IPS64 R3的基礎(chǔ)上進(jìn)行了擴(kuò)展(MIPS指令系統(tǒng)的授權(quán)允許用戶進(jìn)行擴(kuò)展)并形成龍芯指令系統(tǒng)LoongISA,,除增加一些基礎(chǔ)指令外,還有支持云計(jì)算的虛擬化擴(kuò)展,,以及加速X86和ARM二進(jìn)制翻譯的擴(kuò)展。在微結(jié)構(gòu)方面,,除了前述的把訪存功能部件從一個(gè)增加到兩個(gè)外,,還把Cache行大小從256位增加到512位,最后一級(jí)Cache從四路組相聯(lián)提高到16路組相聯(lián),,增加了多個(gè)層次的預(yù)取,,把重排序緩存ROB從64項(xiàng)增加到128項(xiàng),重命名寄存器個(gè)數(shù)從64個(gè)增加到128個(gè),,亂序發(fā)射隊(duì)列由原來(lái)的定點(diǎn)和浮點(diǎn)各16項(xiàng)增加到定點(diǎn)16項(xiàng)(3A3000增加到32項(xiàng)),、浮點(diǎn)24項(xiàng)(3A3000增加到32項(xiàng))、訪存32項(xiàng),,重新構(gòu)建了整個(gè)轉(zhuǎn)移猜測(cè)模塊,。此外,用大量的測(cè)試程序?qū)ξ⒔Y(jié)構(gòu)進(jìn)行了細(xì)節(jié)的磨合,,局部?jī)?yōu)化達(dá)到三十多處,。3A2000的多核互連模塊和內(nèi)存控制器也進(jìn)行了性能優(yōu)化,。尤其是內(nèi)存控制器的優(yōu)化,可以大幅度提高訪存頻率和效率,。2014年7月,,RTL代碼凍結(jié)。
3A2000除了使用流片廠家提供的標(biāo)準(zhǔn)單元庫(kù),、Memory Compiler生成的RAM,、低速IO單元以及efuse單元以外,包括鎖相環(huán),、HT PHY,、DDR2/3 PHY、多端口寄存器堆,、CAM,、溫度傳感器等宏單元都是我們自己定制的,沒有使用任何第三方的宏單元模塊,。因此,,全定制工作量也不小。
3A2000的物理設(shè)計(jì)采取了很多優(yōu)化措施,,初步建立起一套在主流EDA工具基礎(chǔ)上的In-House的流程和工具,,包括統(tǒng)一數(shù)據(jù)庫(kù)支撐的設(shè)計(jì)平臺(tái),基于觸發(fā)器聚類的定制時(shí)鐘設(shè)計(jì),,深度層次化設(shè)計(jì)等,。這套In-House的流程和工具比純粹依賴EDA工具的單元級(jí)設(shè)計(jì)流程提升性能20%左右。
2014年11月初,,3A2000交付流片,。這次流片共有龍芯的三款芯片一起拼了個(gè)全掩膜。由于流片前的功能驗(yàn)證非常充分,,尤其是在3A2000驗(yàn)證過程中,,王朋宇負(fù)責(zé)的驗(yàn)證組完善了龍芯指令級(jí)隨機(jī)驗(yàn)證環(huán)境,從原來(lái)只覆蓋用戶態(tài)指令到覆蓋核心態(tài)指令以及例外處理,,大大提高了3A2000的功能驗(yàn)證覆蓋率,。物理設(shè)計(jì)和檢查也精雕細(xì)刻,我們對(duì)3A2000流片成功很有信心,。
經(jīng)過幾個(gè)月的焦急等待,,2015年4月10日晚飯后,終于拿到了3A2000的盲封樣片,,連夜進(jìn)行調(diào)試,,到第二天早上三點(diǎn)多成功運(yùn)行操作系統(tǒng)。隨后的測(cè)試一切順利:在運(yùn)行了包括SPEC CPU2000,、SPEC CPU2006,、Unixbench等大型程序后,,功能未見異常;主頻可以達(dá)到1GHz,;SPEC CPU2006單核分值達(dá)到6-7分,,是3A1000的3倍左右,尤其是以STREAM測(cè)試表征的訪存帶寬大幅度從3A1000的不到1GB/s上升到10GB/s,,與市場(chǎng)主流處理器基本持平,。在基于龍芯3A2000的桌面終端上進(jìn)行各種辦公應(yīng)用,覺得流暢多了,。有部分芯片在較高電壓下運(yùn)行不穩(wěn)定,,當(dāng)時(shí)并沒有引起重視。
2015年5月,,經(jīng)過ATE測(cè)試臺(tái)成測(cè)的一批芯片回來(lái)測(cè)試,,發(fā)現(xiàn)功能測(cè)試結(jié)果與ATE測(cè)試臺(tái)測(cè)試結(jié)果不一致,即部分芯片通過ATE測(cè)試后功能還是不正常,,這是3A2000完成產(chǎn)品化的嚴(yán)重障礙(即通過測(cè)試后提供給客戶的芯片中有一部分可能是壞的),。通過調(diào)整ATE向量,ATE測(cè)試與功能測(cè)試的一致性增強(qiáng),,但還有部分芯片不完全一致,,總體感覺N管偏快的工藝穩(wěn)定性明顯增強(qiáng)。為了更好地分析原因,,6月初請(qǐng)廠家把第一次流片中6個(gè)hold的晶圓調(diào)整工藝角開始生產(chǎn),。
經(jīng)過繼續(xù)深入的分析,,發(fā)現(xiàn)兩個(gè)明顯現(xiàn)象:一是N管偏快的芯片穩(wěn)定性好很多,ATE測(cè)試和功能測(cè)試比較一致,;二是通過改善主板電源穩(wěn)定性,,有利于芯片穩(wěn)定,。雖然機(jī)理不是很清楚,,但在當(dāng)時(shí)巨大的市場(chǎng)壓力下(采用引進(jìn)技術(shù)的CPU到處攻擊龍芯性能不行,,要求有關(guān)自主化應(yīng)用放棄龍芯,使用引進(jìn)技術(shù)的CPU),決定結(jié)合已有的現(xiàn)象進(jìn)行改版流片,,一是更換定制的電容更大的DECAP替換廠家提供的DECAP以抑制動(dòng)態(tài)壓降(定制的DECAP電容比廠家提供的DECAP電容提高一個(gè)數(shù)量級(jí)),這會(huì)帶來(lái)抗ESD能力下降的風(fēng)險(xiǎn),,但我們經(jīng)過分析覺得風(fēng)險(xiǎn)不大(事后流片回來(lái)進(jìn)行了ESD實(shí)驗(yàn),,抗2000V人體模型沒問題);二是根據(jù)負(fù)責(zé)全定制工作的鐘石強(qiáng)的建議調(diào)整了定制寄存器堆的字線和位線配合時(shí)序(增加了20ps左右的裕量),,因?yàn)榉抡姘l(fā)現(xiàn)N管偏快有利于定制的寄存器堆字線和位線時(shí)序配合,,與實(shí)驗(yàn)現(xiàn)象符合。3A2000的第一次改版只改了6層掩膜板,,于9月初完成改版設(shè)計(jì)并交付流片,。
2015年11月初,,6個(gè)調(diào)整工藝角的芯片回來(lái),經(jīng)過大量的ATE測(cè)試和功能測(cè)試,,確定寄存器堆是部分芯片功能不穩(wěn)定的主要原因,。ATE測(cè)試發(fā)現(xiàn)不同工藝角芯片的寄存器堆MBIST測(cè)試在1.30V到1.50V的不同電壓下出錯(cuò),功能測(cè)試出錯(cuò)電壓則比寄存器堆低100-150mV,,有較強(qiáng)的一致性,,但機(jī)理仍不清楚。
2016年1月11日下午下班前,,我跟范寶峽,、蘇孟豪在討論蘇孟豪通過JTAG通路(這是預(yù)留的除了正常的ATE測(cè)試外的另外一條測(cè)試通路)以Scan Collar方式測(cè)試寄存器堆沒有發(fā)現(xiàn)錯(cuò)誤的問題,并了解到楊旭審查版圖發(fā)現(xiàn)寫端口的位線的延遲在其它端口寫相反值及讀端口旁路讀時(shí)是最差情況,,我馬上叫蘇孟豪用最差情況向量通過JTAG端口進(jìn)行測(cè)試,,很快就復(fù)現(xiàn)了寄存器堆出錯(cuò)的問題并經(jīng)過進(jìn)一步分析搞清楚了寄存器堆寫出錯(cuò)的機(jī)理:在寄存器堆寫端口寫入過程中,要求位線比字線先到,,字線與位線之間保持必要的延遲差才能保證寫入的正確性,,但在位線負(fù)載大時(shí)(其它寫端口寫相反值及其它讀端口讀旁路)位線延遲變大,字位線延遲差太小,,導(dǎo)致寫寄存器堆出錯(cuò),。提高電壓會(huì)進(jìn)一步減少字線與位線的延遲差,因此更容易出錯(cuò),。
真是柳暗花明,,困擾我們大半年的3A2000產(chǎn)品化問題終于搞清楚了,尤其是這說(shuō)明我們?cè)?015年9月份在機(jī)理不清楚情況下的改版是正確的,。而且這個(gè)測(cè)試向量提供了一種在已有芯片中把不穩(wěn)定的芯片篩選掉的辦法,,這是龍芯3A2000產(chǎn)品化過程邁出的重大一步,。
2016年2月8日是春節(jié),,3A2000第一次改版的芯片在2月4日完成封裝,,為了在春節(jié)前完成3A2000第一次改版芯片測(cè)試,孫凱軍專門到封裝廠等待封裝好的芯片,,拿到芯片時(shí)已經(jīng)是下午6點(diǎn)多,,直飛北京的飛機(jī)已經(jīng)沒了,半夜到上海倒了一次飛機(jī),,5日上午到北京,,馬上安排測(cè)試,確實(shí)寄存器堆的問題大大緩解了,,穩(wěn)定性大幅度提高,。春節(jié)上班后我們又組織攻關(guān)解決了一個(gè)軟硬件磨合的問題,到2016年2月22日,,完成3A2000的初步產(chǎn)品化工作,,開始對(duì)外銷售芯片(原來(lái)一直只能以樣片方式贈(zèng)送給客戶試用)。
2016年3月中旬,,3A2000進(jìn)行再次改版,,這次改版是全掩膜改版(原來(lái)是三個(gè)芯片拼了個(gè)全掩膜),除了進(jìn)一步增加寄存器堆字線和位線的延遲差以外,,還修改了其它幾個(gè)小問題,。2016年7月下旬,芯片回來(lái)后經(jīng)測(cè)試,,原來(lái)的定制模塊問題不復(fù)存在,,芯片功能正常,而且ATE測(cè)試與功能測(cè)試一致性好,。目前3A2000已經(jīng)進(jìn)入量產(chǎn)階段,,其中經(jīng)過測(cè)試支持通過直連形成多路服務(wù)器的芯片成為3B2000。
在隨后的應(yīng)用推廣中,,3A2000與3A1000保持引腳兼容以及軟件兼容體現(xiàn)出巨大優(yōu)越性,,很多客戶直接在原來(lái)3A1000的主板上換焊3A2000芯片,只需通過簡(jiǎn)單的BIOS和內(nèi)核調(diào)整,,就可以大幅度提升性能,。龍芯的整機(jī)廠家迅速升級(jí)了部分原來(lái)基于龍芯3A1000的計(jì)算機(jī)并進(jìn)行了應(yīng)用試點(diǎn)。在2016年6月進(jìn)行的某辦公應(yīng)用試點(diǎn)驗(yàn)收會(huì)上,,有關(guān)部門和專家認(rèn)為,,基于3A2000的計(jì)算機(jī)使自主化辦公應(yīng)用從“基本可用/可用”提高到“基本好用/好用”。
龍芯3A3000是在2015年5月臨時(shí)安排研制的,。2015年5月初,,我去常熟跟龍芯夢(mèng)蘭公司的張福新、吳少剛等人討論3A2000整機(jī)解決方案的研發(fā),。大家對(duì)3A2000大幅度提升性能都很高興,大大增強(qiáng)了信心,。同時(shí)張福新他們提出,由于我們使用境內(nèi)的40nm低速工藝,,而引進(jìn)ARM和威盛的CPU都使用境外28nm高速工藝,,雖然3A2000在微結(jié)構(gòu)上已經(jīng)超過了引進(jìn)的ARM和威盛的CPU,由于主頻偏低,,3A2000在綜合性能上還是吃虧(1.0GHz的3A2000處理器核SPEC CPU2006分值為6-7分,,而1.6-2.0GHz的ARM和威盛處理器核SPEC CPU2006分值達(dá)到8-10分),建議龍芯也盡快使用境外工藝提升頻率,。經(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策略可以把兩個(gè)芯片流水推進(jìn),,加快進(jìn)度的同時(shí)降低技術(shù)風(fēng)險(xiǎn),。
3A2000主要是通過結(jié)構(gòu)優(yōu)化提升性能,屬于Tock,;3A3000則直接采用3A2000的源代碼,,通過工藝優(yōu)化提升性能,同時(shí)繼續(xù)保持與3A2000的引腳兼容,,屬于Tick,。因此,3A3000在功能上沒有什么風(fēng)險(xiǎn),,主要是工藝移植的風(fēng)險(xiǎn),。當(dāng)然,3A3000在微結(jié)構(gòu)上還是做了適度增強(qiáng):一是結(jié)合3A2000的性能瓶頸分析把定點(diǎn)/浮點(diǎn)發(fā)射隊(duì)列從16/24項(xiàng)增加到32/32項(xiàng),,二是把最后一級(jí)Cache從4MB提高到8MB,。到6月底,完成了RTL源代碼修改,,隨后全面展開物理設(shè)計(jì),。
3A3000物理設(shè)計(jì)中繼續(xù)需要定制包括HT-PHY、DDR-PHY,、鎖相環(huán),、多端口寄存器堆,、CAM等全定制模塊。由于3A2000中的全定制模塊出過問題,,3A3000的全定制模塊檢查特別嚴(yán)格,。除了加強(qiáng)設(shè)計(jì)仿真外,還讓原龍芯全定制組的組長(zhǎng)楊旭(現(xiàn)在是龍芯中科公司全面負(fù)責(zé)生產(chǎn)的副總)重新披掛上陣,,進(jìn)行背靠背的復(fù)查。緊趕慢趕,,于2016年1月底完成了全定制設(shè)計(jì)的簽核和復(fù)查評(píng)審,。
3A3000物理設(shè)計(jì)中另一個(gè)難點(diǎn)是時(shí)序收斂。3A3000使用的28nm FD SOI工藝晶體管確實(shí)比3A2000使用的40nm LL快60%左右,,但連線延遲大,,而且互相干擾也大,廢了很多周折,。楊梁率領(lǐng)物理組在2016年春節(jié)期間也沒有休息,,終于在2016年2月中旬交付流片。
2016年6月端午假期期間,,龍芯3A3000完成晶圓生產(chǎn)并進(jìn)行了中測(cè),,剛開始比較順利,已經(jīng)調(diào)試完成大部分向量,,只是測(cè)試我們自己研制的鎖相環(huán)時(shí)發(fā)現(xiàn)鎖相環(huán)輸出時(shí)鐘有不穩(wěn)定現(xiàn)象,。6月中旬拿到盲封芯片,測(cè)試發(fā)現(xiàn)只有在低于0.8V的低電壓下芯片才能正常工作,,經(jīng)過兩周的分析發(fā)現(xiàn)還是寄存器堆的問題,,這次是讀出電路的問題,讀電路譯碼時(shí)產(chǎn)生了毛刺,,把別的字的內(nèi)容耦合到讀出字內(nèi)容來(lái)了,。好在該問題只需要修改一層掩模版。
2016年9月13日,,修改寄存器堆問題的改版芯片回來(lái),。這次測(cè)試非常順利,很快就運(yùn)行了SPEC CPU2000和SPEC CPU2006等大型程序,,均未發(fā)現(xiàn)異常,。主頻可以達(dá)到1.5GHz以上。進(jìn)一步的測(cè)試結(jié)果比想象的好,,一是內(nèi)存頻率可以達(dá)到750MHz以上,,而且信號(hào)眼圖還非常好,STREAM測(cè)試帶寬達(dá)到13GB/s,;二是雖然主頻只提高了50%,,但綜合SPEC CPU2006和SPEC CPU2000分值可以提高60%,其中SPEC CPU2006單核分值為定點(diǎn)11分以上、浮點(diǎn)10分以上,,四核分值為定點(diǎn)36分,,浮點(diǎn)33分;三是可以運(yùn)行在很低電壓下,,例如運(yùn)行在1.0V電壓下主頻1GHz時(shí)功耗還不到3A2000運(yùn)行1GHz時(shí)的一半,。對(duì)于復(fù)雜應(yīng)用(如打開幾十MB的復(fù)雜文件),3A3000的用戶體驗(yàn)比3A2000有顯著提高,。
2016年10月17日,,龍芯3A3000通過了龍芯公司質(zhì)量體系要求的商業(yè)級(jí)產(chǎn)品的鑒定檢驗(yàn)摸底測(cè)試(工業(yè)級(jí)產(chǎn)品鑒定檢驗(yàn)工作正在同步展開),表明龍芯3A3000可以進(jìn)入批量生產(chǎn)狀態(tài),。目前3A3000已開始小批量生產(chǎn),,其中經(jīng)過測(cè)試支持通過直連形成多路服務(wù)器的芯片成為3B3000。
龍芯3A3000運(yùn)行SPEC CPU2000定點(diǎn)分值1100多分,,浮點(diǎn)分值1700多分,,運(yùn)行一遍不到一個(gè)半小時(shí)(如果使用計(jì)算所的編譯器進(jìn)行優(yōu)化,定點(diǎn)和浮點(diǎn)分值還分別可以提高15%和30%以上),?;叵?002年龍芯1號(hào)剛誕生時(shí),運(yùn)行一遍SPEC CPU2000需要近三天時(shí)間,,龍芯2C由于SEPC CPU2000分值沒有達(dá)到863課題合同要求的300分而沒有完成驗(yàn)收,,龍芯2E費(fèi)了九牛二虎之力才勉強(qiáng)達(dá)到500分,真是“向來(lái)枉費(fèi)推移力,,今日中流自在行”,。
在3A2000和3A3000的研制過程中,有兩點(diǎn)深刻體會(huì),。一是CPU的可調(diào)試性設(shè)計(jì)很重要,,3A2000和3A3000的全定制問題和若干其它問題的定位,都是基于通過JTAG接口控制的預(yù)先設(shè)計(jì)的調(diào)試模塊,,該調(diào)試模塊可以控制和讀出CPU內(nèi)部所有觸發(fā)器和RAM的內(nèi)容,,比起以前調(diào)3A1000、3B1000和3B1500方便多了,。二是境內(nèi)工藝的一致性比境外工藝有一定差距,,包括不同批次的一致性,仿真模型和實(shí)際晶體管參數(shù)的一致性都和國(guó)外工藝有一定差距,,設(shè)計(jì)時(shí)要多留些裕量,,蒙特卡羅仿真也要把參數(shù)波動(dòng)范圍設(shè)大一些。
3A3000研制成功對(duì)自主CPU來(lái)說(shuō)具有里程碑意義,。首先,,3A3000的通用處理性能已經(jīng)跨過了國(guó)際通用處理器性能的第一個(gè)門檻,,其單核SPEC CPU2006性能已經(jīng)不低于ARM用于服務(wù)器的高端處理器、Intel的低端系列(凌動(dòng)系列)處理器以及威盛處理器(這些處理器在1-4核環(huán)境下2GHz時(shí)單核SPEC CPU2006性能一般在8-10分之間,,如果核數(shù)更多,,由于最后一級(jí)Cache巨大,性能會(huì)有所提高),,而且3A3000的訪存帶寬已經(jīng)與AMD以及Intel的高端系列(酷睿系列)持平,。這樣的性能玩復(fù)雜的3D游戲可能還有差距,但對(duì)于以黨政辦公為代表的事務(wù)處理應(yīng)用是足夠了(如果軟件做適當(dāng)磨合優(yōu)化,,3A2000就夠了),。龍芯3A3000跨過了國(guó)際通用處理器性能的第一個(gè)門檻后,也為下一步跨越第二個(gè)門檻(即達(dá)到Intel和AMD主流處理器的性能)打下了堅(jiān)實(shí)的基礎(chǔ),。其次,,3A3000的通用處理性能超過了目前靠引進(jìn)ARM和威盛技術(shù)發(fā)展的國(guó)內(nèi)同類(四核)CPU,?!笆晃濉遍_始的自主信息化應(yīng)用試點(diǎn)發(fā)現(xiàn)第一代自主CPU通用處理性能不夠的問題后,國(guó)內(nèi)CPU研制單位均展開了第二代CPU的研發(fā),,并衍生出三條不同的技術(shù)路線,。第一條是以龍芯和申威為代表的“研”的路線,即通過分析第一代產(chǎn)品應(yīng)用中發(fā)現(xiàn)的問題進(jìn)行自主研發(fā)升級(jí),。第二條是“攢”的路線,,即使用國(guó)外的處理器核“攢”SOC,并在此基礎(chǔ)上對(duì)處理器核進(jìn)行局部?jī)?yōu)化,。第三條是“O(ODM)”的路線,,即中國(guó)人掏錢請(qǐng)外國(guó)人干,目前主要是把國(guó)外/境外已有的現(xiàn)成設(shè)計(jì)直接拿過來(lái)?yè)Q成中國(guó)的品牌,。由于自主研發(fā)路線在“十一五”期間走了彎路,,很多人對(duì)自主研發(fā)路線產(chǎn)生了疑慮,覺得此路不通,,因此“核高基”在“十二五”期間主要支持以ARM的處理器核“攢”SOC的路線和“O”威盛的路線為主,。一是錢多,二是引進(jìn)別人的產(chǎn)品省時(shí)間,,加上龍芯3A2000與境內(nèi)工藝磨合,,在產(chǎn)品化方面花了較多時(shí)間,從2014年年底到2016年年初大約一年半的時(shí)間,,采用引進(jìn)技術(shù)的CPU大肆攻擊自主CPU性能不行,,要求在已有的自主信息化試點(diǎn)中換掉龍芯(而且確實(shí)換掉了一些),給龍芯造成很大壓力,。
3A3000的通用處理性能超過引進(jìn)的ARM和威盛技術(shù)的CPU,,加上前些日子使用申威處理器的“太湖之光”高性能機(jī)取得世界第一的好成績(jī),,充分說(shuō)明不論是通用CPU還是高性能機(jī)專用CPU,自主研發(fā)的道路都是走得通的,,不僅安全性好,,性能也高。尤其是通過自主研發(fā)形成持續(xù)改進(jìn)能力后,,未來(lái)的后勁更足,。可以說(shuō),,在與引進(jìn)CPU的技術(shù)路線的斗爭(zhēng)中,,龍芯3A3000是抗日戰(zhàn)爭(zhēng)的石牌保衛(wèi)戰(zhàn),是解放戰(zhàn)爭(zhēng)的濟(jì)南戰(zhàn)役,,拉開了自主CPU戰(zhàn)略反攻的序幕,。尤其值得指出的是,龍芯3A3000的研制沒有得到任何國(guó)家項(xiàng)目的補(bǔ)助,,是完全由企業(yè)自己掏錢研制的自主通用CPU,,也具有里程碑意義。
根據(jù)Tick-Tock策略,,我們制定了龍芯3號(hào)系列下一步研制計(jì)劃,。四核龍芯3A4000為Tock,繼續(xù)使用目前的28nm工藝,,爭(zhēng)取主頻達(dá)到2GHz以上,,SPEC CPU2006單核分值達(dá)到20分以上。3A4000的主要結(jié)構(gòu)優(yōu)化包括:增加256位的向量指令,,增加片內(nèi)安全機(jī)制,,以及進(jìn)一步通過微結(jié)構(gòu)優(yōu)化提高流水線效率,爭(zhēng)取每GHz的單核SPEC CPU2006分值達(dá)到10分(目前3A3000每GHz的單核SPEC CPU2006分值為7分,,ARM的高端處理器為5-6分,,X86主流處理器為10-15分)。目前3A4000的研制工作已經(jīng)展開,。在3A4000之后將研制Tick階段的新一代處理器,,初步考慮使用16nm或14nm的工藝以及3A4000的處理器核研制16核的龍芯3C。經(jīng)過3A4000的又一輪優(yōu)化,,龍芯的處理器核微結(jié)構(gòu)已經(jīng)基本到位,,是時(shí)候把2013年5月暫停的16核龍芯3C重新提上日程了。
十年以來(lái),,我們先后研制了龍芯3A1000,、3B1000、3B1500,、3A2000/3B2000,、3A3000/3B3000五款龍芯3號(hào)系列芯片,,大的流片版本12個(gè),小的流片版本(只改幾層掩膜板)6個(gè),,碰到了各種各樣的問題,,經(jīng)歷了很多坎坷。為什么龍芯CPU的研制經(jīng)歷這么多坎坷呢,?除了龍芯的質(zhì)量流程需要持續(xù)改進(jìn)以外(最近結(jié)合3A2000和3A3000的全定制問題正在舉一反三,,并完善全定制流程),究其根本原因,,是因?yàn)槲覀儓?jiān)持芯片中的核心模塊自己研制,。前面提到的龍芯3號(hào)研制過程中碰到的問題,都是包括CPU,、HT控制器,、內(nèi)存控制器、全定制寄存器堆,、全定制鎖相環(huán)等核心模塊內(nèi)部的問題,,并不是把這些模塊“攢”在一起產(chǎn)生的問題。這些問題,,如果購(gòu)買商業(yè)IP(如ARM的CPU,,Imagination的GPU等)來(lái)“攢”芯片一般不會(huì)碰到,。自從2001年開始研制CPU以來(lái),,我直接或間接負(fù)責(zé)了近百次流片,流片后碰到的問題除了極個(gè)別外,,都是核心模塊內(nèi)部的問題,。
龍芯長(zhǎng)期堅(jiān)持芯片中的核心IP自己掌握。這些核心IP包括CPU核,、內(nèi)存控制器,、DDR2/3/4的PHY、互連網(wǎng)絡(luò),、HT控制器,、HT PHY等,最近還展開了GPU的研發(fā),,只有少量的外圍IP使用商用IP,。不是吃飽了飯沒事干,而是我們使用別人的IP吃過虧,。2003年我們剛開始研制龍芯2號(hào)時(shí)委托一個(gè)很有名的EDA和設(shè)計(jì)服務(wù)公司定制一個(gè)3寫6讀寄存器堆,,在交付流片后發(fā)現(xiàn)其中的電源地嚴(yán)重缺失,跟他們交涉時(shí)他們說(shuō)這個(gè)不會(huì)有問題,,導(dǎo)致龍芯2號(hào)系列的第一款芯片龍芯2A流片失敗,,后來(lái)我們自己定制了該寄存器堆才使龍芯2B流片成功,。龍芯3A1000剛開始研制時(shí)曾經(jīng)使用過商業(yè)DDR2/3 PHY,我們?cè)跈z查中發(fā)現(xiàn)了一些問題,,但廠家覺得沒問題不愿意修改,,后來(lái)3A1000流片時(shí)同時(shí)流了使用商用DDR2/3 PHY和自主研制DDR2/3 PHY的兩個(gè)版本,并在使用自主DDR2/3 PHY的版本流片成功后確定使用自主DDR2/3 PHY的版本進(jìn)行量產(chǎn),。龍芯3A1000和3B1000曾經(jīng)使用過商業(yè)的內(nèi)存控制器,,但商業(yè)的內(nèi)存控制器滿足不了高性能CPU的帶寬要求(使用商業(yè)內(nèi)存控制器的SOC在雙通道下不可能做出龍芯3A3000 的13GB/s實(shí)測(cè)帶寬來(lái)),因此從3B1500開始自主設(shè)計(jì)內(nèi)存控制器,。龍芯2H集成了商用的GPU核,,該GPU核有 Android操作系統(tǒng)的驅(qū)動(dòng)程序,但我們需要Linux的Xserver驅(qū)動(dòng),,廠家自己開發(fā)不了,,我們希望廠家把內(nèi)部配置寄存器如何使用的手冊(cè)給我們,我們自己開發(fā),,可是廠家說(shuō)這是商業(yè)機(jī)密,,不愿意給,至今龍芯2H只有在Android上有3D驅(qū)動(dòng),,Linux的Xserver驅(qū)動(dòng)只有2D的,。
一是吃過虧,二是覺得洋鬼子干得還不如我們,,所以就自己干,。在國(guó)際上,雖然Nvidia巴心巴肝地幫Intel做配套GPU,,Intel還是堅(jiān)持自己做GPU,;雖然Imagination巴心巴肝地幫ARM做配套GPU,ARM也堅(jiān)持自己做GPU,;雖然開源的火狐瀏覽器很不錯(cuò),,谷歌還是堅(jiān)持自己做Chrome。蘋果和高通公司都是在ARM的架構(gòu)授權(quán)下自主設(shè)計(jì)處理器核,,其性能遠(yuǎn)高于ARM的處理器核,。他山之石、可以攻玉,。只有技術(shù)上不受制于人,,才有產(chǎn)業(yè)上的主動(dòng)權(quán)。
做任何事情,,依靠別人總是容易一些,,完全靠自己則困難得多。但依靠得多了,,吃過虧后才明白還得靠自己,。毛主席在青年時(shí)期也沒有想過要革命,,想著改良主義可以救中國(guó),后來(lái)才覺得馬克思主義是“山窮水盡諸路皆走不通了”的選擇,;建黨后在陳獨(dú)秀領(lǐng)導(dǎo)下在湖南搞工人運(yùn)動(dòng),,光大的罷工就舉行了十多次,結(jié)果是罷工受鎮(zhèn)壓,,工人領(lǐng)袖被殺,;國(guó)共合作期間依靠國(guó)民黨的武裝干革命,結(jié)果蔣介石發(fā)動(dòng)“四一二”政變殺共產(chǎn)黨人,;好不容易上井岡山建立了自己的軍隊(duì),,找到了武裝奪取政權(quán)、農(nóng)村包圍城市的道路,,卻被那些在上海租界呆不住跑到井岡山避難的書生們輕松地奪了權(quán),,不得不進(jìn)行兩萬(wàn)五千里長(zhǎng)征;經(jīng)歷千難萬(wàn)險(xiǎn)與四方面軍會(huì)師了,,還差點(diǎn)被貪心不足的張國(guó)燾武力扣押,。吃了這么多虧后,毛主席在以后的革命和建設(shè)中就牢牢掌握了主動(dòng)權(quán),,包括國(guó)共第二次合作時(shí)堅(jiān)持獨(dú)立自主的山地游擊戰(zhàn),,反對(duì)共產(chǎn)國(guó)際的“一切通過統(tǒng)一戰(zhàn)線”的錯(cuò)誤主張;重慶談判堅(jiān)持保留邊區(qū)和軍隊(duì),;建國(guó)后先是抗美援朝,,后是中蘇論戰(zhàn)。等等,。
在中國(guó)的近代史上,,我們有三次向外國(guó)老師學(xué)習(xí)的經(jīng)驗(yàn),,每次都是受老師欺負(fù)吃了虧后走上自力更生的道路,。第一次是洋務(wù)運(yùn)動(dòng),晚清時(shí)期中國(guó)海關(guān)關(guān)長(zhǎng)都是英國(guó)人擔(dān)任的,,是中國(guó)歷史上最開放的時(shí)期,,卻被西方列強(qiáng)欺負(fù)得水深火熱,毛主席領(lǐng)導(dǎo)共產(chǎn)黨推翻了三座大山,,解放了中國(guó)人民,。第二次是建國(guó)后向蘇聯(lián)學(xué),一邊倒,,結(jié)果蘇聯(lián)在中國(guó)的土地上又想建聯(lián)合艦隊(duì),,又想建長(zhǎng)波電臺(tái),毛主席拒絕后蘇聯(lián)又撤專家又逼債,,毛主席還是領(lǐng)導(dǎo)中國(guó)人民自己搞了“兩彈一星”,,建立了自主可控的工業(yè)體系,。第三次是改革開放,我們學(xué)習(xí)西方的管理理念和科學(xué)技術(shù),,剛開始覺得挺好的,,現(xiàn)在有點(diǎn)覺得吃虧了(像我這樣氣性大的覺得忍無(wú)可忍了,很多人覺得還可以再忍忍),。2011年我國(guó)IT產(chǎn)業(yè)百?gòu)?qiáng)企業(yè)的利潤(rùn)總和是蘋果公司的40%(我剛開始覺得華為是通信企業(yè),,可能不算在IT百?gòu)?qiáng)里面,后來(lái)查到華為也算在這里面時(shí)很有挫折感),??偸锹爩<艺f(shuō),我國(guó)跟美國(guó)的經(jīng)濟(jì)互相依賴,,美國(guó)也不敢把我們?cè)趺礃?,可是?dāng)美國(guó)制裁中興時(shí),我們不得不認(rèn)慫,,中興公司定期向美國(guó)商務(wù)部報(bào)告工作,,以獲得延期制裁。美國(guó)可以通過不賣元器件在三個(gè)月之內(nèi)把國(guó)人引以為豪的華為,、聯(lián)想,、中興等企業(yè)搞死,十大軍工集團(tuán)有大半開不了張,,我們有哪種產(chǎn)品不賣給美國(guó)企業(yè),,會(huì)把美國(guó)的Intel、IBM,、谷歌,、微軟、蘋果搞死呢,,我們頂多能把沃爾瑪搞得比較難受?,F(xiàn)在想想,毛主席周總理帶著全國(guó)人民勒緊褲腰帶煉鋼鐵,、打油井,、發(fā)展兩彈一星,建立起自主可控的工業(yè)體系真是無(wú)比英明,。
正如改革開放進(jìn)入深水區(qū),,容易改的都改完了,剩下都是難改的,;創(chuàng)新也進(jìn)入深水區(qū),,容易創(chuàng)新的都創(chuàng)完了,剩下難創(chuàng)新的,需要十年磨一劍的積累,。我們的IT產(chǎn)業(yè)先學(xué)會(huì)了用國(guó)外的芯片在主板上“攢”系統(tǒng),,后來(lái)又學(xué)會(huì)了用國(guó)外的IP在硅上“攢”系統(tǒng)。掌握這些簡(jiǎn)單技術(shù)后,,下面該深入到CPU,、GPU這些復(fù)雜的核心模塊中去了。這些復(fù)雜的創(chuàng)新不是領(lǐng)導(dǎo)重視,、錢多,、人多就能一下子干出來(lái)的,還需要時(shí)間來(lái)磨,,在探索和試錯(cuò)過程中不斷演進(jìn),。領(lǐng)導(dǎo)重視、人多,、錢多可以加速探索和試錯(cuò)的過程,,但不能消除這個(gè)過程。中國(guó)航天建空間站,,先來(lái)個(gè)天宮一號(hào)試試看,,再來(lái)個(gè)天空二號(hào)(還分兩期)接著試,最后再發(fā)射正式空間站,,也是這個(gè)演進(jìn)的道理,,不是缺錢,也不是領(lǐng)導(dǎo)不重視,。CPU是超復(fù)雜系統(tǒng),,超復(fù)雜系統(tǒng)只能走進(jìn)化論的道路,在產(chǎn)業(yè)化實(shí)踐中通過長(zhǎng)期演進(jìn)發(fā)展起來(lái),。即使在這個(gè)過程中,,得到別人的源代碼,也只能加速自主研發(fā)的進(jìn)度,,取代不了自主研發(fā)的工作,。更何況復(fù)雜系統(tǒng)是很難消化吸收的,即使拿到國(guó)外CPU的源代碼,,每一行都看得明白,,但把幾百萬(wàn)行代碼拼在一起就不知道是干什么的,就像我們可以打開一頭豬的大腦看得清清楚楚,,但不知道豬在想什么。很多人現(xiàn)在還寄希望于引進(jìn)國(guó)外技術(shù)發(fā)展我國(guó)的CPU,,那是因?yàn)槌匝蠊碜拥奶潧]吃夠,。須知天上是不會(huì)掉餡餅的,要發(fā)展以自主CPU和操作系統(tǒng)為代表的基礎(chǔ)軟硬件,我們必須克服急躁情緒,,克服崇洋情緒,,發(fā)揚(yáng)愚公移山精神,堅(jiān)持實(shí)事求是作風(fēng),,在自主創(chuàng)新實(shí)踐中不斷發(fā)現(xiàn)問題,,在解決問題過程中不斷提高能力,才能保障國(guó)家安全和支撐產(chǎn)業(yè)發(fā)展,。
龍芯今年15歲了,。中國(guó)共產(chǎn)黨在15歲的時(shí)候完成了舉世矚目的萬(wàn)里長(zhǎng)征,建立了陜北根據(jù)地,,取得了生存的基礎(chǔ),,但共產(chǎn)黨長(zhǎng)征的目的決不僅僅是建立一塊根據(jù)地活下來(lái),而是以此為基礎(chǔ)解放全中國(guó),。龍芯在15歲的時(shí)候完成了3A3000的研發(fā),,跨越了國(guó)際上通用CPU的第一個(gè)性能門檻,性能超過了引進(jìn)設(shè)計(jì)的CPU,,龍芯公司實(shí)現(xiàn)盈利,,取得了生存的基礎(chǔ),但龍芯的目標(biāo)絕不是為了生存和掙錢,,而是為了建立自主可控的信息產(chǎn)業(yè)體系,。目前我國(guó)的信息產(chǎn)業(yè)主要建立在以Wintel體系(Intel的CPU和微軟的Windows操作系統(tǒng))和AA體系(ARM的CPU和谷歌的Android操作系統(tǒng))為代表的國(guó)外基礎(chǔ)軟硬件平臺(tái)上。要改變我國(guó)信息產(chǎn)業(yè)和信息安全受制于人的局面,,不能只著眼于單項(xiàng)技術(shù)的突破和產(chǎn)品市場(chǎng)占有率的提高,,必須建立起自主可控的信息技術(shù)與產(chǎn)業(yè)生態(tài)體系,形成與Wintel體系和AA體系“三足鼎立”的局面,,才能掌握產(chǎn)業(yè)發(fā)展主導(dǎo)權(quán),,消除安全隱患。如果我們沒有建立起自主可控的IT產(chǎn)業(yè)體系,,繼續(xù)在已有的Wintel體系和AA體系中當(dāng)“馬仔”,,是難以實(shí)現(xiàn)中華民族的偉大復(fù)興的“中國(guó)夢(mèng)”的。反之,,只要我們堅(jiān)持自主創(chuàng)新,,打通技術(shù)鏈,完全可以在局部指標(biāo)不如國(guó)外產(chǎn)品的情況下,,建設(shè)出優(yōu)于國(guó)外產(chǎn)品的應(yīng)用系統(tǒng),。須知判斷技術(shù)是否先進(jìn)的標(biāo)準(zhǔn),不是看其跟美國(guó)人跟得緊不緊,,而是看其跟應(yīng)用結(jié)合得緊不緊,。
古人說(shuō)“事非經(jīng)過不知難”,。但只要認(rèn)真去做,也有“事非經(jīng)過不知易”的道理,。龍芯3號(hào)系列CPU通用處理性能在從2013年起的不到四年時(shí)間提高到了原來(lái)的五倍以上,,充分說(shuō)明了這個(gè)道理。2001年我們開始研制龍芯CPU的時(shí)候,,很少人相信我們能夠做出來(lái),,在整個(gè)“十五”期間,網(wǎng)絡(luò)上“龍芯打假”的言論層出不窮,,但我們堅(jiān)持做出來(lái)了,,方法是在別人都不信的情況下,做給他看,。2006年我們開始推廣龍芯CPU應(yīng)用的時(shí)候,,也很少有人相信龍芯能用起來(lái),不知受了多少奚落和冷嘲熱諷,,甚至有人說(shuō),,如果龍芯能夠賣得出去,他就從此倒立著走,,但龍芯公司現(xiàn)在能夠通過龍芯CPU的銷售養(yǎng)活自己了,,方法還是在別人都不信的情況下,做給他看,。今天我們說(shuō)要建立自主可控的信息產(chǎn)業(yè)體系,,還是多數(shù)人不信,無(wú)非是認(rèn)為做生態(tài)太難,,自己肯定做不好,,不如跟著別的老大當(dāng)個(gè)馬仔,所以總說(shuō)與X86和ARM兼容生態(tài)好,,總之是一種畏難情緒,。對(duì)付信心不足,我們還是老套路,,做給他看,。世界上做CPU的企業(yè)中,凡是不做生態(tài)(DEC,、IBM,、HP、SUN,、SGI)或者跟生態(tài)(AMD,、威盛)的CPU企業(yè)都活不好。八十年前幾萬(wàn)衣不蔽體的紅軍剛到陜北時(shí)有誰(shuí)相信這幫泥腿子能解放全中國(guó),?改革開放初期以能買到日本彩電為榮的中國(guó)人有幾個(gè)相信今天中國(guó)的制造業(yè)產(chǎn)值已超過美國(guó)加日本的總和,?在建立自主信息產(chǎn)業(yè)體系方面,,我們要在自己內(nèi)部肅清一切軟弱無(wú)能的思想,,就像毛主席說(shuō)的:“我們的同志,,在困難的時(shí)候,要看到成績(jī),,要看到光明,,要提高我們的勇氣”。
八十年前,,當(dāng)衣不蔽體的幾萬(wàn)紅軍完成兩萬(wàn)五千里長(zhǎng)征時(shí),,他們是中國(guó)最生氣勃勃,具有百折不撓的獻(xiàn)身精神,,真正的民族精英,。他們是懷著對(duì)革命的堅(jiān)定信念,在崇高理想的指導(dǎo)下走完長(zhǎng)征的,。同樣,,自從2001年開始龍芯處理器研發(fā)以來(lái),龍芯人也是懷著堅(jiān)持自主創(chuàng)新,、保障國(guó)家安全,、支撐產(chǎn)業(yè)發(fā)展的堅(jiān)定信念走了一條別人沒有走過、多數(shù)人不信能走通,、非常艱難的“長(zhǎng)征”,。十五年來(lái),很多龍芯的技術(shù)骨干都把人生最美好的青春獻(xiàn)給了龍芯的“長(zhǎng)征”,。加班加點(diǎn)仍是龍芯研發(fā)人員的常態(tài),,而龍芯的薪酬長(zhǎng)期低于同行業(yè)水平,有些人三十多歲就出現(xiàn)了各種健康問題,。不少龍芯的技術(shù)骨干都接到過獵頭公司百萬(wàn)年薪的電話,,但龍芯團(tuán)隊(duì)的核心骨干非常穩(wěn)定。為了龍芯的產(chǎn)業(yè)化,,很多技術(shù)骨干都毅然放棄中科院的事業(yè)編制,,辭職到龍芯公司。人都是有私心的,,但我敢保證龍芯人的私心相對(duì)少一些,;大家離毛主席要求的“一個(gè)高尚的人,一個(gè)純粹的人,,一個(gè)有道德的人,,一個(gè)脫離了低級(jí)趣味的人,一個(gè)有益于人民的人”都有差距,,但我敢自豪地說(shuō)龍芯人的差距相對(duì)小一些,。后之視今,,尤今之視昔。我相信,,我們的后人會(huì)像我們今天崇敬長(zhǎng)征的英雄,、崇敬抗美援朝的英雄、崇敬兩彈一星的英雄一樣,,來(lái)崇敬今天在建立我國(guó)自主可控的信息產(chǎn)業(yè)體系道路上歷經(jīng)艱難險(xiǎn)阻完成新長(zhǎng)征的我們,。
龍芯十五年的堅(jiān)持來(lái)自中國(guó)科學(xué)院的光榮傳承。中科院計(jì)算所是我國(guó)計(jì)算機(jī)事業(yè)的搖籃,,經(jīng)歷了“完全自主但沒有市場(chǎng)化”的第一個(gè)三十年,,為兩彈一星做計(jì)算機(jī);也經(jīng)歷了“完全市場(chǎng)化但喪失自主性”的第二個(gè)三十年,,創(chuàng)辦了聯(lián)想和曙光,,為了與市場(chǎng)接軌,研發(fā)工作忍痛從CPU和操作系統(tǒng)中退出,。我們是中國(guó)第三代計(jì)算機(jī)人,,任務(wù)是在市場(chǎng)化條件下實(shí)現(xiàn)自主性,保障國(guó)家安全和支撐產(chǎn)業(yè)發(fā)展,。我的導(dǎo)師夏培肅院士是我國(guó)計(jì)算機(jī)事業(yè)的重要奠基人,,她多次對(duì)我說(shuō)過,這輩子最大的心愿就是把中國(guó)的計(jì)算機(jī)事業(yè)搞好,,她們這代人沒搞好,,希望我們搞得比她們好。李國(guó)杰院士曾經(jīng)在一次自主可控行業(yè)的大會(huì)上動(dòng)情地說(shuō):我的導(dǎo)師夏老師(李國(guó)杰院士也是夏培肅院士的學(xué)生)已經(jīng)九十歲了,,干不動(dòng)了,;我也七十歲了,快干不動(dòng)了,;如果到胡偉武這一代我國(guó)的CPU和操作系統(tǒng)還沒有發(fā)展起來(lái),,中國(guó)的IT產(chǎn)業(yè)就沒戲了。龍芯團(tuán)隊(duì)有一個(gè)老研究員黃令儀老師,,今年八十歲了還天天在屏幕前拖著鼠標(biāo)查版圖,。有一次我請(qǐng)黃老師參加某用于安全領(lǐng)域的芯片研發(fā)工作時(shí),黃老師脫口而出:胡老師,,我這輩子最大的心愿就是匍匐在地,,擦干祖國(guó)身上的恥辱;我是親眼見過我的同胞被日本鬼子的飛機(jī)炸死的,。前輩的精神感染了我們,,前輩的榮光照亮了我們前進(jìn)的道路,讓我們咬著牙關(guān),,勇往直前,!
龍芯十五歲了,。2001年8月19日清晨當(dāng)屏幕上第一次出現(xiàn)“godson login”時(shí)的那聲歡呼已經(jīng)遠(yuǎn)去,在雨中登黃山的臺(tái)階上高唱《真心英雄》時(shí)的那種豪情已經(jīng)消退,,夜深人靜時(shí)在計(jì)算所北樓長(zhǎng)長(zhǎng)的走廊盡頭泡方便面記憶已經(jīng)模糊,,但龍芯人“為人民做龍芯”的初心未改,“十年磨一劍”的執(zhí)著依舊,,“人生能有幾回搏”的奮斗長(zhǎng)在,。我們已經(jīng)走在“以安全可控為主題,、以產(chǎn)業(yè)發(fā)展為主線,、以生態(tài)建設(shè)為目標(biāo)”的新長(zhǎng)征道路上。迷失方向時(shí),,堅(jiān)持從國(guó)家和人民的角度(而不是自己的角度)做出選擇就是我們心中的“北斗星”,。長(zhǎng)征的道路蜿蜒曲折,不僅有芳草鮮美,、落英繽紛,,更有沼澤沙漠、雪山草地,、豺狼虎豹,,因此前進(jìn)的路上就要苦我們的心智、痛我們的體膚,。龍芯走自主研發(fā)道路,,比直接引進(jìn)處理器芯片或者引進(jìn)處理器核的道路見效慢一些,在路上會(huì)被別人暫時(shí)超過心里著急,;走市場(chǎng)化道路,,要結(jié)合客戶需求把短板補(bǔ)齊,比起在計(jì)算所做研究時(shí)只關(guān)注幾個(gè)有顯示度的指標(biāo)來(lái),,在顯示度方面差一些,;要建立自主軟硬件體系,比只在單一領(lǐng)域做單一產(chǎn)品難度大很多,。這就要求我們?cè)谇斑M(jìn)的道路上不僅要有沖天的豪情,,艱苦奮斗、奮勇爭(zhēng)先,,而且要有鋼鐵般的意志,,做到專心致志、持之以恒,、精益求精,,直至取得最后的勝利。我們是“苦命”而光榮的龍芯人,,雖千萬(wàn)人吾往矣,。
我們正在前進(jìn),。我們正在做我們的前人從來(lái)沒有做過的極其光榮偉大的事業(yè)。我們的目的一定要達(dá)到,。我們的目的一定能夠達(dá)到,。