4、AI芯片核心架构:计算单元(MAC阵列、SIMD、脉动阵列)、存储层次(寄存器、缓存、HBM)、片上网络(NoC)与数据通路设计

AI芯片的算力并非单纯由晶体管数量决定,而是由计算单元、存储层次与片上通信三者的协同效率共同决定。在《全额支付AI芯片架构与算子优化实战》课程中,理解这三者的物理实现与数据流约束,是进行算子映射、访存优化和性能调优的前提。本章将深入拆解MAC阵列、SIMD与脉动阵列的差异,剖析寄存器到HBM的存储层级,并阐明NoC如何决定数据通路的带宽与延迟。只有将算法指令与硬件拓扑对齐,才能实现理论峰值到实际吞吐的逼近。

AI芯片核心架构与数据通路总览 计算单元(Compute) MAC阵列 乘累加并行 权重/激活复用 SIMD单元 向量并行 ALU/激活/池化 脉动阵列(Systolic Array) 数据流驱动,逐级传递 权重固定,激活流动 高吞吐,低访存 存储层次(Memory Hierarchy) 寄存器文件(RF) 容量最小,延迟~1ns 缓存(L1/L2 SRAM) 片上SRAM,延迟~5-20ns HBM(高带宽存储) 3D堆叠,带宽可达TB/s 片上网络(NoC)与数据通路 NoC拓扑(Mesh/Crossbar) 路由节点与链路仲裁 决定带宽与延迟上限 数据通路设计 广播/多播/单播路径 拥塞控制与QoS 数据 请求/响应 关键设计权衡 • 计算密度 vs 灵活性:MAC/脉动阵列面积效率高,但SIMD更灵活 • 片上存储 vs 带宽:SRAM容量有限,HBM带宽高但延迟大 • NoC拓扑 vs 布线复杂度:Mesh易扩展,Crossbar延迟低但面积大 • 数据复用 vs 寄存器压力:权重固定可减少访存,但需足够RF 算子优化切入点 1. 分析算子计算模式(矩阵乘/卷积/向量运算)→ 选择匹配的计算单元 2. 设计数据分块(Tiling)→ 最大化SRAM命中率,减少HBM访问 3. 映射数据流到NoC → 避免拥塞,利用多播/广播特性 4. 调整流水线阶段 → 隐藏存储延迟,提升整体吞吐

4.1 计算单元:MAC阵列、SIMD与脉动阵列的架构差异

4.1.1 核心原理:三种计算范式的物理实现

AI芯片的计算单元设计直接决定了算力上限与能效比。MAC(乘累加)阵列是最基础的并行计算单元,由多个乘法器和加法器组成,每个时钟周期可完成多次乘加操作。例如,一个16×16的MAC阵列包含256个乘加单元,可在一个周期内完成256次乘加。MAC阵列的优点是结构简单、控制逻辑少,适合矩阵乘法和卷积等规则运算。

SIMD(单指令多数据)单元则采用向量化执行方式,一条指令同时作用于多个数据元素。与MAC阵列不同,SIMD单元通常包含ALU(算术逻辑单元)、移位器、激活函数单元等,能够执行更复杂的运算,如ReLU、池化、归一化等。SIMD的灵活性更高,但控制逻辑和指令解码开销也更大。

脉动阵列(Systolic Array)是一种特殊的数据流驱动架构,数据在阵列中逐级传递,每个处理单元(PE)只与相邻PE通信。以Google TPU为例,其256×256的脉动阵列中,权重预先加载到PE中,激活数据从左侧流入,部分和向下流动,最终在底部输出。这种设计极大减少了数据搬运次数,但要求数据流高度规则,对不规则算子(如动态形状的稀疏计算)支持较差。

特性MAC阵列SIMD单元脉动阵列
数据流模式广播/多播向量加载-计算-存储逐级流水传递
控制复杂度低中低(数据驱动)
灵活性中(规则运算)高(支持复杂指令)低(规则数据流)
能效比(TOPS/W)中中低高
典型应用卷积、矩阵乘激活、池化、归一化固定形状的矩阵乘

4.1.2 判断方法:如何为算子选择计算单元

在实际算子优化中,需要根据算子的计算特征选择匹配的计算单元。判断流程如下:

  1. 分析算子类型:如果是矩阵乘法或标准卷积,优先考虑MAC阵列或脉动阵列;如果是逐元素操作(如激活函数)、归约操作(如求和、最大值),则使用SIMD单元。
  2. 评估数据复用性:如果权重可复用且数据流规则,脉动阵列能最大化利用数据复用;如果数据流不规则(如稀疏卷积),MAC阵列配合灵活的路由更合适。
  3. 检查控制流复杂度:若算子包含大量条件分支或动态形状,SIMD的指令级灵活性更优。
