跳到主要内容

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 与编程模型是软硬件的契约:它决定编译器能表达什么、硬件能高效执行什么、以及未来能否平滑演进。对创业公司,这一层定错=全栈返工。

核心问题

  1. 指令抽象层级/粒度:标量?向量?张量级(粗粒度 CISC)?可重构?
  2. 兼容策略:二进制兼容(锁死硬件)还是编译兼容(只保证重编译,硬件可演进)?
  3. 基础 ISA:自研私有,还是 RISC-V + 自定义张量/向量扩展?
  4. 编程模型: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。

3.4 编程模型:编译器托管 + 软件管理内存

  • TPU/XLA:编译器(XLA) 把张量映射到内存层级、调度异步显式 DMA,用户不写汇编。
  • 判断:面向 MLIR 编译器托管的张量/数据流编程模型;软件管理 scratchpad + 显式 DMA 暴露给编译器(非终端用户);用户用 PyTorch/ONNX→MLIR,不手写 ISA(关联 15/16/17)。

3.5 业界主流 AI/机器人芯片 ISA 与编程方案横向对比

覆盖全球 TOP5 + 国内 TOP5(按 AI 推理 + 机器人相关性与 ISA/编程范式代表性选取),从范式、编程语言、编译栈、兼容策略、开放性等横向对比,并多维打分。

3.5.1 全球 TOP5

公司 / 芯片ISA / 执行范式编程语言/模型编译/软件栈兼容策略开放性
NVIDIA(GPU/Jetson)SIMT + Tensor Core;PTX 虚拟 ISA + SASSCUDA(C++)/ Triton / cuDNN-cuBLASCUDA + XLA/Inductor + IsaacPTX 前向兼容(虚拟 ISA 跨代)开放(生态最大)
Google TPU张量级 CISC + 脉动JAX/TF + XLA(用户不写汇编)XLA / OpenXLA / IREE编译兼容(非二进制)较封闭(云内为主)
AMD(CDNA/Instinct)SIMT(类 GPU)HIP(CUDA 可移植)/ ROCmROCm + MLIR/TritonHIP 源码可移植 CUDA开放(生态追赶中)
Qualcomm(Hexagon/Dragonwing)VLIW DSP + HVX 向量 + 张量加速Hexagon SDK(C/C++ intrinsics)/ Qualcomm AI StackAI Stack + 编译器SDK 兼容半开放(移动生态成熟)
Tesla(FSD/AI5)自研 NPU(矩阵引擎)全私有完全私有(软硬协同)自用,无对外兼容封闭(仅自用)

其他典型范式(非 TOP5 但重要参考):Intel Gaudi TPC(可编程 VLIW + GEMM,TPC-C / SynapseAI);Groq(编译期静态调度、确定性、无需手写 kernel);Graphcore IPU(Poplar,BSP 模型)。

3.5.2 国内 TOP5

公司 / 芯片ISA / 执行范式编程语言/模型编译/软件栈兼容策略开放性
华为昇腾(达芬奇)Cube + Vector + Scalar(张量 CISC)Ascend C(C++)(早期 TIK);管理 Cube/Vector/队列/同步CANN(L1 架构相关)+ Graph Engine(L2 无关)+ TF/PyTorch/MindSpore编译兼容 + 离线模型半开放(CANN 生态building)
寒武纪 Cambricon(MLU)MLUarch + 张量/向量BANG C(类 CUDA 异构:__mlu_entry__ Kernel、taskId/clusterId、Block/Union)CNCC 编译器 + 框架接入自有,持续兼容承诺半开放(BANG 生态)
地平线 Horizon(BPU 纳什)自研 BPU(Transformer 引擎 + 近存)自动编译器为主;自定义算子仅 CPU/DSP(BPU 算子固定),hbDNNRegisterLayerCreator天工开物 / Open Explorer 工具链代际兼容的可拓展架构较封闭(BPU 编译器驱动,推荐"替换算子")
摩尔线程 Moore Threads(MUSA)GPGPU(类 SIMT)MUSA(CUDA 兼容):torch_musa 切后端 cuda→musa、Musify 迁移 CUDAMUSA SDK + muDNN/MCCL(对标 cuDNN/NCCL)CUDA 兼容(迁移成本低)开放(主打兼容)
壁仞 BIREN(BR100 等)GPGPU(类 SIMT)SUPA(类 CUDA)SUPA 软件栈类 CUDA 可迁移开放(生态building)

