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

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消息的有效载荷复制到该寄存器中。 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

函数重载和函数模板

c语言中函数名字不可重复,但是可以写代码实现 普通的函数重载 这些同名函数的形参列表(参数个数 或 类型 或 顺序)必须不同和返回值没有关系(因为就像我想调用Add(1,2),Add重载的几个函数仅仅返回值不同,编辑器就不知道去找哪一个,就有歧义了) 情况1-数组 int ave(int*pa,i…

计算机毕业设计Python地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Flink Hadoop 深度学习 机器学习 人工智能 知识图谱

学生信息 姓名:  祁浩 题目: 基于Python的中国地震数据分析与可视化系统的设计与实现 学号: 2020135211 班级: 20大数据本科2班 指导教师: 刘思思 答辩过程 学生开题陈述 为了让学习者更好的了解了解地震…

python数据分析——pandas数据结构2

参考资料:活用pandas库 导入基础数据 # 导入库 import pandas as pd # 读取数据集 dfpd.read_csv(r"..\data\scientists.csv") df.head() 1、DataFrame DataFrame是Pandas中最常见的对象。可以把它看作python存储电子表格式数据的方式。Series数据结构…

手机在网状态多方面重要性

手机在网状态的重要性体现在多个方面,它是现代社会中人们保持联系、获取信息以及进行日常活动不可或缺的一部分。以下是一些关于手机在网状态重要性的详细解释: 通信联系: 手机是在现代社会中进行通信联系的主要工具。当手机处于在网状态时&…

攻防世界-NewsCenter

题目信息 分析过程 题目打开是有个输入框可以用来输入搜索信息,初步判断是个sql注入的题目。接下来判断能否进行sql注入: 输入 hi,有搜索结果,如下图: 输入hi’,无结果,如下图: 初步判定是hi‘后面还有单引…

Android内核之解决报错:error: ISO C90 forbids mixing declarations and code(七十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

璩静是为了薅百度羊毛

关注卢松松,会经常给你分享一些我的经验和观点。 百度副总裁璩静离职了,网传她的年薪是1500万,而璩静在4月24日注册了一个文化传媒公司,大家都认为璩静是在为离职做准备。但松松我认为不是。 我认为:璩静成立新公司是…

波动性悖论:为何低风险股票长期跑赢高风险对手?

从去年开始,“红利低波”类的产品净值稳步向上,不断新高,让很多人关注到了A股“分红高”、“波动率低”这两类股票。分红高的公司更受投资者青睐,这从基本面的角度很容易理解,那么波动率低的股票明明波动更小&#xff…

前端笔记-day1

文章目录 01-标签的写法02-HTML的基本骨架03-标签的关系04-注释05-标题标签06-段落标签07-换行与水平线标签08-文本格式化标签09-图像的基本使用10-图像的属性12-绝对路径13-超链接14-音频15-视频标签16-招聘案例18-个人简历19-vue简介 01-标签的写法 <strong>文字内容&…

解决NVM 下载node.js慢问题->最新镜像

一、NVM 介绍 nvm是node版本管理工具&#xff0c;可以运行在多种操作系统上。这里主要记录一下在windows系统的安装和使用。 在使用过程中&#xff0c;下载其他版本时会出现下载慢或卡住或下载失败的情况&#xff0c;是因为服务器在国外&#xff0c;网络原因导致&#xff0c;…

使用socat做端口转发

最近买的云上mongo数据库但是数据库不支持外网访问&#xff0c;准备做iptables转发但是一直不成功&#xff0c;腾讯云官方给予的解释是受服务器内启动的docker影响 做iptables转发会冲突&#xff0c;所以只能另想办法&#xff0c;我发现使用socat做转发也很好用&#xff0c;所以…

3D 生成重建009-DreamGaussian使用gaussian splatting在两分钟内生成3d

3D 生成重建009-DreamGaussian使用gaussian splatting在两分钟内生成3d 文章目录 0 论文工作1 论文方法2 效果 0 论文工作 DreamGaussian是第一个使用gaussian splatting方法进行3d生成的工作。论文最先使用gaussian splatting替代原来用nerf表示3d。整体架构依然保留了原来的…

C++调用有依赖库的python函数(VS2017+WIN10+Anaconda虚拟环境)

情况1.在写的函数中依赖了能够pip的库&#xff0c;例如numpy库、torch库,见下面的函数&#xff1a; import numpy as np import torch def add1(a, b):# 确保a和b都是NumPy数组a_array np.array(a) if not isinstance(a, np.ndarray) else ab_array np.array(b) if not isins…

云贝教育 |【直播课】5月19日Oracle 19c OCM认证大师课 即将上课了!(附课件预览)

贝教育独家认证课OCM全网价格最低&#xff0c;性价比最高&#xff01;&#xff01;&#xff01; Oracle 19c OCM认证大师培训 - 课程体系 - 云贝教育 (yunbee.net) OCM部分课件预览 Oracle Database 19c Certified Master Exam (OCM) 认证大师 25 天 / 150课时 什么是Oracle 1…

利用IP地址查询解决被“薅羊毛”的方法

在互联网时代&#xff0c;随着各种网络诈骗手段的不断更新和演变&#xff0c;“薅羊毛”成为了一种常见的网络犯罪行为。其中&#xff0c;利用查询IP地址进行欺诈活动已经成为一种普遍的手段。当个人或组织的IP地址被不法分子查询后&#xff0c;可能会面临虚假注册、盗取个人信…

LLM一些适合小白的入门项目和视频

AIX 大模型专区学习&#xff08;史上最丰富&#x1f973;&#xff09; https://github.com/stay-leave/enhance_llm 图谱大哥五一写得。 【对于卷积神经网络&#xff0c;硕士博士不需要搞明白原理&#xff0c;只要会应用是这样吗&#xff1f;-pytorch/深度学习/神经网络】 htt…

系统分析师论文——论软件需求分析方法和工具的选用

现已临近2024年软考&#xff0c;周围一些报名参加系统分析师考试的“小伙伴”还未准备论文&#xff0c;我分享早年写的一些内容&#xff08;包括参加继续教育准备的论文&#xff09;&#xff0c;仅供大家结合最新考纲要求酌情参考&#xff0c;希望予人玫瑰&#xff0c;手有余香…

政安晨:【Keras机器学习示例演绎】(四十三)—— 使用 KerasNLP 实现英语到西班牙语的翻译

目录 简介 设置 下载数据 解析数据 数据标记化 格式化数据集 建立模型 训练我们的模型 解码测试句子&#xff08;定性分析&#xff09; 解码测试句子&#xff08;定性分析&#xff09; 评估我们的模型&#xff08;定量分析&#xff09; 10 个轮次后&#xff0c;得分…

声明变量的六种方法

ES6 声明变量的六种方法 varfunctionletconstclassimport 顶层对象的属性 1. ES6 声明变量的六种方法 ES5 只有两种声明变量的方法&#xff1a; var 命令和 function 命令。 ES6 除了添加 let 和 const 命令&#xff0c;还有另外两种声明变量的方法&#xff1a; import 命令和…

matlab使用教程(69)—创建包含多个 x 轴和 y 轴的图

此示例说明如何创建这样一张图&#xff0c;通过坐标区底部和左侧的轴放置第一个绘图&#xff0c;并通过坐标区顶部和右侧的轴放置第二个绘图。 使用 line 函数绘制一个红色线条。将 x 轴和 y 轴的轴线颜色设置为红色。 注意&#xff1a;从 R2014b 开始&#xff0c;您可以使用圆…