|
這些天,中科院計算所在緊張地期待着,從生產線運回來的幾十個投片將被一一插上計算機主板,進行調試,如果成功則意味着水平與英特爾奔騰2旗鼓相當的龍芯1——中國人自主開發的高性能通用芯片正式“新鮮出爐”,跨入規模化生產階段。半年前,計算所曾向新聞界演示了龍芯的第一款“驗證芯片”,但那僅僅完成了龍芯的邏輯設計工作,因爲它是在一個可編輯的FPGA芯片上“燒製”出來的“樣本”,僅此一份。之後,課題組對龍芯1進行了物理設計,形成了版圖並拿到集成電路流水線上生產,行話稱之爲“投片”。這是龍芯1規模化生產前的必備工作。別看龍芯僅有指甲蓋大小,但關係到中國的信息系統安全和信息產品安全。
龍芯的主要設計者胡偉武在接受本刊記者採訪時說,“我們一直是用心血澆灌龍芯,付出了難以想象的艱辛。”秉承老輩人的傳統,他們給芯片取了個小名叫“狗剩”,希望“名字賤一點容易養大”。
15個月,一羣平均年齡不到30歲的年輕人終結了中國計算機產業“無芯”的尷尬歷史。而我則在3個小時內,見到了關係“龍芯”命運的兩個關鍵人物:中科院院士、計算所所長李國傑和主持芯片設計的年輕科學家胡偉武,聽他們津津有味地談龍芯誕生背後的故事,採訪幾乎成了一種享受。
胡偉武告訴記者,中國科技界不缺精兵強將,缺的是統領三軍的“帥”,而李國傑正是這樣的一位“大帥”。他自認是一員“福將”。而李國傑在談到胡偉武時,毫不掩飾自己的欣賞與愛護。
回來整理採訪筆記,發現他們的談話有許多驚人的相通之處。儘管時空交錯,儘管年齡相差23歲,他們的思想和精神卻因龍芯而休慼相關。
李國傑決定做芯片時,可謂背水一戰。芯片的靈魂是設計和標準。而把芯片作出來不僅僅有邏輯設計、版路設計,還包括生產芯片必需的IP庫和芯片加工廠參數的調整,這都是芯片公司的機密,花再多錢也買不到。他剛來計算所時,面臨的最大問題是科研資源分散、低水平重複,研究人員各自爲政,能申請到幾萬元、10多萬元的項目就很滿足了。
李國傑認爲,計算所應該在一些國家戰略性的項目上集中力量,優化資源。儘管人們普遍認爲計算所沒有能力做芯片,但李國傑分析說,目前美國PC機普及率接近50%,而在中國才僅達3%左右,發展空間巨大。芯片產業的做大做強,必將帶動整個信息產業的發展。未來10年,是中國芯片產業發展的關鍵階段,想等到所有的科研條件都具備的時候再來做芯片,最好的時機也早已錯過了。因此,李國傑認定高性能通用芯片是國家信息產業發展的戰略所需。隨即決定,拿出當年全所一半的運轉經費1000萬元來做龍芯。
優良的技術路線
年輕人的表現比李國傑預料的還好。僅用5個月,就設計出了第一款驗證芯片。接着,又馬不停蹄地開始做投片。從驗證芯片到正式投片調試成功僅用了10個月。
這就是龍芯的速度,連胡偉武自己也覺得吃驚。他認爲,成功的原因首先在於,自始至終堅持了十分優良的技術路線。立項之初,李國傑確定的目標是“高性能、通用、一步到位”,在後來的摸索中,課題組又確定了兼容以及採用RISC結構這兩個具體目標。
中國人是否要自己做高性能通用芯片?不少人認爲,處理器最大的市場在嵌入式方面,中國的處理器設計應該定位在嵌入式上,沒必要也做不出通用處理器設計。誠然,嵌入式處理器的需求量很大,但大市場不一定能賺錢,小市場有時反而能賺大錢,因爲後者是核心技術,別人做不了。英特爾就是一個典型的例子,英特爾處理器數量也只佔全球市場的1.5%。其次,中國不是小國,核心技術自己不掌握不行。實際上,胡偉武認爲,嵌入式處理器可做可不做,因爲別人的嵌入式處理器價格很低,且不會卡我們。有的國外公司甚至主動提出,只要用其生產線,他們可以免費提供嵌入式的IP核。
中國的芯片是否要和別人的兼容?胡偉武認爲,能否兼容非常重要。回顧中國計算機發展的歷史,應該說,我們的“祖上”也是挺“闊”的,直到20世紀80年代初,我們的處理器設計技術不比別人差多少。落到今天這個地步,很大程度上是吃了不兼容的虧。因爲現在計算機中絕大部分費用不是花在硬件上,而是花在軟件上。若不兼容,自己設計指令系統,只能圖一時痛快;與其他主流指令系統兼容,確實很麻煩,有時爲了一條指令就得修改數據通路,增加不少東西,但卻可以一勞永逸。龍芯課題組有一個很精幹的操作系統組,僅4個人,在3個月內搞定一切與軟件有關的東西,就是得益於兼容設計。胡偉武一直很慶幸採用了兼容的做法,如果自己設計指令系統,絕不可能在短時間內獲得完善。是步步爲營還是跨越式前進?課題組決定穩紮穩打。採用從系統結構設計,到C模擬器設計,到Verilog仿真,到FPGA驗證,到標準單元投片,再到全定製投片的方法。在系統結構方案確定後,首先設計了一個Cycle-by-cycle的C語言模擬器,該模擬器詳細描述了龍芯處理器的系統結構,能夠模擬處理器每一拍中每一位信號的變化,並驗證設計的正確性,發現錯誤及時糾正,確保聯調時基本一次成功。若是當初採取跨越式的設計方法,直接進行邏輯設計,恐怕會欲速則不達,因爲越上層的設計,調試越容易,而越底層的設計,調試越困難。
人必須要有點精神
“犯強漢者,雖遠必誅”。背後是駿馬、雄獅,一幅威武的西征軍隊圖。胡偉武把這幅圖畫放在自己的便攜式電腦的屏幕保護程序上。“有人說中國人做不出自己的芯片。我就不信那個邪。我常常跟我的學生講,國家是每個人的國家,每個人都有責任爲國家的發展出力。國家發展好了,你的日子自然好過了。我經常出國,在印度這樣的國家我每天靠56美元的補貼能過得非常舒服,而在美國,每天補貼84美元卻過得很拮据——國力強弱對比關係到每個人。”有趣的是,李國傑也非常強調對國家、對民族的責任感,他認爲衡量一個科研人員的水平高低,不僅應當看他的技術實力,還要看他是否具有將個人價值融入爲祖國繁榮富強而奮鬥的責任感,是否具有自立於世界民族之林的自信心。李國傑回憶起當年他領導研製曙光計算機的歲月,深有感觸地說,要做成任何事業,最不可少的是激情。回國後,國家給我個任務,研製出自己的高智能計算機。有人對我的能力也表示懷疑,說李國傑在國外只會寫點文章,從來沒有做過機器,他能搞出什麼來!就是在那樣的背景下,我拉了一個隊伍,埋頭苦幹,分析計算機的核心操作系統,最終把它搞明白了。1992年3月11日,我們開了誓師大會,選拔了一支“輕騎兵”,一共6個人殺到美國去,租了個房子搞研究。主要是想利用那裏的研究氛圍。他們出發的時候,大家頗有“風瀟瀟兮易水寒,壯士一去兮不復還”的意味,然而他們最終凱旋了!我們稱之爲“洋五七幹校”,一天工作16個小時以上。並且借用了容國團的“人生能有幾回搏”來鼓舞士氣。就是靠着這種“不達目的不罷休”的堅定信念,憑着一番報效國家、民族的激情,我們作出了曙光計算機。1999年我來時,計算所正處於最低谷,靠什麼能夠重振計算所的輝煌?惟一可以憑藉的就是信念。
現在,“人生能有幾回搏”被貼在龍芯實驗室的牆上。胡偉武說,15個月來,課題組的成員付出了難以想象的艱辛,尤其是在驗證芯片幾次調試的階段。好多人都有調試程序的經驗,但很少有人調試過操作系統,而在一個本身就可能出錯的處理器上調試過操作系統的人更少——挑戰就在這裏,當出現一個錯誤時,應用程序、操作系統以及處理器本身都是懷疑的對象,需要多方面的協調及分析。我們曾經在C模擬器、Verilog模擬環境、以及FPGA驗證系統上分別都運行了LINUX操作系統,每次都是連續幾天幾夜的鏖戰。2001年8月19日,胡偉武他們設計的龍芯成功地把LINUX操作系統boot起來。當“login”的(用戶登錄)提示符出現在屏幕上時,計算所北樓309房間一片歡呼。
龍芯讓他們自豪。尤其是龍芯的系統結構設計值得稱道,可以說目前世界上最先進芯片的系統結構技術,該有的龍芯都有,不少地方還有創新。最令胡偉武得意的是,龍芯中還專門針對網絡攻擊進行了安全設計。他解釋說,緩衝區溢出是一種非常普遍、非常危險的漏洞,是目前大多數網絡攻擊所採取的辦法。在各種操作系統、應用軟件中廣泛存在。利用緩衝區溢出攻擊,可以導致程序運行失敗、系統死機、重新啓動等後果;更爲嚴重的是,可以利用它執行非授權指令,甚至可以取得系統特權,進而進行各種非法操作。龍芯通過允許操作系統對堆棧段的取指進行限制,可以有效防止利用緩衝區溢出技術進行的網絡攻擊。
我不是睡眠最少的
在課題組中胡偉武的睡眠至少不是最少的,但也有一個星期沒有正經睡覺的經歷。尤其是在8月19日龍芯誕生前的那個星期,更是緊張得像打仗,看看他記憶中的日記吧——
8月12日,星期日。下班前得知第二天有領導要來所裏檢查工作,決定冒險把原來定的聯調時間提前一週,希望一次成功。但怕萬一失手會影響士氣,只找了幾個骨幹在星期一晚上開始聯調。即使發現一個很小的錯誤,也要修改,而修改一次設計再形成新的FPGA燒製文件,需要至少8個小時。只有一天24小時全拿來工作,才能保證有兩次修改機會。
8月13日,星期一。凌晨四點,把FPGA文件寫入FPGA,沒有任何動靜。很快就用邏輯分析儀發現了問題。原因是啓動時與主板握手機制有缺陷,導致主板一直沒有撤掉復位信號。趕快修改,12點形成了新的FPGA燒製文件,寫入後還是沒有任何動靜。晚上接着調試,發現芯片插卡上有兩個焊點短路,去掉後主板的液晶顯示器上如約顯示出“GODSON”(龍芯的英文譯名)字樣,立時爆發出一片歡呼。
8月14日,星期二。我們決定連續作戰,到晚上11點左右,成功地運行經過改造的主板上的BIOS系統,相當於一個簡單的操作系統,又是一片歡呼,這時課題組的其他成員才知道,我們是在龍芯上運行程序。12點,要求所有人回家睡覺。晚上雷聲大作,風雨交加,以示慶賀。忽然覺得,幾個月來沉重的壓力稍有緩和,我卻興奮得難以入眠。
8月15日,星期三。上班後開始試圖啓動LINUX操作系統,但每次都在最後進入用戶態啓動各種應用程序時出錯。懷疑是TLB的問題,因爲訪問用戶空間纔開始使用TLB。一直跟TLB鬥爭了三天兩夜,中間發現了不少問題,每次充滿期望地改過來卻總是歸於失望。
8月18日,星期六。直到吃晚飯前,才恍然大悟,發現這些天來困擾我們的問題,趕快修改。
8月19日,凌晨2點多。形成FPGA文件並寫入FPGA,2點42分,屏幕上出現了“login”字樣,登錄進去隨便玩,和使用其他機器上的LINUX一樣。我用vi編輯了一個文件記錄這一歷史時刻,興奮得馬上給唐志敏打電話報告好消息。那時雖然我們都已經極度疲憊,但在場的6個人都興奮得毫無睡意,一直聊天到天亮。巧的是,今晚也是風雨交加。早上6點,回家睡覺,我連續睡了20多個小時。
爲龍芯而“癡狂”
這麼“玩命”,更深刻的原因也許在於,胡偉武對做芯片的癡迷。在大學畢業時,他和同學合作過一個與8086指令級兼容的處理器,這是一個用400多個74LS系列的芯片搭起來的電路,能夠運行8086指令系統中除了十進制和除法指令以外的所有指令。由於沒有製版的費用,所有的連線都是手工焊的。
2000年10月中旬,所領導派胡偉武到母校中科大去搞招生宣傳。回到曾經工作過的實驗室,看着自己心愛的機器靜靜地躺在那裏。面對與十年前一樣凌亂的實驗室和滿桌觸手可及的芯片、電容、電阻、電烙鐵,胡偉武有一種重操舊業的衝動,“因爲那些沒日沒夜地與邏輯門、觸發器、譯碼器、選擇器玩命的日子有一種深深的誘惑。”而此時,計算所正在籌備芯片設計項目,胡偉武給負責籌備工作的系統結構室主任唐志敏打電話,主動請纓,開玩笑說一兩年之內做不出來,“提頭來見”。
在做處理器設計之前,胡偉武作了近十年的共享存儲系統結構研究,他所做的一個用女兒佳佳的名字命名的軟件,讓不同計算機之間實現了內存的共享,風靡20多個國家。但受囿於芯片和操作系統,常常覺得不夠“過癮”。他說現在自己做芯片,感覺被束縛的手腳一下得到了自由。他希望將來把自己在共享存儲並行系統方面十來年的積累做到實用系統中去,“隨心所欲”,簡直“爽呆”。回顧這些如珍珠般閃亮的歲月,胡偉武說充滿了艱辛,但其中的樂趣以及成功的興奮,也使得一切的辛勞變得可愛起來。有好幾次,他在早上六、七點鐘打開實驗室的門,發現有些人手裏扶着鼠標就靠在椅子上睡着了。這樣的場景常常使他忍不住想落淚。但胡偉武還是叫醒夥伴們,詢昨天晚上的進展,並鼓舞大家接着幹——他開玩笑說,有時候覺得自己比“周扒皮”還狠。胡偉武有一個叫張福新的學生,在龍芯驗證芯片出生前的兩個月中,很少在凌晨4點前睡覺。有一次,他們在深夜等計算機的運行結果,聊天時說到了生死。張福新說最不希望老死,看着自己的生命一點點被耗盡。
胡偉武動情地說,我們有一種觀點,我們現在落後這麼多,別人不比我們笨,如果大家都一樣一週五天,一天8小時上班,恐怕很難趕上人家,惟有像當年搞“兩彈一星”一樣拼命,至少得累死一批人,中華民族纔可能不受壓制,纔有可能實現民族的偉大復興。
|