网文选摘(来自:搜狐-科技):
详细分析人工智能芯片 CPU/GPU/FPGA有何差异? 2017-04-02 02:55
……
1.GPU是什么?
图形处理器GPU最初是用在个人电脑、工作站、游戏机和一些移动设备上运行绘图运算工作的微处理器,可以快速地处理图像上的每一个像素点。后来科学家发现,其海量数据并行运算的能力与深度学习需求不谋而合,因此,被最先引入深度学习。……
2.GPU和CPU的设计区别
那么GPU的快速运算能力是如何获得的?这就要追溯到芯片最初的设计目标了。中央处理器CPU需要很强的处理不同类型数据的计算能力以及处理分支与跳转的逻辑判断能力,这些都使得CPU的内部结构异常复杂;而图形处理器GPU最初面对的是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境,所以GPU只需要进行高速运算而不需要逻辑判断。目标运算环境的区别决定了GPU与CPU不同的设计架构:
CPU基于低延时的设计
— 大量缓存空间Cache,方便快速提取数据。CPU将大量访问过的数据存放在Cache中,当需要再次访问这些数据时,就不用从数据量巨大的内存中提取了,而是直接从缓存中提取。
— 强大的算术运算单元ALU,可以在很短的时钟周期内完成算数计算。当今的CPU可以达到64bit双精度,执行双精度浮点源计算加法和乘法只需要1~3个时钟周期,时钟周期频率达到1.532~3gigahertz。
— 复杂的逻辑控制单元,当程序含有多个分支时,它通过提供分支预测来降低延时。
— 包括对比电路单元与转发电路单元在内的诸多优化电路,当一些指令依赖前面的指令结果时,它决定这些指令在pipeline中的位置并且尽可能快的转发一个指令的结果给后续指令。
GPU基于大吞吐量的设计
— 压缩缓存空间Cache,从而最大化激发内存吞吐量,可以处理超长的流水线。缓存的目的不是保存之后需要访问的数据,而是担任数据转发的角色,为线程提高服务。如果有很多线程需要访问同一个数据,缓存会合并这些访问,再去DRAM中访问数据,获取的数据将通过缓存转发给对应的线程。这种方法虽然减小了缓存,但由于需要访问内存,因而自然会带来延时效应。
— 高效的算数运算单元和简化的逻辑控制单元,把串行访问拆分成多个简单的并行访问,并同时运算。例如,在CPU上约有20%的晶体管是用作计算的,而GPU上有80%的晶体管用作计算。
3.GPU和CPU的性能差异
CPU与GPU在各自领域都可以高效地完成任务,但当同样应用于通用基础计算领域时,设计架构的差异直接导致了两种芯片性能的差异。
CPU拥有专为顺序逻辑处理而优化的几个核心组成的串行架构,这决定了其更擅长逻辑控制、串行运算与通用类型数据运算;而GPU拥有一个由数以千计的更小、更高效的核心组成的大规模并行计算架构,大部分晶体管主要用于构建控制电路和Cache,而控制电路也相对简单,且对Cache的需求小,只有小部分晶体管来完成实际的运算工作。所以大部分晶体管可以组成各类专用电路、多条流水线,使得GPU的计算速度有了突破性的飞跃,拥有了更强大的处理浮点运算的能力。这决定了其更擅长处理多重任务,尤其是没有技术含量的重复性工作。
