网站大量收购独家精品文档,联系QQ:2885784924

SSE指令集介绍完整版.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SSE指令集 内存对齐优化 对齐访问可以避免跨过不同的cache line访问数据,提高读取数据的效率 如:cache 0 1 2 3 Offset 0 1 2 3 4 5 6 7 8 9 10 11 4N 4N+1 4N+2 4N+3 若数据对齐,一次可将0 1 2 3读入,如没有对齐,则第须读取两次在提取出所需数据(如 1 2 3 4) SSE指令集 SoA和AoS的比较(待续) Struct { int a[100]; int b[100]; } SoA; Struct{ int a; int b; }AoS[100]; SoA可减少读取数据次数(地址是连续的) SSE指令集 其他优化(待续) 前端优化 分支预测 解码优化 执行核心优化 指令选取 编译器自动向量化 优化可部分向量化代码 内存访问优化 利用带宽,控制bank conflict 寄存器溢出,对齐,储存转发,布局优化 栈对齐,混合代码、数据,写合并等 SSE指令集 Intel 推荐优化工具:Vtune 通过使用特定的编码或者微处理器架构来给出性能提升的建议 给出一个程序中的修改引起关于特殊标准的性能提升或倒退的信息 提示可抽离指令层次的并行化程度 提示缓存和内存层次上的压力点所在 建议:部分性能提高不能带来整体性能提高,一些特殊度量的提高可能会导致总体性能下降。 ——by林英展 ——Intel处理器体系结构系列 X86架构发展历史 X86:Intel开发的一种微处理器体系结构 出现:1978年Intel 8086 CPU中 发展: 1971-1992年数字编号:80X86系列 1993-2005年奔腾系列:Pentium 2005酷睿系列:Core X86架构基本框架 X86架构基本框架 基本的执行模式 数据类型 指令集合 寄存器 X86架构基本框架 基本的执行模式 真实模式(寻址1M,段地址+偏移地址) 保护模式(扩充寻址范围) 系统管理模式(系统中断进入,可执行所有I/O和合适的系统指令) X86架构基本框架 数据类型 基本数据类型 数字数据类型 整型 浮点 指针类型 位字段数据类型 字符串数据类型 打包的SIMD数据类型等 X86架构基本框架 指令集合 通用指令(传送,算术,逻辑,控制等) X87 FPU指令(传送,算术,比较,控制等) MMX指令(传送,转化,打包,比较等) SSE指令(增加寄存器,SIMD浮点数运算) SSE2指令(整数指令,64-bit SIMD浮点运算) X86架构基本框架 指令集合 SSE3指令 SSE4指令 后续 SSE5指令 AVX指令 FMA指令 X86架构基本框架 寄存器 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) ——Intel处理器指令集 SSE指令集是什么 SSE:Streaming SIMD Extension SIMD(Single Instruction Multiple Data): 单指令流多数据流 用一个控制器对一组数据(又称“数据向量”)中的每一个分别执行相同的操作来实现空间上的并行性 MMX SSE SSE指令集的发展历史 SSE是MMX的超集 MMX:Matrix Math eXtension / MultiMedia eXtension 64-bit的MMX寄存器(8个,复用了浮点寄存器的尾部,与x87共用寄存器,缺少浮点指令) 支持在打包的字,字节,双字整数上的SIMD操作 MMX指令用于多媒体和通讯软件 SSE指令集 SSE指令集出现在Pentium III处理器中 包括了70条指令,其中50条SIMD浮点运算指令、12条MMX 整数运算增强指令、8条内存连续数据块传输指令 新增8个XMM寄存器(XMM0-XMM7) 在X86_64中额外增加8个(XMM8-XMM15) SSE2指令集: 使用了144个新增指令 从64位扩展到了128 位 提供双精度操作支持 SSE指令集 SSE3指令集 增加13条指令(允许寄存器内部之间运算,浮点数到整数的转换) 超线程性能增强指令可以提升处理器的超线程处理能力 SSSE3指令集 扩充了SSE3,增加16条指令 绝对值、相反数等 SSE4指令集 新增47条指令,更新至SSE4.2 AVX (Advanced Vector Extensions) 数据宽度从128位扩展为256位 操作数从两个增加到三个 SSE指令集

文档评论(0)

133****5313 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档