网格处理中用CPU特定指令进行评估的一个方法
多CPU 的网格处理当中,要相对实时地对每段CPU局部运行的代码进行运行性能的评估记录,通常是调用OS API的做法,比较通用. 但若是特定条件下,则可以利用CPU本身的特点进行更高效的评估记录. 如下是一个例子://这个例子里用了X86 Pentinum CPU 的RDTSC指令
//RDTSC 指令是用来获取CPU内部的64bit 时间戳记数器的值timestamp.
//RDTSC 运行后EDX放timestamp高32bit值,EAX放timestamp低32bit值
//实际应用时要注意RDTSC本身也有执行时间.
unsigned long rdtsc_high0,rdtsc_low0;
unsigned long rdtsc_high1,rdtsc_low1;
unsigned long total_high,total_low;
__asm {
RDTSC;
mov rdtsc_high0,edx;
mov rdtsc_low0,eax;
}
.......//执行的网格任务代码
__asm {
RDTSC;
mov rdtsc_high1,edx;
mov rdtsc_low1,eax;
}
if(rdtsc_high1>=rdtsc_high0)
{
__asm {
mov eax,rdtsc_low1;
sub eax,rdtsc_low0;
cmp eax,0;
jg next1;
neg eax;
next1:
mov total_low,eax;
mov eax,rdtsc_high1;
sub eax,rdtsc_high0;
mov total_high,eax;
}
}
else
{
......//归零处理
}
......//依据total_high,total_low评估处理
不欣赏这么干 不懂,友情帮顶。。。 原帖由 cjaizss 于 2008-7-13 02:29 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
不欣赏这么干
:) 不提倡也不禁止. 原帖由 chenyx 于 2008-7-13 07:27 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
不懂,友情帮顶。。。
:) 友情谢谢.
页:
[1]