PCIE协议-2-事务层规范---事务描述符

2.2.6.1 概览

事务描述符是请求者和完成器之间传输事务信息的机制。事务描述符由三个字段组成:

  • 事务ID:标识未完成的事务
  • 属性字段:定义事务的特征
  • 流量类别(TC)字段:将事务与所需的服务类型关联起来

图2-14显示了事务描述符的字段。注意,这些字段一起显示是为了强调它们作为单个逻辑实体的组成部分之间的关系。这些字段在数据包头标中并不是连续的。

2.2.6.2 事务ID - 事务ID字段

事务ID字段由两个主要子字段组成:请求者ID和标签,如图2-15所示。

PCIe-4.0中引入的10位标签功能将标签字段的总大小从8位增加到10位。两个额外的标签位,Tag[8](T8)和Tag[9](T9),在事务层协议头标中与Tag[7:0]位不连续。在本规范的早期版本中,这两个额外的位是保留的。

Tag[9:0]是一个由每个请求者生成的10位字段,对于所有需要该请求者完成的未完成请求,它必须是唯一的。不支持10位标签请求者功能的请求者必须将标签[9:8]设置为00b。

  • 如果"功能"(包括Switch中的)支持16.0GT/s或更高数据速率,则必须支持10位标签完成者功能。如果一个功能支持10位标签完成者功能,它也可以选择性地支持10位标签请求者功能。
  • 指明支持10位标签完成者功能的RC(根复合体)的组成要素必须通过所有作为PCIe请求者目标支持的寄存器和内存区域正确处理10位标签请求; 例如,由DMA请求或RCiEPs中的MMIO区域定位的主机内存。
  • 每个表明支持的RP(接收端口)必须处理其入端口接收到的此类请求。
  • 每个表明支持的RCiEP必须正确处理来自支持的内部路径的请求,包括通过RP(接收端口)传来的请求。
  • 如果一个RC包含表明支持10位标签请求者功能的RCiEP,该RC必须通过所有作为那些RCiEP目标支持的寄存器和内存区域正确处理来自那些RCiEP的10位标签请求;例如,DMA请求定位的主机内存或RCiEP中的MMIO(内存映射输入输出)区域。
  • 接收器/完成器必须正确处理8位标签值,无论它们的扩展标签字段使能位(见7.5.3.4节)的设置如何。有关桥接器处理扩展标签的详细信息,请参考PCI Express到PC/PC-X桥接器规范。
  • 支持10位标签完成者功能的接收器/完成器必须正确处理10位标签值,无论它们的10位标签请求者使能位设置如何。见7.5.3.16节。
  • 并未为PCI Express到PCI/PCI-X桥接器设计10位标签功能,它们不应表明支持10位标签请求者功能或10位标签完成者功能。
  • 如果10位标签请求者使能位清除,并且扩展标签字段使能位清除,则每个功能的最大未完成请求数量应限制为32,并且只使用标签字段的低5位,其余的高5位必须为0 0000b。
  • 如果10位标签请求者使能位清除,并且扩展标签字段使能位设置,则最大数量增加到256,并且只使用标签字段的低8位,其余的高2位必须为00b。
  • 如果10位标签请求者使能位设置,则针对单个完成器的最大数量增加到768。请求者被允许在向它认为合适的完成器发送10位标签请求时使用标签字段的所有10位,尽管请求者仍然被允许向其他完成器发送较小标签的请求。以下适用于10位标签能力的请求者,其10位标签请求者使能位已设置:
    • 如果一个端点支持向其他端点(而不是主存)发送请求,该端点在向另一个给定的端点发送10位标签请求时,除非通过特定的实现机制确定该端点支持10位标签完成者功能,否则必须不发送10位标签请求。对于某些实现来说,完全不向其他端点发送10位标签请求可能是可接受的。更复杂的机制超出了本规范的范围。
    • 如果一个PIO(并行输入输出)请求者具有10位标签请求者能力,请求者决定何时使用10位标签与较小标签的方法超出了本规范的范围。
    • 使用10位标签时,有效的标签[9:8]值是01b、10b或11b。标签[9:8]等于00b的10位标签值是无效的,请求者不得生成此标签值。这使得请求者可以确定它收到的本应具有10位标签的完成是否包含无效的标签,这通常是由于完成器不支持10位标签完成者能力造成的。
    • 如果请求者向缺乏10位完成者能力的完成器发送10位标签请求,返回的完成(s)将具有标签[9:8]等于00b的标签。由于请求者被禁止为10位标签生成这些标签值,这样的完成将被视为“意外完成”,默认情况下是咨询性非致命错误。请求者必须遵循标准的PCI Express错误处理要求。
    • 当请求者将无效的10位标签的完成作为意外完成处理时,原始请求可能会遇到完成超时。如果请求者以某种避免数据损坏的设备特定方式处理完成超时条件,请求者被允许按要求通过标准的PCI Express错误处理机制抑制处理完成超时。
    • 如果请求者支持向某些完成器发送10位标签请求,同时向其他完成器发送较小标签请求,则请求者必须尊重较小标签请求的扩展标签字段使能位设置。也就是说,如果该位被清除,则标签字段的低5位可以非零;如果该位被设置,则标签字段的低8位可以非零。

    • 如果请求者支持向某些完成器发送10位标签请求,同时向其他完成器发送较小标签请求,则请求者必须确保在任何10位标签请求由缺乏10位标签完成器能力的完成器完成时,没有任何未完成的10位标签可以与未完成的较小标签别名。请参阅本节后面的“同时使用10位标签和较小标签”的实现说明。

    • 扩展标签字段使能位的默认值是特定于实现的。10位标签请求者使能位的默认值是0b。

    • 如果使用多个未完成的请求发出非唯一的标签值,接收器/完成器的行为是未定义的。

    • 如果使用幻影功能号来扩展未完成请求的数量,则幻影功能号和标签字段的组合必须对请求者的所有未完成请求都是唯一的。

    • 对于转发请求,Tag[9:8]字段是保留的。

    • 对于设置了TH位的转发请求,Tag[7:0]字段被重新用于ST[7:0]字段(详见2.2.7.1节)。对于清除了TH位的转发请求,Tag[7:0]字段是未定义的,并且可以包含任何值。(请参阅表F-1,了解某些供应商定义消息的此规则的例外情况。)

    1. 对于清除了TH位的发布请求,Tag[7:0]字段中的值不得影响接收器处理请求。

    2. 对于设置了TH位的发布请求,ST[7:0]字段中的值可能会影响完成器处理请求(详见2.2.7.1节)。

  • 请求者ID和标签组合形成一个全局标识符,即层次结构内每个事务的事务ID。
  • 事务ID包含在所有请求和完成中。
  • 请求者ID是一个16位值,在一个层次结构内的每个PCI Express功能中是唯一的。
  • 功能必须捕获所有由功能完成的type0配置写入请求提供的“总线和设备号”,并在由设备/功能发起的所有请求的请求者ID的总线和设备号字段中提供这些号码。建议仅捕获成功完成的请求的号码。
  1. 例外:在根复合体中分配给设备的功能号,以及在Switch内分配给下游端口的设备号,可以以特定于实现的方式进行。
  2. 请注意,总线号和设备号可能在运行时更改,因此有必要在每次配置写入请求时重新捕获这些信息。
  3. 建议针对未实现功能的配置写入请求不影响捕获的总线和设备号。
  • 当Switch代表自己生成请求时(例如,用于错误报告),必须使用与逻辑上与引起请求生成的端口相关联的桥接的主侧相关联的请求者ID(见7.1节)。
  • 在对功能进行初始配置写入之前,该功能不允许启动非转发请求。(需要有效的请求者ID以正确路由生成的完成。)

  1. 例外:在软件启动的配置之前,根复杂体内部的功能被允许启动对系统引导设备(s)的访问请求。 注意:这个规则和例外与现有的PCl系统初始化和配置模型一致。

  • 每个与设备相关联的功能必须被设计为对配置请求的独特功能号做出响应,该请求针对该设备。注:每个非ARI设备可能包含多达八个功能。 每个ARI设备可能包含多达256个功能。
  • Switch必须在转发请求时不修改事务ID。
  • 在某些情况下,PCI Express到PCI/PCI-X桥接器需要为其从PCI或PCI-X总线转发的请求生成事务ID。

