简谈CPUlte峰值速率计算性能怎么计算

专家谈国产CPU最新发展态势:需强化标准建设
日 08:50:42
  一、国产CPU发展现状与成就
  国内已开启多技术路线并行的CPU技术产业新格局。在国家科技重大专项和国家级集成电路产业投资资金的推动之下,我国CPU产品技术研发已进入多技术路线同步推进的高速发展阶段,并因发展模式和技术特性的不同而呈现出不同的发展特色,其中:
  x86体系由intel封闭主导,国内企业通过商业合作进行CPU产品和部分技术的研发。Intel独揽x86 CPU的基础架构、芯片设计、工艺制造三大环节并封闭发展,目前已积累了超过1.7万件CPU相关专利。在硬件层面,不仅掌控与北桥CPU配套的南桥芯片组外围接口、GPU等核心技术,也主导着与x86相关的标准技术和测试认证,例如内存条接口、硬盘接口以及PCIe总线接口等;在软件层面,与微软结成“Wintel”联盟形成长期相互协同的利益闭环,众多应用厂商围绕x86+windows体系开发产品。我国的兆芯和曙光分别通过与威盛和AMD的商业合作进行x86 CPU的研发,其中兆芯已推出3代CPU产品,并形成了完整的芯片组解决方案,在操作系统层面除兼容windows和linux外,也联合方德、中标、普华等多家国内企业展开适配;曙光联姻AMD加快在服务器领域的布局,自研安全加密模块替代原有AMD的安全部分,提升安全保障能力,预计相关产品今年底实现正式商用。
  ARM体系以开放共赢为基本原则,国内企业在获得技术授权的基础上进行芯片架构和芯片设计的研发。ARM公司是ARM生态的主导者和核心规则的制定者,通过基础架构授权、IP核授权等方式获得经济收益。芯片设计企业基于ARM授权的基础架构/IP核进行芯片研发,降低了研发的难度、风险和成本,与ARM公司形成互惠互利的合作伙伴关系。而生态系统中大量的上下游软硬件企业则遵循ARM统一制定的标准规范,对接众多客户需求而实现经济利益获取。国内基于ARM生态的CPU产业已有较好基础,华为海思、展讯、联芯、飞腾等众多企业均已累积多年的ARM芯片研发经验,在移动终端领域我国芯片设计技术已与国际主流水平同步,在高性能计算等应用领域也推出了相应的CPU产品。华为、展讯、国防科大等多家企业取得ARM自主化程度最高的架构授权,可进行自主CPU基础架构的研发。2016年4月集合国内外数十家企业的绿色计算产业联盟的成立,将继续推动国内ARM生态的逐步壮大和在全球生态中话语权的提升。
  MIPS体系基于架构授权构建开放生态,国内企业是产品研发和生态推动的主要力量。2012年Imagination和ARM的母公司Bridge Crossing合力购得MIPS公司的580项专利,前者联合多家MIPS芯片设计企业组建MIPS开源社区PRPL基金会,共同推进MIPS架构与IP的持续向前发展;后者则侧重于战略性收购以提升知识产权能力。我国目前是推动MIPS生态繁荣的主要力量,龙芯在MIPS精简指令集基础上自主扩展了指令集loongISA,并坚持自主研发微架构和编译器,2015年8月发布的GS464E在整数运算性能方面基本追平了AMD的微结构,浮点运算性能方面接近Intel在2013年发布的Ivy。君正在MIPS基础指令集的基础之上自主扩展了SIMD指令集,侧重于32位嵌入式CPU芯片及配套软件的研发和销售,主要应用于便携教育电子、可穿戴设备等移动便携设备领域。
  此外,国内对Power、Alpha等架构也有布局。国内已通过授权得到IBM的Power CPU全套技术,对标行业应用市场。申威对自主的Alpha架构也在不断深化升级,在双核Alpha基础上拓展了多核架构和SIMD等特色扩展指令集,主要面向高性能计算、服务器领域,在2016年国际超算大会评比中,基于申威26010处理器的“神威太湖之光”计算机系统首次亮相并夺冠,其峰值性能达每秒12.5亿亿次浮点运算,成为世界首台运行速度超10亿亿次的超级计算机。
  二、面临挑战和主要问题
  国产CPU产业配套滞后于产品技术需求,后续升级压力较大。一是,目前国内制造工艺落后国外两代,CPU专用和高性能制造工艺尚处于起步阶段,面向服务器和PC的国产CPU产品仍需依赖台积电等国外厂商。二是,我国IP产值不足全球的10%,并且高端IP的缺乏难以支撑设计和制造发展的需求。华大九天等国内企业发展自主EDA工具,但目前仍较多应用在低端产品当中。此外,与工艺制造相关的装备和材料技术的落后也制约国内制造工艺的升级,进而影响CPU生态的竞争力。
  国产CPU生态环境薄弱且成熟缓慢,长远发展空间受限。受CPU知识产权壁垒和国外CPU企业对商业模式的限制,目前国内孤立的CPU生态环境基础薄弱且成熟缓慢,主要表现在合作伙伴少、软硬件生态力量分散、无法建立Wintel联盟的协同共赢模式、缺乏产业上下游间的融合发展和深度优化等。
  应用开发与CPU研制未形成良性互动,竞争力提升缓慢。当前国产CPU研发还极大依赖于国家项目扶植和支持,未结合市场需求,导致产品和应用脱节的情况较为突出,无法持续发展。目前各级单位正在大力推动国产CPU的应用,但因基于国产CPU的操作系统及应用软件生态并不丰富,目前规模较小,产品竞争力提升缓慢。
  三、对未来发展的建议
  强化统筹协调,提升国内技术生态水平。依托国内的市场优势和企业的成长优势,以我国信息安全特殊需求为切入点,针对具有我国特色的个性化应用需求,联合华为、国防科大、展讯等核心优势企业,加大对CPU产品的研发和在相应生态中的影响力。深化国际合作,在兼容开放、专利申请等方面争取更多权益。
  强化配套供给,提升国内生态体系完备性。一是,推动国内芯片设计企业与中芯国际等制造企业、江苏长电等封测企业间深化合作,围绕服务器、移动芯片、物联网芯片等专用需求,实现国内自有的专用制造和封测工艺技术。二是,加大对与芯片特色功能优化紧密相关的基础IP的自研力度,力图逐步实现国产化替换。三是,支持企业积极参与国际开源社区,深化对开源软件技术的理解,提升国内CPU系列芯片产品配套应用的系统软件和应用软件供给能力。
  强化应用驱动,提升国内技术产业化进程。面向国产化应用实际需求,开展研发攻关和国产化应用部署。整合各类专项资金和社会资金,继续加大对核心技术/产品自主突破的支持力度。鼓励应用企业主导建立应用牵引、研用融合的核心技术研发体系,形成研发、应用、纠错、完善的体系化迭代创新模式,实现技术研发与应用的协同效应。
  强化标准建设,提升国内差异化竞争优势。围绕我国特定领域信息安全需求,构建完备标准化体系,并将其纳入国内市场准入控制范畴。推动企业加强对专利申请的重视程度,适当降低知识产权申请的费用门槛和管理门槛,探索产业共建知识产权专利池,提升我国对外知识产权自我保护能力。  
  (作者简介:周兰,就职于中国信息通信研究院两化融合所集成电路与软件研究部。来源:中国信通院)GPU、CPU计算性能对比
