在初学 PCIe System (一) - PCIe介绍及其配置空间有提到可以从PCIe设备的配置空间(Configuration Space)获取许多重要的资讯,那在CPU中,访问配置空间常用的两种方式如下:
Programmed Input/Output (PIO)
PIO 是由CPU主动向Device 获取资料 ,CPU 会等待Device资料传输完后才去做其他事情。使用PIO会占住CPU资源,会让系统变得低效,因此此技术已几乎被直接记忆体访问(DMA)所取代。
这边简单介绍一下PIO的作法,首先每个PCI Function的配置空间中和PCI相容的前256 Bytes会映射到一个第三个空间:配置地址空间(configuration address space)。因为PCI Function最多会有(2^8) * (2^5) * (2^3) = 65536个,每个Function都会映射256Byte的配置空间,因此配置地址空间的大小为 65536 * 256 Bytes = 16 MB。
CPU 通过主桥(Host Bridge)中的 IO 映射地址端口(Address Port )和资料端口(Data Port)进行索引来间接访问 PCI 配置空间。
地址端口(Address Port )位于 IO 地址 CF8h-CFBh,是一个大小为32 bits的暂存器,需要填入CONFIG_ADDRESS,其格式如下
| Bit 31 | Bits 30-24 | Bits 23-16 |

本文详细介绍了CPU访问PCIe设备配置空间的两种主要方式:Programmed Input/Output (PIO) 和 Direct Memory Access (DMA)。在PIO中,CPU通过地址端口和数据端口与配置地址空间交互,而DMA则允许设备直接访问内存,提高效率。通过理解这两种机制,可以更好地理解PCIe系统的内部工作原理。
最低0.47元/天 解锁文章
1227

被折叠的 条评论
为什么被折叠?



