PCIe学习笔记(19)

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.rhkb.cn/news/395567.html

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

相关文章

牛客JS题(二十三)判断质数

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; 原型链如何优雅的判断质数 题干&#xff1a; 我的答案 <!DOCTYPE html> <html><head><meta charsetutf-8></head><body><script type"text/javascript">/*** 素…

Vue引入使用iconfont字体图标

由于element-ui或element-plus提供的图标有时候并不能满足日常需求,所以这篇介绍一下前端引入阿里巴巴矢量图标库使用,不止是vue使用,不限于vue2、vue3,html或是其他框架也是同样的道理,只要引入都是同样可以使用的。 1. 首先进入阿里巴巴矢量图标库官网 官网:https://…

螺旋矩阵

螺旋矩阵 思路&#xff1a; 这题是一个模拟的题目。 可以观察出一些性质&#xff1a;每次需要换方向的时候都是到达了边界&#xff08;长度和宽度的边界&#xff09;。 不知道怎么转化为代码&#xff01; 哭了 看看题解吧&#xff1a;真不会 看到一个太妙的方法了&#x…

初识云计算

随着科技的飞速发展&#xff0c;云计算作为一种新兴的信息技术架构&#xff0c;正在逐渐改变我们的工作方式和生活方式。 云计算是什么&#xff1f; 云计算是一种通过互联网提供计算资源和服务的计算模式。它通过互联网将计算和存储资源进行集中和共享&#xff0c;为用户提供…

zabbix的自动发现和注册、proxy代理和SNMP监控

一、zabbix自动发现和注册 1.概念 zabbix客户端主动的和服务端联系&#xff0c;将自己的地址和端口发送给服务端&#xff0c;实现自动添加监控主机。 客户端是主动的一方 缺点&#xff1a;自定义网段中主机数量太多&#xff0c;登记耗时会很久&#xff0c;而且这个自动发现…

Java 处理一张单据,处理花费时间挺久,有单号,不用redis怎么可以快速判断其在处理中,不需要再处理

在Java中处理长时间的任务并且需要避免重复处理同一张单据的情况下&#xff0c;在不使用Redis或其他外部存储服务情况下。 方法一&#xff1a;使用数据库表 表记录记录状态 方法二&#xff1a;使用文件系统 创建和删除文件记录状态 方法三&#xff1a;使用本地缓存 import …

6种常用的AR跟踪方法

增强现实 (AR) 是一项令人着迷的技术&#xff0c;可将虚拟内容与现实世界无缝集成。实现这种无缝集成的关键组件之一是跟踪。各种类型的跟踪用于确定 AR 内容在环境中的准确位置和方向。本文介绍 AR 最常见的6种跟踪方法。 NSDT工具推荐&#xff1a; Three.js AI纹理开发包 - Y…

Centos安装Mysql

添加MySQL官方的Yum仓库 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm安装MySQL服务器 sudo yum install mysql-community-server在安装过程中遇到了如下错误&#xff1a; 使用如下命令去解决&#xff1a; yum --enablerepomysql80…

Windows下Rust OpenCV环境配置

首发于Enaium的个人博客 安装Chocolatey 首先我们需要安装Chocolatey&#xff0c;Chocolatey是一个Windows的包管理器。 我们点击右上角的Install进入到Installing Chocolatey&#xff0c;选择Individual 复制命令 Set-ExecutionPolicy Bypass -Scope Process -Force; [Sys…

【Java日志系列】日志概述

目录 前言 一、日志概述 二、日志文件 1. 调试日志 2. 系统日志 三、日志框架 1. 日志框架的作用 2. 日志框架的价值 3. 市面上流行的日志框架 4. 日志门面和日志实现的区别 总结 前言 在软件开发中&#xff0c;日志记录是一项至关重要的任务。无论是简单的命令行应…

CloudCompare—点云切片

文章目录 一、整体功能展示1、必要参数2、其他选项二、代码实现1、提取平面上的包络线2、将点投影到二维平面上3、提取二维凸包三、算法原理参考资料一、整体功能展示 整个点云切片的步骤如下动图所示: 激活点云后,选择切片功能(小立方盒),在点云视图中显示工具栏框,工具…

后期调色学习笔记

关于调色曲线的学习&#xff1a; 学习链接&#xff1a;一看就懂的曲线调色教程【手机摄影后期】_哔哩哔哩_bilibili 从左向右就是由暗部越来越到亮部 越靠近右侧的越是亮部

C++ | Leetcode C++题解之第324题摆动排序II

题目&#xff1a; 题解&#xff1a; class Solution { public:int partitionAroundPivot(int left, int right, int pivot, vector<int> &nums) {int pivotValue nums[pivot];int newPivot left;swap(nums[pivot], nums[right]);for (int i left; i < right; …

04 Haproxy搭建Web集群

4.1 案例分析 4.1.1 案例概述 Haproxy是目前比较流行的一种群集调度工具&#xff0c;同类群集调度工具有很多&#xff0c;如LVS和Nginx。相比较而言&#xff0c;LVS 性能最好&#xff0c;但是搭建相对复杂;Nginx 的upstream模块支持群集功能&#xff0c;但是对群集节点健康检…

html+css 实现hover 3D按钮特效

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目…

C语言实现游戏2048(超详细!!!超易懂!!!)

2048是众所周知的一款经典游戏&#xff0c;在曾经没有智能电脑和手机的年代&#xff0c;也陪伴了我们许多年。那今天就让我们用C语言来回顾一下这款游戏吧~ 一、游戏2048的思路 2048游戏的玩法是在初始的时候&#xff0c;给玩家一个4*4格子的&#xff0c;其中内容全为空的棋盘…

elementPlus中el-table的每列两行溢出隐藏怎么设置

el-table的每列两行溢出隐藏怎么设置 elementPlus中的el-table如何设置多行溢出隐藏table中的table属性中有show-overflow-tooltip属性&#xff0c;但是只支持单行溢出隐藏如何改成两行呢&#xff1f;在审查元素中我们发现.el-tooltip这个类名是溢出隐藏的样式&#xff0c;原本…

【Linux---08】Shell脚本

文章目录 1. 前置说明1.1 创建shell脚本1.2 执行shell脚本1.3 调试shell脚本1.4 字符冲突 2. 变量2.1 创建&使用变量2.2 位置变量2.3 引号规则 3. 数组3.1 创建数组3.2 使用数组 4. 运算符4.1 比较&数值运算4.1.1 方式一&#xff1a;[ ]4.1.3 方式二&#xff1a;(()) &…

【MongoDB】1.MongoDB下载与安装

目录 一、下载 二、安装 三、安装MongoDB Compass 四、连接 一、下载 官网地址&#xff1a; https://www.mongodb.com/download-center/community 二、安装 详细的安装教程可参考&#xff1a; MongoDB安装&#xff08;超详细&#xff09;_安装mongodb-CSDN博客 注意事项1&…

赛盈分销亮相AI科技大会暨亚马逊新增长大会,与企业共话跨境品牌发展新机遇!

八月开端&#xff0c;由知无不言与xmars和钱老师课堂联合主办的2024年AI科技大会暨亚马逊新增长大会在深圳宝安顺利开展&#xff0c;为期2天的跨境峰会吸引了上千位优秀的卖家朋友前来感受一场盛夏大狂欢。在本次跨境峰会里&#xff0c;邀请了多位不同领域的先锋人物&#xff0…