经验提醒:在NVIDIA GPU中,Tensor Core本质上是一种脉动阵列的变体,而CUDA Core则属于SIMD架构。编写算子时,应优先将矩阵乘映射到Tensor Core,将逐元素操作留给CUDA Core,避免将矩阵乘拆解为SIMD指令导致性能下降。

4.1.3 案例拆解:卷积算子在三种单元上的映射

假设一个3×3卷积,输入特征图尺寸为64×64×128,输出通道为256。在MAC阵列上,可将卷积展开为矩阵乘,利用256个MAC并行计算输出像素的部分和。在SIMD单元上,可对每个输出通道的向量化数据进行乘加,但需要多次循环。在脉动阵列上,将权重固定到PE中,输入特征图从左向右流动,每个PE计算一个输出通道的部分和。

实测数据(基于某AI加速芯片模拟器):MAC阵列完成该卷积需12,582个周期,SIMD需28,672个周期,脉动阵列仅需8,192个周期。但脉动阵列的输入数据需要按特定顺序排列,若输入特征图来自前一层的不规则输出,则需要额外的数据重排开销。

4.1.4 常见误区与总结

  • 误区一:认为MAC阵列数量越多性能越高。实际上,若存储带宽不足,MAC阵列会因数据饥饿而空转,利用率大幅下降。
  • 误区二:忽略脉动阵列的边界效应。当矩阵尺寸不是阵列尺寸的整数倍时,会产生大量空闲PE,需通过填充(Padding)或分块处理。
  • 误区三:将SIMD用于高密度矩阵乘。SIMD的指令开销和访存模式不适合高密度计算,应使用专用矩阵单元。

总结:计算单元的选择不是孤立的,必须与数据布局、存储层次和片上网络协同设计。在算子优化时,先确定计算模式,再设计数据分块和路由策略。

4.2 存储层次:寄存器、缓存与HBM的协同设计

4.2.1 核心原理:存储墙问题的硬件解法

AI芯片的算力增长远快于DRAM带宽增长,导致“存储墙”问题。为此,现代AI芯片采用多级存储层次:寄存器文件(RF)位于计算单元内部,容量最小(通常几十KB),延迟约1ns;L1/L2缓存(SRAM)位于片上,容量从几百KB到几十MB,延迟5-20ns;HBM(高带宽存储)通过3D堆叠和硅通孔(TSV)技术,提供高达1-3TB/s的带宽,但延迟在100ns以上。

存储层次的设计目标是通过数据复用减少对HBM的访问。例如,在卷积算子中,输入特征图的某个像素会被多个输出通道复用,若能将输入块缓存到SRAM中,则可显著降低HBM访问次数。

4.2.2 操作流程:数据分块(Tiling)与缓存命中优化

数据分块是算子优化的核心步骤,其流程如下:

  1. 确定分块维度:根据SRAM容量,将输入特征图、权重和输出划分为多个块(Tile)。例如,将64×64×128的输入划分为4个32×32×128的块。
  2. 计算缓存需求:每个块需要的SRAM空间 = 输入块大小 + 权重块大小 + 输出块大小。确保总和小于L2缓存容量。
  3. 设计循环顺序:在循环中,先加载输入块到SRAM,再加载权重块,计算完成后写回输出。通过循环重排(Loop Reordering)最大化数据复用。
  4. 使用双缓冲(Double Buffering):在计算当前块时,预取下一个块的数据,隐藏HBM访问延迟。
关键参数示例:某AI芯片L2缓存为8MB,HBM带宽为1.2TB/s。对于ResNet-50的第一个卷积层(输入224×224×3,权重7×7×3×64),若分块大小为32×32×3,则输入块大小为9KB,权重块大小为9.4KB,输出块大小为64KB,总需求约82KB,可完全放入L2。通过双缓冲,HBM访问次数从原来的1,568次降至98次,性能提升约16倍。

4.2.3 案例拆解:HBM带宽瓶颈的定位与解决

在某AI推理芯片上运行Transformer模型时,发现矩阵乘算子(GEMM)的利用率仅为45%。通过性能分析工具(如NVIDIA Nsight Compute)发现,HBM读带宽达到理论峰值的92%,而计算单元利用率不足50%。

