华为手机云空间在哪?

2008人阅读
编程(17)
& & && &&&
& &&&2007年8月,AMD抢先宣布了SSE5指令集(SSE到SSE4均为英特尔出品),英特尔当即黑脸表示不支持SSE5,转而在2008年3月宣布Sandy Bridge微架构将引入全新的AVX指令集,同年4月英特尔公布AVX指令集规范,随后开始不断进行更新,业界普遍认为支持AVX指令集是Sandy
Bridge最重要的进步,没有之一。
& &&&AVX(Advanced Vector Extensions,高级矢量扩展)指令集借鉴了一些AMD SSE5的设计思路,进行扩展和加强,形成一套新一代的完整SIMD指令集规范。Windows 7 SP1已经开始支持英特尔AVX指令集了。& &
& && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && &&&
& && && && && && && && && && && && && && && && && && && &
& && && && && && && && && && && && && && && && && && & &&AVX是什么?AVX指令集技术与应用解析
& && && && && && && && && && &&& 11:37& &|&&关键字:Sandy Bridge,AVX指令,SSE指令,扩展指令集
 指令集是指CPU能执行的所有指令的集合,每一指令对应一种操作,任何程序最终要编译成一条条指令才能让CPU识别并执行。CPU依靠指令来
计算和控制系统,所以指令强弱是衡量CPU性能的重要指标,指令集也成为提高CPU效率的有效工具。
  CPU都有一个基本的指令集,比如说目前英特尔和AMD的绝大部分处理器都使用的是X86指令集,因为它们都源自于X86架构。但无论CPU有多
快,X86指令也只能一次处理一个数据,这样效率就很低下,毕竟在很多应用中,数据都是成组出现的,比如一个点的坐标(XYZ)和颜色(RGB
)、多声道音频等。为了提高CPU在某些方面的性能,就必须增加一些特殊的指令满足时代进步的需求,这些新增的指令就构成了扩展指令集。
英特尔CPU扩展指令集演变
  英特尔在1996年率先引入了MMX(Multi Media eXtensions)多媒体扩展指令集,也开创了SIMD(Single Instruction Multiple Data,单
指令多数据)指令集之先河,即在一个周期内一个指令可以完成多个数据操作,MMX指令集的出现让当时的MMX Pentium大出风头。
1.jpg (91.56 KB, 下载次数: 14)
15:12 上传
英特尔处理器扩展指令集演变史(图片来源后藤弘茂)
SSE(Streaming SIMD Extensions,流式单指令多数据扩展)指令集是1999年英特尔在Pentium III处理器中率先推出的,并将矢量处理能力从
64位扩展到了128位。在Willamette核心的Pentium 4中英特尔又将扩展指令集升级到SSE2(2000年),而SSE3指令集(2004年)是从Prescott核
心的Pentium 4开始出现。
  SSE4(2007年)指令集是自SSE以来最大的一次指令集扩展,它实际上分成Penryn中出现的SSE4.1和Nehalem中出现的SSE4.2,其中SSE4.1占
据了大部分的指令,共有47条,Nehalem中的SSE4指令集更新很少,只有7条指令,这样一共有54条指令,称为SSE4.2。
2.png (18.47 KB, 下载次数: 11)
15:12 上传
Sandy Bridge支持AVX指令集
当我们还在惯性的认为英特尔将推出SSE5时,不料半路杀出来个程咬金,2007年8月,AMD抢先宣布了SSE5指令集(SSE到SSE4均为英特尔出品),
英特尔当即黑脸表示不支持SSE5,转而在2008年3月宣布Sandy Bridge微架构将引入全新的AVX指令集,同年4月英特尔公布AVX指令集规范,随后
开始不断进行更新,业界普遍认为支持AVX指令集是Sandy Bridge最重要的进步,没有之一。
英特尔AVX指令集简介
  AVX(Advanced Vector Extensions,高级矢量扩展)指令集借鉴了一些AMD SSE5的设计思路,进行扩展和加强,形成一套新一代的完整
