【PCIe 5.0 - 10】Memory, I/O, and Configuration Request 规则

news2025/2/27 0:59:20

下列规则适用于所有 Memory, I/O, Configuration Requests,以下是针对各类请求的附加规则。

  • 除通用 header 字段外,所有 Memory, I/O, 和 Configuration Requests 还包括以下字段:
    • Requester ID[15:0] 和 Tag[9:0],组成 Transaction ID。
    • Last DW BE[[3:0] 和 First DW BE[3:0]。对于 TH 位为1的 Memory Read Requests 和 AtomicOp Requests,报头中Last DW BE[3:0] 和 First DW BE[3:0] 字段的字节位置将被调整为 ST[7:0] 字段。对于 TH 位为0的Memory Read Requests,参考 【PCIe 5.0 - 8】PCIe 事务层详解4 - First/Last DW Byte Enables规则 中的 First/Last DW Byte Enables规则。对于 TH 位为1的 AtomicOp Requests,DW BE 字段的值隐含为保留。对于 TH 位为0的 AtomicOp Requests,DW BE 字段为保留。

Memory Requests 适用以下规则:

  • Memory Requests 按地址路由,使用 64 位或 32 位寻址方式(见图1 和图2)。
  • 对于 Memory Read Requests,长度不得超过 Max_Read_Request_Size 指定的值。
  • 对于 AtomicOp Requests,表 1 规定了架构操作数大小及其相关的长度字段值。如果完成器支持 AtomicOps,则适用以下规则。Completer 必须检查 Length 字段值。如果该值与架构值不匹配,则完成器必须将 TLP 作为畸形 TLP 处理。否则,如果该值与 Completer 支持的操作数大小不匹配,Completer 必须将 TLP 作为不支持的请求 (Unsupported Request,UR) 处理。这是一个与接收端口相关的报告错误。
表 1 AtomicOp Requests 的 Length 字段值
AtomicOp Request32 Bits64 Bits128 Bits
FetchAdd, Swap1 DW2 DWN/A
CAS2 DW4 DW8 DW
  • FetchAdd Request 包含一个操作数,即 “add” 值。
  • Swap Request 包含一个操作数,即 “swap” 值。
  • 一个CAS Request 包含两个操作数。数据区的第一个操作数是 “compare” 值,第二个操作数是 “swap” 值。
  • 对于 AtomicOp Request,地址必须与操作数大小自然对齐。Completer 必须检查是否违反了这一规则。如果 TLP 违反了这一规则,则该 TLP 为畸形 TLP(Malformed TLP)。这是一个与接收端口相关的报告错误。
  • 请求不得指定导致内存空间访问跨越 4-KB 边界的 Address/Length 组合。
    • Receivers 可选择检查是否违反此规则。如果执行此检查的 Receivers 确定 TLP 违反了此规则,则该 TLP 为畸形 TLP。
      • 如果检查到,这将是一个与接收端口相关的报告错误。
      • 对于 AtomicOp Requests,对地址自然对齐的强制 Completer 检查(见上文)已经保证了访问不会跨越 4KB 边界,因此不需要单独的 4KB 边界检查。
    • 如果对 AtomicOp CAS Requests 执行 4-KB 边界检查,该检查必须理解 TLP Length 值是基于两个操作数的大小,而对内存空间的访问是基于一个操作数的大小。

在这里插入图片描述

图 1 64 位内存寻址的 Request Header 格式



在这里插入图片描述

图 2 32 位内存寻址的 Request Header 格式

实施说明
64位地址的生成
强烈建议 PCI Express 端点能够生成全部 64 位地址范围。但是,如果 PCI Express 端点支持的地址范围较小,无法达到特定平台环境所需的全部地址范围,则相应的设备驱动程序必须确保所有内存事务目标 buffers 都在端点支持的地址范围内。确保这一点的具体方法取决于平台和操作系统,超出了本规范的范围。

对于 I/O Requests,适用以下规则:

  • I/O Requests 按地址路由,使用 32 位寻址法(见图3)
  • I/O Requests 有以下限制:
    • TC[2:0] 必须为 000b
    • LN 不适用于 I/O Request,该位保留
    • Attr[2] 保留
    • Attr[1:0]必须为 00b
    • AT[1:0] 必须为 00b。不要求也不鼓励 Receivers 检查这一点。
    • Length[9:0] 必须为 00 0000 0001b
    • Last DW BE[3:0] 必须为 0000b

Receivers 可选择检查是否违反这些规则(但不得检查保留位,Reserved bit)。这些检查都是独立可选的(见 Optional Error Checking)。如果执行这些检查的 Receiver 确定 TLP 违反了这些规则,则该 TLP 为畸形 TLP(Malformed TLP)。

  • 如果检查到,这是与接收端口相关的报告错误(见Error Signaling and Logging)。

图3 Request Header Format for I/O Transactions

对于 Configuration Requests,适用以下规则:

  • 除了所有 Memory, I/O 和 Configuration Requests 中包含的报头字段和 ID 路由字段外,Configuration Requests 还包含以下附加字段(参见图 4)。

    • Register Number[5:0]
    • Extended Register Number[3:0]
  • Configuration Requests 有以下限制:

    • TC[2:0] 必须为 000b
    • LN 不适用于 Configuration Requests,该位保留。
    • TH 不适用于 Configuration Requests,该位保留。
    • Attr[2] 保留
    • Attr[1:0] 必须为 00b
    • AT[1:0] 必须为 00b。不要求也不鼓励 Receivers 检查这一点。
    • Length[9:0] 必须为 0000 0001b
    • Last DW BE[3:0] 必须为 0000b

Receivers 可选择检查是否违反这些规则(但不得检查保留位,Reserved bit)。这些检查都是独立可选的(见 Optional Error Checking)。如果执行这些检查的 Receiver 确定 TLP 违反了这些规则,则该 TLP 为畸形 TLP(Malformed TLP)。

  • 如果检查到,这是与接收端口相关的报告错误(见Error Signaling and Logging)。

在这里插入图片描述

图 4 Request Header Format for Configuration Transactions

MSI/MSI-X 机制使用 Memory Write Requests 来表示中断消息(参见 MSI and MSI-X Operation)。MSI/MSI-X 事务使用的请求格式与上文定义的 Memory Write Request 格式相同,在排序、流量控制和数据完整性方面,MSI/MSI-X 请求与内存写入没有区别。

TPH 规则

  • 为 TPH 指定了两种格式。所有提供 TPH 的请求都必须使用 Baseline TPH 格式(见图 6 和图 7)。带有可选的 TPH TLP Prefix 的格式扩展了 TPH 字段(见图 5),为 Steering Tag (ST) 字段提供额外位。

在这里插入图片描述

图 5 TPH TLP Prefix
  • 可选的 TPH TLP Prefix 用于扩展 TPH 字段。
    • TPH TLP Prefix 通过解码 byte 0 来确定是否存在。
表 2 TPH TLP Prefix Bit Mapping
FieldsTPH TLP Prefix
ST(15:8)Bits 7:0 of byte 1
ReservedBits 7:0 of byte 2
ReservedBits 7:0 of byte 3
  • 对于以 Memory Space 为目标的 Requests, TH 位为 1b 表示 TLP header 和 可选 TPH TLP Prefix(如有)中存在 TPH。
    • 对于提供 TPH 的请求,TH 位必须设置。
    • 带有 TPH TLP Prefix 的请求必须设置 TH 位。
    • 当 TH 位为0时,PH 字段保留。
    • TH 位和 PH 字段不适用于所有其他 Requests,且为保留字段。

Processing Hints (PH) 映射如图6、图7 和 表3 所示:

在这里插入图片描述

图6 Location of PH[1:0] in a 4 DW Request Header



在这里插入图片描述

图7 Location of PH[1:0] in a 3 DW Request Header



表3 PH[1:0] 在 TLP Header 的位置
PH32-bit Addressing64-bit Addressing
1:0Byte 11 的 bits 1:0Byte 15 的 bits 1:0

PH[1:0] 字段提供有关数据访问模式的信息,其定义如表4 所示:

表4 Processing Hint Encoding
PH1:0Processing Hint描述
00Bi-directional data structure表示 Host 和 Device 频繁读取和/或写入数据
01Requester表示 Device 频繁读取和/或写入数据
10Target表示 Host 频繁读取和/或写入数据
11Target with Priority表示 Host 频繁读取和/或写入,并表明所访问数据具有高时间局部性

Steering Tag (ST) 字段映射到 TLP header,如图8 、图9 和表 5 所示。

在这里插入图片描述

图8 Location of ST[7:0] in the Memory Write Request Header



在这里插入图片描述

图9 Location of ST[7:0] in Memory Read and AtomicOp Request Headers



表3 ST[7:0] 在 TLP Header 的位置
ST BitsMemory Write RequestMemory Read Request or AtomicOp Request
7:0Byte 6 的 Bits 7:0Byte 7 的 Bits 7:0
  • ST[7:0] 字段

    • 全部为 0 的值表示无 Steering Tag 首选项
    • 总共提供 255 个唯一的 Steering Tag 值
  • 不支持 TPH Completer 或 Routing capability 的 Function,在收到设置了 TH 位的事务时,必须忽略 TH 位,并以与未设置 TH 位的相同事务类型的请求相同的方式处理 Request。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1158544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Easy-Laser激光测平仪维修易激光对中仪E920

Easy-Laser激光对中仪常见故障:触摸屏损坏(屏碎,不显示,黑屏,蓝屏,无背光等),对中仪电路板损坏,对中仪接收装置电路板,对中仪发射控制装置电路板等均可维修。…

筋膜炎能自愈吗

筋膜炎的临床表现: 在发病前,通常有过度劳累的历史,剧烈运动、创伤、寒冷和上呼吸道感染也可能导致这种疾病。肢体皮肤肿胀,或皮肤红斑和关节活动有限。侵犯部位以下的下肢,特别是小腿,其次是前臂。损伤的…

高效率、低待机功耗TUHS15F12、TUHS25F05、TUHS25F12、TUHS25F24、TUHS5F05小型板载AC/DC转换器

简介 TUHS AC-DC转换器具有高效率、低待机功耗以及内置过流和过压保护电路。这些小型板安装AC-DC转换器在保持时间和预期寿命方面具有设计灵活性。该系列具有3W至26.4W的额定输出和AC85至264V、DC120至370V的通用输入电压。工作温度范围为-40C至85C。 引脚配置 规格参数 1、…

数据结构(四)--队列及面试常考的算法

一、队列介绍 1、定义 与栈相似,队列是另一种顺序存储元素的线性数据结构。栈与队列的最大差别在于栈是LIFO(后进先出),而队列是FIFO,即先进先出。 2、优缺点及使用场景 优点:先进先出(FIFO&…

如何较为准确的测试自己的网速?

相对靠谱公正的20个测速网站(或APP或软件)大全(不断更新中) 一、电信宽带网页测速 网址:https://10000.gd.cn/#/speed 预览: 二、测速网 网址:测速网 - 专业测网速, 网速测试, 宽带提速, 游戏测速, 直播测速, 5G测…

Window下coturn服务器的搭建

Window下搭建coturn服务器: 准备材料: 1、安装Cygwin,地址:https://cygwin.com/install.html 由于Window无法直接部署coturn,因此需要下载安装Cygwin在Window上部署Linux虚拟环境。 在安装的时候需要安装几下packe…

Aigtek的ATA-7050高压放大器对比进口品牌TREK的609E-6

一、公司介绍 中国安泰:西安安泰电子科技有限公司是国内专业从事测量仪器研发生产和销售的高科技企业,公司依托西安交大、西北工业大学组建的科研团队,专注功率放大器、功率信号源等产品为核心的相关行业测试解决方案的研究,拥有国…

taro全局配置页面路由和tabBar页面跳转

有能力可以看官方文档:Taro 文档 页面路由配置,配置在app.config.ts里面的pages里: window用于设置小程序的状态栏、导航条、标题、窗口背景色,其配置项如下: tabBar配置:如果小程序是一个多 tab 应用&…

Node和Python遍历文件夹自动注入代码

需求是从文件夹中遍历检索多层级文件夹,找到其中文件取到上面namespace 后面的名称,在下面代码中自动注入动态代码: static displayName = "Test";下面使用node和python两种代码实现一下,方便对照学习 node代码 const fs = require(fs); const path = requir…

【算法|滑动窗口No.4】leetcode 485.最大连续 1 的个数 487.最大连续 1 的个数 II 1004. 最大连续1的个数 III

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…

配置开启swap分区自定义大小

当前服务器swap分区是关闭状态,因服务需求需要开启swap分区 在 /data 目录下创建一个名为 swapfile 的文件,并将其大小设置为 8GB 注意这个操作占用的是/data目录的磁盘空间,要确保磁盘剩余空间大于设置的内存大小并且不影响磁盘空间的正常使…

10kb的WordPress外链页面安全跳转插件

老白博客我参照csdn和腾讯云的外链跳转页面,写了一个WordPress外链安全跳转插件:给网站所有第三方链接添加nofollow标签和重定向功能,提高网站安全性。插件包括两个样式,由于涉及到的css不太一样,所以分别写了两个版本…

测试从外包到自研再到大厂,这5年鬼知道我是怎么过来的

18岁那年我背井离乡来到从来没有来过的郑州。在一所普通的二本院校里学网络工程。 很明显,在大学以前只会用电脑开关机打LOL的我恍然间只觉得自己来到了人间天堂,没有人管,也没有任何烦恼无忧无虑的过了三年大学生涯。 直到秋招的开始&…

家政保洁团队服务预约小程序的效果如何

家政保洁可以是大公司也可以是小团队,但无论什么规格,其市场需求都是稳中有增,随着人们生活品质提升,其对居住环境/办公环境等都有一定要求,这意味着家政团队可以拓展同城乃至外地多个领域的生意。 但线下信息单一&am…

Python的web自动化学习(六)Selenium第一个网页操作

引言: 前面我们系统的介绍了一个各种selenium的工作原理、环境配置与准备、各种元素定位的方法,现在让我们一起来实践吧,以哔哩哔哩登录为例子说明: Selenium自动登录B站(通过QQ登录) 为什么使用qq登录&…

nodejs升级或降级

node有一个模块叫n,是专门用来管理node.js的版本。 升级或降级步骤 1 、安装n模块 npm install -g n 2、 升级node.js到最新稳定版 n stable Ps: n后面也可以跟随版本号(用于升级或降级)比如: n v16.12.0

白银期货投资指南,轻松搞定白银投资

在今天的金融市场中,白银已成为备受瞩目的投资选择。不仅如此,白银还是避险资产的首选之一,兼具保值和增值的潜力。万洲金业将为您提供一份白银期货投资指南,让您轻松了解白银投资,助力在白银交易市场获得潜在收益。 …

uniapp的启动页、开屏广告

uniapp的启动页、开屏广告 启动页配置广告开屏 启动页配置 在manifest.json文件中找到APP启动界面配置,可以看到有Android和iOS的启动页面的配置 ,选择自定义启动图即可配置 广告开屏 在pages中新建一个广告开屏文件并在pases.json的最顶部配置这个页…

嵌入式应用选择正确的系统设计方法:第三部分

产品质量低下的原因有很多,例如,产品制造粗糙,组件设计不当,架构不佳以及对产品的要求了解不多。点击领取嵌入式物联网学习路线 必须设计质量。 您不能测试出足够的错误来交付高质量的产品。的质量保证(QA&#xff09…

Collectors.toMap报错:空指针 key重复

Java 8中的stream在项目开发中被同学们用的风生水起,当然大家也踩了不少坑。下面我就来说说Collections.toMap在项目使用中踩的坑,避免大家重复被坑。 一.介绍Collectors.toMap Collectors.toMap 是 Java 8 中的一个收集器,它可以将流中的元…