2.2.6.3 事务描述符 - 属性字段

属性字段用于提供额外的信息,允许修改事务的默认处理方式。这些修改适用于系统中处理事务的不同方面,例如:

  • 排序
  • 硬件一致性管理(snoop)

请注意,属性是一些提示,允许对流量处理进行优化。支持的水平取决于特定PCI Express外围设备和平台构建块的目标应用。请注意,属性位2不与位1和0相邻(见图2-17和图2-18)。

2.2.6.4 宽松排序和基于ID的排序属性

表2-9定义了宽松排序和基于ID的排序属性字段的状态。这些属性在第2.4节中讨论。请注意,宽松排序和基于ID的排序属性在位置上不是相邻的(见图2-5)。 

Attribute bit[1]对于配置请求、I/O请求、消息标记中断和消息请求(除非特别允许)不适用且必须被清除。

Attribute bit[2],即IDO(基于ID的排序),对于配置请求和I/O请求是保留的,对于所有内存请求(包括消息信号中断MSI/MSI-X)不是保留的。除非特别禁止,否则对于消息请求不是保留的。只有在设备控制寄存器中的IDO请求使能位被设置时,请求者才被允许设置IDO。

当接收器确定TLP(事务层数据包)是否为畸形数据包时,不应考虑IDO位的值。

