<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

龍芯研發(fā)感悟

——
作者:龍芯研發(fā)人員胡偉武 時(shí)間:2007-04-19 來(lái)源: 收藏

這是處理器主要設計人員胡偉武發(fā)布在中國科大BBS站[bbs.ustc.edu.cn]的兩篇文章,一年過(guò)去了,終于正式發(fā)布,回頭再讀讀這些文字,的確有一些別樣的滋味……

我們的CPU
胡偉武

我參與計算所的CPU開(kāi)發(fā)項目,源于2000年10月一個(gè)偶然的機緣。10月中旬,所領(lǐng)導派我到我的母校中國科技大學(xué)去進(jìn)行招生宣傳。這是我1991年畢業(yè)后第一次回到母校。我回到了我原來(lái)工作過(guò)的實(shí)驗室,十年前在那里,我曾經(jīng)和另外一個(gè)同學(xué)一起做過(guò)一個(gè)與8086指令級兼容的處理器作為本科畢業(yè)設計。這是一個(gè)用400多個(gè)74LS系列的芯片搭起來(lái)的電路,能夠運行8086指令系統中除了十進(jìn)制和除法指令以外的所有指令。由于沒(méi)有制版的費用,所有的連線(xiàn)都是手工焊的。這次回去,我看到了我原來(lái)做的機器還靜靜地躺在那里。面對與十年前一樣凌亂的實(shí)驗室和滿(mǎn)桌觸手可及的芯片、電容、電阻、電烙鐵,我有一種重操舊業(yè)的沖動(dòng),因為十年前那些沒(méi)日沒(méi)夜地與邏輯門(mén)、觸發(fā)器、譯碼器、選擇器玩命的日子有一種深深的誘惑,至今我還可以如數家珍地說(shuō)出好多當前我用過(guò)的集成電路芯片的引腳定義。我想到了我們所正在籌備的CPU設計項目,于是我給我的師兄唐志敏打電話(huà),他是計算所系統結構室的室主任,目前正負責計算所CPU設計項目的準備工作。我開(kāi)玩笑說(shuō)一、二年之內不把通用操作系統boot起來(lái),提頭來(lái)見(jiàn)。于是回計算所后,我就開(kāi)始考慮CPU的指令系統和流水線(xiàn)等問(wèn)題。

2001年8月19日,前蘇聯(lián)解體的十周年紀念日,我們設計的Godson CPU成功地把LINUX操作系統boot起來(lái)。當 “l(fā)ogin:” 的提示符出現在屏幕上時(shí),計算所北樓309房間一片歡呼。到9月中旬,一個(gè)用我們自己設計的CPU的完整計算機系統已經(jīng)浮出水面,該系統運行完整的LINUX操作系統, 內核版本為2.4,可以做其他運行LINUX操作系統的計算機所支持的一切事情,包括運行g(shù)cc編譯器,X-window視窗系統,WEB服務(wù)器,SPEC CPU2000基準程序等。我們最引以為豪的還是該CPU的系統結構設計??梢哉f(shuō)目前世界上最先進(jìn)CPU的系統結構技術(shù),該有的Godson都有,不少地方還有創(chuàng )新。雖然目前我們只是基于FPGA的設計,主頻也不高,但當我們的CPU運行到12.5MHz時(shí),其性能已經(jīng)不比50MHz主頻的Intel 486差(當然, 我們的主板比486主板要好),確切地說(shuō),浮點(diǎn)性能比486強一點(diǎn),定點(diǎn)性能比486差。值得一提的是,當我們用一個(gè)叫“偏執狂(Paranoia)”的測試程序測試CPU的浮點(diǎn)部件是否符合IEEE 754標準時(shí),奔IV處理器測出了浮點(diǎn)不嚴格符合IEEE 754標準而我們的CPU完全符合標準。此外,在Godson中還專(zhuān)門(mén)針對網(wǎng)絡(luò )攻擊進(jìn)行了安全設計,可以有效防止利用緩沖區溢出技術(shù)進(jìn)行的攻擊。

應該指出的是,我們只是完成了一個(gè)CPU的邏輯設計,目前是用FPGA對這個(gè)邏輯設計進(jìn)行驗證,只是一個(gè)階段性成果,還沒(méi)有進(jìn)行投片。用李所長(cháng)的話(huà)說(shuō),“三分之二的工作還在后面”。如果我們對目前的工作沾沾自喜,那是很膚淺的。但即使是這個(gè)成果的取得,也來(lái)之不易。個(gè)中滋味,酸甜苦辣俱全,很難為外人所體會(huì )?;仡櫸覀冮_(kāi)發(fā)Godson處理器的過(guò)程,雖然不長(cháng),但有教訓,也有經(jīng)驗,總結一下,對以后的工作是有好處的。

