CN112445456A - 使用乘法器-累加器电路的系统、计算装置和方法 - Google Patents
使用乘法器-累加器电路的系统、计算装置和方法 Download PDFInfo
- Publication number
- CN112445456A CN112445456A CN202010812126.4A CN202010812126A CN112445456A CN 112445456 A CN112445456 A CN 112445456A CN 202010812126 A CN202010812126 A CN 202010812126A CN 112445456 A CN112445456 A CN 112445456A
- Authority
- CN
- China
- Prior art keywords
- capacitor
- input
- output
- resistors
- time
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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
- 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
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0007—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising metal oxide memory material, e.g. perovskites
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K21/00—Details of pulse counters or frequency dividers
- H03K21/08—Output circuits
-
- 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/4818—Threshold devices
- G06F2207/4824—Neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Chemical & Material Sciences (AREA)
- Neurology (AREA)
- Molecular Biology (AREA)
- Materials Engineering (AREA)
- General Health & Medical Sciences (AREA)
- Analogue/Digital Conversion (AREA)
- Manipulation Of Pulses (AREA)
Abstract
提供了使用乘法器‑累加器电路的系统、计算装置和方法。乘法器累加器(MAC)系统包括MAC电路,MAC电路包括:多个电阻器,具有各自的电阻;电容器,连接到所述多个电阻器,响应于多个输入信号利用电荷对电容器充电;和时间数字转换器(TDC),被配置为将电容器由于电荷的充电时间的信息转换为数字值,其中,数字值是MAC电路的累积结果。
Description
本申请要求于2019年9月3日在韩国知识产权局提交的第10-2019-0109173号韩国专利申请以及于2020年4月16日在韩国知识产权局提交的第10-2020-0046244号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
下面的描述涉及乘法器-累加器(multiplier-accumulator,MAC)电路的技术。
背景技术
向量矩阵乘法运算(也称为乘积累加(multiply and accumulate,MAC)运算)影响各种领域中的装置的性能。例如,MAC运算可在包括多个层的神经网络的装置的机器学习和认证操作中被执行。输入信号可被认为形成输入向量,并且可以是关于图像、字节流或其他数据集的数据。输入信号可与各个权重相乘,输出向量可从针对乘法的累加运算的结果而获得,并且输出向量可作为神经网络的随后层的输入向量被提供。由于如上的MAC运算针对多个层被重复,所以神经网络处理性能主要由MAC运算的性能来确定。
发明内容
提供本发明内容以简化的形式介绍在以下具体实施方式中进一步描述的构思的选择。本发明内容不意在确定要求保护的主题的关键特征或必要特征,也不意在用于帮助确定要求保护的主题的范围。
在一个总体方面,一种乘法器-累加器(MAC)系统包括MAC电路,所述MAC电路包括:多个电阻器,具有各自的电阻;电容器,连接到所述多个电阻器,响应于多个输入信号利用电荷对所述电容器充电;和时间数字转换器(TDC),被配置为将所述电容器的由于电荷的充电时间的信息转换为数字值,其中,数字值是所述MAC电路的累积结果。
在一个总体方面,一种MAC计算装置包括一个或多个MAC电路,所述一个或多个MAC电路分别包括:存储器阵列,包括分别与多条输出线相交的多条输入线,其中,输出线中的每条包括各自的电容器,电容器被配置为:响应于输入信号分别提供给所述多条输入线中的两条或更多条而被充电或放电;和时间数字转换器(TDC),包括单个全局计数器,单个全局计数器被配置为:生成指示从开始时刻起已经流逝的时间的各个输出值,TDC被配置为:在针对充电或放电与所述各自的电容器的各自的充电或放电时间对应的时间,从各自的输出值确定选择输出,并且将确定的选择输出中的每个转换为MAC电路的针对输出线的各个数字值结果。
在一个总体方面,一种通过乘法器-累加器(MAC)电路执行的计算方法包括:接收输入信号;根据响应于输入信号而施加到多个电阻器的对应的电压,利用电荷对连接到所述多个电阻器的电容器进行充电;和根据输入信号、所述多个电阻器和电容器,将电容器的充电时间转换为数字值。
在一个总体方面,一种乘法器-累加器(MAC)电路包括:多个电阻器,响应于输入信号被施加电压;电容器,连接到所述多个电阻器并且被配置为响应于电压的施加利用电荷被充电;和时间数字转换器(TDC),被配置为根据输入信号、所述多个电阻器和电容器的组合,将电容器的充电时间转换为数字值。
MAC电路还可包括:多条输出线,各自包括所述多个电阻器和电容器,其中,输出线的各自的电容器可具有相同的电容。
MAC电路还可包括:比较器,连接到所述多个电阻器和电容器并且被配置为:输出通过将与电容器中的电荷的量对应的目标电压与参考电压进行比较而获得的比较结果,其中,TDC可被配置为:基于比较器的比较结果将指示充电时间的时间信息转换为数字值。
时间信息可包括指示输出比较结果的时刻的信息。
比较器可被配置为:响应于随着电容器根据输入信号的电压被充电而目标电压超过参考电压,输出比较结果。
输入信号可包括对应于输入数据并且将被输入到多条输入线的一系列输入电压信号。
所述多个电阻器可彼此并联连接,并且所述多个电阻器中的每个的一端可被配置为通过开关来接收电压,并且所述多个电阻器中的每个的另一端可连接到电容器和比较器。
所述多个电阻器之中的通过输入信号被施加电压的一个或多个电阻器可形成复合电阻,并且TDC可被配置为将与复合电阻和电容器的电容的组合对应的充电时间转换为数字值。
TDC可被配置为:将与时间信息对应的充电时间输出为数字值,时间信息关于从接收到输入信号的开始时刻到输出比较结果的输出时刻流逝的时间。
TDC可包括:单个全局计数器,被配置为输出指示从开始时刻起流逝的时间的数字值;和参考器,被配置为在输出比较结果的时刻参考通过单个全局计数器输出的数字值。
多条输出线可各自包括多个电阻器、电容器和比较器,单个全局计数器可连接到所述多条输出线的比较器,参考器可包括多个保持电路,所述多个保持电路被配置为参考所述多条输出线的比较器的比较结果,并且所述多个保持电路中的每个可被配置为参考从包括在所述多条输出线之中的相应的输出线中的比较器输出比较结果的时刻。
所述多个保持电路中的每个可被配置为触发器电路。
所述多个电阻器可具有与连接神经网络中的多个节点的边的连接权重对应的电阻值,神经网络包括包含所述多个节点的层。
MAC电路还可包括:输出器,被配置为输出映射到由TDC生成的数字值的值作为每条输出线的输出值。
MAC电路可被配置为:在所有输出线输出针对输入信号的数字输出值之后,将电容器放电到阈值电压或更低,直到随后的输入信号被接收到。
MAC电路可被配置为:响应于开始信号,重置单个全局计数器的计数。
MAC电路可被配置为:响应于开始信号,将输入信号施加到所述多个电阻器之中的与由输入数据指示的输入线对应的电阻器,并且TDC可被配置为:响应于开始信号,开始对流逝的时间进行计数。
MAC电路还可包括:开关,连接到所述多个电阻器中的一个并且被配置为:响应于输入数据指示包括连接的电阻器的输入线,在接收到开始信号时,将根据输入数据的输入电压信号传送到连接的电阻器。
MAC电路还可包括:开关,连接到所述多个电阻器中的每个的一端,其中,开关可被配置为:响应于输入电压信号是闭合信号,将电源电压传送到相应的电阻器,并且响应于输入电压信号是断开信号,断开相应的电阻器的一端,其中,输入电压信号从设置有相应的电阻器的输入线被接收。
MAC电路还可包括:开关,连接到所述多个电阻器中的一个并且被配置为:在充电时段期间响应于输入电压信号,将电源电压施加到连接的电阻器。
开关可被配置为:在放电时段期间响应于输入电压信号,将复位电压施加到连接的电阻器,并且MAC电路还可包括比较器,比较器被配置为:在电容器通过电源电压利用电荷被充电时响应于目标电压超过第一参考电压而输出比较结果,并且在电荷通过复位电压从电容器释放时响应于目标电压小于第二参考电压而输出比较结果,其中,目标电压对应于电容器中的电荷。
在另一总体方面,一种通过MAC电路执行的计算方法包括:接收输入信号;根据响应于输入信号而施加到所述多个电阻器的电压,利用电荷对连接到多个电阻器的电容器进行充电;和根据输入信号、所述多个电阻器和电容器的组合,将电容器的充电时间转换为数字值。
从下面的具体实施方式、附图以及权利要求,其他特征和方面将是清楚的。
附图说明
图1示出乘法器-累加器(MAC)电路的示例。
图2示出MAC电路中复合电阻与运算结果之间的映射关系的示例。
图3示出包括多条输入线和多条输出线的MAC电路的示例。
图4示出时间数字转换器(TDC)的示例。
图5示出TDC的参考器的示例。
图6示出TDC的转换操作的示例。
图7示出使用示例计算装置的MAC电路的计算方法的示例。
图8示出示例计算装置的计算方法的示例。
图9示出通过切换被施加电源电压的MAC电路的示例。
图10至图12示出图9的MAC电路的充电时段操作和放电时段操作的示例。
图13示出由示例计算装置的MAC电路实现的神经网络操作的示例。
图14示出计算装置的示例。
贯穿附图和具体实施方式,除非另有描述或提供,否则相同的附图参考标号将被理解为表示相同的元件、特征和结构。附图可不按比例,并且为了清楚、说明和方便,附图中元件的相对尺寸、比例和描绘可被夸大。
具体实施方式
在下文中,将参照附图详细描述示例。然而,可对示例进行各种改变和修改。这里,示例不被解释为限制公开。示例应当被理解为包括在公开的构思和技术范围以内的所有改变、等同物和替代物。
在此使用的术语仅出于描述特定示例的目的,并不限制示例。除非上下文另外清楚地指示,否则如在此所用,单数形式也意在包括复数形式。还将理解,术语“包含”和/或“包括”在此使用时,说明存在叙述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。
除非另有定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与示例所属领域的普通技术人员通常理解的含义相同的含义。还将理解,除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)应当被解释为具有与它们在相关领域的上下文中的含义一致的含义,并且将不以理想化或过于形式化的含义进行解释。
当参照附图描述示例时,相同的参考标号表示相同的构成元件,并且与之相关的重复描述将被省略。在示例的描述中,当认为公知的相关结构或功能的详细描述将导致对本公开的模糊解释时,将省略这样的描述。
图1示出乘法器-累加器(MAC)电路的示例。图2示出MAC电路(例如,图1的MAC电路)中复合电阻与运算结果之间的映射关系的示例。
MAC电路100可以是输出相乘结果的累积值的电路。MAC电路100可包括例如多个电阻器110、电容器C和时间数字转换器(TDC)140。MAC电路100还可包括比较器130,以生成将要发送到TDC 140的时间信息。
响应于输入信号,相应的电压可被施加到多个电阻器110。多个电阻器110可彼此并联连接,并且被施加电压的电阻器可形成复合电阻。多个电阻器110中的每个的一端可通过开关接收电压,并且其另一端可连接到电容器C(例如,一个或多个电容器)和比较器130。输入信号的输入电压信号可直接施加到多个电阻器110,或者电源电压可根据输入信号施加到多个电阻器110。
彼此并联连接的多个电阻器110可响应于输入信号而形成复合电阻,并且复合电阻值可对应于输入数据与权重数据之间的乘积累加结果的值。例如,在多个电阻器110之中,被施加电压的电阻器可参与复合电阻的形成,并且未施加电压的电阻器可被排除在复合电阻的形成之外。例如,被施加电压的电阻器可表示相应电阻器的第一电阻值(例如,100千欧姆),未施加电压的不同的电阻器由于其一端开路,所以可表示比相应电阻器的自然或设定电阻值足够大的第二电阻值(例如,10兆欧姆)。如果表示第一电阻值的电阻器和表示第二电阻值的电阻器并联连接以形成复合电阻,并且第二电阻值比第一电阻值足够大,则在复合电阻值中可基本忽略第二电阻值,或者第二电阻值对复合电阻值的影响可以很小。因此,参与形成复合电阻的电阻器可对应于输入电压信号的电压值与电阻器的电阻值的逐位相乘(bitwise multiplication)结果,并且例如,如果输入电压信号的电压值是二进制,则复合电阻值可对应于逐位相乘结果之和。上述的复合电阻如图1中所示可连接到电容器,因此MAC电路100的时间常数可由复合电阻值和电容来确定。由于电容器的充电时间由时间常数来确定,所以可从电容器的充电时间来推断复合电阻值。因此,可根据时间常数从电容器的充电时间来推断逐位相乘结果之和。以下将结合比较器130的操作更详细地描述充电时间的示例。
此外,复合电阻值不限于仅指示逐位相乘结果。如果输入电压信号的电压值不是二进制而是指示多个状态(例如,多个位),则参与形成复合电阻的电阻器可对应于输入电压信号的电压值与电阻器的电阻值的相乘结果,并且复合电阻值可对应于相乘结果之和。
作为参考,在图1中描述了响应于开始信号START将输入信号的输入电压信号施加到电阻器的示例。MAC电路100还可包括分别连接到多个电阻器110的一端的多个开关101。例如,第一开关SW1可连接到第一电阻器R1的一端,第j开关SWj可连接到第j电阻器Rj的一端,并且第m开关SWm可连接到第m电阻器Rm的一端。这里,m可以是大于或等于“1”的整数,j可以是介于“1”与“m”之间的整数(包括“1”和“m”)。多个开关101的另一端可接收输入电压信号V1至Vm。例如,第j开关SWj的另一端可接收第j输入电压信号Vj。
输入信号是与输入数据对应的信号,并且可包括输入到多条输入线的一系列输入电压信号V1至Vm。例如,第j输入电压信号可响应于开始信号START通过第j开关SWj施加到第j电阻器Rj。然而,输入电压信号V1至Vm并不总是施加到所有电阻器,并且根据输入数据,输入电压信号可施加到一部分电阻器,而不施加到另一部分电阻器。
例如,响应于指示包括连接到相应的开关的电阻器的输入线的输入数据中的一个,相应的开关可在接收到开始信号(START)时将根据输入数据的输入电压信号发送到连接到开关的电阻器。相反,当输入数据中的另外一个不指示相应的输入线时,即使当输入线的开关响应于接收到开始信号START而闭合时(例如,在一个非限制性示例中,所有的开关可在接收到开始信号START时闭合),电压也不会提供给电阻器。这里,由于输入信号的另外一个输入数据不包括将要施加到相应的输入线的输入电压信号,所以电压不会提供给相应的输入线的电阻器。因此,相应的输入线的电阻器的一端可浮置(float)并且排除在复合电阻器的形成之外。如上所述,一端开路的电阻器表示电阻值远大于其自身的自然或设定电阻值、或者提供相应的输入电压信号的其他电阻器的自然或设定电阻值,因此具有有效地相当高电阻的该电阻器在复合电阻值中可被忽略或者对复合电阻具有小的影响。
电容器C可连接到多个电阻器110,并且响应于电压被施加而利用电荷被充电。例如,电容器C可通过流过多个电阻器110的各自的电流利用电荷被充电,多个电阻器110通过输入电压信号或通过切换而被施加电压。在图1中,描述了通过施加到多个电阻器110的输入电压信号利用电荷对电容器C充电的示例。
比较器130可连接到多个电阻器110和电容器C。比较器130可输出通过将与电容器C中的电荷的量对应的目标电压Vo与参考电压Vref进行比较而获得的比较结果。在一个示例中,比较器130可被配置为运算放大器(OP amp),并且多个电阻器110的另一端和电容器C的一端可连接到运算放大器的一个输入节点。运算放大器的另一输入节点可接收参考电压Vref。目标电压Vo是与电容器C中的电荷的量对应的电压,并且可根据由电容器C的电容以及由输入信号和多个电阻器110形成的复合电阻所确定的时间常数而随时间变化。参考电压Vref可以是作为用于测量电压变化时间(例如,充电时间或放电时间)的标准的电压。例如,响应于随着电容器C通过根据输入信号的电压被充电而目标电压Vo超过参考电压Vref,比较器130可输出比较结果。在图1中,比较结果可指示目标电压Vo超过参考电压Vref,并且输出比较结果的时刻可被称为输出时刻。比较器130可生成计数结束信号STOP作为比较结果。
如所讨论的,TDC 140可将根据输入信号、多个电阻器110和电容器C的组合的电容器C的充电时间转换为数字值。TDC 140可基于比较器130的比较结果将充电时间转换为数字值。例如,充电时间可以是输出比较器130的比较结果的输出时刻与给出开始信号START的开始时刻之间的时间差。时间信息是指示充电时间的信息,并且可以是指示从开始时刻到输出时刻由计数器所计数的时钟数的信息,这将在下面参照图4和图5更详细地描述。此外,关于对时钟计数提及的时钟可表示时钟周期的计数、或者其他形式的时钟计数。
作为参考,图1中示出的多个电阻器110、比较器130和TDC 140可对应于一条输出线。响应于开始信号START,MAC电路100可将输入电压信号施加到多个电阻器110。如上所述,在多个电阻器之中,被施加输入电压信号的电阻器可形成复合电阻。响应于输入信号被施加,这些电阻器与电容器C之间的自然响应(natural response)可增大电容器C的目标电压Vo。例如,在给出开始信号START之后,包括电阻器和电容器C的电路的操作例如可通过等式1来表示。
【等式1】
在等式1中,j可表示介于“1”与“m”之间的整数(包括“1”和“m”)。Vj可以是施加到第j输入线的第j输入电压信号,Rj可以是设置在第j输入线中的第j电阻器的电阻值,C可以是电容器C的电容值,t表示时间。作为参考,如果输入数据是包括一系列二进制值的输入位序列,则MAC电路100中的多条输入线中的每条可对应于位序列的每个位位置(bitposition)。如果位位置的位值为“1”,则具有电压值的输入电压信号可被施加到与所述位位置对应的输入线。相反,如果位位置的位值为“0”,则输入电压信号不会被施加到与所述位位置对应的输入线。此外,多个电阻器110的电阻值可对应于位值乘以输入的位序列的各个位。例如,在多个电阻器110之中,与位值“1”对应的电阻器具有第一电阻值,并且与位值“0”对应的电阻器具有远大于第一电阻值的第二电阻值,对复合电阻值没有显著影响。如上所述,在由具有第一电阻值的电阻器和具有第二电阻值的电阻器形成的复合电阻中,由于对复合电阻值具有小的影响或没有显著影响,所以远大于第一电阻值的第二电阻值的大小可被忽略。
关于上述等式1的边界条件例如可由等式2来表示。
【等式2】
在等式2中,Vo(0+)可以是目标电压Vo的初始值,Vo(∞)可以是目标电压Vo的收敛值。例如,如等式3所表示的,目标电压Vo可由等式1和等式2导出。
【等式3】
在等式3中,复合电阻Ro由彼此并联连接的电阻器形成,并且复合电阻的电阻值例如可由等式4来表示。
【等式4】
在等式4中,如果第j电阻器对应于位值“0”,或者第j电阻器的一端开路(例如,如果输入电压信号未施加到第j电阻器),则Rj可有效地作为比第一电阻值大的第二电阻值。如果第j电阻器对应于位值“1”,并且输入电压信号被施加到第j电阻器的一端,则Rj可以是第一电阻值。
当在施加输入信号之后被充电的电容器C的目标电压Vo超过预设参考电压Vref时,比较器130可输出计数结束信号STOP。这里,关于目标电压Vo变得等于预设参考电压Vref的充电时间Tout,等式3例如可被表示为等式5。
【等式5】
例如,如等式6所表示的,等式5可针对充电时间Tout重新布置。
【等式6】
如等式6中所示,充电时间Tout可以是复合电阻Ro的线性函数,并且可与复合电阻Ro成比例。如上所述,形成复合电阻Ro的各个Rj值可对应于输入数据的位值与由第j输入线中的电阻器所指示的位值之间的逐位相乘结果。例如,如果位值“1”对应于低电阻值(例如,100千欧姆),位值“0”对应于高电阻值(例如,10兆欧姆),则复合电阻Ro可表示根据乘积累加结果中为“1”的位的数量的如图2的曲线图200中所示的反比例关系。在图2的曲线图200中,x轴可表示作为与位值“1”对应的电阻器的数量的总计的位的数量,y轴可表示将100千欧姆归一化为“1”的复合电阻值。基于反比例关系,MAC电路可从估计的复合电阻Ro估计根据逐位相乘结果的位的数量。
总之,如图2的曲线图中所示,充电时间Tout可与复合电阻Ro成比例,并且复合电阻Ro可映射到多个电阻器110的值或由多个电阻器110指示的值与输入数据的值之间的乘积累加结果。在二进制运算中,乘积累加结果可仅对应于用于求和的位值“1”的数量。
如上所述,MAC电路100可输出与乘积累加结果对应的充电时间Tout作为数字值。例如,MAC电路100的TDC 140可将开始信号START与计数结束信号STOP之间的时间差(例如,充电时间)计数为参考时钟CLK的数量,并且将所计数的参考时钟CLK的数量输出为数字值。
不同于存储器和算术单元分开的冯·诺伊曼架构,MAC电路100可改善数据传输速率和功耗。此外,不同于使用模数转换器(ADC)执行量化为数字信号并将该信号用作集成了存储器和算术单元的内存计算架构(in-memory computing architecture)中的激活函数的输入的结构,MAC电路100可以不需要在所有列中配置独立的ADC,因此,电路中的功耗和占用面积可被降低。
作为参考,在上述的图1和图2中,假设输入电压信号的电压值和电阻器的电阻值具有二进制值(例如与导通(ON)对应的值和与截止(OFF)对应的值)。然而,示例不限于此。输入电压信号的电压值和电阻器的电阻值可具有区分为多个状态的值。例如,如果将2位的值输入到一条输入线,则针对“00”,输入电压信号可浮置,针对“01”,可将第一电压值分配给输入电压信号,针对“10”,可将大于第一电压值的第二电压值分配给输入电压信号,并且针对“11”,可将大于第二电压值的第三电压值分配给输入电压信号。如果每个电阻器指示2位的值,则关于“00”,可将第一电阻值分配给电阻器,针对“01”,可将大于第一电阻值的第二电阻值分配给电阻器,针对“10”,可第三电阻值分配给电阻器,并且针对“11”,可将第四电阻值分配给电阻器。在每条输入线和每个电阻器中接收的信号不限于指示2位的多个状态,而是可指示与更多位对应的多个状态,或者根据二进制以外的进制的值可被分配。
图3示出包括多条输入线和多条输出线的MAC电路的示例。
MAC电路300可包括用于分别接收输入信号的多条输入线和用于分别对输出信号进行输出的多条输出线(例如,针对特定的输出线,特定的Tout可被确定并输出)。多条输出线中的每条可分别包括多个电阻器、电容器320和比较器330。多条输入线中的每条可与多条输出线相交。图3的MAC电路300可包括m条输入线和n条输出线。尽管示出了输入线和输出线彼此垂直相交,但是示例不限于此。MAC电路300可包括多个电阻器、多个电容器、多个比较器、单个TDC 340和输出级350。
如图3中所示,多个电阻器可沿多条输出线和多条输入线布置。例如,多个电阻器可沿输出线设置在多条输入线中的每条中。多个电阻器中的每个可被配置为通过多条输入线之中的设置有相应的电阻器310的输入线来接收电压。例如,沿第j输入线391布置的电阻器可被配置为响应于开始信号而接收第j输入电压信号bj。在图3中,作为示例,输入电压信号b1至bm可具有指示二进制值的电压。例如,指示位值“1”的输入电压信号可指示确定的电压,指示位值“0”的输入电压信号可指示浮置电压(floating voltage)。针对这样的多个输入电压信号和多条输出线布置有多个电阻器的结构也可被称为存储器阵列390。
多个电容器可分别设置在多条输出线中的每条中。多个电容器中的每个可连接到沿多条输出线之中的设置有相应的电容器320的输出线设置的电阻器的另一端和各自的比较器330。多个电容器中的每个可响应于通过相应的电阻器接收到的电压而利用电荷被充电。例如,设置在第i输出线392中的电容器320可根据施加到设置在第i输出线392中的电阻器的电压而利用电荷被充电。作为参考,多个电容器可具有相同的电容。这是因为由于多条输出线共享单个全局计数器的输出,每条输出线应当具有相同尺度(scale)的充电时间或放电时间。充电时间和放电时间可表示与复合电阻值和电容所对应的时间常数成比例的尺度。
多个比较器可分别设置在多条输出线中。多个比较器中的每个可连接到沿多条输出线之中的设置有相应的比较器330的输出线布置的电阻器的另一端和电容器320,并且输出将相应的电容器320的目标电压与参考电压进行比较的结果。例如,设置在第i输出线392中的比较器330可将设置在第i输出线392中的电容器320的目标电压与参考电压进行比较,并且响应于目标电压超过参考电压而输出第i计数结束信号STOPi。
TDC 340可接收针对多条输出线的计数结束信号并且将各自的时间信息转换为数字值。例如,TDC 340可分别输出与n条输出线的时间信息对应的数字值。TDC 340可输出与时间信息对应的n个数字值。例如,响应于接收到第i计数结束信号STOPi,TDC 340可生成第i时间信息Tout,i,第i时间信息Tout,i指示对应于开始信号START的开始时刻与对应于计数结束信号STOPi的输出时刻之间的时间差。第i时间信息Tout,i也可被称为第i充电时间。
输出级350可输出映射到由TDC生成的数字值的值作为输出线的输出值OUTs。如上所述,输出值OUTs可以是指示时间信息的数字值映射到与乘积累加结果对应的数字的值。例如,MAC电路可通过映射表(例如,查找表)输出映射到第i时间信息Tout,i的第i输出值OUTi。由于输出值分别针对输出线而输出,所以输出级350可输出针对n条输出线的n个输出值。
在下文中,将描述包括在TDC 340中的单个全局计数器。
图4示出TDC的示例。图5示出TDC的参考器(referrer)的示例。
将参照图4描述图3的TDC的配置的示例。TDC可包括单个全局计数器441和参考器442。
单个全局计数器441可输出指示从开始时刻起流逝的时间的数字值。单个全局计数器441可连接到多条输出线(图3的这样的多条输出线)的比较器。例如,单个全局计数器441可对从开始时刻起生成的参考时钟CLK的数量进行计数。因此,可以不使用附加的同步操作,并且单个全局计数器441可基于相同的开始时刻以参考时钟为单位针对每条单独的输出线对流逝的相应的时间(例如,充电时间或放电时间)进行计数。
参考器442可参考或观测在输出比较结果的时刻从单个全局计数器441输出的数字值。参考器442可包括多个保持电路,以参考多条输出线的比较器的比较结果。多个保持电路中的每个可参考比较结果从多条输出线之中的对应输出线中包括的比较器输出的时刻。例如,每个保持电路可保持在接收到计数结束信号的输出时刻由单个全局计数器441计数的参考时钟CLK的数量。在输出时刻保持的参考时钟CLK的数量可对应于时间信息(例如,充电时间或放电时间),并且可输出为时间信息Tout。
无论多个保持电路是否保持,单个全局计数器441都可对参考时钟CLK进行计数,并且每个保持电路可独立于其他保持电路进行操作。例如,即使当相应的保持电路保持了与接收到计数结束信号的时刻对应的时间信息时,单个全局计数器441也可继续对参考时钟CLK进行计数。
如图5中所示,多个保持电路中的每个可被配置为触发器电路。单个全局计数器441可从时钟生成器544接收参考时钟(例如,时钟周期),并且响应于开始信号START而对参考时钟的数量进行计数,其中,开始信号START可输入到单个全局计数器441的使能端EN,计数的参考时钟的数量可从单个全局计数器441的输出端OUT输出到各个触发器电路FF。响应于从相应输出线的比较器接收到计数结束信号STOPs,每个触发器电路可保持数字值,该数字值指示从开始时刻到输出计数结束信号STOPs的输出时刻计数的参考时钟的数量。由触发器电路543保持的数字值可指示时间信息Touts。时间信息Touts可包括指示输出比较器的比较结果的时刻的信息。
因此,MAC电路中的多个保持电路可独立地并行对单个全局计数器441的参考时钟的数量进行计数。在这个示例中,由于保持电路以简单的触发器结构实现,所以电路中占用的面积和功耗可最小化。此外,由于不需要针对多条输出线布置多个计数器,所以MAC电路可用更简单的元件来实现。
作为参考,在一个示例中,后面参照图13描述的神经网络的一些操作、或者另一神经网络或其他机器学习模型可由图5中示出的MAC电路来实现。例如,神经网络的连接权重值Wj,i可存储在与内部存储器对应的电阻器中。与上述描述类似,可在输入信号b1到bm被输入的开始时刻将开始信号START施加到TDC 340。单个全局计数器441响应于开始信号START而开始计数。输入信号b1到bm与各个电阻器中的连接权重值Wj,i之间的逐位相乘(例如,同或(XNOR))运算所对应的电阻可被确定。如上所述,电阻器的电阻可根据是否施加了输入电压信号和电阻器的内阻值而变化。在比较器的输入处,可观察到由电容器和复合电阻的组合所确定的与所有逐位相乘运算结果对应的瞬态行为。响应于电容器的目标电压由于瞬态行为而达到预定的参考电压Vref,比较器可将计数结束信号STOP发送到TDC 340,并且TDC可将时间值输出为数字值。
图6示出TDC的转换操作的示例。
如图6中所示,设置在输出线中的电容器的目标电压639可根据与电容器的相应的时间常数对应的自然响应而逐渐增大。那是因为电容器中的电荷逐渐增加。在这个示例中,图5中描述的时钟生成器可生成参考时钟,并且单个全局计数器可从开始时刻START起对参考时钟的数量进行计数。即使在目标电压639变为等于参考电压Vref的输出时刻STOP之后,单个全局计数器也可继续对参考时钟的数量进行计数。参考器的保持电路可保持数字值,该数字值指示从开始时刻START到输出时刻STOP计数的参考时钟的数量。例如,在图6的示例中,从开始时刻START到输出时刻STOP,6个参考时钟可被生成,并且保持电路可输出数字值“6”。
图7示出使用MAC电路的计算方法的示例。
首先,在操作710中,MAC电路可接收输入信号。例如,MAC电路可通过各条输入线接收输入信号。根据输入信号,可对每个单独的输入线的电阻器施加电压或者不施加电压。
在操作720中,MAC电路可根据响应于输入信号而施加到多个电阻器的电压,来利用电荷对连接到多个电阻器的电容器进行充电。
随后,在操作730中,TDC可根据输入信号、多个电阻器和电容器的组合将电容器的充电时间转换为数字值。
图8示出计算方法的详细示例。
首先,在操作801中,MAC电路可刷新电容器。例如,在例如所有输出线已经输出针对先前的输入信号的数字输出值之后,MAC电路可将电容器放电到阈值电压或更低,直到随后的输入信号被接收到。MAC电路可从电容器释放电荷,直到施加到电容器两端的电压变得小于阈值电压(例如,0伏特(V))。
在操作810中,MAC电路可确定是否开始MAC运算。例如,MAC电路可响应于开始信号被生成而执行下面的操作。MAC电路可响应于输入信号被接收到而生成开始信号。
在操作815中,单个全局计数器可响应于开始信号而重置计数。例如,单个全局计数器可将参考时钟的数量重置为“0”。
在操作820中,MAC电路可根据输入信号而对电阻器和电容器施加电压。例如,MAC电路可响应于开始信号而将输入信号施加到多个电阻器之中的与输入数据所指示的输入线对应的电阻器。当通过输入线施加了电压时,电容器的目标电压可根据对施加的电压的自然响应而逐渐增大。
在操作831中,单个全局计数器可对充电时间进行计数。例如,单个全局计数器可从生成开始信号的开始时刻起对参考时钟的数量进行计数。因此,TDC可响应于开始信号而开始对流逝的时间进行计数。
在操作832中,比较器可确定电容器的目标电压是否或者何时超过参考电压。比较器可响应于目标电压超过参考电压而输出比较结果。如果目标电压小于或等于参考电压,则MAC电路可返回操作831,从而单个全局计数器可继续对参考时钟的数量进行计数。此外,单个全局计数器可在目标电压超过参考电压之后继续对参考时钟的数量进行计数。
在操作833中,TDC可输出与充电时间对应的数字值。TDC可输出与时间信息对应的充电时间作为数字值,时间信息关于从接收到输入信号的开始时刻到输出比较结果的输出时刻流逝的时间。
图9示出通过切换被施加电源电压的MAC电路的示例。
MAC电路900可包括分别连接到多个电阻器110的开关。在图9中,SW'1至SW'm是分别布置在多条输入线中的多个开关901。
多个开关901可响应于开始信号而断开或闭合。多个开关901可在生成开始信号之后基于提供的切换信号而连接或断开电源电压VDD和相应的电阻器。输入电压信号可作为切换信号被接收。当输入电压信号具有对应于ON状态的第一电压值时,开关可因此闭合并且将电源电压VDD与相应的电阻器进行连接。当输入电压信号具有对应于OFF状态的第二电压值时,开关可断开并且将电源电压VDD与相应的电阻器断开。在一个示例中,开关可实现为金属氧化物半导体场效应晶体管(MOSFET),并且每个开关可在栅极节点接收相应的切换信号。例如,各个开关的每个栅极节点可接收各自的输入电压信号。根据输入电压信号的开关的操作类似于上面关于图1的讨论,例如,在输入信号的输入数据不包括将被施加到相应输入线的输入电压信号的情况下,相应电阻器的一端可浮置,并且电阻器的相应电阻具有很大的值,因此对复合电阻具有小的影响。在图9的示例中,如果输入电压信号具有与OFF状态对应的电压值(例如,零电压值),则开关可被关断并断开,或者保持关断并保持电源电压VDD与相应电阻器断开,并且防止该电阻器影响复合电阻。
多个开关901中的每个可响应于输入电压信号是闭合信号而将电源电压VDD传输到相应的电阻器(其中,输入电压信号在设置有连接到相应的开关的电阻器的输入线中被接收),并且响应于输入电压信号是断开信号而断开相应的电阻器的一端。例如,如果输入到第j输入线的第j输入电压信号Vj是闭合信号,则第j开关SW'j可连接两端或者保持连接两端以将在另一端接收到的电源电压VDD传送到连接到一端的第j电阻器Rj,但是如果第j输入电压信号Vj是断开信号,则第j开关SW'j可断开两端或者保持断开两端以使第j电阻器Rj的一端浮置。
如参照图9所述,如果电源电压VDD被施加到电阻器,则MAC电路900不仅可在充电时段进行操作,而且可在放电时段进行操作,以下将对其进行描述。
图10至图12示出图9的MAC电路的充电时段操作和放电时段操作的示例。
在MAC电路中,电容器的电容存在限制,因此电容器在充电之后需要放电。因此,如图10所示,MAC电路可重复充电时段1010和放电时段1020。这里,MAC电路不仅可在充电时段1010期间计算MAC结果,而且可在放电时段1020期间计算MAC结果。
图11是示出在充电时段1010和放电时段1020中使用MAC电路的计算方法的流程图。
首先,在操作1111中,MAC电路可对电容器完全放电。例如,MAC电路可向连接到电容器的电阻器提供地电压。由于电容器的一端连接到电阻器而其另一端连接到地,因此MAC电路可通过提供地电压来对电容器放电。
在操作1112中,MAC电路可确定是否开始充电时段的MAC运算。在操作1113中,单个全局计数器可响应于开始信号而重置计数。操作1112和操作1113的细节与参照图8描述的操作810和操作815的细节类似,因此将省略重复的描述。
在操作1114中,MAC电路可根据输入信号向电阻器和电容器提供电源电压。例如,开关可在充电时段期间响应于输入电压信号,对与之连接的电阻器施加电源电压。在图9中示出的MAC电路中,当输入到第j输入线的第j输入电压信号指示ON状态时,第j开关SW'j的两端可被连接(例如,将电源电压连接到第j电阻器Rj或者同一输入线中的多个电阻器(诸如,以上讨论的关于向图3中包括多个电阻器的第j输入线391提供电压))。因此,电源电压可通过第j电阻器Rj提供给相应的输出线的电容器C。相反,当输入到第j输入线的第j输入电压信号指示OFF状态时,第j开关SW'j的两端可被断开,并且第j电阻器Rj的一端可浮置。因此,在多个电阻器之中,接收ON状态的输入线中的电阻器可形成复合电阻,并且接收OFF状态的输入线中的电阻器可被排除在复合电阻的形成之外。
在操作1115中,MAC电路的单个全局计数器可计数。当电源电压如以上操作1114中所述通过ON状态的电阻器被传送时,电容器可利用电荷充电。随着电容器利用电荷充电,电容器的目标电压可根据处于ON状态的电阻器形成的复合电阻以及与电容器对应的自然响应而增大。诸如以上针对图4讨论的,MAC电路可将利用电荷对电容器充电的时间计数为参考时钟的数量。
在操作1116中,比较器可将目标电压与第一参考电压Vref1进行比较。在电容器通过电源电压利用电荷充电时,比较器可响应于目标电压超过第一参考电压Vref1而输出比较结果,其中目标电压对应于电容器中的电荷。当目标电压达到第一参考电压Vref1时,单个全局计数器可继续对参考时钟的数量进行计数(例如,除非所有的输出线比较器已经发出了停止信号)。
在操作1117中,TDC可输出与充电时间对应的数字值。例如,TDC可输出数字值作为充电时间,该数字值指示从开始时刻到在上述操作1116中输出比较结果的输出时刻计数的参考时钟的数量。充电时间可输出为数字代码值。以上针对图1至图8关于多条输出线和多个TDC输出的TDC操作的讨论也适用于图11。
在操作1121中,MAC电路可对电容器完全充电。
在操作1122中,MAC电路可确定是否开始放电时段的MAC运算。在一个示例中,在操作1123中,单个全局计数器可响应于开始信号而重置计数。操作1122和操作1123的细节与参照图8描述的操作810和操作815的细节类似,因此将省略重复的描述。
在操作1124中,MAC电路可根据输入信号向电阻器和电容器提供复位电压。复位电压可对应于地电压。例如,开关可在放电时段期间响应于输入电压信号而将复位电压施加到与之连接的电阻器。在图9中示出的MAC电路中,当输入到第j输入线的第j输入电压信号指示ON状态时,第j开关SW'j的两端可被连接,并且复位电压(例如,地电压)可通过第j电阻器Rj提供给相应的输出线的电容器C。相反,当输入到第j输入线的第j输入电压信号指示OFF状态时,第j开关SW'j的两端可被断开,并且第j电阻器Rj的一端可浮置。因此,与充电时段类似,在放电时段中,在多个电阻器之中,接收ON状态的输入线中的电阻器可形成复合电阻,并且接收OFF状态的输入线中的电阻器可被排除在复合电阻的形成之外。
在操作1125中,MAC电路的单个全局计数器可对放电时间进行计数。当复位电压如以上操作1124中所述通过ON状态的电阻器被传送时,电容器C中的电荷可从中释放。随着电荷从电容器C释放,电容器C的目标电压可根据处于ON状态的电阻器所形成的复合电阻以及与电容器C对应的自然响应而减小。MAC电路可将电荷从电容器C释放的时间计数为参考时钟的数量。
在操作1126中,比较器可将目标电压与第二参考电压Vref2进行比较。在电荷通过复位电压从电容器C释放时,比较器可响应于根据电容器中的电荷的目标电压小于第二参考电压Vref2而输出比较结果。当目标电压达到第二参考电压Vref2时,单个全局计数器可继续对参考时钟的数量进行计数(例如,除非所有的输出线比较器已经发出了停止信号)。
在操作1127中,TDC可输出与放电时间对应的数字值。例如,TDC可输出数字值作为放电时间,该数字值指示从开始时刻到在上述操作1126中输出比较结果的输出时刻计数的参考时钟的数量。放电时间可输出为数字代码值。
参照图12的示例,在第一充电时段1211中,比较器可在从相应时段的开始时刻起计数了4个参考时钟的时刻输出比较结果,并且TDC可输出指示“4”的时间信息Tout。在第一放电时段1222中,比较器可在从相应时段的开始时刻起计数了5个参考时钟的时刻输出比较结果,并且TDC可输出指示“5”的时间信息Tout。在第二充电时段1213中,比较器可在从相应时段的开始时刻起计数了4个参考时钟的时刻输出比较结果,并且TDC可输出指示“4”的时间信息Tout。在第二放电时段1224中,比较器可在从相应时段的开始时刻起计数了6个参考时钟的时刻输出比较结果,并且TDC可输出指示“6”的时间信息Tout。
因此,MAC电路可通过交替地进行充电和放电来重新利用由于简单放电可能被浪费的功率,从而最小化功率泄漏。
图13示出由计算装置的MAC电路实现的神经网络操作的示例。
神经网络1300可以是深度神经网络(DNN)的示例。神经网络1300可由示例计算装置来实现。DNN可以是或者可包括全连接网络、深度卷积网络和循环神经网络。计算装置可实现神经网络1300以通过基于深度学习对处于非线性关系的输入数据和输出数据进行映射来执行对象分类、对象识别、语音识别和图像识别。深度学习是用于从大数据集中解决问题(诸如图像识别或语音识别)的机器学习技术,并且可通过有监督或无监督学习将输入数据和输出数据相互映射。
尽管为了便于描述,图13包括2个隐藏层,但是各种数量的隐藏层可被包括。此外,尽管神经网络1300在图13中示出为包括用于接收输入数据的单独的输入层1310,但是可将输入数据直接输入到隐藏层中。在神经网络1300中,除了输出层以外的层的人工节点可通过用于传输输出信号的链接或连接(例如,仅作为示例)连接到随后层的人工节点。链接或连接的数量可对应于例如包括在先前层、随后层和神经网络的训练中的人工节点的数量。
包括在先前输入层中的人工节点的输出可以以加权形式(例如,通过连接权重)输入到包括在隐藏层1中的各个人工节点。加权形式的输入可被称为加权输入,加权输入通过将权重乘以包含在先前层中的人工节点的输出并且组合结果来获得。权重可被称为神经网络1300的参数。激活函数可被应用到隐藏层1的每个节点的加权输入的累积中的每个,并且例如隐藏层1中的每个节点的每个激活可被输出到随后的隐藏层2。激活函数可包括S型(sigmoid)、双曲正切(tanh)和整流线性单元(ReLU)中的一个或多个,并且可通过激活函数在神经网络1300中形成非线性。针对隐藏层2执行类似的操作,其中,隐藏层2的激活输出可输入到包括在输出层中的各个节点。
上面参照图1至图12描述的MAC电路可应用到用于驱动深度学习算法的内存计算。例如,如以上针对图5所讨论的,在神经网络1300的节点1321之间传输的加权输入的各自的计算可包括重复进行乘法和累积(加法)运算的MAC运算(例如,在并行操作MAC电路和/或在顺序的MAC电路操作中)。神经网络1300的一个预定节点1321的输出例如可由等式7表示。
【等式7】
上述的等式7可表示第i节点1321的针对预定层中的m个加权输入值的输出值yi。xj可表示先前层的第j输出值(例如,节点值),并且wj,i可表示施加到第i节点1321和先前层的第j输出值的权重。wj,ixj可表示相应层的第i节点1321中的m个加权输入值中的第j加权输入,并且f()可表示激活函数。如等式7中所示,对于激活函数,节点值xj和权重wj,i的MAC结果可被使用。换句话说,在需要的时刻加载适当的节点值xj和权重wj,i的存储器访问操作和将它们相乘和累加的MAC运算可被重复。
在包括包含多个节点的层的神经网络1300中,MAC电路的多个电阻器可具有与连接多个节点的边的连接权重对应的电阻。沿设置有多个电阻器的输入线提供的输入电压信号可指示与节点值xj对应的值。因此,MAC电路可执行实施神经网络1300所需的操作的至少一部分。作为参考,在MAC电路中,电阻器的电阻值不固定,并且可改变为与如上所述的存储在存储器中的权重值对应的电阻值。
然而,MAC电路的应用不限于此,并且MAC电路可用于使用模拟电路的特性以低功耗快速地处理多个输入数据的计算操作。
MAC电路可具有组合了使用TDC的内存计算结构的模拟加法和数字转换电路的低功耗结构。如上所述,MAC电路可使用一个TDC(使用单个全局计数器)来计算多列数据(例如,与多条输出线对应的数据)。那是因为,由于开始信号START针对全局计数器和所有的输入线被同步,所以针对每列或每条输出线,只有对应于结束信号STOP的计数值可被独立地参考。因此,内存中整个阵列的并行操作可由一个TDC覆盖。在现有ADC结构的情况下,每列需要ADC,并且需要复杂的结构以提高位精度,因此需要大的功率和面积。然而,TDC结构(诸如,MAC电路)使用简单的计数器将加法值数字化,因此是简单的电路。此外,整个阵列运算由单个TDC覆盖,功耗和尺寸可被降低。
图14示出计算装置的示例。参照图14,处理装置1400包括处理器1410、存储器1420、MAC电路1430和通信总线1450。存储器1420例如使用通信总线1450连接到处理器1410和MAC电路1430,并且存储可由处理器1410执行的指令以及神经网络的参数、将由处理器1410或MAC电路1430计算的数据、或者由处理器1410或MAC电路1430处理的数据。例如,如以上所讨论,MAC电路1430可被提供由处理器1410确定的输入信号(例如,基于存储在存储器1420中的参数设置的电阻器电阻值),并且提供来自MAC电路1430的与多条输出线对应的输出。此外,尽管以上说明了示例MAC电路,但是MAC电路1430也代表多个MAC电路。
处理器1410可执行控制和/或启动图1至图13的以上任何操作中的操作的指令。例如,处理器1410可生成输入数据、或者接收用于神经网络的先前层的输出的输入数据,控制将输入数据提供给MAC电路1430,并且控制从MAC电路1430接收输出数据。处理器1410还可执行这样的MAC运算并且基于存储的参数执行一个或多个神经网络,从而完成针对相应的输入的对象分类、对象识别、语音识别和/或图像识别。
在此描述的单元可使用硬件组件、软件组件和/或它们的组合来实现。处理装置可使用一个或多个通用或专用计算机(诸如,例如,处理器、控制器和算术逻辑单元(ALU)、DSP、微型计算机、FPGA,可编程逻辑单元(PLU)、微处理器或能够以限定的方式响应并执行指令的任何其他装置)来实现。处理装置可运行操作系统(OS)以及在OS上运行的一个或多个软件应用。处理装置还可响应于软件的执行来访问、存储、操控、处理和创建数据。为了简明的目的,处理装置的描述用作单数;然而,本领域的技术人员将理解,处理装置可包括多个处理元件和多种类型的处理元件。例如,处理装置可包括多个处理器、或者处理器和控制器。此外,不同的处理配置(诸如,并行处理器)是可行的。
软件可以包括计算机程序、代码段、指令或它们的一些组合,以独立或统一地指示或配置处理装置按需要操作。软件和数据可以永久或暂时地实现在机器、组件、物理或虚拟设备、计算机存储介质或装置中的任何类型,或者以能够向处理装置提供指令或数据或者能够被处理装置解释的传播的信号波实现。软件还可分布在联网的计算机系统上,从而软件以分布式方式被存储和执行。软件和数据可由一个或多个非暂时性计算机可读记录介质来存储。
根据上述示例的方法可被记录在包括程序指令的非暂时性计算机可读介质中以实现上述示例的各种操作。介质还可单独地或与程序指令结合地包括数据文件、数据结构等。记录在介质上的程序指令可以是针对示例的目的而专门设计和构造的那些程序指令,或者它们可以是对计算机软件领域的技术人员公知和可用的类型。非暂时性计算机可读介质的示例包括磁介质(诸如,硬盘、软盘和磁带)、光介质(诸如,CD-ROM盘、DVD和/或蓝光光盘)、磁光介质(诸如,光盘)、以及专门配置为存储和执行程序指令的硬件装置(诸如,只读存储器(ROM)、随机存取存储器(RAM)、闪存(例如,USB闪存驱动器、存储卡、记忆棒等)等)。程序指令的示例包括机器代码(诸如,由编译器所产生的)和包含计算机可使用解释器执行的高级代码的文件两者。上述装置可被配置为充当一个或多个软件模块以执行上述示例的操作,反之亦然。
以上已经描述了一些示例。然而,应当理解的是,可对这些示例进行各种修改。例如,如果描述的技术以不同的顺序被执行、和/或如果描述的系统、架构、装置或电路中的组件以不同的方式被组合和/或由其他组件或其等效物替换或补充,则可实现合适的结果。
因此,其他实现在权利要求的范围内。
Claims (35)
1.一种乘法器-累加器系统,包括:
乘法器-累加器电路,包括:
多个电阻器,具有各自的电阻;
电容器,连接到所述多个电阻器,响应于多个输入信号利用电荷对所述电容器充电;和
时间数字转换器,被配置为将所述电容器的由于电荷的充电时间的信息转换为数字值,
其中,数字值是所述乘法器-累加器电路的累积结果。
2.根据权利要求1所述的系统,
其中,所述多个电阻器和所述电容器被配置为第一输出线,
其中,所述乘法器-累加器电路还包括:一条或多条其他输出线,各自分别包括各自的其他电容器和各自的多个电阻器,所述多个电阻器具有各自的电阻并连接到对应的其他电容器,
其中,所述一条或多条其他输出线中的每条的各自的其他电容器被配置为:响应于所述多个输入信号利用各自的电荷被充电,并且
其中,所述其他电容器和所述电容器具有相同的电容。
3.根据权利要求2所述的系统,
其中,时间数字转换器被配置为:将所述一条或多条其他输出线的各自的其他电容器的各自的充电时间的各自的信息转换为各自的数字值。
4.根据权利要求3所述的系统,
其中,第一输出线还包括:比较器,连接到所述电容器并且被配置为生成所述电容器的充电时间的信息,并且
其中,其他输出线各自还包括:各自的其他比较器,所述各自的其他比较器中的每个分别连接到所述一条或多条其他输出线的各自的其他电容器,并且被配置为生成各自的充电时间的各自的信息。
5.根据权利要求4所述的系统,
其中,所述电容器的充电时间的信息是所述比较器输出比较结果的时刻的指示,并且
其中,所述各自的充电时间的各自的信息分别是所述各自的其他比较器输出各自的比较结果的时刻的各自的指示。
6.根据权利要求5所述的系统,其中,时间数字转换器包括:计数器,被配置为生成计数输出,
转换为数字值取决于:计数器在与所述比较器输出比较结果的时刻对应的时间的相应计数输出,并且
转换为所述各自的数字值分别取决于:计数器在与所述各自的其他比较器分别输出各自的比较结果的时刻对应的时间的相应计数输出。
7.根据权利要求6所述的系统,
其中,所述比较器被配置为:响应于所述电容器的电压满足参考电压,输出比较结果,并且
其中,所述各自的其他比较器各自被配置为:响应于所述一条或多条其他输出线的各自的其他电容器的各自的电压满足参考电压,分别输出各自的比较结果。
8.根据权利要求4所述的系统,
其中,所述比较器被配置为:响应于所述电容器的电压满足参考电压,输出比较结果,并且
其中,所述各自的其他比较器各自被配置为:响应于所述一条或多条其他输出线的各自的其他电容器的各自的电压满足参考电压,分别输出各自的比较结果。
9.根据权利要求3所述的系统,包括计算装置,计算装置包括所述乘法器-累加器电路,其中,所述多个输入信号是所述乘法器-累加器系统的神经网络层的输入,作为输入的位或者作为各个输入的多位状态,并且所述各自的电阻和其他电阻表示神经网络层的至少一个参数。
10.根据权利要求2所述的系统,其中,所述多个输入信号被所述乘法器-累加器电路接收,作为分别提供给所述乘法器-累加器电路的多条输入线的多个输入电压信号,
其中,作为所述多条输入线的第一输入线,与所述多个输入信号中的一个对应的电压被提供给第一输出线的所述多个电阻器中的一个,并且提供给所述一条或多条其他输出线的各自的多个电阻器中的一个,并且
其中,作为所述多条输入线的第二输入线,与所述多个输入信号中的不同的一个对应的电压被提供给第一输出线的所述多个电阻器中的不同的一个,并且提供给所述一条或多条其他输出线的各自的多个电阻器中的不同的一个。
11.根据权利要求1所述的系统,其中,所述乘法器-累加器电路还包括:
比较器,连接到所述多个电阻器和所述电容器并且被配置为:输出通过将与所述电容器中的电荷的量对应的目标电压与参考电压进行比较而获得的比较结果,
其中,时间数字转换器被配置为:基于所述比较器的比较结果执行转换。
12.根据权利要求11所述的系统,其中,所述电容器的充电时间的信息包括指示输出比较结果的时刻的信息。
13.根据权利要求12所述的系统,其中,所述比较器被配置为:响应于随着所述电容器根据所述多个输入信号中的一个或多个被充电而目标电压超过参考电压,输出比较结果。
14.根据权利要求1所述的系统,其中,所述多个输入信号被所述乘法器-累加器电路接收,作为分别提供给所述乘法器-累加器电路的多条输入线的多个输入电压信号。
15.根据权利要求1所述的系统,其中,所述多个电阻器彼此并联连接,并且
所述多个电阻器中的每个的一端被配置为通过开关来接收电压,并且所述多个电阻器中的每个的另一端连接到所述电容器和比较器,其中,所述电容器的充电时间的信息取决于所述比较器的操作。
16.根据权利要求1所述的系统,其中,所述多个电阻器中的一个或多个电阻器形成复合电阻,并且
时间数字转换器被配置为:将充电时间的信息转换为数字值,其中,所述电容器的充电时间取决于复合电阻和所述电容器的电容的组合。
17.根据权利要求1所述的系统,
其中,所述多个电阻器和所述电容器被配置为第一输出线,并且
其中,所述电容器的充电时间的信息是从接收到所述多个输入信号的开始时刻到输出第一输出线的比较结果的输出时刻已经流逝的时间。
18.根据权利要求17所述的系统,其中,时间数字转换器包括:
单个全局计数器,被配置为输出指示从开始时刻起已经流逝的时间的值;和
参考器,被配置为在输出时刻参考单个全局计数器的输出值。
19.根据权利要求18所述的系统,其中
所述多个电阻器和所述电容器被配置为所述乘法器-累加器电路的多条输出线的第一输出线,第一输出线还包括比较器以提供电容器的充电时间的信息,
所述多条输出线的一条或多条其他输出线各自分别包括各自的多个电阻器和各自的其他电容器,所述多个电阻器具有各自的电阻,其他输出线中的每条包括各自的其他比较器,所述各自的其他比较器分别提供所述各自的其他电容器的充电时间的信息,
参考器包括:保持电路和多个其他保持电路,所述保持电路被配置为参考所述比较器的比较结果,并且所述多个其他保持电路被配置为分别参考各自的其他比较器的其他比较结果,并且
所述保持电路和所述多个其他保持电路中的每个被配置为:在与参考的比较结果和分别参考的其他比较结果对应的时刻分别参考单个全局计数器的输出值。
20.根据权利要求19所述的系统,其中,所述保持电路和所述多个其他保持电路中的每个被配置为触发器电路。
21.根据权利要求1、14-17中的任意一项所述的系统,其中,所述各自的电阻设置为:分别表示连接所述乘法器-累加器系统的神经网络中的多个节点的边的连接权重。
22.根据权利要求1所述的系统,其中,所述多个电阻器和电容器被配置为多条输出线的第一输出线,
其中,所述多条输出线中的一条或多条其他输出线各自分别包括各自的多个电阻器和各自的其他电容器,所述多个电阻器具有各自的电阻,并且
其中,所述乘法器-累加器电路还包括:输出级,被配置为输出映射到由时间数字转换器生成的数字值的各个值作为所述多条输出线中的每条的输出值。
23.根据权利要求1、14-16中的任意一项所述的系统,
其中,所述多个电阻器和所述电容器被配置为第一输出线,并且
其中,在所述乘法器-累加器电路的所有输出线针对多个输入信号输出时间数字转换器的所有数字输出值之后,所述电容器放电到阈值电压或更低,直到随后的所述多个输入信号被接收到。
24.根据权利要求1、14-17中的任意一项所述的系统,其中,响应于与所述多个输入信号的接收对应的开始信号,时间数字转换器用于转换的单个全局计数器的计数被重置。
25.根据权利要求1、14-17中的任意一项所述的系统,其中,响应于开始信号,与由包括所述多个输入信号的输入数据指示的各个输入线对应的所述多个电阻器的对应的电阻器被施加所述多个输入信号中的每个,并且
时间数字转换器被配置为:响应于开始信号,开始对已经流逝的时间进行计数。
26.根据权利要求1、14、16-17中的任意一项所述的系统,其中,所述乘法器-累加器电路还包括:
开关,连接到所述多个电阻器中的选择的一个电阻器并且被配置为:响应于包括所述多个输入信号的输入数据指示包括所述选择的一个电阻器的多条输入线的选择的输入线,在接收到开始信号时,将根据所述多个输入信号的输入信号的输入电压信号传送到所述选择的一个电阻器。
27.根据权利要求1、15-17中的任意一项所述的系统,其中,所述多个输入信号分别提供给所述乘法器-累加器电路的多条输入线,所述多条输入线各自包括所述多个电阻器中的相应的电阻器,并且
其中,所述乘法器-累加器电路还包括:
开关,分别连接到所述多个电阻器中的每个的一端,
其中,开关被配置为:响应于所述多个输入信号的相应的输入信号是闭合信号,将电源电压传送到相应的电阻器,并且被配置为:响应于相应的输入信号是断开信号,断开相应的电阻器的一端。
28.根据权利要求27所述的系统,其中,开关中的每个是金属氧化物半导体场效应晶体管,相应的输入信号连接到金属氧化物半导体场效应晶体管的栅极。
29.根据权利要求1、14-17中的任意一项所述的系统,其中,所述乘法器-累加器电路还包括:
开关,连接到所述多个电阻器中的选择的一个电阻器并且被配置为:在所述电容器的充电时段期间响应于所述多个输入信号的输入信号,将电源电压施加到所述选择的一个电阻器。
30.根据权利要求29所述的系统,其中,开关被配置为:在所述电容器的放电时段期间响应于输入信号,将复位电压施加到所述选择的一个电阻器。
31.根据权利要求1所述的系统,其中,所述乘法器-累加器电路还包括比较器,所述比较器被配置为:在所述电容器通过电源电压利用电荷被充电时响应于所述电容器的目标电压超过第一参考电压而输出比较结果,并且被配置为:在电荷通过复位电压从电容器释放时响应于目标电压小于第二参考电压而输出另一比较结果,其中,目标电压对应于电荷。
32.根据权利要求1所述的系统,其中,所述系统包括计算装置,并且所述乘法器-累加器电路包括在计算装置中。
33.一种乘法器-累加器计算装置,包括:
一个或多个乘法器-累加器电路,分别包括:
存储器阵列,包括分别与多条输出线相交的多条输入线,其中,输出线中的每条包括各自的电容器,电容器被配置为:响应于输入信号分别提供给所述多条输入线中的两条或更多条而被充电或放电;和
时间数字转换器,包括单个全局计数器,单个全局计数器被配置为:生成指示从开始时刻起已经流逝的时间的各个输出值,时间数字转换器被配置为:在针对充电或放电与所述各自的电容器的各自的充电或放电时间对应的时间,从各自的输出值确定选择输出,并且将确定的选择输出中的每个转换为乘法器-累加器电路的针对输出线的各个数字值结果。
34.根据权利要求33所述的系统,其中,输入信号是计算装置的神经网络的神经网络层的各个输入,作为输入的位或者作为各个输入的多位状态。
35.一种通过乘法器-累加器电路执行的计算方法,所述计算方法包括:
接收输入信号;
根据响应于输入信号而施加到多个电阻器的对应的电压,利用电荷对连接到所述多个电阻器的电容器进行充电;和
根据输入信号、所述多个电阻器和电容器,将电容器的充电时间转换为数字值。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2019-0109173 | 2019-09-03 | ||
KR20190109173 | 2019-09-03 | ||
KR10-2020-0046244 | 2020-04-16 | ||
KR1020200046244A KR20210028063A (ko) | 2019-09-03 | 2020-04-16 | 곱셉 누적기 회로를 이용한 컴퓨팅 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112445456A true CN112445456A (zh) | 2021-03-05 |
Family
ID=72322311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010812126.4A Pending CN112445456A (zh) | 2019-09-03 | 2020-08-13 | 使用乘法器-累加器电路的系统、计算装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11573792B2 (zh) |
EP (1) | EP3789870B1 (zh) |
CN (1) | CN112445456A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113741857A (zh) * | 2021-07-27 | 2021-12-03 | 北京大学 | 一种乘累加运算电路 |
CN115189447A (zh) * | 2022-08-02 | 2022-10-14 | 深圳市诚芯微科技股份有限公司 | 一种采用数字控制方式的充电电路及充电控制方法 |
WO2023056778A1 (zh) * | 2021-10-08 | 2023-04-13 | 上海科技大学 | 可用于人工智能物联网的高能效二值神经网络加速器 |
TWI847132B (zh) * | 2021-05-07 | 2024-07-01 | 開曼群島商臉萌有限公司 | 一種矩陣乘法電路模組及方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210158698A (ko) | 2020-06-24 | 2021-12-31 | 삼성전자주식회사 | 회로를 이용하여 소정의 연산을 수행하는 장치 및 방법 |
KR20220004430A (ko) * | 2020-07-03 | 2022-01-11 | 삼성전자주식회사 | 인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치 |
US20220027130A1 (en) * | 2020-07-27 | 2022-01-27 | Robert Bosch Gmbh | Time domain ratiometric readout interfaces for analog mixed-signal in memory compute crossbar networks |
KR20220020097A (ko) | 2020-08-11 | 2022-02-18 | 삼성전자주식회사 | 프로세싱 장치 및 이를 포함하는 전자 시스템 |
US11809838B2 (en) * | 2020-09-08 | 2023-11-07 | Macronix International Co., Ltd. | Memory device and operation method thereof |
US11575853B2 (en) * | 2020-09-29 | 2023-02-07 | Shenzhen GOODIX Technology Co., Ltd. | Image sensor having high resolution analog to digital converter |
US12057162B2 (en) | 2022-09-02 | 2024-08-06 | Macronix International Co., Ltd. | Memory device for in-memory computing, computing method and computing cell thereof |
TWI837802B (zh) * | 2022-09-02 | 2024-04-01 | 旺宏電子股份有限公司 | 用於記憶體內運算之記憶體裝置、其運算方法及其運算晶胞 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4620943B2 (ja) | 2003-10-16 | 2011-01-26 | キヤノン株式会社 | 積和演算回路及びその方法 |
KR20130056081A (ko) | 2011-11-21 | 2013-05-29 | 삼성전기주식회사 | 접촉 감지 장치 및 접촉 감지 방법 |
JP5885719B2 (ja) | 2013-09-09 | 2016-03-15 | 株式会社東芝 | 識別装置および演算装置 |
JP6846297B2 (ja) | 2016-06-20 | 2021-03-24 | キオクシア株式会社 | 演算装置 |
JP6876220B2 (ja) | 2016-08-19 | 2021-05-26 | ソニーグループ株式会社 | 積和演算装置 |
US11315009B2 (en) | 2017-03-03 | 2022-04-26 | Hewlett Packard Enterprise Development Lp | Analog multiplier-accumulators |
US11263522B2 (en) | 2017-09-08 | 2022-03-01 | Analog Devices, Inc. | Analog switched-capacitor neural network |
CN109344964B (zh) | 2018-08-08 | 2020-12-29 | 东南大学 | 一种适用于神经网络的乘加计算方法和计算电路 |
US11048434B2 (en) * | 2018-09-28 | 2021-06-29 | Intel Corporation | Compute in memory circuits with time-to-digital computation |
US20190042949A1 (en) | 2018-09-28 | 2019-02-07 | Intel Corporation | Methodology for porting an ideal software implementation of a neural network to a compute-in-memory circuit |
US11061646B2 (en) | 2018-09-28 | 2021-07-13 | Intel Corporation | Compute in memory circuits with multi-Vdd arrays and/or analog multipliers |
-
2020
- 2020-08-07 US US16/987,863 patent/US11573792B2/en active Active
- 2020-08-13 CN CN202010812126.4A patent/CN112445456A/zh active Pending
- 2020-09-01 EP EP20193761.2A patent/EP3789870B1/en active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI847132B (zh) * | 2021-05-07 | 2024-07-01 | 開曼群島商臉萌有限公司 | 一種矩陣乘法電路模組及方法 |
CN113741857A (zh) * | 2021-07-27 | 2021-12-03 | 北京大学 | 一种乘累加运算电路 |
WO2023056778A1 (zh) * | 2021-10-08 | 2023-04-13 | 上海科技大学 | 可用于人工智能物联网的高能效二值神经网络加速器 |
US11762700B2 (en) | 2021-10-08 | 2023-09-19 | Shanghaitech University | High-energy-efficiency binary neural network accelerator applicable to artificial intelligence internet of things |
CN115189447A (zh) * | 2022-08-02 | 2022-10-14 | 深圳市诚芯微科技股份有限公司 | 一种采用数字控制方式的充电电路及充电控制方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3789870A1 (en) | 2021-03-10 |
EP3789870B1 (en) | 2023-12-13 |
US20210064367A1 (en) | 2021-03-04 |
US11573792B2 (en) | 2023-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112445456A (zh) | 使用乘法器-累加器电路的系统、计算装置和方法 | |
US10853721B2 (en) | Multiplier accumulator, network unit, and network apparatus | |
CN111837145B (zh) | 用于将矩阵计算映射到矩阵乘法加速器的系统和方法 | |
KR102653822B1 (ko) | 혼성 신호 컴퓨팅 시스템 및 방법 | |
KR102542532B1 (ko) | 혼합-신호 연산 시스템 및 방법 | |
CN106796259A (zh) | 电容检测电路及其控制方法 | |
EP1089436B1 (en) | Current-mode spike-based analog-to-digital conversion | |
EP2776988A1 (en) | Method and apparatus for using memory in probabilistic manner to store synaptic weights of neural network | |
US11011216B1 (en) | Compute-in-memory dynamic random access memory | |
JP2021535532A (ja) | メモリ操作用のイベントカウンタ | |
US10777253B1 (en) | Memory array for processing an N-bit word | |
KR20210028063A (ko) | 곱셉 누적기 회로를 이용한 컴퓨팅 장치 및 방법 | |
CN117037877A (zh) | 基于NOR Flash的存内计算芯片及其控制方法 | |
CN113835676B (zh) | 使用电路执行运算的方法和设备 | |
CN115312090A (zh) | 一种存内计算电路及方法 | |
KR20180089701A (ko) | 내부 연산 구조를 포함하는 mtj 메모리 장치 | |
CN217933180U (zh) | 一种存内计算电路 | |
US20240211532A1 (en) | Hardware for parallel layer-norm compute | |
TWI845270B (zh) | 記憶體內計算記憶體裝置及記憶體內計算方法 | |
EP3955169A1 (en) | Method and apparatus for in-memory convolutional computation | |
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 | |
JP2023029223A (ja) | インメモリコンピューティング装置及び方法 | |
CN118696294A (zh) | 迭代混合矩阵乘法器 | |
KR20240109086A (ko) | 뉴럴 네트워크 회로 및 이의 동작 방법 |
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 |