首页 / 专利库 / 人工智能 / 交叉开关阵列 / 神经网络交叉开关堆叠

神经网络交叉开关堆叠

阅读:801发布:2020-05-08

专利汇可以提供神经网络交叉开关堆叠专利检索,专利查询,专利分析的服务。并且描述了一种用于执行神经网络的神经网络计算的 电路 。该电路包括多个神经网络层,每个神经网络层包括交叉 开关 阵列。多个 交叉开关阵列 以堆叠配置形成在公共 基板 中。每个交叉开关阵列包括一组交叉点设备。每个交叉点设备的相应的电特性是可调节的,以表示为每个相应的交叉点设备存储的权重值。处理单元被配置为通过向每个交叉点设备预加载调谐 信号 来调节每个交叉点设备的相应的电特性。每个交叉点设备的调谐信号的值是每个相应交叉点设备表示的权重值的函数。,下面是神经网络交叉开关堆叠专利的具体信息内容。

1.一种用于对包括多个神经网络层的神经网络执行神经网络计算的电路,该电路包括:
矩阵计算单元,其包括用于所述多个神经网络层的每个层的相应的交叉开关阵列,其中,用于所述多个神经网络层的相应的交叉开关阵列以堆叠配置形成在公共基板中,每个交叉开关阵列包括:
一组交叉点设备,其中每个交叉点设备的相应电特性是可调节的,以表示为每个相应的交叉点设备存储的权重值;
第一组纳米线,第一组纳米线的每个纳米线被配置为接收激活输入;以及第二组纳米线,第二组纳米线的每个纳米线通过所述一组交叉点设备中的相应交叉点设备连接到所述第一组纳米线的每个纳米线,其中所述第二组纳米线的每个纳米线被配置为输出值,所述值是从所述第一组纳米线的每个纳米线接收的信号和相应交叉点设备的相应电特性的函数;以及
处理单元,被配置为通过向每个交叉点设备预加载调谐信号来调整每个交叉点设备的相应电特性,其中每个交叉点设备的调谐信号的值是由每个相应的交叉点设备表示的权重值的函数。
2.根据权利要求1所述的电路,还包括激活单元,所述激活单元通信地耦合到所述矩阵计算单元,并且被配置为对于所述神经网络层中的一个或多个将激活函数应用于由所述矩阵计算单元生成的累加值,以生成所述神经网络层的多个激活值。
3.根据权利要求2所述的电路,还包括:
数模转换器DAC设备,所述DAC设备连接至第一交叉开关阵列的第一组纳米线的纳米线;
模数转换器ADC设备,所述ADC设备连接到第二交叉开关阵列的第二组纳米线;
其中,所述矩阵计算单元通过所述ADC设备耦合到所述激活单元。
4.根据权利要求3所述的电路,其中,所述ADC设备被配置为识别来自所述第二组纳米线的纳米线的编码信号,所述编码信号表示所述矩阵计算单元的累加值的符号。
5.根据权利要求2至4中任一项所述的电路,其中,所述激活单元与所述多个交叉开关阵列形成在所述公共基板中。
6.根据权利要求2至5中的任一项所述的电路,其中,所述激活单元对每个激活值进行归一化以生成多个归一化值。
7.根据权利要求2至6中任一项所述的电路,其中,所述激活单元池化一个或多个激活值以生成多个池化值。
8.根据前述权利要求中的任一项所述的电路,其中,所述交叉点设备包括忆阻器设备,并且其中,被调谐到所述值的电特性是所述忆阻器设备的电导。
9.根据前述权利要求中的任一项所述的电路,其中,所述交叉点设备包括忆容器设备,并且其中,被调谐到所述值的电特性是所述忆容器设备的电容。
10.根据前述权利要求中的任一项所述的电路,其中,所述多个交叉开关阵列中的第一交叉开关阵列以堆叠配置通过金属通孔连接到所述多个交叉开关阵列中的第二交叉开关阵列,其中,所述金属通孔配置为将激活值从所述第一交叉开关阵列发送到所述第二交叉开关阵列。
11.根据权利要求10所述的电路,其中,所述金属通孔具有40-60μm之间的长度。
12.根据前述权利要求中的任一项所述的电路,其中,所述多个交叉开关阵列中的交叉开关阵列包括大约0.5mm2的尺寸。
13.根据前述权利要求中的任一项所述的电路,还包括:
处理单元,被配置为接收指令并从所述指令生成多个控制信号,其中,所述多个控制信号控制通过所述电路的数据流;以及
多路复用器,通信地耦合到所述处理单元和所述矩阵计算单元,
其中,所述多路复用器被配置为将所述多个激活输入发送到所述矩阵计算单元。
14.根据权利要求13所述的电路,还包括:
存储器单元,被配置为向所述矩阵计算单元发送多个权重输入,并且其中直接存储器访问引擎被配置为向所述存储器单元发送所述多个权重输入。
15.根据权利要求14所述的电路,其中,将所述多个权重输入施加到所述多个交叉开关阵列,以向所述一组交叉点设备预加载可调电特性的值。
16.根据前述权利要求中的任一项所述的电路,还包括:
移位加法电路,被配置为对所述多个激活值求和;
和寄存器,被配置为存储求和的多个激活值;以及
求和电路,通信地耦合到所述矩阵计算单元和所述和寄存器,其中所述求和电路被配置为输出乘积与求和的多个激活值的和。
17.根据权利要求16所述的电路,其中所述多个交叉开关阵列中的每个交叉开关阵列连接到移位加法电路,每个移位加法电路被配置为将相应的和存储在相应的累加器单元中,其中所述相应的和为累加值。
18.根据权利要求17所述的电路,其中,交叉开关阵列的输出值表示所述累加值的符号。
19.根据前述权利要求中任一项所述的电路,其中,每个交叉开关阵列包括大约一百万个交叉点设备。
20.根据前述权利要求中任一项所述的电路,其中,所述矩阵计算单元包括大约100个交叉开关阵列。
21.根据前述权利要求中任一项所述的电路,其中,每个交叉点设备被配置为存储由电特性表示的8位权重值。
22.根据前述权利要求中任一项所述的电路,其中,所述矩阵计算单元被配置为执行用于循环神经网络的功能,并且其中,所述交叉点设备被预加载一次以用于执行所述循环神经网络的功能。