我們做CPU設計緣起于所長(cháng)李國杰院士的直接推動(dòng)。李老師是我接觸過(guò)的院士中比較欽佩的一個(gè),因為他能夠站在如何發(fā)展整個(gè)國家的信息產(chǎn)業(yè)的角度來(lái)考慮問(wèn)題,而不是一個(gè)局部的角度?,F在我慢慢知道,他推動(dòng)我們所做CPU設計是很不容易的。也許是由于前幾年計算所的反復折騰給人留下了不好的印象,使得很多人覺(jué)得計算所沒(méi)有能力做CPU,李老師最后只能把CPU設計作為一個(gè)計算所的所內項目先做起來(lái)。我在計算所連讀書(shū)帶工作十來(lái)年,也是第一次體驗到不用立項申請而直接開(kāi)始做一個(gè)課題。CPU設計技術(shù)是核心技術(shù),但市場(chǎng)壁壘很高,即使現在已經(jīng)投片出來(lái)很好的CPU,如果沒(méi)有人用就會(huì )走入以前“鑒定會(huì )就是追悼會(huì )”的怪圈。但我相信李老師在信息產(chǎn)業(yè)界的經(jīng)驗和影響力,所以決心做下去。

我的師兄唐志敏是系統結構室的室主任,他把握著(zhù)整項工作的大局,領(lǐng)導整個(gè)CPU設計的總體規劃。他的大度和謙和能夠把一批非常能干的年輕人團結在一起,使大家互相之間從無(wú)猜忌?,F在在科技界有一種奇怪的現象,就是一個(gè)年輕人作出一些成果之后,就喜歡獨立門(mén)戶(hù),結果造成了科研力量分散,干不成大事的局面。大家都在沾沾自喜地干一些幾十萬(wàn)或頂多是上百萬(wàn)的項目,形成不了很大的力量。在我們的項目組中,卻有一批本身也很厲害,能夠獨挑一攤的年輕人緊緊地團結在一起,同心協(xié)力干一件事情,一個(gè)重要的原因是唐志敏是一個(gè)能夠容人的領(lǐng)導。舉一個(gè)簡(jiǎn)單的例子,在所里后來(lái)立的一個(gè)CPU設計的項目中,我是項目負責人,但包括項目申請書(shū)、每月一次的課題進(jìn)展狀況及支出情況表、以及鑒定會(huì )材料等,我一個(gè)字也沒(méi)有寫(xiě)過(guò),全是唐志敏代勞,使我有90%以上的時(shí)間能夠用在編程和邏輯設計。這只是一件小事,但我在計算所十來(lái)年,見(jiàn)了不少下屬幫領(lǐng)導寫(xiě)報告的事,卻從未見(jiàn)過(guò)領(lǐng)導幫下屬寫(xiě)報告的。唐志敏在全局的把握和總體規劃上也是有獨到的見(jiàn)解,至少是我所不能及的。關(guān)于我們未來(lái)CPU的用途,我的主張是自己做高性能工作站,但做出來(lái)干什么以及如何與別人競爭卻難說(shuō),唐志敏卻非常有數,他說(shuō)現在我們所的軟件室正在做電子政務(wù),以后結合在一起做,至少在安全方面是國外產(chǎn)品無(wú)法競爭的。我當時(shí)覺(jué)得這種眼光真是“高瞻遠矚、高屋建瓴”。

張志敏老師在我們的CPU設計中負責工程管理,他是李所長(cháng)請來(lái)的客座研究員。根據我們自己的分工,在我們設計CPU的隊伍中,唐志敏是總負責,我負責設計,張老師負責工程管理。張老師是責任心非常強的人,很義氣,工程經(jīng)驗非常豐富。我最佩服張老師的有兩點(diǎn),一是他把個(gè)人利益看得很輕,他放棄了原來(lái)工資更高的工作到我們這里來(lái)做這個(gè)事情;二是他做事情很實(shí)在、很專(zhuān)一。我有一個(gè)觀(guān)點(diǎn),一個(gè)人一輩子做好一件事情都不容易,因此比較討厭一些一會(huì )兒這邊,一會(huì )而那邊,想兩邊都得好處的人。但張老師不是這樣的人,他做事情很實(shí)在。在我們基本完成Godson的邏輯設計后,需要一個(gè)模擬主板的環(huán)境,以便在邏輯設計上通過(guò)軟件模擬啟動(dòng)LINUX。我覺(jué)得這個(gè)事情很難,但張老師加班加點(diǎn)一兩個(gè)星期就寫(xiě)出來(lái)了。我和張老師配合得非常好,簡(jiǎn)直是最佳搭檔。他工程經(jīng)驗很豐富,我理論上強一點(diǎn);做事情他比較穩重,我比較偏激。在每周一上午的例會(huì )上,我布置完本周的工作后,總要慷慨激昂地動(dòng)員一番,張老師總是要擺一些困難潑潑冷水,真是一張一弛。以致于有一次他不潑冷水了,大家都不習慣。

