# UBody 公开架构依据调研记录

**Date:** 2026-04-28
**Scope:** 判断 `UBody / BD` 作为 OpenUSim 中的 body-local datapath/network slice 抽象，是否能找到公开业界架构依据。

---

## 1. 当前项目口径

当前 `UBody / BD` 的固定结构约束来自 `docs/subsystems/ub-subsystem.md`：

```text
1 BD = 1 UBody = 1 body-local Network instance
```

该约束的含义是：

- 一个 `UBody / BD` 是一个独立的数据路径切片。
- 一个 body 可以拥有多个 `Port`。
- 多个端口共享同一个 body 的资源限制。
- `Network` 在 body 级做 `LocalSink / ForwardToBody / ForwardToExternalPort` 三分流。
- 当前已开始建模的 body 级资源包括 `IngressQueue / ContextBuffer / WriteBuffer`。

当前实现状态也需要保守表述：

- `UBody` 已经作为显式 body 边界落地。
- `UBody` 已具备最小 `NetworkUnit`。
- `ForwardToBody` 当前通过 `UbNetworkOnChip` 建成 fixed-delay 模型。
- `UBody` 目前还是最小 body 状态与 `NetworkUnit` 骨架，不是完整 datapath micro-architecture。

因此，本调研只论证 `UBody` 作为公开仿真抽象是否有业界类似结构，不论证任何私有命名、内部字段、参数或真实产品实现细节可以公开。

---

## 2. 结论

有强依据支撑 `UBody` 作为公开仿真抽象。

公开资料中没有看到直接叫 `UBody` 或 `body` 的交换机结构，但存在非常接近的公开架构模式：

- 多个独立 NPU slice 集成在一个 ASIC / die package 内。
- 每个 slice 独立运行，并拥有本地 forwarding I/O resources。
- slice 间通过片上 crossbar fabric / VOQ / queueing 机制互联。
- 可编程交换 ASIC 中常见 multiple ingress / egress pipelines，物理端口 hard-wired 到某个 pipeline。
- pipeline-local state / memory / register 通常彼此独立，不默认提供跨 pipeline coherence。
- NoC/router 模型中已经有公开的 router tile / router pipeline / VC / credit / crossbar 抽象，可作为 body-to-body forward 后续细化依据。

对外最稳妥的表述是：

```text
UBody is an OpenUSim simulation abstraction for a body-local datapath/network slice,
similar in spirit to public multislice ASIC and multi-pipeline switch architectures.
```

不建议对外表述为：

```text
UBody is a chiplet/sub-chip implementation of a commercial switch.
```

原因是公开依据主要支撑 `slice / pipe / pipeline / datapath partition / NoC router tile`，并不支撑它一定是物理 chiplet 或 sub-chip。

---

## 3. 强依据 1：Cisco Silicon One Q200 multislice ASIC

来源：

- Cisco Catalyst 9500 Series Architecture White Paper
- URL: https://www.cisco.com/c/en/us/products/collateral/switches/catalyst-9500-series-switches/nb-06-cat9500-architecture-cte-en.html

公开信息要点：

- Catalyst 9500X 使用 Cisco Silicon One Q200 ASIC。
- Cisco 将该 ASIC 描述为 multislice architecture。
- 白皮书说明 multislice design 把多个 NPU 集成到 single die package 上。
- 每个 ASIC NPU 被称为 slice。
- 每个 slice 独立运行，并拥有完整 forwarding I/O resources。
- slices 通过 integrated crossbar fabric 连接。
- multislice ASIC 使用 integrated VOQ buffer architecture 管理 slice 间数据流量。
- Q200 packet walk 中包含 `Rx NPU -> SMS -> VOQ -> slice crossbar -> destination OQ -> Tx NPU`。

与 `UBody` 的映射：

| Cisco Q200 公开概念 | UBody 当前概念 |
| --- | --- |
| ASIC NPU slice | `UBody / BD` |
| slice-local forwarding I/O resources | body-local ports and resource limits |
| integrated crossbar fabric | `UbNetworkOnChip` / future body-to-body fabric |
| integrated VOQ buffer architecture | future body-to-body queueing / arbitration / backpressure |
| Rx NPU / Tx NPU packet walk | future per-body ingress / egress datapath |
| SMS / destination OQ | future shared/local packet buffer and egress queue model |

判断：

这是当前最强的公开工业依据。它直接支撑“单个 ASIC / die package 内部存在多个独立 datapath slice，每个 slice 拥有本地资源，slice 间通过内部 fabric 和 queueing 机制互联”。

对 `UBody` 的开源意义：

