【PCIe 5.0 - 7】PCIe 事务层详解3 -TLP Digest与路由寻址规则

TLP Digest规则

  对于任何 TLP,若TD 值为 1b 表示存在 TLP Digest字段,包括 TLP 末尾的end-to-end CRC (ECRC) 值。

  • 若TLP中TD值与观察到的大小(考虑data payload)不对应,那么 该TLP 是Malformed
    TLP,这是与Receiving Port相关的报告错误

  如果 TLP 的中间或最终 PCIe Receiver不支持 ECRC 校验,则Receiver应该忽略 TLP Digest。

路由寻址规则

  TLP 路由有三种主要机制:Address、ID 和implicit。implicit路由仅用于Message Requests
Address路由与Memory和I/O Requests一起使用。

基于Address的路由规则

  有两种地址格式,使用 4 DW header的 64 位格式(见图1)和使用 3 DW header的 32 位格式(见图2)。
64-bit Address Routing

图1 64位地址路由


32-bit Address Routing

图2 32位地址路由


  对于Memory Read、Memory Write和AtomicOp Requests,Address Type (AT) 字段的编码如表 1 所示。 对于所有其他请求,除非另有明确说明,否则 AT 字段是Reserved。 LN Reads和 LN Writes 有特殊要求,这个在后面文章中会有描述。

表1 Address Type (AT) Field Encodings
AT[1:0]助记符含义
00Untranslated表示TA 可以将地址视为虚拟地址或物理地址。
01Translation RequestTA将返回在请求的Address字段中的地址进行转换作为read completion, 此值仅对显式Translation Request有意义。 如果 TA 在Memory Read以外的Memory Request中收到 AT为 01b 的 TLP,则 TA 将发出Unsupported Request (UR) 信号。
10Translated事务中的地址已由 ATC 转换。 如果允许与 SourceID 关联的Function向系统内存提供物理地址,则 TA 可能不会转换该地址。 如果Function不允许展现物理地址,则 TA 可以将其视为 UR。
11Reserved如果 TA 收到一个Memory Request TLP,其中 AT 字段设置为 11b,则 TA 将发出Unsupported Request (UR) 信号。

  如果设置了 TH,则 PH 字段的编码如表 2 所示。如果 TH被清为0,则 PH 字段为 Reserved。

表2 Processing Hint Encoding
PH[1:0]Processing HintDescription
00双向数据结构表示主机和设备对数据的频繁读取和/或写入访问
01Requester表示设备对数据的频繁读取和/或写入访问
10Target表示主机对数据的频繁读取和/或写入访问
11Target with Priority表示主机频繁读取和/或写入访问,并表示访问数据的高时间局部性,即最近访问的地址在不久的将来很可能再次被访问的特性。

  表3显示了到 TLP header的地址映射。

表3 Address Field Mapping
Address Bits32-bit Addressing64-bit Addressing
63:56不适用Bits 7:0 of Byte 8
55:48不适用Bits 7:0 of Byte 9
47:40不适用Bits 7:0 of Byte 10
39:32不适用Bits 7:0 of Byte 11
31:24Bits 7:0 of Byte 8Bits 7:0 of Byte 12
23:16Bits 7:0 of Byte 9Bits 7:0 of Byte 13
15:8Bits 7:0 of Byte 10Bits 7:0 of Byte 14
7:2Bits 7:2 of Byte 11Bits 7:2 of Byte 15

Memory Read、Memory Write和 AtomicOp Requests可以使用任一格式。

  • 对于 4 GB 以下的地址,Requesters 必须使用 32 位格式。 如果接收到地址低于 4 GB(即地址的高 32 位全为 0)的
    64 位格式请求,则Receiver 的行为未指定。

I/O Read Requests和I/O Write Requests使用32 位格式。

所有代理必须解码header中的所有地址位——不允许地址别名。为了正确的软件操作,即使在设计者知道少于 64 位地址在系统中可能实际有意义,也需要完整地址解码。

基于ID的路由规则

  • ID 路由与Configuration Requests、ID Routed Messages和Completions一起使用。
    该规范定义了几个 ID 路由的Messages(表 F-1)。 允许其他规范来定义附加的 ID Routed Messages。

    表F-1 Message Code Usage

    Message Code Usage

  • ID 路由使用Bus、Device、Function Number(如适用)来指定 TLP 的目的地:

  1. 对于non-ARI Routing IDs,Bus、Device和Function Number(3 位)到 TLP header的映射如表4、图3 和图5 所示。
表4 non-ARI ID Routing的Header 字段位置
字段Header位置
Bus Number[7:0]Bits 7:0 of Byte 8
Device Number[4:0]Bits 7:3 of Byte 9
Function Number[2:0]Bits 2:0 of Byte 9

Non-ARI ID Routing with 4 DW Header

图3 4DW Header的non-ARI ID路由


Non-ARI ID Routing with 3 DW Header

图5 3DW Header的non-ARI ID路由


  1. 对于 ARI Routing IDs,Bus和Function Number(8 位)到 TLP header的映射如表5、图4 和图6
    所示。
  • 指定了两种 ID 路由格式,一种用于 4 DW header(见图3 和图4),另一种用于 3 DW header(见图6 和图4)。
表5 ARI ID Routing的Header 字段位置
字段Header位置
Bus Number[7:0]Bits 7:0 of Byte 8
Function Number[7:0]Bits 7:0 of Byte 9

ARI ID Routing with 4 DW Header

图4 4DW Header的ARI ID路由


ARI ID Routing with 3 DW Header

图6 3DW Header的ARI ID路由


两种格式的header字段位置相同(见下图)。

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值