CN113990371A - 用于模拟混合信号存储器内计算交叉开关网络的时域比率式读出接口 - Google Patents
用于模拟混合信号存储器内计算交叉开关网络的时域比率式读出接口 Download PDFInfo
- Publication number
- CN113990371A CN113990371A CN202110843713.4A CN202110843713A CN113990371A CN 113990371 A CN113990371 A CN 113990371A CN 202110843713 A CN202110843713 A CN 202110843713A CN 113990371 A CN113990371 A CN 113990371A
- Authority
- CN
- China
- Prior art keywords
- time
- circuit
- network
- digital
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4094—Bit-line management or control circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G04—HOROLOGY
- G04F—TIME-INTERVAL MEASURING
- G04F10/00—Apparatus for measuring unknown time intervals by electric means
- G04F10/005—Time-to-digital converters [TDC]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06G—ANALOGUE COMPUTERS
- G06G7/00—Devices in which the computing operation is performed by varying electric or magnetic quantities
- G06G7/12—Arrangements for performing computing operations, e.g. operational amplifiers
- G06G7/16—Arrangements for performing computing operations, e.g. operational amplifiers for multiplication or division
- G06G7/161—Arrangements for performing computing operations, e.g. operational amplifiers for multiplication or division with pulse modulation, e.g. modulation of amplitude, width, frequency, phase or form
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C27/00—Electric analogue stores, e.g. for storing instantaneous values
- G11C27/02—Sample-and-hold arrangements
- G11C27/024—Sample-and-hold arrangements using a capacitive memory element
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M1/00—Analogue/digital conversion; Digital/analogue conversion
- H03M1/12—Analogue/digital converters
- H03M1/14—Conversion in steps with each step involving the same or a different conversion means and delivering more than one bit
- H03M1/144—Conversion in steps with each step involving the same or a different conversion means and delivering more than one bit the steps being performed sequentially in a single stage, i.e. recirculation type
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M1/00—Analogue/digital conversion; Digital/analogue conversion
- H03M1/12—Analogue/digital converters
- H03M1/34—Analogue value compared with reference values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4814—Non-logic devices, e.g. operational amplifiers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4828—Negative resistance devices, e.g. tunnel diodes, gunn effect devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/06—Sense amplifiers; Associated circuits, e.g. timing or triggering circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/12—Bit line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, equalising circuits, for bit lines
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/08—Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M1/00—Analogue/digital conversion; Digital/analogue conversion
- H03M1/12—Analogue/digital converters
- H03M1/1205—Multiplexed conversion systems
- H03M1/123—Simultaneous, i.e. using one converter per channel but with common control or reference circuits for multiple converters
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M1/00—Analogue/digital conversion; Digital/analogue conversion
- H03M1/12—Analogue/digital converters
- H03M1/50—Analogue/digital converters with intermediate conversion to time interval
- H03M1/56—Input signal compared with linear ramp
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Power Engineering (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Analogue/Digital Conversion (AREA)
- Amplifiers (AREA)
Abstract
一种被配置成计算矩阵乘法和加法计算的电路,包括:数字‑时间转换器,其被配置成接收数字输入,并且输出与所述数字输入成比例且在与参考时间相关联的时域中被调制的信号;存储器,其包括交叉开关网络,其中所述存储器被配置成从数字‑时间转换器接收所述时间调制信号,并且输出响应于所述时间调制输入信号和交叉开关网络的网络权重而缩放的加权信号;以及输出接口,其与交叉开关网络进行通信,并且被配置成接收其加权输出信号并且使用时间‑数字转换器来输出与至少所述参考时间成比例的数字值。
Description
技术领域
本公开涉及具有包括神经网络的人工智能的能力的计算机系统。
背景技术
深度神经网络在广泛的应用中被部署,在这些应用当中的是诸如loT设备之类的低功率传感器。它们有时被称为“边缘”设备,板载分类器使得能够进一步降低它们的能量消耗,这些分类器使从传感器到网络(云)的恒定数据流量最小化以用于推理目的。通过训练板载分类器以标识有限数量的类别(元数据),该传感器可以在低能量水平下连续地操作。一旦板载分类器在所感测的量中检测到期望标志(signature),就可以启用高保真度感测和高数据速率云连接,以进行更智能的操作。这最终导致了这种“边缘”设备的低能量操作和延长的电池寿命。在这种始终开启的方案中,遵循该传感器的经训练的神经网络可能有时对总体能量消耗做出相当大的贡献。这些神经网络主要基于大型矩阵乘法和加法操作而运行,并且经常需要将大量数据从外围存储器传递到处理单元。由于驱动互连的寄生电容所需的能量,用于数据传递的能量消耗可能比处理单元执行的数学操作大若干个数量级。
发明内容
根据一个实施例,一种被配置成计算矩阵乘法和加法计算的电路,其包括:数字-时间转换器(digital-to-time converter),其被配置成接收数字输入,并且输出与所述数字输入成比例且在与参考时间相关联的时域中被调制的信号;存储器,其包括交叉开关(crossbar)网络;其中所述存储器被配置成从数字-时间转换器接收所述时间调制信号,并且输出响应于所述时间调制输入信号和交叉开关网络的网络权重而缩放的加权信号;以及输出接口,其与交叉开关网络进行通信,并且被配置成接收其加权输出信号并且使用时间-数字转换器(time-to-digital converter)来输出与至少所述参考时间成比例的数字值。
根据第二实施例,一种被配置成计算矩阵乘法和加法计算的电路,其包括:数字-时间转换器,其被配置成接收数字输入,并且输出与所述数字输入成比例且在与参考时间相关联的时域中被调制的信号;存储器,其包括交叉开关网络;其中所述存储器被配置成从数字-时间转换器接收所述时间调制信号,并且输出按照所述时间调制输入信号和交叉开关网络的网络权重而缩放的加权信号,其中所述网络权重位于交叉开关网络的一个或多个位线或字线上;以及输出接口,其与交叉开关网络进行通信,并且被配置成接收其加权输出信号并且使用时间-数字转换器来输出与至少所述参考时间成比例的数字值。
根据第三实施例,一种被配置成计算矩阵乘法和加法计算的电路,其包括:数字-时间转换器,其被配置成接收数字输入,并且输出与所述数字输入成比例且在与参考时间相关联的时域中被调制的信号;存储器,其包括交叉开关网络,其中所述存储器被配置成从数字-时间转换器接收所述时间调制信号,并且输出按照所述时间调制输入信号和交叉开关网络的网络权重而缩放的加权信号,其中响应于被配置成可编程权重的非易失性存储器来调整所述网络权重;以及输出接口,其与交叉开关网络进行通信,并且被配置成接收其加权输出信号并且使用时间-数字转换器来输出与至少所述参考时间成比例的数字值。
附图说明
图1图示了DEQ网络的表示。
图2图示了用于DEQ网络的信号流程图的实施例。
图3图示了具有非线性放大器309的简单反相电路300的实施例。
图4图示了基于反相放大器的多输入、多状态DEQ模型的示例。
图5图示了利用计算结构503和输出层504而实现的DEQ网络500。
图6图示了计算结构600的示例。
图7是可以用于实现DEQ网络的通用计算结构的一个实施例的图示。
图8图示了可以如何使用计算结构来利用偏置(bias)。
图9图示了替代实施例,其示出了被并入到计算结构中的输出层计算的实施例。
图10是连续时间DEQ网络的示例,该网络的输出是当前和先前输入和输出的连续时间函数。
图11是离散时间DEQ网络的示例,该网络的输出是当前和先前输入和输出的离散时间函数。
图12图示了不依赖于先前输入或输出的DEQ网络的离散时间实现方式的信号流程图。
图13图示了来自图12的实施例的DEQ离散时间系统的波形。
图14图示了具有附加的延迟输入和反馈的DEQ离散时间实现方式的信号流程图。
图15图示了存储器内计算MAC块的框图。
图16图示了阵列的4×4子集,诸如N×M阵列的4乘4子集。
图17(a)-(g)图示了用于扩展所示架构以缩放至更高分辨率权重、更高分辨率输入激活的多种技术以及差分操作。
图18(a)-(h)图示了所示出的示例接口电路。
图19图示了CMOS半导体过程的示例。
图20(a)-(e)图示了关于单位单元与字线和位线的连接以及单位单元中的内部连接之间的实施例的各种示例。
图21图示了利用第一实现方式的基于单晶体管(1T)ROM的计算单元的示例。
图22图示了使用单个晶体管作为单位元件的替代实现方式。
图23图示了使用单个晶体管作为单位元件的替代实施例。
图24图示了利用单个电容器作为单位元件的基于ROM的MAC阵列的实现方式。
图25图示了利用单个电容器作为单位元件的基于ROM的MAC阵列的替代实施例。
图26(a)-(b)图示了在单位元件中利用单个晶体管和单个电容器的基于ROM的MAC阵列的实现方式。
图27(a)-(b)图示了使用单个晶体管和电容器作为单位元件的替代实现方式。
图28图示了在单位元件中使用两个晶体管和一个电容器的实现方式。
图29图示了基于单晶体管和单电容器ROM的计算单元的实施例。
图30图示了使用单个电阻器作为单位元件的基于ROM的MAC阵列的实施例。
图31(a)-(d)图示了用于任意机器学习算法的基于IMC的处理器内的计算单元的若干个实施例。
图32(a-d)图示了不同类型的单位单元被交错(interleave)并且连接到相同位线的实施例。
图33(a)-(d)图示了对ROM和RAM两者进行组合的计算单元的实施例。
图34(a)-(d)图示了基于3D堆叠式ROM的IMC阵列的各种实施例。
图35(a)-(c)图示了“边缘”感测设备的示例。
图36图示了由交叉开关网络实现的模拟乘法和加法操作的实施例。
图37(a)-(b)图示了具有嵌入在存储器中的脉冲宽度调制激活信号和二进制权重的交叉开关网络。
图38(a)-(c)是基于忆阻器的交叉开关网络,该网络是利用脉冲宽度调制激活来激活的,并且是利用幅度域模数转换器在幅度域中读出的。
图39(a)-(c)图示了至点积计算交叉开关网络的基于时间的接口。
图40(a)-(c)图示了至混合信号点积计算硬件的所提出的时域接口的功能框图和操作。
图41(a)-(c)图示了时域多级激活输入、多级点积输出的基于SRAM的存储器内计算交叉开关网络。
图42(a)-(b)图示了至用于点积计算的交叉开关网络的基于SRAM的多级输入、多级输出时域接口。
图43(a)-(b)图示了电荷再分区(redistricting)架构。
图44(a)-(b)图示了被应用到用于存储器内计算点积计算的交叉开关网络的时域接口方案的基于只读存储器(ROM)的示例。
图45(a)-(b)图示了基于ROM的电荷再分布时域接口。
图46(a)-(d)图示了具有时域比率式(ratiometric)接口的基于浮栅闪存(floating gate flash)或FeFET的交叉开关网络的示例。
图47图示了用于利用沟道电导或者饱和或亚阈值中的电流源来实现交叉开关网络的线性缩放权重的晶体管阈值电压的范围。
图48(a)-(b)图示了利用位线电容和忆阻器电导的两相无源放电。
图49(a)-(b)图示了使用一个比较器来进行比率式时域点积输出评估的基于忆阻器的无源放电方法。
具体实施方式
本文中描述了本公开的实施例。然而,应当理解的是,所公开的实施例仅仅是示例,并且其他实施例可以采取各种替代形式。附图不一定是按比例绘制的;一些特征可以被放大或最小化以示出特定组件的细节。因此,本文中公开的具体结构和功能细节不应被解释为限制性的,而仅仅是作为用于教导本领域技术人员以各种方式采用实施例的代表性基础。如本领域普通技术人员将理解的,参考附图中的任一个所图示和描述的各种特征可以与一个或多个其他附图中图示的特征相组合,以产生未明确图示或描述的实施例。所图示的特征的组合提供了针对典型应用的代表性实施例。然而,对于特定应用或实现方式,可能期望与本公开的教导一致的特征的各种组合和修改。
大数据用于训练深度神经网络以便推理出感兴趣的类别。用于这些网络的架构主要依赖于大型矩阵乘法和加法操作。在数字硬件实现方式中,大量的能量消耗开销与权重和激活从外围存储器向算术计算单元的传递、以及结果回到存储器的传递相关联。存储器内计算方案通过在存储权重的地方(即,存储器)执行计算来解决该问题。一种用于实现存储器内计算的方法是借助于模拟信号处理来实现的,例如通过使用交叉开关网络。在这里,权重可以借助于缩放的阻抗(诸如,电阻器或电容器)来实现,该阻抗的值形成了神经网络的权重并且被存储在交叉开关内。激活输入采用模拟电压的形式,该模拟电压当被应用到阻抗(权重)时会产生电流(或电荷包),该电流的值与通过权重元件(其阻抗的转换)而缩放的对应激活值成比例。这形成了乘法操作。这些乘法结果的求和可以通过电气网络操作(基尔霍夫定律)在无源电路节点中执行,例如借助于电路节点中的电流求和或电容器中的电荷累加(accumulation)[2]。
这种交叉开关网络使得能够在低能量消耗水平下进行同时且大尺度(largescale)的乘法和加法计算(MAC操作,也被称为矩阵点积计算)。为了应用模拟激活输入并且读出所得的模拟MAC输出,通常借助于数模转换器(DAC)和模数转换器(ADC)来应用幅度域数据转换方案。这种方案有若干个缺陷。在数据转换(模拟到数字,并且反之亦然)持续时间内的网络和接口电路中的电流的连续流动不是能量高效的(energy efficient)。此外,数据转换器是复杂的电路,并且会消耗静态功率并占用芯片面积。因此,它们对于大尺度深度神经网络的应用产生了在网络的可缩放性(scalability)和能量效率方面的限制。这种模拟乘法和加法网络可以在时域中被对接,而不是使用幅度域接口(用于激活和读出)。时域模数接口电路(数字-时间和时间-数字转换器)的架构更接近数字电路,并且因此具有小得多的面积的占用空间,并且主要消耗动态功率。因此,它们的采用更适合大的缩放,并且可以受益于深亚微米集成电路技术。
图1示出了DEQ网络的表示。DEQ网络可以实现如在2020年6月8日提交的申请No,16/895,683“SYSTEM AND METHOD FOR MULTISCALE DEEP EQUILIBRIUM MODELS”中描述的功能、网络和训练,该申请通过引用整体地并入本文。DEQ可以具有单个层。在图1的网络和DEQ模型中使用了两个重要等式。第一个等式——等式(例如,Eq)1(如下所示),该等式可以定义单层DEQ模型。它可以由该模型/网络的状态z的非线性函数σ(∙)组成。去往该网络的输入可以定义为x,并且输入偏置可以定义为b。要注意的是,虽然等式1是通用表示,但是它可能并不表示DEQ网络的所有可能实施例。例如,线性运算符Wz不仅可以指代矩阵乘法,而且还可以指代在深度网络中常见的卷积或其他结构化线性运算符。并且隐藏单元或隐藏状态z可以不仅仅表示典型的“单个”隐藏单元,并且还可以表示例如多个隐藏单元在多个不同的时间或空间尺度上的级联。等式2描述了隐式非线性差分等式,针对该差分等式的根z *是未知的并且需要被求解以评估DEQ网络。为了求解出该根,可以针对z *迭代地对成本函数——等式3进行求解。当迭代地对等式3进行求解时,该网络被设置为初始状态z n=0。然后,该迭代继续计算成本函数的下一个值C n=1(z n=1,x,b),如下面的等式3已知的那样。当成本函数小于预定义容限ε时,根的寻找可以被认为已完成(根被求解),如等式4所示的那样。当k次迭代后满足该条件时,假设z k ≈z *,等式4。要注意的是,在根的求解期间,输入x和b被认为是常数,并且对于DEQ网络,训练和推理两者是使用该迭代过程来实现的。
表1:DEQ模型的等式
根据上述等式1和等式2,可以开发出描述了等式2的计算的信号流程图,如图2所示。信号流程图可以被表示为具有非线性函数σ的基于矩阵的操作。这可以通过将进一步讨论的电子计算结构来实现。
下面提供了图2中的变量的定义:
表2:变量定义
如图2所示,DEQ网络可以由多个乘法和求和(诸如,输入、偏置和输出状态的卷积)来表示。这通常被称为点积或者乘法和累加(MAC)操作。因此,可以修改可用于实现标准卷积神经网络的电路,以实现DEQ网络。主要的修改是如何完成计算。在标准神经网络中,计算不接收当前输出状态到网络的输入的连续时间反馈。通常,如果出现反馈,它会以延迟而出现,即它是先前计算的结果。
根的模拟计算:稳定(settle)到平衡条件而不是迭代:
图3图示了具有非线性放大器309的简单反相电路300的实施例。非线性放大器309可以具有延迟,诸如单极点(single pole)放大器。该电路可以具有第一电阻器305和第二电阻器307。第一电阻器305可以随时间接收输入301。DEQ方法的一个方面是:用于DEQ中的推理和训练的根寻找可以类似于稳定到平衡的物理系统(电气、机械、流体等)。有效地,DEQ模型中的推理和训练可以使用稳定到平衡点311(根-A发现)的物理系统来实现。例如,我们可以考虑简单反相放大器,如电路300中的放大器309所示的简单反相放大器。该模拟电路可以具有非线性增益301σ,该非线性增益301σ具有图3的小信号增益A v 和单极点(简单延迟τ a )。在这种情况下,我们可以示出,该电路实现了函数——等式5(如下表所示),其类似于等式1。针对该示例,等式5的根可以作为时间的函数来求解,例如,如等式6、7和8中那样。在等式6、7和8中,可以示出的是,模拟计算将渐近地(指数地)接近或稳定到平衡状态。针对该电路的指数稳定的时间常数由等式8来定义。要注意的是,由于指数稳定和放大器的有限增益,可能永远无法达到理想的平衡状态。
以下等式可以表示图3的反相电路300:
针对简单反相电路示例的输出的近似解(根):
具有非线性放大器309的简单反相电路300可以具有延迟310(例如,单极点放大器)。这种模拟反馈电路300可以是模拟DEQ网络的基本构建块的示例实现方式。表示简单反相电路的等式以及针对简单反相电路的输出的近似解(根)在下表——在表3中示出:
表3:针对简单反相电路的等式
上面的示例说明了可以使用连续时间模拟电路来计算DEQ网络的根从而实现DEQ网络。要注意的是,DEQ网络的根是网络z(t)的最终状态。它还说明了有限放大器增益A v 和有限带宽可能如何导致最终平衡状态或根z *中的误差。对于使用模拟计算的DEQ网络而言,z *中的其准确度和/或误差取决于允许该电路稳定多长时间、或在读出其输出之前允许经过多少时间常数τ p ,如等式9所示。这可能类似于数字计算中的迭代根求解方法,其中计算该解所需要的迭代次数或时间取决于所需的准确度或最终误差容限ε。然而,对于模拟电路而言,最终状态下的误差量还取决于由放大器增益A v 设置的有限增益误差(等式9)。根据等式9、10,可以计算对放大器增益和带宽的要求,以达到期望准确度。例如,99.9%、或者0.1%的误差需要~9.9位准确度。这可能需要比7个时间常数7∙τ p 更长的时延、以及大于1000的放大器增益。因此,在设计用于实现DEQ网络的网络和放大器时,必须考虑模拟或混合信号DEQ网络的期望准确度和时延。
表4:放大器增益和带宽等式
一般来说,模拟方法可能无法提供与数字实现方式相当的计算准确度。然而,对于可以使用较低准确度来实现的应用、或较低SNR应用而言,在用模拟方式进行处理时,在总体系统功率方面可能存在优势。因此,使用DEQ网络的模拟计算可以针对嵌入式应用实现非常低能量的机器学习,针对这些嵌入式应用,可以使这些DEQ网络的能量适合应用的期望时延/速度。
在上一节中,我们描述了可以如何利用连续时间模拟计算来实现DEQ模型。这是基于如下知识:即,可以利用等式1对DEQ网络进行建模,并且可以利用图2所示的信号流程图200对其进行建模。该图以及对它的进一步扩展形成了针对下面所有发明的基础。
混合信号电路架构的许多实施例可以用于基于图2中的信号流程图来实现DEQ模型/网络。
图4图示了基于反相放大器409a、409b、409c的多输入、多状态DEQ模型400的示例。因此,DEQ模型可以基于反相放大器和电阻式网络两者。在这种示例中,可以存在三个输入401a、401b、401c、(x 1至x 3)、三个状态403a、403b、403c(z 1至z 3)、以及输出450 y。输出层420b可以利用电阻器1/O1、1/O2和1/O3来应用输入的权重,并且直接通过激活函数作为输出450。隐藏状态(z)可以是放大器409a、b、c的输出。这些中的第一个可以是反相放大器的扩展,例如从图3扩展到图4的多输入且多输出DEQ网络。本示例可以根据DEQ网络状态z i (例如,去往每个输入的所有状态反馈)来实现全连接网络。为了完整性,提供了针对DEQ模型平衡状态的等式(等式11、12)和针对输出的等式(等式13)。在这种示例中,为了简单起见,可以假设放大器的增益420a、420b是无限的。下表中提供了这些等式:
表5:
要注意的是,在一般情况下,除了全连接架构之外,还可以使用其他类型的连接。此外,可以用诸如忆阻器或电容器之类的其他电气组件、或利用组件组合来替换网络400的电阻器。最后,其他放大器配置(诸如,非反相放大器或开关电容器放大器)也可以用于实现与其类似的DEQ网络。
图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和函数h(∙)可以利用数字、模拟或混合信号电路来实现。
图6图示了计算结构600的示例。计算结构600仅仅是可以在各种实施例中使用的计算结构的示例。这些等式可以表示由结构600执行的计算。图6是计算结构的示例。元件611 U RC 可以用不同的组件来实现,该不同的组件诸如电阻器(RRAM、PCM)、电容器、晶体管、或这些的组合。这些元件可以用于利用权重对行603上的输入信号执行点积或卷积,该权重由元件611 U RC 的值来确定。这种模拟求和基于基本的电学现象,诸如电流求和(柯氏电流定律)、电荷守恒(电荷求和、再分布)、欧姆定律等。这些基本现象可能本质上使得能够实现电荷、电流和电压领域中的模拟计算或求和与乘法。行驱动器612可以取决于计算结构600中使用的设备类型来执行不同的功能。在一些情况下,它们可能是全数字或全模拟的。在其他情况下,它们执行数模转换。可以在行驱动器612处接收输入601。通常,对电荷、电流、电压的求和通常在列607上发生。感测放大器(或“amp”)609可以用作针对该求和的第一级放大,并且可以取决于网络类型具有不同的功能。例如,对于DEQ网络而言,一个或多个感测放大器可以实现非线性函数σ(∙),该函数可以采取双曲正切或其他众所周知的非线性激活函数的形式,诸如整流线性单元(reLU)。
图7是可以用于实现DEQ网络的计算结构的实施例的一个实施例的图示。在该示例中,使用感测放大器来添加输入偏置。对于利用模拟计算结构来实现DEQ而言,可能存在与图7相关联的若干个变型。例如,可以存在一个感测放大器709或针对多个列或所有列的一个感测放大器。每行703可以存在一个行驱动器702,或者可以存在针对多个行或所有行703的一个行驱动器702。在另一个实施例中,感测放大器709可以实现任何非线性函数。另外,感测放大器709可以用于添加偏置b。一般来说,如果需要对结构输出或输出层711进行数字化,则感测放大器709也可以用模数转换器来替换或者作为模数转换器的一部分。感测放大器709可用于实现更准确的求和——这可能包括电荷或电流求和。在实施例的又一个变型中,行驱动器702可以将模拟、数字信号驱动到行703上。行驱动器702还可以驱动基于时间的信号(脉冲、脉冲宽度调制(PWM)信号等)。结构元件713 U RC 可以是使得能够进行计算(乘法、求和)的任何元件。因此,该结构元件可以是电阻器、电容器、晶体管等。任何组合可以用于对计算机结构中使用的等式进行求解。
与图7所示的实施例形成对照,图8示出了可以如何使用计算结构800来利用偏置820 b,而不是通过感测放大器809来添加偏置820 b。在图8的该示例中,使用计算机结构来添加输入偏置。也可以通过其他手段来添加偏置820。如果需要对结构输出或输出层811进行数字化,则感测放大器809也可以用模数转换器来替换或者作为模数转换器的一部分。感测放大器809可以是对标量、矢量或张量输入进行操作的非线性函数。输出也可以是标量、矢量或张量。
图9图示了替代实施例,其示出了输出层911计算可以被并入到计算结构中的一种方式。输出层911也可以由不同于感测放大器909的感测放大器910组成。输入901可以被馈送到行驱动器902中。输出层911可以包括感测放大器910。另一个感测放大器909可以用于将各种状态输出回到行驱动器902,直到满足收敛条件。DEQ模型的最终输出可以由感测放大器910来输出。
本公开还可以考虑依赖于当前和先前网络根和输入的DEQ网络。已经示出了DEQ模型/网络的较早示例,其中输出状态z是在没有延迟的连续时间内的状态的反馈以及输入x的函数。然而,存在如下情况:其中,DEQ网络状态可以是先前(延迟)输入和根的函数。依赖于先前状态和输入的连续时间DEQ网络通常可以由等式14和15来描述。
表6–连续时间DEQ网络:
图10是实现等式14和15的网络的示例。图2图示了依赖于先前状态和输入的DEQ网络1000的实施例。离散时间DEQ模型可以用等式16和17来描述。在这种情况下,DEQ网络1000是在较早时间t(n)处发生的先前状态和输入的函数。通常,在这些系统中,z(n) 1109被认为等同于z(t(n))。DEQ输出状态的后续计算之间的时间是T calc = t(n)−t(n-1)。T calc 可以由系统时钟、即来设置。或者,该系统可以是自定时的(self timed)或异步的。在这种情况下,后续计算之间的时间仅取决于该硬件计算出下一个状态的速度。可以以与时间相关的延迟1005来馈送随时间的输入1001。偏置1002也可以被输入到计算机结构1003。计算结构1003可以以另一个时间延迟1007来重新馈送状态1009。计算机结构1003可以向输出层1011输出最终状态1009。输入1001、偏置1002和输出1003可以是标量、矢量或全张量。它也可以是DEQ网络状态的任意函数。
表7–离散时间DEQ网络:
图11图示了离散时间DEQ网络1100的示图。在该示例中,网络1100利用了计算结构1103。
图11图示了由上面所示的等式16和17描述的DEQ网络的一般示例。网络1100可以将输入1101与以延迟1105在输入处提供的多个先前输入一起接收,这些输入要被发送到计算机结构1103。采样状态1109可以被发送到输出层1111。当前状态1109也可以与以延迟1107提供的先前状态一起被反馈给计算结构1103。输出层1111可以输出最终输出y(n)1113作为DEQ模型(包括随时间的DEQ模型)的函数。输出1113可以是标量、矢量或全张量。它也可以是DEQ网络状态的任意函数。
图12是DEQ的信号流程图。它可能是离散时间实现方式。图13中示出了DEQ离散时间系统的波形。图12中示出了基于离散时间的DEQ网络的一个示例。在这种情况下,以时间nT clk 来对DEQ网络的输入和状态进行采样。采样保持(sample and hold)1203、1207的输出可能具有延迟。第二采样保持1207将输出DEQ状态的函数。输入可以是标量、矢量或张量,并且输出也是相同的。输出1211可以是DEQ模型,或者标量、矢量或张量。
图3图示了DEQ离散时间系统的波形的示例。对于该示例,采样保持可能是理想的,并且具有零延迟。图13还图示了描述DEQ网络的输入和输出的时间序列的波形。这是感兴趣的示例,这是因为计算结构在连续时间内对离散时间输入x(n)、z(n)和b(n)进行操作,这些输入在图13的计算期间保持恒定。输出状态z(t)在连续时间内稳定到平衡状态z *(t)=z(n)。要注意的是,可以对平衡状态z *(t)进行采样,并且然后将其用于输出层中的计算。
图14图示了具有附加的延迟输入和反馈的DEQ离散时间实现方式的信号流程图。采样保持电路1403可以随时间检索输入1401。时间延迟输入1404(例如,作为示例被示出为一个时钟周期,但是可以是任何类型的延迟周期)可以被馈送到求和块1405中,求和块1405可以是计算结构。求和块1405可以基于各种输入和状态来实现非线性函数。如图14所示,求和块1405可以考虑一个或多个时钟周期的根的延迟。求和块1405可以将根输出到第二采样保持电路1407。采样保持电路1407可以向函数1409输出DEQ模型的状态。最后,可以输出DEQ模型的输出1411作为DEQ网络状态的任意函数。
图15图示了存储器内计算MAC块的框图。在一个简单实现方式中,可以沿着水平维度提供N个输入激活(每行单位元件一个输入激活),并且可以沿着垂直维度产生M个MAC输出(每列单位元件一个MAC输出)。因此,行驱动器1503可以向阵列1501输出N个激活。该阵列可以将M个列输出到列读出器1505。输入激活和输出由物理参数(诸如电压)来表示。“神经元”可以指代包括连接到该列的所有单位元件的单个列。多个神经元(列)相邻地连接,并且每个神经元输出单个MAC操作的结果。可以可选地包括复位块1507,以便将该阵列复位到指定初始条件。
图16图示了阵列的4×4子集,诸如N×M阵列1501的4乘4子集。因此,该图可以详述示出了连接到字线1609和位线1611的单个元件的MAC阵列的内部。输入(X i )可以作为单位(single bit)分辨率(二进制)值或以分辨率更高(多位)的分辨率来提供,但是求和始终以模拟方式在每一列中执行。每个单位元件存储权重值(Wij),该权重值可以是单位分辨率(二进制)或具有更高(多位)分辨率。使用单位单元中的电路元件的物理参数(例如电导)来存储权重。该阵列的每一列的输出(Yj)是可以保存在模拟域中的模拟值,该模拟值被数字化以用于在处理器内部进一步使用,诸如用于去往另一个MAC块的输入、或者用作最终输出。针对动态读出方案,可以可选地包括复位块1607,以便将该阵列复位到指定初始条件。
图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)所示,可以在某些行中并联使用多个单位元件,以缩放输入激活的个体分量的影响并且匹配编码方案。
如图17(f)和图17(g)所示,也可以使用差分技术,差分技术在增加动态范围的同时提供了针对电源噪声(supply noise)和变化的鲁棒性。图17(f)示出了差分权重方案,其中互补的权重值(例如,W11和W11b)被存储在连接到互补位线但是连接到相同输入激活的单位元件中。互补位线的输出(例如,Y1和Y1b)可以由列读出电路以差分方式读出。图17(g)示出了差分输入激活方案,其中互补的输入激活值(例如,X1和X1b)在分离的字线上被提供。互补字线可以连接到存储了相同权重值但是连接到互补位线的单位元件。如前所述,互补位线的输出(例如,Y1和Y1b)由列读出电路以差分方式读出。
图17中描述的技术彼此兼容,并且可以在相同的实现方式中使用。因此,各种权重方案可以互换地使用。
在一个实施例中,如图17(a)所示,可以使用多个单位单元来增加所存储的权重的分辨率。在另一个实施例中,诸如图17(b)所示,存储了经编码的权重1701的分量的单位单元1701可以连接到分离的位线。可以在模拟或数字域中的列读出电路中对分离的位线的部分结果进行组合。在另一个实施例中,诸如图17(c)所示,可以在某些列上并联使用多个单位单元,以便匹配编码方案。在另一个实施例中,诸如图17(d)所示,经编码的输入激活可以被应用于保存了相同权重值且连接到相同位线的单位单元,以便增加(一个或多个)输入激活函数的分辨率。在另一个实施例中,诸如图17(e)所示,可以在某些行1703中并联使用多个单位单元,以便缩放输入激活函数的影响并且匹配编码方案。在图17(f)的实施例中,差分权重连接到分离的位线。使用差分列读出电路来读取位线上的差分输出。在该实施例中,图17(g)的差分输入激活被提供给连接到分离的位线的经复制的权重。使用差分列读出电路来读取位线上的差分输出。该实施例还可以包括复位块1707。
行驱动器1703、该阵列中的单位单元、以及列读出电路1705一起工作以执行MAC计算。行驱动器和列读出电路一起形成了至MAC引擎的接口。去往MAC引擎的输入可以用多个可能的域之一(诸如,电压、电流、电荷或时间)来表示。相同的域或另一个域可以用作输出。例如,电压驱动器可以用于沿着字线提供输入激活,并且电流读出电路可以用于从位线读取输出。这些接口电路可以是静态的,其中每当应用了新输入时,该阵列的输出就自然地稳定到MAC操作值的输出,或者这些接口电路可以是动态的。在动态实现方式中,可以使用若干个时钟相位来完成单个MAC操作,诸如在开关电容器方案中。接口电路也可以是基于时间的。例如,可以用电压脉冲的宽度或持续时间来对输入激活值进行编码。
图18图示了所示出的示例接口电路。图18(a)示出了基于电压的行驱动器(例如,数模转换器(DAC),接着是电压缓冲器),该行驱动器针对每个输入值(In1、In2、In3等)在字线i上提供新的静态电压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 保持为虚拟接地,并且位线电流被分流通过阻抗Z j 以将该值转换成电压。图18(f)示出了充当电荷积分器的电容式TIA。电容式TIA可以与开关电容器方案一起使用,以读出基于电荷的信号。如图18(g)所示,可以在位线上直接使用模数转换器(ADC)以将模拟值(例如,电压、电流或电荷)转换成数字值,或者该模数转换器(ADC)可以跟随另一个放大器(如虚线所示)。图18(h)示出了差分读出方案(其可以基于图18(d-g)所示的任何方案),该方案读取相邻的列或列组之间的输出量(例如,电压、电流或电荷)中的差异。在差分实现方式中,互补的权重被存储在相邻列中的单位单元中。
在MAC引擎阵列内,单位元件便于输入激活与所存储的权重值之间的乘法操作。另外,单位元件也可以充当转换元件。它还可以从输入域(诸如,电压、电流或时间)转换到通过共享位线而累加并且从MAC引擎中读出的另一个域(诸如,电压、电流、电荷或时间)。
在许多NN算法中,可训练的偏置(偏移项)被添加到MAC操作的输出。这可以在阵列结构(诸如,图16所示的阵列结构)内通过将一行或多行单位元件专用于存储偏置参数并且将适当的输入应用到对应字线来促进。偏置也可以被包括在列读出结构内部的模拟或数字电路内部,或者被包括在处于MAC单元之后、去往NN的下一层的输入之前的电路中。
图18图示了用于MAC引擎的接口电路的实现方式的示例。例如,图18(a)是静态电压输入的图示。在另一个示例中,图18(b)图示了脉冲密度调制电压脉冲。在又一个实施例中,图18(c)图示了直接电压或电流读出。在另一个示例性实施例中,图18(d)示出了跨阻放大器读出。在另一个实施例中,图18(e)图示了用于基于电荷的读出的电容式跨阻放大器(电荷积分器)。在另一个图示中,图18(g)示出了ADC可以用于直接读出MAC操作的结果,或者可以跟随放大器。在又一个图示中,图18(h)利用了相邻的列或列组j与j+1之间的差分读出。
若干种类型的随机存取存储器(RAM)技术已经被用于混合信号IMC NN处理器,这些技术诸如SRAM、电阻式RAM(RRAM)或相变存储器(PCM)、磁阻RAM(MRAM)、铁电场效应晶体管(FeFET)和闪速存储器。可以以任何次序来读取和更新使用这些RAM技术的存储器。SRAM是一种易失性RAM存储器技术,该技术通常被组织为具有六个、八个或更多个晶体管的单位单元,这些晶体管可以存储二进制权重值。另外,SRAM广泛地可用于大多数标准集成电路过程中,并且不需要任何特殊处理。除闪速存储器之外,上面列出的其他技术都是新兴的非易失性存储器(被称为eNVM或NVRAM),并且可以存储二进制值、具有更多个位的分辨率的值、或模拟值。这些不同的NVRAM技术中的单位元件在物理上可以比SRAM单元更小,潜在地降低至该技术的最小特征大小(例如,单个晶体管大小的数量级)。然而,许多NVRAM技术仍在开发中,通常不可用于标准集成电路过程中,并且具有较高成本。另外,由于这些NVRAM技术需要对诸如电阻之类的物理参数进行重新编程,因此它们具有来自较差的稳定性、保留率(retention)、成品率(yield)和漂移性能的问题。
一次性可编程只读存储器(ROM)可以用于IMC处理器的单位元件中。可以在处理器的制造期间或之后不久对ROM阵列进行编程。可以在任何集成电路过程中使用对于该技术固有的组件来设计基于ROM的处理器,并且基于ROM的处理器在性能、安全性和成本方面具有优势。它们非常适合不需要现场重新编程的应用,诸如部署在物联网(IoT)应用的边缘处的低成本传感器。针对其他应用,基于ROM的计算单元也可以与包含RAM的计算单元一起使用。大多数模型参数可以是固定的,同时针对某些NN算法维持一组专用的可重新编程的任务特定参数。这可以在基于IMC的处理器中通过如下方式来实现:将大多数模型参数存储在基于ROM的计算单元中,而使用诸如SRAM之类的技术将较少数量的任务特定参数存储在基于RAM的计算单元中。这种方法维持了基于ROM的IMC架构的大部分优势,同时允许用于任务专门化的可编程性,从而处理随时间变化的操作条件、以及在边缘处进行训练。
图19图示了CMOS半导体过程的示例。基于IMC ROM的计算单元中的权重值在制造期间或制造之后不久是可一次性编程的。CMOS半导体过程中的后端制程(BEOL)电气互连(如图19所示)用于实现可编程性。例如,金属连接、与硅基器件(诸如,晶体管、电阻器或二极管)的接触或金属层之间的过孔(via)可以用于重新配置存储在NN中的权重。这可以在前端制程(FEOL)处理完成之后通过改变BEOL过程中用于定义金属、接触或过孔层的光刻掩膜来以较低成本完成。最后,有可能存储经部分处理的CMOS晶圆以用于稍后配置。晶圆处理可以在处理该层(诸如,金属、接触或过孔层)之前停止,并且可以用于定义存储在基于ROM的计算单元中的权重。在这一点上,晶圆可以被存储,以用于稍后在处理剩余层的同时进行编程。这使得能够以低成本在仅对少量掩模进行改变、或者甚至仅对单个掩模层进行改变的情况下快速生产不同版本的基于ROM的计算单元。
如所示出的,典型CMOS半导体过程的横截面示出了包含用硅制成的器件(电阻器、晶体管、电容器)的前端制程(FEOL)、以及定义了芯片上的电气互连的后端制程(BEOL)。要注意的是,BEOL层堆叠通常还可以包含电气器件,诸如电容器、电感器、电阻器等。在更先进的过程中,BEOL层堆叠还可以具有非易失性存储器,诸如PCM、RRAM和3D NAND闪存。
图20图示了关于单位单元与字线2001和位线2003的连接之间的实施例的各种示例。例如,在图20(a)中,该实施例图示了连接到位线2003和字线2001两者的单位单元2005。在图20(b)中,改变了金属连接,以便改变存储在该单元中的权重值。在图20(c)中,该实施例示出了类似的示例,其中改变了接触或过孔连接2007以便改变权重值。因此,通过移除接触或过孔连接,改变了单位单元权重。替代地,可以修改单位单元内的内部金属连接,以便对存储在单位单元中的权重进行编程。例如,如图20(d)所示,金属层连接可以用于连接到零个、一个或多个连接选项(例如,C1、C2或C3)。在这种实施例中,通过选择内部金属连接2009来改变权重。图20(e)示出了,可以使用接触或过孔连接来代替金属层连接。一次性可编程电子熔丝也可用于对权重值进行编程,然而,这些可能不如使用金属、接触或过孔编程那样具有面积效率(area-efficient)。
使用图20中所示的方法而编程的基于ROM的计算单元也可以与图17中所示的实现方式、以及上面描述的且在图18中所示的读出方案兼容。例如,图17(a)所示的方案——其中多个单位单元并联连接——可以与图20(d)和图20(e)所示的编程方法相结合。无源(例如,电阻器和电容器)和/或有源(例如,晶体管)元件可以与所存储的权重值一起被包括在单位单元中,所存储的权重值确定它们如何互连。例如,为了存储权重值“3”,三个晶体管可以并联连接到字线和位线。代替于多个晶体管,还可以使用单个晶体管的多个指状物(finger),这些指状物根据期望权重被重新配置。
针对基于存储器内计算(IMC)ROM的计算单元,可以存在多种实现方式。这些可能涉及晶体管和/或无源元件(电阻器和电容器)的组合。这些实现方式中的每一个都利用了广泛使用的标准集成电路过程中通常可用的元件,不需要专门的技术,并且因此可以以低成本来实现。此外,由于这些实现方式在该技术中使用了良好建模的组件,因此与上面提到的实验性或新兴技术(例如,RRAM和MRAM)相比,它们的性能是鲁棒的并且可以被保证。晶体管和无源元件可以按照该技术中的最小特征大小的数量级来制造,从而允许这些实现方式非常紧凑,并且具有低面积开销,这直接转化成低成本。下面将描述基于ROM的计算单元的若干个具体实现方式及其操作。如下面进一步讨论的,这些主要由ROM中的单位元件的结构来区分。
由于这些原因,基于ROM的IMC单元相比于其他技术具有以下优势。例如,它们不会遭受稳定性、保留率、成品率或漂移问题,这些问题可能是针对利用PCM、RRAM、MRAM、FeFET或闪存等非易失性存储器技术进行长期操作的问题。另外,基于ROM的IMC单元不会遭受SRAM等技术中的消耗大量静态功率的泄漏电流。
基于ROM的单位单元可以使用在所有集成电路过程中广泛可用的元件(例如,电阻器、电容器和晶体管)来设计,并且不需要具有高成本的专门技术。ROM单位元件可以以高密度、以单个晶体管的数量级的大小而制成,从而进一步降低了成本,并且允许需要将大量(例如,数百万)参数存储在单个芯片上的算法。
不需要任何电路来对单位元件进行编程,从而节省了面积、成本和功率。基于ROM的计算单元可以提供保密性,这是因为不包括直接重新编程或读取存储器的任何电路,并且因此难以从计算单元中拷贝出模型参数(和算法)。出于类似原因,基于ROM的计算单元还可以具有高完整性和真实性。因此,在部署了传感器之后,不可能对所存储的模型参数进行重新编程,从而使计算单元是防篡改的。
可以单独使用BEOL金属、接触或过孔连接来对基于ROM的计算单元进行编程。如果使用一个层(诸如,顶部或最后的金属层)、或少量的层来对计算单元进行编程,则晶圆可以被制造直到编程层为止并且被存储。当需要时,可以利用对仅一个掩模或少量掩模的改变来完成BEOL处理,以便利用经更新的或不同的算法来制造计算单元,以用于改进的性能、任务专门化或全新的应用。这可以以低成本来完成,因为仅需要针对少量掩模或甚至单个掩模进行修改。
使用图21-34中所示的基于ROM的元件的所有以下计算单元实现方式可以使用金属、接触或过孔连接而被编程,如图20所示。为了说明每个实现方式的操作,呈现了使用单极性权重编码(例如,“0”或“1”的权重值)以及针对每个编码的单个接口方案的示例。使用图17所示的方案,诸如双极性权重(例如“-1”或“1”的权重值)或多位权重值之类的其他权重编码是可能的。有可能使用其他接口方案,诸如图18中的不同变体。编码方法和接口(驱动器和读出方案)的选择将取决于技术限制以及性能度量,诸如面积、成本、时延、吞吐量和信噪比。
图21图示了利用第一实现方式的基于单晶体管(1T)ROM的计算单元的示例。单晶体管可以用作存储二进制权重值(例如,“0”或“1”)的ROM单位元件。这可以利用若干个实现方式来实现。图21图示了第一实现方式,其中可以用作单位元件的单个NMOS晶体管2103具有连接到字线的第一(漏极)端子和连接到位线的第二(源极)端子。示出了N乘M阵列的3乘3阵列子部分。可以使用PMOS晶体管来代替NMOS器件。另外,源极端子和漏极端子连接可以被切换。该权重可以被编码在晶体管的栅极连接中,要么编码到电压V on 、要么编码到电压V off 。如果晶体管M i,j 的栅极连接到V on ,则该器件导通,并且对应所存储的权重W i,j 可以被认为是“1”。晶体管可以充当有效电阻为R i,j =R on 并且电导为G i,j =G on 的电阻器。替代地,如果晶体管栅极连接到V off ,则该器件可能关断,并且W i,j 被认为是“0”。也可以通过使栅极连接到V on 并且将一个或两个端子从字线或位线断开从而将权重设置为“0”。晶体管可以充当有效电阻为R i,j =R off 并且电导为G i,j =G off 的电阻器。这种实现方式也可以与图17中所示的用于增加输入激活或权重的分辨率的技术以及差分操作兼容。电导值与权重值之间的关系可以由以下公式来描述:
项G scale 可以是将权重转换成电导的缩放因子,并且G offset 是也可以等于零的偏移量。
如上所描述,行驱动器和列读出电路可以有多个可能的实现方式(基于电压或电流的、静态的或动态的)。在一个实施例中,单个可能的驱动和读出方案可以是示例(静态的、基于电压的输入激活和电流读出)。在该实现方式中,不需要复位块,并且可以省略复位块。仅考虑单个位线和列(对应于NN中的单个神经元),通过沿着字线应用作为电压(V Xi )2101的输入激活(X i )来执行乘法操作,该字线可以携带二进制信息(数字)或多位信息(直到模拟值):
项V Xscale 是将激活值转换成电压的缩放因子,并且V Xoffset 是也可以等于零的偏移量。激活电压在晶体管中生成电流,该电流与其有效电导成比例并且因此表示与所存储的权重值的相乘:
如果一列中的每个晶体管的第二端在跨阻放大器的输入处连接到同一位线(如图18所示)并且保持在恒定电压水平(V BL ),则电流求和表示累加操作:
在使用二进制权重值的示例实现方式中,其中G offset =0,V BLj =0V,V Xoffset =0V,对等式(Eq.)18、19和21进行组合得出:
等式22中的求和2109表示整个MAC操作。电流可以使用跨阻放大器被转换成电压,并且然后在后续的模数转换器级中被数字化。替代地,电流可以使用电流输入ADC被直接数字化,或者被缓冲并且传递给后续级。在该阵列的每一列(神经元)中使用存储在该列中的权重来执行该操作。该电路还可以包括复位块2107。
图22图示了使用单个晶体管作为单位元件的替代实现方式。在该实施例中,晶体管栅极端子连接到字线,第一端子(漏极)连接到位线,并且第二端子(源极)连接到参考电压。示出了N乘M阵列的3乘3阵列子部分。可以使用PMOS晶体管来代替NMOS器件。另外,源极端子和漏极端子连接可以被切换。该参考电压可以被示出为信号接地,但是也可以是另一个电压,这取决于系统设计。通过在CMOS过程中使用金属、接触或过孔连接(图22中的虚线)将栅极、漏极或源极中的一个或多个与字线、位线或参考电压进行连接或断开,可以在单位单元中对权重进行编码。当所有这些端子被连接时,存储在晶体管M i,j 中的权重W i,j 为“1”。取决于晶体管的偏置方案,有多种方法来建模该权重对器件参数的影响。如果晶体管在三极管区域中被偏置,则它可以被建模为有效电阻为R i,j =R on 并且电导为G i,j =G on 的电阻器。替代地,如果晶体管在饱和或亚阈值区域中被偏置,则它可以被建模为提供电流I i,j =I on 的电流源。如果任何端子被断开,则存储在晶体管M i,j 中的权重W i,j 为“0”。如果晶体管在三极管区域中被偏置,则它可以被建模为有效电阻为R i,j =R off 并且电导为G i,j =G off 的电阻器(如果端子与位线或参考电压断开,则R off 可能非常大)。替代地,如果晶体管在饱和或亚阈值区域中被偏置,则它可以被建模为提供电流I i,j =I off 的电流源。该实现方式也与图17所示的用于增加输入激活或权重的分辨率的技术以及差分操作兼容。针对“导通”的晶体管处于三极管区域中并且被建模为阻抗的情况,电导值与权重值之间的关系可以使用等式18来描述。
如上所描述,行驱动器和列读出电路有多种可能的实现方式(基于电压或电流的、静态的或动态的)。在这里,我们将仅描述单个可能的驱动和读出方案,作为其中晶体管在三极管区域2203中被建模为阻抗的情况的示例(静态的、基于电压的输入激活和电流读出)。在该实现方式中,不需要复位块,并且可以省略复位块。如上面和等式19中所描述,可以用电压V Xi 来编码输入激活X i 。电压V Xi (示出为电压2201)可以采用进一步调制晶体管的电导的模拟值。替代地,V Xi 可以是仅具有两个水平(level)——低或高——的数字信号,这两个水平分别对应于X i =0和X i =1。在其中V Xi 为低的情况下,无论权重值如何,晶体管始终关断。通过单位元件的电流对应于激活和权重的乘积,并且由下式来描述:
仅考虑单个位线和列(对应于NN中的单个神经元),来自单位元件的所有电流如上所描述的那样沿着位线被求和:
将等式24与等式18进行组合并且使用G offset =0,得出:
在该实现方式中,电压V BL 不能够也是0V,并且必须不同于连接在每个晶体管的源极处的参考电压,以便生成电流。等式25中的求和2109表示整个MAC操作。电流可以使用跨阻放大器被转换成电压,并且然后在后续的模数转换器级中被数字化。替代地,电流可以使用电流输入ADC被直接数字化,或者被缓冲并且传递给后续级。在该阵列的每一列(神经元)中使用存储在该列中的权重来执行该操作。
图23图示了使用单个晶体管作为单位元件的替代实施例。在该实施例中,晶体管栅极端子连接到字线,第一端子(漏极)连接到位线,并且第二端子(源极)连接到一组参考电压中的一个。示出了N乘M阵列的3乘3阵列子部分。可以使用PMOS晶体管来代替NMOS器件。另外,源极端子和漏极端子连接可以被切换。通过选择可能参考电压中的一个并且将其连接到晶体管来对权重进行编程,其中每个水平对应于单个权重值。示出了三个参考电压2303(V REF1、V REF2和V REF3),然而可以使用任何整数数量P的参考电压。更多的参考电压水平使得能够实现更大数量的权重水平(更高的分辨率),并且更少的参考电压仅允许更小数量的权重水平(更少的分辨率)。有可能允许晶体管与所有参考电压断开,这对应于一个附加水平(总共P+1个)。该实现方式也与图17所示的用于增加输入激活或权重的分辨率的技术以及差分操作兼容。可以从任何分布中提取参考电压水平(即,它们可能不是均匀间隔的),但是也可以使用线性分布。个体单位单元中的参考电压水平V REFi,j 对应于权重水平W i,j ,并且可以通过以下表达式来描述:
项V REFscale 是将权重值转换成电压水平的缩放因子,并且V REFoffset 是也可以等于零的偏移项。在这种情况下,我们可以将晶体管M i,j 的电阻和电导建模为常数值:分别是R 0和G 0。
如上所描述,行驱动器和列读出电路有多种可能的实现方式(基于电压或电流的、静态的或动态的)。在这里,我们将仅描述单个可能的驱动和读出方案作为示例(静态的、基于电压的输入激活和电流读出)。在该实现方式中,不需要复位块,并且可以省略复位块。如上面和等式19中所描述,可以用电压V Xi (示出为2301)来编码输入激活X i 。电压V Xi 可以采用调制晶体管的电导的模拟值。替代地,V Xi 可以是仅具有两个水平——低或高——的数字信号,这两个水平分别对应于X i =0和X i =1。在其中V Xi 为低的情况下,无论权重值如何,晶体管始终关断。通过单位元件的电流对应于激活和权重的乘积并且由下式来描述:
仅考虑单个位线和列(对应于NN中的单个神经元),来自单位元件的所有电流如上所描述的那样在位线中被求和:
将等式28与等式26进行组合并且使用V REFoffset =0V和V BL =0V,得出:
等式29中的求和2309表示整个MAC操作。电流可以使用跨阻放大器被转换成电压,并且然后在后续的模数转换器级中被数字化。替代地,电流可以使用电流输入ADC被直接数字化,或者被缓冲并且传递给后续级。在该阵列的每一列(神经元)中使用存储在该列中的权重来执行该操作。
图24图示了利用单个电容器作为单位元件的基于ROM的MAC阵列的实现方式。示出了N乘M阵列的3乘3阵列子部分。一个端子连接到位线,并且一个端子连接到字线。权重被编码在这些端子的连接中。针对二进制权重值(例如,W i,j 为“0”或“1”),端子要么两者都被连接,要么一个或两个端子被断开。当两个端子被连接时,所存储的权重W i,j =1,否则W i,j =0。至字线的连接可以是可编程的,如虚线所示,然而可以取而代之使用位线连接或这两个连接。可以并联使用更多的电容器,以便获得另外的权重水平。该实现方式也与图17所示的用于增加输入激活或权重的分辨率的技术以及差分操作兼容。电容器值可以用权重水平来编码,并且可以描述为:
项C u 是将权重值转换成电容的缩放因子,并且C offset 是也可能等于零的偏移项(例如,固定寄生电容)。要注意的是,如果仅单个单位电容器与二进制权重值(“0”或“1”)一起使用,则C u 是单位电容。如果针对二进制权重值仅使用单个电容器,则C i,j 可以取的最大值被定义为C max ,并且表示电容和C offset 的求和。如果在每个单位元件中使用k个电容器来提供k+1个权重水平,则C max 等于所有电容器以及C offset 的求和。通常,C max =W max ∙C u +C offset ,其中W max 是最大的可能权重值。
如上所描述,行驱动器和列读出电路可以有多种可能的实现方式(基于动态电压、电流、电荷或时间)。在一个实施例中,该系统公开了单个可能的驱动和读出方案作为示例(动态的基于电压的输入激活和基于电压的读出)。在该实施例中,使用了复位块。可以用电压V Xi (示出为2401)来编码输入激活X i ,如上面和等式19中所描述。电压V Xi 可以采用模拟值。替代地,V Xi 可以是仅具有两个水平——低或高——的数字信号,这两个水平分别对应于X i =0和X i =1。最初,所有字线被设置为复位电压V Xreset ,并且复位块(其也可以与读出电路集成)用于将位线电压复位为电压V r 。在下一步骤中,位线被释放,并且输入激活电压V Xi 在字线上被断言(assert)。输入激活电压连同电容值使得来自每个单位元件的小电荷沿着对应总位线电容被共享:
连接到位线的总电容C T 由下式给出:
项C BL 表示连接在位线上的任何附加固定电容。仅考虑单个位线和列(对应于NN中的单个神经元),位线上产生的总电压V BLj 与跟V Xreset 和V r 相关的因子以及所有ΔQ i,j 的总和成比例:
在V Xoffset =0V、C offset =0F、C BL =0F、V Xreset =0V和V r =0V的情况下将等式19、30和33进行组合,得出:
等式34中的求和表示整个MAC操作。该电压可以使用电压-电压缓冲器或放大器从每个位线中被读取,并且然后在后续的模数转换器级中被数字化。在该阵列的每一列(神经元)中使用存储在该列中的权重来执行该操作。根据等式32,要注意的是,电容C T 取决于权重值,并且因此扩展等式34,得出:
根据等式35,分母中存在与所有权重值的总和相关的附加项,该附加项将把误差引入到MAC操作中。如果所有权重的求和2409的结果是可预测的和/或具有最小变化,则可以在系统级别处、或在要在计算单元上运行的神经网络算法的训练期间校准出该误差,以便使其可忽略不计。
图25图示了利用单个电容器作为单位元件的基于ROM的MAC阵列的替代实施例,该阵列解决了先前部分中提到的问题。在该实施例中,电容器的端子之一要么连接到字线,要么连接到被示出为接地但是可以是任何其他电压水平的参考电压。在该实施例中,位线上的总电容独立于权重值,并且由以下等式36给出:
通过使用与针对先前实现方式所描述的相同的动态的基于电压的输入激活和基于电压的读出方案,可以导致与等式34中相同的针对位线电压V BLj 的表达式,同时针对C T 使用等式36(假设V Xoffset =0F,C offset =0F,C BL =0F,V r =0V)。该求和可以表示整个MAC操作,并且不存在基于所有权重值的总求和2509的误差项或依赖性。该电压可以使用电压-电压缓冲器或放大器从每个位线中被读取,并且然后在后续的模数转换器级中被数字化。可以在该阵列的每一列(神经元)中使用存储在该列中的权重来执行该操作。
图26(a)图示了在单位元件中利用单个晶体管和单个电容器的基于ROM的MAC阵列的实现方式。电容器可以是与晶体管分离的元件,或者可以是电容之一,诸如源极(或漏极)二极管电容本身。示出了N乘M阵列的3乘3阵列子部分。晶体管和电容器串联连接在每个字线与位线之间。晶体管和电容器的次序可以被切换。可以使用PMOS晶体管来代替NMOS器件。另外,源极端子和漏极端子连接可以被切换。权重被编码在晶体管的栅极连接中,要么编码到电压V on 、要么编码到电压V off 。在该实现方式中,每个晶体管充当开关,该开关断开或闭合位线与字线之间的对应电容器的分流连接。晶体管电导值不重要,但是应当足够高,以便允许以取决于期望工作频率的电容值来进行适当的动态稳定。如果晶体管M i,j 的栅极连接到V on ,则该器件导通,并且对应所存储的权重W i,j 被认为是“1”。替代地,如果晶体管栅极连接到V off ,则该器件关断,并且W i,j 被认为是“0”。该实现方式也与图17所示的用于增加输入激活或权重的分辨率的技术以及差分操作兼容。晶体管充当一次性可编程电压控制开关,该开关断开或闭合字线与位线之间的电容器的分流连接。因此,上述电路(例如,图26)可以用与图24相同的方法来建模。权重使用等式30通过晶体管M i,j 的栅极状态来修改如通过位线所看到的单位元件的有效电容C i,j 。
如上所描述,行驱动器和列读出电路有多种可能的实现方式(基于动态电压、电流或电荷)。该实现方式可以遵循上面针对图24的电路所描述的相同的动态的输入激活和基于电压的读出进行操作。等式31-35可以用于在给定一组输入激活和权重值的情况下计算MAC操作的输出。该电压可以使用电压-电压缓冲器或放大器从每个位线中被读取,并且然后在后续的模数转换器级中被数字化。可以在该阵列的每一列(神经元)中使用存储在该列中的权重来执行该操作。分母中可能存在与所有权重值的总和相关的附加项(等式18),该附加项将把误差引入到MAC操作中。如果所有权重的求和的结果是可预测的和/或具有最小变化,则可以在系统级别处校准出该误差,并且该误差可忽略不计,如先前所描述的那样。
图26(b)中示出了图26(a)中的单位单元的替代实施例,该替代实施例可以解决取决于权重值的C T 的问题。在单位单元的该实现方式中,包括了至参考电压(其被示出为接地,但是它可以是另一个电压)的额外潜在金属、接触或过孔连接,该参考电压仅在晶体管的栅极连接到V off 的情况下被连接。否则,该实现方式与图26(a)所示的实现方式相同。这样,每个位线的总电容保持恒定,独立于权重值,并且由等式36给出。
图27(a)图示了使用单个晶体管和电容器作为单位元件的替代实现方式。示出了N乘M阵列2703的3乘3阵列子部分。晶体管和电容器可以串联连接在每个位线与被示出为接地的参考电压之间,但是可以使用另一个参考电压。晶体管和电容器的次序可以被切换。可以使用PMOS晶体管来代替NMOS器件。此外,源极端子和漏极端子连接可以被切换。通过在CMOS过程中使用金属、接触或过孔连接将晶体管栅极、晶体管漏极、晶体管源极或电容器端子中的一个或多个与字线、位线或参考电压进行连接或断开,从而在单位单元中对权重进行编码(如图27(a)中的虚线所图示)。当所有这些端子被连接时,存储在单位单元中的权重W i,j 为“1”。如果任何端子被断开,则存储在晶体管中的权重W i,j 为“0”。该实现方式也可以与图17所示的用于增加输入激活或权重的分辨率的技术以及差分操作兼容。类似于先前的电容式实现方式,权重基于如等式30中的权重值来修改如通过位线所看到的单位元件的有效电容C i,j 。
如上所描述,行驱动器和列读出电路有多种可能的实现方式(基于动态电压、电流、电荷或时间)。在一个实施例中,仅单个可能的驱动和读出方案作为示例(动态的基于电压的输入激活和基于电压的读出)。在该实现方式中,使用了复位块。如上面和等式19中所描述,可以用电压V Xi 来编码输入激活X i 。V Xi 是仅具有两个水平——低或高——的数字信号,这两个水平分别对应于X i =0和X i =1。针对低电压水平,晶体管关断,并且针对高水平,晶体管导通(将电容器连接在位线与参考电压之间)。最初,所有激活V Xi 在字线上被断言,并且使用复位块(其也可以与读出电路集成)将位线预充电到电压V r 。在下一步骤中,位线被释放,并且所有字线被断言为高电压水平,使得所有晶体管导通。输入激活电压连同单位电容值使得来自每个单位元件的小电荷沿着对应的总位线电容被共享:
连接到位线的总电容C T 由等式32给出。仅考虑单个位线和列(对应于NN中的单个神经元),位线上产生的总电压V BLj 与跟复位电压V r 相关的因子以及所有ΔQ i,j 的总和成比例:
在C offset=0F和C BL =0F的情况下将等式30和38进行组合,得出:
等式39中的求和表示整个MAC操作。该电压可以使用电压-电压缓冲器或放大器从每个位线中被读取,并且然后在后续的模数转换器级中被数字化。在该阵列的每一列(神经元)中使用存储在该列中的权重来执行该操作。根据等式32,要注意的是,电容C T 取决于权重值,并且因此扩展等式39,得出:
这类似于针对图24所示的实现方式的等式35。分母中存在与所有权重值的总和相关的附加项,该附加项将把误差引入到MAC操作中。如果所有权重的求和的结果是可预测的和/或具有最小变化,则可以在系统级别处校准出该误差,并且该误差可忽略不计,如先前所描述的那样。
图27(b)中示出了图27(a)中的单位单元的替代实现方式,该替代实现方式解决了取决于权重值的C T 的问题。类似于图27(a),当晶体管栅极连接到位线、其源极连接到参考电压(例如,接地)、其漏极连接到电容器并且电容器连接到位线时,存储在单位单元中的权重值为“1”。为了存储“0”值,晶体管不连接到电容器,而是取而代之将电容器连接到参考电压(其被示出为接地,但是它可以是另一个电压)。该实现方式可以与图27(a)所示的实现方式相同。这样,每个位线的总电容可以保持恒定,独立于权重值,并且由等式36给出。
图28图示了在单位元件中使用两个晶体管和一个电容器的实现方式。示出了N乘M阵列的3乘3阵列子部分2805。电容器连接到对应的位线,并且一个晶体管的栅极连接到字线。相同晶体管将电容器的另一端连接到一组参考电压中的一个。示出了三个参考电压(V REF1、V REF2和V REF3),但是可以使用任何整数数量P的参考电压。更多的参考电压水平允许更大数量的权重水平(更高的分辨率),并且更少的参考电压水平仅允许更小数量的权重水平(更少的分辨率)。另一个晶体管将两个晶体管与电容器之间共享的节点连接到另一个参考电压V Y 。第二晶体管的该栅极连接到电压信号V SET ,该电压信号使晶体管导通和关断。可以使用PMOS晶体管来代替NMOS器件。另外,源极端子和漏极端子连接可以被切换。通过在CMOS过程中使用金属、接触或过孔连接来连接或断开P个参考中的一个,从而在单位单元中对权重进行编码。在每个单位元件中,应当仅连接一个参考电压。该方法允许在每个单位元件内部编码P个权重水平。另外,有可能允许晶体管与所有参考电压断开,从而提供一个附加水平(总共P+1个)。可以使用垂直堆叠的金属层遍及MAC阵列来提供参考电压,以便节省面积并且允许高密度单位元件,这些元件也可以支持任意高的权重精度。参考电压水平可以从任何分布中提取(即,它们可能不是均匀间隔的),但是通常可以使用线性分布。个体单位单元中的参考电压水平V REFi,j 对应于权重水平W i,j ,并且可以由等式26中的表达式来描述。该实现方式也与图17所示的用于增加输入激活或权重的分辨率的技术以及差分操作兼容。例如,电容器C i,j 也可以使用金属、接触或过孔连接来编程,如针对先前实现方式所描述的那样。如果电容器不可编程,则其值为C 0。
如上所描述,行驱动器和列读出电路有多种可能的实现方式(基于动态电压、电流或电荷)。在这里,我们将仅描述单个可能的驱动和读出方案作为示例(动态的基于电压的输入激活和基于电压的读出)。在该实现方式中,使用了复位块。如上面和等式19中所描述的那样,可以用电压V Xi 来编码输入激活X i 。V Xi 可以是仅具有两个水平——低或高——的数字信号,这两个水平分别对应于X i =0和X i =1。针对低电压水平,晶体管M i,j 关断,并且针对高水平,晶体管导通(将电容器连接在位线与所选的参考电压V REFi,j 之间)。最初,所有激活V Xi 在字线上被断言,V SET 被拉低以关断第二晶体管,并且使用复位块(其也可以与读出电路集成)将位线预充电到电压V r 。在下一步骤中,位线被释放,并且所有字线被拉到低电压水平,使得所有晶体管M i,j 关断。然后,V SET 被拉高,以便将电压V Y 连接到电容器。考虑其中单位单元电容器被固定在C 0处的情况,该过程使得来自每个单位元件电容的小电荷ΔQ i,j 沿着对应的总位线电容被共享:
连接到位线的总电容C T 被给出如下:
在这种情况下,C T 不取决于权重值。仅考虑单个位线和列(对应于NN中的单个神经元),位线上产生的总电压V BLj 与跟V Y 和V r 相关的因子以及所有ΔQ i,j 的总和成比例:
在V REFoffset =0V、V r =0V、V Y =0V和C BL =0F的情况下对等式26和43进行组合,得出:
等式44中的求和表示整个MAC操作。要注意的是,在这种场景中,该操作是反向的。该电压可以使用电压缓冲器或放大器从每个位线中被读取,并且然后在后续的模数转换器级中被数字化。在该阵列的每一列(神经元)中使用存储在该列中的权重来执行该操作。
图29图示了基于单晶体管和单电容器ROM的计算单元的实施例。除了省略了连接到V Y 的晶体管之外,该实现方式与图28中的实现方式相同。
如上所描述,行驱动器和列读出电路有多种可能的实现方式(基于动态电压、电流或电荷)。在一个实施例中,可以使用类似于针对图28描述的驱动和读出方案的单个可能的驱动和读出方案作为示例(动态的基于电压的输入激活和基于电压的读出)。在该实现方式中,使用了复位块。如上面和等式19中所描述的那样,可以用电压V Xi 来编码输入激活X i 。V Xi 可以是仅具有两个水平——低或高——的数字信号,这两个水平分别对应于X i =0和X i =1。针对低电压水平,晶体管M i,j 关断,并且针对高水平,晶体管导通(将电容器连接在位线与所选的参考电压V REFi,j 之间的)。最初,所有激活V Xi 在字线上被断言。使用复位块(其也可以与读出电路集成)将位线预充电到电压V r 。在下一步骤中,位线被释放,并且使用该阵列外部的驱动器将所有字线拉到高电压水平(使得所有晶体管M i,j 导通),并且将所有参考电压水平设置为相同的电压水平V Y 。在读出阶段期间,所有单位电容器将连接在位线与电压V Y 之间。以这种方式,该实现方式以与图28的实现方式相同的方式而操作,并且MAC计算可以由以下等式41-44来表示。输出电压可以使用电压缓冲器或放大器从每个位线中被读取,并且然后在后续的模数转换器级中被数字化。在该阵列的每一列(神经元)中使用存储在该列中的权重执行该操作。
图30图示了使用单个电阻器作为单位元件的基于ROM的MAC阵列的实施例。示出了N乘M阵列的3乘3阵列子部分。权重被编码在电阻器到字线和/或位线的连接中。针对二进制权重值(例如,W i,j 为“0”或“1”),对于W i,j =1,端子连接到字线和位线两者,并且对于W i,j =0,端子与字线和/或位线断开。可以并联使用更多的电阻器,以便获得另外的权重水平。该实现方式也与图17所示的用于增加输入激活或权重的分辨率的技术以及差分操作兼容。电阻器R ij 的电导值G ij 用权重水平来编码,并且可以使用等式18来描述,这与针对图21中的实现方式所使用的相同。
如上所描述,行驱动器和列读出电路有多种可能的实现方式(基于电压或电流的、静态的或动态的)。在这里,我们将仅描述单个可能的驱动和读出方案作为示例(静态的基于电压的输入激活和电流读出)。在该实现方式中,不需要复位块,并且可以省略复位块。仅考虑单个位线和列(对应于NN中的单个神经元),通过沿着字线应用作为电压(V Xi )的输入激活(X i )来执行乘法操作,该字线可以携带二进制信息(数字)或多位信息(模拟值),如等式19中那样。
使用等式20、21和22而描述的MAC操作可能与针对图21的操作相同。列电流可以使用跨阻放大器被转换成电压,并且然后在后续的模数转换器级中被数字化。替代地,电流可以使用电流输入ADC被直接数字化,或者被缓冲并且传递给后续级。在该阵列的每一列(神经元)中使用存储在该列中的权重来执行该操作。
如上所描述,在相同的基于IMC的处理器内,基于ROM的计算单元可以与基于RAM的计算单元一起使用。基于ROM的计算单元可以是先前部分中提到的任何一个实现方式。另外,可以使用上述任何类型的RAM(或NVRAM),诸如SRAM、RRAM、PCM、MRAM、FeRAM或闪存。可以通过将大多数固定模型参数存储在ROM元件内部来维持基于ROM的计算单元在性能、可靠性和安全性方面的优势。存储器的较小子集可以存储可在RAM中重新编程的任务特定参数。该方案维持了RAM的大部分优势,同时允许任务专门化、部署之后的更新以处理变化的操作条件或者改进算法、以及在边缘处进行训练。
图31图示了用于任意机器学习算法的基于IMC的处理器内的计算单元的若干个实施例。机器学习算法可以由若干个层组成,每个层包含多个神经元。不同类型的计算单元可以用于不同的层,如图31(a)所示,其中基于ROM的计算单元用于层u的计算,并且基于RAM的计算单元用于层u+1。这两层的次序可以颠倒,并且基于ROM的计算单元可以在基于RAM的计算单元之后被使用,或者不同类型的IMC计算单元可以在顺序层(sequential layer)中交错。图31(b)示出了如下实现方式,其中多个类型的计算单元用于神经网络中的同一层内的计算。图31(c)和图31(d)示出了如下示例,其中层是使用包含混合ROM和RAM计算单元的计算单元来实现的。
这可以通过使用在相同位线上在模拟域中直接连接的多个类型的存储器来实现,如图32(a)和图32(b)所示,其中一次性可编程晶体管与基于RAM类型(诸如RRAM、PCM或MRAM)的单位单元一起使用。在图32(a)中,具有不同类型的单位单元的相邻块被连接到相同的位线。在图32(b)中,不同类型的单位单元被交错并且连接到相同的位线以用于模拟求和。替代地,可以使用具有不同类型存储器的多个列,如图32(c)和图32(d)所示,其中MAC计算的结果分别在模拟和数字域中被组合。基于ROM的单位单元和/或基于RAM的单位单元的数量可能从一列到另一列而变化。上面描述和图32中所示的技术是彼此兼容的。图32中所示的实现方式也与图17所示的用于增加输入激活或权重的分辨率的技术以及差分操作兼容。
图33(a)图示了对ROM和RAM两者进行组合的计算单元的实施例。该实现方式使用了图21中引入的基于晶体管的(1T)ROM拓扑、以及图33(b)中所示的标准六晶体管(6T)SRAM结构。V on 和V off 可以分别是高电源电压和低电源电压。也可以使用其他标准SRAM结构,诸如七晶体管(7T)、八晶体管(8T)或十晶体管(10T)结构。图33(a)示出了N乘M阵列的4乘4子集。可以使用基于ROM的单位单元与基于SRAM的单位单元的任何比例。可以使用PMOS晶体管来代替NMOS器件。另外,源极端子和漏极端子连接可以被切换。如上所描述,通过金属、接触或过孔连接在ROM单位单元中对权重进行一次性编程。使用特定控制信号(SEL)和专用附加位线(分别针对正和负SRAM位线的P和N)在基于SRAM的单位单元中对权重进行编程。如果单位单元的SRAM中存储了权重值“1”,则对应晶体管的栅极连接到V on 。相反地,如果单位单元的SRAM中存储了权重值“0”,则对应晶体管的栅极连接到V off 。针对ROM元件和基于SRAM的元件两者,权重可以被认为是用连接在字线与位线之间的晶体管的电导来编码的,如等式(1)所描述。
如上所描述,行驱动器和列读出电路有多种可能的实现方式(基于电压或电流的、静态的或动态的)。例如,可以使用静态的基于电压的输入激活和电流读出,如针对图21中的实现方式所描述的那样。对于这种方案,遵循等式19-22并且如上所述的那样来描述用于个体列的整个MAC操作。电流可以使用跨阻放大器被转换成电压,并且然后在后续的模数转换器级中被数字化。替代地,电流可以使用电流输入ADC被直接数字化,或者被缓冲并且传递给后续级。在该阵列的每一列(神经元)中使用存储在该列中的权重来执行该操作。
在一些实现方式中,基于SRAM的单位单元可能仅被包括在某些列中,而不是被包括在全部列中。例如,SRAM可能仅被包括在每隔一列中,如图33(c)所示。由于单位单元中的SRAM的存在需要附加的晶体管,因此这种方法可以用来减少总体面积和成本,同时仍然维持一定程度的可编程性。另外,可以使用差分实现方式,如图33(d)所示。在该实现方式中,SRAM单元的差分输出用于控制该阵列中的相邻列中的晶体管的栅极。相邻列中的对应的基于ROM的单位单元也必须如所示出的那样以差分方式来编码。读出电路也必须是差分实现方式,从而读取相邻列之间的输出量(例如,电压、电流或电荷)的差异。该实现方式也与图17所示的用于增加输入激活或权重的分辨率的技术以及差分操作兼容。这些实现方式也与图32所示的变型兼容。
图33(a)图示了在与基于SRAM的单位单元相同的IMC阵列中使用的基于1T ROM的单位单元的实施例,该基于SRAM的单位单元具有在位线上的模拟求和。图33(b)图示了使用V on 和V off 作为高和低电源电压水平的标准6T单位单元的实施例。图33(c)图示了为了节省面积和成本可以在某些列中省略基于SRAM的单位单元的示例。图33(d)图示了差分实现方式,其中单个SRAM用于向相邻列中的晶体管提供互补值(complementary value)。
图32和图33中所示的实施例仅仅是示例实施例,并且上述基于ROM的元件和基于RAM的元件的其他组合也是可能的。对混合ROM/RAM架构的选择将通过优化性能度量(如面积、功率消耗、时延、吞吐量和信噪比)来确定。
可以完全在集成电路过程的金属层中制造若干个基于ROM的IMC阵列(诸如,图24和图25所示的具有电容式实现方式的实施例)。另外,有可能完全在金属层中制造某些类别的基于RAM的IMC阵列,诸如针对RRAM或PCM。该特征允许对IMC计算单元进行3D集成,从而使得能够实现更高密度的权重存储和计算,从而节省成本并改进性能。
图34(a)图示了3D堆叠的基于ROM的IMC阵列的实施例,其具有在衬底层中的一个IMC阵列以及在金属层中的一个或多个IMC阵列。图34(b)图示了一个或多个基于ROM的IMC阵列可以在衬底中的基于RAM的IMC阵列上方被3D堆叠在金属层中。图34(c)图示了一个或多个基于ROM的IMC阵列可以在衬底中的基于ROM的IMC阵列上方与一个或多个基于RAM的IMC阵列一起被3D堆叠在金属层中。图34(d)图示了一个或多个基于ROM的IMC阵列可以与一个或多个基于RAM的IMC一起、在衬底中的另一个基于RAM的IMC阵列上方被3D堆叠在金属层中。
如图34(a)所示,一个或多个基于ROM的IMC阵列(例如,图24和图25的实施例)可以在使用衬底层和下部金属层的另一个基于ROM的IMC阵列(例如,图21-23和26-29中的基于晶体管的实现方式的实施例)上方被3D堆叠在金属层中。衬底层可以是半导体材料层,半导体材料层可以是硅晶圆或其他类型的材料。如图34(b)所示,一个或多个基于ROM的IMC阵列可以被3D堆叠在基于诸如SRAM之类的技术的基于衬底RAM的IMC阵列上方。一个或多个基于金属层RAM的IMC阵列可以与基于金属层ROM的IMC阵列一起或者不与基于金属层ROM的IMC阵列一起被3D堆叠在基于衬底ROM的IMC阵列上方(图34(c))或基于衬底RAM的IMC阵列上方(图34(d))。
图35图示了“边缘”感测设备的示例,该“边缘”感测设备具有基于神经网络的分类器,以对有限数量的类别进行分类,从而触发唤醒功能,该唤醒功能进而使得能够传输大数据以进一步处理到云。图35(b)是可以在神经网络内执行的典型矩阵乘法和加法操作。图35(c)图示了存储器和算术逻辑单元(ALU)的布置。
用于减轻该能源消耗的一种方法是并入被称为存储器内计算的方案。在这种方法中,神经网络的权重是固定的,并且被存储在其中进行计算的地方,并且因此可以大大减少数据移动。就具有数字电路的神经网络硬件实现方式而言,这可以被布置为如下架构:其中存储器和算术单元以数据存储装置更接近其目的处理器的这种方式而分布。对这一点的更高效率的替代方案是:基于管控电路电压和电流的电路网络特性来实现乘法和加法计算(MAC)。这使得能够实现输入激活(例如,通过大的权重网络的电压或电流水平)的瞬时部署,例如通过诸如电阻器之类的阻抗来实现。然后,通过对输入激活进行缩放的权重元件的阻抗来实现乘法操作,并且通过电路节点中的瞬时电流或电荷包求和来进行求和。该模拟MAC操作的结果可容易地用于通过数据转换器来读出。
一种被称为交叉开关网络的模拟电路配置可以用于矩阵乘法和加法操作的目的。这种网络(例如,如图36所图示)通过访问行(字线)经由数模转换器(DAC)来应用整数神经元激活值Xi。这些字线部署了跨字线的模拟电压Xi.Vref,DAC,其中Vref,DAC是DAC的参考电压。沿着每个字线,多个权重元件被放置在与列(位线)的交叉点处。这些权重元件通过阻抗(电导)来实现,其中每个元件是单位电导G的整数Wij倍,从而得到电导G.Wij。每个位线与多个字线交叉,在它们的交叉点处具有对应的权重,并且因此实现了用于对电流进行相加的求和节点。针对第j个位线,该电流可以写成通过与其连接的权重元件的所有电流的总和:
当该位线电流由增益为RTIA的跨阻放大器处理时,该放大器产生每个位线的电压Vj,电压Vj由下式表示:
然后,参考电压Vref,ADC通过模数转换器(ADC)对该电压Vj进行数字化,从而将其舍入到整数Yj,(round(x)函数):
为简单起见,我们可以假设Vref,DAC = Vref,ADC并且RTIA = 1/G,并且然后等式(3)简化为:
这示出了,每个位线针对输入激活与权重矩阵的第j列之间的乘法实现了乘法和加法结果,并且因此所有Yj值形成了矩阵点积结果。对于图36所示的情况,4×1激活矩阵X乘以4×4权重矩阵W得到了1×4矩阵Y:
图36所示的交叉开关网络接口的一些缺陷可能是:连续激活电压向字线的应用和位线中的运行电流(高度依赖于权重元件类型和值范围)以及ADC、DAC、驱动器和感测放大器的静态功率消耗增加了能量消耗。另外,每个ADC和DAC由许多有源和无源子组件组成,这些子组件通常转化为较大的芯片面积,并且因此限制至交叉开关的接口的间距大小并且限制了大尺度。由于模拟组件变型,因此DAC和ADC匹配的传递特性的假设(Vref,DAC=Vref,ADC的简单假设)在实现中不成立。在大尺度网络中包含这种非理想性使得训练更加复杂。在深度神经网络中,通常需要逐层来缩放ADC和DAC的动态范围,这增加了大量的复杂性和设计工作量。
图36图示了由交叉开关网络实现的模拟乘法和加法操作的实施例,该交叉开关网络采用了通过电流域中的整数加权电导和求和所实现的模拟输入激活和权重。
在过去,交叉开关网络的激活输入已经被修改为使用脉冲宽度调制时域信号,而不是图36所示的幅度域激活。图37(a)中示出了这种网络的示例,这种网络并入了存储在二进制存储器单元(诸如,SRAM单元)中的二进制权重。与通过位线的运行电流相比,这种方法可能更加能量高效,这是因为它主要依赖于附接到位线的电容器(寄生电容或有意添加的电容器)上的电荷求和。图37(a)所示的交叉开关网络通过脉冲发生器来实现其激活输入,该脉冲发生器以具有持续时间Ta的单位时间参考为参考。在这里,由Xi表示的整数激活输入确定等于Xi.Ta的激活持续时间。例如,整数输入激活7由持续时间为7.Ta的脉冲来表示。
图37(a)图示了具有嵌入在存储器中的脉冲宽度调制激活信号和二进制权重的交叉开关网络,该存储器确定差分位线电容上的放电的极性。图37(b)图示了该网络的定时操作。类似于图36的交叉开关网络,字线跨许多位线来广播这些激活,其中权重元件被存储在每个字线和位线的交叉点处的存储器单元中。位线可以以差分方式而布置,即每个线由具有电压VBLj和VBLbj的两个线组成。这些位线均具有由CBL表示的总电容,并且最初在该操作之前被充电到预充电电压VP。当在每次点积操作开始时预充电时,由Vdj=VBLj–VBLbj表示的跨位线的差分电压从零开始(如图37(B)所示)。在每个字线的脉冲宽度调制激活的持续时间内,开关SW将位线电容器连接到保持着“10”或“01”状态的存储器单元(保持着0或1值的左侧和右侧或SRAM单元导致了两种状态)。假设开关不具有导通的电阻,并且至电容器的总电阻由电阻RBL来建模。取决于存储在权重存储器中的状态(类似于针对位线电容的充电/放电极性的“+1=10”或“−1=01”),位线电容中的一个朝向电源充电,并且另一个朝向接地放电(图37(a))。一旦所有脉冲宽度调制输入激活被应用到字线,由于叠加(superposition),因此被移除或添加(权重相关的)到每个位线电容的总电荷(激活相关的)产生了针对所有权重为“1”的情况的跨位线的差分电压(见图37(b)):
参考电压Vref,ADC通过模数转换对位线电压Vdj进行转换,以导出整数位线点积结果:
该方案通过移除图36中使用的DAC简化了该激活,并且通过位线的电荷域操作改进了能量效率,然而,(位线ADC所需的)幅度域读出的复杂性和能量消耗仍然存在。
图38图示了基于忆阻器的交叉开关网络,该网络是利用脉冲宽度调制激活来激活的,并且是利用幅度域模数转换器在幅度域中读出的。在这种实施例中,类似于图38(a)的实现方式的实现方式以加权电阻器来实现权重(电导值)。这可以是用于不具有可编程性的网络的固定电路元件,或者可以通过利用诸如忆阻器元件之类的元件而被制成可编程的(可编程电导值,诸如图38(b)所示的那样)。脉冲宽度调制激活及其生成的配置、以及用于位线的差分结构类似于图37(a)的那些。差别在于权重值Wij,权重值Wij可能具有比图37(a)的二进制水平更多的水平。图38(b)中示出了跨7个电导水平的双极性权重值的情况。假设Wij(针对负权重值的Wbij)是整数值,其物理实现方式是通过电导Gij=G0+Wij.Gu或Gij=G0–Wbij.Gu进行的。矩阵点积乘法和加法操作通过将位线预充电到预充电电压VP而开始。每个字线将脉冲宽度调制激活输入Xi携带到开关SW。在激活输入的持续时间内,这些开关提供了通过由Wij(和Wbij)确定的权重电导值到接地的放电路径。作为所有时间常数的叠加的结果,一旦应用了所有激活输入,跨位线就会出现差分电压Vdj,该差分电压Vdj在一阶上(to thefirst order)由下式来确定:
由ADC将该位线电压数字化。在过去,在存在由参考电导值形成的额外行的情况下,通过应用多循环充电和放电操作,将ADC的操作与交叉开关的操作嵌入在一起。这有助于减轻(等式52)的非线性关系,而代价是需要多循环充电和放电操作、以及跨交叉开关的电导的额外行来实现幅度域ADC操作。
本公开的实施例图示了用于模拟乘法和加法交叉开关网络的激活和读出的时域接口。这种接口替换了现有技术中使用的幅度域方案。它受益于如下事实:即,利用被转变成脉冲宽度调制时域信号的去往交叉开关字线的激活输入,可以通过时间测量在位线处测量由各种交叉开关网络配置实现的时间常数(充电时间、积分时间、放电时间)的叠加,其中时间-数字转换可以参考用于生成激活的相同时间参考来完成。此外,本发明公开提出了一种以比率式方式而布置的时间测量,使得对电阻器、电容器、参考电压、电流、时间等的绝对值有贡献的非理想性将被消除,从而产生线性点积矩阵乘法输出,其在一阶上仅仅是整数输入激活和权重的函数。
图39图示了至点积计算交叉开关网络的基于时间的接口。可以示出时间输入和输出接口、以及39(b)的作为数字-时间和时间-数字转换器(TDC)的接口外围设备、以及39(c)中的时域操作。在这种模拟交叉开关乘法和加法网络的可缩放性和可靠性方面,时域操作具有若干个益处。图39(a)图示了至具有时域外围接口电路的交叉开关网络的时域接口。这些外围电路如图39(b)所示,并且主要实现数字-时间和时间-数字转换的功能。由前者(脉冲发生器)参考时间Tref来生成激活,时间Tref通过整数输入Xj而被缩放,并且通过时间-数字转换器(TDC)将MAC输出从时域转换到数字。TDC测量输入时间,输入时间由标记了两个事件的“开始”和“停止”信号来标记(图39(c))。为了实现时间测量,需要参考时间。针对TDC,这通常通过去往TDC的输入频率(fref)或时间参考Tref = 1/fref来设置。将这种转换器应用于点积交叉开关网络的接口具有若干个益处:
TDC的电路架构更接近数字电路(TDC实现方式可以像用于中等时间分辨率的计数器、或与高分辨率情况下的计数器组合的环形振荡器和寄存器一样简单)。这种类型的电路具有若干个益处:
深度神经网络的每个隐藏层所需的动态范围的缩放在TDC中比在ADC中更容易实现。当使用TDC时,这可以像向计数器添加额外的位并且在更长时间段内计数以将动态范围加倍一样简单,而在ADC中,这种适配可能对复杂性、大小和功率消耗产生严重影响。
TDC消耗了与逻辑门(如数字电路)的切换相关联的动态功率,而不是ADC中使用的线性模拟电路所消耗的静态功率。与ADC相比,这提供了更优越的能量效率。
半数字电路架构导致了用于其集成电路实现的非常小的占用空间,并且因此使得它们适合于采用模拟交叉开关乘法和加法网络的大尺度深度神经网络。
每个位线的所得输出时间可以对照由用于实现网络权重的相同单位模拟电阻或电容生成的参考时间常数来测量。这使得能够实现一种比率式测量方案,该方案通过在一阶上消除模拟元件的变化来大大地增强点积结果的鲁棒性。
利用以时域布置的至交叉开关网络的输入和输出接口,脉冲宽度调制激活发生器的时间参考可以与TDC的时间参考同步(图39c),这然后导致了模拟和数字接口到交叉开关网络的匹配的传递特性。在幅度域接口的情况下,这是不可行的,因为DAC和ADC或脉冲宽度调制器和ADC的特性存在固有的不匹配。
图40A图示了基于交叉开关网络的混合信号点积计算硬件的所提出的时域接口的功能框图和操作,图40A和图40C中示出的交叉开关网络具有图40B中的时域操作波形。该框图是时域和比率式读出操作的基础,并且将被示出为可扩展到基于不同电气性质(电荷域、电流域等)和权重实现方式(存储器元件,诸如ROM、SRAM、M/R/PC/RAM)的各种交叉开关网络。为了简化对所提出方法的描述,首先示出了单端结构(仅正权重值)。到具有双极性操作和差分位线的实际实现方式的扩展可以从这种基础架构中导出,并且将在稍后示出。
在图40中,示出了至具有比率式输出评估的交叉开关混合信号点积计算网络的时域接口的实施例。在图40(a)中,图示了具有脉冲宽度调制输入激活和基于TDC的读出的概念框图。在图40(b)中,图示了与时域输入、输出以及控制和参考信号相关联的波形。并且在图40(c)中,示出了利用以参考电流源Iref为参考的缩放电流源的时域比率式实现方式。
在该实施例中,权重被示出为通过利用单位电导G来实现的阻抗,单位电导G由适当的整数权重Wij来缩放。由脉冲宽度调制发生器基于参考时间Ta来生成输入激活信号,参考时间Ta由整数激活值Xi来缩放。这些沿着字线被广播,字线然后在对应的权重阻抗处与位线交叉,该权重阻抗将字线连接到位线。每个位线可以连接到积分器,该积分器从给定参考电压Vref(通过“复位”信号来执行)所定义的复位状态开始其每点积计算的操作。一旦具有幅度Va的脉冲宽度调制激活被应用到所有字线,与权重相关联的电导就将这些脉冲宽度调制激活转化成被注入到每个位线(通过流动电流Ij来递送)中的电荷的总净量,该总净量由对应积分器所积分。第j个位线的电荷是:
作为应用输入激活和电荷积分的结果,每个积分器产生由Vintj表示的输出电压,该输出电压是积分器增益的函数(图40b)。一旦应用了所有激活(并且对所有加权电荷进行了积分),由“开始”表示的信号就将积分器输出通过单位电导G连接到电压-Va,该电压-Va是脉冲宽度调制输入激活幅度的负值。同时,连接到位线的TDC开始测量时间。与-Va的连接可以移除来自积分器的电荷(通过放电电流Idischarge,j)。然后,电荷的移除会降低积分器输出电压Vintj,并且这会持续,直到监测积分器输出电压的比较器检测到积分器已经达到其原始复位值Vref为止。一旦检测到该水平,比较器就生成“停止”信号,并且“停止”信号被传递到TDC以停止测量时间。因此,使用由单位电导G形成的参考放电路径,在激活阶段期间被积分的总电荷Qj被完全地移除。该电荷被移除(放电)所花费的时间是:
TDC在其输出处产生数字整数值Yj,该整数值Yj通过舍入函数(量化函数)round(x)与tOD,j和TDC参考时间Tref成比例:
将(54)代入(55)中,得到:
TDC参考时间Tref以及对脉冲宽度调制器激活发生器的参考时间Ta两者以整数比率与相同的系统时钟Tclock同步。因此,Tref和Ta的整数比率由k表示。同步允许k能够被选择为整数或两个整数值M和N的比率,即k = M/N。这也解决了前面提到的量化问题:
T a = k∙T ref (57)。
将(57)代入到(56)中,得到比率式线性位线输出测量结果Yj,该测量结果Yj仅取决于输入整数激活Xi、整数权重值Wij和固定常数k:
图40(c)中示出了所提出的比率式时域交叉开关网络实现方式的替代图示。在该实施例中,以参考电流源Iref为参考的整数缩放电流源实现了网络权重。放电路径可以由一行电流源组成,这些电流源以相同的源为参考并且具有相反的极性。网络中的信号的时域操作和波形与图40(b)所示的时域操作和波形完全相似。与图40(a)所图示的实施例的区别在于:充电和放电电流是通过利用有源电流源而不是无源阻抗产生的。管控点积计算和比率式操作的等式保持与等式(53)至(59)相同,其中唯一的区别是表示等式(53)和(54)中的图40(a)的充电和放电电流的V a ∙G应当被替换为Iref。
就点积实现方式而言,等式(58)说明了实现至交叉开关网络的比率式时域接口的所提出的方法的重要性。时域中的比率式输出评估在一阶上独立于任何绝对参数值,该绝对参数值诸如形成了权重的单位阻抗或电流源(G或Iref)、电压水平(诸如,参考电压Vref或激活幅度V a )、电荷积分参数(诸如,积分器增益和输出水平Vintj)以及时间参考值T a 、T ref 、T clock 。
在依赖于数字电路(计数器)并且使用相同的时间参考T clock 的TDC和激活发生器的情况下,它们的输入/输出传递特性(数字-时间和时间-数字)与一阶相匹配,并且因此不影响准确度。
就硬件和能量消耗效率而言,所提出的方案可能具有若干个益处。在一阶上,接口中可以使用的唯一模拟电路之一是每个位线的比较器,该比较器每次点积计算运行一次,从而最小化接口电路的静态功率消耗并且最大化其吞吐量(与ADC接口相比)。电荷积分可以使用位线电容无源地完成,或者利用有源积分器有源地完成,以用于更高的准确度,然而,位线积分器可以用低功率电路(诸如,基于逆变器的有源积分器)来实现。
所提出的时域接口技术可以应用于基于不同存储器元件(易失性的,诸如SRAM,非易失性的,诸如浮栅闪存、ROM、RRAM、MRAM等)的交叉开关网络的各种配置。它还可以应用于实现了混合存储器架构的网络,该混合存储器架构例如部分基于SRAM和部分基于ROM、或者用于混合信号存储器内计算的不同存储器元件的任何组合。
SRAM(静态随机存取存储器)可以用于在存储器计算中存储权重。SRAM可以提供二进制权重元件,该二进制权重元件将在采用多级输入或二进制输入的网络中使用。点积输出也可以是二进制或多级的。每个配置可能有其自身的特性和优缺点,然而,当采用使用SRAM单元以便存储权重的多级输入激活和多级点积输出评估时,与利用幅度域接口的现有技术相比,所提出的时域接口提供了硬件和能量效率以及高精度计算结果。接下来,介绍了三种利用基于SRAM的交叉开关网络的时域比率式接口的架构:
图41图示了基于SRAM的存储器内计算交叉开关网络的时域多级激活输入、多级点积输出。图41(a)所示的网络可以基于使用单位阻抗和TDC位线转换器的平衡电流积分,并且采用利用了位线电容的无源积分。图41(b)图示了用有源积分器来替换无源积分器。图41(c)图示了具有输入和输出时间值的时域接口的操作。该交叉开关网络的实施例可以利用单位电导值G以将所存储的SRAM存储器内容转换成由差分积分器所积分的双极性电流(推(push)和挽(pull)电流分量)。差分位线结构意味着二进制权重值作为+1和-1值而操作。每个单元需要6个晶体管(6T单元),其中4个晶体管实现SRAM核,并且2个晶体管用于应用激活信号。图41(b)中的积分器以更大能量和芯片面积为代价提供了更好的积分准确度。图41(c)中的网络的操作与图6中所示的基础网络架构相同。它从针对位线积分器的复位状态开始,从而将它们复位到共模参考电压Vref(例如,SRAM电源Vdd的一半,即Vref=0.5Vdd)。这然后接着是应用脉冲宽度调制激活输入Xi。激活时间参考Ta和TDC参考时钟Tref与系统时钟Tclock同步。权重电导G导致双极性电荷(取决于所存储的SRAM值)流动到位线积分器中,从而导致每个位线产生的差分电压Vintj。应用了输入之后,启用放电分支的“开始”信号被断言。该分支使用两个单位电导G以移除积分电荷,这是通过使其耗尽(drain)回到Vref(积分器在应用激活输入之前开始的相同初始条件)来进行的。当“开始”信号被断言时,TDC开始测量时间。一旦积分器传递了差分零电压,比较器就通过生成“停止j”信号来停止TDC(图41(c))。使用等式(54)并且将Va替换为Vdd(SRAM电源以及脉冲宽度调制输入激活的幅度)、并且假设同步时间参考之间的比率与(57)所表明的比率相同,可以将TDC数字输出定义为:
这示出了点积结果,该点积结果在一阶上仅仅是整数激活输入和SRAM存储器中存储的权重的函数。应当注意的是,当实现了二进制权重网络时,电导G可以简单地由6T单元中的开关晶体管的导通电阻来表示,并且因此不一定需要是分离的物理阻抗。
图42图示了至用于点积计算的交叉开关网络的基于SRAM的多级输入、多级输出时域接口。图42(a)图示了使用8T单元SRAM和平衡电流源以及匹配的完全平衡放电路径和时间测量块的基于完全平衡电流积分的网络。图42(b)图示了由SRAM确定的平衡电流积分的极性、以及由积分器极性确定并且通过“斩波器”应用的平衡放电相位的极性。图42(a)图示了对于具有时域比率式接口的基于SRAM的交叉开关网络的另一个方法,其中不是单位阻抗,而是单位晶体管实现完全平衡电流源以在由输入激活所确定的时间的持续时间内对位线电容上的电荷进行积分。在这里,提出了8晶体管(8T)单元,其中4个晶体管形成保存权重值的SRAM核,并且其他4个晶体管实现完全平衡电流源,该电流源的极性由存储在SRAM中的值来确定。8T SRAM单元中的推和挽单位电流源以具有电流Iref的参考分支为参考。参考电流是借助于参考二极管连接的晶体管MPref和MNref来复制的,晶体管MPref和MNref生成用于将8T单元PMOS和NMOS电流源偏置的字线电压VGP和VGN。这些匹配于MPref和MNref,并且产生+/-Iref电流。图42(b)示出了,对于与权重值+1和-1相对应的两个状态,如何确定电流的平衡注入极性。SRAM状态确定哪个电流源被启用以及哪个被禁用,这是通过简单地将它们的共享源极端子偏置到Vdd(电源)或GND(地)来进行的。所提出的连接通过以相反的方式打开和关闭电流源来保证平衡电流方向。在由对应输入激活Xi所确定的持续时间内,电压VGP和VGN通过字线被应用到8T单位电流源晶体管栅极。该网络的总体功能操作与(图41(c))的实施例相同。与这种实施例相比,比率式放电阶段需要附加的考虑。应当利用匹配的平衡电流源以用于比率式操作来进行放电阶段。通过利用相同的位线比较器输出来确定正确的放电极性(以导致去除来自积分器的电荷,而不是增加电荷)。比较器输出简单地保存关于激活阶段结束时的所积分电荷的极性的信息。该位用于控制“斩波器”块以其将NMOS和PMOS放电电流源连接到位线的极性(见图42(b))。斩波器被禁用,直到应用了“开始”信号。此时,TDC开始测量时间,并且放电路径单位电流源遵循正确的极性来移除来自电容器的电荷,直到比较器跳闸(trip)(当积分器输出过零时)。由“停止”信号标记的该事件停止TDC时间测量。因此,时域操作与图41(c)中的架构的操作完全相似。
图42(a)所示的无源位线积分器也可以被替换为图41(b)所示的相同的有源积分器。与其他实施例相比,该网络提供了精确的电荷积分和比率式输出评估。针对(59)的推导中假设的相同定时条件,网络输出是:
这再一次是具有与电路值的一阶独立性的比率式点积输出。应当注意的是,图42中的架构也可以在充电阶段和放电阶段两者中利用单端位线和单极性电流源来实现。
图43示出了电荷再分区架构。图43(a)所示的电荷再分布架构实现了至8晶体管SRAM单元(8T单元)架构的多级输入激活和多级输出时域接口。在这里,每个8T单元还包括取决于经编程的SRAM权重值+1或-1的单位电容CU,该单位电容CU将在“Vdd”与“GND”之间或“GND”与“Vdd”之间被充电。输入激活被转换成脉冲串,其中脉冲数量等于整数输入激活Xi。每个脉冲具有从与系统时钟Tclock同步的信号Ta中提取的单位脉冲宽度。采样时钟TS具有与Ta相同的周期,但是与Ta相比具有相反的相位(图43b)。每个字线广播用于激活的脉冲串,其中它在与位线的交叉点处由8T单元所接收。在8T单元内,由输入激活操作的开关以SRAM值所确定的极性对CU上的电荷进行采样。在相反的相位(由TS定义)处,来自所有CU的电荷将被传递到连接到位线的积分器(积分器从复位零相位开始)。一旦应用了所有输入激活脉冲,由位线积分器所积分的总电荷是:
在该阶段之后,“开始”信号被断言(见图43(b)),此时TDC开始测量时间,并且同时其通过切换单位放电电容器CU以开始耗尽积分器,来启用通过连接到采样时钟TS的与门(AND gate)的放电路径。放电极性由连接到位线积分器输出的同一比较器来确定,并且将用于在积分器被耗尽时停止TDC。放电时间tOD,j可以由直到其达到初始复位零状态为止才被移除的总电荷、以及以速率TS(TS = Ta)切换的电容器CU的有效电阻来确定:
时间tOD,j是利用以参考时钟Tref为参考的TDC、遵循如等式(57)所描述的相同同步比率的情况下测量的,TDC的数字输出计数Yj可以由下式确定:
这示出了:比率式点积输出计算在一阶上独立于所有电路参数,并且仅仅是整数激活和权重的函数。应当注意的是,位线可以用完全差分开关电容器电路来实现。此外,积分电容不需要与8T单元电容匹配,这是因为积分器增益与比率式点积输出无关。只有放电路径的电容应当成为8T单元电容的整数比率,并且具有相同类型的电容。该电容的值和放电时钟频率也与点积输出无关,只要放电时钟(在使用了图43(a)采样时钟TS的情况下)与该系统的主时钟同步。
图44图示了被应用到用于存储器内计算点积计算的交叉开关网络的时域接口方案的基于只读存储器(ROM)的示例。输入4401可以由脉冲发生器4403接收。在图44(a)中,示出了具有基于ROM的可编程权重的基础架构的实施例。在图44(b)中,示出了具有基于ROM的权重编程(幅度和极性)的基于差分位线电导的架构的实施例。在其他实施例(诸如,图40-43)中示出的时域点积矩阵乘法和加法交叉开关网络可以被考虑用于其中权重值被硬连线为只读存储器(ROM)的实现方式。这适用于其中网络权重(或网络权重的部分)在用于存储器内计算的硬件已经被实现之后预计不会被改变的应用。该技术将通过具有易于制造且被选择成在稍后阶段处连接(例如,作为后端制程金属选项或NVM激光熔丝选项)的更多单位电路元件(诸如,阻抗(例如,如图44中所示))或电流源和电容器(例如,如下面的图45中所示),来实现对权重极性或甚至权重值的编程。仍然可以针对不同产品的不同权重值模式4405来修改底层硬件。该网络的各个部分仍然可以用SRAM存储器单元来实现,作为SRAM和ROM实现方式的混合,以提供一些可编程性。
图44的实施例更改了图40的一般基线架构、以及图41的差分结构(基于单位阻抗),并且因此已经被转换为基于ROM的时域交叉开关网络,并且在图44中示出。为了说明的目的,在该电路中按每个字线和位线交叉点来预先制造多个单位阻抗G,并且金属选项允许将期望数量的单位阻抗G连接到位线,并且因此使得能够缩放权重值。也可以通过中间部分来改变极性,该中间部分确定了位线阻抗的哪一侧应当连接到正电压或负电压。与图40和图41相比,该结构的时域比率式操作保持不变,并且提供了完全相同的益处。
图45图示了基于ROM的时域接口。图45(a)图示了被应用于具有可编程电容值和极性的基于电荷再分布的交叉开关网络位线的实施例。图45(b)图示了具有可编程电流幅度和极性的基于参考电流源的交叉开关网络。图45中示出了对图42和图43的结构的基于ROM的替代方案。在这里,图45(a)的电荷再分布网络通过金属选项而具有每个ROM单元的可编程电容值,该金属选项引入了期望数量的并联的预先制造的电容器并且将它们连接到该单元。此外,位于中间的另一个金属选项通过确定电容器充电极性来确定权重极性。图45(b)中的架构是基于图42架构的完全平衡电流积分架构,其中预先制造的单位电流源可以通过金属选项以及极性选择选项而连接到位线。图45的实施例中的架构的比率式时域操作保持类似于图42和图43所示的实施例的操作,其具有所有相关联的益处。基于ROM的架构可以提供在制造后一定水平的权重可编程性的可能性,而代价是增加了用于预先制造的元件的硬件。为了部分可编程性,这些架构可以与基于SRAM的存储器组合,以实现网络或权重的部分,作为ROM和SRAM的混合。
图46图示了具有时域比率式接口的基于浮栅闪存或FeFET的交叉开关网络的示例。输入4601可以在脉冲宽度发生器4603处被接收。神经网络权重可以以非易失性存储器的形式被存储(编程)在芯片上。这使得能够实现可重新配置的硬件(与基于ROM的网络形成对照),该硬件能够在不需要对网络权重进行重新编程的情况下功率循环(与基于SRAM的网络形成对照)。此外,任何多级权重存储能力都允许增加网络性能(与二进制权重形成对照)并且节省芯片面积(与基于ROM和SRAM的方法形成对照)。用于实现这种存储器内计算方案的一个方法是通过采用浮栅闪速存储器架构,其中权重被存储在晶体管的阈值电压中。另一个方法是利用铁电场效应晶体管(FeFET),其中铁电层的磁极化被添加到晶体管的栅极结构,并且提供了非易失性存储方法。用于计算矩阵点积的交叉开关存储器内计算网络可以利用这种设备来实现。时域比率式激活和输出评估技术可以应用于这些网络,以便提供比率式测量、线性度、小占用空间和可缩放接口的基本优势。涉及浮栅晶体管或FeFET的结构被视为与2晶体管(2T)单元相同,其中一个晶体管充当接入开关,并且另一个晶体管充当实现神经网络权重的可编程阈值电压晶体管。可编程阈值晶体管要么可以在三极管操作区域中用作可变电阻,要么可以在亚阈值或饱和操作区域中用作电流源。在更简化的实现方式中,1T单元在字线4607级别处合并了选择器开关。
如果使用了可编程阈值晶体管作为电阻,则晶体管的沟道电导Gij由下式确定:
其中Vgs是晶体管栅极-源极电压,β是与其尺寸(宽度/长度)的纵横比、电荷载流子迁移率等成比例的晶体管参数,并且VTH,ij是通过浮栅或磁栅极的经编程的阈值电压,该阈值电压最终控制权重电导Gij。为了将权重电导布置成具有整数比率m,即具有如下值:G、2G、3G、4G等,经编程的阈值电压必须满足与产生了最小单位权重电导G的基线阈值电压VTH,b的关系。换句话说,对于提供电导m×G(其中m=1,2,3,4……)的晶体管而言,其阈值电压VTH,m与基线晶体管相比应当满足如下关系:
这得出了:
由于可能的经编程的阈值电压和最小可能Vgs的边界是受限制的(受电源电压和晶体管特性所限制),因此用于使用等式(63)来获得线性比率电导的设计空间被限制成也许是3或4个电导水平。换句话说,由于等式66的性质,因此获得较大电导会导致针对可能不可行的相同类型的晶体管的负阈值电压水平(图47顶部)。在设计空间内并且遵循等式(66),在针对晶体管使用相同的纵横比的情况下并且在一阶上(针对有限数量的水平)可以达到沟道电导之间的整数比率。考虑到这一点,比率式时域接口可以应用于采用浮栅闪存或FeFET晶体管的交叉开关网络。
图46图示了具有时域比率式接口的基于浮栅闪存或FeFET的交叉开关网络。图46(a)示出了基于晶体管沟道电导(三极管操作)的基于2T单元的网络4620。图46(b)图示了基于电流源(亚阈值或饱和)的基于2T单元的网络。图46(c)图示了具有基于晶体管沟道电导(三极管操作)的合并字线开关的基于1T单元的网络。图46(d)图示了具有基于电流源(亚阈值或饱和)的合并字线开关的基于1T单元的网络。可以使用基线电导G以便形成放电路径。这如图46(a)中所示。作为脉冲宽度调制信号来应用激活。该网络的操作类似于图40(a)的操作,并且其输出由等式(54)至(58)来确定。应当注意的是,沟道电导由晶体管的漏极-源极电压Vds来调制,并且因此位线保持在受控的DC电压处是更好的,即通过采用在求和节点处提供经调节的DC电压的有源积分器,而不是无源积分器。图46(c)中示出了对图46(a)的网络的替代方案,其中使用了1T单元晶体管,并且在字线处合并了所切换的选择器。
如果使用可编程阈值晶体管作为电流源,则晶体管的沟道电流在饱和状态中操作时遵循平方律:
如果晶体管在亚阈值中操作,则其遵循指数关系:
其中IS是饱和电流,n是亚阈值中的晶体管参数,并且VT是热电压(室温下为25mV)。对于由Iij实现的线性权重比率而言,即为了使晶体管的沟道电流相对于具有基线阈值电压VTH,b的单位晶体管具有整数比率,即Im=m×Iref,再一次,VTH,m应当被布置成具有以下关系:
对于饱和操作而言:
对于亚阈值操作而言:
再一次,对电源和最小和最大可编程阈值的限制设置了关于可实现的水平的可能数量的限制以获得权重之间的整数比率。可编程阈值晶体管可以被布置为实现如图46(b)所示的网络权重的交叉开关网络中的电流源,包括具有与单位电流源一起利用的放电路径的比率式时域读出。该网络的操作类似于图40(c)的操作,并且其比率式矩阵点积输出由等式(58)导出。图12中示出了对图46(b)的网络的替代方案,其中使用了1T单元晶体管,并且在字线处合并了所切换的选择器。
应当注意的是,针对利用时域比率式操作方案的更多数量的权重水平的实现方式,浮栅闪存或FeFET的基于电流源的架构使得能够比通过沟道电导来实现权重的网络实现更多数量的水平(尽管可以实现负阈值电压,然而,生成线性水平意味着应用接近零或负的栅极-源极电压,这可能是不太实际的)。电流源实现方式使得能够在正阈值电压的情况下实现更多整数比率的水平,这主要是因为电流源实现方式的其指数性质(与沟道电导与经编程的阈值电压的线性相关性形成对照)。这在图47中被图示,图47图示了针对实现电导和电流源(在饱和区域和亚阈值区域中)的整数数量的水平的阈值电压范围。如果实现了二进制权重,则这不是问题,在这种情况下,单位浮栅或FeFET晶体管将以二进制(开启/关闭(ON/OFF))方式而操作。在这种情况下,图46(a)和图46(b)的时域网络操作相同,并且具有相同的比率式操作益处。
图47图示了用于利用沟道电导(顶部)或者饱和(中间)或亚阈值(底部)中的电流源来实现交叉开关网络的线性缩放权重的VTH,ij的范围。
诸如RRAM或相变存储器(PCM)等之类的电阻式存储器(忆阻器)通过出于存储器内计算的目的利用存储器元件而提供了一种面积高效的方法来实现神经网络权重。实现使用忆阻器来计算矩阵点积的交叉开关网络可以与所提出的时域比率式接口相组合,以最大化面积和能量效率、以及提供在一阶上独立于电路元件的过程、温度和电压变化的可缩放接口。针对该架构可以使用若干个实施例。
在第一实施例中,该实施例可以基于图40所示的基础架构,并且通过如下方式来实现:利用实现那些电导值的可编程忆阻器元件来替换权重电导G.Wij,并且使用基线忆阻器电导G来实现使得能够进行比率式充电和放电操作的放电路径。在匹配的权重和放电路径元件以及同步时间参考的条件下的放电时间的时域评估产生了如下点积:该点积在一阶上是整数输入和权重缩放值的函数。等式(58)表示输出,并且积分函数可以通过有源(具有放大器的积分器)或无源(位线电容)积分来实现。
图48图示了利用位线电容和忆阻器电导的两相无源放电。假设符号比较器具有足够的输入共模电压抑制能力的可用性,这种方法在如何执行比率式时间测量方面与其他实施例略微不同。如图48a所图示,该方法可以利用使用位线电容CBL和忆阻器电导的两相无源放电,该忆阻器电导借助于对单位电导Gu进行缩放的双极性整数权重±Wij、以差分方式被布置在基线电导G0周围(电导特性示出在图38(b)中):
均连接到电容CBL的由VBLj和VBLbj表示的差分位线电压具有至接地的放电路径。脉冲宽度调制器4803控制附接到忆阻器开关的字线4809。这些提供了由加权忆阻器和激活脉冲宽度管控的朝向接地的位线4802的放电阶段4813。第二放电路径由参考电导控制,并且提供比率式时间测量。连接到每个差分位线的两个端子的两个模拟比较器将位线电压VBLj和VBLbj与阈值电压Vref进行比较(也可以以吞吐量为代价在位线之间共享比较器)。时域读出方案的操作如图48(b)所示。位线从预充电状态开始到预充电电压VP。然后,应用脉冲宽度调制激活信号(由激活输入Xi缩放并且与时间参考Ta同步)。这些激活驱动了开关,这些开关在由该激活确定的持续时间内通过权重电导使位线电容器放电。一旦应用了所有激活(如图48(b)所示),通过加权时间常数的指数放电时间的叠加就导致了跨位线的总差分电压VOD,即VOD,j = VBLj–VBLbj:
在第二阶段中,通过具有电导Gref并且由“放电”信号所控制的放电开关启用的参考电导分支对位线进行放电。在该阶段期间,每个位线电压最终会越过阈值水平Vref,在此时,对应的比较器产生逻辑信号。逻辑块接收两个比较器输出并且产生“开始”和“停止”信号(当第一比较器触发时生成“开始”,并且当第二比较器触发时生成“停止”)。这些信号被馈送到位线的时间-数字转换器(TDC)4819,该转换器4819测量“开始”与“停止”事件之间的时间tOD,j。tOD,j时间是在将激活应用到比较器阈值电压Vref之后每个位线从其状态放电所花费的时间(由tdis,Pj和tdis,Mj表示)之间的差(见图48(b)),并且可以导出为:
通过将Gref选择为Gu的整数倍,即Gref = M.Gu,tOD,j的时域测量是电导方面的比率度量:
时间-数字转换器的功能可以简化为计数器的功能,该计数器计数到N,N是具有周期Tref的参考时钟的周期数量,这些周期刚好被放入持续时间tOD,j中:
如等式(57)所描述,将脉冲宽度调制激活的时间单位Ta与TDC的时间参考Tref进行同步4815,不再需要量化函数(round(x)),并且可以将TDC的数字化整数N输出重写为:
这示出了实现对矩阵点积输出的线性和比率式评估的所提出的方案。
图49图示了使用一个比较器来进行比率式时域点积输出评估的基于忆阻器的无源放电方法。在图49(a)中,该图示示出了交叉开关网络和电导。在图49(b)中图示了时域操作波形。对图48(a)所示的网络的操作的替代方案是图49(a)所示的实现方式。在这里,单个比较器模块(而不是两个)可以被使用两次,并且可以消除参考电压Vref。在将脉冲宽度调制激活输入应用到字线并且完成位线电容的加权放电之后,比较器确定位线电压VBLj或VBLbj中的哪一个是这两者中的较大者。然后,比较器输出信号确定要通过参考放电路径来放电的具有较大电压的位线,而另一个位线的电容器(具有较小电压)上的电荷保持不变(见图49(b))。这借助于图49(a)所示的“与”和“非”逻辑门而被简单地应用于参考路径放电控制开关。当控制信号“放电/开始”被断言时,参考路径放电开始,这对具有最大电压的位线进行放电,并且开始TDC时间测量。例如,当比较器输入的符号改变时,放电位线端子的电压变得小于非放电线,比较器输出切换并且向TDC标记“停止”事件以停止时间测量。“开始”与“停止”之间的时间差形成了时间TOD,j,该时间TOD,j可以通过如下方式来导出:即,等于将较大电压位线通过参考电导Gref放电至较小电压位线的电压所花费的时间。在时间TOD,j之后使这两个电压相等,得出:
重新布置该等式,得出:
其中TOD可以导出为:
等式(81)再一次示出:第三种方法利用同步激活和TDC时间参考(等式57)以及比率式阻抗水平(Gref=M.Gu)——这产生了如等式(78)所描述的相同数字输出Yj——也实现了具有与电路元件值的一阶独立性的交叉开关网络点积输出的比率式评估,例如仅仅是整数激活和权重的函数。
本文中公开的过程、方法或算法可以被递送到处理设备、控制器或计算机/由处理设备、控制器或计算机来实现,该处理设备、控制器或计算机可以包括任何现有的可编程电子控制单元或专用电子控制单元。类似地,这些过程、方法或算法可以以多种形式存储为可由控制器或计算机执行的数据和指令,包括但不限于永久存储在不可写存储介质(诸如,ROM设备)上的信息、以及可更改地存储在可写存储介质(诸如,软盘、磁带、光盘、RAM设备以及其他磁性和光学介质)上的信息。这些过程、方法或算法也可以在软件可执行对象中实现。替代地,这些过程、方法或算法可以全部地或部分地使用合适的硬件组件(诸如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、状态机、控制器或其他硬件组件或设备)、或者硬件、软件和固件组件的组合来体现。
虽然上面描述了示例性实施例,但是这些实施例并不旨在描述权利要求所涵盖的所有可能形式。说明书中使用的词语是描述性的词语,而不是限制性的词语,并且要理解的是,在不脱离本公开的精神和范围的情况下,可以进行各种改变。如先前所描述,各种实施例的特征可以被组合以形成可能未被明确描述或说明的本发明的其他实施例。虽然各种实施例可能已经被描述为在一个或多个期望特性方面提供了相对于其他实施例或现有技术实现方式的优点或相对于其他实施例或现有技术实现方式是优选的,但是本领域普通技术人员认识到,可以对一个或多个特征或特性进行折衷以实现期望的总体系统属性,这取决于具体的应用和实现方式。这些属性可以包括但不限于:成本、强度、耐用性、生命周期成本、可销售性、外观、包装、大小、可维护性、种类、可制造性、组装容易性等。因此,就任何实施例在一定程度上被描述为在一个或多个特性方面不如其他实施例或现有技术实现方式那么合期望而言,这些实施例并不在本公开的范围之外,并且对于特定应用来说可能是合期望的。
Claims (20)
1.一种被配置成计算矩阵乘法和加法计算的电路,包括:
数字-时间转换器,其被配置成接收数字输入,并且输出与所述数字输入成比例且在与参考时间相关联的时域中被调制的信号;
存储器,其包括交叉开关网络,其中所述存储器被配置成从数字-时间转换器接收所述时间调制信号,并且输出响应于所述时间调制信号和交叉开关网络的网络权重而缩放的加权信号;以及
输出接口,其与交叉开关网络进行通信,并且被配置成接收其加权输出信号并且使用时间-数字转换器来输出与至少所述参考时间成比例的数字值。
2.根据权利要求1所述的电路,其中所述电路包括与数字-时间转换器和时间-数字转换器相关联的参考时钟。
3.根据权利要求1所述的电路,其中所述网络权重包括一个或多个电气元件,所述电气元件被配置成对与所述数字输入成比例且在时域中被调制的信号进行缩放。
4.根据权利要求1所述的电路,其中所述电路包括积分器,所述积分器用于对响应于所述时间调制输入信号和交叉开关网络的权重而缩放的加权信号进行累加。
5.根据权利要求1所述的电路,其中所述电路包括比率式放电路径,所述比率式放电路径包括一个或多个电气元件,所述电气元件的值与交叉开关网络中的电气权重元件成比例。
6.根据权利要求1所述的电路,其中所述比率式放电路径具有至积分器输出的电连接。
7.根据权利要求1所述的电路,其中所述电路包括比较器,所述比较器具有至积分器输出的电连接。
8.根据权利要求1所述的电路,其中所述电路包括被配置成驱动时间-数字转换器的比较器输出。
9.根据权利要求1所述的电路,其中所述电路被配置成执行两步骤操作,所述两步骤操作包括第一累加步骤,所述第一累加步骤包括用于第二步骤参考放电阶段的初始条件。
10.根据权利要求1所述的电路,其中所述电路被配置成触发由时间-数字转换器进行的时间测量的开始,其中时间测量的开始与比率式放电操作的开始同步。
11.根据权利要求1所述的电路,其中所述电路被配置成响应于比较器而触发由时间-数字转换器进行的时间测量的停止,其中时间测量的停止与比率式放电阶段的结束同步。
12.一种被配置成计算矩阵乘法和加法计算的电路,包括:
数字-时间转换器,其被配置成接收数字输入,并且输出与所述数字输入成比例且在与参考时间相关联的时域中被调制的信号;
存储器,其包括交叉开关网络,其中所述存储器被配置成从数字-时间转换器接收所述时间调制信号,并且输出按照所述时间调制输入信号和交叉开关网络的网络权重而缩放的加权信号,其中所述网络权重位于交叉开关网络的一个或多个位线或字线上;以及
输出接口,其与交叉开关网络进行通信,并且被配置成接收其加权输出信号并且使用时间-数字转换器来输出与至少所述参考时间成比例的数字值。
13.根据权利要求12所述的电路,其中数字-时间转换器和时间-数字转换器被配置成被同步以消除所述加权输出信号中的时钟参考变化。
14.根据权利要求12所述的电路,其中所述电路被配置成包括比率式放电路径,所述比率式放电路径被配置成将电荷耗尽至参考电压、或经由参考电流或参考电荷再分布电路来耗尽电荷,并且所述电路被配置成包括比较器,所述比较器配置成触发时间-数字转换器。
15.根据权利要求12所述的电路,其中所述电路包括比较器,所述比较器被布置成触发与交叉开关网络的累加和放电操作同步的时间-数字转换器。
16.根据权利要求12所述的电路,其中所述网络权重包括一个或多个SRAM或者一个或多个ROM存储器元件、或者SRAM和ROM的组合、或者一个或多个闪速存储器元件或者一个或多个电阻式存储器元件。
17.根据权利要求12所述的电路,其中所述网络权重包括晶体管和单位单元电容器元件以用于对与输入脉冲的数量成比例的加权电荷进行累加,并且包括使用相同单位单元电容器的比率式放电路径,用以对所累加的电荷进行放电。
18.根据权利要求12所述的电路,其中所述电路包括至交叉开关网络的时域比率式接口,其中交叉开关网络包括使用具有或不具有存储器元件的用于加权累加的单端或平衡电流源的平衡或单端电流积分,并且包括具有匹配的平衡电流源的比率式放电路径,用以对所累加的电荷进行放电。
19.一种被配置成计算矩阵乘法和加法计算的电路,包括:
数字-时间转换器,其被配置成接收数字输入,并且输出与所述数字输入成比例且在与参考时间相关联的时域中被调制的信号;
存储器,其包括交叉开关网络,其中所述存储器被配置成从数字-时间转换器接收时间调制信号,并且输出按照所述时间调制输入信号和交叉开关网络的网络权重而缩放的加权信号,其中响应于被配置成可编程权重的非易失性存储器(NVM)来调整所述网络权重;以及
输出接口,其与交叉开关网络进行通信,并且被配置成接收其加权输出信号并且使用时间-数字转换器来输出与至少所述参考时间成比例的数字值。
20.根据权利要求19所述的电路,其中交叉开关网络包括具有或不具有存储器元件的被配置成形成充电或放电时间常数或者单端或平衡电流以用于对位线积分器进行充电的电导或电阻,并且包括具有相同类型电导的比率式放电路径。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/940124 | 2020-07-27 | ||
US16/940,124 US20220027130A1 (en) | 2020-07-27 | 2020-07-27 | Time domain ratiometric readout interfaces for analog mixed-signal in memory compute crossbar networks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113990371A true CN113990371A (zh) | 2022-01-28 |
Family
ID=79179499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110843713.4A Pending CN113990371A (zh) | 2020-07-27 | 2021-07-26 | 用于模拟混合信号存储器内计算交叉开关网络的时域比率式读出接口 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220027130A1 (zh) |
CN (1) | CN113990371A (zh) |
DE (1) | DE102021207661A1 (zh) |
TW (1) | TW202205113A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116094882A (zh) * | 2022-11-07 | 2023-05-09 | 南京大学 | 基于模拟存内计算的调制、解调方法及系统 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210125049A1 (en) * | 2019-10-29 | 2021-04-29 | Taiwan Semiconductor Manufacturing Co., Ltd. | System for executing neural network |
KR20230070753A (ko) * | 2021-11-15 | 2023-05-23 | 삼성전자주식회사 | 디지털 펄스 기반 크로스바 연산을 수행하는 연산 장치 및 그 동작 방법 |
US11823740B2 (en) * | 2021-12-08 | 2023-11-21 | International Business Machines Corporation | Selective application of multiple pulse durations to crossbar arrays |
FR3140454A1 (fr) * | 2022-09-30 | 2024-04-05 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Circuit de traitement logique de données intégré dans un circuit de stockage de données |
EP4358087A1 (de) * | 2022-10-20 | 2024-04-24 | Semron GmbH | Anordnung einer pulsweiten gesteuerten vektor-matrix multiplikationseinheit mit kapazitiven elementen und verfahren zu dessen ansteuerung |
DE102022211998A1 (de) | 2022-11-11 | 2024-05-16 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren und Vorrichtung zum Betreiben einer Speichervorrichtung |
DE102022213371A1 (de) | 2022-12-09 | 2024-06-20 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren und Vorrichtung zum Betreiben einer Speichervorrichtung und Speichervorrichtung |
CN115688897B (zh) * | 2023-01-03 | 2023-03-31 | 浙江大学杭州国际科创中心 | 低功耗紧凑型Relu激活函数神经元电路 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11048434B2 (en) * | 2018-09-28 | 2021-06-29 | Intel Corporation | Compute in memory circuits with time-to-digital computation |
US10896242B2 (en) * | 2019-03-01 | 2021-01-19 | International Business Machines Corporation | Resistive memory device for matrix-vector multiplications |
JP2021002133A (ja) * | 2019-06-20 | 2021-01-07 | ソニー株式会社 | 演算装置及び積和演算システム |
US11573792B2 (en) * | 2019-09-03 | 2023-02-07 | Samsung Electronics Co., Ltd. | Method and computing device with a multiplier-accumulator circuit |
US11657238B2 (en) * | 2020-01-31 | 2023-05-23 | Qualcomm Incorporated | Low-power compute-in-memory bitcell |
KR20210144417A (ko) * | 2020-05-22 | 2021-11-30 | 삼성전자주식회사 | 인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치 |
-
2020
- 2020-07-27 US US16/940,124 patent/US20220027130A1/en active Pending
-
2021
- 2021-07-19 DE DE102021207661.0A patent/DE102021207661A1/de active Pending
- 2021-07-26 TW TW110127274A patent/TW202205113A/zh unknown
- 2021-07-26 CN CN202110843713.4A patent/CN113990371A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116094882A (zh) * | 2022-11-07 | 2023-05-09 | 南京大学 | 基于模拟存内计算的调制、解调方法及系统 |
CN116094882B (zh) * | 2022-11-07 | 2023-09-22 | 南京大学 | 基于模拟存内计算的调制、解调方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20220027130A1 (en) | 2022-01-27 |
DE102021207661A1 (de) | 2022-01-27 |
TW202205113A (zh) | 2022-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113990371A (zh) | 用于模拟混合信号存储器内计算交叉开关网络的时域比率式读出接口 | |
US11404106B2 (en) | Read only memory architecture for analog matrix operations | |
US11847560B2 (en) | Hardware compute fabrics for deep equilibrium models | |
Jiang et al. | C3SRAM: An in-memory-computing SRAM macro based on robust capacitive coupling computing mechanism | |
Biswas et al. | CONV-SRAM: An energy-efficient SRAM with in-memory dot-product computation for low-power convolutional neural networks | |
CN110352436B (zh) | 用于神经网络训练的具有迟滞更新的电阻处理单元 | |
US11521051B2 (en) | Memristive neural network computing engine using CMOS-compatible charge-trap-transistor (CTT) | |
TWI793277B (zh) | 用於混合訊號運算的系統與方法 | |
US11157810B2 (en) | Resistive processing unit architecture with separate weight update and inference circuitry | |
KR102542532B1 (ko) | 혼합-신호 연산 시스템 및 방법 | |
CN114186676A (zh) | 一种基于电流积分的存内脉冲神经网络 | |
Mu et al. | SRAM-based in-memory computing macro featuring voltage-mode accumulator and row-by-row ADC for processing neural networks | |
TW202230115A (zh) | 運算裝置及運算方法 | |
JP6521207B1 (ja) | 積和演算器、積和演算方法、論理演算デバイスおよびニューロモーフィックデバイス | |
KR20240006614A (ko) | 트랜지스터 기반 신경망을 위한 시스템, 방법 및 컴퓨터 디바이스 | |
Pedretti et al. | Differentiable content addressable memory with memristors | |
Wan et al. | Edge AI without compromise: efficient, versatile and accurate neurocomputing in resistive random-access memory | |
Lepri et al. | In-memory computing for machine learning and deep learning | |
Bertuletti et al. | A multilayer neural accelerator with binary activations based on phase-change memory | |
Roy et al. | Fundamental limits on the computational accuracy of resistive crossbar-based in-memory architectures | |
CN116601710A (zh) | 用于模拟电阻交叉阵列中的不同操作的读出电路的动态配置 | |
García-Redondo et al. | Training DNN IoT applications for deployment on analog NVM crossbars | |
Wei et al. | Neuromorphic computing systems with emerging devices | |
Gupta et al. | A multibit mac scheme using switched capacitor based 3c multiplier for analog compute in-memory architecture | |
Zurla et al. | Designing Circuits for AiMC Based on Non-Volatile Memories: a Tutorial Brief on Trade-offs and Strategies for ADCs and DACs Co-design |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |