07 ISA 与编程模型洞察
- 章节编号:07
- 所属层:I 软硬接口层(最高优先级红线:随 RTL 冻结后软件几乎无法补救)
- 关联 ADR:ADR-018(ISA 抽象层级)、ADR-019(兼容策略:编译兼容 vs 二进制兼容)、ADR-020(基础 ISA:RISC-V + 自定义扩展)、ADR-021(编程模型)
- 上游依赖:01(batch≈1、VLA 演进快)、02(数据流/混合精度)、03(软件管理 SRAM)、04(异构/统一内存)
学习目标
- 前置知识:读过 01–04 章(负载画像、数据流/混合精度、软件管理 SRAM、异构/统一内存);理解「指令集是软硬件契约」这一基本概念;知道 GEMM(通用矩阵乘)、SIMT、DMA 是什么即可。无需写过 CUDA/CANN 算子。
- 学完产出:① 能说清 ISA 抽象层级从标量→向量→张量级 CISC 的谱系,并解释「为什么 batch≈1 的具身负载偏向张量级粗粒度指令 + 软件管理片上内存」;② 能对比 SIMT 隐式延迟掩盖 与 VLIW/DSA 显式流水编排 两种延迟工程哲学,理解它如何直接决定「从 GPU 迁移到自研 DSA」的真实成本;③ 能论证「可编程性红线」为什么决定 VLA 演进速度——用地平线封闭 BPU 作反例,说清「新算子上不了主算力单元」的系统性风险;④ 能算一笔账:「80/20 算力集中 vs 算子数量长尾」如何决定「编译器兑现 vs 手写算子」的覆盖权衡;⑤ 能复述本章 四条 ADR(张量 CISC + 编译兼容 + RISC-V 控制核 + MLIR 托管)的因果链,并解释每条为何服务于「创业公司 + VLA 快速演进」这一约束。
- 阅读姿势:盯住一条主线——「ISA 是随 RTL 一起冻结的、几乎无法回滚的软硬件契约,它决定了未来三代硬件能不能跑得动还没被发明出来的 VLA 模型」。本章的每一个判断,本质都在回答同一个问题:如何在「能效(要粗粒度、要专用)」与「可编程性(要能跑新模型)」之间划一条不会在两年后把自己逼死的线。
1. 范围与目标
ISA 与编程模型是软硬件的契约:它决定编译器能表达什么、硬件能高效执行什么、以及未来能否平滑演进。对创业公司,这一层定错=全栈返工。
核心问题
- 指令抽象层级/粒度:标量?向量?张量级(粗粒度 CISC)?可重构?
- 兼容策略:二进制兼容(锁死硬件)还是编译兼容(只保证重编译,硬件可演进)?
- 基础 ISA:自研私有,还是 RISC-V + 自定义张量/向量扩展?
- 编程模型:SIMT?显式数据流?张量级 + 编译器托管?暴露给谁(编译器 vs 用户)?
2. 需求洞察(承接 01–04 章)
- batch≈1 高效:TPU 经验——数据放进片上(VMEM)即可在小 batch 下打满算力(VMEM 带宽约 HBM 22×,算术强度 10–20 即达峰值);ISA 必须能显式管理片上内存 + DMA(关联 03/08)。
- VLA 演进快:π0/OpenVLA 等结构快速变化 → ISA 须留可编程余量,避免锁死单一算子模式(否则新模型跑不动)。
- 确定性:1kHz 控制 → 倾向静态可调度、时序可预测的指令语义(关联 02/13)。
- 能效:软件管理 scratchpad + 显式 DMA(减 DRAM 往返)是能效根本(03 章)。
- 可驾驭(AI-Native + MLIR):ISA 须对 MLIR 后端友好,使编译自动生成可达高性能(15/16 章),且团队 17→37 人能驾驭。
3. 技术现状与趋势(点名 + 来源)
3.1 指令抽象层级:从细粒度到张量级 CISC
- 领域专用 ISA(DSA-ISA):在 RISC 基础上进一步裁剪到 AI 所需子集(线性代数 + 激活),简化软硬接口与硬件(Adi Fuchs)。
- TPU:张量级 CISC——约 12 条指令、含 repeat 字段、CPI 10–20;
MatrixMultiply/Read_Weights等粗粒度指令 + 软件管理 Unified Buffer(v1 24MiB)/CMEM(v4 128MB);可编程 DMA + 解耦访问/执行(decoupled access/execute)隐藏延迟。 - NVIDIA:虚拟 ISA(PTX)+ SASS + SIMT——可编程性最强,但 SIMT 控制开销/能效不如 DSA。
- 控制/计算比:TPU 单标量核控制 VPU(4096 ALU)+ 4 MXU + DMA → 控制开销极低=能效高,但数据依赖的灵活向量化受限。
- 判断:主算力走张量级粗粒度指令(CISC 风格) 取能效,辅以向量/标量指令补灵活性(对标华为达芬奇 cube+vector+scalar 三流水)。
3.1a 三种指令粒度的「一条指令干多少活」谱系
要理解「粒度」这个抽象概念,最直观的方式是问:编译器发一条指令,硬件到底吞下多少数据、算多少个 MAC。粒度越粗,单条指令承载的运算越多,控制/取指开销被摊得越薄——但灵活性越低。下图把这条谱系摊开:
读这张图的关键:三档不是「谁好谁坏」,而是在同一条「能效 ↔ 可编程性」轴上的不同取样点。具身芯片的算力主体(GEMM/Attention 占 80% 以上算力)天然适合最粗的张量级 CISC 取能效;但 VLA 长尾里的不规则算子(动态 mask、cross-embodiment reshape)又逼你保留向量/标量这两档更细的粒度。07 章的整个 方案,本质就是「主体走最右档,尾部留中间/左档逃生口」。
3.2 兼容策略:编译兼容(而非二进制兼容)
- TPU 关键设计:采用编译器兼容而非二进制兼容 → 架构师可跨代演进 ISA(加宽 VLIW、加 4D 张量 DMA、换计算单元)而不受历史包袱;模型首次评估时编译、缓存程序镜像。
- 判断:创业公司 + VLA 快速演进,强烈采用"编译兼容"——只承诺源码/IR 重编译可用,不承诺二进制跨代兼容,换取硬件迭代自由。这与 MLIR 全栈天然契合。
3.3 基础 ISA:RISC-V + 自定义扩展
- 趋势:RISC-V 成开放标准,单 RISC-V 核可集成多个加速器为自定义指令;模块化在制造成本与吞吐间折中(开放 ISA 研究)。
- 判断:标量控制核用 RISC-V(生态/工具/可控/无授权费),张量/向量为自定义 DSA 扩展或协处理器;避免从零造通用 ISA。