为什么在 BIOS 中禁用主动电源管理会使 NVMe 速度翻倍?

为什么在 BIOS 中禁用主动电源管理会使 NVMe 速度翻倍?

我买了一台二手戴尔 OptiPlex 5060

尽管显然是 PCIe 3,但其速度似乎被限制在 PCIe 2(2 GB/s)上。据记录,这种情况发生在 3070 OptiPlex micro 上:https://www.reddit.com/r/Dell/comments/iifyp8/getting_pcie_gen_2_speeds_instead_of_gen_3/

但是,当在 BIOS 中启用英特尔主动电源管理(默认设置)时,它实际上会达到 1 GB/s。

为什么在 BIOS 中禁用主动电源管理会将其移动到 1700 MB/s-2000 MB/s?我的电源装置损坏了吗?(台式机因之前使用而有些磨损。)

BIOS 中的此设置:

高级配置
表 33. 高级配置
选项 描述
ASPM 允许您设置 ASPM 级别。

  • 自动(默认)- 设备和 PCI Express 集线器之间存在握手,以确定设备支持的最佳 ASPM 模式
  • 已禁用- ASPM 电源管理始终处于关闭状态
  • 仅限 L1- ASPM 电源管理设置为使用 L1

答案1

ASPM 是一种电源管理系统,可关闭 PCIe 链路以节省电量。结果是,虽然您可以节省电量,但​​可能会损害性能。

来自维基百科主动状态电源管理(美国卫生及公共服务部)

目前,PCI Express 2.0 规范指定了两种低功耗模式:L0s 和 L1 模式。L0s 仅涉及为串行链路的一个方向设置低功耗模式,通常在 PHY 控制器的下游。L1 完全关闭 PCI Express 链路,包括参考时钟信号,直到专用信号(CLKREQ#)被断言,并导致更大的功率降低,但代价是更大的退出延迟。

因此,当系统认为链接处于空闲状态时,它就会关闭数据和时钟。

关闭后需要一些时间来恢复并重新启动链接。

看来固件中的许多实现都把空闲检测设置得太激进了。正如你从这个相关问题中看到的那样Windows 中的省电模式似乎启用相关设置来从 Windows 中打开 ASPM 也会出现类似的问题,即减慢链接速度并导致奇怪的行为,使得驱动器由于唤醒时间有限而看起来高度活跃。

您的机器没有问题,只是 L1 电源状态特别容易使链路和驱动器进入休眠状态。出于个人偏好,您应该将设置保留为禁用状态以获得最佳性能。

如果你的 BIOS 设置是“自动”,那么可能需要检查一下你的电源计划设置,以确保链路状态电源管理不是设置为“最大”。如果将电源管理设置为“中等”,则应该可以节省一点电量,而对性能的影响却小得多。


性能损失的原因很可能是驱动器的速度无法持续地完全满足 PCIe 链路的要求。

PCIe 3.0 x4 链路的理论带宽约为 3.5-4GB/s,而您的驱动器管理的带宽约为该带宽的一半。

结果是,链路将以突发方式运行,其中驱动器整理一些数据,通过链路快速发送,然后空闲一段时间,然后再发送另一个突发。

这些突发可能快速而频繁,但 50% 的空闲链路可能会欺骗固件,使其认为系统长时间(就快速时钟速度而言很长)不使用它,因此在突发之间驱动器会进入睡眠状态。当需要更多数据时,L1 睡眠状态意味着链路需要更长时间才能恢复并可用,而浪费的时间实际上会降低性能。

相关内容