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 »

P2.6 The Physical Layer: Byte Striping, Encoding, and Link Training in PCIe

In our final deep dive into the PCIe layered architecture, we reach the foundation: the Physical Layer. This is the lowest hierarchical layer, responsible for taking the fully assembled packets from the Data Link Layer and transforming them into the raw electrical signals that physically travel across the wire. Here is a breakdown of how

P2.6 The Physical Layer: Byte Striping, Encoding, and Link Training in PCIe Read More »

P2.5 Reliable Delivery in PCIe: Understanding the Ack/Nak Protocol

In our previous lectures on the PCI Express (PCIe) layered architecture, we discussed how the Transaction Layer builds data packets and how Flow Control prevents buffer overflows. However, as high-speed serial data physically travels across the Link, it is susceptible to transient electrical noise and interference. To guarantee that Transaction Layer Packets (TLPs) survive this

P2.5 Reliable Delivery in PCIe: Understanding the Ack/Nak Protocol Read More »

P2.4 The Data Link Layer and DLLPs: Ensuring Reliable PCIe Communication

In our previous lecture, we explored how the Transaction Layer assembles our data into Transaction Layer Packets (TLPs). Once a TLP is built, it must safely survive the physical journey across the PCIe connection. This crucial responsibility falls to the Data Link Layer, which serves as the highly reliable middleman between the Transaction Layer above

P2.4 The Data Link Layer and DLLPs: Ensuring Reliable PCIe Communication Read More »

P2.3 Quality of Service (QoS): Prioritizing Time-Sensitive Traffic in PCIe

In our continued exploration of the PCIe Transaction Layer, we must address how the system handles competing types of data. Unlike legacy shared buses where data is generally handled strictly on a first-come, first-served basis, PCIe was designed from its inception to support time-sensitive transactions. For applications like streaming audio or video, data delivery must

P2.3 Quality of Service (QoS): Prioritizing Time-Sensitive Traffic in PCIe Read More »

Scroll to Top