Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用RDTSC的纳米睡眠周期计数_C_Intel_Cycle_Rdtsc - Fatal编程技术网

使用RDTSC的纳米睡眠周期计数

使用RDTSC的纳米睡眠周期计数,c,intel,cycle,rdtsc,C,Intel,Cycle,Rdtsc,我试着看看我的笔记本电脑每纳秒需要多少个周期 笔记本电脑配置: 处理器:英特尔迅驰Duo 2.0 GHz(T7200) 内存:2GB 统计数字如下: 1秒:1995198000(接近20亿个滴答声,这没问题) 1毫秒:2159460(接近200万,还行) 1微秒:507408(为什么?) 1纳秒:139000(为什么?) 直到1微秒,滴答声与频率一致。然而,在这一点之下,情况并非如此。此外,我可以使用循环计数可靠地区分100纳秒和200纳秒,而不是低于此值 要测量的设置: 测量过程与一个处理器相

我试着看看我的笔记本电脑每纳秒需要多少个周期

笔记本电脑配置:

  • 处理器:英特尔迅驰Duo 2.0 GHz(T7200)
  • 内存:2GB
  • 统计数字如下:

  • 1秒:1995198000(接近20亿个滴答声,这没问题)
  • 1毫秒:2159460(接近200万,还行)
  • 1微秒:507408(为什么?)
  • 1纳秒:139000(为什么?)
  • 直到1微秒,滴答声与频率一致。然而,在这一点之下,情况并非如此。此外,我可以使用循环计数可靠地区分100纳秒和200纳秒,而不是低于此值

    要测量的设置:

  • 测量过程与一个处理器相连
  • 进程的优先级设置为最高
  • CPU设置为始终以最高频率运行 有人能解释原因吗?这是因为睡眠(我使用的是nanosleep)是以这种方式实现的吗

    来自:

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


    使用PC硬件最接近的方法是使用更长时间的统计分析。使用RDTSC测量时间需要一纳秒以上:

    愚蠢的问题,但是你如何测量时间,特别是非常短的持续时间?我使用RDTSC来读取TSC。与更精确的时间测量方法(TSC)相比,使用不太精确的时间测量方法(nanosleep)没有任何意义。我知道这会带来开销。否定开销应该是可行的。。正确的?我通过对RDTSC进行三次调用来计算开销,如前所述,我还使用cpuid指令进行序列化。