Both terms refer to the digital logic component that glues the CPU cores to the rest of the system, i.e., connecting the CPU cores to RAM modules, PCIe graphics, the “southbridge” chipset, etc. The terms “hostbridge” and “northbridge” refer to the same logic components in this article.“PCI expansion ROM” refers to the ROM chip on a PCI device or the contents of the chip, except when the context contains other specific explanation.Memory in this context could mean RAM, ROM, or other forms of memory that can be addressed by the CPU. “Memory space” means the set of memory addresses accessible by the CPU, i.e., the memory that is addressable from the CPU.“Memory range” or “memory address range” means the range from the base/start address to the end address (base address + memory size) occupied by a device in the CPU memory space.Flash memory refers to either the chip on the motherboard that stores the BIOS/UEFI or the chip on expansion card that stores the PCI expansion ROM contents.“Memory controller” refers to that part of the chipset or the CPU that controls the RAM modules and controls access to the RAM modules.“Main memory” refers to RAM modules installed on the motherboard.That’s why you are strongly advised to read the first part before moving forward with this second part. The fact that PCIe is an extension to PCI means that you should be familiar with the PCI bus protocol before you can understand PCIe. In fact, you can boot an OS only supporting the PCI bus on platforms using PCIe without a problem, as long as the OS support conforms to the PCI bus protocol specification. However, on the logical level PCIe is an extension of PCI.
PCIe is very different on the physical level from PCI. Knowledge of the address mapping is important to understand access to contents of the PCI expansion ROM in PCIe-based system. Similar to the first part, the focus is on understanding the address mapping mechanism of the PCIe bus protocol.
We are going to look at system address map initialization in x86/圆4 PCIe-based systems.