- `UBody` 作为 body-local datapath/network slice 的抽象不是新颖且私有的结构类型。
- 可以引用该公开架构说明 `UBody` 的建模方向属于业界已有公开范式。
- 不能引用该资料去声明 `UBody` 等同于 Cisco slice，也不能复刻其图、参数、命名或实现细节。

---

## 4. 强依据 2：P4 PSA multi-pipeline devices

来源：

- P4 Portable Switch Architecture (PSA) Specification v1.1
- URL: https://p4lang.github.io/p4-spec/docs/PSA-v1.1.0.html

公开信息要点：

- PSA Appendix E 明确讨论 multi-pipeline PSA devices。
- 为提高 packet processing rate，switch ASIC 可以创建 N 条 pipeline。
- 典型设备具有 N 条 ingress pipeline 和 N 条 egress pipeline。
- 多个物理端口通常 hard-wired 到某条 pipeline。
- packet 从 ingress pipeline 处理后进入 packet buffer，再进入被目的端口决定的 egress pipeline。
- pipeline 可完全独立运行。
- counter / meter / register 等状态通常在每条 pipeline 内独立维护。
- 规范明确提到实现可以在每条 pipeline 上使用 PSA program 的拷贝，从而保持 pipeline fully isolated。

与 `UBody` 的映射：

| PSA multi-pipeline 概念 | UBody 当前概念 |
| --- | --- |
| ingress / egress pipeline | body-local `NetworkUnit` / future datapath units |
| physical ports hard-wired to pipeline | ports owned by one `UBody` |
| independent counter / meter / register state | body-local `IngressQueue / ContextBuffer / WriteBuffer` and future counters |
| packet buffer between ingress and egress | body/fabric queueing point |
| destination-port-selected egress pipeline | `ForwardToExternalPort` and cross-body egress |
| pipeline isolation | do not assume automatic cross-body state coherence |

判断：

PSA 是规范级公开依据，适合支撑 `UBody` 的 “port ownership + body-local state/resource + explicit cross-body forwarding” 三个核心建模原则。

对 `UBody` 的开源意义：

- `UBody` 不应被描述成某个厂商私有微架构，而应描述成与公开 multi-pipeline switch ASIC 类似的仿真切片。
- body-local state 不默认跨 body coherent 是可公开解释的工程假设。
- cross-body access 需要显式路径，而不是任意 body 直接共享状态。

---

## 5. 强依据 3：多 pipeline programmable switch 论文

来源：

- Xin Zhe Khooi, Levente Csikor, Jialin Li, Dinil Mon Divakaran, "In-Network Applications: Beyond Single Switch Pipelines", IEEE NetSoft 2021.
- URL: https://www.comp.nus.edu.sg/~lijl/papers/netapp_tapopf21.pdf

公开信息要点：

- 论文明确指出 commodity programmable switches 常由多条 packet processing pipeline 组成，用于扩展 backplane capacity。
- pipeline 独立，并拥有 dedicated hardware resources，例如 SRAM。
- pipeline 间没有 coherent memory。
- 流量通常会根据 switching / routing policy 跨 pipeline。
- 如果状态分布在不同 pipeline，应用需要显式处理分布式状态。

与 `UBody` 的映射：

| 论文概念 | UBody 当前概念 |
| --- | --- |
| multiple packet processing pipelines | multiple `UBody` instances |
| dedicated hardware resources | body-local resource limits |
| no coherent memory among pipelines | no implicit cross-body resource sharing |
| traffic traverses across pipelines | `ForwardToBody` / cross-body `ForwardToExternalPort` |
| explicit handling of distributed state | future body-aware accounting and routing |

判断：

该论文是学术界对多 pipeline 交换机现实约束的直接总结。它不是厂商手册，但适合支撑仿真模型为什么要显式表达 body-local state 和跨 body 路径。

对 `UBody` 的开源意义：

- `UBody` 的资源隔离、跨 body 转发和状态不自动共享，都是公开论文讨论过的问题类别。
- 论文可作为 README / design note 中解释模型边界的引用。

---

## 6. 强依据 4：PISA multi-pipeline switch 论文

来源：

- Nadeen Gebara et al., "Challenging the Stateless Quo of Programmable Switches", ACM HotNets 2020.
- URL: https://www.microsoft.com/en-us/research/uploads/prod/2020/09/gebara20challenging.pdf

公开信息要点：

- 论文将 PISA-based switch 分解为 parser、deparser、match-action pipeline stages、bus 等组件。
- 图中明确画出 multi-pipeline switch，包括多条 ingress / egress pipeline。
- 论文说明 modern switches 常见 multiple parallel pipelines。
- ingress / egress pipeline 与各自 input / output ports 静态绑定。
- pipeline 间没有 state sharing。
- packet 可以通过 switching elements 从 ingress pipeline 到任意 egress pipeline。

与 `UBody` 的映射：

