1、AI芯片缓存概述:为什么AI芯片需要缓存?缓存的基本概念与层次结构(L1/L2/L3)

1.1 为什么AI芯片离不开缓存?

做AI芯片这些年,我经常被问到这个问题:“为什么不能直接把数据从DRAM喂给计算单元?”

答案其实很简单——速度不匹配。

你想想看,AI计算的核心是矩阵乘法和卷积。这些操作需要反复读取权重和激活值。DRAM的访问延迟通常在几十纳秒级别,而AI芯片的计算单元,比如脉动阵列,一个时钟周期可能只有0.5纳秒。这中间差了将近两个数量级。

我在项目中遇到过这样一个场景:一个8x8的脉动阵列,如果每次计算都要等DRAM的数据,那利用率连10%都不到。说白了,计算单元大部分时间都在“干等”。

缓存的作用,就是把频繁使用的数据放在离计算单元更近的地方。它像是一个“数据缓冲池”,让计算单元能快速拿到想要的数据。

核心观点:AI芯片的缓存设计,本质上是用面积换速度。SRAM比DRAM贵得多,但速度快得多。在AI芯片中,缓存面积往往占到芯片总面积的30%-50%。

1.2 缓存的基本概念

缓存,说白了就是一块高速小容量存储器。它有几个关键指标:

  • 容量:通常从几十KB到几十MB不等
  • 延迟:L1缓存通常1-2个时钟周期,L2缓存5-10个时钟周期
  • 带宽:每个时钟周期能读写多少数据
  • 命中率:访问缓存时能找到数据的概率

嗯,这里要注意:命中率是缓存设计的灵魂。命中率99%和95%,性能差距可能超过2倍。为什么?因为那5%的未命中,每次都要去DRAM取数据,代价太大了。

我记得有一次做芯片验证,发现某个算子的性能始终上不去。排查了半天,原来是缓存行大小设置不合理,导致频繁的缓存未命中。调整之后,性能直接提升了40%。

1.3 缓存的层次结构:L1/L2/L3

现代AI芯片通常采用三级缓存架构。每一级都有自己的定位和特点。

缓存级别 典型容量 典型延迟 主要用途
L1 16KB - 128KB 1-2 cycles 存放当前计算单元正在使用的数据
L2 256KB - 2MB 5-10 cycles 存放当前计算核正在处理的数据块
L3 4MB - 64MB 20-40 cycles 多个计算核共享的数据,或模型参数

L1缓存:离计算单元最近,速度最快。我习惯把它设计成私有缓存,每个计算核独享一份。这样能避免多核竞争,延迟最低。

L2缓存:通常是每个计算核独享,但容量更大。它负责缓存当前计算任务需要的数据块。比如一个卷积层,L2会缓存整个输入特征图的一个子区域。

L3缓存:这是多核共享的缓存。在AI芯片中,L3缓存经常被用来存放模型权重。因为权重是只读的,多个计算核可以同时读取,不会产生一致性问题。

个人经验:在AI芯片中,L3缓存的设计要特别注意带宽分配。我曾经见过一个设计,L3缓存带宽只有L2总带宽的一半,结果多核并行时,L3成了瓶颈。建议L3带宽至少是L2总带宽的80%。

1.4 AI芯片缓存的特殊设计

和CPU缓存不同,AI芯片的缓存有几个特殊之处:

  • 数据流导向:AI计算的数据访问模式是可预测的。比如卷积,数据是按滑动窗口方式访问的。缓存可以针对这种模式做预取。
  • 多播支持:同一个数据可能被多个计算单元同时需要。缓存需要支持一次读取,多路分发。
  • 写策略优化:AI计算中,中间结果经常是写一次,读多次。缓存可以采用写通策略,减少写回DRAM的次数。

我曾经踩过一个坑:在设计L2缓存时,没有考虑数据对齐。结果某些算子的数据访问总是跨缓存行边界,导致每次访问都要读两行。性能直接腰斩。后来我强制要求所有数据按缓存行大小对齐,问题就解决了。

1.5 缓存层次结构示意图

下面这张图展示了AI芯片中典型的缓存层次结构:

AI芯片缓存层次结构 计算单元(PE阵列 / 脉动阵列) L1缓存(私有,每个PE独享) 容量:16KB-128KB | 延迟:1-2 cycles | 存放当前计算数据 L2缓存(私有,每个计算核独享) 容量:256KB-2MB | 延迟:5-10 cycles | 存放当前数据块 L3缓存(共享,多核共用) 容量:4MB-64MB | 延迟:20-40 cycles | 存放模型参数/共享数据 DRAM(片外存储器) 数据流向 (从下往上)

避坑指南:我曾经在设计L1缓存时,把容量做得太大,结果延迟增加了。记住:L1缓存不是越大越好。容量每翻一倍,延迟可能增加30%。对于AI芯片,L1缓存的关键是低延迟,而不是大容量。

1.6 小结

缓存是AI芯片的性能基石。没有缓存,再快的计算单元也跑不起来。理解L1/L2/L3的层次结构,以及它们各自的特点,是设计AI芯片的第一步。

我个人习惯在设计初期,先用性能模型估算缓存需求。比如,一个卷积层需要多少数据?这些数据在缓存中能复用几次?命中率能达到多少?这些数据比拍脑袋决定缓存大小靠谱得多。

嗯,这一章就到这里。记住:缓存设计没有银弹,每个AI芯片的缓存方案都要根据具体应用场景来定。

想要更多资料,联系可可