IMC为什么会回归?

描述

In-memory computing(以下简称IMC)是一种古老而有争议的组织计算机硬件的方式,以最大限度地减少能耗并提高性能,但除了在一些非常特定的应用中,它从未真正进入主流。但边缘计算AI的需求可能为这种架构理念提供了机会。

IMC将计算元素放在内存中而不是中央处理器中的概念在计算机科学的边缘有很长的历史。IMC是那些总是建立在合理推理基础上的想法之一,而且非常有意义,甚至影响了计算机架构的重大进步,但却没有以其纯粹的形式突破主流。但现在,一种古老的录音技术、边缘计算的限制和深度学习网络的内部结构的奇妙结合,可能会把IMC重新拉回聚光灯下。

一个古老的观点

IMC的概念可以追溯到计算机的早期。计算机工程师们很快意识到,虽然冯诺依曼架构(中央处理器从主存储单元读取指令和数据)非常灵活并被普遍采用,但它的效率往往很低。重复地从内存中获取少量数据,做一些简单的计算,然后把结果放回内存的算法,一遍又一遍地,花费大量的时间和精力获取指令和移动数据,但在实际计算上花费的时间和精力却被压缩了。由于从内存中获取一个单词的时间和能量几乎总是比CPU中的算术或逻辑成本大,这种低效很要命,特别是在像边缘计算这样的功耗受限的环境中。

一些架构师采取了显而易见的行动,为什么把它们全部集中在CPU中,而不直接将简单的计算元素构建到内存单元中呢?理论上,这将大大减少所有读写操作的时间延迟和功耗,并且可以绕过CPU不断获取和解码指令的需要。

现实的阻碍

事实证明,不这么做有一些非常好的实际理由。赋予内存计算元素什么样的能力是至关重要的。将这些功能放在哪里,以及如何将它们连接到内存阵列中也是如此。虽然通常有可能设计一个IMC架构,在一组很窄的算法上工作得很好,但你越试图使架构通用,你放弃的效率就越多。如果你只是在CPU上做了一些聪明的事,那么很快就会得到一个效率较低的架构。

CPU架构师很聪明。他们用另一种方法来解决所有这些读写的低效问题:缓存。然后是更多缓存,更多的缓存层。通过尝试让大多数读写操作发生在缓存而不是主内存中,可以消除一些低效的问题(取决于缓存和相关算法)。

与此同时,主存储正从一种高度专业化的手工制造产品变成一种商品。用户越来越不愿意做任何迫使他们购买专用存储芯片的事了。因此,IMC成了一种很难销售的产品。但这并没有阻止该领域的研究。今年的ISSCC会议有许多关于这个主题的论文,原因我们稍后将会看到。

IMC的机遇

有一种非常狭窄的算法可以从IMC中获得巨大的收益,这是个巨大的商业领域:3D图形渲染。着色(在3D模型的2D渲染中为像素添加色彩和亮度的过程)对3D模型中的每个点进行一些简单的操作,反复进行。虽然着色算法有很多变体,但它们都非常相似,一个设计良好的架构可以覆盖很多变体,这是一个成功的IMC应用的处方。

我们知道这种思维的结果就是GPU。虽然通常不这样描述,但GPU实际上是一个巨大的内存芯片,它有专门的处理器(着色引擎)明智地分散在内存块中。这种架构不仅主导了3D图形渲染,而且通用GPU和CUDA等并行编程语言的出现也显示了这种架构对更广泛的并行化问题的适应性。

进入AI

其中一类可并行化的问题是AI的一个分支:深度学习网络。当你训练或使用深度学习网络时,里面发生的只是我们一直在讨论的那种大规模、有序的简单计算阵列。在训练过程中,你将输入和正确的答案输入到模型中,并进行大量的简单计算,将答案通过网络的各层向输入传播,同时细化称为激活权重的巨大参数表。一旦训练好网络,你就把输入信息应用到模型中,做一系列矩阵乘法(同样是简单操作的有序集合,在网络的末端弹出一个答案,一个推理)。

通过对内存非常仔细的安排和精心编程,这个过程对GPU来说是小菜一碟。因此,GPU在深度学习中无处不在。但是GPU虽然对优秀的软件非常有效,但在推理计算方面却没有理想的效率。这一事实导致了大量的研究论文和初创公司设计更适合深度学习加速,特别是为推理加速设计的加速器芯片。这种架构有很多,但大多数都有一个共同的想法:使用大量的小型计算元素来并行处理深度学习的大量计算负载,并将这些元素放置在非常靠近或位于内存中的位置。

Syntiant和Untether等初创公司也属于非常接近的一类。这类公司似乎更喜欢“at-memory computing(以下简称为AMC)”这个短语,而不是更传统的术语,可能是因为他们没有把计算元素放在内存阵列中,而是放在芯片的旁边。但还有另外一类。

模拟域

这就是那个奇怪结合的地方(一个模拟推理加速器),我们分三步讨论。首先,深度学习网络有一个奇怪的特性:大多数网络在内部计算中几乎不受微小误差的影响。在几乎所有的有序算术中,无论你用32位、8位,甚至有时是4位来表示数字,对所产生的推理的准确性都没有什么区别。在这些计算中,传统GPU中的大部分内存和数据路径位都被浪费了。

其次,工程师们很久以前就发现,闪存单元不仅可以存储数字位,还可以存储模拟数据:例如,足以产生可接受的语音记录。这一发现为多级闪存的工作奠定了基础。因此,在原则上,模拟闪存可以存储深度学习网络的低精度激活权重,而不放弃推理的准确性。

第三,由于闪存阵列的组织方式,你可以让闪存阵列在一个周期内计算乘积的模拟和乘积,这是矩阵算术和推理计算的基本操作,只需要很少的能量。这对于将激活权重(只在训练期间改变)作为模拟值存储在闪存单元中,然后一次性读出整个输入乘以权重并相加的集合来说,是非常好的。整个过程功耗非常小。

把这三个部分放在一起,你就有了一个非常快、非常高效的模拟推理加速器背后的想法。这种设计消除了数字设计的大部分内存和大多数处理元素,而是在闪存阵列中进行模拟乘积。Axelera、Mythic和TetraMem等初创公司正在使用这种方法开发芯片或IP,并瞄准了对功耗要求严苛的边缘计算领域。

但是在模拟电路中存在着固有的挑战,以至于许多年来大多数模拟电路设计已经被数字方法所取代。模拟信号会被噪声破坏。模拟内存会随着时间的推移而损耗。模拟电路往往是专用的,而且很难从一种工艺扩展到下一种。这些问题会再次导致模拟应用被其数字竞争对手超越吗?

这一次可能会有所不同。在边缘计算中,以极低的功耗进行大规模、快速推理的能力是非常大的优势。随着芯片从14nm扩展到10nm、5nm及以上,不断上升的成本、巨大的设计挑战和日益增长的供应链担忧,使得仅仅遵循摩尔定律的数字工艺让模拟方法被淘汰的说法没那么肯定了。

ARM和IBM的研究人员最近联合发表的一篇论文表明,一些非常重要的玩家正在认真对待这项技术的长期发展。该论文介绍了一种14nm模拟IMC芯片,该芯片直接解决了该技术的噪声和内存漂移问题。

似乎可以肯定的是,更多的IMC和AMC的例子将出现在边缘计算应用中,无论具体的实现是模拟还是数字。除了在这些环境中GPU已经霸占的领域之外,这种方法是否会过渡到云数据中心或超级计算机,仍然是一个开放和非常有趣的问题。

审核编辑 :李倩

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分