多核网络处理器及其开发考虑
图1:飞思卡尔即将推出的多核通信平台将支持三级缓存。
多核NP在高层应用中面临挑战
传统NP不支持标准操作系统和C/C++代码。新型多核NP已经发展成为可以支持标准编程设计模块、C/C++和Linux、VxWorks和BSD等操作系统的NP。多核架构因为可以通过不同的处理单元并行处理任务,因此可以为整个系统带来好处。根据阿姆达尔定律,多核软件性能将很大程度上依赖于顺序执行的代码数量。嵌入式系统复用了旧系统大量的遗留代码,而其中大部分的代码库是为单核处理而编写的。通常这些已写好的软件是单线程的,必须依赖代码的顺序执行。因此需要把代码分割成很多小片,同时减少顺序执行代码的数量。在利用多核NP进行设计的时候,开发人员必须时刻提醒自己是在使用多核与硬件加速。
单处理核心的负载平衡可以由OS很容易的完成。但是对于多核来说,要视乎是不对称多重处理(AMP)还是对称多重处理(SMP)操作系统。AMP OS的负载平衡是静止的并依赖于程序员来分割代码。因此当工作量不一致时问题就出现了,而静态平衡则意味着他们需要对代码进行重分割以适应不同的环境。其他的问题还包括并行处理时内核间的优化、处理器的共享数据的优化、在多核环境下寻找重部署代码库的方法以及用软件包集成通用产品和性能。
如何在多核之间分割代码变成一项极为艰难的决定,无论是使用SMP、AMP还是两者的结合形式。很多的单核应用必须将数据平面和/或控制平面功能从单核处理器分离到多核方案里。而了解分布软件的选择则变得重要。
一些工程师觉得多核NP在做交换时效果很好,但其在更高层应用的效果并不理想。对此,飞思卡尔的Jeffrey Ho认为当多核处理器超过4个内核的时候,互连性能的瓶颈必须得到优化,这样才允许架构可以扩展到8内核甚至是16内核以上;同时,Jeffrey Ho指出多核NP现在的确是出现了编程问题的瓶颈,传统NP和嵌入多核产品由于缺少编程能力以及基础工具和驱动,因此源代码库对于L1和L2功能非常高效,但对于多核NP的高层应用则无法得到优化。此外,AMCC集成通信产品业务部副总裁兼总经理Daryn Lau则认为4个内核以上的NP是无法达到平衡的,而使用双核NP则可分别对数据平面和控制平面进行高效的管理,因此双核NP有望成为未来的主流。
为多核NP选择合适的开发平台和工具
具体说到嵌入式操作系统对于多核NP软件的开发,常常是把Linux与风河的VxWorks相提并论。这两种操作系统各有其适应性,在不同的情况下都会发挥各自的优势。Linux的优势之一是这种操作系统不仅在设备软件领域得到应用,而且在许多服务器环境中得到大量应用,而网络设备常常需要与高层管理软件配合使用,因此在某些情况下,如果网络设备本身和其上层的管理软件都是由Linux编写的,在集成性方面有可能会有一些便利性。
Linux的应用范围将会很广,但设备嵌入式软件开发与PC或服务器软件开发最大的不同之处之一就是与硬件的相关性,PC或者服务器基本上是在一个标准的硬件环境中运行,而设备软件的运行环境有很大的差异,所以应该从产品研发和适用的环境去分析和判断一个产品应该采用Linux还是VxWorks来作为开发和运行平台。选择了Linux的开发人员应该非常注意:到底要用多长的时间、人力和资源来维护和集成Linux平台和工具,又可以用多长的时间、人力和资源来开发属于自己的产品?因为Linux是开发源代码的,可以自行从源代码社区获得所有的操作系统、开发工具和中间件,然后自己再把这些不同的部分集成起来,但这些工作一定会消耗大量的人力、时间和其他资源。从目前的状况来看,大多数公司为了集中开发自身产品的独特功能,目前还是选择从开发工具提供商那里直接获得集成、测试、验证好的集成化Linux开发平台套件。
风河中国区总经理韩青指出,在多核处理器开发中选择什么样的OS虽然重要,但是选择什么样的开发与调试工具更重要。多核开发人员总是都期望有一种工具,能够把已经为单核处理器开发的软件直接转换成可以在多核环境中运行的软件。虽然有些厂商也宣称,只要把用户原有的单核处理软件直接运行在自己的多核处理器上就可以大幅度提升性能,但到目前为止,甚至在今后一段时期内,这种期望都是不现实的。从目前的技术手段来看,要充分利用多核处理技术带来的好处,例如获得更高的处理性能、更有效的电源利用率,或者缩小装置的体积,最有效的方法仍然是"调试",也就是通过不断的试验来"发现"和"优化"自己的算法。因此,拥有高效率的调试工具,是目前充分利用多核处理技术的最佳捷径。
风河的Workbench是目前唯一能够同时支持VxWorks、Linux和其他专用操作系统的跨平台IDE,其可同时支持多任务、多线程、多进程、多CPU、多板调试等。而风河的JTAG解决方案使开发人员能够同时停止或者启动任何内核,在一个或者多个内核上设置断点(包括条件断点)。开发人员可以在诸如硬件Bring-Up、内核、中间件和其他应用功能调试的时候采用JTAG连接。另外,Workbench Eclipse还支持基于代理的调试方式帮助开发人员在适当的时机平滑地转移到基于代理的调试,而这些调试工作都是围绕着同一个应用进行的。
多核处理器 相关文章:
- 英特尔公布新型多核处理器开发计划(02-19)
- LSI 制定TARARI内容处理器与多核处理器相结合的蓝图(03-09)
- 目前只有6%的应用程序支持并行多核芯片(03-19)
- 内存发展滞后影响处理器性能与能耗(04-01)
- 聚焦未来热点技术和应用——Intel研究日成果图文总汇(05-18)
- 多核处理器软件的开发挑战及解决方案(04-27)