PCIe进阶之TL:Completion Rules TLP Prefix Rules
1 Completion Rules & TLP Prefix Rules
1.1 Completion Rules
所有的 Read、Non-Posted Write 和 AtomicOp Request 都需要返回一个 Completion。Completion 有两种类型:一种带数据负载的,一种不带数据负载的。以下各节定义了 Completion header 中每个字段的规则。
- Completion 使用 ID 路由,使用 3DW 头。
(1)routing ID 字段直接对应相应请求者的 Requester ID 。因此,对于 Completion,这些字段将统称为 Requester ID,而不是用于 ID 路由的不同字段。 - 除了所有 TLP 中包含的 Header 字段和 ID 路由字段之外,Completion 还包含以下其他字段。
(1)Completer ID[15:0] – Completer 的 ID。
(2)Completion Status[2:0],具体如下:
(3)BCM – Byte Count Modified:此位不得由 PCI Express Completer 设置,只能由 PCI-X completer 设置。
(4)Byte Count[11:0] – 请求的剩余字节数。
- 字节计数值指定为二进制数,其中 0000 0000 0001b 表示剩余 1 字节,1111 1111 1111b 表示剩余 4095 个字节,而 0000 0000 0000b 表示剩余 4096 个字节。
- 对于 Memory Read Completion,Byte Count[11:0]要遵循 Spec 2.3.1.1 的规则。
- 对于 AtomicOp Completion,Byte Count 的值等于相关的 AtomicOp 操作数的 size。
- 对于其他的 Completion,Byte Count 等于 4。
(5)Tag[9:0] – 结合 Requester ID 字段,一起组成 Transaction ID 。
(6)Lower Address[6:0] – Completion 起始字节的低字节地址。
- 对于 Memory Read Completion,此字段中的值是随 Completion 返回的数据的第一个有效字节的地址。
- 对于 AtomicOp Completion,Lower Address 字段值为保留值。
- 对于所有其他的 Completion 类型,此字段均设置为全 0。接收者可以选择检查是否违反此规则。
- Completer ID [15:0]是一个 16 位值,对于层次结构中的每个 PCI Express 的 FUnction 都是唯一的。
- Function 必须能捕获 Type 0 Configuration Write Request中的 Bus 和 Device Number,并把这