PCI总线域可以认为是RC与EP两个处理器之间一个虚拟的地址空间范围0x0000_0000 - 0xFFFF_FFFF,用于对两个处理器进行地址映射。大部分都是简单等效一一映射,即如果一个处理器访问一个物理地址0x1234_5678, 并且已经进行好了映射,PCI控制器就会自动将这个地址翻译成PCI域地址0x1234_5678,这样就连同了两个处理器之间的地址映射。
一个处理器映射需要两个方向,本地映射到PCI域是OutBound,PCI域映射到本地是InBound;如下图,主机RC端将一块物理地址0x7890_2000 OutBound映射到PCI域, 相对应的EP端处理器将相应的PCI域地址InBound映射到本地0x7890_1234;0x7890_2000是一个RC处理器可以访问到的物理地址,注意,它并不是内存RAM的地址,EP端InBouond到本地的地址0x7890_1234才是内存RAM地址;当映射完毕之后,RC端往0x7890_2000地址写1,PCI控制器就会进行地址转换,组TLP包,最终访问到PCI域0x7890_1234,然后EP端PCI控制器解码TLP包,地址范围匹配,就对0x7890_1234进行写操作,那样,EP端如果读物理地址0x7890_1234内存值时,就会读到1。RC读操作也是一样,只不过是TLP命令包不同,这一部分一般不需要驱动开发者去关注,毕竟芯片集成功能很全面简洁了。
pcie空间映射
PCIE地址映射原理
最新推荐文章于 2024-05-21 16:05:44 发布