PCIE协议-2-事务层规范-TLP Prefix Rules

2.2.10 TLP前缀规则

以下规则适用于任何包含TLP前缀的TLP:

  • 对于任何TLP,TLP中byte0的Fmt[2:0]字段中的值100b表示存在TLP前缀,并且Type[4]位指示TLP前缀的类型。
    • Type[4]位中的值0b表示存在本地TLP前缀。
    • Type[4]位中的值1b表示存在端到端TLP前缀。
  • TLP前缀的byte1到3的格式由其TLP前缀类型定义。
  • 包含TLP前缀的TLP必须有一个底层的TLP头标。违反此规则的接收到的TLP将被视为畸形TLP。这是一个与接收端口相关联的报告错误(见第6.2节)。
  • 允许一个TLP包含多个任何类型的TLP前缀。
    • 当TLP中同时存在本地和端到端TLP前缀时,要求所有的本地TLP前缀都在任何端到端TLP前缀之前。违反此规则的接收到的TLP将被视为畸形TLP。这是一个与接收端口相关联的报告错误(见第6.2节)。
  • 每个TLP前缀的大小为1 DW。可以通过重复TLP前缀来提供额外数据的空间。
  • 如果Fmt和Type字段的值指示存在本地TLP前缀,则根据本地TLP前缀处理(见第2.2.10.1节)。 如果Fmt和Type字段的值指示存在端到端TLP前缀,则根据端到端TLP前缀处理(见第2.2.10.2节)。

2.2.10.1 本地TLP前缀处理

以下规则适用于本地TLP前缀:

  • 本地TLP前缀类型使用Type字段的子字段L[3:0]确定。
  • Type[4]必须为0b。
  • 本地TLP前缀L[3:0]值在表2-36中定义

  • 每个本地TLP前缀类型的大小、路由和流量控制规则是特定的。
  • 接收到不支持的本地TLP前缀类型的TLP是一个错误。如果设置了扩展Fmt字段支持位,除非在另一规格中明确另有规定,违反此规则的TLP将被视为畸形TLP。这是一个与接收端口相关联的报告错误(见第6.2节)。如果清除了扩展Fmt字段支持位,行为是设备定义的。
  • 即使底层TLP受到ECRC(错误校验和)保护,也没有本地TLP前缀受到ECRC保护。

2.2.10.1.1 厂商定义的本地TLP前缀

如表2-36所述,类型VendPrefixL0和VendPrefixL1被保留用作厂商定义的本地TLP前缀。为了最大化互操作性和灵活性,对此类前缀应用了以下规则:

  • 组件不得发送包含厂商定义的本地TLP前缀的TLP,除非已明确使能(使用厂商特定的机制)。
  • 支持任何厂商定义的本地TLP前缀使用的组件必须支持Fmt字段的3位定义,并设置扩展Fmt字段支持位(见第7.5.3.15节)。
  • 建议组件可以配置(使用厂商特定的机制),以便可以使用两种厂商定义的本地TLP前缀编码发送所有厂商定义的前缀。这样的配置不需要对称(例如,链路的每个端点可以使用不同的编码传输相同的前缀)。

