PCIe学习笔记(19)

news2024/11/15 4:33:40

TLP Prefix(前缀)规则

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

•对于任何TLP, TLP第0字节的Fmt[2:0]字段值为100b表示存在TLP Prefix, Type[4]位表示TLP Prefix的类型。

◦Type[4]位的值为0b表示存在Local TLP Prefix

◦Type[4]位的值为1b表示存在End-End TLP Prefix

•TLP Prefix的第1到第3字节的格式由其TLP Prefix类型定义。

包含TLP前缀的TLP必须有一个底层的TLP报头。收到的违反此规则的TLP将作为畸形TLP处理。这是一个与接收端口相关的报告错误(参见6.2节)。

允许一个TLP包含多个任何类型的TLP前缀(那么Type字段怎么标?)

◦当TLP中存在Local和End-End TLP前缀的组合时,需要所有Local TLP前缀位于任何End-End TLP前缀之前。收到的违反此规则的TLP将作为畸形TLP处理。这是一个与接收端口相关的报告错误(参见6.2节)。

•每个TLP前缀的大小为1DW。可以重复使用TLP前缀,以便为附加数据提供空间。

Local TLP Prefix Processing

•本地TLP前缀类型由Type字段的L[3:0]子字段确定;

Type[4]必须为0b;

◦本地TLP前缀L[3:0]的定义如表2-36所示

大小、路由和流量控制规则根据不同的Local TLP Prefix类型而不同

•接收到不支持的本地TLP前缀类型的TLP是一个错误。如果设置了扩展Fmt字段支持位,除非在另一规格中明确另有规定,违反此规则的TLP将被视为畸形TLP。这是一个与接收端口相关联的报告错误(见第6.2节)。如果清除了扩展Fmt字段支持位,行为是设备定义的。