SIMD指令集规范。
3.jpg (30.41 KB, 下载次数: 11)
15:12 上传
IDF2010上演示AVX应用
在今年4月的IDF2010上,英特尔演示了AVX的应用,在两个不同平台上动态跟踪刘翔运行服上的五星红旗,结果显示,支持AVX的系统视频跟踪的
用时为14秒,比不支持AVX的系统快了21秒,性能提升了60%以上。
  有兴趣的读者可以点击观看AVX应用主题演讲视频,
时间大概在第33分钟左右。
4.jpg (87.68 KB, 下载次数: 12)
15:13 上传
英特尔AVX的新特性
英特尔AVX指令集主要在以下几个方面得到扩充和加强:
   ·支持256位矢量计算,浮点性能最大提升2倍
   ·增强的数据重排,更有效存取数据
   ·支持3操作数和4操作数,在矢量和标量代码中能更好使用寄存器
   ·支持灵活的不对齐内存地址访问
   ·支持灵活的扩展性强的VEX编码方式,可减少代码
支持256位矢量计算
  自1999年SSE将矢量处理能力从64位提升到128位后,SSE系列指令都只能使用128位XMM寄存器,这次AVX将所有16个128位XMM寄存器扩充为
256位的YMM寄存器,从而支持256位的矢量计算。
5.jpg (19.4 KB, 下载次数: 12)
15:13 上传
128位的XMM寄存器扩展到256位的YMM寄存器
这意味着可以同时处理8个32bit的浮点或是一个256bit的浮点,在写程序时可以忽略SSE 128bit的限制,直接写入一个可以进行多组操作,能够
充分利用256bit数据位宽的代码,理想状态下,浮点性能最高能达到前代的2倍水平。
  当然有时并不是能完全能利用这256位,在大多数情况下,这些寄存器的高128位是设为0或者是“left unchanged”,同时所有的
SSE/SSE2/SSE3/SSSE3/SSE4指令是被AVX全面兼容的(AVX不兼容MMX),因此实际操作的是YMM寄存器的低128位,在这一点上与原来的SSE系列指
令集无异。
6.jpg (102.96 KB, 下载次数: 11)
15:13 上传
Sandy Bridge最突出的部分
为了满足指令集带来的改进,Load载入单元也要适应一次载入256Bit的能力,所以增加了一组载入单元完成载入操作,并不是单纯的将带宽扩展
一倍。这样可以在一个时钟周期内实现256位的乘、加和Shuffle运算。
  使用新的256位寄存器来提升数据I/O效率,更好的标记、传播载入的数据,动态的改变数据序列,以此来组织、访问和载入运算所需的数据
,速度更快效率更高。
7.jpg (93.02 KB, 下载次数: 11)
15:13 上传
AVX增加了很多新的浮点运算指令
AVX还引入了很多新的浮点运算指令,浮点运算能力加强,不光提升了3D游戏,还可以更有效的支持如复杂的flash显示,更快的SVG(可伸缩矢
量图形)支持,更好的HTML5效果等等,相比用GPU计算来讲功耗更小,体积更小,成本也小,对GPU计算是个不大不小的冲击。
支持3操作数和4操作数
  通常一条计算机指令包括有操作码和操作数(operands),操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。比如
movaps xmm1, xmm0就是一个双操作数,SSE指令movaps为操作码,其功能是将xmm0寄存器的内容复制给xmm1。
8.jpg (93.45 KB, 下载次数: 11)
15:13 上传
新的3操作数和4操作数格式
AVX指令集改进和加强了原有的在3个操作数指令的编码和语法,使之更灵活。比如要实现 xmm10 = xmm9 + xmm1 的功能,以前需要两个指令执
    movapps xmm10, xmm9       将xmm9寄存器数据copy到xmm10
    addpd xmm10, xmm1        将xmm1和xmm10寄存器数据相加,并存放到xmm10
  应用AVX指令集新的3操作数方式,可以直接由一条指令就能完成:
    vaddpd xmm10, xmm9, xmm1
  显然AVX三操作数能带来更少的寄存器复制,并且代码也更精简。
  4操作数虽然是AMD在SSE5中首先提出的,但英特尔的AVX也能支持这一方式,其最终收益是对AVX 128和AVX 256使用非破坏性语法,减少寄