2.2.10.2 端到端TLP前缀处理

 以下规则应用于端到端前缀

  • 端到端TLP前缀类型使用Type字段的子字段E[3:0]确定。
    • Type[4]必须为1b。
    • 端到端TLP前缀E[3:0]值在表2-37中定义。

 

  • TLP中允许的端到端TLP前缀的最大数量为4:
    • 支持TLP前缀的接收器必须检查此规则。如果接收器确定TLP违反了此规则,则TLP是畸形TLP。这是一个与接收端口相关联的报告错误(见第6.2节)。
  • 端到端TLP前缀的存在不会改变TLP的路由。TLP的路由基于第2.2.4节中涵盖的路由规则。
  • 功能通过设备能力2寄存器(Device Capabilities 2 register)中的最大端到端TLP前缀字段(Max End-End TLP Prefixes field)来指示它们支持多少端到端TLP前缀(见第7.5.3.15节)。
    • 对于根端口,最大端到端TLP前缀字段允许返回一个值,该值表明支持的端到端TLP前缀比根端口硬件实际实现的少;然而,错误处理语义仍必须基于字段中包含的值。接收到的TLP如果包含的端到端TLP前缀比根端口支持的多,必须如下处理。建议将请求作为不支持的请求处理,但其他情况下必须作为畸形TLP处理。建议将完成作为意外完成处理,但其他情况下必须作为畸形TLP处理。对于入端口接收的TLP,这是一个与入端口相关联的报告错误。对于内部接收以通过出端口传输的TLP,这是一个与出端口相关联的报告错误。见第6.2节。
    • 对于所有其他功能类型,如果接收到的TLP包含的功能支持的端到端TLP前缀多于功能支持的,必须将TLP作为畸形TLP处理。这是一个与接收端口相关联的报告错误(见第6.2节)。
    • 如果支持高级错误报告(Advanced Error Reporting  AER),则按第6.2.4.4节中指定的发生进行AER记录。
  • 如果设置了端到端TLP前缀支持位,则Switch必须支持转发最多带有4个端到端TLP前缀的TLP。
  • 不同根端口如果设置了端到端TLP前缀支持位,允许报告不同的最大端到端TLP前缀值。
  • 如果底层TLP受到ECRC(错误校验和)保护,则所有端到端TLP前缀都受到ECRC保护。
  • 如果不支持端到端TLP前缀的接收器接收到带有端到端TLP前缀的TLP,则是一个错误。违反此规则的TLP将被视为畸形TLP。这是一个与接收端口相关联的报告错误(见第6.2节)。
  • 软件应确保不要向不支持它们的组件发送包含端到端TLP前缀的TLP。如果组件的扩展Fmt字段支持位被清除,可能会误认为TLP包含TLP前缀。
  • 如果上游端口的一个功能具有设置的端到端TLP前缀支持位,则该上游端口的所有功能必须将收到的包含不支持的端到端TLP前缀类型的请求作为不支持的请求来处理。这是一个与接收端口相关联的报告错误(见第6.2节)。
  • 如果上游端口的一个功能具有设置的端到端TLP前缀支持位,则该上游端口的所有功能必须将收到的包含不支持的端到端TLP前缀类型的完成作为意外完成来处理。这是一个与接收端口相关联的报告错误(见第6.2节)。
  • 对于路由元素,每个出口端口中的端到端TLP前缀阻塞位决定是否可以通过该出口端口传输包含端到端TLP前缀的TLP(见第7.5.3.16节)。如果转发被阻塞,则整个TLP被丢弃,并且报告一个TLP前缀阻塞错误。如果被阻塞的TLP是一个非转发请求,出口端口返回一个具有不支持请求完成状态的完成。TLP前缀阻塞错误是与出口端口相关联的报告错误(见第6.2节)。
  • 对于启用了多播的路由元素(见第6.14节),端到端TLP前缀在TLP的所有多播副本中复制。多播包的TLP前缀出口阻塞在每个出口端口独立执行。

2.2.10.2.1 厂商定义的端到端TLP前缀

如表2-37所述,类型VendPrefixE0和VendPrefixE1被保留用作厂商定义的端到端TLP前缀。为了最大化互操作性和灵活性,对此类前缀应用了以下规则:

  • 组件不得发送包含厂商定义的端到端TLP前缀的TLP,除非已明确使能(使用厂商特定的机制)。
  • 建议组件可以配置(使用厂商特定的机制)以使用两种厂商定义的端到端TLP前缀编码。这样做允许在单个PCI Express拓扑内同时使用两种不同的厂商定义的端到端TLP前缀,而不需要每个源都理解它发送的每个TLP的最终目的地址。

2.2.10.2.2 支持端到端TLP前缀的根端口

根端口之间支持包含端到端TLP前缀的TLP的点对点路由是可选的,并且取决于硬件设计。如果根复合体(RC)支持两个或更多根端口之间的端到端TLP前缀路由能力,它必须通过设备能力2寄存器中的端到端TLP前缀支持位在每个相关根端口中指示该能力。