•,即使底层TLP受ECRC保护,没有本地TLP前缀受ECRC保护。(这个主要是和End-End TLP前缀的区别

Vendor Defined Local TLP Prefix

VendPrefixL0”和“VendPrefixL1”类型保留作为厂商自定义的本地TLP前缀。为了最大限度地提高互操作性和灵活性,以下规则应用于这些前缀:

•组件不得发送包含供应商定义的本地TLP前缀的TLP,除非已明确启用(使用供应商特定的机制)。

•支持任何供应商定义的本地TLP前缀的组件必须支持Fmt字段的3位定义,并具有扩展Fmt字段支持位集。

•建议组件是可配置的(使用供应商特定的机制),以便所有供应商定义的前缀都可以使用两种供应商定义的本地TLP前缀编码中的任何一种发送。这样的配置不必是对称的(例如,链路的每一端可以使用不同的编码传输相同的前缀)。

End-End TLP Prefix Processing

•End-End TLP前缀类型由Type字段的子字段E[3:0]确定

Type[4]必须为1b

◦End-End TLP前缀E[3:0]的值定义如表2-37所示

•在一个TLP中允许的最大End-End TLP前缀数为4:

◦支持TLP前缀的Receiver必须检查此规则。如果接收方认定该TLP违反了此规则,则该TLP为畸形TLP。这是一个与接收端口相关的报告错误。

•End-End TLP前缀的存在不会改变该TLP的路由。

•功能通过Device Capabilities 2寄存器中的Max End-End TLP Prefixes字段表示它们支持多少个End-End TLP前缀。

◦对于RC,允许Max End-End TLP前缀字段返回一个值,表示支持比根端口硬件实际实现的更少的End-End TLP前缀;但是,错误处理语义仍然必须基于字段中包含的值。收到的TLP包含的End-End TLP前缀数超过根端口支持的数目时,处理方法如下。建议将请求作为不受支持的请求处理,否则它们必须作为畸形的tlp处理。建议将Completions作为意外Completions处理,否则必须作为畸形tlp处理。对于入端口收到的TLPs,这是一个与入端口相关的报告错误。对于内部接收到的要从出口端口发送出去的tlp,这是一个与出口端口相关的报告错误。

◦对于所有其他功能类型,收到的TLP包含更多的End-End TLP前缀,而不是一个功能所支持的,必须作为畸形TLP处理。这是一个与接收端口相关的报告错误(参见6.2节)。

•如果设置了End-End TLP前缀支持位,SW必须支持转发最多4个End-End TLP前缀的TLP

•不同根端口的End-End TLP前缀支持位集允许报告不同的最大End-End TLP前缀值。

•如果底层TLP受ECRC保护,则所有End-End TLP前缀都受ECRC保护。

•接收不支持End-End TLP前缀的接收器收到带有End-End TLP前缀的TLP会出错。违反此规则的TLP将作为畸形TLP处理。这是一个与接收端口相关的报告错误(参见6.2节)。

软件应确保包含End-End TLP前缀的TLP不会发送到不支持它们的组件。扩展Fmt字段支持位为Clear的组件可能会误认为包含TLP前缀的TLP。

•如果上游端口的某个功能设置了End-End TLP前缀支持位,则该上游端口的所有功能都必须将收到的包含不支持的End-End TLP前缀类型的请求作为不支持的请求处理(UR)。这是一个与接收端口相关的报告错误(参见6.2节)。

•如果上游端口的某个功能设置了End-End TLP前缀支持位,则该上游端口的所有功能都必须将收到的包含不支持的End-End TLP前缀类型的Completion处理为Unexpected Completion(UC)这是一个与接收端口相关的报告错误(参见6.2节)。

•对于路由元素,每个出口端口的End-End TLP前缀阻塞位决定包含End-End TLP前缀的TLP是否可以通过该出口端口传输。如果转发被阻断,则整个TLP被丢弃,并报告TLP Prefix blocked Error。如果被阻塞的TLP是一个Non-Posted请求,则出口端口返回一个带有Unsupported Request Completion Status的Completion。TLP前缀阻塞错误是一个与出口端口相关的报告错误(参见6.2节)。

•对于启用多播的路由元素(参见6.14节)。End-End TLP前缀在一个TLP的所有组播副本中被复制。TLP前缀Egress组播报文的阻塞在每个Egress端口独立进行。

Vendor Defined End-End TLP Prefix

“VendPrefixE0”和“VendPrefixE1”类型保留作为厂商自定义的端到端TLP前缀。为了最大限度地提高互操作性和灵活性,以下规则应用于此类前缀:

•组件不得发送包含供应商定义的End-End TLP前缀的TLP,除非已明确启用(使用供应商特定的机制)。

•建议组件可配置(使用供应商特定的机制),以使用两种供应商定义的End-End TLP前缀编码中的任何一种。这样做允许在单个PCI Express拓扑中同时使用两个不同的供应商定义的端到端TLP前缀,而不要求每个源都了解其发送的每个TLP的最终目的地。

Root Ports with End-End TLP Prefix Supported

支持根端口之间包含End-End TLP前缀的TLP对等路由是可选的,依赖于具体实现。如果RC支持两个或多个根端口之间的End-End TLP前缀路由能力,则必须通过Device Capabilities 2寄存器中的End-End TLP前缀支持位在每个关联的根端口中指出该能力。

对于所有设置了“End-End TLP前缀支持位”的根端口对,RC不需要支持End-End TLP前缀路由。带有End-End TLP前缀的请求需要在不支持的根端口对之间进行路由,必须作为UR(Unsupported Request)处理。带有End-End TLP前缀的Completion需要在不支持的根端口对之间进行路由,必须作为Unexpected Completion(UC)处理。在这两种情况下,该错误都由“发送”端口报告。

对于支持转发由主机软件或rciep (Root Complex Integrated Endpoints)发起的带有End-End TLP前缀的TLP的根端口,必须设置“End-End TLP前缀支持位”。对于支持将入端口接收到的带有End-End TLP前缀的TLP转发到rciep的根端口,必须设置“End-End TLP前缀支持位”。

设置了End-End TLP前缀支持位集的不同根端口允许报告不同的最大End-End TLP前缀值。

当RC在根端口之间进行点对点路由时,如果将一个TLP拆分为更小的TLP,则必须在每个更小的TLP中复制原TLP的End-End TLP前缀

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

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

相关文章

一、Matlab基础

文章目录 一、Matlab界面二、Matlab窗口常用命令三、Matlab的数据类型3.1 数值类型3.2 字符和字符串3.3 逻辑类型3.4 函数句柄3.5 结构类型3.6 细胞数组 四、Matlab的运算符4.1 算术运算符4.2 关系运算符4.3 逻辑运算4.4 运算符优先级 五、Matlab的矩阵5.1 矩阵的建立5.2 矩阵的…

解决vscode连接远程服务器时一直要求输入密码的问题

今天在用vscode连接我的Linux服务器时,输入密码后并没有成功登录,而是不断的弹出密码输入框。如果有遇到相同问题的同学可以试试下面的方法 1.点击查看,打开命令面板 2.终止服务器 选中自己的服务器,然后会让你输入密码 3.重新登…

sqlserver一列转多行

文章目录 sqlserver一列转多行建表插入数据方式一方式二 sqlserver一列转多行 建表 CREATE TABLE [dbo].[MM_T_MATER]([fbillno] [NVARCHAR](50) NOT NULL,[fid] [INT] NOT NULL,[FCREATEDATE] [DATETIME] NOT NULL,[FDATE] [DATETIME] NOT NULL,[FPURCHASEORGID] [INT] NOT …

leetcode70_爬楼梯

思路 动态规划 爬到第n阶楼梯的方法数为&#xff1a;第n-1阶楼梯的方法数 第n-2阶楼梯的方法数 func climbStairs(n int) int {if n < 2 {return 1}dp : make([]int, n1)dp[1] 1dp[2] 2for i:3; i<n; i {dp[i] dp[i-1] dp[i-2]}return dp[n] }

C++分析哈希表

目录 哈希表 哈希表介绍 哈希表的数据插入和查找原理 哈希表的存放方法 开散列解决哈希冲突 思路 代码设计 结构设计 数据插入 数据查找 数据删除 闭散列解决哈希冲突 思路 代码设计 结构设计 数据插入 数据查找 数据删除 析构函数设计 比较key相等以及key…

Firefox滚动条在Win10和Win11下表现不一致问题?

文章目录 前言总结解决方法 前言 最近在写页面的时候发现一个非常有意思的事。Firefox滚动条在Win10和Win11下表现居然不一致。在网上几经查找资料&#xff0c; 终于找到原因所在。总结成下面的文章&#xff0c;加深印象也防止下次遇到。 总结 参考文章&#xff1a; Firefox…

淘宝天猫优惠券领取入口直达口令是什么?

词令是一款关键词口令直达工具&#xff1b;打开词令&#xff0c;输入口令「tb88」&#xff0c;搜索直达口令关联的目标淘宝优惠券领取入口。领取成功后&#xff0c;在下单购买默认使用领到的店铺优惠券享受券后价优惠。下面为您准备了图文教程 淘宝优惠券领取入口直达口令是什…

突破视觉界限:单目深度估计算法,智能无人系统的新视角

今天&#xff0c;为大家介绍一项新的SpireCV视觉感知技术——单目深度估计算法&#xff08;MDE, Monocular Depth Estimation&#xff09;。 什么是单目深度估计算法&#xff1f; 简单来说&#xff0c;单目深度估计是指通过单个摄像头获取的图像来估计场景中物体的深度信息。相…

打破老美垄断,潘展乐商业价值起飞

文&#xff5c;琥珀食酒社 作者 | 积溪 奥运会上的潘展乐 真是牛逼坏了 拿下男子100米自由游金牌 打破欧美长达近百年垄断 搞定男子4x100米混合泳金牌 终结了美国在这项目上 10年不败的神话 比赛前 美国选手对他爱答不理 招呼都不打 比赛后美国选手想套热乎 潘展乐…

【鸿蒙开发基础学习】UIAbility 组件启动模式

UIAbility 组件启动模式 UIAbility 的启动模式是指 UIAbility 实例在启动时的不同呈现状态。针对不同的业务场景&#xff0c;系统提供了三种启动模式&#xff1a; singleton&#xff08;单实例模式&#xff09;multiton&#xff08;多实例模式&#xff09;specified&#xff…

WordPress网站克隆:用户指南

在这个数字化时代&#xff0c;拥有自己的网站已经非常普遍了。不管是个人博客还是企业官网&#xff0c;WordPress都提供了便捷的建站方式。但是&#xff0c;有时候我们需要复制一个现有的网站&#xff0c;无论是为了测试新功能还是迁移到新服务器。那么&#xff0c;如何克隆一个…

2024年新能源汽车市场保有量创新高

2024年新能源汽车市场大爆发&#xff1a;渗透率飙升&#xff0c;保有量创新高&#xff0c;充电桩建设驶入快车道 随着2024年新能源汽车市场的持续繁荣&#xff0c;一场前所未有的绿色革命正在全球范围内加速推进。这一年&#xff0c;新能源汽车的渗透率不仅实现了质的飞跃&…

微软超高危漏洞“狂躁许可”安全通告,亚信安全ForCloud快速响应

今日&#xff0c;亚信安全CERT监控到安全社区研究人员发布安全通告&#xff0c;披露了微软“狂躁许可”漏洞(CVE-2024-38077)。该漏洞由于windows系统的远程桌面授权服务存在边界错误而导致。攻击者可以发送其精心制作的数据传递给应用程序&#xff0c;这可能引发基于堆的缓冲区…

Element学习(axios异步加载数据、案例操作)(5)

1、这次学习的是上次还未完成好的恶element案例&#xff0c;对列表数据的异步加载&#xff0c;并渲染展示。 ——>axios来发送异步请求 &#xff08;1&#xff09; &#xff08;2&#xff09;在vue当中安装axios &#xff08;注意在当前的项目目录&#xff0c;并且安装完之后…

JAVA—异常

认识异常&#xff0c;学会从报错信息中发现问题&#xff0c;解决问题。并学会构建自定义异常&#xff0c;提醒编程时注意 目录 1.认识异常 2.自定义异常 1.自定义运行时异常 2.自定义编译时异常 3.异常的处理 1.认识异常 异常就是代表程序出现的问题&#xff0c;用来查询B…

海思开发套件体验记录

DAY_01&#xff1a; 前一段时间&#xff0c;仰仗工作室的支持&#xff0c;有幸参加了华为海思社区举办的首批入选星闪开发者体验官活动&#xff01;&#xff01;&#xff01; 今天收到海思官方寄过来的海思星闪派开发套件啦&#xff01;&#xff0c;很开心&#xff0c;非常感谢…

VScode找python环境 (conda)

第一步 CtrlshiftP 第二步 框框里输入&#xff1a;Python:Select Interpreter

鸿蒙(API 12 Beta3版)【时域可分层视频编码】 音视频编码

基础概念 时域可分层视频编码介绍 可分层视频编码&#xff0c;又叫可分级视频编码、可伸缩视频编码&#xff0c;是视频编码的扩展标准&#xff0c;目前常用的包含SVC&#xff08;H.264编码标准采用的可伸缩扩展&#xff09;和SHVC&#xff08;H.265编码标准采用的可扩展标准&…

【JavaEE初阶】线程安全的集合类

&#x1f4d5; 引言 我们之前讲过的集合类&#xff0c;,大部分都不是线程安全的. Vector, Stack, HashTable, 是线程安全的(都是自带了synchronized,不建议用), 其他的集合类不是线程安全的。 注意&#xff1a;加锁不能保证线程一定安全&#xff0c;不加锁也不能确定线程一定…

spark-python

前言:本帖子是看了黑马教学视频结合spark八股,记录一下spark的知识. 一.spark介绍 1.1 spark的运行模式 1.2 spark的架构角色 在讨论spark的架构角色时,首先先回顾一下yarn的架构角色. spark架构角色: 二.standalone 运行原理 2.1standalone架构 standalone中有三类进程: m…