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

PCIE中基于地址的路由

工作原理

  • 当一个TLP进行数据传递时,可能会经过多级Switch,最终到达目的地

    • 在一个Switch中包含 了多个虚拟PCI-to-PCI桥。

    • 在虚拟PCI-to-PCI 桥的配置寄存器空间中,包含一个桥片能够接收的物理地址范围。

    • PCIe总线通过这个 物理地址范围实现基于地址的路由。

    • 当系统软件初始化PCI总线时,将合 理地设置这些寄存器,之后当TLP通过这些Switch时将根据这些寄存器选择合适的路径。

  • pci桥片配置中,描述了三组空间范围

    • IO空间

    • memory 空间

    • prefetchable空间

  • 该空间通过两个参数进行描述,base和limit, 分别表示空间基地址和可访问空间的大小

  • TLP使用基于地址的路由时,一定要通过查询这组寄存器之后,再决定传送路径。

实际的例子

  • TLP1

    • RC中地址转换完成后,通过PCI BUS0, 送到switch, 并进入switch upstream口,到达P-P1桥片

    • 检查base和limit寄存器,判断是否可以接收

      • 如果在范围内,可以接收,将TLP从BUS0, 送到BUS1

      • 如果不在范围内,不可接收,同时如果TLP1需要响应报文,则由switch发出,状态为unsupported request

    • switch接收TLP1后,送往P-P2,P-P3桥片,他俩判断base/limit寄存器,决定谁接收该TLP

    • 图中P-P2接收后,送往EP1,完成TLP路由

  • TLP2

    • TLP2发往P-P3桥片,在P-P3桥片配置寄存器的Limit和Base寄存器中当然不会包含TLP2所访问的地址,此时P-P3 桥片将TLP2推至PCI Bus1

    • 当TLP2到达PCI Bus1时,首先检查在PCI Bus1总线上的P-P2桥片是否可以接收此TLP,如果不能接收则TLP2通过P-P1桥片传递到PCI Bus0,即到达RC。

    • 在MPC8548处理器中,到达RC的TLP首先通过Inbound寄存器进行地址转换,将TLP的PCI总线地址转换为处理器的地址,然后访问处理器中相应的存储器空间;

    • 对于x86处理器而言,MCH也会完成PC I 域地址空间到存储器域地址空间的转换,然后访问处理器中相应的存储器空间。

  • TLP3

    • TLP3 的传递方式与TLP2的传递方式有些类似,当TLP3传递到PCI Bus1时,P-P2桥片将接收TLP3,并将TLP3传递到PCI Bus2上的EP1中。

    • TLP3在PCI总线域上进行数据传递,因此不需要进行PCI总线域到存储器域的地址转换。

相关文章:

  • IPV6概述
  • 【Android知识点】面试版
  • 1. 配置OSPF智能定时器
  • Docker 入门教程(三):镜像操作命令
  • 【菜狗的记录】模糊聚类最大树、图神经网络、大模型量化——20250627
  • Ubuntu安装Docker部署Python Flask Web应用
  • 【RAG面试题】如何获取准确的语义表示
  • 自动登录脚本神器-Mac电脑实现自动登录堡垒机并自动输入账号密码跳转不同机器环境
  • GitHub Actions与AWS OIDC实现安全的ECR/ECS自动化部署
  • 用 pnpm + TurboRepo,构建多项目高效开发体系
  • 参考nlohmann json设计Cereal宏 一行声明序列化函数
  • git add 报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xaf in position 42
  • 【iOS初体验】Hello, UIKit! - 第一个iOS App保姆式教程
  • iOS App 上架常见问题解决方案:六大难点与实战工具分工详解
  • CatBoost:征服类别型特征的梯度提升王者
  • 数据驱动AI研发的质量与效能策略
  • CVE-2015-5531源码分析与漏洞复现(Elasticsearch目录遍历漏洞)
  • Qt 与 Halcon 联合开发六:基于海康SDK设计完整的相机类【附源码】
  • LeetCode 349题解 | 两个数组的交集
  • 洛谷P5021 [NOIP 2018 提高组] 赛道修建