中文 英语

冯·诺依曼正在挣扎

75年来的计算体系结构支柱正在被更高效、不那么通用的计算体系结构所取代。

受欢迎程度

在一个由机器学习主导的时代,冯·诺依曼架构正在努力保持相关性。

世界已经从以控制为中心转变为以数据为中心,这推动了处理器架构的发展。风险投资正涌入领域特定架构(DSA),但传统处理器也在不断发展。对于许多市场来说,它们继续提供有效的解决方案。

冯·诺依曼结构通用计算的第一次描述是在1945年,并经受住了时间的考验,直到世纪之交。约翰·冯·诺伊曼写的论文描述了一种架构,数据和程序都存储在计算机内存的同一个地址空间中——尽管它实际上是j·普雷斯珀·埃克特和约翰·莫奇利的发明。

该架构的成功有几个原因。首先,它是图灵完备的,这意味着只要有足够的内存和时间,它就可以完成任何数学任务。今天我们不怎么思考这个问题。但在计算的早期,一台机器可以执行任何编程任务的概念是一个突破。通过这个测试依赖于它对内存的随机访问。

其次,它是可扩展的。摩尔定律提供后面的燃料。内存可以扩大,数据的宽度可以扩大,计算的速度可以提高。几乎不需要修改与之相关的架构或编程模型。

对冯·诺依曼体系结构做了一些小改动,比如将数据和程序总线分开的哈佛体系结构。这提高了内存带宽,并允许并行执行这些操作。这最初被采用在数字信号处理器,但后来被用于大多数计算机架构。在这一点上,一些人认为所有的功能都将迁移到软件上,这意味着自定义硬件设计的终结。

一个时代的终结
可扩展性在2000年左右放缓。然后,Dennard扩展2007年,电力消耗成为了一个限制因素。虽然当时业界并没有意识到这一点,但这是迄今为止业内最大的拐点。这是指令级并行的终结。起初,解决方案似乎是增加额外的处理器。这种策略成功地推迟了不可避免的事情,但这只是暂时的解决办法。

“其中一个问题是cpu真的不擅长任何事情,”Michael Frank说,研究员和系统架构师Arteris IP.“cpu擅长处理包含大量决策的单个线程。这就是为什么你有分支预测器,它们是多年来的研究主题。”

但在这个快速变化的时代,任何不考虑意外的设计都可能受到严重限制。“冯·诺伊曼架构往往非常灵活和可编程,这是一个关键优势,特别是在快速变化的机器学习世界中,”冯·诺伊曼的杰出工程师和高级总监马修·马蒂纳说手臂的机器学习研究实验室。“然而,这种灵活性是以功率和峰值性能为代价的。挑战在于设计一种可编程CPU或加速器,使你在获得更高性能和更低功耗的同时保持“足够”的可编程性。大矢量长度就是一个例子。你可以摊销CPU管道标准获取/解码部分的功耗成本,同时在单个操作中完成更多工作。”

图1:冯·诺依曼架构,在20世纪40年代首次被描述,一直是计算的支柱,直到21世纪。数据和程序都存储在计算机内存的同一个地址空间中。来源:半导体工程

加速器提供了一种折衷方案。Arteris的Frank说道:“加速器服务于两个领域。“一种是有很多数据在移动,而CPU不擅长处理这些数据。在这里,我们看到矢量扩展越来越广。还有很多操作是非常具体的。如果你看看神经网络,你有非线性阈值,你有巨大的矩阵乘法,用CPU来做这个是低效的。因此,人们试图将工作量转移到更接近记忆的地方,或者转移到专门的功能单元。”

让事情变得更加复杂的是,数据的性质已经发生了变化。更多的是暂时的。数据的时间方面最早出现在音频和视频中。但即使在几十年前,一台计算机也能跟上音频相对较慢的数据速率。视频对处理和内存都提出了更大的挑战。

内存瓶颈
内存访问在时间和精力方面是昂贵的。缓存通过利用数据局部性来解决这个问题。“大多数硅设计使用各种技术来降低功耗,”Anoop Saha说,市场开发经理西门子EDA.改善内存访问是降低整体系统级功耗的最大性价比架构创新之一。这是因为片外DRAM访问消耗的功率几乎是32位浮点乘法操作的1000倍。”

从那时起,越来越复杂的缓存方案被开发出来,试图使内存更接近处理器。但是与存储在寄存器中的相同变量相比,访问缓存仍然要消耗200倍的能量。

简单地说,记忆已经成为限制因素。西门子EDA副总裁兼总经理Ravi Subramanian表示:“对于某些应用来说,内存带宽限制了增长。“专业处理器增长的关键原因之一,以及内存中(或near-memory)计算机体系结构,是直接解决传统冯·诺依曼体系结构的局限性。尤其是在处理器和内存之间移动数据所消耗的能量,与实际计算所消耗的能量相比,更是如此。”

