NPU 与 TPU 架构对比:名字不同,内核都是 MAC 阵列
更新时间:2026-09-25。AI 加速器入门讲了 NPU/GPU 为什么比 CPU 快、MAC 阵列是什么,但留下一个绕不开的问题:新闻里的名字越来越多——谷歌叫 TPU,华为叫 NPU、昇腾,苹果叫神经引擎,高通叫 Hexagon NPU,它们到底是几种芯片?这一篇给出的答案有点反直觉:名字是按厂商和出身起的,芯片内部的计算内核其实高度相似——都是一大片乘加阵列、配一片 SRAM、跑低比特量化。差别主要在规模、精度、片上互联和软件栈四件事上。阵列怎么吃数据(权重驻留、输出驻留)涉及的复用套路,见同日并行稿数据复用与权重驻留;数据中心各家整卡的横向数字,见数据中心 AI 加速卡对比。
本文要回答的问题
- TPU 和 NPU 是两种不同的架构吗?为什么芯片内部看上去几乎一样?
- 谷歌 TPU 代际怎么从「只做推理」走到「推理训练通吃」?典型算力是多少 TOPS?
- 华为达芬奇的 Cube、手机 SoC 里的 NPU 和 TPU 的脉动阵列是不是一回事?
- 既然内核相似,各家芯片真正分高下的地方在哪里?
- NPU/TPU 和 GPU 的边界在哪?为什么说 GPU 也在长出「张量核」?
一、先看谱系:名字按出身起,内核按张量长
把市面上的 AI 芯片按「出身」摆一摆,谱系其实很清楚。TPU(Tensor Processing Unit)是谷歌 2015 年前后为自家数据中心自研的 ASIC,2016 年论文公开,初衷很朴素:当时推理大量跑在 CPU 上,既贵又费电,谷歌要一块专门干神经网络、别的一概不做的芯片。NPU(Neural Processing Unit)这个叫法更早来自移动端和学术界,华为 2017 年在麒麟 970 里集成寒武纪 IP、2018 年公布自研达芬奇架构后大规模使用,随后苹果(神经引擎 ANE)、高通(Hexagon NPU)、联发科(APU)在手机 SoC 里各自起名,但本质都是同一个位置上的 IP 核。
名字的混乱还可以再追一层。麒麟 970 当年搭载的 NPU 实际是寒武纪设计的 IP,后来华为转用自研达芬奇;高通的「AI Engine」是 CPU、GPU、DSP、NPU 多引擎协同的营销总称,真正跑矩阵的是 Hexagon 里的张量加速器;谷歌自己在手机端的 Tensor 芯片,内部计算单元又叫 TPU。名字里混着架构、产品和营销三层含义,不能望文生义。但把这些名字的外壳剥掉,会发现各家在白皮书里画的计算内核越来越像——业内干脆用「统一张量核」来概括这种收敛:一颗核既能跑卷积,也能跑 transformer 里的矩阵乘,靠的都是同一片可缩放的 MAC 阵列。
这张图想说的核心就一句话:三条分支共享同一个祖先——把矩阵乘法交给专用 MAC 阵列。所以比较 TPU 和 NPU,不该问「架构有什么不同」,而该问「同一个阵列思路,各自放大或缩小到了什么程度」,再看它配套的内存、互联和编译器做到了哪一步。
二、共同的骨架:MAC 阵列 + 片上 SRAM + 控制 + 量化
不论叫什么名字,一颗 AI 芯片剖开都是五块东西。第一是 MAC 阵列,几十到几百个乘加单元组成的网格,承担 99% 的计算;第二是片上 SRAM,紧挨着阵列放权重和激活,让数据在芯片内部被反复复用,不去碰昂贵的片外访存——这正是数据复用与权重驻留展开的话题;第三是控制单元,一个小控制器加指令流,负责把一层网络的算子编排成阵列的时序;第四是量化/后处理通路,乘加前后做 INT8 与浮点的换算,以及池化、激活函数;第五是接口与 DMA,数据中心走 PCIe 加 HBM,手机里走 AXI 总线共享 LPDDR。
骨架相同,工程参数却天差地别。TPU 第一代用 256×256 的 8 比特 MAC 方阵,单芯片 INT8 峰值约 92 TOPS,配 28MB 的统一缓存,整块 PCIe 板功耗约几百瓦;手机 NPU 里的阵列常常只有它的几十分之一,占几个平方毫米,SoC 整体功耗只有几瓦。同样的五块积木,按数据中心和手掌两个极端各搭一遍,就是 TPU 和移动 NPU 的全部物理差异。
值得多说一句的是「量化」在骨架里的位置。神经网络训练通常用 FP32,但推理时权重大多落在一个很窄的数值区间里,把每层的数值范围线性映射到 INT8,乘加器面积和功耗大约降到四分之一,搬运的数据量只剩四分之一,整网精度往往只掉一个百分点以内。手机端为了端侧大模型,近两年进一步卷到 INT4,并在阵列旁保留少量 FP16 通道给敏感层做混合精度。量化不是可有可无的压缩技巧,它直接决定阵列造多大、SRAM 配多少,是和 MAC 阵列同等重要的一级设计决策。
三、TPU 这条线:脉动阵列 + INT8 起家,代际补上训练
第一代 TPU 的设计取舍非常能说明「专用」二字的含义。它只做推理、不做训练:推理的算子规整,量化到 INT8 后精度损失很小,于是阵列全部按 8 比特整数造,控制单元简单到几乎是个矩阵乘法协处理器,主机通过 PCIe 把任务发给它。配合 CISC 风格的十二条左右专用指令,它在 28nm 工艺上做到约 92 TOPS,对比同期同时代 CPU/GPU,每瓦推理算力拉开一个数量级。
从第二代开始,TPU 转向推理与训练通吃:精度引入 bfloat16(动态范围和 FP32 相同、尾数更短,训练数值稳定又省硅),片外内存换成 HBM,芯片之间加上专用高速互联(ICI),多颗组成 pod 像一台巨型机器一样做矩阵分片。此后 v3 强化 bfloat16 与液冷,v4 引入光互联、pod 规模扩到数千颗,v5/v6 一代继续在稀疏、FP8 和训练性价比上迭代。软件侧始终围绕 XLA 编译器和 JAX,PyTorch 则通过 PyTorch/XLA 接入——开发者写的是高层算子,编译器负责把整张计算图铺到脉动阵列上。
第一代 TPU 还有一个容易被忽略的取舍:片外内存用的是普通 DDR3,带宽只有每秒几十 GB 级别,因为推理时权重加载一次就能在 28MB 统一缓存里反复用,瓶颈不在显存带宽。训练时代这条假设完全失效——梯度、优化器状态、前向中间激活都要反复读写,所以从 v2 起 HBM 和高带宽成为标配,pod 的规模也水涨船高:v3 pod 把上千颗芯片用互联织在一起,bfloat16 总算力冲到每秒一百亿亿次浮点运算(100 PFLOPS)的量级。
这条演进线的逻辑值得记住:先用极端专用(大 INT8 阵列)拿下推理成本,再靠抬精度(bfloat16/FP8)、堆 HBM、做芯片间互联,把训练也吃掉。 训练比推理多的不是乘加器,而是反向传播带来的数据搬运和多芯片同步——这也是为什么衡量一颗训练芯片,只看 TOPS 几乎没有意义,带宽、互联延迟和编译器的并行切分能力同样决定最终成绩。
四、NPU 这条线:达芬奇 Cube 与手机 SoC 里的小阵列
华为达芬奇架构最有辨识度的是 3D Cube:把 MAC 单元堆成 16×16×16 的立方体,一个时钟周期可完成 4096 个 FP16 乘加,下面再配向量单元和标量单元处理非矩阵算子。Cube 本身和 TPU 的脉动阵列是同一思路的两种摆放——一个在二维平面上让数据脉动,一个在三维块里把矩阵乘切成立方。同一套达芬奇微架构向上放大成昇腾 910 这类训练芯片(FP16 算力约 256 TFLOPS 量级,配 HBM 和多芯片互联),向下缩小成昇腾 310 这类十几瓦、INT8 算力约十几 TOPS 的边缘推理芯片,这恰好演示了「一套内核、按规模缩放」的产品打法。
手机 SoC 里的 NPU 则把「省」字做到极致。早期麒麟 970 的 NPU 算力约 1.9 TOPS(FP16),主要加速实时图像风格化和拍照语义;几年之间,苹果 A17 Pro 的神经引擎做到约 35 TOPS,高通骁龙 8 Gen 3 的 Hexagon NPU 标称约 48 TOPS,联发科天玑 9300 的 APU 79 把卖点放在端侧跑 70 亿参数大模型。算力数字几十倍上涨,但任务也在变:从 ISP 里抠图、语音助手唤醒,一路扩展到生成式 AI 的文本生成。它们的共同点是作为 IP 核挂在 SoC 内部,和 CPU、GPU、ISP 共享 LPDDR,通过厂商 SDK(华为 HiAI/CANN、Core ML、Hexagon NN)把算子编译到小阵列上。
移动端还有两个数据中心没有的硬约束。一是常驻功耗:语音唤醒、人脸解锁要在主系统休眠时由一小块低功耗岛持续待命,这类场景的关键指标不是峰值 TOPS,而是毫瓦级平均功耗,所以手机常把 NPU 拆成大阵列加微小阵列两档,按负载上电。二是实时性:拍照按下快门到出片只有一两百毫秒,NPU 要和 ISP 流水级协同做夜景多帧融合、语义分区、视频超分,延迟超标比算力不足更不可接受。也正因为任务碎片化、每家调度方式不同,手机 NPU 的软件栈往往比 TPU 更封闭,应用一般通过操作系统提供的机器学习接口间接调用,而不是直接对阵列编程。
五、真正分高下的四个维度:规模、精度、互联、软件栈
内核相似,不意味着芯片等价。选型时真正该比较的是下面四个维度。规模决定单颗芯片能摊多大的矩阵:TPU 一代 256×256、Cube 16×16×16,手机 NPU 更小,但大模型的矩阵可以切块喂给小阵列,只是效率和延迟不同。精度决定能做什么:纯 INT8/INT4 只适合推理,bfloat16/FP16 是训练门槛,FP8 是新一代训练与推理的甜点;GPU 还保留 FP64/TF32,覆盖面最宽。片上与片间互联决定多芯片协同:手机 NPU 只需 AXI,数据中心芯片则要 HBM、片上网络加芯片间光/电互联,这部分硅面积和功耗在大模型时代直追阵列本身。软件栈决定可用性:专用 ASIC 强依赖自家编译器对网络结构的支持,新算子往往要等编译器或用仿真兜底,这是专用路线对 GPU 最大的短板。
| 维度 | TPU(数据中心 ASIC) | 手机 / 边缘 NPU | GPU(含 Tensor Core) |
|---|---|---|---|
| 阵列形态 | 大尺寸脉动方阵(如 256×256),权重驻留 | 小阵列或单/多个 Cube,占几 mm² | SIMT 海量线程核内嵌入矩阵单元,tile 小而核多 |
| 数据通路 | HBM + 大容量片上 SRAM + ICI 多芯片互联 | 片上 SRAM + AXI 共享 LPDDR | HBM/GDDR + 片上网络,NVLink 多卡互联 |
| 支持精度 | INT8 起家,现主打 bfloat16/FP8,推理训练通吃 | INT8/INT4 为主、部分 FP16 | FP64/TF32/FP16/bfloat16/FP8/INT8 全覆盖 |
| 典型算力 / 功耗 | 一代约 92 TOPS INT8;整卡/整机数百瓦 | 旗舰 SoC NPU 标称约 35~48 TOPS,SoC 几瓦到十几瓦 | H100 级 INT8/FP8 稠密约 2000 TOPS 量级,整卡约 700W |
| 典型场景 | 云端批量推理、大模型训练 pod | 拍照语义、语音、端侧 7B 级大模型 | 训练推理通吃、图形渲染、科学计算 |
| 软件栈 | XLA、JAX、PyTorch/XLA,通用性弱 | 各厂 SDK:CANN/HiAI、Core ML、Hexagon NN | CUDA、cuDNN、TensorRT,生态最厚 |
六、与 GPU 的边界:专用阵列与通用 SIMT 在互相靠拢
最后划清和 GPU 的边界。传统 GPU 的本体是 SIMT(单指令多线程):几千个小核按 warp 调度,用海量线程掩盖访存延迟,什么算子都能写,灵活性接近并行 CPU。NPU/TPU 则反过来,阵列的数据流是编译期排好的,一个时钟周期整片网格同步推进,灵活性低但每瓦矩阵算力高。边界从 2017 年起开始模糊:英伟达在通用核里塞进 Tensor Core——一小片专用矩阵阵列,由 SIMT 线程喂数;AMD 有矩阵核心(Matrix Core),手机 GPU 也开始加矩阵指令。于是 GPU 变成「通用并行外壳 + 专用张量内核」。
读这张表时要给 TOPS 数字去点水分。厂商口径里 INT8、FP16、FP8 的 TOPS 不能直接横向比较——一次 FP16 乘加的硬件代价大约是 INT8 的四倍;有的数字按「乘加算两次运算」给出,有的按稀疏化后的理论峰值给出,翻倍很常见。真正有参考价值的比法,是在同一精度、同一稠密口径下比,再结合公开的模型实测(每秒处理多少张图、多少 token)。同一份生成式推理负载跑到各家整卡上的差距,往往和标称 TOPS 的排序并不一致。
互联这一维度值得单看一眼,因为它正在改写芯片的成本结构。大模型单层的矩阵乘可以切到几十上百颗芯片上并行,切完之后每一步都要跨芯片同步中间结果,互联带宽不够,阵列就会停下来等邻居。TPU 的 ICI 走闭环拓扑、每颗芯片对外有数百 GB/s 量级的专属带宽,GPU 用 NVLink 回应,手机 NPU 则完全没有这一层——它的「多芯片」最多是和同一个 SoC 里的 GPU、ISP 协作。所以「同一颗内核」放大到数据中心时,新增的硅和功耗有一大半花在阵列之外,这也是单看 TOPS 会严重误判成本的原因。
反过来,TPU/NPU 也在补通用性:越来越丰富的指令、对稀疏和非线性算子的硬件支持、让 PyTorch 程序尽量少改就能跑,新一代 TPU 还加入了对嵌入户外代码(自定义算子)的通路。两边在向中间走,但侧重不变:GPU 用一部分效率换通用性和软件生态,TPU/NPU 用一部分通用性换批量负载下的每瓦成本。 网络结构越标准、批量越大、部署越久,专用 ASIC 越划算;模型快速演进、算子五花八门、还要兼顾图形与科学计算,GPU 的护城河就越宽。对采购和架构选型而言,务实的做法通常不是二选一,而是按负载比例混合部署:长尾和新模型留在 GPU,稳定、量大、延迟可预测的主力推理逐步沉淀到 TPU/NPU,让每一类芯片都待在自己效率曲线最舒服的区间里。云端 TPU 与 GPU 整卡的正面数字较量,可对照数据中心 AI 加速卡对比。
这一篇在知识体系里的位置
- 想补 NPU 为什么比 CPU 快、MAC 和 TOPS 的基础概念 → AI 加速器入门;
- 想深入阵列怎么摆放、权重驻留与输出驻留的复用套路 → 数据复用与权重驻留;
- 想看 H100、TPU、各家整卡的算力功耗与互联数字 → 数据中心 AI 加速卡对比;
- 想看 GPU 一侧的显存带宽与多卡互联 → HBM GDDR 显存、多 GPU 与 NVLink 互联。
总结
一句话总结:NPU 和 TPU 的名字是按厂商出身起的——TPU 是谷歌为数据中心自研的 ASIC,NPU 是移动端起家、华为达芬奇与手机 SoC 各家沿用的叫法,但内核架构高度相似,都是「MAC 阵列 + 片上 SRAM + 控制单元 + 量化通路 + DMA 接口」这同一副骨架,差别只在工程参数:TPU 一代用 256×256 的 INT8 脉动方阵做到约 92 TOPS、只做推理,二代起改 bfloat16、上 HBM 和芯片间互联、代际补全训练;达芬奇用 16×16×16 的 Cube 一个时钟完成 4096 个 FP16 乘加,向上放大成约 256 TFLOPS 量级的昇腾训练芯片、向下缩成十几瓦边缘芯片,手机 NPU 则从约 1.9 TOPS 演进到旗舰标称 35~48 TOPS、端侧跑 70 亿参数模型;各家真正分高下的是阵列规模、精度覆盖(INT8/INT4 推理、bfloat16/FP16 训练、FP8 甜点)、片上与片间互联、以及软件栈四个维度,专用 ASIC 强依赖自家编译器是其对 GPU 的最大短板;而 GPU 一边用 SIMT 海量线程保通用、一边嵌入 Tensor Core 长出张量内核,H100 级 INT8/FP8 稠密算力约 2000 TOPS、整卡约 700W,双方正在互相靠拢却侧重不变——网络越标准、批量越大越适合 TPU/NPU,模型快速演进、算子多样则 GPU 凭 CUDA 生态守住护城河。