1. PHAROS框架概述:实时安全关键系统的异构加速器设计革命
在自动驾驶和工业控制等安全关键领域,计算系统面临着前所未有的实时性挑战。传统CPU架构难以满足这些场景下严格的响应时间要求,而异构加速器(Heterogeneous Accelerators, HAs)通过专用硬件单元并行处理特定计算任务,成为解决这一难题的关键技术。PHAROS框架应运而生,它从根本上重新定义了实时系统中HAs的设计范式。
PHAROS的核心创新在于将现代实时调度理论与硬件加速器设计深度整合。与主流DSE(设计空间探索)方法不同,PHAROS不是简单追求吞吐量或延迟优化,而是确保系统在软实时(SRT)场景下的可调度性——即所有任务都能在有限时间内完成。这种设计理念的转变带来了三个关键技术突破:
实时感知的DSE引擎:通过将加速器利用率作为优化目标,PHAROS的DSE过程严格遵循实时理论中的可调度性约束(每个加速器利用率≤1)。这种设计使得系统在任务周期缩短时仍能保持稳定。
硬件级预emption机制:框架创新性地在数据流加速器中实现基于tile的细粒度任务抢占。如图3所示,高优先级任务到达时,当前tile执行完成后立即保存上下文,这种设计将预emption开销控制在可分析的范围内(典型值<1μs)。
动态调度架构:PHAROS支持FIFO和EDF两种调度策略,通过分布式调度器实现低开销(<25字节/任务)的任务管理。特别地,其EDF调度器在Versal VCK5000平台上实测排序延迟低于1μs。
这种架构特别适合处理像PointNet和Transformer这样的现代AI工作负载。实验数据显示,在PointNet与BERT-B组合的任务集中,PHAROS发现的可行配置数量是传统吞吐量导向DSE的3.76倍(49 vs 13),同时将最大利用率降低了6.2%。这些改进直接转化为系统安全余量的提升——在自动驾驶场景中,意味着车辆最高安全时速可相应提高。
2. 硬件架构设计与实时任务建模
2.1 异构加速器的流水线架构
PHAROS的硬件架构采用模块化设计理念,如图2所示,整个系统由多个独立的数据流加速器(Acc1...Accn)组成链式流水线。每个加速器包含三个关键子系统:
计算子系统:
- 采用输出固定的数据流(output-stationary)架构,减少DDR访问
- 可配置的PE阵列(典型配置16×16×16)
- 双缓冲机制实现计算与数据传输重叠
存储子系统:
- 片上缓存采用统一地址空间管理
- 通过专用DMA引擎实现带宽共享(AXI协议)
- 中间数据自动复用缓冲区,节省30%内存占用
控制子系统:
- 分布式调度器设计(每加速器独立)
- 配置表存储层参数(M,K,N等矩阵维度)
- 进度表实时记录任务状态
这种架构在Versal VCK5000平台上实测可实现0.23ms的PointNet推理延迟,同时满足实时性要求。关键在于其独特的任务模型:
2.2 实时任务的形式化建模
PHAROS采用严格的理论基础对任务系统建模。每个任务τ_i定义为三元组(e_i,p_i,d_i):
- e_i:最坏执行时间(WCET)
- p_i:任务周期(或最小到达间隔)
- d_i:截止时间(默认d_i=p_i)
任务被分解为M个段(τ_i^1...τ_i^M),对应M个加速器。关键约束是流水线拓扑要求:层l_i,j只能映射到加速器acc_k当且仅当其所有前驱层都已在前序加速器完成。这保证了理论[5]中的可调度性条件:
u_k = Σ(e_i^k/p_i) ≤ 1, ∀k∈[1,M]2.3 预emption机制实现细节
PHAROS的预emption实现突破了传统数据流加速器的限制(图3)。其创新点包括:
- 基于tile的抢占点:只在tile边界处检查抢占请求,平衡响应性和开销
- 上下文保存方案:
- 部分结果写回DDR指定地址
- 循环计数器存入进度表
- 输入/输出缓冲区状态保存
- 恢复机制:
- 根据进度表重载数据
- 从断点tile继续执行
实测显示,这种设计在VCK5000平台上的预emption延迟分解为:
- 计算当前tile:0.4μs
- 存储上下文:0.3μs
- 加载上下文:0.3μs 总开销控制在1μs以内,满足实时系统要求。
3. 设计空间探索方法与优化
3.1 SRT导向的DSE框架
PHAROS的DSE流程(图4)包含三个创新阶段:
资源分配阶段:
- 平台资源向量R=(R_1,R_2,R_3,R_4)对应:
- AIE数量
- 片上存储容量
- 片上带宽
- DDR带宽
- 划分约束:Σr_k^i = R_i且r_k^i>0
层映射阶段:
- 采用连续层分配策略
- 映射变量m_k^i表示acc_k上运行的层数
- 约束:Σm_k^i = L_i(总层数)
加速器参数搜索:
- 关键参数:PE阵列维度(A_k,B_k,C_k)
- Tile尺寸(X_k,Y_k,Z_k)
- 目标函数:min(max(u_k))
与传统DSE相比,PHAROS有两个本质区别:
- 优化目标从吞吐量变为最大利用率
- 约束条件增加可调度性要求(u_k≤1)
3.2 束搜索(Beam Search)启发式算法
面对组合爆炸问题,PHAROS提出创新的束搜索算法(算法1)。其核心思想是:
- 渐进式构建:每次迭代添加一个新加速器,保留剩余资源/任务作为"remain_acc"
- 剪枝策略:
- 立即丢弃u_k>1的设计(图5B)
- 保留u_k≤1的设计继续优化
- 束管理:每代保留Top B设计(B=8时效果最佳)
图9的实验数据显示,当B=8时:
- 搜索时间仅633秒(vs 暴力搜索5274秒)
- 找到的设计质量接近最优(利用率差距<2.3%)
3.3 硬件效率优化技巧
通过分析PointNet+ResMLP组合的实验数据(图7),我们总结出以下优化经验:
非对称任务处理:
- 对周期差异大的任务,分配更多资源给短周期任务
- 实测可降低max(u_k)达4.6%
Tile尺寸调优:
- 大tile减少DDR访问但增加抢占延迟
- 推荐比例:X_k=Y_k=Z_k=A_k/2
EDF调度配置:
- 任务周期比>5:1时优先采用EDF
- 否则选择FIFO避免预emption开销
4. 实时性能评估与工程实践
4.1 可调度性对比实验
图6展示了六种应用组合的测试结果,关键发现包括:
调度策略影响:
- PHAROS+EDF比传统TG+EDF多发现2.28倍可行设计
- 预emption开销降低10倍(得益于流水线约束)
典型性能提升:
- PointNet+DeiT-T:49 vs 34个可行配置
- 最大利用率降低6.2%
失败案例分析:
- 当任务周期比>7:1时,部分设计出现u_k>1
- 解决方案:增加加速器数量M或调整层映射
4.2 响应时间实测数据
图8的响应时间分析揭示:
EDF优势场景:
- PointTransformer任务(执行时间长)
- 改善比例:81%(考虑开销后)
FIFO优势场景:
- 周期相近的轻量级任务
- 节省预emption开销(约1μs/job)
工程建议:
// 动态调度策略选择伪代码 if (max_period/min_period > 5 && WCET_ratio > 3) use_edf(); else use_fifo();
4.3 实际部署经验
在VCK5000平台上的部署过程中,我们总结了以下实战经验:
内存管理陷阱:
- 错误做法:为每个层单独分配DDR空间
- 正确方案:中间数据共用缓冲区(节省30%内存)
DMA调优技巧:
- 将AXI突发长度设置为256B
- 启用交错访问模式(提升带宽利用率15%)
时序收敛问题:
- 关键路径:调度器排序逻辑
- 解决方案:采用双寄存器流水线
5. 局限性与未来方向
尽管PHAROS取得了显著成果,我们仍观察到以下挑战:
拓扑约束限制:
- 当前不支持层间循环依赖
- 未来计划:扩展支持DAG任务模型
理论边界:
- 利用率约束(u_k≤1)可能保守
- 研究方向:更紧的响应时间分析
硬件扩展性:
- 当前最大支持M=4加速器
- 下一代架构目标:M=8,支持跨加速器预emption
在实际工程应用中,我们建议:
- 对Transformer类负载,优先测试PointTransformer+DeiT组合
- 当层数>50时,适当增加束宽B到16
- 定期检查进度表溢出(建议预留10%余量)