首页 > 其他分享 >PCIe学习笔记(15)

PCIe学习笔记(15)

时间:2024-08-02 19:56:03浏览次数:18  
标签:TLP 15 DRS 笔记 FRS PCIe pci D0 设备

设备就绪状态 (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报文的格式如下图:

标签:TLP,15,DRS,笔记,FRS,PCIe,pci,D0,设备
From: https://blog.csdn.net/yh_wrew/article/details/140879076

相关文章

  • PCIe学习笔记(13)
    电源管理消息电源管理消息的定义规则如下:•电源管理消息的定义如表所示。•电源管理消息不包括数据负载(TLP类型是Msg)。•Length字段保留。•对于PM_Active_State_Nak消息,请求者ID中的功能号字段必须包含发送消息的下游端口的功能号,或者000b,以便与早期版本兼容。•对于......
  • SQLite库笔记:下载编译
    SQLite是一个C语言库,它实现了一个小型、快速、自包含、高可靠性、全功能的SQL数据库引擎。它广泛应用于计算机、手机和嵌入式设备。SQLite源代码在公有领域(publicdomain),据SQLite官网介绍说可以免费使用,不需要license。1.源码包下载https://www.sqlite.org/download.html2.......
  • ISC.AI 2024人工智能峰会——个人笔记
    个人记录篇360开放明星场景,邀请国内最强大模型合作名单:零一万物,华为云,科大讯飞,百度,火山引擎,商汤,360,智谱AI,百川智能,腾讯,MiniMax,面壁智能,阿里云,DeepSeek,学而思(九章大模型)。网络安全专项扶持政策上海市普陀区:详情见视频回放“ISC.AI2024上海AI峰会”的28分42秒至47分整。......
  • 【笔记】模板整理以及警钟长鸣
    图论部分\(\text{I}\).连通性部分有向图强连通分量\(\text{(SCC)}\)代码模板#include<bits/stdc++.h>usingnamespacestd;constintN=1e4+5;intn,m,num,scc_cnt,top;boolinstk[N];intdfn[N],low[N],stk[N],blg[N];vector<int>g[N],ans_scc[N],ne......
  • CSAPP笔记:Lecture 02 Bits, Bytes and Integer
    位移操作二进制优势在于容易表示、抗干扰等,在表示模拟信号的时候也有优势。运算符&,|,!&&,||,!!>>,<<:位移运算又分为逻辑位移、算术位移,其中理解算数右移需要理解计算机内如何表示负数.位移实验移动的位数等于int的位数(4bytes*8=32bis),结果不变。如果是3......
  • SpringCloud入门学习笔记(四)
    Sentinel篇 SpringCloud入门学习笔记(一)-CSDN博客SpringCloud入门学习笔记(二)-CSDN博客SpringCloud入门学习笔记(三)-CSDN博客前言 在互联网应用过程中,有很多的高并发访问场景,类似于双十一这种活动,特点是访问量剧增,访问量超出系统所能处理的最大并发数。 如果没有保护机......
  • SpringCloud入门学习笔记(三)
    Nacos篇SpringCloud入门学习笔记(二)-CSDN博客SpringCloud入门学习笔记(一)-CSDN博客前言  上篇中提到服务消费者要去调用多个服务提供者构成的集群,此时需要一个三方软件来同步更新提供者的地址信息,同时供服务消费者来此处访问地址,为了解决这类问题,就需要引入服务注册组件(功......
  • springboot+vue前后端分离项目-项目搭建15-集成JWT token权限验证
    1.对之前的代码改造,之前将user存储到sessionStorage,改成存储到localStorage,全局搜索修改 之前Result.code等于0代表success,改成200代表success,vue文件全局搜索修改一、前端部分1.改造request.js,登录时将user已经存储到localStorage里,这里将user获取到,将user里的token放到......
  • 模电笔记——半导体二极管及其基本电路
        tips:本章节的笔记已经打包到word文档里啦,建议大家下载文章顶部资源(手机端下载后里面的插图可能会乱,建议电脑下载,兼容性更好且易于观看),若有不足之处请多多包含,大家可以评论指正或给出建议。    在讲之前先允许我浅谈一下电子技术相关概念与模拟电子系统的......
  • 苍穹外卖项目--学习笔记
    苍穹外卖学习文档软件开发整体介绍软件开发流程需求分析需求规格说明书、产品原型设计UI设计、数据库设计、接口设计编码项目代码、单元测试测试测试用例、测试报告上线运维软件环境安装、配置角色分工项目经理对整体项目负责,任务分配、把控进度产品经理进行......