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

2024-05-12 13:28

本文主要是介绍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消息的有效载荷复制到该寄存器中。 

 

 

 

 

这篇关于PCIE协议-2-事务层规范-Message Request Rules的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/982754

相关文章

探索蓝牙协议的奥秘:用ESP32实现高质量蓝牙音频传输

蓝牙(Bluetooth)是一种短距离无线通信技术,广泛应用于各种电子设备之间的数据传输。自1994年由爱立信公司首次提出以来,蓝牙技术已经经历了多个版本的更新和改进。本文将详细介绍蓝牙协议,并通过一个具体的项目——使用ESP32实现蓝牙音频传输,来展示蓝牙协议的实际应用及其优点。 蓝牙协议概述 蓝牙协议栈 蓝牙协议栈是蓝牙技术的核心,定义了蓝牙设备之间如何进行通信。蓝牙协议

vue+elementui--$message提示框被dialog遮罩层挡住问题解决

最近碰到一个先执行this.$message提示内容,然后接着弹出dialog带遮罩层弹框。那么问题来了,message提示框会默认被dialog遮罩层挡住,现在就是要解决这个问题。 由于都是弹框,问题肯定是出在z-index比重问题。由于用$message方式是写在js中而不是写在html中所以不是很好直接去改样式。 不过好在message组件中提供了customClass 属性,我们可以利用

Spring中事务的传播机制

一、前言 首先事务传播机制解决了什么问题 Spring 事务传播机制是包含多个事务的方法在相互调用时,事务是如何在这些方法间传播的。 事务的传播级别有 7 个,支持当前事务的:REQUIRED、SUPPORTS、MANDATORY; 不支持当前事务的:REQUIRES_NEW、NOT_SUPPORTED、NEVER,以及嵌套事务 NESTED,其中 REQUIRED 是默认的事务传播级别。

【杂记-浅谈DHCP动态主机配置协议】

DHCP动态主机配置协议 一、DHCP概述1、定义2、作用3、报文类型 二、DHCP的工作原理三、DHCP服务器的配置和管理 一、DHCP概述 1、定义 DHCP,Dynamic Host Configuration Protocol,动态主机配置协议,是一种网络协议,主要用于在IP网络中自动分配和管理IP地址以及其他网络配置参数。 2、作用 DHCP允许计算机和其他设备通

分布式事务的解决方案(一)

前言应用场景 事务必须满足传统事务的特性,即原子性,一致性,分离性和持久性。但是分布式事务处理过程中, 某些场地比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的这个商品数量必须减1吧,怎么保证? 在搜索广告系统中,当用户点击某广告后,除了在点击事件表中增加一条记录外, 还得去商家账户表中找到这个商家并扣除广告费吧,怎么保证? 一 本地事务 以用户A

no thread-bound request found:are you referring to request

问题描述: 通过webservice接口调用程序时,发现在执行查询的时候一直报一个错误,错误信息如下: java.lang.IllegalStateExceptino:No thread-bound request found:are you referring to request attributes outside of an actual web request,or processi

【笔记】事务隔离级别以及MVCC解决幻读

事务提交可能碰到的问题: (1)脏读:事务1对数据进行修改但还没提交,事务2读取修改后的数据,之后事务1执行错误,回滚了,此时事务2的数据是错误的脏数据。 (2)不可重复读:事务1读取数据1后,事务2对数据1进行修改,之后事务1的再次读取数据1时,发现前后读取结果不一致 (3)幻读:事务1根据条件查询到一批数据后,事务2删除或增加或修改了某些数据,之后事务1再次根据条件查询,发现读取的数据数量不对

query string parameters 和request payload

HTTP请求中,如果是get请求,那么表单参数以name=value&name1=value1的形式附到url的后; post请求:表单参数是在请求体中,也是name=value&name1=value1的形式在请求。 export const voucherDetailAdd=(token,formStr) =>{return axios.post(`${base}/voucher/deta

scrapy 爬网站 显示 Filtered offsite request to 错误.

爬取zol 网站图片,无法抓取. 在 setting.py 文件中 设置 日志 记录等级  LOG_LEVEL= 'DEBUG' LOG_FILE ='log.txt' 查看日志 发现报 2015-11-07 14:43:43+0800 [meizitu] DEBUG: Filtered offsite request to 'bbs.zol.com.cn': <GET h

视频监控平台:支持交通部行业标准JT/T905协议(即:出租汽车服务管理信息系统)的源代码的函数和功能介绍及分享

目录 一、视频监控平台介绍 (一)概述 (二)视频接入能力介绍 (三)功能介绍 二、JT/T905协议介绍 (一)概述 (二)主要内容 1、设备要求 2、业务功能要求 3、技术功能要求 4、性能要求 5、接口要求 6、设备通信协议与数据格式 三、代码和解释 (一)代码和注释 (二)函数功能说明 1. 头文件保护 2. 包含必要的头文件 3. 引入命名空间std