AI 加速器架构:脉动阵列、数据流(WS/OS)、NoC 与内存层级
更新时间:2026-09-24。前一篇 硅后验证与 Shmoo 测试 回答的是「芯片做出来以后怎么证明它能用」,本篇切换视角,看过去十年增长最快的一类芯片——AI 加速器——内部是怎样组织计算的。无论是 Google TPU、华为昇腾还是众多初创公司的 NPU,其算力主体都是同一种结构:systolic array(脉动阵列)。它的思想朴素到近乎古老(雏形可追溯到 1980 年代 CMU 的工作),却恰好击中了深度学习计算的要害:矩阵乘规模巨大、数据高度可复用,而访存远比计算昂贵。下一篇 GPU 架构与 Warp 调度 会讲另一条通用并行路线,两篇对照可以看清专用与通用的分野。
本文要回答的问题
- 为什么神经网络的算力账单几乎全是矩阵乘?一个 MAC 和一个 PE 分别是什么?
- 脉动阵列「脉动」在哪里?数据怎样在 PE 网格里流动并被多次复用,从而省下葬存?
- weight stationary、output stationary、row stationary 三种数据流各自复用什么、搬运什么,能效差异从哪来?
- HBM、NoC、片上 SRAM scratchpad、PE 内寄存器构成怎样的内存层级?为什么说峰值 TOPS 常被带宽墙拖垮?
- tile 分块、双缓冲、im2col、稀疏跳零、INT8/INT4 量化这些手段分别解决什么问题?
- TOPS/W、利用率(utilization/MFU)、roofline 该怎样读?脉动阵列和 GPU 的 SIMD 方案各自适合什么场景?
一、矩阵乘才是算力本体:从一个神经元到 GEMM
看任何一篇主流网络的论文,算力数字都指向同一件事。一个全连接层做的是 y = Wx + b:权重矩阵 W 与激活向量 x 相乘。把一批样本的向量拼成矩阵,就变成 GEMM(General Matrix Multiply,通用矩阵乘法)C = A × B。卷积层表面上不是矩阵乘,但一个 3×3 卷积在每个输出通道、每个输出像素上做的仍是乘加,经过 im2col(把卷积窗口展开成列)或等效的硬件调度后,计算形态同样落到 GEMM。Transformer 兴起后注意力层的 QKᵀ、softmax(P)V 是两个大矩阵乘,前馈层(FFN)更是两个宽矩阵乘——在典型大模型里,矩阵乘占总运算量的比例超过 90%,部分配置可达 99%。
矩阵乘的基本运算单位是 MAC(Multiply-Accumulate,乘加):算一次乘积并累加到累加器上,记为两个 FLOP(浮点操作数,乘法、加法各一)。一个输出元素 C[i][j] = Σₖ A[i][k]·B[k][j],若矩阵边长为 N,则一个输出要做 N 次 MAC,整个 GEMM 约 2N³ 个 FLOP,而输入数据只有约 3N² 个。这个「三次方计算量对二次方数据量」的剪刀差,是理解一切 AI 加速器的起点:算术强度(arithmetic intensity,每字节数据换取的 FLOP)天然可以做得很高,前提是数据从内存读进来以后要在片上被反复使用,而不是用一次就丢。
给两个具体网络的数字。ResNet-50 做一次推理约需 40 亿次 MAC,其中卷积占七成以上;一个 1750 亿参数的大模型,每生成一个 token(在 batch 较大、序列较长的配置下)需要约 2×1750 亿 = 3500 亿 FLOP,而自回归生成要逐个 token 重复这笔账,一次问答几千 token 就是上百万亿次操作。这就是为什么数据中心对 AI 芯片的需求是「能插多少插多少」,也是为什么每 MAC 的能耗和每瓦算力成为比峰值算力更硬的竞争指标。顺带澄清一个常见误解:roofline 里常说的「算术强度高」指的是理论复用潜力,GEMM 的 2N³/3N² 只是上限;数据真从 HBM 读几次,取决于分块和数据流——同一条 GEMM,调度得好算术强度几百,调度得差可能只有个位数。
脉动阵列就是把这一前提焊死在电路里的结构。在展开具体结构之前先建立量级感:一块边长 256 的 INT8 脉动阵列,每拍可执行 256×256 = 65536 次 MAC,时钟 1GHz 下峰值就是 131 TOPS(每秒万亿次操作)。当代旗舰加速器把多块阵列拼起来,标称算力普遍在数百到上千 TOPS——但真实网络跑出来的有效算力往往只有峰值的三成到六成,差距正是后面各节要拆解的东西。
二、PE 与脉动阵列:让数据像心跳一样流过网格
PE(Processing Element,处理单元)是脉动阵列的细胞,结构极简:一个乘法器、一个加法器、若干本地寄存器(存放权重、输入激活和部分和),外加与上下左右相邻 PE 相连的窄通道。没有复杂的指令流,没有寄存器堆重命名,每个 PE 每拍只做一件固定的事——从一个邻居收数、相乘累加、把数传给下一个邻居。整个阵列由统一时钟驱动,数据每拍向前推进一步,像心脏泵血一样节律性地流动,「脉动」由此得名。
按图走一遍一个经典的「权重驻留」时序:阵列开始工作前,权重 W 被写入每个 PE 的寄存器并留在原地;激活 a 从阵列左侧按错位的节拍注入,沿行向右流动,每拍跨过一个 PE;部分和(partial sum)沿列向下流动,底部流出的就是累加完成的输出。关键在复用:同一个权重在整个计算过程中只从片上存储读一次,却与流过的一长串激活相乘——权重被复用 N 次;同一个激活进入一行后,与该行的每个权重各乘一次,激活也被复用 N 次。一个 N×N 阵列完成一批计算,外部只需以每拍约 O(N) 的速率喂数,内部却产生 O(N²) 的 MAC,带宽压力与计算规模在电路层面解耦。
这种设计还顺手消灭了两类开销。其一是控制开销:通用核执行 GEMM 需要反复取指令、做循环分支和地址计算,而脉动阵列的时序是固定的流水波前,控制逻辑摊到几万次 MAC 上几乎为零。其二是访存能耗:在先进工艺上,一次片外 DRAM 访问的能耗约为一次寄存器级加法的几百倍(量级对比:32bit 加法约 0.1~1pJ,片上 SRAM 访问约几 pJ,片外 DRAM 访问约 50~100pJ 以上,具体数字随工艺波动,但数量级关系稳定)。让数据在相邻 PE 之间走寄存器到寄存器的一步,是全芯片最便宜的数据移动方式。脉动阵列的本质可以概括为一句话:把「读内存—算—写回」的模式,换成「数据读一次,在寄存器网格里边走边被反复算」。
用一个 3×3 的小例子体会节拍的精确性。计算 C = A×B 时,每个 PE(i,j) 预载 B[i][j]。第 0 拍只有 PE(0,0) 收到 A[0][0],算出 A[0][0]·B[0][0];第 1 拍,A[0][0] 右移到 PE(0,1),同时 A[1][0] 下移进入 PE(1,0)、A[0][1] 进入 PE(0,0),阵列对角线上的波前扩大;到第 2 拍,激活沿行、部分和沿列各自前进一步,PE(0,0) 开始累加它的第二个乘积。如此推进,约 2N−1 = 5 拍后三个输出 C[0][0]、C[1][0]、C[2][0] 从阵列底部依次流出;紧接着注入下一批激活,流水线便不再有空拍。注意整个过程中 B 的九个元素自始至终只被读过一次,阵列外只需要两条输入流(激活流和预装权重流),控制单元不需要知道「现在算到矩阵的哪个位置」——波前的几何形状自动保证了每个乘积累加到正确的输出。这也是脉动阵列与「阵列处理器」的本质区别:后者的 PE 各自寻址、各自取数,前者靠空间上的错位排布替代了指令和地址。
规整是它的另一个红利。PE 行列对齐、边界规则,物理实现时单元可以像瓷砖一样铺满,布线通道可预测,时序收敛和面积利用率都远优于异构拼装的设计。代价也由规整而来:阵列一旦定型,边长、数据位宽、数据方向都难以更改;喂不饱或形状不匹配时,大片 PE 空转。
三、三种数据流:WS、OS、RS 决定复用谁、搬运谁
「数据怎样流过阵列」称为数据流(dataflow),它是脉动阵列架构的第一决策,因为不同网络层的权重和激活尺寸不同,最值得省的对象也不同。主流选择有三种:weight stationary(权重驻留,WS)、output stationary(输出驻留,OS)、row stationary(行驻留,RS)。
WS 把权重钉在 PE 寄存器中,如前一节所述,权重从 scratchpad 只读一次,反复与流过的激活相乘。它最省权重侧的访存与能耗,控制也最简单,适合权重复用次数高的场景——矩阵乘边长越大、批量越大,每个权重被激活扫过的次数越多,WS 越赚。TPU 系列的脉动阵列采用的就是这一路线。它的短板是部分和要在列间流动、最终还要收出去做激活函数,部分和的移动规模随阵列边长线性增长。
OS 反过来:让每个输出元素(及其部分和)固定在一个 PE 上累加,权重和激活轮流流入该 PE。这样累加全程在本地完成,部分和从不跨 PE 移动,省掉的是部分和的搬运与中间写回;当 K 维(累加维)很长时,这一节省尤其可观。代价是权重和激活都要持续流动、每次换输出还要重新装填,输入侧带宽压力大,PE 的利用率受数据供给节奏影响。
RS 是为卷积量身做的折中,学术代表是 Eyeriss:权重的一行沿一个方向展开,激活的一行沿另一方向流动,部分和沿对角方向在本地累加,对卷积窗口内的权重复用、输入特征图的跨窗口复用、部分和的跨通道累加分别做局部优化,三类数据各复其用、各走短路。它不追求任何单一维度的极致,而是把卷积的多维复用(滑动窗口天然让相邻输出共享输入像素)整体压到最低能耗,代价是阵列互联和调度比 WS/OS 复杂。
| 维度 | WS 权重驻留 | OS 输出驻留 | RS 行驻留 |
|---|---|---|---|
| 留在 PE 本地的数据 | 权重 | 输出/部分和 | 权重行与部分和(局部) |
| 主要流动的数据 | 激活、部分和 | 权重、激活 | 权重行、激活行、部分和 |
| 最大化的复用 | 权重复用 | 累加本地性,省部分和搬运 | 三类数据折中复用 |
| 最适配的层 | 大 GEMM、大批量全连接/注意力 | K 维很长的矩阵乘 | 卷积(尤其 stride=1 的小窗口) |
| 控制/调度复杂度 | 低 | 中 | 高 |
| 典型实现 | TPU 系阵列 | 多种 NPU 阵列配置 | Eyeriss |
需要强调的是,数据流不是软件可调的运行参数,而是由阵列的寄存器布局和连线方向在硅片上固定下来的物理策略——选型本质是在赌目标网络族里什么数据最金贵。现代加速器有时在同一颗芯片内通过配置让阵列支持两三种模式,但每种模式的效率仍受原生连线约束。
四、内存层级:HBM、NoC、SRAM scratchpad 与带宽墙
脉动阵列再高效,也要有人把矩阵喂到它嘴边。真实加速器的存储层级自外向内大致是:HBM(高带宽堆叠显存,通过 HBM 物理接口 与芯片相连)→ NoC(片上网络,负责各存储区与阵列簇之间的数据分发,拓扑与 Qos 设计见 NoC 架构)→ 片上 SRAM scratchpad(软件显式管理的暂存区,常按阵列簇分布)→ PE 内寄存器。相邻两层的容量、带宽和能耗相差悬殊。
图中从上往下,容量递减而单位带宽和能效递增:HBM 容量数十 GB、聚合带宽数 TB/s 但访问最昂贵;scratchpad 通常每簇只有几 MB 到几十 MB,访问能耗约一个数量级地下降,但放不进完整的权重矩阵;寄存器容量以字节计却近乎免费。所谓「带宽墙」就是:一块 256×256 的阵列每拍要消耗数百字节新数据才能满载,任何一层供给跟不上,阵列就出现气泡(bubble),PE 空转。一个经典失败案例是只对比芯片手册封面的峰值 TOPS,却不看 HBM 带宽和 scratchpad 容量——同样标称 100 TOPS 的两颗芯片,跑大 batch 与跑小 batch、跑宽矩阵与跑窄矩阵的表现可能天差地别。
scratchpad 用软件显式管理(而非 CPU/GPU 那种硬件自动缓存)是加速器的刻意选择:矩阵分块、预取时机编译器全都知道,显式 DMA 搬运可以消除缓存未命中的不确定性,保证喂数节奏可预测;代价是编程门槛高,一切调度责任压给编译器。NoC 则是多阵列簇时代的关键:一颗芯片有几十甚至上百块阵列,权重和激活要按簇分发、部分和要汇聚,NoC 的拥塞与死锁设计直接决定多簇协同的线性度。chiplet 方案还会把存储和计算拆到不同小芯片上,先进封装与互连见 Chiplet 与 UCIe,跨芯粒的带宽与能效是这一路线的核心约束。
五、调度与映射:tile、双缓冲与卷积的展开
层级存储决定了「大矩阵不能整块进片上 SRAM」,于是编译器要做的第一件事是 tile(分块):把 A、B、C 沿三个维度切成能放进 scratchpad 的小块,规划「搬哪块、何时算、算完写回哪」的顺序,让每块数据在片上停留期间被尽量多次使用。分块大小是个三方折中:太小则复用不足、HBM 往返频繁;太大则装不进 SRAM 或挤占别的张量;还要让块的边长整除阵列边长,避免边缘 PE 空置。GEMM 的分块调度在高性能库里已被研究多年,加速器编译器的新课题是把网络中不同形态的层(注意力的窄高矩阵、FFN 的宽矩阵、卷积)统一映射到固定阵列上。
第二件事是双缓冲(double buffering):scratchpad 里为同一数据准备两块缓冲区,阵列计算当前块的同时,DMA 在后台把下一块从 HBM 搬入另一块缓冲区,计算与搬运重叠,用容量换时间。只要 HBM 搬一块的时间不超过阵列算一块的时间,阵列就能连续无气泡运转——这个不等式也直接给出了对 HBM 带宽的最低要求。
卷积的映射另有专门手法。除了 im2col(把每个滑动窗口的输入 patch 展平成列,卷积变 GEMM,代价是输入数据膨胀、重复存储),硬件更常用的是 weight stationary 阵列配合专门的行缓存(line buffer):输入特征图按行流入,滑窗复用直接在寄存器间完成,相邻输出像素共享的输入像素只读一次。RS 数据流则在架构层面内置了这种复用。无论哪种路线,目标一致:让卷积的计算密度(每输出约 K×K×Cᵢₙ 次乘加)全部兑换成片上复用,而不是片外带宽。
| 调度手段 | 解决的问题 | 付出的代价 |
|---|---|---|
| tile 分块 | 矩阵放不进 SRAM;提升片上复用 | 边缘不满块时 PE 空置;调度复杂 |
| 双缓冲 | 掩盖 HBM 搬运延迟 | 多占一倍缓冲容量 |
| im2col | 卷积复用 GEMM 基础设施 | 输入数据膨胀,访存量上升 |
| 行缓存/RS | 滑窗输入的像素级复用 | 互联与时序设计复杂 |
| 层间流水 | 一层算完即传下一层,省写回 HBM | 各层速率需均衡,缓冲深度难定 |
六、稀疏与量化:在算法和硬件之间兑换算力
如果网络里有大量零,或者每个数只需很少的比特,等效算力还能成倍提高——但前提是硬件真能利用这些性质。
量化把浮点权重和激活换成低位定点:INT8 相比 FP16,同等面积和功耗下 MAC 阵列的吞吐约为 4 倍(乘法器面积与数据位宽近似平方关系),INT4 再翻一倍左右,权重存储和带宽也同比下降。当代推理加速器普遍以 INT8 为主力精度、INT4 为权重压缩选项,并支持 FP8(E4M3/E5M2 两种浮点格式)兼顾训练与推理。量化真正的工程难点不在阵列而在配套:缩放因子(scale)的在线计算、累加器要保持较宽位宽防止溢出(INT8 相乘累加常见 32bit 累加器)、反量化与偏置校正,以及个别敏感层需要回退到高精度——混合精度调度是编译器的硬活。只支持单一低位宽的芯片在真实模型里往往被迫频繁回退,利用率断崖式下跌。
稀疏是另一条线。剪枝后的权重可能有 50%~90% 是零,与零相乘不产生有效结果。硬件利用稀疏分两个层次:非结构化稀疏(零的位置任意)压缩率最高,但需要为每个非零值携带索引、动态路由到 PE,阵列规整性被破坏,实际加速常常远低于理论值;结构化稀疏(如 NVIDIA 的 2:4 模式,每四个权重中至多两个非零)把零的位置约束成规则模式,硬件可以用固定模式跳零和压缩带宽,加速可预测,是目前落地的主流。激活侧的稀疏(ReLU 后约一半激活为零)也可用零门控时钟(zero gating)省电——检测到操作数为零时关掉该 PE 本拍翻转,省的是动态功耗而非阵列时间。经验法则:稀疏和量化的收益必须在阵列设计阶段就内建支持,事后靠软件「兼容」只能得到很小一部分。还要注意量化和稀疏会叠加作用于内存层级:INT4 权重让 HBM 到 SRAM 的有效带宽翻倍、让同一块 scratchpad 容纳四倍层数的权重,而 2:4 稀疏再让权重读取量减半——真实推理芯片上,数据搬运的节省往往比乘法器本身的节省更决定端到端时延。这也解释了为什么各家旗舰推理卡宣传时同时给出 INT8、INT4、稀疏三个修饰词下的算力数字:它们组合起来才是部署时真正兑现的吞吐,而读这些数字时要逐项核对硬件是否原生支持、编译器是否自动开启,以及回退到稠密 FP16 时的保底性能。
七、能效、利用率与 roofline:读懂真实性能
评估加速器的第一指标不是峰值 TOPS,而是能效 TOPS/W 和真实利用率。推理数据中心的电费在总拥有成本中占比越来越高,电池设备更是硬性受功耗约束;TOPS/W(每瓦每秒万亿次操作)把算力和能耗绑在一起,是阵列能效哲学的成绩单——数据复用越充分、无效搬运越少,TOPS/W 越高。高端推理芯片的 INT8 能效在先进工艺与封装加持下已达每瓦数十到上百 TOPS 的量级,而通用 GPU 同精度通常低一个档次,差距主要不在乘法器,而在数据流和供应网络的开销。
利用率常用 MFU(Model FLOPs Utilization,模型浮点利用率)衡量:按模型理论需要的 FLOP 除以(芯片峰值 × 运行时间),它把一切损耗——带宽气泡、分块不满、调度间隙、精度回退、层间同步——一网打尽。大模型训练在 GPU 集群上 MFU 约 30%~50% 已属健康;单颗 NPU 跑推理的阵列利用率则随批量和形状大起大落,batch=1 的自回归解码阶段往往只有很低的利用率,因为每步矩阵乘退化为「矩阵×向量」,阵列大片空置——这是推理部署最真实的痛点,也是 KV cache、连续批处理(continuous batching)等系统技术的价值所在。
roofline 模型给出判断瓶颈的统一框架:以算术强度(FLOP/byte)为横轴、可达性能为纵轴,画出一条「带宽斜线 + 算力平顶」的折线。算子的算术强度落在斜线区,就是访存受限,加阵列无用,应优化复用和带宽;落在平顶区,才是计算受限。GEMM 算术强度高、理论上稳坐平顶,但如果 tile 失败、块太小,有效算术强度被片外往返稀释,实际会滑回斜线区。工程上定位「为什么跑不到峰值」,本质就是用 roofline 逐层核对:是 HBM 带宽、NoC 拥塞、scratchpad 容量还是阵列形状在拖后腿。
八、脉动阵列与 GPU/SIMD:专用与通用的取舍
下一篇将展开 GPU 架构与 Warp 调度,这里先给出对照的基本盘。GPU 的算力来自大量 SIMD/SIMT 核心:每个核心有寄存器堆、指令译码和缓存层次,warp 调度器在数千线程间切换以掩盖延迟,灵活性极高——GEMM、卷积、不规则注意力、渲染、图形、通用 HPC 都能跑,软件生态(CUDA)十余年积累形成护城河。代价是控制和存储层次的开销:同样的 MAC 数量,通用核心的面积和能效劣于裸阵列,SIMT 的分支发散还会在不规则代码上损失利用率。
脉动阵列走另一极:把 GEMM 一种模式做到极致,每平方毫米和每瓦都花在乘法器和最近距离的数据移动上,推理场景下能效优势显著;代价是形状依赖(矩阵小、批量小、算子不规则则利用率低)、编程靠专门编译器、新型算子可能需要重新流片或靠旁边的通用核兜底。因此现实中的 AI 芯片几乎都是混合体:成簇的脉动阵列承担 GEMM,vector 单元承担 layernorm、softmax、激活函数等逐元素操作,通用 CPU 核承担控制与调度,再由 NoC 缝合。选型判断也随之清晰:数据中心训练需要通用性和生态,GPU 仍是主力;大规模固定模式推理,脉动阵列 NPU 在能效和成本上有结构性优势;边缘端电池设备几乎必然倒向阵列方案。两者并非替代关系,而是「把多少硅面积押在专用性上」这条光谱上的两个点位。
九、训练与推理:三次 GEMM、精度与片间扩展
前面的讨论以推理为主,训练对硬件的要求又高一截。一次训练迭代包含前向、反向两个方向:对每个矩阵乘 Y = XW,反向传播要算两个梯度矩阵——dX = dY·Wᵀ 和 dW = Xᵀ·dY,一个前向 GEMM 对应两个反向 GEMM,计算量约为前向的两倍,而且都要保持较高精度(BF16/FP16 加 FP32 累加,低比特训练仍在研究和早期落地阶段)。这意味着训练芯片必须为高精度数据类型保留完整的乘法器支持,INT8/INT4 阵列省下来的硅面积红利在训练场景基本吃不到。训练还要保存前向的激活供反向使用,激活存储量随层数线性增长,显存容量而非算力常常先成为瓶颈,这是梯度检查点(activation checkpointing,用重算换显存)等技术存在的原因。
单颗芯片装不下千亿参数模型,于是出现多芯片并行:数据并行(各芯片持有完整模型副本、分摊批量)、张量并行(把单个矩阵沿行列切开分到多芯片,每步都要跨芯片做 all-reduce 汇聚部分和)、流水线并行(按层切分,微批在芯片间像流水线一样传递)。其中张量并行对 NoC 和互连带宽的要求最苛刻——部分和汇聚发生在每个 GEMM 内部,跨芯片带宽不足时阵列大半时间在等待,这正是 NVLink、OCI 之类高带宽片间互连以及 Chiplet/UCIe 封装的战略价值所在。脉动阵列本身的设计在这一层退居幕后,系统级的带宽和调度决定集群 MFU。
十、物理实现:大阵列的时钟、电源与散热
骨架里提到的物理挑战值得展开。数万个 MAC 单元铺满矩形阵列,时钟要无 skew 地送达每个 PE,时钟树在阵列内部走长线、插缓冲,自身功耗可观;阵列各区域的计算密度随波前推进而变化——波前扫过的 PE 在翻转、未到达的 PE 静止——某一瞬间的电流分布高度不均,动态 IR drop(电源网格上的瞬时压降)可能让波前前沿的 PE 处于欠压状态,时序余量被吃掉。电源网络要在阵列中密铺电源条、合理分布去耦电容,签核时必须按真实的波前翻转模式而不是均匀翻转率做分析。低功耗手段包括门控时钟、块级电源关断(阵列空闲区断电)以及前述的零操作数门控。
散热同样反直觉:阵列热点不是固定位置,而是随数据流在硅片上「游走」,峰值局部热流密度高,结温分布不均还会引入局部时序漂移。大芯片往往要配合均热板、高密度封装散热甚至液冷。这些约束解释了为什么阵列不是越大越好:边长翻倍带来四倍峰值算力,但时钟、供电、散热和良率的难度超线性增长,工程上普遍选择「多块中等阵列 + NoC 拼接」而非单块巨型阵列——256×256 上下是大量产品收敛的甜点尺寸,再大则面积利用率和频率都开始明显受损。
这一篇在知识体系里的位置
- 上一篇:硅后验证与 Shmoo 特性测试——阵列做出来后,电压-频率角落和良率同样要靠 Shmoo 图刻画;
- 下一篇:GPU 架构与 Warp 调度器——对照脉动阵列,看 SIMT 通用并行路线如何工作;
- 阵列的喂数通道:HBM 内存接口物理 讲带宽墙外侧的堆叠显存如何接入芯片;
- 多簇协同:NoC 拓扑、QoS 与死锁 讲片上网络如何分发张量;
- 封装路线:Chiplet 与 UCIe 讲存算分离到多小芯片时的互连接口。
总结
AI 加速器脉动阵列的全部设计都围绕「矩阵乘是算力本体、访存远比计算昂贵」这一事实:PE=MAC+本地寄存器,数据在统一时钟下沿网格边流边被复用,权重和激活各读一次即可换取 N 次乘法;weight stationary 复用权重、output stationary 省部分和搬运、row stationary 为卷积折中复用,数据流在硅片上决定能效;HBM—NoC—SRAM scratchpad—寄存器的内存层级用 tile、双缓冲和显式 DMA 对抗带宽墙,稀疏跳零与 INT8/INT4 量化进一步把面积和带宽换成算力;最终芯片好坏不看峰值 TOPS,而看 TOPS/W 与 MFU 利用率——roofline 判定计算还是访存受限,而与 GPU/SIMD 的取舍,本质是在「专用阵列的能效」和「通用核心的灵活与生态」之间按训练、推理和边缘场景下注。