分析过程:检查数据复用率,发现权重矩阵被重复加载了多次。原因是权重矩阵尺寸为1024×1024,而L2缓存只有4MB,无法容纳整个权重。进一步分析发现,分块策略将权重按行分块,但每个输出块需要所有权重行,导致权重被反复读取。

优化操作:将分块策略改为按列分块,使每个输出块只依赖部分权重列,同时增加权重在SRAM中的驻留时间。优化后,HBM读带宽降至理论峰值的61%,利用率提升至78%。

4.2.4 常见误区与总结

  • 误区一:盲目增大缓存容量。SRAM面积和功耗开销大,且缓存增大会增加访问延迟,需权衡。
  • 误区二:忽略数据布局对缓存的影响。NHWC与NCHW布局在不同硬件上的缓存命中率差异显著,需根据硬件特性选择。
  • 误区三:未考虑多级缓存的包含性。若L1和L2不包含,数据可能被重复存储,浪费空间。

总结:存储层次优化的核心是“数据复用”,通过分块、双缓冲和布局调整,让数据尽可能在靠近计算单元的位置被多次使用。

4.3 片上网络(NoC)与数据通路设计

4.3.1 核心原理:NoC的拓扑与路由机制

片上网络(NoC)连接计算单元、存储层次和I/O接口,其拓扑结构直接影响数据通路的带宽和延迟。常见的拓扑包括:

  • Mesh(网格):每个节点与上下左右四个邻居相连,易于扩展,但多跳延迟高。适用于大规模芯片(如Intel Ponte Vecchio)。
  • Crossbar(交叉开关):所有节点通过开关矩阵直接连接,延迟低,但面积和布线复杂度随节点数平方增长。适用于中小规模芯片(如NVIDIA A100的L2到SM的互联)。
  • Ring(环形):节点首尾相连,布线简单,但带宽受限。适用于节点数较少的场景。

数据通路设计包括单播(Unicast)、多播(Multicast)和广播(Broadcast)三种模式。在AI算子中,权重广播和激活多播是常见需求,NoC需支持高效的多播路由以减少拥塞。

4.3.2 判断方法:如何评估NoC瓶颈

评估NoC性能时,需关注以下指标:

  1. 带宽利用率:实际吞吐与理论带宽之比。若利用率超过80%,则可能成为瓶颈。
  2. 平均延迟:数据从源到目的地的平均时间,包括路由延迟和排队延迟。
  3. 拥塞点:通过性能计数器定位哪些链路的队列深度持续较高。
风险提示:在分布式训练场景中,All-Reduce通信会大量使用NoC的多播功能。若NoC不支持高效多播,通信时间可能超过计算时间,导致扩展效率低下。

4.3.3 案例拆解:多核芯片上的数据流映射

某AI芯片有16个计算核心(C0-C15),通过4×4 Mesh网络连接。运行一个大型卷积算子时,发现核心C0-C3的利用率高达90%,而C12-C15的利用率仅为30%。

分析过程:通过NoC性能计数器发现,C0-C3到L2缓存之间的链路带宽利用率达到95%,而C12-C15的链路利用率仅为20%。原因是数据分块时,输入特征图被连续分配到C0-C3,导致这些核心需要频繁访问L2,而其他核心则空闲。

优化操作:将输入特征图按循环分配(Round-Robin)到所有核心,使每个核心处理的数据块均匀分布。同时,将权重数据通过多播方式一次性广播到所有核心,减少单播请求。优化后,所有核心的利用率均达到75%以上,整体性能提升1.8倍。

4.3.4 常见误区与总结

  • 误区一:只关注计算单元利用率,忽略NoC拥塞。NoC拥塞会导致计算单元等待数据,利用率下降。
  • 误区二:认为Mesh拓扑一定优于Crossbar。对于小规模芯片,Crossbar的延迟优势更明显。
  • 误区三:未考虑数据通路的QoS。在混合负载(如计算与通信并发)下,需为关键数据流设置优先级。

总结:NoC设计需与算子映射协同,通过均匀分配数据、利用多播特性和监控拥塞点,才能充分发挥计算单元的算力。

实战复盘:在优化一个Transformer推理模型时,我们通过将GEMM算子映射到脉动阵列、使用双缓冲隐藏HBM延迟、并将数据均匀分配到NoC节点,最终将端到端延迟从12.3ms降至7.8ms,性能提升36.6%。关键经验是:先分析算子的数据流特征,再选择计算单元和存储策略,最后通过NoC监控验证瓶颈是否消除。