其他:燧原(TopsRider/GCU)、沐曦(MXMACA,CUDA 兼容)、黑芝麻(华山,车规)等;国产 GPGPU 普遍走"CUDA 兼容降迁移成本",NPU 派(华为/寒武纪/地平线)走"自有编程模型 + 软硬协同"。

3.5.3 多维度对比(优劣打分,1–5 越高越优)

维度NVIDIAGoogle TPUAMD高通 HexagonTesla华为昇腾寒武纪地平线摩尔线程壁仞
可编程性/灵活性5343233244
能效契合(架构↔编程)3534544533
编译/工具链成熟度54443(自用)33422
算子开发难度(高分=易)5443233243
生态(框架/库/社区)5343132322
兼容/可迁移4(PTX)3(编译)5(HIP)313335(CUDA)4
开放性(对第三方)5243133244
具身/机器人适配5(Isaac)224(低功耗)4(自用)324(车/机器人)22

3.5.4 各范式优劣与对我们的启示

  • SIMT + 虚拟 ISA(NVIDIA/AMD/国产 GPGPU):优=可编程性/生态/兼容最佳(PTX 前向兼容、CUDA 可迁移);劣=SIMT 控制开销/能效不如 DSA。国产 GPGPU(摩尔线程/壁仞)用 CUDA 兼容换迁移,但能效与最先进 GPU 有差距。
  • 张量级 CISC + 编译器托管(Google TPU / 华为达芬奇 / 寒武纪):优=能效高、软硬协同、编译兼容可演进;劣=灵活性低、算子开发门槛高、生态需自建。与我们的 07 方向最一致
  • 编译器驱动的封闭 BPU(地平线):优=能效/利用率最高(自动编译器 + 固定高效算子)、车规成熟;劣=可编程性最低(自定义算子只能放 CPU/DSP,新算子上不了 BPU)——对快速演进的 VLA 是风险。警示:别把灵活性砍到上不了新模型
  • 全私有(Tesla):优=极致软硬协同;劣=封闭、无生态、仅自用——创业公司若要做平台/对外客户不可取。
  • VLIW DSP(高通 Hexagon/Intel Gaudi TPC):优=低功耗灵活、工具链成熟(高通 Hexagon = VLIW 标量 + HVX 向量 + 张量加速,编译期显式打包发射槽);劣=主算力密度/大模型吞吐偏弱。

对我们的启示(强化 07 结论)

  1. 能效路线选张量 CISC + 编译器托管(对标 TPU/达芬奇),但可编程性不能学地平线砍到底——必须保留向量/标量 + 可编程余量适配 VLA(否则重蹈"新算子上不了 BPU")。
  2. 生态是最大短板:NVIDIA 生态碾压。我们用 MLIR/IREE 复用 + 拥抱 PyTorch/ONNX 前端 + AI-Native 自动生成算子弥补,降低算子开发难度(对标 NVIDIA 的"易")。
  3. 兼容策略:坚持编译兼容(TPU/华为路线);是否额外提供 CUDA/Triton 迁移层(类 MUSA/HIP)以降客户迁移成本,列为待决项(生态权衡)。
  4. 开放性:面向机器人客户(宇树/智元等)做对外开放 SDK(区别于 Tesla 封闭),对标 NVIDIA Isaac 的易用性。

3.6 编程语言与算子开发范式:从「写 kernel」到「编译器兑现」

同样是「让算力单元有活干」,不同厂商暴露给算子开发者的抽象差异极大,这直接决定了「一个新 VLA 算子从模型到硬件」要花多少人力。把当前(截至 2026-07)主流编程栈按「谁来写、写什么」排一遍:

