4. 实时性验证指标体系
实时性验证不能只凭“跑起来不卡”这种主观判断,必须落到一组可测量、可比较、可判定的量化指标上。航空嵌入式软件通常运行在综合模块化航电(IMA)或分区操作系统之上,任务受时间分区、优先级抢占、中断和总线通信共同影响,因此指标体系要同时覆盖“单次事件有多快”“多次事件有多稳”“长期运行是否守约”“资源是否留有余量”以及“最坏情况下需要多少时间”这几个维度。本节围绕响应时间、抖动、截止期错过率、CPU 利用率和最坏执行时间(WCET)五个核心指标,说明它们的定义、测量方法和相互约束关系。
响应时间:从事件到结果的时间跨度
响应时间指从触发事件发生到系统产生规定响应所经历的时间。定义时必须先固定两个端点,否则不同人测出的数值不可比。在航空软件中,常见起点包括:传感器采样中断到达、ARINC 653 分区周期起始、1553B/ARINC 664 消息接收完成、离散量输入跳变;常见终点包括:控制律输出写入、执行机构指令发出、显示画面刷新、状态字回写。工程上通常区分三类响应时间:中断响应时间(中断到 ISR 第一条指令)、任务响应时间(事件到任务开始执行)、端到端响应时间(事件到最终输出)。
测量方法主要有三种。其一是打点法:在起点和终点各翻转一个空闲 GPIO 或写入一个时间戳寄存器,用示波器或逻辑分析仪测量电平间隔,精度可达微秒级,适合验证中断和短路径。其二是软件时间戳法:读取高精度计数器(如 ARM PMU 的 CYCCNT 或专用定时器),在代码中记录 t_start 与 t_end,差值除以计数频率得到时间,适合任务级和端到端测量,但需扣除打点本身开销。其三是总线监听法:在 ARINC 664 网络上抓取消息发送与接收时刻,评估通信链路贡献的时延。示例:某飞控任务在 200 MHz 计数器下测得 t_start=0x1A2B3C,t_end=0x1A2F80,差值为 0x344=836 个计数,对应 836/200 MHz≈4.18 μs,这属于教学示例数据,实际值需以目标硬件实测为准。
抖动:响应时间的离散程度
抖动描述同一响应时间在多次执行中的波动程度,反映确定性。若某任务响应时间在 4.0~4.3 μs 之间波动,抖动约 0.3 μs;若在 4.0~12 μs 之间波动,即使平均值仍为 5 μs,系统确定性也已明显恶化。抖动来源包括:中断到达相位与周期任务对齐关系、优先级抢占、分区调度窗口切换、Cache 与流水线状态差异、DMA 与总线争用。
测量抖动不能只看单次,需要采集足够样本(工程上常取 1000~10000 次),统计最小值、最大值、平均值和标准差,并绘制直方图观察分布形态。判断依据是:抖动上界必须使“最坏响应时间”仍小于截止期。若抖动呈双峰分布,往往说明存在两种不同的执行路径(如命中/未命中 Cache),需要进一步定位。
截止期错过率:长期守约的统计证据
截止期错过率指在统计窗口内,响应时间超过规定截止期的执行次数占总执行次数的比例。它把“是否满足实时性”从单次判断变成统计判断。定义时要明确截止期来源:硬实时任务(如电传飞控内环)通常要求错过率为 0;软实时任务(如座舱显示刷新)可允许极低比例。测量时需在每次任务结束时比较实际响应时间与截止期,累计超限计数,并记录超限发生时的系统状态(当前优先级、分区窗口、总线负载),便于定位。
示例:某周期任务截止期为 10 ms,连续采集 1000 个周期,其中 2 次响应时间分别为 10.4 ms 和 11.2 ms,则错过率为 2/1000=0.2%。若该任务为硬实时,0.2% 不可接受,必须分析这 2 次超限是否由分区窗口切换或高优先级任务阻塞引起。注意:错过率必须与样本量一起报告,100 次中 1 次与 10000 次中 1 次,置信度完全不同。
CPU 利用率:资源余量的直接体现
CPU 利用率指在给定时间窗口内,处理器用于执行任务的有效时间占比。对分区系统,通常按分区分别统计,再汇总到模块级。计算式为:利用率 = Σ(各任务实际执行时间 × 执行次数) / 窗口时间。测量方法包括:在任务入口和出口读取计数器累计执行时间;利用操作系统提供的任务统计接口;或用硬件性能计数器统计周期数。
工程上,IMA 模块通常要求 CPU 利用率不超过 70%~80%,以应对最坏情况叠加和未来功能升级。若某分区周期为 20 ms,其中任务 A 执行 4 ms、任务 B 执行 3 ms、任务 C 执行 2 ms,另有分区切换开销约 1 ms,则分区利用率约为 (4+3+2+1)/20=50%。这属于教学示例,实际应以目标平台测量为准。利用率过高会放大抖动和错过率,因此它常与 WCET 联合判定:即使平均利用率不高,若某任务 WCET 接近截止期,系统仍存在风险。
WCET:所有时间指标的安全上界
WCET 指任务在所有可能输入和执行路径下执行时间的上界。它不是平均值,也不是观测到的最大值,而是必须覆盖最坏路径的安全值。WCET 的获取有三条路线:静态分析通过控制流图、循环边界和处理器时序模型推导上界,安全性高但可能保守;动态测量通过大量激励覆盖路径并记录最大值,实现简单但无法保证覆盖所有最坏情况;混合方法结合两者,用测量缩小分析范围,是工程上较常用的折中。
WCET 的用途是判定:对每个任务,WCET 必须小于其截止期,且所有任务 WCET 之和(考虑调度)必须使系统可调度。若某任务 WCET 为 8 ms、截止期为 10 ms,余量仅 2 ms,则任何抖动或阻塞都可能造成超限,需要优化代码、调整优先级或缩短路径。WCET 分析还要考虑 Cache 命中/缺失、流水线停顿、DMA 争用和中断延迟,这些因素在航空嵌入式平台上往往贡献显著。
指标测量记录示例
下表给出一份可直接参考的指标记录表结构,字段按航空实时性验证的实际需要设置,示例数据为教学假设值,不代表真实平台实测结果。
| 指标 | 定义 | 测量方法 | 示例值 | 判定依据 |
|---|---|---|---|---|
| 响应时间 | t_end − t_start | GPIO 打点 / 时间戳 | 4.18 μs | ≤ 截止期 |
| 抖动 | max − min(多次) | 1000 次采样统计 | 0.3 μs | 最坏响应仍 ≤ 截止期 |
| 截止期错过率 | 超限次数 / 总次数 | 逐次比较并计数 | 0.2% | 硬实时为 0 |
| CPU 利用率 | Σ执行时间 / 窗口 | 计数器累计 / OS 统计 | 50% | ≤ 70%~80% |
| WCET | 所有路径执行时间上界 | 静态分析 / 动态测量 / 混合 | 8 ms | ≤ 截止期且可调度 |
实际验证时,建议把每个任务的上述五项指标写入同一张验证记录,并附上测量条件(CPU 主频、分区窗口、总线负载、编译优化等级)。只有条件一致,指标才可复现、可比较、可作为适航审查的证据。