|
陈怀临
系统计算研究所
huailin@xtrj.org
www.xtrj.org
8/8/2004 0。 引言
关于中国系统软件的言论已经不少。大多数是从爱国主义与民族产业的角度来谈的。爱国主义与民族产业是正确的,但是很容易被商人利用,成为他们满足贪婪私欲的工具。
本文试图中技术的角度来探讨系统软件,并提出中国系统软件方面的问题,更为
重要的是,我们的机会所在。另外对要达到我们的战略目标所应该做的一些
准备提出一些建议。
1。 系统软件与操作系统
系统软件是一个比较大和泛的概念,很难有一个具体的定义。一般而言,我们可以认为:操作系统(OPERATING SYSTEM),编译器与工具链(COMPILER AND TOOL-CHAIN),编程环境(特别是高性能编程环境, 如PVM, MPI, GLOBUS等等),中间件(MIDDLEWARE,如CORBA)等等都属於系统软件的范畴。其中,操作系统是系统软件中的一个重要部份。一个国家在软件技术方面的强弱基本上可以通过其系统软件技术,或操作系统的水平来表达。
操作系统按应用的领域划分一般可以分为:桌面操作系统,服务器操作系统;嵌入式操作系统等等。比较典型的例子是:
* 桌面操作系统: Microsoft Windows Series, Linux, BSD和其他的一些UNIX的变种。
* 服务器操作系统:高档Microsoft Windows和配套的Cluster。Linux /BSD/Solaris服务器和相应的Cluster技术等, 比较熟悉的系统应用如:Google的LINUX机群系统,Yahoo的BSD Server机群系统。
*嵌入式操作系统:从概念上来讲,这是一个比较模糊和混乱的Gray Area。从传统操作系统方面,如LINUX, 工业和OPEN SOURCE界花了很多力量力图将非real-time的LINUX系统向嵌入式领域靠拢,典型的如:MVista Inc.(www.mvista.com)
和RTLinux(www.rtlinux.com),另外VXWORKS也有很多的应用。这些操作系统一般都应用在中低档嵌入式系统方面;或高档系统的CONTROL PLANE上。
从嵌入式设备公司的角度,对嵌入式操作系统的理解与经典的操作系统理解不一
样,如Cisco, Juniper, Foudary等等在硅谷的路由器,交换机公司。他们一般定义其操作系统包括更广泛的内容,如CISCO的IOS和最近的HFR/CSR, JUNIPER的JUNOS等等,传统的操作系统在这些大型的嵌入式系统中扮演着一个KERNEL或INFRASTRUCTURE的地位,并且被特意的修改以满足高档嵌入式系统特殊的需要。 当然有一点可以肯定:即使对於CISCO和JUNIPER这样的技术力量非常雄厚的公司而言,他们在操作系统方面的能力都非常弱,这也是为什么他们系统的基础仍然是传统的操作系统,比如CISCO 的HFR建立在
QNX/NEUTRINO微内核(Micro-Kernel)的基础上。JUNOS的CONTROL PLANE建立在BSD的基础上,DATA PLANE软件部分建立在一个微内核上。
有一点要注意:CISCO和JUNIPER的重点是在其DATA PLANE。但是CONTROL PLANE软件工作量很大。
在嵌入式操作系统方面,另外一个巨大的部分是:Mission Critical Systems. 比如,NASA的MARS 探索器上面的软件系统,大型军事,等等。这方面要注意的公司是Green Hills Inc. (www.ghs.com). 笔者认为,NASA目前仍然没有放弃VXWORKS的主要原因是代码的LEGACY问题。目前在军事方面的OS应用,Green Hills已经取得主导地位。Green Hills RTOS系统的核心是ARINC-653。在这方面,OPEN SOURCE 的LINUX,BSD 等等向ARINC-653方面发展的可能性不大,即使IBM在 LINUX后面出钱出力。单靠自由软件的力量在MISSION CRITICAL系统方面是基本无任何可能。即使做出来,也无人敢用。
在上述各个方面,我们的贡献在哪里?我们的力量在哪里?更重要的是,
我们的FOCUS应该放在哪里?
2。中国系统软件的现状
随着CHIP DESIGN在大陆的逐步发展,中国的系统软件R&D面临着一个
进退维谷的境界。
最近2年来,大陆陆续推出了一系列的中低端的通用CPU,SoC和一些专用的DSP芯片。
通过发布的信息,可以知道一些参数,比如:
"据参与项目开发的技术人员介绍,目前的龙芯2号最高频率为300MHz,功耗1W-2W,成品率约为80%左右。通过使用相关测试对龙芯2号的性能分析表明,相同主频下龙芯2号的性能已经明显超过PII,达到PIII的水平,设计人员称龙芯2号的设计SPEC CPU2000分值可达到300分以上,设计频率在500MHz以上时性能可与1GHz以上的PIII或PIV的性能相当。"
从上述参数可以看见,通用CPU设计方面我们已经开始起步并且积累了一定的
经验。关于龙芯的更多资料可参阅www.xtrj.org/godson. 虽然在硅谷,做一个MIPS的CORE的CPU是一个相对比较简单的事情,但毕竟是我们从无到有走了一回。工程经验价值很大。
但我们在系统软件领域基本上是没有任何量化的成绩。基本是LINUX, BSD等
的一些相对简单的PORTING,基本上还没有TOUCH到BSP的地步。KERNEL就更无从谈起。我们在商业操作系统方面的VISIBILITY比较清晰。在对OPEN SOURCE操作系统方面,几个标志性的数据就是:有多少人能checkin代码进入LINUX, BSD的TREE?应该是不多。有几个有影响力的系统级的项目在sourceforge.net上?ReferenceCount是多少?Download的count是多少?
我们的系统软件公司并不少。但好像主要是做汉化和买CD的。红旗LINUX(www.redflag-linux. com)是其中突出的一个代表。如果说红旗LINUX是中国系统软件业的旗帜,那是对中国系统软件乃至整个中国软件业的不公平。
这个URL 是红旗LINUX的产品介绍:http://www.redflag-linux.com/chanpin/index.php
我们可以看出红旗LINUX的市场方向:LINUX CLUSTER服务器,LINUX桌面,和嵌入式产品。http://www.redflag-linux.com/em/product/cp.php?id=10000000
是介绍其嵌入式技术的。引人注目的是这样的词汇:"红旗嵌入式核心技术框架"。
从图中,笔者无法判断红旗LINUX的技术在那里,对OPEN SOURCE的贡献在那里。在KERNEL的工作在那里。笔者的观点是:还没有。与之相反, MVISTA INC(www.mvista.com)
在对LINUX KERNEL PREEMTPTION对方面的贡献很大(http://www.linuxdevices.com/articles/
AT4185744181.html),其许多工作已经OFFICIALLY进入LINUX 2.6中。另外,MVISTA开发的大量工具也为基於LINUX的应用程序开发提供了非常重要的支持。
RTLinux Inc.是另外一个在LINUX领域,特别是实时方面,比较引人注意的一个。他们通过一个LKM的方式将原来LINUX的中断处理程序和调度截获,并将自己的调度算法放入其中,其MODULE称为RTCORE。 通过提供一套RT_THREAD的编程方式,用户可以编写EITHER 用户态的实时程序OR核心态的实时程序。这种EXPLICITELY将UNIX DOMAIN与REAL_TIME DOMAIN在调度上分开的方法在一定的程度上解决了经典UNIX(如LINUX,BSD)等等操作系统核心操作的非确定性而带来的非实时性的重要问题,比如:要支持HARD REAL-TIME的应用。CONTROL PLANE 与DATA PLANE没有分开的中高档ROUTER/SWITCH等等。
上述是举了两个例子来说明别人的工作在什么方面。当然,MVISTA和RTLINUX在技术上多有问题需要解决。笔者会在下面的章节中讨论。
总之,通过阅读红旗LINUX其他产品的介绍,我们大概可以得出这样的结论:红旗LINUX基本上还是一个LINUX产品的集成和发布商,基本上无单独二次深层开发的计划或能力。
"一叶而知秋"。红旗LINUX应该已经是不错的了。其他的类似的公司应该也如此了。
华为, 港湾等国内的高端嵌入式系统好像没有在系统软件方面有自己的东西。从他们人员的RESUME上可以看到,许多产品是用VXWORKS等等。另外华为与CISCO的官司也是弄得路人皆知。笔者不知华为等高端产品DATA PLANE上的软件是什么体系结构。
觉得自己写的可能性不大。当然,华为的产品为我们国家挡住了欧美相应产品的冲击,这是有目共睹的。笔者同窗现在华为供职高级VP。今年有幸同窗相聚。目睹其ALREADY DONE 和豪情志向。深感不如和惭愧。
系统软件的R&D在高校笔者认为相对工业界要差一点。基本上没有可值得特别提及的地方。85计划的操作系统部分应该是投入了许多钱的。"青鸟"计划曾经投入了许多人力物力。结果我们大家都心知。非常可惜。这些年来,。北大,清华,南京大学,科学院等等有体系结构LAB和系统软件LAB的,在思考和做些什么呢?
科学院计算所"曙光"CLUSTER计算机是我们在服务器和SUPER COMPUTING方面的一个成果。可喜可贺。但从技术上来看,问题也是存在的。笔者有幸参加国家智能中心的研究生论文答辩会。从论文中,大概可得知曙光机的体系结构一二。
其基本上是一个Cluster Computing的体系结构。其操作系统用的是either AIX orLinux. 在操作系统之上,构架了一系列的中间件包括:MPI,PVM和Real-Time CORBA, which was TAO. 从学生的论文答辩来看,曙光用TAO来构架了其REALTIME EVENT SERVICE和整个机器的HA系统。MPI OR/AND PVM是其并行计算的环境。当时,智能中心的主任, 博导孙教授说,为什么把HA系统构架在CORBA这么高的概念/层出上?HA能发现一个
节点DIE的速度是多少?这些都是非常好的问题。
从笔者的角度看,曙光的存在是非常令人振奋的,是我们的骄傲。但同时,我们要看到不足。笔者知道节点通信的switch fabric是我们自己作的。这是非常让人高兴的事情。但在软件方面,我们明显感到吃力和没有足够的力量。
听说联想也CLONE了类似曙光的机器并和计算所竞争。这是个好事情。一方面我们知道曙光的技术含量不是高不可攀。另一方面,有竞争,在高性能计算方面我们才能提高。
联想应该是国内一个很大的计算机实体。但笔者从来感觉其就是买机器的。AND THAT'sIT. 其实就象美国的DELL。当然没有什么不好。但联想好像没有在R&D方面作过什么让笔者引目的东西。倒是几个什么所谓的接班人,LAY OFF员工方面的NOISE不少。
笔者目前唯一的希望是高校在GRID COMPUTING上不要错过为我们将来的高性能计算作出基础和培养人才的工作。在系统实现方面,笔者对高校是信心不大。
我们有了龙芯?如果没有系统软件?有意义吗?芯片设计与系统软件的配合是紧密相关的。缺少对系统软件的思考,龙芯或将来的其他芯往那份走?拼高端?还是SoC,去抢占嵌入式系统和MISSION CRITICAL 系统?
最近,一些鉴定会上,一些发布会上,网络上,一些德高望重的老教授和院士们都情绪激动的表示中国一定要坚持LINUX的道路,去和微软斗。
有时,是乎LINUX或OPEN SOURCE成了我们系统软件产业的救星。这是正确的吗?我们对系统软件的理解只在LINUX这个层次吗?有没有其他的问题我们忽视了? 我们对LINUX的正确态度应该是什么?在OPEN SOURCE领域,我们的立场应该是什么?
3。系统软件发展趋势分析与下一代系统软件
在桌面系统上,微软基本上控制了整个市场。LINUX/BSD/SOLARIS等的占用率基本上无可能与其对抗。放眼硅谷大小公司,不用Windows Office软件的好像不多。
Application决定一切。WIN32大量的应用使得用户不得不用Windows.
在(高端)服务器方面,LINUX/BSD有一席之地。IBM在这方面下功夫不小。当然其真正动机决非喜欢"自由"的软件。分布式数据库和HA技术都是高性能服务器的要求。
嵌入式系统中,微软目前无任何优势;LINUX等在低端PDA方面有一定的市场。
另外要注意的是:用在CISCO的HFR上的微内核QNX/NEUTRINO在Automobile市场上是Winner. 在高端嵌入式系统中,目前无任何操作系统能很好的胜任, 微内核技术有可能是最后的赢家。CISCO花费5年之久宣布了其最新的其与QNX/NEUTRINO的网络操作系统。其用心良苦可见一斑。也让我们知道,当一个真正的大系统到了一定地步后,其INFRASTRUCTURE的取向是非常重要的。而这些不是靠几个人凭空决定的,而是多少CUSTOMER ISSUES 的痛苦中产生的,是从多少个公司INTEGRAION整合中的痛苦中获得的。
在MISSION CRITICAL系统中,VXWORKS和GREEN HILLS的INTEGRITY占据一定市场。笔者认为GREEN HILLS技术上应该赢。其实,当年NASA的Mars Lander由於Priority Inversion出事后,就应该彻底的将VXWORKS扔掉。
笔者认为,随着高档NP(NETWORK PROCESSOR)或Network Service Processor在今后一两年的出现,业界对传统的NP的概念将彻底改变。原来,一谈起NP, 就是其非常LIMITED INSTRUCTION MEM; LIMITED DATA MEMORY。 VERR FEW ENGINES AND SO ON。一两年后,高档的NP将是一系列非常高性能的网络服务处理器--可以同时拥有10多个通用CPU CORE,例如,MIPS CORE, ARM CORE等等;各种多个的网络处理,安全处理ENGINE等。
这些芯片的出现,将会对系统软件,特别是嵌入式系统软件有很大的影响。
在高端嵌入式系统中,一般而言系统分为:Control Plane和Data Plane。Control Plane一般是采用经过修改的操作系统并在其上运行那些NON REALTIME或SOFT REALTIME的APPLICATIONS。 对那些需要高性能的ENGINE,都放在DATA PLANE上。
对DATA PLANE的理解,一般而言是:ASIC, FPGA, SWITCH FABRIC和一些其它辅助作用的网络处理器(NP)。在DATA PLANE上,基本上无软件成分。CONTROL PLANE与DATAPLANE通过EITHERNET, PCI或其他高速BUS来通信交换信息。
对上述有了一个理解后,我们就会理解CISCO, JUNIPER,3COM, FOUNDARY, 华为,港湾等公司的技术最重要的一面就是ASIC的R&D。
为了生存,这些公司都不得不花费大量的人力物力去不断的开发下一代ASIC。其中一个重要的工作就是不断将原来在CONTROL PLANE上的LOGIC,MOVE DOWN TO DATA PLANE IN TERMS OF PERFORMANCE。产品的速度,性能,高可靠性--这就是决定这些公司能否SURVIVE的唯一标志。
在没有高端NETWORK SERVICE PROCESSOR之前,上述的工作的代价非常大;RISK也非常HIGH。一个ASIC的TAPOUT的成败基本上影响一个整体产品的成败。RE-SPIN一个CHIP有时会将整个公司的产品安排打乱?
这一切都来自ASIC的不灵活性。
在没有高端NP之前,DATA PLANE没有选择。只能在ASIC上赌博与打拼。NP只能起一个CO-PROCESSOR的地位,比如,做一些简单的CLASSIFY。从而使得能在DATA PLANE上的工作很局限。仍然有大量的LOGIC不等不留在CONTROL PLANE上。而由於CONTROL PLANE上的通用CPU的局限性和操作系统的局限性,通常一个最头痛的事情就是:CONTROL PLANE之系统的DoS(Deny of Service).并导致整个系统崩溃。
有了高端NP后,整个局面将获得很大的改进。
----将会有更多的公司可以进入高端市场。以前ASIC R&D是一个高门槛。资金的投入与TAPOUT的风险使得大量的公司只敢在低端市场徘徊。有了高档NP,原来在ASIC中LOGIC可以在NP中以软件实现。性能不会DOWNGRADE很多。带来的灵活性巨大。
---更多的CONTROL PLANE的LOGIC将MOVE TO DATA PLANE。CONTROL PLANE 的负载将大大减低。系统的可管理性将很大提高。
---公司产品的更新将会非常灵活。 原来ASIC TAPEOUT 之后,很大FEATURE就做死了。一个FEATURE没有TESTED, 带来的后果非常被动。对CUSTOMER ISSUE的处理将很迅速。
这上述的一切是因为:传统以ASIC为主的DATA PLANE体系结构将会被以软件为主的DATA PLANE体系结构所代替!以Co-processor身份的NP(上面RUN一些简单的ENINE-SIMD和MIMD数据处理方式)将会被其主导作用的高端NP所替代!
这个深层的变化对系统软件提出了一个非常新的要求----Data Plane Operating System.
要在一个拥有10多个CPU CORE ON-CHIP的处理器上运行复杂的DATA PLANE LOGIC,没有一个DATA PLANE KERNEL/OS是不现实的。这里会涉及大量的ASIC驱动, 各个CPU间的数据同步,临界区操作,锁操作,与后面CONTROL PLANE的合作等等。
对这样一个DATA PLANE OS的要求是什么?HIGH PERFORMANCE; SUPPORT HARD REALTIME;
SIMPLE AND NICE MULTI-THREAD PROGRAMMING MODEL;
WELL DEFINED MAECHANISM
WORKING WITH CONTROL PLANE OS/Applications;
SYSTE PROFILING TOOLS, VERY
SMALL FOOT-PRINT,To name a few.
这一切的上述要求,使得在CONTROL PLANE上运行的传统操作系统(LINUX/BSD)等等都不能胜任。
以LINUX为例,
UP TO 2.6, LINUX才OFFICIALLY支持KERNEL PREEMPTIVE。这对LINUX的实时性是一个很好的改进。但在中断的LATENCY,一些KERNEL重要数据结构上,系统仍然无法支持很好的性能。其本质原因是:UNIX的设计不是为了实时系统。Monothlithic 操作系统的缺点不是一个REAL TIME PATCH所能解决的。另外,为了避免大量SYSTEM CALL的代价,大量基於LINUX/BSD的开发是在KERNEL下。从而使得KERNEL越来越大,复杂度的增加使得系统的稳定性极端降低。一个非法POINTER就使得整个嵌入式设备全部崩溃。这样的事情是高端嵌入式设备公司非常害怕和要避免的。
RTLINUX/RTCORE 和RTAI确实解决了部分REAL TIME应用的问题。但其解决问题的思路是:将UNIX 部分与REAL TIME 部分EXPLICITELY划分开。其带来的缺点明显可见:
* 大量需要SOFT REALTIME的UNIX部分的APPLICATION将非常有可能被
STARVING,例如ROUTING部分;
* 不好的编程环境:明显缺乏足够的POSIX API。PORTABILITY不好。
*系统缺乏灵活性。很难在系统SCOPE去考虑一个完整的系统。
* 对人员的技术要求增加。
这些缺点的原因其实也很简单:UNIX的NATURE。RTCORE 和RTAI本质上还是一个LKM PATCH。
那么微内核(Micro-Kernel)能否胜任Data Plane OS/Kernel的工作呢?
笔者认为: 微内核是相对较好的一个CANDIDATE FOR DATA PLANE OS。但是也存在一些缺点需要解决:
* 对多个,UP TO MORE THAN 10, CPU CORE, 的支持。
* 对MESSAGE PASSING INTERFACE 性能的优化
* 对CONTROL PLANE OS合作的考虑。大多CONTROL PLANE目前还在用MONOLITHIC OS。
* 对各种ASIC, FPGA等提供的软件调试支持。通常操作系统公司对嵌入式系统的理解不深,例如,对CACHE,MEMCOPY, DMA等等的支持方式。
笔者个人认为:DATA PLANE OS是一个比较值得注意和开拓的方向。
4。中国系统软件的机遇和契机
我们晚了,BUT NOT TOO LATE!
没有系统软件,通用CPU, SoC等等的意义就没有得到最大的扩展。
没有系统软件,我们的航天器,空间站软件系统安装VXWORKS?
但所以这些不应该只是口号,不应该是情绪。我们要有我们的战略和战术路线。
笔者认为在系统软件方面,我们已经READY。是可以有一番作为的时候了。笔者根据这样一些POINTS 和数据。
* 系统软件的科技人员BASE已经很大。在民间,由於有OPEN SOURCE 等操作系统的参照性,我们已经具备大量熟悉操作系统核心算法,核心数据结构的科技人员。这些人员大都散布在各个科技公司之中。在高校的很少。
* 随着国内出现一些具有一定实力,能与国外大公司相抗衡的公司,在系统软件方面的发展的要求将逐步体现出来。否则就会出现更多的LAW SUIT等等。其实从华为与CISCO的官司,我们也可以了解:没有系统软件的支撑的艰辛。
*大量的海外中国工程师正在用各种自觉的,不自觉的方式影响着国内的同行,相互交流着。
* 在操作系统具体开发上,其真正的难度是POSIX支持的工作量。但由於具备OPEN SOURCE, 我们只要开发核心部分即可。许多其他部分都可以REUSE。另外,对专用系统,根本不需要POSIX的支持。我们的目的不是通用系统。
鉴于以上观点, 下面是笔者的一些个人建议:
*CPU芯片设计上,高端通用CPU时机过早,要大力发展DSP, SoC和ASIP( APPLICATION SPECIFIC INSTRUCTION PROCESSOR)
嵌入式设备是中国的一个非常好的机会。一定不能错过。高端CPU设计方面,我们的实力相差实在太远。非一日之功。要再忍耐5,10年方有一搏之力。
芯片设计的目标对了,系统软件在不会迷失方向。通过芯片设计方面,我们也可以带动我们在高性能编译,TOOL-CHAIN方面的人才培养。目前,我们非常缺乏这方面的人才。
*切勿将人力和物力放在通用操作系统方面
通用操作系统对国家的战略意义不大。这方面,让LINUX与WINDOWS去相互制约。在桌面系统上,不应该有国家级的投资。让市场去说话。只要作LINUX发行商有钱赚,自然有人会在其中。要把其当作一个单纯的商业行为。不管什么旗的LINUX,都欢迎。
WINTEL灭不了我们。但要防止商人误国。特别是被商人买断了的文人。
*倾全力保护和发展ASOS(Application Specific Operating System).
大力发展针对具体行业的,有国家战略意义的,专用系统。在核心软件方面务必开发出自己的INFRASTRUCTURE。就象笔者已经阐述的,如果不需要POSIX支持,一个很好的实时操作系统并非难事。POSIX只会在通用操作系统方面有用。比如一个微内核系统可以足够支持一个大型的监控软件。通用的UNIX,如LINUX, BSD, SOLARIS都可以被模拟在其上作为一个SERVER CONTEXT。
* 开放民间研究机构参与国家项目申请
目前,项目经费严重倾向几个高校和科学院。但是从他们的的产出来看,这种方式 要调整。民间企业也应该可以竞争国家项目。要消减高校在系统软件,体系结构方面的投资,而改为投向具有真正R&D实力的企业。在这个领域,工程的难度比科研的难度大很多。系统软件都是在测试版上一点一点调出来的,绝不可能是想和写出来的。高校的知识分子在这方面误国有余;成事不足。
*留住人才
系统软件和体系结构方面务必要国家支持。完全扔到市场上,很可能会DIE。
原因是:我们已经晚了。比如,现在在SILICON VALLEY,你如果拿一份报告去找VC要钱,说要作一个RTOS,你一定会失望。VC知道除了MICROSOFT,做操作系统的公司日子都不好过。其实微软也不是靠操作系统,而是靠依赖在其操作系统定义的WIN32 API上的应用程序来MAKE MONEY。所以,我们要做系统软件,一定要有自己的人才。
中国现在明显缺乏工业界的R&D LAB。比如IBM RESEARCH LAB。 MICROSOFT LAB;
SUN LAB; HP LAB。 SRI; XEROX PART; INTEL LAB, BELL LAB等等。光靠科学院是不可能的。而且科学院离真正的技术需求还是有一定距离的。另外要留住人才,要在舆论上冷却"洋买办",鼓励本土精英。笔者非常不理解一些舆论为什么那么留意这个或那个公司中中国的总经理等等。他们其实就是商人。他们的存在和JOB就是替别人打击中国企业。他们可以用许多的竞争手段来挤垮我们。当然,笔者并不介意那些纯粹的商业行为。只要不涉及国家科技战略,那个小老板机器里装的是LINUX和WINDOWS,NO ONE CARES。
5。结束语
笔者是多么希望,有一天,中国的航天器,空间站上的软件系统是我们自己的。CPU是自己的。那会是多么自豪的一种心情。 |
|