CPU可寻址的地址空间被称为线性地址空间,在MSDN上又被称为虚拟地址空间,在x86架构的32位处理器上是4GB,在64位处理器上则很大。实际DDR内存容量可能没有这么大,DDR被安排在线性地址空间中的一段区间,称为RAM地址空间或系统内存空间。对于独立显卡,是PCI设备,拥有独立的显存,这些显存由PCI设备配置空间中的BAR定位。显存会被安排到线性地址空间中的一段区间,称为显存空间,在设备管理器->显示适配器->显卡->属性->资源一栏中所看到的内存范围就是这里说的显存空间。
PCI设备的内存、I/O空间、配置空间均位于PCI设备本身,其中配置空间只能通过I/O端口来访问,PCI设备的配置空间正是为了支持PnP而设计的,计算机开机启动时,BIOS会枚举PCI总线上的所有PCI设备,在线性地址空间中为PCI设备内存安排地址空间,将在线性地址空间中的内存基地址登记到PCI设备的配置空间中,I/O空间也是如此。
驱动程序访问物理内存(包括设备内存)需要先通过MmMapIoSpace函数将物理内存转换为虚拟内存后再使用READ_REGISTER_XXX和WRITE_REGISTER_XXX类函数访问。
核显由于不是PCI设备,故不存在配置空间,核显会占用DDR主存,系统自有机制将DDR的一段内存作为显存使用。