ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

透过协议看PCIe ASPM L1.2

2022-03-28 16:01:51  阅读:332  来源: 互联网

标签:LTR L1.2 Power ASPM PCIe PM


背景:

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)等。

本文来自博客园,作者:ingram14,转载请注明原文链接:https://www.cnblogs.com/ingram14/p/15778940.html

标签:LTR,L1.2,Power,ASPM,PCIe,PM
来源: https://www.cnblogs.com/vitaminVIP/p/16067527.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有