PCIE协议-2-事务层规范-Message Request Rules

news2024/11/18 8:28:30

2.2.8 消息请求规则

本文档定义了以下几组消息:

  • INTx 中断信号
  • 电源管理
  • 错误信号
  • 锁定事务支持
  • 插槽电源限制支持
  • 厂商定义消息
  • 延迟容忍度报告(LTR)消息
  • 优化缓冲区冲洗/填充(OBFF)消息
  • 设备就绪状态(DRS)消息
  • 功能就绪状态(FRS)消息
  • 精确时间测量(PTM)消息
  • requester ID[15:0] 和Tag[9:0],形成事务ID。
  • message code[7:0] - 指定请求中体现的特定消息。
  • 所有消息请求使用 Msg 或 MsgD 类型字段编码。
  • message code字段必须完全解码(不允许消息别名)。
  • Attr[2] 字段不是保留的,除非特别标明为保留。
  • Attr[1:0] 字段是保留的, 除非另有注明。
  • LN 不适用于消息请求,该位是保留的。
  • TH 不适用于消息请求,该位是保留的,除非另有注明。
  • AT[1:0] 必须是 00b,接收方不要求或鼓励检查这一点。
  • byte8 到 15 是保留的,除非另有注明。
  • 消息请求是转发的,不需要完成返回。
  • 消息请求遵循与内存写请求相同的排序规则。

包括厂商定义消息在内的许多类型的消息,可能在非 D0状态下使用,强烈建议当端口的桥接功能处于 D1、D2 和 D3Hot 状态时,端口处理消息的方式与处于 D0 状态时相同。强烈建议 type0功能支持在非 D0状态下生成和接收消息。

除了地址和ID路由之外,消息还支持几种其他的路由机制。这些机制被称为“隐式”的,因为不需要指定地址或ID来确定目的地,而是通过路由类型隐含目的地。以下规则涵盖了消息路由机制:

  • 消息路由使用类型字段的 r[2:0] 子字段来确定
  1. 消息路由的 r[2:0] 值在表 2-17 中定义
  2. 每个消息的允许值在以下各节中定义

 

2.2.8.1 INTx 中断信号规则

消息信号中断(MSI 或 MSI-X)是 PCI Express 中首选的中断信号机制(见第 6.1 节)。然而,在某些系统中,可能存在无法支持 MSI 或 MSI-X 机制的功能。INTx 虚拟线中断信号机制用于支持传统终端和 PCI Express/PCI(-X)桥接,在不能使用 MSI 或 MSI-X 机制的情况下使用。Switch必须支持此机制。以下规则适用于 INTx 中断信号机制:

  • INTx 机制使用八个不同的消息(见表 2-18)。
  • Assert_INTx/Deassert_INTx 消息不包括数据有效载荷(TLP 类型为 Msg)。
  • 长度字段是保留的。
  • 使用 Assert_INTx/Deassert_INTx 消息时,requester ID 中的function number字段必须是 0。请注意,对于非 ARI 和 ARI 请求者 ID,function number字段的大小是不同的。
  • Assert_INTx/Deassert_INTx 消息只能由上游端口发出。接收方可以选择性检查此规则的违规情况,如果接收方实施此检查并确定 Assert_INTx/Deassert_INTx 违反此规则,它必须将 TLP 作为畸形 TLP 处理。这是一个与接收端口相关联的报告错误(见第 6.2 节)。
  • Assert_INTx 和 Deassert_INTx 中断消息必须使用默认的流量类别指定符(TC0)。接收方必须检查此规则的违规情况,如果接收方确定 TLP 违反此规则,它必须将 TLP 作为畸形 TLP 处理。这是一个与接收端口相关联的报告错误(见第 6.2 节)。

 Assert_INTx/Deassert_INTx 消息对构成了每个传统 PCI 中断(指定为 A、B、C 和 D)的四个“虚拟线”。 以下规则描述了这些虚拟线的操作:

  • 每个链路两端的组件必须使用 Assert/Deassert 消息来跟踪四个虚拟线的状态,以代表每个对应虚拟线的激活和非激活转换(分别)。
    • Assert_INTx 表示 INTx(x = A、B、C 或 D)虚拟线的激活转换。
    • Deassert_INTx 表示 INTx(x = A、B、C 或 D)虚拟线的非激活转换。
  • 当上游端口的 INTx 虚拟线的状态的本地逻辑发生变化时,该端口必须使用适当的 Assert_INTx 或 Deassert_INTx 消息,将这种状态变化通知给同一链路另一端的下游端口。 注意:重复的 Assert_INTx/Deassert_INTx 消息没有效果,但不是错误。
  • 当命令寄存器的中断禁用位(见第 7.5.1.1.3 节)被设置时,INTx 中断信号被禁用。
    • 如果在设置中断禁用位时任何 INTx 虚拟线处于激活状态,则必须通过传输适当的 Deassert_INTx 消息来取消断言。
  • 虚拟和实际的 PCI-PCI 桥必须根据桥的次级侧的设备号,映射在桥的次级侧跟踪的虚拟线,如表 2-19 所示。
  • Switch必须独立跟踪每个下游端口的四个虚拟线的状态,并在其上游端口呈现一组“合并”的虚拟线。
  • 如果Switch的下游端口变为 DL_Down 状态,则与该端口相关联的 INTx 虚拟线必须被取消断言,并且相应更新Switch上游端口的虚拟线状态。
    • 如果这导致任何上游 INTx 虚拟线被取消断言,则上游端口必须发送适当的 Deassert_INTx 消息。
  • 根复合体必须独立跟踪其每个下游端口的四个 INTx 虚拟线的状态,并将这些虚拟信号映射到系统的中断资源。 映射的详细信息是特定于系统实现的。
  • 如果根复合体的下游端口变为 DL_Down 状态,则与该端口相关联的 INTx 虚拟线必须被取消断言,并且必须丢弃任何相关的系统中断资源请求。

