一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

深度均衡模型的硬件计算结构的制作方法

2022-02-22 02:20:16 来源:中国专利 TAG:


1.本公开涉及具有人工智能能力的计算机系统,包括神经网络。


背景技术:

2.当前的深度神经网络 dnn 模型基于一种方法,其中这些网络由层组成。虽然 dnn 在分类任务(推理)中非常成功,但随着任务难度的增加,dnn 的大小(层数和权重)也会增加。随着 dnn 大小的增加,权重所需的存储器和实现网络所需的计算力也随之增加。动态均衡(deq)模型与dnn不同,因为它可以用单个隐式层实现。这样,对于给定任务,训练和推理的 deq 存储器需求可能远低于基于 dnn 的网络。然而,虽然存储器需求较少,但在当前实例中,计算需求显著高于传统网络的存储器需求。这样,deq 计算需求通常可能是计算成本的2-3倍;这可能会为这些方法的实际部署带来障碍。这是因为在 deq 方法中,推理是使用求根技术有效地计算非线性微分方程系统的解或均衡点。由于其迭代性质和比深层多层神经网络的计算负载更高的成本,求根可能是巨大的计算负载。然而,与在数字系统中求根所需的迭代方法相比,使用连续时间模拟电路求根可以以高效率(低能量)、速度和准确度执行。这可能是因为模拟系统可以设计为自然地找到或解决到其均衡点的时间流逝。本公开详细描述了如何使用连续时间模拟或混合信号电路来实现 deq 模型,这可以使得为边缘计算启用高效的深度学习网络。下面描述的系统可以在模拟或混合信号电路中实现deq模型并且包括用于在模拟或混合信号电路中实现deq模型的架构。


技术实现要素:

3.根据一个实施例,动态均衡(deq)模型电路包括:第一乘法器,其被配置为接收输入,通过第一权重缩放输入,并输出经缩放的输入;第二乘法器,其被配置为接收根,通过第二权重缩放根,并输出经缩放的根;求和块,其被配置为组合经缩放的输入、偏置输入和经缩放的根并输出非线性输入;以及第一非线性函数,其被配置为接收非线性输入并输出根,其中第一权重和第二权重基于神经网络的经训练的deq模型。
4.根据第二实施例,动态均衡(deq)模型电路包括:第一乘法器,其被配置为接收输入,通过第一权重缩放输入,并输出经缩放的输入;第二乘法器,其被配置为接收根,通过第二权重缩放根,并输出经缩放的根;求和块,其被配置为组合经缩放的输入和经缩放的根,其中求和块被配置为输出非线性输入;以及第一非线性函数,其被配置为接收非线性输入并输出根,其中第一权重和第二权重基于神经网络的经训练的deq模型。
5.根据第三实施例,动态均衡(deq)模型电路包括:计算结构,其被配置为在计算结构的行驱动器处接收输入,并通过第一权重和第二权重缩放输入并输出根,其中缩放是利用一个或多个电组件完成的;以及输出层,其被配置为接收根,其中输出层还被配置为响应于根和第一非线性函数输出经缩放的根,其中第一权重和第二权重基于神经网络的经训练的deq模型,其中输出层包括一个或多个电组件。
附图说明
6.图1图示了deq网络的表示。
7.图2示出了用于deq网络的信号流程图的实施例。
8.图3图示了具有非线性放大器309的简单反相电路300的实施例。
9.图4图示了基于反相放大器的多输入、多状态deq模型的示例。
10.图5图示了用计算结构503和输出层504实现的deq网络500。
11.图6图示了计算结构600的示例。
12.图7是可用于实现deq网络的通用计算结构的一个实施例的图示。
13.图8图示了可以如何使用计算结构来利用偏置。
14.图9图示了替代实施例,该实施例示出了被合并到计算结构中的输出层计算的实施例。
15.图10是连续时间deq网络的示例,其输出是当前输入与输出和先前输入与输出二者的连续时间函数。
16.图11是离散时间deq网络的示例,其输出是当前输入与输出和先前输入与输出的离散时间函数。
17.图12图示了不依赖于先前输入或输出的deq网络的离散时间实现的信号流程图。
18.图13图示了来自图12的实施例的deq离散时间系统的波形。
19.图14图示了具有附加延迟输入和反馈的deq离散时间实现的信号流程图。
20.图15图示了存储器内计算mac块的框图。
21.图16图示了阵列的4x4子集,例如nxm阵列的四乘四子集。
22.图17(a)-(g)图示了用于扩展所示架构以缩放到更高分辨率权重、更高分辨率输入激活和差分操作的多种技术。
23.图18(a)-(h)图示了所示出的示例接口电路。
24.图19图示了cmos半导体工艺的示例。
25.图20(a)-(e)图示了单位晶格(unit cell)与字线和位线的连接以及单位晶格中的内部连接之间的实施例的各种示例。
26.图21图示了利用第一实现的基于单个晶体管(1t)rom的计算单元的示例。
27.图22图示了使用单个晶体管作为单位元件的替代实现。
28.图23图示了使用单个晶体管作为单位元件的替代实施例。
29.图24图示了利用单个电容器作为单位元件的基于rom的mac阵列的实现。
30.图25图示了利用单个电容器作为单位元件的基于rom的mac阵列的替代实施例。
31.图26(a)-(b)图示了在单位元件中利用单个晶体管和单个电容器的基于rom的mac阵列的实现。
32.图27(a)-(b)图示了使用单个晶体管和电容器作为单位元件的替代实现。
33.图28图示了在单位元件中使用两个晶体管和电容器的实现。
34.图29图示了单个晶体管和单个电容器的基于rom的计算单元的实施例。
35.图30图示了使用单个电阻器作为单位元件的基于rom的mac阵列的实施例。
36.图31(a)-(d)图示了用于任意机器学习算法的基于imc的处理器内的计算单元的若干实施例。
37.图32(a-d)图示了不同类型的单位晶格被交错并连接到相同位线的实施例。
38.图33(a)-(d)图示了组合rom和ram的计算单元的实施例。
39.图34(a)-(d)图示了基于3d堆叠rom的imc阵列的各种实施例。
40.图35(a)-(c)图示了“边缘”感测装置的示例。
41.图36图示了由纵横网络实现的模拟乘法和加法运算的实施例。
42.图37(a)-(b)图示了具有脉宽调制的激活信号和嵌入在存储器中的二进制权重的纵横网络。
43.图38(a)-(c)是基于忆阻器的纵横网络,其用脉宽调制激活来激活,并在幅度域中用幅度域模数转换器来读出。
44.图39(a)-(c)图示了到点积计算纵横网络的基于时间的接口。
45.图40(a)-(c)图示了所提出的到混合信号点积计算硬件的时域接口的功能框图和操作。
46.图41(a)-(c)图示了存储器计算纵横网络中基于sram的时域多级激活输入、多级点积输出。
47.图42(a)-(b)图示了到用于点积计算的纵横网络的基于sram的多级输入、多级输出时域接口。
48.图43(a)-(b)图示了电荷重新分配架构。
49.图44(a)-(b)图示了应用于纵横网络以用于存储器计算点积计算的时域接口方案的基于只读存储器(rom)的示例。
50.图45(a)-(b)图示了基于rom的电荷重新分配时域接口。
51.图46(a)-(d)图示了具有时域比率度量接口的基于浮置栅闪存或fefet的纵横网络的示例。
52.图47图示了晶体管阈值电压的范围,用于利用饱和或亚阈值中的沟道电导或电流源来实现纵横网络的线性缩放权重。
53.图48(a)
ꢀ‑
(b)图示了利用位线电容和忆阻器电导的两相无源放电。
54.图49(a)-(b)图示了基于忆阻器的被动放电方法,其中使用一个比较器进行比率度量时域点积输出评估。
具体实施方式
55.本文描述了本公开的实施例。然而,应当理解,所公开的实施例仅仅是示例并且其他实施例可以采用各种形式和替代形式。附图不一定按比例;某些特征可能被夸大或最小化以示出特定组件的细节。因此,本文公开的具体结构和功能细节不应被解释为限制,而仅作为教导本领域技术人员以各种方式采用实施例的代表性基础。如本领域普通技术人员将理解的,参照任一附图图示和描述的各种特征可以与在一个或多个其他附图中图示的特征组合以产生未明确图示或描述的实施例。所图示特征的组合提供了典型应用的代表性实施例。特征的各种组合和修改与本公开的教导一致,但是,可以被期望用于特定应用或实现。
56.用于求根方法的数字计算机建模实现,例如牛顿法或布罗伊登法,可能会导致大量计算负载,采用许多次迭代来找到均衡/解。因此,即使具有减少存储器的优势,与其他神经网络相比,在deq 模型对输入进行分类所花费的时间(时延)方面,deq可能也无法提供可
观的加速。deq 可以与建模物理系统相同或相似。deq 网络可以用物理系统来实现,该物理系统在连续时间内计算均衡点(解)而无需“数字”计算。最值得注意的是,deq 网络可以通过使用模拟或混合信号电路的动态系统来实现和表示,所述模拟或混合信号电路可以是模拟和数字电路二者的组合。使用电子设备的优势之一是可以直接在集成电路 ic 或专用集成电路 asic 上实现 deq。这种实现可以是混合信号或模拟计算结构。结构通常由计算底层算法所需的元件或处理单元组成。目前用于dnn计算的计算结构主要是数字实现(图形处理器单元、gpu、计算机处理器单元、cpu)和针对卷积计算优化的其他数字加速器。最近,有许多为边缘应用设计的混合信号加速器的示例。这通常称为存储器内计算imc。deq 模型可以用多种类型的计算结构来实现。
57.图1图示了deq网络的表示。deq网络可以实现2020年6月8号提交的、申请号为16/895683、标题为“system and method for multiscale deep equilibrium models”的申请中所描述的功能、网络和训练,特此通过引用以其整体并入该申请。deq 可以具有单层。在图1的deq 模型和网络中利用了两个重要的方程。第一方程即方程(例如,方程)1(下文示出),该方程可以定义单层deq模型。它可以包括模型/网络的状态z的非线性函数 。网络的输入可以定义为x,并且输入偏置可以定义为b。注意,虽然方程1是一般表示,它可能不代表deq网络的所有可能实施例。例如,线性算子wz不仅可以指矩阵乘法,还可以指深度网络中常见的卷积或其他结构化线性算子。并且隐藏单元或隐藏状态z不仅可以表示典型的“单个”隐藏单元,并且还可以表示例如多个不同时间或空间尺度上的多个隐藏单元的串接。方程2描述了隐式非线性微分方程,其根z
*
未知,并且需要被求解以评估 deq 网络。为了求解根,成本函数(方程3)可以迭代地被求解以得到z
*
。当迭代地求解方程3 时,网络设置为初始状态,。然后迭代继续计算成本函数的下一个值,,这在下文被称为方程3。当成本函数小于预定义的公差时,如方程4所示,求根可以认为完成(根被求解出)。当 k 次迭代后满足此条件时,假设,方程 4。注意,在求根期间,输入x和b被认为是恒定的,并且对于deq 网络,训练和推理二者都是使用此迭代过程实现的。
58.表 1:deq 模型的方程根据上面的方程1和方程2,可以开发描述方程2的计算的信号流程图,如图2所示。信号流程图可以表示为具有非线性函数σ的基于矩阵的运算。这可以通过将进一步讨论的
电子计算结构来实现。
59.下面提供图2中变量的定义:表2:变量定义如图2所示,deq网络可以用多个乘法和求和来表示,例如输入、偏置和输出状态的卷积。这可以通常被称为点积或乘法和累加(mac)运算。因此,可以修改可用于实现标准卷积神经网络的电路以实现 deq 网络。主要的修改是如何完成计算。在标准神经网络中,计算不接收当前输出状态到网络输入的连续时间反馈。通常,如果出现反馈,它会伴随延迟出现,即它是先前计算的结果。
60.根的模拟计算:稳定到均衡条件而不是迭代。
61.图3图示了具有非线性放大器309的简单反相电路300的实施例。非线性放大器309可以具有延迟,例如单极放大器。该电路可以具有第一电阻器305和第二电阻器307。第一电阻器305可随时间接收输入301。deq 方法的一个方面是在 deq 中用于推理和训练的求根可以类似于稳定到均衡的物理系统(电气、机械、流体等)。deq模型中的有效地推断和训练可以使用稳定到均衡点311(根-a的发现) 的物理系统实现。作为示例,我们可以考虑简单反相放大器,如电路300中示出为放大器 309的简单反相放大器。该模拟电路可以具有非线性增益301,σ,具有小信号增益av和单极点(简单延迟),图3。在这种情况下,我们可以示出该电路实现了函数,即方程5 (如下表所示),其类似于方程1。对于这个示例,方程 5的根可以作为时间的函数求解,例如,如方程6、7和8中那样。方程6、7 和 8中示出模拟计算将渐近地(指数地)接近或稳定到均衡状态。该电路的指数稳定时间常数由方程8定义。注意,理想的均衡状态可能从未达到,这是由于放大器的有限增益和指数稳定。
62.以下方程可以表示图3的反相电路300:;
简单反相电路示例的输出的近似解(根):和具有非线性放大器309的简单反相电路300可以具有延迟310(例如,单极放大器)。这种模拟反馈电路300可以是模拟deq网络的基本构建块的示例实现。表示简单反相电路和简单反相电路输出的近似解(根)的方程在下表 3 示出:表3 :简单反相电路的方程上面的示例说明了可以使用连续时间模拟电路来计算 deq 网络的根来实现 deq 网络。注意,deq 网络的根是网络 的z(t)的最终状态。它还说明了有限放大器增益av和有限带宽 可以如何导致最终均衡状态或根z*中的误差。对于使用模拟计算的 deq 网络,其精度和/或z
*
中的误差取决于允许电路稳定多长时间或在其输出被读出之前允许经过多少时间常数,如方程9所示。这可以类似于数字计算中的迭代根求解方法,其中迭代次数或计算解所需的时间取决于所需的精度或最终误差容限。然而,对于模拟电路,最终状态的误差量还取决于放大器增益av设置的有限增益误差,方程 9。根据方程9、10,可以计算对放大器增益和带宽的需求,以获得所期望的精度。例如,99.9% 或误差 0.1%需要~9.9位的精度。这可能需要超过 7 个时间常数 的时延和大于 1000 的放大器增益。因此,在设计用于实现 deq 网络的放大器和网络时必须计及模拟或混合信号 deq 网络的所期望精度和时延。
63.表 4 :放大器增益和带宽的方程

