对中国系统软件的思考与建议(三)

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




4. 系统软件发展趋势分析与下一代系统软件

在桌面系统上,微软基本上控制了整个市场。LINUX/BSD/SOLARIS等的占用率基本上无可能与其对抗。放眼硅谷大小公司,不用Windows Office软件的好像不多。应用程序决定一切。WIN32大量的应用使得用户不得不用Windows.

在(高端)服务器方面,LINUX/BSD有一席之地。IBM在这方面下功夫不小。当然其真正动机绝非喜欢“自由”的软件。分布式数据库和HA技术都是高性能服务器的要求。

嵌入式系统中,微软目前无任何优势;LINUX等在低端PDA方面有一定的市场。另外要注意的是:用在思科的HFR上的微内核QNX/NEUTRINO在智能化汽车市场上是赢家. 在高端嵌入式系统中,目前无任何操作系统能很好的胜任, 微内核技术有可能是最后的赢家。思科花费5年之久宣布了其最新的其与QNX/NEUTRINO的网络操作系统。其用心良苦可见一斑。也让我们知道,当一个真正的大系统到了一定地步后,其内核的基础架构的取向是非常重要的。而这些不是靠几个人凭空决定的,而是多少用户反馈的经验中产生的,是从多少个公司集成整合中的痛苦中获得的判断力。

在MISSION CRITICAL系统中,VXWORKS和GREEN HILLS的INTEGRITY占据一定市场。笔者认为GREEN HILLS技术上应该赢。其实,当年NASA的Mars Lander由於优先级翻转(Priority Inversion)出事后,就应该计划将VXWORKS逐步淘汰。

笔者认为,随着高档NP网络处理器(NETWORK PROCESSOR)或网络服务处理器(Network Service Processor)在今后一两年的出现,业界对传统的NP的概念将彻底改变。原来,一谈起NP, 就是其非常局限的指令内存和非常少的数据内存。很少的和功能非常局限的功能引擎。一两年后,高档的NP将是一系列非常高性能的网络服务处理器–可以同时拥有10多个通用CPU CORE,例如,MIPS CORE, ARM CORE等等;各种多个的网络处理,安全处理引擎等。

【注:笔者在2004年的上述预测,在2006,2007年左右基本上全部实现。目前高端网络处理器的浪潮非常凶猛,冲击着下一代高端网络设备的体现结构的设计。】

这些芯片的出现,将会对系统软件,特别是嵌入式系统软件有很大的影响。

在高端嵌入式系统中,一般而言系统分为:控制平面和数据平面。控制平面一般是采用经过修改的操作系统并在其上运行那些实时性要求不高的应用程序或协议。 对那些需要高性能的数据处理功能模块,都放在数据平面上。

对数据平面的理解,传统的理解是:ASIC, FPGA, SWITCH FABRIC和一些其它辅助作用的网络处理器(NP)。在数据平面上,基本上无软件成分。控制平面和数据平面通过内部以太接口, PCI或其他高速BUS来通信交换信息。

对上述有了一个理解后,我们就会理解思科, JUNIPER,3COM, FOUNDARY, 华为,中兴等公司的技术最重要的一面就是ASIC的研发。

为了赢得市场份额,上述公司都不得不花费大量的人力物力去不断的开发下一代ASIC。其中
一个重要的工作就是不断将原来在控制平面上的逻辑、算法或协议,为了性能或其他的原因,做到数据平面上。

产品的速度,性能,高可靠性–这就是决定这些公司能否生存和持续性发展的唯一标志。

在没有高端网络服务处理器之前,上述的工作的投入非常大;工程风险也非常高。一个ASIC的成败基本上影响一个整体产品的成败。一个芯片的一个设计缺陷经常会导致一个公司的产品推迟发布,或一个产品的失败。

从技术的角度考察,笔者认为,这一切都来自ASIC的不灵活性。

在没有高端NP之前,数据平面没有选择。只能在ASIC上赌博与打拼。NP只能起一个协处理器地位,比如,做一些简单的分类(Classify)。从而使得在数据平面上的工作很局限。仍然有大量的逻辑,算法或协议不等不放在控制平面上运行。而由於控制平面的通用CPU的局限性和操作系统的局限性,除了由于与大量的应用程序共同分享资源而带来的稳定性问题之外,通常一个很难处理的技术问题就是:控制平面系统的DoS(Deny of Service)而使得整个控制平面停止响应,最后导致整个系统崩溃。

有了高端网络服务处理器之后,笔者认为,整个局面将获得很大的改进。

— 将会有更多的公司可以进入高端市场。以前ASIC研发是一个高门槛。资金的投入与芯片设计成功的风险使得大量的公司只敢在低端市场徘徊。有了高档NP,原来在ASIC中逻辑可以在NP中以软件实现。性能却不会下降很多。带来的灵活性巨大。

— 更多的控制平面的逻辑将被较容易的挪到数据平面上。控制平面 的负载将大大减低。整个大系统的可管理性将很大提高。

