ChampSim

📅 2026/7/27 14:26:34 👁️ 阅读次数 📝 编程学习
ChampSim

ChampSim(Championship Simulator)是由美国德州农工大学(Texas A&M University)联合 Intel 维护的开源、基于指令 Trace 的片上微架构周期级仿真器,定位是"轻量、模块化、低上手成本",广泛用于缓存替换、预取、分支预测、内存层级研究,也是 DPC(Data Prefetching Championship)、CRC(Cache Replacement Championship)、CVP 等微架构竞赛的官方平台。

一、核心建模思路:Trace-Driven 而非 Execution-Driven

与 gem5 直接跑二进制不同,ChampSim 把"程序执行"和"架构仿真"拆开:

  1. 先用 Intel PIN / DynamoRIO 插桩真实程序,生成.champsimtrace.xz压缩 trace,里面只记录指令指针、分支方向/目标、访存地址、寄存器依赖等行为元数据,不含完整 opcode,无法反编译原程序;

  2. 仿真时按 cycle 回放 trace,送入 OoO 流水线 + 内存层级模型。

代价与收益:不模拟 OS、不跑错误路径(wrong-path)、不执行真实指令语义 → 速度比 gem5 快 1~2 个数量级,但牺牲了全系统精确性。

二、整体架构与五大子系统

主循环在src/main.cc,按 core 逐周期推进,协调以下模块:

  • OoO CPU 流水线(O3_CPU:取指→译码→分发→调度→执行→提交;默认 ROB 352 项、Load Queue 128、Store Queue 72、IFETCH/DECODE Buffer 各 6;用fastset做 RAW 依赖跟踪。

  • 分支预测子系统:方向预测(bimodal / gshare / TAGE-SC-L / perceptron)+ 目标预测(BTB)可插拔;统计 MPKI、误预测时 ROB 占用等。还衍生出 H2P(Hard-to-Predict)分析扩展,用于挑难预测分支、接 ML 预测器。

  • 内存层级:每核私有 L1I / L1D / L2,共享 LLC;各级带独立 TLB(ITLB/DTLB/STLB,复用 cache 模型);DRAM 用时序参数建模;支持异构核、任意层级互联。

  • 可插拔算法模块(4 类 hook)

    • Branch Predictor(branch/

    • Prefetcher(L1D/L2/LLC,prefetcher/,含 ip_stride、spp_dev、va_ampm_lite 等)

    • Replacement Policy(replacement/,含 LRU、DRRIP、SRRIP、SHIP)

    • BTB

      用户只需实现约定好的initialize / predict / update / evict等钩子函数,不改核心代码。

  • 配置与构建系统:JSON(champsim_config.json)声明核数、各级 cache 大小/相联度/延迟、选哪个模块;./config.sh && make生成二进制。命令行控制--warmup_instructions(预热填态)和--simulation_instructions(正式统计)。

三、典型输出指标

按层级打印:IPC、各级 Cache MPKI / Hit Rate、TLB 命中率、Branch MPKI、Prefetch 准确率(useful / issued)、DRAM 带宽周期等;多核还会给每核拆分。

四、与 gem5 的边界(选型参考)

维度

ChampSim

gem5

驱动方式

Trace-driven(回放)

Execution-driven(可全系统跑 Linux)

精度

周期级、但无 OS/无 wrong-path

周期级、含 OS 交互、错误路径

速度

快,单机可跑数十亿指令

慢,常需集群抽样

上手成本

懂 C++ 基础即可改模块,1 个月能出成果

概念栈深,启动成本高

适合

缓存/预取/分支/内存层级算法迭代、教学、竞赛

ISA 研究、OS 协同、NoC、全系统功耗

简单说:要快速验证"某个预取/替换/分支想法"选 ChampSim;要证明"整个系统包括 OS 怎么跑"选 gem5。两者也常搭配——gem5 采 trace,ChampSim 做大规模扫描。

五、一句话定位

ChampSim =用预录 trace 喂一个模块化 OoO 核 + 可换件缓存/分支部件的周期仿真器,目标是让研究者把精力放在"微架构策略"本身,而不是先花半年搭仿真平台。