一般来说,模拟方法可能无法交付与数字实现相称的计算精度。然而,对于可以使用较低精度实现的应用或较低 snr 应用,当进行模拟处理时,在整体系统功率方面可能具有优势。这样,使用 deq 网络的模拟计算可以为嵌入式应用启用非常低能量的机器学习,对于所述嵌入式应用,这些 deq 网络的能量可以根据应用的所期望时延/速度进行定制。
64.在前面的部分中,我们描述了可以如何用连续时间模拟计算来实现 deq 模型。这是基于可以用方程1对 deq 网络进行建模以及可以用图2所示的信号流程图200对其进行建模的知识。该图及其进一步扩展形成了以下所有发明的基础。
65.混合信号电路架构的许多实施例可用于基于图2中的信号流程图实现 deq 模型/网络。
66.图4图示了基于反相放大器409a、409b、409c的多输入、多状态deq模型400的示例。因此,deq模型可以基于反相放大器和电阻性网络二者。在这样的示例中,可以存在三个输入 401a、401b、401c(x1至x3)、三个状态 403a、403b、403c(z1至z3)和输出450(y)。输出层420b 可以利用电阻器 1/o1、1/o2、和1/o3以应用输入的权重并引导通过激活函数作为输出450。隐藏的状态(z)可以是放大器409a、b、c的输出。这些放大器中的第一放大器可以是例如从图3 到图4的多输入和多输出 deq 网络的反相放大器的扩展。这个示例可以在 deq 网络状态zi方面实现全连接网络,例如,所有状态反馈到每个输入。为了完整性,提供了用于 deq 模型均衡状态的方程(方程11、12)和输出(方程13)。在这样的示例中,为简单起见,放大器的增益420a、420b可以假设为无限。下表提供了这些方程:表 5:
注意,在一般情况下,除了全连接的架构之外,还可以使用其他类型的连接。此外,网络400的电阻器可以用其他电子组件代替,例如忆阻器或电容器,或者用组件的组合代替。最后,其他放大器配置,例如非反相放大器或开关电容器放大器,也可用于实现与此类似的 deq 网络。
67.图5图示了用计算结构503实现的deq网络500。输出层511可以是也可以不是计算结构503的一部分。在该示例中,来自方程1的隐式矩阵乘法(点积、卷积)可以在结构503中实现。非线性函数σ(

)可以在计算结构内部或外部实现。计算结构503响应于接收可以是数字或模拟的输入501和偏置502,在模拟域中执行deq均衡状态的连续时间计算。计算结构503阵列通常是用诸如电阻器、电容器、晶体管或这些器件的组合之类的组件实现的阻抗阵列。一些计算结构503也可以使用易失性存储器技术(例如sram或dram)或非易失性存储器(nvm)技术(例如闪存、rram、mram、pcm等)来实现。当使用这些存储器技术中的任何一种时,计算结构可以称为存储器内计算结构或imc结构。图5的deq网络的输出层511可以用数字、模拟计算或其组合(混合信号)来实现。在某些情况下,对于在用于计算均衡状态z
*
的相同计算结构中实现输出层511,它可能是最佳的。注意的是,均衡状态是deq网络的根,并且通常是网络的最终状态,z=z
*
。输入x和b可以是在计算结构内部转换为模拟的数字信号。或者它们可以是模拟的。通常,deq网络的根509 (z)将被反馈到计算结构503作为模拟信号。然而,可能存在其中状态509作为数字信号或基于时间的信号被反馈的替代实施例。输出层的输入以及输出y和函数可以用数字、模拟或混合信号电路来实现。
68.图6图示了计算结构600的示例。计算结构600仅仅是可以在各种实施例中利用的结构的范例。方程可以表示由结构600执行的计算。图6 是计算结构的示例。元件611 (u
rc
)可以用不同的组件来实现,例如电阻器(rram、pcm)、电容器、晶体管或这些的组合。这些元件可用于对行603上的输入信号执行点积或卷积,其中权重由元件611 (u
rc
)的值确定。该模拟求和是基于基本的电现象,例如电流求和(kirkoff的电流定律)、电荷守恒(电荷求和、重新分配)、欧姆定律等等。这些基本的现象可以在电荷、电流和电压领域本质上启用模拟计算或求和及乘法。行驱动器612可以取决于在计算结构600中使用的装置的类型来执行不同的功能。在某些情况下,它们可以是全数字或模拟的。在其他情况下,它们执行数模转换。可
以在行驱动器612处接收输入601。通常,电荷、电流、电压的求和通常发生在列607上。感测放大器(或“amps”)609可被用作用于求和的放大的第一级,并且可以具有取决于网络的类型不同的功能。例如,对于deq网络,感测放大器或感测放大器可以实现非线性函数σ(

),它可以采用双曲正切或其他众所周知的非线性激活函数的形式,例如整流线性单元(relu)。
69.图7是可用于实现deq网络的计算结构的实施例中一个实施例的图示。在本例中,使用感测放大器添加输入偏置。可能存在与图7相关的若干变体,用于用模拟计算结构实现deq。例如,对于多列或所有列,可以有一个感测放大器709或在感测放大器上。可以每行703存在一个行驱动器702,或对于多个或所有行703存在一个行驱动器702。在另一个实施方案中,感测放大器709可以实现任何非线性函数。此外,感测放大器709可用于添加偏置b。通常,如果需要对结构输出进行数字化,则感测放大器709也可以被模数转换器替换或成为模数转换器的一部分,或者被输出层711替换或成为输出层711的一部分。感测放大器709可用于启用更精确求和——其可以包括电荷或电流求和。在实施例的又一变体中,行驱动器702可以将模拟、数字信号驱动到行703上。行驱动器702也可以驱动基于时间的信号(脉冲,脉宽调制(pwm)信号等)。结构元件713(u
rc
)可以是启用计算(乘法、求和)的任何元件。这样,结构元件可以是电阻器、电容器、晶体管等。可以利用任何组合来求解在计算机结构中利用的方程。
70.与图7中所示的实施例形成对比,图8示出可以如何使用计算结构800来利用偏置820(b)而非通过感测放大器809来添加偏置。在图8的该示例中,使用计算机结构添加输入偏置。偏置820也可以通过其他手段来添加。如果需要对结构输出进行数字化,则感测放大器809也可以被模数转换器替换或成为模数转换器的一部分,或者被输出层811替换或成为输出层811的一部分。感测放大器809可以是对标量、向量或张量输入进行运算的非线性函数。输出也可以是标量、向量或张量。
71.图9图示了替代实施例,其示出了可以将输出层911计算合并到计算结构中的一种方式。输出层911也可以包括不同于感测放大器909的感测放大器910。输入901可以被馈送到行驱动器902中。输出层911可以包括感测放大器910。另一个感测放大器909可以用于将各种状态输出回行驱动器902直到满足收敛。deq模型的最终输出可以由感测放大器910输出。
72.本公开还可以考虑依赖于当前和先前网络根和输入的deq网络。较早的deq模型/网络示例已示出,其中输出状态z是连续时间中输入x和状态反馈的函数,没有延迟。但是,存在某些情况,其中deq网络状态可以是先前(延迟的)输入和根的函数。依赖于先前状态和输入的连续时间deq网络通常可以由方程14和15来描述。表6-连续时间deq网络:

