【谈谈PCIE的地址映射】


【博客首发于微信公众号《漫谈芯片与编程》,欢迎专注一下,多谢大家】

1 为什么PCIE需要地址映射?

每个PCIE设备,都有自己的内部空间,这部分空间若是开放给Host(软件/CPU)来访问,那么Host怎样往这部分空间写入数据或者读数据?
---->CPU只能直接访问Host内存(Memory)空间,不对PCIE等外设直接操作,具体再通过RC分忧。
具体办法就是:CPU如果想访问某个设备的空间,由于它不能亲自跟那些PCIe外设打交道,因此叫RC去办。比如,如果CPU想读PCIe外设的数据,先叫RC通过TLP把数据从PCIe外设读到Host内存,然后CPU从Host内存读数据;如果CPU要往外设写数据,则先把数据在内存中准备好,然后叫RC通过TLP写入到PCIe设备。

最左边虚线的表示CPU要读Endpoint A的数据,RC则通过TLP(经历Switch)数据交互获得数据,并把它写入到系统内存中,然后CPU从内存中读取数据(紫色箭头所示),从而CPU间接完成对PCIe设备数据的读取。
系统把PCIe设备开放的空间(系统软件可见)映射到内存空间,CPU要访问该PCIe设备空间,只需访问对应的内存空间。RC检查该内存地址,如果发现该内存空间地址是某个PCIe设备空间的映射,就会触发其产生TLP,去访问对应的PCIe设备,读取或者写入PCIe设备。
在这里插入图片描述

2 地址映射在PCIE协议中的几个主要原因和用途:

  • 内存地址空间共享:PCIe设备需要访问系统内存,而系统内存地址空间是有限的。通过地址映射,每个PCIe设备可以被分配一个唯一的内存地址范围,确保不同设备不会相互干扰。
  • I/O地址空间共享:类似地,I/O地址空间也需要被合理分配,以避免冲突。
  • 配置空间访问:每个P
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值