通常情况下,处于D0状态的设备会保持其Upstream链路处于L0状态;而ASPM为D0状态定义了一种协议,可以将链路置于低功耗状态,同时指示另一端同样及那个第功耗。ASPM可以动态降低链路功耗,实现比只有软件控制更细致的电源管理。

相关寄存器

Link Capabilities Register寄存器:

寄存器域

描述

Supported Link Speeds

0001b:支持2.5GT/s

0010b:支持2.5/5.0GT/s;

其他保留;

Maximum Link Width

000000b:保留;

000001b:x1;

000010b:x2;

000100b:x4;

001000b:x8;

001100b:x12;

010001b:x16;

100001b:x32;

Active State Power Management(ASPM)Support

00b:保留

01b:支持L0s;

10b:保留;

11b:支持L0s和L1;

L0s Exit Latency

000b:小于64ns;

001b:64~128ns;

010b:128~256ns;

011b:256~512ns;

100b:512ns~1us;

101b:1~2us;

110b:2~4us;

111b:大于4us;

L1 Exit Latency

000b:小于1us;

001b:1~2us;

010b:2~4us;

011b:4~8us;

100b:8~16us;

101b:16~32us;

110b:32~64us;

111b:大于64us;

Clock Power Management

1b:表示在L1和L2/L3 Ready状态下,可通过CLKREQ#机制移除时钟;

0n:表示在这些状态不能移除时钟

Surprise Down Error Reporting Capable

当作为下行端口且支持检测和上报Surprise Down错误则需要置为1;否则置为0;

Data Link Layer Link Active Reporting Capable

当下行端口支持上报DL_Active状态和管理状态机,需要置为1;其他置为0;

Link Bandwidth Notification Capability

1:支持Link Bandwidth Notification状态和中断机制;

Port Number

指示PCI Express Link的Port Number;

Link Control Register寄存器:

寄存器域

描述

Active State Power Management (ASPM) Control

00b:关闭ASPM;

01b:使能L0s;

10b:使能L1;

11b:使能L0s和L1;

RsvdP

保留域

Read Completion Boundary(RCB)

0:64bytes

1:128bytes

Link Disable

当设置为1,将Link LTSSM转入Disabled状态

L0s ASPM状态

进入L0s ASPM状态

如果在不超过7us时间(实际时间是由系统特定的)内满足定义的idle条件,则使能L0s的端口将其传输通道置于L0s状态;

EP和RC定义的idle条件:

  1. 没有TLP需要传输或者所有FC都不足以传输TLP;
  2. 没有DLLP需要传输;

退出L0s ASPM状态

当有TLP或者DLLP需要发送的时候,设备可以发起L0s的退出;

L1 ASPM状态

同意进入L1 ASPM流程

L1 ASPM进入条件

  1. credits足够发送最大数据包(TLP);
  2. 接收到所有发送TLP得ACK,满足重发条件情况下也需要等到重发完毕;

L1 ASPM进入其他规则

  1. 当决定进入低功耗状态,DL层不再接收TL层的TLP;当在进入L1过程中,需要先进入L1;再退出到L0,发送TLP;

拒绝进入L1 ASPM流程

退出L1 ASPM

当有TLP或者DLLP需要发送的时候,设备可以发起L1的退出;