编程范式代表栈算子怎么来长尾算子成本对 VLA 演进的友好度
手写 kernel(类 CUDA)CUDA / Ascend C / BANG C / MUSA人写 C++ intrinsics,显式管理并行/同步高:每个新算子要手写 + 调优中:能写但慢,长尾靠人堆
编译器自动兑现XLA / IREE / 地平线自动编译器编译器从 IR 自动生成低(覆盖内)/ 极高(覆盖外)取决于 IR 能否表达新结构
CUDA 兼容迁移MUSA Musify / AMD HIP转译现有 CUDA 算子低(可迁移)/ 中(需重调优)高:蹭 CUDA 长尾
静态调度无 kernelGroq编译期全静态排布,不写 kernel—(受支持算子约束)低:新结构需编译器支持

判断:07 主线选「编译器自动兑现(MLIR/IREE)」为默认路径,原因是算力高度集中在少数几类算子(GEMM/Attention/流匹配 loop)——这几类兑现好就吃掉 80%+ 算力;剩下的长尾用「Ascend C 式手写逃生口 + 可选 CUDA/Triton 迁移层」兜底。这正是 3.1a 谱系「主体走最右档、尾部留逃生口」在编程模型层的落地。 具体的算子覆盖优先级与「兑现 vs 手写」的量化权衡,见 §5 与 M-model 21 章《具身模型支持》的 P0/P1/P2 算子清单(GEMM/MHA+KV/LN/流匹配 loop 为 P0)。


3b. 由演进反推的芯片诉求(量化/定性)

维度当前未来(VLA 演进/多模型)ISA 含义
算子模式GEMM/Attention/Conv/扩散新结构(MoE、长上下文、世界模型)张量级指令 + 足够可编程余量
批量batch≈1显式片上内存管理(小 batch 打满算力)
迭代跨代硬件演进频繁编译兼容,不锁二进制
控制1kHz 确定性多任务静态可调度语义

4. 候选方案与对比矩阵

4.1 ISA 抽象层级

候选性能/能效灵活性/可编程编译难度(低=好)风险演进性小结
A. 细粒度(类 GPU SIMT)35424灵活但能效/控制开销大
B. 张量级 CISC + 向量/标量53334建议方案:能效优,靠向量补灵活,MLIR 友好
C. 纯固定流水(无可编程)51551能效极致但锁死,VLA 演进堵死

4.2 兼容策略

  • 编译兼容(建议方案,候选):硬件可跨代演进,只保证重编译;不做二进制兼容

4.3 基础 ISA / 编程模型

  • 控制核 RISC-V + 自定义张量/向量扩展;编译器(MLIR)托管 + 软件管理内存/显式 DMA,用户走框架不写汇编。

建议方向:B(张量级 CISC + 向量/标量)+ 编译兼容 + RISC-V 控制核 + MLIR 托管编程模型 + 软件管理内存。


5. 关键权衡、风险与依赖

  • 能效 vs 可编程性(核心):粗粒度张量指令能效高但灵活性低;须用向量/标量指令 + 留可编程余量平衡,否则 VLA 新结构跑不动(最大长期风险)。
  • 编译兼容的代价:每代需重编译/重调优 → 强依赖编译器与 CI(15/16/30 章);但对创业迭代利大于弊。
  • ISA 一旦定型即冻结:必须 端侧基线阶段 与硬件联合评审,且预留指令编码空间给未来扩展。
  • RISC-V 自定义扩展的工具链:需 LLVM/MLIR 后端配合(15/16 章)。
  • 算子覆盖的 80/20:算力集中在少数算子(§5.2 P0),但算子数量是长尾——编译器兑现吃 P0 大头,长尾靠手写逃生口,不可指望编译器覆盖全部(见思考题 3)。
  • 依赖:02(数据流/精度决定指令)、03/08(内存/同步语义)、15-17(编译/算子)。

5.2 算子覆盖优先级(与 M-model 21 章对齐)

优先级算子/模式来源模型兑现路径
P0GEMM/FC(batched M=1)、MHA + KV-cache、LayerNorm/RMSNorm/Softmax、流匹配/扩散迭代 loop全部 VLA + π0/GR00T编译器优先兑现(吃 80%+ 算力)
P1ViT patch embed + 2D conv、cross-attention、动作 chunk reshape/gatherDINOv2/SigLIP、π0编译器 + 少量手写调优
P23D conv / video attn、MoE routing世界模型/大 VLM(未来)手写逃生口 / IR 预留

6. 结论与待决项