说明书全文

神经网络交叉开关堆叠

背景技术

[0001] 该文档描述了用于执行神经网络推断的计算系统。神经网络是机器学习模型,它使用一层或多层模型来对于接收的输入生成输出,例如,分类。除了输出层之外,一些神经网络包括一个或多个隐藏层。每个隐藏层的输出用作网络中下一层(即下一个隐藏层或网络的输出层)的输入。网络的每个层根据相应参数集合的当前值从接收的输入生成输出。发明内容
[0002] 本文档描述了一种用于对包括多个神经网络层的神经网络执行神经网络计算的电路。该电路包括:矩阵计算单元,其包括用于所述多个神经网络层的每个层的相应交叉开关(corssbar)阵列,其中,用于所述多个神经网络层的相应的交叉开关阵列以堆叠(stacked)配置形成在公共基板中。每个交叉开关阵列包括:一组交叉点设备,其中每个交叉点设备的相应的电特性是可调节的,以表示为每个相应的交叉点设备存储的权重值;第一组纳米线,第一组纳米线中的每个纳米线被配置为接收激活输入;以及第二组纳米线,第二组纳米线的每个纳米线通过所述一组交叉点设备中的相应交叉点设备连接到第一组纳米线的每个纳米线,其中第二组纳米线的每个纳米线被配置为输出值,该值是从第一组纳米线的每个纳米线接收的信号和各个交叉点设备的相应的电特性的函数。该电路包括处理单元,被配置为通过向每个交叉点设备预加载调谐信号来调整每个交叉点设备的相应的电特性,其中每个交叉点设备的调谐信号的值是由每个相应的交叉点设备表示的权重值的函数。
[0003] 在一些实施方式中,所述电路包括激活单元,所述激活单元通信地耦合到所述矩阵计算单元,并且被配置为对于所述神经网络层中的一个或多个将激活函数应用于由所述矩阵计算单元生成的累加值,以生成神经网络层的多个激活值。
[0004] 在一些实施方式中,所述电路包括:数模转换器(DAC)设备,该DAC设备连接至第一交叉开关阵列的第一组纳米线中的纳米线。在一些实施方式中,所述电路包括模数转换器(ADC)设备,该ADC设备连接到第二交叉开关阵列的第二组纳米线。所述矩阵计算单元通过ADC设备耦合到激活单元。在一些实施方式中,所述ADC设备被配置为识别来自所述第二组纳米线的纳米线的编码信号,所述编码信号表示所述矩阵计算单元的累加值的符号。
[0005] 在一些实施方式中,所述激活单元与所述多个交叉开关阵列形成在公共基板中。
[0006] 在一些实施方式中,所述激活单元对每个激活值进行归一化以生成多个归一化值。在一些实施方式中,所述激活单元池化(pool)一个或多个激活值以生成多个池化值。
[0007] 在一些实施方式中,所述交叉点设备包括忆阻器设备,并且被调谐到所述值的电特性是所述忆阻器设备的电导。在一些实施方式中,所述交叉点设备包括忆容器设备,并且被调谐到所述值的电特性是所述忆容器设备的电容。
[0008] 在一些实施方式中,所述多个交叉开关阵列中的第一交叉开关阵列以堆叠配置通过金属通孔连接到所述多个交叉开关阵列中的第二交叉开关阵列,并且所述金属通孔配置为将激活值从第一交叉开关阵列发送到第二交叉开关阵列。在一些实施方式中,所述金属通孔具有40-60μm之间的长度。
[0009] 在一些实施方式中,所述多个交叉开关阵列中的交叉开关阵列包括大约0.5mm2的尺寸。在一些示例中,所述交叉开关阵列中的一个或多个可以包括至少0.25mm2,可选地至少0.4mm2,和/或小于0.75mm2,可选地小于0.6mm2的尺寸。
[0010] 在一些实施方式中,所述电路包括:处理单元,被配置为接收指令并从所述指令生成多个控制信号,并且所述多个控制信号控制通过所述电路的数据流。在一些实施方式中,所述电路包括:多路复用器,通信地耦合到处理单元和矩阵计算单元;并且所述多路复用器被配置为将所述多个激活输入发送到矩阵计算单元。
[0011] 在一些实施方式中,所述电路包括:存储器单元,被配置为向矩阵计算单元发送多个权重输入,并且直接存储器访问引擎被配置为向存储器单元发送所述多个权重输入。
[0012] 在一些实施方式中,将所述多个权重输入施加到所述多个交叉开关阵列,以向所述一组交叉点设备预加载所述可调电特性的值。
[0013] 在一些实施方式中,所述电路包括:移位加法电路,被配置为对所述多个激活值求和;和寄存器(sum-in register),被配置为存储求和的多个激活值;以及求和电路,可通信地耦合到矩阵计算单元和和寄存器,并且求和电路被配置为输出乘积与求和的多个激活值的和。
[0014] 在一些实施方式中,所述多个交叉开关阵列中的每个交叉开关阵列连接到移位加法电路,每个移位加法电路被配置为将相应的和存储在相应的累加器单元中,其中所述相应的和为累加值。在一些实施方式中,交叉开关阵列的输出值表示所述累加值的符号。
[0015] 在一些实施方式中,每个交叉开关阵列包括大约一百万个交叉点设备。在一些示例中,每个交叉开关阵列可包括至少900,000,可选地至少950,000个交叉点设备和/或小于1,001,000,可选地小于1,000,500个交叉点设备。
[0016] 在一些实施方式中,所述矩阵计算单元包括大约100个交叉开关阵列。在一些示例中,所述矩阵计算单元可包括至少90,可选地95个交叉开关阵列,和/或小于110,可选地小于105个交叉开关阵列。
[0017] 在一些实施方式中,每个交叉点设备被配置为存储由电特性表示的8位权重值。在一些实施方式中,所述矩阵计算单元被配置为执行用于循环神经网络的功能,并且所述交叉点设备被预加载一次以用于执行所述循环神经网络的功能。
[0018] 该方面和其他方面的其他实施方式包括被配置为执行在计算机存储设备上编码的方法的动作的相应系统、装置和计算机程序。可以借助于安装在系统上的软件固件硬件或它们的组合来配置一个或多个计算机的系统,这些软件、固件、硬件或硬件的组合在操作中导致系统执行动作。一个或多个计算机程序可以通过具有指令的方式来配置,该指令在由数据处理装置执行时使该装置执行动作。
[0019] 本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。堆叠交叉开关阵列可以在单个芯片管芯上包含神经网络模型的所有权重。作为传统神经网络加速器的限制的存储器带宽的限制可以绕开或缓解。与每权重需要几个电路元件的CMOS实现方案相比,更高的交叉开关的存储密度(每个交叉点设备一个8位权重)可以使堆叠交叉开关阵列具有更大的生产模型,诸如至少大一个数量级。
[0020] 堆叠交叉开关阵列比对应的CMOS配置消耗的能量少大约一个数量级。堆叠交叉开关阵列减少了二维配置所需的时间共享要求,从而减少了使用二维模拟神经网络层的延迟。在一些实施方式中,神经网络的所有参数存储在堆叠交叉开关阵列中,从而消除了从片外电路中检索参数的需求。与二维脉动阵列配置相比,堆叠交叉开关阵列在阵列之间具有更短的位线,从而减少或消除了各层之间对驱动缓冲器的需求。与类似尺寸的CMOS配置的数千个算子相比,堆叠交叉开关阵列可以包含数百万或数十亿个算子。较小的面积(footprint)和较低的功耗要求允许用于移动设备和芯片尺寸和功耗受到限制的其他设备的专用神经网络芯片。
[0021] 本说明书中描述的主题的一种或多种实施方式的细节在附图和以下描述中阐明。根据说明书、附图和权利要求书,本主题的其他潜在特征、方面和优点将变得显而易见。

