当前位置:首页 » 编程软件 » 编译器支持sse

编译器支持sse

发布时间: 2022-09-18 18:39:38

㈠ C语言此处的运算编译器会自动优化吗

这个要看你使用什么编译器了。查看编译器的帮助文档,它会告诉你它支持那些指令集,并且做哪些可能的优化。

不同的编译器,是不一样的。

补充:GCC 不太清楚,你连VC++的版本都不说。汗,VC6是不支持SSE的,需要安装VC6SP5。
VS2005 和 VS2008 都支持 SSE。对 SSE/MMX 指令集优化得最好的,还是 Intel 的 c++ 编译器。

对并行和高性能计算,Fortran 的优势比较大。特别是 Fortran2003 的新特征,为并行计算做了很多专门的设定。Intel 也有 Fortran 的编译器。

㈡ 为了能让编译器优化,C C++的代码怎么写才好更好地用到SSE的优化

如果用gcc可以使用这个参数-mtune=cpu-type(你的运行处理器类型),这样编译会针对该处理器支持的指令集进行优化,如果单独想支持SSE,可以用-msse。这都是泛泛的优化。

㈢ SSE 4.2的SEE4指令集家族介绍

SSE4的英文全称是:Streaming SIMD Extensions 4,是英特尔自从SSE2之后对ISA扩展指令集最大的一次的升级扩展。新指令集增强了从多媒体应用到高性能计算应用领域的性能,同时还利用一些专用电路实现对于特定应用加速。
从指令数目上看,SSE4指令增加了的指令改进了整数和浮点操作,支持DWORD和QWORD操作,新的单精度FP操作、快速寄存器操作、面向性能优化的内存操作等等,包括了图形、图像、数据装载各方面的革新,因此称其为SSE2以来最大的指令集变动也是不为过的。利用支持SSE4指令集的编译器编译之后,包括图形/图像处理、视频处理、2D/3D创作、多媒体、游戏、内存敏感负载、高性能计算等应用都会受益。
SSE4指令集分为两个版本:4.1和4.2,SSE4.1版本随着45nm Penryn发布,而SSE4.2版本会随着下一代架构Nehalem发布,4.1包括47条指令,4.2包括7条指令。 据Intel指出,在应用SSE4指令集后,Penryn增加了2个不同的32Bit向量整数乘法运算支持,引入了8位无符号 (Unsigned)最小值及最大值运算,以及16Bit 及32Bit 有符号 (Signed) 及无符号运算,并有效地改善编译器效率及提高向量化整数及单精度代码的运算能力。同时,SSE4 改良插入、提取、寻找、离散、跨步负载及存储等动作,令向量运算进一步专门化。
不仅如此,Intel SSE4指令集还进一步增强讯编码效果,例如可同时处理8个4-byte宽度的SAD(Sums of Absolute Differences)运算,常用于新一代高清影像编码如VC.1及H.264等规格中,令视频编码速度进一步提升。因此在播放高清视频的时候,即使在软解的情况下也同样游刃有余。
有效地改善编译器效率及提高向量化整数及单精度代码的运算能力
SSE4 构建于英特尔64 指令集架构 (Intel 64 Instruction Set Architecture) (ISA),该架构是开发 32 位和 64 位应用最为广泛应用的电脑架构。Intel SSE4 包含 54 条指令,主要分为两类:矢量化编译器和媒体加速器,以及高效加速字符串和文本处理。矢量化编译器和媒体加速器可提供高性能的编译器函数库,如封包(同时使用多个操作数)整数运算和浮点运算,可生成性能优化型代码。此外,它还包括高度优化的媒体相关运算,如绝对差值求和、浮点点积和内存负载等。矢量化编译器和媒体加速器指令可改进音频、视频和图像编辑应用、视频编码器、3D 应用和游戏的性能。高效加速字符串和文本处理包含多个压缩字符串比较指令,允许同时运行多项比较和搜索操作。由此受益的应用包括数据库和数据采掘应用,以及那些利用病毒扫描和编译器等分析、搜索和模式匹配算法的应用。
SSE4加入了6条浮点型点积运算指令
SSE4加入了6条浮点型点积运算指令,支持单精度、双精度浮点运算及浮点产生操作,且IEEE 754指令 (Nearest, -Inf, +Inf, and Truncate) 可立即转换其路径模式,大大减少延误,这些改变会对游戏及 3D 内容制作应用有重要意义。此外,SSE4加入串流式负载指令,可提高以图形帧缓冲区的读取数据频宽,理论上可获取完整的快取缓存行,即每次读取64Bit而非8Bit,并可保持在临时缓冲区内,让指令最多可带来8倍的读取频宽效能提升,对于视讯处理、成像以及图形处理器与中央处理器之间的共享数据应用,有着明显的效能提升。 Nehalem微架构最高支持4颗处理器的Quick Path多路服务器环境,单一芯片最高可拥有2、4及8颗核心,支持经改良的Hyper-Theading技术,令单颗处理器最高可支持16 Threads,而且Nehalem架构中的Havendale亦会内建绘图核心。新增SSE4.2指令集及ATA指令集令系统性能全面提升,令人期待。此外,新一代Nehalem会放弃FSB设计,采用全新的Quick Path Interconnect架构,已得知服务器版本的Nehalem处理器最高可拥有4组Quick Path Interconnect,并至少可组成四颗处理器的数据可直接互换的4Ways服务器架构。
Nehalem搭配了高速三级缓存
英特尔每次在缓存和指令集上的小小改进都会对处理器的性能产生质的变化。最新的45nm Nehalem产品中会出现第二代SSE4技术,这比45nm处理器更为强大,可以看成是一种流SIMD扩展:SSE 4.2。据了解,Nehalem包含一个全新的ATA中心和文字与字符串处理引擎,这意味着该处理器对于文本的处理性能有很大提升。此外,基于XML文件作为病毒定义的反病毒软件也可能因此而受益。
对于Nehalem的SSE4.2,Intel的Gelsinger介绍说,这7条指令集的用途各有不同,比如有面向CRC-32和POP Counts等特定应用的,有特别针对XML等的流式指令。Gelsinger称,新指令集可以把256条指令合并在一起执行,从而让XML类工作的性能提高3倍。
Nehalem性能相比上一代提升30%
预计在2009年的第二季末,Intel会推出内建绘图核心的处理器,核心代号为Havendale,这是一颗针对主流级市场的双核心处理器,采用45nm制程,支持SMT(Simultaneous Multi-Threading),L2 Cache容量最高为4M。虽然同样内建内存控制器及PCI-Express绘图接口,但它却不是原生设计,Havandale把绘图核心、PCI-Express绘图接口及内存控制器制作成一颗芯片,与处理器核心采用MCP(Multi-Chip Package)封装在一起,两者采用Quick Path Interconnect连接。相信大家更关心的是Intel能否真的把CPU和GPU真正的同一! Intel最新45nm处理器还加入了0.5倍频调节,增加了SSE4指令集,Wolfdale增加了2个不同的32Bit向量整数乘法运算支持,引入了8 位无符号 (Unsigned)最小值及最大值运算,以及16Bit 及32Bit 有符号 (Signed) 及无符号运算,并有效地改善编译器效率及提高向量化整数及单精度代码的运算能力。同时,SSE4 改良插入、提取、寻找、离散、跨步负载及存储等动作,令向量运算进一步专门化。
此外,SSE4加入串流式负载指令,可提高以图形帧缓冲区的读取数据频宽,理论上可获取完整的快取缓存行,即每次读取64Bit而非8Bit,并可保持在临时缓冲区内,让指令最多可带来8倍的读取频宽效能提升,对于视讯处理、成像以及图形处理器与中央处理器之间的共享数据应用,有着明显的效能提升。
在SSE4指令集中,共引入了47条新的多媒体运算指令。其中一条“streaming load instruction”流加载指令引起了广泛的注意。该指令为16bit同步加载指令,但加载结果会存储在高优先级的临时流缓冲中,绕过普通的CPU Cache。这一指令有利于GPU从CPU中高速共享数据,加速图像处理。
从Intel 45nm产品的性能以及规格来看都要比上一代的65nm产品有了长足的进步,同时在超频潜力上又有了一个质的飞跃。这让更多的I饭们看到冲击极限的希望。而且由于45nm制程在成本上会更低,因此在中低端市场的竞争中Intel 45nm制程的新处理器更具有冲击力。