雖然我們所籌備CPU設計已經(jīng)由來(lái)以久(從2000年初就開(kāi)始做預研),討論了許多輪。但我們真正開(kāi)始動(dòng)手設計是2000年11月。剛開(kāi)始是唐志敏和我領(lǐng)著(zhù)七、八個(gè)研究生做系統結構設計,主要是確定指令系統以及流水線(xiàn)結構。在開(kāi)始設計之初,李所長(cháng)在全所會(huì )議上就定了“高性能、通用、一步到位”的目標。后來(lái),唐志敏和我又確定了兼容以及采用RISC結構這兩個(gè)具體目標。當時(shí)雖然IA-64結構炒得挺熱,但我們還是決定采用RISC結構,現在看來(lái),這是對的。指令系統我開(kāi)始建議與Alpha兼容,但唐志敏定為與MIPS兼容。說(shuō)實(shí)在的,從2000年11月到2001年4月這段時(shí)間,我對CPU這個(gè)項目還不夠重視,因為我原來(lái)做機群及共享存儲系統也做得挺有意思。在這段時(shí)間里,我自己還花一部分時(shí)間在做機群方面的事情,寫(xiě)了一些論文,4月底還到美國開(kāi)了一個(gè)并行處理方面的國際會(huì )議。5月初從美國回來(lái)后開(kāi)始全力投入做CPU設計。由于時(shí)間緊,在確定流水線(xiàn)結構時(shí),沒(méi)有看多少論文也沒(méi)有做多少實(shí)驗,主要是憑感覺(jué)和過(guò)去的積累,遇到權衡得失確定不了的事情,就與唐志敏討論讓他定奪。不過(guò),現在回過(guò)頭去看,由于當時(shí)沒(méi)有參考別人的方案,也就少一些禁錮?,F在有了一點(diǎn)時(shí)間開(kāi)始看別人的做法,發(fā)現我們設計的基于操作隊列復用的動(dòng)態(tài)指令流水線(xiàn)還是很先進(jìn)的,有不少創(chuàng )新點(diǎn),我自己覺(jué)得比MIPS R10000的指令流水線(xiàn)要強。

我們的工作真正全面鋪開(kāi)是在五一放假上班后。一方面,系統結構已經(jīng)基本定型,用C語(yǔ)言寫(xiě)的模擬器已經(jīng)差不多了,可以運行簡(jiǎn)單的指令和短程序了。另一方面,6月份突然接到所里的通知說(shuō)今年10月份45周年所慶要展示我所在CPU設計方面的成果。從6月開(kāi)始,我們開(kāi)始了夜以繼日的三個(gè)月。在此期間,隊伍迅速擴大,現在已經(jīng)有三、五十人。雖然只是一個(gè)邏輯設計,能夠在三個(gè)月內從無(wú)到有地設計出完整的通用CPU,我自己也覺(jué)得吃驚?,F在回想起來(lái),成功的原因有三條,一是技術(shù)路線(xiàn)正確,二是有一支高素質(zhì)而玩命的隊伍,三是計算所良好的環(huán)境和雄厚的技術(shù)儲備。教訓有兩條,一是工程經(jīng)驗不足,初期管理不善;二是不重視工具。

我覺(jué)得,我們的技術(shù)路線(xiàn)在三個(gè)方面是很成功的。一是所長(cháng)關(guān)于高性能通用CPU的定位。不少人認為,處理器最大的市場(chǎng)在嵌入式方面,中國的處理器設計應該定位在嵌入式上,沒(méi)必要或沒(méi)能力做通用處理器設計。誠然,嵌入式處理器的需求量很大,但大市場(chǎng)不一定能賺錢(qián),小市場(chǎng)有時(shí)反而能賺大錢(qián),因為后者是核心技術(shù),別人做不了。Intel就是一個(gè)典型的例子,Intel處理器數量也只占全球市場(chǎng)的1.5%。其次,中國不是小國,核心技術(shù)自己不掌握不行。我倒是覺(jué)得象嵌入式處理器這樣的東西可做可不做,因為別人的嵌入式處理器價(jià)格很低,且不會(huì )卡我們。有的國外公司甚至主動(dòng)提出,只要我們用他們的生產(chǎn)線(xiàn),他們可以免費提供嵌入式的IP核。至于有人覺(jué)得我們做不了高性能通用處理器,我的回答是用我們自己的處理器做出一臺曙光機來(lái)再說(shuō)。雖然我們做高性能通用處理器上還很落后,但我覺(jué)得我們現在的條件比當年計算所做757和8920好得多,工具要好得多,工作量要小得多。任何事情,關(guān)鍵是要有人靜下心來(lái)認真地去做。

我們在技術(shù)路線(xiàn)上第二個(gè)成功之處是兼容?;仡欀袊嬎銠C發(fā)展的歷史,應該說(shuō),我們的“祖上”也是挺“闊”的,直到80年代初,我們的處理器設計技術(shù)不比人家差多少。落到今天這個(gè)地步,很大程度上是吃了不兼容的虧。因為現在計算機中絕大部分費用不是花在硬件上,而是花在軟件上。自己設計指令系統,只能圖一時(shí)痛快;與其它主流指令系統兼容,確實(shí)很麻煩,有時(shí)為了一條指令就得修改數據通路,增加不少東西,但卻可以一勞永逸。在我們組里,有一個(gè)很精干的操作系統組,才四個(gè)人,在3個(gè)月內搞定一切與軟件有關(guān)的東西,包括BIOS、LINUX 2.4內核、gcc編譯器、X-window、調試工具、Web Server等等,就是得益于我們的兼容設計。當然,這四個(gè)人都是絕對的LINUX高手。我們甚至做到與別人的處理器引腳級兼容,只要把別人的拔下來(lái),自己的插上去就行。因此,目前主板也是用別人的。當然現在我們也在做主板設計,因為我們以后想做Infinite Band,不掌握主板技術(shù)不行。

