091、NPU的缓存一致性:与CPU共享数据

发布时间:2026/6/18 6:51:16

091、NPU的缓存一致性:与CPU共享数据 091 NPU的缓存一致性:与CPU共享数据一个让我熬夜三天的bug去年做一款AI摄像头产品,NPU跑YOLOv5做目标检测,CPU负责图像预处理和后处理。一切看起来完美——直到量产前夜,发现设备运行2小时后,检测框开始随机偏移,有时甚至检测不到目标。我盯着逻辑分析仪看了三个通宵。CPU写入预处理后的图像数据到DDR,NPU读取推理,结果偶尔读到“脏数据”。更诡异的是,同样的代码在开发板上跑24小时都没事,量产机2小时就崩。最后定位到:NPU的本地SRAM缓存和CPU的L2缓存之间,存在一致性漏洞。CPU写图像数据时,数据被缓存在L2里,NPU直接去DDR读,读到的却是旧版本。开发板因为DDR频率低、延迟大,CPU缓存刷新的时机恰好“碰巧”正确,量产机换了高频DDR,时序变了,问题就暴露了。这个教训让我意识到:NPU的缓存一致性,不是“有就行”,而是“怎么保证在任何时序下都行”。NPU缓存架构的特殊性CPU的缓存一致性有MESI协议、MOESI协议,多核之间通过snoop(嗅探)或directory(目录)来维护。但NPU不一样。NPU的本地缓存通常叫“NPU SRAM”或“神经处理单元本地存储”,它不是CPU那种通用的L1/L2/L3层级。NPU的缓存设计有几个核心矛盾:第一,NPU是流式处理。CPU的缓存假设数据有时间和空间局部性,但NPU处理的是张量数据,一次加载一整块feature map,计算完就扔掉。传统缓存替换策略在这里效率极

相关新闻