April 2026

P4.5 Implicit Routing for Messages in PCIe

In previous lectures, we discussed how PCI Express (PCIe) completely transformed data transfer by moving from a legacy parallel bus to a packet-based serial connection. However, moving to a serial connection presented a unique physical challenge: what to do with all the dedicated physical wires (side-band signals) that older architectures used for system interrupts, error […]

P4.5 Implicit Routing for Messages in PCIe Read More »

P4.4 ID and Address Routing Mechanisms: Navigating the PCIe Fabric

In our previous lectures, we saw how devices use Base Address Registers (BARs) and Base/Limit registers to claim address space. Because PCIe utilizes independent point-to-point connections instead of a legacy shared bus, all traffic must be actively directed through the system’s topology. When a Transaction Layer Packet (TLP) arrives at a device’s inbound interface (the

P4.4 ID and Address Routing Mechanisms: Navigating the PCIe Fabric Read More »

P4.3 Base and Limit Registers: Routing Traffic Through Bridges and Switches

Once a PCIe function’s Base Address Registers (BARs) are programmed by system software, the device knows exactly which memory and IO address ranges it owns and will claim any transactions targeting those locations. However, because PCI Express utilizes independent, point-to-point links rather than a shared bus, the bridges and switches upstream need a way to

P4.3 Base and Limit Registers: Routing Traffic Through Bridges and Switches Read More »

P4.2 Base Address Registers (BARs): Negotiating Device Memory and IO Space

To function properly, a PCIe device must allow the system’s software to read and write to its internal registers and storage locations. However, in a plug-and-play architecture like PCIe, a device cannot simply demand or assume a specific address on its own; the system software (like the BIOS or OS kernel) acts as the ultimate

P4.2 Base Address Registers (BARs): Negotiating Device Memory and IO Space Read More »

P4.1 Memory and IO Address Spaces: MMIO vs. Legacy IO and Prefetchable Memory

To effectively communicate with hardware, system software needs a way to access a device’s internal registers and storage locations to control its behavior, check its status, or deliver data. To make this possible, these internal device locations must be assigned specific addresses from one of the address spaces supported by the system. Here is a

P4.1 Memory and IO Address Spaces: MMIO vs. Legacy IO and Prefetchable Memory Read More »

P3.5 The Enumeration Process (Discovery): Navigating the PCIe Topology

When a computer first powers up or undergoes a reset, the system software actually knows very little about the hardware connected to it. To establish communication, configuration software must systematically scan the PCI Express (PCIe) fabric to discover the machine’s topology, a process known as enumeration. Here is a step-by-step walkthrough of how system software

P3.5 The Enumeration Process (Discovery): Navigating the PCIe Topology Read More »

P3.4 Type 0 vs. Type 1 Configuration Requests: Navigating the PCIe Tree

In our previous lectures on PCI Express (PCIe) configuration, we learned that only the Root Complex is permitted to originate Configuration Requests. This strict rule prevents chaos by ensuring the system processor maintains absolute control over configuring devices and assigning resources. But once the Root Complex generates a Configuration Request, how does that packet successfully

P3.4 Type 0 vs. Type 1 Configuration Requests: Navigating the PCIe Tree Read More »

P3.3 Generating Configuration Transactions: Legacy IO-Indirect vs. PCIe Enhanced Access

In our exploration of PCI Express (PCIe) architecture, we have established that devices use configuration space to achieve a “plug-and-play” environment. However, an important rule governs this space: only the Root Complex is permitted to originate Configuration Requests. This restriction ensures that the system processor acts as the central authority, preventing the anarchy that would

P3.3 Generating Configuration Transactions: Legacy IO-Indirect vs. PCIe Enhanced Access Read More »

P3.2 Configuration Address Space: Comparing Legacy 256-Byte PCI to the Expanded 4KB PCIe Space

In the early days of PCs, installing a new expansion card meant manually configuring physical switches and jumpers to assign resources, which frequently resulted in frustrating hardware conflicts. The original PCI architecture solved this by introducing a standardized “Plug and Play” mechanism known as Configuration Address Space. As the industry transitioned to PCI Express (PCIe),

P3.2 Configuration Address Space: Comparing Legacy 256-Byte PCI to the Expanded 4KB PCIe Space Read More »

P3.1 Understanding BDF: How Every PCIe Function is Uniquely Identified

To effectively manage and communicate with all the different components inside a computer, the system needs a reliable way to identify exactly where each component is located within the system’s topology. In the PCI Express (PCIe) architecture, every single function is uniquely identified by a combination of its Bus number, Device number, and Function number.

P3.1 Understanding BDF: How Every PCIe Function is Uniquely Identified Read More »

Scroll to Top