我們在技術(shù)路線(xiàn)上第三個(gè)成功之處是穩扎穩打的設計方法。即從系統結構設計,到C模擬器設計,到Verilog仿真,到FPGA驗證,到標準單元投片,再到全定制投片的方法。在系統結構方案確定后,我們就設計了一個(gè)Cycle-by-cycle的C語(yǔ)言模擬器,該模擬器詳細描述了Godson處理器的系統結構,能夠模擬處理器每一拍中每一位信號的變化。設計模擬器有三個(gè)明顯的好處,一是驗證設計的正確性,我們先后在C模擬器上運行了LINUX 2.2、LINUX2.4、gcc等一系列系統軟件,發(fā)現了設計過(guò)程中的大量錯誤。二是用C語(yǔ)言描述系統結構更加嚴格,沒(méi)有二義性,比用文字寫(xiě)的文檔更加明確。在C語(yǔ)言模擬器驗證正確后,把C語(yǔ)言模擬器的每個(gè)模塊對應地轉換成 Verilog語(yǔ)言的一個(gè)模塊花了不到一個(gè)月的時(shí)間。而且由于設計上的錯誤都在調試模擬器的過(guò)程中剔除了,在Verilog描述階段沒(méi)有再出現設計上的錯誤。第三個(gè)好處是C語(yǔ)言模擬器為軟件開(kāi)發(fā)提供了一個(gè)開(kāi)發(fā)平臺,為我們開(kāi)發(fā)諸如BIOS等軟件提供了很大的便利。在把C語(yǔ)言的模擬器轉換成Verilog設計后,我們又在Verilog的運行平臺上成功地運行了LINUX操作系統。然后再綜合并形成FPGA的燒制文件。經(jīng)過(guò)上述反復的驗證,聯(lián)調時(shí)基本一次成功。如果我們不是穩扎穩打,而是采取跨越式的設計方法,直接進(jìn)行邏輯設計,恐怕會(huì )欲速則不達,因為越上層的設計,調試越容易,而越底層的設計,調試越困難,且剛開(kāi)始時(shí)我們甚至連Verilog語(yǔ)言都不會(huì )使用。在聯(lián)調成功后,我們對流水線(xiàn)做了幾次較大的優(yōu)化,每次也都是在C語(yǔ)言模擬器上進(jìn)行驗證。