2.2.8.2 电源管理消息

这些消息用于支持 PCI Express 电源管理。以下规则定义了电源管理消息:

  • 表 2-20 定义了电源管理消息。
  • 电源管理消息不包括数据有效载荷(TLP 类型为 Msg)。
  • 长度字段是保留的。
  • 对于 PM_Active_State_Nak 消息,requester ID 中的function number字段必须包含发送该消息的下游端口的function number,或者为了与本规范的早期版本兼容,使用 00b。
  • 对于 PME_TO_Ack 消息,请求者 ID 中的function number字段必须保留,或者为了与本规范的早期版本兼容,必须包含上游端口关联的某个function的fnction number。请注意,对于非 ARI 和 ARI 请求者 ID,function number字段的大小是不同的。
  • 电源管理消息必须使用默认的流量类别指定符(TC0),接收方必须检查此规则的违规情况。如果接收方确定 TLP 违反此规则,它必须将 TLP 作为畸形 TLP 处理。这是一个与接收端口相关联的报告错误(见第 6.2 节)。

2.2.8.3 错误信号消息

错误信号消息用于在特定事务上发生的错误以及不一定与特定事务相关联的错误进行信号传递。这些消息由检测到错误的agen发起。

  • 表2-21定义了错误信号消息。
  • 错误信号消息不包含数据有效载荷(TLP类型是消息)。
  • 长度字段是保留的。
  • 使用错误信号消息时,requester ID中的function number字段必须指明哪个功能正在发出错误信号。请注意,对于非ARI和ARI requester ID,function number字段的大小是不同的。
  • 错误信号消息必须使用默认的流量类别设计符(TC0)。接收器必须检查违反此规则的情况,如果接收器确定TLP违反了此规则,它必须将TLP作为畸形TLP处理。 这是一个与接收端口相关联的报告错误(见第6.2节)。

消息的发起者通过消息头标的requester ID进行识别。根复用体将这些错误消息转换成平台级事件。有关这些消息用途的详细信息,请参考第6.2节。

ERR_COR消息在消息头标中有一个ERR_COR Subclass(ECS)字段,该字段允许不同的子类相互区分。见图2-27,ERR_NONFATAL和ERR_FATAL消息没有ECS字段。

ERR_COR Subclass(ECS)字段按照表2-22所示进行编码,以指示ERR_COR消息的子类。

2.2.8.4 锁定事务支持

解锁消息用于支持锁定事务序列。有关锁定事务序列的详细信息,请参考第6.5节。以下是形成解锁消息的规则:

  • 表2-23定义了解锁消息。
  • 解锁消息不包含数据有效载荷(TLP类型是消息)。
  • 长度字段是保留的。
  • 使用解锁消息时,requester ID中function number字段是保留的。
  • 解锁消息必须使用默认的流量类别设计符(TC0)。接收器必须检查违反此规则的情况。如果接收器确定TLP违反了此规则,它必须将TLP作为畸形TLP处理。这是一个与接收端口相关联的报告错误(见第6.2节)。

 

 2.2.8.5 插槽电源限制支持

