CPU vs GPU

CPU 是一个通用计算单元,它可以处理算数运算、逻辑判断、音频处理等等工作。我们平常写的应用程序,比如 C 代码通常都是运行在 CPU 上的。如果你的 CPU 只有一个核心,那么你所有的代码都是串行执行的,比如先执行 A,在执行 B,然后在执行 C。因为如果只有一个核心,CPU 同一时刻只能做一件事情,所以必然是串行的。
如果你的 CPU 有多个核心,比如酷睿双核的 CPU,那么有几个核心就可以同时做几件事情,比如第一个核心在做 A,第二个核心可以同时做 B,这是一种并行的模式。(其实事情没有那么简单,除了核心还要考虑总线传输的问题,为了方便理解,我们暂且简化讨论。)
通常一个 CPU 的核心的时钟频率通常是 2-3Ghz, 时钟频率越高代表其处理的速度越快,性能越好。

GPU 是图形处理单元,它最初设计的目的就是用来处理图形的,或者简单理解为处理形状和像素的。它生来就是专门做一类事情的,不像 CPU 生来就是处理各种事情的。GPU 内部有几千个核心,每个核心都可以独立处理事情。比如处理一张图片上的像素,GPU 的1号核心可以处理第1-100个像素,2号核心可以处理第101-200个像素,以此类推,这些不同的 GPU 核心可以并行的处理不同的像素,这样就比一个一个顺序的处理要快非常多。

GPU 的一个核心的时钟频率一般为 1Ghz,单个核心比 CPU 的单个核心要弱,但是 GPU 核心的数量通常有几千个,而 CPU 只有1-16个左右。

GPU 是用来并行处理图形的,而图形处理这种事情是可以以工序的形式固定下来的,这样就可以提高处理的效率,这种工序就是所谓的图形渲染管线。后面我们会以 OpenGL 绘制一个三角形为例子,来了解下渲染管线的流程。