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学习笔记(15)
设备就绪状态 (Device Readiness Status,DRS)消息 (Device Readiness Status (DRS) 是PCIe规范中引入的一种机制,旨在改进设备初始化和就绪状态的检测与报告。 在以往的PCIe版本中,系统通常依赖于固定的超时机制来判断设备是否已…...
Rust中的特殊类型所占的内存大小
可以使用std::mem:size_of获取类型大小: use std::mem::size_of;struct Journal(String, u32); trait Summary {} impl Summary for Journal {}fn main() {println!("普通结构体相关:");println!("{}", size_of::<&Journal&…...
【深度学习】变分自编码器 VAE,什么是变分?(1)
文章目录 1. 变分自编码器 VAEVAE的基本概念VAE的数学原理编码器解码器目标函数训练过程代码示例未来发展2. 变分推断变分推断(Variational Inference)变分推断的基本概念变分推断的目标变分下界(Evidence Lower Bound, ELBO)最大化变分下界变分推断的步骤3. 必读内容1. 变…...
宏编程:C++宏、Rust宏和Lisp宏比较
根据simondobson两篇文章(1、2),总结比较一下C宏 Rust宏和Lisp宏: Rust 宏:Rust 有两种类型的宏: 声明性宏:这些模式匹配参数来生成代码。 过程宏:这些宏执行从代码到代码的更一般…...
ChatGPT协助撰写研究论文的11种方法【全集】
学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 当我们使用 ChatGPT 时,原本那些需要花费数小时、数天、有时甚至更长时间的任务现在只需几分钟甚至更短时间。 今天的分享,我们将谈谈 ChatGPT 在研究论文方面可…...
PEP 8 – Python 代码风格指南中文版(四)
何时使用尾随逗号 尾随逗号通常是可选的,但在创建一个只有一个元素的元组时是必须的。为了清晰起见,建议使用(技术上多余的)括号将其包围起来: # 正确的: FILES (setup.cfg,)# 错误的: FILES setup.cfg, 当尾随逗号…...
基于深度学习的适应硬件的神经网络
基于深度学习的适应硬件的神经网络设计旨在最大限度地利用特定硬件平台的计算和存储能力,提高模型的执行效率和性能。这些硬件包括图形处理单元(GPU)、张量处理单元(TPU)、现场可编程门阵列(FPGA࿰…...
上传音频文件
思路 1、自定义Upload 重点:<input ref{inputRef} type"file" accept{accept} onClick{e > e.stopPropagation()} onChange{uploadFile} multiple{multiple}/> 使用input标签设置type是file,将input元素通过forwardRef暴露给父组件&…...
Linux之jdk离线安装
下载地址 一、linux安装jdk8 1、上传,解压 cd /usr/local/java tar -zxvf jdk-10.0.2_linux-x64_bin.tar.gz2、修改配置 vim /etc/profile #在/etc/profile文件后面加上如下配置 export JAVA_HOME/usr/local/java/jdk-10.0.2 export JRE_HOME/usr/local/java/jd…...
JVM结构、架构与生命周期总结
【1】JVM结构 不同厂商的JVM产品 : 厂商JVMOracle-SUNHotspotOracleJRocketIBMJ9 JVM阿里Taobao JVM HotSpot VM是目前市面上高性能虚拟机的代表作之一。它采用解释器与即时编译器并存的架构。 在今天,Java程序的运行性能早已脱胎换骨,已…...
Flink-StarRocks详解:第四部分StarRocks分区管理,数据压缩(第54天)
文章目录 前言2.3.3 管理分区2.3.3.1 增加分区2.3.3.2 删除分区2.3.3.3 恢复分区2.3.3.4 查看分区 2.3.4 设置分桶2.3.4.1 随机分桶(自 v3.1)2.3.4.2 哈希分桶2.3.4.2.1 优点2.3.4.2.2 如何选择分桶键2.3.4.2.3 注意事项 2.3.4.3 确定分桶数量 2.3.5 最佳…...
为什么有时候银行贷款审核会查大数据信用?
在申请银行贷款时,不少人会疑惑为何银行会深入审查申请人的大数据信用信息。这背后,其实是银行风险控制与精准决策的体现。 首先,大数据信用信用能全面反映申请人的信用状况 它不仅仅局限于传统的征信报告,还涵盖了消费行为、社交…...
LoRa无线通讯,让光伏机器人实现无“线”管理
光伏清洁机器人,作为光伏电站运维的新兴关键设备,已跃升为继组件、支架、光伏逆变器之后的第四大核心组件,正逐步成为光伏电站的标准配置。鉴于光伏电站普遍坐落于偏远无人区或地形复杂之地,光伏清洁机器人必须具备远程操控能力、…...
买流量卡要注意什么,这些冷知识你一定要懂!
买流量卡要注意什么?别总盯着价格看,还有一些隐形的冷知识得了解一下,今天这篇文章就是要告诉你一些流量卡中隐藏的冷知识。 一、首先,那些月租9元、19元的流量卡,大概率都是短期卡,虽然他们的资费便宜&a…...
【嵌入式】STM3212864点阵屏使用SimpleGUI单色屏接口库——(2)精简字库
一 开源库简介与移植 最近一个项目需要用12864屏幕呈现一组较为复杂的菜单界面,本着不重复造轮子的原则找到了SimpleGUI开源库。 开源地址:SimpleGUI: 一个面向单色显示屏的开源GUI接口库。 SimpleGUI是一款针对单色显示屏设计的接口库。相比于传统的GUI…...
《计算机网络》(第8版)第1章 概述 复习笔记
第 1 章 概述 一、计算机网络在信息时代中的作用 计算机网络的两个重要功能: 1 .连通性 指互联网上的用户之间是相互连通的。 2 .共享(资源共享) 资源共享可以是信息共享、软件共享,也可以是硬件共享。此…...
银行数据质量保障体系建设实践
引言 在数字化转型浪潮中,数据中台成为企业实现数据驱动决策的关键支撑。它不仅整合了企业内外部的数据资源,还通过数据共享与复用,提升了运营效率和业务创新能力。然而,随着数据量的激增和数据来源的多样化,如何确保…...
笔记小结:《利用Python进行数据分析》二进制数据格式存储与web交互
提示:此节内容仅作了解即可 目录 二进制数据格式 使用HDF5 读取Microsoft Excel文件 二进制数据格式 实现数据的高效二进制格式存储最简单的办法之一是使用Python内置的pickle序列化。 Python 的 pickle 模块是一个用于序列化和反序列化 Python 对象结构的模块…...
电脑桌面图标变白了?3个方法20秒钟轻松解
电脑桌面图标变白了?3个方法20秒钟轻松解 ⚠️电脑桌面图标变白了,3种方法轻松解决 🚸方法一和方法二属于治标不治本的解决方法,但操作较为简单,在不同情况下有不成功的可能,方法三相对复杂一些,…...
数据治理,管什么?
元数据(Metadata):通俗地说就是描述数据的数据,比如数据的名称、属性、分类、字段信息、大小、标签等等。要做好数据的管理,元数据起到了举足轻重的作用。 参考数据(Reference Data)࿱…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
