PCIe锁定事务(Locked Transactions)介绍

article/2025/9/20 13:09:57




✨ 1. 锁定事务背景介绍

  有些CPU在执行指令的过程中有可能误触发锁定而进入锁定访问模式。比如,一些传统的软件并不需要exclusive访问,但由于错误地使用了现如今会导致锁定的事务而对PCIe链路产生了锁定。由于锁定访问IO设备会潜在引入死锁、恶化传输性能,故(纯粹的)PCIe EP被禁止使用锁定访问,新的软件也不允许使用含有锁定访问IO设备操作的指令。为避免使用传统软件的系统访问IO设备造成死锁,在PCIe系统中常采用RC代替主机CPU发起锁定事务。

  锁定事务是非转发事务,有三种:锁定存储器读请求(MRdLk)、与锁定存储器读请求对应的不带数据的完成(CplLk)及与锁定存储器读请求对应的带数据的完成(CplDLk)。PCIe系统中只允许RC发起锁定访问,不允许EP及bridge发起锁定访问,支持锁定访问的传统EP也仅用于兼容已有的旧版本软件。这符合PCI协议exclusive访问中对锁定事务的限制条件。锁定存储器读事务协议示意图如图1所示。

在这里插入图片描述

图1 锁定存储器读事务协议示意图



✨ 2. 锁定事务的发起及传输

  锁定事务是在写请求事务之后由主机CPU发起的一笔或多笔读请求事务,读请求与写请求的目标地址相同。锁定存储器读请求TLP利用包头标里的信息向下游路由,通过交换开关,到达目标完成者。该请求的完成者只能是传统EP。一旦锁定建立,在被锁定的RC到传统EP或桥之间的路径上,所有其他请求都会被阻塞。

📌  锁定事务的发起及传输遵循以下规则

  • 锁定事务序列以MRdLk、CplDLk等锁定事务开始,以解锁消息结束。
  • 解锁消息用以指示锁定解除,由RC下发给完成者,也可以采用广播的方式广播给所有EP及桥,与锁定无关的设备会忽略该消息。
  • 解锁消息由交换节点将其传递给交换节点中锁定了的出端口。
  • 收到解锁消息后,传统EP及交换节点必须解除锁定。对于PCIe EP或桥等不支持锁定的接收者,解除锁定对齐无影响。
  • 所有违反锁定事务发起/传输规则的都有可能导致未知的设备/系统行为。
  • 以MRdLk开始的锁定事务,其接下来的存储器读请求也必须是锁定访问,收到CplDLk表示读成功,CplLk表示失败。若锁定读请求请求失败,意味着锁定访问的原子性被破坏,请求者与完成者之间的锁定也不复存在。
  • 没有存储器写的锁定请求,只有正常的存储器写请求。


✨ 3. 各PCIe组件的锁定访问规则

👉3.1 交换节点的锁定访问规则

  交换节点必须对锁定事务及非锁定事务进行区分,防止锁定事务影响到非锁定事务,导致潜在的死锁。交换节点应遵循以下规则:

  • 交换节点从入端口到出端口传递MRdLk请求时,需阻塞住所有送往出端口的映射到VC0的访问请求。若接下来交换节点入端口收到了另一笔送往其他出端口(不同于上一MRdLk出端口),目前尚无相关规范。PCIe不支持出端口不同的锁定访问,软件也不能产生这种锁定请求。一旦出现这种情况,系统极有可能被死锁。
  • 在发出MRdLk请求后并收到CplDLk后,若完成状态为成功,交换节点需阻塞住所有传输在锁定访问相关端口上的非锁定请求。当然,出端口上映射到VC0的请求事务不受此影响。
  • 交换节点与锁定访问相关的入端口与出端口应保持锁定状态,直到当初收到锁定请求的入端口收到解锁消息之后才能解除锁定。解锁消息必须转发至出端口,也可以广播至所有其他端口。跟锁定访问无关的端口不受解锁消息的影响。

  📌 注:以上锁定访问事务仅限于TC0


👉3.2 PCIe-PCI桥的锁定访问规则

 PCIe-PCI桥的锁定访问规则与交换节点相似。由于PCIe-PCI桥仅适用于VC0/TC0,一旦开启了锁定访问,在PCIe-PCI桥上所有其他非锁定请求也都被阻塞住了。


