背景:

ASPM--ACTIVE STATE POWER MANAGEMENT

ASPM是硬件自主的,软件无法控制且也无视其状态的变化,软件只能通过配置寄存器来使能或禁止ASMP。

PCI-PM--PCI Power Management

是PCIe设备之间通过功耗管理事件(Power Management Event,PME)来进行相互通信,并控制功耗状态的切换的协议。其要求PCIe设备的每个Function都包含PCI Power Management Capability寄存器。软件可以通过配置请求(Configuration Request)的方式来切换PCIe设备的某个Function的PM状态。

L1.2--Pcie规范还定义了L1低功耗子状态

L1是PCIe 链路的一种低功耗状态, L1.2是它的子状态也是目前功耗最低的状态,当在进入L1.2链路状态只保留CLKReq#信号,大部分模块处于掉电状态。

PCI-PM和ASPM都可以承载在L1.2之上。

NO SNOOP--一般情况下,内存数据是被CACHED的,但CACHE操作,费时有的时候,软件已知,某些内存是肯定不被CACHED的这样,就不需要SNOOP了。
注:这里的SNOOP,就是针对CACHE的操作

LTR--Latency Tolerance Reporting

The Latency Tolerance Reporting (LTR) mechanism enables Endpoints to report their service latency requirements for Memory Reads and Writes to the Root Complex, so that power management policies for central platform resources (such as main memory, RC internal  interconnects, and snoop resources) can be implemented to consider Endpoint service requirements.

说人话就是控制端到端packet 延迟时间。(看起来似乎不太重要, 但是L1.2 必须要支持这个feature)

从协议分析L1.2--初始化配置

    1. 配置T_Power_Value

如图L1 PM substates control2 bit 1~0表示T_Power_On scale, bit 7~3表示T_Power_On value, 这里T_Power_On scale和T_Power_On value共同决定L1.2 <-> L1.0之间的时间。

如图,这里配置host配置为 0x31,即T_Power_On scale = 10us,T_Power_On value = 6,那么T_Power_on为600us。(Latency Value and Scale:这两个参数配合使用,可以将 Latency 配置为 1 纳秒 ~ 34 秒。如果将这两个值都设置为0,那就意味着任何延迟都会对设备产生影响,因此系统需要在第一时间响应该设备提出的请求)

2. 配置PCI-PM / ASPM enable , 配置LTR threshold:

使用PCI-PM / ASPM 之前需要使能。如图:

如图配置PCI-PM enable,ASPM enable。

如图配置LTR_L1.2_THRESHOLD_Value = 0xA0, LTR_L1.2_THRESHOLD_Scale = 2,这里LTR_L1.2_THRESHOLD_Value 和LTR_L1.2_THRESHOLD_Scale共同决定LTR threshold时间。

3. 配置Link Control

     

如图控制Link Control bit 1~0, set L1 entry enable。

4. LTR enable

如图控制device Control2 bit 10, enable LTR。

5. LTR latency 

如图设置No-snoop Latency register / snoop Latency register 为0x1003.

6. PM Active req

    如图,device发起PM request L1.2, host 回复ACK, PM握手成功。一般PCIe End point在这个阶段会处理好内部的IO,当内部Idle发起这个请求,并对大部门模块掉电,只保留CLKReq#可以唤醒的Hardware模块。

7. CLKReq# 拉高

CLKReq#拉高是L1.2 进入的最后一步,之后的该信号保持。

8. CLKReq#拉低

表示L1.2 退出请求, 该信号是host唤醒device的第一步,之后的该信号保持, 之后开始Link trianing。

9. 进入L0

link training完成,进入L0, 并设置start data order set。

10. 收到报文

如图,可以看到唤醒device的是两条Config  Read Packet。

11. PM L1 Request

再处理完报文之后,如果没有新的TLP / DLLP, ASIC会再次进入L1.2.

ASPM是一种Hardware主动进入的power management的协议,以上11步是ASPM整个流程,6~11步在PCIe ASPM L1.2 整个过程的循环执行。

PCI-PM / ASPM博大进深,本文仅介绍ASPM L1.2的协议流程,该协议可以适用于大部分PCIe EP, 比如PCIe 显卡, PCIe 网卡,PCIe存储设备(NVMe SSD)等。

