最近,ARM进一步揭露了ML Procesor的一些信息。EETImes的文章“Arm Gives Glimpse of AI Core”[1] 和 AnandTech的文章“ARM Details “Project Trillium” Machine Learning Processor Architecture”别离从不同视点进行了介绍,值得咱们仔细剖析。
ARM揭露它的ML Processor是在本年春节前夕,其时发布的信息不多,我也简略做了点剖析(AI芯片开年)。
这次ARM揭露了更多信息,咱们一起来看看。首先是要害的Feature和一些重要信息,2018年中会Release。
顶层架构
与开始发布的根本框图比较,咱们这次看到了更细化的模块框图和衔接联系,如下图所示。
MLP的顶层对外来看是个比较典型的硬件加速器,它有本地的SRAM,经过一个ACE-Lite接口和外部交互数据和首要的操控信息(指令)。别的应该还有一些操控信号,估量在这儿略去了(能够参阅Nvidia的NVDLA)。
在上图中绿色箭头应该表明的是数据流,赤色表明操控流。MLP中的CE同享一套DMA,Control Unit和Sync Unit,它的根本处理流程大概是这样的: 1. 装备Control Unit和DMA Engine;2. DMA Engine从外部(如DDR)读入数据存在本地的SRAM中;3. Input Feature Map Read模块和Weight Read模块别离读入待运算的feature map和weight,处理(比方Weight的解紧缩),并发送到MAC ConvoluTIon Engine(后边简称为MCE);4. MCE履行卷积等操作,并把成果传输给Programmable Layer Engine(后边简称为PLE);5. PLE履行其它处理,并将成果写回本地SRAM;6. DMA Engine把成果传输到外部存储空间(如DDR)。
在顶层标出的Broadcast接口,完成在多个Compute Engine(后边简称为CE)之间播送feature map数据的功用。因而,根本的卷积运算形式是,相同的feature map播送到多个CE,不同的CE运用不同的weight来和这些feature map进行运算。
从现在的装备来看,MLP包含16个compute engine,每个有128个MAC,即一共有16×128=2048个MAC,每个cycle能够履行4096个操作。假如要完成ARM所说的4.6TOPS的总的处理才能,则需求时钟周期到达1.12GHz左右。因为这个方针是针对7nm工艺,完成问题不大。
MCE完成高效卷积
在MLP的架构中,MCE和PLE是最重要的功用模块。MCE供给首要的运算才能(处理90%的运算),应该也是MLP中面积和功耗最大的部分。因而,MCE规划优化的一个首要方针便是完成高效的卷积操作。详细来讲,MLP的规划首要考虑了以下一些办法,这些办法大部分咱们之前也都评论过。
一个比较风趣的点是上面说到的“varied internal precision”。现在还不太清楚其详细的意义。不过对应用来说看到的应该是固定的8bit数据类型。至于对低精度Inference的支撑,[1]中供给的信息是, “The team is tracking research on data types down to 1-bit precision, including a novel 8-bit proposal from Microsoft. So far, the alternaTIves lack support in tools to make them commercially viable, said Laudick.” 因而在第一版的MLP中,应该也不会看到低精度或许Bit-serial MAC了(参阅AI芯片开年中对ISSCC2018呈现的Bit-serial Processing的介绍)。
此外,数据的紧缩和对工艺的优化也是进步全体功率的首要手法。特别是工艺的优化,结合ARM的工艺库,应该有比较好的作用,这也是ARM有优势的当地。
PLE完成高效的可编程性
如下图所示,PLE的结构根本是在一个ARM MCU基础上扩展了Vector处理和NN处理的指令。在评论可编程性的时分,其动身点首要是NN算法和架构现在还在不断演进。
咱们前面现已剖析了整个MLP的根本作业流程,MCE在完成了运算之后把成果传输给PLE。从这儿能够看出,MCE应该是把成果发送到Vector Register File(VRF),然后发生中止告诉CPU。之后,CPU发动Vector Engine对数据进行处理。详细如下图所示。
关于做专用处理器的同学来说,这种scalar CPU+vector engine的架构并不生疏。这儿,本地SRAM,VRF和PLE之外的Maing SRAM Unit(CE中的SRAM)之间有Load/Store单元和uDMA完成数据的传输,数据流也是比较灵敏的。归纳来看, 在MLP中,每个CE中都有一个PLE和MCE合作,即每个MCE(128个MAC)就对应一个可编程架构。 因而,ARM MLP的可编程性和灵敏性是要远高于Google TPU1和Nvidia的NVDLA的。当然,灵敏性也意味着更多额定的开支,如[1]中指出的,“The programmable layer engine (PLE) on each slice of the core offers “ just enough programmability to perform [neural-net] manipulaTIons ””。High-efficient Programmability是MLP的一个首要卖点之一,而ARM的“just enough”是否真是最合适的挑选,还有待进一步调查。