【问题标题】:Cycle counts for nanosleep using RDTSC使用 RDTSC 的 nanosleep 循环计数
【发布时间】:2014-12-26 13:30:24
【问题描述】:

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

笔记本电脑配置:

  1. 处理器:Intel Centrino Duo 2.0 GHz (T7200)
  2. 内存:2 GB

以下是计数:

  1. 1 秒耗时:1995198000(接近 20 亿滴答声,没关系)
  2. 1 毫秒:2,159,460(接近 200 万,可以)
  3. 1 微秒:507,408(为什么?)
  4. 1 纳秒:139,000(为什么?)

直到 1 微秒,滴答声与频率一致。然而,在这之下,它不是。此外,我可以可靠地使用循环计数来区分 100 纳秒和 200 纳秒,而不是低于此值。

测量设置:

  1. 测量过程连接到一个处理器。
  2. 进程的优先级设置为最高。
  3. CPU 设置为始终以最高频率运行。

谁能解释原因?是因为睡眠(我使用的是 nanosleep)以这种方式实现的。 ?

【问题讨论】:

  • 愚蠢的问题,但是您如何测量时间,尤其是非常短的持续时间?
  • 我正在使用 rdtsc 读取 TSC。
  • 使用不太准确的时间测量方法 (nanosleep) 与更准确的时间测量方法 (TSC) 进行比较是没有意义的。

标签: c intel cycle rdtsc


【解决方案1】:

来自the specification of nanosleep

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我知道有开销。否定开销应该有效..对吗?我按照here 的解释通过对 RDTSC 进行三次调用来计算开销。我还使用 cpuid 指令进行序列化。
    猜你喜欢
    • 2023-04-10
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 2015-05-25
    • 2017-06-30
    • 2014-10-21
    • 1970-01-01
    相关资源
    最近更新 更多