一、CPU与GPU的概念
先说说大家最熟悉的CPU,英文全称Central Processing Unit,中央处理器。
但凡是个人都知道,CPU是计算机的心脏。
运算器和控制器这两个核心功能,都是由CPU负责承担的。
具体来说,运算器(包括加法器、减法器、乘法器、除法器),负责执行算术和逻辑运算,是真正干活的。控制器,负责从内存中读取指令、解码指令、执行指令,是指手画脚的。
再来看看GPU。
GPU是显卡的核心部件,英文全名叫Graphics Processing Unit,图形处理单元(图形处理器)。
GPU并不能和显卡划等号。显卡除了GPU之外,还包括显存、VRM稳压模块、MRAM芯片、总线、风扇、外围设备接口等。
CPU的强项是管理和调度。真正干活的功能,反而不强(ALU占比大约5%~20%)。
而GPU则完全不同。
GPU为图形处理而生,任务非常明确且单一。它要做的,就是图形渲染。图形是由海量像素点组成的,属于类型高度统一、相互无依赖的大规模数据。
所以,GPU的任务,是在最短的时间里,完成大量同质化数据的并行运算。所谓调度和协调的“杂活”,反而很少。
并行计算,当然需要更多的核啊。
如前图所示,GPU的内核数,远远超过CPU,可以达到几千个甚至上万个(也因此被称为“众核”)。GPU的控制器功能简单,缓存也比较少。它的ALU占比,可以达到80%以上。
虽然GPU单核的处理能力弱于CPU,但是数量庞大,非常适合高强度并行计算。同等晶体管规模条件下,它的算力反而比CPU更强。
以餐厅为例。GPU就像一个拥有成千上万名初级厨师的单一型餐厅。它只适合做某种指定菜系。但是,因为厨师多,配菜简单,所以大家一起炒,上菜速度反而快。