初步结论

  1. 主算力 张量级 CISC 指令 + 向量/标量补充(达芬奇式三类计算),能效优先 + 保留可编程余量。
  2. 编译兼容、不做二进制兼容:换取跨代硬件演进自由(TPU 验证)。
  3. RISC-V 控制核 + 自定义 DSA 扩展:复用生态、可控、无授权费。
  4. MLIR 编译器托管 + 软件管理 scratchpad + 显式 DMA:用户走框架,不手写 ISA。

待决项

  • 张量指令的具体粒度与可编程余量(指令集候选)——与硬件 + 02 章数据流联合定。
  • RISC-V 自定义扩展 vs 独立协处理器接口形式——与硬件团队定。
  • 指令编码预留空间与版本管理策略——为未来演进留位。
  • 是否提供 CUDA/Triton 迁移层(类 MUSA Musify / AMD HIP)以降客户迁移成本——生态权衡,与 15/26 章联合定。

ADR 候选

  • ADR-018 ISA 抽象层级:张量级 CISC + 向量 + 标量(三流水),能效优先 + 可编程余量。
  • ADR-019 兼容策略:编译兼容,不承诺二进制跨代兼容。
  • ADR-020 基础 ISA:RISC-V 控制核 + 自定义张量/向量扩展。
  • ADR-021 编程模型:MLIR 编译器托管,软件管理内存/显式 DMA 暴露给编译器(非终端用户)。

7. 端→边→中心演进影响

  • 编译兼容使同一 ISA 家族可在端/边/中心用不同规模实现(更多 PE、更大 batch),软件栈一致迁移。
  • 不可逆点:指令编码与语义随 RTL 冻结;需预留扩展位与"代际兼容的可拓展架构"(对标地平线"同代一致、代际兼容")。

深入思考

下面三题每题先给题干,再用 <details> 折叠一份图文并茂的参考答案。建议先合上答案自己想 3 分钟,再展开对照。

思考题 1:两种延迟工程哲学如何决定迁移成本

GPU 靠海量 warp 隐式掩盖延迟(硬件 warp scheduler 自动切换),而 VLIW/DSA(高通 Hexagon、达芬奇、TPU)靠编译器显式编排流水(静态排布发射槽 / set-wait flag 协调 Cube-Vector-Scalar)。结合 §3.1/§3.1a,分析这两种哲学在「谁背延迟掩盖的责任」上的根本差异,并论证为什么「把一个贴着 CUDA 优化的 VLA 算子迁到自研 DSA」的真实成本几乎全部压在编译与算子这一层

展开参考答案(含两种延迟哲学对比图 + 迁移成本拆解)

结论:GPU 把「让算力单元永远有活干」的责任交给硬件,编程简单、生态成熟,代价是要堆高 occupancy 才跑得满;VLIW/DSA 把这份责任交给编译器与软件,硬件更省、峰值潜力更高,代价是流水编排要显式写出来——迁移成本恰恰发生在「调度责任从硬件转移到软件」这一跳,而不是发生在算法本身。

三维度对比:

维度GPU(隐式 SIMT)VLIW/DSA(显式流水)
谁背延迟掩盖硬件 warp scheduler 自动切换编译器/软件显式排布(set/wait flag)
峰值利用率强依赖 occupancy 调优,调不好远低于峰值编排得当可逼近峰值,但「编排得当」本身很难
算子覆盖:cuBLAS/cuDNN/CUTLASS 多年沉淀,长尾齐全建设中:主流覆盖好,长尾/自定义常需手写 Ascend C

为什么迁移成本压在编译与算子层——用 VLA 场景算一遍:一个 π0 类模型迁到自研 DSA,算法侧(网络结构、权重)几乎零改动;真正的工作量在于:① VLA 里「贴着 CUDA 手写/Triton/依赖 cuBLAS」的热点算子(Attention + KV-cache、流匹配 loop),调度哲学要从「硬件隐式」重写为「编译器显式」——之前不用操心的 Cube-Vector-Scalar 流水重叠与 DMA 搬运,现在得由 MLIR/CANN 重新表达;② GPU 生态里现成的长尾算子(不规则 mask、cross-embodiment reshape),DSA 上要逐个补齐。上层框架(PyTorch + torch_npu、torch_musa、MindIE)能抽象掉一部分粘合层,但「IR → 硬件指令」这一跳的流水编排与性能调优无法被抽象掉——这就是为什么 07 章坚持「编译兼容 + MLIR 托管」:把这份不可避免的成本收敛到编译器一层,而不是散落在每个用户手写的 kernel 里。(回链:§3.1 指令抽象层级、§3.1a 粒度谱系、M-model 21 章算子覆盖优先级)

