当前位置: 首页 > news >正文

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&#xff0c;DRS)消息 &#xff08;Device Readiness Status (DRS) 是PCIe规范中引入的一种机制&#xff0c;旨在改进设备初始化和就绪状态的检测与报告。 在以往的PCIe版本中&#xff0c;系统通常依赖于固定的超时机制来判断设备是否已…...

Rust中的特殊类型所占的内存大小

可以使用std::mem:size_of获取类型大小&#xff1a; use std::mem::size_of;struct Journal(String, u32); trait Summary {} impl Summary for Journal {}fn main() {println!("普通结构体相关&#xff1a;");println!("{}", size_of::<&Journal&…...

【深度学习】变分自编码器 VAE,什么是变分?(1)

文章目录 1. 变分自编码器 VAEVAE的基本概念VAE的数学原理编码器解码器目标函数训练过程代码示例未来发展2. 变分推断变分推断(Variational Inference)变分推断的基本概念变分推断的目标变分下界(Evidence Lower Bound, ELBO)最大化变分下界变分推断的步骤3. 必读内容1. 变…...

宏编程:C++宏、Rust宏和Lisp宏比较

根据simondobson两篇文章&#xff08;1、2&#xff09;&#xff0c;总结比较一下C宏 Rust宏和Lisp宏&#xff1a; Rust 宏&#xff1a;Rust 有两种类型的宏&#xff1a; 声明性宏&#xff1a;这些模式匹配参数来生成代码。 过程宏&#xff1a;这些宏执行从代码到代码的更一般…...

ChatGPT协助撰写研究论文的11种方法【全集】

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 当我们使用 ChatGPT 时&#xff0c;原本那些需要花费数小时、数天、有时甚至更长时间的任务现在只需几分钟甚至更短时间。 今天的分享&#xff0c;我们将谈谈 ChatGPT 在研究论文方面可…...

PEP 8 – Python 代码风格指南中文版(四)

何时使用尾随逗号 尾随逗号通常是可选的&#xff0c;但在创建一个只有一个元素的元组时是必须的。为了清晰起见&#xff0c;建议使用&#xff08;技术上多余的&#xff09;括号将其包围起来&#xff1a; # 正确的: FILES (setup.cfg,)# 错误的: FILES setup.cfg, 当尾随逗号…...

基于深度学习的适应硬件的神经网络

基于深度学习的适应硬件的神经网络设计旨在最大限度地利用特定硬件平台的计算和存储能力&#xff0c;提高模型的执行效率和性能。这些硬件包括图形处理单元&#xff08;GPU&#xff09;、张量处理单元&#xff08;TPU&#xff09;、现场可编程门阵列&#xff08;FPGA&#xff0…...

上传音频文件

思路 1、自定义Upload 重点&#xff1a;<input ref{inputRef} type"file" accept{accept} onClick{e > e.stopPropagation()} onChange{uploadFile} multiple{multiple}/> 使用input标签设置type是file&#xff0c;将input元素通过forwardRef暴露给父组件&…...

Linux之jdk离线安装

下载地址 一、linux安装jdk8 1、上传&#xff0c;解压 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产品 &#xff1a; 厂商JVMOracle-SUNHotspotOracleJRocketIBMJ9 JVM阿里Taobao JVM HotSpot VM是目前市面上高性能虚拟机的代表作之一。它采用解释器与即时编译器并存的架构。 在今天&#xff0c;Java程序的运行性能早已脱胎换骨&#xff0c;已…...

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 随机分桶&#xff08;自 v3.1&#xff09;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 最佳…...

为什么有时候银行贷款审核会查大数据信用?

在申请银行贷款时&#xff0c;不少人会疑惑为何银行会深入审查申请人的大数据信用信息。这背后&#xff0c;其实是银行风险控制与精准决策的体现。 首先&#xff0c;大数据信用信用能全面反映申请人的信用状况 它不仅仅局限于传统的征信报告&#xff0c;还涵盖了消费行为、社交…...

LoRa无线通讯,让光伏机器人实现无“线”管理

光伏清洁机器人&#xff0c;作为光伏电站运维的新兴关键设备&#xff0c;已跃升为继组件、支架、光伏逆变器之后的第四大核心组件&#xff0c;正逐步成为光伏电站的标准配置。鉴于光伏电站普遍坐落于偏远无人区或地形复杂之地&#xff0c;光伏清洁机器人必须具备远程操控能力、…...

买流量卡要注意什么,这些冷知识你一定要懂!

买流量卡要注意什么&#xff1f;别总盯着价格看&#xff0c;还有一些隐形的冷知识得了解一下&#xff0c;今天这篇文章就是要告诉你一些流量卡中隐藏的冷知识。 ​一、首先&#xff0c;那些月租9元、19元的流量卡&#xff0c;大概率都是短期卡&#xff0c;虽然他们的资费便宜&a…...

【嵌入式】STM3212864点阵屏使用SimpleGUI单色屏接口库——(2)精简字库

一 开源库简介与移植 最近一个项目需要用12864屏幕呈现一组较为复杂的菜单界面&#xff0c;本着不重复造轮子的原则找到了SimpleGUI开源库。 开源地址&#xff1a;SimpleGUI: 一个面向单色显示屏的开源GUI接口库。 SimpleGUI是一款针对单色显示屏设计的接口库。相比于传统的GUI…...

《计算机网络》(第8版)第1章 概述 复习笔记

