PCIe学习笔记(15)

设备就绪状态 (Device Readiness Status,DRS)消息

(Device Readiness Status (DRS) 是PCIe规范中引入的一种机制,旨在改进设备初始化和就绪状态的检测与报告

在以往的PCIe版本中,系统通常依赖于固定的超时机制来判断设备是否已经成功初始化并准备好进行数据传输。然而,这种方法存在一些局限性,例如某些设备可能因为各种内部条件导致初始化时间变长(可选择做DRS和FRS)而固定超时设置可能导致误判或不必要的延迟。例如,当由于某种内部条件导致设备初始化时间异常延长时,系统可能会错误地将该设备超时。

DRS的主要功能和优势:

精确的状态确认:DRS为系统提供了一个积极、准确的方式来确认设备已达到可操作状态。

动态适应性:不同设备可能具有不同的初始化时间和复杂度,DRS允许系统根据每个设备的实际需求调整等待时间,避免了过早或过晚的操作尝试。

性能优化:借助DRS,系统能够更快地识别哪些设备已经准备好处理请求,从而可以立即分配资源给这些设备,减少整体启动时间和提高系统响应速度。

增强稳定性:通过消除由于初始化超时设置不当导致的错误或不稳定情况,DRS有助于提升系统的稳定性和可靠性。

简化固件/软件设计:对于系统固件和操作系统来说,无需再为每种可能的设备类型和场景预设复杂的超时逻辑,而是可以根据设备提供的DRS信息做出决策,简化了驱动程序和系统软件的设计与实现。

参考:https://blog.csdn.net/zhuzongpeng/article/details/135351099

DRS (Device Readiness Status)协议使用pci - sig定义的VDM机制。DRS消息是pci - sig定义的VDM(供应商定义的1型消息),没有有效负载

与其他pci - sig定义的vdm不同,DRS Message的形成遵循以下规则:

•DRS Message的定义如表2-28和图2-31所示

•TLP类型必须为Msg。

•TC[2:0]字段必须为000b。

•Attr[2:0]字段是保留的。

•保留Tag字段。

•“Subtype”字段必须为“08h”。

•Message Routing字段必须设置为100b - Local - Terminate at Receiver。

接收方可以选择检查是否违反这些规则(但不能检查保留位)。这些检查是独立可选的。如果执行这些检查的接收器确定某个TLP违反了这些规则,则该TLP是畸形TLP。

DRS报文的格式如下图:

功能就绪状态消息(FRS)

FRS用以指示Function进入了Configuration-Ready状态。以下Function-Level的事件用以触发FRS,称为FRS事件:参考:PCIe RN (Readiness Notification)介绍_pcie readiness notification-CSDN博客

FRS协议使用pci - sig定义的VDM机制。FRS消息是pci - sig定义的VDM(供应商定义的类型1消息),没有有效负载。

与其他pci - sig定义的vdm不同,FRS Message的形成遵循以下规则:表2-29和图2-32给出了FRS Message的定义。

•TLP类型必须为Msg。

•TC[2:0]字段必须为000b。

•Attr[2:0]字段是保留的。

•保留Tag字段。

•Subtype字段必须为09h。

FRS Reason[3:0]字段表示FRS消息产生的原因:

0001b:收到了DRS消息

消息请求者ID所指示的下游端口收到了DRS消息,并且在链路控制寄存器中将DRS信令控制字段设置为DRS to FRS信令使能

0010b:D3Hot到D0转换完成

(PCIe 包含四种电源状态——D0,D1,D2,D3 (D3hot,D3cold)

1. D0和D3是强制必须存在的状态,D1和D2是可选的状态;

2. D0是full power的状态,D1为slight sleep, D2为deep sleep,D3hot无Main Power但是存在AUX Power,D3cold是全部off的状态;

3. D0分为D0uninitialized和D0active状态, Convertional Reset和FLR后会进入D0uninitialized,配置BME,MSE,ISE后会进入D0active;

4. 按照省电的顺序D0<D1<D2<D3hot<D3cold

            

参考链接:PCI Express学习篇---Power Management(一)_怎样查看pci的power management是那种模式-CSDN博客

D3Hot到D0转换完成,消息请求者ID指示的功能现在是Configuration-Ready,并已返回到D0uninitialized或D0active状态,具体取决于No_Soft_Reset位的设置

0011b: FLR完成

FLR已经完成,消息请求者ID指示的功能现在是Configuration-Ready

1000b: VF已启用

消息请求者ID表示一个物理功能(PF) -与该PF相关的所有虚拟功能(VF)现在都已准备好配置。

1001b: VF已禁用

消息请求者ID表示一个PF -与该PF相关的所有VF已被禁用,并且该PF中的单根I/O虚拟化(SR-IOV)数据结构现在可以访问。

其他:所有其他值保留

“Message Routing”字段必须清空为“000b”-“路由到根Complex”

接收方可以选择检查是否违反这些规则(但不能检查保留位)。这些检查是独立可选的。如果执行这些检查的接收器确定某个TLP违反了这些规则,则该TLP是畸形TLP。

FRS报文的格式如下图:

PCIE-DMA是一种基于PCIe接口的直接内存访问技术,能够实现高速数据传输。在我的学习笔记中,我详细记录了与PCIE-DMA相关的知识和学习心得。 首先,我了解到PCIE-DMA技术的基本原理和作用。PCIE-DMA可以通过PCIe总线直接访问系统内存中的数据,而不需要过多的CPU干预,提高数据传输的速度和效率。这种技术在需要大量数据传输的场景下非常有效,比如高性能计算、数据采集等。 其次,我深入学习PCIE-DMA的工作原理。PCIE-DMA的核心是DMA控制器,它负责管理和控制数据传输的流程。当设备需要读写内存中的数据时,它通过DMA控制器发送请求,然后DMA控制器生成一个事务,将数据直接传输到或从内存中。这样就大大减少了CPU的参与,提高了数据传输的效率。 另外,我还学习PCIE-DMA的配置和编程方法。PCIE-DMA的配置主要包括硬件配置和软件配置两个部分。硬件配置通常涉及到DMA控制器和PCIe接口的初始化和配置,软件配置则需要编写驱动程序来驱动DMA控制器和处理数据传输过程中的事件和异常。这部分内容对于我来说还比较新颖,需要更多的实践和实践。 最后,我总结了PCIE-DMA的应用场景和发展前景。PCIE-DMA在高性能计算、数据采集等领域具有广阔的应用前景。随着数据量的不断增加和传输速度的要求越来越高,PCIE-DMA技术的需求也将越来越大。因此,对于我来说,学习掌握PCIE-DMA技术非常有价值。 通过学习和记录PCIE-DMA的相关知识和经验,我对这项技术有了更深入的理解和掌握。希望将来能通过应用PCIE-DMA技术解决实际问题,为科研和工程项目的顺利进行做出贡献。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值