RC不需要支持具有设置端到端TLP前缀支持位的所有根端口对之间的端到端TLP前缀路由。需要在不支持的根端口对之间路由的带有端到端TLP前缀的请求必须作为未知请求(UR)处理。需要在不支持的根端口对之间路由的带有端到端TLP前缀的完成必须作为意外完成(UC)处理。在这两种情况下,错误都由“发送”端口报告。

任何支持由主机软件或根复合体集成端点(RCiEPs)发起的带有端到端TLP前缀的TLP转发的根端口,都必须设置端到端TLP前缀支持位。任何支持将带有端到端TLP前缀的TLP从其入口端口转发到RCiEPs的根端口,都必须设置端到端TLP前缀支持位。

不同根端口如果设置了端到端TLP前缀支持位,允许报告不同的最大端到端TLP前缀值。

当执行根端口之间的点对点路由时,如果根复合体(RC)将TLP分割成更小的TLP,它必须在每个较小的TLP中复制原始TLP的端到端TLP前缀(见第1.3.1节)。

 

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

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

相关文章

企微软件群发:高效沟通,智慧营销的新选择

在数字化时代,高效沟通是企业成功的关键。企微软件群发功能,以其精准、高效、便捷的特点,成为企业与客户、员工、合作伙伴之间沟通的新选择。本文将带您深入了解企微软件群发的优势与应用,助您掌握这一智慧营销的新利器。 一、引…

R语言数据分析案例-巴西固体燃料排放量预测与分析

1 背景 自18世纪中叶以来,由于快速城市化、人口增长和技术发展,导致一氧化二氮(N2O)、 甲烷(CH4)和二氧化碳(CO 2)等温室气体浓度急剧上升,引发了全球变暖、海平面上 升…

【数据结构】有关栈和队列相互转换问题

文章目录 用队列实现栈思路实现 用栈实现队列思路实现 用队列实现栈 Leetcode-225 用队列实现栈 思路 建立队列的基本结构并实现队列的基本操作 这部分这里就不多说了,需要的可以看笔者的另一篇博客 【数据结构】队列详解(Queue) 就简单带过一下需要实现的功能 …

信息量、熵、KL散度、交叉熵概念理解

信息量、熵、KL散度、交叉熵概念理解 (1) 信息量 信息量是对事件的不确定性的度量。 假设我们听到了两件事,分别如下:事件A:巴西队进入了世界杯决赛圈。 事件B:中国队进入了世界杯决赛圈。仅凭直觉来说,显而易见事件…

Python从0到POC编写-魔法方法

name __name__ 是系统定义的内部函数, 它的作用是识别模块。 通常我们看到这样一句话: if __name__ __main____name__ 的值有两种情况,那么挨个来说下。 如果模块是被直接执行的 ,那么 __name__ 的值 为 __main__ 例如&…

E: 无法获得锁 /var/lib/dpkg/lock-frontend - open

E: 无法获得锁 /var/lib/dpkg/lock-frontend - open 我们在ubuntu系统下使用命令sudo apt-get install/update安装软件或者更新软件时,有时会出现如下错误提示导致软件无法正常安装: E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可…

html中用frameset对窗口进行划分

html中&#xff0c;一般有<head><body>等部分&#xff0c;在用<frameset>对窗口进行区域划分时&#xff0c;<body>标签对就不再需要了。直接删除就可以了。 请看下面的示例&#xff1a; 由于使用frameset进行窗口划分时&#xff0c;对于电脑屏幕的划分…

排序-快速排序(Quick Sort)

快排的简介 快速排序&#xff08;Quick Sort&#xff09;是一种高效的排序算法&#xff0c;采用分治法的策略&#xff0c;其基本思想是选择一个基准元素&#xff0c;通过一趟排序将待排序的数据分割成独立的两部分&#xff0c;其中一部分的所有数据都比另外一部分的所有数据要…

Java基础杂集

1、包装缓存机制&#xff1a;Byte、Short、Integer、Long默认缓存了-128—127相应类型的缓存数据&#xff0c;而Double和Float没有缓存&#xff0c;Character缓存了0 - 127之间的数据&#xff0c;Boolean直接返回false和true。 加上自动装箱拆箱&#xff08;valueOf&#xff0…

Android 老年模式功能 放大字体