㈣ 如何在Visual Studio 2008中启用SSE / SSE2指令集

Intel CPU扩展指令集于CPU说基本功能面差别并太基本指令集都差许厂家提升某面性能发扩展指令集扩展指令集定义新数据指令能够提高某面数据处理能力必需要软件支持面我i7处理器看看历代Intel指令集都哪些:MMX指令集 MMX(Multi Media eXtension媒体扩展指令集)指令集Intel公司于1996推项媒体指令增强技术MMX指令集包括57条媒体指令通些指令处理数据处理结超实际处理能力候能进行处理软件配合更高性能MMX益处于存操作系统必做任何修改便轻松执行MMX程序问题比较明显MMX指令集与x87浮点运算指令能够同执行必须做密集式交错切换才执行种情况势必造整系统运行质量降 MMX指令集Intel代表处理器:Pentium MMXSSE指令集SSE(Streaming SIMD Extensions单指令数据流扩展)指令集IntelPentium III处理器率先推其实早PIII式推前Intel公司曾经通各种渠道公布所谓KNI(Katmai New Instruction)指令集指令集SSE指令集前身并度传媒称MMX指令集版本即MMX2指令集究其背景原"KNI"指令集Intel公司早其代芯片命名指令集名称所谓"MMX2"则完全硬件评论家媒体凭觉印象"KNI" 评价Intel公司未式发布关于MMX2消息终推SSE指令集所谓胜"互联网SSE"指令集SSE指令集包括70条指令其包含提高3D图形运算效率50条SIMD(单指令数据技术)浮点运算指令、12条MMX 整数运算增强指令、8条优化内存连续数据块传输指令理论些指令目前流行图像处理、浮点运算、3D运算、视频处理、音频处理等诸媒体应用起全面强化作用SSE指令与3DNow!指令彼互兼容SSE包含3DNow!技术绝部功能实现同SSE兼容MMX指令通SIMD单钟周期并行处理浮点数据效提高浮点运算速度 SSE指令集Intel代表处理器:Pentium IIISSE2指令集