存器间的拷贝,精简代码,增加load/op fusion的机会。
    movaps xmm0, xmm4
    movaps xmm1, xmm2
    blendvps xmm1, m128
  比如上面的三条指令,利用4操作数,可以不需要使用隐含的xmm0,直接由下面一条指令完成:
    vblendvps xmm1, xmm2, m128, xmm4
支持灵活的不对齐内存地址访问
  CPU在工作时只能按照内部数据位宽长度(比如说32bit)的整倍数为边界进行内存操作,即只能从地址0、32、64、96...处进行存取,而不
能从27、58、83等非边界地址处进行。如果一定要取这些非边界地址处的内容,则必须用若干个操作将其凑出来,因而大大影响存取效率。
  一个结构体的设计长度却并不一定是32的倍数,例如一个六个字符的结构其长度为48位,如果多个这样的结构在内存中顺着摆放,则许多结
构的起始地址将不在边界处,因此编译程序总是会将每个结构的尾部都加入一些必要的空白,将其凑成32的整数倍,这就是边界对齐的基本道理
9.jpg (15.44 KB, 下载次数: 12)
15:13 上传
传统的指令中,当访问不对齐内存(unaligned memory access)时,需要相当大的访问周期,甚至会有惩罚性延时,极大地降低速度。
  而在AVX指令集中,以VEX前缀编码的算术指令和内存访问指令在访问内存时更灵活,既可访问对齐的内存地址,也可访问未对齐的数据。当
然访问未对齐数据,多少都会有损失,但相对传统的指令来说,所承受的惩罚要小得多。
革新的VEX指令编码方式
  英特尔在2008年春天的IDF上介绍AVX的时候就表示AVX的重点在于采用了称为“VEX (Vector Extension)”革新的指令编码方式。
10.jpg (58.67 KB, 下载次数: 11)
15:13 上传
VEX编码指令解决方案
x86指令集容易扩张,但是每次对于新指令和新数据类型的增加,都会在操作码(opcode)之前增加了一个字节的前缀(prefix),从而实现对
扩展的支持。这样的就带来指令集的复杂化和命令长度增加,从而导致二进制的冗余和增加CPU命令解码硬件的复杂性。
  VEX编码方式解决了这个问题,VEX的构想,就是压缩prefix中包含的信息,在1个字节的payload中全部包括了prefix的内容,这样缩短指令
长度,从而极大地降低了无谓的code size浪费。并且在今后导入的新的寄存器中,128bits或更长的256bits的数据,也将在payload中压缩。
11.jpg (36.47 KB, 下载次数: 11)
15:13 上传
Intel AVX vs. AMD XOP(图片来源后藤弘茂)
VEX prefix分为2个字节和3个字节的版本,即前缀部分使用C4h和C5h。AMD的XOP指令集采用了类似的方式,XOP前缀字节改成了8Fh,虽然前缀不
同,但是payload部分的格式与VEX是相同的。AVX的VEX的编码系统,也反应了英特尔处理器今后的进化趋势,它解决了x86系列CPU在解码能力上
AVX是Sandy Bridge最重要的改进
12.jpg (59.76 KB, 下载次数: 12)
15:13 上传
AVX相对SSE带来的处理速度提升
英特尔AVX指令集将矢量处理能力提升到256bit,理论上可以让CPU的浮点性能最大提升两倍,而且革新的VEX编码方式也突破x86在解码方面的瓶
颈,非常值得期待。
  由于AMD的SSE5和AVX指令集功能类似,并且AVX包含更多的优秀特性,虽然SSE5是要早于AVX宣布的,但在去年AMD还是决定支持AVX,避免让
开发者徒增开发难度。同时AMD改写SSE5,重定义为XOP、CVT16和FMA4指令集。AMD有关人员甚至暗示由于受到了AVX指令集影响,Bulldozer的计
划从2010年延迟到了2011年。
  AVX作为Sandy Bridge处理器最重要的改进,在几天后将闪亮登场,除硬件支持外,软件上的支持也是必不可少的,所幸的是Windows 7 SP1
