采样模拟与快速预热:SimPoint 与 SMARTS
更新时间:2026-10-01。配合 统计置信度,这篇解决“整程序详仿跑不起”的工程问题。
本文要回答的问题
- 只跑一小段,凭什么代表整个程序?
- SimPoint 和随机周期采样各怎么工作?
- 采样片段的 cache 是冷的,偏差怎么消除?
一、采样的核心思想
长程序很多阶段行为重复,详仿每一条指令性价比低。采样模拟只详细仿真若干代表性片段,按权重外推整体 CPI/能耗,速度可提升几个数量级,关键是“代表性”和“误差可控”。
二、SimPoint 与 SMARTS
- SimPoint:把执行切成区间,用基本块执行频度(BBV)刻画行为,聚类后每类选一个代表点,用各类占比加权得到整体指标。
- SMARTS:周期均匀采样大量短窗口,利用统计抽样理论给出均值与置信区间,通过 functional warm-up 维持状态。
三、预热与偏差

采样窗口若从冷 cache 开始,前若干拍全是 compulsory miss,严重高估 CPI。常用 checkpoint + 功能预热把结构状态建立到接近真实,再开始测量;边界处的长延迟操作(在途 miss)也要处理。
四、校准
用若干可整段详仿的小程序对比“采样外推值 vs 全详仿值”,验证误差与置信区间是否吻合,再推广到大负载。
五、常见坑
- 采样点不覆盖相位变化(如启动/稳态/突发)。
- 不做预热,冷启动偏差。
- 权重/聚类选错,代表性失真。
- 只给单点估计不给置信区间。
- 对强相位程序用均匀短采样。
小结
采样靠代表性片段加权外推,SimPoint 聚类相位、SMARTS 统计抽样,预热与置信区间是可靠性关键。下一篇 RISC-V 向量与自定义扩展建模。
总结
整程序详仿跑不起时,采样模拟靠代表性片段加权外推整体 CPI:SimPoint 用基本块向量聚类选相位代表点,SMARTS 用周期短窗加统计置信区间;冷 cache 窗口会严重高估 CPI,必须用 checkpoint+功能预热建立结构状态,并与全详仿小负载校准误差后才能推广到大程序。