135、NPU的仿真测试:使用CACTI进行缓存仿真 NPU的仿真测试:使用CACTI进行缓存仿真去年做一款边缘端NPU的缓存子系统时,遇到了一个让我连续加班三天的诡异问题。芯片回来后,跑ResNet-18推理,前几层正常,到中间层突然出现周期性的性能抖动——每处理完32个输入特征图,延迟就会跳变一次,幅度高达40%。示波器抓不到,RTL仿真跑不出,最后是CACTI的预取策略仿真帮我定位到了问题根源:缓存行替换策略与数据流模式产生了共振。为什么NPU需要CACTI这种“老古董”工具很多人觉得CACTI是2000年代初的产物,现在做NPU仿真应该用更高级的工具。这个想法我踩过坑。CACTI(Cache Access and Cycle Time Model)虽然名字叫缓存访问时间模型,但它真正擅长的是在架构设计阶段快速评估存储子系统的面积、功耗和延迟。对于NPU来说,缓存不是简单的CPU缓存,而是包含权重缓存、输入特征图缓存、输出特征图缓存、部分和缓存等多个异构存储体,每个存储体的访问模式完全不同。CACTI的价值在于:它允许你在RTL还没开始写的时候,就能回答“这个缓存配置下,NPU的MAC阵列能不能被喂饱”这样的关键问题。别指望它能精确到纳秒级,但它的趋势预测和瓶颈定位能力,在架构探索阶段无可替代。CACTI的输入参数:别被默认值坑了我第一次用CACTI时,直接用了默认的SRAM模型参数,结果仿真出来的功耗比实际芯片测量值低了3倍。后来发现,NPU的缓存和CPU缓存有几个关键差异:端口数量