在上面的方程中,输入和状态二者都被连续的时间延迟所延迟。实现 deq 网络的一种可能函数如方程15所示。
73.图10 是实现方程 14 和 15 的网络示例。图2图示了依赖于先前状态和输入的deq网络1000的实施例。离散时间 deq 模型可以用方程16和 17来描述。在这种情况下,deq 网络1000是发生在较早时间t(n)的先前状态和输入的函数。通常,在这些系统中,z(n)1109被认为等效于z(t(n))。deq 输出状态的后续计算之间的时间为。可以由系统时钟来设置t
calc
,即。或者系统可以是自定时或异步的。在这种情况下,后续计算之间的时间仅取决于硬件可以计算下一个状态的速度。随着时间的推移,输入 1001 可以以与时间 1005 相关的延迟被馈送。偏置1002也可以被输入到计算机结构 1003。计算结构 1003 可以以另一个时间延迟 1007 重新馈送状态 1009。计算机结构 1003 可以将最终状态 1009 输出到输出层 1011。输入1001、偏置1002和输出100 3可以是标量、向量或全张量。它也可以是deq网络状态的任意函数。
74.表 7
ꢀ–
离散时间deq网络:图11图示了离散时间deq网络的1100的图。在此示例中,网络1100利用计算结构1103。
75.图11图示示出了由如上所示的方程16和17描述的deq网络的一般示例。网络1100可以接收输入1101,其中通过延迟1105提供的多个先前输入被发送到计算机结构1103。采样状态1109可以被发送到输出层1111。当前状态1109也可以被反馈到具有通过延迟1107提供的先前状态的计算结构1103。输出层1111可以输出最终输出y(n)1113,其是 deq 模型的函数,包括随时间推移的deq 模型。输出1113可以是标量、向量或全张量。它也可以是 deq 网络状态的任意函数。
76.图12是deq 的信号流程图。它可以是离散时间实现。deq 离散时间系统的波形如图13 所示。图12示出了基于离散时间的 deq 网络的一个示例。在这种情况下,deq 网络的输入和状态在时间 nt
clk
处被采样。采样和保持1203、1207的输出可以有延迟。第二采样和保持1207将输出deq状态的函数。输入可以是标量、向量或张量,输出也是这样。输出1211可以是deq模型,或标量、向量或张量。
77.图3图示了deq离散时间系统的波形示例。对于此示例,采样和保持可能是理想的并且具有零延迟。图13 还图示了描述 deq 网络输入和输出时序的波形。这是一个令人感兴趣的示例,因为计算结构在离散时间输入 x(n)、z(n)和 b(n)上以连续时间操作,在图13的计算期间它们保持不变。输出状态z(t)在连续时间内稳定到均衡状态z
*
(t)=z(n)。注意,可以对均衡状态z
*
(t)进行采样,并然后将其用于输出层中的计算。
78.图14图示了具有附加延迟输入和反馈的deq离散时间实现的信号流程图。采样和
保持电路1403可以随时间检索输入1401。时间延迟输入1404(例如,作为一个示例示出为一个时钟周期,但可以是任何类型的延迟周期)可以被馈送到求和块1405,其可以是计算结构。求和块1405可以基于各种输入和状态来实现非线性函数。如图14所示,求和块1405可以考虑一个或多个时钟周期的根的延迟。求和块1405可以向第二采样和保持电路1407输出根。采样和保持电路1407可以向函数1409输出deq模型的状态。最后,deq模型的输出1411可以作为deq网络状态的任意函数被输出。
79.图15图示了存储器内计算mac块的框图。在一种简单的实现中,可以沿水平维度提供n个输入激活(每行单位元件一个),并且可以沿垂直维度产生m个mac输出(每列单位元件一个)。因此,行驱动器1503可以向阵列1501输出n个激活。阵列可以将m列输出到列读出部1505。输入激活和输出由物理参数表示,例如电压。“神经元”可以指包括连接到该列的所有单位元件的单个列。多个神经元(列)相邻连接,并且每个神经元输出单个 mac 操作的结果。可以可选地包括重置块1507以便将阵列重置到指定的初始条件。
80.图16图示了阵列的4x4子集,例如nxm阵列1501的四乘四子集。因此,该图可以详述mac阵列的内部,示出连接到字线1609和位线1611的单个元件。输入( xi)可以作为单个位分辨率(二进制)值或以更高(多位)分辨率的分辨率被提供,但求和总是以模拟方式在每一列中执行。每个单位元件存储权重值(w
ij
),它可以是单个位分辨率(二进制)或以更高(多位)分辨率。使用单位晶格中的电路元件的物理参数(例如,电导)来存储权重。阵列(yj)的每一列的输出是模拟值,其可以保存在模拟域中,被数字化以在处理器内部进一步使用,例如用于另一个 mac 块的输入,或用作最终输出。对于动态读出方案,可以可选地包括重置块1607以便将阵列重置到指定的初始条件。
81.图17图示了用于扩展所示架构以缩放到更高分辨率权重、更高分辨率输入激活和差分操作的多种技术。可以并行使用多个单位元件以增加权重分辨率,如图17 (a)所示。权重值也可以使用温度计代码、二进制代码或其他代码进行编码(即,权重w11可以被分成多个编码分量w111、w112等)。如图17(b)所示,对应于编码权重分量的单位晶格可以跨多个位线连接。相应位线的部分结果(例如y11和y12)由数字或模拟域中的列读出电路组合。对于温度计编码方案,权重的每个分量(例如w111、w112)对mac操作的结果具有相同的影响。然而,对于二进制或其他编码方案,每个权重分量对 mac 操作的结果具有缩放的影响。这种缩放可以在列读出电路1705内以数字方式完成。或者,表示单位晶格内权重值的物理参数(例如电导)可以被适当地缩放,以匹配编码方案。如图17(c)中所示,取代缩放物理参数的是,多个单位元件可以并行地使用在某些列中以匹配编码方案。也可以使用类似于图17(b)和图17(c)中所示的那些的技术来增加输入激活的分辨率。输入激活值也可以使用温度计、二进制或其他代码进行编码(例如,输入x1被分成多个编码分量 x11、x12等)。如图17(d)所示,这些输入值被提供给包含相同权重值并连接到相同位线的单位元件。例如,权重值 w
11
存储在单个列中的所有单位晶格中,这些单位晶格也连接到 x1的分量。对于温度计编码方案,输入的每个分量(例如x11、x12)对mac操作的结果具有相同的影响。然而,对于二进制或其他编码方案,每个输入分量对 mac 操作的结果可能具有缩放的影响。这种缩放可以通过适当缩放表示输入激活的物理参数(例如电压)以匹配编码方案来实现。相反,可以缩放表示存储在某些行中的单位元件中的权重值的物理参数(例如电导),以便缩放输入激活的各个分量的影响并匹配编码方案。或者,如图图17(e)所示,可以在某些行中并行使用多个单位元件,
以缩放输入激活的各个分量的影响并匹配编码方案。
82.如图17(f)和图17(g)所示,还可以使用在增加动态范围的同时提供针对电源噪声和变化的鲁棒性的差分技术。图17(f)示出了差分权重方案,其中互补权重值(例如w11和w11b)存储在连接到互补位线但连接到相同输入激活的单位元件中。互补位线(例如y1和y1b)的输出可以由列读出电路差分地读出。图17(g)示出了差分输入激活方案,其中在单独的字线上提供互补输入激活值(例如x1和x1b)。互补字线可以连接到存储相同权重值的单位元件,但连接到互补位线。如前所述,互补位线(例如y1和y1b)的输出由列读出电路差分地读出。
83.图17中描述的技术彼此兼容并且可以在相同的实现中使用。因此,各种权重方案可以可互换地使用。
84.在一个实施例中,例如图17(a)所示,可以使用多个单位晶格来增加存储权重的分辨率。在另一个实施例中,例如图17(b)所示,存储编码权重1701的分量的单位晶格1701可以连接到单独的位线。可以在模拟或数字域中的列读出电路中组合单独位线的部分结果。在另一个实施例中,例如图17(c)所示,多个单位晶格可以在一些列上并行使用以匹配编码方案。在另一个实施例中,例如图17(d)所示,编码输入激活可以应用于保持相同权重值并连接到相同位线的单位晶格,以便增加(多个)输入激活函数的分辨率。在另一个实施例中,例如图17(e),在一些行1703中可以并行使用多个单位晶格,以便缩放输入激活函数的影响并匹配编码方案。在图17(f)的实施例中,差分权重连接到单独位线。使用差分列读出电路读取位线上的差分输出。在图17(g)的实施例中,差分输入激活被提供给连接到单独位线的重复权重。使用差分列读出电路读取位线上的差分输出。该实施例还可以包括重置块1707。
85.行驱动器1703、阵列中的单位晶格和列读出1705电路一起工作以执行mac计算。行驱动器和列读出电路一起形成到 mac 引擎的接口。mac引擎的输入可以在多个可能域之一中表示,例如电压、电流、电荷或时间。可以使用相同的域或另一个域作为输出。例如,可以使用电压驱动器来提供沿字线的输入激活,并且可以使用电流读出电路来读取来自位线的输出。这些接口电路可以是静态的,其中只要应用新的输入,阵列的输出就会自然地稳定到 mac 操作值的输出,或者这些接口电路可以是动态的。在动态实现中,可以使用若干时钟相位来完成单个 mac 操作,例如在开关电容器方案中。接口电路也可以是基于时间的。例如,输入激活值可以在电压脉冲的宽度或持续时间方面被编码。
86.图18图示示出了示例接口电路。图18(a)示出了基于电压的行驱动器(例如,数模转换器(dac)后跟电压缓冲器),它在字线i上为每个输入值(in1、in2、in3等)提供新的静态电压v
xi
。图18(b)示出了基于电压脉宽调制(pwm)的方案,该方案提供具有与输入激活值成比例的可变宽度的电压脉冲。可以替代地使用脉冲密度调制(pdm)方案,其中与输入激活值成比例的多个脉冲被应用到字线。在 pdm 方案中,每个脉冲具有相同的宽度/持续时间。图18(c)示出了基于电流 pwm 的方案,该方案提供了具有与输入激活值成比例的可变宽度的电流脉冲i
xi
。对于每个输入,字线上发展的电压v
xi
取决于字线的电流电平、脉冲持续时间和阻抗。因此,基于电流的驱动器更适用于字线阻抗恒定(独立于输入激活或存储的权重值)的实现。也可以使用 pdm 方案来代替具有电流驱动器的pwm,以获得类似的效果。图18(d)示出了直接从位线j读取电压v
blj
或电流i
blj
的行读出电路。还可以使用跨阻(tia)放大器从位线j读出电流i
blj
,如图18(e)所示。tia 将位线电压v
blj
维持为虚拟接地,并且位线电
流通过阻抗zj分流以将值转换为电压。图18(f)示出了用作电荷积分器的电容性tia。电容性tia 可与开关电容器方案一起使用,以读出基于电荷的信号。如图18(g)所示,可以在位线上直接使用模数转换器(adc)将模拟值(例如电压、电流或电荷)转换为数字值,或者它可以跟随另一个放大器(以虚线示出)。图18(h)示出了差分读出方案(它可以基于图18(d-g)中所示的任何方案),读取相邻列或列组之间的输出量(例如,电压、电流或电荷)的差异。在差分实现中,互补权重存储在相邻列中的单位晶格中。
87.在mac引擎阵列内,单位元件促进输入激活和存储的权重值之间的乘法运算。此外,单位元件也可用作转导元件。它还可以从输入域(例如电压、电流或时间)转换为另一个域(例如电压、电流、电荷或时间),所述另一个域将通过共享位线累积并从 mac 引擎中读出。
88.在许多 nn 算法中,可训练偏置(偏移项)被添加到 mac 操作的输出。这可以在阵列结构(诸如图16所示的阵列结构)内通过将一行或多行单位元件专用于存储偏置参数并将适当的输入应用到相应的字线来促进。在输入到 nn 的下一层的输入之前,偏置也可以包括在列读出结构内部的模拟或数字电路内部,或者包括在 mac 单元之后的电路中。
89.图18图示了mac引擎的接口电路的实现的示例。例如,图18(a)是静态电压输入的图示。在另一个示例中,图18(b)图示了脉冲密度调制电压脉冲。在又一个实施例中,图18(c)图示了直接电压或电流读出。在另一个示例性实施例中,图18(d)示出了跨阻放大器读出。在另一个实施例中,图18(e)图示了用于基于电荷的读出的电容性跨阻放大器(电荷积分器)。在另一个图示(图18(g))中,adc可用于直接读出mac操作的结果或可跟随放大器。在又一个图示中,图18(h)利用相邻列或列组(j和j 1)之间的差分读出。
90.若干类型的随机存取存储器(ram)技术已用于混合信号imc nn处理器,例如 sram、电阻性ram(rram)或相变存储器(pcm)、磁阻性ram(mram)、铁电场效应晶体管(fefet)和闪速存储器。使用这些 ram 技术的存储器可以按任意顺序读取和更新。sram是一种易失性 ram 存储器技术,通常组织为具有六个、八个或更多晶体管的单位晶格,这些晶体管可以存储二进制权重值。此外,sram在大多数标准集成电路工艺中广泛可用,并且不需要任何特殊处理。除了闪速存储器之外,上面列出的其他技术也是新兴的非易失性存储器(称为 envm 或 nvram),并且可以存储二进制值、具有更多位分辨率的值或模拟值。这些不同 nvram 技术中的单位元件在物理上可能比sram晶格更小,可能会降低到该技术的最小特征尺寸(例如,以单个晶体管的尺寸的数量级)。然而,许多 nvram 技术仍在开发中,通常在标准集成电路工艺中不可用,并且具有更高成本。此外,由于这些 nvram 技术需要对诸如电阻之类的物理参数进行重新编程,因此它们具有稳定性、保持性、良率和漂移性能差的问题。
91.一次性可编程只读存储器(rom)可用于imc处理器的单位元件中。rom阵列可以在处理器制造期间或之后不久进行编程。基于rom的处理器可以使用该技术固有的组件在任何集成电路工艺中设计,并且在性能、安全性和成本方面具有优势。它们非常适合不需要在现场重新编程的应用,例如部署在物联网(iot)应用边缘的低成本传感器。对于其他应用,基于rom的计算单元也可以与包含 ram 的计算单元一起使用。大多数模型参数可以固定,同时为某些 nn 算法维持一组专用的可重新编程的任务特定参数。这可以在基于imc的处理器中通过以下方式实现:将大部分模型参数存储在基于 rom的计算单元内部,使用诸如
sram 之类的技术将较少数量的任务特定参数存储在基于 ram 的计算单元中。这种方法维持了基于 rom的imc架构的大部分优点,同时允许任务专业化的可编程性,从而应对随时间变化的操作条件以及在边缘进行训练。
92.图19图示了cmos半导体工艺的示例。基于imc rom的计算单元中的权重值在制造期间或制造后不久可一次性编程。cmos半导体工艺中的后段制程(beol)电气互连(图19 所示)用于启用可编程性。例如,金属连接、与硅基器件(例如晶体管、电阻器或二极管)的接触或金属层之间的通孔可用于重新配置存储在 nn 中的权重。这可以在前段制程(feol)处理完成后通过更改用于定义beol工艺中的金属、接触或通孔层的光刻掩模来廉价地完成。最后,有可能能够存储部分处理的cmos晶片以供以后配置。晶片处理可以在处理层(例如金属层、接触层或通孔层)之前停止,并可用于定义存储在基于 rom的计算单元中的权重。在这一点上,可以存储晶片以供以后在处理其余层时进行编程。这使得能够以低成本快速生产不同版本的基于 rom的计算单元,只需更改少量掩模或甚至仅单个掩模层。
93.如所示的,典型cmos半导体工艺的横截面示出了包含硅制造器件——电阻器、晶体管、电容器的前端制程(feol)。后段制程(beol)也是这样,它定义了芯片上的电气互连。注意,beol 层堆叠通常还可以包含电气器件,例如电容器、电感器、电阻器等。在更先进的工艺中,beol 层堆叠还可以具有非易失性存储器,例如pcm、rram和3d nand闪存。
94.图20图示了单位晶格与字线2001和位线2003的连接之间的实施例的各种示例。例如,在图20(a)中,实施例图示了连接到位线2003和字线2001两者的单位晶格2005。在图20(b)中,改变金属连接以便改变存储在晶格中的权重值。在图20(c)中,实施例示出了类似的示例,其中接触或通孔连接2007被改变以便改变权重值。因此,通过移除触点或通孔连接来改变单位晶格权重。或者,可以修改单位晶格内的内部金属连接,以便对存储在单位晶格中的权重进行编程。例如,如图20(d)所示,金属层连接可用于连接到零个、一个或多个连接选项(例如 c1、c2或 c3)。在这样的实施例中,通过选择内部金属连接2009来改变权重。图20(e)示出可以使用接触或通孔连接代替金属层连接。一次性可编程电熔丝也可用于对权重值进行编程,但是,这些可能不如使用金属、接触或通孔编程那样面积有效。
95.使用图20中所示的方法编程的基于rom的计算单元也可以与图17中所示的实现以及上文描述和图18中所示的读出方案兼容。例如,图17(a)所示的方案,其中多个单位晶格并联,可以与图20(d)和图20(e)所示的编程方法组合。无源(例如,电阻器和电容器)和/或有源(例如,晶体管)元件可以包括在单位晶格中,其中存储的权重值确定它们如何互连。例如,为了存储权重值“3”,三个晶体管可以并联并且连接到字线和位线。代替多个晶体管,还可以使用根据期望权重重新配置的单个晶体管的多个指。
96.基于存储器内计算(imc) rom的计算单元可能有多种实现。这些可能涉及晶体管和/或无源元件(电阻器和电容器)的组合。这些实现中的每一个都利用了在广泛使用的标准集成电路工艺中普遍可用的元件,不需要专门的技术,并因此可以以低成本实现。此外,由于这些实现在技术中使用了建模良好的组件,因此与上面提到的实验或新兴技术(例如 rram 和 mram)相比,它们的性能是鲁棒的并且可以得到保证。晶体管和无源元件可以按照技术中最小特征尺寸的数量级制造,从而允许这些实现非常紧凑并且具有低面积开销,这直接转化为低成本。下面将描述基于rom的计算单元的若干具体实现及其操作。这些主要通过 rom中单位元件的结构来区分,如下文进一步讨论的。
97.由于这些原因,基于 rom的imc单元与其他技术相比具有以下优势。例如,它们不会遇到稳定性、保持性、良率或漂移问题,这些问题对于用非易失性存储器技术(如pcm、rram、mram、fefet 或闪存)的长寿命操作来说可能是个问题。此外,基于 rom的imc单元不会遇到在如sram的技术中消耗大量静态功率的泄漏电流。
98.可以使用在所有集成电路工艺中广泛可用的元件(例如电阻器、电容器和晶体管)来设计基于 rom的单位晶格,并且基于rom的单位晶格不需要高成本的专门技术。rom单位元件可以以高密度制造,尺寸以单个晶体管的数量级,进一步降低成本并允许需要大量(例如数百万)参数存储在单个芯片上的算法。
99.可以不需要电路来对单位元件进行编程,从而节省面积、成本和功率。基于 rom的计算单元可以提供机密性,因为不包括用于直接重新编程或读取存储器的电路,并因此很难将模型参数(和算法)复制出计算单元。出于类似的原因,基于 rom的计算单元也可以具有高完整性和真实性。因此,在部署传感器后,可能无法对存储的模型参数进行重新编程,从而使计算单元防篡改。
100.基于 rom的计算单元可以单独使用 beol 金属、接触或通孔连接进行编程。如果使用一层(例如顶部或最后一个金属层)或少量层来对计算单元进行编程,则晶片可以被制造直到编程层并被存储。期望时,beol 处理可以通过仅更改一个掩码或少量掩码来完成,以便用更新的或不同的算法制造计算单元,以用于提高性能、任务专业化或全新的应用。这可以以低成本完成,因为只需要对少量掩模或甚至单个掩模进行修改。
101.使用图21-34 中所示的基于rom的元件的以下所有计算单元实现都可以使用如图20 所示的金属、接触或通孔连接进行编程。为了说明每种实现的操作,使用单极权重编码(例如“0”或“1”的权重值)和每种实现单个接口方案给出示例。使用图17中示出的方案,其他权重编码(例如双极权重(例如
“‑
1”或“1”的权重值)或多位权重值)是可能的。可能使用其他接口方案,例如图18中的不同变体。编码方法和接口(驱动器和读出方案)的选择将取决于技术限制以及性能度量,例如面积、成本、时延、吞吐量和信噪比。
102.图21图示了利用第一实现的基于单个晶体管(1t)rom的计算单元的示例。单个晶体管可用作 rom单位元件,其存储二进制权重值,例如“0”或“1”。这可以通过若干实现来完成。图21图示了第一实现,其中可以用作单位元件的单个nmos晶体管2103具有连接到字线的第一(漏极)端子和连接到位线的第二(源极)端子。示出了n乘m阵列的三乘三阵列子部。可以使用pmos 晶体管代替nmos器件。此外,源极和漏极端子连接可以切换。权重可以在晶体管的栅极连接中编码为电压v
on
或电压v
off
。如果晶体管m
i,j
的栅极被连接到v
on
,则器件导通,并且相应的存储权重w
i,j
可以被认为是“1”。晶体管可以充当具有有效电阻和电导的电阻器。或者,如果晶体管栅极连接到v
off
,则器件可以截止,并且w
i,j
被认为是“0”。也可以通过使栅极连接到v
on
并将一个或两个端子从字线或位线断开连接而将权重设置为“0”。晶体管可以充当具有有效电阻和电导的电阻器。这样的实现还可以与图17中所示的用于增加输入激活或权重以及差分运算的分辨率的技术兼容。电导值与权重值之间的关系可用下式描述:
项g
scale
可以是将权重转换为电导的缩放因子,并且g
offset
是也可以等于零的偏移。
103.如上所述,行驱动器和列读出电路可能有多种可能的实现(基于电压或电流,静态或动态)。在一个实施例中,单个可能的驱动和读出方案可以是示例(静态、基于电压的输入激活和电流读出)。在该实现中,重置块是不需要的,并可以省略。仅考虑单个位线和列(对应于 nn 中的单个神经元),乘法运算是通过沿字线应用输入激活(xi)作为电压(v
xi
)2101来执行的,该电压可以携带二进制信息(数字)或多位信息(高至模拟值):项v
xscale
是将激活值转换为电压的缩放因子,并且v
xoffset
项是也可以等于零的偏移。激活电压在晶体管中生成与其有效电导成比例的电流,并因此代表与存储的权重值的乘法:如果列中每个晶体管的第二端子连接到跨阻放大器输入处的同一位线(如图18 所示)并保持在恒定电压电平(v
bl
),则电流求和表示累积运算:在使用二进制权重值的示例实现中,其中g
offset
=0、v
blj
=0v、v
xoffset
=0v,组合方程(方程)18、19 和21给出:方程22中的求和2109表示整个mac操作。可以使用跨阻放大器将电流转换为电压,并然后在后续的模数转换器级中对其数字化。或者,电流可以使用电流输入adc直接被数字化或缓冲并传递到后续级。在阵列的每一列(神经元)中使用存储在该列中的权重执行此操作。电路还可包括重置块2107。
104.图22图示了使用单个晶体管作为单位元件的替代实现。在本实施例中,晶体管栅极端子连接到字线,第一端子(漏极)连接到位线,并且第二端子(源极)连接到参考电压。示出了n乘m阵列的三乘三阵列子部。可以使用pmos 晶体管代替nmos器件。此外,源极和漏极端子连接可以切换。该参考电压可以示出为信号接地,但也可以是另一个电压,这取决于系统设计。权重可以通过在cmos工艺中使用金属、接触或通孔连接将栅极、漏极或源极中的一个或多个与字线、位线或参考电压连接或断开连接来编码在单位晶格中(图22中的虚线)。当所有这些端子都连接时,存储在晶体管m
i,j
中的权重w
i,j
为“1”。取决于晶体管的偏置方案,有多种方式对权重对器件参数的影响进行建模。如果晶体管在三极管区域中偏置,则可以将其建模为具有有效电阻和电导的电阻器。或者,如果晶体管在饱和或亚阈值区域中偏置,则可以将其建模为提供电流的电流源。如果任一端子断开连接,则存储在晶体管m
i,j
中的权重w
i,j
为“0”。如果晶体管在三极管区域中偏置,则可以将其建模为具有有效电阻和电导的电阻器(如果端子与位线或参考电压断开连接,则r
off
可能非常大)。或者,如果晶体管在饱和或亚阈值区域中偏置,则可以将其建模为提供电流的电流源。该实现还与图17中所示的用于增加输入激活或
权重以及差分运算的分辨率的技术兼容。对于“导通”晶体管处于三极管区域并建模为阻抗的情况,电导值和权重值之间的关系可以使用方程18来描述。
105.如上所述,行驱动器和列读出电路有多种可能的实现(基于电压或电流,静态或动态)。在这里,对于晶体管在三极管区域2203中被建模为阻抗的情况,我们将仅描述单个可能的驱动和读出方案作为示例(静态、基于电压的输入激活和电流读出)。在该实现中,重置块是不需要的,并且可以省略。输入激活xi可以在电压v
xi
中编码,如上文和方程19中所述。电压v
xi
(示出为电压2201)可以采用进一步调制晶体管电导的模拟值。或者,v
xi
可以是只有两个电平(低或高,分别对应于xi=0和xi=1)的数字信号。在v
xi
为低的情况下,晶体管总是截止,而不管权重值如何。通过单位元件的电流对应于激活和权重的乘积,并由下式描述:仅考虑单个位线和列(对应于 nn 中的单个神经元),来自单位元件的所有电流如上所述沿位线求和:组合方程24与方程1 8并使用,给出:在该实现中,电压v
bl
不能也为0v并且必须不同于连接在每个晶体管的源极处的参考电压,以便生成电流。方程25中的求和2109表示整个mac操作。可以使用跨阻放大器将电流变换为电压,并然后在后续的模数转换器级中对其数字化。或者,电流可以使用电流输入 adc 直接数字化或缓冲并传递到后续级。在阵列的每一列(神经元)中使用存储在该列中的权重执行此操作。
106.图23图示了使用单个晶体管作为单位元件的替代实施例。在本实施例中,晶体管栅极端子连接到字线,第一端子(漏极)连接到位线,并且第二端子(源极)连接到一组参考电压中的一个。示出了n乘m阵列的三乘三阵列子部。可以使用pmos 晶体管代替nmos器件。此外,源极和漏极端子连接可以切换。通过选择可能的参考电压之一并将其连接到晶体管来编程权重,其中每个电平对应于单个权重值。示出了三个参考电压2303( v
ref1
、v
ref2
和v
ref3
),然而可以使用任何整数(p)个参考电压。更多的参考电压电平启用更大数量的权重水平(更高的分辨率),而更少的参考电压只允许更小数量的权重水平(更低的分辨率)。可能允许晶体管与对应于一个附加电平的所有参考电压(总共p 1)断开连接。该实现还与图17中所示的用于增加输入激活或权重以及差分运算的分辨率的技术兼容。参考电压电平可以从任何分布取得(即它们可能不是均匀间隔的),但是可以使用线性分布。单独单位晶格中的参考电压电平v
refi,j
对应于权重水平w
i,j
,并且可以用以下表达式来描述:项是将权重值转换为电压电平的缩放因子,并且是也可以等于零的偏移项。在这种情况下,我们可以将晶体管m
i,j
的电阻和电导分别建模为常数值:r0和g0。
107.如上所述,行驱动器和列读出电路有多种可能的实现(基于电压或电流,静态或动
态)。在这里,我们将仅描述单个可能驱动和读出方案作为示例(静态、基于电压的输入激活和电流读出)。在该实现中,重置块是不需要的,并且可以省略。输入激活xi可以编码在电压v
xi
(示出为 2301)中,如上文和方程19中所述。电压v
xi
可以采用调制晶体管电导的模拟值。或者,v
xi
可以是只有两个电平(低或高,分别对应于xi=0和xi=1)的数字信号。在v
xi
为低的情况下,晶体管总是截止,而不管权重值如何。通过单位元件的电流对应于激活和权重的乘积,并由下式描述:仅考虑单个位线和列(对应于 nn 中的单个神经元),来自单位元件的所有电流如上所述在位线中求和:组合方程28与方程26并使用和,给出:方程29中的求和2309表示整个mac操作。可以使用跨阻放大器将电流变换为电压,并然后在后续的模数转换器级中对其数字化。或者,电流可以使用电流输入 adc 直接数字化或缓冲并传递到后续级。在阵列的每一列(神经元)中使用存储在该列中的权重执行此操作。
108.图24图示了利用单个电容器作为单位元件的基于rom的mac阵列的实现。示出了n乘m阵列的三乘三阵列子部。一个端子连接到位线,并且一个端子连接到字线。权重在端子的连接中编码。对于二进制权重值(例如w
i,j
为“0”或“1”),两个端子都连接或一个或两个端子断开连接。当两个端子都连接时,存储的权重w
i,j
=1,否则w
i,j
=0。到字线的连接可以是可编程的,如虚线所示,但是可以替代地使用位线连接或两个连接。可以并行使用更多的电容器以便具有另外的权重水平。这种实现还与图17中所示的用于增加输入激活或权重以及差分运算的分辨率的技术兼容。电容器值可以用权重水平编码,并且可以描述为:项cu是将权重值转换为电容的缩放因子,并且c
offset
是也可以等于零的偏移项(例如固定寄生电容)。注意,如果仅使用具有二进制权重值(“0”或“1”)的单个单位电容器,则cu为单位电容。如果仅单个电容器用于二进制权重值,则c
i,j
可以取的最大值定义为c
max
并表示电容和c
offset
的求和。如果在每个单位元件中使用k个电容器来提供k 1个权重水平,则c
max
等于所有电容器以及c
offset
的求和。通常,,其中w
max
是最大可能权重值。
109.如上所述,行驱动器和列读出电路可以有多种可能的实现(基于动态电压、电流、电荷或时间)。在一个实施例中,系统公开了单个可能驱动和读出方案作为示例(动态、基于电压的输入激活和基于电压的读出)。在本实施例中,使用重置块。输入激活xi可以编码在电压v
xi
(示出为 2401)中,如上文和方程19中所述。电压 v
xi
可以采用模拟值。或者,v
xi
可以是只有两个电平(低或高,分别对应于xi=0和xi=1)的数字信号。最初,所有的字线都被设置为重置电压v
xreset
,并且重置块(其也可以与读出电路集成)用于将位线电压重置为电压vr。
在下一步中,位线被释放并且输入激活电压v
xi
在字线上被断言。输入激活电压和电容值一起导致来自每个单位元件的小电荷沿相应的总位线电容共享:连接到位线的总电容cr由下式给出:项c
bl
表示连接在位线上的任何附加固定电容。仅考虑单个位线和列(对应于 nn 中的单个神经元),在位线上发展的总电压v
blj
与所有的总和和涉及v
xreset
和vr的因子成比例:组合方程19、30和33,以组合方程19、30和33,以和,给出:方程34中的求和表示整个mac操作。可以使用电压-电压缓冲器或放大器从每个位线读取该电压,并然后在后续模数转换器级中对其数字化。在阵列的每一列(神经元)中使用存储在该列中的权重执行此操作。从方程32要注意,电容cr取决于权重值,并因此扩展方程34 给出:根据方程35,分母中有涉及所有权重值的总和的附加项,其将把误差引入 mac 操作。如果所有权重的求和2409的结果是可预测的和/或具有最小变化,则可以在系统级别或在训练要在计算单元上运行的神经网络算法期间校准此误差,以便使其可忽略不计。
110.图25图示了利用单个电容器作为单位元件的基于rom的mac阵列的替代实施例,其解决了前面部分中提到的问题。在该实施例中,电容器的端子之一连接到字线或连接到示出为接地的参考电压,但可以是任何其他电压电平。在该实施例中,位线上的总电容与权重值无关并且由方程36在下面给出:通过使用与先前实现所描述的相同的基于动态电压的输入激活和基于电压的读出方案,在对于c
t
使用方程36(假设)时,可以导致位线电压v
blj
与方程34相同的表达式。该求和可以表示整个 mac 操作,并且不存在基于所有权重值的总和2509的误差项或相关性。可以使用电压-电压缓冲器或放大器从每个位线读取该电压,并然后在后续模数转换器级中对其数字化。在阵列的每一列(神经元)中可以使用存储在该列中的权重执行该操作。
111.图26(a)图示了在单位元件中利用单个晶体管和单个电容器的基于rom的mac阵列的实现。电容器可以是与晶体管分离的元件或者可以是电容之一,例如源极(或漏极)二极管电容本身。示出了n乘m阵列的三乘三阵列子部。晶体管和电容器串联在每个字线和位线
之间。可以切换晶体管和电容器的顺序。可以使用 pmos 晶体管代替 nmos 器件。此外,源极和漏极端子连接可以切换。权重在晶体管的栅极连接中被编码为电压或电压。在该实现中,每个晶体管充当开关,打开或关闭位线和字线之间相应电容器的分流连接。晶体管电导值并不重要,但它应该足够高,以取决于所期望的操作频率以电容器值进行适当的动态稳定。如果晶体管的栅极被连接到,器件导通并且相应的存储权重被认为是“1”。或者,如果晶体管栅极连接到,则器件截止并且被认为是“0”。该实现还与图17中所示的用于增加输入激活或权重以及差分运算的分辨率的技术兼容。晶体管充当一次性可编程压控开关,其打开或关闭字线和位线之间电容器的分流连接。因此,上述电路(例如,图26)可以以与图24相同的方法建模。权重修改单位元件的有效电容,如使用方程30的位线通过晶体管的栅极状态所看到的。
112.如上所述,行驱动器和列读出电路有多种可能的实现(基于动态电压、电流或电荷)。该实现可以遵循与上面针对图24的电路描述的相同的动态输入激活和基于电压的读出来操作。方程 31-35 可用于计算给定一组输入激活和权重值的 mac 操作的输出。可以使用电压-电压缓冲器或放大器从每个位线读取该电压,并然后在后续模数转换器级中对其数字化。可以在阵列的每一列(神经元)中使用存储在该列中的权重执行该操作。分母(方程 18)中可能还有涉及所有权重值的总和的附加项,其将把误差引入 mac 操作。如果所有权重求和的结果是可预测的和/或具有最小变化,则如前所述该误差可以在系统级别校准并且是可忽略不计的。
113.图26(a)中单位晶格的替代实施例示于图26(b)中,其可以解决取决于权重值的c
t
的问题。在单位晶格的这种实现中,包括到参考电压(示出为接地,但它可以是另一个电压)的额外的电位金属、接触或通孔连接,其仅在晶体管的栅极连接到的情况中被连接。否则,该实现与图26(a)中所示的实现相同。这样,每个位线的总电容保持恒定,与权重值无关,并由方程36给出。
114.图27(a)图示了使用单个晶体管和电容器作为单位元件的替代实现。示出了n乘m阵列2703的三乘三阵列子部。晶体管和电容器可以串联在每个位线和示出为接地的参考电压之间,但是可以使用另一个参考电压。可以切换晶体管和电容器的顺序。可以使用 pmos 晶体管代替 nmos 器件。此外,源极和漏极端子连接可以切换。通过在 cmos工艺中使用金属、接触或通孔连接将晶体管栅极、晶体管漏极、晶体管源极或电容器端子中的一个或多个与字线、位线或参考电压连接或断开连接,在单位晶格中对权重进行编码(如图27(a)中的虚线所图示)。当所有这些端子都连接时,存储在单位晶格中的权重为“1”。如果任何端子断开连接,则存储在晶体管中的权重为“0”。该实现还与图17中所示的用于增加输入激活或权重以及差分运算的分辨率的技术兼容。与之前的电容性实现类似,权重修改单位元件的有效电容,如方程30中那样通过基于权重值的位线所看到的。
115.如上所述,行驱动器和列读出电路有多种可能的实现(基于动态电压、电流、电荷或时间)。在一个实施例中,仅以单个可能驱动和读出方案为示例(动态、基于电压的输入激活和基于电压的读出)。在该实现中,使用了重置块。输入激活xi可以在电压v
xi
中编码,如上文和方程19中所述。v
xi
是只有两个电平(低或高,分别对应于xi=0和xi=1)的数字信号。对于
低电压电平,晶体管截止,而对于高电平,晶体管导通(连接位线和参考电压之间的电容器)。最初,通过使用重置块(它也可以与读出电路集成),所有激活v
xi
在字线上被断言,并且位线被预充电到电压vr。在下一步中,位线被释放并且所有字线被断言为高电压电平,使得所有晶体管都导通。输入激活电压和单位电容值一起导致来自每个单位元件的小电荷沿着相应的总位线电容共享:连接到位线的总电容c
t
由方程32给出。仅考虑单个位线和列(对应于 nn 中的单个神经元),在位线上发展的总电压与所有的总和和涉及重置电压vr的因子成比例:组合方程30和38,在并且的情况下,给出:方程39中的求和表示整个mac操作。可以使用电压-电压缓冲器或放大器从每个位线读取该电压,并然后在后续模数转换器级中对其数字化。在阵列的每一列(神经元)中使用存储在该列中的权重执行此操作。从方程32注意到,电容c
t
取决于权重值,并因此扩展方程39 给出:这类似于图24 中所示的实现的方程35。分母中还有涉及所有权重值的总和的附加项,其将把误差引入 mac 操作。如果所有权重求和的结果是可预测的和/或具有最小变化,则如前所述该误差可以在系统级别校准并且是可忽略不计的。
116.图27(a)中单位晶格的替代实施例示于图27(b)中,其解决取决于权重值的c
t
的问题。类似于图27(a),当晶体管栅极连接到位线、它的源极连接到参考电压(例如接地)、它的漏极连接到电容器并且电容器连接到位线时,存储在单位晶格中的权重值为“1”。为了存储“0”值,晶体管不连接到电容器,而是将电容器连接到参考电压(示出为接地,但它可以是另一个电压)。该实现可以与图27(a)所示的实现相同。以这种方式,每个位线的总电容可以保持恒定,与权重值无关,并且由方程36给出。
117.图28图示了在单位元件中使用两个晶体管和电容器的实现。示出了n乘m阵列的三乘三阵列子部2805。电容器连接到相应的位线,并且一个晶体管的栅极连接到字线。同一个晶体管将电容器的另一端连接到一组参考电压中的一个。示出了三个参考电压(、和),但是可以使用任何整数(p)个参考电压。更多的参考电压电平允许更大数量的权重水平(更高的分辨率),而更少的参考电压电平只允许更小数量的权重水平(更低的分辨率)。另一个晶体管将两个晶体管和电容器之间共享的节点连接到另一个参考电压vy。第二个晶体管的这个栅极连接到电压信号v
set
,该电压信号可以导通和截止晶体管。可以使用 pmos 晶体管代替 nmos 器件。此外,可以切换源极和漏极端子连接。通过在cmos工艺中使用金属、接触或通孔连接来连接或断开连接p个参考之一,在单位晶格中对权重进行编码。
每个单位元件中只应连接一个参考电压。这种方法允许在每个单位元件内部编码许多(p个)权重水平。此外,可能允许晶体管与所有参考电压断开连接,从而提供一个附加的电平(总共p 1个)。可以使用垂直堆叠的金属层贯穿 mac 阵列提供参考电压,以便节省面积并允许高密度单位元件,该高密度单位元件也可以支持任意高的权重精度。参考电压电平可以从任何分布取得(即它们可能不是均匀间隔的),但是通常可以使用线性分布。单独单位晶格中的参考电压电平对应于权重水平,并且可以通过方程26中的表达式来描述。该实现还与图17中所示的用于增加输入激活或权重以及差分运算的分辨率的技术兼容。例如,如针对先前实现所述的,电容器也是使用金属、接触或通孔连接可编程的。如果电容器不可编程,则其具有值c0。
118.如上所述,行驱动器和列读出电路有多种可能的实现(基于动态电压、电流或电荷)。在这里,我们将仅描述单个可能驱动和读出方案作为示例(动态、基于电压的输入激活和基于电压的读出)。在该实现中,使用了重置块。输入激活xi可以在电压v
xi
中编码,如上文和方程19中所述。v
xi
可以是只有两个电平(低或高,分别对应于xi=0和xi=1)的数字信号。对于低电压电平,晶体管截止,而对于高电平,晶体管导通(连接位线和所选参考电压之间的电容器)。最初,通过使用重置块(它也可以与读出电路集成),在字线上断言所有激活v
xi
,v
set
被拉低以使第二晶体管截止,并且位线被预充电到电压vr。在下一步中,位线被释放,并且所有的字线都被拉至低电压电平,使得所有的晶体管都截止。然后v
set
被拉高以便将电压vr连接到电容器。考虑单位晶格电容器固定在c0的情况,此过程导致来自每个单位元件电容的小电荷沿相应的总位线电容共享:连接到位线的总电容c
t
给出为:在这种情况下,c
t
不依赖于权重值。仅考虑单个位线和列(对应于 nn 中的单个神经元),在位线上发展的总电压v
blj
与所有的总和以及涉vy和vr的因子成比例:组合方程26 和 43,在、、并且的情况下给出:方程44中的求和表示整个mac操作。注意,在这种场景下,操作是反相的。可以使用电压缓冲器或放大器从每个位线读取该电压,并然后在后续模数转换器级中对其数字化。在阵列的每一列(神经元)中使用存储在该列中的权重执行此操作。
119.图29图示了基于单个晶体管和单个电容器rom的计算单元的实施例。该实现与图28中的实现相同,除了省略了连接到vy的晶体管之外。
120.如上所述,行驱动器和列读出电路有多种可能的实现(基于动态电压、电流或电荷)。在一个实施例中,可以使用与针对图28描述的方案类似的单个可能驱动和读出方案作
为示例(动态、基于电压的输入激活和基于电压的读出)。在该实现中,使用了重置块。输入激活xi可以在电压v
xi
中编码,如上文和方程19中所述。v
xi
可以是只有两个电平(低或高,分别对应于xi=0和xi=1)的数字信号。对于低电压电平,晶体管截止,而对于高电平,晶体管导通(连接位线和所选参考电压之间的电容器)。最初,所有激活v
xi
在字线上被断言。通过使用重置块(它也可以与读出电路集成),位线被预充电到电压vr。在下一步中,通过使用阵列外部的驱动器,位线被释放并且所有字线被拉至高电压电平(使得所有晶体管都导通)并且所有参考电压电平都被设置为相同的电压电平vy。在读出阶段期间,所有单位电容器将连接在位线和电压vy之间。以此方式,该实现以与图28的实现相同的方式操作,并且mac计算可以由以下方程41-44表示。可以使用电压缓冲器或放大器从每个位线读取输出电压,并然后在后续模数转换器级中对其数字化。在阵列的每一列(神经元)中使用存储在该列中的权重执行此操作。
121.图30图示了使用单个电阻器作为单位元件的基于rom的mac阵列的实施例。示出了n乘m阵列的三乘三阵列子部。在电阻器与字线和/或位线的连接中对权重进行编码。对于二进制权重值(例如,是“0”或“1”),端子要么连接到字线和位线二者(对于),要么与字线和/或位线断开连接(对于)。可以并行使用更多的电阻器以便具有另外的权重水平。该实现还与图17中所示的用于增加输入激活或权重以及差分运算的分辨率的技术兼容。电阻器的电导值用权重水平编码,并且可以使用方程18来描述,与用于图21中的实现相同。
122.如上所述,行驱动器和列读出电路有多种可能的实现(基于电压或电流,静态或动态)。在这里,我们将仅描述单个可能驱动和读出方案作为示例(静态、基于电压的输入激活和电流读出)。在该实现中,重置块是不需要的,并且可以省略。仅考虑单个位线和列(对应于 nn 中的单个神经元),乘法运算是通过将输入激活(xi)作为电压(v
xi
)沿字线应用来执行的,该电压可以携带二进制信息(数字)或多位信息(模拟值),如方程19中那样。
123.使用方程20、21和22描述的 mac 操作可以与针对图21描述的相同。可以使用跨阻放大器将列电流变换为电压,并然后在后续的模数转换器级中对其数字化。或者,电流可以使用电流输入 adc 直接数字化或缓冲并传递到后续阶段。在阵列的每一列(神经元)中使用存储在该列中的权重执行此操作。
124.如上所述,在相同的基于imc的处理器中,基于rom的计算单元可以与基于ram的计算单元一起使用。基于rom的计算单元可以是前面部分中提到的任何一种实现。此外,可以使用上文提到的任何类型的ram(或 nvram),例如 sram、rram、pcm、mram、feram 或闪存。通过将大部分固定模型参数存储在rom元件内部,可以维持基于rom的计算单元在性能、可靠性和安全性方面的优势。较小的存储器子集可以存储可以在 ram 中重新编程的任务特定参数。该方案维持了 ram 的大部分优点,同时允许任务专业化、部署后更新以应对不同的操作条件或改进算法,以及在边缘进行训练。
125.图31图示了用于任意机器学习算法的基于imc的处理器内的计算单元的若干实施例。机器学习算法可以包括若干层,每一层都包含多个神经元。不同类型的计算单元可以用于不同的层,如图31(a)所示,其中基于 rom的计算单元用于计算层u,并且基于 ram 的计算用于层u 1。这两个层的顺序可以颠倒,并且可以在基于ram或不同类型的imc计算单元
可以在连续层中交错之后使用基于rom的计算单元。图31(b)示出了一种实现,其中在神经网络中的同一层内使用多种类型的计算单元进行计算。图31(c)和图31(d)示出了使用包含混合 rom和 ram 计算单元的计算单元来实现层的示例。
126.这可以通过使用在同一位线上的模拟域中直接连接的多种类型的存储器来实现,如图32(a)和图32(b)中所示,其中一次性可编程晶体管与基于诸如 rram、pcm 或 mram 之类的 ram 类型的单位晶格一起使用。在图32(a)中,不同类型的单位晶格的相邻块连接到同一位线。在图32(b)中,不同类型的单位晶格被交错并连接到同一位线以进行模拟求和。或者,可以使用具有不同类型存储器的多列,如图32(c)和图32(d)所示,其中mac计算的结果分别在模拟域和数字域中组合。基于rom的单位晶格和/或基于ram的单位晶格的数量可因列而异。上面描述和图32中所示的技术相互兼容。图32中所示的实现还与图17中所示的用于增加输入激活或权重以及差分运算的分辨率的技术兼容。
127.图33(a)图示了组合rom和ram的计算单元的实施例。该实现使用图21中介绍的基于晶体管的(1t)rom拓扑和图33(b)中所示的标准六晶体管(6t)sram结构。和可以分别是高和低电源电压。也可以使用其他标准sram结构,例如七晶体管(7t)、八晶体管(8t)或十晶体管(10t)结构。图33(a)中示出了n乘m阵列的四乘四子集。可以使用基于rom的单位晶格与基于sram的单位晶格的任何比例。可以使用 pmos 晶体管代替 nmos 器件。此外,可以切换源极和漏极端子连接。如上所述,权重通过金属、接触或通孔连接在 rom单位晶格中一次性编程。使用特定控制信号(sel)和专用附加位线(分别为正和负sram位线的 p 和 n)在基于sram的单位晶格中对权重进行编程。如果权重值“1”存储在单位晶格的sram中,则相应晶体管的栅极连接到。相反,如果权重值“0”存储在单位晶格的sram中,则相应晶体管的栅极连接到。对于 rom元件和基于sram的元件二者,权重可以被认为是在连接在字线和位线之间的晶体管的电导中编码的,如方程(1)中所述。
128.如上所述,行驱动器和列读出电路有多种可能的实现方式(基于电压或电流,静态或动态)。例如,可以使用静态的、基于电压的输入激活和电流读出,如针对图21中的实现所描述的。对于这样的方案,单独列的整个 mac 操作遵循方程19-22来描述并且如上所述那样来描述。可以使用跨阻放大器将电流变换为电压,并然后在后续的模数转换器级中对其数字化。或者,电流可以使用电流输入 adc 直接数字化或缓冲并传递到后续阶段。在阵列的每一列(神经元)中使用存储在该列中的权重执行此操作。
129.在一些实现中,基于sram的单位晶格可以仅包括在一些列中而不是所有列中。例如,sram 可以只包括在每隔一列中,如图33(c)所示。由于单位晶格中sram的存在需要附加的晶体管,因此该方法可用于减少总面积和成本,同时仍维持一定程度的可编程性。另外,可以使用差分实现,如图33(d)所示。在此实现中,sram 单元的差分输出用于控制阵列中相邻列中晶体管的栅极。相邻列中相应的基于 rom的单位晶格也必须如所示进行差分编码。读出电路也必须是差分实现,读取相邻列之间的输出量(例如,电压、电流或电荷)的差异。该实现还与图17中所示的用于增加输入激活或权重以及差分运算的分辨率的技术兼容。这些实现也与图21所示的变体兼容。
130.图33(a)图示了在与基于sram的单位晶格相同的imc阵列中使用的基于1t rom的单位晶格的实施例,其中在位线上进行模拟求和。图33(b)图示了使用和作为高和低
电源电压电平的标准6t单位晶格的实施例。图33(c)图示了可以在一些列中省略基于sram的单位晶格以便节省面积和成本的示例。图33(d)图示了差分实现,其中使用单个sram为相邻列中的晶体管提供互补值。
131.图32和图33中示出的实施例只是示例实施例,并且上述基于rom的元件和基于ram的元件的其他组合也是可能的。混合rom/ram 架构的选择将通过优化性能度量(如面积、功耗、时延、吞吐量和信噪比)来确定。
132.若干基于rom的imc阵列(例如图24和图25中所示的具有电容性实现的那些实施例)可以整体在集成电路工艺的金属层中制造。此外,可以有可能整体在金属层中制造某些类别的基于ram 的imc阵列,例如用于rram 或pcm。此特征允许imc计算单元的3d集成,启用更高密度的权重存储和计算,其节省成本并提高性能。
133.图34(a)图示了基于3d堆叠rom的imc阵列的实施例,其中衬底层中具有imc阵列并且金属层中具有一个或多个imc阵列。图34(b)图示了一个或多个基于rom的imc阵列可以3d堆叠在衬底中基于ram的imc阵列上方的金属层中。图34(c)图示了一个或多个基于rom的imc阵列可以3d堆叠在金属层中,其中一个或多个基于ram的imc阵列位于衬底中的基于rom的imc阵列上方。图34(d)图示了一个或多个基于rom的imc阵列可以3d堆叠在金属层中,其中一个或多个基于ram的imc位于衬底中的另一个基于ram的imc阵列上方。
134.如图34(a)所示,一个或多个基于rom的imc阵列(例如,图24和图25的实施例)可以3d堆叠在使用衬底层和下金属层的另一个基于rom的imc阵列(例如,图21-23和26-29中基于晶体管的实现的实施例)上方的金属层中。衬底层可以是半导体材料层,其可以是硅晶片或其他类型的材料。如图34(b)所示,一个或多个基于rom的imc阵列可以基于诸如sram之类的技术3d堆叠在衬底基于ram的imc阵列上方。一个或多个金属层基于ram 的imc阵列可以是 3d 堆叠的,有或没有金属层基于 rom的imc阵列位于衬底基于 rom的imc阵列上方(图34(c))或衬底基于 ram 的imc阵列上方(图34(d))。
135.图35图示了具有基于神经网络的分类器的“边缘”感测设备的示例,该分类器对有限数量的类进行分类以触发唤醒功能,该唤醒功能进而启用大数据传输以进一步处理到云。图35(b)是可以在神经网络内施行的典型矩阵乘法和加法运算。图35(c)图示了存储器和算术逻辑单元(alu)的布置。
136.一种减轻这种能耗源的方法是结合一种称为存储器内计算的方案。在这种方法中,神经网络的权重是固定的并存储在计算发生的地方,并因此可以大大减少数据移动。就具有数字电路的神经网络硬件实现而言,这可以布置为一种架构,其中存储器和算术单元的分布方式使数据存储更接近其目标处理器。更高效率的替代方案是基于掌控电路电压和电流的电路网络特性来实现乘法和加法计算(mac)。这启用了输入激活(例如跨大型权重网络的电压或电流电平)的瞬时部署,例如通过诸如电阻器之类的阻抗来实现。然后,乘法运算通过缩放输入激活的权重元件的阻抗来实现,并且求和通过电路节点中的瞬时电流或电荷包求和而发生。该模拟mac 操作的结果通过数据转换器可容易用于读出。
137.称为纵横网络的模拟电路配置可用于矩阵乘法和加法运算的目的。这样的网络(例如,图36中图示)经由数模转换器(dac)通过访问行(字线)来应用整数神经元激活值xi。这些字线跨字线部署模拟电压x i .v ref,dac ,其中v ref,dac
是dac的参考电压。沿着每个字线,多个权重元件放置在与列(位线)的交叉处。这些权重元件通过阻抗(电导)实现,其中每
个元件是单位电导g的整数w ij
倍,结果得到电导g.w ij
。每个位线与多个字线交叉,在它们交叉处具有相应的权重,并因此实现求和节点以将电流相加。对于第 j位线,该电流可以写为通过与其相连的权重元件的所有电流的总和:当该位线电流由增益为r
tia
的跨阻放大器处理时,放大器产生每位线电压 vj,表示为:然后,该电压vj借助模数转换器(adc)参考电压 v
ref,adc
将其取整为整数yj(取整(round(x))函数)被数字化为整数yj:为简单起见,我们可以假设 v
ref,dac = v
ref, adc
并且r
tia = 1/g,并且然后方程(3)简化为:这示出每个位线实现乘法和加法结果,用于输入激活和权重矩阵的第j列之间的乘法,并因此所有yj值形成矩阵点积结果。对于图36所示的情况,4x1激活矩阵x乘以4x4权重矩阵 w得到1x4矩阵y:图36 中所示的纵横网络接口的一些缺点可能是连续激活电压应用于字线和位线中的运行电流(高度依赖于权重元件类型和值范围)以及adc、dac、驱动器和感测放大器的静态功耗增加了能耗。此外,每个adc和dac由许多有源和无源子组件制成,通常会转化为大的芯片面积,并因此限制了到纵横网络的接口的节距尺寸并限制了大规模。由于模拟组件的变化,dac和adc的传输特性匹配的假设(v
ref,dac =v
ref,adc
的简单假设)在现实中并不真实。在大规模网络中包括这种非理想性会使训练更加复杂。在深度神经网络中,adc和dac的动态范围通常需要逐层缩放,这会增加显著大量复杂性和设计工作量。
138.图36图示了由纵横网络实现的模拟乘法和加法运算的实施例,该纵横网络采用由电流域中的整数加权电导和求和实现的模拟输入激活和权重。
139.过去,纵横网络的激活输入已被修改为使用脉宽调制时域信号,而不是图36中所示的幅度域激活。图37(a)中示出了结合存储在二进制存储器晶格(例如sram晶格)中的二进制权重的此类网络的示例。与通过位线运行电流相比,这种方法可以更节能,因为它主要依赖于附接到位线的电容器(寄生电容或有意添加的电容器)上的电荷求和。图37(a)所示的纵横网络通过参考具有持续时间ta的单位时间参考的脉冲生成器来实现其激活输入。这里由 xi表示的整数激活输入确定激活持续时间等于x
i .ta。例如,整数输入激活7由持续时间为 7.ta的脉冲表示。
140.图37(a)图示了具有脉宽调制的激活信号和嵌入在存储器中的二进制权重的纵横
网络,所述二进制权重确定差分位线电容上的放电极性。图37(b)图示了网络的定时操作。类似于图36的纵横网络,字线跨许多位线广播激活,其中权重元件存储在每个字线和位线交叉处的存储器晶格中。位线可以不同地布置,即每个线由具有电压v
blj
和v
blbj
的两个线组成。在操作之前,这些位线每个具有总电容,用c
bl
表示,并且初始充电到预充电电压v
p
。当在每个点积操作开始时预充电时,由v
dj = v
blj ‑ꢀvblbj
表示的跨位线的差分电压从零开始(图37(b)所示)。在每个字线的脉宽调制激活持续时间内,开关sw将位线电容器连接到保持“10”或“01”状态的存储器晶格(左侧和右侧或保持 0 或 1 值的sram单元,结果得到两个状态)。假设开关没有导通电阻,并且到电容器的总电阻由电阻 r bl
建模。取决于权重存储器中存储的状态(“ 1 = 10”或
“‑
1 = 01”类似于位线电容的充电/放电极性),位线电容之一向电源充电,并且另一个位线电容朝向地面放电(图37(a))。一旦将所有脉宽调制输入激活应用到字线,对于所有权重为“1”的情况,由于叠加,移除或添加(取决于权重)到每个位线电容的总电荷(取决于激活)导致跨位线的差分电压(参见图37(b)):位线电压 v
dj
通过模数转换参考电压 v ref,adc
进行转换,以导出整数位线点积结果:该方案通过移除图36中使用的dac来简化激活,并通过位线的电荷域操作提高了能量效率,但是,(位线 adc 需要的)幅度域读出的复杂性和能耗仍然存在。
141.图38图示了基于忆阻器的纵横网络,该网络用脉宽调制激活来激活并在幅度域中用幅度域模数转换器来读出。在这样的实施例中,实现类似于图38(a)的实现,其实现了加权电阻器的权重(电导值)。这可以是不具有可编程性的网络的固定电路元件,或者可以通过利用诸如忆阻器元件(可编程电导值,诸如图38(b)所示)之类的元件使其可编程。脉宽调制激活及其生成以及位线的差分结构的配置类似于图37(a)的配置。不同之处在于权重值w
ij
,其可以具有比图37(a)的二进制水平更多的水平。跨7个电导水平的双极权重值的情况如图38(b)所示。假设 w
ij (负权重值的w
bij )为整数值,其物理实现是通过电导 g
ij = g
0 w
ij .gu或 g
ij = g
0 –ꢀwbij .gu。矩阵点积乘法和加法运算通过将位线预充电到预充电电压v
p
开始。每个字线将脉宽调制激活输入 xi运送到开关sw。这些开关提供了在激活输入的持续时间内,通过由w
ij
(和w
bij
)确定的权重电导值到接地的放电路径。作为所有时间常数叠加的结果,一旦应用了所有激活输入,跨位线出现差分电压v
dj
,其一阶由下式确定:位线电压由adc数字化。过去,在存在由参考电导值形成的额外行的情况下,通过应用多循环充电和放电操作,将adc的操作与纵横网络的操作相嵌。这有助于减轻(方程 52)的非线性关系,代价是需要多循环充电和放电操作以及跨纵横网络的额外电导行以实现幅度域 adc 操作。
142.本公开的实施例说明了用于激活和读出模拟乘法和加法纵横网络的时域接口。这种接口取代了现有技术中使用的幅度域方案。它受益于以下事实:通过将纵横字线的激活
输入转化为脉宽调制时域信号,各种纵横网络配置实现的时间常数(充电时间、积分时间、放电时间)的叠加可以通过时间测量在位线处被测量,其中时间到数字的转换可以参考用于生成激活的相同时间参考来完成。此外,本发明公开提出了以比率度量方式布置的时间测量,使得对电阻器、电容器、参考电压、电流、时间等的绝对值有贡献的非理想性将抵消,结果得到线性点积矩阵乘法输出,对于一阶,其只是整数输入激活和权重的函数。
143.图39图示了到点积计算纵横网络的基于时间的接口。可以示出时间输入和输出接口,以及39(b)示出接口外围设备是数字到时间和时间到数字转换器(tdc),并且在39(c)中,示出时域操作。时域操作在这种模拟纵横乘法和加法网络的缩放性和可靠性方面具有若干优点。图39(a)图示了具有时域外围接口电路的纵横网络的时域接口。这些外围电路示于图39(b)中,并且主要实现数字到时间和时间到数字的转换功能。激活由前者(脉冲生成器)参考时间 t ref
生成,时间 t ref
由整数输入 x j
缩放,并且mac 输出通过时间到数字转换器(tdc)从时域转换为数字。tdc测量由标记两个事件的开始(start)和停止(stop)信号标记的输入时间(图39(c))。为了启用时间测量,需要参考时间。对于tdc,这通常由到tdc的输入频率(f ref )或时间参考(t ref = 1/f ref
)来设置。将此类转换器应用于点积纵横网络的接口具有若干益处。
144.tdc的电路架构更接近于数字电路(tdc实现可以像中等时间分辨率的计数器或环形振荡器和寄存器组合高分辨率情况下的计数器一样简单)。这种类型的电路具有若干益处。
145.缩放深度神经网络的每个隐藏层所需的动态范围在 tdc中比在 adc 中更容易实现。使用tdc时,这可以与向计数器添加额外的位并在更长的时间段内计数以将动态范围加倍一样简单,而在 adc 中,这种适配可能会对复杂性、尺寸和功耗有严重影响。
146.tdc消耗与逻辑门(如数字电路)切换相关的动态功率,而不是 adc 中使用的线性模拟电路消耗的静态功率。与 adc 相比,这提供了卓越的能量效率。
147.半数字电路架构导致其集成电路实现的占用空间非常小,并因此使它们可修改为采用模拟纵横乘法和加法网络的更大规模的深度神经网络。
148.每个位线的结果输出时间可以对照由用于实现网络权重的相同单位模拟电阻或电容生成的参考时间常数来测量。这启用比率度量测量方案,其通过消除模拟元件对一阶的变化,大大增强了点积结果的鲁棒性。
149.通过在时域中布置的纵横网络的输入和输出接口,脉宽调制激活生成器的时间参考可以与tdc的时间参考同步(图39c),这然后导致纵横网络的模拟和数字接口的匹配传输特性。这对于幅度域接口是不可行的,因为 dac 和 adc 或脉宽调制器和 adc 的特性是固有失配的。
150.图40a图示了所提出的到基于纵横网络的混合信号点积计算硬件的时域接口的功能框图和操作,如图40a和图40c中示出,图40b中是时域操作波形。此框图是时域和比率度量读出操作的基础,并且将示出为可扩展到基于不同电气特性(电荷域、电流域等)和权重实现(存储器元件,例如rom、sram、m/r/pc/ram)的各种纵横网络。为了简化所提出方法的描述,首先示出了单端结构(仅正权重值)。到具有双极操作和差分位线的实际实现的扩展可以从这个基本架构中导出,并将在后面示出。
151.在图40中,示出了具有比率度量输出评估的纵横混合信号点积计算网络的时域接
口的实施例。在图40(a)中,图示了具有脉宽调制输入激活和基于tdc的读出的概念框。在图40(b)中,图示了与时域输入、输出以及控制和参考信号相关联的波形。并且在图40(c)中,时域比率度量实现利用以参考电流源i ref
为参考的缩放电流源。
152.在该实施例中,权重被示为通过利用单位电导g实现的阻抗,该单位电导g由适当的整数权重w ij
缩放。输入激活信号由脉宽调制生成器基于参考时间t a
生成,由整数激活值x i
缩放。这些沿字线广播,所述字线然后在将字线连接到位线的相应权重阻抗处与位线交叉。每个位线可以连接到积分器,所述积分器从由给定参考电压v ref
定义的重置状态(通过“重置”信号执行)开始其每点积计算的操作。一旦将幅度为 v a
的脉宽调制激活应用于所有字线,与权重相关联的电导将脉宽调制激活转化为注入每个位线的总净电荷量(通过流动电流 i j
递送),其由相应的积分器积分。第j位线的电荷是:
ꢀꢀꢀ
(方程53)作为应用输入激活和电荷积分的结果,每个积分器发展出由v intj
表示的输出电压,其是积分器增益的函数(图40b)。一旦应用了所有激活(并且所有加权电荷都被积分),由开始(start)表示的信号通过单位电导g将积分器输出连接到电压
ꢀ‑
v a
,电压
ꢀ‑
v a
是脉宽调制输入激活的幅度的负值。同时,连接到位线的tdc开始测量时间。至-v a
的连接从积分器中移除电荷(通过放电电流 i
discharge,j )。电荷的移除然后降低积分器输出电压v intj
并且这一直持续到监控积分器输出电压的比较器检测到积分器已经达到其原始重置值v ref
。一旦检测到该电平,比较器生成停止(stop)信号并传递到tdc以停止测量时间。结果,在激活阶段期间积分的总电荷 q j
使用由单位电导g制成的参考放电路径被完全移除。移除(放电)该电荷所花费的时间为:tdc在其输出处产生数字整数值y ĵ
,其通过round(x)的取整函数(量化函数)与t
od,j
和tdc参考时间t
ref
成比例:将(54)代入(55)得到:tdc参考时间t ref
和脉宽调制器激活生成器的时间参考t a
二者均以整数比率同步到相同的系统时钟t clock
。因此,t ref
和t a
具有由k表示的整数比。同步允许k能够被选择为整数或两个整数值 m 和 n 的比率,即k = m/n。这也负责前面提到的量化:将(57)代入(56)得到比率度量线性位线输出测量y j ,其仅取决于输入整数激活 x i 、整数权重值 w ij
和固定常数 k:图40(c)中示出了所提出的比率度量时域纵横网络实现的替代图示。在该实施例
中,以参考电流源i ref
为参考的整数缩放电流源实现网络权重。放电路径可以由一行电流源组成,这些电流源以相同的源为参考,并且具有相反的极性。网络中信号的时域操作和波形与图40(b)所示的那些确切相似。与图40(a)所图示实施例的不同之处在于,充电和放电电流是通过利用有源电流源而不是无源阻抗产生的。掌控点积计算和比率度量运算的方程与方程(53)至(59)保持相同,唯一的区别是方程(53)和(54)中表示图40(a)的充电和放电电流的应该替换为 i ref

