第一章 AI芯片核心架构:从计算到互联

大家好,我是你们的老朋友。今天咱们聊聊AI芯片的骨架——核心架构。

说实话,我入行那会儿,AI芯片还没这么火。那时候做DSP,做GPU,谁想到后来会专门为神经网络设计芯片?但技术就是这么往前推的。今天这一章,我会把AI芯片最核心的四个模块拆开来讲:计算单元、存储层次、数据流架构、片上互联。

嗯,这四个东西,说白了就是芯片的“手脚”、“肚子”、“血管”和“骨架”。

1.1 计算单元:MAC与PE阵列

先讲最核心的——计算单元。

AI芯片里最频繁的操作是什么?乘加运算。一个神经元输出 = 权重 × 输入 + 偏置。你想想看,一个神经网络动辄几百万个神经元,每个神经元都要做乘加。所以芯片里最基础的单元就是MAC(乘加单元)。

我个人习惯把MAC理解成一个“小算盘”。它一次只能算一个乘加。但一个芯片里,我们会放成千上万个MAC。这些MAC怎么组织?最常见的方式就是PE(处理单元)阵列。

关键概念:一个PE通常包含一个MAC、本地寄存器、以及一些控制逻辑。多个PE排成阵列,就能并行处理大量数据。

我在项目中遇到过一个问题:PE阵列的规模怎么定?

举个例子,假设我们要做8×8的矩阵乘法。如果你用4×4的PE阵列,一次只能算16个乘加,需要分4次才能算完。但如果你用8×8的阵列,一次就能搞定。代价呢?芯片面积大了4倍,功耗也上去了。

所以,PE阵列的大小是个权衡。我建议初学者先记住一个原则:阵列规模 = 计算吞吐 ÷ 单MAC性能。具体怎么算,后面章节会细讲。

避坑指南:我曾经在项目里把PE阵列做得太大,结果布线绕不开,时序跑不到目标频率。后来学乖了,先做floorplan,再定阵列大小。

1.2 存储层次:SRAM、HBM、DDR

计算单元再快,数据喂不进去也是白搭。这就引出了存储层次的问题。

AI芯片的存储,我习惯把它看成“金字塔”。

层级 典型容量 带宽 延迟 用途
寄存器(RF) 几十KB 极高 1个周期 PE本地数据
SRAM(片上) 几MB~几十MB 高 几个周期 权重、中间结果
HBM(高带宽内存) 几GB~几十GB 很高 几十周期 模型参数、大张量
DDR(外部内存) 几十GB~几百GB 中等 几百周期 数据集、备份

你看,越靠近计算单元,容量越小但速度越快。这就是经典的“存储墙”问题——计算越来越快,但内存带宽跟不上。

我记得有一次做推理芯片,模型有100MB的权重。如果全放DDR里,每次计算都要等几百个周期去取数据。后来我们用了HBM,带宽提升了10倍,推理延迟直接降了60%。

所以,我建议你在设计存储层次时,先算清楚:你的模型有多大?数据复用率有多高?这两个问题决定了SRAM该做多大,HBM该配多少。

注意:SRAM虽然快,但面积大、漏电高。我曾经有个项目,SRAM占了芯片面积的40%,功耗占了30%。后来不得不砍掉一半SRAM,改用HBM。嗯,这就是现实——没有完美的存储方案。

1.3 数据流架构:数据流、权重流、混合流

有了计算单元和存储,接下来就是怎么让数据“流”起来。

数据流架构,说白了就是数据在PE阵列里怎么移动。主要有三种模式:

  • 数据流(Data Flow):输入数据在PE间传递,权重固定不动。适合卷积层,因为同一个权重会被多个输入复用。
  • 权重流(Weight Flow):权重在PE间传递,输入数据固定。适合全连接层,因为同一个输入要和多个权重相乘。
  • 混合流(Hybrid Flow):数据和权重都在PE间流动。适合复杂网络,灵活性最高,但控制逻辑也最复杂。

我个人习惯用数据流做卷积,权重流做全连接。为什么?你想想看,卷积层里一个3×3的卷积核,要在整个特征图上滑动。如果权重不动,数据流过去,每个PE只需要存一份权重,省存储。

但全连接层不一样。一个输入要和所有神经元相连,权重矩阵巨大。这时候让权重流起来,每个PE只存一小部分权重,就能减少片上存储压力。

实战经验:我在做一款边缘AI芯片时,用了混合流。卷积层用数据流,全连接层用权重流。结果呢?性能比纯数据流提升了30%,比纯权重流提升了20%。但代价是控制逻辑复杂了一倍。嗯,这就是取舍。

1.4 片上互联:NoC与总线

最后,所有模块之间怎么通信?这就靠片上互联了。

传统做法是用总线(Bus)。所有模块挂在一根总线上,谁要通信谁申请。简单,但带宽有限。一个模块占着总线,其他模块就得等。

现代AI芯片更常用NoC(片上网络)。NoC就像城市里的交通网络——有交叉口、有路径选择、可以并行通信。

NoC片上网络架构示意图 PE 0 PE 1 PE 2 PE 3 PE 4 PE 5 R R R R R R 内存控制器(HBM/DDR) PE节点 路由节点 数据路径

你看这张图,每个PE通过路由节点(R)连接。数据可以从PE0传到PE1,也可以从PE0传到PE3,路径可以选。这就是NoC的优势——并行通信,带宽高。

但NoC也有代价。每个路由节点要消耗面积和功耗。我做过一个16×16的NoC,光路由就占了芯片面积的15%。

所以,什么时候用总线,什么时候用NoC?

  • 小规模芯片(< 8个PE):总线就够了,简单、省面积。
  • 大规模芯片(≥ 8个PE):必须用NoC,否则总线会成为瓶颈。

我的建议:如果你刚开始设计AI芯片,先用总线。等性能瓶颈出现了,再换成NoC。别一开始就上NoC,否则你会被路由器的设计折磨到怀疑人生。我曾经就是那个被折磨的人。

本章小结

好了,这一章我们聊了AI芯片的四个核心模块:

  • 计算单元:MAC和PE阵列,决定了芯片的算力。
  • 存储层次:SRAM、HBM、DDR,决定了数据能不能喂饱计算单元。
  • 数据流架构:数据流、权重流、混合流,决定了数据怎么在PE间移动。
  • 片上互联:总线和NoC,决定了模块之间怎么通信。

这四个模块,每一个都是取舍。面积、功耗、性能、灵活性——没有完美的方案,只有最适合你应用场景的方案。

下一章,我们会深入PE阵列的设计细节。到时候我会拿一个实际的卷积层例子,手把手教你算PE阵列的规模。嗯,到时候见。

可可精品资料库