随着当前计算机性能的不断提高,应用范围越来越广泛,不同的计算任务和计算需求都在快速增长,这就决定了处理器朝着通用化和专用化两个方向飞速发展。一方面,以CPU为代表的通用处理器是现代计算机的核心部件,经过多次器件换代的变迁,不仅集成度大大提高,性能和功能也大为改善,除了负责解释、执行指令和完成各种算术逻辑运算外,还控制并协调计算机各部分的执行。另一方面,处理器在特定领域应用的专用化程度也越来越高,例如在视频、图像和音频处理等领域,都出现了相应的专用处理器(如VPU、GPU、APU等)。在针对特定应用方面与通用处理器相比,专用处理器能够更加高效地满足特定的计算任务和需求。
在硬件架构上,CPU与GPU具有本质区别。CPU是一个串行处理器,同一时刻只能执行一条CPU指令,同一时刻只能处理一个数据,而GPU是一个并行处理器,一个GPU芯片中具有多个处理单元,在同一时刻可以执行多条指令以及处理多个数据。在“统一渲染架构”之前,GPU中的处理器分为顶点渲染器和片段渲染器,在NV80系列GPU之后,“统一渲染架构”成为一种事实标准,每一个处理单元既可以作为顶点渲染器也可以作为片段渲染器。同时GPU的各处理单元之间已经实现了细颗粒度的线程间通信,可以由不同的处理单元组成数据处理流水线,从而大大提高数据处理的吞吐量。
GPU和CPU在硬件设计上也具有很大不同。GPU是一个专用型处理器,它的设计初衷就是为了快速地进行图形渲染,因此,GPU在浮点运算上表现非常出众,在大规模数值计算方面,其速度远远优于CPU;而CPU是一个通用型处理器,使用到的指令集大,能执行的任务种类多,在操作系统、系统软件、应用程序、通用计算、系统控制等领域有着优良的表现。相比于CPU,图形硬件GPU有三个优点:
(1)计算速度比CPU的计算速度快,GPU每秒钟可计算1万亿次,同样时间内CPU一般只计算几十亿次;
(2)显存的位宽比内存大,可一次计算的数据量大;
(3)程序的并行执行性,GPU和CPU能够并行执行程序,GPU内部有多个渲染管道也可以并行执行。
GPU在处理能力和存储器带宽上相对CPU有明显优势,在成本和功耗上也不需要付出太大代价,从而为大数据量的问题处理提供了新的解决方案。目前,越来越多的研究人员和商业组织开始利用GPU完成一些非图形绘制方面的计算,并开创了一个新的研究领域——基于GPU的通用计算(General-Purpose computa-tion on GPU),其主要研究内容是如何利用GPU在图形处理之外的其他领域进行更为广泛的科学计算。目前已成功应用于代数计算、流体模拟、数据库应用、频谱分析等非图形应用领域,甚至包括智能信息处理系统和数据挖掘工具等商业化应用。(www.xing528.com)
基于GPU的通用计算已成为近几年人们关注的一个研究热点。将GPU用于通用计算的主要目的是为了加速计算,加速的动力来自GPU在高性能计算方面所具有的优势:
(1)高效的并行性。这一功能主要是通过GPU多条绘制流水线的并行计算来体现的。在目前主流的GPU中,配置多达16个片段处理流水线,6个顶点处理流水线。多条流水线可以在单一控制部件的集中控制下运行,也可以独立运行。通过多个渲染管道和RGBA四个颜色通道的同时计算,可以进行多个数据的同时计算。相对于并行机而言,GPU提供的并行性在十分廉价的基础上,为很多适合于在GPU上进行处理的应用提供了一个很好的并行方案。
(2)高密集的运算。GPU通常具有128位或256位的内存位宽,高于CPU上32位的位宽,这样整个计算的带宽大大提高,使得GPU相对于CPU来说,更适应传输大块的数据。同时,CPU上的Cache一般只有64KB,而现在的图形卡显存大多都在256MB以上,因此GPU在计算密集型应用方面具有很好的性能。
(3)超长图形流水线。GPU图形流水线的设计以吞吐量的最大化为目标,因此GPU作为数据流并行处理机,减少了GPU与CPU的数据通信,在对大规模的数据流并行处理方面具有明显的优势。
上述这些优势使得GPU比CPU更适用于流处理计算,因此也被认为是一个SIMD的并行机或者流处理器,可以用于处理大规模数据集,使得应用得到加速。而相比之下,CPU本质上是一个标量计算模型,而计算单元偏少,主要针对复杂控制和低延迟而非高带宽进行了若干优化。
到目前为止,有研究者将数据组织成顶点序列形成数据流,利用顶点程序来做基本的代数运算。但由于通常情况下,像素处理器的能力要比顶点处理器的能力强很多,所以大多数还是利用像素处理器来做通用计算。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。