Fast End-to-End Performance Simulation of Accelerated Hardware-Software Stacks (SOSP 2025)

一句话总结:对加速器软硬件栈的端到端性能模拟——软件原生执行 + 加速器 di-simulation(性能 track 用 Latency Petri Net,功能 track 独立做),通过 eBPF 调度器维持虚拟时钟同步,在三个加速栈(深度学习、RPC 序列化、JPEG 解码)上比 SOTA 全栈模拟器快 6-879×,平均误差 7%,最坏 14%,让模拟从批处理(几小时)变成交互式(几秒)。

问题

随着硬件加速器(ML、视频、压缩、加密、基础设施卸载)普及,软硬件协同设计者需要全栈性能模拟,但 gem5 + RTL simulator 这类工具模拟 1 秒执行要几小时(10,000× slowdown),把开发卡回了 1960 年代「打孔卡 + 批处理」模式。根源是所有组件都在 cycle-level 精度上模拟,但 systems developer 往往不需要 CPU 微架构层面的可见性。

核心方法

Minimality principle:(1) 只模拟不可用的组件,其他原生跑;(2) 对不得不模拟的组件,只 cycle-accurate 模拟性能关键部分。基于此设计两个模块:

NEX (Native-Execution Orchestrator):让原生执行软件和模拟加速器共存并严格同步。

  • NEX scheduler 用 Linux eBPF + sched-ext 实现 epoch-based 调度(EBS),在 epoch 边界控制线程执行,每个 epoch 让应用线程执行 epoch 时长的虚拟时间
  • NEX runtime 用 ptrace + mprotect 拦截应用对 MMIO / shared memory 的访问,仅在真正发生交互时才 lazy-synchronize 加速器模拟
  • 支持 eager / lazy / hybrid 三种同步,hybrid 支持中断
  • 额外提供 CompressT / SlipStream / JumpT 三种「时间扭曲」原语做 what-if 分析

DSim (Di-Simulator):把加速器模拟分解成两个解耦 track:

  • Performance track:基于 LPN(Latency Petri Net)抽象,只建模流水、并行、背压等性能关键行为,不做 cycle-by-cycle 信号翻转
  • Functionality track:标准功能仿真,配合 zero-cost DMA 在不影响虚拟时间的前提下交换数据
  • 两 track 偶尔同步以正确打 DMA 时间戳

NEX 和 DSim 可独立使用,能与 gem5 / 专有 RTL simulator 通过标准接口搭配。

关键结果

  • 三个加速栈(DL、RPC 序列化、JPEG 解码)上 6× - 879× 加速 vs SOTA 全栈模拟
  • 模拟时间误差:平均 7%,最坏 14%(CPU 核不 underprovision 时)
  • DL 栈对 FPGA 实机:平均误差 6%,最坏 12%
  • 模拟时间从小时量级降到秒量级,开发者可交互式迭代设计
  • 开源

代价:丢失了 cycle-level 硬件执行 trace,只能给 coarse-grained 跨 CPU / 加速器的 cycle 分布,但对大多数 system-level 开发场景足够。

相关