已经开始支持英特尔AVX指令集了。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
(1)(2)(7)(18)(9)(4)(1)(4)(14)(6)(29)(4)(2)(18)(4)(2)CPU的两种指令集 - 简书
CPU的两种指令集
CPU作为一个具有特定功能的芯片,里头含有微指令集,我们所使用的软件都要经过CPU内部的指令集来处理才行。这些指令集的设计主要又被分为两种设计理念,这就是目前计算机业界常见到的两种主要CPU指令集种类: 分别是精简指令集(RISC)与复杂指令集(CISC)系统。精简指令集(Reduced Instruction Set Computing, RISC)这种CPU的设计中,微指令集较为精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳; 但是若要做复杂的事情,就要由多个指令来完成。常见的RISC微指令集CPU主要例如Sun公司的SPARC系列、 IBM公司的Power Architecture(包括 PowerPC)系列、与ARM系列等。在应用方面,SPARC架构的计算机常用于学术领域的大型工作站中,包括银行金融体系的主服务器也都有这类的计算机架构; 至于PowerPC架构的应用上,例如Sony公司出产的Play Station3(PS3)就是使用PowerPC架构的 Cell处理器; 那ARM呢?你常使用的各厂智能手机,PDA,导航系统、网络设备(交换器、路由器等)等,几乎都是使用ARM架构的CPU。老实说,目前世界上使用范围最广的CPU可能就是ARM架构的。复杂指令集(Complex Instruction Set Computer, CISC)与RISC不同的是,CISC在微指令集的每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂, 每条指令的长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长, 但每条个别指令可以处理的工作较为丰富。常见的CISC微指令集CPU主要有AMD、Intel、VIA 等x86 架构的CPU。由于 AMD、Intel、VIA 所开发出来的x86 架构CPU被大量使用于个人计算机(Personal computer)用途上面, 因此,个人计算机常被称为 x86 架构的计算机。那为何称为 x86 架构呢? 这是因为最早的那颗 Intel 发布出来的 CPU 代号称为 8086,后来依此架构又开发出 8..., 因此这种架构的 CPU 就被称为 x86 架构了。在2003年以前由 Intel 所开发的 x86 架构 CPU 由 8 位升级到 16、 32 位,后来 AMD 依此架构修改新一代的 CPU 为 64 位, 为了区别两者的差异,因此 64 位的个人计算机 CPU 又被统称为 x86_64架构。那么不同的 x86 架构的CPU 有什么差异呢?除了 CPU 的整体结构(如第二层快取、每次运作可执行癿指令数等)之外, 主要是在于微指令集的不同。新的 x86的 CPU 大多含有很先进的微指令集, 这些微指令集可以加速多媒体程序的运作,也能够加强虚拟化癿效能,而且某些微指令集更能够增加能源效率, 让CPU 耗电量降低。由于电费越来越高,购买计算机时,除了整体的效能之外, 节能省电的CPU也是需要重点考虑的。Intel/AMD的 x86 架构中,关于多媒体、虚拟化、省电功能等方面重要的微指令集。多媒体:MMX, SSE, SSE2, SSE3, SSE4, AMD-3DNow!虚拟化:Intel-VT, AMD-SVM省电功能:Intel-SpeedStep, AMD-PowerNow!64/32 位兼容技术:AMD-AMD64, Intel-EM64T
吃饭爱好者单片机的架构介绍_站内快讯_单片机|内存|atmel|畅易鑫
& 单片机的架构介绍
单片机的架构介绍畅易鑫 /
&&&&&&&& 单片机的架构情况可分为&&& CISC(Complex Instruction Set Computer)& 架构和&& RISC(Reduced Instruction Set Computer)& 架构;根据存储器结构可以分为哈佛(Harvard)结构和普林斯顿(Princeton)结构。
& & & && 1、CISC和RISC& CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前MCU的两种架构。它们的区别在于不同的MCU设计理念和方法。早期的MCU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。
&&&&&&& RISC则是计算机系统只有少数指令,但是每个指令的执行时间相当短,因此MCU可以用相当高的频率来运算。
& ◆&& CISC(复杂指令集计算机)CISC是一种为了便于编程和提高记忆体访问效率的晶片设计体系。早期的电脑使用组合语言编程,由于记忆体速度慢且价格昂贵,使得CISC体系得到了用武之地。在20世纪90年代中期之前,大多数的微处理器都采用CISC体系──包括Intel的80x86和Motorola的68k系列等。
⑴CISC体系的指令特征
&&&&&&&&& 使用微代码:指令集可以直接在微代码记忆体(比主记忆体的速度快很多)里执行,新设计的处理器,只需增加较少的电晶体就可以执行同样的指令集,也可以很快地编写新的指令集程式。
庞大的指令集:可以减少编程所需要的代码行数,减轻程式师的负担。
高阶语言对应的指令集:包括双运算元格式、寄存器到寄存器、寄存器到记忆体以及记忆体到寄存器的指令。
⑵CISC体系的优缺点
优点:能够有效缩短新指令的微代码设计时间,允许设计师实现
体系机器的向上相容。新的系统可以使用一个包含早期系统的指令超集合,也就可以使用较早电脑上使用的相同软体。另外微程式指令的格式与高阶语言相匹配,因而编译器并不一定要重新编写。
缺点:指令集以及晶片的设计比上一代产品更复杂,不同的指令,需要不同的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率。
深圳市畅易鑫科技有限公司 版权所有,并保留所有权利。 ICP备案证书号:粤ICP备号&&
地址:深圳市华强北中航路国利大厦1007号 && 电话:2 && 传真:4
深圳市福田区华强北中航路国利大厦1007
服务热线: 2计算机架构-cpu - sherryvm的个人空间 - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园
计算机架构-cpu
& 09:51:56
/ 个人分类:
cpu的种类cpu其实内部已经含有一些小指令集,我们所使用的软件都要经过cpu内部的微指令集来达成。这些指令集的设计驻澳又被分为两种设计理念,这就是世界上常见的两种主要cpu种类:分别是精简指令集(RISC)与复杂指令集(CISC)系统1)精简指令集(Reduced Instruction Set Computing,RISC)Sung公司的SPARC系列、公司的Power Architecture系列(包括PowerPC)、与ARM系列等。ARM:场用的各长牌、PDA、导航系统、网络设备(交换器、路由器)等, 几乎都是使用ARM架构的CPU.2)复杂指令集(Complex Instruction Set Computer, CISC)常见的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架构的CPU.由于AMD、Intel、VIA所开发出来的x86架构CPU被大量使用与个人计算机,因此个人计算机被称为x86架构的计算机。为什么称为x86架构?最早的那颗Intel发展出来的CPU代号称为8086,后来一次架构又开发出...,因此这种架构的cpu就被称为x86架构了。2003年以前Intel所开发的x86架构cpu由8位升级到16、32位,后来AMD依次架构修改新一代的cpu为64位。为了区别两者的差异,因此64位的个人计算机CPU又被统称为x86_64架构。虚拟化指令集:Intel-VT,AMD-SVM目前(2009)主流的CPU都是双核以上的架构了。原本的单核心CPU仅有一个运算单元,所谓的多核则是在一颗CPU封装当中嵌入了两个以上的运算核心。简单讲, 就是一个实体的CPU外壳,含两个以上的CPU单元就是了。除了不同的微指令集,cpu效能的比较, 还有就是cpu的频率。频率就是每秒钟CPU可以运行的次数。Intel的Core2Duo型号E8400的CPU的频率为3.0GHz,表示这颗CPU在一秒内可以进行3.0*10九次方次工作。因为每颗CPU的微指令集不同, 架构也不见得一样,每次频率能进行的工作指令书也不同。频率只能比较同款CPU的速度。cpu运算的数据都是由主存储器提供的, 主存储器与CPU的沟通主要靠的是为部频率,那么每次工作可以传送的资料量有多大?北桥总线称为系统总线,以为是 内存传输的主要心道,所以速度较快。南桥就是所谓的I/O总线北桥所支持的频率称为前端总线速度(Front Side Bus, FSB),每次传送的位数则是总线宽度。总线带宽则是:FSB*总线宽度,亦即每秒钟可以传送的最大数据量。目前常见的总线宽度有32/64位。与总线宽度相似的,CPU每次能够处理的数据量称为字组大小(word size)字组大小依据cpu设计有32与64位。我们现在所成的计算机时32位或64位主要是依据这个CPU解析的字组大小而来的。cpu每次能够解析的数据量有限, 因此由贮存期传来的数据量就又所限制了。这也导致了32为的cpu最多只能支持最大到4gb的内存。字组大小与总线宽度是可以不同的在PentiumPro时代,该cpu是32位的处理器,但当时的芯片组可以设计出64位的总线宽度。在这样的架构下我们通常还是以CPU的字组大小称呼该架构的。cpu等级由于x86架构的cpu在Intel的Pentium系列(1993年)后就又不统一的较为与设计,为了将不同的CPU规范等级,所以就有了i386,i586,i686.而Intel Celeron与AMD Athlon(K7)年代之后的32位CPU就称为i686等级至于目前的64位CPU则同城为x86_64等级。&<div id="click_content_aid_
<div id="favrite_content_aid_
AVX是什么?AVX指令集技术与应用解析
AVX是什么?AVX指令集技术与应用解析
11:37&&|&&作者:
&&|&&关键字:,,,
   英特尔AVX指令集将矢量处理能力提升到256bits,可以让CPU的浮点性能最大提升两倍,VEX编码方式也突破x86在解码方面的瓶颈。&br&&br&  AVX作为Sandy Bridge处理器最重要的改进,在几天后将闪亮登场,除硬件支持外,软件上的支持也是必不可少的,Windows 7 SP1已经开始支持AVX了。
