libtpu 内部机制 — 逆向工程参考
状态:18 个部分共 424 页 · 完整内容索引 · 主二进制:
libtpu-0.0.40-cp314-cp314-manylinux_2_31_x86_64/libtpu/libtpu.so— 781,691,048 B,x86-64 ELF64 DYN,未剥离符号,build-id89edbbe81c5b328a958fe628a9f2207d· 辅助文件:sdk.so(94,732 个函数)
本参考是什么
这是一份达到可重新实现级别的 Google libtpu.so 逆向工程参考 — 该 PJRT 插件将 Cloud TPU 硬件暴露给 JAX、PyTorch/XLA 和 TensorFlow。它在功能上等价于 NVIDIA 的 libcuda.so + libnvrtc.so + nvcc/ptxas 中面向具体设备的那一半,并被压缩进一个 745 MB 的单体共享对象:其中静态链接了整个 XLA 编译器、所有 TPU MLIR 方言、各代 LLVM 后端、oneDNN、tcmalloc、Abseil、gRPC、protobuf、Eigen、TPU 运行时、设备驱动 shim,以及 ICI/DCN fabric 栈。
这里的一切都纯粹由二进制静态分析重建而来 — objdump、nm、readelf -rW、原始字节读取,以及对切出的描述符执行 protoc --decode_raw。该二进制发布时未剥离符号 — 反汇编器恢复了 884,832 个函数,其中 881,784 个(99.66 %)带有真实符号名 — 因此在大部分接口面上,重建达到了字节精确 / 可重新实现级别。
为什么它很难
- 分析数据库中有 884,832 个函数(按函数生成的制品目录略高,为 884,843 个文件,包含 thunk/alias/data-stub 条目;函数计数引用 884,832,见二进制取证概览);1,249,324 个字符串;约 52 GB 提取出的 IDA sidecar。
- 40,313 张分发表(约为 ptxas 的 409 张的 100 倍),分类为 19 个分类学类别。
- 160,351 条 RTTI 记录(
_ZTI60,457 ·_ZTV39,244 ·_ZTS60,650 · 2),60,457 个 typeinfo 中以mlir::(13,091)、asic_sw::(11,379)、tensorflow::(3,108)、xla::(3,036)、llvm::(2,940)为首,后面还有dnnl::/std::/grpc_core::以及很长的 vendored 尾部。 .init_array中有 约 2,900 个静态构造器;1,069,659 条重定位(其中 1,069,006 条是R_X86_64_RELATIVE)。- 节头表恰好在 EOF 结束 — 其后没有尾随载荷。出现在
.text内的一个zstdmagic 立即数是内联常量,不是存储的压缩帧;见尾随 zstd Blob。 - 自定义 ELF 节(
google_malloc、malloc_hook、protodesc_cold、filewrapper_toc、__rseq_cs、__lcxx_override)。 - 六代 TPU 硅片使用 Google 内部代号阶梯:
jellyfish → dragonfish → pufferfish → viperfish → ghostlite → 6acc60406,每一代都有自己的 ISA 编码、成本模型和 HAL 家族。
双层 C ABI
JAX / PyTorch-XLA / TensorFlow
│
▼ PJRT C-API (v0.103)
┌──────────────────────────────┐
│ PJRT layer (outer C-API) │ ← 外层 ABI (Part II)
│ GetPjrtApi @ 0xe6a83a0 │
│ 140-slot PJRT_Api struct │
│ 17 extensions chained │
└──────────────┬───────────────┘
│ Tpu* C shim (~200 symbols)
┌──────────────────────────────┐
│ libtpu runtime + compiler │ ← 内层 ABI (Part III)
│ xla::jellyfish::* │
│ asic_sw::deepsea::* │
│ platforms_deepsea::* │
└──────────────────────────────┘本参考如何组织
18 个部分遵循数据自身的依赖链,而不是按字母顺序或重要性排序。阅读每一部分时,只需假设已读过它之前的部分:
硅片模型 ─► 编译器 pass ─► ISA 编码 ─► 成本模型 ─► 调度
(IV) (V) (VI) (VII) (VIII)
│
专用引擎 (SparseCore, IX) ◄───────────────────────────────┘
│
片上内存与 DMA (X) ─► 运行时 (XI) ─► 分布式 fabric (XII–XIV)
│
可观测性 (XV) ─┴─► 配置 (XVI)编译器后端被有意按规范的三类关注点拆分 — 有哪些指令(VI)、它们的成本是多少(VII)、如何排序和打包它们(VIII) — 因为在这个二进制中,成本模型数据的体量约为调度算法的 3 倍,把它们混在一起会产生一个 50 页的巨物。SparseCore(IX)保持完整,而不是沿这条边界切开:它是一个自包含引擎,读者会希望在一个地方读完。
状态与证据等级
下面每个页面都带有一个等级,反映其论断直接锚定到二进制的程度:
C— 已确认 / 可重新实现级:以 objdump/nm/readelf 或对切出描述符执行protoc --decode_raw的结果为字节锚点。字节级深挖页面默认使用此等级。I— 推断 / 综合:基础性、取证调查、逐代参数化或连接性的概览页面。O— 开放:尚未恢复;在开放前沿登记表中跟踪。
上面的证据等级(C/I/O)是重要的逐页标签。O(开放)页面标记一个具体的尚未恢复细节,并在开放前沿登记表中跟踪。
各部分速览
开放列统计仍带有 O(尚未恢复细节)等级的页面。
| 部分 | 标题 | 页数 | 开放 | 依赖 | 来源领域 |
|---|---|---|---|---|---|
| 0 | 参考装置 | 9 | 0 | — | — |
| I | 二进制剖析 | 12 | 0 | 0 | forensics / dispatch / RTTI |
| II | 插件生命周期与 PJRT API | 23 | 0 | I | runtime / PJRT |
| III | Tpu C-Shim 层 | 10 | 0 | II | shim |
| IV | 硅片与硬件代号模型 | 24 | 0 | — | silicon |
| V | 编译器 — 降低与优化 Pass | 36 | 0 | IV | compiler |
| VI | TensorCore ISA 与 LLO 编码 | 42 | 2 | IV, V | ISA |
| VII | 成本与延迟模型 | 41 | 0 | IV, VI | cost |
| VIII | 指令调度与 Bundle 打包 | 14 | 0 | VI, VII | cost / scheduling |
| IX | SparseCore 与 BarnaCore | 45 | 0 | IV, VI, VII | sparsecore |
| X | 片上内存与 DMA | 20 | 0 | IV | memory / DMA |
| XI | 运行时与执行 | 11 | 0 | II, VI, X | runtime |
| XII | 互连与路由 | 30 | 0 | IV | collectives / routing |
| XIII | Pod 内集合通信与屏障 | 30 | 0 | IX, XII | collectives |
| XIV | Megascale(多主机 / DCN) | 21 | 0 | XII, XIII | collectives / DCN |
| XV | 性能分析与遥测 | 22 | 0 | XI, XII | profiler |
| XVI | 配置与编译旋钮 | 16 | 1 | V, VII | config |
| XVII | 附录 | 18 | 0 | all | cross-cutting |
| 总计 | 424 | 3 |
逐代导航交叉索引
本书大量按代组织。要端到端追踪某一代硅片,请沿其所在行阅读:
| TpuVersion | 代号 | Cloud / 市场名 | 家族页 | ISA bundle | MXU 延迟 | 性能网格 |
|---|---|---|---|---|---|---|
| 0 | Jellyfish | TPU v2 | targets/jxc-family.md | isa/bundle-jf-41b.md | cost/mxu-latency-jf-df.md | cost/performance-jf-df.md |
| 1 | Dragonfish | TPU v3 | targets/jxc-family.md | isa/bundle-df.md | cost/mxu-latency-jf-df.md | cost/performance-jf-df.md |
| 2 | Pufferfish | TPU v4 | targets/pxc-family.md | isa/bundle-pf-51b.md | cost/mxu-latency-pf.md | cost/performance-pf.md |
| 3 | Viperfish | TPU v5 / v5e | targets/vxc-family.md | isa/bundle-vf-64b.md | cost/mxu-latency-vf.md | cost/performance-vf.md |
| 4 | Ghostlite | TPU v6e (Trillium) | targets/gxc-family.md | isa/bundle-gl.md | cost/mxu-latency-gl.md | cost/performance-gl-ghperf.md |
| 5 | 6acc60406 | TPU7x | targets/gxc-family.md | isa/bundle-gf.md | cost/mxu-latency-gf.md | cost/performance-gf-ghperf.md |
单页合并常量表是逐代主比较矩阵。
阅读路径
- 重新实现成本模型 / 调度器 — IV(硅片常量)→ VI(ISA)→ VII(成本数据)→ VIII(调度)。
- 理解 TPU 到 TPU 的集合通信 — IV → XII(fabric + 路由)→ XIII(集合算法)→ XIV(多主机)。
- 解析已编译程序 / bundle 字节 — VI(ISA 编码)→ X(内存与 DMA)→ XI(运行时加载/执行)。
- 编写或调试 PJRT 使用方 — II(PJRT API)→ III(Tpu C-shim)→ XI(执行)→ XV(性能分析)。
- 端到端追踪一代 TPU — 使用上面的逐代交叉索引:家族(IV)→ bundle(VI)→ MXU 延迟 + 性能网格(VII)。
- 调试挂起 / 死锁 — XIII(屏障 + SFLAG)→ X(continuation-queue)→ XII(VC-balance + 路由)。
- 只是建立方向感 — 0(参考装置,尤其是 Compile-Flow Walkthrough)→ I(二进制剖析)→ IV(代号模型)。
约定
- 函数地址是虚拟地址(
@0x…);对于.text/.rodata/.lrodata,VA == file offset。 - 每页都带有一个 References 块:列出其引用的源二进制和函数/符号虚拟地址。
NOTE — VA == file-offset 规则只适用于
.text/.rodata/.lrodata。对于.data,文件偏移是 VA −0x400000;对于.data.rel.ro,文件偏移是 VA −0x200000;如果对位于这些节中的结构体按原始 VA 用xxd/objdumpseek,会读到错误字节。完整节映射见 ELF 剖析。
源语料
本书每一页都来自对 libtpu.so 的静态分析 — 它的符号表、反汇编和反编译。分析所针对的完整输入集,精确到字节,收录在源码语料映射中;生成和使用这些输入的方法描述在方法论中。
完整内容索引
以下目录来自 SUMMARY.md,覆盖当前 docs/projects/libtpu 下的 424 个页面(含本页;不含 SUMMARY.md 本身)。
第 0 部分 — 参考设备
第一部分 — 二进制解剖
- 概览
- 精灵解剖
- libtpu.so + sdk.so
- 定制型材
- 嵌入式库图集
- LLVM/MLIR 版本清单
- 静态初始化管道
- 尾随 zstd Blob
- 调度表分类
- RTTI ↔ Vtable 交叉验证
- 每代函数调度程序
- 多态调度入口点
第二部分 — 插件生命周期和 PJRT API
- 概览
- ELF入口&init_proc
- do_init / do_fini
- GetPjrtApi Thunk & tpu_plugin 对象
- TfTpu_初始化引导程序
- 模块初始化和插件发现
- 概览
- PJRT_Api 140槽位重构
- 客户端、设备和拓扑
- 缓冲区 ABI 和内存布局
- 可执行文件加载和执行
- 事件和异步跟踪
- 集体通讯器
- DMA 映射和跨主机接收
- 回调和 Pre-Fatal Hook
- 延长链 (17)
- 扩展:分析器(类型 1)
- 扩展:拓扑描述(类型 16)
- 扩展:RawBuffer(类型 8)
- 扩展:Compile / PhaseCompile(类型 9)
- 扩展:布局/内存/流/FFI/...
- StreamExecutor 主机解释器
- StreamExecutor → PJRT 适配器
第三部分 — Tpu C-Shim 层
- 概览
- Tpu编译器名册
- Tpu可执行名册
- Tpu执行器名册
- TpuTransferManager名册
- Tpu计划名册
- TpuPlatform & TpuNodeContext
- Tpu拓扑和TpuCore位置
- TpuEmbeddingEngine ABI
- TpuConfigurationApi
第四部分 — 芯片和硬件代号模型
- 概览
- 6-代号权威和解
- 双枚举(原始与内部)
- PCI 设备 ID
- 营销/云命名
- 取代标签更正列表
- HAL 家族
- HAL 工厂覆盖矩阵
- TpuHal 类层次结构
- JXC家族(水母、龙鱼)
- PXC家族(河豚)
- VXC 系列(Viperfish)
- GXC 系列(Ghostlite,6acc60406)
- 子核心分类(GFC/GLC/JXC/PXC/VFC/VLC)
- chip_parts.binarypb 解码
- 每个代号常量表
- Tpu拓扑结构(目标+0x3b8)
- TpuChipConfig
- SparseCoreTarget(目标+0x948)
- 目标能力位字段(目标+0x628)
- kDeviceTypeInfo 规格常量
- 每代精度表
- 内存层次结构
- 地址空间 ID 表 (AS0–AS9)
第五部分 - 编译器:降低和优化遍数
- 概览
- HLO 摄取
- 编译阶段 0–3
- 编译缓存
- HLO 通证注册表
- HLO 预通过
- 分片传播
- 自动分片/SPMD
- 代数简化器
- 动态形状支持
- 优化屏障
- 自定义呼叫降低和注册
- MHLO → XTile → tpu
- 马赛克概述
- 马赛克布局推断
- 马赛克矢量布局
- tpu MLIR 方言
- tpu → LLO 降低
- 方言转换合法化器
- 转换模式重写器
- LowerToMlo DMA 桥接
- LowerToSparseCoreLLVM
- SC类型转换器
- MLIR Op模型合同
- LlvmTpu 内在目录
- MSA概述
- MSA 分配段
- MSA 每个版本的默认值
- MSA 预留和 HBM 政策
- 布局分配
- 融合模式
- 融合成本模型
- 点/转换 → MXU 降低
- RaggedDot → 窗口卷积
- 循环平铺和展开
- Tpu程序序列化
第六部分 — TensorCore ISA 和 LLO 编码
- 概览
- LloOpcode 枚举 (462)
- 内存空间枚举 (17)
- 捆绑型号
- InstBits 主数据库
- TPUInstrNameData / 描述 / RegEncoding
- LloOpcode ↔ 原型
- MC-发射器(getBinaryCodeForInstr)
- 239 位记录格式
- Jellyfish 41 字节捆绑包
- 龙鱼捆绑包
- 河豚 51 字节捆绑包
- Viperfish 64 字节捆绑包
- Ghostlite 捆绑包
- 6acc60406 捆绑包
- MXU 插槽
- VPU(矢量-ALU)插槽
- SPU/标量插槽
- 定序器插槽
- 内存加载插槽
- 内存存储插槽
- 谓词寄存器文件
- 硬件循环计数器
- 立即槽
- EUP / 超越插槽
- Matprep / IAR / 锁存器
- vcreate_mask / M-寄存器
- cmem_load 插槽(河豚)
- 稀疏槽 (v5+)
- V5+ EmitX 绝对位位置
- IsaEmitter注册表
- 解码端:JF / PF
- 解码端:VF / GXC
- NOP/未使用时隙规范编码
- TPUMCImm / SyImm32 操作数
- ArchRegno 运行时编号
- kIsaTable 数据部分
- 每代定序器操作 × 类型
- ResultFifo 和 ArchRegister 枚举
- 偏差添加和量化/反量化助手
- XLU 操作名册
- 装拆精度
第七部分 — 成本和延迟模型
- 概览
- 资源枚举(23 槽)
- 每个操作码周期常数
- 归一化计算成本
- GetHloResources路由
- TpuHlo成本分析
- 捆绑感知成本
- 内存带宽和延迟模型
- LocalDmaBandwidth
- MXU 延迟概述
- MXU 延迟:JF / DF
- MXU 延迟:PF
- MXU 延迟:VF
- MXU 延迟:GL(Ghostlite)
- MXU 延迟:GF (6acc60406)
- MatmulMode 和修改器
- MxuOpHold问题失速复发
- 性能系列概述
- 性能:JF/DF
- 性能:PF
- 性能:VF
- 性能:GL (GhPerf 476×31)
- 性能:GF(GhPerf 465×31)
- CycleTable 系列
- Jf循环表
- Vf循环表
- EUP 延迟概述
- EUP 每代延迟整数
- EUP Payne-Hanek 范围缩小
- EUP校正系数
- EUP 通道宽度/拆包
- XLU 冲突处罚表
- XLU 组合/源总线
- XLU 重新汇出费用
- 转置保留延迟
- WindowDescription 字节成本
- 卷积成本状态
- 减少窗口/池成本
- 学习成本模型客户端
- 成本模型测井
- 合并每代计数
第八部分 — 指令调度和捆绑打包
- 概览
- LatencyHidingScheduler 核心
- LHS:post_layout_pre_fusion 变体
- LHS:post_layout /最终变体
- LHS:ILP 变体
- 资源类型分类
- 捆绑模调度
- LLO → 捆绑包装
- MXU 分配 Bin-Packer
- 锁存器分配和溢出
- MxuSequence / SequenceInfo
- MRB链分配器
- MRB FIFO / MSR 放置
- 每代编码器锁存器序列化
第九部分 — SparseCore 和 BarnaCore
- 概览
- 架构
- SCS(标量)发动机
- TAC发动机
- TEC(矢量)发动机
- 每引擎捆绑槽-基础映射
- 区域 → 音序器大纲视图
- getSequencerType
- 标量操作码枚举
- 向量操作码枚举
- OneSlot 标量路由器
- 矢量负载插槽
- VectorStore 插槽
- 矢量扩展 / VEX
- VEX 操作数端口绑定
- VEX 掩码/目标端口/子操作码
- M寄存器谓词字(M0–M31)
- CBREG 循环缓冲寄存器
- 扫描数据路径
- 分段扫描
- 分段添加扫描
- 嵌入小批量分解
- SampleCombiner发射器
- EmitValencyLoop
- RankAndPermute / RadixSort
- 重复数据删除多重性
- 脂肪指针 (AS7/8/9)
- addrspacecast ISel
- Tile-ID 铸件
- 流聚集/分散
- 间接VregStream
- SC后端管道
- SC EmitX 调度程序
- SC内核选择
- SC队列分配和预留
- GetSparseCoreConfig
- SC ↔ MXU 握手
- SparseCore 与 Neuron MatmultSparse
- 概览
- 退休证明
- BCS Scalar0/Scalar1 ISA
- BCS 32 字节捆绑包
- 合并 ALU 位布局
- JF/DF 16 字节地址处理程序包
- 每代 BarnaCore 性能网格
第 X 部分 — 片上存储器和 DMA
- 概览
- HBM BestFit 分配器
- HBM DMA 对准合约
- VMEM分配器
- SMEM 标量存储器
- SMEM 寄存器窗口
- CMEM常量内存池
- SFLAG 同步标志层
- TpuBuffer 布局
- 缓冲区捐赠和别名
- 设备上压缩
- 嵌入式 tcmalloc
- 片内DMA描述符
- Tile 索引扩展
- 卷式/跨式/通用发射器
- DMA参数选择器
- 主机↔设备DMA
- UHI 主机接口 DMA
- OCI 命令 DMA-ID
- 连续队列
第 XI 部分 — 运行时和执行
- 概览
- ExecuteAsyncOnStream
- LoadProgramAndEnqueueToStream
- 流语义和依赖关系
- 进料/出料队列
- 主机回调
- 完成循环和 AsyncTrackingEvent
- PJRT 客户端分配器集成
- 错误/状态字符串模板
- 面向用户的提示字符串
- 内部通行证名称目录
第 XII 部分 — 互连和路由
- 概览
- 链路启动序列
- 拓扑发现
- 跨片 DMA 描述符
- ICI 全归约原语
- 故障模式和恢复
- VC-余额分配
- 概览
- 随机环形WildFirstPaths
- 路由表生成
- GetStaticPath & Multipod
- 环形路由缓存
- 路由缓存解压缩
- 路由缓存重复数据删除
- 路由缓存编解码器
- CreateRoutingSchedule 求解器
- net_router 管道
- 单播路由发射
- 获取距离
- 概览
- TwistedTorusND::BuildStrategy
- 扭曲谓词和方向
- 2阶段复制品组建设
- 形状折叠
- GetReplicaPair3DOnTwistedTorus
- Megacore 偶数/奇数分割
- 获得抢七
- SC-侧扭
- ICR 节点结构 DMA 频段
- nf_descriptor(27字段)
第 XIII 部分 — Pod 集体和障碍
- 概览
- SelectND策略
- 二项式/递归加倍
- AllReduce 分层/钳形
- AllGather ND 环
- AllToAll 表
- ReduceScatter
- 常量映射器
- 降级轴摄取
- SC-卸载配置生成器
- 分层种类
- 张量分割/ND 平面
- 物理核心放置
- SC 核心选择(卸载)
- get_remote_memref
- StartRemoteDma
- 概览
- SpecialPurposeSyncFlags
- Per-Codename compiler_reserved SFLAG
- 屏障着色
- 屏障 → SFLAG 号码绑定
- 全局屏障 SFLAG 窗口
- 复制品(2 型)屏障
- TensorCore 屏障
- Tree-Barrier Vsync
- InferBarrierConfig
- 每代远程 SFLAG 编码器
- 巨核融合
- FP8 量化集合
- SPMD 链路计数成本
第 XIV 部分 — 超大规模(多主机/DCN)
- 概览
- 引导程序:概述
- Bootstrap:协调员选举
- Bootstrap:工人注册
- Bootstrap:拓扑交换
- 引导程序:ICI 切换
- Bootstrap:收敛
- Bootstrap:故障处理
- 引导程序:tpunetd 关系
- 车队元数据:概述
- 舰队:拓扑模型
- 舰队:主机身份
- 舰队:全局寻址
- 舰队:ICI 与 DCN
- 舰队:切片形状
- 舰队:Bootstrap 交换
- 舰队:障碍和错误使用
- 舰队:现场解码
- 跨主机屏障
- 错误聚合器
- tpunetd 协议
第 XV 部分 — 分析和遥测
- 概览
- TpuProfiler ABI
- PJRT_Profiler 扩展
- XPlane / XStat / TraceMe 发射
- tpu_telemetry.proto
- XEvent 元数据 ID
- XStat 元数据 ID
- TraceEntriesCoder
- riegeli 微量容器
- 每设备类型分析器结构
- kDeviceTypeInfo 制作者/读者
- TracePoints 主注册表
- TraceEntry → XEvent/XStat
- 任务原型
- 有效负载:jxc 旧版
- 有效负载:vfc / vlc / gfc
- 有效负载:SparseCore Band
- 有效负载:UHI/OCI/ICI/DMA
- ICR DMA-时间线带
- jxc DMA / HbmMux / brn_perf
- v7x 性能计数器
- DMA端点渲染
第 XVI 部分 — 配置和编译旋钮
- 概览
- xla_* 旗帜图集
- 标志系列
- 环境变量
- TpuCompilationEnvironment(1121个字段)
- TCE字段词典(A)
- TCE字段词典(B)
- TCE 字段偏移和标志默认值
- xla.DebugOptions(290 个字段)
- 默认调试选项
- AutoProto / AutoOr 分辨率
- AutoOr 解析语法
- AutoOr 解析
- AutoProto 消息臂
- 注册表介导的标志
- Tpu版本感知标志前缀调度
第十七部分 — 附录
- Llo操作码表 (462)
- LlvmTpu 内在表 (1356)
- 内存空间表 (17)
- 调度表分类(完整)
- filewrapper_toc 目录 (61)
- protodesc_cold 目录 (760)
- RTTI 命名空间普查
- 重构原始索引
- 错误/状态代码
- 标志目录(全 TSV)
- 符号命名空间索引
- 每代主控比较矩阵
- 证据锚索引
- 来源-语料图
- 开放边境寄存器
- 交叉引用依赖关系图
- 二进制布局参考
- 扩展术语表
详细内容索引
Part 0 — 参考装置 (9)
导向与连接材料。先读 Compile-Flow Walkthrough — 它追踪一个 matmul 穿过每个部分,是进入整本书的入口。
- 落地页 / 本参考 ·
index.md·Ilibtpu 是什么、二进制来源、组织方式、逐代交叉索引、阅读路径。 - 如何阅读本书 ·
front/how-to-read.md·I证据等级、依赖流的理由、阅读路径画像。 - 编译流程走查 ·
front/compile-flow-walkthrough.md·I追踪一个dotop:HLO → MHLO → tpu → LLO → bundle 字节 → 执行,并交叉引用每个部分。 src: P-2-03, P-2-01 - 方法论 ·
methodology.md·I提取流水线、IDA sidecar、FLIRT、protoc --decode_raw、命名约定。 src: W001 - 子系统地图 ·
subsystem-map.md·I13 个领域的依赖网络,以及 18 个部分如何覆盖它。 src: W001, G001–G003 - 代号速查表 ·
front/codename-cheatsheet.md·C一张卡片上的 TpuVersion 0–5 ↔ 代号 ↔ chip-DID ↔ Cloud 名称。 - 术语表 ·
glossary.md·ILLO、MXU、XLU、EUP、SCS/TAC/TEC、MRB、SFLAG、ICI/DCN 等。 - 证据与置信度约定 ·
front/evidence-conventions.md·IC/I/O 等级,以及全书使用的锚点格式。 src: W001 - 参考文献 ·
bibliography.md·I外部参考;明确说明二进制中不包含的内容(Trillium/Ironwood 只是外部名称)。
Part I — 二进制剖析 (12)
745 MB ELF 如何布局与导航。这里只做分析与导向;大型枚举目录放在 Part XVII。
- 概览 ·
forensics/overview.md·I两个二进制、节模型、为什么它这么大。 src: W023, W027 - ELF 剖析 ·
forensics/elf-anatomy.md·C52 个节、段、VA==offset 规则、.lrodata/.rodata/.text范围。 src: W023, W030 - libtpu.so + sdk.so ·
forensics/two-binary-split.md·C884,832 函数的主对象和 94,732 函数的 sdk;符号群体形态。 src: W001, W026 - 自定义节 ·
forensics/custom-sections.md·Cgoogle_malloc、protodesc_cold、filewrapper_toc、__rseq_cs、__lcxx_override。 src: P-2-07, W030 - 嵌入库图谱 ·
forensics/embedded-library-atlas.md·CVendored Abseil/protobuf/Eigen/oneDNN/tcmalloc/LLVM 的字节核算(FLIRT)。 - LLVM/MLIR 版本清单 ·
forensics/llvm-mlir-manifest.md·C嵌入式工具链版本 + 组件列表。 - 静态初始化流水线 ·
forensics/static-init.md·I约 2,900 个 ctor、初始化顺序、插件发现钩子。 - 尾随 zstd Blob ·
forensics/trailing-zstd-blob.md·C为什么不存在尾随载荷:“4.1 MB dictionary blob” 误报修正(ZSTD-01)。 src: P-2-30 - 分发表分类学 ·
forensics/dispatch-table-taxonomy.md·C40,313 张表 → 19 类(MLIR Op-Model、UFB pools、libpfm4、dnnl/Xbyak…)。 src: P-2-06 - RTTI ↔ Vtable 交叉验证 ·
forensics/rtti-vtable-census.md·C每个 typeinfo 映射到其 vtable;命名空间统计。 - 逐代函数分发器 ·
forensics/per-gen-function-dispatcher.md·Cutil_registration::FunctionRegistry分发引擎。 - 多态分发入口点 ·
forensics/polymorphic-entry-points.md·C间接调用点 + thunk 表和顶层 vtable 类。
Part II — 插件生命周期与 PJRT API (23)
外层 ABI:插件如何加载,以及 JAX/PyTorch 使用的 140 槽 PJRT_Api 结构体。
生命周期
- 概览 ·
lifecycle/overview.md·I从dlopen到可用 client。 - ELF 入口与 init_proc ·
lifecycle/elf-entry-and-init-proc.md·C_init、.init_array、GOT/PLT 启动。 - do_init / do_fini ·
lifecycle/do-init-do-fini.md·C构造器/析构器顺序与全局状态。 - GetPjrtApi Thunk 与 tpu_plugin 对象 ·
lifecycle/get-pjrt-api-thunk.md·C@0xe6a83a0trampoline →GetTpuPjrtApi→ 17 个__cxa_guard块。 src: P-2-05 - TfTpu_Initialize Bootstrap ·
lifecycle/tftpu-initialize-bootstrap.md·I初始化入口与选项摄取。 - 模块初始化与插件发现 ·
lifecycle/module-init-plugin-discovery.md·CPJRT 插件如何注册和被找到。
PJRT_Api 接口面
- 概览 ·
pjrt/overview.md·IC-API 版本、扩展链思想、.lbss存储。 - PJRT_Api 140 槽重建 ·
pjrt/api-vtable-reconstruction.md·C每个槽 → libtpu 实现 VA、v0.103 schema、@0x227BA8401120-B 表。 src: P-2-05 - Client、Device 与 Topology ·
pjrt/client-and-device.md·CPJRT_Client_*、设备枚举、addressable devices。 - Buffer ABI 与内存布局 ·
pjrt/buffer-and-memory.md·CPJRT_Buffer_*、设备上布局、外部引用计数。 - Executable 加载与执行 ·
pjrt/executable-execution.md·Ccompile → load → execute、序列化。 src: P-022 - Event 与异步跟踪 ·
pjrt/events-and-async.md·IPJRT_EventAwait/OnReady/IsReady。 src: P-2-09 - 集合通信 Communicator ·
pjrt/collectives-communicator.md·CCreateCommunicators、跨主机 handle。 - DMA Map 与跨主机接收 ·
pjrt/dma-and-cross-host-recv.md·CDMA-map 槽 + 跨主机 buffer 接收。 - 回调与 Pre-Fatal Hook ·
pjrt/callbacks.md·IHost-callback 注册、pre-fatal hook。 src: P-2-09 - 扩展链(17) ·
pjrt/extension-chain.md·C链接扩展列表及其遍历方式。 - 扩展:Profiler(type 1) ·
pjrt/ext-profiler.md·CPLUGIN_Profiler_Api8 个槽。 - 扩展:TopologyDescription(type 16) ·
pjrt/ext-topology-description.md·CTPU 拓扑查询。 - 扩展:RawBuffer(type 8) ·
pjrt/ext-rawbuffer.md·C原始设备 buffer。 - 扩展:Compile / PhaseCompile(type 9) ·
pjrt/ext-compile-phasecompile.md·Ccompile-options 流。 - 扩展:Layouts / Memories / Stream / FFI / … ·
pjrt/ext-remaining.md·C其余链条条目。 - StreamExecutor Host Interpreter ·
pjrt/stream-executor-host-interpreter.md·CHloEvaluator 主机 fallback。 - StreamExecutor → PJRT Adapter ·
pjrt/stream-executor-pjrt-adapter.md·Cxla::TpuClient/ CommonPjRt 框架。
Part III — Tpu C-Shim 层 (10)
PJRT 与运行时/编译器之间的内层 C ABI:封装 C++ 内部机制的 Tpu* C 函数。
- 概览 ·
shim/overview.md·I约 200 个符号的 Tpu* C 接口面,以及 PJRT 如何调用它。 src: P-2-05, P-2-09 - TpuCompiler 清单 ·
shim/tpu-compiler-roster.md·C编译入口点。 - TpuExecutable 清单 ·
shim/tpu-executable-roster.md·CExecutable handle 操作。 src: P-022 - TpuExecutor 清单 ·
shim/tpu-executor-roster.md·CStream/executor C 函数。 - TpuTransferManager 清单 ·
shim/tpu-transfer-manager.md·Chost↔device 传输 C ABI。 - TpuProgram 清单 ·
shim/tpu-program-roster.md·CProgram 对象 + 序列化 C ABI。 src: P-022 - TpuPlatform 与 TpuNodeContext ·
shim/tpu-platform-and-topology.md·CPlatform 初始化、node context。 - TpuTopology 与 TpuCoreLocation ·
shim/tpu-topology.md·C拓扑/core-location C ABI。 - TpuEmbeddingEngine ABI ·
shim/tpu-embedding-engine.md·Cembedding/SparseCore C 接口面。 - TpuConfigurationApi ·
shim/tpu-configuration-api.md·C运行时配置入口点。
Part IV — 硅片与硬件代号模型 (24)
整个编译器被其参数化的硬件。请在 V–VIII 之前阅读:成本模型、ISA 和 MSA 默认值都以这里定义的逐代号常量为键。规范来源:逐代硬件常量(由 VI、VII、IX 引用)。
代号身份
- 概览 ·
targets/overview.md·I六代、三个 HAL 家族、双 enum 陷阱。 src: P-2-08 - 6 代号权威校准 ·
targets/tpu-version-codename-matrix.md·C6 轴(enum / CHECK / chip_parts / PCI / namespace / marketing)交叉检查;确定 glc=v4、gfc=v5。 - 双 Enum(Proto vs Internal) ·
targets/dual-enum-proto-vs-internal.md·CTpuVersionProto = internal + 1;“chip_parts v6” 的解析。 src: P-2-08 - PCI Device IDs ·
targets/pci-device-ids.md·CChip DIDs 0x00d1/0x00f2、header DIDs、rev-masks、IsGlc/IsGfc → device-type。 - 市场 / Cloud 命名 ·
targets/marketing-cloud-naming.md·Cv2…v6e/tpu7x;Trillium=v6e;Trillium/Ironwood 不在二进制中。 - 已淘汰标签修正列表 ·
targets/codename-superseded-labels.md·C“v5p”/“Trillium” 误标,以及 Ghostfish gloss。
HAL 家族
- HAL 家族 ·
targets/hal-families.md·Cjxc/pxc/vxc factory;gxc 下的 glc/gfc;逐家族 Register 立即数。 src: P-2-08 - HAL Factory Override 矩阵 ·
targets/hal-factory-override-matrix.md·C每个家族哪些方法 override,哪些继承。 src: P-2-35 - TpuHal 类层次 ·
targets/tpuhal-class-hierarchy.md·C只有 TpuHalHardware* 存在;{Jxc,Pxc,Vxc}HardwareImpl 树。 - JXC 家族(Jellyfish, Dragonfish) ·
targets/jxc-family.md·C身份、factory、PCI、cores。 - PXC 家族(Pufferfish) ·
targets/pxc-family.md·C身份、factory、BarnaCore 绑定。 - VXC 家族(Viperfish) ·
targets/vxc-family.md·C身份、std/lite 变体、factory。 - GXC 家族(Ghostlite, 6acc60406) ·
targets/gxc-family.md·Cglc/gfc 命名空间、匿名 v5 codec、chip DIDs。 - Sub-Core 分类学(GFC/GLC/JXC/PXC/VFC/VLC) ·
targets/sub-core-taxonomy.md·C子家族 encoder 拆分。 src: P-2-08
逐代号硬件常量
- chip_parts.binarypb 解码 ·
targets/chip-parts-binarypb.md·CTpuChipPartsProto、嵌入的 v5/v7 blob、变体 allow-list。 - 逐代号常量表 ·
targets/per-codename-hw-constants.md·C成本模型和 ISA 使用的主整数来源。 - TpuTopology 结构体(Target+0x3b8) ·
targets/tpu-topology-struct.md·C逐代号 chip 几何。 - TpuChipConfig ·
targets/tpu-chip-config.md·CLaneCount/SublaneCount/ChunksPerTile、VexMatrixWidth。 - SparseCoreTarget(Target+0x948) ·
targets/sparsecore-target-descriptor.md·C逐代号 MXU-contracting-depth 映射。 - Target Capability Bitfield(Target+0x628) ·
targets/target-capability-bitfield.md·C整个结构体中的 2 个 live capability bit。 - kDeviceTypeInfo Spec-Constants ·
targets/kdevicetypeinfo-spec-constants.md·C约 40 个 IEEE-754 double + 两条 DVFS 频率阶梯。 - 逐代精度表 ·
targets/accuracy-tables.md·C驱动精度决策的超越函数近似精度。
内存模型入门(详细 allocator 在 Part X)
- 内存层级 ·
targets/memory-hierarchy.md·IHBM/VMEM/SMEM/CMEM/SFLAG 层级模型 + 17 个 MemorySpace 值。 src: P-2-01 - Address-Space ID 表(AS0–AS9) ·
targets/address-space-ids.md·C包含 SparseCore fat-pointer AS7/8/9。
Part V — 编译器:降低与优化 Pass (36)
IR 下降和优化 pass。按硅片参数化(使用 IV),但 ISA-light:它按名称降低到 LLO op,而不是 bits。输出为 LLO IR;编码在 VI,成本/调度在 VII/VIII。
前端与流水线
- 概览 ·
compiler/overview.md·IDeepseaCompilerBase::RunHloPasses、编译阶段 0–3。 src: P-2-03 - HLO 摄取 ·
compiler/hlo-ingestion.md·CStableHLO → HLO、入口 module。 src: P-002 - 编译阶段 0–3 ·
compiler/compile-phases.md·CPhase0Stablehlo … Phase3Linking。 src: P-2-03 - 编译缓存 ·
compiler/compilation-cache.md·Ckey、fingerprint、命中路径。 src: P-022 - HLO Pass 注册表 ·
compiler/hlo-pass-registry.md·C三个流水线容器 + xla_* flag-atlas 绑定。 - HLO 前置 Pass ·
compiler/hlo-pre-passes.md·CTPU lowering 之前运行的 pass。 - Sharding 传播 ·
compiler/sharding-propagation.md·CGSPMD sharding 推断。 - Auto-Sharding / SPMD ·
compiler/auto-sharding-spmd.md·C分区 pass。 - 代数简化器 ·
compiler/algebraic-simplifier.md·ITPU 专用代数重写。 - 动态形状支持 ·
compiler/dynamic-shape-support.md·Cbounded-dynamic 模型、dimension-size op。 - 优化屏障 ·
compiler/optimization-barrier.md·C插入、遵守、擦除。 - Custom-Call Lowering 与注册表 ·
compiler/custom-call-lowering.md·Ctarget 目录 + 注册侧。
MLIR lowering 链
- MHLO → XTile → tpu ·
compiler/mhlo-xtile-tpu-lowering.md·C方言链转换。 - Mosaic 概览 ·
compiler/mosaic-overview.md·Ckernel → tpu → LLO 路径。 - Mosaic Layout 推断 ·
compiler/mosaic-layout-inference.md·CVectorLayoutInferer 逐 op 规则。 - Mosaic VectorLayout ·
compiler/mosaic-vectorlayout.md·C(sublane, lane) 布局代数。 - tpu MLIR 方言 ·
compiler/tpu-dialect-and-ops.md·Cop、attribute、157-op 接口面。 - tpu → LLO Lowering ·
compiler/tpu-to-llo-ods.md·C逐 op ODS operand/result/attr 签名、gain/staging register。 - DialectConversion Legalizer ·
compiler/dialect-conversion-legalizer.md·Cdepth-aware 合法化成本。 - ConversionPatternRewriter ·
compiler/conversion-pattern-rewriter.md·Crollback/rewrite-log 引擎、1:N pattern。 - LowerToMlo DMA Bridge-Cast ·
compiler/lower-to-mlo-dma-bridge.md·C两阶段 DMA lowering。 - LowerToSparseCoreLlvm ·
compiler/lower-to-sparsecore-llvm.md·C逐类 rewrite body。 - SCTypeConverter ·
compiler/sc-type-converter.md·Caddr-space → !llvm.ptr<addrspace> 映射。 - MLIR Op-Model 契约 ·
compiler/mlir-op-model-contract.md·C23 槽 Model<Op>(6,050 个实例)。 - LlvmTpu Intrinsic 目录 ·
compiler/llvmtpu-intrinsic-catalog.md·C1,356 个tpu_*后端 intrinsic。
内存与布局优化
- MSA 概览 ·
compiler/msa-overview.md·Cmemory-space-assignment ILP pass。 - MSA AllocateSegment ·
compiler/msa-allocate-segment.md·C分配主体 + config proto。 - MSA 逐版本默认值 ·
compiler/msa-per-version-defaults.md·C每代 overlap ratio / outstanding-copy cap。 - MSA Reservation 与 HBM Policy ·
compiler/msa-reservation-hbm-policy.md·CMsaReservationPolicy / HbmPolicy 字段字典。 - Layout Assignment ·
compiler/layout-assignment.md·CFindMemoryMinimizingLayout 权重 + AddBackendConstraints。
Fusion、dot/conv、tiling
- Fusion Pattern ·
compiler/fusion-patterns.md·CTPU 专用 fusion 类清单。 - Fusion 成本模型 ·
compiler/fusion-cost-model.md·C优先级系数 + ShouldFuseImpl lambda 集。 - Dot / Conv → MXU Lowering ·
compiler/dot-conv-mxu-lowering.md·Ctile-cost 比较器 + EmitFunctorEnum。 - RaggedDot → Windowed Convolution ·
compiler/raggeddot-convolution.md·CFromRaggedDot / DynamicSliceMaskedConv 几何。 - Loop Tiling 与 Unrolling ·
compiler/loop-tiling-unrolling.md·CTileKind 规则 + LoopConfig proto + 流水线 unroller。 - TpuProgram 序列化 ·
compiler/tpu-program-serialization.md·C最终 compiled-program 容器。 src: P-022, P-2-09
Part VI — TensorCore ISA 与 LLO 编码 (42)
目标表示:LLO IR 和逐代 VLIW bundle 位布局。自包含 — 可独立于成本模型阅读。Bundle packing(LLO→bytes)在 VIII。
基础
- 概览 ·
isa/overview.md·ILLO IR:462 个 opcode、17 个 memory space、proto-descriptor 来源。 src: P-2-01, P-2-25 - LloOpcode Enum(462) ·
isa/llo-opcode-enum.md·C类别:scalar / vector / EUP / reduction / MXU / transpose / DMA / sync / BarnaCore。 src: P-2-25 - MemorySpace Enum(17) ·
isa/memory-space-enum.md·CHBM/VMEM/SMEM/SFLAG/IMEM/CMEM/SC/HOST/PINNED。 src: P-2-01 - Bundle 模型 ·
isa/bundle-model-overview.md·I逐代大小(41/51/64 B)、slot 数、bundles-per-DMA-chunk。 src: P-2-04, P-2-34 - InstBits 主 DB ·
isa/instbits-master-db.md·CLLVM-MC 逐 opcode base bits;default-all-zero / no-RELA 发现。 - TPUInstrNameData / Descs / RegEncoding ·
isa/instr-name-data.md·Copcode→mnemonic、MCInstrDesc、reg-encoding 表。 - LloOpcode ↔ Proto ·
isa/llo-opcode-to-proto.md·C462 条目映射 + 反向 ProtoToLloOpcode。 - MC-Emitter(getBinaryCodeForInstr) ·
isa/mc-emitter.md·CinsertBits operand 路径 + HwMode 选择。 - 239-Bit Record 格式 ·
isa/record-format.md·CAPInt record + 逐 operand insertBits(value, pos, width)。
逐代 VLIW bundle
- Jellyfish 41-Byte Bundle ·
isa/bundle-jf-41b.md·C完整 slot map(EncodeBundleInternal)。 - Dragonfish Bundle ·
isa/bundle-df.md·CJF/DF 共享 41-B 布局差异。 - Pufferfish 51-Byte Bundle ·
isa/bundle-pf-51b.md·CEncoderPf + 5 个共享 load/store 子编码器。 - Viperfish 64-Byte Bundle ·
isa/bundle-vf-64b.md·CQuad VALU、triple vload、ScalarSubBundle。 - Ghostlite Bundle ·
isa/bundle-gl.md·Cvector_misc slot;glc encoder。 - 6acc60406 Bundle ·
isa/bundle-gf.md·Cdedicated predicates slot;gfc encoder。
逐 slot 编码
- MXU Slot ·
isa/slot-mxu.md·Cmatmul/matpush issue、latch 字段、逐代 MXU1 twin。 - VPU(Vector-ALU)Slot ·
isa/slot-vpu.md·C所有代。 - SPU / Scalar Slot ·
isa/slot-spu-scalar.md·C所有代。 - Sequencer Slot ·
isa/slot-sequencer.md·Cbranch/call/halt;proto-bundle emitter 路径。 - Memory-Load Slot ·
isa/slot-memory-load.md·C所有代。 - Memory-Store Slot ·
isa/slot-memory-store.md·C所有代。 - Predicate-Register File ·
isa/slot-predicate.md·C7-bit 字段(4+1+2),逐代计数。 - 硬件 Loop-Counter ·
isa/slot-loop.md·C编码 + 逐代计数。 - Immediate Slot ·
isa/slot-immediate.md·C逐代 encoding-id → imm-slot bit 位置。 - EUP / Transcendental Slot ·
isa/slot-eup-transcendental.md·CVectorResult + VALU3 bit 位置。 - Matprep / IAR / Latch ·
isa/slot-matprep-iar-latch.md·C逐代 matprep WORD 表、IAR bit 布局。 - vcreate_mask / M-Register ·
isa/slot-vcreate-mask-mregister.md·C末端包含范围、逐代字段偏移、M0–M31。 - cmem_load Slot(Pufferfish) ·
isa/slot-cmem-load-pf.md·Cv4 constant-memory load 路径。 - Sparsity Slot(v5+) ·
isa/slot-sparsity-v5plus.md·Ostructured-sparsity slot 编码。 src: #1092 (open)
编码 / 解码支持
- V5+ EmitX 绝对 Bit 位置 ·
isa/v5plus-emitx-bit-positions.md·Cisa_emitter EmitX → BitCopy 偏移(补上 InstBits 缺口)。 - IsaEmitter 注册表 ·
isa/isa-emitter-registry.md·C(TpuVersion, SequencerType) pair-key cell 统计。 - 解码侧:JF / PF ·
isa/decode-side-jf-pf.md·Cdisassembler 反向逻辑。 - 解码侧:VF / GXC ·
isa/decode-side-vf-gxc.md·C−20-bit twin decode。 - NOP / 未用 Slot 规范编码 ·
isa/nop-canonical.md·O逐代 NOP 模板。 src: #1096 (open) - TPUMCImm / SyImm32 Operand ·
isa/tpumcimm-syimm32.md·CMC immediate operand 编码 + PatchOverlay。 - ArchRegno 运行时编号 ·
isa/archregno-numbering.md·CToArchRegno / InitRegisterNumbering 逐代逻辑。 - kIsaTable 数据节 ·
isa/kisatable-data-sections.md·C逐代 ISA-encoding 拆分(没有 literal kIsaTable 符号)。 - 逐代 × 类型 Sequencer Ops ·
isa/sequencer-ops-per-gen.md·Ccontrol-flow op 清单。 - ResultFifo 与 ArchRegister Enums ·
isa/resultfifo-archregister.md·C25 个 result FIFO + 0x32 条目 arch-register enum。 - Bias-Add 与 Quant/Dequant Helper ·
isa/bias-quantization-helpers.md·CTPU bias/quantization helper 函数。 - XLU Op 清单 ·
isa/xlu-op-roster.md·CVsetperm/Vxpose/Vpermute/… opcode→factory 表。 - Pack/Unpack 精度 ·
isa/pack-unpack-precision.md·CVpackBf16 / VunpackCF32 bf16↔f32 转换 + segmented-reduce RPU。
Part VII — 成本与延迟模型 (41)
每条指令的成本。二进制中最大的数据接口面(51 个源文件)。由 VIII 中的调度器使用;依赖 ISA(VI)和硅片常量(IV)。
核心模型
- 概览 ·
cost/overview.md·IPerformance / CycleTable / LatencyTable 家族架构。 src: P-2-04 - Resource Enum(23-slot) ·
cost/resource-enum.md·C名称 + SubsetOptions 分区 + TC-frequency 接线。 - 逐 Opcode Cycle 常量 ·
cost/per-opcode-cycle-constants.md·C逐代 cycle-table 分发。 - NormalizedComputationCost ·
cost/normalized-computation-cost.md·Copcode→weight switch + GetCyclesIfFused。 - GetHloResources 路由 ·
cost/gethloresources-routing.md·CPer-op → ResourceVector sub-emitter 路由。 - TpuHloCostAnalysis ·
cost/tpu-hlo-cost-analysis.md·Cflop-override 接口面。 - Bundle-Aware Cost ·
cost/bundle-aware-cost.md·CVLIW bundle-issue 成本。 - 内存带宽与延迟模型 ·
cost/memory-bandwidth-latency-model.md·C逐代完整跨层级矩阵。 - LocalDmaBandwidth ·
cost/local-dma-bandwidth.md·C逐代矩阵 + MemXfer-latency 使用方。
MXU 延迟(逐代 reservation 矩阵)
- MXU 延迟概览 ·
cost/mxu-latency-overview.md·CMxuResource enum + reservation-matrix 概念。 - MXU 延迟:JF / DF ·
cost/mxu-latency-jf-df.md·C最老一代 reservation 行。 - MXU 延迟:PF ·
cost/mxu-latency-pf.md·CPufferfish reservation 行。 - MXU 延迟:VF ·
cost/mxu-latency-vf.md·C完整 Viperfish reservation 矩阵逐值记录。 - MXU 延迟:GL(Ghostlite) ·
cost/mxu-latency-gl.md·CGLM reservation 行。 - MXU 延迟:GF(6acc60406) ·
cost/mxu-latency-gf.md·Cres-remap 3/8 + fp8-fnuz。 - MatmulMode 与 Modifier ·
cost/matmul-mode-modifiers.md·C16-ordinal 命名、Matmul/MatpushModifier array<19> 值。 - MxuOpHoldIssues Stall 递推 ·
cost/mxu-opholdissues-stall.md·Cstall 公式 + balancing gate。
性能网格(逐代 Instruction × Resource)
- Performance 家族概览 ·
cost/performance-overview.md·I逐代 Performance<gen> 变体模型。 - Performance:JF / DF ·
cost/performance-jf-df.md·C完整 latency array + I×R 网格。 - Performance:PF ·
cost/performance-pf.md·C20-resource 网格 + BarnaCore variant1。 - Performance:VF ·
cost/performance-vf.md·CViperfish 网格。 - Performance:GL(GhPerf 476×31) ·
cost/performance-gl-ghperf.md·CGhostlite occupancy 网格。 - Performance:GF(GhPerf 465×31) ·
cost/performance-gf-ghperf.md·C6acc60406 occupancy 网格。
CycleTable
- CycleTable 家族 ·
cost/cycletable-family.md·CLatencyTable::Create(TpuVersion) factory 分发。 - JfCycleTable ·
cost/jf-cycletable.md·CoffsetLUT 转录 + 7 列 Resource 命名。 - VfCycleTable ·
cost/vf-cycletable.md·C32 条目 CT→(instr, res) dump + throughput 桥接。
EUP / 超越函数延迟
- EUP 延迟概览 ·
cost/eup-latency-overview.md·Cpush→pop 软件流水线模型。 - EUP 逐代延迟整数 ·
cost/eup-per-gen-integers.md·CPF/VF/GL push→pop 整数。 - EUP Payne-Hanek Range Reduction ·
cost/eup-paynehanek.md·C2/π 表。 - EUP 修正系数 ·
cost/eup-correction-coeffs.md·CNewton / VfastTwoSum 逐函数多项式。 - EUP Lane-Width / Unpack ·
cost/eup-lane-width-unpack.md·CAluEpOpLowering unpack → compute → pack。
XLU 成本
- XLU Conflict-Penalty 表 ·
cost/xlu-conflict-penalty.md·Cnon-MXU hazard 表。 - XLU Combine / Source-Bus ·
cost/xlu-combine-sourcebus.md·CComputeCombinablePairs + AssignSourceBus。 - XLU Reemit Cost ·
cost/xlu-reemit-cost.md·C闭式 CyclesAddedByXluOperation + PerXluOperations。 - Transpose-Reservation Latency ·
cost/xpose-reservation-latency.md·CXposeXLUReservationLatency + VxposeMode。
Conv / window 成本
- WindowDescription Byte-Cost ·
cost/window-description-cost.md·Cconv/DMA byte+throughput 原语。 - ConvolutionCostState ·
cost/convolution-cost-state.md·C字段映射 + VfCycleTable 桥接。 - Reduce-Window / Pooling Cost ·
cost/reduce-window-pooling-cost.md·CRecordReduceWindowCycles。
其他成本
- Learned Cost-Model Client ·
cost/learned-cost-model-client.md·CEmitterLearnedCostModelOptions + 接线状态。 - Cost-Model Logging ·
cost/cost-model-logging.md·Cimpure AutoOr 使用方 + float grammar。 - 合并逐代计数 ·
cost/iars-per-tensorcore.md·CIarsPerTensorCore / mxu / xlu 计数集中一表。
Part VIII — 指令调度与 Bundle 打包 (14)
使用成本模型(VII)并发出有序、已打包 bundle(VI)的算法。按设计小于 VII — 在此语料中,调度算法只是成本数据的一小部分。
- 概览 ·
sched/overview.md·I调度位于 lowering 与 encoding 之间的位置。 - LatencyHidingScheduler 核心 ·
sched/latency-hiding-scheduler-core.md·CScheduleComputation candidate 循环 + async tracker。 - LHS:post_layout_pre_fusion 变体 ·
sched/lhs-post-layout-pre-fusion.md·C早期调度变体。 - LHS:post_layout / final 变体 ·
sched/lhs-post-layout.md·C最终调度变体。 - LHS:ILP 变体 ·
sched/lhs-ilp-variant.md·C两条 flag-gated 代码路径。 - ResourceType 分类学 ·
sched/scheduler-resourcetype-model.md·C逐 resource 模型 + AsyncTracker → core registry。 - Bundle Modulo Scheduling ·
sched/bundle-modulo-scheduling.md·CII-search + 软件流水线。 - LLO → Bundle Packing ·
sched/llo-bundle-packing.md·C最终阶段 slot-assignment 算法。 - MXU Assignment Bin-Packer ·
sched/mxu-assignment-binpacker.md·CAssignMxusForSequenceGroup。 - Latch Assignment 与 Overrun ·
sched/latch-assignment-overrun.md·CSetLatchIndices + 逐代 overrun 握手。 - MxuSequence / SequenceInfo ·
sched/mxu-sequence-struct.md·C完整 record + set_mxu commit。 - MRB Chain Allocator ·
sched/mrb-chain-allocator.md·Creservation-timeline 算法 + jitter 模型。 - MRB FIFO / MSR Placement ·
sched/mrb-fifo-msr-placement.md·CAllocateMrbEntriesAsFifo + BounceBetweenMsrs。 - 逐代 Encoder Latch 序列化 ·
sched/encoder-latch-serialization.md·Clatch 字段如何序列化进逐代 bundle。
Part IX — SparseCore 与 BarnaCore (45)
embedding/sparse 引擎(SparseCore,v5+)及其退役前身(BarnaCore,v2–v4)。保持完整,而不是沿 ISA/成本/调度轴切开。collective-offload 故事在 Part XIII。
SparseCore 引擎
- 概览 ·
sparsecore/overview.md·ISCS/TAC/TEC、2-sequencer(SCS+TEC)模型。 src: P-2-02 - 架构 ·
sparsecore/architecture.md·C引擎角色 + embedding 数据路径。 - SCS(Scalar)引擎 ·
sparsecore/scs-engine.md·Cscalar sequencer 引擎。 - TAC 引擎 ·
sparsecore/tac-engine.md·C仅 codec 的角色。 - TEC(Vector)引擎 ·
sparsecore/tec-engine.md·Cvector 执行引擎。 - 逐引擎 Bundle Slot-Base 映射 ·
sparsecore/bundle-slot-base-map.md·CSCS/TAC/TEC 字节偏移。 - Region → Sequencer Outliner ·
sparsecore/region-to-sequencer-outliner.md·C将 SC computation 分区为逐引擎 bundle。 - getSequencerType ·
sparsecore/getsequencertype.md·C引擎选择(SCS/TAC/TEC)。
SparseCore ISA
- Scalar Opcode Enum ·
sparsecore/scalar-opcode-enum.md·CScsScalarMisc / ScalarAlu0 / ScalarAlu1。 - Vector Opcode Enum ·
sparsecore/vector-opcode-enum.md·CVF 148-op / GF 257-op VectorAlu。 - OneSlot Scalar Router ·
sparsecore/oneslot-router.md·CConsumeOneSlotInstruction jump table。 - VectorLoad Slot ·
sparsecore/vectorload-slot.md·C5-op 字段布局 + SourceOne seed enum。 - VectorStore Slot ·
sparsecore/vectorstore-slot.md·C33 条目 type×mode scatter 矩阵。 - VectorExtended / VEX ·
sparsecore/vectorextended-vex.md·C53-op scan/sort/dedup 家族。 - VEX Operand-Port 绑定 ·
sparsecore/vex-operand-port.md·CFindAndEmitToUnusedPort(generation-specific)。 - VEX Mask / Dest-Port / Sub-Opcode ·
sparsecore/vex-mask-destport-subopcode.md·Cbit0x104 mask 字段 + sub-opcode 映射。 - M-Register Predicate Word(M0–M31) ·
sparsecore/m-register-predicate.md·Cmasked-scan inactive 语义。 - CBREG Circular-Buffer Register ·
sparsecore/cbreg.md·Cbit 布局、寻址、wrap。
SparseCore 数据路径(embeddings)
- Scan Datapath ·
sparsecore/scan-datapath.md·Cmask 消耗 + ScanOp lowering。 - Segmented Scan ·
sparsecore/segmented-scan.md·CSegmentedScanOpLowering reduction_op switch。 - Segmented-Add-Scan ·
sparsecore/segmented-add-scan.md·Cnewer-gen segment-reduce 家族。 - Embedding Minibatching 分解 ·
sparsecore/embedding-minibatching.md·Cscan lowering 之上的 HLO 层。 - SampleCombiner Emitter ·
sparsecore/sample-combiner-emitter.md·Cinner-loop combiner emit。 - EmitValencyLoop ·
sparsecore/emit-valency-loop.md·C逐 sample valency loop。 - RankAndPermute / RadixSort ·
sparsecore/rank-and-permute-radixsort.md·Csort/permute compute 函数。 - Dedup Multiplicity ·
sparsecore/dedup-multiplicity.md·CDuplicateCount→multiplicity + Uniquify inverse-permutation。
SparseCore 指针与 DMA
- Fat Pointers(AS7/8/9) ·
sparsecore/fat-pointers-as789.md·C160/128/192-bit structured-pointer 构造器。 - addrspacecast ISel ·
sparsecore/addrspacecast-isel.md·C16-cast from→to AS 映射。 - Tile-ID Cast ·
sparsecore/tile-id-cast.md·Con-tile 2-operand cast lowering。 - Stream Gather/Scatter ·
sparsecore/stream-gather-scatter.md·Cindirect-DMA descriptor 格式。 - IndirectVregStream ·
sparsecore/indirect-vreg-stream.md·CVREG-loop 形式。
SparseCore 后端
- SC Backend Pipeline ·
sparsecore/sc-backend-pipeline.md·CRunPasses、全部 12 个 pass、MEGACORE barrier。 - SC EmitX Dispatcher ·
sparsecore/sc-emitx-dispatcher.md·Cseq3/seq4/seq5 → EmitX jump table。 - SC Core Selection ·
sparsecore/sc-core-selection.md·CSelectCores / GetAllowedCores policy。 - SC Queue Assignment 与 Reservation ·
sparsecore/sc-queue-assignment-reservation.md·Cresource→limit btree_map。 - GetSparseCoreConfig ·
sparsecore/getsparsecoreconfig.md·Coffload op-type enum 来源。
SparseCore 横切内容
- SC ↔ MXU Handshake ·
sparsecore/sc-mxu-handshake.md·C集成握手。 - SparseCore vs Neuron MatmultSparse ·
sparsecore/sparsecore-vs-neuron-matmultsparse.md·I跨厂商比较。
BarnaCore(legacy v2–v4)
- 概览 ·
barnacore/overview.md·Ilegacy embedding 加速器。 - 退役证据 ·
barnacore/retirement.md·CBarnaCore → SparseCore 过渡。 - BCS Scalar0/Scalar1 ISA ·
barnacore/bcs-scalar-isa.md·C122-op control+memory ISA。 - BCS 32-Byte Bundle ·
barnacore/bcs-32byte-bundle.md·CInstBits_BarnaCorePxcHwMode + BcsMetadataAccessor。 - Merged-ALU Bit Layout ·
barnacore/merged-alu.md·CVectorResultDestination / BaseAddressEncoding。 - JF/DF 16-Byte Address-Handler Bundle ·
barnacore/jf-df-address-handler-bundle.md·CEncoderJf::EncodeBarnaCoreAddressHandler。 - 逐代 BarnaCore Perf Grid ·
barnacore/per-gen-perf-grids.md·CPufferfishBarnaCorePerformance variant1。
Part X — 片上内存与 DMA (20)
内存层级的 allocator 和 DMA wire format。层级模型在 IV 中预备;这里给出 allocator 算法和 descriptor 字节布局。
内存层级
- 概览 ·
memory/overview.md·I五个片上层级 + host memory。 src: P-2-01 - HBM BestFit Allocator ·
memory/hbm-allocator.md·Ccoalescing 规则 + split/fragmentation 策略。 - HBM DMA Alignment Contract ·
memory/hbm-dma-alignment.md·Cminimum-alignment 规则。 - VMEM Allocator ·
memory/vmem-allocator.md·C逐代号 Config、alignment、MSA 集成。 - SMEM Scalar Memory ·
memory/smem-scalar-memory.md·Callocator、寻址、placement。 - SMEM Register-Window ·
memory/smem-register-window.md·C机制 + 与 SPU slot 的校准。 - CMEM Constant-Memory Pool ·
memory/cmem-pool.md·C布局、allocator、placement(Pufferfish+)。 - SFLAG Sync-Flag Tier ·
memory/sflag-protocol.md·Callocator、Config、atomics、ordering。 - TpuBuffer Layout ·
memory/tpu-buffer-layout.md·C设备上 buffer 结构。 - Buffer Donation 与 Aliasing ·
memory/buffer-donation-aliasing.md·IDonateWithControlDependency。 src: P-2-09 - On-Device Compaction ·
memory/on-device-compaction.md·Idefrag 路径。 - 嵌入式 tcmalloc ·
memory/embedded-tcmalloc.md·CHost-CPU allocator 集成 + sizing。
DMA
- Intra-Chip DMA Descriptor ·
dma/intra-chip-descriptor.md·C格式、tiling、tier-pair 编码。 - Tile-Index Expansion ·
dma/tile-index-expansion.md·CExpandTiledMemRefs / expandTiledIndices 代数。 - Rolled / Strided / General Emitter ·
dma/rolled-strided-general.md·CissueRolled/Strided/General transfer body。 - DmaParameters Selector ·
dma/dma-parameters-selector.md·CSimple vs SingleStrided + dim-coalescing。 - Host↔Device DMA ·
dma/host-device-dma.md·CDeriveHostDmaTransfers + tags 6/7。 - UHI Host-Interface DMA ·
dma/uhi-host-interface.md·Cwire format + QueueId 语义。 - OCI Command DMA-ID ·
dma/oci-command-dma-id.md·C6 个 CmdDmaIdFromEntry helper + 3 个 header band。 - Continuation Queue ·
dma/continuation-queue.md·C内存模型 + 运行时 SFLAG 协议 + halt 模型。
Part XI — 运行时与执行 (11)
已编译程序如何在 stream 上运行。使用 ISA(VI)和内存(X)。
- 概览 ·
runtime/overview.md·I从 PJRT 到 stream 的 execute 路径。 src: P-2-09, P-022 - ExecuteAsyncOnStream ·
runtime/execute-async-on-stream.md·C核心执行入口。 src: P-022, P-2-09 - LoadProgramAndEnqueueToStream ·
runtime/load-program-enqueue.md·Cprogram load + enqueue。 src: P-022 - Stream 语义与依赖 ·
runtime/stream-semantics.md·Iordering、dependencies。 src: P-2-09 - Infeed / Outfeed 队列 ·
runtime/infeed-outfeed.md·Ihost-feed 队列。 src: P-2-09 - Host Callback ·
runtime/host-callbacks.md·I执行期间的 callback 分发。 src: P-2-09 - Completion Loop 与 AsyncTrackingEvent ·
runtime/completion-loop.md·Icompletion 跟踪。 src: P-2-09 - PJRT Client Allocator 集成 ·
runtime/allocator-integration.md·Cdevice-memory 分配流。 - Error/Status 字符串模板 ·
runtime/error-templates.md·Cprintf-format + StrFormat 目录。 - 面向用户的提示字符串 ·
runtime/hint-strings.md·C可操作诊断(flag-suggestion / doc-link / capacity)。 - Internal Pass-Name 目录 ·
runtime/internal-pass-names.md·CHLO + MLIR + pipeline phase 名称。
Part XII — 互连与路由 (30)
物理 fabric 以及 packet 如何在其上路由。Pod 内集合通信(XIII)构建于其上的几何基底(twisted torus)。
ICI fabric
- 概览 ·
ici/overview.md·Ichip 间互连模型。 - Link Bring-Up Sequence ·
ici/link-bringup.md·Clink 初始化序列。 - Topology Discovery ·
ici/topology-discovery.md·CMaster::DiscoverTopology 端到端。 - Cross-Chip DMA Descriptor ·
ici/dma-descriptor.md·CICI DMA wire format。 - ICI All-Reduce Primitive ·
ici/all-reduce-primitive.md·Cstep-generation 原语。 - Failure Modes 与 Recovery ·
ici/failure-recovery.md·Crecovery 流。 - VC-Balance Allocation ·
ici/vc-balance-allocation.md·C无死锁 virtual-channel 分配。
路由
- 概览 ·
routing/overview.md·Iroute-generation → route-cache → emission 流水线。 - RandomizedToroidalWildFirstPaths ·
routing/randomized-toroidal-wildfirst.md·Cpath generator。 - Route-Table Generation ·
routing/route-table-generation.md·Cphysmap + GetPhysicalToLogicalMapping3D。 - GetStaticPath 与 Multipod ·
routing/get-static-path.md·Cinter-pod route emission。 - ToroidalRouteCache ·
routing/toroidal-route-cache.md·C85-file binarypb decode + 逐代号拆分。 - Route-Cache Decompress ·
routing/route-cache-decompress.md·CCompressedToroidalRouteCache proto→map。 - Route-Cache Dedup ·
routing/route-cache-dedup.md·CRouteCacheDeduplicator key + type dispatch。 - Route-Cache Codec ·
routing/route-cache-codec.md·CBitEncoder / DecodePathFromBits / TopologyRotationHelper。 - CreateRoutingSchedule Solver ·
routing/create-routing-schedule.md·Cpriority-queue hop-assignment + PointerType enum。 - net_router Pipeline ·
routing/net-router-pipeline.md·Csoftware-pipeline callback + Transfer construction。 - Unicast Route Emission ·
routing/unicast-route-emission.md·CDmaDestinationRoutingTableEntryMapper 之上的层。 - GetDistances ·
routing/get-distances.md·CnK twisted-torus distance metric。
Twisted torus 几何
- 概览 ·
twist/overview.md·Itwisted-torus 拓扑及其存在原因。 - TwistedTorusND::BuildStrategy ·
twist/buildstrategy.md·Cphase 顺序 + RingLocation construction。 - Twist Predicate 与 Orientation ·
twist/twist-predicate-orientation.md·COrientation enum 4/5/6 negative-axis folding。 - 2-Phase Replica-Group Construction ·
twist/replica-group-2phase.md·Creduce-scatter / all-gather group construction。 - Shape Folds ·
twist/shape-folds.md·CK_K_2K / K_2K_2K / K_2K_NK twist-shape cases。 - GetReplicaPair3DOnTwistedTorus ·
twist/get-replica-pair-3d.md·Ccoordinate fold。 - Megacore Even/Odd Split ·
twist/megacore-even-odd.md·Csplit rationale。 - GetTiebreak ·
twist/get-tiebreak.md·Cliteral-nK routing tiebreak。 - SC-Side Twist ·
twist/sc-side-twist.md·CGetPhase0/1Cores + EstimatePhysicalLinksUsed。
ICR node-fabric
- ICR Node-Fabric DMA Bands ·
routing/icr-node-fabric-dma.md·Ctrace_point_ids 48/50/51/91 timeline 来源。 - nf_descriptor(27-field) ·
routing/nf-descriptor.md·CNode-Fabric DMA descriptor record。
Part XIII — Pod 内集合通信与屏障 (30)
一个 collective 如何在 fabric(XII)上被分解、offload 和同步。SparseCore-offload 路径桥接到 IX。
集合算法
- 概览 ·
collectives/overview.md·Istrategy picker 和算法家族。 - SelectNDStrategy ·
collectives/strategy-nd-picker.md·Ccollective-algorithm picker + degraded-axis handling。 - Binomial / Recursive-Doubling ·
collectives/binomial-recursive-doubling.md·C逐 rank partner schedule。 - AllReduce Hierarchical / Pincer ·
collectives/allreduce-hierarchical-pincer.md·Cmulti-phase 0x101 路径 + pincer fusion。 - AllGather ND-Ring ·
collectives/allgather-nd-ring.md·CGetShardIndex/GetOffset + 2D/3D selector。 - AllToAll Tables ·
collectives/alltoall-tables.md·CGenerateAllToAllTables → ConstantMapper。 - ReduceScatter ·
collectives/reduce-scatter.md·Creduce-scatter 分解。 - ConstantMapper ·
collectives/constant-mapper.md·Ccompile-time collective constant-pool tag + SMEM read。 - Degraded-Axis Ingest ·
collectives/degraded-axis.md·CTpuDegradedAxesProto fault-tolerant 路径。
SparseCore-offload 集合通信
- SC-Offload Config Builder ·
collectives/sc-offload-config-builder.md·CConstructConfigForCollectiveUniDirNDGroups。 - HierarchicalKind ·
collectives/hierarchical-kind.md·CAllGather/AllReduce/ReduceScatter OffloadConfig 结构体。 - Tensor-Split / ND-Plane ·
collectives/tensor-split-ndplane.md·Ctensor_split_factor / NumScOffloadDevices + NDPlaneInfo。 - Physical-Core Placement ·
collectives/physical-core-placement.md·Cphysical_core_indices 逐 color 映射。 - SC Core-Selection(Offload) ·
collectives/sc-core-selection-offload.md·Cassignment cost + resource model。 - get_remote_memref ·
collectives/get-remote-memref.md·C跨 chip 地址组合。 - StartRemoteDma ·
collectives/start-remote-dma.md·Call-to-all producer + SubsliceToFullSliceGlobalCoreId。
SFLAG 与屏障
- 概览 ·
barrier/overview.md·Isync-flag-based barrier 模型。 - SpecialPurposeSyncFlags ·
barrier/special-purpose-sync-flags.md·CFromProto runtime sink + overlay 语义。 - 逐代号 compiler_reserved SFLAG ·
barrier/per-codename-compiler-reserved.md·Cliteral {base, count} 整数。 - BarrierColoring ·
barrier/barrier-coloring.md·Cgreedy graph-coloring 引擎。 - Barrier → SFLAG Number Binding ·
barrier/barrier-to-sflag-binding.md·Ccompiler-barrier → hardware-SFLAG number 映射。 - Global-Barrier SFLAG Window ·
barrier/global-barrier-window.md·CGetGlobalBarrierSyncFlagNumber 使用方。 - Replica(type-2)Barrier ·
barrier/replica-barrier.md·CREPLICA barrier lowering。 - TensorCore Barrier ·
barrier/tensorcore-barrier.md·CInitializeOnScs lookup-callback。 - Tree-Barrier Vsync ·
barrier/tree-barrier-vsync.md·Cnet_util actuation + InfoTable indexing。 - InferBarrierConfig ·
barrier/infer-barrier-config.md·C逐代 SFLAG map 来源。 - 逐代 Remote-SFLAG Encoder ·
barrier/remote-sflag-encoders.md·CGetRemoteSyncFlagEncoderRegistry + chip-id map。
更高层
- Megacore Fusion ·
collectives/megacore-fusion.md·Imegacore collective fusion。 - FP8 Quantized Collective ·
collectives/fp8-quantized-collective.md·Cquantized-collective 分发路径。 src: #1339 - SPMD Link-Count Cost ·
collectives/spmd-link-count-cost.md·Clink-count divisor + 完整 collective cost-formula 集。
Part XIV — Megascale(多主机 / DCN)(21)
Pod 内 ICI 之上的数据中心网络层:跨主机 rendezvous、fleet metadata 和错误聚合。
- 概览 ·
megascale/overview.md·IDCN vs ICI;Megascale 编排什么。 - Bootstrap:概览 ·
megascale/bootstrap/overview.md·Crendezvous 概览。 - Bootstrap:Coordinator Election ·
megascale/bootstrap/coordinator-election.md·Ccoordinator-election 逻辑。 - Bootstrap:Worker Registration ·
megascale/bootstrap/worker-registration.md·Cworker 向 coordinator 注册。 - Bootstrap:Topology Exchange ·
megascale/bootstrap/topology-exchange.md·C跨主机 topology exchange。 - Bootstrap:ICI Handoff ·
megascale/bootstrap/ici-handoff.md·Chandoff 到 ICI fabric。 - Bootstrap:Convergence ·
megascale/bootstrap/convergence.md·Cconvergence 检测。 - Bootstrap:Failure Handling ·
megascale/bootstrap/failure-handling.md·Cbootstrap failure handling。 - Bootstrap:tpunetd Relationship ·
megascale/bootstrap/tpunetd-relationship.md·C与 tpunetd daemon 的关系。 - Fleet Metadata:概览 ·
megascale/fleet-metadata/overview.md·Cfleet-metadata schema 概览。 - Fleet:Topology Model ·
megascale/fleet-metadata/topology-model.md·Cfleet topology 模型。 - Fleet:Host Identity ·
megascale/fleet-metadata/host-identity.md·Chost identity 字段。 - Fleet:Global Addressing ·
megascale/fleet-metadata/global-addressing.md·Cglobal addressing scheme。 - Fleet:ICI vs DCN ·
megascale/fleet-metadata/ici-vs-dcn.md·CICI/DCN 区分。 - Fleet:Slice Shape ·
megascale/fleet-metadata/slice-shape.md·Cslice-shape 编码。 - Fleet:Bootstrap Exchange ·
megascale/fleet-metadata/bootstrap-exchange.md·Cbootstrap data exchange。 - Fleet:Barrier 与 Error 用法 ·
megascale/fleet-metadata/barrier-error-usage.md·Cfleet metadata 如何供给 barrier/error。 - Fleet:Field Decode ·
megascale/fleet-metadata/field-decode.md·C逐字段 decode。 - Cross-Host Barrier ·
megascale/cross-host-barrier.md·CMegascale barrier 原语。 - ErrorAggregator ·
megascale/error-aggregator.md·Cwire format、scope、retention、dedup。 - tpunetd Protocol ·
megascale/tpunetd-protocol.md·Cdaemon 协议。
Part XV — 性能分析与遥测 (22)
libtpu 如何发出 XPlane trace 和硬件遥测。逐代 trace payload 具有不同的 on-wire format。
- 概览 ·
profiling/overview.md·IXPlane、trace pipeline、codec families。 src: P-2-32 - TpuProfiler ABI ·
profiling/tpu-profiler-abi.md·Cprofiler C 接口面。 - PJRT_Profiler Extension ·
profiling/pjrt-profiler-extension.md·CPLUGIN_Profiler_Api。 - XPlane / XStat / TraceMe Emission ·
profiling/xplane-xstat-traceme.md·Cemit 路径。 src: P-2-32 - tpu_telemetry.proto ·
profiling/tpu-telemetry-proto.md·C逐字段 decode。 - XEvent Metadata IDs ·
profiling/xevent-metadata-ids.md·Cprofiler event 目录。 - XStat Metadata IDs ·
profiling/xstat-metadata-ids.md·Cstat/attribute 目录。 - TraceEntriesCoder ·
profiling/trace-entries-coder.md·Cfixed-width device-trace codec。 - riegeli Trace Container ·
profiling/riegeli-trace-container.md·Cframing + timebase clock-domain conversion。 - Per-DeviceType Profiler Struct ·
profiling/per-devicetype-struct.md·C0x448-byte master device 表。 - kDeviceTypeInfo Producer / Readers ·
profiling/kdevicetypeinfo-producer-readers.md·Croofline readers。 - TracePoints Master Registry ·
profiling/tracepoints-master-registry.md·Ctrace_point_id → {family, subscriber}。 - TraceEntry → XEvent/XStat ·
profiling/trace-entry-to-xevent.md·CTpuXLineBuilder last hop。 - Task Proto ·
profiling/task-proto.md·Cdevice clock-rates + chip/host identity + GtcSpan offset。 - Payload:jxc Legacy ·
profiling/payload-jxc-legacy.md·C16-bit trace_point_id namespace。 - Payload:vfc / vlc / gfc ·
profiling/payload-vfc-vlc-gfc.md·C逐代 payload field map。 - Payload:SparseCore Band ·
profiling/payload-sc-band.md·CSCS/TEC/TAC profiler payload。 - Payload:UHI/OCI/ICI/DMA ·
profiling/payload-uhi-oci-ici-dma.md·C高价值 trace-point bit decode。 - ICR DMA-Timeline Band ·
profiling/icr-dma-timeline-band.md·C48/50/51/91 rendering。 - jxc DMA / HbmMux / brn_perf ·
profiling/jxc-dma-hbmmux-brnperf.md·Cjellyfish DMA band。 - v7x Perf-Counters ·
profiling/v7x-perf-counters.md·Chardware-counter name resolver + firmware/DVFS telemetry。 - DMA Endpoint Rendering ·
profiling/dma-endpoint-rendering.md·CSrcMem/DstMem/Opcode enum + XEvent rendering。
Part XVI — 配置与编译旋钮 (16)
每个 flag、env var 和 compile knob,以及它们如何解析。TpuCompilationEnvironment 是 1,121 字段的主配置对象。
- 概览 ·
config/overview.md·Iflag/knob/env 分类学。 - xla_ Flag Atlas* ·
config/xla-flag-atlas.md·C完整 option-name 目录。 - Flag Families ·
config/flag-families.md·Cjf/pf/vf/gf/sc/msa/lhs 前缀。 - 环境变量 ·
config/env-vars.md·Ienv-var 目录。 src: W005 - TpuCompilationEnvironment(1121 fields) ·
config/tpu-compilation-environment.md·C概览 + DefaultDebugOptions。 - TCE Field Dictionary(A) ·
config/tce-field-dictionary-a.md·C字段第 1 部分。 - TCE Field Dictionary(B) ·
config/tce-field-dictionary-b.md·C字段第 2 部分。 - TCE Field-Offsets 与 Flag Defaults ·
config/tce-field-offsets-defaults.md·Cfield#→offset + ABSL-flag defaults。 - xla.DebugOptions(290 fields) ·
config/debugoptions-proto.md·C完整 proto 表。 - Default DebugOptions ·
config/default-debugoptions.md·C有效默认值。 - AutoProto / AutoOr Resolution ·
config/autoproto-autoor-resolution.md·C逐 knob AUTO resolver body。 - AutoOr Parse Grammar ·
config/autoor-parse-grammar.md·CParseAutoOrFromString(XLA_FLAGS ingest)。 - AutoOr Unparse ·
config/autoor-unparse.md·CAbslUnparseFlag reverse-text。 - AutoProto Message-Arms ·
config/autoproto-message-arms.md·C12 个 message-arm sub-message defaults + SET path。 - Registry-Mediated Flags ·
config/registry-mediated-flags.md·Cenable_lem_scheduler / explicit_evict_memory_limit_kib。 - TpuVersion-Aware Flag-Prefix Dispatch ·
config/flag-prefix-dispatch.md·O逐代 flag-prefix 路由。 src: #1171 (open)
Part XVII — 附录 (18)
参考表、source-traceability 索引和开放前沿登记表。
- LloOpcode 表(462) ·
appendix/llo-opcode-table.md·C带类别的完整 enum。 src: P-2-25 - LlvmTpu Intrinsic 表(1356) ·
appendix/llvmtpu-intrinsic-table.md·C完整tpu_*intrinsic 列表。 - MemorySpace 表(17) ·
appendix/memory-space-table.md·C完整枚举。 src: P-2-01 - Dispatch-Table Taxonomy(full) ·
appendix/dispatch-table-taxonomy-full.md·C全部 19 类 + 40,313-table TSV。 src: P-2-06 - filewrapper_toc Catalog(61) ·
appendix/filewrapper-toc-catalog.md·C每个嵌入式 runtime resource。 src: P-2-07 - protodesc_cold Catalog(760) ·
appendix/protodesc-cold-catalog.md·C每个嵌入式 FileDescriptorProto。 src: P-2-07 - RTTI Namespace Census ·
appendix/rtti-namespace-census.md·C完整 160,351 条目分解。 - Reconstructed-Proto Index ·
appendix/reconstructed-proto-index.md·C从 descriptor pool 恢复的每个 proto。 - Error / Status Codes ·
appendix/error-status-codes.md·Cstatus-code 目录。 - Flag Catalog(full TSV) ·
appendix/flag-catalog-full.md·Cmachine-readable flag 列表。 - Symbol Namespace Index ·
appendix/symbol-namespace-index.md·Inamespace population map。 src: W014, W003 - 逐代主比较矩阵 ·
appendix/per-gen-comparison-matrix.md·Cbundle/lanes/MXU/XLU/IAR/SFLAG/EUP/DID,六代,一页。 - 证据锚点索引 ·
appendix/evidence-anchor-index.md·Ipage → source-findings file → binary VA,完整 traceability map。 src: (this corpus) - 源码语料映射 ·
appendix/source-corpus-map.md·IP-2/P-3/W raw-findings file → part assignment。 src: W001, W034 - 开放前沿登记表 ·
appendix/open-frontier-register.md·I尚未恢复的内容(cmem-load/sparsity 边界;sparsity slot #1092;NOP canonical #1096;flag-prefix #1171)。 - 交叉引用依赖图 ·
appendix/cross-reference-graph.md·I页面间依赖网络。 src: G001–G003 - 二进制布局参考 ·
appendix/binary-layout.md·Csegment、anchor symbol、与 ptxas/nvlink/cicc 的规模对比。 src: W023, W027 - 扩展术语表 ·
appendix/glossary-extended.md·I每个 acronym + internal class name。 src: W014
附录亮点
两个附录页面是连接材料,使本书可审计,并让逐代叙事保持连贯:
- 证据锚点索引(
appendix/evidence-anchor-index.md)— 完整的 page → source-findings file(P-2-*/P-3-*/W*)→ binary VA 映射。书中的每个论断都可经由该索引追溯到一个具体函数地址和一个具体 raw-findings file。这正是可重新实现参考与博客文章的区别。 - 逐代主比较矩阵(
appendix/per-gen-comparison-matrix.md)— 一页,六代(Jellyfish/Dragonfish/Pufferfish/Viperfish/Ghostlite/6acc60406)× 每个逐代常量:bundle 大小、lane/sublane 计数、MXU 维度、XLU/IAR 计数、逐层级内存(VMEM/SMEM/SFLAG/CMEM/HBM)、accelerator-core 类型,以及承载逐代 EUP push→pop 延迟的成本模型类三元组(LatencyTable/CycleTable/Performance)。把原本分布在 Part IV、VI 和 VII 的逐代材料串在一起。
开放前沿
等级为 O 的页面尚未由完整 raw-findings file 支撑:sparsity slot 编码(task #1092)、逐代 NOP canonical 编码(#1096)、TpuVersion-aware flag-prefix dispatch(#1171),以及 cmem-load/sparsity 边界。开放前沿登记表跟踪这些内容。其他所有内容都由 C(已确认)或 I(推断)raw-findings file 支撑。