CPU和GPU的区别

通过阅读本文你可以知道CPU和GPU的区别是什么。

结构

上图是CPU和GPU的结构对比图。通过对比可以看出:

  1. CPU的计算单元较复杂,但是个数较少;GPU的计算单元相对简单,但是个数很多
  2. CPU的控制单元较复杂;GPU的控制单元相对简单,分布在各计算核
  3. CPU的片上缓存较大;GPU的片上缓存较小,分布在各计算核

为何他们的结构会差别这么大?这还得从他们的设计目标说起。

设计

我们知道,GPU最开始是专门用来做图像渲染的。图像渲染有以下特点:

  1. 被渲染的场景由非常多的顶点组成
  2. 顶点组成的场景会被光栅化成非常多的片段
  3. 对每个顶点或片段的处理逻辑都是一样的

这类数据可以称作流数据。流数据具有数据量大和每个数据分量的处理逻辑类似的特点。NVIDIA的GPU中有一个概念是Stream Processor,即流处理器。流处理器处理的数据即为流数据。

所以,GPU的设计目标是提高数据吞吐量。

CPU要处理的任务从一开始就特别复杂,它得保证具有复杂控制逻辑的程序快速运行,而且还得支持多任务。多任务要求CPU的运行频率较高,这样才能让用户感觉多个任务是在并发执行。

所以,GPU的设计目标是低时延。

总结

  1. CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。
  2. CPU是几个教授组成的,而GPU是很多个小学生组成的。
  3. CPU采用基于低延时的设计;GPU采用基于高吞吐量的设计。

参考

https://www.cnblogs.com/biglucky/p/4223565.html