完成器请求描述符格式 - 1.3 简体中文

UltraScale+ 器件 Integrated Block for PCI Express 产品指南 (PG213)

Document ID
PG213
Release Date
2022-11-16
Version
1.3 简体中文

核将从链路接收到的每个请求 TLP 作为独立 AXI4-Stream 数据包通过完成器请求接口进行传输。每个数据包均以 1 个描述符开头,在描述符后可包含有效载荷数据。描述符长度始终为 16 字节,并在请求包的前 16 字节内发送。描述符始终在 512 位接口的第一拍内进行传输。下图演示了不同类型的请求的描述符格式。

当所传输的请求 TLP 为存储器读取/写入请求、I/O 读取/写入请求或原子操作 (Atomic Operation) 请求时,即适用下图所示格式。

图 1. 对应存储器、I/O 和原子操作请求的完成器请求描述符格式

下图格式仅适用于类型 0 或类型 1 的“Vendor-Defined Messages”(供应商定义的报文)。

图 2. 对应于供应商定义的报文的完成器请求描述符

下图所示格式适用于所有 ATS 报文,包括“Invalid Request”(无效请求)、“Invalid Completion”(无效完成)、“Page Request”(页面请求)、“PRG Response”(PRG 响应)。

图 3. 对应于 ATS 报文的完成器请求描述符

对于所有其它报文,描述符采用下图所示格式。

图 4. 对应于所有其它报文的完成器请求描述符格式
表 1. 完成器请求描述符字段
位索引 字段名称 描述
1:0 “Address Type”(地址类型)

该字段定义仅适用于存储器传输事务和原子操作。其中包含从请求的 TL 报头抽取的 AT 位。

  • 00:请求中的地址未经转换
  • 01:传输事务为转换请求
  • 10:请求中的地址为已转换的地址
  • 11:保留
63:2 “Address”(地址)

该字段适用于存储器、I/O 和原子操作请求。它可提供来自 TL 报头的地址。这是请求所引用的首个 Dword 的地址。必须使用来自 m_axis_cq_tuserFirst_BE 位来判定字节级别的地址。

当此传输事务指定 32 位地址时,此字段的位 [63:32] 为 0。

74:64 “Dword Count”(Dword 计数)

这 11 个位用于指示要读取或写入的块大小(以 Dword 为单位),对于报文,这些位指示报文有效载荷的大小。其范围为 0 - 256 个 Dword。对于 I/O 访问,Dword 计数始终为 1。

对于长度为 0 的存储器读取/写入请求,Dword 计数为 1,且 First_BE 位全部设置为 0。

78:75 “Request Type”(请求类型) 用于识别传输事务类型。表 2 中列出了传输事务类型及其编码。
95:80 “Requester ID”(请求器 ID)

与请求关联的 PCI 请求器 ID。在 RID 的传统解读中,这 16 个位分割为 8 位总线编号 [95:88]、5 位器件编号 [87:83] 和 3 位功能编号 [82:80]。启用 ARI 时,位 [95:88] 包含 8 位总线编号,而位 [87:80] 则提供功能编号。

当请求为非转发传输事务时,用户完成器应用必须存储该字段,并将其与完成数据一起重新提供给核。

103:96 “Tag”(标签) 与请求关联的 PCIe 标签。当请求为非转发传输事务时,用户完成器应用必须存储该字段,并将其与完成数据一起重新提供给核。针对存储器写入和报文,可忽略该字段。
111:104 “Target Function”(目标功能) 该字段定义仅适用于存储器、I/O 和原子操作请求。它可提供请求的目标功能编号(由 BAR 检查来判定)。使用 ARI 时,该字段的全部 8 位都有效。否则,仅限位 [106:104] 有效。
114:112 BAR ID

该字段定义仅适用于存储器、I/O 和原子操作请求。它可为请求中的地址提供匹配的 BAR 编号。

  • 000 = BAR 0(针对 VF 为 VF-BAR 0)
  • 001 = BAR 1(针对 VF 为 VF-BAR 1)
  • 010 = BAR 2(针对 VF 为 VF-BAR 2)
  • 011 = BAR 3(针对 VF 为 VF-BAR 3)
  • 100 = BAR 4(针对 VF 为 VF-BAR 4)
  • 101 = BAR 5(针对 VF 为 VF-BAR 5)
  • 110 = 扩展 ROM 访问
注释: 在根端口 (RP) 模式下,BAR ID 始终为 000。

对于 64 位传输事务,所提供的 BAR 编号为匹配的 BAR 对的下位地址(即,0、2 或 4)。

120:115 “BAR Aperture”(BAR 间隙)

该 6 位字段定义仅适用于存储器、I/O 和原子操作请求。它可提供与请求匹配的 BAR 的间隙设置。此信息适用于判定在存储器或 I/O 空间寻址过程中用户将使用的位。例如,值为 12 表示匹配的 BAR 的间隙为 4K,因此,用户可以忽略地址的位 [63:12]。

对于 VF BAR,此输出上提供的值基于 BAR 所覆盖的单一 VF 耗用的存储器空间。

123:121 “Transaction Class (TC)”(传输事务类) 与请求关联的 PCIe 传输事务类 (TC)。当请求为非转发传输事务时,用户完成器应用必须存储该字段,并将其与完成数据一起重新提供给核。
126:124 “Attributes”(属性)

这些位可提供与请求关联的 Attribute 位的设置。位 124 为“No Snoop”(无嗅探)位,位 125 则为“Relaxed Ordering”(宽松排序)位。位 126 为“ID-Based Ordering”(基于 ID 排序)位,只能针对存储器请求和报文进行设置。

当请求为非转发传输事务时,用户完成器应用必须存储该字段,并将其与完成数据一起重新提供给核。

114:112 “Message Routing”(报文路由) 该字段定义适用于所有报文。这些位可提供来自 TL 报头的 3 位路由 (Routing) 字段 r[2:0]。
15:0 “Destination ID”(目标 ID) 该字段仅适用于供应商定义的报文。当报文按 ID 进行路由(即,当“Message Routing”(报文路由)字段为 010 二进制值)时,该字段可提供报文的“Destination ID”(目标 ID)。
63:32 “Vendor-Defined Header”(供应商定义的报头) 该字段仅适用于供应商定义的报文。它包含从 TL 报头的 Dword 3 抽取的字节。
63:0 “ATS Header”(ATS 报头) 该字段仅适用于 ATS 报文。它包含从 TL 报头的 Dword 2 和 3 抽取的字节。
表 2. 传输事务类型
请求类型(二进制) 描述
0000 存储器读取请求
0001 存储器写入请求
0010 I/O 读取请求
0011 I/O 写入请求
0100 存储器提取和添加请求
0101 存储器无条件交换请求
0110 存储器比较和交换请求
0111 锁定读取请求(仅在传统器件中支持)
1000 类型 0 配置读取请求(仅限在请求器侧)
1001 类型 1 配置读取请求(仅限在请求器侧)
1010 类型 0 配置写入请求(仅限在请求器侧)
1011 类型 1 配置写入请求(仅限在请求器侧)
1100 任意报文(ATS 报文和供应商定义的报文除外)
1101 供应商定义的报文
1110 ATS 报文
1111 保留