关于RDTSC和CPU调频

来源:互联网 发布:淘宝网店商标 编辑:程序博客网 时间:2024/05/16 07:37

 

RDTSC不过是个特定CPU支持的指令,这个指令将计算机启动以来的CPU运行周期数放到EDX:EAX寄存器中,EDX是高位,EAX是低位。如下

//CPU时间戳,用来获取机器周期数

unsigned __int64 GetCycleCount()

{      

    unsigned __int64 iCounter;

 

    asm rdtsc

    asm mov DWORD PTR iCounter, EAX

    asm mov DWORD PTR (iCounter+4), EDX

   

    return iCounter;

}

 

 

RDTSC指令在X86平台常用来计时、计算CPU频率,测试程序运行效率。除了INTEL的VTUNE软件,RDTSC是程序优化过程中的有力工具。

 

   但随着CPU的多核、超线程技术,特别是CPU调频技术,RDTSC不再可靠。TSC是以最大频率进行累计,所以发生降频后,通过RTDSC指令来获取TSC的数据,就会增加。

 

 CPU调频

   对节能有重要的意义,特别是移动PC。目前多数Linux发行版都已经默认启用了这个功能,但是Debian 4.0和Archlinux还没有,需要经过简单的设置才行。

   通过cat /proc/cpuinfo可以观察到CPU频率的变化。

   在centos中是通过cpuspeed来实现变频的。可以在centos的运行级系统服务中找到它

# chkconfig --list | grep cpu
cpuspeed        0:?

 

 

 

介绍给大家几篇精典文章
http://changelog.complete.org/posts/572-Saving-Power-with-CPU-Frequency-Scaling.html
http://www.thinkwiki.org/wiki/How_to_make_use_of_Dynamic_Frequency_Scaling
http://wiki.archlinux.org/index.php/SpeedStep

 

 

 

原创粉丝点击