一窥 ARM 的 AI 处理器

最近,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。

一窥 ARM 的 AI 处理器

顶层架构

与最初公布的基本框图相比,我们这次看到了更细化的模块框图和连接关系,如下图所示。

一窥 ARM 的 AI 处理器

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)。

一窥 ARM 的 AI 处理器

在顶层标出的 Broadcast 接口,实现在多个 Compute Engine(后面简称为 CE)之间广播 feature map 数据的功能。因此,基本的卷积运算模式是,相同的 feature map 广播到多个 CE,不同的 CE 使用不同的 weight 来和这些 feature map 进行运算。

从目前的配置来看,MLP 包括 16 个 compute engine,每个有 128 个 MAC,即一共有 16x128=2048 个 MAC,每个 cycle 可以执行 4096 个操作。如果要实现 ARM 所说的 4.6TOPS 的总的处理能力,则需要时钟周期达到 1.12GHz 左右。由于这个指标是针对 7nm 工艺,实现问题不大。

MCE 实现高效卷积

在 MLP 的架构中,MCE 和 PLE 是最重要的功能模块。MCE 提供主要的运算能力(处理 90% 的运算),应该也是 MLP 中面积和功耗最大的部分。因此,MCE 设计优化的一个主要目标就是实现高效的卷积操作。具体来讲,MLP 的设计主要考虑了以下一些方法,这些方法大部分我们之前也都讨论过。

一窥 ARM 的 AI 处理器

一个比较有趣的点是上面提到的 “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 算法和架构目前还在不断演进。

一窥 ARM 的 AI 处理器

我们前面已经分析了整个 MLP 的基本工作流程,MCE 在完成了运算之后把结果传输给 PLE。从这里可以看出,MCE 应该是把结果发送到 Vector Register File(VRF),然后产生中断通知 CPU。之后,CPU 启动 Vector Engine 对数据进行处理。具体如下图所示。

一窥 ARM 的 AI 处理器

对于做专用处理器的同学来说,这种 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” 是否真是最合适的选择,还有待进一步观察。

其它信息

在这次发布中信息中,ARM 还强调了他们在数据压缩方面的考虑,包括对 lossless compression 的硬件支持。这部分内容我在之前的文章中也有比较多的讨论,就不再赘述了,贴几张比较有意思的图,大家看看。

一窥 ARM 的 AI 处理器

作为一个 IP 核,可配置性(configurability)是一个重要的特征。目前还不知道 MLP 有哪些硬件参数可以支持灵活配置。Compute Engine 的数量,MAC 数量,SRAM 大小,这些比较大的参数应该有可能是支持配置的。其它更细致的内容还要看最终发布的情况。

另外,这些参数的配置和相关的软件工具有非常密切的关系,更多的可配置参数也意味着软件工具需要相应的支持,难度更大。[2] 对此的说法:“In terms of scalability the MLP is meant to come with configurable compute engine setups from 1 CE up to 16 CEs and a scalable SRAM buffer up to 1MB. The current active designs however are the 16CE and 1MB configurations and smaller scaled down variants will happen later on in the product lifecycle.”

竞争态势

除了比较中规中矩的性能指标外,ARM 还没有公布 MLP 具体的面积,功耗等参数,以及具体发布的日期(目前的说法是 “production release of the RTL is on track for mid-year”)。

在这个已经比较 “拥挤” 的市场,ARM 显然是动作比较慢的。[1] 一开始就提到了,“Analysts generally praised the architecture as a flexible but late response to a market that is already crowded with dozens of rivals.” 并列举了一些竞争对手的例子。

其实,从 ARM 在处理器 IP 市场和整个生态链的关键地位来看,晚一点关系也不大。如 [1] 所说,一方面,ARM 正在和一些智能手机厂商进行深度的合作,“ In a sign of Arm’s hunger to unseat its rivals in AI, the company has “gone further than we normally would, letting [potential smartphone customers] look under the hood””。

ARM 的另一个重要优势是,ARM 在推出 MLP 之前在软件工具上还是有一些准备的,包括 armnn 和开源的计算库等等,如下图。

一窥 ARM 的 AI 处理器

这些工具的广泛使用都可以帮助 ARM 积累经验,优化硬件和软件工具。正如 [1] 中引用来自 ARM 的说法,“Winning the hearts and minds of software developers is increasingly key in getting design wins for hardware sockets...This is kind of the start of software 2.0. For a processor company, that is cool. But it will be a slow shift, there’s a lot of things to be worked out, and the software and hardware will move in steps.”

我们也看到,目前大量的嵌入 AI 应用还是运行在 ARM 的各种硬件上的,很多公司在相关算法和实现的优化上投入了很大的力量,也取得了很好的效果。当然这样带来另一个有趣的问题,那就是未来引入 MLP 之后,ML 任务到底放到哪里跑?不同特点的处理器怎么配合?文章中正好也提到这个问题,“Arm will release more data on the core’s performance when it is launched, probably in mid-June. But don’t expect detailed guidance on when to run what AI jobs on its CPU, GPU, or new machine-learning cores, a complex issue that the company, so far, is leaving to its SoC and OEM customers.” 看来这个 “难题” 短期之内还是丢给用户了。

另外一个值得关注细节是,[1] 中提到,“Theoretically, the design scales from 20 GOPS to 150 TOPS, but the demand for inference in the Internet of Things will pull it first to the low end. Arm is still debating whether it wants to design a core for the very different workloads of the data center that includes training. “We are looking at [a data center core], but it’s a jump from here,” and its still early days for thoughts on a design specific for self-driving cars, said Laudick.” 从这里可以看出,至少 MLP 在处理能力上还是具有比较强的伸缩性的,应该可以覆盖从 Edge 到 Cloud 的大部分的 inference 应用。如果是最高的 150TOPS,MAC 的规模应该和 Google 第一代 Inference 专用的 TPU 类似,不过相比 Google 的脉动阵列架构,MLP 有更复杂的控制通道,灵活性还是要高不少。不知道未来,这会不会帮助 ARM 打开 data center 的 inference 市场。


原文发布时间为:2018-05-30

本文作者:唐杉

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”。

原文链接:一窥 ARM 的 AI 处理器

上一篇:Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫


下一篇:数据库优化之创建视图