個人資料
sony008 (熱門博主)
  • 博客訪問:
正文

我所了解的龍芯,關於龍芯爭論的總結ZT

(2009-06-30 08:59:47) 下一個
昨天看變形金剛2去了,原本實在是懶的花時間來科普老道這外行,其實自己先擺正心態,在網上好好搜搜都有。無奈他就知道一味的攻擊我,看來不寫點東西是過不去了。

  既然你的貼裏提到君正,那我先來說說她。

  君正是不錯的一個公司,06年回國的時候去看過。公司在北京城鐵10號線西二旗站,劉姓創始人是科學院的博士,從前在北美日立半導體公司中國設計中心工作。當時這家公司有很大的問題,其實是一個叫李德雷的人在北京辦的一個民營企業,李本人在美國日立工作。他匡來自己老板到中國來投資,但把資投到自己的公司了,所以李的公司的項目資金全從日立來,但企業的所有權卻不歸日立。所以當時就是頂了塊日立的牌子的接日立的外包項目。日立外包出來的都是核心項目。當時有好幾個項目,其中之一是SH5DSP,也就是日立的下一代處理器設計。而劉在裏麵負責編譯器的研製,很得李德雷的賞識。後來日立認識到公司的問題,和這個公司切斷了聯係。公司在京城已算是小有名氣,得到很多的支持。倪光南是一個,倪幫助李找來了風投,成立了新公司。新公司剛開始叫中芯 sinocore,仍然是原班人馬,原先的辦公地點。後來改名叫方舟科技,劉是總經理,李是董事長。劉把原先做SH5的人都遣散了,換上自己作編譯器的人馬作IC設計。劉是個技術狂,他認為軟硬件技術都是相通的。這沒錯。我曾問他想不想要我從國外推薦的人,他婉言謝絕。因為他認為沒什麽技術是不能學到的,花大錢請國外的人是浪費。他跟我說,處理器的後端設計包括版圖,place and route都是他們自己培訓人作的。我對他的觀點十分認同和讚賞。後來的事情大概大家都知道,李德雷做出來方舟處理器拿了很多國家的錢卻改主意了。改去作小靈通,因為李認為CPU在中國賺不到錢。李和倪和劉就此掰了,因為後兩者是技術型的,不做核心技術是不能容忍的。劉離開方舟後,拉了幾個方舟的技術骨幹,找了筆錢做起了君正。06年我到其公司參觀,總共也就20來個人。劉是頭,很忙,給我演示了一下他們的產品。他們做了個類似PDA的東西,上麵已經十分順暢的跑起LINUX了,印象深刻。他的辦公室裏堆滿了處理器方麵的技術書籍。他告訴我他們用的MIPS指令集,當我問起專利時,他笑笑說專利20 年,MIPS已經到期了(我想他指的不包括MIPS的後來幾條指令的專利)。我又問了一個我一直好奇的問題,IC設計的EDA軟件都十分昂貴,你們怎麽用的?

  後來,我曾跟我一個在一家媒體做主編的朋友淡起這家還小的公司。這位主編和倪光南也很熟悉,希望能采訪劉。我跟劉聯係了下,劉表示他願意和主編建立私人關係,但目前公司還不願意在媒體上暴光,所以就不采訪了。

  君正的MIPS CPU的市場目標是嵌入式,這和龍芯不一樣。龍芯是國內目前唯一推出台式機正麵同微軟英特兒較量的。當然不是一個量級的。但精神可嘉。如果因為龍芯購買了 MIPS的兼容授權就否定龍芯的意義是不妥當的。如果君正想開拓海外市場,想在自己的芯片上打上MIPS兼容的LABEL,那麽很有可能君正也要購買 MIPS的結構專利。這點在胡的文章裏講的很清楚了。是不是自己的技術要看買的是什麽東西,如果買的是MIPS的軟核硬核,那完全就是別人的東西了。但龍芯是自己開發的RTL做的後端設計,也就是說,龍芯自己銷售自己研發的軟核硬核。

  附帶說明一下啥叫軟核,軟核就是經過邏輯驗證的RTL代碼。數字硬件設計和軟件類似,都用編程語言編寫出來的,不過硬件多用VERILOG, VHDL。特點是語言本身是並發性的,對軟件工程師來說寫硬件代碼這是一個要轉換的思維,因為軟件語言多是順序串行的。劉是作編譯器的,他們居然用C來寫硬件設計,因為他們自己開發了一個工具把C轉換成VERILOG。RTL經過驗證後就可以當軟核賣了,可用於FPGA驗證,如果你的產品就想用FPGA那麽也就妥了。但更多的是要流片的。RTL僅是芯片的邏輯描述, 流片是要形成真正可工作的晶體管電路。那就要作後端的設計(邏輯綜合,布線布局,等),這是很關鍵的一步。我目前的東家是美國乃至全球半導體業界數得上的,我們這個部門專門有兩個組,一個是前端設計,另一個是專門的後端設計組。經過邏輯綜合後的東西就算是硬核了。對於一個CPU設計來說前端後端都很重要。RTL的設計決定大的架構和算法。算法的優化往往更具決定性尤其對CPU這樣的高度複雜的東西。而後端的物理設計要麵對的問題卻是更難以把握的需要更多的經驗。比如說時鍾樹的生成和布局,如果時鍾信號到達不同電路的時間是不一樣的,就會出錯。而為了達到最高的性能,又不能把時鍾信號的要求放的過寬。這僅是一個後端設計要考慮的問題例子而已。這也就是為啥,很多人聽說國內的CPU設計用FPGA就馬上跳出來大加嘲笑的原因。因為FPGA需要的僅是軟核,完全沒有後端的物理設計。但你別忘了,就算是INTEL做CPU也要經過FPGA驗證這一步啊,先驗證邏輯是對的然後再做後端的物理設計。飯總要一口一口吃的。再說RTL軟核也是可以賣錢的,比如我們公司買ARM的軟核,後端全部是自己做的,也不用流片廠提供的標準庫。

  龍芯是走了RTL設計到物理定製的整個過程的。龍芯1解決的是有沒有的問題。同時代的漢芯,北大眾誌,方舟,不是被證明為騙局,要不就夭折,要不就悄無聲息了。後來又出來的君正等等,應該算是後起之秀。龍芯2對於1來說就是一個飛躍,業界先進的CPU設計技術被利用上了。4發射,指令動態調度執行,對於INTEL CPU來說這也是到PIII才應用上的。而龍芯2是龍芯的第2代產品而已。當然,我不是說INTEL不行,隻是後來者也有後來者的優勢。可以利用最先進的技術。雖然這些技術並非龍芯首創,都是有很多論文和被實踐證明是可行的技術,但龍芯之前我們沒有,龍芯把它給實現了。我們應該看到龍芯從技術上追趕的是很快的。我的意思是說雖然不是首創,但趕上了,這就是成就。再說後端的物理設計,龍芯2實現了手工布局,手工標準單元庫的優化,為了降低延遲,龍芯2在關鍵路徑(延遲最長的電路路徑)實現了手工優化,並利用了clock skew技術實現clock borrow(把下一級流水的時鍾延遲借用到上一級來節省時間)。參考[計算機研究於發展,ISSN 1000-1239/CN 11-1777/TP 龍芯2號處理器設計和性能分析] 龍芯2號完成了綜合,布線布局,單元庫優化和芯片版圖設計,從RTL邏輯驗證成功到流片成功並達到性能要求是很大的一步。為了給大家一個感性的認識,一個芯片完成物理設計後是什麽樣子,這有一張芯片版圖,是我小組VLSI課上因最低功耗而獲得全班第一課程設計。這是一個具有8位加法和移位功能,工作在 90MHz的算術運算單元。

  



  版圖就是一個芯片在矽片上真正的樣子,獲得版圖後就可以拿到流片廠去流片了。當然不是說流完片就萬事大吉了,片子回來後要用芯片中設計時內建的掃描鏈進行大規模的測試,有時候發現問題還要定位出問題的門電路,然後把片子切開用掃描隧道顯微鏡觀察究竟是設計問題還是流片廠的工藝問題。我們公司有專門一組人幹這個的。在芯片設計中這叫DFT(DESIGN FOR TESTING)。而DFT的專利是購買另一家美國公司的。所以說在芯片行業購買他人專利用於自己的產品是在是太常見了,不是說一買他人的專利自己的產品就不是自主開發了。隻有愛起哄的外行才這麽去理解。

  上麵說了龍芯的設計,再略講一下指令集的事情。一個CPU的指令集不過是CPU的對外接口,兼容別人的指令集不過是為了獲得更大的用戶群,但處理器本身還要自己設計製造才行(除非你也買了別人的軟硬核)。打個比喻,你寫一本劇本,你是用漢語還是英語,並不影響劇本情節本身,你要演出這部劇還是要寫劇本請演員,導演花時間排練出來,然後隻不過你是麵對英語觀眾還是漢語觀眾來表演而已。CPU 的指令集是一個道理。同樣的一套指令集,你技術不好實現出來的運行特慢還錯誤百出功耗特大,但其他人實現的就更優化,更省電,更快。這就是技術!包括 INTEL從PII/III開始其CPU內核也變成一個RISC核心了。外部的X86指令是首先被轉換成內部的一條或多條RISC指令然後才被譯碼,調度執行的。AMD從K6開始也是如此。曾名震一時的美國全美達公司走的是另一條路子,他把X86指令用CPU內部的微程序進行翻譯後執行(我沒看出來這和 386有啥思想上的區別)。關於指令集已經解釋的很清楚了,如果再不理解並拿出來說事隻能是胡攪蠻纏要不就是智商太低。

  關於龍芯的設計基本上講的差不多了,再加一句關於未來發展的話。INTEL發展到P4,之後的發展也是要朝多核化發展了。單核中能應用的提高性能的技術用的差不多了,比如多發射,超標量流水線,指令分支預測等。可提高的地方不大,並且一味的設計更複雜的單核,會引起功率密度過高的問題。因為單核過於複雜造成晶體管太多消耗太多的功率,但又希望DIE( 矽片)的麵積小,這將必然提高功率密度(power density)。所以今後看來多核處理器是個趨勢,也就是相對簡單的單核,但一個DIE上集成更多的單核,那麽總功率就是單核的線性關係,比複雜大單核要可控製的多。龍芯2已經在性能上趕上PIII和低端的P4(下麵會討論性能)。龍芯3將要作多核的處理器,INTEL也在這樣做。從這一點看,龍芯其實在技術上距離INTEL的差距已經大大縮小了。這是值得欣慰的。當然市場上還差的很多。另外講一句,其他幾個國內的CPU設計公司(據我所知)多是針對嵌入式處理器,技術上比通用處理器還是差的比較遠。我們公司當初選處理器的時候就考察過5,6個嵌入式處理器。做嵌入式處理器在國際上也是有很多公司的。比如我們公司使用的ARM7和ARM CM3,我看過其RTL源代碼。技術相對來說是比較簡單的,沒啥多發射,指令調度之類的。但這當然不妨礙我們的產品幾億美元的賺錢,因為不同的技術應用於不同的領域。龍芯應該是國內唯一在通用處理器中奮鬥的,其他幾家的技術不太了解。如果我的猜測是正確的話(其他幾家是僅做嵌入式),那麽拿那幾家同龍芯比不太合適。龍芯有做嵌入式應用的,更有桌麵PC和服務器的應用,還計劃用到高性能計算機上,這些奠定了龍芯的特殊意義,也是其最大的挑戰。

  接下來說說龍芯的性能,這些數據網上到處都是。做個比較吧,比較的時候力爭做到主頻,工藝接近的比較。性能比較主要參考 SPEC CPU2000,這是通用測試程序,涵蓋了各種計算,繪圖,文字處理,EDA仿真應用,多媒體播放等。然後加上功耗比較,這是十分重要的,尤其在高性能計算方麵,一台超級計算用成千上萬的CPU,功耗絕對是個問題。

  先看一下下麵這段話:

  “ 龍芯2號采用180nm的CMOS工藝製造,片上集成了1350萬個晶體管,矽片麵積6.2毫米×6.7毫米,最高頻率為500MHz,功耗為3-5瓦。龍芯2號實現了先進的四發射超標量超流水結構,片內一級指令和數據高速緩存各64KB,片外二級高速緩存最多可達8MB。龍芯2號的SPEC CPU2000標準測試程序的實測性能是龍芯1號的8-10倍,是1.3GHz的威盛處理器的2倍,已達到相當於Pentium 3的水平。基於龍芯2號的Linux-PC係統可以滿足絕大多數的桌麵應用。

  龍芯2E是一款實現64位MIPSⅢ指令集的通用RISC處理器,采用90nm的CMOS工藝,布線層為七層銅金屬,芯片晶體管數目為4700萬,芯片麵積6.8mm×5.2mm,最高工作頻率為1GHz,典型工作頻率為800MHz,實測功耗5-7瓦。龍芯2E具有片上128KB一級緩存、512KB二級緩存,單精度峰值浮點運算速度為80億次/秒,雙精度浮點運算速度為40億次/秒,在1GHz主頻下SPEC CPU2000的實測分值達到500分,綜合性能已經達到高端Pentium Ⅲ以及中低端Pentium 4處理器的水平。”見原文

  這是龍芯官方網站的發布,注意0.18微米,500MHz,3-5瓦,但沒明確說SPEC CPU2000的分值,第二段是0.09微米,1GHZ,5-7瓦,SPEC CPU2000是500分。

  下麵是其他的CPU的數據:

  “ 一般來說,現在較流行的四發射的主流RISC處理器象Alpha21264、MIPSR12000、IBMPowerIII等在400MHz到 500MHz的情況下SPECCPU2000的分值可以達到300分左右,而PentiumIII在800MHz時SPECCPU2000的浮點分值才 200多分。”見原文

  我又去spec.org找到INTEL PIII/4的測試結果,如下圖:

  



  數據來源

  從圖中可見,PIII的幾款主頻上GHz的CPU分值都在500以下,P4的高一些。我們再看一下功耗。INTEL PIII TAPEOUT的比較早,較少用90納米工藝流片的。那麽我們就比較180納米龍芯2和180納米PIII的功耗。下圖是從INTEL網上的截圖,PIII 180納米,500MHZ功耗為13.2瓦。

  



  數據來源

  CPU 的省電與否,如果你僅是家庭用戶來上網炒股票是體會不出來的。像我這樣24小時開機的就會有點不一樣了。這AMD CPU風扇吹起來就會積累不少塵土,長時間的積累會導致主板的電氣特性改變,短路等等。我的華碩主板基本上2年得洗一回,否則LINUX頻繁死機,檢查內存發現大量數據讀寫錯。擦一邊就好用個2年。如果是公司用戶,大量的服務器羅起來,那噪音沒法呆。我從前的東家有幾台大型的集成電路仿真設備,半人多高的一個個長方體,在實驗室裏兩台運行起來,我進去以為到了紡織廠。必須帶耳罩,跟別人說話得喊。全是機器的風扇噪音,吹出來的熱風撲麵而來,時間長了一定得病。後來搬家了,到另一實驗室,公司專門打了個隔音牆有一尺厚,裏麵塞滿了隔音材料。牆對麵放了三台機器,在牆上挖個洞把電纜拉出來。這樣環境好多了,當然成本自然會上去的。如果拿龍芯做服務器集群,對公司用戶來說從各方麵來講都能節省不少銀子。

  通過這樣的比較,龍芯的性能和功耗基本上有個大概的譜。首先是適合一定的商用需求,我本人仍然在用AMD 1.8GHZ的台式機,不玩遊戲基本夠用。INTEL P4是2000年出來的,如果說龍芯2和低端P4相當,龍芯2是2005年麵世的,那麽僅僅從CPU計算性能上講落後5,6年。我認為這是個成就了,適當的宣傳一下沒什麽不好。全美達當初不也宣傳的很火嘛。至於說宣傳方式的不同,你不喜歡是你的事,有人喜歡。

  另外值得一提的是,龍芯首創了防堆棧代碼執行的技術並獲得專利。網絡安全的一個大問題就是軟件中的緩衝區溢出問題。就是說一個函數不檢查輸入緩衝區的長度,使勁拷貝輸入的數據。那麽黑客可以將惡意代碼扮作輸入數據交給軟件函數,此函數將超長的數據拷貝到自己的堆棧段,結果將返回地址給衝掉了。而儲存在原先返回地址的值變成了黑客故意設計的返回值,但不返回到正常調用程序而返回到自己的惡意代碼中。如果這個軟件是個帶SUID的程序,黑客的惡意代碼就可以 SPAWN出一個ROOT SHELL。那麽黑客就獲得了係統管理員的權限。很多黑客就是成天讀各種程序的源代碼來找這樣的”粗心“函數然後加以利用。龍芯的專利在於,他在CPU級別判斷代碼是否在堆棧區執行,如果是那麽就拒絕執行。這樣,這一大類的係統漏洞就不能被黑客所利用,提高了係統安全。這在其他CPU中還真沒見到應用的。

  本來是懶得碼那麽字,被逼無奈,但相信問題已經講清楚了,歡迎拍磚。另外,順便說一下,俺不是做半導體的,我的專業是無線通訊,隻是無線通訊跟半導體根本就分不開。總結一下,我還是那句話,我並不覺得CPU是啥尖端超難技術,不比航空發動機和大飛機,如果說半導體,我到覺得射頻集成電路的設計和模數混合信號集成電路設計更加具有挑戰性。但CPU確實是具有一定戰略意義的產品商品,龍芯確實是自主開發並做到了滿足一定商業應用的水平,龍芯確實是填補了我國沒有通用處理器的空白,而對於龍芯購買MIPS結構授權的指責確實是外行扯談,而用其他的嵌入式處理器同龍芯比較來貶低龍芯的技術是不妥當的,因為典型的通用處理器和典型的嵌入式處理器的複雜度是不一樣的。記得君正的劉還在方舟時我跟他通過電話,他在電話裏說,”做個PENTIUM出來不太容易,但作個嵌入式處理器是小意思“。嗬嗬,這話說的沒錯,全篇完!
[ 打印 ]
閱讀 ()評論 (1)
評論
目前還沒有任何評論
登錄後才可評論.