Category | Title | Edition | ISBN |
---|---|---|---|
Processor Architecture | 80486 System Architecture | 3rd | 0-201-40994-1 |
Pentium Processor System Architecture | 2nd | 0-201-40992-5 | |
Pentium Pro and Pentium II System Architecture | 2nd | 0-201-30973-4 | |
PowerPC System Architecture | 1st | 0-201-40990-9 | |
Bus Architecture | PCI System Architecture | 4th | 0-201-30974-2 |
PCI-X System Architecture | 1st | 0-201-72682-3 | |
EISA System Architecture | Out-of- print | 0-201-40995-X | |
Firewire System Architecture: IEEE 1394a | 2nd | 0-201-48535-4 | |
ISA System Architecture | 0-201-40996-8 | ||
Universal Serial Bus System Architecture 2.0 | 2nd | 0-201-46137-4 | |
HyperTransport System Architecture | 1st | 0-321-16845-3 | |
PCI Express System Architecture | 1st | 0-321-15630-7 | |
Network Architecture | Infiniband Network Architecture | 1st | 0-321-11765-4 |
Category | Title | Edition | ISBN |
---|---|---|---|
Other Architectures | PCMCIA System Architecture: 16-Bit PC Cards | 2nd | 0-201-40991-7 |
CardBus System Architecture | 1st | 0-201-40997-6 | |
Plug and Play System Architecture | 1st | 0-201-41013-3 | |
Protected Mode Software Architecture | 1st | 0-201-55447-X | |
AGP System Architecture | 1st | 0-201-37964-3 |
Bus Type | Specification Release | Date of Release |
---|---|---|
PCI 33 MHz | 2.0 | 1993 |
PCI 66 MHz | 2.1 | 1995 |
PCI-X 66 MHz and 133 MHz | 1.0 | 1999 |
PCI-X 266 MHz and 533 MHz | 2.0 | Q1, 2002 |
PCI Express | 1.0 | Q2, 2002 |
Bus Type | Clock Frequency | Peak Bandwidth * | Number of Card Slots per Bus |
---|---|---|---|
PCI 32-bit | 33 MHz | 133 MBytes/sec | 4-5 |
PCI 32-bit | 66 MHz | 266 MBytes/sec | |
PCI-X 32-bit | 66 MHz | 266 MBytes/sec | 4 |
PCI-X 32-bit | 133 MHz | 533 MBytes/sec | |
PCI-X 32-bit | 266 MHz effective | 1066 MBytes/sec | 1 |
PCI-X 32-bit | 533 MHz effective | 2131 MByte/sec | 1 |
* Double all these bandwidth numbers for 64-bit bus implementations |
PCI Express Link Width | x1 | x2 | x4 | x8 | x12 | x16 | x32 |
---|---|---|---|---|---|---|---|
Aggregate Band- width (GBytes/sec) | 0.5 | 1 | 2 | 4 | 6 | 8 | 16 |
Transaction Type | Non-Posted or Posted |
---|---|
Memory Read | Non-Posted |
Memory Write | Posted |
Memory Read Lock | Non-Posted |
IO Read | Non-Posted |
IO Write | Non-Posted |
Configuration Read (Type 0 and Type 1) | Non-Posted |
Configuration Write (Type 0 and Type 1) | Non-Posted |
Message | Posted |
TLP Packet Types | Abbreviated Name |
---|---|
Memory Read Request | MRd |
Memory Read Request - Locked access | MRdLk |
Memory Write Request | MWr |
IO Read | IORd |
IO Write | IOWr |
Configuration Read (Type 0 and Type 1) | CfgRd0, CfgRd1 |
Configuration Write (Type 0 and Type 1) | CfgWr0, CfgWr1 |
Message Request without Data | Msg |
Message Request with Data | MsgD |
Completion without Data | Cpl |
Completion with Data | CplD |
Completion without Data - associated with Locked Memory Read Requests | CplLk |
Completion with Data - associated with Locked Memory Read Requests | CplDLk |
PCI Express Link Width | x1 | x2 | x4 | x8 | x12 | x16 | x32 |
---|---|---|---|---|---|---|---|
Aggregate Band- width (GBytes/sec) | 0.5 | 1 | 2 | 4 | 6 | 8 | 16 |
Ordered Set Type | Symbols | Purpose |
---|---|---|
Fast Training Sequence (FTS) | COM, 3 FTS | Quick synchronization of bit stream when leaving L0s power state. |
Training Sequence One (TS1) | COM, Lane ID, 14 more | Used in link training, to align and synchronize the incoming bit stream at startup, convey reset, other func- tions. |
Training Sequence Two (TS2) | COM, Lane ID, 14 more | See TS1. |
Electrical Idle (IDLE) | COM, 3 IDL | Indicates that link should be brought to a lower power state (L0s, L1, L2). |
Skip | COM, 3 SKP | Inserted periodically to compensate for clock tolerances. |
DLLP | Purpose |
---|---|
Acknowledge (Ack) | Receiver Data Link Layer sends Ack to indicate that no CRC or other errors have been encountered in received TLP(s). Transmitter retains copy of TLPs until Ack’d |
No Acknowledge (Nak) | Receiver Data Link Layer sends Nak to indicate that a TLP was received with a CRC or other error. All TLPs remaining in the transmitter's Retry Buffer must be resent, in the original order. |
PM_Enter_L1; PM_Enter_L23 | Following a software configuration space access to cause a device power management event, a downstream device requests entry to link L1 or Level 2-3 state |
PM_Active_State_Req_L1 | Downstream device autonomously requests L1 Active State |
PM_Request_Ack | Upstream device acknowledges transition to L1 State |
Vendor-Specific DLLP | Reserved for vendor-specific purposes |
InitFC1-P InitFC1-NP InitFC1-Cpl | Flow Control Initialization Type One DLLP awarding posted (P), nonposted (NP), or completion (Cpl) flow control credits. |
InitFC2-P InitFC2-NP InitFC2-Cpl | Flow Control Initialization Type Two DLLP confirming award of InitFC1 posted (P), nonposted (NP), or com- pletion (Cpl) flow control credits. |
UpdateFC-P UpdateFC-NP UpdateFC-Cpl | Flow Control Credit Update DLLP awarding posted (P), nonposted (NP), or completion (Cpl) flow control cred- its. |
Address Space | Transaction Types | Purpose |
---|---|---|
Memory | Read, Write | Transfer data to or from a location in the system memory map |
IO | Read, Write | Transfer data to or from a location in the system IO map |
Configuration | Read, Write | Transfer data to or from a location in the configuration space of a PCI-com- patible device. |
Address Space | Transaction Types | Purpose |
---|---|---|
Message | Baseline, Vendor-specific | General in-band messaging and event reporting (without consuming mem- ory or IO address resources) |
Request | How Request Is Handled |
---|---|
Memory Write | All Memory Write requests are posted. No completion is expected or sent. |
Memory Read Memory Read Lock | All memory read requests are non-posted. A completion with data (CplD or CplDLK) will be returned by the com- pleter with requested data and to report status of the mem- ory read |
IO Write | All IO Write requests are non-posted. A completion without data (Cpl) will be returned by the completer to report status of the IO write operation. |
IO Read | All IO read requests are non-posted. A completion with data (CplD) will be returned by the completer with requested data and to report status of the IO read operation. |
Configuration Write Type 0 and Type 1 | All Configuration Write requests are non-posted. A comple- tion without data (Cpl) will be returned by the completer to report status of the configuration space write operation. |
Configuration Read Type 0 and Type 1 | All configuration read requests are non-posted. A comple- tion with data (CplD) will be returned by the completer witl requested data and to report status of the read operation. |
Message Message With Data | While the routing method varies, all message transactions are handled in the same manner as memory writes in that they are considered posted requests |
TLP Type | Routing Method Used |
---|---|
Memory Read (MRd), Memory Read Lock (MRdLk), Memory Write (MWr) | Address Routing |
IO Read (IORd), IO Write (IOWr) | Address Routing |
Configuration Read Type 0 (CfgRd0), Configuration Read Type 1 (CfgRd1) Configuration Write Type 0 (CfgWr0), Configuration Write Type 1(CfgWr1) | ID Routing |
Message (Msg), Message With Data (MsgD) | Address Routing, ID Rout- ing, or Implicit routing |
Completion (Cpl), Completion With Data (CplD) | ID Routing |
TLP | FMT[1:0] | TYPE [4:0] |
---|---|---|
Memory Read Request (MRd) | 00 = 3DW, no data 01 = 4DW, no data | 0 0000 |
Memory Read Lock Request (MRdLk) | 00 = 3DW, no data 01 = 4DW, no data | 0 0001 |
Memory Write Request (MWr) | 10 = 3DW, w/ data 11 = 4DW, w/ data | 0 0000 |
IO Read Request (IORd) | 00 = 3DW, no data | 00010 |
IO Write Request (IOWr) | 10 = 3DW, w/ data | 0 0010 |
TLP | FMT[1:0] | TYPE [4:0] |
---|---|---|
Config Type 0 Read Request (CfgRd0) | 00 = 3DW, no data | 0 0100 |
Config Type 0 Write Request (CfgWr0) | 10 = 3DW, w/ data | 0 0100 |
Config Type 1 Read Request (CfgRd1) | 00 = 3DW, no data | 0 0101 |
Config Type 1 Write Request (CfgWr1) | 10 = 3DW, w/ data | 0 0101 |
Message Request (Msg) | 01 = 4DW, no data | 1 0 RRR* (for RRR, see routing subfield) |
Message Request W/Data (MsgD) | 11 = 4DW, w/ data | 1 0 RRR* (for RRR, see routing subfield) |
Completion (Cpl) | 00 = 3DW, no data | 0 1010 |
Completion W/Data (CplD) | 10 = 3DW, w/ data | 0 1010 |
Completion-Locked (CplLk) | 00 = 3DW, no data | 0 1011 |
Completion W/Data (CplDLk) | 10 = 3DW, w/ data | 01011 |
Type Field Bits | Description |
---|---|
Bit 4:3 | Defines the type of transaction: |
Bit 2:0 | Message Routing Subfield R[2:0], used to select message routing: - |
BAR Bits | Meaning |
---|---|
0 | Read back as a " 0 ", indicating a memory request |
2:1 | Read back as 00b indicating the target only supports a 32 bit address decoder |
3 | Read back as a " 1 ", indicating request is for prefetchable memor) |
19:4 | All read back as " 0 ", used to help indicate the size of the request (also see bit 20) |
31:20 | All read back as " 1 " because software has not yet programmed the upper bits with a start address for the block. Note that because bit 20 was the first bit (above bit 3) to read back as written |
BAR | BAR Bits | Meaning |
---|---|---|
Lower | 0 | Read back as a " 0 ", indicating a memory request |
Lower | 2:1 | Read back as 10 b indicating the target supports a 64 bit address decoder, and that the first BAR is concatenated with the next |
Lower | 3 | Read back as a " 1 ", indicating request is for prefetchable mem- ory |
Lower | 25:4 | All read back as " 0 ", used to help indicate the size of the request (also see bit 26) |
Lower | 31:26 | All read back as "1" because software has not yet programmed the upper bits with a start address for the block. Note that because bit 26 was the first bit (above bit 3) to read back as writ ten |
Upper | 31:0 | All read back as "1". These bits will be used as the upper 32 bits of the 64-bit start address programmed by system software. |
BAR Bits | Meaning |
---|---|
0 | Read back as a "1", indicating an IO request |
1 | Reserved. Tied low and read back as "0". |
7:2 | All read back as " 0 ", used to help indicate the size of the request (also see bit 8) |
31:8 | All read back as " 1 " because software has not yet programmed the upper bits with a start address for the block. Note that because bit 8 wa the first bit (above bit 1) to read back as written |
Register | Value | Use |
---|---|---|
Prefetchable Memory Base | 8001h | Upper 3 nibbles (800h) are used to pro- vide most significant 3 digits of the 32- bit Base Address for Prefetchable Mem- ory behind this switch. The lower 5 dig- its of the address are assumed to be 00000h. The least significant nibble of this register value (1h) indicates that a 64 bit address decoder is supported and that the Upper Base/Limit Registers are also used. |
Prefetchable Memory Limit | FFF1h | Upper 3 nibbles (FFFh) are used to pro- vide most significant 3 digits of the 32- bit Limit Address for Prefetchable Mem- ory behind this switch. The lower 5 dig- its of the address are assumed to be FFFFFh. The least significant nibble of this register value (1h) indicates that a 64 bit address decoder is supported and that the Upper Base/Limit Registers are also used. |
Prefetchable Memory Base Upper 32 Bits | 00000001h | Upper 32 bits of the 64-bit Base address for Prefetchable Memory behind this switch. |
Prefetchable Memory Limit Upper 32 Bits | 00000002h | Upper 32 bits of the 64-bit Limit address for Prefetchable Memory behind this switch. |
Register | Value | Use |
---|---|---|
Memory Base (Non-Prefetchable) | 1210h | Upper 3 nibbles (121h) are used to pro- vide most significant 3 digits of the 32- bit Base Address for Non-Prefetchable Memory behind this switch. The lower 5 digits of the address are assumed to be |
Memory Limit (Non-Prefetchable) | 1220h | Upper 3 nibbles (122h) are used to pro- vide most significant 3 digits of the 32- bit Limit Address for Prefetchable Mem- ory behind this switch. The lower 5 dig- its of the address are assumed to be FFFFFh. The least significant nibble of this register value (0h) is reserved and should be set = 0. |
Register | Value | Use |
---|---|---|
IO Base | Upper nibble (2h) specifies the most sig- nificant hex digit of the 32 bit IO Base address (the lower digits are 000h) The lower nibble (1h) indicates that the device supports 32 bit IO behind the bridge interface. This also means the device implements the Upper IO Base/ Limit register set, and those registers will be concatenated with Base/Limit. | |
IO Limit | Upper nibble (4h) specifies the most sig- nificant hex digit of the 32 bit IO Limit address (the lower digits are FFFh). The lower nibble (1h) indicates that the device supports 32 bit IO behind the bridge interface. This also means the device implements the Upper IO Base/ Limit register set, and those registers will be concatenated with Base/Limit. | |
IO Base Upper 16 Bits | 0000h | Upper 16 bits of the 32-bit Base address for IO behind this switch. |
IO Limit Upper 16 Bits | 0000h | Upper 16 bits of the 32-bit Limit address for IO behind this switch. |
Address Space | Transaction Types | Purpose |
---|---|---|
Memory | Read, Write | Transfer data to or from a location in the system memory map. The proto- col also supports a locked memory read transaction |
IO | Read, Write | Transfer data to or from a location in the system IO map. PCI Express IO address assignment to legacy devices. IO addressing is not permitted for Native PCI Express devices. |
Configuration | Read, Write | Transfer data to or from a location in the configuration space of a PCI Express device. As in PCI, configura tion is used to discover device capa- bilities, program plug-and-play features, and check status using the 4KB PCI Express configuration space. |
Message | Baseline, Vendor-specific | Provides in-band messaging and event reporting (without consuming memory or IO address resources). These are handled the same as posted write transactions. |
TLP Type | Acronym |
---|---|
Memory Read Request | (MRd) |
Memory Read Lock Request | (MRdLk) |
Memory Write Request | (MWr) |
IO Read Request | (IORd) |
IO Write Request | (IOWr) |
Config Type 0 Read Request | (CfgRd0) |
Config Type 0 Write Request | (CfgWr0) |
Config Type 1 Read Request | (CfgRd1) |
Config Type 1 Write Request | (CfgWr1) |
Message Request | (Msg) |
Message Request W/Data | (MsgD) |
Completion | (Cpl) |
Completion W/Data | (CplD) |
Completion-Locked | (CplLk) |
Completion W/Data | (CplDLk) |
TLP Component | Protocol Layer | Component Use |
---|---|---|
Header | Transaction Layer | 3DW or 4DW (12 or 16 bytes) in size. Format varies with type, but Header defines transaction parame- ters: - Transaction type - Intended recipient address, ID, etc. - Transfer size (if any), Byte Enables - Ordering attribute - Cache coherency attribute - Traffic Class |
Data | Transaction Layer | Optional field. 0-1024 DW Payload, which may be further qualified with Byte Enables to get byte address and byte transfer size resolution. |
Digest | Transaction Layer | Optional field. If present, always 1 DW in size. Used for end-to-end CRC (ECRC) and data poisoning. |
Header Field | Header Location | Field Use |
---|---|---|
Length [9:0] | Byte 3 Bit 7:0 Byte 2 Bit 1:0 | TLP data payload transfer size, in DW. Maximum transfer size is 10 bits, |
Attr (Attributes) | Byte 2 Bit 5:4 | Bit 5 = Relaxed ordering When set |
EP (Poisoned Data) | Byte 2 Bit 6 | If set |
TD (TLP Digest Field Present) | Byte 2 Bit 7 | If set |
Header Field | Header Location | Field Use |
---|---|---|
TC (Traffic Class) | Byte 1 Bit 6:4 | These three bits are used to encode the traffic class to be applied to this TLP and to the completion associ- ated with it (if any). 000b = Traffic Class 0 (Default) . . 111b = Traffic Class 7 TC 0 is the default class, and TC 1-7 are used in pro- viding differentiated services. See "Traffic Classes and Virtual Channels” on page 256 for additional information. |
Type[4:0] | Byte 0 Bit 4:0 | These 5 bits encode the transaction variant used with this TLP. The Type field is used with Fmt [1:0] field to specify transaction type, header size, and whether data payload is present. See below for additional information of Type/Fmt encoding for each transac- tion type. |
Fmt[1:0] Format | Byte 0 Bit 6:5 | These two bits encode information about header size and whether a data payload will be part of the TLP: 00b 3DW header, no data 01b 4DW header, no data 10b 3DW header, with data 11b 4DW header, with data See below for additional information of Type/Fmt encoding for each transaction type. |
First DW Byte Enables | Byte 7 Bit 3:0 | These four high-true bits map one-to-one to the bytes within the first double word of payload. Bit 3 = 1: Byte 3 in first DW is valid; otherwise not Bit 2 = 1: Byte 2 in first DW is valid; otherwise not Bit 1 = 1: Byte 1 in first DW is valid; otherwise not Bit |
Header Field | Header Location | Field Use |
---|---|---|
Last DW Byte Enables | Byte 7 Bit 7:4 | These four high-true bits map one-to-one to the bytes within the last double word of payload. Bit |
TLP | FMT[1:0] | TYPE [4:0] |
---|---|---|
Memory Read Request (MRd) | 00 = 3DW, no data 01 = 4DW, no data | 0 0000 |
Memory Read Lock Request (MRdLk) | 00 = 3DW, no data 01 = 4DW, no data | 0 0001 |
Memory Write Request (MWr) | 10 = 3DW, w/ data 11 = 4DW, w/ data | 0 0000 |
IO Read Request (IORd) | 00 = 3DW, no data | 00010 |
IO Write Request (IOWr) | 10 = 3DW, w/ data | 0 0010 |
Config Type 0 Read Request (CfgRd0) | 00 = 3DW, no data | 0 0100 |
Config Type 0 Write Request (CfgWr0) | 10 = 3DW, w/ data | 0 0100 |
Config Type 1 Read Request (CfgRd1) | 00 = 3DW, no data | 0 0101 |
Config Type 1 Write Request (CfgWr1) | 10 = 3DW, w/ data | 0 0101 |
TLP | FMT[1:0] | TYPE [4:0] |
---|---|---|
Message Request (Msg) | 01 = 4DW, no data | 1 0 rrr* (for rrr, see routing subfield) |
Message Request W/Data (MsgD) | 11 = 4DW, w/ data | 1 0rrr* (for rrr, see routing subfield) |
Completion (Cpl) | 00 = 3DW, no data | 0 1010 |
Completion W/Data (CplD) | 10 = 3DW, w/ data | 01010 |
Completion-Locked (CplLk) | 01011 | |
Completion W/Data (CplDLk) | 10 = 3DW, w/ data | 01011 |
Field Name | Header Byte/Bit | Function |
---|---|---|
Length 9:0 | Byte 3 Bit 7:0 Byte 2 Bit 1:0 | Indicates data payload size in DW. For IO requests, this field is always = 1. Byte Enables are used to qualify bytes within DW. |
Attr 1:0 (Attributes) | Byte 2 Bit 5:4 | Attribute 1: Relaxed Ordering Bit Attribute 0: No Snoop Bit Both of these bits are always |
EP | Byte 2 Bit 6 | If |
TD | Byte 2 Bit 7 | If |
TC 2:0 (Transfer Class) | Byte 2 Bit 6:4 | Indicates transfer class for the packet. TC is = 0 for all IO requests. |
Type 4:0 | Byte 0 Bit 4:0 | TLP packet type field. Always set to 00010b for IO requests |
Fmt 1:0 (Format) | Byte 0 Bit 6:5 | Packet Format. IO requests are: 00b = IO Read (3DW without data) 10b = IO Write (3DW with data) |
1st DW BE 3:0 (First DW Byte Enables) | Byte 7 Bit 3:0 | These high true bits map one-to-one to qualify bytes within the DW pay- load. For IO requests, any bit combi- nation is valid (including none) |
Last BE 3:0 (Last DW Byte Enables) | Byte 7 Bit 7:4 | These high true bits map one-to-one to qualify bytes within the last DW transferred. For IO requests, these bits must be 0000b. (Single DW) |
Field Name | Header Byte/Bit | Function |
---|---|---|
Tag 7:0 | Byte 6 Bit 7:0 | These bits are used to identify each outstanding request issued by the requester. As non-posted requests are sent, the next sequential tag is assigned. Default: only bits 4:0 are used (32 out- standing transactions at a time) If Extended Tag bit in PCI Express Control Register is set |
Requester ID 15:0 | Byte 5 Bit 7:0 Byte 4 Bit 7:0 | Identifies the requester so a comple- tion may be returned, etc. Byte 4, 7:0 = Bus Number Byte 5, 7:3 = Device Number Byte 5, 2:0 = Function Number |
Address 31:2 | Byte 8 Bit 7:2 Byte 7 Bit 7:0 Byte 6 Bit 7:0 Byte 5 Bit 7:0 | The upper 30 bits of the 32-bit start address for the IO transfer. Note that the lower two bits of the 32 bit address are reserved (00b), forcing the start address to be DW aligned. |
Field Name | Header Byte/Bit | Function |
---|---|---|
Length [9:0] | Byte 3 Bit 7:0 Byte 2 Bit 1:0 | TLP data payload transfer size, in DW. Maximum transfer size is 10 bits, |
Attr (Attributes) | Byte 2 Bit 5:4 | Bit 5 = Relaxed ordering. When set |
Field Name | Header Byte/Bit | Function |
---|---|---|
EP (Poisoned Data) | Byte 2 Bit 6 | If set |
TD (TLP Digest Field Present) | Byte 2 Bit 7 | If set = 1, the optional 1 DW TLP Digest field is included with this TLP. Some rules: Presence of the Digest field must be checked by all receivers (using this bit) - A TLP with TD = 1, but no Digest field is handled as a Malformed TLP. - If a device supports checking ECRC and TD=1, it must perform the ECRC check. - If a device does not support check- ing ECRC (optional) at the ulti- mate destination, the device must ignore the digest field. |
TC (Traffic Class) | Byte 1 Bit 6:4 | These three bits are used to encode the traffic class to be applied to this TLP and to the completion associated with it (if any). 000b = Traffic Class 0 (Default) . . 111b = Traffic Class 7 TC 0 is the default class, and TC 1-7 are used in providing differentiated services. See“Traffic Classes and Vir- tual Channels” on page 256 for addi- tional information. |
Field Name | Header Byte/Bit | Function |
---|---|---|
Type[4:0] | Byte 0 Bit 4:0 | TLP packet Type field: |
Fmt 1:0 (Format) | Byte 0 Bit 6:5 | Packet Format: 00b = Memory Read (3DW w/o data) 10b = Memory Write (3DW w/ data) 01b = Memory Read (4DW w/o data 11b = Memory Write (4DW w/ data) |
1st DW BE 3:0 (First DW Byte Enables) | Byte 7 Bit 3:0 | These high true bits map one-to-one to qualify bytes within the DW pay- load. |
Last BE 3:0 (Last DW Byte Enables) | Byte 7 Bit 7:4 | These high true bits map one-to-one to qualify bytes within the last DW transferred. |
Tag 7:0 | Byte 6 Bit 7:0 | These bits are used to identify each outstanding request issued by the requester. As non-posted requests are sent, the next sequential tag is assigned. Default: only bits 4:0 are used (32 out- standing transactions at a time) If Extended Tag bit in PCI Express Control Register is set |
Requester ID 15:0 | Byte 5 Bit 7:0 Byte 4 Bit 7:0 | Identifies the requester so a comple- tion may be returned, etc. Byte 4, 7:0 = Bus Number Byte 5, 7:3 = Device Number Byte 5, 2:0 = Function Number |
Field Name | Header Byte/Bit | Function |
---|---|---|
Address 31:2 | Byte 15 Bit 7:2 Byte 14 Bit 7:0 Byte 13 Bit 7:0 Byte 12 Bit 7:0 | The lower 32 bits of the 64 bit start address for the memory transfer. Note that the lower two bits of the 32 bit address are reserved (00b), forcing the start address to be DW aligned. |
Address 63:32 | Byte 11 Bit 7:2 Byte 10 Bit 7:0 Byte 9 Bit 7:0 Byte 8 Bit 7:0 | The upper 32 bits of the 64-bit start address for the memory transfer. |
Field Name | Header Byte/Bit | Function |
---|---|---|
Length 9:0 | Byte 3 Bit 7:0 Byte 2 Bit 1:0 | Indicates data payload size in DW. For configuration requests, this field is always = 1. Byte Enables are used to qualify bytes within DW (any combi- nation is legal) |
Attr 1:0 (Attributes) | Byte 2 Bit 5:4 | Attribute 1: Relaxed Ordering Bit Attribute 0: No Snoop Bit Both of these bits are always |
EP | Byte 2 Bit 6 | If |
TD | Byte 2 Bit 7 | If |
TC 2:0 (Transfer Class) | Byte 2 Bit 6:4 | Indicates transfer class for the packet. TC is = 0 for all Configuration requests. |
Type 4:0 | Byte 0 Bit 4:0 | TLP packet type field. Set to: |
Fmt 1:0 (Format) | Byte 0 Bit 6:5 | Packet Format. Always a 3DW header |
1st DW BE 3:0 (First DW Byte Enables) | Byte 7 Bit 3:0 | These high true bits map one-to-one to qualify bytes within the DW payload. For config requests, any bit combina- tion is valid (including none) |
Field Name | Header Byte/Bit | Function |
---|---|---|
Last BE 3:0 (Last DW Byte Enables) | Byte 7 Bit 7:4 | These high true bits map one-to-one to qualify bytes within the last DW trans- ferred. For config requests, these bits must be 0000b. (Single DW) |
Tag 7:0 | Byte 6 Bit 7:0 | These bits are used to identify each outstanding request issued by the requester. As non-posted requests are sent, the next sequential tag is assigned. Default: only bits 4:0 are used (32 out- standing transactions at a time) If Extended Tag bit in PCI Express Control Register is set |
Requester ID 15:0 | Byte 5 Bit 7:0 Byte 4 Bit 7:0 | Identifies the requester so a comple- tion may be returned, etc. Byte 4, 7:0 = Bus Number Byte 5, 7:3 = Device Number Byte 5, 2:0 = Function Number |
Register Number | Byte 11 Bit 7:2 | These bits provide the lower 6 bits of DW configuration space offset. The Register Number is used in conjunc- tion with Ext Register Number to pro- vide the full 10 bits of offset needed for the 1024 DW (4096 byte) PCI Express configuration space. |
Ext Register Number (Extended Register Number) | Byte 10 Bit 3:0 | These bits provide the upper 4 bits of DW configuration space offset. The Ext Register Number is used in conjunc- tion with Register Number to provide the full 10 bits of offset needed for the 1024 DW (4096 byte) PCI Express con- figuration space. For compatibility, this field can be set |
Field Name | Header Byte/Bit | Function |
---|---|---|
Completer ID 15:0 | Byte 9 Bit 7:0 Byte 8 Bit 7:0 | Identifies the completer being accessed with this configuration cycle. The Bus and Device numbers in this field are "captured" by the device on each con- figuration Type 0 write. Byte 8, 7:0 = Bus Number Byte 9, 7:3 = Device Number Byte 9, 2:0 = Function Number |
Field Name | Header Byte/Bit | Function |
---|---|---|
Length 9:0 | Byte 3 Bit 7:0 Byte 2 Bit 1:0 | Indicates data payload size in DW. For completions, this field reflects the size of the data payload associated with this completion. |
Attr 1:0 (Attributes) | Byte 2 Bit 5:4 | Attribute 1: Relaxed Ordering Bit Attribute 0: No Snoop Bit For a completion, both of these bits are set to same state as in the request. |
EP | Byte 2 Bit 6 | If |
TD | Byte 2 Bit 7 | If |
TC 2:0 (Transfer Class) | Byte 2 Bit 6:4 | Indicates transfer class for the packet. For a completion, TC is set to same value as in the request. |
Type 4:0 | Byte 0 Bit 4:0 | TLP packet type field. Always set to |
Fmt 1:0 (Format) | Byte 0 Bit 6:5 | Packet Format. Always a 3DW header |
Byte Count | Byte 7 Bit 7:0 Byte 6 Bit 3:0 | This is the remaining byte count until a read request is satisfied. Generally, it is derived from the original request Length field. See “Data Returned For Read Requests:" on page 188 for special cases caused by multiple completions. |
Field Name | Header Byte/Bit | Function |
---|---|---|
BCM (Byte Count Modified) | Byte 6 Bit 4 | Set |
CS 2:0 (Completion Status Code) | Byte 6 Bit 7:5 | These bits encoded by the completer to indicate success in fulfilling the request |
Completer ID 15:0 | Byte 5 Bit 7:0 Byte 4 Bit 7:0 | Identifies the completer. While not needed for routing a completion, this information may be useful if debugging bus traffic. Byte 4 7:0 = Completer Bus # Byte 5 7:3 = Completer Dev # Byte 5 2:0 = Completer Function # |
Lower Address 6:0 | Byte 11 Bit 6:0 | The lower 7 bits of address for the first enabled byte of data returned with a read. Calculated from request Length and Byte enables, it is used to determine next legal Read Completion Boundary. See “Calculating Lower Address Field” on page 187. |
Tag 7:0 | Byte 10 Bit 7:0 | These bits are set to reflect the Tag received with the request. The requester uses them to associate inbound comple- tion with an outstanding request. |
Field Name | Header Byte/Bit | Function |
---|---|---|
Requester ID 15:0 | Byte 9 Bit 7:0 Byte 8 Bit 7:0 | Copied from the request into this field to be used in routing the completion back to the original requester. Byte 4, 7:0 = Requester Bus # Byte 5, 7:3 = Requester Device # Byte 5, 2:0 = Requester Function # |
Field Name | Header Byte/Bit | Function |
---|---|---|
Length 9:0 | Byte 3 Bit 7:0 Byte 2 Bit 1:0 | Indicates data payload size in DW. For message requests, this field is always 0 (no data) or 1 (one DW of data) |
Attr 1:0 (Attributes) | Byte 2 Bit 5:4 | Attribute 1: Relaxed Ordering Bit Attribute 0: No Snoop Bit Both of these bits are always |
EP | Byte 2 Bit 6 | If |
TD | Byte 2 Bit 7 | If |
TC 2:0 (Transfer Class) | Byte 2 Bit 6:4 | Indicates transfer class for the packet. TC is = 0 for all message requests. |
Type 4:0 | Byte 0 Bit 4:0 | TLP packet type field. Set to: Bit 4:3: |
Fmt 1:0 (Format) | Byte 0 Bit 6:5 | Packet Format. Always a 4DW header |
Field Name | Header Byte/Bit | Function |
---|---|---|
Message Code 7:0 | Byte 7 Bit 7:0 | This field contains the code indicating the type of message being sent. 0000 0000b = Unlock Message |
Tag 7:0 | Byte 6 Bit 7:0 | As all message requests are posted, no tag is assigned to them. These bits should be |
Requester ID 15:0 | Byte 5 Bit 7:0 Byte 4 Bit 7:0 | Identifies the requester sending the message. Byte 4, 7:0 = Requester Bus # Byte 5, 7:3 = Requester Device # Byte 5, 2:0 = Requester Function # |
Address 31:2 | Byte 11 Bit 7:2 Byte 10 Bit 7:0 Byte 9 Bit 7:0 Byte 8 Bit 7:0 | If address routing was selected for the message (see Type 4:0 field above), then this field contains the lower part of the 64-bit starting address. Other- wise, this field is not used. |
Address 63:32 | Byte 15 Bit 7:2 Byte 14 Bit 7:0 Byte 13 Bit 7:0 Byte 12 Bit 7:0 | If address routing was selected for the message (see Type 4:0 field above), then this field contains the upper 32 bits of the 64 bit starting address. Oth- erwise, this field is not used. |
INTx Message | Message Code 7:0 | Routing 2:0 |
---|---|---|
Assert_INTA | 0010 0000b | 100b |
Assert_INTB | 0010 0001b | 100b |
Assert_INTC | 0010 0010b | 100b |
Assert_INTD | 0010 0011b | 100b |
Deassert_INTA | 0010 0100b | 100b |
Deassert_INTB | 0010 0101b | 100b |
Deassert_INTC | 0010 0110b | 100b |
Deassert_INTD | 0010 0111b | 100b |
Power Management Message | Message Code 7:0 | Routing 2:0 |
---|---|---|
PM_Active_State_Nak | 0001 0100b | 100b |
PM_PME | 0001 1000b | 000b |
PM_Turn_Off | 0001 1001b | 011b |
PME_TO_Ack | 0001 1011b | 101b |
Error Message | Message Code 7:0 | Routing 2:0 |
---|---|---|
ERR_COR | 0011 0000b | 000b |
ERR_NONFATAL | 0011 0001b | 000b |
ERR_FATAL | 0011 0011b | 000b |
Unlock Message | Message Code 7:0 | Routing 2:0 |
---|---|---|
Unlock | 0000 0000b | 011b |
Unlock Message | Message Code 7:0 | Routing 2:0 |
---|---|---|
Set_Slot_Power_Limit | 0101 0000b | 100b |
Error Message | Message Code 7:0 | Routing 2:0 |
---|---|---|
Attention_Indicator_On | 0100 0001b | 100b |
Attention_Indicator_Blink | 0100 0011b | 100b |
Attention_Indicator_Off | 0100 0000b | 100b |
Power_Indicator_On | 0100 0101b | 100b |
Power_Indicator_Blink | 0100 0111b | 100b |
Power_Indicator_Off | 0100 0100b | 100b |
Attention_Button_Pressed | 0100 1000b | 100b |
DLLP Type | Type Field Encoding | Purpose |
---|---|---|
Ack (TLP Acknowledge) | 0000 0000b | TLP transmission integrity |
Nak (TLP No Acknowledge) | 0001 0000b | TLP transmission integrity |
PM_Enter_L1 | 0010 0000b | Power Management |
PM_Enter_L23 | 0010 0001b | Power Management |
PM_Active_State_Request_L1 | 0010 0011b | Power Management |
PM_Request_Ack | 0010 0100b | Power Management |
Vendor Specific | 0011 0000b | Vendor |
InitFC1-P | 0100 0xxxb | TLP Flow Control |
DLLP Type | Type Field Encoding | Purpose | |
---|---|---|---|
InitFC1-NP | 0101 0xxxb | TLP Flow Control | |
InitFC1-Cpl | 0110 0xxxb | TLP Flow Control | |
InitFC2-P | 1100 0xxxb | TLP Flow Control | |
InitFC2-NP | 1101 0xxxb | TLP Flow Control | |
InitFC2-Cpl | 1110 0xxxb | TLP Flow Control | |
UpdateFC-P | 1000 0xxxb | TLP Flow Control | |
UpdateFC-NP | 1001 0xxxb | TLP Flow Control | |
UpdateFC-Cpl | 1010 0xxxb | TLP Flow Control | |
Reserved | Others | Reserved |
Field Name | Header Byte/Bit | DLLP Function |
---|---|---|
AckNak_Seq_Num [11:0] | Byte 3 Bit 7:0 Byte 2 Bit 3:0 | For an ACK DLLP: - For good TLPs received with Sequence Number = NEXT_RCV_SEQ count (count before incrementing), use NEXT_RCV_SEQ count - 1 (count after incrementing minus |
Type 7:0 | Byte 0 Bit 7:0 | Indicates the type of DLLP. For the Ack/ Nak DLLPs: - 00000000b = ACK DLLP. - 0001 0000b = NAK DLLP. |
16-bit CRC | Byte 5 Bit 7:0 Byte 4 Bit 7:0 | 16-bit CRC used to protect the contents of this DLLP. Calculation is made on Bytes 0- 3 of the ACK/NAK. |
Field Name | Header Byte/Bit | DLLP Function |
---|---|---|
Type 7:0 | Byte 0 Bit 7:0 | This field indicates type of DLLP. For the Power Man- agement DLLPs: 0010 0000b = PM_Enter_L1 0010 0001b = PM_Enter_L2 0010 0011b = PM_Active_State_Request 0010 0100b = PM_Request_Ack |
Link CRC | Byte 5 Bit 7:0 Byte 4 Bit 7:0 | 16 Bit CRC sent to protect the contents of this DLLP. Calculation is made on Bytes 0-3, regardless of whether fields are used. |
Field Name | Header Byte/Bit | DLLP Function |
---|---|---|
DataFC 11:0 | Byte 3 Bit 7:0 Byte 2 Bit 3:0 | This field contains the credits associated with data storage. Data credits are in units of 16 bytes per credit, and are applied to the flow control counter for the virtual channel indicated in |
HdrFC 11:0 | Byte 2 Bit 7:6 Byte 1 Bit 5:0 | This field contains the credits associated with header storage. Data credits are in units of 1 header (including digest) per credit, and are applied to the flow control counter for the virtual channel indicated in |
VC [2:0] | Byte 0 Bit 2:0 | This field indicates the virtual channel (VC 0-7) receiving the credits. |
Type 3:0 | Byte 0 Bit 7:4 | This field contains a code indicating the type of FC DLLP: 0100b = InitFC1-P (Posted Requests) 0101b = InitFC1-NP (Non-Posted Requests 0110b = InitFC1-Cpl (Completions) 0101b = InitFC2-P (Posted Requests) 1101b = InitFC2-NP (Non-Posted Requests) 1110b = InitFC2-Cpl |
Link CRC | Byte 5 Bit 7:0 Byte 4 Bit 7:0 | 16 Bit CRC sent to protect the contents of this DLLP. Calculation is made on Bytes 0-3, regardless of whether fields are used. |
Field Name | Header Byte/Bit | DLLP Function |
---|---|---|
Type 3:0 | Byte 0 Bit 7:4 | This field contains a code indicating the Vendor- specific DLLP: 0011 0000b = Vendor specific DLLP |
Link CRC | Byte 5 Bit 7:0 Byte 4 Bit 7:0 | 16 Bit CRC sent to protect the contents of this DLLP. Calculation is made on Bytes 0-3, regardless of whether fields are used. |
Field Name | Header Byte/Bit | DLLP Function |
---|---|---|
AckNak_Seq_Num [11:0] | Byte 3 Bit 7:0 Byte 2 Bit 3:0 | For an ACK DLLP: - For good TLPs received with Sequence Number |
Field Name | Header Byte/Bit | DLLP Function |
---|---|---|
Type 7:0 | Byte 0 Bit 7:0 | Indicates the type of DLLP. For the Ack/ Nak DLLPs: - 00000000b = ACK DLLP. - 00010000b = NAK DLLP. |
16-bit CRC | Byte 5 Bit 7:0 Byte 4 Bit 7:0 | 16-bit CRC used to protect the contents of this DLLP. Calculation is made on Bytes 0-3 of the ACK/NAK. |
Max_Payload Size | X1 Link | X2 Link | X4 Link | X8 Link | X12 Link | x16 Link | X32 Link |
---|---|---|---|---|---|---|---|
128 Bytes | 711 | 384 | 219 | 201 | 174 | 144 | 99 |
256 Bytes | 1248 | 651 | 354 | 321 | 270 | 216 | 135 |
512 Bytes | 1677 | 867 | 462 | 258 | 327 | 258 | 156 |
1024 Bytes | 3213 | 1635 | 846 | 450 | 582 | 450 | 252 |
2048 Bytes | 6285 | 3171 | 1614 | 834 | 1095 | 834 | 444 |
4096 Bytes | 12,429 | 6243 | 3150 | 1602 | 2118 | 1602 | 828 |
Max_Payload Size | X1 Link | X2 Link | X4 Link | X8 Link | X12 Link | x16 Link | X32 Link |
---|---|---|---|---|---|---|---|
128 Bytes | 237 (AF=1.4) | 128 | 73 (AF=1.4) | 67 (AF=2.5) | 58 (AF=3.0) | 48 (AF=3.0) | 33 (AF=3.0) |
256 Bytes | 416 (AF=1.4) | 217 (AF=1.4) | 118 (AF=1.4) | 107 (AF=2.5) | 90 (AF=3.0) | 72 (AF=3.0) | 45 (AF=3.0) |
512 Bytes | 559 | 289 | 154 (AF=1.0) | 86 (AF=1.0) | 109 (AF=2.0) | 86 (AF=2.0) | 52 (AF=2.0) |
1024 Bytes | 1071 | 545 | 282 (AF=1.0) | 150 (AF=1.0) | 194 (AF=2.0) | 150 (AF=2.0) | 84 (AF=2.0) |
2048 Bytes | 2095 (AF=1.0) | 1057 (AF=1.0) | 538 (AF=1.0) | 278 (AF=1.0) | 365 (AF=2.0) | 278 (AF=2.0) | 148 (AF=2.0) |
4096 Bytes | 4143 (AF=1.0) | 2081 | 1050 (AF=1.0) | 534 (AF=1.0) | 706 (AF=2.0) | 534 (AF=2.0) | 276 (AF=2.0) |
TC | VC Assignment | Comment |
---|---|---|
TC0 | VC0 | Default setting, used by all transactions. |
TC0-TC1 | VC0 | VCs are not required to be assigned consecutively. |
TC2-TC7 | VC7 | Multiple TCs can be assigned to a single VC. |
TC0 | VC0 | Several transaction types must use TC0/VC0. (1) TCs are not required to be assigned consecutively. Some TC/VC combinations can be used to support an isochronous connection. |
TC1 | VC1 | |
TC6 | VC6 | |
TC7 | VC7 | |
TC0 | VC0 | All TCs can be assigned to the corresponding VC numbers. |
TC1 | VC1 | |
TC2 | VC2 | |
TC3 | VC3 | |
TC4 | VC4 | |
TC5 | VC5 | |
TC6 | VC6 | |
TC7 | VC7 | |
TC0 | VC0 | The VC number that is assigned need not match |
TC1-TC4 | VC6 | one of the corresponding TC numbers. |
TC0 | VC0 | Illegal. A TC number can be assigned to only one |
TC1-TC2 | VC1 | VC number. This example shows TC2 mapped to |
TC2 | VC2 | both VC1 and VC2, which is not allowed. |
Figure 6-8: Strict Arbitration Priority | ||
---|---|---|
VC Resources | Priority Order | |
8th VC | VC7 | Highest Lowest |
7th VC | VC6 | |
6th VC | VC5 | |
5th VC | VC4 | |
4th VC | VC3 | |
3rd VC | VC2 | |
2nd VC | VC1 | |
1st VC | VC0 |
Credit Type | Minimum Advertisement |
---|---|
Posted Request Header (PH) | 1 unit. Credit Value |
Posted Request Data (PD) | Largest possible setting of the Max_Payload_Size; for the component divided by FC Unit Size (4DW). Example: If the largest Max_Payload_Size value sup- ported is 1024 bytes, the smallest permitted initial credi value would be 040h. |
Non-Posted Request HDR (NPH) | 1 unit. Credit Value |
Non-Posted Request Data (NPD) | 1 unit. Credit Value = 4DW. |
Completion HDR (CPLH) | 1 unit. Credit Value |
Completion Data (CPLD) | n units. Value of largest possible setting of Max_Payload_Size or size of largest Read Request (which ever is smaller) divided by FC Unit Size (4DW); for Root Complex with peer-to-peer support and Switches. Infinite units. Initial Credit Value |
These Transactions with RO=1 Can Pass | These Transactions |
---|---|
Memory Write Request | Memory Write Request |
Message Request | Memory Write Request |
Memory Write Request | Message Request |
Message Request | Message Request |
Read Completion | Memory Write Request |
Read Completion | Message Request |
Row Pass Column? | Posted Request | Non-Posted Request | Completion | |||
---|---|---|---|---|---|---|
Memory Write or MessageRequest (Col 2) | Read Request (Col 3) | I/O or Configuration Write Request (Col 4) | Read Completion (Col 5) | I/O or Configuration Write Completion (Col 6) | ||
palsodisanday | Memory Write or Message Request (Row A) | a) No b) Y/N | No | No | No | No |
PAISOD-UONisanbay | Read Request (Row B) | No | No | No | No | No |
I/O or Configuration WriteRequest (Row C) | No | No | No | No | No | |
uonejdwog | Read Completion (Row D) | a) No b) Y/N | No | No | No | No |
I/O or Configuration Write Completion (Row E) | No | No | No | No | No |
Row Pass Column? | Posted Request | Non-Posted Request | Completion | |||
---|---|---|---|---|---|---|
Memory Write or Message Request (Col 2) | Read Request (Col 3) | I/O or Configuration Write Request (Col 4) | Read Completion (Col 5) | I/O or Configuration Write Completion (Col 6) | ||
persod1.5 and 2.4 | Memory Write or Message Request (Row A) | a) No b) Y/N | Y/N | Y/N | Y/N | Y/N |
PAISOD-UONisenbey | Read Request (Row B) | No | Y/N | Y/N | Y/N | Y/N |
I/O or Configuration Write Request (Row C) | No | Y/N | Y/N | Y/N | Y/N | |
uonejdwog | Read Completion (Row D) | a) No b) Y/N | Y/N | Y/N | a) Y/N b) No | Y/N |
I/O or Configuration Write Completion (Row E) | No | Y/N | Y/N | Y/N | Y/N |
Row Pass Column? | Posted Request | Non-Posted Request | Completion | |||
---|---|---|---|---|---|---|
Memory Write or MessageRequest (Col 2) | Read Request (Col 3) | I/O or Configuration WriteRequest (Col 4) | Read Completion (Col 5) | I/O or Configuration Write Completion (Col 6) | ||
pelsodisanday | Memory Write or MessageRequest (Row A) | a) No b) Y/N | Yes | Yes | a) Y/N b) Yes | a) Y/N b) Yes |
PAISODisenbey | Read Request (Row B) | No | Y/N | Y/N | Y/N | Y/N |
I/O or Configuration WriteRequest (Row C) | No | Y/N | Y/N | Y/N | Y/N | |
uonejdwog | Read Completion (Row D) | a) No b) Y/N | Yes | Yes | a) Y/N b) No | Y/N |
I/O or Configuration Write Completion (Row E) | Y/N | Yes | Yes | Y/N | Y/N |
3116 158 | 0 | Dword 0 Dword 1 Dword 2 Dword 3 | |
Message Control Register | Pointer to Next ID | Capability ID = 05h | |
Least-Significant 32-bits of Message Address Register0 0 | |||
Most-Significant 32-bits of Message Address Register | |||
Message Data Register |
Bit(s) | Field Name | Description |
---|---|---|
15:8 | Reserved | Read-Only. Always zero. |
7 | 64-bit Address Capable | Read-Only. - |
Bit(s) | Field Name | Description |
---|---|---|
6:4 | Multiple Message Enable | Read/Write. After system software reads the Mul- tiple Message Capable field (see next row in this table) to determine how many messages are requested by the device, it programs a 3-bit value into this field indicating the actual number of mes- sages allocated to the device. The number allocated can be equal to or less than the number actually requested. The state of this field after reset is |
Value Number of Messages Requested 000b1 | ||
001b2 | ||
010b4 | ||
011b8 | ||
100b16 | ||
101b32 | ||
110bReserved | ||
111bReserved | ||
3:1 | Multiple Message Capable | Read-Only. System software reads this field to determine how many messages the device would like allocated to it. The requested number of mes- sages is a power of two, therefore a device that would like three messages must request that four messages be allocated to it. The field is encoded as follows: |
ValueNumber of Messages Requested | ||
000b1 | ||
001b2 | ||
010b4 | ||
011b8 | ||
100b16 | ||
101b32 | ||
110bReserved | ||
111bReserved | ||
Bit(s) | Field Name | Description |
---|---|---|
0 | MSI Enable | Read/Write. State after reset is 0 , indicating that the device’s MSI capability is disabled. - 0 = Function is disabled from using MSI. It must use INTX Messages to deliver interrupts (legacy endpoint or bridge). 1 = Function is enabled to use MSI to request service and is forbidden to use its interrupt pin. |
INTx Messages | Message Code |
---|---|
Assert_INTA | 0010 0000 |
Assert_INTB | 00100001 |
Assert_INTC | 0010 0010 |
Assert_INTD | 00100011 |
Deassert_INTA | 0010 0100 |
Deassert_INTB | 00100101 |
Deassert_INTC | 0010 0110 |
Deassert_INTD | 0010 0111 |
Message Code | Name | Description |
---|---|---|
30h | ERR_COR | used when a PCI Express device detects a cor- rectable error |
31h | ERR_NONFATAL | used when a device detects a non-fatal, uncor- rectable error |
33h | ERR_FATAL | used when a device detects a fatal, uncorrect- able error |
Status Code | Completion Status Definition |
---|---|
000b | Successful Completion (SC) |
001b | Unsupported Request (UR) |
010b | Configuration Request Retry Status (CRS) |
011b | Completer Abort (CA) |
100b - 111b | Reserved |
Name | Description |
---|---|
SERR# Enable | Setting this bit (1) enables the generation of the appropriate PCI Express error messages to the Root Complex. Error messages are sent by the device that has detected either a fatal or non-fatal erro |
Name | Description |
---|---|
Parity Error Response | This bit enables poisoned TLP reporting. This error is typically reported as an Unsupported Request (UR) and may also result in |
Error-Related Bit | Description |
---|---|
Detected Parity Error | Set by the interface that receives a Write Request or Read Completion transaction with the poisoned bit se This action pertains to the requestors, completers, and switches. (This bit is updated regardless of the state of the Parity Error enable bit.) |
Error-Related Bit | Description |
---|---|
Signalled System Error | This bit is set by a device that has detected an uncorrect- able error and reported it via an error message (requires SERR# enable bit to be set in the Command register to send error message). |
Received Master Abort | Set by a requester that receives a completion transaction with Unsupported Request (UR) in the completion sta- tus field. |
Received Target Abort | Set by a requester that receives a completion transaction with Completer Abort (CA) in the completion status field. |
Signalled Target Abort | Set by a completer when aborting a request that violates the device’s programming rules. |
Master Data Parity Error | Set by a transmitter that initiates or forwards a transac- tion with the poisoned bit set and to a receiver device that received a completion with the poisoned bit set. This bit is set by a device that either: - receives a completion packet that has been poisoned - transmits a write packet that has been poisoned |
Classification | Name of Error | Layer Detected |
---|---|---|
Correctable | Receiver Error | Physical |
Correctable | Bad TLP | Link |
Correctable | Bad DLLP | Link |
Correctable | Replay Time-out | Link |
Correctable | Replay Number Rollover | Link |
Uncorrectable - Non Fatal | Poisoned TLP Received | Transaction |
Uncorrectable - Non Fatal | ECRC Check Failed | Transaction |
Uncorrectable - Non Fatal | Unsupported Request | Transaction |
Uncorrectable - Non Fatal | Completion Time-out | Transaction |
Uncorrectable - Non Fatal | Completion Abort | Transaction |
Uncorrectable - Non Fatal | Unexpected Completion | Transaction |
Uncorrectable - Fatal | Training Error | Physical |
Uncorrectable - Fatal | DLL Protocol Error | Link |
Uncorrectable - Fatal | Receiver Overflow | Transaction |
Uncorrectable - Fatal | Flow Control Protocol Error | Transaction |
Uncorrectable - Fatal | Malformed TLP | Transaction |
Name of Error | Default Classification |
---|---|
Poisoned TLP Received | Uncorrectable - Non Fatal |
ECRC Check Failed | Uncorrectable - Non Fatal |
Unsupported Request | Uncorrectable - Non Fatal |
Completion Abort | Uncorrectable - Non Fatal |
Unexpected Completion | Uncorrectable - Non Fatal |
Malformed TLP | Uncorrectable - Fatal |
D or K Character | Hex Byte | Binary Bits HGF EDCBA | Byte Name | CRD – abcdeifghj | CRD + abcdei fghj | |
---|---|---|---|---|---|---|
Data (D) | 6A | 011 01010 | D10.3 | 0101011100 | 010101 0011 | |
Data (D) | 1B | 000 11011 | D27.0 | 1101100100 | 001001 | 1011 |
Data (D) | F7 | 111 10111 | D23.7 | 1110100001 | 000101 | 1110 |
Control (K) | F7 | 111 10111 | K23.7 | 1110101000 | 000101 0111 | |
Control (K) | BC | 101 11100 | K28.5 | 0011111010 | 110000 0101 |
D/K# | Hex Byte | Binary Bits HGF EDCBA | Byte Name | CRD – abcdei fghj | CRD + abcdei fghj |
---|---|---|---|---|---|
Control (K) | BC | 101 11100 | K28.5 | 001111 1010 | 110000 0101 |
Data (D) | 6A | 011 01010 | D10.3 | 010101 1100 | 010101 0011 |
CRD | Character | CRD | Character | CRD | Character | CRD | |
---|---|---|---|---|---|---|---|
Character to be transmitted | - | K28.5 (BCh) | K28.5 (BCh) | D10.3 (6Ah) | - | ||
Bit stream transmitted | Yields 001111 1010 CRD is + | Yields 110000 0101 CRD is | Yields 010101 1100 CRD is neutral |
Data Byte Name | Unencoded Bits EDCBA | Current RD – abcdei | Current RD + abcdei |
---|---|---|---|
D0 | 00000 | 100111 | 011000 |
D1 | 00001 | 011101 | 100010 |
D2 | 00010 | 101101 | 010010 |
D3 | 00011 | 110001 | 110001 |
D4 | 00100 | 110101 | 001010 |
D5 | 00101 | 101001 | 101001 |
Data Byte Name | Unencoded Bits EDCBA | Current RD – abcdei | Current RD + abcdei |
---|---|---|---|
D6 | 00110 | 011001 | 011001 |
D7 | 00111 | 111000 | 000111 |
D8 | 01000 | 111001 | 000110 |
D9 | 01001 | 100101 | 100101 |
D10 | 01010 | 010101 | 010101 |
D11 | 01011 | 110100 | 110100 |
D12 | 01100 | 001101 | 001101 |
D13 | 01101 | 101100 | 101100 |
D14 | 01110 | 011100 | 011100 |
D15 | 01111 | 010111 | 101000 |
D16 | 10000 | 011011 | 100100 |
D17 | 10001 | 100011 | 100011 |
D18 | 10010 | 010011 | 010011 |
D19 | 10011 | 110010 | 110010 |
D20 | 10100 | 001011 | 001011 |
D21 | 10101 | 101010 | 101010 |
D22 | 10110 | 011010 | 011010 |
D23 | 10111 | 111010 | 000101 |
D24 | 11000 | 110011 | 001100 |
D25 | 11001 | 100110 | 100110 |
D26 | 11010 | 010110 | 010110 |
D27 | 11011 | 110110 | 001001 |
D28 | 11100 | 001110 | 001110 |
Data Byte Name | Unencoded Bits EDCBA | Current RD – abcdei | Current RD + abcdei |
---|---|---|---|
D29 | 11101 | 101110 | 010001 |
D30 | 11110 | 011110 | 100001 |
D31 | 11111 | 101011 | 010100 |
Data Byte Name | Unencoded Bits EDCBA | Current RD – abcdei | Current RD + abcdei |
---|---|---|---|
K28 | 11100 | 001111 | 110000 |
K23 | 10111 | 111010 | 000101 |
K27 | 11011 | 110110 | 001001 |
K29 | 11101 | 101110 | 010001 |
K30 | 11110 | 011110 | 100001 |
Data Byte Name | Unencoded Bits HGF | Current RD - fghj | Current RD + fghj |
---|---|---|---|
000 | 1011 | 0100 | |
001 | 1001 | 1001 | |
010 | 0101 | 0101 | |
011 | 1100 | 0011 | |
100 | 1101 | 0010 | |
101 | 1010 | 1010 |
Data Byte Name | Unencoded Bits HGF | Current RD - fghj | Current RD + fghj |
---|---|---|---|
110 | 0110 | 0110 | |
111 | 1110/0111 | 0001/1000 |
Data Byte Name | Unencoded Bits HGF | Current RD - fghj | Current RD + fghj |
---|---|---|---|
000 | 1011 | 0100 | |
001 | 0110 | 1001 | |
010 | 1010 | 0101 | |
011 | 1100 | 0011 | |
100 | 1101 | 0010 | |
101 | 0101 | 1010 | |
110 | 1001 | 0110 | |
111 | 0111 | 1000 |
Character Name | 8b Name | 10b (CRD-) | 10b (CRD+) | Description |
---|---|---|---|---|
COM | K28.5 (BCh) | 001111 1010 | 110000 0101 | First character in any Ordered-Set. Detected by receiver and used to achieve symbol lock dur- ing TS1 / TS2 Ordered-Set reception at receiver |
PAD | K23.7 (F7h) | 111010 1000 | 000101 0111 | Packet Padding character |
SKP | K28.0 (1Ch) | 001111 0100 | 110000 1011 | Used in SKIP Ordered- Set. This Ordered-Set is used for Clock Tolerance Compensation |
STP | K27.7 (FBh) | 110110 1000 | 001001 0111 | Start of TLP character |
SDP | K28.2 (5Ch) | 001111 0101 | 110000 1010 | Start of DLLP character |
END | K29.7 (FDh) | 101110 1000 | 010001 0111 | End of Good Packet character |
EDB | K30.7 (FEh) | 011110 1000 | 100001 0111 | Character used to mark the end of a ‘nullified’ TLP. |
Character Name | 8b Name | 10b (CRD-) | 10b (CRD+) | Description |
---|---|---|---|---|
FTS | K28.1 (3Ch) | 001111 1001 | 110000 0110 | Used in FTS Ordered-Set. This Ordered-Set used to exit from L0s low power state to |
IDL | K28.3 (7Ch) | 001111 0011 | 110000 1100 | Used in Electrical Idle Ordered-Set. This Ordered-Set used to place Link in Electrical Idle state |
SKP | → |
SKP |