153.在点积实现方面,方程(58)说明了所提出的方法实现到纵横网络的比率度量时域接口的重要性。时域中的比率度量输出评估为一阶独立于任何绝对参数值,例如形成权重的单位阻抗或电流源(g或 i ref )、电压电平(例如参考电压 v ref
或激活幅度va)、电荷积分参数(例如积分器增益)和输出电平v
intj
以及时间参考值ta、t
ref
、t
clock
。在激活生成器和 tdc依赖于数字电路(计数器)并使用相同的时间参考t
clock
的情况下,它们的输入/输出传输特性(数字到时间和时间到数字)一阶匹配,并因此不影响精度。
154.在硬件和能源消耗效率方面,提出的方案可以具有若干益处。一阶情况下,可以在接口中使用的仅有模拟电路之一是每位线的比较器,它每点积计算操作一次,从而最小化接口电路的静态功耗并最大化其吞吐量(与adc 接口相比)。电荷积分可以使用位线电容无源地完成,或者用有源积分器有源地完成以获得更高的精度,然而,位线积分器可以用低功率电路来实现,例如基于反相器的有源积分器。
155.所提出的时域接口技术可以应用于基于不同存储器元件(易失性(诸如sram)或非易失性(诸如浮置栅闪存、rom、rram、mram等)的纵横网络的各种配置。它还可以应用于实现混合存储器架构的网络,例如,部分基于sram和部分基于 rom或不同存储器元件的任何组合,以用于混合信号存储器内计算。
156.sram(静态随机存取存储器)可用于在存储器计算中存储权重。sram 可以提供二进制权重元件,以在采用多级输入或二进制输入的网络中使用。点积输出也可以是二进制的或多级的。每种配置可能有其自己的特点和优缺点,但是,当采用使用sram晶格的多级输入激活和多级点积输出评估以便存储权重时,与利用幅度域接口的现有技术相比,所提出的时域接口提供硬件和能量效率以及高精度的计算结果。接下来,介绍了三种架构,它们利用与基于sram的纵横网络的时域比率度量接口。
157.图41图示了存储器计算纵横网络中基于sram的时域多级激活输入、多级点积输出。图41(a)中所示的网络可基于使用单位阻抗和tdc位线转换器并采用利用位线电容的无源集成的平衡电流积分。图41(b)图示了用有源积分器代替无源积分器。图41(c)图示了具有输入和输出时间值的时域接口的操作。该纵横网络的实施例可以利用单位电导值g将存储的sram存储器内容转换成由差分积分器积分的双极电流(推和拉电流分量)。差分位线结构意味着二进制权重值作为 1 和
ꢀ‑
1 值操作。每个晶格需要 6 个晶体管(6t晶格),其中 4 个晶体管实现sram核心,并且2个用于应用激活信号。图41(b)中的积分器以更多的能量和芯片面积为代价提供了更好的集成精度。图41(c)中网络的操作与图6 所示的基础网络架构相同。它从位线积分器的重置状态开始,将它们重置到共模参考电压v ref (例如,sram 电源v dd
的一半,即v ref = 0.5v dd )。然后,这之后是应用脉宽调制激活输入x i
。激活时间参考t a
和tdc参考时钟t ref
与系统时钟t clock 同步。权重电导g导致双极电荷(取决于存储
的sram值)流入位线积分器,从而导致每个位线发展出差分电压 v intj
。应用输入后,开始(start)信号被断言,其启用放电分支。该分支使用g的两个单位电导,以通过将其排回 v ref (积分器在应用激活输入之前启动的相同初始条件)来移除积分电荷。当开始(start)信号被断言时,tdc开始测量时间。一旦积分器传递差分零电压,比较器通过生成 stop j
信号来停止tdc(图41(c))。使用方程(54)并将v a
替换为v dd (sram电源以及脉宽调制输入激活的幅度),并假设与(57)建议的同步时间参考之间的相同比率,tdc数字输出可以定义为:这示出了点积结果,其一阶仅是整数激活输入和sram存储器中存储的权重的函数。应该注意的是,当实现二进制权重网络时,电导g可以简单地由6t晶格中的开关晶体管的导通电阻表示,并因此不一定需要是单独的物理阻抗。
158.图42图示了到用于点积计算的纵横网络的基于sram的多级输入、多级输出时域接口。图42(a)图示了基于完全平衡电流积分的网络,其使用8t晶格sram和平衡电流源以及匹配的完全平衡放电路径和时间测量块。图42(b)图示了由sram确定的平衡电流积分的极性和由积分器极性确定并通过“斩波器”应用的平衡放电相位的极性。图42(a)图示了具有时域比率度量接口的基于sram的纵横网络的另一种方法,其中,不是单位阻抗,而是单位晶体管实现完全平衡电流源以在由输入激活确定的持续时间内在位线电容上对电荷积分。在这里,提出 8 晶体管(8t)晶格,其中 4 个晶体管形成sram核心,用于保存权重值,并且另外 4 个实现完全平衡电流源,其极性由存储在sram中的值确定。8t sram 晶格中的推和拉单位电流源以具有电流i ref
的参考分支为参考。参考电流通过参考二极管连接的晶体管 m pref
和 m nref
复制,生成字线电压 v gp
和 v gn ,其用于偏置 8t 晶格 pmos 和 nmos 电流源。这些匹配 m pref
和 m nref
并产生 /-i ref
电流。图42(b)示出了对于对应于 1和-1的权重值的两个状态,如何确定电流的平衡注入极性。sram 状态通过简单地将它们的共享源端子偏置到 v dd (电源)或 gnd (接地)来确定哪个电流源被启用以及哪个被禁用。提出的连接通过以相反的方式打开和关闭电流源来保证平衡的电流方向。在由相应的输入激活x i
确定的持续时间内,电压v gp
和v gn
通过字线应用到8t晶格电流源晶体管栅极。网络的整体功能操作与(图41(c))的实施例相同。与这样的实施例相比,比率度量放电阶段需要额外的考虑。放电阶段应通过利用匹配的平衡电流源进行比率度量操作来施行。通过利用相同的位线比较器输出来确定正确的放电极性(导致从积分器中移除电荷而不是增加电荷)。比较器输出简单地保存有关激活阶段结束时积分电荷极性的信息。该位用于控制“斩波器”块将 nmos 和 pmos 放电电流源连接到位线的极性(参见图42(b))。在应用开始(start)信号之前,斩波器被禁用。此时,tdc开始测量时间,并且放电路径单位电流源遵循正确的极性从电容器中移除电荷,直到比较器跳闸(当积分器输出过零时)。由停止(stop)信号标记的该事件停止tdc时间测量。因此,时域操作与图41(c)中的架构的时域操作确切相似。
159.图42(a)中所示的无源位线积分器也可以用图41(b)中所示的相同的有源积分器代替。与其他实施例相比,该网络提供精确的电荷积分和比率度量输出评估。对于推导(59)中假设的相同定时条件,网络输出为:
这又是一个比率度量点积输出,一阶独立于电路值。应该注意的是,图42中的架构也可以在充电和放电阶段二者中用单端位线和单极电流源实现。
160.图43图示了电荷重新分配架构。图43(a)中所示的电荷重新分配架构实现了到8晶体管sram晶格(8t晶格)架构的多级输入激活和多级输出时域接口。这里,每个 8t 晶格还包括单位电容c u ,取决于编程的sram权重值 1或-1,单位电容c u 将在“v dd ”
和“gnd”之间或“gnd”和“v dd ”
之间充电。输入激活调谐为脉冲串,其中脉冲数等于整数输入激活 x i
。每个脉冲具有从与系统时钟t clock
同步的信号t a
提取的单位脉冲宽度。采样时钟t s
具有与t a
相同的周期但与t a
相比具有相反的相位(图43b)。每个字线广播用于激活的脉冲串,其中它在与位线交叉处被8t 晶格接收。在8t晶格内,由输入激活操作的开关以由sram值确定的极性对c u
上的电荷进行采样。在相反的相位(由t s
定义),来自所有c u
的电荷将被转移到连接到位线的积分器(积分器从重置零相位开始)。一旦应用了所有输入激活脉冲,位线积分器积分的总电荷为:在该阶段之后,当 tdc开始测量时间时,开始(start)信号被断言(参见图43(b)),并且同时它通过连接到采样时钟t s
的与门通过切换单位放电电容器c u
来启用放电路径,以开始消耗积分器。放电极性由连接到位线积分器输出的同一比较器确定,并将用于在积分器耗尽时停止tdc。放电时间t
od,j
可由直到达到初始为零的重置状态并且电容器c u
的有效电阻以速率t s(
t s = t a )切换之前移除的总电荷确定:时间t
od,j
用以参考时钟t
ref
为参考的tdc来测量,遵循由方程(57)所描述的相同同步比率,tdc的数字输出计数yj可由下式确定:这示出比率度量点积输出计算独立于一阶的所有电路参数,并且仅是整数激活和权重的函数。应当注意,位线可以用全差分开关电容器电路来实现。此外,积分电容不需要与8t晶格电容匹配,因为积分器增益与比率度量点积输出无关。只有放电路径的电容器应该做成8t晶格电容的整数比,并具有相同类型的电容器。该电容和放电时钟频率的值也与点积输出无关,只要放电时钟(在图43(a)的情况,使用采样时钟ts)与系统的主时钟同步。
161.图44图示了基于只读存储器(rom)的示例,该示例用于应用于纵横网络的时域接口方案,以进行存储器内计算点积计算。输入4401可由脉冲生成器4403接收 。在图44(a)中,示出了具有基于rom的可编程权重的基础架构的实施例。在图44(b)中是具有基于rom的权重编程(幅度和极性)的基于差分位线电导的架构的实施例。其他实施例(例如图40-43)中所示的时域点积矩阵乘法和加法纵横网络可以考虑用于权重值硬连线作为只读存储器(rom)的实现。这适用于在已经实现存储器内计算的硬件后未预期更改网络权重(或部分网络权重)的应用。该技术将通过使更多的单位电路元件(例如阻抗(例如,如图44所示)或电
流源和电容器(例如,如下面的图45所示))易于制作并选择在后面的级连接(例如作为线路金属选项或 nvm 激光熔丝选项的后端),来启用对权重极性或甚至权重值的编程。对于不同产品的不同权重值模式4405 ,仍然可以修改底层硬件。网络的各个部分仍然可以使用sram存储器晶格来实现,作为sram和rom实现的混合,以提供一些可编程性。
162.图44的实施例改变了图40的一般基线架构以及图41的差分结构(基于单位阻抗),并因此已转换为基于 rom的时域纵横网络并在图41 中示出。为了说明起见,在电路中每个字线和位线交叉处预制了多个单位阻抗g,并且金属选项允许将所期望数量的单位阻抗连接到位线,并因此启用权重值的缩放。也可以通过确定位线阻抗的哪一侧应连接到正电压或负电压的中间部分来改变极性。与图40和41 相比,该结构的时域比率度量操作保持不变,并提供确切相同的益处。
163.图45图示了基于rom的时域接口。图45(a)图示了应用于具有可编程电容值和极性的基于电荷重新分配的纵横网络位线的实施例。图45(b)图示了具有可编程电流幅度和极性的基于参考电流源的纵横网络。图42和图43的结构的基于rom的替代方案在图45中示出。这里,图45(a)的电荷重新分配网络通过金属选项具有每个 rom晶格的可编程电容值,所述金属选项引入所期望数量的并行预制电容器并将它们连接到晶格。此外,位于中间的另一个金属选项通过确定电容器电荷极性来确定权重极性。图45(b)中的架构是基于图42架构的完全平衡电流积分架构,其中预制单位电流源可以通过金属选项以及极性选择选项连接到位线。图45的实施例中的架构的比率度量时域操作保持与图42和图43所示的实施例的那些类似,具有所有相关的益处。基于rom的架构可以以增加预制元件的硬件为代价,在制造后提供一定水平的权重可编程性的可能性。这些架构可以与基于sram的存储器相组合,以实现部分网络或权重作为 rom和sram的混合,以用于部分可编程性。
164.图46图示了具有时域比率度量接口的基于浮置栅闪存或fefet的纵横网络的示例。输入4601可以在脉冲宽度生成器4603处接收。神经网络权重可以以非易失性存储器的形式存储(编程)在芯片上。这启用了可重新配置的硬件(与基于 rom的网络相比),其可以在无需重新编程网络权重(与基于sram的网络相比)的情况下重新上电。此外,任何多级权重存储能力都允许提高网络性能(与二进制权重相比)以及节省芯片面积(与基于 rom和sram的方法相比)。实现这种存储器内计算方案的一种方法是采用浮置栅闪速存储器架构,其中权重存储在晶体管的阈值电压中。另一种方法是利用铁电场效应晶体管(fefet),其中铁电层的磁极化被添加到晶体管的栅极结构并提供非易失性存储方法。用于计算矩阵点积的存储器计算网络中的纵横可以利用这些设备来实现。时域比率度量激活和输出评估技术可以应用于这些网络,以便提供比率度量测量、线性、小占用空间和可缩放接口的基本益处。涉及浮置栅晶体管或 fefet 的结构被视为与 2晶体管(2t)晶格相同,其中一个晶体管用作访问开关,并且另一个晶体管用作实现神经网络权重的可编程阈值电压晶体管。可编程阈值晶体管既可用作三极管操作区的可变电阻器,或可用作亚阈值或饱和工作区的电流源。在更简化的实现中,1t 晶格在字线4607级合并选择器开关。
165.如果可编程阈值晶体管用作电阻器,则晶体管的沟道电导g
ij
由下式确定:其中 v gs
是晶体管的栅极-源极电压,是与其尺寸(宽度/长度)、电荷载流子迁
移率等的纵横比成比例的晶体管参数,并且v th,ij
是通过浮置栅或磁栅的编程的阈值电压,其最终控制权重电导g
ij
。为了将权重电导布置为具有整数比m ,即具有以下值:g、2g、3g、4g 等,编程的阈值电压必须满足与基线阈值电压 v th,b 的关系,其导致最小单位权重电导 g。换句话说,为了晶体管提供 的电导(其中m = 1, 2, 3, 4,
ꢀ……
),其阈值电压 v th,m
与基线晶体管相比应满足以下关系:其导致:使用方程(63)获得线性比率电导的设计空间可能被限制为 3 或 4 个电导水平,因为最小可能 v gs
的边界和可能的编程阈值电压受到限制(受电源电压和晶体管特性限制)。换句话说,由于方程66的性质,对于相同类型的晶体管,获得更大的电导会导致负阈值电压电平,这可能是不可行的(图47 顶部)。在设计空间和以下方程(66)内,沟道电导之间的整数比可以达到一阶(对于有限数量的级别),并且对于晶体管使用相同的纵横比。在该考虑的情况下,比率度量时域接口可以应用于采用浮置栅闪存或 fefet 晶体管的纵横网络。
166.图46图示了具有时域比率度量接口的基于浮置栅闪存或fefet的纵横网络。图46(a)示出了基于晶体管沟道电导(三极管操作)的基于2t晶格的网络4620。图46(b)图示了基于电流源(亚阈值或饱和)的基于2t晶格的网络。图46(c)图示了具有基于晶体管沟道电导(三极管操作)的合并字线开关的基于1t晶格的网络。图46(d)图示了具有基于电流源(亚阈值或饱和)的合并字线开关的基于1t晶格的网络。可以使用基线电导g以便形成放电路径。这在图46(a)中示出。激活作为脉宽调制信号应用。该网络的操作类似于图40(a)的操作,并且其输出由方程(54)至(58)确定。应该注意的是,沟道电导由晶体管的漏-源电压 v ds
调制,并因此最好将位线保持在受控的直流电压处,即通过采用有源积分器而不是无源积分器在求和节点处提供调节的直流电压。图46(c)中示出图46(a)的网络的替代方案,其中使用1t晶格晶体管并且切换的选择器在字线处合并。
167.如果可编程阈值晶体管用作电流源,则晶体管的沟道电流在饱和状态下操作时遵循平方定律:如果晶体管在亚阈值下操作,则它遵循指数关系:其中 i s
是饱和电流,n是亚阈值中的晶体管参数,并且v t
是热电压(室温下为 25mv)。对于由 i ij
实现的线性权重比,即为了使晶体管的沟道电流与具有基线阈值电压 v th,b
的单位晶体管具有整数比,即 i m = m x i ref , v th, m
应再次布置成下列关系:对于饱和操作:
对于亚阈值操作:再一次,电源以及最小和最大可编程阈值的限制设置了对可实现的级别的可能数量的限制,以获得权重之间的整数比。可编程阈值晶体管可以布置为纵横网络中的电流源,实现图46(b)所示的网络权重,包括具有与单位电流源一起使用的放电路径的比率度量时域读出。该网络的操作类似于图40(c)的操作,并且其比率度量矩阵点积输出由方程(58)导出。图46(b)的网络的替代方案在图12中示出,其中使用1t晶格晶体管并且切换的选择器在字线处合并。
168.应该注意的是,为了使用时域比率度量操作方案实现更多数量的权重水平,浮置栅闪存或 fefet 的基于电流源的架构通过沟道电导(虽然可以实现负阈值电压,但是,生成线性电平意味着应用接近零或负栅-源电压,这可能不太实际)比实现权重的网络启用更多数量的水平。电流源实现启用具有正阈值电压的更多的整数比率电平,这主要是因为它们的电流源实现的指数性质(与沟道电导对编程阈值电压的线性相关性相反)。这在图47中图示,图47图示了实现电导和电流源的整数个电平的阈值电压范围(在饱和区域和亚阈值区域)。如果实现二进制权重,这不是问题,在这种情况下,单位浮置栅或 fefet 晶体管将以二进制(开/关)方式操作。在那种情况下,图46(a)和46(b)的时域网络操作相同并具有相同的比率度量操作益处。
169.图47图示了v th,ij
的范围,用于利用饱和(中部)或亚阈值(底部)中的沟道电导(顶部)或电流源来实现纵横网络的线性缩放权重。
170.电阻性存储器(忆阻器),例如 rram 或相变存储器(pcm)等,通过利用存储器元件进行存储器内计算提供了一种面积有效的方式来实现神经网络权重。实现使用忆阻器计算矩阵点积的纵横网络可以与提出的时域比率度量接口相组合,以最大化面积和能源效率以及提供可缩放接口,该接口一阶独立于电路元件的工艺、温度和电压变化。如果实施例可用于该架构。
171.在第一实施例中,该实施例可以基于图40所示的基础架构,并且通过以下方式来实现:用实现那些电导值的可编程忆阻器元件替换权重电导g.w
ij
,并使用基线忆阻器电导g来实现启用比率度量充电和放电操作的放电路径。在匹配权重和放电路径元件以及同步时间参考的条件下,放电时间的时域评估产生点积,所述点积一阶是整数输入和权重缩放值的函数。方程(58)表示输出,并且积分函数可以通过有源(带有放大器的积分器)或无源(位线电容)积分来实现。
172.图48图示了利用位线电容和忆阻器电导的两相无源放电。假设具有足够输入共模电压抑制能力的符号比较器的可用性,该方法在如何执行比率度量时间测量方面与其他实施例略有不同。如图48a所示,这种方法可以使用位线电容c
bl
和忆阻器电导来利用两相无源放电,位线电容c
bl
和忆阻器电导通过双极整数权重被差分地布置在基线电导g 0
周围,双极整数权重缩放单位电导gu(图38(b)中示出了电导特性):由v blj
和v blbj
表示的差分位线电压(每个连接到电容c bl
)具有接地的放电路径。
脉宽调制器4803控制附接到忆阻器开关的字线4809。这些提供由加权忆阻器和激活脉冲宽度掌控的位线4802朝向地面的放电阶段4813。第二放电路径由参考电导控制,并提供比率度量时间测量。连接到每个差分位线的两个端子的两个模拟比较器将位线电压v blj
和v blbj
与阈值电压v ref 进行比较(也可以以吞吐量为代价在位线间共享比较器)。时域读出方案的操作示于图48(b)中。位线从至预充电电压v
p
的预充电状态开始。然后应用脉宽调制的激活信号(由激活输入x i
缩放并与时间参考t a
同步)。激活驱动开关,所述开关在激活确定的持续时间内通过权重电导对位线电容器放电。一旦应用了所有激活(如图48(b)所示),指数放电时间通过加权时间常数的叠加导致跨位线的总差分电压 v od ,即 v od,j = v blj –ꢀ
v blbj :在第二阶段,位线通过具有电导g ref
的参考电导分支放电,并由“放电”信号控制的放电开关启用。在此阶段期间,每个位线电压最终都会过阈值电平v ref ,此时相应的比较器产生逻辑信号。逻辑块接收两个比较器输出并产生开始(start)和停止(stop)信号(当第一比较器触发时生成开始,并且当第二比较器触发时生成停止)。这些信号被馈送到位线的时间数字转换器(tdc)4819 ,该转换器测量开始和停止事件之间的时间t od,j
。t od,j
时间是在将激活应用到比较器阈值电压v ref
(见图48(b))之后每个位线从其状态放电所花费的时间之间的差,由t dis,pj
和 t dis,mj
表示并且可以导出为:通过选择g
ref
为gu的整数倍,即g
ref = m .g u ,t od,j
的时域测量是电导方面的比率度量:时间数字转换器的功能可以简化为计数到n的计数器的功能,n是具有适合持续时间 t od,j 的周期 t ref
的参考时钟的周期数:如方程(57)所述,将脉宽调制激活的时间单位t a
与tdc的时间参考t ref
同步4815 ,不再需要量化函数(round(x))并且tdc的数字化整数n输出可以重写为:其中示出了提出的实现矩阵点积输出的线性和比率度量评估的方案。
173.图49图示了基于忆阻器的无源放电方法,其中使用一个比较器进行比率度量时域点积输出评估。在图49(a)中,图示示出了纵横网络和电导。在图49(b)中图示了时域操作波形。图48(a)所示的网络操作的替代方案是图49(a)所示的实现。这里,可以使用单个比较器
块(而不是两个)两次,并且可以消除参考电压 v ref
。在将脉宽调制激活输入应用到字线并完成位线电容的加权放电之后,比较器确定位线电压 v blj
或 v blbj
中的哪一个两个中更大的一个。比较器输出信号然后确定具有更大电压的位线将通过参考放电路径放电,而另一位线的电容器(具有更小电压)上的电荷保持不变(见图49(b))。这通过图49(a)所示的与和非逻辑门简单地应用于参考路径放电控制开关。当控制信号“放电/开始”被断言时,参考路径放电开始,这会对具有最大电压的位线放电并开始 tdc时间测量。当比较器输入的符号改变时,例如放电位线端子的电压变得小于非放电线的电压时,比较器输出翻转并将停止事件标记到tdc以停止时间测量。开始和停止之间的时间差形成时间 t od,j ,其可以通过等于使更大电压位线通过参考电导g
ref
放电至更小电压位线的电压所花费的时间而导出。在时间 t od,j
之后使两个电压相等导致:重新排列方程导致:其中 t
od
可以导出为:方程(81)再次示出,第三种方法还实现了纵横网络点积输出的比率度量评估,其一阶独立于具有同步激活和 tdc时间参考的电路元件值(方程 57)和比率度量阻抗水平(g ref = m .g u ),这导致如方程(78)所描述的相同的数字输出yj,例如,仅是整数激活和权重的函数。
174.本文所公开的过程、方法或算法可以可交付给处理装置、控制器或计算机或者由处理装置、控制器或计算机实现,所述处理装置、控制器或计算机可包括任何现有的可编程电子控制单元或专用电子控制单元。类似地,过程、方法或算法可以以多种形式存储为可由控制器或计算机执行的数据和指令,包括但不限于永久存储在不可写存储介质(例如 rom器件)上的信息和可更改地存储在可写存储介质(例如软盘、磁带、cd、ram 器件以及其他磁性和光学介质)上的信息。过程、方法或算法也可以在软件可执行对象中实现。或者,过程、方法或算法可以全部或部分地使用合适的硬件组件来体现,例如专用集成电路(asic)、现场可编程门阵列(fpga)、状态机、控制器或其他硬件组件或器件,或硬件、软件和固件组件的组合。
175.虽然上面描述了示例性实施例,但这些实施例并不旨在描述权利要求所涵盖的所有可能的形式。在说明书中使用的词语是描述性而不是限制性的词语,并且应理解,在不脱离本公开的精神和范围的情况下,可以进行各种改变。如前所述,可以组合各种实施例的特征以形成可能未明确描述或图示的本发明的进一步实施例。尽管关于一个或多个所期望特性,各种实施例可能已被描述为提供优点或优于其他实施例或现有技术实现,但本领域普通技术人员认识到,可以折衷一个或多个特征或特性以实现所期望的整体系统属性,这取决于特定的应用和实现。这些属性可包括但不限于成本、强度、耐久性、寿命周期成本、市场性、外观、包装、尺寸、适用性、重量、制造性、易于组装等。这样,就关于一个或多个特性将任何实施例描述为比其他实施例或现有技术实现更不合期望的情况而言,这些实施例不超出
本公开的范围并且对于特定应用可能是合期望的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献