首页 理论教育PCIExpress:PCI设备地址空间使用指南

PCIExpress:PCI设备地址空间使用指南

【摘要】:TOLUD~4GB这段PCI总线地址空间主要映射和ICH相连的PCI设备地址空间,此外还包括EPBAR指向的空间,以及MCHBAR和DMIBAR指向的空间等。FSB Interrupts存储器空间与MSI中断机制相关,PCIe设备向这段存储器空间进行写操作时,MCH将这个写操作转换为FSB总线的Interrupt Message总线事务。DMI Interface负向译码空间被分为若干段,用来映射ICH使用的PCI总线地址空间。这些PCI设备的BAR空间被映射到这段空间。由以上说明可以发现与MCH连接的PCIe设备的访问延时小于与ICH连接中的PCIe设备。

TOLUD~4GB这段PCI总线地址空间主要映射和ICH相连的PCI设备地址空间,此外还包括EPBAR(Egress Port Base Address)指向的空间,以及MCHBAR和DMIBAR指向的空间等。除了PCI总线地址空间外,这段空间还包括High BIOS、APIC(Advanced Programming Interrupt Controller)和FSB Interrupts地址空间,其详细描述如图5-4所示。

其中APIC(Advanced Programmable Interrupt Controller)包括I/O APIC和Local APIC占用0xFEC0-0000~0x FECF-FFFF这段地址空间。APIC是x86处理器使用的中断控制器,负责管理外部和CPU之间的中断请求。而HESG空间占用0xFEDA-0000~0xFEDB-FFFF这段地址空间,这段空间在CPU内核处于SMM状态时,才能访问。

FSB Interrupts存储器空间与MSI中断机制相关,PCIe设备向这段存储器空间进行写操作时,MCH将这个写操作转换为FSB总线的Interrupt Message总线事务

值得注意的是,在x86处理器中Local APCI使用的寄存器在0xFEE0-0000~0xFEE0-03F0区域之间,在这段区域中,有一些Reserved寄存器,如0xFEE0-0000~0xFEE0-0010,系统软件不能操作这些寄存器。Intel并没有公开这些寄存器的具体含义,但是从原理上推断,这段寄存器所使用的地址正好是PCIe设备使用MSI-X中断方式向APCI ID为0的CPU发送中断所使用的地址,有关x86处理器MSI-X中断方式的详细说明见第10.3节。

978-7-111-29822-9-Part02-43.jpg(www.chuimin.cn)

图5-4 TOLUD~4GB PCI总线地址空间

在x86处理器中,Local APIC寄存器空间是可变的,其基地址保存在IA32_APIC_BASE寄存器中,该寄存器是x86处理器的MSR(Model Specific Register)寄存器,x86处理器使用RDMSR和WRMSR指令访问这些寄存器。

PCI Express配置空间占用0xE000-0000~0xEFFF-FFFF这段地址空间,下节将详细解释这段空间的使用方法。DMI Interface负向译码空间被分为若干段,用来映射ICH使用的PCI总线地址空间。在ICH中提供了许多PCI设备,包括内嵌在ICH中的虚拟PCI设备和PCIe总线端口。这些PCI设备的BAR空间被映射到这段空间。

Montevina平台使用DMI连接MCH和ICH。当CPU对PCI空间发起数据请求时,这些数据首先到达MCH,当MCH中的所有设备都不响应这个数据请求时,MCH中的DMI接口设备将使用负向译码方式被动地接收这个数据请求,并将其转发到ICH中的DMI接口设备,从而到达ICH。因此Montevina平台将这段空间称为“负向译码空间”。由以上说明可以发现与MCH连接的PCIe设备的访问延时小于与ICH连接中的PCIe设备。