PCIe功耗管理(三)ASPM机制相关推荐

  1. [PCIe] [电源管理] 面向硬件的ASPM链路状态和L1子状态

    PCIe设备的低功耗状态要求系统驱动程序显式地将设备置于低功耗状态,从而PCIe链路则可以依次变为低功耗链路状态.PCIe规范允许PCIe链路在没有系统驱动的情况下进入低功耗状态.这个特性就是所谓的主 ...

  2. PCIe功耗控制--ASPM

    上一节PCIe功耗控制–Legacy PCI Compatible PM 讲了软件参与的功耗控制(OSPM),本次讲PCIe引入的硬件自动功耗控制. ASPM Active State Power M ...

  3. JVM内存管理及GC机制

    转载自:http://blog.csdn.net/suifeng3051/article/details/48292193 一.概述 Java GC(Garbage Collection,垃圾收集,垃 ...

  4. 【Linux 内核 内存管理】RCU 机制 ② ( RCU 机制适用场景 | RCU 机制特点 | 使用 RCU 机制保护链表 )

    文章目录 一.RCU 机制适用场景 二.RCU 机制特点 三.使用 RCU 机制保护链表 一.RCU 机制适用场景 在上一篇博客 [Linux 内核 内存管理]RCU 机制 ① ( RCU 机制简介 ...

  5. io多路复用的原理和实现_IO多路复用的三种机制:select 、poll 、epoll

    目录 概述 IO多路复用本质 IO多路复用的优势 IO多路复用Select机制 IO多路复用Poll机制 IO多路复用Epoll机制 select,poll,epoll机制区别总结 php7进阶到架构 ...

  6. SylixOS电源管理之外设功耗管理

    1.前言 在这个世界中,任何系统的运转都需要能量.如树木依靠光能生长,如马儿依靠食物奔跑,如计算机系统依靠电能运行.而能量的获取是有成本的,因此如果能在保证系统运转的基础上,尽量节省对能量的消耗,就会 ...

  7. iOS 的内存管理和虚拟内存机制具体是怎么运作的?

    iOS 的内存管理和虚拟内存机制具体是怎么运作的? 众所周知,iOS 设备的内存普遍较小.但就最终用户体验而言,流畅舒服.想知道虚拟内存在其中是否发挥了作用? 3 条评论 分享 按投票排序按时间排序 ...

  8. Linux内存管理:分页机制

    <Linux内存管理:内存描述之内存节点node> <Linux内存管理:内存描述之内存区域zone> <Linux内存管理:内存描述之内存页面page> < ...

  9. java堆是gc管理_JVM内存管理及GC机制

    一.概述 JavaGC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和 ...

最新文章

  1. Win10如何远程连接Windows Server 2008,以及提示“您的凭证不工作”问题解决
  2. Altium Designer飞线(未连接线)不显示的解决方法
  3. Mysql主主复制高可用解决方案
  4. Windows Socket 编程
  5. 鸿蒙tv系统安装,运行第一个鸿蒙tv应用
  6. 使用arpspoof实现内网ARP欺骗
  7. 信息学奥赛C++语言:求平均分
  8. 陆奇:疫情下的创业者,最不能缺这两大能力
  9. SMPL: A Skinned Multi-Person Linear Model
  10. MySQL某列增加标注_MySQL 使用CASE表达式给行做标记
  11. rabbitmq python 发送失败_RabbitMQ Python端发送消息给Java端 接受消息全数字问题
  12. mysql or order by_MySQL 2 SQL数据使用(检索、排序、过滤:SELECT/FROM/LIMIT/ORDER BY/DESC/WHERE/AND/OR/IN/NOT)...
  13. 高通刷机工具使用介绍
  14. 学计算机的管理层,毕业很吃香、高薪岗位多的4个专业,计算机科学上榜,你的专业呢...
  15. 松翰触摸单片机SN8F5711
  16. 视频如何批量去除水印
  17. 移动vue大转盘抽奖
  18. Olist巴西电商数据分析(二)
  19. nhibernate mysql配置_(转)NHibernate各种数据库配置写法
  20. 气象预警信号图标设计中的坑

热门文章

  1. Windows本地快速搭建SFTP服务共享文件【外网访问】
  2. 深度揭秘可部署矢量字体图标管理平台 YIcon
  3. winform(C#)程序实现在线更新软件
  4. form表单输入正则校验
  5. Python网络爬虫5 - 爬取QQ空间相册
  6. 2019安恒杯一月新春贺岁赛writeup
  7. linux qt4 音乐播放器,Ubuntu 14.04下安装音乐播放器 Clementine 1.2.3
  8. KDD 2018 | 小波分解网络用于可解释的时间序列分析
  9. Word 表格填写信息(XX 证券案例)
  10. string::find()函数和string::npos函数的介绍