只有在设备控制寄存器中的IDO完成使能位被设置时,完成器才被允许设置IDO。完成器不必将请求中的IDO值复制到该请求的完成中。如果完成器启用了IDO,建议完成器为所有完成设置IDO,除非有特定原因不这样做(见附录E)。

支持在根端口之间对等转发TLP的根复合体,不必从入口到出口端口保留IDO位 。

2.2.6.5 不监听属性

表2-10定义了不监听属性字段的状态。请注意,不监听属性不会改变事务排序。

对于配置请求、I/O请求、消息标记中断和消息请求(除非特别允许)这个属性不适用且必须被清除。

2.2.6.6 事务描述符 - 流量类别字段

流量类别(TC)是一个3位字段,允许将事务区分为八个流量类别。

结合PCI Express虚拟通道支持,TC机制是实现差异化流量服务的基础要素。每个PCI Express事务层数据包都使用TC信息作为一个在PCI Express结构中端到端携带的不变标签。当数据包在结构中穿越时,这些信息在每个链路和每个交换元件内被用来做出关于适当服务流量的决策。服务的一个关键方面是基于它们TC标签通过相应虚拟通道的数据包路由。第2.5节涵盖了VC机制的详细信息。 表2-11定义了TC编码。 

由系统软件决定TC标记和TC/VC映射,以提供满足目标平台要求的差异化服务。

流量类别的概念仅适用于PCI Express互连结构内。如何将PCI Express TC服务策略转换为非PCI Express互连上的策略的具体要求超出了本规范的范围。

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

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

相关文章

C语言---使用共用体将double型经纬度存储到无符号数组中

1.在上报经纬度时由于数据协议限制需要将double型数据存储到无符号数组中&#xff0c;下边是写了一个简单C程序进行验证&#xff1b; 2.代码示例如下 #include <stdio.h> typedef union {float data;unsigned char arr[4]; } my_data;int main() {my_data test_data {…

【科学研究】在朋友圈上秀恩爱——“损人利己”

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

【机器学习】 人工智能和机器学习辅助决策在空战中的未来选择

&#x1f680;传送门 &#x1f680;文章引言&#x1f512;技术层面&#x1f4d5;作战结构&#x1f308;替代决策选项&#x1f3ac;选项 1&#xff1a;超级战争&#xff08;Hyperwar&#xff09;&#x1f320;选项 2&#xff1a;超越OODA&#x1f302;选项 3&#xff1a;阻止其他…

C# OpenCvSharp Demo - 最大内接圆

C# OpenCvSharp Demo - 最大内接圆 目录 效果 项目 代码 下载 效果 项目 代码 using OpenCvSharp; using System; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Windows.Forms; namespace OpenCvSh…

祝贺!触想获评第二十一届“深圳知名品牌”

5月9日&#xff0c;第八届“深圳(湾区)国际品牌周”活动盛大开幕&#xff0c;会上公布并表彰了一批具有高创新力和竞争力的品牌名单。作为工控物联领域优秀品牌代表&#xff0c;触想智能与各级政府领导、国内外品牌界权威专家、知名企业领袖和企业代表同台共庆&#xff0c;并收…

麦肯锡专访 Mistral AI CEO:三五年后的工作,要比现在更有意义

【编者按】总部位于巴黎的人工智能初创公司 Mistral AI 成立仅一年&#xff0c;就被誉为现有大模型巨头的有力挑战者。 今年 2 月&#xff0c;Mistral AI 正式发布了旗舰级大模型 Mistral Large&#xff0c;直接对标 OpenAI 的 GPT-4&#xff1b;几周前&#xff0c;Mistral AI…

TriDet: Temporal Action Detection with Relative Boundary Modeling

标题&#xff1a;TriDet&#xff1a;采用相对边界建模的时间动作检测 原文链接&#xff1a;TriDet: Temporal Action Detection With Relative Boundary Modeling (thecvf.com)https://openaccess.thecvf.com/content/CVPR2023/papers/Shi_TriDet_Temporal_Action_Detection_W…

第五章 5.2【Java类和对象】---封装和构造方法

一、单个对象内存图 二、多个对象内存图 三、多个对象指向相同 四、成员变量和局部变量 4.1 成员变量&#xff1a; 在类里面&#xff0c;方法外面的变量 4.2 局部变量&#xff1a; 在方法中的变量 4.3下面的代码来演示&#xff1a; 4.4两者的区别 五、封装 六、构造方法 6.…

专题六_模拟(3)

