为什么Intel SpeedStep会影响执行的周期数?

时间:2016-05-02 13:22:40

标签: c visual-studio intel

我正在测量要执行的一段C代码的循环计数。代码在每隔10ms从Windows API使用_beginthreadex()生成的额外线程中执行。使用QueryThreadCycleTimes()进行循环测量,以避免计算中断或其他内容的滴答。

当我在我的机器上单独执行此代码时,循环计数在550 000到1 800 000之间变化,每次调用几次(5-10)后。

经过一些研究后我发现,在关闭Intel SpeedStep的情况下,循环计数中位数为580 000,偏差约为10 000个刻度。可以接受的! 所以现在我的问题是,SpeedStep如何影响执行所需的周期数。正如我所想,它只是通过降低功率消耗来降低处理器的频率,这不应该影响循环计数,但是达到这个循环计数所需的时间是多少?也许有人知道是否对其他重要的硬件部件或CPU Cache有影响?

提前谢谢你。问候 的Sascha

系统属性:

Intel Xeon E5 - 1620处理器

Visual Studio 2013

1 个答案:

答案 0 :(得分:2)

QueryThreadCycleTime函数manual page声明:

  

此功能使用CPU提供的定时服务,实现方式可能不同。例如,某些CPU会在更改CPU运行的频率时改变定时器的频率,而其他CPU则会以固定的速率离开。 CPU供应商提供的文档中描述了每个CPU的行为。

我试图找到有关英特尔至强处理器如何工作的信息,但我的搜索业力并不适合我。