第 1 章 概述 一、计算机网络在信息时代中的作用 计算机网络的两个重要功能&#xff1a; 1 &#xff0e;连通性 指互联网上的用户之间是相互连通的。 2 &#xff0e;共享&#xff08;资源共享&#xff09; 资源共享可以是信息共享、软件共享&#xff0c;也可以是硬件共享。此…...

银行数据质量保障体系建设实践

引言 在数字化转型浪潮中&#xff0c;数据中台成为企业实现数据驱动决策的关键支撑。它不仅整合了企业内外部的数据资源&#xff0c;还通过数据共享与复用&#xff0c;提升了运营效率和业务创新能力。然而&#xff0c;随着数据量的激增和数据来源的多样化&#xff0c;如何确保…...

笔记小结:《利用Python进行数据分析》二进制数据格式存储与web交互

提示&#xff1a;此节内容仅作了解即可 目录 二进制数据格式 使用HDF5 读取Microsoft Excel文件 二进制数据格式 实现数据的高效二进制格式存储最简单的办法之一是使用Python内置的pickle序列化。 Python 的 pickle 模块是一个用于序列化和反序列化 Python 对象结构的模块…...

电脑桌面图标变白了?3个方法20秒钟轻松解

电脑桌面图标变白了&#xff1f;3个方法20秒钟轻松解 ⚠️电脑桌面图标变白了&#xff0c;3种方法轻松解决 &#x1f6b8;方法一和方法二属于治标不治本的解决方法&#xff0c;但操作较为简单&#xff0c;在不同情况下有不成功的可能&#xff0c;方法三相对复杂一些&#xff0c…...

数据治理,管什么?

元数据&#xff08;Metadata&#xff09;&#xff1a;通俗地说就是描述数据的数据&#xff0c;比如数据的名称、属性、分类、字段信息、大小、标签等等。要做好数据的管理&#xff0c;元数据起到了举足轻重的作用。 参考数据&#xff08;Reference Data&#xff09;&#xff1…...

3PEAK思瑞浦 TPA2644-SO2R-S SOP14 运算放大器

特性 供电电压:3V至36V 偏移电压:3mV(最大值)差分输入电压范围至电源轨&#xff0c;可作为比较器工作 带宽:1.5MHz&#xff0c;斜率:0.5V/us输入轨至-Vs&#xff0c;无内部ESD二极管至Vs 低1/f噪声:在10Hz时为50nV/Hz 高PSRR:100kHz时60dB 开机和关机电流期间无明显输出抖动 工…...

从等待到掌控:构建个人化网盘下载工作流的3个关键步骤

从等待到掌控&#xff1a;构建个人化网盘下载工作流的3个关键步骤 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...

基于OpenClaw的GitHub趋势智能监控器:自动化追踪与AI摘要推送

1. 项目概述&#xff1a;一个为开发者打造的GitHub趋势智能监控器 作为一名长期泡在GitHub上的开发者&#xff0c;我深知每天手动刷“Trending”页面有多低效。热门项目层出不穷&#xff0c;但真正值得关注的往往就那么几个&#xff0c;而且很容易被淹没在信息流里。直到我遇到…...

解密智能图片分层:掌握Layerdivider提升设计效率的实战指南

解密智能图片分层&#xff1a;掌握Layerdivider提升设计效率的实战指南 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 在数字创意领域&#xff0c;我们常…...

NodeMCU PyFlasher:ESP8266图形化固件烧录终极解决方案

NodeMCU PyFlasher&#xff1a;ESP8266图形化固件烧录终极解决方案 【免费下载链接】nodemcu-pyflasher Self-contained NodeMCU flasher with GUI based on esptool.py and wxPython. 项目地址: https://gitcode.com/gh_mirrors/no/nodemcu-pyflasher 对于ESP8266开发者…...

渗透PHP伪协议

一、debug调试 1、定义 Debug&#xff0c;又叫断点调试&#xff0c;就是对写好的程序进行逐步运行、分解、调试的过程&#xff0c;通过这个过程&#xff0c;我们可以跟踪程序的详细运行过程&#xff0c; 是程序员的开发神器&#xff0c;也是开发必会的一个重要技能。 2、意义…...

收藏!小白程序员必看:AI大模型入门指南,抓住下一个风口!

文章通过房价下跌和土木工程专业遇冷的例子&#xff0c;警示读者行业选择的重要性。随后&#xff0c;文章重点介绍了AI大模型相关岗位&#xff0c;如AI大模型训练师和AI大模型应用开发工程师&#xff0c;指出这些岗位门槛相对较低&#xff0c;适合普通人入门&#xff0c;并提供…...

网盘直链下载助手:解锁九大网盘下载速度的终极方案

网盘直链下载助手&#xff1a;解锁九大网盘下载速度的终极方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…...

微信消息自动转发:5分钟实现跨群智能消息同步

微信消息自动转发&#xff1a;5分钟实现跨群智能消息同步 【免费下载链接】wechat-forwarding 在微信群之间转发消息 项目地址: https://gitcode.com/gh_mirrors/we/wechat-forwarding 在微信群管理和团队协作中&#xff0c;你是否经常需要将重要消息手动转发到多个群聊…...

Firefly开源中文大模型:指令微调、部署与领域适配实战

1. 项目概述&#xff1a;一个专为中文优化的开源大语言模型最近在开源社区里&#xff0c;Firefly&#xff08;流萤&#xff09;这个项目引起了我的注意。它不是一个通用框架&#xff0c;而是一个经过精心指令微调的大语言模型系列。简单来说&#xff0c;你可以把它理解为一个“…...