分类: LINUX
2010-05-07 16:46:42
|
|
|
有了rdtsc指令,测试代码的性能就比较简单:在需要测试的代码之前和之后读取并保存time stamp counter,之后两个值比较就可以了解该段代码需要多少个时钟。但是有一点需要注意,由于rdtsc不是serialing指令,意味着rdtsc有 可能和被测试代码一起执行(在time stamp counter被读取出来之前,被测试代码的一部分微操作可能已经完成),所以需要一种机制来阻止rdtsc和被测试代码并行执行。即在rdtsc之间加入一个serialing指令。所谓的serialing指令是指那些直到前面指令的操作完成以后,才会被执行,并清空流水线的指令。多数 serialing指令是特权指令,只有cpuid指令可以在任何特权级别都可以执行,所以使用rdtsc时,一般使用cpuid指令来隔离被测试代码 |
|
|