1 配置属性 <attr name"text_size_16" format"dimension"/><attr name"text_size_18" format"dimension"/><attr name"text_size_14" format"dimension"/><attr name"text_size_12&quo…

容器组件:Column ,Row(HarmonyOS学习第四课【4.1】)

容器组件-Column Column 容器组件是沿垂直方向布局的容器。该组件从APIVersion7开始支持从API version 9开始&#xff0c;该接口支持在ArkTs,卡片中使用。其可以包含子组件 Column(value?: {space?: string | number}) 参数 space 参数类型string | number 是否必填&am…

第11节 多文件函数生成位置规律

我把多年的shellcode开发经验浓缩在了这个专题课&#x1f469;&#x1f3fb;‍&#x1f4bb;里&#xff0c;主要面向对网络安全技术感兴趣的小伙伴。这是视频版内容对应的文字版材料&#xff0c;内容里面的每一个环境我都亲自测试实操过的记录&#xff0c;有需要的小伙伴可以参…

Git系统对于开发者来说有哪些优势

哈喽大家好呀&#xff0c;淼淼又来和大家见面啦&#xff0c;众所周知&#xff0c;在当今的开发领域&#xff0c;版本控制是开发过程中十分重要的环节之一&#xff0c;Git作为一种分布式版本控制系统&#xff0c;它不只是一个简单的代码管理工具&#xff0c;更是一种促进团队协作…

进程创建-fork

demo1代码状态变迁 demo2代码输出到stdout使用管道 demo1 代码 #include <pthread.h> #include <iostream> #include <unistd.h> int main(int argc, char const *argv[]) {// 1.pid_t x fork();// 2.pid_t y fork();// 3.printf("%d %d\n", x…

【C++】STL-list的使用

目录 1、list的使用 1.1 list的构造 1.2 list的遍历 1.3 list capacity 1.4 list element access 1.5 容量相关 list是一个带头双向循环链表 1、list的使用 1.1 list的构造 1.2 list的遍历 list只有两种遍历方式&#xff0c;因为没有operator[] 因为list的双向链表&am…

《建筑抗震设计规程》DB62/T 3055-2020下载

本规程适用于抗震设防分类为乙类、丙类&#xff0c;抗震设防烈度为6度(0.05g)、7度(0.10g、0.15g)、8度(020g、030g)、9度(0.40g)的多高层钢筋混凝土结构及钢-混凝土混合结构、中等跨度钢屋盖结构、门式刚架钢结构、多低层砖砌体结构房屋建筑的抗震设计。 关于甘肃省地方标准《…

01 | 为什么需要消息队列?

哪些问题适合使用消息队列来解决&#xff1f; 1. 异步处理 2. 流量控制 使用消息队列隔离网关和后端服务&#xff0c;以达到流量控制和保护后端服务的目的。 3. 服务解耦 无论增加、减少下游系统或是下游系统需求如何变化&#xff0c;订单服务都无需做任何更改&#xff0c…

【主题广泛|稳定检索】2024年社会科学、公共服务与人文艺术国际会议(SPSHA 2024)

2024年社会科学、公共服务与人文艺术国际会议&#xff08;SPSHA 2024&#xff09; 2024 International Conference on Social Sciences, Public Services, and Humanities and Arts 【会议简介】 本次会议定于2024年在中国的繁华都市——广州召开&#xff0c;汇聚了全球在该领…

如何挑选护眼灯?分享最好的台灯品牌排行榜

作为家长&#xff0c;孩子的健康无疑是我们最为牵挂的事项。然而&#xff0c;通过研究数据显示&#xff0c;我国青少年儿童的近视率高达52.7%&#xff0c;这意味着在每十名儿童中&#xff0c;就有超过半数的孩子可能面临视力问题。这一数据无疑令人警觉。当我们看到孩子们在写作…

Web3加密空投入门:空投类型有哪些?如何避免限制?

今天分享空投如何避免限制以提高效率&#xff0c;增加成功几率&#xff0c;首先我们来了解什么是空投加密&#xff0c;有哪些空投类型。 一、什么是空投加密&#xff1f; 加密货币空投是一种营销策略&#xff0c;包括向用户的钱包地址发送免费的硬币或代币。 加密货币项目使用…