多核处理器给传统的嵌入式软件设计领域添加了新的性能尺度。为了利用多核处理器的优势,开发商必须掌握协同和并行代码编写的详情。
在自顶向下的顺序编程方法中,当映射到并行硬件时,控制模型存在固有的局限性。相比之下,利用数据流模型,在方框图上的节点被连接到另一个节点,以表达逻辑执行流,并且它们能被方便地用于表达并行处理。当一个方框图节点接收所有需要的输入时,它产生输出数据并把那个输出传递到数据流路径上的下一个节点。数据通过节点的运动确定在方框图上的各个功能的执行顺序。
数据流语言的固有并行特性非常适合于对协同系统进行编程。
在多核设计中,选择正确的方法来表达并行处理是至关重要的;然而,仅仅那样并不足以确保一个项目的成功。在开发为多核处理器准备的软件的过程中,检查完整的软件堆栈有助于评估关键的问题。
实时软件堆栈由开发工具、库、设备驱动器和实时操作系统等组成。大多数公司在实时软件堆栈上构建的上一代应用都是针对单处理器设计的。把这种软件移植到多核处理器的公司体验了不同级别的可扩展性。
除错工具是开发商用来深入分析代码在多核硬件上运行过程的关键软件堆栈要素之一。在调试多核系统的过程中,可视化发挥特别关键的作用,因为它有助于开发商查看多个在同一时间的运行情况。
在软件堆栈的底层—上面的每一层都依赖它—是RTOS。多核系统以对称多处理(SMP)或不对称多处理(ASMP)为基础实现了一个架构方案。RTOS至少要支持一种处理。
在SMP系统中,处理器安装在同一电路板或芯片上,并共享全局资源,如存储器、总线和外设。通用操作系统—如Windows、Mac和Linux OS—多年来就支持SMP。然而,一个RTOS的确定性行为必须被保护,以满足硬实时时序约束的要求,与此同时,在不同的处理器之间分配任务,因此,对于要实现的RTOS供应商来说,SMP是一项附加的挑战。传统上,非常少的商用RTOS支持这种功能,尽管在过去的几年中,确实一窝蜂地添加这种支持。QNX的Neutrino和NI的LabVIEW Real-Time OS就是支持SMP的两个例子。SMP的优势在于操作系统在可用的处理器上处理自动加载的平衡任务。
在不对称多处理系统中,各个处理器彼此之间不共享资源。每一个处理器都需要一个操作系统(与此相反,SMP仅仅需要一个操作系统),因此,就招致了更多的开发开销。处理器必须被独立的编程,并且要实现在各个处理器之间传输数据的通信方案。
对于多核开发来说,选择具有SMP支持的操作系统是推荐的实现方案,因为它能够发挥自动加载平衡的优势。
Jeff Meisel
jeff.meisel@ni.com
美国国家仪器公司LabVIEW实时操作系统软件产品经理
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。