【PCIE体系结构十六】PCIE电源管理之ASPM

news2024/11/25 6:32:11

👉个人主页:highman110

👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 

参考书籍:《PCI.EXPRESS系统体系结构标准教材 Mindshare》     

        PCIe总线的电源管理包含ASPM和软件电源管理两方面内容。所谓ASPM是指PCIe链路在没有系统软件参与的情况下,由PCIe链路自发进行的电源管理方式。而软件电源管理指PCI PM机制,PCIe总线的软件电源管理与PCI总线兼容。本章节讲述ASPM,下章节再讲PCI-PM。

        ASPM全称为Active State Power Management for the Link,是一个基于硬件的,自发的链路功耗状态管理单元,软件不能控制具体的过程只能enable/disable。讲LTSSM时我们提到了状态机中有几个和电源管理相关的状态,这里再详细列举一下:

        L0状态:PCIe设备的正常工作状态。

        L0s状态:PCIe设备处于低功耗状态。系统软件不能控制L0状态和L0s状态间的迁

移过程,这两个状态的迁移只能由ASPM控制。

        L1状态:PCIe设备使用的功耗低于处于L0s状态时的功耗。支持两种方式进入PCI-PM,ASPM。L1子状态可以关闭参考时钟、Tx common mode电路,Rx electric idle detect电路更加省电。

        L2/L3 Ready状态:PCI设备进入L2或者L3状态之前使用的过渡状态。

        L2状态:仅支持PCI-PM方式进入,关闭参考时钟、关闭PLL、关闭Main Power, 但是需要保留Aux Power;。在PCIe总线中L1和L2状态是可选的。

        L3状态:该状态也被称为“Link off”状态,此时PCIe设备使用的所有电源被关闭。仅支持PCI-PM方式。

        LDn状态:该状态是一个“伪”状态,PCIe链路处于L2、L3状态时,需要通过LDn状态之后才能进入L0状态。该状态由LTSSM状态机的Detect、Polling和Configuration等状态组成。

        各状态间的迁移如下图:

在PCIe设备中,Link Capabilities寄存器的ASPM Support字段表示当前PCIe设备可以支持的链路状态,该字段只读。而Link Control寄存器的ASPM Control字段为可读写的,PCIe设备根据ASPM Support字段判断当前PCIe链路是否支持L0s和L1状态,还是同时支持这两种状态,并设置ASPM Control字段。如下从PCIE 4.0规范的截图,大家可以到规范里具体查询:

       前面讲LTSSM时提到过几种电源管理状态之间的转换,总结起来就几个原则:

       1、如果PCIe设备发现链路“空闲”时,可以硬件自主从L0进入L0s状态。这里的“空闲”指的是没有要发送的TLP和DLLP。注意发送逻辑和接收逻辑可以一个处于L0,一个处于L0s,不要求同步转换状态。例如当一个EP进行DMA写操作时,其发送逻辑TX一直被使用,因此处于L0状态,而接收逻辑RX可能长时间没有被使用,从而可以暂时处于L0s状态,以降低功耗。

       2、PCIe设备可以通过上层软件,将链路状态从L0状态迁移到L1或者L2状态。当PCIe设备进入D1~D3状态时,其上游链路将进入L1状态;而进入D3cold状态时,其上游链路将进入L2状态。D1~D3和D3cold状态的详细说明后面讲PCIE的软件电源管理时会讲。而PCIe链路的两端设备需要同时进入L1或者L2状态。

       3、从L1恢复到L0时,是从L1先到recovery,再到配置,再到L0,而从L2恢复到L0,需要重新走一遍检测、轮询、配置流程,所以L2恢复到L0时间更长。L2状态可以通过Beacon(由AUX电源所驱动的一种信令技术,由一组通过D+和D-信号生成的脉冲信号组成。这些脉冲信号宽度的最小值为2ns,最大值为16us)机制唤醒。有同学有疑问了,不是用PME进行唤醒吗?这里要注意,要使用PME报文,必须要先将链路恢复到可以传输报文的L0状态,所以在L2状态就不能用这种方式了,只能通过带内硬件信标或者带外的WAKE信号进行唤醒。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/865598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

若依部署前后端

