1. AI芯片与缓存概述
1.1 AI芯片发展简史:从通用到专用
聊AI芯片,得先看看它怎么来的。我入行那会儿,大家还在用CPU跑神经网络。说实话,那体验真不怎么样——一个简单的图像分类任务,跑一整天是常事。
后来GPU进场了。NVIDIA的CUDA生态让并行计算变得顺手,但GPU毕竟是为图形渲染设计的。它擅长做矩阵乘法,可一旦遇到不规则的数据访问模式,效率就直线下降。
再后来,Google的TPU横空出世。它把脉动阵列(Systolic Array)用到了极致,专门为矩阵运算优化。我记得第一次看到TPU的架构图时,心里就一个想法:这才叫专用芯片。
现在呢?AI芯片百花齐放。华为的昇腾、寒武纪的思元、地平线的征程...每家都有自己的缓存策略和计算架构。但不管怎么变,核心问题只有一个:怎么让数据喂得够快。
1.2 存储墙:AI计算的核心瓶颈
你想想看,AI芯片的计算能力每年翻倍,但内存带宽的增长呢?大概每年只有10%。这中间的差距,就是所谓的存储墙。
为什么会这样?说白了,DRAM的访问速度跟不上计算单元的需求。我做过一个实验:在某个AI加速器上,单纯优化计算单元,性能提升了30%。但加上数据搬运的时间,实际收益不到5%。
存储墙带来的问题很直接:
- 计算单元空等:数据没到,算力再强也没用
- 功耗浪费:数据搬运消耗的能量,比计算本身高几个数量级
- 延迟增加:每次内存访问,都是几十甚至上百个时钟周期
核心观点:AI芯片的性能瓶颈,不在计算,在数据搬运。
1.3 缓存的基本概念与层次结构
缓存是什么?简单说,就是离计算单元更近、速度更快、容量更小的存储器。它的存在,就是为了缓解存储墙问题。
典型的AI芯片缓存层次是这样的:
| 层级 | 容量 | 延迟 | 位置 |
|---|---|---|---|
| 寄存器 | 几十字节 | 1个周期 | 计算单元内部 |
| L1缓存 | 几十KB | 2-4个周期 | 每个计算核内 |
| L2缓存 | 几百KB到几MB | 10-20个周期 | 多个核共享 |
| L3缓存 | 几十MB | 30-50个周期 | 芯片全局共享 |
| HBM/DRAM | 几GB到几十GB | 上百个周期 | 片外 |
嗯,这里要注意:AI芯片的缓存层次和CPU不太一样。CPU的缓存主要为了降低延迟,而AI芯片的缓存更关注带宽和吞吐量。
个人经验:我在设计某款NPU时,发现L1缓存命中率从90%提升到95%,整体性能提升了近20%。别小看这5%的差距,在AI芯片里,缓存命中率就是生命线。
1.4 缓存对AI性能的决定性影响
缓存到底有多重要?我给你算笔账。
假设一个卷积层,输入特征图是256x256x64,权重是3x3x64x128。如果不做缓存优化,每次计算都要从DRAM读数据。一次DRAM访问大概200个周期,而一次乘加运算只要1个周期。算下来,计算单元有99%的时间在等数据。
但如果把数据缓存到L1里呢?
- 权重可以复用:每个权重被多个输出通道共享
- 输入数据可以复用:每个输入像素被多个卷积核使用
- 输出数据可以暂存:减少中间结果的写回次数
我见过一个极端的例子:某团队在优化Transformer模型时,通过调整缓存策略,把推理延迟从50ms降到了12ms。怎么做到的?就是把Self-Attention中的Q、K、V矩阵分块缓存,避免了大量的重复读取。
避坑指南:我曾经犯过一个错误——盲目增大缓存容量。结果芯片面积暴涨,功耗失控,性能反而下降了。缓存不是越大越好,关键是命中率和带宽的平衡。
1.5 知识体系总览
下面这张图,是我对本章知识点的梳理。你可以把它当作后续学习的路线图。
这张图把本章的核心内容串起来了。从芯片演进到存储墙,再到缓存层次,最后落到性能优化。后面的章节,我们会逐一深入每个细节。
我的建议:学缓存机制,别死记硬背。最好的方法是动手——找个开源AI芯片的模拟器,改改缓存参数,看看性能怎么变。我当年就是这么入门的。
好了,第一章就到这里。记住一句话:AI芯片的竞争,本质上是缓存策略的竞争。后面我们会用大量实战案例,证明这个观点。