本文约3146字,需5分钟阅读
  是指CPU能执行的所有指令的集合,每一指令对应一种操作,任何程序最终要编译成一条条指令才能让CPU识别并执行。CPU依靠指令来计算和控制系统,所以指令强弱是衡量CPU性能的重要指标,指令集也成为提高CPU效率的有效工具。
  CPU都有一个基本的指令集,比如说目前英特尔和AMD的绝大部分处理器都使用的是X86指令集,因为它们都源自于X86架构。但无论CPU有多快,X86指令也只能一次处理一个数据,这样效率就很低下,毕竟在很多应用中,数据都是成组出现的,比如一个点的坐标(XYZ)和颜色(RGB)、多声道音频等。为了提高CPU在某些方面的性能,就必须增加一些特殊的指令满足时代进步的需求,这些新增的指令就构成了扩展指令集。
英特尔CPU扩展指令集演变
  英特尔在1996年率先引入了MMX(Multi Media eXtensions)多媒体扩展指令集,也开创了SIMD(Single Instruction Multiple Data,单指令多数据)指令集之先河,即在一个周期内一个指令可以完成多个数据操作,MMX指令集的出现让当时的MMX Pentium大出风头。
英特尔处理器扩展指令集演变史(图片来源后藤弘茂)
  SSE(Streaming SIMD Extensions,流式单指令多数据扩展)指令集是1999年英特尔在Pentium III处理器中率先推出的,并将矢量处理能力从64位扩展到了128位。在Willamette核心的Pentium 4中英特尔又将扩展指令集升级到SSE2(2000年),而SSE3指令集(2004年)是从Prescott核心的Pentium 4开始出现。
  SSE4(2007年)指令集是自SSE以来最大的一次指令集扩展,它实际上分成Penryn中出现的SSE4.1和中出现的SSE4.2,其中SSE4.1占据了大部分的指令,共有47条,Nehalem中的SSE4指令集更新很少,只有7条指令,这样一共有54条指令,称为SSE4.2。
