杂志大全 http://all.zcom.com

当前位置:用VC++编程实现对CPU主频的检测 文章内容

所属分类:互联网  自动化/计算机技术  

用VC++编程实现对CPU主频的检测

作者:张 研 分类:自动化/计算机技术 上传者:ZCOM网友

RDTSC指令

Intel 80386微处理器支持许多功能强大的指令,其中有一条名为RDTSC(read time stamp count)的指令,顾名思义,这条指令用于读取CPU的时间戳计数器。RDTSC指令读出的数据共64位,高32位保存在EDX寄存器中,低32位保存在EAX寄存器中。处理器在每个时钟周期内增加时间戳计数器的数值,并且当处理器复位时把计数器清零。Intel 80386微处理器设置了4个特权级:0级、1级、2级和3级,操作系统运行于特权级第0级上,而用户程序运行在第3级上,操作系统对系统硬件采取了保护的策略,限制运行于第3级的应用程序对系统资源(如中断控制器、内存等)的操作,因此不论在保护模式下还是在虚拟8086模式下,CR4寄存器中都有一个名为TSD(time stamp disable)的标志位,用来标记时间戳(time stamp)是否使能,以此来限制用户对RDTSC指令的使用。当TSD标志被清零时,RDTSC指令可以在任何特权级下执行;当TSD标志被置位时,RDTSC指令就只能在0特权级下执行。幸运的是,TSD标志默认是被清零的,所以我们可以在WINDOWS操作系统的用户级(即第3级)下使用RDTSC指令。