跳转至

主流芯片架构与微架构

芯片学习的关键不是记住型号参数,而是建立一套能跨厂商复用的比较坐标:工作负载怎样被切分,计算在哪里发生,数据怎样移动,软件通过什么接口控制硬件。

先分清三个层次

层次 回答的问题 示例
指令集架构(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 / 专用互连]

分析时固定回答以下问题:

  1. 最小调度单位是什么,谁负责分配和同步?
  2. 标量、向量、矩阵与特殊函数分别由什么单元执行?
  3. 哪些存储由硬件缓存,哪些需要软件显式管理?
  4. 数据在计算阵列、片上存储和片外存储之间走哪条路径?
  5. 峰值吞吐受哪些形状、精度、稀疏和对齐条件约束?
  6. 编译器能否表达目标映射,还是需要手写 kernel/内建函数?

本章路线

先用 NVIDIA A100 架构图解 建立完整的 GPU 层次:

芯片 → GPC/TPC → SM → Warp/Thread → 寄存器/L1/L2/HBM

再用 Groq LPU 架构图解 对照软件定义的张量流处理器:

Tensor Graph → 静态时空调度 → MEM/MXM/VXM/SXM → Stream → 多 LPU 流水

后续新增其他芯片时,沿用同一模板:

  • 产品与完整 Die 的资源边界;
  • 计算核心/矩阵单元的微架构;
  • 访存层次、地址空间与数据路径;
  • 编程模型到硬件调度单位的映射;
  • 一个代表性算子的 Roofline 或数据流分析;
  • 官方规格、实测与推断分别标注。

延伸阅读