PCIE协议-2-事务层规范-MEM/IO/CFG request rules

发布于:2024-05-10 ⋅ 阅读:(28) ⋅ 点赞:(0)

2.2.7 内存、I/O和配置请求规则

以下规则适用于所有内存、I/O和配置请求。每种类型的请求还有特定的额外规则。

  • 所有内存、I/O和配置请求除了常见的头标字段外,还包括以下字段:
  • requester ID[15:0]和Tag[9:0],形成事务ID。
  • Last DW BE[3:0] and First DW BE[3:0]。对于设置了TH位的内存读取请求和原子操作请求,头标中Last DW BE[3:0] and First DW BE[3:0]的字节位置被重新用于携带ST[7.0]字段。对于设置了TH位的原子操作请求,DW字节使能位的值被认为是保留的。对于清除了TH位的原子操作请求,DW字节使能位是保留的。

对于内存请求,以下规则适用:

  • 内存请求通过地址进行路由,使用64位或32位寻址(见图2-17和图2-18)。

  • 对于内存读取请求,长度不得超过Max_Read_Request_Size指定的值。

  • 对于原子操作请求,表2-12中指定了架构操作数大小及其关联的长度字段值。如果完成器支持原子操作,以下规则适用:完成器必须检查长度字段值,如果该值与架构值不匹配,完成器必须将TLP视为畸形TLP。否则,如果该值与完成器支持的操作数大小不匹配,完成器必须将TLP视为不支持的请求(UR)。这是一个与接收端口相关联的报告错误。

  • 一个FetchAdd请求包含一个操作数,即"add"值。

  • 一个Swap请求包含一个操作数,即"swap"值”。

  • 一个CAS请求包含两个操作数。数据区域中的第一个是“compare”值,第二个是“swap”值。

  • 对于原子操作请求,地址必须与操作数大小自然对齐。完成器必须检查此规则的违规情况,如果TLP违反此规则,则该TLP是一个畸形TLP。这是一个与接收端口相关联的报告错误。

  • 请求不能指定会导致内存空间访问跨越4-KB边界的地址/长度组合。

  1. 接收器可以可选地检查此规则的违规情况。如果实现此检查的接收器确定TLP违反此规则,则该TLP是一个畸形TLP。

    • 如果进行了检查,这是与接收端口相关联的报告错误。
  2. 对于原子操作请求,完成器必须强制检查地址的自然对齐(见上文),已经保证了访问不会跨越4-KB边界,因此不需要单独的4-KB边界检查。
  3. 如果对原子操作CAS请求执行了4-KB边界检查,此检查必须理解TLP长度值是基于两个操作数的大小,而对内存空间的访问是基于一个操作数的大小。

对于I/O(输入/输出)请求,适用以下规则:

  • I/O请求通过地址路由,使用32位寻址(见图2-19)。
  • I/O请求有以下限制:
    • TC[2:0] 必须是 000b(二进制)
    • LN 对于I/O请求不适用,该位是保留的
    • TH 对于I/O请求不适用,该位是保留的
    • Attr[2] 是保留的
    • Attr[1:0] 必须是 00b(二进制)
    • AT[1:0] 必须是 00b(二进制)。接收方不要求或鼓励检查这一点。
    • Length[9:0] 必须是 00 0000 0001b(二进制)
    • Last DW BE[3.0] 必须是 0000b(二进制)

接收方可以选择性检查这些规则的违规情况(但不得检查保留位)。这些检查是独立可选的。如果执行这些检查的接收方确定事务层包(TLP)违反了这些规则,该TLP就是畸形TLP。

  • 如果进行了检查,这是一个与接收端口相关联的报告错误。

对于配置请求,适用以下规则:

  • 配置请求通过ID路由,并使用3个DW的头标。
  • 除了所有内存、I/O和配置请求中包含的头标字段以及ID路由字段,配置请求还包含以下额外字段(见图2-20):
    • register number[5:0]
    • extended register number[3:0]
  • 配置请求有以下限制:
    • TC[2:0] 必须是 000b(二进制)
    • LN 对于配置请求不适用,该位是保留的
    • TH 对于配置请求不适用,该位是保留的
    • Attr[2] 是保留的
    • Attr[1:0] 必须是 00b(二进制)
    • AT[1:0] 必须是 00b(二进制)。接收方不需要或鼓励检查这一点。
    • Length[9:0] 必须是 00 0000 0001b(二进制)
    • Last DW BE[3:0] 必须是 0000b(二进制)
  • 接收方可以选择性检查这些规则的违规情况(但不得检查保留位)。这些检查是独立可选的。如果执行这些检查的接收方确定事务层包(TLP)违反了这些规则,该TLP就是畸形TLP。
  • 如果进行了检查,这是一个与接收端口相关联的报告错误。

 MSI/MSI-X 机制使用内存写请求来表示中断消息。用于 MSI/MSI-X 事务的请求格式与上面定义的内存写请求格式相同,并且就排序、流量控制和数据完整性而言,MSI/MSIX 请求与内存写入无法区分。

2.2.7.1 TPH 规则

为 TPH 指定了两种格式。所有提供 TPH 的请求都必须使用基准 TPH 格式(见图 2-22 和图 2-23)。带有可选 TPH TLP 前缀的格式扩展了 TPH 字段(见图 2-21),以提供 Steering Tag (ST) 字段的额外位。

可选的 TPH TLP 前缀用于扩展 TPH 字段。 通过decode byte0 来确定是否存在 TPH TLP 前缀。

对于目标为内存空间的请求,TH 位为 1b 表示 TLP 头标和可选的 TPH TLP 前缀(如果存在)中存在 TPH。

  • 对于提供 TPH 的请求,必须设置 TH 位。
  • 针对具有 TPH TLP 前缀的请求,必须设置 TH 位。 
  • 当 TH 位清零时,PH(处理提示)字段是保留的。
  • 对于所有其他请求,TH 位和 PH 字段都不适用,并且是保留的。
  • 处理提示(PH)字段的映射在图 2-22、图 2-23 和表 2-14 中显示。

PH[1:0] 字段提供了有关数据访问模式的信息,并如表 2-15 中所述所定义。 

转向标签(ST)字段映射到 TLP 头标,如图 2-24、图 2-25 和表 2-16 所示。 

  • ST[7:0] 字段携带转向标签值
    • 所有位都是零的值表示没有转向标签偏好
    • 提供了总共255个唯一的转向标签值

对于不支持 TPH(Translation Process Hierarchy)完成或路由能力的功能,如果接收到设置了 TH 位的事务,则必须忽略 TH 位,并以与未设置 TH 位的相同事务类型的请求相同的方式处理该请求。

 

 

 


网站公告

今日签到

点亮在社区的每一天
去签到