第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芯片硬件架构核心逻辑。你可以把它当作一个“地图”,后面讲算子映射时,我们会反复用到这些概念。

AI芯片硬件架构核心逻辑 计算单元 MAC单元 PE阵列 乘累加操作 · 并行计算 脉动阵列 / 网格阵列 数据流 存储层次 寄存器 L1缓存 L2缓存 全局内存 容量↑ · 带宽↓ · 延迟↑ 数据通路 权重固定 输入固定 输出固定 总线/互联

这张图展示了三个核心模块的关系:计算单元负责“算”,存储层次负责“存”,数据通路负责“传”。算子映射,就是在这三者之间找到最优的平衡点。

好了,这一章的内容就到这里。记住:理解硬件架构,是做好算子映射的第一步。后面我们会一步步深入,把这些知识用到实战中去。

本章要点回顾:

  • MAC是基本计算单元,PE是MAC的集合
  • 存储层次从寄存器到全局内存,延迟差异巨大
  • 数据通路决定了数据流动效率,三种数据流模式各有适用场景
  • 算子映射的核心:让数据尽量靠近计算单元

想要更多资料,联系可可