SSE2(Streaming SIMD Extensions 2Intel官称SIMD流技术扩展2或数据流单指令数据扩展指令集2)指令集Intel公司SSE指令集基础发展起相比于SSESSE2使用144新增指令扩展MMX技术SSE技术些指令提高广应用程序运行性能随MMX技术引进SIMD整数指令64位扩展128 位使SIMD整数类型操作效执行率倍提高双倍精度浮点SIMD指令允许 SIMD格式同执行两浮点操作提供双倍精度操作支持助于加速内容创建、财务、工程科应用除SSE2指令外初SSE指令增强通支持种数据类型(例双字四字)算术运算支持灵并且态范围更广计算功能SSE2指令让软件发员极其灵实施算并运行诸MPEG-2、MP3、3D图形等类软件增强性能IntelWillamette核Pentium 4始支持SSE2指令集AMD则K8架构SledgeHammer核Opteron始才支持SSE2指令集 SSE2指令集Intel代表处理器:Pentium 4SSE3指令集

SSE3(Streaming SIMD Extensions 3Intel官称SIMD流技术扩展3或数据流单指令数据扩展指令集3)指令集Intel公司SSE2指令集基础发展起相比于SSE2SSE3SSE2基础增加13额外SIMD指令SSE313新指令主要目改进线程同步特定应用程序领域例媒体游戏些新增指令强化处理器浮点转换至整数、复杂算、视频编码、SIMD浮点寄存器操作及线程同步等五面表现终达提升媒体游戏性能目IntelPrescott核Pentium 4始支持SSE3指令集AMD则2005半Troy核Opteron始才支持SSE3需要注意AMD所支持SSE3与IntelSSE3并完全相同主要删除针Intel超线程技术优化部指令 SSE3指令集Intel代表处理器:基于Prescott核新Pentium 4SSSE3指令集SSSE3(Supplemental Streaming SIMD Extensions 3)内置于Intel公司微处理器媒体关联扩张指令集扩张SSE3产品于20067月首装载Core 2 Duo处理器SSE3装载用命令口气处理复数数据“SIMD”处理式特别处理语音画关联能够高速发挥力量SSSE3 SSE3命令基础添加32新命令产品其原名TNISSE4指令集集,包含13条命令目前SSSE3先进指令集增强CPU媒体、图形图象Internet等处理能力 SSSE3指令集Intel代表处理器:65nm 酷睿2SSE4指令集两支:SSE4.1 + SSE4.2SSE4指令集认2001Intel重要指令集扩展包含54条指令 IntelPenryn处理器加入SSE4.1支持共增加47条新指令提升处理器图形、3D图像与游戏、视频编码与影音处理等面性能表现本Nehalem处理器进步支持SSE4.2指令集SSE4.2完整实现SSE4指令集相于SSE4.1加入7条新指令 SSE4.1指令集45纳米加入SSE4.1指令集令处理器媒体处理能力70%提升SSE4加入6条浮点型点积运算指令支持单精度、双精度浮点运算及浮点产操作且IEEE 754指令 (Nearest, -Inf, +Inf, and Truncate) 立即转换其路径模式减少延误些改变游戏及 3D 内容制作应用重要意义外SSE4加入串流式负载指令提高图形帧缓冲区读取数据频宽理论获取完整快取缓存行即每读取64Bit非8Bit并保持临缓冲区内让指令带8倍读取频宽效能提升于视讯处理、像及图形处理器与央处理器间共享数据应用着明显效能提升SSE4指令集让45nm Penryn处理器增加2同32Bit向量整数乘运算单元并加入8位符号(Unsigned)值及值运算及16Bit及32Bit符号 (Signed) 运算面支持SSE4指令集软件效改善编译器效率及提高向量化整数及单精度代码运算能力同SSE4改良插入、提取、寻找、离散、跨步负载及存储等作令向量运算进步专门 SSE4.1指令集Intel代表处理器:45nm 酷睿2SSE4.2指令集 Nehalem架构Core i7处理器SSE4.2指令集引入加入STTNI(字符串文本新指令)ATA(面向应用加速器)两优化指令SSE4.2新加入几条新指令两类第类字符串与文本新指令STTNISTTNI包含四条具体指令STTNI指令两16位数据进行匹配操作加速XML析面性能据Intel表示新指令XML析面取3.8倍性能提升第二类指令面向应用加速指令ATAATA包括冗余校验CRC32指令、计算源操作数非0位数POPCNT指令及于打包64位算术运算SIMD指令CRC32指令取代层数据协议经用循环冗余校验据Intel表示其加速比达6.5~18.6倍;POPCNT用于提高DNA基配、声音识别等包含数据集进行模式识别搜索等操作应用程序性能 Intel公布支持新指令集发工具些工具涵盖主流编译发环境目前已明确支持SSE4.2发环境包括:Intel C++ Compiler 10.X、微软Visual Studio 2008 VC++、GCC 4.3.1、Sun Studio Express等程序员直接使用高级编程语言编程编译器自优化结程序员用内嵌汇编式达目 SSE4指令集Intel代表处理器:45nm i7

