人工智能(AI)与虚拟现实(AR)的概念在最近乃是当红炸子鸡,火遍大江南北。AI与AR的概念区别不小,但是也有不少交集。目前,AI最热门的应用就是在计算机视觉(Computer Vision,CV)领域,而AR的实现(图像渲染)自然也离不开CV。举个例子吧!《龙珠》想必大家都看过(如果你没看过说明你很年轻!大叔很羡慕你!),里面的战斗力探测眼镜就是AI+AR的一个极好例子:战斗力探测眼镜用基于CV的AI首先做物体识别,把眼镜视野里面的战斗对象与背景区分开,然后用一套AI算法去评估该对象的战斗力,最后把战斗力标注到眼镜视野里的目标周围(什么?战斗力只有5?),从而实现AR。
《龙珠》里的战斗力探测眼镜是AI+AR应用的一个极好例子
如今,实现战斗力探测的AI+AR技术已经不再为赛亚人所独有,地球人也拥有了这项技术!例如,微软的HoloLens在已公布的AI+AR设备中可谓佼佼者,凭借微软的金字招牌以及酷炫的演示动画吸引了无数科技爱好者的眼球。目前,用于AI/AR的处理器架构该如何设计仍然处于探索阶段,Intel想借机推自己基于CPU的方案,Nvidia想利用GPU弯道超车,而Qualcomm也拼接Snapdragon平台在一边虎视眈眈。在最近的商用芯片峰会HotChips上,微软公布了应用在HoloLens中的处理器芯片(HoloLens Processing Unit, HPU)。HPU的架构和CPU以及GPU都不相同,可谓是开创了AI/AR领域芯片的新范式。
HoloLens可以实现众多AI/AR应用
微软公布的HoloLens系统架构如下图所示。就在绝大多数移动设备的处理器都基于ARM结构的今天,HoloLens的主处理器使用的仍然是Intel的Cherry Trail SoC(包括CPU与集成的GPU),让人感叹维持了二十余年的Wintel联盟坚不可破。微软最新公布的HPU也可以在图上看到,HPU严格来说是一款协处理器,其作用是协助主处理器加速运算一些专门的运算(如用于CV的矩阵运算,用于CNN的卷积运算等)。由于CPU必须要考虑通用性而无法对一些AR/VR运算进行优化,因此在应用场景中会大量遇到的专门运算如果都交给CPU做会使系统的整体性能变得很差,于是我们需要设计一款专用的加速器来协助加速这些运算,微软在这里的加速器就是HPU。HPU通过PCIe高速接口与主处理器所在的SoC通信,不过PCIe的功耗其实是比较大的,未来可望会用上更先进的互联技术。
微软公布的HPU处理能力达到每秒1T(10^12)次像素运算,功耗则小于4W。HPU能够融合来自5个摄像头、一个深度传感器以及运动传感器的输入信息,将信息压缩并传送到主处理器。此外HPU还能实现AI手势识别。据说微软曾评估了来自于各大厂商的商用芯片,却没有找到任何一款产品能满足系统算法对性能的要求。这款微软自己开发的HPU是采用台积电28nm工艺,内含24颗可重配置的Tensilica数字信号处理器(DSP)核心以及高达8MB的Cache。除此以外,还有专用加速器用于给各类专门任务加速。
HoloLens系统架构,HPU与显示设备紧密耦合并且和主处理器Intel Cherry Trail SoC由高速PCIe接口互联
如果仔细观察HPU架构,会发现它与目前借着AI/AR及人工智能风口飞地很高的GPU有点像,但并不相同。说它们“有点像”是因为HPU和GPU都有不少计算核心,这样可以实现数据的并行处理。HPU和GPU要处理的都是画面中的一个个像素,而像素之间其实并没有关联性,因此可以由并行处理来提高执行效率。与之相对的是CPU,为了照顾通用性CPU无法放置大量的计算核心来实现大规模并行运算,因此完全用CPU来处理AI/AR操作会导致速度很慢。另一方面,HPU与GPU之间也有很大的不同。首先,HPU上的计算核心是可配置DSP而非类似Nvidia GPU里面的CUDA core。另外,HPU的片上Cache(用于快速存取数据)高达8MB,远大于GPU的片上Cache容量(Tegra X1上Cache仅有2 MB)。这是为什么呢?
归根到底,这些都是因为应用的区别。GPU就像一艘巨轮,设施豪华(运算精度高),耗油巨大(功耗巨大),在处理海量的数据时可以实现非常高的吞吐率,但是实时性并不好:你可以想象巨轮在行驶前需要做许多准备工作,并不是指令一下说走就走(延迟较大)。当然在需要处理的数据量足够大时,这些准备时间相对于计算时间来说可以忽略不计。HPU就像一艘小船,轻便而省油(功耗较小),而且指令一下可以说走就走(延迟较小),虽然运算的吞吐量不能和GPU相比但是实时性很好。在HoloLens中,实时性非常重要:例如,在你的头部移动时,你显示的内容也要相应改变,如果在你头部移动和现实内容改变之间存在明显延迟则使用者会感到晕眩(这也是为什么很多人在玩3d游戏时会头晕的原因)。另外,由于HoloLens是移动设备,因此芯片的功耗需要严格控制,功耗巨大的GPU架构并不适合。
HPU芯片照片,可见SRAM和DSP占比例很大
让我们来看看HPU和GPU的几点不同是如何对应应用场合的要求的。首先,HPU选择了可重配置的DSP。使用可重配置的DSP可以根据应用场合切换配置来实现性能-功耗的最优折衷,可以说HPU使用可配置DSP是为了实现在给定功耗下的最佳性能。其次,HPU使用很大的片上Cache。使用片上Cache可以实现低延迟数据存取,从而满足HoloLens对于实时性的要求。HPU与显示设备紧密耦和也能帮助降低延迟。与之相反,通常GPU的片上Cache(相对于其芯片面积而言)都较小,而绝大部分数据都存在片外DRAM中并使用高速GDDR接口实现数据传送。这样做既增大了数据存取延时又消耗了很大的功耗,并不适合HoloLens这样的应用。
最后,值得注意的是,HPU还集成了许多专用加速器。这些专用加速器可以帮助HPU快速执行一些算法(单靠DSP往往无法满足这些算法的性能需求)。这使得HPU又有点像Qualcomm的Snapdragon SoC,因为Snapdragon也是在芯片上会集成许多特定算法(如视频编解码,AES加密)的加速器。这些加速器的功耗往往很低,但是使用这些加速器也是要付出代价的:专用加速器在不需要使用的时候会处于闲置状态无法用做其他用途,这部分用于专用加速器的芯片面积在加速器闲置的时候相当于是浪费了。因此,专用加速器就能量而言效率非常高(即完成运算需要的能量很小),但是就芯片面积而言效率很差(即增加了芯片成本)。因此集成哪些专用加速器需要经过性能-功耗-成本三方面的仔细折衷。HPU集成的这些专用加速器相信会在一些关键的应用中起很大的加速作用,从而保证HoloLens能以很高的性能实现算法同时消耗很低的功耗。根据微软的数据,使用专用加速器配合DSP可以实现200倍以上的性能改善,效果可谓惊人。
近来AI/AR技术发展非常快。为了实现新的算法以及满足新的应用需求,往往要速度更快功耗更低的硬件,这就需要相应的芯片也能快速迭代以满足算法和应用的需求。另一方面,许多传统只在软件领域活动的巨头(如Google,Facebook)在这波风潮里也在向着硬件领域蠢蠢欲动,为了使自己的AI/AR硬件性能达标,使用通用的CPU/GPU很困难,必须有定制芯片。以往的先三年技术积累再开始量产芯片的做法根本无法跟上现在的高速节奏,必须有能从头开始在一年内就交付的快速芯片设计方法。为了满足这两个需求,使用芯片IP几乎是必须的。当使用购买的芯片IP时,设计者只需把精力集中在整体架构设计上,所有没有时间或者资源做具体设计的芯片模块都可以向第三方购买。相比从头设计所有模块,基于IP的芯片设计方法大大加快了设计速度,而整个芯片中第三方IP所占的比例也会越来越多。在之前的芯片巨头靠出售芯片盈利,而芯片中每一个第三方IP都要付出权利金,因此高通这类公司不到万不得已不会使用第三方IP,而是会倾向于自己做模块。举例来说,高通芯片面积中使用第三方IP(不包括ARM的架构授权)的比例通常小于5%。然而,这些从软件领域过来做硬件的巨头制造芯片并不指望靠芯片盈利,而是要用在自家硬件里。对于它们来说,硬件是否能盈利甚至都不重要,它们需要的是营造自己的生态圈抢占市场。因此,对它们来说芯片最关键的是性能要强,而且上市速度要快,所以它们完全不介意买许多第三方IP。前面讨论的微软HPU就是一个极好的例子。微软的芯片设计团队相对于Intel和高通等半导体业界巨头来说非常小,但是借助于从Cadence购买的Tensillica DSP IP,微软仍然能够在短时间内快速完成高性能大型芯片的设计,而且第三方IP占的芯片面积高达60%以上。可以说,随着AI/AR概念越来越普及,相应的芯片IP也会越来越热门。
除了Tensillica之外,也有其他公司在提供AI/AR方面的芯片IP。老牌DSP和通讯IP供应商最近发布了针对AI和CV的XM6 DSP平台。该DSP平台为深度学习优化,从而可以较高效地完成AI/AR运算。在各大高校和科研机构,AI IP的开发也是一个热点,例如MIT由Yu-Hsin Chen开发的Eyeriss深度学习加速器IP可以以很低的功耗完成高速卷积运算,自从在2015年的ISSCC(国际固态半导体电路会议)上发表后收到了巨大的关注。我们预期在不久的将来,AI/AR IP领域会越来越红火。
作为AI/AR处理器芯片的先锋,HPU的架构与GPU相似(多核并行运算)但又有很大不同(使用定点DSP和大容量片上Cache),另一方面它又从用于手机的多媒体SoC(如Snapdragon)借鉴了集成专用加速器的方法,可谓是博采众长又不拘泥于一家之说。另外,为了追上算法和应用的发展,AI/AR芯片可能会大量使用第三方芯片IP。我们预期在未来的AI/AR处理器芯片架构中看到如下的设计范式转移:GPU追求高吞吐量->AI/AR芯片追求低延时;CPU/GPU追求通用性->AI/AR处理器为特定应用集成大量专用加速器;CPU/GPU模块多为自己设计->AI/AR处理器大量使用第三方IP。
【本文授权转载自矽说公众号,作者李一雷】