在我們實(shí)驗室的墻上,有兩句口號,一句是“人生能有幾回搏”,另一句是“求實(shí)、求實(shí)、求實(shí)、創(chuàng )新”。第一句口號是我所研制曙光系列高性能計算機用的口號,我把它借來(lái)了。的確,在我們努力攻堅的三個(gè)月中,我們課題組的成員付出了難以想象的艱辛,尤其是在幾次調試的階段。好多人都有調試程序的經(jīng)驗,但很少有人調試過(guò)操作系統,而在一個(gè)本身就可能出錯的處理器上調試過(guò)操作系統的人更少。我們的挑戰就在這里,當出現一個(gè)錯誤時(shí),應用程序、操作系統以及處理器本身都是懷疑的對象,需要多方面的協(xié)調及分析。我們曾經(jīng)在C模擬器、Verilog模擬環(huán)境、以及FPGA驗證系統上分別都運行了LINUX操作系統,每次都是連續幾天幾夜的鏖戰。尤其是最后一次最為慘烈,因為即使發(fā)現一個(gè)很小的錯誤,修改一次設計再形成新的FPGA燒制文件,需要至少8個(gè)小時(shí)。只有一天24小時(shí)工作,才能保證一天有修改幾次設計的機會(huì )。我算是在課題組中睡覺(jué)不算少的,但也有一個(gè)星期沒(méi)有正經(jīng)睡覺(jué)的經(jīng)歷。在8月中旬的那個(gè)星期,星期一下班前得知第二天有領(lǐng)導要來(lái)所里檢查工作,于是決定冒險把原來(lái)定的聯(lián)調時(shí)間提前一周,希望一次成功。但怕不成功影響士氣,只找了幾個(gè)骨干在星期一晚上開(kāi)始聯(lián)調。我們只有兩次機會(huì ),因為修改一次設計就需要8小時(shí)。星期二凌晨四點(diǎn),把FPGA文件寫(xiě)入FPGA,沒(méi)有任何動(dòng)靜。很快就用邏輯分析儀發(fā)現了問(wèn)題。原來(lái)是由于啟動(dòng)時(shí)與主板握手機制有缺陷,導致主板一直沒(méi)有撤掉復位信號。趕快修改并在中午12點(diǎn)形成了新的FPGA燒制文件,寫(xiě)入后還是沒(méi)有任何動(dòng)靜。下午領(lǐng)導來(lái)檢查,開(kāi)了一下午會(huì ),晚上接著(zhù)調試,發(fā)現CPU插卡上有兩個(gè)焊點(diǎn)短路,去掉后主板上的液晶顯示器上如約顯示出“GODSON”的字樣,我們一片歡呼。我們決定連續作戰,到星期三晚上11點(diǎn)左右,成功地運行經(jīng)過(guò)改造的主板上的BIOS系統,相當于是一個(gè)簡(jiǎn)單的操作系統,又是一片歡呼(這時(shí)課題組的其他成員才知道我們是在我們自己的CPU上運行程序)。于是12點(diǎn)要求所有人回去睡覺(jué)后回家睡覺(jué)。晚上雷聲大作,風(fēng)雨交加,以示慶賀。我興奮得難以入睡,因為此時(shí)始覺(jué)三個(gè)月來(lái)一直緊緊壓迫我的壓力稍有緩和。星期四上班后開(kāi)始試圖啟動(dòng)LINUX操作系統,但每次都在最后進(jìn)入用戶(hù)態(tài)啟動(dòng)各種應用程序時(shí)出錯。懷疑是TLB的問(wèn)題,因為訪(fǎng)問(wèn)用戶(hù)空間才開(kāi)始使用TLB。一直跟TLB斗爭了三天兩夜,中間發(fā)現了不少問(wèn)題,每次充滿(mǎn)期望地改過(guò)來(lái)卻總是獲得失望,直到星期六吃晚飯前恍然大悟地發(fā)現問(wèn)題,吃完晚飯后趕快修改,8月19日凌晨2點(diǎn)多形成FPGA文件并寫(xiě)入FPGA,2點(diǎn)42分,屏幕終于上出現了“l(fā)ogin”字樣,登錄進(jìn)去隨便玩,和使用其它機器上的LINUX一樣。我當時(shí)用vi編輯了一個(gè)文件記錄這一歷史時(shí)刻,存盤(pán)退出后把它ftp到另一臺機器上發(fā)給唐志敏和所領(lǐng)導,并興奮得馬上給唐志敏打電話(huà)告訴他這個(gè)好消息。那時(shí)雖然我們都已經(jīng)極度疲憊,但在場(chǎng)的6個(gè)人都興奮得毫無(wú)睡意,聊天到天亮。記得那晚也是風(fēng)雨交加。早上6點(diǎn)大家回家睡覺(jué),不知別人怎么樣,我連續睡了20多個(gè)小時(shí),補上了這一星期的覺(jué)。在此之后,我們又跟前述“偏執狂”的浮點(diǎn)測試程序斗爭了兩個(gè)禮拜,不過(guò)已經(jīng)沒(méi)有那么辛苦了。我有時(shí)候覺(jué)得自己比周扒皮還狠,但我們課題組的成員確實(shí)很玩命。有好幾次,我在早上六、七點(diǎn)鐘打開(kāi)實(shí)驗室的門(mén),發(fā)現有些人手里扶著(zhù)鼠標就靠在椅子上睡著(zhù)了。我是容易受感動(dòng)的人,看到這樣的場(chǎng)景忍不住想落淚。但我還是叫醒他們問(wèn)他們昨天晚上的進(jìn)展并讓他們接著(zhù)干。我有一個(gè)學(xué)生,近兩個(gè)月來(lái)很少在凌晨4點(diǎn)前睡覺(jué),而常常到八、九點(diǎn)鐘我上班后就會(huì )把他叫起來(lái),因為我急于了解昨晚的進(jìn)展。記得有一次我們在深夜趁等計算機的運行結果,大家聊天,說(shuō)到了生死。他說(shuō)最不希望老死,看著(zhù)自己的生命一點(diǎn)點(diǎn)耗盡。我們有一種觀(guān)點(diǎn),我們現在落后這么多,別人不比我們笨,如果大家都一樣一周五天一天8小時(shí)上班,恐怕很難趕上人家,惟有象當年搞“兩彈一星”一樣拼命,至少得累死一批人。惟有這樣,我們才能不受欺負,我們的子孫才有希望重新做到“犯我大漢者,雖遠必誅之”。

我經(jīng)常說(shuō),一盆花用水澆灌固然能夠盛開(kāi),但用心血澆灌會(huì )更鮮艷。我們的CPU事業(yè)就是一朵花,我們在用心血澆灌她。我們給我們設計的處理器取了一個(gè)很有傳統特色的小名叫“狗?!?,希望名字賤一點(diǎn)容易養大,音譯成英文就是Godson。