㈤ Intel的编译器有哪些

1、Intel 编译支持 IA-32、Intel 64、Itanium 2、Intel Atom 处理器和某些非 Intel 的兼容处理器(例如某些 AMD 处理器)。开发人员应当检查系统需求。适用于 IA-32 和 Intel 64 的 Intel C++ 编译器的主要特点是自动向量化器,它能够生成 SSE、SSE2 和 SSE3 的 SIMD 指令及其适用于 Intel 无线 MMX 和 MMX 2 的嵌入式变种。
2、Intel C++ Compiler 进一步支持 OpenMP 3.0 和适用于对称多处理的自动并行化。借助于 Cluster OpenMP 的附加能力,编译器还可为分布存储多处理根据 OpenMP 指示自动生成消息传递接口调用。
3、Intel C++ Compiler 可通过四种方式获得,它分别是 Intel Parallel Studio、Intel C++ Compiler 专业版、Intel 编译器套装和 Intel Cluster Toolkit 编译器版的一部分。该编译器的最新发布是 Intel C++ Compiler 14.0 版本.

㈥ 使用gcc编译器编译sse指令的程序时需要引入什么库

#include <intrin.h>

㈦ 关于CPU指令集,电脑系统,软件的关系

Intel CPU的扩展指令集对于CPU来说,在基本功能方面,它们的差别并不太大,基本的指令集也都差不多,但是许多厂家为了提升某一方面性能,又开发了扩展指令集,扩展指令集定义了新的数据和指令,能够大大提高某方面数据处理能力,但必需要有软件支持,下面我们来i7处理器看一看历代Intel指令集都有哪些:MMX指令集 MMX(Multi Media eXtension,多媒体扩展指令集)指令集是Intel公司于1996年推出的一项多媒体指令增强技术。MMX指令集中包括有57条多媒体指令,通过这些指令可以一次处理多个数据,在处理结果超过实际处理能力的时候也能进行正常处理,这样在软件的配合下,就可以得到更高的性能。MMX的益处在于,当时存在的操作系统不必为此而做出任何修改便可以轻松地执行MMX程序。但是,问题也比较明显,那就是MMX指令集与x87浮点运算指令不能够同时执行,必须做密集式的交错切换才可以正常执行,这种情况就势必造成整个系统运行质量的下降。 MMX指令集Intel代表处理器:Pentium MMXSSE指令集SSE(Streaming SIMD Extensions,单指令多数据流扩展)指令集是Intel在Pentium III处理器中率先推出的。其实,早在PIII正式推出之前,Intel公司就曾经通过各种渠道公布过所谓的KNI(Katmai New Instruction)指令集,这个指令集也就是SSE指令集的前身,并一度被很多传媒称之为MMX指令集的下一个版本,即MMX2指令集。究其背景,原来"KNI"指令集是Intel公司最早为其下一代芯片命名的指令集名称,而所谓的"MMX2"则完全是硬件家们和媒体凭感觉和印象对"KNI"的 评价,Intel公司从未正式发布过关于MMX2的消息。而最终推出的SSE指令集也就是所谓胜出的"互联网SSE"指令集。SSE指令集包括了70条指令,其中包含提高3D图形运算效率的50条SIMD(单指令多数据技术)浮点运算指令、12条MMX 整数运算增强指令、8条优化内存中连续数据块传输指令。理论上这些指令对目前流行的图像处理、浮点运算、3D运算、视频处理、音频处理等诸多多媒体应用起到全面强化的作用。SSE指令与3DNow!指令彼此互不兼容,但SSE包含了3DNow!技术的绝大部分功能,只是实现的方法不同。SSE兼容MMX指令,它可以通过SIMD和单时钟周期并行处理多个浮点数据来有效地提高浮点运算速度。 SSE指令集Intel代表处理器:Pentium IIISSE2指令集 SSE2(Streaming SIMD Extensions 2,Intel官方称为SIMD流技术扩展2或数据流单指令多数据扩展指令集2)指令集是Intel公司在SSE指令集的基础上发展起来的。相比于SSE,SSE2使用了144个新增指令,扩展了MMX技术和SSE技术,这些指令提高了广大应用程序的运行性能。随MMX技术引进的SIMD整数指令从64位扩展到了128 位,使SIMD整数类型操作的有效执行率成倍提高。双倍精度浮点SIMD指令允许以 SIMD格式同时执行两个浮点操作,提供双倍精度操作支持有助于加速内容创建、财务、工程和科学应用。除SSE2指令之外,最初的SSE指令也得到增强,通过支持多种数据类型(例如,双字和四字)的算术运算,支持灵活并且动态范围更广的计算功能。SSE2指令可让软件开发员极其灵活的实施算法,并在运行诸如MPEG-2、MP3、3D图形等之类的软件时增强性能。Intel是从Willamette核心的Pentium 4开始支持SSE2指令集的,而AMD则是从K8架构的SledgeHammer核心的Opteron开始才支持SSE2指令集的。 SSE2指令集Intel代表处理器:老Pentium 4SSE3指令集 SSE3(Streaming SIMD Extensions 3,Intel官方称为SIMD流技术扩展3或数据流单指令多数据扩展指令集3)指令集是Intel公司在SSE2指令集的基础上发展起来的。相比于SSE2,SSE3在SSE2的基础上又增加了13个额外的SIMD指令。SSE3中13个新指令的主要目的是改进线程同步和特定应用程序领域,例如媒体和游戏。这些新增指令强化了处理器在浮点转换至整数、复杂算法、视频编码、SIMD浮点寄存器操作以及线程同步等五个方面的表现,最终达到提升多媒体和游戏性能的目的。Intel是从Prescott核心的Pentium 4开始支持SSE3指令集的,而AMD则是从2005年下半年Troy核心的Opteron开始才支持SSE3的。但是需要注意的是,AMD所支持的SSE3与Intel的SSE3并不完全相同,主要是删除了针对Intel超线程技术优化的部分指令。 SSE3指令集Intel代表处理器:基于Prescott核心新Pentium 4SSSE3指令集SSSE3(Supplemental Streaming SIMD Extensions 3)内置于Intel公司微处理器中的多媒体关联的扩张指令集。是扩张了SSE3的产品,于2006年7月首次装载在Core 2 Duo处理器中SSE3装载了用一个命令一口气处理复数个数据的“SIMD”的处理方式,特别在处理语音和动画关联上能够高速地发挥力量。SSSE3是在 SSE3命令的基础上又添加了32个新命令的产品,其原名为TNI,是SSE4指令集的子集,包含有13条命令。目前SSSE3也是最先进的指令集,增强了CPU的多媒体、图形图象和Internet等的处理能力。 SSSE3指令集Intel代表处理器:65nm 酷睿2SSE4指令集的两个分支:SSE4.1 + SSE4.2SSE4指令集被认为是2001年以来Intel最重要的指令集扩展,包含54条指令。 Intel在Penryn处理器中加入了对SSE4.1的支持,共增加了47条新指令,提升了处理器在图形、3D图像与游戏、视频编码与影音处理等方面的性能表现。本次在Nehalem处理器中,进一步支持了SSE4.2指令集。SSE4.2完整的实现了SSE4指令集,相对于SSE4.1加入了7条新指令。 SSE4.1指令集45纳米加入了SSE4.1指令集,令处理器的多媒体处理能力得到最大70%的提升。SSE4加入了6条浮点型点积运算指令,支持单精度、双精度浮点运算及浮点产生操作,且IEEE 754指令 (Nearest, -Inf, +Inf, and Truncate) 可立即转换其路径模式,大大减少延误,这些改变将对游戏及 3D 内容制作应用有重要意义。此外,SSE4加入串流式负载指令,可提高以图形帧缓冲区的读取数据频宽,理论上可获取完整的快取缓存行,即每次读取64Bit而非8Bit,并可保持在临时缓冲区内,让指令最多可带来8倍的读取频宽效能提升,对于视讯处理、成像以及图形处理器与中央处理器之间的共享数据应用,有着明显的效能提升。SSE4指令集让45nm Penryn处理器增加了2个不同的32Bit向量整数乘法运算单元,并加入8位无符号(Unsigned)最小值及最大值运算,以及16Bit及32Bit有符号 (Signed) 运算。在面对支持SSE4指令集的软件时,可以有效的改善编译器效率及提高向量化整数及单精度代码的运算能力。同时,SSE4改良插入、提取、寻找、离散、跨步负载及存储等动作,令向量运算进一步专门。 SSE4.1指令集Intel代表处理器:45nm 酷睿2SSE4.2指令集 在Nehalem架构的Core i7处理器中,SSE4.2指令集被引入,加入了STTNI(字符串文本新指令)和ATA(面向应用的加速器)两大优化指令。SSE4.2新加入的几条新指令有两类。第一类是字符串与文本新指令STTNI,STTNI包含了四条具体的指令。STTNI指令可以对两个16位的数据进行匹配操作,以加速在XML分析方面的性能。据Intel表示,新指令可以在XML分析方面取得3.8倍的性能提升。第二类指令是面向应用的加速指令ATA。ATA包括冗余校验的CRC32指令、计算源操作数中非0位个数的POPCNT指令,以及对于打包的64位算术运算的SIMD指令。CRC32指令可以取代上层数据协议中经常用到的循环冗余校验,据Intel表示其加速比可以达到6.5~18.6倍;POPCNT用于提高在DNA基因配对、声音识别等包含大数据集中进行模式识别和搜索等操作的应用程序性能。 Intel也公布了支持新指令集的开发工具。这些工具涵盖了主流的编译开发环境。目前已明确支持SSE4.2的开发环境包括:Intel C++ Compiler 10.X、微软的Visual Studio 2008 VC++、GCC 4.3.1、Sun Studio Express等。程序员可以直接使用高级编程语言编程,编译器会自动生成优化结果。当然程序员也可以用内嵌汇编的方式来达到目的。 SSE4指令集Intel代表处理器:45nm i7

