网格处理中用CPU特定指令进行评估的一个方法

发布于 2022-09-19 13:31:48 字数 1665 浏览 19 评论 0

多CPU 的网格处理当中,要相对实时地对每段CPU局部运行的代码进行运行性能的评估记录,通常是调用OS API的做法,比较通用. 但若是特定条件下,则可以利用CPU本身的特点进行更高效的评估记录. 如下是一个例子:

  1. //这个例子里用了X86 Pentinum CPU 的RDTSC指令
  2. //RDTSC 指令是用来获取CPU内部的64bit 时间戳记数器的值timestamp.
  3. //RDTSC 运行后EDX放timestamp高32bit值,EAX放timestamp低32bit值
  4. //实际应用时要注意RDTSC本身也有执行时间.
  5. unsigned long rdtsc_high0,rdtsc_low0;
  6. unsigned long rdtsc_high1,rdtsc_low1;
  7. unsigned long total_high,total_low;
  8. __asm {
  9.    RDTSC;
  10.    mov rdtsc_high0,edx;
  11.    mov rdtsc_low0,eax;
  12. }
  13. .......//执行的网格任务代码
  14. __asm {
  15.    RDTSC;
  16.    mov rdtsc_high1,edx;
  17.    mov rdtsc_low1,eax;
  18. }
  19. if(rdtsc_high1>=rdtsc_high0)
  20. {
  21.    __asm {
  22.        mov eax,rdtsc_low1;
  23.        sub eax,rdtsc_low0;
  24.        cmp eax,0;
  25.        jg next1;
  26.        neg eax;
  27.      next1:
  28.        mov total_low,eax;
  29.        mov eax,rdtsc_high1;
  30.        sub eax,rdtsc_high0;
  31.        mov total_high,eax;
  32.    }
  33. }
  34. else
  35. {
  36.    ......//归零处理
  37. }
  38. ......//依据total_high,total_low评估处理

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

故事灯 2022-09-26 13:31:48

不欣赏这么干

胡渣熟男 2022-09-26 13:31:48

不懂,友情帮顶。。。

意犹 2022-09-26 13:31:48

原帖由 cjaizss 于 2008-7-13 02:29 发表
不欣赏这么干

   不提倡也不禁止.

淤浪 2022-09-26 13:31:48

原帖由 chenyx 于 2008-7-13 07:27 发表
不懂,友情帮顶。。。

友情谢谢.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文