编程语言
首页 > 编程语言> > ASPM介绍

ASPM介绍

作者:互联网

aspm是pcie的一种省电模式。涉及到的寄存器主要是pci配置空间的如下3个寄存器。

(以下已usb 3.0 控制器的pci配置空间为例子:

其中:

link capabilities register [11:10]是活动状态链路的PM支持位。 [11:10] = 00保留。[11:10]=01表示支持L0s。[11:10]=10又保留了。[11:10]=11表示同时支持L0s和L1。设备也使用[14:12]和[17:15]来指示L0s和L1的退出延迟。

link control register[1:0]是活动状态的PM控制位。[1:0]=00表示两者都是禁用的。01表示启用了L0s,禁用了ASPM L1。10表示禁用L0s,启用ASPM L1。11表示两者都是启用的。

具体的datasheet如下:

 

 要看BIOS下有没有设置,可以在shell下使用mm命令查看对应寄存器,看BIOS有没有设置相应位

在OS下,可以通过命令:

lspci -s 01:00.0 -xxx |vim -

图中01:00.0表示这个设备在BUS 1,Dev 0, Func 0上。具体可以先使用lspci命令查看

查看相应的0xAC,0xB0偏移地址的值就可以知道了。

也有如下命令:

setpci -s 01:00.0 b0.B=43

通过修改偏移地址0xb0的值为0x43,其中B代表一个字节

另外,内核可以通过添加config来实现不同的策略。目前有如下策略

defualt:使用BIOS的设置

powersave:内核会打开L0s,以及L1

performance:强行关闭L0s,L1,就算BIOS打开了

power_superave:比powersave多了L1 substates

具体可以通过OS下的这个文件查看

cat /sys/module/pcie_aspm/parameters/policy 

其中涉及到的config在kernel中:

其中涉及了4中状态。查看drivers/pci/pcie/Makefile可以看到相应的文件

 补充:

以下转载自:[PCIe] [电源管理] 面向硬件的ASPM链路状态和L1子状态_messi_cyc的专栏-CSDN博客_pciexpress链接状态电源管理

PCIe设备的低功耗状态要求系统驱动程序显式地将设备置于低功耗状态,从而PCIe链路则可以依次变为低功耗链路状态。PCIe规范允许PCIe链路在没有系统驱动的情况下进入低功耗状态。这个特性就是所谓的主动状态电源管理(ASPM)。一般来说,无论是系统驱动端硬件(RC)还是设备硬件(EP)都可以通过检测pcie链路上的空闲时间,然后启动电源状态转移。

标签:11,10,ASPM,链路,L0s,介绍,PCIe,L1
来源: https://blog.csdn.net/fell_sky/article/details/122450464