㈧ 如何使用SSE指令集编写应用程序

1、编译器的自动矢量化

-mfpmath=sse

仅建议在P4和K8以上级别的处理器上使用该选项。

-mmmx

-msse
-msse2
-msse3
-m3dnow
-mssse3(gcc-4.3新增)
-msse4.1(gcc-4.3新增)
-msse4.2(gcc-4.3新增)
-msse4(含4.1和4.2,gcc-4.3新增)
是否使用相应的扩展指令集以及内置函数,需要按照自己的cpu做选择。

2、使用C/C++类库

目前,GNU
GCC等大多数编译器都提供了对SSE指令集的变成支持,允许用户在C++代码中不用编写汇编代码,就可以直接通过调用库函数而直接使用SSE指令。

3、使用编译器的内嵌原语(Intrinsics)

SSE的intrinsics的规则

_mm_<opcode>_<suffix>

其中,<opcode>是指令的类别,像add、sub等等,<suffix>是指令的种类。在SSE浮点运算指令中,只有两种:ps和ss。

ps:Packed
Single-precision,指对寄存器中的四个单精度浮点同时进行运算。

ss:Scaler
Single-precision,指对寄存器中的DATA0进行运算。

编程时需要包含下表所示的头文件:

mmintrin.h

MMX

xmmintrin.h

