此原文成稿于2004年并發(fā)布于系統(tǒng)計算研究所網(wǎng)站上,并被許多網(wǎng)站轉(zhuǎn)載,轉(zhuǎn)眼近四年過去。現(xiàn)重讀此文,頗有感慨?,F(xiàn)校訂整理發(fā)表于此,對一些學(xué)術(shù)和技術(shù)觀點(diǎn)做了一些相應(yīng)的補(bǔ)充或修改。關(guān)于中國系統(tǒng)軟件的評論已經(jīng)不少。大多數(shù)是從愛國主義與民族產(chǎn)業(yè)的角度來闡述的。本文試圖從技術(shù)的角度來探討系統(tǒng)軟件,并提出中國系統(tǒng)軟件方面的問題,更為重要的是,中國的機(jī)會所在。另外對要達(dá)到長遠(yuǎn)戰(zhàn)略目標(biāo)所應(yīng)該做的一些準(zhǔn)備提出一些不成熟的建議。
2. 系統(tǒng)軟件與操作系統(tǒng)
系統(tǒng)軟件是一個比較大和泛的概念,很難有一個具體的定義。一般而言,我們可以認(rèn)為:操作系統(tǒng)(OPERATING SYSTEM),編譯器與工具鏈(COMPILER AND TOOL-CHAIN),編程環(huán)境(特別是高性能編程環(huán)境,如PVM, MPI, GLOBUS等等),中間件(MIDDLEWARE,如CORBA, DCOM)等都屬於系統(tǒng)軟件的范疇。
其中,操作系統(tǒng)是系統(tǒng)軟件中的一個重要部份。編程環(huán)境和中間件技術(shù)都是與操作系統(tǒng)非常緊密結(jié)合在一起的。
一個國家在軟件技術(shù)方面的強(qiáng)弱基本上可以通過其系統(tǒng)軟件技術(shù),或操作系統(tǒng)的水平來體現(xiàn)。
換句話說,一個國家在計算機(jī)軟件方面的發(fā)展戰(zhàn)略,必須對操作系統(tǒng)的研發(fā),使用規(guī)劃等等有一個清晰的認(rèn)識和定位。不能繞過或有意規(guī)避。否則,對其它方面,如應(yīng)用系統(tǒng),是把握不住發(fā)展脈絡(luò)的。
操作系統(tǒng)按應(yīng)用的領(lǐng)域劃分,一般可以分為:桌面操作系統(tǒng)、服務(wù)器操作系統(tǒng)、嵌入式操作系統(tǒng)等。比較典型的例子是:
桌面操作系統(tǒng): Microsoft Windows Series、Linux、BSD、和其他的一些UNIX的變種。
服務(wù)器操作系統(tǒng):高檔Microsoft Windows和配套的Cluster。Linux/BSD/Solaris服務(wù)器和相應(yīng)的Cluster技術(shù)等,比較熟悉的系統(tǒng)應(yīng)用如:Google的LINUX機(jī)群系統(tǒng),Yahoo的BSD服務(wù)器機(jī)群系統(tǒng)等等。
嵌入式操作系統(tǒng):從概念上來講,這是一個比較模糊和混亂的灰色區(qū)域。從傳統(tǒng)操作系統(tǒng)方面(如LINUX,BSD等),工業(yè)界和開源社區(qū)花了很多力量力圖將非實(shí)時(real-time)的LINUX系統(tǒng)向嵌入式領(lǐng)域靠攏,典型的如:Monta Vista Inc 和FSMLabs,另外VXWORKS也有很多的裝機(jī)量。這些操作系統(tǒng)一般都應(yīng)用在中低檔嵌入式系統(tǒng)方面;或高檔系統(tǒng)控制平面(CONTROL PLANE)上。
從嵌入式設(shè)備公司的角度,對嵌入式操作系統(tǒng)的理解與經(jīng)典的操作系統(tǒng)理解不一樣,如華為,中興,Cisco, Juniper, Foudry等在路由器,交換機(jī)公司。從這些大型通信設(shè)備公司的角度,其操作系統(tǒng)包括更廣泛的內(nèi)容,如CISCO的IOS和最近的HFR/CSR,JUNIPER的JUNOS等等,傳統(tǒng)的操作系統(tǒng)在這些大型的嵌入式系統(tǒng)中扮演著一個內(nèi)核或基礎(chǔ)的地位,并且被人為的修改以滿足高檔嵌入式系統(tǒng),特別是高端系統(tǒng)特殊的需要。當(dāng)然有一點(diǎn)可以肯定:即使對於CISCO和JUNIPER這樣的技術(shù)力量非常雄厚的公司而言,他們在傳統(tǒng)操作系統(tǒng)方面的能力也不強(qiáng),這也是為什么他們系統(tǒng)的基礎(chǔ)仍然是傳統(tǒng)的操作系統(tǒng),比如CISCO 的HFR建立在QNX/NEUTRINO微內(nèi)核(Micro-Kernel)的基礎(chǔ)上。JUNOS的控制平面建立在BSD的基礎(chǔ)上,數(shù)據(jù)平面(DATA PLANE)軟件部分建立在一個微內(nèi)核上。有一點(diǎn)要注意:CISCO和JUNIPER的重點(diǎn)是在其數(shù)據(jù)平面。但是控制平面軟件工作量和復(fù)雜性更大,要求更高。
在嵌入式操作系統(tǒng)方面,另外一個巨大的使用領(lǐng)域是Mission Critical Systems. 比如,美國宇航局(NASA)的火星探索器上的軟件系統(tǒng),大型軍事監(jiān)控系統(tǒng),航空控制系統(tǒng)等等。這方面要注意的公司是Green Hills Inc. 筆者認(rèn)為,NASA目前仍然沒有放棄VXWORKS的主要原因是代碼的歷史遺留(Legacy)問題。目前在軍事方面的OS應(yīng)用,Green Hills已經(jīng)取得了主導(dǎo)地位。Green Hills RTOS系統(tǒng)的核心是ARINC-653。在這方面,開源的LINUX,BSD 等等向ARINC-653方面發(fā)展的可能性不大,即使IBM在LINUX后面出錢出力。單靠自由軟件的力量在Mission Critical系統(tǒng)方面有所作為可能性不大。
從上述各個方面的闡述分析,我們要考察的是我們的貢獻(xiàn)在哪里?更重要的是,我們的重點(diǎn)應(yīng)該放在哪里?
3. 中國系統(tǒng)軟件的現(xiàn)狀
隨著芯片設(shè)計產(chǎn)業(yè)在中國的逐步發(fā)展,中國的系統(tǒng)軟件研發(fā)面臨著一個進(jìn)退維谷的境界。
最近幾年來,大陸陸續(xù)推出了一系列的中低端的通用CPU,SoC和一些專用的DSP芯片。通過發(fā)布的信息,可以了解一些性能參數(shù),比如:
“據(jù)參與項目開發(fā)的技術(shù)人員介紹,目前的龍芯2號最高頻率為300MHz,功耗1W-2W,成品率約為80%左右。通過使用相關(guān)測試對龍芯2號的性能分析表明,相同主頻下龍芯2號的性能已經(jīng)明顯超過PII,達(dá)到PIII的水平,設(shè)計人員稱龍芯2號的設(shè)計SPEC CPU2000分值可達(dá)到300分以上,設(shè)計頻率在500MHz以上時性能可與1GHz以上的PIII或PIV的性能相當(dāng)。”
從上述參數(shù)可以看見,通用CPU設(shè)計方面我們已經(jīng)開始起步并且積累了一定的工程經(jīng)驗。關(guān)于龍芯的更多資料可參閱www.xtrj.org/godson. 雖然對于硅谷的CPU或網(wǎng)絡(luò)處理器公司而言,做一個MIPS的CORE的CPU是一個相對并不復(fù)雜的工程項目,但畢竟是我們自己從無到有走了一回。工程經(jīng)驗價值很大。
但我們在系統(tǒng)軟件領(lǐng)域基本上是沒有任何量化的成績。基本是LINUX, BSD等的一些相對簡單的移植,基本上還沒有涉及到BSP的地步。KERNEL的重要工作和貢獻(xiàn)就更無從談起。我們在商業(yè)操作系統(tǒng)方面的工作表現(xiàn)比較清晰,也就是基本上沒有真正市場化的系統(tǒng)。在對開源操作系統(tǒng)方面的參與和貢獻(xiàn)方面,通常幾個標(biāo)志性的判別指數(shù)是:有多少人能將代碼加LINUX, BSD的代碼系統(tǒng)里?應(yīng)該是不多。有幾個有影響力的系統(tǒng)級的項目在http://sourceforge.net上?引用數(shù)是多少被用戶下載的數(shù)量是多少?開源社區(qū)的人參加共建的數(shù)目是多少?
我們的貢獻(xiàn)基本上接近為零。這就是現(xiàn)實(shí)。沒有任何非常突出的貢獻(xiàn)。
我國的商業(yè)系統(tǒng)軟件公司其實(shí)并不少。但好像主要還是在漢化方面和用戶界面的調(diào)整上做一些工作,再深一點(diǎn)的,就是對不同的用戶需求,做一些相應(yīng)的定制裁剪工作,比如,對企業(yè)單位的系統(tǒng)集成,調(diào)試和安裝。紅旗LINUX是其中比較典型的一個代表。下面的的鏈接是紅旗LINUX的產(chǎn)品介紹:http://www.redflag-linux.com/chanpin/index.php。在其網(wǎng)站上,對其產(chǎn)品的介紹是這樣描述的:“紅旗軟件提供高端服務(wù)器操作系統(tǒng)、集群解決方案、桌面版操作系統(tǒng)、嵌入式系統(tǒng)以及技術(shù)支持服務(wù)和培訓(xùn)等一系列的Linux 產(chǎn)品和服務(wù),開創(chuàng)全新的計算體驗,幫助企業(yè)增強(qiáng)其整體競爭力,提高個人工作效率,將用戶業(yè)務(wù)價值和Linux 的自由開放精神有力地結(jié)合在一起。”
我們可以看出紅旗LINUX的產(chǎn)品和市場方向:LINUX為操作系統(tǒng)的數(shù)據(jù)中心服務(wù)器,企業(yè)服務(wù)器,LINUX桌面系統(tǒng),和嵌入式產(chǎn)品等等。下圖所示是紅旗Linux描述其“紅旗核心技術(shù)”的體系結(jié)構(gòu)。
在紅旗Linux的網(wǎng)站上,引人注目的是這樣的詞匯:“紅旗嵌入式核心技術(shù)框架”。從圖中,筆者無法判斷紅旗LINUX的技術(shù)在那里,對開源社區(qū)的貢獻(xiàn)在那里。在Linux核心的工作在那里。筆者的觀點(diǎn)是:還沒有或者沒有公布。與之相反, MVISTAIN(www.mvista.com )在對LINUX KERNEL PREEMTPTION對方面的貢獻(xiàn)很大,其許多工作已經(jīng)進(jìn)入LINUX 2.6中。另外,MVISTA開發(fā)的大量工具也為基於LINUX的應(yīng)用程序開發(fā)提供了非常重要的支持。
FSMLabs 是另外一個在LINUX領(lǐng)域,特別是實(shí)時方面,比較引人注意的一個。他們通過一個LKM的方式將原來LINUX的中斷處理程序和調(diào)度截獲,并將自己的調(diào)度算法放入其中,其模塊稱為RTCORE。通過提供一套RT_THREAD的編程方式,用戶可以編寫EITHER 用戶態(tài)的實(shí)時程序OR核心態(tài)的實(shí)時程序。這種顯示的將UNIXDOMAI與REAL_TIME DOMAIN在調(diào)度上分開的方法在一定的程度上解決了經(jīng)典UNIX(如LINUX,BSD)等等操作系統(tǒng)核心操作的非確定性而帶來的非實(shí)時性的重要問題,比如:要支持高速的硬實(shí)時的應(yīng)用;控制平面和數(shù)據(jù)平面沒有分開的中高檔網(wǎng)絡(luò)通信設(shè)備(如路由器,交換機(jī),防火墻等等)。
上述是舉了兩個例子來說明別人的工作在什么方面。當(dāng)然,MVISTA和RTLINUX在技術(shù)上多有問題需要解決。筆者會在下面的章節(jié)中討論。
總之,通過閱讀紅旗LINUX其他產(chǎn)品的介紹,我們大概可以得出這樣的結(jié)論:紅旗LINUX基本上還是一個LINUX產(chǎn)品的集成和發(fā)布商,基本上無單獨(dú)二次深層開發(fā)的計劃或能力。
在整理此文時,筆者發(fā)現(xiàn),紅旗Linux現(xiàn)在已經(jīng)將飛漫軟件公司的Linux為基礎(chǔ)的MiniGUI圖形系統(tǒng)融入其紅旗Linux的嵌入式解決方案中。這確實(shí)是一個不錯的進(jìn)步。在2004年這篇文章成文時,還沒有這個集成的方案。筆者認(rèn)為,MiniGUI的對低檔嵌入式設(shè)備或便攜式設(shè)備(內(nèi)存都比較?。┦且粋€不錯的應(yīng)用軟件。筆者將在以后專門寫一篇評論文章介紹飛漫軟件。
“一葉而知秋”。通過對紅旗LINUX的技術(shù)結(jié)構(gòu)的考察,我們可以這樣認(rèn)為,國內(nèi)其他的類似的做Linux銷售、集成、定制的操作系統(tǒng)公司應(yīng)該都處于這個層面上。
2006年,國防科技大學(xué)發(fā)布了其麒麟操作系統(tǒng)。這一新聞在網(wǎng)絡(luò)上引起了激烈的討論。許多BSD的技術(shù)人員通過分析得出麒麟操作系統(tǒng)其實(shí)是FreeBSD的一個克隆。其中一篇從內(nèi)核相似性分析的技術(shù)文章引起了廣泛的注意:麒麟操作系統(tǒng)內(nèi)核同其他操作系統(tǒng)內(nèi)核的相似性分析。從文章作者的數(shù)據(jù)分析,其結(jié)論是:“Kylin 2.0.0和FreeBSD 5.3的相似度達(dá)到了60.26%,與FreeBSD也達(dá)到了59.04%的相似度”, “從已知的數(shù)據(jù)我們只能說,創(chuàng)新可能只有10%到20%之間”。
其實(shí)就麒麟操作系統(tǒng)的創(chuàng)新性和獨(dú)立研發(fā)的程度,國防科技大學(xué),在受到各方面質(zhì)疑后,也公開表示麒麟操作系統(tǒng)不是一個獨(dú)立研發(fā)的系統(tǒng),而是一個充分利用BSD社區(qū)的微內(nèi)核Mach和FreeBSD5.x的基礎(chǔ)上經(jīng)過一些算法修改和增添一些新功能而來的。下圖所示為國防科技大學(xué)的相關(guān)聲明:
通過上述的數(shù)據(jù)和文字,筆者認(rèn)為,在肯定國防科技大學(xué)的確做出了非常多的獨(dú)立自主的技術(shù)開發(fā)之外,也要清醒的認(rèn)識到,麒麟操作系統(tǒng)離操作系統(tǒng)核心的關(guān)鍵技術(shù)的創(chuàng)新還是有不少差距的。關(guān)于筆者對麒麟操作系統(tǒng)的更多評論可參閱文章:對國防科技大學(xué)麒麟操作系統(tǒng)的思考一文。
下面我們來考察一下國內(nèi)的大型通信監(jiān)控軟件的發(fā)展情況。
華為,港灣等國內(nèi)的高端嵌入式系統(tǒng)好像沒有在系統(tǒng)軟件方面有自己的東西。從各方面的消息來看,許多產(chǎn)品是基于VXWORKS,Linux和其他一些第三方的操作系統(tǒng)。另外華為與CISCO的官司也是弄得路人皆知。筆者不知華為等高端產(chǎn)品數(shù)據(jù)平面上的軟件是什么體系結(jié)構(gòu)。但自己寫的核心的可能性不大。當(dāng)然,華為的產(chǎn)品為我們國家擋住了歐美相應(yīng)產(chǎn)品的沖擊,這是有目共睹的和值得肯定的。
筆者認(rèn)為系統(tǒng)軟件的研發(fā)在高校相對工業(yè)界要差一點(diǎn)?;旧蠜]有可值得特別提及的地方。85計劃的操作系統(tǒng)部分應(yīng)該是入了許多錢的。“青鳥”計劃曾經(jīng)投入了許多人力物力。結(jié)果我們大家都已經(jīng)比較了解。一個非常可惜的投入和產(chǎn)出比。
科學(xué)院計算所“曙光”CLUSTER計算機(jī)是我們在服務(wù)器和高性能計算方面的一個成果??上部少R。但從技術(shù)上來看,問題也是很多。筆者有幸在計算所一個出差的機(jī)會參加國家智能中心的研究生論文答辯會。從其中心的研究生論文答辯中,大概可得知曙光機(jī)的體系結(jié)構(gòu)一二。其基本上是一個機(jī)群計算的體系結(jié)構(gòu)。其操作系統(tǒng)用的是IBM的AIX 或者是Linux. 在操作系統(tǒng)之上,構(gòu)架了一系列的中間件包括:MPI,PVM和實(shí)時CORBA(TAO). 曙光用TAO來構(gòu)架了其實(shí)時事件服務(wù)處理和整個機(jī)器的高可靠性系統(tǒng)。MPI或PVM是其并行計算的環(huán)境。當(dāng)時,智能中心的主任,博導(dǎo)孫教授說,為什么把高可靠性系統(tǒng)構(gòu)架在CORBA這么高的概念/層出上?HA能發(fā)現(xiàn)一個節(jié)點(diǎn)服務(wù)崩潰的速度是多少?這些都是非常好的問題。
從筆者的角度看,曙光的存在是非常令人振奮的,是我們的驕傲。但同時,我們要看到不足。筆者知道節(jié)點(diǎn)通信的快速硬件設(shè)備是自己設(shè)計的。這是非常讓人高興的事情。但在軟件方面,筆者明顯感到吃力和沒有足夠的力量。
另外,聯(lián)想也設(shè)計了類似曙光的機(jī)器并和計算所競爭。這是個好事情。一方面我們知道曙光的技術(shù)含量不是高不可攀。另一方面,有競爭,在高性能計算方面我們才能提高。
聯(lián)想應(yīng)該是國內(nèi)一個很大的計算機(jī)公司,但總體感覺其仍然是賣機(jī)器的。就象美國的DELL公司。當(dāng)然沒有什么不好。雖然擁有一個龐大的聯(lián)想研究院,但聯(lián)想好像沒有在獨(dú)立研發(fā)方面作過什么讓筆者引目的東西.
筆者非常寄希望于高校在GRID COMPUTING上不要錯過為我們將來的高性能計算作出基礎(chǔ)和培養(yǎng)人才的工作。在系統(tǒng)實(shí)現(xiàn)方面,筆者對高校信心不大。這一點(diǎn)與目前高校教師的科研素質(zhì)是密切相關(guān)的。
我們有了龍芯?如果沒有系統(tǒng)軟件?就像缺少了重要的一環(huán)。芯片設(shè)計與系統(tǒng)軟件的配合是緊密相關(guān)的。缺少對系統(tǒng)軟件的思考,龍芯或?qū)淼钠渌就欠葑??拼高端?還是SoC,去搶占嵌入式系統(tǒng)和MISSION CRITICAL 系統(tǒng)?
最近,一些鑒定會上,一些發(fā)布會上,網(wǎng)絡(luò)上,一些德高望重的老教授和院士們都情緒激動的表示中國一定要堅持LINUX的道路,去和微軟斗。
有時,是乎LINUX或開源社區(qū)成了我們系統(tǒng)軟件產(chǎn)業(yè)的救星。這是正確的嗎?我們對系統(tǒng)軟件的理解只在LINUX這個層次嗎?有沒有其他的問題我們忽視了?我們對LINUX的正確態(tài)度應(yīng)該是什么?在開源領(lǐng)域,我們的立場應(yīng)該是什么?
4. 系統(tǒng)軟件發(fā)展趨勢分析與下一代系統(tǒng)軟件
在桌面系統(tǒng)上,微軟基本上控制了整個市場。LINUX/BSD/SOLARIS等的占用率基本上無可能與其對抗。放眼硅谷大小公司,不用Windows Office軟件的好像不多。應(yīng)用程序決定一切。WIN32大量的應(yīng)用使得用戶不得不用Windows.
在(高端)服務(wù)器方面,LINUX/BSD有一席之地。IBM在這方面下功夫不小。當(dāng)然其真正動機(jī)絕非喜歡“自由”的軟件。分布式數(shù)據(jù)庫和HA技術(shù)都是高性能服務(wù)器的要求。
嵌入式系統(tǒng)中,微軟目前無任何優(yōu)勢;LINUX等在低端PDA方面有一定的市場。另外要注意的是:用在思科的HFR上的微內(nèi)核QNX/NEUTRINO在智能化汽車市場上是贏家. 在高端嵌入式系統(tǒng)中,目前無任何操作系統(tǒng)能很好的勝任,微內(nèi)核技術(shù)有可能是最后的贏家。思科花費(fèi)5年之久宣布了其最新的其與QNX/NEUTRINO的網(wǎng)絡(luò)操作系統(tǒng)。其用心良苦可見一斑。也讓我們知道,當(dāng)一個真正的大系統(tǒng)到了一定地步后,其內(nèi)核的基礎(chǔ)架構(gòu)的取向是非常重要的。而這些不是靠幾個人憑空決定的,而是多少用戶反饋的經(jīng)驗中產(chǎn)生的,是從多少個公司集成整合中的痛苦中獲得的判斷力。
在MISSION CRITICAL系統(tǒng)中,VXWORKS和GREEN HILLS的INTEGRITY占據(jù)一定市場。筆者認(rèn)為GREEN HILLS技術(shù)上應(yīng)該贏。其實(shí),當(dāng)年NASA的Mars Lander由於優(yōu)先級翻轉(zhuǎn)(Priority Inversion)出事后,就應(yīng)該計劃將VXWORKS逐步淘汰。
筆者認(rèn)為,隨著高檔NP網(wǎng)絡(luò)處理器(NETWORK PROCESSOR)或網(wǎng)絡(luò)服務(wù)處理器(Network Service Processor)在今后一兩年的出現(xiàn),業(yè)界對傳統(tǒng)的NP的概念將徹底改變。原來,一談起NP,就是其非常局限的指令內(nèi)存和非常少的數(shù)據(jù)內(nèi)存。很少的和功能非常局限的功能引擎。一兩年后,高檔的NP將是一系列非常高性能的網(wǎng)絡(luò)服務(wù)處理器–可以同時擁有10多個通用CPU CORE,例如,MIPS CORE, ARM CORE等等;各種多個的網(wǎng)絡(luò)處理,安全處理引擎等。
【注:筆者在2004年的上述預(yù)測,在2006,2007年左右基本上全部實(shí)現(xiàn)。目前高端網(wǎng)絡(luò)處理器的浪潮非常兇猛,沖擊著下一代高端網(wǎng)絡(luò)設(shè)備的體現(xiàn)結(jié)構(gòu)的設(shè)計?!?/div>
這些芯片的出現(xiàn),將會對系統(tǒng)軟件,特別是嵌入式系統(tǒng)軟件有很大的影響。
在高端嵌入式系統(tǒng)中,一般而言系統(tǒng)分為:控制平面和數(shù)據(jù)平面??刂破矫嬉话闶遣捎媒?jīng)過修改的操作系統(tǒng)并在其上運(yùn)行那些實(shí)時性要求不高的應(yīng)用程序或協(xié)議。對那些需要高性能的數(shù)據(jù)處理功能模塊,都放在數(shù)據(jù)平面上。
對數(shù)據(jù)平面的理解,傳統(tǒng)的理解是:ASIC, FPGA, SWITCH FABRIC和一些其它輔助作用的網(wǎng)絡(luò)處理器(NP)。在數(shù)據(jù)平面上,基本上無軟件成分??刂破矫婧蛿?shù)據(jù)平面通過內(nèi)
部以太接口, PCI或其他高速BUS來通信交換信息。
對上述有了一個理解后,我們就會理解思科, JUNIPER,3COM, FOUNDARY,華為,中興等公司的技術(shù)最重要的一面就是ASIC的研發(fā)。
為了贏得市場份額,上述公司都不得不花費(fèi)大量的人力物力去不斷的開發(fā)下一代ASIC。其中一個重要的工作就是不斷將原來在控制平面上的邏輯、算法或協(xié)議,為了性能或其他的原因,做到數(shù)據(jù)平面上。
產(chǎn)品的速度,性能,高可靠性–這就是決定這些公司能否生存和持續(xù)性發(fā)展的唯一標(biāo)志。
在沒有高端網(wǎng)絡(luò)服務(wù)處理器之前,上述的工作的投入非常大;工程風(fēng)險也非常高。一個ASIC的成敗基本上影響一個整體產(chǎn)品的成敗。一個芯片的一個設(shè)計缺陷經(jīng)常會導(dǎo)致一個公司的產(chǎn)品推遲發(fā)布,或一個產(chǎn)品的失敗。
從技術(shù)的角度考察,筆者認(rèn)為,這一切都來自ASIC的不靈活性。
在沒有高端NP之前,數(shù)據(jù)平面沒有選擇。只能在ASIC上賭博與打拼。NP只能起一個協(xié)處理器地位,比如,做一些簡單的分類(Classify)。從而使得在數(shù)據(jù)平面上的工作很局限。仍然有大量的邏輯,算法或協(xié)議不等不放在控制平面上運(yùn)行。而由於控制平面的通用CPU的局限性和操作系統(tǒng)的局限性,除了由于與大量的應(yīng)用程序共同分享資源而帶來的穩(wěn)定性問題之外,通常一個很難處理的技術(shù)問題就是:控制平面系統(tǒng)的DoS(Deny of Service)而使得整個控制平面停止響應(yīng),最后導(dǎo)致整個系統(tǒng)崩潰。
有了高端網(wǎng)絡(luò)服務(wù)處理器之后,筆者認(rèn)為,整個局面將獲得很大的改進(jìn)。
將會有更多的公司可以進(jìn)入高端市場。以前ASIC研發(fā)是一個高門檻。資金的投入與芯片設(shè)計成功的風(fēng)險使得大量的公司只敢在低端市場徘徊。有了高檔NP,原來在ASIC中邏輯可以在NP中以軟件實(shí)現(xiàn)。性能卻不會下降很多。帶來的靈活性巨大。
更多的控制平面的邏輯將被較容易的挪到數(shù)據(jù)平面上。控制平面的負(fù)載將大大減低。整個大系統(tǒng)的可管理性將很大提高。
公司產(chǎn)品的更新將會非常靈活。原來ASIC 芯片回來之后,很多的功能就做死了。一但一個預(yù)定的功能有問題,帶來的后果是整個產(chǎn)品非常被動。而在有高端網(wǎng)絡(luò)處理器之后,產(chǎn)品線對客戶問題的處理將會比原來反應(yīng)更迅速。
這上述的一切是因為:傳統(tǒng)以ASIC為主的數(shù)據(jù)平面體系結(jié)構(gòu)將會被以軟件為主的數(shù)據(jù)平面的體系結(jié)構(gòu)所代替!以協(xié)處理器身份為主的傳統(tǒng)網(wǎng)絡(luò)處理器NP(上面運(yùn)行而且只能運(yùn)行一些簡單的ENINE-SIMD和MIMD數(shù)據(jù)處理方式)將會被高端網(wǎng)絡(luò)服務(wù)處理器所替代!
這個深層的變化對系統(tǒng)軟件提出了一個非常新的要求—-數(shù)據(jù)平面操作系統(tǒng)。
要在一個擁有10多個CPU CORE ON-CHIP的處理器上運(yùn)行復(fù)雜的數(shù)據(jù)平面邏輯,沒有一個數(shù)據(jù)平面軟件系統(tǒng)內(nèi)核(Kernel/OS)是不現(xiàn)實(shí)的。這里會涉及大量的ASIC驅(qū)動,各個CPU間的數(shù)據(jù)同步,臨界區(qū)操作,鎖操作,與后臺的控制平面的合作等等。
對這樣一個數(shù)據(jù)平面操作系統(tǒng)的要求是什么?
高性能(HIGH PERFORMANCE);高實(shí)時性( REAL-TIME);簡單和友善的多線程編程環(huán)境(SIMPLE AND NICE MULTI-THREAD PROGRAMMING MODEL);良好的與控制平面的通信機(jī)制。運(yùn)行時系統(tǒng)檢測和量化分析工具(SYSTE PROFILINGTOOLS);小而緊湊的代碼( FOOT-PRINT)等等。
這一切的上述要求,使得在控制平面上運(yùn)行的傳統(tǒng)操作系統(tǒng)(LINUX/BSD)等等都不能很好的勝任。
以LINUX為例,直到2.6, LINUX才正式OFFICIALLY支持內(nèi)核搶先機(jī)制(KERNEL PREEMPTIVE)。這對LINUX的實(shí)時性是一個很好的改進(jìn)。但在中斷的延遲,一些內(nèi)核重要數(shù)據(jù)結(jié)構(gòu)上,系統(tǒng)仍然無法支持很好的性能。其本質(zhì)原因是:UNIX的設(shè)計不是為了實(shí)時系統(tǒng)。Monothlithic 操作系統(tǒng)的缺點(diǎn)不是一個實(shí)時系統(tǒng)的補(bǔ)?。≒ATCH)所能完全解決的。另外,為了避免大量系統(tǒng)調(diào)用(SYSTEM CALL)的代價,大量基於LINUX/BSD的開發(fā)是在內(nèi)核代碼里面。從而使得內(nèi)核越來越大,復(fù)雜度的增加使得系統(tǒng)的穩(wěn)定性極端降低。一個非法指針就可以非常容易的使得整個嵌入式設(shè)備全部崩潰。這樣的事情是高端嵌入式設(shè)備公司非常害怕和要盡量避免的。
RTLINUX/RTCORE 和RTAI確實(shí)解決了部分實(shí)時應(yīng)用的問題。但其解決問題的思路是:將UNIX 部分與REAL-TIME 部分顯示的劃分開。其帶來的缺點(diǎn)明顯可見:
* 大量需要軟實(shí)時(SOFT REAL-TIME)的UNIX部分的應(yīng)用程序非常有可能被餓死(STARVING),例如路由協(xié)議部分;
* 不好的編程環(huán)境:缺乏完整的POSIX API。可移植性很不好。
*系統(tǒng)缺乏靈活性。很難在一個大系統(tǒng)的范疇內(nèi)去考慮一個產(chǎn)品的設(shè)計。
* 對人員的技術(shù)要求和額外培訓(xùn)的要求大大增加。
這些缺點(diǎn)的原因其實(shí)也很簡單:UNIX非實(shí)時設(shè)計的本質(zhì)。RTCORE 和RTAI本質(zhì)上還是一個補(bǔ)充的技術(shù)補(bǔ)丁,解決了部分問題,但帶來更多的問題。
那么微內(nèi)核(Micro-Kernel)能否勝任數(shù)據(jù)平面的OS/Kernel的工作呢?
筆者認(rèn)為:微內(nèi)核是相對較好的一個數(shù)據(jù)平面操作系統(tǒng)的選擇。但是也存在一些缺點(diǎn)需要解決:
* 對多個,8,10,16,32或更多CPU CORE的支持。
* 對高端網(wǎng)絡(luò)服務(wù)處理器中的Interconnect和硬件通信機(jī)制的相應(yīng)操作系統(tǒng)方面的優(yōu)化。
* 對消息傳遞機(jī)制性能的優(yōu)化。
* 對控制平面操作系統(tǒng)合作的考慮。大多數(shù)控制平面一般都使用MONOLITHIC OS,如Linux, BSD等。
* 對各種ASIC, FPGA等提供的軟件調(diào)試支持。通常操作系統(tǒng)公司對嵌入式系統(tǒng)的理解不深,例如,對CACHE,MEMCOPY, DMA等等的支持方式。
有上述分析可見,傳統(tǒng)的各種操作系統(tǒng)都不能很好的勝任驅(qū)動高端網(wǎng)絡(luò)服務(wù)處理器而擔(dān)當(dāng)數(shù)據(jù)平面操作系統(tǒng)的重任。
筆者認(rèn)為:這就是中國系統(tǒng)軟件業(yè)的機(jī)會所在。
5. 中國系統(tǒng)軟件的機(jī)遇和契機(jī)
中國系統(tǒng)軟件起步確實(shí)晚了,但仍有博弈的機(jī)會。筆者在前述幾節(jié)的分析,特別是大型實(shí)時監(jiān)控系統(tǒng)的數(shù)據(jù)平面操作系統(tǒng)就是一個良好的契機(jī)。
沒有系統(tǒng)軟件,國家自主研發(fā)通用CPU, SoC等等的戰(zhàn)略意義就不可能得到最大的擴(kuò)展。
我們要清醒的考察自己的處境,并制定自己的戰(zhàn)略和戰(zhàn)術(shù)路線。
筆者認(rèn)為在系統(tǒng)軟件方面,我們已經(jīng)就緒。是可以有一番作為的時候了。筆者根據(jù)如下數(shù)據(jù)和觀察做的這番判斷。
* 系統(tǒng)軟件的科技人員的數(shù)量已經(jīng)很大。在民間,由於有開源社區(qū)等操作系統(tǒng)的參照性,我們已經(jīng)具備大量熟悉操作系統(tǒng)核心算法,核心數(shù)據(jù)結(jié)構(gòu)的科技人員。這些人員大都散布在各個科技公司之中。在高校的相對較少。
* 隨著國內(nèi)出現(xiàn)一些具有一定實(shí)力,能與國外大公司相抗衡的公司,在系統(tǒng)軟件方面的發(fā)展的要求將逐步體現(xiàn)出來。否則就會出現(xiàn)更多的類似于華為與思科的官司,我們也可以了解:沒有系統(tǒng)軟件的支撐的艱辛。高科技公司在走向國際化道路上是舉步艱難。
*大量的海外中國學(xué)者和工程師們正在通過雙贏的方式,用各種自覺的,不自覺的方式影響著國內(nèi)的同行,彼此交流。
* 在操作系統(tǒng)具體開發(fā)上,其真正的難度是POSIX支持的工作量。但由於具備開源社區(qū),我們只要開發(fā)核心部分即可。許多其他部分都可以重用。另外,對專用系統(tǒng),根本不需要POSIX的支持。我們的目的不是通用系統(tǒng)。
鑒于以上觀點(diǎn),下面是筆者的一些個人建議:
*CPU芯片設(shè)計上,高端通用CPU時機(jī)過早,要大力發(fā)展DSP, SoC和ASIP(APPLICATION SPECIFIC INSTRUCTION PROCESSOR)。【筆者注:ASIP:應(yīng)用系統(tǒng)專用指令處理器】
嵌入式設(shè)備是中國的一個非常好的機(jī)會。一定不能錯過。高端CPU設(shè)計方面,我們的實(shí)力相差實(shí)在太遠(yuǎn)。非一日之功。要再忍耐5,10年方有一搏之力。芯片設(shè)計的目標(biāo)對了,系統(tǒng)軟件就不會迷失方向。通過芯片設(shè)計產(chǎn)業(yè),也可以帶動我國在高性能編譯,TOOL-CHAIN方面的人才培養(yǎng)。目前,我們非常缺乏這方面的人才。
*切勿將人力和物力放在通用操作系統(tǒng)方面。
通用操作系統(tǒng)對國家的戰(zhàn)略意義不大。這方面,讓LINUX與WINDOWS去相互制約。在桌面系統(tǒng)上,不應(yīng)該有國家級的投資。讓市場去說話。只要作LINUX發(fā)行商有商機(jī),自然有人會在其中。要把其當(dāng)作一個單純的商業(yè)行為。不管什么版本的LINUX,都支持和歡迎。
*傾全力保護(hù)和發(fā)展ASOS(Application Specific Operating System). 【筆者注:ASOS:應(yīng)用系統(tǒng)專用操作系統(tǒng)】
大力發(fā)展針對具體行業(yè)的,有國家戰(zhàn)略意義的,專用系統(tǒng)。在核心軟件方面務(wù)必開發(fā)出自己的基礎(chǔ)軟件。就象筆者已經(jīng)闡述的,如果不需要POSIX支持,一個很好的實(shí)時操作系統(tǒng)并非難事。POSIX只會在通用操作系統(tǒng)方面有用。比如一個微內(nèi)核系統(tǒng)可以足夠支持一個大型的監(jiān)控軟件。通用的UNIX,如LINUX, BSD, Solaris都可以被模擬在其上作為一個服務(wù)器進(jìn)程。
* 開放民間研究機(jī)構(gòu)參與國家項目申請
目前,項目經(jīng)費(fèi)嚴(yán)重傾向于幾個高校和科學(xué)院。但是從他們的的產(chǎn)出來看,這種方式要調(diào)整。民間企業(yè)也應(yīng)該可以競爭國家項目。要消減高校在系統(tǒng)軟件,體系結(jié)構(gòu)方面的投資,而改為投向具有真正R&D實(shí)力的企業(yè)。在這個領(lǐng)域,工程的難度比科研的難度大很多。系統(tǒng)軟件都是在測試版上一點(diǎn)一點(diǎn)調(diào)出來的,絕不可能是想和寫出來的。國內(nèi)高校在這方面的技術(shù)儲備和工程經(jīng)驗明顯薄弱。
*留住人才
系統(tǒng)軟件和體系結(jié)構(gòu)方面務(wù)必要國家支持。完全扔到市場上,很有可能會夭折。原因是:我們起步比較晚。很難接受工業(yè)界的殘酷競爭。所以,我們要做系統(tǒng)軟件,一定要有自己的人才。中國現(xiàn)在明顯缺乏工業(yè)界的研發(fā)實(shí)驗室和研究院。比如IBM Labs, MicrosoftLabs,SUN Labs, HP Labs, SRI, XEROX PARC, INTEL Labs, Bell labs等等。光靠科學(xué)院是不可能的。而且科學(xué)院離真正的技術(shù)需求還是有一定距離的。另外要留住人才,要在輿論上冷卻“洋買辦”,鼓勵本土精英。