SPRUI30H November 2015 – May 2024 DRA745 , DRA746 , DRA750 , DRA756
The PCIe controller acts as a general-purpose bridge between the device local PCIe system and the PCIe fabric. Both are address-based mappings, and the bridging requires address translation between the different spaces.
The Table 24-504 lists the memory-mapped spaces interconnected by each of the PCIe_SS1 and PCIe_SS2 controllers. For each address space (row), the local PCIe subsystem (including the PCIe core) provides “entry points” (4th column) to inject transactions into the specified space, and ”exit points” (5th column) to receive transactions from the specified space.
Space name | Address width | Size (bytes) | Entry point | Exit point | Comments |
---|---|---|---|---|---|
Device L3_MAIN memory space visible through PCIe controller's master port | 32-bit | 4 GiB | iATU IBR output | device system RAM, miscellaneous modules | Accessed over PCie controller initiator (master) port; Includes the outbound window below. |
PCIe_SS controller outbound window in device | 28-bit | 256 MiB | Device CPU hosts (MPU, DSPs, and so forth) of PCIe subsystem on device L3_MAIN interconnect | iATU OBR input | Mapped within PCIe controller target (slave) port, the outbound window is itself remapped within the device L3_MAIN memory space (256 MiB sized region). |
PCIe memory space | 32-bit/64-bit(1) | 4 GiB/16 EiB | ATU OBR output (mem mode) | ATU IBR input (mem mode) | Contains all memory BARs |
PCIe I/O space | 32-bit | 4 GiB | ATU OBR output (I/O mode) | ATU IBR input (I/O mode) | Contains all I/O BARs |
PCIe config space (ECAM) | 28-bit | 256 MiB | ATU OBR output (configuration mode) | Configuration registers inside PCIe controller | Contains the PCIe-standard configuration spaces for EP functions (a 4 KiB- descriptor per function). |
By definition, an iATU (Address Translation Unit) has an input (the space the access originates from) and an output (the space the access is headed for), with the required address translation taking place in the middle. An iATU inbound region (IBR) routes from PCIe (input) to device L3_MAIN space (output), an iATU outbound region (OBR) routes from the L3_MAIN space (input) to the PCIe (output).
Table 24-505summarizes the action of the different ATU regions. It contains the same information as the table above, organized differently. Note that inbound regions are not required to managed incoming configuration accesses, which are completed automatically by the PCIe controller hardware.
PCIe controller core outbound and inbound ATUs define:
ATU region direction | ATU region type | Source space | Destination space |
---|---|---|---|
Outbound (OBR) | Memory | PCIe controller outbound window | PCIe memory space |
Inbound (IBR) | Memory | PCIe memory space | Device PCIe subsystem space |
Outbound (OBR) | I/O | PCIe controller outbound window | PCIe I/O space |
Inbound (IBR) | I/O | PCIe I/O space | Device PCIe subsystem space |
Outbound (OBR) | Configuration | PCIe controller outbound window | PCIe Cfg space |
In a read/write access to an iATU outbound region (input), which is mapped in the PCIe controller target’s 256 MiB-wide outbound window, do not confuse:
In the calculation of an ATU outbound region translation, the input is the address offset within the outbound window, ranging from 0x0000_0000 (0 bytes) to 0x0FFF_FFFC (256 MiB – 4 Bytes), they are the third and last address type in the list above.
PCI express is an interconnect that propagates read/write accesses from/to systems beyond the local device PCIe subsystem. The figure below shows such a link, where the transaction initiator (PCIe requester device, on the left) and the transaction target (PCIe completer device, on the right) are two instances of the PCIe controller subsystem, connected over the PCI express fabric (in the middle). The physical routing of the transaction over the PCIe topology (through switches) is implicit and transparent for addresses. A simplified chain of address translation is represented for each PCIe transaction type (Configuration, Memory or IO).
There is a difference between requester/completer and RC/EP relationships, an EP device can be either the requester or the completer in a memory transaction.