---
author: Best Partners TV
date: '2026-05-31'
guest: ''
layout: post.njk
source: https://www.youtube.com/watch?v=qjqHRIEQcVA
speaker: Best Partners TV
tags:
  - ai-chip-architecture
  - matrix-multiplication
  - data-movement-efficiency
  - hardware-logic
title: AI芯片内部计算原理与架构权衡解析
summary: 前谷歌TPU架构师、MatX CEO莱纳·波普深入解析AI芯片的底层逻辑。节目涵盖了从基础的逻辑门、乘加运算，到脉动阵列、数据搬运与时钟周期等核心架构权衡，探讨了如何通过硬件设计最大化计算效率，并对比了CPU、GPU、FPGA与ASIC在内存系统及确定性延迟上的不同哲学。
insight: ''
draft: true
series: ''
category: ai-ml
area: tech-engineering
project: []
people:
  - Reiner Pope
  - Dwarkesh Patel
companies_orgs:
  - MatX
  - Google
  - NVIDIA
products_models:
  - TPU
  - GPU
  - B300
  - Tensor Core
  - FPGA
  - ASIC
  - HBM
media_books: []
status: evergreen
---
大家好，这里是最佳拍档，我是大飞。前几天我们做过一期节目，借助 **MatX** CEO、前谷歌TPU架构师**莱纳·波普**（Reiner Pope）在**Dwarkesh Patel**的一期播客，给大家介绍了Token是如何进行定价的。今天我们再来分享最新的一期播客节目，一起跟随莱纳·波普在黑板上的粉笔，来看看AI芯片的内部是如何一步一步计算的。

### 芯片原语与乘加运算的逻辑基础

莱纳从芯片最底层的原语——**逻辑门**（Logic Gate: 用于执行基本逻辑运算的硬件基础电路）开始，包括与门（AND）、或门（OR）和非门（NOT），它们通过金属导线连接在一起。我们现在都知道，AI芯片的核心任务是矩阵乘法，而矩阵乘法内部最基本的操作就叫做**乘加运算**（Multiply-accumulate: 将两数相乘并加到累加器里的基础计算操作）。为什么乘加是天然的原语呢？大家看看这个矩阵乘法的伪代码就明白了，每一步循环都在做乘加。

而且AI芯片还有一个特点，那就是乘法用的是低精度，比如FP4，而累加需要更高的精度，比如FP8，因为误差会在累加过程中累积。莱纳用了一个4比特乘以4比特的例子在黑板上手算了一遍。其中，要产生所有的部分积，就需要p×q个与门，所以4比特乘以4比特就是16个。但是这些与门还只是开胃菜，真正的功夫在求和，求和的工具叫做**全加器**（Full Adder: 在芯片层面将三个单比特数相加，输出两个比特的电路）。我们一般会认为全加器是加32位数的，但是在芯片层面，它其实只加三个单比特数，也就是输入三个比特，输出两个比特。比如0+1+1=2，但是2的二进制是10，相当于三比特信息压缩成了两比特。换句话说，全加器就是要数一数这一列里有多少个1，然后把它们用二进制表示出来。

莱纳在黑板上演示了一种名为**Dadda乘法器**（Dadda Multiplier: 一种通过不断从列中取出三个比特输入，输出两个比特，压缩比特网格的算法）的算法。它需要把所有需要加的比特排成网格，然后用全加器不断从每一列取出三个比特，输出两个比特，反复操作，直到最后只剩下一个数。那么，一个4比特乘以4比特的乘加运算，究竟需要多少个全加器呢？答案是p×q个，也就是16个。公式很简单，输入有p×q + (p+q)个比特，输出有p+q个比特，每用一个全加器消灭一个比特，所以需要p×q个。这背后其实揭示了一个关键规律，那就是乘法器的面积和比特位宽是平方关系，所以精度减半，理论上算力应该增加4倍。**英伟达**在**B300**及之后的芯片规格中，已经开始承认这一点，明确指出FP4的性能是FP8的3倍，当然从理论上来讲应该是4倍。

### 脉动阵列：解决数据搬运的成本矛盾

真正的震撼在后面。随后，莱纳把视角拉远，在一个传统的CUDA核心或者CPU核心里，乘法器旁边是一个**寄存器堆**（Register File: 存放运算操作数的存储区域），里面存放着一些操作数。所以，要想进行乘加操作，就需要从寄存器堆里随机读取三个数，送给乘法器，再把结果写回到寄存器堆里。那么该怎么做到随机读取呢？这就要靠一个名为**多路选择器**（Mux/Multiplexer: 用于在不同寄存器间选择数据流的电路）的电路了。对于一个n路的Mux，假设每个寄存器存p个比特的数据，那么就需要n×p个与门加上(n-1)×p个或门。假设寄存器堆有8个条目，每个4比特，那么读取三个操作数需要3×8×4=96个与门，而乘加器本身只需要p×q=16个与门。显然，光是搬运数据的电路，就是计算电路的好几倍。这还只是最小的寄存器堆，莱纳说，在这个设计里，大约7/8的成本都花在了数据的读写上，只有1/8花在真正的计算上。这就是芯片设计中最核心的矛盾：你关心的计算占的面积其实很小，而你不关心的数据搬运却花了最多的面积。