思考题 2:可编程性红线为何决定 VLA 演进速度

地平线 BPU「能效/利用率最高」,但自定义算子只能放 CPU/DSP,上不了 BPU 主算力单元。结合 §3.5.4 与 §4.1 候选 C(纯固定流水),论证「可编程性红线」为什么直接决定一颗芯片能不能跟上 VLA 的演进速度——并说明我们为什么在能效上学 TPU/达芬奇、却坚决不学地平线把灵活性砍到底。

展开参考答案(含「新算子落点」决策图 + 反例拆解)

结论:VLA 每半年就冒出新结构(MoE 动作头、长上下文、世界模型),而芯片一旦把主算力单元的算子集固定死,任何没被预见的新算子就只能降级跑在 CPU/DSP 上——算力主体空着、新模型跑成幻灯片;可编程性红线的本质,是「未来两三年还没被发明的模型,能不能落到你最快的那块硅上」。

用具体数字算一遍(为什么「降级到 DSP」等于跑不动):假设一颗芯片主算力单元 100 TOPS、旁挂 DSP 约 2 TOPS。某个新 VLA 引入一个占端到端 15% 算力的新算子,若它上不了主单元、只能跑 DSP:

  1. 其余 85% 算力在主单元:按 100 TOPS 算,理想耗时占比小。
  2. 那 15% 算力被逼到 2 TOPS 的 DSP:同等运算量在 DSP 上慢约 50 倍(100/2),这一段的墙钟时间被放大到 15% × 50 ≈ 7.5× 基准。
  3. 后果:端到端时延被这一个「跑错单元」的算子彻底主导——本该 80ms 的 chunk 被拖到数百 ms,直接跌出 21 章「≤100ms/chunk」的验收线。这正是地平线「自定义算子只能放 CPU/DSP」对快速演进 VLA 的系统性风险。

为什么学 TPU/达芬奇却不学地平线:能效上,张量级 CISC + 编译器托管(TPU/达芬奇)确实逼近固定流水的能效,这是我们要的;但达芬奇保留了 Vector + Scalar 两档更细粒度的可编程逃生口,新算子即使暂时没有专用指令,也能用向量/标量在主 Core 内表达——不至于被赶到 DSP。地平线为了把利用率榨到极致,把主单元算子集彻底固定,换来了能效峰值,赔上了「跑新模型」的能力。对 batch≈1、结构半年一变的 VLA,这条红线一旦踩过就是全栈返工。所以 §4.1 明确否掉候选 C(纯固定流水),选 B(张量 CISC + 向量/标量):能效向右取到 TPU 档,可编程性向左守住向量/标量这条线,一步都不能再退。(回链:§3.5.4 地平线反例、§4.1 候选 C 否决、§3b 演进反推诉求)

思考题 3:编译器兑现 vs 手写算子的覆盖权衡(算一遍 80/20)

编译器自动兑现算子省人力,但对没见过的结构可能生成不出高性能代码;手写算子性能可控但每个都要人堆。结合 §3.6 与 §5.2 的算子优先级,用「80/20:少数算子吃掉大部分算力 vs 算子数量的长尾」算一笔账,论证我们为什么把主线押在「编译器兑现 P0 大头 + 手写逃生口兜长尾」而非任一极端。

展开参考答案(含算力 vs 算子数量的 80/20 决策图 + 人力账)

结论:算力高度集中在少数几类算子(GEMM/Attention/流匹配 loop 吃掉 80%+ 算力),但算子的「数量」是一条长尾;因此正确策略不是二选一,而是「编译器把少数高算力 P0 算子兑现到极致(拿下大部分性能),手写逃生口只兜数量长尾但低算力的 P1/P2」——两头都占,人力花在刀刃上。