AI/ML的快速出现正在迫使内存架构发生变化。处理器可能是定制的,但你需要静态存储器公司物联网战略营销经理罗恩•洛曼说Synopsys对此.“对于人工智能应用程序,你想要执行和存储尽可能多的权重和系数,尽可能接近mac。这就是消耗能量的地方。多端口存储器在人工智能领域非常流行。这意味着在进行数学运算时可以并行读取和写入。这样可以将电力减半。”

Untether AI的产品副总裁Bob Beachler给出了一些确切的数字。“系数通常是静态的——那么为什么要移动这么多呢?相反,使用内存计算,其中系数可以存储在处理元素旁边的内存数组*中,极大地减少了传输距离。而且,内存阵列可以被调整为驱动更短的距离,这是大/深芯片缓存无法做到的。这将整体功耗降低了约6倍,其中50%的功耗在计算上,50%在数据移动上。”

这种内存架构上的改变会带来很大的代价。“挑战在于,在过去,人们有一个很好的抽象模型来思考计算系统,”Steven Woo说Rambus.“他们从来没有真正考虑过记忆。它是免费的,编程模型只是让它这样,当你引用内存时,它就会发生。你从来不需要明确你在做什么。当新类型的记忆进入方程式时,你必须摆脱过去那种非常抽象的观点,让它们真正有用。”

然而,这种情况需要改变。“程序员必须更加了解内存的层次结构是什么样的,”Woo说。“现在还处于早期阶段,业界还没有确定一种特定的模型,但人们普遍认为,为了让它有用,你必须增加对它的理解。一些编程模型,如持久内存(PMEM),要求用户了解数据的位置,并考虑如何移动数据,并确保数据位于需要的位置。”

的核心人工智能应用是乘法累加函数(MAC),或点积运算。这需要两个数字,将它们相乘并将结果添加到累加器中。这些数字从内存中提取并存储到内存中。这些操作被重复多次,占据了学习和推理所消耗的绝大多数时间和精力。

人工智能对内存的需求不同于gpu或cpu。“重要的是优化算法以提高数据的局部性,从而最大限度地减少数据移动,”西门子的Saha说。“这些选择取决于芯片设计运行的特定工作负载。例如,图像处理加速器使用行缓冲区(一次只处理图像的一小部分样本),而神经网络加速器使用双缓冲存储器(因为它们需要对图像进行多次操作)。”

例如,使用逐层处理的AI加速器,可以提前预测需要哪些内存内容。“当N层被处理时,在N层计算期间,N+1层的权重从后台的DRAM中引入,”Geoff Tate解释道Flex Logix.“因此,即使只有一个DRAM, DRAM传输时间也很少会停止计算。当N层计算完成时,N+1层的权重在几微秒内从缓存内存移动到直接与mac相邻的内存。当下一层计算时,每个MAC使用的权重都是从直接相邻每个MAC集群的SRAM中引入的,因此权重的计算访问功耗非常低,速度非常快。”

特定于领域的体系结构通常伴随着新的语言和编程框架。Rambus的Woo说:“这通常会创建新的内存层,以及缓存数据或移动数据的方法,使其更接近需要的位置。”“它增加了一个行业大多数人不习惯的维度。我们在学校里并没有学过这种东西,这也不是行业中几十年的经验,所以它并没有在程序员中根深蒂固。”

时代在变
但这可能还不够。世界正慢慢地越来越意识到使用任意数量的能源的影响,以及我们对环境造成的最终破坏。整个科技行业可以也必须做得更好。

学者们一直在研究人类大脑,以寻找灵感,他们指出,脉冲网络比针对存储权重库的大型矩阵操作更接近大脑的工作方式,而后者是当今系统的核心。当一些重要的事情发生变化时,脉冲就会触发,而不需要全新的图像或其他传感器数据,每次触发的时间相当于一个时钟。早期的工作表明,这些方法的能效可以提高20到50倍。

混合信号解决方案是一个强有力的候选者。“有些设计更接近于混合信号设计,它们着眼于直接在存储器中进行计算,”ibm的产品管理总监戴夫·珀斯利(Dave Pursley)说节奏.“他们专注于完全消除数据移动。即使你读了很多学术论文,过去很多研究都是关于如何减少计算量,现在我们正处于一个阶段,我们正在研究如何减少数据移动或改善局部性,这样你就不需要如此大量的存储和那些非常昂贵的内存访问。”

