复杂的原理一大堆,是不是很难弄清楚?
做个比喻,形象生动地讲明白CPU与GPU的不同之处。
CPU:中央处理器(Central Process Unit)。
GPU:图形处理器(Graphic Process Unit)。
可以将CPU理解成一位学识渊博、样样精通的教授,而GPU则是一群只会进行简单算术运算小学生。这样看,好像CPU的能力更突出一些。
但是如果要教授和小学生同时进行100次的加减法运算,教授不可能在几秒钟的时间就计算出结果,但这群数量众多的小学生却可以(并发)。
CPU与GPU的架构不同
CPU一般有2核、4核、6核、8核不等;GPU则可能会有成百上千核,高端的甚至有上万核,可以做大规模并行数据处理。
教授学识渊博,能够解决应对更多难题→CPU功能模块多,适用于更多的应用场景,可以执行任意程序。
一群小学生胜在数量多可进行并发计算→GPU控制相对简单,并发能力强,应用于多任务场景。
CPU内部很大一部分面积被cache和控制部分占据,相对地计算单元就比较少。
GPU内部只有很简单的控制单元,大部分由计算单元占据,大部分晶体管可被用于各类专用电路和流水线,因此计算速度大增,拥有强大的浮点运算能力。
截然不同的工作方式
CPU的工作方式是多指令多数据(MIMD,Multiple Instruction, Multiple Data),不同的核心执行不同的机器指令,coreA在运行word线程的同时coreB上可以运行浏览器线程。
因为CPU要负责的事情是非常多的,如中断处理、IO、内存管理等等。
GPU是单指令多数据(SIMD,Single Instruction, Multiple Data),GPU的核心必须运行相同的机器指令,只是可以操作不同的数据。
GPU的指令集也比CPU简单,可以说,GPU擅长的就是计算,包括简单计算和重复计算。
CPU分配一些GPU擅长的任务给它,GPU是用来分担CPU的工作的,不是为了取代CPU。