SSE

emmintrin.h

SSE2

pmmintrin.h

SSE3

tmmintrin.h

SSSE3

intrin.h

SSE4A

smmintrin.h

SSE4.1

nmmintrin.h

SSE4.2

mm3dnow.h

3DNOW

说明:如果导入一个高版本的指令集头文件,那么一般就不需要在导入低版本的指令了。

4、使用内嵌汇编

指令语法特征

如:PADDUSW(无符号饱和模式的字组相加)

前缀:P代表成组数据类型

操作指令:如ADD、SUB等

后缀:US为无符号饱和处理

S为有符号饱和处理

B、W、D、Q分别为字节组、字组、双字组、四字。

GCC的asm结构

用汇编编写的程序运行速度快,但开发速度非常慢,效率也很低。如果只是想对关键代码段进行优化,更好的办法是将汇编指令嵌入到C语言程序中,充分利用高级语言和汇编语言各自的优点。一般来讲,在C代码中嵌入汇编语句要比“纯粹”的汇编语言代码复杂的多,因为需要解决如何分配寄存器,以及如何与C代码中的变量相结合等问题。内联汇编能够灵活操作,而且可以使其输出通过C变量显示出来。因为它具有这种能力,所以asm可以用作汇编指令和C程序之间的接口。使用__asm__关键字,如果超过一行的指令,每行要加上双引号,并且后面加上\n\t。如果希望确保编译器不会在“asm”内部优化指令,可以在“__asm__”后面使用关键字“volatile”。