在Volta架构出现之前，英伟达GPU的CUDA核心就是前面说的这个样子，大部分面积都被数据搬运吃掉了。不过，**Tensor Core**的出现改变了这一切，而它背后的核心思想就是**脉动阵列**（Systolic Array: 一种通过将权重固化在硬件中，大幅降低数据搬运需求的矩阵乘法电路）。它是怎么解决数据搬运太贵的问题的呢？思路很巧妙，那就是往上走一层循环。之前我们会把一次乘加固化到硬件里，而现在我们是把一整段矩阵乘法循环固化到硬件里了。这会带来两个关键的优化：第一，让单位数据搬运能做更多的计算；第二，利用矩阵乘法的一个特性，也就是权重矩阵可以长期保持不变。

具体做法是，把权重矩阵直接存储在脉动阵列里面，不来回搬。输入向量从左到右流入，每一列做一次点积，结果从底部流出，然后把权重存在本地寄存器里，这样它可以被反复使用，不需要每次都从寄存器堆重新加载。但是权重矩阵一开始是怎么装进去的呢？答案就是慢慢灌，通过采用**菊花链**（Daisy Chain: 一种串行加载数据的结构，在此处用于逐周期加载权重矩阵）的方式，一个时钟周期加载一行，总共花y个时钟周期把整个矩阵装好。因为权重会停留很长时间，所以加载慢一点没关系，关键是加载的带宽被控制在了O(x)，而不是O(x*y)的复杂度上。其实，芯片设计的每一个层级实际上都是在做同一件事，那就是最大化计算相对于通信的比例。

### 芯片同步、FPGA与缓存设计的权衡

一块芯片有1000亿个晶体管在同时并行工作，它们该如何同步呢？这就要靠一个全局的时钟信号了，大约每一纳秒一次，让芯片上所有的电路暂停并对齐，然后同时迈出下一步，这就是时钟周期。时钟周期的瓶颈在于两个寄存器之间的**逻辑云**（Logic Cloud: 两个寄存器之间的组合逻辑部分）延迟。简单来说，如果这段逻辑太复杂，信号在下一次时钟脉冲到来之前来不及稳定，就会出错。因此，芯片设计师会留出一定的富余量，确保在25%的时钟周期内就能完成。如果把逻辑云劈成两半，中间插一个流水线寄存器，时钟频率就能翻倍，但是代价就是存储面积变大了。更棘手的是存在反馈回路的情况，这种回路是所有芯片都会遇到的硬约束，也是决定时钟周期的最终因素。

我们再来说**FPGA**和**ASIC**，他俩其实用的是同一套概念模型，也就是逻辑门加连线，在固定的时钟周期下工作。FPGA适合那些需要确定性延迟、高并行度、但是工作负载经常变化的场景，不过，一旦进入大规模量产，ASIC的单片成本就会远低于FPGA，且实现同样的逻辑功能，FPGA消耗的硅面积是ASIC的大约10倍。那么，FPGA是怎么做到可编程的呢？核心其实在于寄存器、**查找表**（LUT/Look-Up Table: 存储真值表配置来实现逻辑功能的电路）、以及随处可见的多路选择器。FPGA的编程本质上就是配置所有这些多路选择器的控制位，告诉它应该从哪个邻居取数据。

在CPU层面，莱纳指出，CPU的非确定性延迟最大的来源其实是**缓存**（Cache: 用于自动记录并加速内存访问的存储系统）。CPU缓存比主存（DDR）快两个数量级，但是数据是否命中缓存取决于CPU的环境，这引入了不确定性。而AI芯片换了一种设计哲学，叫做**暂存器**（Scratchpad: 一种由软件显式管理数据存放位置的片上存储器，可实现确定性延迟）。它不用硬件自动判断数据在哪，而是给软件两种不同的指令，相当于把数据在哪的决定权从硬件交还给了软件。这也是为什么Groq和TPU可以宣称自己有确定性延迟的原因，因为它们用的是暂存器而不是缓存。

### 大脑启示与架构总结

如果我们从神经科学的角度来看，人类大脑和芯片有什么区别呢？莱纳的解释是：第一个区别是稀疏性，芯片做结构化稀疏，而大脑是非结构化稀疏；第二个区别是时钟频率，大脑更慢是为了节能，而芯片跑得慢并不一定等效于能效高，因为闲置期间不耗什么电；第三个区别是批次大小，GPU跑推理时的批次可能很高，而大脑只有一个。

最后，莱纳给出了一个令人印象深刻的高度概括：从顶层架构看，GPU就是一堆小的TPU平铺在整个芯片上。具体来说，GPU由很多近乎相同的流式多处理器（SM）组成的，排列成规则的网格；而TPU只有几个粗粒度的矩阵单元（MXU），中间夹着一个向量单元。这两种设计各有取舍，TPU的粗粒度设计让单个脉动阵列更大，更好地摊销了寄存器堆的成本，但数据搬运灵活性稍低；而GPU通过有更多路径，数据搬运的灵活性更高。这就是MatX正在尝试做的事情：既要有GPU那样被SRAM包围的小型脉动阵列的灵活性，又要丢掉SM里为支持CUDA架构而存在的大量占用面积的东西。

芯片就像是一个层层叠叠、处处权衡的世界一样，而所有权衡的核心，始终指向同一个问题，那就是如何让计算跑赢通信。