CPU vs GPU,谁才是算力之王?

GPU , 学名可编程图形处理单元 , 俗称可编图形硬件 , 一般被行外称为显卡(GPU不是显卡 , 它是显卡中的核心处理单元) 。
GPU概念产生于20世纪70、80年代交替年间 , 主要用于游戏和视频游戏方面 , 那时的全部战力仅仅能够快速合成几张图片 。十年后 , 80、90年代交替时 , 出现了基于数字信号处理芯片 , 它的主要特点就是贵 , 当然性能得到了极大提高 。1991、1995年对2D加速器的支持得到升级 。

CPU vs GPU,谁才是算力之王?

文章插图
 
1998年是划时代的一年 ,  NVIDIA(英伟达)宣布modern GPU研发成功 , 进入GPU可编程时代 , 是历史性突破 。与之前的GPU不同 , 程序员可以将代码运行在GPU的处理单元中 , 而之前的GPU仅仅能处理固定功能 , 一旦设计完成 , 用户不能根据需求扩展功能 , 最多可以参与简单的设置(固定管线着色器) 。
1998年后 , modern GPU的发展又分为四个阶段:
第一代 , 代表者有NVIDIA的TNT2、 ATI的Grage 、3Dfx的Voodoo3 。这一时期的GPU功能很有限 , 只能用于纹理组合的数学计算 , 或者像素值的计算 。
第二代 , 1999年到2000年(都是时代之交) , 这一时期的GPU具备了三维坐标转换和光照计算能力 , OpenGL和DirectX7(图形接口簇)相继支持应用程序通过硬件进行坐标变换 。同时对纹理的操作扩展到3维的CubeMap 。代表作有NVIDDIA的GeForce256、MAX ,  ATI的Radeon 7500等 。
第三代 , 2001年 , 支持顶点编程能力的显卡面世(暂不支持像素编程能力) 。
第四代 , 至今 , 市面的显卡同时支持了顶点(vertex)和片段(fragment , 也可翻译成片元)编程能力 。当前课程中的重要一环就是“顶点和片段着色器” 。
那么同学们想一想 , 为什么要发展GPU呢?CPU不是也能执行程序吗?还要显卡做什么呢?
先来看一张图:
CPU vs GPU,谁才是算力之王?

文章插图
 
GPU:控制器少 , 计算单元多 。
CPU:控制器很大 , 计算单元则很少 。这里不要纠结计算单元的面积大小 , 这只是示意图 。
GPU采用流式并行计算模式 , 每一个计算单元可以单独负责一个像素点 , 每个像素点不依赖旁边像素点的数据 , 所以每个计算单元都是独立并行的 , 不需要控制器额外干涉 。
CPU处理则与之不同 , 线性处理较多 , 这条数据的可能依赖上一条数据的结果 , 同时还需要控制器参与取指令 , 指出下一条指令在内存中的位置 。所以CPU的结构不适合独立的像素运算(像素一个一个的算效率极低) 。
GPU在控制方面弱于CPU , 但在并发算力方面远远胜于CPU 。例如黑客们破解密码时 , 需要大量的尝试性计算 , 他们首选必是GPU 。
所以 , 但看计算能力 , GPU由于高并发能力 , 算力远远大于CPU;但说到分布、有序、控制力上 , CPU要胜过GPU 。

【CPU vs GPU,谁才是算力之王?】


    推荐阅读