go语言sse指令 go语言sprintf

SSE4指令集的内容SSE4:全名为Streaming SIMD Extension 4,被视为继2001年以来最重要的媒体指令集架构的改进,除扩展Intel 64指令集架构外 。据了解,SSE4将分为4.1版本及4.2版本,共新增47条指令,指令如右图:
据Intel官方数据显示,近期与多间软件公司全力合作,2008 年第一季将有21款软件支持SSE4指令集,包括影像编码及播放软件、数字影像内容处理软件及3D游戏核心,性能提高20%至110%不等 。
主要构成
IntelSSE4 由一套全新指令构成,旨在提升一系列应用程序的性能和能效 。Intel SSE4 构建于英特尔64指令集架构(Intel64 ) (ISA) 。Intel SSE4 是英特尔与其独立软件开发商 (ISV) 团体精诚合作的成果,它可以支持开发人员轻松改进产品,同时保持必要的应用级兼容性,以适应处理器不断迭代的需求 。
自1999年多媒体指令集问世以来 , 已经经过了九年的时间 。
主要分类
Penryn 支持 47 条 IntelSSE4 指令 , 包括矢量化编译器和媒体加速器指令 。未来的英特尔处理器将支持其余指令 , 而软件也将能从程序的角度检测出处理器支持哪些 Intel SSE4 指令 。
从指令数目上看,SSE4指令增加了的指令改进了整数和浮点操作 。SSE4指令集将分为两个版本:4.1和4.2,SSE4.1版本随着45nm Penryn发布,而SSE4.2版本将会随着下一代架构Nehalem发布 。
Penryn处理器SSE4指令集解析
Penryn处理器搭载了最新的SSE4指令集,SSE4(Streaming SIMD Extensions 4)是英特尔自从SSE2之后对ISA扩展指令集最大的一次的升级扩展,它将会随着Penryn处理器陆续应用于台式机平台、移动平台和服务器中……
它将会随着Penryn处理器陆续应用于台式机平台、移动平台和服务器中 。据目前所致,SSE4包括大约50条新指令,Penryn通过这些新指令集,增强了从媒体应用到高性能计算应用领域的性能 , 同时还利用一些专用电路实现对于特定应用加速 。
从指令数目上看,SSE4的47条指令增加了的指令改进了整数和浮点操作 。支持DWORD和QWORD操作,新的单精度FP操作、快速寄存器操作、面向性能优化的内存操作等等,包括了图形、图像、数据装载各方面的革新,因此称其为SSE2以来最大的指令集变动也是不为过的 。利用支持SSE4指令集的编译器编译之后 , 包括图形/图像处理、视频处理、2D/3D创作、多媒体、游戏、内存敏感负载、高性能计算等应用都会受益 。
SSE4指令集的具体指令如下图所示,按照目前的资料,SSE4指令集还将分为两个版本:4.1和4.2,SSE4.1版本将随着45nm Penryn发布 , 而SSE4.2版本将会随着Penryn的下一代Nehalem发布,4.1将包括47条指令,4.2将包括7条指令,因此下图的指令数目实际上并不是47 , 未来的SSE4.2指令数目也可能会有变动 。
对于Nehalem的SSE4.2,Intel的Gelsinger介绍说,这7条指令集的用途各有不同 , 比如有面向CRC-32和POP Counts等特定应用的,有特别针对XML等的流式指令 。Gelsinger称,新指令集可以将256条指令合并在一起执行,从而让XML类工作的性能提高3倍 。
SSE4——Penryn搭载的SSE4.1指令集主要分为三个部分,分别是SSE4视频编码加速部分、SSE4图形加速部分和SSE4流加载部分,其中SSE4视频编码加速部分包括了14条指令 , 用于加速4x4绝对差和、子像素过滤一击数据查找方面的性能 。
在进行视频编码时,需要进行大量的Motion Estimation(动态预测) , 动态预测是视频编码过程中极其重要的一个环节,它的算法效率对整个编码效率有很大的影响,而这个动态预测需要进行大量的SAD(Sums of Absolute Difference , 差分绝对值和)的运算,该运算是大部分视频编码算法中运动估计一步常采用的方法 。SAD算法将会在相邻两个连续视频帧中找出一个大块的运动情况,以纪录其运动数据代替纪录像素数据而节约存储容量、压缩视频 。为此 , SAD需要计算两个大块中每一组对应的像素值之间绝对差值的累加和 。这本身就是一个非常复杂的大数据量运算动作,即使依靠SIMD指令的一条指令就处理大量数据的优势,要组合成SAD操作代码也需要大量的指令 。

推荐阅读