GPGPU的出现,把CPU和GPU的区别正在逐渐缩小,但现在GPU还不能完全取代CPU,其主要原因就是它们所擅长的领域不同。

GPU相比CPU,具有以下特点:
1、运算资源非常丰富,就像一个大厨房,有很多灶台、很多厨师,可以同时做很多道菜。
2、控制部件占比小,就像一个小指挥官,控制一个大厨房。
3、内存带宽大,就像一根水管,很粗,一次可以送很多水(数据)过来。
4、内存延迟高,就像一个很粗的水管,但是很长,水(数据)从水源地到厨房要花较长时间。
5、寄存器资源极丰富,就像每个厨师手头都有好多刀叉碗盆等用具,不用合用。
所以GPU适合数据量大、重复计算多、对延迟不敏感的任务,就像一个大厨房更适合做成百上千份一样的快餐,而不太适合做一人一份的定制高菜。
GPU在运算的时候,32个核心就像32个厨师,必须同时做同一道菜,不能各自为政,这可以提高效率。但是有时候32个厨师做的菜要分多个口味,这就会降低效率,大家可能有空闲。
GPU读取内存也是成批的,一次只能读取对齐的数据,就像32个厨师必须一起去取分好的食材,不能随意只取自己需要的部分,这也会影响效率。
GPU切换任务很快,因为厨师们都有自己专用的用具,不用收拾收拾再换菜式。CPU切换任务就像厨师们共用刀叉,得把当前菜的刀叉洗好收好,才能开始做下一道菜。

总之,GPU像一个大厨房,适合做单一、批量的任务,但是不太适合做复杂变化多的个性化工作,它依靠多核心并行提高吞吐量来掩盖内存延迟。