085、NPU的存算一体(Compute-in-Memory):近存储计算

张开发
2026/6/14 12:49:21 15 分钟阅读

分享文章

085、NPU的存算一体(Compute-in-Memory):近存储计算
085、NPU的存算一体(Compute-in-Memory):近存储计算一、一次让我通宵的带宽瓶颈排查去年做一款边缘AI芯片的驱动调试,模型是MobileNetV2,量化后大概4.2MB参数。跑推理时发现一个诡异现象:理论算力是2TOPS,实际帧率只有理论值的1/8。用示波器抓DDR总线,发现每秒钟有超过3GB的数据在NPU和DRAM之间来回搬运,而真正做乘加运算的时间只占了不到15%。这就是经典的“存储墙”问题——冯·诺依曼架构下,计算单元和存储单元物理分离,数据搬运的功耗和延迟远大于计算本身。当时我盯着逻辑分析仪上密密麻麻的读写信号,突然理解了为什么业界都在喊“存算一体”——不是炫技,是被逼的。二、存算一体的核心矛盾:数据搬运比计算更贵先算一笔账。一个32位浮点乘法在7nm工艺下能耗约3.7pJ,但从DRAM读一个32位数据需要640pJ——差了170倍。就算用SRAM,也要50pJ左右。这意味着你花在“把数据从内存搬到计算单元”上的能量,是实际计算能量的10到50倍。NPU的卷积运算本质是“权重×输入+累加”,权重是固定的,输入是流式的。传统架构下,权重从DRAM读到SRAM,再从SRAM读到MAC阵列,每层都要重复这个过程。如果网络有50层,权重就要被搬运50次。这就像你每次做菜都要去超市买调料——明明调料可以放在厨房里。三、近存储计算:把计算搬到内存旁边存算一体不是把内存和计算单元焊在一块PCB上那么简单。真正的存算一体分两个层次:

更多文章