👉3.3 RC的锁定访问规则

 RC允许作为锁定事务的请求者。若RC支持锁定事务,RC需遵循第2节的规则才能发起锁定访问。


👉3.4 传统EP的锁定访问规则

 传统EP支持锁定访问,但不建议使用。若传统EP支持锁定访问,其应按照如下规则处理锁定访问:

  • 传统EP在收到第一笔锁定读请求之后反馈一笔完成消息。若完成状态为不成功,传统EP不能锁定;若完成状态为成功,传统EP锁定。
  • 锁定以后,传统EP禁止发送任何TC映射到VC0的请求事务,但仍然可以采用其他TC(非映射到VC0)发送请求事务。

👉3.5 PCIe EP的锁定访问规则

 PCIe EP不支持锁定,PCIe EP将MRdLk请求当作UR处理。



📚参考

  1. PCI Express Base Specification Revision 5.0 Version 1.0 (22 May 2019)
  2. PCI Express Technology - Comprehensive Guide to Generation1.x, 2.x and 3.0. Mike Jacson, Ravi Budruk, MindShare, Inc.
  3. PCI、PCI-X和PCI Express的原理及体系结构,马锦明,朱剑冰 等著

http://chatgpt.dhexx.cn/article/6hNEmYug.shtml

相关文章

Lock(锁)

Lock(锁) 从JDK5.0开始,Java提供了更强大的线程同步机制——通过显示定义同步锁对象来实现同步,同步锁使用Lock对象充当java.util.concurrent.locks.Lock接口是控制多个线程对共享线程进行了访问的工具。锁提供了对共享资源的独占访问,每次只…

lock的使用

1、获取lock锁对象 2、通过lock锁对象创建Condition实例绑定到lock锁对象上 3、上锁:lock.lock() 4、try…catch执行业务 5、finally中释放锁:lock.unlock() package com.han.demo01;import java.util.concurrent.locks.Condition; import java.util.c…

如何理解Lock

