从CPU架构和技术的演变看GPU未来发展

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

从CPU架构和技术的演变看GPU未来发展自从AMD提出Fusion(融聚)的概念、NVIDIA加大力度推广GPU通用计算、Intel率先将CPU和GPU整合在一起之后,大家就会发现CPU和GPU从没如此亲密无间过,CPU和GPU之间有着太多的共同点使得它们的界限也开始模糊了起来。喜欢研究IT硬件技术的朋友应该知道,CPU和GPU都是由整数运算单元、浮点运算单元、一级缓存、二级缓存、内存控制器等等模块组成的,但最终它们的应用领域又是截然不同的。到底是GPU取代CPU进行并行计算呢?还是CPU整合GPU成为大势所趋?这两种说法显然是相互对立的,均有不少支持者。但这只是表像,真正产生这一现状的原因依然隐藏在CPU和GPU的架构之中,通过笔者后文中的分析您会发现这两种说法不但不矛盾,反而代表了Intel、AMD和NVIDIA三大巨头已经达成的共识,他们正在以各自不同的方式去实现相同的目标。CPU和GPU的整体结构相似,但侧重点不同事实上,CPU和GPU都保持着一套相对固定的趋势,按照各自的轨迹在不停的发展、演变,两者在技术和架构方面有着很多不谋而合的共同点,而且最终也因为相同的目的而走到了一起。那么,CPU和GPU的碰撞将会亮出什么样的火花,未来的发展方向会朝向何处呢?下面我们就通过CPU和GPU的发展史来推测未来产品应该具备什么样的特征。CPU篇:整合浮点运算协处理器首先我们来重拾一个几乎快要被遗忘的名词——协处理器,它是一种芯片,用于减轻系统微处理器的特定处理任务,早些年协处理器主要是用以辅助进行浮点运算。★最初的CPU只能进行整点运算,浮点运算效率极低CPU最基本的运算就是“加减乘除”,但实际上计算机只能用加法器来完成整数以及固定小数点位置(整点)的算术运算,而不能处理小数点可以浮动的数值(浮点)。对于小数多采用的是二进制的科学计数法、也就是浮点数表示法:尾数、阶数符号位各占一位,然后再对其余数位尾数、阶数的有效数位合理分配。在CPU运算时,浮点数的运算量远比整数复杂,因为不仅尾数要参与运算,阶数也要参与,并且需要对尾数和阶数的符号位都进行处理,所以,最早的CPU并没有能力进行浮点运算(8088/8086,80286,80386SX),需要浮点运算时,由CPU通过软件模拟来实现,所以,进行浮点运算时就会慢很多。★协处理器诞生,专门处理浮点运算8086处理器和它的协处理器80878086是当今CPU的鼻祖,所谓X86架构也就是指8086处理器所开创的指令集体系。为了弥补8086在进行浮点运算时的不足,Intel与1980年设计了8087数学协处理器,并且为X86体系推出了第一个浮点格式IEE754。8087提供两个基本的32/64bit浮点资料形态和额外的扩展80bit内部支援来改进复杂运算之精度。除此之外,8087还提供一个80/17bit封装BCD(二进制编码之十进制)格式以及16/32/64bit整数资料形态。386处理器和它的协处理器387X87协处理器新增约60个指令给程序员,所有的指令都是以“F”开头跟其他的标准8086整数运算指令有所区别,举例来说,相对于ADD/MUL,8087提供FADD/FMUL。8087是于1980年发布,然后被80287、80387DX/SX和487SX所取代。★协处理器被整合进入CPU内部以往,协处理器都是可选配件,在主板上X86处理器旁边一般都会为X87设计一个空的插槽,只有当用户确实有需要时才会专门购买相应的X87协处理器插进去,来加速浮点运算。486DX是第一颗整合了浮点运算协处理器的产品,相当于486SX+487SX随着时代的发展,越来越多的程序要求使用更高精度的浮点运算,X87协处理器几乎成为必备品。于是在制造工艺日趋成熟之后,Intel在486一代将X86和X87整合在了一起,浮点运算成为了CPU的一项基本功能,而且重要性越来越大。Intel486DX、Pentium之后的CPU都内含了协处理器,AMDK5、K6之后的CPU都内建了协处理器,所以此后就很少有人会提及协处理器的概念了。CPU篇:扩展指令集加速浮点运算所谓X86架构的处理器就是采用了IntelX86指令集的处理器,X86指令集是Intel公司为其第一块16位处理器i8086所专门开发的。而IBM在1981年所推出的第一台PC机上所使用的处理器i8088(i8086的简化版)也是使用的X86指令集,但是为了增强计算机的浮点运算能力,增加了X87数学协助处理器并引入了X87指令集,于是就将采用了X86指令集和X87指令集的处理器统称为X86架构的处理器。X86基本指令集包括了:数据传输、算术运算、逻辑运算、串指令、程序转移、伪指令、寄存器、位操作、控制指令和浮点运算指令等十大类无数条。而Intel和AMD桌面级处理器在X86指令集的基础上,为了提升处理器各方面的性能,所以又各自开发新的指令集,它们被称为处理器扩展指令集。扩展指令集能够大幅提高CPU在某些特定应用下的性能,如多媒体、3D、浮点运算等,其设计初衷与协处理器是异曲同工的,但协处理器需要增加额外的运算单元,而扩展指令集只需要加入新的指令和算法即可,无需设计新的运算单元,但必须要软件支持才能发挥功效。★MMX指令集:增强多媒体性能MMX(MultiMediaeXtension多媒体扩展指令)指令集是Intel公司在1996年为旗下的Pentium系列处理器所开发的一项多媒体指令增强技术。MMX指令集中包括了57条多媒体指令,通过这些指令可以一次性处理多个数据,在处理结果超过实际处理能力的时候仍能够进行正常处理,如果在软件的配合下,可以得到更强的处理性能。MMX指令集非常成功,在之后生产的各型CPU都包括这些指令集。据当年Tom'sHardware测试,即使最慢的PentiumMMX166MHz也比Pentium200MHz普通版要快。IntelPentiumWithMMX,首次支持MMX但是,MMX指令集的问题也是比较明显的,MMX指令集不能与X86的浮点运算指令同时执行,必须做密集式的交错切换才可以正常执行,但是这样一来,就会造成整个系统运行速度的下降。★3DNow!指令集:3DNow!指令集最由AMD公司所推出的,该指令集应该是在SSE指令之前推出的,被广泛运用于AMD的K6-2和K7系列处理器上,拥有21条扩展指令集。在整体上3DNow!的SSE非常相相似,它们都拥有8个新的寄存器,但是3DNow!是64位的,而SSE是128位。AMDK62加入3DNow!指令集所以3DNow!它只能存储两个浮点数据,而不是四个。但是它和SSE的侧重点有所不同,3DNow!指令集主要针对三维建模、坐标变换和效果渲染等3D数据的处理,在相应的软件配合下,可以大幅度提高处理器的3D处理性能。AMD公司后来又在Athlon系列处理器上开发了新的Enhanced3DNow!指令集,新的增强指令数达了52个,以致目前最为流行的Athlon64系列处理器还是支持3DNow!指令的。SSE指令集:加强浮点和3D性能SSE是StreamingSIMDExtension(SIMD扩展指令集)的缩写,而其中SIMD的为含意为SingleIstructionMultipleData(单指令多数据),所以SSE指令集也叫单指令多数据流扩展。该指令集最先运用于Intel的PentiumIII系列处理器,其实在PentiumIII推出之前,Intel方面就已经泄漏过关于KNI(KatmaiNewInstruction)指令集的消息。这个KNI指令集也就是SSE指令集的前身,当时也有不少的媒体将该指令集称之为MMX2指令集,但是Intel方面却从没有发布有关MMX2指令集的消息。奔腾3正式加入SSE指令集最后在Intel推出PentiumIII处理器的时候,SSE指令集也终于水落石出。SSE指令集是为提高处理器浮点性能而开发的扩展指令集,它共有70条指令,其中包含提高3D图形运算效率的50条SIMD浮点运算指令、12条MMX整数运算增强指令、8条优化内存中的连续数据块传输指令。理论上这些指令对当时流行的图像处理、浮点运算、3D运算、多媒体处理等众多多媒体的应用能力起到全面提升的作用。SSE指令与AMD公司的3DNow!指令彼此互不兼容,但SSE包含了3DNow!中的绝大部分功能,只是实现的方法不同而已。SSE也向下兼容MMX指令,它可以通过SIMD和单时钟周期并行处理多个浮点数据来有效地提高浮点运算速度。★SSE2指令集:进一步优化浮点运算在PentiumIII发布的时候,SSE指令集就已经集成在了处理器的内部,但因为各种原因一直没有得到充分的发展。直到Pentium4发布之后,开发人员看到使用SSE指令之后,程序执行性能将得到极大的提升,于是Intel又在SSE的基础上推出了更先进的SSE2指令集。奔腾4初代就加入了SSE2指令集(AMD直到Athlon64才加入SSE2)SSE2包含了144条指令,由两个部分组:SSE部分和MMX部分。SSE部分主要负责处理浮点数,而MMX部分则专门计算整数。SSE2的寄存器容量是MMX寄存器的两倍,寄存器存储数据也增加了两倍。在指令处理速度保持不变的情况下,通过SSE2优化后的程序和软件运行速度也能够提高两倍。由于SSE2指令集与MMX指令集相兼容,因此被MMX优化过的程序很容易被SSE2再进行更深层次的优化,达到更好的运行效果。SSE2对于处理器的性能的提升是十分明显的,虽然在同频率的情况下,Pentium4和性能不如AthlonXP,但由于AthlonXP不支持SSE2,所以经过SSE2优化后的程序Pentium4的运行速度要明显高于AthlonXP。而AMD方面也注意到了这一情况,在随后的K-8系列处理器中,都加入SSE2指令集。★SSE3指令集:加强并行数据处理能力SSE3指令是目前规模最小的指令集,它只有13条指令。它共划分为五个应运层,分别为数据传输命令、数据处理命令、特殊处理命令、优化命令、超线程性能增强五个部分,其中超线程性能增强是一种全新的指令集,它可以提升处理器的超线程的处理能力,大大简化了超线程的数据处理过程,使处理器能够更加快速的进行并行数据处理。SSE3中13个新指令的主要目的是改进线程同步和特定应用程序领域,例如媒体和游戏。这些新增指令强化了处理器在浮点转换至整数、复杂算法、视频编码、SIMD浮点寄存器操作以及线程同步等五个方面的表现,最终达到提升多媒体和游戏性能的目的。Intel是从Prescott核心的Pentium4开始支持SSE3指令集的,而AMD则是从2005年下半年Troy核心的Opteron开始才支持SSE3的。但是需要注意的是,AMD所支持的SSE3与Intel的SSE3并不完全相同,主要是删除了针对Intel超线程技术优化的部分指令。SSSE3(SSE3S)指令集:加强多媒体图形图像处理SSSE3(SupplementalStreamingSIMDExtensions3)是Intel命名的SSE3指令集的扩充,不使用新的号码是因为SSSE3比较像是加强版的SSE3,以至于推出SSSE3之前,SSE4的定义容易被混淆。在公开Intel的Core微架构之时,SSSE3出现在Xeon5100与IntelCore2移动版与桌面型处理器上。65nmCore2Duo引入SSSE3指令集SSSE3包含了16个新的不同于SSE3的指令。每一个都能够运作于64位的MMX寄存器或是128位XMM寄存器之中。因此,有些Intel的文件表示有32个新指令。SSSE3指令集增强了CPU的多媒体、图形图象处理、多媒体编码、整数运算和Internet等方面的处理能力。★SSE4.1指令集:大幅提升浮点运算,优化CPU和GPU数据共享SSE4.1指令集被认为是2001年以来Intel最重要的指令集扩展,包含54条指令。Intel在Penryn处理器中加入了对SSE4.1的支持,共增加了47条新指令,令处理器的多媒体处理能力得到最大

1 / 41
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功