内联汇编的基本要素

具体语法结构,请看我的一篇博文:《GCC内嵌汇编》文章连接:

http://blog.chinaunix.net/u3/119372/showart_2417924.html

基本要素说明:

限定符

意义

“m” “v” “o”

内存单元

“r”

任意寄存器

“q”

寄存器eax,ebx,ecx,edx之一

“i” “h”

直接操作数

“E” “F”

浮点数

“g”

任意

“a” ”b” ”c” ”d”

分别表示寄存器eax,ebx,ecx,edx

“S” ”D”

寄存器esi,edi

“I”

常数(0至31)

5、SSE编程注意事项

数据对齐

CPU内存单元以16Byte为边界,如果数据在运算之前不进行对齐,会是指令运算产生大量延时。

GCC:

float
__attribute__((aligned(16))) a[4]={1.2f,3.5f,1.7f,2.8f};

VC:

__declspec(align(16)) float a[4]={1.2f,3.5f,1.7f,2.8f};

㈨ 哪些CPu支持SSE4.1

SSE4。1 矢量化编译器和媒体加速器指令,在4。0的基础上加入了6条浮点型点积运算指令,支持单精度、双精度浮点运算及浮点产生操作。说白了就是视频图象优化指令。对3D应用作用不大。

它是对视频压缩,编码作用大(视频图象制作处理),对看电影作用不大。

㈩ VC 6中如何编译使用了SSE、SSE2 、MMX、3Dnow指令的程序

