Files

145 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 实验设计与验证方法
## 1. 实验目标
验证静态联合编排是否能够在AI进入控制系统后,同时保证:
1. 控制任务时间边界;
2. AI任务质量与时效性;
3. 内存、功耗和启动预算;
4. 超时、过载和异常时的安全降级。
## 2. 平台分层
| 层级 | 平台 | 作用 |
|---|---|---|
| H0 | 4×V100服务器 | 训练、量化、转换和参考精度 |
| H1 | RK3588 16 GB | SylixOS方法原型和完整链路 |
| H2 | RK3588 8 GB限额 | 预算收缩与准入判定验证 |
| H3 | RK3568/RK3576 | 控制端迁移、低功耗和跨BSP验证 |
| H4 | 真正MCU | SRAM/Flash、快速启动和极限资源实证 |
## 3. 对照组
| 编号 | 配置 | 目的 |
|---|---|---|
| O0 | 无AI,仅控制任务 | 控制性能下界 |
| O1 | AI作为普通后台任务 | 观察未经治理的干扰 |
| O2 | 静态Arena + 固定优先级 | 验证基础静态机制 |
| O3 | O2 + 固定窗口/算子分段 | 验证时间编排 |
| O4 | O3 + 准入、超时和规则兜底 | 完整方案 |
在同硬件、同模型、同输入和同编译选项下进行机制消融。Linux/PREEMPT_RT与SylixOS比较属于系统方案对照,若推理后端不同,必须单独解释。
## 4. 负载场景
| 编号 | 场景 | 目的 |
|---|---|---|
| L0 | 仅周期控制 | 建立基线 |
| L1 | 仅AI任务 | 建立模型时间与能耗基线 |
| L2 | 控制 + AI | 核心共存场景 |
| L3 | L2 + CPU竞争 | 验证调度和抢占 |
| L4 | L2 + 内存/DMA竞争 | 验证内存与总线干扰 |
| L5 | L2 + CAN/网络/存储 | 验证中断和I/O污染 |
| L6 | L2 + 突发输入 | 验证队列、丢弃与准入 |
| L7 | L2 + 超时/崩溃/错误输出 | 验证规则兜底和恢复 |
## 5. 实验单元
### E0:设备和软件准入
- BSP启动、时钟、SMP、外设和看门狗;
- SylixOS/RealEvo版本冻结;
- 模型在CPU路径完成正确性验证;
- NPU路径单独设置准入门槛;
- 测量工具和时间戳校验。
### E1:控制任务基线
测量1 ms主任务及5/10 ms扩展任务的唤醒延迟、响应时间、抖动和GPIO端到端响应。
### E2:模型和算子基线
记录每个算子与完整模型的执行时间、峰值内存、工作区、任务质量和 `E/inference`。
### E3:内存方案对照
比较动态堆、固定Arena、生命周期复用和不同内存限额,观察峰值、碎片、失败点和长稳行为。
### E4:时间编排对照
比较普通后台运行、固定窗口和算子分段,观察控制任务尾延迟、AI完成率和切分开销。
### E5:混合干扰
依次增加CPU、内存、DMA、通信和存储干扰,不同时改变多个变量。
### E6:准入和过载
逐级增加AI到达率,记录队列峰值、拒绝率、过期输入、有效完成率和控制任务边界。
### E7:故障与规则兜底
注入模型超时、错误输出、任务崩溃和驱动不可用,测量切换时间、控制保持率和恢复时间。
### E8:启动、功耗和长稳
分别测量启动到安全控制、启动到AI就绪、平均功耗、单次推理能耗和24小时运行状态。
## 6. 指标
### 6.1 控制层
- deadline miss ratio;
- P50/P95/P99/P99.9 jitter;
- 观测最大响应时间;
- GPIO/CAN端到端响应;
- 降级期间控制任务保持率。
### 6.2 AI层
- 单次推理时延及分布;
- 完成率、拒绝率和过期率;
- 任务准确率、F1或业务指标;
- 权重、Arena、工作区和峰值内存。
### 6.3 系统层
- CPU占用和抢占次数;
- 队列长度;
- 内存安全余量;
- `E/inference`;
- 温度、频率和降频;
- 启动与恢复时间。
## 7. 统计与报告原则
1. 普通单元至少独立运行5次;
2. 控制任务报告样本数、分位数、最大值和违约分子/分母;
3. 零违约只表述为“在指定工况和样本数下未观测到违约”;
4. 不用P99.9或观测最大值冒充理论WCET;
5. 保存超时、拒绝、OOM和任务崩溃,不静默删除失败数据;
6. 预测与实测必须使用相同配置和版本;
7. 功耗报告说明测量边界、采样率和空载功率。
## 8. 数据产物
每次运行至少保存:
- `manifest.json`:硬件、SylixOS/BSP、模型、任务和编译配置;
- `control.csv`:释放、开始、完成、CPU、截止期状态;
- `inference.csv`:输入、开始、结束、结果、超时与拒绝原因;
- `memory.csv`:静态区、Arena、栈和峰值;
- `power.csv`:功率、温度和频率;
- `events.log`:看门狗、降级、重启和恢复;
- `summary.json`:指标、样本量和准入结论。
## 9. 阶段完成条件
- P0:RK3588 CPU路径完成E0~E7;
- P1:NPU或加速路径在准入后完成E2、E5、E7;
- P2:RK3568/RK3576复现实验并量化迁移成本;
- P3:真正MCU完成E0~E8,形成严格MCU论文证据。
若BSP、驱动或推理运行时不可用,停止对应路径,输出适配缺口,不把计划写成实测结果。