显示锁 JDK层面提供了Lock锁都是通过Java提供的接口来手动解锁和释放锁的,所以在某种程度上,JDK中提供的Lock锁也叫显示锁、JDK提供的显示锁位于java.util.concurrent.locks包下,Lock接口的源码如下: public interface Lock {vo…

锁(Locks)

锁(Locks) 1 ReentrantLock 应用demo 可重入锁,是一种使用递归无堵塞的同步机制 比 synchronized 更强大、更灵活的锁机制,可以减少死锁发生的概率 默认为非公平锁,可以自定义为公平锁 底层采用 AQS 实现,通过内部 Sync 集成…

lock锁

目录 1. lock 基本用法 2. lock公平锁与非公平锁 3. lock注意事项 4. synchronized 与 lock区别 1. lock 基本用法 lock.lock(); try {} finally {lock.unlock() }或者try {lock.lock(); } finally {lock.unlock() }public class ThreadLock1 {public static void main(S…

LOCKED勒索病毒解密 数据恢复

什么是LOCKED勒索病毒 LOCKED勒索病毒是由Michael Gillespie发现的。该恶意程序旨在通过加密来阻止对存储在计算机上的文件的访问。为了解密他们的文件,鼓励受害者购买解密工具。与大多数此类程序一样,[LOCKED] 重命名所有加密文件,在本例中…

服务器数据中了locked勒索病毒,有关locked勒索病毒的介绍与预防建议

随着网络的普及和科技技术的发展,网络安全问题日益突出。而其中,勒索病毒就是一种常见的网络安全威胁。一旦企业的服务器数据库被勒索病毒攻击,会导致企业内部的重要数据被加密,给工作和生产生活带了极大的困扰。下面就为大家介绍…

locked 勒索软件

1.Locked介绍 Locked病毒属于Void Crypt 勒索软件家族。该勒索软件会加密 PC 上的所有用户数据(照片、文档、Excel 表格、音乐、视频等),将其特定扩展名添加到每个文件,并在每个包含加密文件的文件夹中创建文件。 2.我是如何在我…

MEID

MEID简介 Mobile Equipment IDentifier(MEID)是全球唯一的56bit移动终端标识号。标识号会被烧入终端里,并且不能被修改。可用来对移动式设备进行身份识别和跟踪。由于ESN号段是有限的资源,基本上耗尽,可能还有少量回收…

科谱|MEID表格如何填写,99开头,MEID怎么申请,MEID申请表填写

作为通信产品最常见的三大主流号码之一MEID最近这些年的存在感确实偏低了点,尽管如此还是有大量需要使用MEID号码的产品,及时快速准确的申请到号码还是必不可少的。 文化的差异和语言的不通会造成不大不小的麻烦,今天我们结合最新版的申请表…

关于安卓系统4.0/5.0/6.0获取单卡手机,双卡手机的imei1,imei2,meid(用反射来实现,史上最详细,最全面获取)--binbinyang

有的人问我要代码跟例子,上次在GITHUB上弄了一个,提供地址 给大家 https://github.com/binbinyYang/GetPhoneInfo https://github.com/binbinyYang/GetPhoneInfo -------------------------------------------------------- 最近这3天,一直在…

MEID 的构成

MEID 的构成如下,针对 Hex 格式: 最后一位是 CD,这个 CD 不是 MEID 的组成部分,真正的 MEID 是前 14 位。在手机与基站进行 MEID 检查时,手机提交的 MEID 不能包含 CD 位,否则就会出错。当初设计此 CD 位主…

Mina MEID/GSM Activator 1.0 三网信号激活,支持iOS12.0~14.8.1

Mina团队已经更新工具,现在支持MEID/GSM三网和两网解锁信号!支持iOS14.8系统,两网价格和三网价格一样。 Mina MEID/GSM Activator可以激活所有MEID/GSM二网、三网恢复信号,并且支持打电话、短信、4G流量上网,支持iPhon…

高通芯片联机读取修改串码 meid ESN wifi 蓝牙 sn等参数的操作解析{二}

上次我发了几个相关联机读写参数的帖子。很多友友询问有没有其他相关软件来解读参数的教程。今天就来个续集来解析参数读写 关于安卓机型写串码 改串码 端口开启和基带qcn等一些经验 高通联机修改IMEI等参数的相关解析 高通芯片基带相关的软件 QPST QXDM DFS等等&#xff0c…

说说移动设备的各种标识码(DeviceID, IMEI, UUID, UDID, OAID, IDFA, GAID)

转战广告行业,收集整理一波移动设备各种标识码的含义当做基础知识储备 一、名词解释 Device ID:设备ID。IMEI:(International Mobile Equipment Identity)国际移动设备标识的缩写。是由15位数字组成的“电子串号”&a…

Mina MEID/GSM Activator 1.0 三网信号激活,支持12.5.3~14.7

Mina团队已经更新工具,现在支持MEID/GSM三网和两网解锁信号!支持iOS14.7系统,两网价格和三网价格一样。 Mina MEID/GSM Activator可以激活所有MEID/GSM二网、三网恢复信号,并且支持打电话、短信、4G流量上网,支持iPhon…

Mina MEID Activator 2.120210512更新使用说明支持三网(移动、联通、电信)国行版手机解锁打电话4G苹果手机激活锁停用Hello密码锁绕ID屏幕锁密码

Mina MEID Activator 是由Minacriss开发的新工具。可以激活所有MEID三网的信号恢复,并且支持打电话、短信、4G流量上网。支持iPhone5sX直接所有型号,支持iOS12.5.2iOS14.4.2。MEID三网指:不小心忘记ID密码,而且已经刷机并且是激活…

关于IMEI、MEID、IMSI

关于IMEI、MEID、IMSI 简介 IMEI、MEID都是用于标识一台物理设备的ID信息。在Android 8.0以下系统提供的API中,会根据不同条件返回二者之一的信息。 IMEI: 国际移动设备识别码,是区别移动设备的标志,一般用于标识某一台独立的设…

2022最新手机设备标识码(IMEI、MEID、UDID、UUID、ANDROID_ID、GAID、IDFA等)教程

Android篇 1 IMEI和MEID (1) IMEI (International Mobile Equipment Identity) 是国际移动设备身份码的缩写,国际移动装备辨识码,只有Android手机才获取的到,是由15位数字组成的"电子串号",比如像这样 35988103031435…

安卓唯一标识:IMEI,MEID,MAC地址,Android_id,UUID,OAID

目录 IMEI: MEID: MAC地址: Android_id: UUID: OAID: 安卓设备的唯一标识,获取的目的在于数据统计,广告归因分析等用途。常用作唯一标识的有IMEI,MEID,…