图中的处理器系统由一个 CPU、一个 DRAM 控制器和两个 HOST 主桥组成。在这个处理
器系统中,包含 CPU 域、DRAM 域、存储器域和 PCI 总线域地址空间。其中 HOST 主桥 x 和
HOST 主桥 y 分别管理 PCI 总线 x 域与 PCI 总线 y 域。CPU 访问 PCI 设备,必须通过 HOST 主
桥进行地址转换,而 PCI 设备访问存储器设备,也需要 HOST 主桥进行地址转换。HOST 主
桥的一个重要作用就是将存储器访问的存储器地址转换成 PCI 总线地址。
CPU 域地址空间是指 CPU 所能直接访问的地址空间集合。
DRAM 域地址空间是指 DRAM 控制器所能访问的地址空间集合,又称为主主存储器域。
存储器域是 CPU 域和 DRAM 域的集合。存储器域包括 CPU 内部的通用寄存器、存储器
映射寻址的寄存器、主存储器空间和外部设备空间。在 Intel 的 x86 处理系统中,外部设备
空间与 PCI 总线域地址空间等效。因为在 x86 处理器系统中,使用 PCI 总线同一管理全部外
部设备。
值得注意的是,存储器域的外部设备空间,在 PCI 总线域中还有一个地址映射。当处
理器访问 PCI 设备时,首先访问的是这个设备在存储器域上的 PCI 设备空间,之后 HOST 主
桥将这个存储器域的 PCI 总线地址转换成 PCI 总线域的物理地址,然后通过 PCI 总线事务访
问 PCI 总线域的地址空间。
2) 可扩展性
PCI 总线具有很强的扩展性。在 PCI 总线中,HOST 主桥可以直接推出一条 PCI 总线,这
条总线也是该 HOST 主桥管理的第一条 PCI 总线,该总线还可以通过 PCI 桥扩展一系列 PCI
总线,并以 HOST 主桥作为根节点,形成 1 棵 PCI 总线树。这些 PCI 总线都可以连接 PCI 设
备,但是一棵 PCI 设备树上,最多只能挂接 256 个 PCI 设备(包括 PCI 桥)。
3) 动态配置机制
PCI 设备使用的地址可以根据需要由系统软件动态分配。PCI 总线使用这种方式合理地
解决设备间的地址冲突,从而实现了“即插即用”功能。每一个 PCI 设备都有独立的配置空间,
在配置空间中包含该设备在 PCI 总线中使用的基地址即 BAR 地址,从而保证每一个 PCI 设备
使用的物理地址并不相同。PCI 桥的配置空间中包含有其下 PCI 子树所能使用的地址范围。
x86 系统的工作流程是:主板上的 BIOS 程序会扫描 PCI/PCIE 设备,读取其 BAR 空间的
大小,动态地为 PCI/PCIE 设备分配地址空间。在调试过中发现,假如将 BAR 空间设置成
2G,x86 系统会报 no bootable device 的错误,原因应该是 BIOS 给 PCIE 设备分配了 2G 的地
址空间,暂用了硬盘的地址空间,导致无法加载操作系统。
评论5
最新资源