支持指令集
  当我们还在惯性的认为英特尔将推出SSE5时,不料半路杀出来个程咬金,2007年8月,AMD抢先宣布了SSE5指令集(SSE到SSE4均为英特尔出品),英特尔当即黑脸表示不支持SSE5,转而在2008年3月宣布Sandy Bridge微架构将引入全新的AVX指令集,同年4月英特尔公布AVX指令集规范,随后开始不断进行更新,业界普遍认为支持AVX指令集是Sandy Bridge最重要的进步,没有之一。
英特尔AVX指令集简介
  AVX(Advanced Vector Extensions,高级矢量扩展)指令集借鉴了一些AMD SSE5的设计思路,进行扩展和加强,形成一套新一代的完整SIMD指令集规范。
IDF2010上演示AVX应用
  在今年4月的IDF2010上,英特尔演示了AVX的应用,在两个不同平台上动态跟踪刘翔运行服上的五星红旗,结果显示,支持AVX的系统视频跟踪的用时为14秒,比不支持AVX的系统快了21秒,性能提升了60%以上。
  有兴趣的读者可以点击观看,时间大概在第33分钟左右。
英特尔AVX的新特性
  英特尔AVX指令集主要在以下几个方面得到扩充和加强:
   ·支持256位矢量计算,浮点性能最大提升2倍
   ·增强的数据重排,更有效存取数据
   ·支持3操作数和4操作数,在矢量和标量代码中能更好使用寄存器
   ·支持灵活的不对齐内存地址访问
   ·支持灵活的扩展性强的VEX编码方式,可减少代码