用具体数字算一遍(人力 vs 收益):假设一个 VLA 端到端有约 60 类算子:

  1. 若纯手写全部 60 类:按每类算子平均手写 + 调优约 1 人周计,≈ 60 人周。团队 17→37 人,这几乎榨干整个软件团队一个季度,且新模型一来又得补。
  2. 若纯靠编译器兑现全部:P0 那 5–8 类(GEMM/Attention/loop)编译器能兑现得很好;但长尾里的不规则算子(动态 mask、cross-embodiment reshape)编译器可能生成不出高性能代码,甚至根本表达不出——风险不可控
  3. 混合策略(主线):编译器兑现 P0 的 ~8 类(吃 80%+ 算力),集中优化这 8 类逼近峰值,约 8 人周把 80% 性能拿到手;剩下 ~52 类长尾用手写逃生口 + CUDA/Triton 迁移层兜底,每类只求「能跑、不追极致」,约 0.3 人周/类 ≈ 16 人周。合计 ~24 人周拿下几乎全部性能,比纯手写省一半以上人力,且风险可控。

为什么这决定了编程模型选型:这笔账正是 §3.6 选「编译器自动兑现为默认、手写为逃生口」的量化根据,也是 §4.1 选 B(张量 CISC + 向量/标量)而非 C(纯固定流水)的另一个理由——向量/标量这两档粒度,正是长尾算子手写逃生口的落脚点。若像地平线那样砍掉逃生口(思考题 2),长尾算子就无处可写,80/20 里的那 20% 直接把整条路堵死。能效要向右取,但逃生口这条线必须守住,两者共同支撑起「编译兑现大头 + 手写兜长尾」的可行性。(回链:§3.6 编程范式对比、§5.2 算子优先级、思考题 2 可编程性红线)


附:信息来源

区分公开/估计;参考时间 2026-07;roadmap 类以官方为准。

  • DSA-ISA / 张量级 CISC / TPU:Adi Fuchs《AI Accelerators Part III》(域专用 ISA);Jouppi et al. TPU 论文(CISC ~12 指令、CPI 10–20、Unified Buffer 24MiB、可编程 DMA、解耦访问/执行、User/Kernel 驱动分层);TPU v4(ISCA 2023,CMEM 128MB、CISC 单元);jax-ml scaling-book(VMEM 带宽 ~22× HBM、小 batch 打满算力、单标量核 1 DMA/cycle)。[公开]
  • 编译兼容 vs 二进制兼容:TPU 论文与综述(compiler-compatible 使 ISA 可演进)。[公开]
  • RISC-V 自定义扩展:RISC-V 加速器集成研究(单核 + 自定义指令)。[公开]
  • 可编程性对比:NVIDIA PTX/SASS/SIMT(可编程性强);华为达芬奇 cube+vector+scalar。[公开]
  • 全球 TOP5 编程方案:NVIDIA CUDA/PTX;Google XLA/OpenXLA;AMD ROCm/HIP;Qualcomm Hexagon SDK/AI Stack(Hexagon VLIW 标量 + HVX 向量 + 张量加速);Intel Gaudi TPC/SynapseAI;Groq 静态调度;Graphcore Poplar。[公开]
  • 国内 TOP5 编程方案:华为 Ascend C / CANN(MindSpore 文档、DaVinci 软件栈 CMC/HotChips);寒武纪 BANG C(Cambricon mlu-ops 文档、BANG C Developer Guide:__mlu_entry__/taskId/Block-Union/CNCC);地平线 天工开物/Open Explorer(自定义算子仅 CPU/DSP、hbDNNRegisterLayerCreator);摩尔线程 MUSA(Tom's Hardware Musify、torch_musa GitHub:切后端 cuda→musa、muDNN/MCCL);壁仞 SUPA(公开资料)。[公开 + 媒体]
  • 具身模型算力/延迟对标(π0.7/GR00T N1.7 GA、chunk 延迟靶标):见 M-model 21 章《具身模型支持》来源清单;π0 系列 Physical Intelligence;NVIDIA Isaac GR00T。[公开]
  • ISA 粒度/兼容策略取舍、多维打分、80/20 人力账:基于上述公开资料的工程判断/估算。[估计]