
数十年来,计算技术的发展一直受制于一个根本性的设计缺陷:处理单元与存储单元的物理分离。这种“冯·诺依曼瓶颈”迫使数据在两者之间进行持续且耗能的穿梭,随着现代人工智能对海量数据的需求,这个问题变得尤为尖锐。本文探讨了一种革命性的解决方案:交叉阵列架构,这是一种内存计算形式,它直接在数据存储的地方执行计算。通过深入研究这项技术的核心原理,您将对其潜力和挑战获得全面的理解。本文的旅程始于第一章“原理与机制”,在这一章中,我们将揭示如何利用简单的物理定律进行计算,探索针对器件缺陷(如潜行路径)的工程解决方案,并检视像 PCM 这样的先进存储材料的特性。随后,“应用与跨学科联系”一章将退后一步,揭示更宏大的图景,展示这些阵列如何攻克内存墙,构成高性能人工智能加速器的骨干,并在联邦学习和三维集成系统等领域开创新的前沿。
几十年来,我们的计算机设计一直被一个幽灵所困扰。这个幽灵并非由鬼魂构成,而是由导线构成,而它所消耗的“精神”是计算的速度和效率。在经典的冯·诺依曼架构中,作为计算机“大脑”的处理器与存储数据的存储器是物理分离的。想象一位大厨,在制作一道菜的每一个步骤中,都必须穿过一个巨大的大厅,去食品储藏室拿取每一种食材。来回走动所花费的时间和精力很快就超过了实际烹饪所花费的时间。在现代微芯片中,这种“行走”就是处理器和存储器之间的数据传输,其消耗的能量可能远超计算本身的能量。这就是臭名昭著的冯·诺依曼瓶颈。
但如果我们能教会储藏室自己做饭呢?如果食材可以在货架上自行组合呢?这就是内存计算背后的革命性思想。我们不再将数据移动到处理器,而是在存储结构内部直接执行计算。对于那些完全关乎数据的任务,例如驱动人工智能的大规模线性代数运算,这是一项颠覆性的变革。它有望通过消除那段代价高昂的旅程来消灭机器中的幽灵。其目标是将最基本的计算步骤,例如作为神经网络命脉的乘累加运算,从遥远的中央处理器中迁移出来,直接嵌入到存储阵列中。于是,问题变成了一个关乎物理学和工程学的美妙问题:我们如何说服一个存储器件去做算术?
答案不在于复杂的数字逻辑,而在于电学中两条最优雅、最基本的定律:欧姆定律和基尔霍夫电流定律。让我们从第一性原理出发,构建我们的计算存储器——一个交叉阵列。想象一个简单的网格,就像城市地图一样,有水平的“行”线和垂直的“列”线。在行线与列线交叉的每一个交点,我们放置一个微小的阻性元件,这是一个我们可以设定其电阻值并用它来代表一条存储信息的元件。
这个简单的网格是一个伪装起来的强大模拟计算机。整个结构协同作用,以一种优美的方式,一步完成了数学中最重要的运算之一——向量-矩阵乘法。其神奇之处如下:
输入即电压: 我们将输入向量表示为一组电压。我们将每个电压,比如 ,施加到其对应的行线 上。
存储即电导: 存储器中的信息存储在电阻器中。具体来说,它以电导 的形式存储,电导就是电阻的倒数()。位于第 行和第 列交点处的电阻器的电导就是我们的矩阵元素 。电导衡量的是电流流过的难易程度。
欧姆定律实现乘法: 在每一个交点处,欧姆定律都在发挥作用。该定律指出,电流()等于电导()乘以电压(),即 。因此,从第 行流入第 列的电流 就是 。乘法通过纯粹的物理过程,在所有地方同时发生。
基尔霍夫定律实现求和: 现在,我们来看一根列线,比如第 列。基尔霍夫电流定律告诉我们,流入任何一点的总电流必须等于流出的总电流。来自每一行的小电流()向下流动并在列线上汇合。它们自然地加在一起!因此,我们在第 列底部可以测量的总电流 是:
这非同寻常!从每列流出的最终电流是所有输入电压的加权和,其中权重是存储在存储器中的电导。整个矩阵-向量积 在一次操作中完成,速度之快,如同电流流动和稳定一样。没有指令序列,没有取数和传输。这个阵列就是计算器,其物理过程体现了数学运算。
当然,这幅优雅的图景依赖于一些巧妙的工程设计。为确保乘法运算的纯净,列线上的电压必须保持在一个恒定的参考电平,通常是零伏特。这是通过将每列连接到一个跨阻放大器(TIA)来实现的,它能创造一个虚拟地,并且还有一个额外的好处,就是将输出电流转换成更容易测量的电压。
我们的计算机及其处理的数据绝大多数是数字的。这个模拟交叉阵列,尽管其物理原理优美,但要变得有用,就必须能与“1”和“0”的世界对话。这需要模拟世界和数字世界之间进行一场精心编排的协作,由一套外围电路来指挥。
完整的性能展现过程如下:
一个数模转换器(DAC)接收来自计算机的数字输入向量,并将其转换为一组用于行线的精确模拟电压。
行驱动器,本质上是强大的缓冲器,接收这些微弱的模拟信号,并将它们施加到行线上,其强度足以驱动整个阵列而不会衰减。
交叉阵列随后施展其物理魔法,在模拟域中计算向量-矩阵乘积。
在列输出端,跨阻放大器(TIA)收集产生的电流,将其转换为输出电压,并维持关键的虚拟地。
最后,一个模数转换器(ADC)测量这些模拟输出电压,并将它们转换回数字向量,以便计算机系统的其余部分能够理解和使用。
这个混合系统构成了一个完整的内存计算加速器,一个强大的硬件模块,能够以惊人的效率执行人工智能工作负载的核心运算。
我们所描绘的理想化图景是美好的,但现实总要复杂一些。在一个仅由导线和电阻构成的简单交叉阵列中,会出现一个严重的问题:潜行路径。当我们试图使用某个特定单元进行读取或计算时,电流并不仅仅流经预期的路径。它会像水通过一个管道网格泄漏一样,“潜行”通过一个由其他单元组成的庞大网络,而不是只流经我们打开的那根管道。这些潜行电流在列输出端汇集,破坏了结果,甚至可能导致无法读取正确的值。
工程师们已经开发出巧妙的偏置方案,如“半选”方案,其中未选择的行和列被保持在读取电压的一半,以减小这些不必要路径上的电压降,从而减少流过它们的电流。但这只是一个部分的解决方案。
一个更为稳健的解决方案是在每个交叉点处,与阻性存储元件串联放置一个微小的“看门人”。这引出了两种关键架构:
1T1R(单晶体管-单电阻): 在这里,看门人是一个晶体管。通过用行线控制晶体管的栅极,我们可以为所有未选择的单元将其完全关闭。一个关闭的晶体管就像一个关闭的阀门,提供极高的电阻,从而有效地隔离了单元,以近乎完美的效率切断了任何潜在的潜行路径。
1S1R(单选择器-单电阻): 另一种方法是使用选择器,这是一种特殊的两端器件,表现出高度非线性的行为。选择器就像一个压力激活阀:在它两端的电压超过某个阈值 之前,它几乎不允许任何电流通过。半选偏置方案的设计使得全电压 施加在被选中的单元上(其中 ),而所有未被选中的单元只承受一半的电压 。通过设计选择器使得 ,我们确保了潜行路径上的所有“阀门”都保持紧闭。
当然,这些选择器并不完美。它们抑制潜行电流的能力由一些指标来量化,例如选择性 ,即全电压下的电流与半电压下电流的比值。另一个关键指标是微分非线性度 ,它告诉我们电流对微小电压波动的敏感程度。在一个真实的阵列中,导线本身存在微小的电阻,远处单元的电压并不完全是理想值。高 意味着即使是微小的电压降也可能导致电流的巨大变化,在设计大型、可靠的阵列时必须仔细建模这种效应。
到目前为止,我们一直将存储元件视为抽象的电阻器。但它们实际上是由什么制成的?它们如何“记住”一个电阻值?许多有前景的技术都属于忆阻器或记忆电阻器的范畴。其中研究最广泛的一种是相变存储器(PCM)。
一个 PCM 单元将信息存储在一小块特殊材料——硫族化合物玻璃中,这种材料可以存在于两种状态:一种是无序的、玻璃状的非晶态,具有高电阻;另一种是有序的晶态,具有低电阻。通过施加精确控制的电脉冲,我们可以加热这种材料。一个短而高功率的脉冲可以熔化材料,如果它迅速冷却(“淬火”),就会凝固成高电阻的非晶态。一个更长、功率更低的脉冲可以将其加热到结晶温度以上,使其退火成低电阻的晶态。
PCM 对于神经形态计算的真正魅力在于它可以存储连续范围的模拟值。通过部分结晶材料——形成非晶区和晶区的混合体——我们可以将单元编程为具有介于两个极端之间的任何电阻值。这使我们能够将神经网络的模拟突触权重直接存储在器件的物理状态中。
然而,这种物理实现也带来了其自身的一系列挑战,即材料本身的“特性”:
非线性与非对称性: 结晶(增强)和非晶化(抑制)过程受复杂的物理学支配。结晶速率取决于已经结晶的材料量,而晶体体积与器件电导之间的关系由于渗流效应(连续导电路径的形成)而高度非线性。结果是,施加相同的脉冲并不会产生相同的电导变化,这使得精确的权重更新成为一个重大挑战。
电导漂移: 非晶态虽然稳定,但并非永恒。它是一种玻璃,和所有玻璃一样,它会随着时间的推移缓慢地向更稳定、能量更低的构型弛豫。这种物理弛豫导致材料的电阻随时间增加。这种现象被称为电导漂移,遵循幂律衰减: 其中 是一个小的漂移指数。一个被编程到特定值的突触权重不会保持不变;它会漂移,可能导致神经网络的准确性随时间下降。仅仅几小时后,电导可能会下降超过50%,如果不加以考虑,这将是灾难性的错误。
耐久性: 每当我们为了编程而熔化和重凝材料时,都会引起热机械应力。就像一根被反复弯折的回形针一样,材料会累积损伤。经过一定数量的循环后,器件将会失效。这个极限被称为耐久性。对于 PCM,这种疲劳可以用 Coffin-Manson 定律来描述,而对于像 RRAM 这样依赖于导电细丝形成和断裂的其他忆阻器,其寿命通常由热激活的 Arrhenius 关系决定。整个系统的耐久性取决于这一系列物理过程中最薄弱的环节。
面对这一系列非理想行为——潜行路径、漂移、有限的耐久性、编程非线性——构建一个可靠的计算系统似乎毫无希望。但正是在这里,最后一层巧思发挥了作用:架构冗余。我们不是要求每个微小组件都完美无瑕,而是构建一个能够抵御故障的系统。
正如一座大教堂能够屹立数百年,即使其个别石块可能会开裂和风化一样,一个晶圆级的神经形态系统可以通过包含备用资源和巧妙的使用方法来实现高可靠性。故障可能发生在每个尺度上,而对于每种故障,都有相应的策略:
如果阵列中的单个行或列线断裂,我们可以使用预制的备用行或列来替换它,在外围逻辑中重新映射地址。
如果制造缺陷在阵列的某个区域造成了一簇坏死的单元,使用单独的备用行和列将是浪费的。相反,我们可以采用块级备用,停用整个故障块并激活一个备用块。
如果大晶圆上两个阵列之间的通信链路发生故障,或者三维堆叠芯片中的垂直连接断裂,我们可以使用动态重路由。片上网络设计有多条可能的路径,因此如果一条链路中断,数据可以简单地绕过故障点进行路由。
交叉阵列的历程是整个工程故事的一个缩影。它始于一个灵感的瞬间,一个美妙的认识,即物理定律本身可以被用来计算。然后,它直面现实世界中混乱、不完美的一面,及其泄漏、漂移和脆弱。最终,它在系统层面取得了胜利,通过深刻理解这些不完美,拥抱它们,并构建出坚固而强大的东西,不是无视它们,而是通过它们。这证明了我们有能力用不完美但非常真实的砖块,建造出宏伟的大教堂。
在窥探了交叉阵列那优美的内部机制——其中欧姆定律和基尔霍夫定律协同作用以执行数学运算——之后,我们现在退后一步,提出一个更宏大的问题:这一切究竟是为了什么?我们所揭示的原理不仅仅是物理学上的奇闻异事;它们是一种新计算范式的基础。从理解单个交叉点器件到领会其在世界中的角色,这是一段激动人心的旅程,从计算机芯片的核心延伸到人工智能的前沿乃至更远。我们将看到这个简单的结构如何为现代计算最严峻的挑战之一提供深刻的解决方案,它如何成为类脑机器的构建模块,甚至如何重塑我们构建未来技术的策略。
几十年来,计算机一直建立在 John von Neumann 阐述的一条原则之上:一个执行计算的中央处理器(CPU)和一个存储数据与指令的独立存储单元。为了进行计算,数据必须在这两个领域之间来回穿梭。这种跨越所谓“内存总线”的持续通信造成了瓶颈。无论你的处理器变得多快,它常常最终都在等待数据到达。这个“冯·诺依曼瓶颈”不仅仅是速度问题,它还是一个能量问题。移动数据比在其上进行计算要消耗多得多的能量。
这正是交叉阵列或“内存计算”(IMC)的天才之处。它不只是试图拓宽处理器和存储器之间的道路;它为某些关键操作完全消除了这条道路。通过直接在数据存储的地方执行计算,它从根本上解决了数据移动的能源危机。
想象一下,比较传统数字系统与模拟交叉阵列中一次乘法运算的能量成本。在数字世界里,你必须首先支付一笔能量“过路费”,从存储器(如 SRAM)中取出一个值(一个权重),然后再支付另一笔“过路费”来执行乘累加操作。数百万次操作的总成本是所有这些单独费用的总和。在交叉阵列中,“计算”是电流流过电阻器的自然物理过程。输入端的主要能量成本仅仅是为导线充电至所需输入电压所需的能量,物理学告诉我们这与 成正比,其中 是导线的电容, 是输入电压。通过将权重作为电导“保持在原位”,我们回避了 的巨大重复成本。我们是让物理学为我们工作,而事实证明它非常高效。
这种优势可以通过高性能计算中一个强大的工具——Roofline 模型来可视化。想象一个工厂。它的产出受限于两件事之一:要么是其机器的工作速度(“计算屋顶”),要么是传送带为它们运送零件的速度(“内存屋顶”)。“完成的工作量”与“运来的零件量”之比称为运算强度。如果一个任务的运算强度低(即需要很多零件来做少量工作),那么传送带就是瓶颈。现代人工智能工作负载通常就是这样——它们是“受内存限制的”。交叉阵列架构提供了一个绝妙的解决方案。通过将“零件”(网络权重)存储在机器旁边,它极大地减少了主传送带(片外内存总线)上的交通流量。这并没有改变工厂的峰值速度,但它极大地提高了任务的有效运算强度。工厂不再等待零件,可以更接近其真实潜力工作。这就是内存计算力量的精髓:它使我们的计算引擎不再那么“饥渴于数据”。
知道交叉阵列为何强大是一回事;构建一个有用的机器是另一回事。这条道路上铺满了引人入胜的工程权衡。单个交叉阵列是两个过程的芭蕾舞:累加阶段,其中输入电压被施加,电流沿列线累加;以及读出阶段,其中这些模拟电流被测量并由模数转换器(ADC)转换为数字。这两个阶段形成了一场自然的竞赛。系统的瓶颈是扫描所有输入所需的时间,还是 ADC 读取所有输出所需的时间?答案取决于阵列的大小()和具体的硬件速度。理解这种权衡是设计一个均衡高效系统的第一步。
为了实现现代人工智能所需的惊人性能,我们不能仅依赖一个阵列。我们构建巨大的、瓦片式架构,其中许多交叉阵列在全局时钟的同步下并行工作。总计算能力,通常以每秒万亿次运算(TOPS)衡量,就是单个瓦片中的操作数乘以瓦片数量和时钟速度。使用合理的参数,即使是规模不大的瓦片集合也可以达到数十 TOPS,与更大、更耗电的数字加速器的性能相媲美。
但在这种规模下,能效究竟从何而来?它来自于分摊的魔力。系统中的某些部分,如高精度 ADC,确实耗能。然而,一个 ADC 服务于一整列,比如 个计算单元。那一次 ADC 转换的能量成本被有效地分摊到所有 256 个贡献其结果的并行乘法中。虽然每个输入的 DAC 和每个交叉点传导的能量是按次操作支付的,但巨大的固定开销被阵列的巨大并行性所分摊。每个有效操作的最终能量成为小的直接成本加上共享开销的一小部分的和。这个优美的缩放定律解释了为什么在一定程度上,更大的交叉阵列更高效。
当然,为了比较不同的设计,我们需要一个共同的衡量标准。峰值 TOPS 是一个起点,但它就像引用一辆汽车的最高速度——它并不能说明全部情况。对于像脉冲神经网络(SNNs)这样自然稀疏和事件驱动的类脑工作负载,有效吞吐量是一个更诚实的指标,它考虑了并非所有神经元都同时活跃的事实。真正的品质因数是效率的衡量标准:能效,以每瓦特TOPS(TOPS/W)衡量;以及面积效率,以每平方毫米TOPS(TOPS/mm²)衡量。这些告诉我们,我们用能源和硅片预算换来了多少计算能力。最终,如果机器出错,所有这些性能都毫无意义。最终的裁判总是任务级的准确率——系统,连同其所有物理上的不完美,实际执行其设计任务的表现如何。
最能从这场计算革命中受益的领域是人工智能。当今深度神经网络中的核心操作是矩阵-向量乘法,这正是交叉阵列所擅长的。将一个大型神经网络映射到一个瓦片式交叉阵列架构上是一个复杂的软硬件协同设计难题。
考虑一下卷积神经网络(CNN),这是现代计算机视觉的主力。一个关键的挑战是其“权重共享”原则,即同一个小滤波器被应用于整个图像。一个幼稚的硬件实现可能会为每个可能的位置复制滤波器的权重,这是巨大的资源浪费。一个更优雅的解决方案,通过im2col变换实现,将这个卷积映射到一个大的矩阵乘法上。然后可以为硬件设计一个特定的数据流,即移动数据的策略。例如,“权重固定”数据流,将网络的权重一次性加载到交叉阵列中并保持不变,然后将图像数据流过。这最大限度地减少了重新编程模拟电导值的昂贵过程。相比之下,“输出固定”数据流将输出图像块的累积结果保留在片上,从而最大限度地减少部分和的移动。选择正确的数据流对于效率至关重要,并取决于网络的结构和硬件的具体优势。
与类脑计算的联系更为直接。在脉冲神经网络中,信息被编码在离散事件或“脉冲”的时间中。在这里,卷积中的权重共享概念找到了一个优美的物理实现。系统不是复制硬件,而是在时间上反复使用存储滤波器权重的单个交叉阵列。当系统处理图像的不同部分时,它只是将相应的输入脉冲引导到这一个共享的硬件块。这种时分复用方法,通常由高效的“地址-事件表示”(AER)系统管理,是权重重用算法概念的直接硬件模拟。它证明了算法与为执行它而构建的物理机器之间可以存在美妙的对应关系。
交叉阵列架构的影响远远超出了芯片本身,延伸到机器学习系统的设计以及我们构建电子产品的未来方式。
一个激动人心的前沿是联邦学习,这是一种保护隐私的机器学习技术,其中许多客户端(如手机)协同训练一个模型,而无需共享其原始数据。相反,它们共享模型更新,这些更新由中央服务器进行平均。当客户端在不同类型的神经形态硬件上运行时会发生什么?在比较数字系统(如英特尔的 Loihi)和模拟交叉阵列时,一项引人入胜的研究应运而生。数字系统的误差主要是来自量化和脉冲的随机噪声,当在许多客户端上平均时,这些噪声往往会相互抵消。然而,模拟系统可能会遭受系统性误差,例如器件电导的微小持续漂移,这会引入偏差。这种偏差,无论多么小,都不会在平均中消失。随着客户端数量()的增加,两个系统基于方差的误差都趋向于零,但模拟系统的最终误差仍然停留在其偏差水平。这揭示了一个深刻的道理:在大型分布式系统中,一个微小而顽固的偏差可能比巨大但随机的噪声更具破坏性。边缘硬件的选择对全局算法的收敛具有深远的影响。
物理上的未来又会是怎样的呢?随着在单个二维平面上塞进更多晶体管变得越来越困难,工程师们正在向上看——向第三维度。下一代神经形态系统很可能涉及多层硅片相互堆叠,通过称为硅通孔(TSV)的微观垂直导线连接。这种 3D 集成改变了游戏规则。通过 TSV 向相邻层发送信号的延迟仅为皮秒级,比去片外访问外部存储器快几个数量级。这些并行的垂直连接数量之多,可以创造出以每秒数百GB甚至TB计的内部带宽。但这个新的维度也带来了它自己的魔鬼:热量。堆叠多个有源硅层会产生一个热学噩梦。顶层产生的热量必须穿过整个堆栈向下传播才能到达散热器,从而产生显著的温度梯度。因此,设计这些 3D 系统是在多物理场协同设计方面的一个巨大挑战,需要在令人难以置信的电气优势与令人生畏的热学后果之间取得平衡。
从一个电阻器的基本物理原理到三维堆叠超级计算机的热管理,交叉阵列提供了一个引人入胜的科学发现和工程创新的叙事。它有力地提醒我们,有时,最深刻的解决方案源于最简单的原理,并以物理世界的语言优美地表达出来。