支持256位矢量计算
  自1999年SSE将矢量处理能力从64位提升到128位后,SSE系列指令都只能使用128位XMM寄存器,这次AVX将所有16个128位XMM寄存器扩充为256位的YMM寄存器,从而支持256位的矢量计算。
&128位的XMM寄存器扩展到256位的YMM寄存器
  这意味着可以同时处理8个32bit的浮点或是一个256bit的浮点,在写程序时可以忽略SSE 128bit的限制,直接写入一个可以进行多组操作,能够充分利用256bit数据位宽的代码,理想状态下,浮点性能最高能达到前代的2倍水平。
  当然有时并不是能完全能利用这256位,在大多数情况下,这些寄存器的高128位是设为0或者是“left unchanged”,同时所有的SSE/SSE2/SSE3/SSSE3/SSE4指令是被AVX全面兼容的(AVX不兼容MMX),因此实际操作的是YMM寄存器的低128位,在这一点上与原来的SSE系列指令集无异。
Sandy Bridge最突出的部分
  为了满足指令集带来的改进,Load载入单元也要适应一次载入256Bit的能力,所以增加了一组载入单元完成载入操作,并不是单纯的将带宽扩展一倍。这样可以在一个时钟周期内实现256位的乘、加和Shuffle运算。
  使用新的256位寄存器来提升数据I/O效率,更好的标记、传播载入的数据,动态的改变数据序列,以此来组织、访问和载入运算所需的数据,速度更快效率更高。
AVX增加了很多新的浮点运算指令
  AVX还引入了很多新的浮点运算指令,浮点运算能力加强,不光提升了3D游戏,还可以更有效的支持如复杂的flash显示,更快的SVG(可伸缩矢量图形)支持,更好的HTML5效果等等,相比用GPU计算来讲功耗更小,体积更小,成本也小,对GPU计算是个不大不小的冲击。
支持3操作数和4操作数
  通常一条计算机指令包括有操作码和操作数(operands),操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。比如movaps xmm1, xmm0就是一个双操作数,SSE指令movaps为操作码,其功能是将xmm0寄存器的内容复制给xmm1。
新的3操作数和4操作数格式
  AVX指令集改进和加强了原有的在3个操作数指令的编码和语法,使之更灵活。比如要实现 xmm10 = xmm9 + xmm1 的功能,以前需要两个指令执行:
    movapps xmm10, xmm9       将xmm9寄存器数据copy到xmm10    addpd xmm10, xmm1        将xmm1和xmm10寄存器数据相加,并存放到xmm10
  应用AVX指令集新的3操作数方式,可以直接由一条指令就能完成:
    vaddpd xmm10, xmm9, xmm1
  显然AVX三操作数能带来更少的寄存器复制,并且代码也更精简。
  4操作数虽然是AMD在SSE5中首先提出的,但英特尔的AVX也能支持这一方式,其最终收益是对AVX 128和AVX 256使用非破坏性语法,减少寄存器间的拷贝,精简代码,增加load/op fusion的机会。
    movaps xmm0, xmm4    movaps xmm1, xmm2    blendvps xmm1, m128
  比如上面的三条指令,利用4操作数,可以不需要使用隐含的xmm0,直接由下面一条指令完成:
    vblendvps xmm1, xmm2, m128, xmm4