至于我們墻上的另外一句口號“求實(shí)、求實(shí)、求實(shí)、創(chuàng )新”是對計算所所訓“求實(shí)、創(chuàng )新”的一個(gè)注解和發(fā)揮。因為我感到現在中國科技界太浮躁,炒作的人多,做事的人少。因此希望我們組的人把工作做扎實(shí),少吹牛多做事。其中第一個(gè)求實(shí)是關(guān)于做學(xué)問(wèn)的目的,要為了做學(xué)問(wèn)而做學(xué)問(wèn),而不是為了名和利。要真正做到‘人不知而不慍’。這一點(diǎn)說(shuō)起來(lái)容易,做起來(lái)很難。象我們在計算所工作的人,大概在利上不是非常計較,只要日子過(guò)得下去就行了,但在名上就很難看得開(kāi),這一點(diǎn),我自己雖然做不到,但心向往之。第二個(gè)求實(shí)是關(guān)于做學(xué)問(wèn)的態(tài)度,就是要把工作做到實(shí)處,就是要艱苦奮斗,就是不要為了發(fā)表論文而寫(xiě)文章。在科研上哪怕是一點(diǎn)點(diǎn)的創(chuàng )新,都需要大量踏實(shí)的工作,這是客觀(guān)規律,誰(shuí)也躲不過(guò)。我們在科研中經(jīng)常碰到有些人不愿做具體繁瑣的工作,一心想發(fā)表論文。這種現象很普遍,我自己也這樣,但以后要力戒之。第三個(gè)求實(shí)是關(guān)于做學(xué)問(wèn)的方法,要勇于實(shí)踐,不要紙上談兵。就是要‘學(xué)而時(shí)習之’,就是認識和實(shí)踐的不斷循環(huán)往復。學(xué)問(wèn)并不僅僅是知識淵博,更多的是體驗和感覺(jué)。沒(méi)有對所做工作的深刻體驗,就難以發(fā)現問(wèn)題,就難以創(chuàng )新。而這些體驗,別人的文章里是看不來(lái)的,沒(méi)有經(jīng)過(guò)身體力行的大量實(shí)踐,是不會(huì )有的。只要做到了這三個(gè)求實(shí),想不創(chuàng )新也難。

現在很多人認為我國沒(méi)有自己的處理器,主要是因為工藝水平上不去,因此,處理器設計不應是計算所的事情,而是做微電子設計的人的工作。誠然,回顧我們國家的處理器設計歷史,在80年代后全面落后的一個(gè)重要原因是沒(méi)有自己的制造工藝,導致處理器設計隊伍整體上垮掉,人員流失。但現在情況發(fā)生了變化,投片已經(jīng)沒(méi)有大問(wèn)題,主要是沒(méi)有設計。而處理器設計決不僅僅是邏輯設計。處理器設計是大系統,惟有對包括操作系統、編譯、體系結構、I/O等在內的整個(gè)計算機有全局的把握才能設計出高性能處理器。就好象一個(gè)公司,固定資產(chǎn)和資金只提供了必要的條件,關(guān)鍵還在于管理。在通用計算機中,操作系統和系統結構設計的的配合尤為重要,有些指令專(zhuān)門(mén)是為操作系統設計的,尤其是在系統安全、存儲管理、原子操作、例外處理等方面。我在用我們自己的結構實(shí)現MIPS指令系統的過(guò)程中,有一個(gè)深刻的體會(huì ),就是一個(gè)指令系統十幾年來(lái)一直在發(fā)展是有它的道理的(MIPS指令系統經(jīng)歷了MIPS I、MIPS II、MIPS III、MIPS IV的發(fā)展過(guò)程)。有時(shí)候通過(guò)對操作系統的分析了解到一些指令的妙用,體會(huì )到設計者設置這些指令的初衷,真是讓人拍案叫絕。所以,我一直很慶幸我們采用了兼容的做法,如果自己設計指令系統,沒(méi)有十幾年的實(shí)踐,是不會(huì )完善的。放眼中國在體系結構、操作系統、編譯方面的綜合力量比計算所強的不多(我比較佩服的其它單位只有一家),因此計算所做CPU設計是很有優(yōu)勢的。雖然前幾年的折騰使計算所元氣大傷,但底子還在。在開(kāi)始做CPU設計之初,我對這件事情的復雜性估計不足(這是一個(gè)深刻教訓),只是領(lǐng)著(zhù)八、九個(gè)研究生做。后來(lái)在項目逐漸展開(kāi)后,發(fā)現現有的人力頂多能做完邏輯設計,要把通用操作系統啟動(dòng)起來(lái)是遠遠不夠的。無(wú)奈之下,只好從原來(lái)做機群的組和做嵌入式操作系統的組中調了幾個(gè)操作系統高手過(guò)來(lái),事情馬上有了起色。比如,我們要在C模擬器上運行操作系統,需要對操作系統內核進(jìn)行裁剪和修改(如去掉一些與主板配置緊密相關(guān)的初始化),這種事情沒(méi)有對操作系統的深入把握是不會(huì )做的。后來(lái),又從其他地方得到一些人員補充(我現在體會(huì )到電影上打仗時(shí)指揮員為什么非常重視預備隊)?,F在,我們組已經(jīng)有了三、五十人的規模,兵不在多在于精,這些人全是年輕的槍手,素質(zhì)很高,又很玩命。就我目前所做的事情來(lái)說(shuō),計算所幾乎是“要什么人才有什么人才”。當然,以后投片現在的隊伍是遠遠不夠的。