— 公司产品的更新将会非常灵活。 原来ASIC 芯片回来之后,很多的功能就做死了。一但一个预定的功能有问题,带来的后果是整个产品非常被动。而在有高端网络处理器之后,产品线对客户问题的处理将会比原来反应更迅速。

这上述的一切是因为:传统以ASIC为主的数据平面体系结构将会被以软件为主的数据平面的体系结构所代替!以协处理器身份为主的传统网络处理器NP(上面运行而且只能运行一些简单的ENINE-SIMD和MIMD数据处理方式)将会被高端网络服务处理器所替代!

这个深层的变化对系统软件提出了一个非常新的要求—-数据平面操作系统。

要在一个拥有10多个CPU CORE ON-CHIP的处理器上运行复杂的数据平面逻辑,没有一个数据平面软件系统内核(Kernel/OS)是不现实的。这里会涉及大量的ASIC驱动, 各个CPU间的数据同步,临界区操作,锁操作,与后台的控制平面的合作等等。

对这样一个数据平面操作系统的要求是什么?

高性能(HIGH PERFORMANCE); 高实时性( REAL-TIME);简单和友善的多线程编程环境(SIMPLE AND NICE MULTI-THREAD PROGRAMMING MODEL); 良好的与控制平面的通信机制。运行时系统检测和量化分析工具(SYSTE PROFILING TOOLS); 小而紧凑的代码( FOOT-PRINT)等等。

这一切的上述要求,使得在控制平面上运行的传统操作系统(LINUX/BSD)等等都不能很好的胜任。

以LINUX为例,直到2.6, LINUX才正式OFFICIALLY支持内核抢先机制(KERNEL PREEMPTIVE)。这对LINUX的实时性是一个很好的改进。但在中断的延迟,一些内核重要数据结构上,系统仍然无法支持很好的性能。其本质原因是:UNIX的设计不是为了实时系统。Monothlithic 操作系统的缺点不是一个实时系统的补丁(PATCH)所能完全解决的。另外,为了避免大量系统调用(SYSTEM CALL)的代价,大量基於LINUX/BSD的开发是在内核代码里面。从而使得内核越来越大,复杂度的增加使得系统的稳定性极端降低。一个非法指针就可以非常容易的使得整个嵌入式设备全部崩溃。这样的事情是高端嵌入式设备公司非常害怕和要尽量避免的。

RTLINUX/RTCORE 和RTAI确实解决了部分实时应用的问题。但其解决问题的思路是:将UNIX 部分与REAL-TIME 部分显示的划分开。其带来的缺点明显可见:

* 大量需要软实时(SOFT REAL-TIME)的UNIX部分的应用程序非常有可能被饿死(STARVING),例如路由协议部分;
* 不好的编程环境:缺乏完整的POSIX API。可移植性很不好。
*系统缺乏灵活性。很难在一个大系统的范畴内去考虑一个产品的设计。
* 对人员的技术要求和额外培训的要求大大增加。
这些缺点的原因其实也很简单:UNIX非实时设计的本质。RTCORE 和RTAI本质上还是一个补充的技术补丁,解决了部分问题,但带来更多的问题。

那么微内核(Micro-Kernel)能否胜任数据平面的 OS/Kernel的工作呢?

笔者认为: 微内核是相对较好的一个数据平面操作系统的选择。但是也存在一些缺点需要解决:

* 对多个,8,10,16,32或更多CPU CORE的支持。
* 对高端网络服务处理器中的Interconnect和硬件通信机制的相应操作系统方面的优化。
* 对消息传递机制性能的优化。
* 对控制平面操作系统合作的考虑。大多数控制平面一般都使用MONOLITHIC OS,如Linux, BSD等。
* 对各种ASIC, FPGA等提供的软件调试支持。通常操作系统公司对嵌入式系统的理解不深,例如,对CACHE,MEMCOPY, DMA等等的支持方式。

有上述分析可见,传统的各种操作系统都不能很好的胜任驱动高端网络服务处理器而担当数据平面操作系统的重任。

笔者认为:这就是中国系统软件业的机会所在。

(2个打分, 平均:5.00 / 5)

雁过留声

“对中国系统软件的思考与建议(三)”有2个回复

  1. sshen 于 2009-06-19 1:07 上午

    还有mobile device领域,那也是方兴未艾。

  2. 李克 于 2009-08-25 1:49 下午

    从经验和目前产品看,灵活性和速度仍然有很大的矛盾,NSP比较清楚,用通用的多核CPU,比如RMI等,但是,目前这类CPU的性能瓶颈还没有看到彻底解决的曙光。用于高性能转发的NP芯片,一般都是简化的RISC CPU并行处理,可以叫Micro Engine等一些名词,此类NP最成功的是A的TIMETRA。C的SPP也是类似的结构,但从其推出的商用高端路由器产品看,其SPP目前相比A是失败的,只是因为C是霸主,所以客户不得不给他面子。所以通用多核CPU做NSP是OK的,做高性能多业务转发(10G以上),目前看是不行的,什么时候能行,不知道,也许永远不行