此消息用于从下游端口(RC或Switch的端口)向同一链路上的组件(具有EP、SW或PCI Express-PCI桥接功能)的上游端口传递插槽电源限制值。

  • 表2-24定义了Set_Slot_Power_Limit消息。
  • Set_Slot_Power_Limit消息包含1DW 的有效载荷(TLP类型是MsgD)
  • Set_Slot_Power_Limit消息必须使用默认的流量类别设计符(TC0)。接收器必须检查违反此规则的情况。如果接收器确定TLP违反了此规则,它必须将TLP作为畸形TLP处理。这是一个与接收端口相关联的报告错误(见第6.2节)。

Set_Slot_Power_Limit消息包含一DW的有效载荷。该数据有效载荷从下游端口的插槽能力寄存器复制,并写入链路另一端的上游端口的设备能力寄存器中。数据有效载荷的byte1的bit[1:0]映射到插槽电源限制范围字段,byte0的bit[7:0]映射到插槽电源限制值字段。数据有效载荷的byte3的bit[7:0]byte2的bit[7:0]以及byte1的bit[7:2]必须由发送器设置为零,并由接收器忽略。当以下事件发生时,下游端口(RC或SW的端口)必须自动发送此消息:

  • 在对插槽能力寄存器进行配置写入时,数据链路层报告DL_Up状态。
  • 在链路从非DL_Up状态转换为DL_Up状态的任何时刻,并且插槽控制寄存器中的自动插槽电源限制禁用位为清除状态。如果插槽能力寄存器尚未初始化,则此传输是可选的。

链路另一端的组件(具有端点、交换机或桥接功能),接收到Set_Slot_Power_Limit消息后,必须将数据有效载荷中的值复制到与组件的上游端口相关联的设备能力寄存器中。专门针对系统层(例如,系统主板)集成的PCI Express组件,以及针对集成在适配器上的组件,如果整个适配器的功耗低于适配器外形规格中指定的最低电源限制(如相应外形规格中定义的),则允许将设备能力寄存器中的所有插槽电源限制范围和插槽电源限制值字段的值硬连线为全零,并且不需要将Set_Slot_Power_Limit消息的有效载荷复制到该寄存器中。 

 

 

 

 

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

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

相关文章

单细胞分析:多模态 reference mapping (2)

引言 本文[1]介绍了如何在Seurat软件中将查询数据集与经过注释的参考数据集进行匹配。我们展示了如何将来自不同个体的人类骨髓细胞(Human BMNC)的人类细胞图谱(Human Cell Atlas)数据集,有序地映射到一个统一的参考框…

IP定位技术在打击网络犯罪中的作用

随着互联网的普及和信息技术的发展,网络犯罪日益猖獗,给社会治安和个人财产安全带来了严重威胁。而IP定位技术的应用为打击网络犯罪提供了一种有效手段。IP数据云将探讨IP定位技术在打击网络犯罪中的作用及其意义。 1. IP定位技术的原理 IP&#xff08…

【小白可懂】SpringBootWeb入门

web开发需要的技术栈: 前端web开发: html css javascript Vue Element Nginx 后端web开发: Maven SpringBoot Web 基础篇 MySOL SpringBoot Mybatis SpringBoot Web开发篇 SpringBoot web进阶篇 什么是spring? 官网&a…

静态分析-RIPS-源码解析记录-03

既然有源码可以debug,那么直接跑测试用例,来跟踪处理逻辑感觉比直接看代码理逻辑更快一些,尤其是涉及到了扫描阶段,不然不容易弄清某刻某个变量的取值。 对于所有漏洞而言,都是由sink点到source点检测是否有过滤函数&…

创作纪念日(一周年)

机缘 我进入CSDN成为创作者是去年2023年的五月份,当时是在学校报名了蓝桥杯单片机组的比赛,觉得单片机方面有许多精妙之处,并且自学初学单片机实在有许多奇巧的设计点,有许多编程与硬件实际运行需要磨合的地方,这些惊…

idea中使用git拉取代码详细操作

注意:解决 Git拉取代码和本地代码丢失问题请点这里查看 以textGit文件为例: 下图:本地刚拉取远程的代码 git上的代码 1、在本地对代码进行修改 2、在git上对代码进行修改,模拟其他人对此文件的提交修改 3、拉取远程代码 4、合并自…

栈实现队列

一、分析 栈的特点是先出再入,而队列的特点为先入先出,所以我们创造两个栈,一个用来存放数据,一个用来实现其它功能此时栈顶为队尾;当要找队头数据时将前n-1个数据移入到另一个栈中,此时剩余那个数据为队头…

多模态CLIP和BLIP

一、CLIP 全称为Contrastive Language-Image Pre-Training用于做图-文匹配,部署在预训练阶段,最终理解为图像分类器。 1.背景 以前进行分类模型时,存在类别固定和训练时要进行标注。因此面对这两个问题提出CLIP,通过这个预训练…

