交叉参考图
此页面上的所有计数均来自 wiki 源树,而不是来自
libtpu.so(构建 ID89edbbe81c5b328a958fe628a9f2207d)。它们描述了 wiki 自己的导航结构,而不是二进制文件,并且它们随着页面的添加或重命名而发生变化。将下面的每个数字视为近似值,并在进行大量编辑后重新推导。
摘要
本附录将 wiki 映射为有向图:每个页面都是一个节点,每个内联 Markdown 链接 ](path.md) 都是一条边。与参考的其余部分(记录 TPU 二进制文件)不同,此页面记录了书,因此读者(或未来的编辑)可以看到哪些页面是中心连接点,哪些页面分散到许多其他页面,以及哪些部分紧密耦合。它是 front/how-to-read.md 的结构补充:该页面拥有人类阅读路径叙述(“从这里开始,按顺序阅读这些”);该页面拥有测量的拓扑(“这 18 个页面吸收了所有入站链接的三分之一”)。
该图有 426 个页面节点 - 从 SUMMARY.md 链接的每个不同的 .md 文件,包括 SUMMARY.md 列为其前缀章节的 index.md 登录页面; SUMMARY.md 本身是 mdBook 目录,不包含在节点集中。在分配给编号部分的 425 个节点中,加上 index.md,计数为 426。在这些节点中,大约有八千个内部 .md 链接实例,几乎所有这些都解析为真实页面;少量过时的相对路径被标记为需要修复。 18 个部分(0 到 XVII)对节点进行划分;部分间的边缘揭示了耦合主干——编译器→ISA→成本主干和路由↔集合网格占主导地位。
计数中出现了三个角色并构建了页面的其余部分:
- 中心 — 具有高入站度的页面。读者从许多地方来到这里;重命名链接的编辑会破坏最多的链接。概述页面和共享 ISA/成本参考页面是中心。
- 连接器 — 具有高出站程度的页面。它们将读者分散到一个子系统中。横切参考页(
glossary.md、subsystem-map.md、附录表)和章节overview.md页面是连接器。 - Spine — 最强的有向部分间边缘,它跟踪整本书的规范编译和运行管道。
| 节点集 | 426 页(425 分配给编号部分 + index.md 前缀章节) |
| 零件 | 18(第 0 部分 - 参考设备……第 XVII 部分 - 附录) |
| 内部链接实例 | ~8200(几乎全部解析;少数陈旧的相对路径) |
| 顶部轮毂 | isa/slot-mxu.md — ~50 入站 |
| 顶部连接器 | glossary.md — 73 个不同的出站 |
| 结构水槽 | index.md — ~146 入站(“返回索引”) |
| 最密集部分(入站) | 第六部分 — TensorCore ISA |
| 最重的内部联轴器 | 第 IX 部分 — SparseCore(大多数部分内链接) |
注意 — 这里的“入站链接计数”是指不同的源页面,其中至少包含一个指向目标的链接(页面级入度),除非注明为链接实例(原始边缘计数,计数重复)。当一个页面多次链接同一目标时,两者会有所不同;中心表使用不同源计数,这是编辑者关心的指标(“如果我移动此页面,我会触及多少个文件”)。
零件结构
18 个部分及其页数,通过将每个链接页面分配给紧邻其上方的部分标题,直接从 SUMMARY.md 解析。总数为425;对于 index.md,节点集为 426,而 SUMMARY.md 则使文件计数达到 427。
| 零件 | 页数 | 主题 |
|---|---|---|
| 0 — 参考装置 | 8 | 如何阅读、术语表、方法论、参考书目、子系统图 |
| I — 二进制解剖 | 12 | ELF 布局、部分、构建元数据、取证 |
| II — 插件生命周期和 PJRT API | 23 | PJRT C API,vtable重建,插件初始化/拆卸 |
| III — Tpu C 垫片层 | 10 | Tpu* C 入口点将 PJRT 桥接到运行时 |
| IV — 芯片和硬件代号模型 | 24 | 代号协调、每代规格、PCI ID、命名 |
| V - 编译器:降低和优化通过 | 36 | XLA→MLIR→LLO管道,通过目录,内在降低 |
| VI — TensorCore ISA 和 LLO 编码 | 42 | 捆绑模型、VLIW 插槽、MC 发射器、操作码编码 |
| VII — 成本和延迟模型 | 41 | 资源枚举、MXU/VPU 延迟表、调度成本 |
| VIII — 指令调度和捆绑打包 | 14 | 列表调度程序、捆绑包打包程序、危险模型 |
| IX — SparseCore 和 BarnaCore | 45 | SC 块、TEC/SCS 排序器、聚集/分散、BarnaCore |
| X — 片上存储器和 DMA | 20 | VMEM/SMEM/HBM 层次结构、DMA 描述符、平铺 |
| XI — 运行时和执行 | 11 | 程序加载、内部通道名称、执行循环 |
| XII — 互连和路由 | 30 | ICI启动、拓扑、路由、TwistedTorus策略 |
| XIII — Pod 集体和障碍 | 30 | 全归约/全聚集、屏障引擎、归约树 |
| XIV — 超大规模(多主机/DCN) | 21 | DCN传输,多切片,主机侧集体扇出 |
| XV — 分析和遥测 | 22 | 跟踪格式、计数器、XProf 集成 |
| XVI — 配置和编译旋钮 | 16 | 标志解析、旋钮目录、XLA 标志管道 |
| 十七 — 附录 | 20 | 横切表、术语表、此图、锚索引 |
| 总计 | 425 | (+index.md = 426 个节点;+SUMMARY.md = 427 个文件) |
明白了 — 目录布局确实不一对一映射到部件。
twist/和ici/均适用于第 XII 部分(互连和路由);barnacore/属于第九部分(SparseCore);barrier/和collectives/都是第XIII部分;memory/和dma/都是X部分。按顶级目录错误文件twist/(9页)计入硅部分。上表是从SUMMARY.md排序解析出来的,比较权威。
顶部中心页面
按不同入站源页面(页面级入度)排名的页面,不包括 index.md。这些是中心连接点:重命名一个连接点就可以重写数十个链接;它们也是交叉引用编辑器应始终记住将新页面指向的页面。
| 页 | 入站 | 角色 |
|---|---|---|
isa/slot-mxu.md | ~50 | MXU VLIW 插槽 — 每个降低/成本/计划页面都会引用它 |
sparsecore/overview.md | ~48 | SparseCore 登陆 - 大多数第 IX 部分页面都链接到它 |
isa/bundle-model-overview.md | ~45 | VLIW 捆绑模型 — ISA 的中心概念 |
compiler/overview.md | ~37 | 编译管道落地 |
collectives/overview.md | ~35 | On-pod集体登陆 |
cost/resource-enum.md | ~34 | sched + cost + ISA 共享的资源枚举 |
targets/tpu-version-codename-matrix.md | ~33 | 权威代号对照表 |
cost/mxu-latency-overview.md | ~31 | MXU 延迟参考,由 lowering 和 sched 引用 |
routing/overview.md | ~28 | 路由登陆 |
cost/overview.md | ~28 | 成本模型落地 |
profiling/overview.md | ~27 | Profiling 登陆 |
compiler/compile-phases.md | ~27 | 相排序,引用自运行时和 ISA |
isa/mc-emitter.md | ~26 | 机器代码发射器 |
pjrt/overview.md | ~25 | PJRT API落地 |
sparsecore/tec-engine.md | ~24 | TEC 定序器引擎 |
sparsecore/stream-gather-scatter.md | ~24 | SC 聚集/分散基元 |
compiler/tpu-to-llo-ods.md | ~23 | TPU→LLO ODS 方言定义 |
sched/overview.md | ~23 | 调度落地 |
index.md | ~146 | 前缀登陆——通用“返回索引”目标 |
注意 —
index.md本身属于一类,大约有 146 个入站。几乎每个页面都以[返回索引](../index.md)链接结束,因此其入度跟踪的是页面数量,而不是主题重要性。它是图的结构性汇点,并列在最后,因此不会扭曲主题排名。真正的主题中心是overview.md页面和共享 ISA/成本参考页面,正是front/how-to-read.md推荐作为章节入口点的那些页面。QUIRK — 集线器列表主要由第 V 部分(编译器)、VI(ISA)、VII(成本)和 IX(SparseCore)组成。这不是一个工件:这四个部分是“参考”核心。有关路由、集合或分析的页面通常会“向下”链接到 ISA 和成本模型,以解释指令的成本或槽的编码方式,但 ISA 页面很少链接到备份。该图在设计上是不对称的——脊柱是参考的,而不是参考的。
顶部连接器页
按不同的出站内部链接(出站度)排名的页面。这些将读者分散开来;它们是将这本书编织在一起的页面。出现了两种类型:第 0 部分/第 XVII 部分(词汇表、子系统图、附录表)中指向所有内容的交叉参考页,以及指向其自己部分中每个页面的 overview.md 部分页面。
| 页 | 出站 | 物种 |
|---|---|---|
glossary.md | 73 | 横切 — 每个定义的术语都链接到其主页 |
subsystem-map.md | 63 | 横切 — 整个二进制文件的视觉索引 |
appendix/glossary-extended.md | 59 | 横切 — 长术语定义 |
isa/overview.md | ~44 | 部分概述 — 深入 ISA 页面 |
front/how-to-read.md | ~42 | 横切 — 本页的阅读路径伴侣 |
sparsecore/overview.md | 40 | 剖面概述 — 顶部集线器和顶部连接器 |
compiler/overview.md | 39 | 部分概述 — 编译器管道扇出 |
front/compile-flow-walkthrough.md | 35 | 横切 — 对多个零件进行螺纹加工的端到端工作示例 |
appendix/llvmtpu-intrinsic-table.md | 33 | 横切 — 内在→下页索引 |
isa/bundle-model-overview.md | ~25 | 部分概述 — 束/插槽扇出 |
runtime/internal-pass-names.md | 22 | 横切 — 通行名称→通行页面索引 |
profiling/overview.md | 22 | 部分概述 |
compiler/compile-phases.md | 21 | 章节索引 — 阶段→页 |
appendix/llo-opcode-table.md | 21 | 横切 — 操作码→编码页索引 |
routing/overview.md | 18 | 部分概述 |
GOTCHA —
sparsecore/overview.md、compiler/overview.md、isa/bundle-model-overview.md和routing/overview.md出现在集线器和连接器表中。部分概述页面是双向锚点 - 部分中的每个页面都链接到概述(高入站),概述链接到每个页面(高出站)。它们是每个部件的自然入口点和保持准确性的最高价值页面。
部件间链接密度
使用 SUMMARY.md 权威页面→零件分配将边缘计数聚合到零件级别。 out = 将实例链接到其他部件; in = 从其他部分到达的链接实例; self = 零件内链接实例。下面的 ASCII 摘要按每个轴对零件进行排名,然后追踪最强的有向边缘。
PER-PART LINK DEGREE (link instances; self = intra-Part)
Part in out self
0 Reference Apparatus 16 347 44 <- pure connector (fans out, rarely targeted)
I Binary Anatomy 101 31 117
II Plugin Lifecycle & PJRT 124 84 357
III Tpu C-Shim Layer 15 81 96
IV Silicon & Codename 99 47 195
V Compiler 229 176 553 <- spine: most-referenced compiler stage
VI TensorCore ISA 363 75 542 <- HEAVIEST inbound: the referenced core
VII Cost & Latency Model 161 113 579
VIII Scheduling & Bundle Pack 92 129 130
IX SparseCore & BarnaCore 169 105 876 <- HEAVIEST self: most internally cohesive Part
X On-Chip Memory & DMA 166 125 282
XI Runtime & Execution 77 92 109
XII Interconnect & Routing 123 110 480
XIII On-Pod Collectives 102 143 477
XIV Megascale (DCN) 39 15 97 <- most peripheral: low in, low out
XV Profiling & Telemetry 63 49 373
XVI Configuration & Knobs 49 11 251 <- referenced (knobs), barely references out
XVII Appendices 22 433 35 <- HEAVIEST outbound: the index-of-indexes
STRONGEST DIRECTED INTER-PART EDGES (from -> to, link instances)
XVII -> VI 126 appendix tables index every ISA opcode/slot page
VII -> VI 76 cost model is computed per ISA instruction
0 -> V 73 reference apparatus points readers at the compiler first
VIII -> VII 63 scheduler queries the cost model on every decision
XII -> XIII 61 routing underpins collective communication
XI -> V 60 runtime dispatches into the compiler pipeline
XIII -> XII 59 collectives ride the routing fabric (mesh: XII<->XIII)
XVII -> I 56 appendix anchors point back at binary-anatomy evidence
X -> V 48 memory/tiling decisions feed the compiler
VIII -> VI 46 scheduling reasons over ISA bundle slots
V -> IX 45 compiler lowers a path into the SparseCore backend
II -> XI 45 PJRT API hands control to the runtime
0 -> VI 44 subsystem map / glossary anchor ISA terms
0 -> I 44 reference apparatus anchors binary-anatomy terms
III -> II 38 C-shim sits directly beneath the PJRT API
```text
一段图片:**第六部分(TensorCore ISA)是引力中心** - 它吸收 363 个入站链接实例,单个最强边缘(`XVII → VI`,126)来自对其操作码进行分类的附录表。 **编译主干**是`0 → V → {VI, IX}`和`VII ↔ VI ↔ VIII`:成本模型(VII)和调度器(VIII)都引用ISA(VI),调度器依次查询成本模型(VIII → VII, 63)。 **通信网格**是双向 `XII ↔ XIII` 对(路由 ↔ 集合体,61 和 59)——这两个部分几乎对称地互相引用,因为集合体 *是* 一种路由通信模式。 **第九部分(SparseCore)**是内部最具凝聚力的部分(876 个自链接)——它是一本近乎独立的子书。 **第 XVII 部分(附录)** 是索引中的索引:433 个出站,几乎没有一个入站。 **第 XIV 部分(超大规模)** 是最外围的,位于 DCN 边缘,入站很少,出站也最少。
> **注 —** 第 0 部分和第 XVII 部分在结构上是相同功能的相反极点。第 0 部分(`glossary`、`subsystem-map`、`how-to-read`)是“前门”连接器:它将读者“扇入”内容部分(347 个输出,16 个输入)。第 XVII 部分(附录表和扩展术语表)是*后门*连接器:它索引后面的内容 Parts(433 出,22 入)。两者都不是目的地;两者都是纯路由器。此页面位于第十七部分,是少数例外之一 - 它旨在“阅读”,而不仅仅是遍历。
---
## 推荐遍历路径
测量的拓扑建议四种遍历顺序。散文原理及个人阅读计划请参考[`front/how-to-read.md`](../front/how-to-read.md);下面的路径是通过枢纽的*图最短*路线。
### 路径 1 — 编译主干(访问最多)
规范的端到端路由,遵循最强的入站边缘进入 ISA 核心:
```text
front/how-to-read.md
-> compiler/overview.md (hub: ~37 in)
-> compiler/compile-phases.md (hub: ~27 in)
-> compiler/tpu-to-llo-ods.md (hub: ~23 in)
-> isa/bundle-model-overview.md (hub: ~45 in)
-> isa/slot-mxu.md (TOP hub: ~50 in)
-> cost/resource-enum.md (hub: ~34 in)
-> sched/overview.md (hub: ~23 in)这是书脊第 V → VI → VII → VIII 部分的痕迹。仅浏览这七页的读者就可以通过其最高度节点看到整个降低到调度的管道。
路径 2 — 加速器引擎深入研究
两个引擎子书,每个都通过其双集线器/连接器概述输入:
sparsecore/overview.md (~48 in / 40 out) -> tec-engine.md, stream-gather-scatter.md, architecture.md
barnacore/overview.md -> bcs-scalar-isa.md, retirement.md
```text
第 IX 部分是内部凝聚力最强的部分(876 个自链接);一旦进入 `sparsecore/overview.md`,读者就可以留在本地并专门跟踪部分内链接。
### 路径 3 — 通信网格
双向路由↔集合对,加上超大规模扩展:
```text
routing/overview.md (hub: ~28 in) <-> collectives/overview.md (hub: ~35 in)
twist/overview.md (hub: ~22 in) barrier/...
ici/... megascale/... (Part XIV, peripheral)XII ↔ XIII 对称性 (61 / 59) 意味着任一概览都是有效条目;该图让读者在路由机制和集体语义之间摇摆。
路径 4 — 参考设备快捷方式
对于知道自己想要什么的读者来说,连接器页面是最快的扇出:
glossary.md (73 out) — term -> home page
subsystem-map.md (63 out) — subsystem -> Part
appendix/llvmtpu-intrinsic-table.md (33 out) — intrinsic -> lowering page
appendix/llo-opcode-table.md (21 out) — opcode -> encoding page
```text
这四页共同指向了本书的大部分内容;它们是索引层。
> **QUIRK —** 没有单一的哈密顿阅读顺序 — 该图不是一条线,它是一个具有路由↔集体循环的中心辐射型结构。上面的四个路径是自然的*弧*; `front/how-to-read.md` 对它们进行第一次读取排序,此页面对它们进行测量。添加新页面的编辑者应将其连接到至少一个部分概述中心(入站)和相关附录索引(以便可以从后门发现它),否则它会成为孤儿,下次运行此分析时将标记该页面。
---
## 交叉引用
- [`front/how-to-read.md`](../front/how-to-read.md) — 阅读路径伴侣;拥有本页在结构上衡量的人类叙事。首先阅读它。
- [`subsystem-map.md`](../subsystem-map.md) — 顶部连接器(63出站);该页面计算其边缘的视觉索引。
- [`glossary.md`](../glossary.md) — 单个最高出站页面 (73);术语到页面的路由器。
- [`appendix/evidence-anchor-index.md`](evidence-anchor-index.md) — 兄弟附录;索引二进制证据锚点,因为此页面索引导航边缘。平行结构,正交轴。
- [`appendix/glossary-extended.md`](glossary-extended.md) — 长格式术语表,第三高连接器(59 个出站)。
- [`index.md`](../index.md) — 前缀着陆和结构下沉(~146 入站); `SUMMARY.md` 目录是其真实来源。