我目前正在测量执行一段C代码的循环计数。代码在一个额外的线程中执行,该线程由Windows中的_beginthreadex()每隔10 is生成一次。循环测量是使用QueryThreadCycleTimes()进行的,以避免计算中断或其他东西的滴答数。
当我只在我的机器上执行这段代码时,循环计数变化在550到1800 000之间,每次都是在几次(5-10次)调用之后。
经过一些研究,我发现,随着英特尔SpeedStep关闭,循环计数是中位数58000,偏差约10,000滴答。可以接受!因此,我现在的问题是,SpeedStep如何影响执行所需的周期数。正如我所想的那样,它只是通过降低功耗摄入来降低处理器的频率,这不应该影响循环计数,而是影响到这个周期计数所需的时间?也许有人知道是否对其他重要的硬件部件或CPU缓存有影响?
提前谢谢你。萨沙问候
系统特性:
英特尔Xeon E5 - 1620处理器
2013
发布于 2016-05-02 13:28:06
QueryThreadCycleTime函数手册页声明:
该函数使用CPU提供的计时器服务,在实现上可能有所不同。例如,当改变CPU运行的频率时,一些CPU会改变计时器的频率,而另一些CPU将以固定的速率离开它。CPU供应商提供的文档中描述了每个CPU的行为。
我试图找到关于Intel Xeon处理器的信息,但是我的搜索业力并没有和我在一起。
https://stackoverflow.com/questions/36983523
复制相似问题