新闻中心

EEPW首页 > 智能计算 > 设计应用 > 详解人工智能芯片 CPU/GPU/FPGA有何差异?

详解人工智能芯片 CPU/GPU/FPGA有何差异?

作者:时间:2017-04-01来源:行业报告研究院收藏
编者按:CPU与GPU在各自领域都可以高效地完成任务,但当同样应用于通用基础计算领域时,设计架构的差异直接导致了两种芯片性能的差异。

  2.骤然爆发的数据洪流

本文引用地址:http://www.eepw.com.cn/article/201704/346122.htm

  深度学习模型需要通过大量的数据训练才能获得理想的效果。以语音识别问题为例,仅在其声学建模部分,算法就面临着十亿到千亿级别的训练样本数据。训练样本的稀缺使得人工智能即使在经历了算法的突破后依然没能成为人工智能应用领域的主流算法。直到2012年,分布于世界各地的互相联系的设备、机器和系统促进了非结构化数据数量的巨大增长,并终于在可靠性方面发生了质的飞跃,大数据时代到来。

  大数据到底有多大?一天之中,互联网产生的全部内容可以刻满1.68亿张DVD;发出的邮件有2940亿封之多,相当于美国两年的纸质信件数量;发出的社区帖子达200万个,相当于《时代》杂志770年的文字量;卖出的手机为37.8万台,高于全球每天出生的婴儿数量37.1万倍。然而,即使是人们每天创造的全部信息,包括语音通话、电子邮件和信息在内的各种通信,以及上传的全部图片、视频与音乐,其信息量也无法匹及每一天所创造出的关于人们自身活动的数字信息量。

  我们现在还处于所谓“物联网”的最初级阶段,随着技术的成熟,我们的通讯设备、交通工具和可穿戴科技将能互相连接与沟通,信息量的增加也将以几何倍数持续下去。

  3.难以满足的硬件需求

  骤然爆发的数据洪流满足了深度学习算法对于训练数据量的要求,但是算法的实现还需要相应处理器极高的运算速度作为支撑。当前流行的包括X86和ARM在内的传统CPU处理器架构往往需要数百甚至上千条指令才能完成一个神经元的处理,但对于并不需要太多的程序指令,却需要海量数据运算的深度学习的计算需求,这种结构就显得非常笨拙。尤其是在当前功耗限制下无法通过提升CPU主频来加快指令执行速度,这种矛盾愈发不可调和,深度学习研究人员迫切需要一种替代硬件来满足海量数据的运算需求。

  或许终有一日将会诞生全新的、为人工智能而专门设计的处理器架构,但在那之前的几十年,人工智能仍然要向前走,便只能改进现有处理器,使之成为能够最大程度适应大吞吐量运算的计算架构。目前来看,围绕现有处理器的主流改进方式有两个:

  ·图形处理器通用化:

  将图形处理器用作矢量处理器。在这种架构中,擅长浮点运算的特点将得到充分利用,使其成为可以进行并行处理的通用计算芯片GP。英伟达公司从2006年下半年已经开始陆续推出相关的硬件产品以及软件开发工具,目前是人工智能硬件市场的主导。

  ·多核处理器异构化:

  将GPU或等其他处理器内核集成到CPU上。在这种架构中,CPU内核所不擅长的浮点运算以及信号处理等工作,将由集成在同一块芯片上的其它可编程内核执行,而GPU与都以擅长浮点运算著称。AMD与Intel公司分别致力于基于GPU与的异构处理器,希望借此切入人工智能市场。

  三、现有市场——通用芯片GPU

  在深度学习的领域里,最重要的是数据和运算。谁的数据更多,谁的运算更快,谁就会占据优势。因此,在处理器的选择上,可以用于通用基础计算且运算速率更快的GPU迅速成为人工智能计算的主流芯片。可以说,在过去的几年,尤其是2015年以来,人工智能大爆发就是由于英伟达公司的GPU得到广泛应用,使得并行计算变得更快、更便宜、更有效。

  1.GPU是什么?

  图形处理器GPU最初是用在个人电脑、工作站、游戏机和一些移动设备上运行绘图运算工作的微处理器,可以快速地处理图像上的每一个像素点。后来科学家发现,其海量数据并行运算的能力与深度学习需求不谋而合,因此,被最先引入深度学习。2011年吴恩达教授率先将其应用于谷歌大脑中便取得惊人效果,结果表明,12颗英伟达的GPU可以提供相当于2000颗CPU的深度学习性能,之后纽约大学、多伦多大学以及瑞士人工智能实验室的研究人员纷纷在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的计算速度有了突破性的飞跃,拥有了更强大的处理浮点运算的能力。这决定了其更擅长处理多重任务,尤其是没有技术含量的重复性工作。

  当前最顶级的CPU只有4核或者6核,模拟出8个或者12个处理线程来进行运算,但是普通级别的GPU就包含了成百上千个处理单元,高端的甚至更多,这对于多媒体计算中大量的重复处理过程有着天生的优势。

  举个常见的例子,一个向量相加的程序,可以让CPU跑一个循环,每个循环对一个分量做加法,也可以让GPU同时开大量线程,每个并行的线程对应一个分量的相加。CPU跑循环的时候每条指令所需时间一般低于GPU,但GPU因为可以同时开启大量的线程并行地跑,具有SIMD的优势。



关键词: GPU FPGA

评论


相关推荐

技术专区

关闭