制造业如何选择合适的项目管理软件?(内含软件推荐)

近期,收到很多小伙伴的提问:“想了解制造行业如何选择到合适的项目管理软件?”在竞争激烈的市场环境中,有效的项目管理对于制造业的发展至关重要,而项目管理软件则是重要支撑,能帮助企业更好地规划和跟踪项…

ITMS-91053: Missing API declaration

1. 添加PrivacyInfo.xcprivacy File → New → File → App Privacy 2. 格式 3. 已知对应关系 NSPrivacyAccessedAPICategoryFileTimestamp 3B52.1: Files provided to app by user, per documentation:File Timestamp NSPrivacyAccessedAPICategoryDiskSpace …

BW4HANA混合建模 用ADSO的哪个视图?

写日志的ADSO除了1,2,3表之外。还会有6,7,8view。8view是上了BW4HANA2.0之后激活ADSO就会生成的。如果旧版本没有8,那就RSDG_ADSO_ACTIVATE激活一下。 如果勾了外部HANA视图,那就等于说还有一个HANA view。 首先咱知道ADSO是BW里面用来物理存储&#xf…

Web前端一套全部清晰 ⑦ day4 CSS.2 复合选择器、CSS特性、背景属性、标签的显示模式

别人的议论,那是别人的,你的人生,才是你的 —— 24.5.7 一、复合选择器 定义:由两个或多个基础选择器,通过不同的方式组合而成 作用:更准确、更高效的选择目标元素(标签) 1.后代选择…

选购洗地机有哪些技巧?2024洗地机全面解析,618洗地机综合对比

洗地机作为人们生活中智能清洁工具的代表,它自带清/污水箱,不用手洗滚刷,既可以吸尘也可以自动识别并清洗地板上的干湿垃圾和顽固污渍,它以多功能一体化的设计改善了家务清洁的效率和体验。那么如何在众多洗地机品牌中&#xff0c…

1016: 插入排序算法实现

解法&#xff1a; /* 插入排序 */ void insertionSort(vector<int>& nums) {// 外循环&#xff1a;已排序区间为 [0, i-1]for (int i 1; i < nums.size(); i) {int base nums[i], j i - 1;// 内循环&#xff1a;将 base 插入到已排序区间 [0, i-1] 中的正确位置…

VBA_MF系列技术资料1-605

MF系列VBA技术资料1-605 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-0…

iOS 安装cocoapds

注意 CocoaPods安装是基于ruby环境的&#xff0c;所以要安装CocoaPods先要安装Ruby环境&#xff0c;国内不能直接安装&#xff0c;只能通过VPN或淘宝的Ruby镜像来访问。 安装过程 gem sources --remove https://rubygems.org/ ** (注意是两个“-”&#xff0c;否则会移除失败) …

看马斯克与OpenAI的爱恨情仇,AGI之路会走向何方?

揭秘马斯克与OpenAI的决裂&#xff1a;AI的未来将何去何从&#xff1f; ©作者|Steven 来源|神州问学 引言 2024 年 3 月 1 日&#xff0c;时任OpenAI联合创始人的Elon Musk(下文简称&#xff1a;马斯克)将现任 CEO、创始人Sam Altman(下文简称&#xff1a;阿尔特曼)告上…

【C语言】—— 动态内存管理

【C语言】——动态内存管理 一、动态内存管理概述1.1、动态内存的概念1.2、动态内存的必要性 二、 m a l l o c malloc malloc 函数2.1、函数介绍2.2、应用举例 三、 c a l l o c calloc calloc 函数四、 f r e e free free 函数4.1、函数介绍4.2、应用举例 五、 r e a l l o …

如何将Hyper-V转VMware?反之亦可

为何要在Hyper-V和VMware之间进行转换呢&#xff1f; 尽管VMware和Microsoft Hyper-V都是当前流行的一类虚拟机监控程序&#xff0c;但它们并不相互兼容。VMware产品使用VMDK格式创建虚拟磁盘&#xff0c;而Hyper-V则使用VHD或VHDX格式创建虚拟磁盘。 有时您可能需要进行这种转…

【Qt-CMake】QT中cmak编译出现CMake Error: The source.. does not match the soused

QT中cmak编译出现CMake Error: The source… does not match the soused 分析 前提是该项目是从另一个路径的项目复制过来的&#xff0c;编写代码时发现无论怎样修改代码&#xff0c;运行后都没有任何变化&#xff0c;以为是qtbug&#xff0c;重构重启都没用&#xff0c;最后…