GPU与CPU的区别

显卡的发展可以说是非常的快,人们对于视觉化上的要求也越来越高,随着用户对于图像处理上面的要求不断超出处理器的计算能力 。另一方面CPU处理能力也不断强大,但在进入3D时代后,人们发现庞大的3D图像处理数据计算使得CPU越来越不堪重荷,并且远远超出其计算能力 。图形计算需求日益增多,作为计算机的显示芯片也飞速发展 。随后人们发现显示芯片的计算能力也无法满足快速增长的图形计算需求时,图形,图像计算等计算的功能被脱离出来单独成为一块芯片设计,这就是现在的图形计算处理器——GPU(Graphics Processing Unit),也就是显卡 。
1999年8月,NVIDIA终于正式发表了具有跨世纪意义的产品NV10——GeForce 256 。GeForce256是业界第一款256bit的GPU,也是全球第一个集成T&L(几何加速/转换)、动态光影、三角形设置/剪辑和四像素渲染等3D加速功能的图形引擎 。通过T&L技术,显卡不再是简单像素填充机以及多边形生成器,它还将参与图形的几何计算从而将CPU从繁重的3D管道几何运算中解放出来 。在这代产品中,NVIDIA推出了两个全新的名词——GPU以GeForce 。所以从某种意义上说,GeForce 256开创了一个全新的3D图形时代,NVIDIA终于从追随者走向了领导者 。再到后来GeForce 3开始引出可编程特性,能将图形硬件的流水线作为流处理器来解释,基于GPU的通用计算也开始出现 。
到了Nvidia GeForce6800这一代GPU,功能相对以前更加丰富、灵活 。顶点程序可以直接访问纹理,支持动态分支;象素着色器开始支持分支操作,包括循环和子函数调用,TMU支持64位浮点纹理的过滤和混合,ROP(象素输出单元)支持MRT(多目标渲染)等 。象素和顶点可编程性得到了大大的扩展,访问方式更为灵活,这些对于通用计算而言更是重要突破 。
真正意义的变革,是G80的出现,真正的改变随着DX10到来发生质的改变,基于DX10统一渲染架构下,显卡已经抛弃了以前传统的渲染管线,取而代之的是统一流处理器,除了用作图像渲染外,流处理器自身有着强大的运算能力 。我们知道CPU主要采用串行的计算方式,由于串行运算的局限性,CPU也正在向并行计算发展,比如目前主流的双核、四核CPU,如果我们把这个概念放到现在的GPU身上,核心的一个流处理相当于一个“核”,GPU的“核”数量已经不再停留在单位数,而是几十甚至是上百个 。下面看看G80的架构图:

GPU与CPU的区别

文章插图
步入DX10时代,shader(流处理器)单元数量成为衡量显卡级别的重要参数之一
G80中拥有128个单独的ALU,因此非常适合并行计算,而且数值计算的速度远远优于CPU 。
GPU与CPU的区别

文章插图
GPU运算能力越来越快,甚至超越CPU
早期的3D游戏,显卡只是为屏幕上显示像素提供一个缓存,所有的图形处理都是由CPU单独完成 。图形渲染适合并行处理,擅长于执行串行工作的CPU实际上难以胜任这项任务 。直到1995年,PC机领域第一款GPU 3dfx Voodoo出来以后,游戏的速度、画质才取得了一个飞跃 。GPU的功能更新很迅速,平均每一年多便有新一代的GPU诞生,运算速度也越来越快 。
综上所述,GPU并行处理的理论性能要远高于CPU 。同时,我们也可以通过上面这组NVIDIA统计的近两年来GPU与CPU之间浮点运算能力提升对比表格来看一下 。
【GPU与CPU的区别】Intel Core2Due G80 Chip 运算能力比较
24 GFLOPS 520 GFLOPS GPU快21.6倍
虽然我们看到CPU和GPU在运算能力上面的巨大差距,但是我们要看看他们设计之初所负责的工作 。CPU设计之初所负责的是如何把一条一条的数据处理玩,CPU的内部结构可以分为控制单元、逻辑单元和存储单元三大部分,三个部分相互协调,便可以进行分析,判断、运算并控制计算机各部分协调工作 。其中运算器主要完成各种算术运算(如加、减、乘、除)和逻辑运算( 如逻辑加、逻辑乘和非运算); 而控制器不具有运算功能,它只是读取各种指令,并对指令进行分析,作出相应的控制 。通常,在CPU中还有若干个寄存器,它们可直接参与运算并存放运算的中间结果 。CPU的工作原理就像一个工厂对产品的加工过程:进入工厂的原料(程序指令),经过物资分配部门(控制单元)的调度分配,被送往生产线(逻辑运算单元),生产出成品(处理后的数据)后,再存储在仓库(存储单元)中,最后等着拿到市场上去卖(交由应用程序使用) 。在这个过程中,从控制单元开始,CPU就开始了正式的工作,中间的过程是通过逻辑运算单元来进行运算处理,交到存储单元代表工作的结束 。数据从输入设备流经内存,等待CPU的处理 。


推荐阅读