GPU逐渐强化的双精度运算能力和存储子系统优势
&&& 从GTX200和HD
4870系列开始,两大厂商都提供了对双精度运算的支持。HD
4870集成的大ALU依靠ALU.transcendental电路来执行双精度浮点数据的运算,ALU.transcendental主要的作用是为了指令补完,每个时钟周期内能执行一个双精度乘加运算。因为可以每个周期能执行160条MULADD指令也就是说HD
4870的峰值双精度运算能力是单精度运算能力的四分之一,也就是240GFLOPS。但是在通常情况下,HD
4870的双精度性能会被看作是1/4或者1/2,因为人们在编写通用程序的时候,可能很少使用到ALU.transcendental,这时候程序就会表现出1/4的单精度
MULMAD 指令吞吐率或者1/2的单精度ADD指令吞吐率。
GTX200核心的每一个SM都包括了一个双精度64Bit浮点运算单元,这个单元就是SFU(Special Function
Unit,特殊功能单元)。这个处理单元可以用来辅助SP单元处理特殊的函数运算、插值属性的顶点+像素着色、执行浮点乘法运算指令(MUL)。GTX200芯片中的SFU单元已经不像G80时代的线程调度器,而是具备完整的线程发放能力,支持单周期一个乘加+一个连加运算。所以GT200的双精度运算性能衰减是单精度的1/8。这样GTX200就相当于一个30核心的双精度64Bit处理器。根据资料计算,峰值双精度64Bit浮点运算能力大概在90GFLOPS左右。
运算能力对比
目前困扰GPU厂商的一个主要问题还是周边资源特别是共享寄存空间的不足,因为双精度运算寄存器系统消耗最大,这里的寄存器即缓存,NVIDIA称之为Shared
memory,AMD称之为LDS(Local Data
Share)。这个共享寄存器位于每个流处理器单元内部的所有运算单元中,它在通用计算时负责共享数据和临时挂起线程。
共享寄存空间的提升需要半导体工艺的强大支持,因为这部分缓存和一样使用6T
SRAM晶体管,SRAM的每一个比特位需要占用6个晶体管,存储密度较低,1MB容量的二级缓存就需要占用5000万个晶体管,这是一个相当惊人的数字。目前在CPU的逻辑分布中,二级缓存占据的硅芯片面积甚至大于运算核心。在晶体管数量已经相当庞大的GPU(如GTX
280集成度多达14亿个晶体管)中,要集成大量的缓存更是难上加难。
6T-SRAM晶体管构成缓存
容量足够大的共享缓存可以在运算时提高线程的挂起能力,这将直接提升GPU的分支运算能力。同样大容量的缓存在运算精度提升时可以确保更低的性能衰减,届时GPU将拥有更强的双精度能力,理论上会和其单精度运算能力一样远超CPU。这样的直接后果是让GPU更加适应混合精度环境,让通用计算走得更远。
如未来的DirectX
11强制要求每组流处理器拥有32k大小的共享寄存空间,正是为了加强GPU的双精度运算能力。又如2008年12月,另外一个重要的分布式项目SETI@home宣布正式利用CUDA平台支持显卡计算。SETI的重要研究方向,就是从天球背景中接收到的无线电中滤掉杂音。这种降噪运算必须依赖混合精度,而GPU支持这种运算的前提就是拥有稳定和强大的混合精度运算能力。
GPU运算相对于CPU还有一项巨大的优势,那就是其子系统,也就是显卡上的显存。当前桌面级顶级产品3通道DDR3-1333的峰值是32GB/S,实测中由于诸多因素带宽在20
GB/S上下浮动。HD 4870
512MB使用了带宽超高的GDDR5显存,内存总线数据传输率为3.6T/s或者说107GB/s的总线带宽。GTX280使用了高频率GDDR3显存,但是其显存控制器支持的位宽达到了512bit,搭载16颗0.8ns
GDDR3显存,带宽高达惊人的142GB/s。而主流GPU普遍拥有40-60
GB/s显存带宽。存储器的超高带宽让巨大的浮点运算能力得以稳定吞吐,也为数据密集型任务的高效运行提供了保障。
目前GPU已经是足够强大的可编程处理器,非常适合大运算量的科学应用,诸如地质勘探,生物学,流体力学,金融建模等等。这使得GPU应用于地球科学、分子生物学和医学诊断领域的高性能计算为实现重大的发现提供了可能,这些发现会改变数十亿人的生活。
GPU架构设计导致的运算能力差异
&&& 总共拥有十个流处理器阵列,每个阵列内部拥有8&3=24个流处理器,其中每8个为一组构成SIMT(单指令多任务架构),并共享16K指令缓存,三组SIMT共享一级缓存。这样的标量流处理器设计适合执行高度并行化指令,无论对于传统的图形渲染,还是物理加速运算、大规模数据处理都游刃有余。HD
4870同样不干落后,800个高度优化的流处理器由160个Stream Processing
Units构成,每个流处理器单元的“1大4小”结构包括一个全功能SP单元和4个能执行乘加运算的SP。同样拥有可怕的理论运算能力。
图解SIDM与MIMD区别
需要注意的是两家图形芯片厂商设计的产品的实际性能并不能用理论峰值性能来推算。比如AMD的SIMD+VLIW结构流处理器由于架构因素几乎无法做到所有SP单元满载,主要原因是科学运算类的指令段没有相当多的天然4D指令。SIMD最大的问题是程序数据必须一致,也就是说当你同时操作5D(4D+1D)数据的时候,这5D数据必须在同一个数据流程中,5D的相关性是默认的。同时条件分支数目庞大,所以导致R600和RV770的架构性能相比NVIDIA产品有更一定幅度性能衰减。
&&& Radeon HD
4870与GTX 280最明显的区别就是流处理器结构,Radeon HD
4870选择延续上一代非统一执行架构GPU产品的SIMD结构,用庞大的规模效应压制对手,偏向于ILP(指令并行度)方向,而GTX
280则使用了G80以来创新的MIMD架构,更偏重于TLP(线程并行度)方向。在单指令多数据流(SIMD)的结构中,单一控制部件向每条流水线分派指令,同样的指令被所有处理部件同时执行。另外一种控制结构是多指令多数据流(MIMD),每条流水线都能够独立于其他流水线执行不同的程序。
NVIDIA和AMD使用了两种不同的流处理器架构
其实在上一代非统一执行架构GPU中(如Geforce 6800
Ultra),顶点着色器流水线已经使用了MIMD方式控制,像素着色器流水线则继续使用SIMD结构。MIMD能比较有效率地执行分支程序,而SIMD体系结构运行条件语句时会造成很低的资源利用率。TLP要求强大的仲裁机制,丰富的共享cache和寄存器资源以及充足的发射端,这些都是极占晶体管的部件。不过SIMD需要硬件少,这是一个优势,这也就是为什么Radeon
HD 4870拥有800个流处理器,晶体管集成度却低于240个流处理器的GTX 280。
此外在高密度并行运算中,AMD的R600和RV770的发射端资源面临一定程度的短缺。以RV770(Radeon HD
4870)为例,每个流处理器单元(“1大4小”5个流处理器)配备了1个发射端,所以如果要保证指令吞吐不受限制就通过VLIW,也就是超长指令打包的形式将若干个短指令打包在一起。VLIW应用在RV770中理论上可以做到1个4D+4个1D打成一个包一起丢进US,这样可以最大限度的避免发射端不足的问题。可是如果遇到条件分支,也就是说这个包里面有一个1D指令的结果很不凑巧是同一个包里另外一个1D指令的初始条件,整个架构的效率会受到影响。
GPU流处理器架构对比
还有一个不可忽视的问题是最小线程执行粒度。粒度越细,能够调用并行度来进行指令延迟掩盖的机会越大,性能衰减越小。细化粒度偏向TLP方向,对GPU的线程仲裁机制要求很大,最终会导致硬件开销过大。我们知道GPU通用计算中最小的执行单位是线程(Thread),多个线程会被打包成一个线程束,NV称线程束为Warp,AMD称之为Frontwave。但是在粒度上两家厂商做出了不同的选择,Frontwave包含64个线程,NV的线程管理粒度更小,每个Warp包含32个线程。R600和RV770每凑够64个线程,仲裁器就会动作一次,把一个Frontwave发送给空闲的一个SIMD
Core。NV的G80和GT200比较特殊,存在Half-Warp,也就是说每16个线程就可以发送给SM一次。Half-Warp由线程中的前16个线程或者后16个线程组成。
总体来说,两家厂商的差异在于:AMD堆砌了更大规模的运算器单元,NVIDIA则更注重如何利用有限的运算器资源。AMD将更多的晶体管消耗在大量的SIMD
Core单元上,NVIDIA则将更多的晶体管消耗在仲裁机制、丰富的共享缓存资源和寄存器资源以及充足的发射端方面。AMD的GPU偏向于ILP结构,NVIDIA偏向于TLP结构。TLP(线程并行度)考验线程能力和并行能力,ILP(指令并行度)则考验指令处理。从G80和R600的对垒开始,两大图形芯片厂商一直延续着这种竞争思路。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。通俗易懂告诉你CPU/GPU/TPU/NPU...XPU都是些什么鬼?【附把妹... - FPGA&硬件语言专区 - OpenHW技术社区
后使用快捷导航没有帐号?
查看: 57|回复: 0
通俗易懂告诉你CPU/GPU/TPU/NPU...XPU都是些什么鬼?【附把妹...
主题帖子积分
金牌会员, 积分 2494, 距离下一级还需 506 积分
金牌会员, 积分 2494, 距离下一级还需 506 积分
QQ浏览器截图_40_43001FC51BDF4cb11F2922.jpg (49.64 KB, 下载次数: 0)
22:42 上传
“亲爱的,听说HW最新发布了Mate 10,里面有个叫什么NPU的,听起来很厉害,这是什么东西啊?”
“呃……就是人工智能处理器吧?”
“什么是人工智能处理器?和CPU有啥区别?和GPU有啥区别?不都带个PU吗?”
“呃……”
现在这年代,技术日新月异,物联网、人工智能、深度学习等概念遍地开花,各类芯片名词GPU, TPU, NPU,DPU,层出不穷......它们都是什么鬼?与CPU又是什么关系?搞不懂这些知识,买手机的时候都没法在妹子面前装B了呢。
所以,今天我们就来通俗易懂的科普一下这些所谓的“XPU”!
CPU( Central Processing Unit, 中央处理器)就是机器的“大脑”,也是布局谋略、发号施令、控制行动的“总司令官”。
CPU的结构主要包括运算器(ALU, Arithmetic and Logic Unit)、控制单元(CU, Control Unit)、寄存器(Register)、高速缓存器(Cache)和它们之间通讯的数据、控制及状态的总线。
简单来说就是:计算单元、控制单元和存储单元,架构如下图所示:
QQ浏览器截图_49_34E9C2C3CBE5D49E2E3F.jpg (19.27 KB, 下载次数: 0)
22:42 上传
图:CPU微架构示意图
什么?架构记不住?来,我们换种表示方法:
QQ浏览器截图_56_FD47dc97F1F.jpg (29.82 KB, 下载次数: 0)
22:42 上传
图:CPU微架构示意图(改)
嗯,大概就是这个意思。
从字面上我们也很好理解,计算单元主要执行算术运算、移位等操作以及地址运算和转换;存储单元主要用于保存运算中产生的数据以及指令等;控制单元则对指令译码,并且发出为完成每条指令所要执行的各个操作的控制信号。
所以一条指令在CPU中执行的过程是这样的:读取到指令后,通过指令总线送到控制器(黄色区域)中进行译码,并发出相应的操作控制信号;然后运算器(绿色区域)按照操作指令对数据进行计算,并通过数据总线将得到的数据存入数据缓存器(大块橙色区域)。过程如下图所示:
QQ浏览器截图_10_7C6DE7B44CDF33B0C902E7F.jpg (37.61 KB, 下载次数: 0)
22:42 上传
图:CPU执行指令图
是不是有点儿复杂?没关系,这张图完全不用记住,我们只需要知道,CPU遵循的是冯诺依曼架构,其核心就是:存储程序,顺序执行。
讲到这里,有没有看出问题,没错——在这个结构图中,负责计算的绿色区域占的面积似乎太小了,而橙色区域的缓存Cache和黄色区域的控制单元占据了大量空间。
高中化学有句老生常谈的话叫:结构决定性质,放在这里也非常适用。
因为CPU的架构中需要大量的空间去放置存储单元(橙色部分)和控制单元(黄色部分),相比之下计算单元(绿色部分)只占据了很小的一部分,所以它在大规模并行计算能力上极受限制,而更擅长于逻辑控制。
另外,因为遵循冯诺依曼架构(存储程序,顺序执行),CPU就像是个一板一眼的管家,人们吩咐的事情它总是一步一步来做。但是随着人们对更大规模与更快处理速度的需求的增加,这位管家渐渐变得有些力不从心。
于是,大家就想,能不能把多个处理器放在同一块芯片上,让它们一起来做事,这样效率不就提高了吗?
没错,GPU便由此诞生了。
在正式讲解GPU之前,我们先来讲讲上文中提到的一个概念——并行计算。
并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来共同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。
并行计算可分为时间上的并行和空间上的并行。
时间上的并行是指流水线技术,比如说工厂生产食品的时候分为四步:清洗-消毒-切割-包装。
如果不采用流水线,一个食品完成上述四个步骤后,下一个食品才进行处理,耗时且影响效率。但是采用流水线技术,就可以同时处理四个食品。这就是并行算法中的时间并行,在同一时间启动两个或两个以上的操作,大大提高计算性能。
QQ浏览器截图_19_B2C3B61B42E14e9c90B55F.jpg (42.41 KB, 下载次数: 0)
22:42 上传
图:流水线示意图
空间上的并行是指多个处理机并发的执行计算,即通过网络将两个以上的处理机连接起来,达到同时计算同一个任务的不同部分,或者单个处理机无法解决的大型问题。
比如小李准备在植树节种三棵树,如果小李1个人需要6个小时才能完成任务,植树节当天他叫来了好朋友小红、小王,三个人同时开始挖坑植树,2个小时后每个人都完成了一颗植树任务,这就是并行算法中的空间并行,将一个大任务分割成多个相同的子任务,来加快问题解决速度。
所以说,如果让CPU来执行这个种树任务的话,它就会一棵一棵的种,花上6个小时的时间,但是让GPU来种树,就相当于好几个人同时在种。
GPU全称为Graphics Processing Unit,中文为图形处理器,就如它的名字一样,GPU最初是用在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上运行绘图运算工作的微处理器。
为什么GPU特别擅长处理图像数据呢?这是因为图像上的每一个像素点都有被处理的需要,而且每个像素点处理的过程和方式都十分相似,也就成了GPU的天然温床。
GPU简单架构如下图所示:
QQ浏览器截图_26_4FFABCC9A14C4fd9A42EE.jpg (40.21 KB, 下载次数: 0)
22:42 上传
图:GPU微架构示意图
从架构图我们就能很明显的看出,GPU的构成相对简单,有数量众多的计算单元和超长的流水线,特别适合处理大量的类型统一的数据。
但GPU无法单独工作,必须由CPU进行控制调用才能工作。CPU可单独作用,处理复杂的逻辑运算和不同的数据类型,但当需要大量的处理类型统一的数据时,则可调用GPU进行并行计算。
注:GPU中有很多的运算器ALU和很少的缓存cache,缓存的目的不是保存后面需要访问的数据的,这点和CPU不同,而是为线程thread提高服务的。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问,然后再去访问dram。
再把CPU和GPU两者放在一张图上看下对比,就非常一目了然了。
QQ浏览器截图_34_4fc592CBBE1.jpg (25.16 KB, 下载次数: 0)
22:42 上传
GPU的工作大部分都计算量大,但没什么技术含量,而且要重复很多很多次。
借用知乎上某大神的说法,就像你有个工作需要计算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分,反正这些计算也没什么技术含量,纯粹体力活而已;而CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生,你要是富士康你雇哪个?
GPU就是用很多简单的计算单元去完成大量的计算任务,纯粹的人海战术。这种策略基于一个前提,就是小学生A和小学生B的工作没有什么依赖性,是互相独立的。
但有一点需要强调,虽然GPU是为了图像处理而生的,但是我们通过前面的介绍可以发现,它在结构上并没有专门为图像服务的部件,只是对CPU的结构进行了优化与调整,所以现在GPU不仅可以在图像处理领域大显身手,它还被用来科学计算、密码破解、数值分析,海量数据处理(排序,Map-Reduce等),金融分析等需要大规模并行计算的领域。
所以GPU也可以认为是一种较通用的芯片。
按照上文所述,CPU和GPU都是较为通用的芯片,但是有句老话说得好:万能工具的效率永远比不上专用工具。
随着人们的计算需求越来越专业化,人们希望有芯片可以更加符合自己的专业需求,这时,便产生了ASIC(专用集成电路)的概念。
ASIC是指依产品需求不同而定制化的特殊规格集成电路,由特定使用者要求和特定电子系统的需要而设计、制造。当然这概念不用记,简单来说就是定制化芯片。
因为ASIC很“专一”,只做一件事,所以它就会比CPU、GPU等能做很多件事的芯片在某件事上做的更好,实现更高的处理速度和更低的能耗。但相应的,ASIC的生产成本也非常高。
而TPU(Tensor Processing Unit, 张量处理器)就是谷歌专门为加速深层神经网络运算能力而研发的一款芯片,其实也是一款ASIC。
QQ浏览器截图_44_20D550E32E324ef297C899AA0ACC0A33.jpg (50.39 KB, 下载次数: 0)
22:42 上传
图:谷歌第二代TPU
一般公司是很难承担为深度学习开发专门ASIC芯片的成本和风险的,但谷歌是谁,人家会差钱吗?
QQ浏览器截图_49_CB84af09F4CEDD.jpg (21.4 KB, 下载次数: 0)
22:42 上传
咳咳,开玩笑。更重要的原因是谷歌提供的很多服务,包括谷歌图像搜索、谷歌照片、谷歌云视觉API、谷歌翻译等产品和服务都需要用到深度神经网络。基于谷歌自身庞大的体量,开发一种专门的芯片开始具备规模化应用(大量分摊研发成本)的可能。
如此看来,TPU登上历史舞台也顺理成章了。
原来很多的机器学习以及图像处理算法大部分都跑在GPU与FPGA(半定制化芯片)上面,但这两种芯片都还是一种通用性芯片,所以在效能与功耗上还是不能更紧密的适配机器学习算法,而且Google一直坚信伟大的软件将在伟大的硬件的帮助下更加大放异彩,所以Google便想,我们可不可以做出一款专用机机器学习算法的专用芯片,TPU便诞生了。
据称,TPU与同期的CPU和GPU相比,可以提供15-30倍的性能提升,以及30-80倍的效率(性能/瓦特)提升。初代的TPU只能做推理,要依靠Google云来实时收集数据并产生结果,而训练过程还需要额外的资源;而第二代TPU既可以用于训练神经网络,又可以用于推理。
看到这里你可能会问了,为什么TPU会在性能上这么牛逼呢?
嗯,谷歌写了好几篇论文和博文来说明这一原因,所以仅在这里抛砖引玉一下。
QQ浏览器截图_55_2E9ad89ED71A46CAB1B0E.jpg (49.59 KB, 下载次数: 0)
22:42 上传
图:TPU 各模块的框图
QQ浏览器截图_01_ADC11D570E334bba881B2A.jpg (60.67 KB, 下载次数: 0)
22:42 上传
图:TPU芯片布局图
如上图所示,TPU在芯片上使用了高达24MB的局部内存,6MB的累加器内存以及用于与主控处理器进行对接的内存,总共占芯片面积的37%(图中蓝色部分)。
这表示谷歌充分意识到了片外内存访问是GPU能效比低的罪魁祸首,因此不惜成本的在芯片上放了巨大的内存。相比之下,英伟达同时期的K80只有8MB的片上内存,因此需要不断地去访问片外DRAM。
另外,TPU的高性能还来源于对于低运算精度的容忍。研究结果表明,低精度运算带来的算法准确率损失很小,但是在硬件实现上却可以带来巨大的便利,包括功耗更低、速度更快、占芯片面积更小的运算单元、更小的内存带宽需求等...TPU采用了8比特的低精度运算。
其它更多的信息可以去翻翻谷歌的论文。
到目前为止,TPU其实已经干了很多事情了,例如机器学习人工智能系统RankBrain,它是用来帮助Google处理搜索结果并为用户提供更加相关搜索结果的;还有街景Street View,用来提高地图与导航的准确性的;当然还有下围棋的计算机程序AlphaGo!
讲到这里,相信大家对这些所谓的“XPU”的套路已经有了一定了解,我们接着来。
所谓NPU(Neural network Processing Unit), 即神经网络处理器。顾名思义,这家伙是想用电路模拟人类的神经元和突触结构啊!
怎么模仿?那就得先来看看人类的神经结构——生物的神经网络由若干人工神经元结点互联而成,神经元之间通过突触两两连接,突触记录了神经元之间的联系。
QQ浏览器截图_10_EC0E3AD076DA471aB35C478DF8F8EF8C.jpg (77.46 KB, 下载次数: 0)
22:42 上传
同志们,高中生物还记得吗?
如果想用电路模仿人类的神经元,就得把每个神经元抽象为一个激励函数,该函数的输入由与其相连的神经元的输出以及连接神经元的突触共同决定。
为了表达特定的知识,使用者通常需要(通过某些特定的算法)调整人工神经网络中突触的取值、网络的拓扑结构等。该过程称为“学习”。
在学习之后,人工神经网络可通过习得的知识来解决特定的问题。
这时不知道大家有没有发现问题——原来,由于深度学习的基本操作是神经元和突触的处理,而传统的处理器指令集(包括x86和ARM等)是为了进行通用计算发展起来的,其基本操作为算术操作(加减乘除)和逻辑操作(与或非),往往需要数百甚至上千条指令才能完成一个神经元的处理,深度学习的处理效率不高。
这时就必须另辟蹊径——突破经典的冯·诺伊曼结构!
神经网络中存储和处理是一体化的,都是通过突触权重来体现。 而冯·诺伊曼结构中,存储和处理是分离的,分别由存储器和运算器来实现,二者之间存在巨大的差异。当用现有的基于冯·诺伊曼结构的经典计算机(如X86处理器和英伟达GPU)来跑神经网络应用时,就不可避免地受到存储和处理分离式结构的制约,因而影响效率。这也就是专门针对人工智能的专业芯片能够对传统芯片有一定先天优势的原因之一。
NPU的典型代表有国内的寒武纪芯片和IBM的TrueNorth。以中国的寒武纪为例,DianNaoYu指令直接面对大规模神经元和突触的处理,一条指令即可完成一组神经元的处理,并对神经元和突触数据在芯片上的传输提供了一系列专门的支持。
用数字来说话,CPU、GPU与NPU相比,会有百倍以上的性能或能耗比差距——以寒武纪团队过去和Inria联合发表的DianNao论文为例——DianNao为单核处理器,主频为0.98GHz,峰值性能达每秒4520亿次神经网络基本运算,65nm工艺下功耗为0.485W,面积3.02平方毫米mm。
QQ浏览器截图_18_2E678AEC97.jpg (33.55 KB, 下载次数: 0)
22:42 上传
文章开头所说的mate10中所用的麒麟970芯片,就集成了寒武纪的NPU,所以才可以实现所谓的照片优化功能,以及保证你的手机用了很长时间后还能不卡(当然也得真正用了才能知道有没有宣传的这么好)。
PS,中星微电子的“星光智能一号”虽说对外号称是NPU,但其实只是DSP,仅支持网络正向运算,无法支持神经网络训练。
在以上这些知识的基础上,我们再来理解BPU和DPU就更容易了。
BPU(Brain Processing Unit,大脑处理器)是由地平线科技提出的嵌入式人工智能处理器架构。第一代是高斯架构,第二代是伯努利架构,第三代是贝叶斯架构。目前地平线已经设计出了第一代高斯架构,并与英特尔在2017年CES展会上联合推出了ADAS系统(高级驾驶辅助系统)。
DPU(Deep learning Processing Unit, 即深度学习处理器)最早由国内深鉴科技提出,基于Xilinx可重构特性的FPGA芯片,设计专用的深度学习处理单元(可基于已有的逻辑单元,设计并行高效的乘法器及逻辑电路,属于IP范畴),且抽象出定制化的指令集和编译器(而非使用OpenCL),从而实现快速的开发与产品迭代。事实上,深鉴提出的DPU属于半定制化的FPGA。
你以为到这里就完了吗?
不,据说每过18天,集成电路领域就会多出一个XPU,直到26个字母被用完。
这被戏称为AI时代的XPU版摩尔定律。
据不完全统计,已经被用掉的有:
APU -- Accelerated Processing Unit, 加速处理器,AMD公司推出加速图像处理芯片产品。
BPU -- Brain Processing Unit, 地平线公司主导的嵌入式处理器架构。
CPU -- Central Processing Unit 中央处理器, 目前PC core的主流产品。
DPU -- Deep learning Processing Unit, 深度学习处理器,最早由国内深鉴科技提出;另说有Dataflow Processing Unit 数据流处理器, Wave Computing 公司提出的AI架构;Data storage Processing Unit,深圳大普微的智能固态硬盘处理器。
FPU -- Floating Processing Unit 浮点计算单元,通用处理器中的浮点运算模块。
GPU -- Graphics Processing Unit, 图形处理器,采用多线程SIMD架构,为图形处理而生。
HPU -- Holographics Processing Unit 全息图像处理器, 微软出品的全息计算芯片与设备。
IPU -- Intelligence Processing Unit, Deep Mind投资的Graphcore公司出品的AI处理器产品。
MPU/MCU -- Microprocessor/Micro controller Unit, 微处理器/微控制器,一般用于低计算应用的RISC计算机体系架构产品,如ARM-M系列处理器。
NPU -- Neural Network Processing Unit,神经网络处理器,是基于神经网络算法与加速的新型处理器总称,如中科院计算所/寒武纪公司出品的diannao系列。
RPU -- Radio Processing Unit, 无线电处理器, Imagination Technologies 公司推出的集合集Wifi/蓝牙/FM/处理器为单片的处理器。
TPU -- Tensor Processing Unit 张量处理器, Google 公司推出的加速人工智能算法的专用处理器。目前一代TPU面向Inference,二代面向训练。
VPU -- Vector Processing Unit 矢量处理器,Intel收购的Movidius公司推出的图像处理与人工智能的专用芯片的加速计算核心。
WPU -- Wearable Processing Unit, 可穿戴处理器,Ineda Systems公司推出的可穿戴片上系统产品,包含GPU/MIPS CPU等IP。
XPU -- 百度与Xilinx公司在2017年Hotchips大会上发布的FPGA智能云加速,含256核。
ZPU -- Zylin Processing Unit, 由挪威Zylin 公司推出的一款32位开源处理器。
当26个字母被用完后,即将出现XXPU,XXXPU,并以更快的速度占领起名界。
你说吓不吓人?
到这里,相信诸位也对这些XPU的概念有了初步的认识。
可你以为给妹子讲了这些后就能成功讨得美人欢心吗?
太天真了!
妹子询问你类似问题的本质都只有一个:别BB了,快去下单给我买回来!
作者: 博思 博思Ponder
站长推荐 /1
关于时序分析的文档有很多,这几个文档很经典,估计很多人也看过的。文档详细的讲解了XILINX芯片的时序分析,约束方法,讲解了两种分析方法,几个文档刚好互补。
联系电话: 3-8062
Powered by}

我要回帖

更多关于 计算机峰值性能 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信