第2章:AI芯片硬件架构基础
各位同学,今天我们来聊聊AI芯片的“骨架”——硬件架构。说实话,很多做算子映射的同学,最后卡住的地方往往不是算法本身,而是对硬件不够了解。你想想看,连芯片怎么干活都不知道,怎么把算子映射好?
2.1 计算单元:MAC与PE
先说说最核心的东西——计算单元。AI芯片里干活的“工人”,就是MAC(乘累加单元)和PE(处理单元)。
2.1.1 MAC单元
MAC,全称Multiply-Accumulate,说白了就是做“乘加”操作的。一个MAC单元一次能完成:a * b + c 这样的操作。为什么AI芯片这么依赖它?因为神经网络的核心计算——卷积、全连接、矩阵乘法,本质上就是大量的乘累加。
我当年做第一块AI芯片时,犯过一个低级错误:以为MAC越多越好。结果堆了太多MAC,功耗直接爆炸,芯片烫得能煎鸡蛋。后来才明白,MAC的数量要和存储带宽匹配,否则就是“饿死”的工人。
关键指标:
- MAC数量:决定理论算力上限
- MAC利用率:实际跑起来能用到多少
- MAC位宽:常见的有INT8、FP16、BF16等
2.1.2 PE阵列
PE(Processing Element)可以理解为一个“小工作站”,里面通常包含多个MAC单元,再加上一些本地寄存器、控制逻辑。多个PE排成阵列,就构成了芯片的算力核心。
常见的PE阵列结构有两种:
- 脉动阵列(Systolic Array):数据像流水一样在PE间传递,每个PE只做简单计算。Google的TPU就是典型代表。
- 网格阵列(Mesh):PE之间可以灵活通信,适合不规则计算。NVIDIA的GPU更偏向这种。
我个人习惯把PE阵列想象成一个“工厂车间”。每个PE是一个工位,数据是流水线上的零件。如果流水线设计得好,效率就高;如果设计得不好,工位之间互相等,那就全堵住了。
避坑指南:我曾经在映射一个3x3卷积时,没注意PE阵列的边界处理,结果边缘像素的计算结果全错了。后来加了一圈“虚拟PE”来处理边界,才解决问题。记住:PE阵列不是无限大的,边界情况一定要考虑。
2.2 存储层次:L1/L2/Global Memory
算力再强,数据喂不进去也是白搭。AI芯片的存储层次,说白了就是解决“数据搬运”的问题。
2.2.1 存储金字塔
典型的AI芯片存储层次是这样的:
| 层级 | 容量 | 带宽 | 延迟 | 谁在用 |
|---|---|---|---|---|
| 寄存器(Register) | 几十字节 | 极高 | 1个周期 | 单个PE |
| L1缓存 | 几十KB | 高 | 几个周期 | PE组 |
| L2缓存 | 几MB | 中等 | 几十周期 | 芯片全局 |
| 全局内存(Global Memory) | 几GB | 低 | 几百周期 | 所有PE |
你想想看,从全局内存读一次数据要几百个周期,而从寄存器读只要1个周期。这差距有多大?所以算子映射的核心任务之一,就是尽量让数据待在“离PE近”的地方。
2.2.2 数据复用策略
怎么让数据少搬家?我总结了三种常见策略:
- 输入复用:同一个输入数据,被多个PE共享。比如卷积核的权重,可以在多个位置重复使用。
- 输出复用:多个PE的计算结果,累加到同一个输出地址。比如做矩阵乘法时,多个部分和要累加。
- 权重复用:权重数据加载一次,在多个输入上反复使用。这是最常用的策略,因为权重通常比输入小。
我记得有一次做ResNet-50的映射,发现L1缓存总是被频繁刷写。后来一查,原来是权重复用没做好,每次计算都重新加载权重。优化之后,性能直接提升了30%。
注意:存储层次不是越深越好。L1缓存做太大,访问延迟会上升;做太小,又装不下数据。这个平衡点,需要根据具体算子来调。我见过有人把L1做到512KB,结果延迟翻倍,得不偿失。
2.3 数据通路
数据通路,就是数据在芯片里“怎么走”的路径。它连接了计算单元和存储单元,决定了数据流动的效率。
2.3.1 数据流模式
常见的AI芯片数据流模式有三种:
- 权重固定(Weight Stationary):权重数据留在PE里不动,输入数据流过来。适合卷积层,因为权重复用度高。
- 输入固定(Input Stationary):输入数据留在PE里,权重流过来。适合全连接层,因为输入复用度高。
- 输出固定(Output Stationary):部分和留在PE里,不断累加。适合矩阵乘法,减少写回次数。
我个人习惯在映射算子前,先画一张“数据流图”,标清楚数据从哪里来、到哪里去、中间经过哪些PE。这张图画清楚了,映射就成功了一半。
2.3.2 总线与互联
数据通路的核心是总线(Bus)和互联网络(Interconnect)。
- 总线:简单,但容易成为瓶颈。所有PE抢一条路,谁先谁后得排队。
- 交叉开关(Crossbar):任意PE可以直连任意存储,但硬件开销大。
- 环形网络(Ring):数据在环上转圈,每个PE只和邻居通信。NVIDIA的GPU就用这种。
你想想看,如果数据通路设计不好,就算PE算力再强,数据也送不过去。这就像高速公路修得再宽,收费站堵着,车还是过不去。
实战经验:我曾经在映射一个深度可分离卷积时,发现数据通路严重拥塞。后来把数据流模式从“权重固定”改成“输入固定”,让权重数据在PE间流动,输入数据留在原地。结果带宽利用率从40%提升到了85%。
2.4 知识体系总览
下面这张图,是我自己总结的AI芯片硬件架构核心逻辑。你可以把它当作一个“地图”,后面讲算子映射时,我们会反复用到这些概念。
这张图展示了三个核心模块的关系:计算单元负责“算”,存储层次负责“存”,数据通路负责“传”。算子映射,就是在这三者之间找到最优的平衡点。
好了,这一章的内容就到这里。记住:理解硬件架构,是做好算子映射的第一步。后面我们会一步步深入,把这些知识用到实战中去。
本章要点回顾:
- MAC是基本计算单元,PE是MAC的集合
- 存储层次从寄存器到全局内存,延迟差异巨大
- 数据通路决定了数据流动效率,三种数据流模式各有适用场景
- 算子映射的核心:让数据尽量靠近计算单元
想要更多资料,联系可可