計算所的科研環(huán)境很好,尤其是體現在后勤服務(wù)上。舉幾個(gè)小例子。第一個(gè)是工作展開(kāi)后通宵加班多了起來(lái),我們自己因地制宜地在一些桌子上鋪上鋪蓋搭了幾張簡(jiǎn)陋的床。當鄧書(shū)記知道這種情況后,馬上找人騰出一間小屋子,放了六張床,大大改善了我們加班時(shí)的休息環(huán)境。書(shū)記還讓人每天為加班的人準備餅干、方便面等方便食品。第二個(gè)例子是,隨著(zhù)工作的不斷深入,組里需要不斷添置新的微機,但機器都是隨用隨買(mǎi)(因為以前沒(méi)有經(jīng)驗,不知道要買(mǎi)多少機器)。對此,業(yè)務(wù)處的同志們總是全力配合,保證組里及時(shí)用上新機器。最快的一次,我在上午11:30向業(yè)務(wù)處王玉潔老師提出購機申請,下午1:30機器已經(jīng)送到實(shí)驗室。這在一個(gè)財務(wù)制度健全、審批嚴格的事業(yè)單位是很難想象的,更何況是下班時(shí)間。第三個(gè)例子是有一次我們急需一塊Matrox G200顯卡,但由于是幾年前的產(chǎn)品,跑遍了中關(guān)村也沒(méi)有買(mǎi)到。萬(wàn)般無(wú)奈,只得通過(guò)EMAIL向所內的部分老師緊急求助,熱心的業(yè)務(wù)處于天波老師馬上在網(wǎng)絡(luò )上發(fā)布這個(gè)消息,不到一個(gè)小時(shí),在王貞松老師的幫助下,就找到了這塊顯卡。這至少減掉了我們兩個(gè)星期的工作量,因為如果用其它顯卡,我們得自己寫(xiě)驅動(dòng)程序。有效的后勤保障使我有時(shí)后覺(jué)得不把事情做好,對不起這些熱心幫助我們的人。

  我們在前一段時(shí)間的教訓有兩個(gè)。一是工程經(jīng)驗不足,主要體現在以做研究的方法來(lái)做工程,以及對任務(wù)的難度估計不足,科研力量配備不夠,導致初期效率不高。幸虧后來(lái)工程經(jīng)驗豐富的張志敏老師的加盟大大扭轉了我們以做研究的方法做工程項目的局面,提出了“后墻不倒”的目標。此外,也幸虧計算所技術(shù)儲備雄厚,要什么人有什么人,使得我們得以在后期提高效率。不過(guò),我們目前在文檔管理等方面還是很存在問(wèn)題的。第二個(gè)教訓是對工具重視不夠?,F在做處理器設計,EDA工具是十分重要的。我們由于不夠重視EDA工具,吃了不少虧。有一次布線(xiàn)布不通,只要修改一下設置就行,可惜我們都不會(huì ),折騰了一個(gè)禮拜,后來(lái)才發(fā)現。

下面我可以介紹一下Godson的技術(shù)特點(diǎn)。了解了這些技術(shù)特點(diǎn),就可以了解為什么Godson工作在12.5MHz時(shí)就有50MHz的486的性能。Godson的流水線(xiàn)結構是我自己覺(jué)得比較得意的地方。設計的時(shí)候沒(méi)有參考其它處理器的流水線(xiàn),完全是憑感覺(jué)。Godson流水線(xiàn)包括了若干目前處理器設計中最先進(jìn)的技術(shù),如流水線(xiàn)動(dòng)態(tài)調度,Tomasulo算法,寄存器重命名,猜測執行,精確例外處理,64位的浮點(diǎn)運算部件,CACHE技術(shù)等,并且在某些方面有所創(chuàng )新。流水線(xiàn)設計中比較困難的兩個(gè)問(wèn)題是例外的處理和相關(guān)的解決。首先我們把例外處理與流水線(xiàn)緊密地耦合在一起,在數據通路的設計中例外結果和正常結果并行,在執行過(guò)程中例外結果和正常結果不加區別,只有在指令結束階段才對例外結果進(jìn)行特殊處理。此外,我們把轉移指令猜測錯誤作為一種特殊例外,利用例外處理的取消和保持現場(chǎng)精確邏輯。這樣不僅可以簡(jiǎn)化設計,而且可以讓轉移指令后面猜測執行的指令盡可能地往下執行。我們的流水線(xiàn)是動(dòng)態(tài)流水線(xiàn),采用de-coupled結構,控制邏輯分布在每個(gè)模塊之中。在流水線(xiàn)的控制中,“讓流水線(xiàn)流起來(lái)”是我們設計的理念。在指令流水線(xiàn)中,數據相關(guān)和控制相關(guān)都會(huì )引起流水線(xiàn)等待,如后面指令用到前面指令的結果或后面指令是否執行由前面轉移指令成功與否決定。對于因數據相關(guān)引起的等待,我們的原則是盡量推遲到不得不等的時(shí)候才等。即對于源數據未準備好的指令,指令譯碼和發(fā)射時(shí)并不停下來(lái)等待數據(簡(jiǎn)單的靜態(tài)流水線(xiàn)通常在譯碼時(shí)停下來(lái)等待未準備好得數據,堵住了后面指令的繼續執行),而是建立數據依賴(lài)關(guān)系,由功能部件通過(guò)偵聽(tīng)結果總線(xiàn)解決相關(guān)。這樣數據結果一出來(lái),等待它的指令馬上可以進(jìn)行運算,不用經(jīng)過(guò)寫(xiě)回到寄存器再讀出來(lái)的過(guò)程,而且前面指令的等待不會(huì )堵塞后面指令的繼續執行。對于控制相關(guān),我們也是讓轉移分支的指令先猜測地執行起來(lái),到實(shí)在不得不停下來(lái)時(shí)才等待轉移目標的確定。如果轉移猜測成功就立即繼續前進(jìn),如果轉移猜測不成功,就利用例外處理的指令撤消機制恢復正確現場(chǎng)。