支持灵活的不对齐内存地址访问
  CPU在工作时只能按照内部数据位宽长度(比如说32bit)的整倍数为边界进行内存操作,即只能从地址0、32、64、96...处进行存取,而不能从27、58、83等非边界地址处进行。如果一定要取这些非边界地址处的内容,则必须用若干个操作将其凑出来,因而大大影响存取效率。
  一个结构体的设计长度却并不一定是32的倍数,例如一个六个字符的结构其长度为48位,如果多个这样的结构在内存中顺着摆放,则许多结构的起始地址将不在边界处,因此编译程序总是会将每个结构的尾部都加入一些必要的空白,将其凑成32的整数倍,这就是边界对齐的基本道理。
  传统的指令中,当访问不对齐内存(unaligned memory access)时,需要相当大的访问周期,甚至会有惩罚性延时,极大地降低速度。
  而在AVX指令集中,以VEX前缀编码的算术指令和内存访问指令在访问内存时更灵活,既可访问对齐的内存地址,也可访问未对齐的数据。当然访问未对齐数据,多少都会有损失,但相对传统的指令来说,所承受的惩罚要小得多。
革新的VEX指令编码方式
  英特尔在2008年春天的IDF上介绍AVX的时候就表示AVX的重点在于采用了称为“VEX (Vector Extension)”革新的指令编码方式。
VEX编码指令解决方案
  x86指令集容易扩张,但是每次对于新指令和新数据类型的增加,都会在操作码(opcode)之前增加了一个字节的前缀(prefix),从而实现对扩展的支持。这样的就带来指令集的复杂化和命令长度增加,从而导致二进制的冗余和增加CPU命令解码硬件的复杂性。
  VEX编码方式解决了这个问题,VEX的构想,就是压缩prefix中包含的信息,在1个字节的payload中全部包括了prefix的内容,这样缩短指令长度,从而极大地降低了无谓的code size浪费。并且在今后导入的新的寄存器中,128bits或更长的256bits的数据,也将在payload中压缩。
Intel AVX vs. AMD XOP(图片来源后藤弘茂)
  VEX prefix分为2个字节和3个字节的版本,即前缀部分使用C4h和C5h。AMD的XOP指令集采用了类似的方式,XOP前缀字节改成了8Fh,虽然前缀不同,但是payload部分的格式与VEX是相同的。AVX的VEX的编码系统,也反应了英特尔处理器今后的进化趋势,它解决了x86系列CPU在解码能力上的不足。
AVX是Sandy Bridge最重要的改进
AVX相对SSE带来的处理速度提升
  英特尔AVX指令集将矢量处理能力提升到256bit,理论上可以让CPU的浮点性能最大提升两倍,而且革新的VEX编码方式也突破x86在解码方面的瓶颈,非常值得期待。
  由于AMD的SSE5和AVX指令集功能类似,并且AVX包含更多的优秀特性,虽然SSE5是要早于AVX宣布的,但在去年AMD还是决定支持AVX,避免让开发者徒增开发难度。同时AMD改写SSE5,重定义为XOP、CVT16和FMA4指令集。AMD有关人员甚至暗示由于受到了AVX指令集影响,Bulldozer的计划从2010年延迟到了2011年。
  AVX作为Sandy Bridge处理器最重要的改进,在几天后将闪亮登场,除硬件支持外,软件上的支持也是必不可少的,所幸的是Windows 7 SP1已经开始支持英特尔AVX指令集了。
本文读者还喜欢
已有3次举报
(你可匿名或登录后发表评论。没有帐号可,或使用和直接登录)
我的优点是活泼可爱,缺点就是太追求完美。
扫一扫右边的二维码
关注超能网微信账号
振华、海韵电源特价
讯景RX480 4G显卡1399元,8G版1699元
奥睿科USB多口充电器,28元/个
双十一都有些什么值得买买买?

我要回帖

更多关于 华为云空间 的文章

 

随机推荐