我来个全一点的。
(1)MMX指令集
1997年Inter公司推出了多媒体扩展指令集(MMX),它包括57条多媒体指令。MMX指令主要用于增强CPU对多媒体信息的处理能力,提高CPU处理3D图形、视频和音频信息的能力。
(2)SSE指令集
由于MMX指令并没有带来3D游戏性能的显着提升,所以,1999年Inter公司在Pentium III CPU产品中推出了数据流单指令序列扩展指令(SSE)。SSE兼容MMX指令,它可以通过SIMD(单指令多数据技术)和单时钟周期并行处理多个浮点来有效地提高浮点运算速度。
在MMX指令集中,借用了浮点处理器的8个寄存器,这样导致了浮点运算速度降低。而在SSE指令集推出时,Inter公司在Pentium III CPU中增加了8个128位的SSE指令专用寄存器。而且SSE指令寄存器可以全速运行,保证了与浮点运算的并行性。
(3)SSE2指令集
在Pentium 4 CPU中,Inter公司开发了新指令集SSE2。这一次新开发的SSE2指令一共144条,包括浮点SIMD指令、整形SIMD指令、SIMD浮点和整形数据之间转换、数据在MMX寄存器中转换等几大部分。其中重要的改进包括引入新的数据格式,如:128位SIMD整数运算和64位双精度浮点运算等。为了更好地利用高速缓存。另外,在Pentium 4中还新增加了几条缓存指令,允许程序员控制已经缓存过的数据。
(4)SSE3指令集
相对于SSE2,SSE3又新增加了13条新指令,此前它们被统称为pni(prescott new instructions)。13条指令中,一条用于视频解码,两条用于线程同步,其余用于复杂的数学运算、浮点到整数转换和SIMD浮点运算。
(5)SSE4指令集
SSE4又增加了50条新的增加性能的指令,这些指令有助于编译、媒体、字符/文本处理和程序指向加速。
SSE4指令集将作为Inter公司未来“显着视频增强”平台的一部分。该平台的其他视频增强功能还有Clear Video技术(CVT)和统一显示接口(UDI)支持等,其中前者是对ATi AVIVO技术的回应,支持高级解码、后处理和增强型3D功能。
(6)3D Now!扩展指令集
3D Now!指令集是AMD公司1998年开发的多媒体扩展指令集,共有21条指令。针对MMX指令集没有加强浮点处理能力的弱点,重点提高了AMD公司K6系列CPU对3D图形的处理能力。由于指令有限,3D Now!指令集主要用于3D游戏,而对其他商业图形应用处理支持不足。
(7)X86指令集
要知道什么是指令集还要从当今的X86架构的CPU说起。X86指令集是Intel为其第一块16位CPU(i8086)专门开发的,IBM1981年推出的世界第一台PC机中的CPU—i8088(i8086简化版)使用的也是X86指令,同时电脑中为提高浮点数据处理能力而增加的X87芯片系列数学协处理器则另外使用X87指令,以后就将X86指令集和X87指令集统称为X86指令集。虽然随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486直到今天,但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,所以Intel公司所生产的所有CPU仍然继续使用X86指令集,所以它的CPU仍属于X86系列。由于Intel X86系列及其兼容CPU都使用X86指令集,所以就形成了今天庞大的X86系列及兼容CPU阵容。
(8)EM64T指令集
Inter公司的EM64T(Extended Memory 64 Technology)即64位内存扩展技术。该技术为服务器和工作站平台应用提供扩充的内存寻址能力,拥有更多的内存地址空间,可带来更大的应用灵活性,特别有利于提升音频视频编辑、CAD设计等复杂工程软件及游戏软件的应用。
我们常说的64位指的是AMD公司出的64位CPU,而EM64T则是Inter公司按照自己的意思理解出来的64位,也就是和AMD公司的64位对应的另一种叫法。
(9)RISC指令集
RISC指令集是以后高性能CPU的发展方向。它与传统的CISC(复杂指令集)相对。相比而言,RISC的指令格式统一,种类比较少,寻址方式也比复杂指令集少。目前使用RISC指令集的体系结构主要有ARM、MIPS。
(10)3DNow!+指令集
在原有的指令集基础上,增加到52条指令,其中包含了部分SSE指令,该指令集主要用于新型的AMD CPU上。

热点内容
冠锋压缩机 发布:2025-04-14 17:37:03 浏览:991
清空oracle数据库数据 发布:2025-04-14 17:16:37 浏览:157
decimalsql 发布:2025-04-14 17:15:55 浏览:795
androidapk文件夹 发布:2025-04-14 16:47:12 浏览:947
手机我的世界pvp服务器地址 发布:2025-04-14 16:45:42 浏览:581
脚本是什么意思lol 发布:2025-04-14 16:35:31 浏览:478
我的世界永恒七区服务器地址 发布:2025-04-14 16:27:41 浏览:62
2022雷凌又升级了哪些配置 发布:2025-04-14 16:27:00 浏览:696
gps平台源码 发布:2025-04-14 16:18:18 浏览:191
编译原理文法简化 发布:2025-04-14 16:17:45 浏览:180