流水線(xiàn)設計中,“簡(jiǎn)潔、流暢”是是我們追求的目標,前者保證流水級間的控制簡(jiǎn)單,延遲少,后者保證流水線(xiàn)的高性能。在我們聯(lián)調成功后到現在,已經(jīng)對流水線(xiàn)進(jìn)行了4次較大調整,每次都更加簡(jiǎn)潔、流暢。我想在正式投片前還會(huì )有幾次調整。
此外,Godson的浮點(diǎn)運算部件流水線(xiàn)設計也有自己的特點(diǎn)。Godson體系結構的另外一個(gè)特點(diǎn)是結構靈活,模塊化好,可以根據不同的需求對功能部件進(jìn)行任意裁剪以滿(mǎn)足不同的應用。由于Godson的流水線(xiàn)采用de-coupled結構,控制邏輯分布在每個(gè)模塊之中。增加或減少功能模塊對其它部分沒(méi)什么影響。如對于某些嵌入式應用,不需浮點(diǎn)部件,只要去掉浮點(diǎn)ALU、浮點(diǎn)乘法、以及浮點(diǎn)寄存器模塊,不用對其它模塊做任何修改。

系統安全設計也是Godson的一個(gè)重要特點(diǎn)。Godson系統除了實(shí)現MIPS系統要求的安全機制外,還針對網(wǎng)絡(luò )攻擊實(shí)現了一種新的訪(fǎng)問(wèn)限制機制。緩沖區溢出是一種非常普遍、非常危險的漏洞,是目前大多數網(wǎng)絡(luò )攻擊所采取的辦法。在各種操作系統、應用軟件中廣泛存在。利用緩沖區溢出攻擊,可以導致程序運行失敗、系統死機、重新啟動(dòng)等后果。更為嚴重的是,可以利用它執行非授權指令,甚至可以取得系統特權,進(jìn)而進(jìn)行各種非法操作。Godson通過(guò)允許操作系統對堆棧段的取指進(jìn)行限制,從而有效地防范利用緩沖區溢出進(jìn)行的攻擊。

當然,Godson在目前設計上還存在一些缺陷,主要是對CACHE重視不夠。目前的設計只有4KB的指令CACHE和4KB的數據CACHE,都是直接相聯(lián)(這與FPGA容量有關(guān),目前的設計已經(jīng)使用了150萬(wàn)門(mén)的FPGA的85%-90%的面積)。在性能測試時(shí)發(fā)現對訪(fǎng)存要求較高的程序

Godson的性能不夠理想。如當Godson運行在12.5MHz時(shí),對于訪(fǎng)存不敏感的程序,100MHZ主頻的IDT 64474 CPU(R4000內核)的性能是Godson的3-5倍,但對于訪(fǎng)存敏感的程序,IDT64474 的性能是Godson的6-8倍。IDT 64474有16KB的指令CACHE和16KB的數據CACHE,都是二路組相聯(lián),無(wú)論是CACHE容量和組織方式都比Godson強。在投片前一定要對CACHE部分進(jìn)行改進(jìn).

  關(guān)于Godson的未來(lái)發(fā)展,我們有一個(gè)雄心勃勃的計劃。第一步是在目前設計的基礎上經(jīng)過(guò)優(yōu)化后進(jìn)行標準單元的投片,主頻在200-300MHz左右,爭取2002年完成,用于個(gè)人工作站/瘦客戶(hù)端PC及電子政務(wù)等。第二步是設計雙發(fā)射64位的結構(目前為單發(fā)射、定點(diǎn)32位、浮點(diǎn)64位),投片主頻為500MHz左右,爭取2003-2004年完成。用于高性能服務(wù)器,也可以搭成機群做高性能計算。第三步爭取在處理器間并行上有所突破,設計基于Crossbar的大SMP結點(diǎn),每個(gè)SMP結點(diǎn)16-64個(gè)CPU,用于高性能計算。在做處理器設計之前,我們做了近十年的共享存儲系統結構研究,但受囿于CPU和操作系統,只能紙上談兵,頂多做做軟件實(shí)現?,F在自己做CPU,可以為所欲為,好象被束縛的手腳一下子得到了自由。如果能夠把我們在共享存儲并行系統方面十來(lái)年的積累做到實(shí)用系統中去,簡(jiǎn)直是爽呆。如果可能的話(huà),爭取實(shí)現串行程序采用多線(xiàn)程技術(shù)自動(dòng)并行化,這需要編譯、操作系統及系統結構的全面突破。

沒(méi)做多少事,寫(xiě)了這么多,是不是有點(diǎn)過(guò)分。寫(xiě)這種東西其實(shí)比寫(xiě)程序還累。



關(guān)鍵詞: 龍芯

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>