通过流水线优化多CPU实时应用程序
- 更新时间2025-05-20
- 阅读时长2分钟
在多CPU系统上,流水线处理可用于提高顺序执行的实时应用程序的效率。多CPU系统又称多核、多处理器或SMP系统。
使用While循环的流水线
实现流水线最简便的方法是使用While循环,通过移位寄存器传递数据。
使用定时循环的流水线
如要使用优先级或手动CPU分配等功能,需使用定时循环。LabVIEW将每个定时循环映射到一个线程,故不可在定时循环中使用移位寄存器来实施流水线。如要通过定时循环实现一个流水线,必须将每个流水线步骤放置在一个并行的定时循环中,并通过队列、局部变量、全局变量或RT FIFO在定时循环中传递数据。下列程序框图显示使用RT FIFO实现一个流水线。
选择数据传输方法
根据数据传输方式的不同,流水线数据流的工作方式也有所差异。根据应用程序是否需要流水线输入与流水线输出一一对应,来选择数据传输的方式。
- RT FIFO-为保证流水线输入与流水线输出一一对应,必须等待各个数据元素到位后才执行下一个步骤。上例创建了一个RT FIFO,使用RT FIFO读取函数的超时毫秒输入端保证子VI B在接收到子VI A的数据后才开始执行。
- 局部/全局变量-如应用程序不要求流水线输入与流水线输出一一对应,可使用局部/全局变量、超时为0的单元素RT FIFO来传输数据。
关于各种数据传输方法优劣的详细信息,见“在确定性应用中共享数据”手册中的主题。
自动加载平衡
使用定时循环实现流水线时,CPU排序器进行自动负载平衡,在多个CPU之间合理分配线程。也可使用定时循环的已分配CPU输入端,将定时循环手动分配至指定的CPU,从而提高执行控制。
提示 可使用Real-Time Trace Viewer诊断利用率低的CPU。
优化多CPU RT系统的其他资源
关于优化多CPU RT系统性能的详细信息,请访问ni.com/info并输入RTSMP,查看多核编程资源。