新的计算概念很重要。“我们的想法是,这些东西可以在一个时间步内为完全连接的神经网络层执行乘法累加,”IBM Research的首席RSM Geoffrey Burr解释说。“在一系列处理器上需要一百万个时钟的东西,你可以在模拟领域做到这一点,使用数据所在位置的底层物理。这在时间和能量上有足够有趣的方面,它可能会去某个地方。”

与目前使用的数字系统相比,模拟可能还有另一个显著的优势。当今汽车中的物体检测系统通常无法处理意外情况。“神经网络很脆弱,”人工智能和IBM Q副总裁达里奥·吉尔(Dario Gil)在2018年设计自动化会议的小组讨论中说。“如果你看到了对抗网络的出现,以及你如何向系统注入噪声来欺骗它对图像进行分类,或者欺骗它如何检测转录的语言,这就告诉你这些系统固有的脆弱性。你可以从看起来像公共汽车的东西出发,在注入噪音后,它会说它是斑马。你可以毒害神经网络,它们会受到各种各样的攻击。”

数字失败,模拟退化。这是否适用于模拟神经网络,以及它们是否更值得信赖,仍有待观察。

结论
在我们创造的每一个系统中总会有控制的元素。因此,冯·诺依曼架构不会消失。它是最通用的计算机,这使得它不可或缺。与此同时,许多繁重的计算工作正在转移到非冯·诺依曼架构。加速器和自定义核心可以用更少的能量做得更好。更优化的内存架构也提供了显著的增益。

不过,这只是设计上的一个权衡。对于那些不可能为它们可能执行的每个功能都提供专用内核的设备,有一些中间妥协,这些市场仍然很强劲。另一个问题是与冯·诺依曼架构相关的编程模型是如此根深蒂固,以至于需要很长时间才能有足够多的程序员为新架构编写软件。

相关的
构建推理芯片的挑战
随着人工智能领域的不断发展,人们正在开发不同的推理方法。并不是所有的方法都有效。
内存处理工作吗?
绕过冯·诺依曼架构的改变可能是低功耗ML硬件的关键。
PCIe 5.0下钻
新的PCI Express标准,为什么它对数据中心如此重要,它与以前的标准版本相比如何,以及它将如何适应现有的和非冯·诺依曼架构。
解决内存瓶颈
在系统中移动大量数据不再是成功的途径。它的速度太慢,消耗太多的能量。是时候改变这个等式了。



5个评论

GSIT 说:

你应该看看GSI技术公司,他们通过APU(关联处理单元)架构解决了这个问题。这将是相似度搜索的关键产品,尤其是在电子商务等应用中

戴夫·古普塔博士 说:

看来你们记者已经厌倦了抨击摩尔定律,现在又找到了一个新的科学天才来抨击,那就是普林斯顿的伟大数学家约翰尼·冯·诺伊曼,他开着一辆跑车!饶了他吧!!老冯·诺依曼把图灵在普林斯顿大学国际计算机学院(IAS)和1944年设计的模糊架构抛在一边(在宾夕法尼亚大学手工布线ENIAC花了6个月,它的中央处理器由1万个管组成,核心存储器由小磁环组成!)他提出了一个简单的串行架构,一个CPU绑定到一个内存块上,只获取和处理一组指令和数据,然后测试它们的分支,这是设计内爆炸弹(长崎)所需的抛物微分方程的唯一方法。自60年代末以来,人们一直在尝试并行计算(ILLIAC),但在预测数据和指令获取方面的进展并没有那么大。只是因为我们把硬件做得很便宜,通过广告包装甚至去掉了cpu和dram和缓存内存之间所谓的内存墙,所以人们可以做多处理器,尽管并行计算的效率很低。所以停止抨击旧的JvN,除非你已经准备好参加一个关于冯·诺依曼边界条件的突击测验!

Nerkn 说:

我一直很喜欢模拟计算机,直到我上了第一堂模拟课。除了我的成绩,事实上在40多岁的时候,他们可以处理图像,然后作为直播电视传输回来。要达到这种能力,我们只能在数字领域达到2000年。也许ai/ml世界将会有另一盏明灯照耀。
我买了gsi模块,放在我的抽屉里。以前见过大的承诺和大的资金,也见过小的消失。希望在这个领域出现更多的技术。

布莱恩•贝利 说:

我不确定我是否曾经说过并行计算在某种程度上优于单个处理器。我的建议是处理器与内存的关系需要改变。单个大的内存空间在时间和能量上都是低效的,缓存通常是一个糟糕的解决方案——特别是对于像AI这样的任务,当访问模式更可预测时。

Ruomu 说:

我将以内存为中心的计算的泛化想象成类似于一个分布式系统,其中处理单元通过一小组内存单元进行通信并形成一个网络。硬件将限制处理器的数量和连接限制,软件将指定这些处理器如何共享内存单元和进行计算。

留下回复


(注:此名称将公开显示)

Baidu