透过协议看PCIe ASPM L1.2相关推荐

  1. [NVME协议8] : 从传输层看PCIE 和 NVME 交互

    声明 主页: 元存储的博客_CSDN博客 https://blog.csdn.net/vagrant0407?type=blog 本文依据公开知识及个人经验整理而成,如有错误请留言. 文章为个人辛苦整 ...

  2. 软件架构设计案例_透过现象看本质:常见的前端架构风格和案例

    所谓软件架构风格,是指描述某个特定应用领域中系统组织方式的惯用模式.架构风格定义一个词汇表和一组约束,词汇表中包含一些组件及连接器,约束则指出系统如何将构建和连接器组合起来.软件架构风格反映了领域中众 ...

  3. 透过现象看本质: 常见的前端架构风格和案例

    所谓软件架构风格,是指描述某个特定应用领域中系统组织方式的惯用模式.架构风格定义一个词汇表和一组约束,词汇表中包含一些组件及连接器,约束则指出系统如何将构建和连接器组合起来.软件架构风格反映了领域中众 ...

  4. 传统金融PK互联网 必须透过现象看本质

    传统金融PK互联网 必须透过现象看本质 面对越来越热的互联网金融,传统金融业内人士与互联网的发生激烈了冲突,中国近期的经济疲软似乎也变成了互联网金融的原罪之一,但事实真是如此吗? width=&quo ...

  5. 小胖机器人能刷碗吗_小胖机器人好不好?透过真相看本质

    最近很多网友对小胖机器人好不好?透过真相看本质比较多疑问,建议各位进官方旗舰店购买,质量有保障.该产品是商城开设运营的在线店铺,所有展示商品与实物完全相符,严格执行七天无理由退换服务,提供正规发票,为 ...

  6. 透过性别看世界_透过树林看森林

    透过性别看世界 决策树如何运作 (How a Decision Tree Works) Pictorially, a decision tree is like a flow-chart where ...

  7. 混淆矩阵怎么看_201.工具篇MECE法则:透过结构看世界。

    工具篇|战略工具1之前讲过了商业.管理.个人,今天讲如何用工具来提高上述的效率工具.今天先讲一MECE法则.某公司将2020年定为品牌战略年,小王接到领导安排写作任务,要求充分阐述公司 的品牌主张.小 ...

  8. 透过IL看C# (1)——switch语句(上)

    透过IL看C# (1) switch语句(上) 原文地址:http://www.cnblogs.com/AndersLiu/archive/2008/11/03/csharp-via-il-switc ...

  9. 透过现象看本质,如何针对用户做好需求分析

    对于刚入门的产品经理而言,很容易出现设计出来的产品功能不达用户预期的情况.这里面一部分原因是由于需求分析没做到位,忽略了事情背后的本质.那么下面我们看看如何做好需求分析. 透过现象看本质 我们只有透过 ...

最新文章

  1. LeetCode刷题-2
  2. 网页图表Highcharts实践教程之认识Highcharts
  3. Linux思维导图整理,你确定不收藏?
  4. PHP中遍历关联数组的方法
  5. C++对C的加强之变量检测增强
  6. 会议交流 | 如何提升推荐系统的可解释性?——DataFunSummit2022知识图谱在线峰会...
  7. mysql 日期和时间函数_介绍一下mysql的日期和时间函数
  8. LeetCode(#26)————删除排序数组中的重复项
  9. 我在中关村,给不了的你爱的国贸(ZZ)
  10. 分账汇总少了一笔 和 对账和商户汇总比基础表少了一笔 问题处理方式
  11. PyTorch 入坑六 数据处理模块Dataloader、Dataset、Transforms
  12. Java基础之访问文件与目录——获取与文件存储有关的信息(GetFileStores)
  13. winform-Chrome-CefSharp库
  14. Raki的读paper小记:Style Transformer
  15. [na]锐起无盘机并发部署多台windows
  16. 使用 python 实现恩尼格码的加密
  17. 【推荐系统】特征工程技巧(kaggle比赛技巧、tx的做法)
  18. 数据科学家的一天,是怎样度过的?
  19. weblogic 启动报错bea 000386解决方案
  20. IC卡、ID卡、M1卡、射频卡的区别是什么(射频卡是种通信技术)

热门文章

  1. android一些学习网站
  2. catia制作物料明细_一种基于CATIA的国标标准物料清单的生成方法与流程
  3. 赶集网mysql36条军规_赶集网MySQL的36条军规
  4. matlab接收电视信号,DRM接收及matlab实验 (转载)
  5. 全国大学计算机专业排名2021,2021全国计算机专业大学排名一览表
  6. pytorch安装教程 GPU版本
  7. 怎么自制小程序?【自己制作小程序】
  8. IDEA原先有项目怎么再导入maven项目
  9. 单片机可以用python编程吗,python可以单片机编程吗
  10. 详细分析MySQL的日志(一)本文原创地址:博客园骏马金龙https://www.cnblogs.com/f-ck-need-u/p/9001061.html