Trace Payload:vfc / vlc / gfc 分代频带
本页中的所有地址和偏移均适用于
libtpu-0.0.40-cp314wheel 中的libtpu.so(build-id89edbbe81c5b328a958fe628a9f2207d)。该二进制文件未剥离符号,完整 C++ 符号存在,且.textVMA 等于文件偏移。其他版本会有所不同。
摘要
本页是对设备事件载荷解码按硅片代际的补完。Trace Payload: UHI / OCI / ICI / DMA 对 pxc(pufferfish)族做了字节精确解码,并把 glc 族作为代表样本;本页解码其余三个族 vfc(Viperfish)、vlc(Viperfish-lite)和 gfc(6acc60406)上的同六个高价值频带,并钉住每代的差异:发生漂移的位宽、出现和消失的字段,以及移动的帧预算。随后枚举此前页面只留下位宽的选择器枚举值表:每个 enum 类型载荷字段所索引的整数→名称映射。
解析器对族保持不变:同样的 Decode<Name>(string_view, bool* started_out, TraceEntry* out) 形态,同样的 BitDecoder::GetBits64NoInline 宽度立即数,同样的总位数 CHECK(cmp $CONST,%rdi; jne FATAL),同样的 TraceEntry+0x28 oneof 标记。每个族改变的是宽度和字段集合。每个 Decode<Name> 位于该族的匿名命名空间中(asic_sw::driver::deepsea::vxc::vfc::profiler、…::vxc::vlc::profiler、…::gxc::gfc::profiler),并可从该族的 DecodeEntry 跳转表到达。C++ 命名空间本身就是代际证据:vfc 和 vlc 共享 vxc 父级(Viperfish 及其 lite 裁剪版),gfc 位于 gxc(6acc60406)之下。
下面所有表都必须同时持有三个事实。第一,TraceIdHeader.chip_id 在 Viperfish 处从 12→14 扩宽(不是在 glc 处):vfc/vlc/glc/gfc 都携带 TraceIdHeader{transaction_id 21, core_id 3, chip_id 14} = 38 位;只有 pxc 使用 12。第二,vlc 是异常点:它的 DecodeTraceHeader 读取 block_id 3 以及 timestamp 45,得到 56 位 header 和 58 位 frame+header,因此每个 vlc 载荷从包 bit 58 开始,每个 vlc CHECK 都以 58 重新定基,而不是 61。第三,字段集合本身按代际增长:TCS sync-flag 频带从 glc 起新增 64 位 lcc 字段,gfc 又增加三个早期硅片上不存在的频带(STATS_COUNTER、O2CUR、FLL)。
对重新实现而言,本页补完的契约是:
- vfc/vlc/gfc 上六个频带(HDE、OCI、ICI、片内 DMA、TCS sync-flag、throttle/stall)的分代宽度差异:每条
GetBits64宽度序列和总位数CHECK,以相对 pxc/glc 基线的差异表达。 - vlc 58 位 header 重新定基规则:vlc 为
payload_bits = CHECK − 58,其他每个族为CHECK − 61。 - 选择器枚举值表:每个
enum类型选择器字段的整数→名称映射(core_id、node_type/extra_id、thread_id、dma_type、src/dst_opcode、src/dst_mem_id、router_link_port_id、syncopcode、final_throttle_source、gfcsize/cmn_router_type等),从 descriptor-pool 字符串表字节精确读取。
| 族 | C++ 命名空间 | chip_id | Header | Frame+hdr | 载荷 @ bit | 新增 / 移除频带 | 置信度 |
|---|---|---|---|---|---|---|---|
| pxc | …deepsea::pxc::profiler | 12 | 59 | 61 | 61 | 基线(UHI、CMQ、BC-FSM) | CERTAIN |
| vfc | …deepsea::vxc::vfc::profiler | 14 | 59 | 61 | 61 | UHI→HDE,CMQ→CMN-DMA | CERTAIN |
| vlc | …deepsea::vxc::vlc::profiler | 14 | 56 | 58 | 58 | UHI→HDE,CMQ→VDQ | CERTAIN |
| glc | …deepsea::gxc::glc::profiler | 14 | 59 | 61 | 61 | +lcc sync-flag | HIGH |
| gfc | …deepsea::gxc::gfc::profiler | 14 | 59 | 61 | 61 | +STATS_COUNTER,+O2CUR,+FLL,+sync lcc | CERTAIN |
读取分代行
记法与相邻的 UHI/OCI/ICI/DMA 页面相同:宽度序列写作 TIDhdr | payload。前导 21,3,14(所有四个较新的族)是 TraceIdHeader{transaction_id 21, core_id 3, chip_id 14} = 38 位;| 将其与类型化载荷标量分开。oneof 列是在 TraceEntry+0x28 标记的 proto2 oneof 字段号,也就是稳定的跨代分派键。CHECK 是解码器验证的硬编码总位数常量。
支配每一条 vlc 行的唯一重新定基规则:
// payload-bit derivation from CHECK, per family
payload_bits = CHECK - (family == vlc ? 58 : 61); // vlc header is 56→58 frame+header
pkts = (CHECK <= 128) ? 1 : 2; // movq $0x10 / $0x20 → 0x8(%rbx)
```text
> **易错点 —** vlc 的 58 位 header 是会打破所有跨族假设的陷阱。`DecodeTraceHeader` @ `0xf5f5b40` 读取 `GetBits64(8)`(trace_point_id)、`GetBits64(3)`(block_id)、`GetBits64(45)`(timestamp)= 56 个 header 位 → 58 个 frame+header 位。`45` 立即数(0x2d)位于 `DecodeTraceHeader` 反汇编中。其他每个族读取 59 位 header(block_id 6 *或* timestamp 48)。硬编码 61 位载荷起点的重新实现会把**每个** vlc 字段放错位置,并让**每个** vlc `CHECK` 精确相差 3 位。已用 vlc `DecodeTcsInternalSetSyncFlag` @ `0xf5e1460` 确认:载荷 `32,1,9,16,1,1` = 60 位,CHECK `0x76`=118 = 58+60,`movq $0x10`(1 pkt)。
---
## HDE — Host DMA Engine(vfc / vlc / gfc)
HDE 从 Viperfish 起替代 pxc **UHI** 频带,即 host↔chip 内存 DMA 引擎,观测到四个核心事件:REQUEST/RESPONSE × READ/WRITE。每个 HDE 事件都携带 `TraceIdHeader{21,3,14}` = 38 位。请求字段为 `thread_id`(enum,3)· `address`(uint64,分片)· `size_units_of_32B`(uint32,5)· `thread_tracking_id`(uint32);响应只携带 `thread_id`(3)+ `thread_tracking_id`。
### 载荷字段映射
| gen | event | oneof | CHECK | pkts | widths (`21,3,14` \| payload) | 置信度 |
|---|---|---|---|---|---|---|
| vfc | `HdeHostRequestWrite` | 10 | 178 | 2 | `21,3,14 \| 3,26,1,1,33,5,10` | CERTAIN |
| vfc | `HdeHostRequestRead` | 12 | 178 | 2 | `21,3,14 \| 3,26,1,1,33,5,10` | CERTAIN |
| vfc | `HdeHostResponseWrite` | 11 | 112 | 1 | `21,3,14 \| 3,10` | CERTAIN |
| vfc | `HdeHostResponseRead` | 13 | 112 | 1 | `21,3,14 \| 3,10` | CERTAIN |
| vlc | `HdeHostRequestWrite` | 8 | 175 | 2 | `21,3,14 \| 3,29,1,1,30,5,10` | CERTAIN |
| vlc | `HdeHostRequestRead` | 10 | 175 | 2 | `21,3,14 \| 3,29,1,1,30,5,10` | CERTAIN |
| vlc | `HdeHostResponseWrite` | 9 | 109 | 1 | `21,3,14 \| 3,10` | CERTAIN |
| vlc | `HdeHostResponseRead` | 11 | 109 | 1 | `21,3,14 \| 3,10` | CERTAIN |
| gfc | `HdeHostRequestWrite` | 3 | 179 | 2 | `21,3,14 \| 3,26,1,1,33,5,11` | CERTAIN |
| gfc | `HdeHostRequestRead` | 5 | 179 | 2 | `21,3,14 \| 3,26,1,1,33,5,11` | CERTAIN |
| gfc | `HdeHostResponseWrite` | 4 | 113 | 1 | `21,3,14 \| 3,11` | CERTAIN |
| gfc | `HdeHostResponseRead` | 6 | 113 | 1 | `21,3,14 \| 3,11` | CERTAIN |
### 分代差异
- **vfc == glc**:[glc 参考](payload-uhi-oci-ici-dma.md#per-gen-successor--hde-host-dma-engine-glc-ids-813)解码 `21,3,14 | 3,26,1,1,33,5,10`,CHECK 178,与 vfc 字节相同。`address` 是 `26,1,1,33` 分片组(一个 uint64,由 26 位和 33 位分片外加穿插的两个 1 位标志重组)。
- **vlc 缩窄地址**:使用 `29,1,1,30` 而不是 `26,1,1,33`,lite 裁剪版上的设备虚拟地址适配更窄的拆分。结合 58 位 header,请求 CHECK 降至 175(58 + 117),响应降至 109(58 + 51)。
- **gfc 将 `thread_tracking_id` 从 10→11 扩宽**:这是唯一的 gfc HDE 差异。请求 CHECK 升至 179,响应升至 113。其他全部匹配 vfc。
读/写配对在结构上与 pxc UHI 完全一致:每一对(request-read ↔ request-write、response-read ↔ response-write)具有相同的线格式,只通过 `trace_point_id` / oneof 区分。解码器锚点:vfc `DecodeHdeHostRequestRead` @ `0xf5fbde0`(oneof 12,CHECK 178)、vfc `HdeHostResponseRead` @ `0xf5fc1a0`(oneof 13,CHECK 112)、vlc `DecodeHdeHostRequestWrite` @ `0xf5d9580`(oneof 8,CHECK 175)、gfc `DecodeHdeHostRequestWrite` @ `0xf662780`(oneof 3,CHECK 179)。
---
## OCI — Descriptor / Message / Command(vfc / vlc / gfc)
主导频带,其事件数量从 pxc 32 增至 vfc 52 / vlc 38 / gfc 47。形状共享结构与 pxc 相同:三个反复出现的载荷形状(A message、B descriptor-common、C read/write-command)驱动大多数事件。在较新的族上,每个 `trace_id_header` 都是 38 位(`chip_id` 14)。这些形状会按代际**漂移**:子字段宽度变化,而字段*集合*保持。vfc 和 gfc 几乎完全共享 OCI 子字段宽度;vlc 持续不同(更宽的 `msg_data`/`addr`、不同的 cmd1 标量拆分),**并且**携带 58 位 header,因此它的 CHECK 通常低几位。
### SHAPE-C — OCI read/write command(3× `TraceIdHeader`)
最丰富的 OCI 形状:三个 `trace_id_header` 记录(`cmd0`/`cmd1`/`cmd2`),命令标量穿插在第二和第三个 header 之间。字段:`index_valid`、`id_index0/1/2`(uint32,各 17)、尾随节点身份枚举(3 位;pxc 上是 `node_type`,较新代上是 `extra_id`)。
| gen | `OciCommonReadCmdIssuedFromEngine` widths | CHECK |
|---|---|---|
| vfc | `21,3,14, 21,3,5,1,1,9, 21,3,14, 3,17,17,17,3` | 234 |
| gfc | `21,3,14, 21,3,5,1,1,9, 21,3,14, 3,17,17,17,3` | 234 |
| vlc | `21,3,14, 21,3,8,1,1,6, 21,3,14, 3,17,17,17,3` | 231 |
> **特例 —** cmd1 标量组是 vlc 脱离队列的位置。vfc/gfc 将 cmd1 穿插编码为 `5,1,1,9`;vlc 为 `8,1,1,6`,两个标量宽度(一个计数器和一个 id)从 5/9 重新分配为 8/6。总载荷位数只因 header 重新定基而不同(vlc 231 = 58+173;vfc/gfc 234 = 61+173),因此读取“五位再九位”的解码器会误读 vlc 的 cmd1,即使总体 CHECK 看起来一致。pxc 参考为 `21,3,12, 21,3,7,1,1,5, …` CHECK 228,header 更窄,cmd1 拆分也再次不同。解码器锚点:vfc `DecodeOciCommonReadCmdIssuedFromEngine` @ `0xf5fd560`(CHECK 234)。
### SHAPE-B — OCI descriptor common
`dma_type` + src/dst `{mem_mem_id, core_id, opcode}` + sync-flag ids/core-ids + `program_counter`。该 descriptor 相比 pxc 的 CHECK 179 有所增长。
| gen | `OciDescriptorCommon` / `DescAtQnm` widths | CHECK |
|---|---|---|
| vfc | `21,3,14, 1,2,3,2,2,3,2,13,1,1,1,2,13,3,13,3,2,1,1,16,32` | 216 |
| gfc | `21,3,14, 1,2,3,2,2,3,2,13,1,1,1,2,13,3,13,3,3,1,1,16,32` | 217 |
| vlc | `21,3,14, 1,2,3,2,2,3,2,13,3,1,1,1,12,3,13,3,1,16,32` | 210 |
vfc→gfc 只相差一位(一个尾随枚举字段从 2→3 扩宽,CHECK 216→217)。vlc 重构了 sync-flag id 组(vfc/gfc 携带 `13` 的位置是 `12`),并以 58 位 header 重新定基。
### SHAPE-A — OCI message
`msg_data` + `done` + `msg_type` + 节点选择器 + `addr`。
| gen | `OciMessagePacketSentToOci` widths | CHECK | 说明 |
|---|---|---|---|
| vfc | `21,3,14, 29,1,1,3,1,1,2,33,3` | 173 | msg_data 29,addr 33 |
| gfc | `21,3,14, 29,1,1,3,1,1,2,33,3` | 173 | == vfc |
| vlc | `21,3,14, 32,1,1,1,1,2,34,3` | 171 | msg_data 32,addr 34,58-bit hdr |
pxc 参考 SHAPE-A 为 `21,3,12, 31,1,1,1,1,1,2,32,3` CHECK 170。vlc 同时扩宽 `msg_data`(32 vs 29)和 `addr`(34 vs 33),并去掉一个 1 位标志位置,这是最大的分代 SHAPE-A 漂移。
> **说明 — 两套 id 空间(已在 vfc 上确认)。** `DecodeEntry` 索引的线格式 `trace_point_id` 是**稠密**空间 0..0x5f=95(跳转表 @ `0xab86ce8`,96 个分支;15–19 / 27–29 的空洞路由到错误标签 @ `0xf5f800f`),不同于 proto `TracePointId` 枚举值([TracePoints registry](tracepoints-master-registry.md) 列到 185)。已走通分支:vfc 线格式 id 14 → `DecodeOciMessageSentByHde` @ `0xf5fcf20`(oneof 字段 16)。**oneof 字段号**是本页每一行使用的稳定跨代键;线格式 id 是分代且分族的。完整的分代线格式 id → oneof 分支映射尚未穷尽转储(完整性 LOW 置信度,见 [Open Items](#open-items))。
各族 `DecodeEntry` 边界:vfc @ `0xf5f7080`(`cmp $0x5f,%rax`)、vlc @ `0xf5d6460`(`cmp $0x8f`)、glc @ `0xf6295c0`(`cmp $0x62`)、gfc @ `0xf65ffe0`(`cmp $0x64`)。
---
## ICI — Inter-Chip Link Packet(vfc / vlc / gfc)
全部**九个** ICI 事件在每个族中共享一种载荷形状,只在生命周期阶段上不同(received/transmitted/queued、由 ICR DMA bridge 注入/接收的 control/data)。字段经 descriptor 确认,并且每代相同:`trace_id_header`、`router_link_port_id`(enum)、`virtual_channel`(uint32)、`link_targets`(uint32)、`local_ingress_target`(bool)、`multicast`(bool)、`dst_chip_id`(uint32)、`first_packet_in_dma`(bool)、`last_packet_in_dma`(bool)。每个事件一个 16 字节包。
| gen | widths (TIDhdr \| payload) | CHECK | pkts | `virtual_channel` | `dst_chip_id` | 置信度 |
|---|---|---|---|---|---|---|
| pxc | `21,3,12 \| 3,3,6,1,1,12,1,1` | 125 | 1 | 3 bits | 12 bits | CERTAIN |
| vfc | `21,3,14 \| 3,2,6,1,1,14,1,1` | 128 | 1 | 2 bits | 14 bits | CERTAIN |
| vlc | `21,3,14 \| 3,3,6,1,1,14,1,1` | 126 | 1 | **3 bits** | 14 bits | CERTAIN |
| glc | `21,3,14 \| 3,2,6,1,1,14,1,1` | 128 | 1 | 2 bits | 14 bits | HIGH |
| gfc | `21,3,14 \| 3,2,6,1,1,14,1,1` | 128 | 1 | 2 bits | 14 bits | CERTAIN |
> **特例 —** vlc 保留了 3 位 `virtual_channel`,而其他每个较新族都将其缩窄到 2。Viperfish 的主线漂移是两个互相抵消的变化:`dst_chip_id` 从 12→14 扩宽(跟随 14 位 `chip_id`),`virtual_channel` 从 3→2 缩窄,因此 vfc/glc/gfc 落在 CHECK 128,仍然适配一个包。只有 vlc 在将 `dst_chip_id` 扩宽到 14 的同时**保留** 3 位 `virtual_channel`,因此其载荷宽一位(CHECK 126 = 58 + 68,而 vfc 的 128 = 61 + 67)。把 `virtual_channel` 宽度键控为“较新族 ⇒ 2 位”的重新实现会误解码每个 vlc ICI 包。宽度应来自分族解码器。`link_targets` 保持 6 位,`router_link_port_id` 在所有代中保持 3 位(6 个端口,LINK0..LINK5)。
解码器锚点:vfc `DecodeIciPacketPacketReceivedOnLinkInput` @ `0xf5ff460`(oneof 24,CHECK 128)、vlc @ `0xf5dd340`(oneof 23,CHECK 126,vc=3 异常)、gfc @ `0xf667c60`(oneof 22,CHECK 128)。`virtual_channel` 和 `link_targets` 是裸 uint32 字段,**不是**枚举;其含义是物理 VC 索引和每端口目标位掩码。
---
## Intra-Chip DMA — CMN-DMA(vfc / gfc)、VDQ(vlc)
pxc CMQ VPU-DMA 频带在较新族上没有直接继承者。每个族都以不同方式替代它,这也是三个代际分歧最大的频带。
### vfc — CMN-DMA,East/West side × Lanes 0..3(8 个事件)
chip-memory-network DMA,按 side 和 lane 观测。字段(descriptor):`trace_id_header`、`thread_id`(enum,14 值)、`req_id`、`cmn_uncore_router_id_valid0/1`(bool)、`cmn_uncore_router_id0/1`、`src_opcode`/`src_mem_id`(enum)、`src_operand`、`dst_opcode`/`dst_mem_id`(enum)、`dst_addr`、`beats`、`poison`。全部 8 条 lane 字节相同:
```text
vfc CmnDmaRequestEastSideLane0 (oneof 42) / WestSideLane0 (oneof 46)
widths: 21,3,14 | 4,10,1,1,5,5,2,1,1,1,2,32,2,3,32,4,1
CHECK 206 (2 pkts)
thread_id(enum 4), req_id(u32 10), router_id_valid0/1(bool,bool),
router_id0/1(u32 5,5), src_opcode(enum 2), … src_operand/dst_addr (32-bit fragments),
dst_mem_id(enum 3), beats(u32 4), poison(bool 1)说明 — glc 类似物(相邻页面)解码为
21,3,14 | 3,10,1,1,5,5,2,2,1,1,1,32,2,3,32,4,1,CHECK 205:glc 的thread_id是 3 位,vfc 是 4 位。额外的thread_id位(以及少一个内部字段)是唯一的 vfc↔glc CMN-DMA 差异;两者都暴露 pxc CMQ 不具备的双cmn_uncore_router_id端点。锚点:vfcDecodeCmnDmaRequestEastSideLane0@0xf603a80(oneof 42,CHECK 206)。
gfc — CMN-DMA,Set0/Set1 × Lane0/1(4 个事件),已重构
gfc 保留 CMN-DMA 名称,但重构记录。字段(descriptor):trace_id_header、req_id、cmn_router_id、cmn_router_type(enum CMNUR/O2CUR)、src_mem_id(enum)、src_addr(uint64)、dst_mem_id(enum)、dst_addr(uint64)、beats、poison。全部 4 条字节相同:
gfc CmnDmaRequestSet0Lane0 (oneof 41)
widths: 21,3,14 | 10,5,1,4,9,1,1,24,4,33,4,1
CHECK 196 (2 pkts)
req_id(u32 10), cmn_router_id(u32 5), cmn_router_type(enum 1→CMNUR/O2CUR),
src_mem_id(enum 4), src_addr(9+…), dst_mem_id … dst_addr(24+33 fragments), beats(4), poison(1)
```text
gfc 删除了 vfc/glc 携带的双 `cmn_uncore_router_id_valid` 位,并新增 `cmn_router_type`,用来在统一内存网络上的 CMNUR 路由器与 **O2CUR** 地址转换路由器之间选择。锚点:gfc `DecodeCmnDmaRequestSet0Lane0` @ `0xf66c5c0`(oneof 41,CHECK 196)。
### vlc — VDQ,vector DMA queue,READ/WRITE × REQ/RESP × CHAN0/1(8 个事件)
Viperfish-lite 没有 chip-memory-network;其唯一可观测的片内 DMA 是 **VDQ**(vector DMA queue),一个极小的 `{flag, id/addr}` 记录。全部 8 条 channel 字节相同:
```text
vlc VdqTransactionReadReqChan0 (oneof 64)
widths: 21,3,14 | 1,18
CHECK 115 (1 pkt; 58 + 57)
a 1-bit flag + an 18-bit id/addrVDQ 是所有族中最小的片内 DMA 载荷:38 位 identity header 后只有一个 flag 和一个 18 位值。锚点:vlc DecodeVdqTransactionReadReqChan0 @ 0xf5e56e0(oneof 64,CHECK 115)。
TCS Sync-Flag 频带(vfc / vlc / gfc)
TensorCore-Sequencer 内部 semaphore/fence/interrupt 频带。内部事件不携带 TraceIdHeader,core 由 header 中的 block_id 隐含,因此载荷直接从该族载荷起点开始(vfc/gfc 为 bit 61,vlc 为 bit 58)。基础字段(descriptor):data_field(uint32)、done_bit(bool)、sync_flag_number(uint32)、program_counter(uint32)、sfence_end(bool)、sfence_start(bool)。
lcc 字段的分代增长
| gen | TcsInternalSetSyncFlag widths | CHECK | pkts | lcc? | sync_flag_number | 置信度 |
|---|---|---|---|---|---|---|
| pxc | 32,1,9,16,1,1 | 121 | 1 | NO | 9 bits | CERTAIN |
| vfc | 32,1,9,16,1,1 | 121 | 1 | NO | 9 bits | CERTAIN |
| vlc | 32,1,9,16,1,1 | 118 | 1 | NO | 9 bits | CERTAIN |
| glc | 32,1,9,16,1,1,7,1,1,57 | 187 | 2 | YES (uint64) | 9 bits | HIGH |
| gfc | 32,1,12,16,1,1,4,1,1,60 | 190 | 2 | YES (uint64) | 12 bits | CERTAIN |
特例 — TCS sync-flag 载荷以两个独立步骤增长。pxc/vfc/vlc 共享 6 字段、60 位载荷,没有
lcc(proto 字段数 6);vlc 唯一差异是 58 位 header(CHECK 118 = 58 + 60)。从 glc 起追加第 7 个字段lcc(uint64),由尾部分片(glc{7,1,1,57},gfc{4,1,1,60})重组,把事件推到两个包。gfc 还将sync_flag_number从 9→12 扩宽。因此单个解码器不能服务全部五个族:字段数量不同(6 vs 7),载荷起点不同(vlc),且一个内部宽度不同(gfc)。锚点:vfcDecodeTcsInternalSetSyncFlag@0xf6065e0(oneof 51,CHECK 121,无 lcc)、vlc @0xf5e1460(oneof 40,CHECK 118)、gfc @0xf66db20(oneof 46,CHECK 190,12位 sync_flag_number + lcc)。
所有兄弟 TCS 内部事件在各自代中共享 SetSyncFlag 形状:AddSyncFlag、CoreInterrupt(从 pxc HostInterrupt 改名)、SetTracemark、TraceInstruction、Read/Successful/UnsuccessfulSyncAttempt、ScalarFenceStart/End。改名保持线格式形状不变:vfc TcsInternalCoreInterrupt @ 0xf606a20(oneof 53)解码同样的 32,1,9,16,1,1,CHECK 121。
External Sync-Flag DMA-Done(携带 TraceIdHeader)
TCS_EXTERNAL_SYNC_FLAG_UPDATE_DMA_DONE 是跨芯片 set-done 完成事件,即远程 DMA 提升本地 sync flag 的接收侧观测。字段(descriptor):updated_sync_flag_value、updated_sync_flag_done、sync_flag_number、program_counter,随后是 successful_sync_unblock、successful_sync、last_sync_for_dma、last_sync_was_add、was_csr_update、trace_bit_set。
| gen | widths (21,3,14 | payload) | CHECK | 置信度 |
|---|---|---|---|
| vfc | 21,3,14 | 29,1,1,3,1,9,16,1,1,1,1,1,1 | 165 | CERTAIN |
| vlc | 21,3,14 | 32,1,1,1,9,16,1,1,1,1,1,1 | 162 | CERTAIN |
| gfc | 21,3,14 | 29,1,1,3,1,12,16,1,1,1,1,1,1 | 168 | CERTAIN |
pxc 参考为 21,3,12 | 31,1,1,1,1,9,16,1,1,1,1,1,1 CHECK 163;glc CHECK 165(== vfc)。gfc 再次携带 12 位 sync_flag_number(而不是 9)。锚点:vfc DecodeTcsExternalSyncFlagUpdateDmaDone @ 0xf606180(oneof 50,CHECK 165)、gfc @ 0xf66d6c0(oneof 45,CHECK 168)。
Throttle / Stall 频带(vfc / vlc / gfc)
pxc 有一个 throttle 事件(id 97),带有可区分的双变体 body(variant A CHECK 120,variant B CHECK 204)。从 Viperfish 起,throttle 频带被重塑为一个 TCS-state 事件加一组小的 cycle-skip 事件;可区分 body 消失。
TCS-state thermal/electrical event(无 TraceIdHeader)
单个、不可区分的 thermal/electrical 状态记录。字段(descriptor):packet_type(enum)、num_electrical_throttles、num_thermal_throttles、thermal_total_throttles、thermal_max_throttle、thermal_min_throttle。
| gen | ThrottleTcsState…ThermalAndElectrical widths | CHECK | 说明 |
|---|---|---|---|
| vfc | 3,5,5,21,5,5 | 105 | 无 TIDhdr;packet_type 3 bits |
| vlc | 3,5,5,21,5,5 | 102 | 58-bit hdr → CHECK 102 |
pxc variant B 携带的宽 electrical/voltage 记录已消失;其值迁移到下面的 cycle-skip 与 LDIDT-voltage 事件。锚点:vfc DecodeThrottleTcsStateTcsThermalAndElectricalThrottleState @ 0xf609840(oneof 68,CHECK 105)、vlc @ 0xf5e4660(oneof 57,CHECK 102)。
Cycle-skip / stall 频带(每个都携带 TraceIdHeader{21,3,14})
cycle-skip 计数就是 stall:每个事件记录引擎因该原因被 throttle 的时钟周期数。每个事件的线格式载荷都是小的 {TraceIdHeader | stall-count} 形状(通常 5 位)。
| gen | event | widths (21,3,14 | payload) | CHECK | 含义 | 置信度 |
|---|---|---|---|---|---|
| vfc | ThrottleCycleSkipThermal | 21,3,14 | 5 | 104 | 5-bit cycle-skip count | CERTAIN |
| vfc | ThrottleCycleSkipExtBrake | 21,3,14 | 1 | 100 | 1-bit brake flag | HIGH |
| vfc | ThrottleCycleSkipArbitration | 21,3,14 | 5,3 | 107 | count + arbitration source | HIGH |
| vlc | ThrottleCycleSkipThermal | 21,3,14 | 5 | 101 | 58-bit hdr | HIGH |
| gfc | ThrottleCycleSkipThermal | 21,3,14 | 5 | 104 | HIGH | |
| gfc | ThrottleCycleSkipPpmSustainedAggr | 21,3,14 | 5 | 104 | PPM brake cycle-skip | HIGH |
| gfc | ThrottleLdidtRunningMeanVoltage | 21,3,14 | 7 | 106 | 7-bit voltage sample | HIGH |
| gfc | ThrottleMaximumTemperature | 21,3,14 | 10,5 | 114 | temp(10) + sensor(5) [gfc NEW] | CERTAIN |
throttle 频带从 pxc 1 增长到 vfc/vlc 7,再到 gfc 20 个事件;gfc 新增 max-temperature 和 running-mean-voltage 记录。锚点:vfc ThrottleCycleSkipThermal @ 0xf609a60(oneof 69,CHECK 104)、gfc ThrottleMaximumTemperature @ 0xf6801a0(oneof 138,CHECK 114)。
gfc-Only 频带 — STATS_COUNTER / O2CUR / FLL
gfc(6acc60406)新增三个早期硅片上不存在的频带,即该代独有的设备端可观测性表面。
STATS_COUNTER — 带内硬件性能计数器采样
字段(descriptor):extra_id(bool)、size(enum SIZE_8/16/32/64BITS)、scaling、num_counters、sample_id、payload_low(uint64)、payload_high(uint64)。
gfc StatsCounterSampleIssuedFromTcs (oneof 65)
widths: 1,2,6,4,32,22,1,1,64,42
CHECK 236 (2 pkts; no TraceIdHeader)
extra_id(1), size(enum 2 → SIZE_8/16/32/64BITS), scaling(6), num_counters(4),
sample_id(32), … payload_high/low (uint64s reassembled from the 64+42 fragments)
```text
这是 PMU 采样的设备端等价物:2 位 `size` 选择器加成对的 64 位 counter 载荷。存在六个 issuer 变体(TCS/SCS/SCTD/SCTC/CMNUR/ICR_DATA);此处只解码了 TCS issuer。锚点:gfc `DecodeStatsCounterSampleIssuedFromTcs` @ `0xf672260`(oneof 65,CHECK 236)。
### O2CUR — OCI→memory-controller 地址转换 DMA
logical→physical 地址转换路由器的 DMA。字段:`trace_id_header`、`vc_id`(enum)、`dst_type`(bool)、`dst_id`、`mem_id`(enum)、`mem_type`。
```text
gfc O2curL2pRdReq (oneof 119) / WrReqFirst (oneof 117)
widths: 21,3,14 | 1,1,6,4,4
CHECK 115 (1 pkt)锚点:gfc DecodeO2curL2pRdReq @ 0xf67d2a0(oneof 119,CHECK 115)。
FLL — frequency-locked-loop lock / select
字段:trace_id_header + required_count_value(uint32)。
gfc FllLockFll0Lock (oneof 143) widths: 21,3,14 | 9 CHECK 108 (1 pkt)
gfc FllSelectFllSelect (oneof 145) widths: 21,3,14 | 1 CHECK 100 (1 pkt)
```text
锚点:gfc `DecodeFllLockFll0Lock` @ `0xf680da0`(oneof 143,CHECK 108)、`DecodeFllSelectFllSelect` @ `0xf681260`(oneof 145,CHECK 100)。
---
## 选择器枚举值表
上文已解码每个选择器的位*宽*;本节枚举整数→名称映射。这些都是**已确认而非推断**:下面的每个值字符串都在二进制文件 `.rodata` descriptor-pool 字符串表中逐字节存在(每个族的 `trace_entries.proto` FileDescriptorProto 的 `*Values` 嵌套枚举;pxc @ `0xbef0d50`,vfc @ `0xbf06830`,vlc @ `0xbf28fd0`,glc @ `0xbf41210`,gfc @ `0xbf64c80`)。它们解决了[相邻页面](payload-uhi-oci-ici-dma.md#selector-enums-and-reassembly-gaps)留下的 LOW-confidence“未枚举精确整数顺序”缺口。
### Core identity — `core_id`(3 位,8 个值)
BarnaCore→SparseCore 改名是枚举表中最清晰的代际标记:
| value | pxc(BarnaCore 代) | vfc / vlc / glc / gfc(SparseCore 代) |
|---|---|---|
| 0 | `RESERVEDCORESELF` | `RESERVEDCORESELF` |
| 1 | `NONCORE` | `NONCORE` |
| 2 | `TC0` | `TC0` |
| 3 | `TC1` | `TC1` |
| 4 | `BC0` | `SC0` |
| 5 | `BC1` | `SC1` |
| 6 | `BC2` | `SC2` |
| 7 | `BC3` | `SC3` |
这是 `TraceIdHeader.core_id` 以及 OCI-descriptor `Src/DstMemCoreId` / `Src/DstSyncFlag{0,1}CoreId` 字段,即两个 TensorCore 加四个 sparse/Barna core。置信度:CERTAIN(`TC0/TC1/SC0..SC3` 和 `BC0..BC3` 字符串都在 rodata 中)。
### ICI — `router_link_port_id`(3 位,6 个端口,所有代)
`0=LINK0, 1=LINK1, 2=LINK2, 3=LINK3, 4=LINK4, 5=LINK5`。置信度:CERTAIN(`LINK0..LINK5` 在 rodata 中)。`virtual_channel` 和 `link_targets` 是裸 uint32 字段,不是枚举。
### OCI node identity — SHAPE-C 尾随枚举(3 位)
node-identity 选择器的 pxc→较新代改名:
| | pxc `node_type` (`NodeTypeValues`) | gfc/glc `extra_id` (`ExtraIdValues`) |
|---|---|---|
| 0 | `TCS` | `TCS` |
| 1 | `BC` | `SCS` |
| 2 | `CMQ` | `HDE` |
| 3 | `HBMQ` | `MGR` |
| 4 | `UHI` | `ICR` |
| 5 | `ICR` | `CMNUR` |
| 6 | `QNM` | `CMNDE` |
置信度:HIGH(pxc 集合确认了相邻页面推断的顺序;较新集合跟随频带改名 UHI→HDE、BC→SCS)。
### HDE `thread_id`(3 位,8 个值;vfc/vlc/glc/gfc)
`0=HOST2CHIP_0, 1=HOST2CHIP_1, 2=HOST2CHIP_2, 3=HOST2CHIP_3, 4=CHIP2HOST_0, 5=CHIP2HOST_1, 6=RESERVED0, 7=RESERVED1`。置信度:CERTAIN(`HOST2CHIP_0..3`、`CHIP2HOST_0..1` 在 rodata 中)。
### CMN-DMA `thread_id`(vfc,4 位,14 个值,即 memory-network DMA 类)
| | name | | name |
|---|---|---|---|
| 0 | `TC0VMEM2HBMDEMAND` | 7 | `SC1SPMEM2HBM` |
| 1 | `HBM2TC0VMEMDEMAND` | 8 | `SC2SPMEM2HBM` |
| 2 | `TCXVMEM2HBMEVICT` | 9 | `SC3SPMEM2HBM` |
| 3 | `TC1VMEM2HBMDEMAND` | 10 | `HBM2SC0SPMEM` |
| 4 | `HBM2TC1VMEMDEMAND` | 11 | `HBM2SC1SPMEM` |
| 5 | `HBM2TCXVMEMPREFETCH` | 12 | `HBM2SC2SPMEM` |
| 6 | `SC0SPMEM2HBM` | 13 | `HBM2SC3SPMEM` |
置信度:CERTAIN(`TC0VMEM2HBMDEMAND`、`HBM2SC0SPMEM` 已在 rodata 中确认)。
### `dma_type`(OCI descriptor DMA 类)
- pxc(`DmaTypeValues`):`0=LOCAL, 1=CHIP2HOST, 2=REMOTEUNICAST, 3=REMOTEMULTICAST`(4 个值)。
- vfc/glc/gfc(`DmaTypeValues`):`0=LOCALORHOST, 1=REMOTEUNICAST`(收缩为 2 个)。置信度:CERTAIN(`LOCALORHOST`、`REMOTEUNICAST`、`REMOTEMULTICAST` 在 rodata 中)。
### Opcode / mem-id 选择器(OCI descriptor 与 CMN-DMA)
| Enum | Values |
|---|---|
| OCI `SrcOpcode` (pxc/vfc) | `0=READ, 1=RESERVED, 2=INSTRUCTIONMEMSET, 3=DATAMEMSET` |
| OCI `DstOpcode` (pxc) | `0=WRITE, 1=RESERVED, 2=WRITESPECIAL0, 3=WRITESPECIAL1` |
| CMN-DMA `SrcOpcode` (vfc) | `0=READ, 1=SRCRESERVED, 2=INTMEMSET, 3=DATAMEMSET` |
| CMN-DMA `DstOpcode` (vfc) | `0=WRITE, 1=WRITE4B, 2=WRITESPECIAL0, 3=WRITESPECIAL1` |
| sync `Opcode` (2-bit, done semantics) | `0=WRITE_NO_DONE, 1=WRITE_WITH_DONE, 2=INC_NO_DONE, 3=INC_WITH_DONE` |
| CMN-DMA `Src/DstMemId` (vfc, 3-bit) | `0=TC0VMEM, 1=TC1VMEM, 2=SC0SPMEM, 3=SC1SPMEM, 4=SC2SPMEM, 5=SC3SPMEM, 6=HBM, 7=TCAVMEM` |
OCI descriptor `Src/DstMemMemId` 是多态的 2 位(4 值)mem-class,其含义取决于发起 core;pxc 和 vfc 给出不同名称三元组(例如 vfc `0=HBM_TCVMEM_SCSPMEM`、`1=HOST_TCSMEM_SCSMEM` 等)。置信度:sync `Opcode` 和 CMN opcode 为 CERTAIN(`WRITE_WITH_DONE`、`INC_WITH_DONE`、`INTMEMSET`、`WRITESPECIAL0` 在 rodata 中);多态 mem-class 顺序为 HIGH。
### Throttle / power 选择器
| Enum | Values |
|---|---|
| pxc `PacketType` (bitmask) | `1=ELECTRICAL_THROTTLE, 2=THERMAL_THROTTLE, 4=THERMAL_SENSOR, 8=THROTTLING_STATISTICS` |
| vfc `PacketType` (3-bit) | `1=ELECTRICAL_THROTTLE, 2=THERMAL_THROTTLE, 4=THROTTLING_STATISTICS` |
| glc/gfc `FinalThrottleSource` (3-bit) | `0=THERMAL, 1=EXTERNAL_BRAKE, 2=EXTERNAL_THROTTLE, 3=ELECTRICAL_LDIDT_BRAKE, 4=ELECTRICAL_LDIDT_DROOP, 5=SOFTWARE, 6=PPM_AGGRESSIVE_BRAKE, 7=PPM_NOMINAL_BRAKE` |
| glc/gfc `PowerRail` (SPI sampler) | `0=UNSPECIFIED, 1=VDD_CORE, 2=HBM` |
pxc `packet_type & 1` 测试(`ELECTRICAL` 位)选择 pxc 可区分双变体 body;较新族用命名的 `FinalThrottleSource` 原因替代它。置信度:CERTAIN(`EXTERNAL_BRAKE`、`ELECTRICAL_LDIDT_BRAKE`、`PPM_AGGRESSIVE_BRAKE` 在 rodata 中)。
### Sync / SparseCore-stream 选择器(glc/gfc)
| Enum | Values |
|---|---|
| `SyncMode` | `0=SYNCMODECOUNTWORDS, 1=SYNCMODECOUNTDONE` |
| `SyncFlagCoreType` / `DestCoreType` | `0=TEC_OR_SCS, 1=TAC` |
| `CoreType` | `0=UNSPECIFIED, 1=TENSOR_CORE, 2=SPARSE_CORE, 3=UNCORE` |
| `RelaxedOrdering` | `0=STRICTCROSSDMAORDERING, 1=RELAXEDORDERING` |
| `StreamOpcode` (SC stream) | `0=GATHER, 1=GATHERADDS32, 2=GATHERADDF32, 4=SCATTER, 5=SCATTERADDS32, 6=SCATTERADDF32, 7=RESERVED` |
置信度:CERTAIN(`SYNCMODECOUNTWORDS`/`SYNCMODECOUNTDONE`、`TEC_OR_SCS`、`GATHERADDF32`、`SCATTERADDS32` 在 rodata 中)。`SyncFlagCoreType` 的 `{TEC_OR_SCS, TAC}` 对与 [SparseCore 频带页面](payload-sc-band.md)解码的 SparseCore sequencer-type 分类相同。
### gfc-only 新频带选择器
| Enum | Values |
|---|---|
| StatsCounter `Size` (2-bit) | `0=SIZE_8BITS, 1=SIZE_16BITS, 2=SIZE_32BITS, 3=SIZE_64BITS` |
| CMN-DMA `CmnRouterType` | `0=CMNUR, 1=O2CUR` |
`CmnRouterType` 在 gfc 统一 memory-network DMA 上选择 CMNUR 路由器与 **O2CUR** logical→physical 地址转换路由器。置信度:CERTAIN(`SIZE_64BITS`、`CMNUR`、`O2CUR` 在 rodata 中)。
---
## 解码器证据锚点
| Event / group | gen | Decoder | Address | CHECK | 置信度 |
|---|---|---|---|---|---|
| trace-header(58 位异常) | vlc | `DecodeTraceHeader` | `0xf5f5b40` | 8/3/45 | CERTAIN |
| HDE host request read | vfc | `DecodeHdeHostRequestRead` | `0xf5fbde0` | 178 | CERTAIN |
| HDE host response read | vfc | `DecodeHdeHostResponseRead` | `0xf5fc1a0` | 112 | CERTAIN |
| HDE host request write | vlc | `DecodeHdeHostRequestWrite` | `0xf5d9580` | 175 | CERTAIN |
| HDE host request write | gfc | `DecodeHdeHostRequestWrite` | `0xf662780` | 179 | CERTAIN |
| OCI read cmd (SHAPE-C) | vfc | `DecodeOciCommonReadCmdIssuedFromEngine` | `0xf5fd560` | 234 | CERTAIN |
| OCI message sent by HDE | vfc | `DecodeOciMessageSentByHde` | `0xf5fcf20` | — | HIGH |
| ICI link packet (vc=2) | vfc | `DecodeIciPacketPacketReceivedOnLinkInput` | `0xf5ff460` | 128 | CERTAIN |
| ICI link packet (vc=3) | vlc | `DecodeIciPacketPacketReceivedOnLinkInput` | `0xf5dd340` | 126 | CERTAIN |
| ICI link packet | gfc | `DecodeIciPacketPacketReceivedOnLinkInput` | `0xf667c60` | 128 | CERTAIN |
| CMN-DMA east-side lane0 | vfc | `DecodeCmnDmaRequestEastSideLane0` | `0xf603a80` | 206 | CERTAIN |
| CMN-DMA set0 lane0 | gfc | `DecodeCmnDmaRequestSet0Lane0` | `0xf66c5c0` | 196 | CERTAIN |
| VDQ read-req chan0 | vlc | `DecodeVdqTransactionReadReqChan0` | `0xf5e56e0` | 115 | CERTAIN |
| TCS set sync flag(无 lcc) | vfc | `DecodeTcsInternalSetSyncFlag` | `0xf6065e0` | 121 | CERTAIN |
| TCS set sync flag(无 lcc) | vlc | `DecodeTcsInternalSetSyncFlag` | `0xf5e1460` | 118 | CERTAIN |
| TCS set sync flag(+lcc) | gfc | `DecodeTcsInternalSetSyncFlag` | `0xf66db20` | 190 | CERTAIN |
| TCS core interrupt | vfc | `DecodeTcsInternalCoreInterrupt` | `0xf606a20` | 121 | CERTAIN |
| TCS external sync done | vfc | `DecodeTcsExternalSyncFlagUpdateDmaDone` | `0xf606180` | 165 | CERTAIN |
| TCS external sync done | gfc | `DecodeTcsExternalSyncFlagUpdateDmaDone` | `0xf66d6c0` | 168 | CERTAIN |
| throttle TCS state | vfc | `DecodeThrottleTcsState…ThermalAndElectrical…` | `0xf609840` | 105 | CERTAIN |
| throttle TCS state | vlc | `DecodeThrottleTcsState…ThermalAndElectrical…` | `0xf5e4660` | 102 | CERTAIN |
| throttle cycle-skip thermal | vfc | `DecodeThrottleCycleSkipThermal` | `0xf609a60` | 104 | CERTAIN |
| throttle max temperature | gfc | `DecodeThrottleMaximumTemperature` | `0xf6801a0` | 114 | CERTAIN |
| stats-counter sample (TCS) | gfc | `DecodeStatsCounterSampleIssuedFromTcs` | `0xf672260` | 236 | CERTAIN |
| O2CUR L2P read req | gfc | `DecodeO2curL2pRdReq` | `0xf67d2a0` | 115 | CERTAIN |
| FLL lock | gfc | `DecodeFllLockFll0Lock` | `0xf680da0` | 108 | CERTAIN |
| FLL select | gfc | `DecodeFllSelectFllSelect` | `0xf681260` | 100 | CERTAIN |
| bit-codec primitive | all | `BitDecoder::GetBits64NoInline` | `0x21073760` | — | CERTAIN |
| width mask table | all | `mask_` | `0xbe79440` | — | CERTAIN |
上表中每个 CERTAIN 行的 `GetBits64` 宽度序列与 `CHECK` 都从解码器反编译 C 中逐字节读取(`BitDecoder::GetBits64NoInline(…, WIDTH, …)` 立即数和 `MakeCheckOpString<…>(consumed, CHECK, "decoder.BitsDecoded() == CHECK")` guard)。选择器枚举值字符串已确认存在于二进制文件 `.rodata` 中。descriptor-pool FDP 条目(vfc @ `0xbf06830`、vlc @ `0xbf28fd0`、glc @ `0xbf41210`、gfc @ `0xbf64c80`)提供字段标签和 `*Values` 枚举名称。
---
## 待解项 {#open-items}
仍有三类细节为 LOW confidence 或未追踪,均可用同一解析器机械恢复:
1. **uint64 分片重组顺序。** 此处的拆分字段(HDE `address` 26+1+1+33、CMN `src_operand`/`dst_addr`、glc/gfc sync `lcc` 57/60、gfc StatsCounter `payload_high/low` 64+42)具有 CERTAIN 宽度和目标槽位,但重组 uint64 内部精确的每分片 shift/OR 位位置,以及分片是否跨越 128 位包边界,尚未制表(这与[相邻页面](payload-uhi-oci-ici-dma.md#selector-enums-and-reassembly-gaps)留下的缺口相同)。字节精确的重新编码器需要它。
2. **完整分代线格式 id → oneof 分支映射。** 线格式 `trace_point_id` 空间(vfc 为稠密 0..0x5f,vlc 为 0..0x8f,gfc 为 0..0x64)已确认不同于 proto `TracePointId` 枚举值空间,且已走通一个分支(vfc id 14 → `DecodeOciMessageSentByHde`),但每代完整 arm→`Decode<Name>` 表(vfc 的跳转表 @ `0xab86ce8`,以及 vlc/glc/gfc 对应表)尚未穷尽转储。
3. **vlc 58 位 header — HW vs codec。** `DecodeTraceHeader` esi 宽度是字节精确的(`8/3/45`),但 Viperfish-lite 硅片实际发出 45 位 timestamp,还是 codec 只读取更宽字段中的 45 位,无法仅从 codec 确定。解码行为为 CERTAIN;硬件/软件边界归因仍开放。
此处未解码的非命名频带,即 vfc/glc/gfc 上的 SparseCore `SC_*` 族、manager-FW(MGR)以及 CMNUR/CMNUCB/CMNDE memory-controller 层级,由 [SparseCore 频带页面](payload-sc-band.md)拥有或引用,仍是最大的残余部分。
---
## 相关组件
| 组件 | 关系 |
|---|---|
| [TraceEntriesCoder](trace-entries-coder.md) | 拥有 16 字节包、framing prefix、`TraceHeader`/`TraceIdHeader`、双重分派以及每事件 `CHECK` 机制;本页将其分代 vlc header 修正为 58 位 |
| [Trace Payload: UHI / OCI / ICI / DMA](payload-uhi-oci-ici-dma.md) | 本页用来做差异的 pxc 基线 + glc 代表;拥有频带概念和 shape-A/B/C 结构 |
| [Payload: SparseCore Band](payload-sc-band.md) | `SC_*` 频带载荷字段映射;共享此处枚举的 `TEC_OR_SCS`/`TAC` sequencer-type 和 `StreamOpcode` 选择器 |
| [Payload: jxc Legacy](payload-jxc-legacy.md) | 独立的 `PerformanceTraceEntry` schema 及其自己的 codec,位于本页解码的 `Decode<Name>` 族之外 |
| [TracePoints Master Registry](tracepoints-master-registry.md) | 拥有 `trace_point_id` ↔ oneof-field id 空间;本页是这些名称的分代载荷附录 |
## 交叉引用
- [Profiling and Telemetry Overview](overview.md) — capture→encode→decode→xplane 管线;这些分代载荷是 decode 阶段的设备事件内容
- [TraceEntriesCoder](trace-entries-coder.md) — 先读:每个载荷在此扩展的通用 frame;vlc 将其分代表重新定基到上文记录的 58 位 header
- [Trace Payload: UHI / OCI / ICI / DMA](payload-uhi-oci-ici-dma.md) — 本页为 vfc/vlc/gfc 补完的 pxc/glc 基线;shape-A/B/C 与频带定义在该处
- [Payload: SparseCore Band](payload-sc-band.md) — SparseCore `SC_*` 频带,较新代上最大的残余非命名频带
- [Payload: jxc Legacy](payload-jxc-legacy.md) — legacy `PerformanceTraceEntry` codec,与分代 `Decode<Name>` 族分开解码
- [TracePoints Master Registry](tracepoints-master-registry.md) — wire-id / oneof-field id 空间;本页解码这些分代 id 所命名的载荷