使用RDTSC对纳米睡眠进行循环计数

时间:2014-10-30 13:22:20

标签: c intel cycle rdtsc

我试图看看我的笔记本电脑上有多少个周期需要1纳秒。

笔记本电脑配置:

  1. 处理器:Intel Centrino Duo 2.0 GHz(T7200)
  2. 内存:2 GB
  3. 以下是计数:

    1. 1秒需要:1995198000(接近20亿滴答,这没关系)
    2. 1毫秒:2,159,460(接近2百万,这没关系)
    3. 1微秒:507,408(为什么?)
    4. 1纳秒:139,000(为什么?)
    5. 直到1微秒,刻度与频率一致。但是,在那之下,它不是。此外,我可以可靠地使用循环计数来区分100纳秒和200纳秒,而不是低于该值。

      要测量的设置:

      1. 测量过程附在一个处理器上。
      2. 流程优先级设置为最高。
      3. CPU设置为始终以最高频率运行。
      4. 任何人都可以解释原因吗?是因为睡眠(我正在使用nanosleep)以这种方式实施。 ?

2 个答案:

答案 0 :(得分:1)

来自the specification of nanosleep

  

暂停时间可能比请求的时间长,因为参数值四舍五入为睡眠分辨率的整数倍,或者是因为系统调度了其他活动。

答案 1 :(得分:0)

您最接近使用PC硬件的是使用较长持续时间的统计分析。使用RDTSC测量时间需要超过一纳秒:ZeroMQ Test Analysis