【发布时间】:2013-12-25 06:21:48
【问题描述】:
我知道在各种操作系统上使用 CPU 时钟计数器获取时间增量的标准方法。我的问题是,这样的操作系统如何考虑 CPU 频率的变化以达到省电的目的。我最初认为这可以基于操作系统使用特定调用来测量频率以根据正在使用的内核、当前设置的频率等来获得校正频率的事实来解释。但后来我意识到,不是吗?如果 CPU 频率在两个时钟查询之间降低并恢复到其原始值,则会使任何时间增量不准确。
以如下场景为例:
查询 CPU 周期。操作系统会降低 CPU 频率以节省电量。其他一些代码在这里运行。操作系统提高 CPU 频率以提高性能。查询 CPU 周期。将 delta 计算为周期差除以频率。
这会产生不准确的增量,因为两个查询之间的 CPU 频率不是恒定的。操作系统或必须使用 CPU 周期处理时间增量的程序如何解决这个问题?
【问题讨论】:
-
我不确定,但我认为大多数变速系统使用固定频率振荡器,但更改分频器以改变 CPU 速度。为时钟提供了一个单独的分频器/计数器。
标签: time timedelta time-measurement cpu-cycles