SSE Instructions

SSE Overview & History

Intel SSE技术的全称是Streaming SIMD Extension,中文译作流式单指令多数据指令扩展。1999年,Intel在Pentium III处理器上引入了SSE指令集,包括了70条新指令,主要操作单精度浮点数据类型,用于增强浮点计算性能,面向于数字信号处理与图形处理市场。SSE完整的支持IEEE 754 二进制浮点体系结构标准,而且SSE可以在各种处理器工作模式下运行:保护模式,实地址模式和虚拟8086模式。

MMX指令集是Intel的第一代SIMD技术,有两个主要的问题:MMX重用了x87浮点寄存器,这样导致处理器无法同时处理SIMD数据与浮点数据;MMX指令集只能操作整型数据类型。

而SSE引入了独立的新的XMM寄存器组,而且新增加了几条操作MMX寄存器的整型指令,可以看作是对MMX指令集的扩展。由于SSE支持浮点数计算,所以具有更广阔的应用范围,也更受欢迎。

SSE Data Types

SSE指令集将整型数据类型扩展到了128位,包括组合的字节,单字,或双字;还新增了128位的组合单精度浮点数据类型,即4个32位的单精度浮点数据。

SSE New Registers

在IA-32处理器架构上,SSE提供了8个128位的通用寄存器,每个寄存器都可以直接寻址,可以使用寄存器名XMM0~XMM7直接引用这些寄存器。XMM寄存器组是新的架构状态,使用它们需要操作系统的支持。在Intel 64处理器上,当处理器运行在64位模式下时,SSE指令可以使用16个128位的通用寄存器XMM0~XMM15。

新增加的MXCSR寄存器在下节讲述。

Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(1) - 概述/历史/新数据类型/XMM寄存器组相关推荐

  1. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(9) - 64位整型指令(MMX指令集扩展)

    SSE 64-Bit SIMD Integer Instructions SSE扩展增加了几条64位组合的整型指令,这些指令操作MMX寄存器和64位的存储器操作数,这些指令可以看作是对MMX指令集的扩 ...

  2. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(4) - 数据传输指令

    SSE Instruction Set SSE指令集大致可以分为4个功能组: 组合的与标量的单精度浮点指令 数据传输指令 算术指令 逻辑指令 比较指令 混洗shuffle指令 转换指令 64位SIMD ...

  3. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(3) - MXCSR寄存器详解

    MXCSR Control and Status Register 32位宽的MXCSR寄存器(参看下图)包含了控制与状态标志位,适用于SSE,SSE2和SSE3 SIMD浮点操作.这些标志位包括: ...

  4. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(2) - SSE程序设计环境概述

    SSE Programming Environment 下图是IA-32处理器上的SSE程序设计环境,所有的SSE指令操作XMM寄存器,MMX寄存器,和/或存储器. XMM寄存器,8个,128位宽,存 ...

  5. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(13/E) - FXSAVE/FXRSTOR指令

    FXSAVE and FXRSTOR instructions FXSAVE与FXRSTOR指令是从Pentium II处理器引入到IA-32架构上的,早于SSE指令集的引入.这两条指令的最初版本是用 ...

  6. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(7) - 混洗指令 解组合指令

    SSE Shuffle and Unpack Instructions SSE的混洗指令与解组合指令混洗shuffle或交错interleave单精度浮点操作数,并将结果保存到目标操作数. 指令 描述 ...

  7. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(11) - 数据可缓存性控制指令

    Cacheability Control Instructions 下面的3条指令允许使用"非时效存储提示non-tempral hint"将MMX/XMM寄存器中的数据写入到存储 ...

  8. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(10) - MXCSR状态控制指令

    MXCSR State Management Instructions MXCSR状态管理指令,LDMXCSR与STMXCSR,用于控制MXCSR寄存器状态.LDMXCSR指令从存储器中加载MXCSR ...

  9. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(6) - 逻辑指令 比较指令

    SSE Logical Instructions SSE的逻辑指令执行与,或,非,以及与非操作.操作数是组合的单精度浮点数. 指令 描述 ANDPS 格式:xmm1, xmm2/m128 对操作数执行 ...

最新文章

  1. 万能android调用webservice方法——参数类型不受限制
  2. DateTime.Ticks 属性
  3. Flash XSS 漏洞详解 根治的好办法
  4. 理解AngularJS中的依赖注入
  5. 将数据文件附加到数据库
  6. 三、开发调试应用程序
  7. memcache nginx
  8. Python中:re的match和search区别?
  9. Tp框架中模板中if条件如何使用?
  10. 学习大数据看门的几本书
  11. opencv 图像访问索引
  12. 疑问:当流量被封禁之后(论资本之力):防流量被恶意盗挖(抛砖篇)
  13. 高级政工师具备的能力_北京市高级政工师评审条件
  14. 利用MFC Picture Control控件 加载bmp,png
  15. 21.UNIX 环境高级编程--与网络打印机通信
  16. Linux 杀死stuck线程,如何中断weblogic中stuck thread
  17. 1085 Perfect Sequence(25 分)
  18. 预检请求会让服务器性能,如何避免“预检请求”?
  19. 职场:迈过职业生涯中的5个坎
  20. 软件开发人才级别的划分

热门文章

  1. 加载resnet18的代码
  2. Python内置模块---random
  3. c++编写手机小游戏代码_玩过自己开发的贪吃蛇吗?点这里,教你用Python写一个贪吃蛇小游戏!(附源代码)...
  4. 弹簧触摸开关原理图_电梯弹簧抱闸调整
  5. Collections.sort()和Arrays.sort()排序算法选择
  6. 两个线程能在cpu中同时运行吗_多核和多线程那些事
  7. 弹射王服务器正在维护中,《弹射王》IOS版合服公告-1.7
  8. 计算机系应用,近距离看专业 计算机专业应用篇
  9. mysql 列合并_实战讲解MySQL执行计划,面试官当场“要了我”
  10. mysql备份到带库_备份离线就必须上物理带库?