[AI][昇腾950] PCIe Through 学习总结
1. 概述
PCIe Through(PCIe-through)是 David 芯片在 PCIe 互联场景下,Device 侧(STARS/AIC/RDMA 等)直接通过 PCIe 链路访问 Host 侧内存空间的一种数据通路机制。它区别于 PCIe DMA(使用 IOB TX ATU 进行地址翻译的常规 Outbound 事务),PCIe-through 请求不使用 IOB TX ATU,而是通过 CHI 总线直接将请求送入 PCIe 核心层,以特定的请求格式携带 VF function 等信息访问 Host。
2. 核心原理
2.1 与 PCIe DMA 的区别
| 维度 | PCIe DMA | PCIe Through |
|---|---|---|
| 地址翻译 | 经过 IOB TX ATU 翻译地址(Untranslated – Base + Target) | 不经 IOB TX ATU,地址由发起者直接提供(Host IOVA 或 VA→SMMU→IOVA) |
| 发起方 | Host CPU / STARS / Local CPU 通过 DMA 引擎 | STARS / Aicore / RDMA / 网卡等 Device 侧模块 |
| 总线接口 | AXI Master 接口 | CHI 接口 |
| 使用场景 | 数据搬移、大块传输 | STARS 读 SQ/CQ、AIC 访问 Host 数据、RDMA 报 Host 中断 |
2.2 数据通路
STARS/AIC ──> NoC/Ring ──> PCIe CHI Slave ──> PCIe Core (TL/DL/PL) ──> SerDes ──> Host RC
│
携带 VF function、StreamID 等信息
(不使用 IOB TX ATU)
对于 PCIe-through 请求,TL 层判断为 through 请求后直接送出,不经过 TX ATU 匹配逻辑。AP 层需要配置 CHI source 与其他 source(如 Inbound NP CPL、DMA engine、中断传输逻辑)之间的 Ordering。
3. 各类 Through 场景
3.1 STARS 访问 Host(读 SQE / 写 CQE)
PCIe 互联场景下,STARS 采用 PCIe-through 模式访问 Host 侧内存空间:
- 配置给 STARS 的是 Host IOVA 地址(不经过 SMMU 页表翻译),STARS 直接通过 PCIe Through 请求格式携带 VF function 等信息到 PCIe 端访问 Host。
- STARS Through 不支持 SMMU 查侧页表,开启 IO-MMU 时使用 IOVA 地址。
STARS CQE 更新到 Host 有 三种模式( 昇腾950 仅支持 UB WQE 模式):
| 模式 | 配置 | 场景 |
|---|---|---|
| UB.MEM 模式 | wqe_en=0, cq_local_host=0 | CQ 队列地址配置为 UB MEM 地址,STARS 不感知 UB MEM 与 Device MEM 区别 |
| UB WQE 模式 | wqe_en=1, cq_local_host=1 | 通过写 wqe 搬运 CQE |
| PCIE Through 模式 | wqe_en=0, cq_local_host=1 | PCIe 直接更新至 Host 侧,需配置 Host StreamID、VF num 等 |
3.2 AIC 访问 Host
- PCIe 互联场景下,配置给 AIC 的是 VA 地址;AIC 通过 SMMU 转换成 IOVA,然后以 PCIe Through 请求格式携带 VF function 等信息访问 Host。
- AIC Through 需要支持 SMMU 查侧页表,本地建立页表实现 VA→IOVA 的转换
- AIC 访问 Device HBM 的 SID+SSID 与 through 方式的 SID+SSID 可以相同;VA 统一由 Host APP 申请。若 AIC 访问 Host 侧内存,软件标成 TH 操作,页表配成 VA→IOVA;若访问 Device HBM,软件不标 TH,页表配成 VA→PA。
- MTE PCIe Through burst 大小可通过配置:
2'b00: 512B, 2'b01: 256B, 2'b10: 128B, 2'b11: reserved。 - MTE 标记
pcie_through enabled。
3.3 RDMA 访问 Host
- RDMA 走 PCIe-through 到主 DIE 的 PCIe 来访问 Host。
4. 使用约束
-
STARS Through 仅支持 RTSQ 的 SQ 和 CQ 存 Host 侧:二级指针指向的 SQE 仅支持存 Device 侧。
-
AIC Through 需 SMMU 开启:AIC 走 PCIe Through 访问 Host 时需要 SMMU 查侧页表完成 VA→IOVA 转换。
-
MTE PCIe Through:仅受 AIV0 寄存器控制,burst 大小可配(512B/256B/128B)。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐


所有评论(0)