目录 1419. 数青蛙 解析 题解 1419. 数青蛙 1419. 数青蛙 - 力扣&#xff08;LeetCode&#xff09; 解析 题解 class Solution { public:int minNumberOfFrogs(string croakOfFrogs) {// 44.专题六_模拟_数青蛙_Cstring t "croak";int n t.size();vector<in…

RabbitMQ的用途

RabbitMQ主要有四个用途&#xff0c;分别是应用解耦、异步提速、削峰填谷、消息分发。详情讲解如下&#xff1a; RabbitMQ介绍、解耦、提速、削峰、分发 详解、RabbitMQ安装 可视化界面讲解 1.应用解耦&#xff1a;提高系统容错性和可维护性 2.异步提速&#xff1a;提升用户体验…

减瘦误区、雷点、陷阱和挑战怎么应对

在减瘦过程中&#xff0c;很多肥胖人群都容易踩到坑。比如陷入误区&#xff0c;认为只有短期快速的减调方式方法&#xff0c;才值得尝试&#xff0c;而忽视身体健康&#xff1b;或是踩到雷点&#xff0c;轻信强速方剂或方法&#xff0c;结果身体产生了排斥或根本没效用白花钱&a…

4. 初探MPI——集体通信

系列文章目录 初探MPI——MPI简介初探MPI——&#xff08;阻塞&#xff09;点对点通信初探MPI——&#xff08;非阻塞&#xff09;点对点通信初探MPI——集体通信 文章目录 系列文章目录前言一、集体通信以及同步点二、MPI_Bcast 广播2.1 使用MPI_Send 和 MPI_Recv 来做广播2.…

2024美国虚拟信用卡申请流程

一、消费场景 二、如果申请 Fomepay美国虚拟信用卡 1.打开 Fomepay官方网站地址 2、登录之后根据自己的需求选择卡bin 3、点击申请卡&#xff0c;选择金额、填写姓名&#xff0c;选择微信/支付宝点击确认开卡即可 记得刷新页面哦~~~~~ 卡信息在卡中心cvc安全码里面 4、虚拟信…

一站式PDF解决方案:如何部署自己的PDF全能工具(Docker部署和群晖部署教程)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 开始部署 📒📝 Docker部署📝 群晖部署📝 本地安装⚓️ 相关链接 ⚓️📖 介绍 📖 在数字化办公的今天,PDF文件几乎成了我们日常工作中不可或缺的一部分。但你是否曾因为PDF文件的编辑、转换、合并等问题而头疼?如果…

面向对象设计之套路——设计模式

1、总则 面向对象的分析设计编程思想&#xff0c;通过封装、继承、多态把程序的耦合度降低&#xff0c;用设计模式使得程序更加灵活&#xff0c;容易修改&#xff0c;并且易于复用。 让业务逻辑与界面逻辑分开&#xff0c;让它们的耦合度下降&#xff0c;只有分离&#xff0c;…

气膜体育馆:有效防范PM2.5—轻空间

在现代城市生活中&#xff0c;雾霾天气频发&#xff0c;PM2.5污染日益严重&#xff0c;给人们的健康和生活带来了不小的困扰。而气膜体育馆作为一种新型的运动场所&#xff0c;不仅能够解决户外运动受到天气影响的问题&#xff0c;还具备有效防范PM2.5的功能。轻空间将带您探讨…

在centos7中运行向量数据库PostgreSQL连接不上如何排查?

1. 检查 PostgreSQL 服务状态 首先&#xff0c;您需要确认 PostgreSQL 服务是否正在运行。您可以使用以下命令来检查服务状态&#xff1a; sudo systemctl status postgresql如果服务没有运行&#xff0c;您需要启动它&#xff1a; sudo systemctl start postgresql2. 确认 …

力扣每日一题- 给植物浇水 II -2024.5.9

力扣题目&#xff1a;给植物浇水 II 题目链接: 2105.给植物浇水 II 题目描述 代码思路 根据题目内容&#xff0c;使用双指针从左右两边同时向中间移动&#xff0c;模拟浇水过程即可。 代码纯享版 class Solution {public int minimumRefill(int[] plants, int capacityA, …

永倍达 最新消息!发放消费券! 重新开网?

大家好 我是一家软件开发公司的产品经理 吴军 我又又又又又叕来蹭热度了&#xff0c;最近永倍达有新动作&#xff01;发放消费券&#xff1f; 店长群最新通知 4.15号开始发放消费券 一个月之后才可以重新提现 今天是5.10号离5.18也不远了 大家拭目以待看看到底能不能提现&a…

数据库调优-连接池优化

先贴下连接池的相关配置&#xff1a; 连接池参数配置&#xff1a; 字段含义Max Number of Connections最大连接数&#xff1b;做性能测试时&#xff0c;可以填 0 。在开发的项目中按实际代码填写&#xff0c;默认是 20 。Max Wait(ms)在连接池中取回连接最大等待时间&#xf…