接前一篇文章:《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置(1)
CPU域地址空间指CPU所能直接访问的地址空间集合。在本书中,CPU、处理器与处理器系统的概念不同。如MPC8548处理器的内核是E500 V2,本书将这个处理器内核称为CPU;处理器由一个或多个CPU、外部Cache、终端控制器和DRAM控制器组成,而处理器系统由一个或者多个处理器和外部设备组成。
在CPU域中有一个概念,即CPU域边界。所谓CPU域边界,即CPU所能控制的数据完整性边界。CPU域的边界由Memory Fence指令的作用范围确定,CPU域边界的划分对数据完整性(Data Consistency)非常重要。与CPU域相关的数据完整性知识较为复杂,可以独立成书,因此本书对数据完整性不做进一步介绍。
严格地讲,CPU域仅在CPU内核中有效。CPU访问主存储器时,首先将读写命令放入读写指令缓冲区中,然后将这个命令发送到DRAM控制器或者HOST主桥。DRAM控制器或者HOST主桥将CPU地址转换为DRAM地址或者PCI总线地址,分别进入DRAM域或者PCI总线域后,再访问相应的地址空间。
DRAM域地址空间指DRAM控制器所能访问的地址空间集合。目前处理器系统的DRAM一般由DDR — SDRAM组成,有的书籍也将这部分内存称为主存储器。在有些处理器系统中,DRAM控制器能够访问的地址空间,并不能被处理器访问,因此在这类处理器系统中,CPU域与DRAM域地址空间把并不等同。
比如,有些CPU可以支持36位的物理地址,而有些DRAM控制器仅支持32位的物理地址,此时CPU域包含的地址空间大于DRAM域地址空间。但是,这并不意味着DRAM域一定包含在CPU域中,在某些处理器系统中,CPU并不能访问在DRAM域中的某些数据区域。而CPU域中除了包含DRAM域外,还包含外部设备空间。
在多数处理器系统中,DRAM域空间是CPU域空间的一部分,但是也有例外。比如显卡控制器可能会借用一部分贮存空间,这些被借用的空间不能被CPU访问,而只能被DRAM控制器、更准确地说是显卡通过DRAM控制器访问,因此这段空间不属于CPU域。严格地讲,这段空间属于外部设备域。
本书使用存储器域统称CPU域和DRAM域。存储器空间包括CPU内部的通用寄存器、存储器映像寻址的寄存器、主存储器空间和外部设备空间。在Intel的x86处理器系统中,外部设备空间与PCI总线域地址空间等效,因为在x86处理器系统中,使用PCI总线统一管理全部外部设备。为简化起见,本书使用PCI总线域替代外部设备域。
值得注意的是,存储器域的外部设备空间在PCI总线域中还有一个地址映射。当处理器访问PCI设备时,首先访问的是这个设备在存储器域上的PCI设备空间,之后HOST主桥将这个存储器域的PCI总线地址转换为PCI总线域的物理地址(PCI总线域只含有物理地址,因此上下文将直接使用PCI总线地址,而不使用PCI总线物理地址),然后通过PCI总线事务访问PCI总线域的地址空间。
更多内容请看下回。