主流芯片架构与微架构¶
芯片学习的关键不是记住型号参数,而是建立一套能跨厂商复用的比较坐标:工作负载怎样被切分,计算在哪里发生,数据怎样移动,软件通过什么接口控制硬件。
先分清三个层次¶
| 层次 | 回答的问题 | 示例 |
|---|---|---|
| 指令集架构(ISA) | 软件可以要求硬件做什么? | 标量/向量/矩阵指令、同步、地址空间、异常语义 |
| 微架构(Microarchitecture) | 硬件具体怎样兑现 ISA? | 流水线、发射宽度、SM、缓存、张量核、片上网络 |
| 芯片/产品(Product) | 实际启用了多少资源,如何封装? | 核心数、HBM 容量、频率、功耗、PCIe/SXM 形态 |
同一 ISA 可以有不同微架构,同一微架构也可以裁剪成多个产品。比较芯片时,如果把这三层混在一起,很容易把产品规格误当成架构规律。
四类计算组织¶
flowchart LR
W[AI 工作负载] --> CPU[CPU<br/>低延迟控制与通用计算]
W --> GPU[GPU<br/>SIMT 与高吞吐并行]
W --> VEC[向量 / 矩阵处理器<br/>规则张量计算]
W --> DSA[领域专用加速器<br/>固定或半可编程数据流] | 维度 | CPU | GPU | 向量/矩阵处理器 | 领域专用加速器 |
|---|---|---|---|---|
| 并行抽象 | 线程、SIMD | Grid/Block/Warp、SIMT | 向量、Tile、矩阵指令 | 张量图、数据流、命令队列 |
| 控制能力 | 强 | 中等,偏吞吐 | 规则循环优先 | 常牺牲通用性换效率 |
| 片上存储 | 多级硬件缓存 | 寄存器 + L1/共享内存 + L2 | 向量寄存器/片上 SRAM | 显式 Scratchpad / Buffer |
| 典型优势 | 分支、串行段、系统软件 | 通用并行与成熟生态 | 密集线性代数 | 能效、确定性、特定算子 |
| 常见限制 | 吞吐与内存带宽 | 分支发散、数据搬运 | 不规则访问与利用率 | 算子覆盖、编译器成熟度 |
不要只问谁的 TOPS 更高
峰值算力只有在目标数据类型、矩阵形状、稀疏模式和软件路径都能使用对应单元时才有效。还要同时比较容量、带宽、片上复用、互连、编程模型和实际 kernel 覆盖率。
统一拆解一颗 AI 芯片¶
flowchart TB
SW[软件契约<br/>编程模型 / ISA / Runtime] --> CTRL[控制与调度<br/>命令处理 / 同步 / 发射]
CTRL --> COMP[计算阵列<br/>标量 / 向量 / 矩阵]
COMP <--> ONCHIP[片上存储<br/>寄存器 / Cache / SRAM]
ONCHIP <--> NOC[片上互连<br/>Crossbar / NoC]
NOC <--> OFFCHIP[片外存储<br/>HBM / DDR]
NOC <--> IO[芯片间与主机 I/O<br/>PCIe / CXL / 专用互连] 分析时固定回答以下问题:
- 最小调度单位是什么,谁负责分配和同步?
- 标量、向量、矩阵与特殊函数分别由什么单元执行?
- 哪些存储由硬件缓存,哪些需要软件显式管理?
- 数据在计算阵列、片上存储和片外存储之间走哪条路径?
- 峰值吞吐受哪些形状、精度、稀疏和对齐条件约束?
- 编译器能否表达目标映射,还是需要手写 kernel/内建函数?
本章路线¶
先用 NVIDIA A100 架构图解 建立完整的 GPU 层次:
芯片 → GPC/TPC → SM → Warp/Thread → 寄存器/L1/L2/HBM
再用 Groq LPU 架构图解 对照软件定义的张量流处理器:
Tensor Graph → 静态时空调度 → MEM/MXM/VXM/SXM → Stream → 多 LPU 流水
后续新增其他芯片时,沿用同一模板:
- 产品与完整 Die 的资源边界;
- 计算核心/矩阵单元的微架构;
- 访存层次、地址空间与数据路径;
- 编程模型到硬件调度单位的映射;
- 一个代表性算子的 Roofline 或数据流分析;
- 官方规格、实测与推断分别标注。