3、AI芯片计算核心:乘加运算、脉动阵列、SIMD与SIMT架构、数据流架构
好,咱们今天聊点硬核的。AI芯片最核心的活儿是什么?说白了就一个字——算。但怎么算得快、算得省电,这里头的门道可就深了。我这些年做芯片架构,踩过不少坑,也积累了一些心得,今天跟你好好掰扯掰扯。
3.1 乘加运算:AI计算的原子操作
你想想看,神经网络里最频繁的操作是什么?卷积、全连接、矩阵乘法。这些操作拆到最底层,就是一个接一个的“乘加”。
乘加运算,英文叫Multiply-Accumulate,简称MAC。它干的事很简单:d = a × b + c。一次乘法,一次加法,完事。
但别小看这个操作。一个卷积层可能要执行几百万次MAC。所以芯片里专门设计了MAC单元,一个时钟周期就能完成一次乘加。我早期做的一个项目,就是因为MAC单元没设计好,导致整个芯片的算力上不去,后来重新流片才搞定。嗯,那教训挺深刻的。
关键指标:芯片的算力通常用“每秒能执行多少次MAC操作”来衡量,单位是TOPS(Tera Operations Per Second)。1 TOPS = 每秒一万亿次操作。
3.2 脉动阵列:让数据流动起来
单个MAC单元再快,也就那样。真正的挑战是怎么把成千上万个MAC单元组织起来,让它们高效协同工作。
脉动阵列就是Google TPU里用的那套方案。它的思路很巧妙:把MAC单元排成一个二维网格,数据像血液一样在网格里“脉动”流动。每个MAC单元只跟邻居通信,不需要全局连线。
这样做的好处是什么?
- 高吞吐:数据流起来,每个时钟周期每个MAC单元都在干活
- 低功耗:局部连线短,不用来回访问全局缓存
- 可扩展:想加算力?多铺几个MAC单元就行
我在项目中遇到过一个问题:脉动阵列的数据复用没做好,导致很多MAC单元在空转。后来我调整了数据流的方向,把权重固定住,让输入特征图流动起来,效率一下就上来了。
避坑指南:我曾经以为脉动阵列越大越好,结果发现阵列太大时,数据加载的延迟会吃掉所有性能增益。建议根据片内SRAM的大小和带宽,合理选择阵列尺寸。
3.3 SIMD与SIMT:两种并行哲学
说到并行计算,绕不开两个概念:SIMD和SIMT。
SIMD(单指令多数据)是CPU和GPU都用的老技术。一条指令,同时操作多个数据。比如一条加法指令,可以同时加8对32位整数。Intel的AVX指令集就是典型例子。
SIMT(单指令多线程)是NVIDIA GPU的看家本领。它把每个线程当成独立的执行单元,但同一组线程执行相同的指令。这样既保留了SIMD的高效,又给了程序员更大的灵活性。
| 特性 | SIMD | SIMT |
|---|---|---|
| 执行模型 | 向量化操作 | 线程级并行 |
| 编程难度 | 需要手动向量化 | 自动线程管理 |
| 分支处理 | 效率低 | 通过掩码处理 |
| 典型代表 | CPU SIMD指令集 | NVIDIA CUDA核心 |
我个人习惯在AI推理芯片里用SIMD,因为推理的计算模式很规整,分支少,SIMD的硬件开销更小。但训练场景下,SIMT的灵活性更有优势。
3.4 数据流架构:打破冯·诺依曼瓶颈
传统的冯·诺依曼架构有个大问题:存储墙。CPU算得再快,数据从内存搬来搬去的时间也把性能拖垮了。
数据流架构的思路是:让计算跟着数据走,而不是数据跟着计算走。每个计算单元都自带小存储,数据准备好后直接触发计算,不需要中央控制器的调度。
我参与过一个数据流芯片的设计,它的核心思想是空间计算:把整个神经网络映射到芯片的物理空间上,每一层对应一组计算单元。数据像流水一样从第一层流到最后一层,中间不需要回写DRAM。
注意:数据流架构虽然高效,但灵活性差。换一个网络结构,可能就要重新映射。所以现在很多芯片采用“混合架构”——关键路径用数据流,其他部分用传统控制流。
3.5 核心逻辑:一张图看懂
下面这张SVG图,把本章的核心逻辑串起来了。从最底层的MAC单元,到脉动阵列的组织方式,再到SIMD/SIMT的并行策略,最后到数据流架构的全局视角。你一看就明白。
这张图从下往上看,就是AI芯片计算核心的完整层次。最底层是MAC单元,往上是用脉动阵列组织起来的计算网格,再往上是SIMD/SIMT提供的并行执行策略,最顶层是数据流架构带来的全局优化。
嗯,说到这,我想起一个项目。当时我们团队在设计一款边缘AI芯片,一开始只关注MAC单元的性能,结果整芯片的利用率不到30%。后来我们重新设计了数据流,把脉动阵列和片内缓存做了深度耦合,利用率直接飙到85%以上。所以说,架构设计不能只看局部,得从全局视角去权衡。
我的建议:如果你是刚入门,先吃透MAC单元和脉动阵列。这两个是基础中的基础。SIMD/SIMT和数据流架构,可以在实际项目中慢慢体会。别贪多,嚼不烂。
好了,这一章的内容就到这。记住,AI芯片的核心就是“算”,但怎么算得又快又省,需要你在MAC、脉动阵列、并行策略和数据流之间找到最佳平衡点。下次见。