当前位置: 首页 > news >正文

【deekseek】P2P通信路由过程

在PCIe网络中,当同一Switch下的两个Endpoint设备(如GPU或NVMe SSD)进行点对点(Peer-to-Peer, P2P)通信时,数据无需经过Root Complex(RC)或主机内存,而是通过Switch直接路由。以下是详细流程及DMA封包示例:


一、P2P通信路由过程

1. 路由规则

PCIe采用基于地址或ID的路由,同一Switch下的设备通信规则如下:

  • 地址路由:若目标地址在Switch配置的**地址窗口(如MMIO区域)**内,Switch直接转发TLP到目标设备。
  • ID路由:根据目标设备的**Bus/Device/Function(BDF)**路由,需Switch维护路由表。
2. 具体步骤

以设备A(BDF=01:00.0)向设备B(BDF=02:00.0)发送数据为例:

  1. TLP生成
    设备A构造存储器写请求(MWr)TLP,包含:
    • 目标地址:设备B的BAR空间地址(如0x3B00000000)。
    • 路由信息:若使用地址路由,TLP头中Routing Field设为地址路由(Type 0/1);若使用ID路由,则指定设备B的BDF。
  2. Switch路由决策
    Switch检查TLP的目标地址或BDF:
    • 若目标地址在Switch下游端口地址窗口内,将TLP转发到对应端口。
    • 若使用ID路由,Switch查询内部路由表,匹配目标BDF对应的下游端口。
  3. TLP传输
    TLP通过Switch内部交叉开关(Crossbar)直接转发到设备B,不经过RC或主机内存

二、使用DMA的封包过程

当设备A通过DMA向设备B传输数据时,流程如下:

1. 初始化配置
  • 地址映射
    驱动程序需将设备B的BAR地址(如0x3B00000000)告知设备A,通常通过写入设备A的寄存器。
  • DMA引擎设置
    设备A的DMA控制器配置目标地址、数据长度和传输模式。
2. DMA传输封包示例

假设设备A向设备B的BAR空间写入512字节数据:

  1. TLP构造
    • 头部(Header)
      Fmt: 3DW(64位地址)  
      Type: Memory Write (MWr)  
      Length: 512 bytes (以DW为单位,Length=128)  
      Requester ID: 01:00.0(设备A的BDF)  
      Tag: 0x1A(事务标识符)  
      Address: 0x3B00000000(设备B的BAR地址)
      
    • 数据载荷(Data Payload)
      包含512字节的原始数据。
  2. TLP路由
    Switch根据目标地址0x3B00000000判断该地址属于下游端口连接的设备B,直接转发。
  3. 设备B接收
    设备B的PCIe控制器解析TLP,将数据写入其BAR对应的本地内存或寄存器。

三、关键配置与验证

1. Switch配置要求
  • 地址窗口匹配
    Switch需配置下游端口的地址窗口覆盖设备B的BAR地址(如0x3B00000000-0x3B0007FFFF)。
  • P2P使能
    部分Switch默认禁用P2P,需通过固件或驱动启用(如设置Switch的PCIe Capability Register中的Peer-to-Peer Enable位)。
2. 系统验证方法
  • 查看TLP路径
    使用协议分析仪(如Teledyne LeCroy PCIe Analyzer)捕获Switch端口流量,确认TLP直达设备B。
  • 性能测试
    通过dd或自定义工具测试设备间带宽,理想情况下应接近PCIe链路速率(如Gen3 x8为~8 GB/s)。

四、对比:P2P DMA vs 传统DMA

特性P2P DMA传统DMA(设备→主机内存)
数据路径设备A → Switch →设备B设备 → RC → 内存 → RC → 设备
延迟低(~1 μs)高(包含内存读写,~5-10 μs)
CPU参与无(零拷贝)需要CPU调度或中断处理
适用场景GPU Direct Storage、NVMe-oF常规设备与主机数据交换

五、常见问题与解决方案

问题原因解决方案
P2P通信失败(TLP被丢弃)Switch未启用P2P路由或地址窗口未覆盖检查Switch配置,启用P2P并设置正确地址窗口。
DMA传输数据损坏设备B的BAR地址未正确映射到设备A验证驱动是否正确配置设备A的目标地址寄存器。
带宽低于预期Switch内部带宽争用或链路速率降级使用lspci -vvv检查链路状态(Speed/Width)。

六、总结

同一PCIe Switch下的设备间P2P通信通过地址或ID路由实现,其核心流程为:

  1. TLP构造:源设备生成带目标地址或BDF的TLP。
  2. Switch路由:根据地址窗口或路由表转发TLP。
  3. 目标处理:目标设备直接接收数据,无需RC介入。

当使用DMA时,封包需精确指定目标BAR地址,并由Switch确保路由有效性。此机制显著降低延迟,适用于高性能存储和计算场景(如GPU Direct、NVMe-oF)。

相关文章:

  • 内核深入学习3——分析ARM32和ARM64体系架构下的Linux内存区域示意图与页表的建立流程
  • AUTOSAR图解==>AUTOSAR_TPS_ECUResourceTemplate
  • MySQL 主从复制与读写分离
  • CST软件对OPERACST软件联合仿真汽车无线充电站对人体的影响
  • 【网络编程】七、详解HTTP 搭建HTTP服务器
  • 快速排序、归并排序、计数排序
  • 论文解读:Drivestudio——OmniRe: Omni Urban Scene Reconstruction
  • css3基于伸缩盒模型生成一个小案例
  • 鸿蒙接入flutter环境变量配置windows-命令行或者手动配置-到项目的创建-运行demo项目
  • MATLAB Simulink在Autosar和非Autosar工程下的开发流程
  • AI智能分析网关V4助力工厂/工地/车间/能源矿山场景玩手机行为精准检测与安全生产智能化监管
  • Python(1) 做一个随机数的游戏
  • LeetCode 648 单词替换题解
  • 第九届御网杯网络安全大赛初赛WP
  • [Java][Leetcode middle] 45. 跳跃游戏 II
  • 开发与AI融合的Windsurf编辑器
  • Linux学习心得问题整理(一)
  • MySQL——数据类型表的约束
  • 设计模式深度解析:AI大模型下的策略模式与模板方法模式对比解析
  • Kafka Go客户端--Sarama
  • 上海团队在医学顶刊连发两文,率先提出“证据污染”循证概念
  • 美国三大指数全线高开:纳指涨逾4%,大型科技股、中概股大涨
  • 食用城市|食饭识人
  • 飙升至熔断,巴基斯坦股市两大股指收盘涨逾9%
  • 通辽警方侦破一起积压21年的命案:嫌疑人企图强奸遭反抗后杀人
  • 牛市早报|中美经贸高层会谈达成重要共识,取得实质性进展