Chinaunix首页 | 论坛 | 博客
  • 博客访问: 896647
  • 博文数量: 73
  • 博客积分: 2689
  • 博客等级: 少校
  • 技术积分: 897
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-07 19:39
个人简介

一个有目标,为自己的未来努力奋斗的人

文章分类
文章存档

2015年(9)

2014年(2)

2013年(6)

2012年(11)

2011年(33)

2010年(12)

分类: LINUX

2010-11-22 17:38:30


1.SSE指令集简介
  略。网上有很多资源,有兴趣的读者,可以扩展阅读一下,这里不再赘述。

2.SSE指令集支持情况判断原理
  a.判断处理器是否支持SSE4.2,应采取如下方法:
    true if CPUID.01H:ECX.SSE4_2[bit 20] = 1
  b.判断处理器是否支持SSE4.1,应采取如下方法:
    true if CPUID.01H:ECX.SSE4_1[bit 19] = 1
  c.判断处理器是否支持SSSE3,应采取如下方法:
    true if CPUID.01H:ECX.SSSE3[bit 9] = 1
  d.判断处理器是否支持SSE2,应采取如下方法:
    true if CPUID.01H:EDX.SSE2[bit 26] = 1
  e.判断处理器是否支持SSE,应采取如下方法:
    true if CPUID.01H:EDX.SSE2[bit 25] = 1
  f.判断处理器是否支持MMX,应采取如下方法:
    true if CPUID.01H:EDX.SSE2[bit 23] = 1
  
3.SSE指令使用扩展
  a.在应用程序中使用CRC32指令之前,必须检查处理器是否支持SSE4.2.
  b.在应用程序中试图使用POPCNT指令之前,同样也必须检查处理器是否支持SSE4.2.
  c.在应用程序中试图使用CPUID指令之前,必须检查EFLAGS寄存器,若置位,则可使用。方法如下:
    true if EFLAFS[bit 21] = 1

4.错误调试说明
  a.在一个不支持SSE或SSE2的处理器上试图执行SSE或SSE2指令时,会产生一个invalid-opcode exception (#UD)错误.
  b.如果当 CR0.TS[bit 3] = 1时,处理器试图执行SSE3指令时,SSE3, SSSE3 和 SSE4 将会产生一个DNA Exception (#NM)[Device Not Available (DNA) Exceptions]错误. 
  c.如果当CPUID.01H:ECX.SSE3[bit 0] = 0时,处理器试图执行SSE3指令时将会产生一个invalid opcode fault错误.
  d.相似地,若出现a,b,c中类似的情况,处理器将会产生 invalid opcode fault.

5.判断系统支持SSE指令情况的C语言程序见附件。
文件:ssetest.c.tar.gz
大小:0KB
下载:下载


阅读(4900) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-11-23 15:46:39

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com