CPU和GPU区别以及工作差异

200 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第17天,点击查看活动详情

CPU即中央处理器,主要功能是解释计算机指令以及处理计算机软件中的数据。

GPU是显示卡的“心脏”,它决定了该显卡的档次和大部分性能,也是2D显示卡和3D显示卡的区别依据。

一、CPU、GPU区别

CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场 景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的 分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度 统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。

CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别。

而某些 任务和GPU最初用来解决的问题比较相似,所以用GPU来算了。GPU的运算速度取决于雇了 多少小学生,CPU的运算速度取决于请了多么厉害的教授爱。教授处理复杂任务的能力是碾压 小学生的,但是对于没那么复杂的任务,还是顶不住人多。

当然现在的GPU也能做一些稍微 复杂的工作了,相当于升级成初中生高中生的水平。但还需要要CPU来把数据喂到嘴边才能开 始干活,究竟还是靠CPU来管的。

二、CPU、GPU工作差异

CPU的基本工作是执行存储的指令序列。执行过程实际上是不断地取出指令、分析指 、执行指令的过程。 如此周而复始,反复循环,使得计算机能够自动地工作。除非遇到停机指 令,否则这个循环将一直进行下去。

GPU就相对复杂的多了。 首先,将由应用阶段加载到显存中的顶点数据作为输入传递给顶点着色器。接着,顶点着色器首先对图元的每个顶点设置模型视图变换及投影变换,然后将变换后的顶点按照摄像机视椎体定义(即透视投影,或正投影)进行裁剪,将不在视野内的顶点去掉并剔除某些三角面片。最后到几何阶段的屏幕映射,负责把修改过的图元的坐标转换到屏幕坐标系中(即投影到屏幕上)。到光栅化阶段,这一阶段主要目的是将每个图元转换为多个片段,并生成多个片段的位置,由片段着色器负责计算每个片段的颜色值。同时,在这阶段片段着色器通常会要求输入纹理,从而对每个片段进行着色贴图。每个片段在被发送到帧缓冲区之前,还会经历一些操作,这些操作可能会修改片段的颜色值,其中包括深度测试,模板测试,像素所有权测试,与当前缓冲区相同位置颜色混合等等。

其中CPU更多关注减少单个线程本身延迟问题,而GPU则通过多线程并发处理来充分利用带宽, 来抵消memory latency带来的带宽效率问题。

CPU的计算强度甚至比GPU要高,主要原因没有足够多的线程支持并发。