导读:首先来看 CPU 和 GPU 的百科解释:.CPU(Central ProcessingUnit,中央处理器) :功能主要是解释计算机指令以及处理计算机软件中的数据.GPU(Graphics ProcessingUnit,图形处理器;又称显示核心、显卡、视觉处理器、显示芯片或绘图
首先来看 CPU 和 GPU 的百科解释:
CPU 和 GPU 之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景:
于是 CPU 和 GPU 就呈现出非常不同的架构(如下图 1-3 所示,图片来源 Nvidia),其中 GPU 部分的绿色是计算单元(ALU),橙红色是存储单元(Cache),橙黄色是控制单元(Control),DRAM 代表内存:
由上图 1-3 可以看出:GPU 采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了 Cache。而 CPU 不仅被 Cache 占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是 CPU 很小的一部分。
由此我们引出 CPU 和 GPU 的设计目标:
1)CPU 是基于低延迟(Low Latency)的设计,内核数量较少
2)GPU 是基于大吞吐量(Big Throughput)的设计,内核数量较多
批量读取/访问,一个非常常见的提升吞吐量的设计,比如 Kafka 中就用到了类似思想
Simple Control(简单的逻辑控制单元):把多个的访问合并成少的访问;
Energy efficient ALUs(大量的算术运算单元):如上所述,GPU 虽然有内存延时,却有非常多的 ALU 并支持非常多的 Thread,因此,可以充分利用 ALU 尽可能多地分配线程从而达到非常大的吞吐量。
总结来说,作为强大的执行引擎,CPU 将它数量相对较少的内核集中用于处理单个任务,并快速将其完成。这使它尤其适合用于处理逻辑控制、串行计算、数据库运行等类型的工作。
相比之下,GPU 由数百个内核组成,可以同时处理数千个线程,所以与 CPU 擅长、串行的运算和通用类型数据运算不同,GPU 擅长的是大规模并发计算,将复杂的问题分解成数千或数百万个独立的任务,并一次性解决它们,比如图像处理任务,包括纹理、灯光和形状渲染等子任务都必须同时完成,以保持图像在屏幕上快速呈现,除此之外,GPU 还被大量应用于深度学习、密码破解等任务中。
表 1.1 CPU 和 GPU 的区别
CPU | GPU |
---|---|
Several cores | Many cores |
Low latency | High throughput |
Good for serial processing | Good for parallel processing |
Can do a handful of operations at once | Can do thousands of operations at once |
下面用一个通俗的例子来做个比喻:
注意只是比喻,可能不会太恰当,主要是帮助理解
假设我们需要做一道鸡兔同笼的小学奥数题(来源 1500 年前的《孙子算经》):
计算题目,理解题目并且整理出解题的步骤以及解法,这是 CPU 干的事情,于是 CPU 给出了类似下面的二元一次方程:
解题的过程需要用到的众多计算,则需要一帮不需要很高逻辑理解力的计算者完成,他们只需要负责其中很简单但是数量又很大的简单运算就行了,最后他们把各自运算的结果交出来给 CPU 整理,那么这群计算者就是 GPU。
简单来说就是:
本文首发于公众号@飞天小牛肉 ,阿里云 & InfoQ 签约作者,分享大厂面试原创题解和个人成长经验,觉得有用的小伙伴点点关注呀~
上一篇:刀光拖尾功能的改良
下一篇:【Oculus Interact