Focuses on advanced Transaction Layer features: TLP routing, header fields, framing, prefix, ordered headers, and steering tags.
1. Transaction Layer Packet (TLP) Routing
PCIe uses multiple routing methods to deliver TLPs to the correct endpoint:
| Routing Type | Description |
|---|---|
| Address Routing | Uses the memory/IO address to determine the destination |
| ID Routing | Uses requester ID (Bus/Device/Function) |
| Implicit Routing | System-defined routing (broadcasts, special messages) |
ASCII Example: Address Routing
Root Complex --> Switch --> Endpoint
Address: 0xD0000000 maps to Endpoint 1
TLP follows path through switch to EP1
2. TLP Header Fields
TLP Header carries routing and control information:
| Field | Description |
|---|---|
| Format/Type | Defines TLP type (Memory, IO, Config, Message) |
| Length | Number of DWORDs in payload |
| Requester ID | Source device |
| Completer ID | Destination device |
| Address | Memory/IO space address |
| Attributes (AT) | Ordering, relaxed/strict, etc. |
| Traffic Class (TC) | QoS class for virtual channels |
ASCII TLP Header Example
+------------+------------+-----------+-----------+
| Type/Format| Length | Req ID | Comp ID |
+------------+------------+-----------+-----------+
| Address/Attr| TC | Other fields |
+------------+------------+-----------------------+
3. TLP Framing
- TLPs are encapsulated into flits or symbols at the PHY layer
- Start-of-packet (SOP) and End-of-packet (EOP) markers indicate TLP boundaries
- Framing ensures DLL can reconstruct the original TLP
4. TLP Prefix Processing
- TLP Prefix: Optional header preceding main TLP
- Types:
- Local Prefix: Only for the originating device
- End-to-End (E2E) Prefix: Travels with TLP across devices
- Carries:
- PASID (Process Address Space ID)
- Transaction hints (TPH)
- Steering tags for routing
ASCII Example:
[TLP Prefix] [TLP Header] [TLP Payload] [CRC]
5. Ordered Header Categories (OHC)
PCIe classifies TLP headers into categories A, B, C, E for ordering rules:
| Category | Description |
|---|---|
| A | Must be strictly ordered with other A transactions |
| B | Can be reordered with other B, but after A |
| C | Relaxed ordering; can bypass A/B |
| E | Explicit ordering for special messages |
Helps devices maintain memory coherency and QoS.
6. Steering Tag
- Optional tag in TLP to direct routing efficiently through switches
- Reduces lookup complexity at each switch
- Enhances latency-sensitive traffic delivery
ASCII Routing Example with Steering Tag
[RC] --> [Switch] --> [EP1]
TLP contains Steering Tag -> Switch forwards without lookup
7. Address Translation Services (ATS) Updates
- ATS allows endpoints to request address translation from upstream IOMMU
- Enables virtualization
- Reduces CPU intervention for memory accesses in multi-VM systems
8. Process Address Space ID (PASID)
- Each process or virtual machine can have a unique PASID
- Helps track transactions belonging to different processes
- Works with TLP Prefix to maintain correct routing and ordering
9. Advanced TLP Rules
- Transaction Processing Hints (TPH): Suggests how completions should be processed
- Packet Header Updates: Supports new features like Flit Mode
- Flit Sequencer Rules: Maintain TLP order across multiple lanes
- Implicit / Explicit Sequence Numbering: Guarantees reliability
10. Summary – Transaction Layer Advanced Features
Responsibilities:
- Routes TLPs using address, ID, or implicit routing
- Maintains header structure with length, IDs, attributes, and QoS
- Supports TLP Prefix for PASID, TPH, steering tags
- Enforces Ordered Header Categories (A/B/C/E)
- Ensures correct transaction ordering and virtual channel prioritization

