1. 多核实时系统与VxWorks定位

多核处理器进入嵌入式实时领域之后,系统设计的第一性问题不再是“CPU 够不够快”,而是“多个核之间如何分工、如何共享资源、如何保证最坏情况下的响应时间”。VxWorks 作为长期用于航空航天、工业控制、通信设备的实时操作系统,其多核版本正是围绕这一组问题演进的。理解本节内容,需要先把“多核架构”“实时性约束”“VxWorks 多核形态与适用场景”三件事放在同一张图景里看。

多核处理器架构:从对称到非对称

多核处理器在硬件上通常表现为多个对等的 CPU 核、共享或私有的多级缓存、片上互连总线以及统一或分域的内存控制器。软件视角下,常见两种使用方式:对称多处理(SMP)与非对称多处理(AMP)。SMP 中所有核运行同一个操作系统实例,共享同一份内核数据结构和内存空间,任务可被调度到任意核;AMP 中每个核运行独立的操作系统实例或裸机程序,各自拥有私有内存区域,核间通过共享内存、消息或中断通信。

两者对实时性的影响截然不同。SMP 的优点是负载均衡和资源利用率高,但内核锁、缓存一致性流量和跨核调度会引入不可忽略的抖动;AMP 的优点是核间隔离强、时间确定性好,但需要人工划分资源和设计通信协议。实际工程中还有一种折中形态:核间非对称但由同一套 VxWorks 内核管理,即 VxWorks 的 SMP 与 AMP 混合部署思路。

多核实时系统:SMP 与 AMP 的架构对比 SMP:单一内核实例 共享内核数据结构 / 全局调度器 任务可迁移 · 负载均衡 · 内核锁保护 Core 0 任务A/B Core 1 任务C/D Core 2 任务E/F 共享 L2/L3 缓存 + 一致性互连 缓存一致性流量 → 抖动来源 实时性特征:平均吞吐高 最坏响应时间受锁竞争与迁移影响 AMP:多内核实例 / 分区 VxWorks 实例 A 私有内存 · 独立调度 VxWorks 实例 B 私有内存 · 独立调度 Core 0 实时控制任务 Core 1 通信/管理任务 共享内存 / 消息队列 / 核间中断 显式通信 → 可控但需协议设计 实时性特征:核间隔离强 最坏响应时间更可预测

实时性约束:多核带来的新问题

实时系统的核心指标不是平均性能,而是可证明的最坏情况执行时间(WCET)和响应时间。单核时代,优先级抢占加中断延迟分析已经比较成熟。进入多核后,至少有三类新约束必须处理。

第一是共享资源竞争。多个核同时访问同一内存控制器、同一外设寄存器或同一段缓存行时,会产生排队延迟。这种延迟与核数、访问模式、缓存一致性协议密切相关,很难用单核模型推导。第二是核间干扰。一个核上的高优先级任务可能被另一个核上的低优先级任务通过共享总线拖慢,即所谓“跨核优先级反转”。第三是调度与迁移开销。SMP 下任务在核间迁移会带来缓存冷启动和 TLB 失效,若迁移发生在关键路径上,抖动可能达到数十微秒量级。

因此,多核实时设计通常遵循几条原则:关键任务绑定到固定核(CPU 亲和性);共享资源访问尽量短且可预测;核间通信采用无锁或短临界区设计;对最坏情况做保守估计而不是依赖平均值。这些原则在 VxWorks 中都有对应的机制支撑。

VxWorks 多核版本与适用场景

VxWorks 7 及后续版本对多核的支持主要分为三条路径。第一条是 SMP 内核,所有核运行同一镜像,任务由全局调度器分配,适合吞吐优先、任务间耦合紧密、对最坏延迟要求相对宽松的场景,例如网络数据面、图像预处理。第二条是 AMP 配置,每个核加载独立镜像或同一镜像的不同实例,核间通过共享内存和消息机制通信,适合安全关键与普通功能混合部署,例如一个核跑飞控律、另一个核跑健康管理。第三条是混合模式,部分核组成 SMP 域,其余核作为独立分区,兼顾吞吐与隔离。

选择哪种形态,取决于三个判断维度:任务间是否需要频繁共享数据、最坏响应时间允许多大、以及认证与隔离要求有多高。若任务间数据耦合强且延迟预算宽松,SMP 更简单;若存在硬实时控制回路且需要与通用计算隔离,AMP 更稳妥;若系统既有高吞吐数据流又有硬实时控制,混合模式往往是最佳折中。

在实际项目中,可以先按“控制回路周期”和“允许抖动”两个参数做初筛:周期小于 1 ms 且抖动要求小于 10 μs 的任务,优先考虑绑定到独立核;周期在 1~10 ms 且抖动容忍在百微秒级的任务,可以放在 SMP 域中统一调度。

一个可参考的部署判断示例

假设某工业控制器采用四核处理器,任务集合如下:伺服控制环周期 250 μs,允许抖动 20 μs;视觉预处理周期 5 ms,允许抖动 500 μs;人机界面与日志周期 20 ms,允许抖动 5 ms;网络协议栈持续运行,平均负载高但无硬截止。按前述原则,可做如下划分:Core 0 独立运行伺服控制,采用 AMP 分区或 CPU 亲和性绑定;Core 1 与 Core 2 组成 SMP 域运行视觉预处理与网络协议栈;Core 3 运行人机界面与日志。核间通过共享内存环形缓冲区传递视觉结果,控制环只读取最新一帧,不等待。

这个示例的关键不在于具体核数分配,而在于判断逻辑:硬实时任务独占核、软实时与吞吐任务共享核、核间通信采用非阻塞最新值语义。VxWorks 中可通过 taskCpuAffinitySet() 设置亲和性,通过 vxMp 相关 API 或共享内存库实现核间数据交换。实际配置时还需确认缓存一致性域、中断路由和内存分区是否与划分一致,否则隔离效果会被共享资源竞争削弱。

多核实时系统中最容易被低估的是共享缓存和内存带宽竞争。即使任务已经绑定到不同核,如果它们频繁访问同一段共享数据或同一内存通道,最坏响应时间仍可能显著恶化。划分核之后,必须继续检查共享资源访问路径。

总结来看,多核实时系统的设计起点是明确每个任务的实时等级与隔离需求,再选择 SMP、AMP 或混合形态。VxWorks 的价值在于它同时提供这三种形态所需的调度、亲和性、核间通信和内存管理机制,使开发者可以在同一套工具链和认证基础上完成从单核到多核的迁移。理解架构差异与实时性约束的对应关系,是后续进行任务划分、性能优化和故障排查的基础。