加速处理单元,是指计算机系统中,中央处理器内集成可以辅助传统中央处理器处理特殊类型的计算任务的处理单元,一般是“通用处理器核心”+“流处理单元”的组合设计。
这种设计可以提升中央处理器处理这些特殊类型的计算任务的性能,这些特殊的计算任务可以是图形处理、矢量计算等等,辅助的处理单元一般是显示核心(现在多为通用图形处理器,GPGPU)、现场可编程逻辑门阵列(field-programmable gate array,FPGA),或类似的可处理某种特殊计算任务的专用处理单元。
发展历史“加速处理单元”这一概念在2006年首次在回应运算提速的问题上被提出,并在公众中使用。而后在各种技术演讲,以及Joe Landman所写的Scalable Informatics[5]商业计划中也可以见到。不过也有将“加速处理单元”专指辅助处理单元的用法,如Xilinx。
加速处理单元(APU)变得广为人知的时候,是2011年超微半导体推出的AMD APU系列处理器。由于AMD为AMD Fusion(现时是AMD APU)所做的市场宣传的影响,使得不少人一般认为APU是传统中央处理器核心中内置显示核心(即微处理器和显示核心集成在一块芯片上)的AMD APU产品,然而这种设计也的确可以提升CPU和GPU(内置)之间的数据发送性能并且降低处理器芯片运作时的耗电量以及发热量,以现行的技术手段,和相比传统的CPU到位于北桥芯片内的集成式显示核心这种设计来说。严格来说,加速处理单元由于中央处理器核心可以拥有显示核心以外的辅助运算单元,相当类似于硬件加速。
除了AMD提出的AMD Fusion项目之外,还有IBM和Sony等公司共同开发的Cell处理器(一个PPE核心+8个SPE核心)、Intel自Intel Westmere微架构及以后的一些内置Intel HD Graphics显示核心的微处理器、NVIDIA的“Project Denver”等新形态的微处理器,甚至超微自家的AMD Radeon HD 8000系列显示核心(或将内置ARM架构的通用控制单元)和英特尔已取消的独立显示核心项目Larrabee,这些与以往形态不同,以“通用处理器核心”+“流处理单元”的处理器,广义上也可以认为是“加速处理单元”1。
硬件加速中央处理器的结构使得它能够在短时间内完成各种各样不同的指令。它能够处理什么指令主要由软件限制。但是由于中央处理器的结构有些重复任务无法非常有效和迅速地被处理。由于软件的原因处理器优化的可能性有限。
通过使用专门为这样的重复任务设计的特殊硬件元件(芯片或者处理器)可以解决这个问题。这些特殊硬件元件不必像中央处理器那样灵活,因此它们的硬件设计就已经顾及了优化处理这些特殊问题的需要,这样一来中央处理器有时间去处理其它任务。
有些任务能够通过把它们分解为上千小任务非常有效地被解决。比如对一定的频率带做傅里叶变换或者渲染一小块图像。这些小任务可以互相之间不相关地平行计算。通过大量平行计算,即适用大量平行运行的小处理器来处理这些特殊任务总的计算速度可以大大提高。在许多情况下计算速度随平行处理器的数量线性提高。比如在GeForce 200图像卡上192个流处理器平行运行。
从有效利用能源的角度出发这样的平行计算也有意义。能源使用随平行处理器的数量线性提高,而随处理器频率成平方比提高。因此通过平行运算处理器的频率不必过高,使用的能量也比较少。
其它应用计算机工业不断推出新的逻辑元件来减轻主处理器的工作,解决特殊任务。其中包括处理MP3数据、处理录像数据、产生声频信号、数字信号处理器等。1980、90年代里使用的数学辅助处理器也可以算在里面。这些数学辅助处理器协助中央处理器计算浮点数。它们可以被插在主板上的专门插座里。今天它们和主处理器被集成到同一芯片上去了。
本词条内容贡献者为:
王慧维 - 副研究员 - 西南大学