| PISA 论文概念 | UBody 当前概念 |
| --- | --- |
| multiple parallel pipelines | multiple `UBody` datapath slices |
| pipeline statically bound to ports | body owns multiple ports |
| no state sharing | body-local queue/buffer/accounting |
| switching elements between pipelines | `UbNetworkOnChip` / future cross-body fabric |
| packet moves from ingress pipeline to egress pipeline | `ForwardToBody` or cross-body egress |

判断：

该论文补强了 PSA 规范和 Cisco 白皮书：多 pipeline、port binding、state isolation、switching elements 都是公开可引用的概念。

---

## 7. 强依据 5：gem5 Garnet 2.0 NoC/router model

来源：

- gem5 Garnet 2.0 documentation
- URL: https://www.gem5.org/documentation/general_docs/ruby/garnet-2/

公开信息要点：

- Garnet 2.0 是 gem5 中详细的 on-chip network model。
- 它提供 cycle-accurate on-chip network router microarchitecture。
- network 由 network interfaces、routers、links 组成。
- router 管理 output-link arbitration 和 router 间 flow control。
- flow control 使用 virtual channels 和 credits。
- router microarchitecture 包括 buffer write、route compute、switch allocation、VC selection、crossbar traversal、link traversal。
- 每个 router / link 可配置 latency。

与 `UBody` 的映射：

| Garnet 公开概念 | UBody 后续细化方向 |
| --- | --- |
| router / router pipeline | body-local network node |
| input buffers / VCs | body ingress queues / virtual queues |
| route compute | `LocalSink / ForwardToBody / ForwardToExternalPort` disposition |
| switch allocation / crossbar traversal | body-to-body fabric arbitration |
| credit flow control | future backpressure / admission model |
| per-router latency | current fixed-delay body hop, later configurable |

判断：

Garnet 不直接证明交换 ASIC 里有 `UBody`，但强力支撑 `UBody` 后续从 fixed-delay body-to-body forward 细化为公开 NoC/router-style microarchitecture。

---

## 8. 对开源表述的建议

推荐公开表述：

```text
UBody is an OpenUSim simulation abstraction for a body-local datapath/network slice.
It is inspired by public multislice ASIC, multi-pipeline switch, and NoC router modeling patterns.
Each UBody owns local ports and body-local resources, and cross-body forwarding is modeled explicitly.
```

推荐中文表述：

```text
UBody 是 OpenUSim 中的 body-local 数据路径 / 网络切片抽象。它参考的是公开交换 ASIC
中的 multislice / multi-pipeline 设计思想，以及公开 NoC/router 建模方法。每个 UBody
拥有本地端口和 body-local 资源，跨 body 转发通过显式内部互联建模。
```

不建议公开表述：

- `UBody` 是某厂商真实 `BD / UBODY` 的实现。
- `UBody` 是一个 chiplet 或 sub-chip。
- `UBody` 的字段、资源数、时延、buffer 深度来自某个真实产品。
- `UBody` 的结构图等价于某个商业 ASIC 内部图。

---

## 9. 开源风险边界

技术抽象层面：

- 风险较低。`slice / pipeline / local resource / explicit inter-slice forwarding` 都有公开资料支撑。

命名层面：

- `UBody` / `BD` 是否可公开要单独确认。如果名称来自内部规范，建议公开文档中主称 `body-local datapath slice`，把 `UBody` 定义为 OpenUSim 内部术语。

参数层面：

- 具体资源数量、时延、带宽、buffer 深度、端口映射规则如果来自内部资料，不应直接公开。
- 可以提供 synthetic / configurable / example 参数，并明确不是商业硬件参数。

图和路径层面：

- 可以画抽象图：`Body slice -> Internal fabric -> Body slice`。
- 不应复刻厂商或内部规范图。

实现层面：

- 当前 `UBody` 只是最小 body 状态与 `NetworkUnit` 骨架，不是完整商业微架构实现；公开时应保持这个说法。

法律层面：

- 本文只提供公开技术依据，不构成开源许可或 IP 合规结论。
- 最终是否开源仍需按项目 IP / 法务流程确认。

---

## 10. 建议后续动作

如果要把 `UBody` 相关代码开放，建议先做三件事：

1. 在公开设计文档中统一使用 `body-local datapath/network slice` 作为解释性术语。
2. 移除或替换任何来自非公开资料的参数、图、字段名和注释。
3. 增加一段 public-prior-art 说明，引用 Cisco Q200、P4 PSA、multi-pipeline switch 论文和 Garnet 2.0。

初步判断：

```text
UBody 作为 OpenUSim 的公开仿真抽象是有外部公开依据的；
开源风险主要不在“是否存在类似架构”，而在“是否暴露了非公开命名、参数、图或真实实现细节”。
```
