AVX指令集

AVX指令集

单指令多数据流
SandyBridge和Larrabee架构下的新指令集。Intel的微架构也进入了全速发展的时期,在刚刚结束的IDF峰会上Intel公司就发布了2010年的RoadMap。2010年Intel也将发布全新的处理器微架构SandyBridge,其中全新增加的指令集也将带来CPU性能的提升。Intel公司将为SandyBridge带来全新的指令扩展集IntelAdvancedVectorExtensions(IntelAVX)。AVX是在之前的128bit扩展到和256bit的SIMD(SingleInstruction,MultipleData)。而SandyBridge的SIMD演算单元扩展到256bits的同时数据传输也获得了提升,所以从理论上看CPU内核浮点运算性能提升到了2倍。[1]
    中文名:AVX指令集 外文名: 适用领域: 所属学科: 属于:进入了全速发展的时期 包括:2010年的RoadMap 发布:处理器微架构Sandy Bridge

简介

Intel的微架构进入了全速发展的时期,在2010年4月结束的IDF峰会上Intel公司就发布了2010年的RoadMap。2011年1月Intel发布了处理器微架构SandyBridge,其中全新增加的指令集也将带来CPU性能的提升。Intel公司将为SandyBridge带来全新的指令扩展集IntelAdvancedVectorExtensions(IntelAVX)。AVX是在之前的128bit扩展到和256bit的SIMD(SingleInstruction,MultipleData)。而SandyBridge的SIMD演算单元扩展到256bits的同时数据传输也获得了提升,所以从理论上看CPU内核浮点运算性能提升到了2倍。nIntel全新的发展战略也表明,从2010年开始软件和新指令也将有更好的兼容,而SIMD浮点运算并非决定因素,所以CPU的性能就变得更加困难。而性能增强的同时,SIMD浮点运算在已有编码的基础上也必须会有更大的提升空间,特别是scalar整数运算部分。目前单线程整数运算性能的提升也遇到了瓶颈,本次IDF展会上,确定了这一CPU开发方向的同时也表明了技术进化趋势。IntelAVX指令集,在SIMD计算性能增强的同时也沿用了的MMX/SSE指令集。不过和MMX/SSE的不同点在于增强的AVX指令,从指令的格式上就发生了很大的变化。x86(IA-32/Intel64)架构的基础上增加了prefix(Prefix),所以实现了新的命令,也使更加复杂的指令得以实现,从而提升了x86CPU的性能。nAVX并不是x86CPU的扩展指令集,可以实现更高的效率,同时和CPU硬件兼容性也更好,并且也有着足够的扩展空间,这都和其全新的命令格式系统有关。更加流畅的架构就是AVX发展的方向,换言之,就是摆脱传统x86的不足,在SSE指令的基础上AVX也使SSE指令接口更加易用。针对AVX的最新的命令编码系统,Intel也给出了更加详细的介绍,其中包括了大幅度扩充指令集的可能性。比如SandyBridge所带来的融合了乘法的双指令支持。从而可以更加容易地实现512bits和1024bits的扩展。而在2008年末到2009年推出的meniikoaCPU“Larrabee(LARAB)”处理器,就会采用AVX指令集。从地位上来看AVX也开始了Intel处理器指令集的新篇章。

VEX解决x86CPU瓶颈

AVX的VEX的编码系统,从某一侧面上也反应了Intel处理器今后的进化趋势,因为它解决了x86系列CPU在decoding上的不足。CoreMA有着4条命令的执行通道,不过frontend却存在着不足,首先L1缓存fetch端口也有着16字节的长度。而fetch的命令次数也被得到了限制。首先IA-32/Intel64命令的puridekodo也有着先天的瓶颈,而操作数和地址长度的指令prefix“LCP(LengthChangingPrefixes),使得puridekodo变得更慢,所以必须要改变长标注的算法。nCoreMA在puridekodo&decoding方面的不足,从根本上来看是IA-32/Intel64指令集架构本身的问题。IA-32/Intel64架构为了增强长命令而增设的缓存,使命令fetch拜年的更长,并且更加复杂的命令格式也由此产生。RISC(ReducedInstructionSetComputer)的命令格式也决定了其长度,decoding虽然容易,但x86系CPU也就要以牺牲资源为代价,同时也带来了电力的额外消耗。实际上最新的Nehalem也有着类似CoreMA的不足,从某种程度上来看也延续了其不足,如果明确了这一问题的话,那么Nehalem就必须要改进,其中16bytesfetch和puridekodo等方面的改进就势在必行了。而改进所需要的庞大晶体管增加,也会带来功耗的增加。

Nehalem的fetch&decoding

Nehalem的设计其实存在着疑问,不过从VEX格式来分析的话其意图就非常明确了。Intel在完善了CPU的puridekodo&decoding硬件设计的同时,必须要改进指令格式本身。fetch的指令变短的同时,指令的标注却更加复杂了,而解决的唯一办法就是改进指令格式。在充分考虑硬件方面设计后,intel做出了VEX格式开始的决策。IDF上Valentine先生也对VEX格式进行了详细的说明。他是CoreMA的frontend的fetch开发以及decoding的高级架构师,同时也是IA-32/Intel64指令编码器的设计专家。n从整体来看AVX指令的话,可以看出intel公司都CPU开发的全部脉络,Intel公司在对比beru的话,产生改进Drastic的指令集的微架构的想法就变得顺理成章了,如果分析原因的话,那就是微架构本身的改进了。全新的CPU必然要有更好的性能表现,想要提高CPU的性能,那么指令集是最行之有效的手段。AVX扩展指令包含了SSE指令,这也有助于AVX时代的过度。日前的SSEVEX格式也并不需要绝对的转换过程。Intel公司的BennyEitan先生也提到,出于整体的考虑,Intel公司对于AVX普及的进行并不会太过迅速,并且也不会立刻停止SSE及MMX时代。SandyBridge也增强了解码器的支持,和之前的IA-32/Intel64prefix相比,decoding也有了全新的VEX格式的支持。其中VEX指令对于decoding的命令数的支持上更加强劲,同时VEX在执行效率上也更加出色。不过这些和SandyBridge真正到来的时候可能还存在差异。

目前AMD新推出FMA指令也是AVX指令集中的一部分

Intel的FMA指令是3operands(操作数)的,被称为FMA3,而AMD的FMA是4operands的,被称为FMA4,AMD认为4operands更能提供效率。更加细化。

相关词条

相关搜索

其它词条