《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 業(yè)界動態(tài) > 致龍芯15周年 胡偉武披露龍芯3號開發(fā)歷程

致龍芯15周年 胡偉武披露龍芯3號開發(fā)歷程

2016-10-25

  近日,龍芯中科宣布3A3000四核處理器芯片完成流片并通過系統(tǒng)測試。根據現有的測試結果,,龍芯3A3000達到了預定的設計性能目標。其中,,綜合計算性能方面,,在1.5GHz主頻下,GCC編譯的SPEC CPU 2006定點和浮點單核分值分別超過11分和10分,;訪存性能方面,,Steam分值超過13GBps。龍芯3A3000的流片成功,,標志著我國自主研發(fā)的高性能微處理器芯片,,可以超越目前引進的同類芯片性能,。龍芯CPU首席科學家胡偉武撰文披露了龍芯3號開發(fā)的歷程。

  致龍芯15周年:胡偉武披露龍芯3號開發(fā)歷程

  龍芯3A3000芯片

  2016年是紅軍長征勝利80周年,,2016年研制成功的龍芯3A3000處理器即以CZ80命名,,每顆芯片的硅片上都刻有CZ80字樣。

  1936年10月,,紅一,、二、四方面軍經過艱苦卓絕的努力,,三大主力會師,,開創(chuàng)了中國革命的新局面。它雄辯地表明,,只要堅持理想,,實事求是,中國共產黨完全有能力摧堅于正銳,、挽瀾于極危,,從重大挫折中走出來。

  2016年10月,,以長征勝利80周年命名為CZ80的龍芯3A3000處理器研制成功,。它雄辯地表明,只要堅持自主研發(fā),,進行持續(xù)改進,,自主研發(fā)的CPU性能完全可以超過引進技術的CPU,滿足自主信息化需求,。

  2016年10月7日,,我懷著虔誠的心情走進毛主席紀念堂,向毛主席匯報龍芯3A3000的研制成功,。步出毛主席紀念堂,,我感慨萬千。當十年前我開始龍芯3號研制時,,完全沒有想到龍芯3號系列CPU發(fā)展道路之曲折,,奮斗之艱辛,付出之巨大,。

  2006年9月13日,,以長征勝利70周年命名為CZ70的龍芯2E通過科技部組織的驗收,時任科技部部長徐冠華親自參加了龍芯2E的驗收會,。龍芯2E的研制是“十五”末國家863計劃緊急安排的一個任務,。當時“漢芯”造假事件被曝光,加上“十五”863計劃早期支持的龍芯2C沒有達到合同要求的SPEC CPU2000分值300分的目標,,自主處理器研發(fā)受到普遍質疑,。2005年4月,,科技部高新司領導把我叫到辦公室,問我到2005年年底前能不能完成863計劃“十五”初制定的主頻1GHz,、SPEC CPU2000分值達到500分的目標,。我說剩下不到一年時間,肯定來不及,。他說根據有關規(guī)定,項目時間到期后三個月內(即2006年3月底前)提出驗收申請就算按時完成,。我硬著頭皮接了該任務,,因為我知道如果“十五”的任務完不成,那“十一五”國家是不是還支持自主CPU研發(fā)就成問題,。經過艱苦的努力,,龍芯2E在2005年11月底交付流片(把設計好的技術文件交給芯片生產廠家進行生產),2006年3月18日流片成功,,達到了技術指標,。雖然達到這些指標有些勉強(SPEC CPU2000分值達到500分是計算所的編譯組做了很多編譯優(yōu)化實現的,但SPEC CPU的測試是允許進行編譯優(yōu)化的),,但畢竟完成了指標,。龍芯2E的意義從徐冠華部長參加完驗收會后接受新聞聯播記者采訪時說的一句話可以看出:龍芯2E的成功表明,我國在“十五”期間安排的自主CPU研發(fā)是成功的,。這也為“十一五”期間國家繼續(xù)支持自主CPU研發(fā)打下了基礎,。

  2005年深秋,利用龍芯2E流片后等待芯片回來的時間我?guī)е糠铸埿菊n題組的骨干在香山別墅討論龍芯3號的結構方案,。香山別墅和香山飯店一樣在香山公園內,,但比香山飯店便宜而且清靜。香山別墅三天討論的成果是基本明確了龍芯3號系列CPU的可伸縮互連結構以及基于目錄的Cache一致性協(xié)議,。龍芯3號的互連結構中,,每個結點四個處理器核通過交叉開關進行全相連,結點間(不論片上還是片間)通過可伸縮的mesh網絡相連,;多核的Cache一致性采用基于目錄的一致性協(xié)議,,目錄設置在片上共享的最后一級Cache(LLC)上。上述結構有別于當時主流的環(huán)狀多核互連以及基于偵聽的Cache一致性協(xié)議?,F在看來,,該結構是成功的,目前商用主流處理器隨著核數的增加也越來越多采用可伸縮的互連結構以及基于目錄的Cache一致性協(xié)議,。

  在香山別墅的討論中還明確了龍芯3號片內集成內存控制器以及HyperTransport(簡稱HT)接口,。HT是AMD主推的系統(tǒng)總線接口。當時計算所高性能中心與AMD合作緊密,,希望我們使用HT接口,。此外HT接口比較開放,,只要每年交5000美元就可以用于商業(yè)應用,但AMD開放的HT接口不支持多片互連的Cache一致性協(xié)議,,我們自己進行了擴充,。曾經有一段時間,我后悔選擇了HT總線,,覺得HT總線不如PCIE總線普及,,一是HT總線沒有現成的PHY(片內高速接口模塊)可以買到,每次工藝升級都需要定制HT的PHY,,而PCIE的PHY有很多,;二是PCIE接口的外圍器件很多,而HT接口的橋片只有AMD有,。但現在覺得選用HT是對的,。HT是系統(tǒng)總線,協(xié)議簡單高效,,相當于Intel的QPI系統(tǒng)總線,,而PCIE是IO總線,通過HT總線可以方便地把多片龍芯3號直連起來形成多路服務器,。雖然每次工藝升級都要定制HT PHY,,但可以使龍芯CPU不依賴別人的IP,自主性強,。龍芯3號所有CPU中,,沒有一款CPU需要到廠家merge第三方IP。尤其是龍芯3A2000和3A3000,,除了廠家提供的標準單元庫,、單/雙端口RAM以及低速IO單元,每一行代碼(包括CPU核,、內存控制器,、HT控制器、互連網絡等)以及每一個定制模塊(包括多端口寄存器堆,、鎖相環(huán),、HT PHY、DDR2/3 PHY等)都自主設計,。至于外圍橋片,,龍芯已經開始研制并提供外圍橋片,橋片上支持足夠多的PCIE接口,。以后不論AMD是否繼續(xù)發(fā)展HT接口,,龍芯都能自成體系往前走了。

  香山別墅會議的另外一個成果是明確了龍芯抗輻照CPU的發(fā)展,。有一天晚上8點左右,,我們正在會議室熱烈地討論龍芯3號的結構,,當時在計算所科研處工作的夏洪流和傅信國給我打電話說是要來跟我談一個項目的事。他們到香山別墅已是晚上9點多,,我們就坐在香山別墅的走廊盡頭談,,他們說科學院有一個抗輻照CPU的預研項目,希望龍芯課題組來承擔,。我剛開始不愿意做,,結果他們好說歹說地讓我勉強答應了,當時的一個理由是領導每年對他們爭取的項目經費有要求,,我如果不做這個抗輻照CPU項目,,他們的任務就完不成了,我頭腦一熱就答應了?,F在龍芯抗輻照CPU已經隨著以北斗為代表的多顆衛(wèi)星在天空翱翔,每年還為龍芯公司帶來較可觀的收入,,成為龍芯公司的戰(zhàn)略產品并開始走向系列化,。真是非常感謝夏洪流和傅信國那天晚上的苦口婆心。

  在龍芯3號結構基本確定后就展開了龍芯3號CPU的研發(fā),。但當時“十五”863課題結束了,,“十一五”“核高基”(即“核心電子器件、高端通用芯片和基礎軟件產品”重大專項)課題遲遲啟動不了,。為此,,科學院對龍芯3號的研制給了500萬元的前期經費支持(執(zhí)行期限2007年1月到2007年12月)??萍疾扛咝滤抉T記春司長得知龍芯3號的第一款芯片龍芯3A1000已經基本完成設計,,但缺少流片費時,在863計劃內緊急安排了2000萬的經費支持龍芯3號的研制(執(zhí)行期限2008年1月到2010年12月),。原計算所所長李國杰院士曾經在計算所中層干部會上當眾點我的名說,,“胡偉武,你不能以任何經費的理由放緩龍芯3號的研制,,計算所就是砸鍋賣鐵也要支持龍芯的研發(fā)”,,并在所內設立了一個經費沒有封頂的課題,到2010年龍芯第一筆“核高基”課題經費到賬時,,龍芯課題組已經預支了計算所七,、八千萬元經費。

  在龍芯3號研制過程中,,作為中法兩國在IT領域戰(zhàn)略合作的一部分,,科技部安排龍芯CPU在意法半導體流片。2006年10月26日,,在胡錦濤總書記和希拉克總統(tǒng)共同見證下,,中國科學院與意法半導體在人民大會堂簽署了關于龍芯CPU戰(zhàn)略合作的文件,。基于龍芯2E的成功,,意法半導體還花三百多萬美元授權費購買了龍芯2號系列產品的授權,,其中龍芯的第一個產品芯片龍芯2F于2007年7月31日流片成功,目前仍在大量應用中,。后來意法半導體由于自身業(yè)務的原因終止了購買龍芯2號系列的產品授權,,計算所收回了龍芯2號的產品權利并同意不再收取剩余的三分之一左右授權費,但我們從龍芯2F的研制中學會了意法半導體的芯片質量管理,,學會如何把一個樣品變成產品,。龍芯CPU在意法半導體的流片一直延續(xù)了下來,龍芯3A1000即使用意法半導體的65nm工藝流片,。

  不記得經歷了多少加班加點,,龍芯3A1000于2008年底交付流片。只記得流片前的幾個月每天晚上十點開例會安排工作,。晚上十點例會是非常高效的一種工作方法,,會后大家把有關設計在EDA服務器上跑起來再回家,第二天早上上班時剛好跑出結果來,;如果是早上上班后開始在EDA服務器上跑,,基本上大半天就在等待服務器運行出結果中度過。在此后龍芯CPU問題的攻關中,,一直沿襲了晚上例會安排工作的方法,。

  2009年5月20日龍芯3A1000晶圓生產下線,9月28日樣片回來,,成功啟動操作系統(tǒng),,主頻800MHz-1GHz。這是龍芯CPU第一次啟動多核操作系統(tǒng),,免不了調一通,。印象最深刻的是10月2日晚上熬了個通宵,一起的有王劍等人,,剛開始是挨個核跑單核操作系統(tǒng),,把每個核都跑一遍,再把多核操作系統(tǒng)搞穩(wěn)定,,一直到第二天早上才弄完,。

  中國科學技術大學的陳國良院士曾經在2007年用三百多顆龍芯2F搭建了峰值性能達到1TetaFLOPS的高性能計算機KD50。在龍芯3A1000出來以后又用80顆龍芯3A1000搭建了KD60高性能計算機,。在KD60運行LINPACK過程中,,總是出現偶發(fā)性錯誤。這個錯誤如果單個芯片跑一個月也碰不上一次,只有像KD60這樣80多片一起跑才會一天碰到一次,。有三個多月的時間,,我們一直進行各種嘗試,試圖定位該錯誤并明確其機理?,F在只記得2010年春節(jié)的大年三十晚上還在跟當時負責軟件的高翔商量進行各種嘗試,,縮小搜索范圍。一直到春節(jié)后才定位了這個錯誤,,錯誤的原因是當訪問Cache失效,,從內存回填(Refill)數據時,同時回填一級和二級Cache,,通常為了提高性能,,這是應該的。但在某種極端情況下出現了錯誤,,即二級Cache的回填由于二級Cache忙需要等待,,而處理器核得到一級Cache回填數據后繼續(xù)運行,該數據被修改后再從一級Cache中替換出來寫回二級Cache,,替換回來的新數據寫到二級Cache后,,從內存回來的老數據再回填二級Cache把新數據沖掉了,從而引起錯誤,。這個問題以及其它的小問題導致龍芯3A1000進行了第一次改版并于2010年5月中旬流片,10月底第一次改版流片成功,,然后開始了小批量生產,。

  龍芯3A1000在2012年又進行了第二次改版。第二次改版主要是雙路直連時在特定訪問序列下導致兩片間的互連網絡死鎖,。大致機理是HT協(xié)議的虛通道只有三個,,分別是POST、NONPOST,、RESPONSE,,而龍芯的片上網絡協(xié)議AXI有五個實通道,分別是讀請求,、寫請求,、寫數據、讀響應,、寫響應,。于是在通過HT傳輸Cache一致性協(xié)議時,就將寫請求與寫數據合并一個通道,,讀響應與寫響應合并一個通道傳輸,。Cache一致性協(xié)議要求寫響應不能被堵,而讀響應通道發(fā)出的二級Cache給一級Cache的一致性請求有時會因為一級Cache處理不過來而被堵住,,這時就會順帶堵死寫響應通道,,導致死鎖,。當時解決的辦法是在HT原有三個虛通道的基礎上增加了第四個虛通道并且允許寫命令與寫數據之間插入寫響應包。3A1000的第二次改版還解決了HT互連時一個異步握手的問題,。3A1000的第二次改版于2012年2月下旬流片,,2012年8月中旬流片成功。至此龍芯3A1000就很穩(wěn)定了,至今還是龍芯銷售的一款重要芯片,,尤其是在工控領域,。

  現在回頭看,龍芯3A1000的研制是成功的,。3A1000是我國第一個四核CPU芯片,。在3A1000的研制過程中,我們掌握了多核CPU的片內互連及Cache一致性技術,,以及片間多路互連技術,。直到今日,龍芯仍然是唯一能支持多路服務器的自主CPU,。在最近國外CPU企業(yè)對中國企業(yè)的CPU技術授權中,,支持多路服務器的技術受美國政府限制還是不能給中國的。龍芯3A1000的處理器核沿襲了龍芯2E和龍芯2F的處理器核結構,,雖然在MIPS64兼容性方面有較大改進,,性能只進行了局部優(yōu)化。龍芯3A1000處理器核的性能略高于Pentium III的水平,,在2006年龍芯2E剛出來時這個性能還說得過去,。龍芯3A1000仍沿用該處理器核有點慢了,但在應用比較固定的很多領域還能用,,按理說龍芯的下一款CPU應該致力于處理器核的性能優(yōu)化,,大幅度提高通用處理性能,但在學院派的思想主導下,,隨后的龍芯3B走了彎路,,使龍芯遭受了挫折。

  龍芯3B的研發(fā)得到“核高基”重大專項的支持,,是在龍芯團隊轉型成立公司(龍芯中科技術有限公司)以及有關部門大力展開自主基礎軟硬件應用試點的背景下展開研制的,。2010年把龍芯課題組轉型成立公司是下了很大決心的,當時已認識到不能腳踩兩只船,,辦企業(yè)和做研究不一樣,,即使嘔心瀝血,也是九死一生,,因此一定要專心,,要求絕大多數技術骨干都從計算所辭職。像張戈25歲就已經是副高職稱,是學術上很有前途的苗子,,也毅然從計算所辭職,。下這么大決心,與我當時擔任全國人大代表,,對中央以企業(yè)作為創(chuàng)新主體,,科技創(chuàng)新要為經濟社會發(fā)展服務的精神非常了解有很大關系。尤其是在“十七大”報告中,,傳統(tǒng)的“科教文衛(wèi)”不再單獨作為一個板塊,,科技創(chuàng)新直接在經濟發(fā)展的第一部分來描述,對我觸動很大,。龍芯公司的成立得到很多領導專家的支持,。除了李國杰所長的大力支持外,路甬祥院長專門批示,,要求科學院有關部門落實龍芯團隊的股權激勵,。原國家外專局局長馬俊如從2006年起就曾多次對我說,龍芯在科學院里面已經做得很好了,,不能再好了,,要想更好,就必須下海辦企業(yè),;在成立企業(yè)后馬局長又給了我很多指導,。工信部的電子司司長丁文武也給了我很多鼓勵。

  龍芯3B的研發(fā)工作在2008年底龍芯3A交付流片后開始全面展開,。首款龍芯3B1000繼續(xù)基于65nm工藝,,目標主頻800MHz-1GHz,八核結構,,每個核包含兩個256位向量部件,峰值浮點性能達到128GFLOPS,,這在當時處于世界領先行列,。龍芯3B1000于2010年6月20日左右流片,2010年11月底回來第一批芯片,。但第一批芯片回來測試并不順利,,連操作系統(tǒng)都啟動不了。很快就找到了原因:由于芯片可測性設計部分的邏輯設計錯誤,,在功能模式下誤把內存引腳置為測試狀態(tài),,導致芯片訪問不了內存,通過FIB(用離子束改變硅片上的連線)修復后功能正常,。

  這是一個重大的打擊,,龍芯歷史上從來沒有犯過這樣簡單的錯誤,而且在同一時期流片的龍芯1A、龍芯2I等芯片也出現了由于簡單工作失誤引起的錯誤,。究其原因,,是龍芯團隊在2010年初從課題組管理機制轉向公司管理機制的過程中,原來“作坊式”的設計流程被打破了,,“工業(yè)化”的設計流程沒有建立起來,。在課題組階段,我作為課題組長,,每顆芯片從結構設計,、邏輯設計、功能驗證,、可測性設計,、定制設計、物理設計各個環(huán)節(jié)從頭盯到尾,,及時協(xié)調各組的配合,,關注每一個細節(jié),因此沒有出現管理上的錯誤,。而在3B1000的研制過程中,,龍芯課題組轉型成立了龍芯公司,我的主要精力轉向公司,,芯片研發(fā)的總協(xié)調人缺位,,導致頻頻失誤。痛定思痛,,從此我著手芯片研制的質量體系建設,,建立了“五步法”(立項、方案,、簽核,、測試、結項)研制過程,,并詳細規(guī)定了每個階段的研發(fā)和審核內容,。在此后龍芯公司進行的幾十次流片中,沒有出現過嚴重的質量問題,,而且比我作為課題組長天天盯著效率高很多,。

  龍芯3B1000首款流片不成功促使我們馬上進行改版,好在只要改一層金屬,,時間和費用上都比較省,。3B1000的第一次改版2011年2月初流片,7月初回來,,調試比較順利,。但在壓力測試時又出現死機現象,,經過幾個月的攻關發(fā)現又是死鎖問題。大致機理是一個處理器核訪問其它結點的內存時,,寫地址和寫數據是分開發(fā)出的,,結果在另外一個結點的處理器核也過來訪問內存,而且同時有幾十個這樣的互相訪問時,,寫地址過去了但寫數據互相堵住,,導致死鎖。避免死鎖的辦法是要求寫地址和寫數據保持原子性,,即必須一起發(fā)出和傳輸,。為此龍芯3B1000進行了第二次改版,于2011年12月初流片,,2012年4月底回來,。從此達到穩(wěn)定狀態(tài)。

  在掌握65nm工藝的基礎上,,我們于2009年11月開始評估32/28nm工藝,,并準備把它作為龍芯CPU的下一個工藝結點。2010年12月選定意法半導體與三星合作的32nm工藝并開始八核3B1500的設計,。3B1500基于3B1000的設計,,主要通過工藝升級提高性能,同時做了局部的性能優(yōu)化,,尤其是在處理器核中增加了私有二級Cache,。2012年1月中旬完成3B1500的設計并交付流片。2012年8月底拿到樣片,,初步測試正常,,頻率從3B1000的900MHz提高到1.25GHz(最高可達1.5GHz)。在經過測試后對該芯片進行了萬片規(guī)模的小批量生產,。在應用驗證過程中,,出現了在很大的應用壓力下個別芯片不穩(wěn)定現象。剛開始覺得是個體問題,,后來出現的次數多了,,開始于2013年1月31日組織人員攻關定位問題,查找機理,。也是每天晚上召開例會討論,,安排各種嘗試,,在這個過程中發(fā)現了幾個軟硬件磨合的問題并通過軟件調整后,,出問題的概率小了很多,但問題如幽靈般還在,。直到2013年4月12日,,才抓到了該問題,。這個問題是從3B1000到3B1500改版過程中引進的,為了提高性能,,處理器核收到多個維護Cache一致性的無效請求時,,原來每兩拍才能處理一個,改成可以連續(xù)處理,,導致清除LL/SC同步指令的同步位llbit時錯了一拍,,誤把IO DMA引起的Cache無效請求當作0號處理器核的Cache無效請求(IO DMA的編號剛好為0,與0號處理器核區(qū)分不開),,通過軟件調整可以規(guī)避此問題,。經過批量測試,原不穩(wěn)定現象消失,。

  為了從根本上消除該問題和其它一些小問題,,我們對3B1500進行改版。改版時根據生產廠家的建議,,工藝從32nm遷移到28nm,,于2013年4月底流片,10月底收到樣片,,功能正常,,但成品率極低,與廠家確認后明確是廠家生產問題,。廠家又建議我們恢復到32nm工藝流片,,并以某種方式補償此次流片費用,于是又再次改版,,于2015年1月底流片,,2015年6月下旬收到樣片,測試后功能正常,,而且成品率正常,,目前已經量產。

  龍芯3B的研制過程真是一波三折,。出現過龍芯從課題組向公司轉型過程中的管理問題,,生產廠家引起的問題,多核互相訪問引起的死鎖問題,,處理器核Cache一致性引起的問題,。在解決了一個個問題后總算取得了成功。

  但龍芯3B的主要問題不在研制過程中,,而是剛開始定方向就出了很大偏差,。主要問題在于雖然龍芯團隊從課題組轉型成為了公司,但龍芯3B的研發(fā)還保持著學院派導向,,過度追求多核以及浮點峰值性能的單一指標,,通用處理性能不足,,滿足不了在“十一五”期間展開的自主CPU應用和試點對性能的要求。


本站內容除特別聲明的原創(chuàng)文章之外,,轉載內容只為傳遞更多信息,,并不代表本網站贊同其觀點。轉載的所有的文章,、圖片,、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯系確認版權者,。如涉及作品內容,、版權和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當措施,,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118,;郵箱:[email protected],。