PCIe总线-存储器域和PCIe总线域访问流程分析(二)

1.概述

PCIe总线的最大特点是像CPU访问DDR一样,可以直接使用地址访问PCIe设备(桥),但不同的是DDR和CPU同属于存储器域,而CPU和PCIe设备属于两个不同的域,PCIe设备(桥)的地址空间属于PCIe总线域。存储器域访问PCIe总线域或者PCIe总线域访问存储器域,需要经过一系列的转换才可以完成。

2.跨域访问

下图是存储器域访问PCIe域和PCIe域访问存储器域的示意图。通常情况下,存储器域指的是CPU能直接访问的地址空间,包括了CPU寄存器、DRAM、PCIe控制器和PCIe窗口地址空间。PCIe总线域指由PCIe设备所能直接访问的地址空间组成,包括PCIe桥设备和PCIe Swtich,若由多条PCIe总线,则对应多个PCIe总线域。

图中出现的名词解释如下:

  • Outbound: 存储器域访问PCIe总线域称为Outbound传输,从RC或EP的角度看,也可以称为发送。
  • Inbound: PCIe总线域访问存储器域称为Inbound传输,从RC或EP的角度看,也可以称为接收。
  • Outbound ATU(address translation unit): Outbound地址转换单元,负责将存储器域地址转换成PCIe总线域地址。
  • Inbound ATU(address translation unit): Inbound地址转换单元,负责将PCIe总线域地址转换成存储器域地址。

存储器域和PCIe总线域相互访问

注:

  1. PCIe总线诞生在x86体系结构中,而在x86处理器中,并没有地址转换单元ATU,但存储域和PCIe总线域地址空间的概念仍然存在。
  2. 存储域和PCIe总线域地址的转换规则PCIe规范中并没有规定,因此不同的处理器架构实现各不相同,因此图中统一使用ATU表示地址转换功能。
  3. RC存储域地址和PCIe总线域地址虽然相同,但还是两个不同的域,当然也可以通过配置映射,使存储域地址和PCIe总线域地址不同。在x86架构中RC存储域窗口地址为总线地址,arm等架构中,RC存储域窗口地址为物理地址。
  4. RC存储域访问EP存储域使用PCIe总线域0xA0000000-0xA00FFFFF地址段(配置在PCIe桥的BASE和Limit寄存器或PCIe设备的BAR寄存器中),EP存储域访问RC存储域使用PCIe总线域0xB0000000-0xB00FFFFF地址段。0xA0000000-0xA00FFFFF和0xB0000000-0xB00FFFFF地址段不能重合,否则PCIe桥无法区分该请求是发给RC还是桥下面的其他EP。

2.1. RC存储域访问EP存储域

RC存储域访问EP存储域会经历Outbound和Inbound传输。在访问之间RC配置Outbound映射,EP配置Inbound映射。具体过程如下:

  1. RC存储域发出访问地址,若命中Outbound Region地址段0xA0000000-0xA00FFFFF,则RC会响应这个访问请求。
  2. RC存储域Outbound ATU将访问地址转换成PCIe域总线地址,转换后的地址必须在PCIe总线地址段0xA0000000-0xB00FFFFF内,然后将请求发送到PCIe总线上(该请求会被封装成一个TLP事务包,具体会在PCIe总线事物层介绍)。
  3. 该请求经过基于地址的PCIe总线路由,发送到了访问目标EP存储域。
  4. EP存储域Inbound ATU将该请求的PCIe总线域地址转换成EP存储器域地址,转换后的地址必须在EP存储域地址段0xC0000000-0xC00FFFFF内。
  5. EP开始响应该请求,执行读或者写任务。

2.2. EP存储域访问RC存储域

EP存储域访问RC存储域会经历Inbound和Outbound传输(EP访问RC通常使用DMA)。在访问之间RC配置Inbound映射,EP配置Outbound映射。具体过程如下:

  1. EP存储域发出访问地址,若命中Outbound Region地址段0xD0000000-0xD00FFFFF,则EP会响应这个访问请求。
  2. EP存储域Outbound ATU将访问地址转换成PCIe域总线地址,然后将请求发送到PCIe总线上。
  3. 该请求经过基于地址的PCIe总线路由,发送到了访问目标RC存储域。
  4. RC存储域Inbound ATU将该请求的PCIe总线域地址转换成RC存储器域地址,转换后的地址必须在RC存储域地址段0xB0000000-0xB00FFFFF内。
  5. RC开始响应该请求,执行读或者写任务。

参考资料

  1. PCIEXPRESS体系结构导读
  2. PCI Express technology 3.0
  3. PCI_Express_Base_r3.0_10Nov10
  • 26
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值