打包项目 前端打包 npm run build:prod将代码上传到指定目录 配置nginx转发 server{listen 8090;server_name localhost;location / {root /home/cc_library/dist;index index.html index.htm;# 配置 history模式,刷新页面会404,,因为服…

语音同声翻译软件助你跨越语言障碍

嘿,你在日常工作中是否曾经参加过跨国会议,是否也曾由于语言不通而感到尴尬?别担心,因为现在有了会议实时翻译软件,这些问题都将成为过去式!那么你知道会议实时翻译的软件有哪些吗?接下来就让我…

JavaScript基础 第五天

1.什么是对象以及对象的基本使用 2.对象的操作 --增删改查 3.对象的方法 4.数学内置对象 5.简单数据类型和引用数据类型 一.什么是对象以及对象的基本使用 ① 对象是什么 可以理解为一种无序的数据集合,数组是有序的数据集合对象通常用来描述某个事物&#x…

springboot+mybatis+mybatis-plus对crud项目进行改进

springbootmybatis实现简单的增、删、查、改https://blog.csdn.net/heyl163_/article/details/132197201上一篇文章,已经详细地介绍了怎么通过springboot项目整合mybatis实现简单的数据库表的增删改查功能,是最简单的springboot项目的结构。所以有很多问…

FinClip | 7月做出了一些微不足道的贡献

FinClip 的使命是使您(业务专家和开发人员)能够通过小程序解决关键业务流程挑战,并完成数字化转型的相关操作。不妨让我们看看在本月的产品与市场发布亮点,看看是否有助于您实现目标。 产品方面的相关动向👇&#x1f…

Python中的排序

一、列表排序 举例sort和sorted对列表排序,说明两者的区别。 import relist1 [0, -1, 3, -10, 5, 9] list1.sort(reverseFalse) print(list1.sort在list1基础上修改,无返回值, list1) list2 [0, -1, 3, -10, 5, 9] res sorted(list2, reverseFalse)…

团队管理之PDP大法

PDP 是什么,为什么有些人会谈PDP色变呢?人常常会对自己不了解的东西感到恐惧 一、什么是PDP 团队管理中的PDP可能指"Personal Development Plan"(个人发展计划),它是一种用于帮助团队成员提升个人能力和达成…

leetcode 面试题 02.07. 链表相交

题目:leetcode 面试题 02.07. 链表相交 描述: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 思路&…

ARP请求拦截及响应

一、前言 本文主要是介绍如何对arp请求包进行拦截,并代替系统进行响应。对arp请求进行拦截,需要在驱动中进行,具体代码如下文所示。(本文仅供参考) 二、环境 OS Ubuntu 20.04.6 LTSLinux ubuntu 5.15.0-71-generic三…

Java培训班出来能找到工作吗?有没有想详细了解的呢

参加Java培训班可以提升你的编程技能和就业竞争力,但能否找到工作还取决于多个因素,如个人能力、市场需求、就业竞争等。参加Java培训班可以帮助你获得系统的Java编程知识和实践经验,了解行业最佳实践和流行的技术框架。这有助于你在面试时展…

SpringBoot案例-部门管理-删除

目录 查看页面原型,明确需求 页面原型 需求 阅读接口文档 思路分析 功能接口开发 控制层(Controllre类) 业务层(Service类) 持久层(Mapper类) 接口测试 前后端联调 查看页面原型&a…

Linux进程管理命令

一、进程 程序由一条条指令构成,在运行一个程序的时候就是把这些指令从第一条执行到最后一条,而进程是一个正在运行的程序。 比如说,一个main.c文件是不可以直接运行的,对main.c进行编译链接之后生成一个main.exe(在W…

QT学习笔记-QT安装oracle oci驱动

QT学习笔记-QT安装oracle oci驱动 0、背景1、环境以及条件说明2、编译驱动2.1 下载oracle instant client2.2 编译qt oci驱动2.2.1 修改oci.pro2.2.2 MinGW64构建套件编译2.2.3 MSVC2019_64构建套件编译 3、访问数据库运行成功 0、背景 在使用QT开发应用的过程中,往…

Mysql SUBSTRING_INDEX - 按分隔符截取字符串

作用: 按分隔符截取字符串 语法: SUBSTRING_INDEX(str, delimiter, count) 属性: 参数说明str必需的。一个字符串。delimiter必需的。分隔符定义,是大小写敏感,且是多字节安全的count必须的。大于0或者小于0的数值…

案例分析丨大数据平台和应用测试,应该关注哪些点?

互联网的发展催生了大数据行业的诞生和发展。大数据平台和大数据应用成为了各家排兵布阵的重要之地。那么,从测试的视角来看,大数据平台和应用的测试,我们应该关注哪些点呢? 换个姿势看问题。今天我们从问题域的角度来聊一聊。 什…

【数据处理-番外篇】手写了几个数据处理,都是用的递归

博主:_LJaXi Or 東方幻想郷 专栏: JavaScript | 脚本语言 开发工具:Vs Code 数据处理 对象修改结构判断两对象是否全等(只针对对象未做其他类型)复杂结构去重我写的破代码(没用,逻辑,结构都不对) 一些原理我也不讲了,我就是记录一…

MySQL不走索引的情况分析

未建立索引 当数据表没有设计相关索引时,查询会扫描全表。 create table test_temp (test_id int auto_incrementprimary key,field_1 varchar(20) null,field_2 varchar(20) null,field_3 bigint null,create_date date null );expl…

【C++】虚继承(virtual base classes)

【C】虚继承(virtual base classes) 文章目录 【C】虚继承(virtual base classes)1. 使用原因2. 解决方法3. 例题练习 1. 使用原因 在多重继承(Multiple Inheritance) 的情况下,尤其是菱形继承时,容易出现问题,关于菱…

STM32F429IGT6使用CubeMX配置GPIO点亮LED灯

1、硬件电路 2、设置RCC,选择高速外部时钟HSE,时钟设置为180MHz 3、配置GPIO引脚 4、生成工程配置 5、部分代码 6、实验现象

CentOS7有线未托管,网络连接图标消失

问题描述 网络图标消失,显示“有线 未托管”,且无法连接网络 解决方案 ①编辑文件:vim /etc/sysconfig/network-scripts/ifcfg-ens33 ②删除NM_CONTROLLEDno ③重启网络:service network restart 立马就可以自动连接上网络&…