Skip to content

交叉参考图

此页面上的所有计数均来自 wiki 源树,而不是来自 libtpu.so(构建 ID 89edbbe81c5b328a958fe628a9f2207d)。它们描述了 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.mdsubsystem-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 — 二进制解剖12ELF 布局、部分、构建元数据、取证
II — 插件生命周期和 PJRT API23PJRT C API,vtable重建,插件初始化/拆卸
III — Tpu C 垫片层10Tpu* C 入口点将 PJRT 桥接到运行时
IV — 芯片和硬件代号模型24代号协调、每代规格、PCI ID、命名
V - 编译器:降低和优化通过36XLA→MLIR→LLO管道,通过目录,内在降低
VI — TensorCore ISA 和 LLO 编码42捆绑模型、VLIW 插槽、MC 发射器、操作码编码
VII — 成本和延迟模型41资源枚举、MXU/VPU 延迟表、调度成本
VIII — 指令调度和捆绑打包14列表调度程序、捆绑包打包程序、危险模型
IX — SparseCore 和 BarnaCore45SC 块、TEC/SCS 排序器、聚集/分散、BarnaCore
X — 片上存储器和 DMA20VMEM/SMEM/HBM 层次结构、DMA 描述符、平铺
XI — 运行时和执行11程序加载、内部通道名称、执行循环
XII — 互连和路由30ICI启动、拓扑、路由、TwistedTorus策略
XIII — Pod 集体和障碍30全归约/全聚集、屏障引擎、归约树
XIV — 超大规模(多主机/DCN)21DCN传输,多切片,主机侧集体扇出
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~50MXU VLIW 插槽 — 每个降低/成本/计划页面都会引用它
sparsecore/overview.md~48SparseCore 登陆 - 大多数第 IX 部分页面都链接到它
isa/bundle-model-overview.md~45VLIW 捆绑模型 — ISA 的中心概念
compiler/overview.md~37编译管道落地
collectives/overview.md~35On-pod集体登陆
cost/resource-enum.md~34sched + cost + ISA 共享的资源枚举
targets/tpu-version-codename-matrix.md~33权威代号对照表
cost/mxu-latency-overview.md~31MXU 延迟参考,由 lowering 和 sched 引用
routing/overview.md~28路由登陆
cost/overview.md~28成本模型落地
profiling/overview.md~27Profiling 登陆
compiler/compile-phases.md~27相排序,引用自运行时和 ISA
isa/mc-emitter.md~26机器代码发射器
pjrt/overview.md~25PJRT API落地
sparsecore/tec-engine.md~24TEC 定序器引擎
sparsecore/stream-gather-scatter.md~24SC 聚集/分散基元
compiler/tpu-to-llo-ods.md~23TPU→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.md73横切 — 每个定义的术语都链接到其主页
subsystem-map.md63横切 — 整个二进制文件的视觉索引
appendix/glossary-extended.md59横切 — 长术语定义
isa/overview.md~44部分概述 — 深入 ISA 页面
front/how-to-read.md~42横切 — 本页的阅读路径伴侣
sparsecore/overview.md40剖面概述 — 顶部集线器顶部连接器
compiler/overview.md39部分概述 — 编译器管道扇出
front/compile-flow-walkthrough.md35横切 — 对多个零件进行螺纹加工的端到端工作示例
appendix/llvmtpu-intrinsic-table.md33横切 — 内在→下页索引
isa/bundle-model-overview.md~25部分概述 — 束/插槽扇出
runtime/internal-pass-names.md22横切 — 通行名称→通行页面索引
profiling/overview.md22部分概述
compiler/compile-phases.md21章节索引 — 阶段→页
appendix/llo-opcode-table.md21横切 — 操作码→编码页索引
routing/overview.md18部分概述

GOTCHA — sparsecore/overview.mdcompiler/overview.mdisa/bundle-model-overview.mdrouting/overview.md 出现在集线器和连接器表中。部分概述页面是双向锚点 - 部分中的每个页面都链接到概述(高入站),概述链接到每个页面(高出站)。它们是每个部件的自然入口点和保持准确性的最高价值页面。


部件间链接密度

使用 SUMMARY.md 权威页面→零件分配将边缘计数聚合到零件级别。 out = 将实例链接到其他部件; in = 其他部分到达的链接实例; self = 零件内链接实例。下面的 ASCII 摘要按每个轴对零件进行排名,然后追踪最强的有向边缘。

text
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 — 加速器引擎深入研究

两个引擎子书,每个都通过其双集线器/连接器概述输入:

text
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 — 参考设备快捷方式

对于知道自己想要什么的读者来说,连接器页面是最快的扇出:

text
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` 目录是其真实来源。