PCIe锁定事务(Locked Transactions)介绍




✨ 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的原理及体系结构,马锦明,朱剑冰 等著
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MangoPapa

请作者喝瓶可乐吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值