X86中的RDTSC指令

原创 2010年07月10日 11:29:00

IntelX86中的RDTSCRead Time Stamp Counter 读取时间计数器的指令。这个指令读取CPU时间计数器,返回一个无符号的64位整数。它通过EDX EAX寄存器返回CPU被引导后,时钟所走的圈数。这意味着,你可以用它来计算时间间隔了多久。但是,由于这个指令还未被VC++采用,于是如果想要使用它,则必须用_emit伪指令嵌入它的OPCODE  0x0f 0x31。 于是可以写出一个取得时间计数器的代码如下

不难想象,如果我们取两次,再求得两次的差值,则可以统计出时间间隔。若要将这个计数器转换到现实的时间,则只需要除以CPU的时钟频率即可。

 

上面的内容是《WINDOWS图形编程》上看到的,由于其历史久远,于是我在网上查了一下关于RDTSC指令,想看看他的发展前景,不料找到了一篇关于他的不好消息。

 《多核时代不宜再用 x86 RDTSC 指令测试指令周期和时间》 http://blog.csdn.net/Solstice/archive/2010/01/16/5196544.aspx 上面分析了几点原因,个人认为讲得比较好。

 

不过,出于好奇的心态,你完全可以无视上面的文章,而继续用上面写出的函数写一个“高精度”的Timer,的确,它是高精度的。 如果你想看看多核与单核的影响,最好写一个多线程的测试程序,然后通过控制每个线程的CPU亲缘性------即让它们全部在一个CPU上运行,或者让他们分发到不同的CPU上运行。

多核时代不宜再用 x86 的 RDTSC 指令测试指令周期和时间

多核时代不宜再用 x86 的 RDTSC 指令测试指令周期和时间   陈硕 Blog.csdn.net/Solstice   自从 Intel Pentium 加入 RDTS...

多核时代不宜再用x86的RDTSC指令测试指令周期和时间

自从 Intel Pentium 加入 RDTSC 指令以来,这条指令是 micro-benchmarking 的利器,可以以极小的代价获得高精度的 CPU 时钟周期数(Time Stamp Coun...

Intel 32位 X86 汇编指令

本文描述基本的32位X86汇编语言的一个子集,其中涉及汇编语言的最核心部分,包括寄存器结构,数据表示,基本的操作指令(包括数据传送指令、逻辑计算指令、算数运算指令),以及函数的调用规则。个人认为:在理...

X86 SSE/AVX指令集:向量内积

向量内积 向量a和b的内积为:a⋅b=a1×b1+a2×b2+⋯+an×bna \cdot b = a_{1} \times b_{1} + a_{2} \times b_{2} + \cdots ...

16位模式/32位模式下PUSH指令探究——《x86汇编语言:从实模式到保护模式》读书笔记16

一、Intel 32 位处理器的工作模式 如上图所示,Intel 32 位处理器有3种工作模式。 (1)实模式:工作方式相当于一个8086 (2)保护模式:提供支持多任务环境的工作方式,建立...

X86指令编码内幕 --- ModRM 寻址模式

ModRM 寻址模式 在 x86/x64 指令集的世界里:Opcode 对指令提供操作码,ModRM 最主要作用是对指令的 operands 提供寻址,另一个作用是对 Opcode 进行补充,而 SI...

80x86指令系统和寻址方式

一、数据类型       计算机执行指令过程中需要处理各种类型的机器数,可处理的数据类型有七种:    1)无符号二进制数    2)带符号二进制数    3)BCD码    4)数的定点和浮点表示法...

X86指令编码内幕 --- displacement 值

displacement 值  displacement 是 ModRM 地址寻址里的一部分,displacement 为 base 或 index 提供一个 offset 值。因此:在指令的编码中必...

80X86标志寄存器及比较和跳转指令 zf pf sf cf of df cmp je jne jb jnb ja jna

标志寄存器 80X86的标志寄存器的结构如下 部分标志位说明 ZF ZF==Zero Flag, 是零标志位,记录指令执行结果是事为零。如果一条指令执行后结果为零,ZF置位,也就...

X86指令

数据传输指令     它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.     1. 通用数据传送指令.         MOV    传送字或字节.         MOVSX...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:X86中的RDTSC指令
举报原因:
原因补充:

(最多只允许输入30个字)