近日,龍芯在北京開了一場盛大的發(fā)布會,并聲稱和Intel最強技術(shù)只有30%的差距。因為從某個角度上看,龍芯是一個自主設(shè)計的產(chǎn)品,作為一個中國人我是應(yīng)該感到興奮的。但作為一個科技媒體工作者,龍芯的發(fā)布會又讓我對國產(chǎn)CPU的真實狀況和搭配的國產(chǎn)操作系統(tǒng)倍加關(guān)注,于是就有了作者的這個文章:
先不談制造,直說設(shè)計,國產(chǎn)CPU分為以下幾個類型:
1. 龍芯這種從下到上都是自主設(shè)計,指令集雖然是模仿的,但也勉強算是自主的,現(xiàn)代CPU架構(gòu)下指令集的差異性已經(jīng)不大了。
2. 用開源的硬件方案的,代表類型有SPARC架構(gòu)下的一些CPU,比如神舟飛船上用的就是這類,拿別人開源的東西改改就可以用了。
3. 直接買別人的硬件方案,這了指的是買了全套東西的那種,代表類型有alpha架構(gòu),也就是申威系列,太湖之光用的。
4. 拿別人的授權(quán),然后生產(chǎn)CPU的,代表類型是華為海思這種,拿到ARM的授權(quán),然后重新設(shè)計的,雖然ARM會提供公版,但像拿來直接用還是有點難度的。5. 破解、抄襲、打磨別人家的CPU的,有一些研究所在做。
哪個是國產(chǎn)CPU的最好選擇?
龍芯這種其實意義是最大的,基本上把CPU設(shè)計中所有的水都試過,雖然也出過能跑Linux的桌面版本,但整體技術(shù)來說有點落后,并且市場前景也不樂觀,MIPS自己都快死了。
龍芯肯定會活著,至少作為國家戰(zhàn)略的技術(shù)儲備,也會有人讓它活著,但活的好不好就難說了。玩硬件太燒錢了,看Intel掙的多,燒的錢更多。
SPARC和alpha其實在實際中差不多,一種是開源的,另一種是整體買過來的。問題在于,不管是開源還是買的,基本上搞不到太好的東西,雖然申威拿到的超算的第一,但申威自身的問題很多,比如內(nèi)存設(shè)計就很弱,適合做并行計算,但不適合民用。當(dāng)年太湖之光拿下超算第一的時候,很多人覺得國產(chǎn)CPU成氣候了,其實不是那么一回事,民用領(lǐng)域?qū)魏诵阅芤蠛芨叩?,申威的單核可能還不如龍芯(沒研究過具體數(shù)據(jù),可能有偏差),申威的優(yōu)勢在于浮點性能強悍,但普通用戶要那么強的浮點性能干嘛?
SPARC多用在航天領(lǐng)域,歐洲人一直在用,我們在后面跟著學(xué)(之前寫的有誤,老美用的是PPC,歐洲人用SPARC),我們自己造的SPARC整體上還是有一定的差距,如果只是使用的話,已經(jīng)足夠了。
再次強調(diào),這兩類不太適合民用。
第四類就是拿授權(quán),自己設(shè)計Soc之類的,這類包含很多,廣義一點來說,兆芯(x86)、飛騰(ARM)、海思(ARM)、展訊(ARM)等等,好像PPC指令集在國內(nèi)也有拿到授權(quán)的。龍芯拿到MIPS授權(quán)以后,其實也可以歸到這類,但畢竟龍芯早期確實是全自主設(shè)計,只不過是“兼容”MIPS指令,而且龍芯發(fā)布的年代國內(nèi)缺人缺錢,條件要困難的多。
狹義的看,像兆芯這種其實不算,因為沒有什么自主性可言,其實就是VIA,但要是哪天VIA賣給國內(nèi)也許不是什么壞事,起碼可以合法生產(chǎn)x86的CPU了(評論里說最新的兆芯已經(jīng)重新設(shè)計IP了,如果這樣就跟海思之類的差不多)。
拿到的授權(quán)不同,自主的程度也不一樣,有些可以做深度定制,有些就只能簡單改改,因為這類廠商實在是太多了,我了解的不全,不好一一評價。但我個人認(rèn)為,從商業(yè)化的角度上看,這條路是最好走的。兼容性上沒有門檻,前期不需要燒特別多的錢(但也不少),對于商業(yè)化來說相對比較容易。
最后一類是拿別人的片子搞破解抄襲之類的,基本沒有什么市場可言,要么是打著科研的旗號,要么打著國防的旗號,要么就是純粹騙錢,當(dāng)然可能兩三種情況并存的也有。還有,特別注意區(qū)別一下龍芯是自己做出來的,漢芯是靠打磨騙錢的,兩個不是一回事。
以上都是CPU設(shè)計方面的。
關(guān)于制造方面
生產(chǎn)方面,國內(nèi)芯片工藝相對落后,光刻機被卡著脖子,高端的芯片生產(chǎn)不了。這里的芯片類型包括但不限于CPU、內(nèi)存、Flash存儲等,低端的可以做一些,高端的基本沒戲。設(shè)計CPU已經(jīng)很燒錢了,造CPU就更燒錢,這方面除了收購別人已經(jīng)沒有捷徑可言,可是稍微好點的又限制中國收購(鎂光),龍芯過去都是委托別人制造的。
光刻機雖然是別人不賣(編者按:據(jù)ASML相關(guān)人透露,現(xiàn)在是已經(jīng)取消這個限制了),但主要原因還是工業(yè)積累的時間不夠長。從科技樹的角度上看,光刻機依賴于高精度機床、高精度光學(xué)設(shè)備(鏡片),這些東西國產(chǎn)的都不行,說到尼康,都知道是做單反的,其實尼康還做光刻機,而國內(nèi)就沒有這樣的企業(yè),所以國產(chǎn)光刻機的路還很漫長。
以上是關(guān)于CPU的。
國產(chǎn)操作系統(tǒng)的“爛賬”
說的到國產(chǎn)操作系統(tǒng),這個話題就太大了,因為廣義上說國產(chǎn)操作系統(tǒng)太多了。大致分這么幾類:
1. 全自主設(shè)計的;
2. 拿開源的改的;
3. 合法的拿閉源的改的;
4. 不合法的。
以上所有大類又可以細分為民用市場和專用領(lǐng)域兩大塊,其中2、3條又分為改logo改皮膚的,以及深度定制的。
軟件不像硬件那么好界定,畢竟指令集什么的,是一下就能看出來的,軟件想要搞清楚究竟是借鑒還是抄襲還是原創(chuàng),有一定難度。
下面挨個細說一下:
全自主設(shè)計的,這個怎么說呢,要說多,也非常多,一個計算機專業(yè)的本科生或者研究生,水平高的就能自己搞一個簡單的內(nèi)核,16位的、32位的、64位的,基于SMP/SMT的,甚至帶虛擬化的,我自己都寫過類似的東西。難度一點也不高,但操作系統(tǒng)重要的是生態(tài),這方面全自主設(shè)計的國產(chǎn)系統(tǒng)基本上是零。
全自主設(shè)計的國產(chǎn)系統(tǒng),一般都在專用領(lǐng)域,總之民用的不多見,比如嵌入式的DJYOS(我不是太了解,只是聽說)等等。
拿開源的改的,是國產(chǎn)系統(tǒng)里最常見的方式,因為這樣可以避免生態(tài)系統(tǒng)的困局,但也很容易招罵,比如過去的麒麟、紅旗之類的?;旧隙际歉腖inux,或者BSD系列。這里也有一些深度定制的,比如deepin之類的。
安卓家族從廣義上說也是這類,幾家手機廠商都在搞,另外像阿里云之類的也屬于類Linux系統(tǒng)。
普通用戶接觸的“國產(chǎn)”操作系統(tǒng),大部分屬于拿開源的改的這一類。同時,在超算、嵌入式領(lǐng)域,這種思路也行得通。
合法拿閉源的改的,這類里也有不少,只不過很多人不了解。跟硬件一樣,軟件一樣可以拿到完整的授權(quán)(源碼級),然后就可以自己DIY了,只不過要掏很多錢,代表類型是VxWorks這類,在嵌入式里很常見。我在上家公司做交換機的時候,OS的核心也是買的。
還有一類是不合法的,但這種卻沒人管,因為管不了,主要集中在國防,航天軍工這類行業(yè)里。前面我已經(jīng)說了,國內(nèi)喜歡抄老美的方案,不管硬件還是軟件,硬件的CPU抄完,操作系統(tǒng)也跟著抄,但因為不敢明面上直接抄,只好打著兼容XXX系統(tǒng)這種旗號了,究竟這類系統(tǒng)是全自主的還是全抄襲的還是混合的,我也搞不清楚,民用領(lǐng)域很難接觸到,不做評價。
就出路而言,2、3、4其實差不多,論自主可控程度,基本上都是一致的(都有源碼)。別覺得抄的東西不一定就好,其實抄別人的,本身也不那么容易,抄好了反過來把對方吞并,也不是不可能。
有些領(lǐng)域因為要緊跟著老美的步伐,不得不采用抄襲的方式,這其實是一種省錢辦事的好方法,自己去試水需要付出的時間和金錢的代價都太大,本來我們就落后,再挨個試水,差距只會越來越大。
有人會說源碼不是中國人寫的,不安全。我想說的是:源碼都給你了你還覺得不安全,那什么是安全?中國人自己寫的就安全無bug?簡直是笑話。是從頭寫一個操作系統(tǒng)更容易更穩(wěn)定,還是拿現(xiàn)有的源碼研究更容易更穩(wěn)定?
至于民用系統(tǒng),走Linux的路子其實也沒什么問題,將來國內(nèi)企業(yè)有錢了,保留Linux上層API,把內(nèi)核換了就完事了,況且Linux社區(qū)里華人的貢獻也不少呢。Linux是屬于全世界的。
同時,也別把國產(chǎn)系統(tǒng)想的多么重要,從科技樹的角度上看,國產(chǎn)系統(tǒng)依賴國產(chǎn)硬件,國產(chǎn)硬件依賴國產(chǎn)工業(yè)設(shè)備(機床、光刻),先把依賴性搞清楚了再看看哪個才是最重要的。真有一天美國對中國搞技術(shù)封鎖了,最大的問題是芯片,而不是什么操作系統(tǒng)之類的東西。
而且建立一個完善的生態(tài)系統(tǒng)需要很多很多錢,可能是幾倍十幾倍三峽工程、京滬高鐵的錢,國內(nèi)缺錢的地方很多,搞IT的千萬別覺得自己是個程序員,國內(nèi)的所有資源都應(yīng)該投放到軟件行業(yè)。代碼不能當(dāng)飯吃,代碼不能當(dāng)水喝,代碼也不能給誰生孩子。