附图说明

[0022] 图1是示例计算系统的框图
[0023] 图2示出了用于堆叠交叉开关阵列的配置的示例。
[0024] 图3示出了用于堆叠交叉开关阵列的配置的示例。
[0025] 图4A-4B示出了示例交叉开关阵列交叉点设备。
[0026] 图5示出了堆叠交叉开关阵列的图。
[0027] 图6示出了使用交叉开关阵列堆叠的方法的图。
[0028] 图7示出了用于堆叠交叉开关阵列的配置的示例。
[0029] 图8示出了用于堆叠交叉开关阵列的配置的示例。
[0030] 在各个附图中,相同的附图标记和标号指示相同的元件。

具体实施方式

[0031] 本说明书描述了一种计算机硬件和软件系统,可以用于加速机器学习工作负载,使得执行工作负载的处理单元可以在执行计算的同时实现高性能和低能耗。下述硬件和软件系统包括模拟和数字逻辑的集成。机器学习由包含多层电路的计算系统执行,该多层电路包括与一个或多个数字处理单元进行通信的模拟算子。
[0032] 具体地,本说明书描述了通过深度神经网络(DNN)加速推理的处理,该深度神经网络包括相互馈送的多层。在神经网络层内执行的计算处理可以包括输入张量和权重张量之间的乘法。每个乘法运算发生在算子(例如,突触)上。神经网络层可以包括许多算子,并且每个层都可以产生许多乘积,诸如用于矩阵乘法。神经网络层可以对每个算子的乘积求和以产生累加值。因此,输入权重乘法可以写为每个权重元素乘以输入或矩阵的一行的乘积之和。例如通过激活单元将激活函数应用于累加值,以产生激活值。激活值可以表示对神经网络的后续层的输入。
[0033] 计算系统可以使用被配置为执行上述乘法操作和激活函数的硬件来执行神经网络操作。神经网络层的一部分可以由硬件算子的矩阵表示,每个都配置为将输入张量和权重张量相乘。硬件算子可以布置成几层,其中每个层代表神经网络层。硬件层可以布置成多层电路。
[0034] 多层电路包括互连的交叉开关阵列,每个被配置为操作为神经网络层。交叉开关阵列每个包括多个电子算子(例如,交叉点设备),这些电子算子一起定义层的输出作为一个或多个输入的函数。在一些实施方式中,交叉开关阵列垂直堆叠,从而增加了网络的算子的密度,并增加了可放置在给定芯片框架中的算子的数量。
[0035] 交叉开关阵列的堆叠配置允许各个神经网络层更大,并且与诸如脉动阵列配置的二维交叉开关层配置相比,包括更多的算子。包括较大层尺寸的交叉开关阵列的堆叠配置消除了较小层计算相同数量的输入参数的累加值输出所需的至少一部分时间共享操作。由于时间共享操作需要额外的数字/模拟转换,以将数据输入到交叉开关阵列并从交叉开关阵列检索结果,因此消除了时间共享操作减少计算激活值的时间和能量开销。相反,交叉开关阵列的三维堆叠可实现完全连接的神经网络,而无需顺序进行模数转换。
[0036] 与相等尺寸的CMOS实现方式相比,对于给定的横截面尺寸,堆叠中的交叉开关阵列每个包含更多的算子。例如,交叉开关阵列的交叉点设备可以被配置为执行针对层的参数/权重值的存储功能并执行该层的乘法运算。这样,与CMOS实现方式相比,对交叉开关阵列层的晶体管要求降低了一个数量级。交叉开关阵列可以包括数以百万计的数量的算子,而可比较的CMOS实现方式可以包括数以千计的算子。交叉开关阵列使得能够使用尺寸小于0.5mm2-1.0mm2的层的循环神经网络功能。堆叠交叉开关阵列配置使得神经网络能够对于单个芯片管芯扩展到数百万或数十亿个算子。下文所述的多层电路的神经网络层的较小的面积使得可以在较小的芯片框架(诸如移动设备所需的框架)中进行专的硬件加速。
[0037] 另外,一旦堆叠交叉开关阵列的层的交叉点设备已经预加载了参数/权重值,就无需为递归计算再次获取参数/权重值,从而节省了时间和能量。与CMOS实现方式和二维脉动阵列实现方式相比,这将性能速度提高了10倍或更多,并且能耗降低了一个数量级。
[0038] 图1示出了示例计算系统100的框图,该示例计算系统100包括用于执行神经网络的计算的交叉开关阵列堆叠140。如图所示,计算系统100包括处理单元110、存储介质120、包括交叉开关阵列堆叠145的相乘累加(MAC)系统140硬件以及激活单元170。在一些实施方式中,系统100包括附加的交叉开关阵列堆叠,其每个是附加的MAC系统的一部分。
[0039] 处理单元110被配置为处理在计算系统100内执行的指令,包括存储在存储介质120中的指令或程序代码或存储在另一存储设备中的其他指令/代码。处理单元110可以包括一个或多个处理器。存储介质120可以包括一个或多个存储体或单元,包括用于存储激活输入的第一存储体150和用于存储权重的第二存储体160。在一些实施方式中,存储介质120是一个或多个易失性存储单元。在一些其他实施方式中,存储介质120是一个或多个非易失性存储单元,诸如例如只读存储器(ROM)和/或电可擦除可编程只读存储器(EEPROM)。存储介质120还可以是另一种形式的计算机可读介质,诸如软盘设备、硬盘设备、光盘设备或磁带设备、闪存或其他类似的固态存储器设备、或设备阵列,包括存储区域网络中或其他配置中的设备。
[0040] 指令集130当由处理单元110执行时,使处理单元110执行一个或多个任务,这些任务包括例如将激活输入存储在第一存储体150的存储器地址位置中以及将权重存储在第二存储体160的存储器地址位置中。此外,指令130还可以使处理单元110从第一存储体150和第二存储体160访问所存储的数据,并将所访问的数据提供给MAC系统140。如下文更详细地描述,MAC系统140可以执行可以包括将激活与权重相乘以产生部分和或者产生提供给激活单元170的输出激活的乘法运算。
[0041] 主机接口202可以将指令发送到处理单元110,处理单元110将指令转换为控制电路执行神经网络计算的低电平控制信号。在一些实施方式中,控制信号调节电路中的数据流,例如,权重输入集合和激活输入集合如何流过电路。处理单元110可以将控制信号发送到第一和第二存储体、MAC系统140和激活单元170。在一些实施方式中,处理单元生成时钟信号。处理单元110可以使用时钟信号的定时,在适当的时间将控制信号发送到电路系统100的每个组件。在一些其他实施方式中,外部处理器控制时钟信号。时钟速率可以是任何常规计算时钟速率,但通常在500MHz至1GHz之间变化。
[0042] 如下面参考图4A-4B更详细地讨论的。激活输入可以从第一存储体150加载到与堆叠交叉开关阵列145的层中的输入位线位置相对应的相应存储器地址位置。例如,交叉开关阵列的每个输入位线可以连接至多路复用器(未示出),其基于存储的激活值的地址选择适当的位线以接收激活输入。当MAC系统140需要激活值时,处理单元110控制多路复用器经由数模转换(DAC)接口180向每个位线加载适当的激活值。同样,可以将权重加载到与堆叠交叉开关阵列145中的交叉点设备的位置相对应的各个存储器地址位置中的第二存储体160。连接到位线的每个交叉点设备被预加载有通过DAC接口180从第二存储体160接收的权重值。交叉点设备以交叉点设备的可调电特性的形式存储权重,如以下关于图4A-4B更详细描述的。在一些实施方式中,从与神经网络硬件计算系统相关联的外部或更高级别的控制设备向系统100提供指令、激活输入和权重。
[0043] MAC系统140按照处理单元110的指示,从第二存储体160接收权重值,并从第一存储体140接收激活输入。处理单元被配置为在MAC系统140接收激活输入之前向交叉开关阵列堆叠145的每个交叉点设备预加载权重值。处理单元110使用一个或多个多路复用器设备(未示出)来控制交叉开关阵列的哪些位线接收哪些激活信号和权重信号。多路复用器设备经由DAC接口180连接到每个位线。一旦权重被预加载到交叉开关阵列中,处理单元110就经由DAC接口从第一存储体150向每个位线发送对应的激活信号。可以将预加载的权重用于多个不同的输入集,诸如来计算许多不同的推断,而无需第二预加载处理。
[0044] 每个执行神经网络层的操作的交叉开关阵列被互连以形成堆叠,如关于图2更详细地描述的。可以经由缓冲器访问每个层,以加载权重和接收激活值。每个层配置为从堆叠的前一层接收输出激活值,使得激活值在层之间传递。在一些实施方式中,每个层是完全连接的,使得所有交叉点设备用作给定乘法运算的算子。在一些实施方式中,层可以被部分地连接。例如,一个或多个层可以被部分地连接以实现层的专门操作(诸如,用作卷积层)。在一些实施方式中,专用操作可由处理单元110重新编程。在一些实施方式中,将激活信号提供给单个交叉开关阵列,并且该信号通过堆叠传播并离开单个模数(ADC)接口190。在一些实施方式中,将激活信号提供给一个以上的交叉开关阵列。在一些实施方式中,经由ADC接口190从交叉开关阵列堆叠145的单个交叉开关层读取累加值。在一些实施方式中,可以从堆叠的多个或每个交叉开关阵列,诸如通过ADC接口190的多个ADC设备,并从连接到交叉开关阵列的每个位线的采样和保持寄存器,读取累加值。
[0045] 由堆叠145的交叉开关阵列生成的累积信号被发送到激活单元170。在一些实施方式中,激活单元将激活函数应用于累积信号。该功能可以由处理单元110指定。激活的信号可以由系统100输出195,被存储在存储介质120中或被发送回神经网络。
[0046] 图2示出了交叉开关阵列堆叠200(例如,图1的交叉开关阵列堆叠145)的示例硬件配置。交叉开关阵列堆叠200包括第一交叉开关阵列210和第二交叉开关阵列230。第一交叉开关阵列210和第二交叉开关阵列230每个代表神经网络层。第一交叉开关阵列210和第二交叉开关阵列230通过过渡层220连接。虽然示出了两个交叉开关层210、230,但是交叉开关阵列堆叠200可以包括数十个层、数百个层等。在一些实施方式中,可能需要附加驱动缓冲器以添加附加堆叠层。例如,使用微回流方法堆叠附加的交叉开关层管芯可能需要调整交叉开关层管芯之间的缓冲器驱动强度。但是,在这种情况下,驱动通孔(TSV)所需的功率少于驱动长的芯片线的功率。TSV可以比完整尺寸的交叉开关层所需的纳米线短,因为可以将交叉开关管芯变薄以用于堆叠应用,因此可以通过使用较小的层尺寸来保持缓冲器驱动强度。在一些实施方式中,不需要附加的驱动缓冲器来添加附加的堆叠层。一些管芯-管芯键合技术(例如,均质(化物至氧化物)直接键合)包括比微凸块回流更精细的节距(以及因此更小的电寄生物)。这样的技术还提供了较低的成本、较低的翘曲和较低的定界。此类键合技术可以绕过为堆叠对于应用的更强缓冲器的要求。
[0047] 交叉开关阵列210包括诸如纳米线260的第一组纳米线、和诸如纳米线270的第二组纳米线。每个纳米线260、270可以用作用于矩阵乘法运算的位线。第一组纳米线和第二组纳米线通过多个交叉点设备(诸如交叉点设备250)连接。第一组纳米线的每个纳米线260通过交叉点设备250连接到第二组纳米线的每个纳米线270。交叉开关阵列230与交叉开关阵列210类似地配置,不同之处在于,交叉开关阵列的激活输入是交叉开关210的输出激活值。
[0048] 为了计算激活值,每个激活输入被发送到第一组纳米线的纳米线260。对于该组的每个纳米线260,通过数模转换将激活输入值转换为电压电平。在一些实施方式中,每个交叉点设备具有可调电特性,诸如电阻、电容等,其确定从第一纳米线260对第二纳米线270贡献的电流量。第二组的每个纳米线270从第一组的每个纳米线260接收一些电流。所有电流的总和表示M个激活值与N个权重的点积运算的值,其中M是第一组纳米线的数量,并且N是连接到第二组的每个纳米线的交叉点设备的数量。在一些实施方式中,交叉开关阵列210、230是正方形的M×M阵列,其中第一组纳米线中的纳米线的数量M与第二组纳米线中的纳米线的数量M相同。在一些实施方式中,交叉开关阵列具有不同数量的纳米线以创建M×N阵列。
[0049] 交叉开关阵列210、230可以计算直至交叉开关阵列210、230的尺寸的矩阵乘法。例如,对于M×N尺寸的交叉开关阵列210,其中M表示第一组的纳米线250的数量,并且N表示第二组中的纳米线270的数量,交叉开关阵列210能够为M×N个算子处理M个激活输入,从而得到N个激活输出。交叉开关阵列210可以并行执行矩阵乘法运算。对于较大的输入向量,可以执行阵列的时间共享操作,其中将向量分为多个部分,执行矩阵乘法,结果可以通过累加器合并或通过池化层池化。
[0050] 交叉开关阵列210、230通过诸如通孔240的金属通孔连接。通孔240可以是固体金属,其将交叉开关阵列210的第二组纳米线导电地连接至交叉开关阵列230的第一组纳米线。例如,第一交叉开关阵列210的每个激活输出可以是第二交叉开关阵列230的激活输入。金属通孔足够长,以允许足够的基板位于交叉开关阵列210、230之间,使得神经网络层之间的电容效应减小或消除,而不会太大地增加电感效应。在一些实施方式中,金属通孔240为大约15-30μm。然而,金属通孔240可以约为50-60μm。通孔的宽度约为3-5μm。在一些实施方式中,通孔的宽度小于1μm,诸如在使用均质键合技术来连接堆叠层管芯的情况。取决于交叉开关阵列的尺寸、纳米线的尺寸和交叉开关阵列的当前平,可以使用其他长度和宽度。
[0051] 尽管将通孔240描绘为第一纳米线260和第二纳米线270的连接端,但是可以将通孔沿着位线放置在任何地方,诸如在阵列堆叠的中心。在一些实施方式中,通孔240不需要如图所示对准,而是可以偏移以减小通孔之间的电容效应。在一些实施方式中,通孔240连接交叉开关的输出和输入(即,神经元/激活)。基于网络层中交叉点数的连接密度,通常为交叉点数的平方根。
[0052] 在一些实施方式中,金属通孔240每个按照设备280的顺序。设备280代表布置在交叉开关层之间的一个或多个模拟或数字逻辑设备、信号输入或信号输出。例如,设备280可以包括驱动缓冲器,该驱动缓冲器在多个交叉开关层之后刷新信号,并且防止交叉开关层230的电特性影响交叉开关阵列210的模拟值。例如,设备280可以包括缓冲的输出线,使得可以从交叉开关阵列堆叠读取交叉开关层210的激活输出。例如,设备280可以包括用于预加载交叉开关阵列230的交叉点设备的缓冲输入线。
[0053] 交叉开关阵列210、230可以计算多个矩阵乘法运算,而不需要在堆叠中时间共享交叉开关阵列。交叉开关阵列堆叠200使得能够执行循环神经网络操作而无需在层之间进行数据的中间模拟/数字转换。时间共享要求在执行附加矩阵乘法运算之前,诸如使用交叉点设备的预加载权重重新初始化交叉开关阵列。交叉开关阵列堆叠200可以在第一层中发生矩阵乘法之后将激活输出发送到第二层,而无需预加载权重。另外,交叉开关阵列210可以将激活输出作为模拟信号直接发送到第二交叉开关阵列230,避免了转换为数字信号并返回模拟信号的时间和能量开销。
[0054] 交叉开关阵列堆叠200与交叉开关单元的脉动阵列相比消耗更少的功率。交叉开关阵列的二维配置在单元之间需要相对长的导线(例如,对于1000x1000交叉开关层为500-1000μm),以将激活输出从第一单元传输到第二单元。交叉开关阵列堆叠200将交叉开关阵列210、230放置在相对紧凑的体积包络中。交叉开关阵列可以通过金属通孔240连接,金属通孔240相对较短(例如15-30μm)。交叉开关阵列堆叠200可以在较低的电压下操作,因为交叉开关阵列堆叠可以使用比脉动阵列配置更低的电压驱动缓冲器,并且仍然在交叉开关阵列之间具有信号保真度。除了消耗更少的功率之外,与二维配置相比,交叉开关阵列堆叠
200产生更少的废热。这样,通过避免时间共享操作并使用较低功率的驱动缓冲器,与二维和数字配置相比,能耗可以降低10倍,并且与二维和数字配置相比,计算速度可以提高10倍。
[0055] 交叉点设备(诸如交叉点设备250)由系统的处理设备(例如,处理设备110)调谐。交叉点设备250可以通过在交叉开关阵列堆叠200的操作的调谐阶段期间施加的调谐电压来调谐。例如,处理设备可以将诸如电压的信号发送到设备250。信号调谐设备250的电特性以控制设备的电导,如关于图4A-4B更详细地解释的。设备250存储由设备250的电导表示的权重值。在激活值的计算期间,每个交叉点设备250的电导确定来自激活输入的信号的多少被发送到激活输出,诸如多少电流从第一纳米线260流到第二纳米线270。因此,交叉点设备
250具有双重功能,因为交叉点设备存储每个神经网络层的权重,并且还通过充当算子来形成神经网络层的突触。在一些实施方式中,使用交叉开关线来加载交叉点设备250,而无需任何专用的加载输入线。算子值存储在交叉点设备250中,可重用于许多推断(多达数百、数千、数百万等)。由于对于神经网络的许多推断,算子值仍然保持加载,因此随着推断的数目增加,用于加载交叉点设备250的加载时间开销变成操作时间的较小百分比。
[0056] 交叉开关阵列210、230的尺寸可以基于芯片框架的尺寸和诸如对于交叉点设备250所包括的晶体管技术而变化。为了避免在交叉开关阵列210中包括相对长的纳米线,这需要更高的驱动电压和更多的功耗,交叉开关阵列210、230的尺寸可以被限制在0.5mm2至
1.0mm2之间。每个交叉开关阵列210、230可以包括由交叉点设备250表示的大约一百万个算子。在一些实施方式中,交叉点阵列210、230中可以使用更少的交叉点设备250,以通过减少交叉开关的电容来提高操作的鲁棒性并实现更低的操作电压,但是以交叉开关阵列210、
230之间的连接空间的开销为代价。例如,交叉开关阵列210、230可以仅包括10x10交叉点设备250。在一些实施方式中,每个交叉点层210、230可以使用更多数量的交叉点设备250,以减少交叉开关连接的开销并增加网络中的算子的数量,但是这可能需要更高的驱动电压和更多的废热。例如,交叉开关阵列210、230可以是2000×2000交叉点设备250。交叉开关层
210、230的其他配置是可能的。例如,图7示出了对于图2的交叉开关阵列堆叠200的替代的交叉开关阵列堆叠700的布局。
[0057] 在一些实施方式中,交叉开关阵列堆叠可以由单个管芯形成,并且可以与互补的模拟或数字电路(诸如驱动缓冲器、ADC和DAC接口等)形成在同一管芯中。参考图3,示出了交叉开关阵列堆叠300,其具有由块310和320表示的附加电路。块310、320可以包括专用电路,以处理来自交叉开关阵列堆叠的信号。例如,块310、320可以包括用于交叉开关阵列堆叠、多路复用设备、可重编程电路层、缓冲器、寄存器等的接口。在一些实施方式中,可以将专用电路配置为优化特定的神经网络任务,诸如语音识别图像识别等。
[0058] 在一些实施方式中,块310和320可以包括模数转换(ADC)和数模转换(DAC)设备。ADC和DAC设备用于将模拟交叉开关堆叠与计算系统的数字设备连接。可以使用各种类型的ADC设备和DAC设备,如下面关于图5更详细地描述的。
[0059] 在一些实施方式中,块310和320可以包括采样和保持设备。采样和保持设备从交叉开关阵列获取累积的信号,并保持该信号,直到ADC设备准备好转换信号为止。采样和保持设备可以连接到交叉开关阵列的每个位线。
[0060] 块310、320包括将激活函数应用于累加值的激活单元。激活单元诸如从ACD设备接收累加值,并且应用激活函数以生成激活值。这样的配置将神经网络的操作保持在单个芯片管芯上,从而导致上述优点。在一些实施方式中,激活硬件可以在单独的设备中。
[0061] 在一些实施方式中,块310、320包括被配置为对多个激活值求和的移位加法电路。移位加法电路可以连接到和寄存器,该和寄存器被配置为存储求和的多个激活值。求和电路可以通信地耦合到矩阵计算单元和和寄存器,其中求和电路被配置为输出乘积和多个激活值的和的和。交叉开关层210、230的其他配置是可能的。例如,图8示出了对于图3的交叉开关阵列堆叠300的替代的交叉开关阵列堆叠800的布局。
[0062] 图4A-4B示出了用于诸如交叉开关阵列210、230的交叉开关阵列的交叉点设备420、440的示例。交叉点设备具有双重功能。交叉点设备存储来自第二体(例如,图1的体
160)的权重值。可以诸如在进行矩阵乘法运算之前将权重预加载到交叉开关阵列。当交叉开关阵列的位线(例如,纳米线260)接收激活输入时,交叉点设备充当矩阵乘法的算子,并将激活输入从输入位线转换为输出位线上(诸如纳米线270上)的激活输出。
[0063] 交叉点设备使用交叉点设备的电特性来存储权重。交叉开关阵列的预加载处理诸如通过使用调谐电压或电流调谐交叉点设备的电特性。在预加载处理期间,向交叉开关阵列的每个位线发送诸如来自调谐源的调谐信号。在一些实施方式中,可以并行执行用于堆叠的每个交叉开关阵列的预加载处理。在一些实施方式中,每个交叉开关阵列的调谐是顺序执行的。每当交叉开关阵列要执行矩阵乘法时,将基于所期望的权重值对交叉点设备进行调谐。在循环神经网络中,不需要在运算之间调谐交叉点设备,而是,对于第二次(和后续)运算,交叉点设备表现出先前运算的滞后现象。
[0064] 当执行矩阵乘法运算时,交叉点设备充当从第一组纳米线的纳米线460接收的位线信号的算子。算子执行运算的精确的机制取决于交叉点设备所使用的设备类型。例如,图4A示出了包括用于诸如忆阻器(memristor)420的交叉点设备的忆阻器阵列的交叉开关阵列400。忆阻器可以包括基于施加至忆阻器设备的电流的可调谐电阻。例如,为了将较小的重量施加到交叉点,将忆阻器420调谐到较高的电阻值。从连接到忆阻器420的第一纳米线
460到连接到忆阻器的第二纳米线470贡献较少的电流。第二纳米线470从连接到第二纳米线的每个忆阻器交叉点设备接收一些电流或不接收电流。第二纳米线470的激活值输出表示每个激活输入和连接到第二纳米线的每个忆阻器的权重的点积。激活输出可以传递到交叉开关堆叠的下一层(重复该处理),发送到输出寄存器或两者。
[0065] 图4B示出了用于交叉点设备(诸如,忆容器440)的忆容器阵列。忆容器以类似于忆阻器的方式起作用。忆容器440被充电到代表交叉开关阵列410的权重的电压。忆容器440可以存储电压值,直到要执行矩阵乘法运算为止。当激活输入被发送到连接到忆阻器460的位线(例如,纳米线460)时,忆容器在输出位线(例如,纳米线470)上感应出与权重电压值和输入电压值成线性比例的电压。
[0066] 交叉开关阵列堆叠400、410的忆阻器420和忆容器440可以形成比数字存储设备更密集的存储。例如,忆阻器可以存储使用两个晶体管从八位数字信号转换的模拟权重值。交叉点设备所需的少量的晶体管使得能够在单个交叉开关阵列堆叠中扩展至数百万或数十亿个算子。
[0067] 图5示出了交叉开关阵列堆叠500的三维表示。交叉开关阵列510被堆叠在多个交叉开关层上,终止于交叉开关层520。交叉开关层510通过交叉开关阵列510的每个位线连接到DAC接口530。DAC设备530将激活输入、预载权重值等转换为信号的模拟表示。在一些实施方式中,单位驱动缓冲器可以用于驱动模拟输入信号。在一些实施方式中,DAC设备530转换4位信号、8位信号和16信号。在一些实施方式中,多位信号的每个位由不同的位线处理,并且运算的结果在诸如使用ADC接口540转换回数字信号之后被合并。例如,如果对8位信号进行操作,则可以将位发送到第一交叉开关阵列510的每个位线。可以将交叉开关阵列510的突触权重复制为每个位线相同。如果信号的位大小超过位线的数量,则可以将信号分为较高有效部分和较低有效部分,在多个周期内进行处理,然后在对信号的每个位执行矩阵乘法之后合并。
[0068] 同样,为了表示高精度的权重值,诸如16位权重值,权重可以由同一位线上的多个交叉点设备表示。例如,如果交叉点设备是4位忆阻器,则可以在该行的四个交叉点设备中表示16位权重值。以后将每个操作的结果合并。
[0069] 输出激活值通过ADC设备540转换回数字信号。ADC设备540可以从在每个输出位线的末端的诸如采样和保持缓冲器的缓冲器获取值,并转换为每个结果的数字表示。可以通过对输入信号进行编码(诸如,通过使用单位列位线)来降低ACD设备540的分辨率。单位列位线可以表示在转换回数字信号期间ADC可以识别的值。例如,单位列位线可用于表示带符号的操作。可以使用任何已知的有效ADC和DAC编码方案-无需特殊的ACD/DAC方案。
[0070] 图6表示用于使用上述堆叠交叉开关阵列执行神经网络操作的示例方法600。计算系统诸如从另一系统接收(610)权重值和指令集。计算系统向交叉点设备预加载(620)权重值。一旦所有交叉点设备已通过预加载信号调谐,系统将激活值发送(630)到交叉开关阵列堆叠。交叉开关阵列堆叠对激活值求和(640)以生成激活输出。激活输出可以被组合以形成累加值(650)。可以将累加值作为激活值发送回交叉开关阵列、存储在计算系统存储中,或者以其他方式由系统进行分析。
[0071] 本说明书中描述的主题和功能操作的实施例可以在数字电子电路中、在有形体现的计算机软件或固件中、在计算机硬件中实现,包括本说明书中公开的结构及其结构等同物,或者以它们中的一个或多个的组合体现。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即,在有形非暂时性存储介质上编码的一个或多个计算机程序指令模块,用于由数据处理装置执行或控制数据处理装置的操作。程序指令可以在例如机器生成的电、光或电磁信号的人工生成的传播信号上编码,其被生成以编码信息,用于传输到合适的接收器装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
[0072] 计算机程序(也可以被称为或描述为程序、软件、软件应用、应用程序、模块、软件模块、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言、或声明或过程性语言;并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适用于计算环境的其他单元。计算机程序可以但不必对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本,专用于所讨论的程序的单个文件中,或者存储在多个协调文件中,所述协调文件例如存储一个或多个模块、子程序或代码部分的文件。可以部署计算机程序以在一个计算机上或在位于一个站点上或跨多个站点分布并通过数据通信网络互连的多个计算机上执行。
[0073] 本说明书中描述的处理和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并生成输出来执行功能。处理和逻辑流程也可以由专用逻辑电路(例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)、GPGPU(通用图形处理单元)、或一些其他类型的处理器),并装置可以实现为专用逻辑电路
[0074] 适合于执行计算机程序的计算机例如可以基于通用或专用微处理器或两者,或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或运行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合以从用于存储数据的一个或多个大容量存储设备接收数据或将数据传输到一个或多个大容量存储设备或两者,所述大容量存储设备例如磁盘、磁光盘或光盘。但是,计算机不必需这样的设备。此外,计算机可以嵌入在例如移动电话个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动)等的另一设备中。
[0075] 适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
[0076] 本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括:后端组件,例如作为数据服务器;或者包括中间件组件,例如应用服务器;或者包括前端组件,例如,具有图形用户界面、网络浏览器或应用程序的客户端计算机,用户可通过其与本说明书中描述的主题的实现进行交互;或者包括一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过例如通信网络的任何形式或介质的数字数据通信互连。通信网络的示例包括局域网(LAN)和广域网(WAN),例如因特网。
[0077] 计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且典型地通过通信网络进行交互。客户端和服务器的关系借助于在各个计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。
[0078] 虽然本说明书包含许多具体的实现细节,但是这些不应被解释为对任何发明的范围或可能要求保护的范围的限制,而是作为可以特定于特定发明的特定实施例的特征的描述。在单独实施例的上下文中在本说明书中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管特征可以在上面描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合中切除来自要求保护的组合的一个或多个特征,并且要求保护的组合可以针对子组合或子组合的变化。
[0079] 类似地,虽然以特定顺序在附图中描绘并且在权利要求中叙述了操作,但是这不应该被理解为要求以所示的特定顺序或按顺序执行这些操作,或者执行所有示出的操作以达到期望的效果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这种分离,并且应当理解,所描述的程序组件和系统通常可以集成在单个软件产品中或打包成多个软件产品。
[0080] 已经描述了主题的特定实施例。其他实施例在所附权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的处理不一定需要所示的特定顺序或按顺序来实现期望的结果。在一些情况下,多任务处理和并行处理可能是有利的。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