APU,即“Accelerated Processing Units”以为加速处理单元,或加速处理器。APU是融聚了CPU(中央处理器)与GPU(图形处理器)功能的产品,将电脑上两个最重要的处理器融合,能够相互补足,发挥性能。APU的特性在于给用户带来更好的性价比,卓越的1080P高清视频播放体验和更具创新的小尺寸设计。
2006 年11月,Nvidia推出GeForce 8800 GPU;2007年5月,AMD发布了Radeon HD 2000系列GPU产品。这两款产品都采用了统一渲染结构,使GPU的运算单元变得通用。
2009年1月AMD展出了笔记本电脑平台“Yucon”。Yukon把微处理器和图形处理器集成在一个芯片中,充分利用了图形处理器的运算功能。
2009年下半年英特尔宣布,其Westmere将CPU内核芯片与存储器控制器电路及绘图处理电路芯片封装在了一起。
AMD公司2009年10月公布新一代支持微软 DirectX 11图像标准的图形处理器GPU。
AMD宣布其首款集成CPU和GPU的加速处理器APU将于2011年问世。
2009年12月英特尔宣布,其集成GPU和CPU的Larrrabee处理器将推迟至2011年发布。
目前上市的APU数量很少,以AMD推出的APU“AMD Fusion”为例:AMD Fusion是AMD与ATi合并后推出的一项新产品的产品代号,它结合了现时的处理器和绘图核心,在处理器进行图像和三维(3D)运算。AMD Fusion的硅芯片上有两个独立的核心,一个负责处理器,另一个负责绘图核心,两个核心而不是融合在一起。处理器有自己独立的缓冲存储器,绘图核心部分同样如此。两个核心会通过CrossBar互相连接。此外,Fusion亦会集成存储器控制器。Fusion中的各个组件之间使用HyperTransport连接,使各个组件连接成一个整体。处理器和绘图核心可以直接访问存储器,但绘图核心没有独立的显示存储器。南桥不会集成在Fusion芯片中。
此技术亦可使笔记本电脑更节省电量。例如一部笔记本电脑配置了Fusion处理器和独立显卡。当流动使用时,独立显示卡会被关闭,只使用Fusion处理器内的显示核心,以节省电量。当接驳了外置式电源时,独立显示卡会被打开,提供更强大的显示性能。
纵使处理器和绘图核心二合为一,但独立显示卡不会就此中止,因为高端用户和物理计算仍然依赖独立显示卡的强大运算性能。
CPU和GPU各有所长。一般而言,CPU擅长处理不规则数据结构和不可预测的存取模式,以及递归算法、分支密集型代码和单线程程序。这类程序任务拥有复杂的指令调度、循环、分支、逻辑判断以及执行等步骤。例如,操作系统、文字处理、交互性应用的除错、通用计算、系统控制和虚拟化技术等系统软件和通用应用程序等等。而GPU擅于处理规则数据结构和可预测存取模式。例如,光影处理、3D 坐标变换、油气勘探、金融分析、医疗成像、有限元、基因分析和地理信息系统以及科学计算等方面的应用。
尽管在不少方面GPU表现优异,但在一段时间内,还会维持CPU与GPU各自发展的态势,它们可以继续在各自擅长的领域发挥作用,而未来的演进方向是相互取长补短,走向融合。从CPU角度来讲,为了提高处理能力,以前是多线程,目前是多核,将来的发展方向是众核。CPU正向不断增加吞吐量和提高能效性的方向发展;而从GPU角度来讲,其可编程性能本来是在芯片内部固化的程序,然后发展到局部可编程, 是完全可编程。也就是说,GPU是在提高所处理的吞吐量的同时,向通用处理的方向发展。
今后,CPU+GPU的异构计算结构将引领处理器的发展方向,这也成为下一代超级计算的发展方向。目前设计GPU+CPU架构平台的指导思想是:让CPU的更多资源用于缓存,GPU的更多资源用于数据计算。把两者放在一起,不但可以减小在传输带宽上的花销,还可以让CPU和GPU这两个PC中运算速度最快的部件互为帮衬。其原因是,CPU中的运算器通常只有几个ALU,而GPU中的ALU则比CPU的数目多很多。另外,CPU中高速缓存相对比较多,而GPU中的高速缓存则比CPU少很多。必要的时候,CPU可以帮助GPU分担一部分软件渲染工作,另一方面GPU可以使用主流编程语言来处理通用计算问题。这就相当于CPU多了一个强大的浮点运算部件,而GPU多了一个像素处理单元。
用GPU处理 非图形运算
多核处理器早已成为业界的主流。但是,4核的同构处理器并不一定能发挥4倍的性能。以目前Intel功能最强的Core i7处理器为例,其结构方面相比上代Core 2 Quad发生了天翻地覆的变化:引入三级缓存、高速QPI总线、三通道DDR3内存控制器、超线程技术和诸多内核及指令集优化等; 然而测试表明,这些技术共同作用的结果是:同频率下i7 965的综合性能比上代QX9770仅提升约20%,很难再有单核Pentium D到双核Core 2 Duo那种飞跃式提升。另外,将AMD的Phenom II处理器与Phenom处理器相比,其性能的提升主要缘于45nm工艺带来的高频率,其中核心结构优化的贡献仅占5%。
不久前美国Sandia国家实验室的一项模拟测试结果表明:对于超级计算机而言,由于受存储机制和内存带宽的制约,8核之后的16核、32核以至于64核通用处理器可能会引起效率的大幅度下降。这说明,多核处理器核的数目并不能无限制地增加。另外,有消息说,美国Sun公司未能如期开发出16核处理器,除受并购因素影响外,也有这方面的原因。
在这种情况下,图形处理器GPU异军突起。过去在处理图形渲染时,根据表达三维空间的三角形数量或在三角形着色时纹理清晰度的不同,各级处理的负载将会发生变化。在传统结构中,由于各级处理的运算单元数量是事先决定的,因此,在负载发生变化的情况下,固定的运算单元数量会成为阻碍系统整体处理能力提高的瓶颈。
近年来,研究人员对图形指令结构进行了深入研究。它们发现标量数据流所占比例正在逐年提升,如果还是坚持SIMD(单指令多数据流)的设计会让效率下降。早期的GPU,针对图形处理的关键计算将处理单元分为顶点着色器、光栅化引擎、纹理贴图单元等不同部分,分别完成不同的计算任务。而新一代GPU推出了统一渲染结构,统一的计算单元取代了上述的不同单元。这种结构集成了多个支持顶点坐标计算及三角形着色等多级处理的运算单元,各运算单元的任务可以根据各级处理的负载进行调整。该统一的计算单元被称为统一标量着色器,也被称做流处理器。每个流处理器只完成一维标量的操作。
为此,研究人员对 GPU做出变革:流处理器不再针对矢量设计,而是改成标量ALU(算术逻辑运算器)单元。也就是说,把GPU的Shader(着色器)单元内部的运算器ALU完全拆散,设计成为各自独立的流处理器,并分配相应的指令发射端和控制单元。这样的结构在面对任何形式的指令(包括组合指令)时,都能保证的执行效率。即这种结构不仅拥有很强的图形处理能力,而且能够处理非图形运算指令。
新结构的出现带动了在以浮点运算为中心的通用处理中使用GPU的研究。理论上来讲,只要是浮点运算指令都可以交给GPU来处理。为了把GPU改造成为真正的通用处理器,研究人员在大规模扩充流处理器数量的同时,也对内核结构进行了优化与改进,使其更适合进行超大规模的并行数据处理。
GPU不断进步
2006 年11月,Nvidia公司推出基于G80结构的GeForce 8800 GPU。接着,2007年5月,AMD公司发布了Radeon HD 2000系列GPU产品。这两款产品都采用了统一渲染结构。这种结构使GPU的运算单元变得通用,并可以根据图形渲染处理的负载,灵活地改变运算单元的任务。
在传统结构中,由于各级处理的运算单元数量是事先决定的,因此,在负载发生变化的情况下,固定的运算单元数目会成为阻碍系统整体处理能力提高的瓶颈。统一渲染结构的出现使得在以浮点运算为中心的通用处理中也可以使用GPU。采用这种结构后,GPU运算单元可在每次处理时读入指令和数据,使其通用性得到了提高。因而,可以说GPU提高了计算机的浮点运算指令的执行速度。
2008年美国克莱公司推出企业级电脑CX1,使用了Tesla C1060主板。由于该主板有图形处理器GPU,因而显着地提高了CX1超级电脑的运行速度。源于此,GPU也被称为“电脑加速器”。对于浮点运算,GPU使用专门的运算器,能够高速地进行并行处理,从而提高计算速度。以日本东京工业大学为例,2008年10月,它们采用170个C1070处理器后,将其超级电脑T SUBAME的系统综合运行速度从每秒67兆次提高至每秒77兆次。正因为如此,有人将GPU处理器称为加速处理器。
不过, GPU目前面对的问题是,只能读取它专用的存储器,不能读取电脑主存储器。GPU处理器将需要的数据复制到供GPU使用的存储器中,并调用在GPU中执行的函数;此后,GPU根据处理器的指令对互相独立的数据使用多个内核进行并行处理; ,处理器会从GPU所使用的存储器中获得处理结果。正因为此,在某些情况下,GPU不能充分发挥其浮点运算速度极快的优点。
如上所述,现在的GPU可以认为是一个多功能的并行计算处理器。有专家预计,至2010年末世界上大部分的PC机将采用GPU进行计算。