【问题标题】:Stable CPU frequency on imx6simx6s上稳定的CPU频率
【发布时间】:2018-07-31 17:31:19
【问题描述】:

我想让基于 imx6s 的主板上的 CPU 频率不变。即使是 WFI 呼叫也不应该受到影响。到目前为止,我看到处理器处于 WFI 模式期间 CPU 频率显着下降。

根据technical reference manual for imx6s低功耗模式,处理器将在WFI之后转移,由CLPCR寄存器的LPM位配置(第855页)。我已将 LPM 位设置为 0x0,即所谓的 RUN 模式。据我了解,这应该足以不让处理器进入任何类型的睡眠模式(imx 上的等待或停止)。

这背后还有别的原因吗?我在这里错过了什么吗?

假设我使用非linux自定义环境。


附录(我测量的方式和内容):

实验如下所示: 1. 使用 WFI

p1 = ArmPmuGetCpuCycles()
Sleep(100 miliseconds)   <- here it goes to WFI
p2 = ArmPmuGetCpuCycles()
p2 - p1 = 600 microseconds

2。没有 WFI

p1 = ArmPmuGetCpuCycles()
Sleep(100 miliseconds)   <- WFI is removed
p2 = ArmPmuGetCpuCycles()
p2 - p1 = 100 miliseconds

【问题讨论】:

  • 不清楚你想要实现什么。有低功耗时钟以固定频率在所有模式下处于活动状态。您是否想要更高的时基来测量更精细的粒度,但要在睡眠模式转换期间进行?此外,有些事情取决于硬件设计(什么时候有电源,什么晶体/OSC可用)。还有,linux-kernel这个标签有点误导人?
  • @artlessnoise “您是否想要更高的时基来测量更精细的颗粒,但要在睡眠模式转换期间” - 是的。我希望在 WFI 转换期间启用 CPU 时钟,因为我使用 PMU 计数器进行时间测量。而且我不知道两者之间是否有 Sleep() 。我使用 PMU 计数器,因为它是系统中最快的时钟源。关于 linux-kernel 标签 - 请忽略它。
  • 这是反直觉的,并不是任何普通人都想要的,所以我希望芯片设计人员可能不允许它来防止错误。为什么要使用WFI 并保持 CPU 时钟启用。这违背了WFI 的目的?如果它用于调试并且您具有物理访问权限,则可以使用 GPIO 切换和范围。增量应该非常准确。
  • 这并没有违背 WFI 的目的,因为 WFI 不仅仅是关于 CPU 时钟的日落。您可能希望保留 CPU 时钟以避免任何类型的延迟。 “我希望芯片设计人员可能不允许它防止错误” - 正如我之前所说 - CLPCR 寄存器中 LPM 位 = RUN 模式的含义是什么? (见问题正文)。
  • WFI 是为了节约能源。保持 CPU 时钟处于活动状态不会节约能源,尤其是当 CPU 处于静态时。我猜 DDR 没有被访问,但保持 CPU 时钟处于活动状态可能并不比缓存中的自旋循环多多少能量。这些模式在文档的其他地方定义; RUN 是最高功率的“睡眠”模式。请参见第 817 页。您可以使用 CCGR 启用 EPIT 并将其用作时间源。 ARM 内核是硬编码的,因此飞思卡尔/恩智浦无法(轻松)配置逻辑。如果可能,请查看 ARM 文档,而不是 NXP。

标签: arm embedded imx6


【解决方案1】:

CPU 睡眠模式和 DVFS 频率设置通常是正交省电技术。

WFI 通常可以触发时钟门控(停止时钟逻辑,已知空闲等待中断,但通常不会改变频率或电压,因为这些操作可能非常慢)。动态变化的电压和频率通常由 Cpufreq 等更高级别的内核驱动程序处理。

驱动动态 CPU 频率的 DVFS 策略的主要输入之一是利用率,因此如果您的软件在操作系统空闲循环中花费大量时间(这将在内部调用 WFI),那么更高级别的逻辑将决定您正在利用 CPU 并开始降低频率以节省电力。

更新假设您正在使用 PMU 测量频率,那么您看到的是 PMU 由于时钟门控而不是频率变化而停止增加。通常,如果您想保留一些系统时间的概念,您将需要一个不会进入低功耗模式的定时器外围设备;这些对于这个用例来说是广泛可用的,但可能有一个更粗略的测量粒度。

【讨论】:

  • 您好,感谢您的回答。 “假设我使用非linux自定义环境。”我的 RTOS 中没有任何 dvfs。
  • 您可以将其视为完全关闭时钟。我想我看到了一些滴答进度,因为定时器中断会定期将处理器从 wfi 唤醒到运行模式。
  • 是的 - 刚刚看到你对这个问题的更新。如果 CPU 被时钟门控,PMU 将停止递增。在 WFI 期间。答案已更新。
  • 我不想使用定时器,因为它们的可用频率不够高(因为时钟树结构)。 CPU 参考时钟是最高的。无论如何,我的问题与您回答的内容无关。我在问为什么 CPU 时钟是门控的,而根据我在 CLPCR 中设置的位,它不应该是门控的。无论如何,非常感谢您的努力。
猜你喜欢
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 2022-08-14
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多