CN107636640A - 具有求反指示符的点积引擎 - Google Patents
具有求反指示符的点积引擎 Download PDFInfo
- Publication number
- CN107636640A CN107636640A CN201680031688.7A CN201680031688A CN107636640A CN 107636640 A CN107636640 A CN 107636640A CN 201680031688 A CN201680031688 A CN 201680031688A CN 107636640 A CN107636640 A CN 107636640A
- Authority
- CN
- China
- Prior art keywords
- input
- dot
- digital
- storage
- value
- 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.)
- Granted
Links
- 239000013598 vector Substances 0.000 claims abstract description 54
- 238000003860 storage Methods 0.000 claims abstract description 41
- 238000003491 array Methods 0.000 claims abstract description 9
- 238000000034 method Methods 0.000 claims description 26
- 238000004088 simulation Methods 0.000 claims description 6
- 238000000151 deposition Methods 0.000 claims 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 8
- 238000013527 convolutional neural network Methods 0.000 description 7
- 238000006073 displacement reaction Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 4
- 210000002569 neuron Anatomy 0.000 description 4
- 210000004027 cell Anatomy 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 210000000225 synapse Anatomy 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000011065 in-situ storage Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000011282 treatment Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 239000000686 essence Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06J—HYBRID COMPUTING ARRANGEMENTS
- G06J1/00—Hybrid computing arrangements
-
- 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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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
- 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
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M3/00—Conversion of analogue values to or from differential modulation
- H03M3/30—Delta-sigma modulation
- H03M3/50—Digital/analogue converters using delta-sigma modulation as an intermediate step
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Algebra (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computer Hardware Design (AREA)
- Automation & Control Theory (AREA)
- Fuzzy Systems (AREA)
- Analogue/Digital Conversion (AREA)
- Semiconductor Memories (AREA)
Abstract
本文公开的示例包括点积引擎,其包括电阻式存储器阵列,用于接收输入向量,对输入向量和存储在存储器阵列中的存储向量执行点积运算,并输出表示点积运算的结果的模拟信号。点积引擎包括存储的求反指示符,用于指示存储向量的元素是否已被求反,以及数字电路,用于基于模拟信号和存储的求反指示符来生成数字点积结果值。
Description
背景技术
机器学习技术最近显著增长,它们经常用于移动应用,以及后端数据中心的数据分析。因此,针对机器学习技术进行了优化的架构,例如卷积神经网络(CNN)和更一般的深层神经网络(DNN),可以具有很大的影响。机器学习技术由于高度的计算并行性而适合加速。机器学习技术,例如涉及卷积CNN和DNN的技术通常涉及大量的多重累加(即,点积)运算。CNN和DNN中的主要数据结构是定义每个神经元层的突触权重矩阵。
附图说明
图1是示出根据一个示例的忆阻器点积引擎的示意图。
图2是示出根据一个示例的使用图1所示的点积引擎的位线来执行积模拟求和运算的示意图。
图3是示出根据一个示例的执行数据编码的第一步骤的忆阻器点积引擎的元件的框图。
图4是示出根据一个示例的执行数据编码的第二步骤的图3所示的忆阻器点积引擎的元件的框图。
图5是示出根据一个示例的使用电阻式存储器阵列生成数字点积结果的方法的流程图。
具体实施方式
在下面的详细描述中,参考形成其一部分的附图,并且通过举例说明可以实践本公开的具体示例。应当理解,在不脱离本公开的范围的情况下,可以利用其他示例并且可以进行结构或逻辑上的改变。因此,以下详细描述不被认为是限制性的,并且本公开的范围由所附权利要求限定。应当理解,除非另有特别说明,本文所述的各种示例的特征可以部分或全部地彼此组合。
本文公开的一些示例涉及用于点积计算的原位处理方法,其中忆阻器交叉阵列不仅存储输入权重,例如卷积神经网络(CNN)或深层神经网络(DNN)的突触权重,而且还用于以模拟方式执行点积运算。因此,这是原位计算的一个示例。使用电阻式存储器的交叉阵列在并行执行许多点积运算时是有效的。这样的点积引擎在本质上是模拟的,实质上利用Kirchoff定律产生作为积的求和的位线电流。
在忆阻器点积引擎中,三个组分主导总功率:(1)点积引擎的初始化;(2)模数转换器(ADC);和(3)数模转换器(DAC)。如果初始化点积引擎的成本在多次计算中进行摊销,并且通过对输入操作数向量使用1位信号来消除连接到每一行的DAC,则ADC是最高的开销组分。
ADC消耗的能量是ADC的精度(即ADC的数字输出中的位数)的函数。本文公开的一些示例使用适于模拟计算并且可以减少忆阻器点积引擎中的高的模数转换开销的数据编码技术。一些示例使用数据编码将ADC精度提高一位。这转换为忆阻器阵列的高度增加了两倍,或者使每个单元多一个位而不会损失精度,或者将ADC规范放宽一位(例如,使用6位ADC而不是7位ADC)。结果,计算效率提高。
图1是示出根据一个示例的忆阻器点积引擎100的示意图。点积引擎100包括多个位线102、多个字线104、多个电阻式存储器单元106、多个DAC 108、多个采样保持(S&H)电路110、ADC122、移位和加法电路114以及求反指示器120。在一些示例中,S&H电路110可以是ADC 112的一部分。如图1所示,每个位线102经由电阻式存储器单元106连接到每个字线104。数字输入值被提供给DAC 108,DAC 108将数字输入值转换成在字线104上输出的相对应的模拟电压电平。假设第一列中的单元106被编程为电阻R1,R2,...,Rn。这些单元106的电导是G1,G2,...,Gn,它们是它们的电阻的倒数。如果电压V1,V2,...,Vn分别施加到每个字线104,则单元i基于Kirchoff定律将电流Vi/Ri或Vi×Gi传递到位线102中。在图2的描述之后将在下文进一步详细描述图1。
图2是示出了根据一个示例的使用图1所示的点积引擎100的位线来执行积模拟求和运算的示意图。如图2所示,从位线102出现的总电流是列中每个单元106传递的电流(I1+I2)之和。该电流I表示点积运算的值,其中一个向量是每个字线104处的输入电压的集合(即,V1和V2),第二向量是列中的单元电导的集合G1和G2,即I=V×G=V1·G1+V2·G2。
输入电压施加到所有行。从每个位线102出现的电流因此可以表示多个CNN输出滤波器中的神经元的输出,其中每个神经元被馈送相同的输入,但是每个神经元具有不同的突触权重集(被编码为该列中的单元106的电导)。图1所示的点积引擎100实现非常高的并行性——一个m×n交叉阵列可以在单个步骤中针对n个不同神经元的m入口向量执行点积,即,在单个步骤中执行向量矩阵乘法。
每个位线102耦合到采样保持电路110中的一个,采样保持电路110接收位线电流并将其馈送到共享ADC 112。由ADC122将模拟电流转换为数字值促成将点积结果传送给其他数字单元。移位和加法电路114可执行对数字点积结果的附加处理。
为了在点积引擎中执行无损计算,ADC精度(即,对于每个样本从ADC返回的位数)应该是DAC中的电平数量、忆阻器阵列的高度和每个单元的位数的函数。例如,使用7位ADC,大小为128x128的忆阻器阵列可以使用二进制DAC对于每个单元存储一位。一般来说,ADC精度由以下等式I给出:
等式I
ADC精度=log(H)+log(dacbits)+pbc
其中:
H=忆阻器阵列的高度;
dacbits=每个DAC的位数;以及
pbc=每个单元的位数。
此外,ADC功率、面积和带宽与其精度具有超线性关系。因此,降低ADC输出精度的任何努力将大大提高计算效率。如果每个单元的位数pbc或每个DAC的位数dacbits或两者为1,则等式I将略有不同,如下面的等式I-2所示,其中等式I中的ADC精度表示与等式I-2中的ADCbits相同的含义:
等式I-2
其中:
NR=忆阻器阵列的高度;
DACb=每个DAC的位数;以及
Mb=每个单元的位数。
在下文中,将示出编码方法可以将ADC精度提高一位。假设一个H×W(H=2h)忆阻器阵列,每个DAC有d位,每个单元有c位。为了执行精确的计算,假设ADC精度为h+d+c。此外,假设存储在一列中的权重和忆阻器阵列的输入分别是和该列中的计算由以下等式II表示:
等式II
在等式II中,sum是列的输出,并在位线上显示为电流。sum的上限由以下等式III给出:
等式III
sum的最大值具有h+d+c位,并且当所有输入和权重是它们的最大值时实现。它显示为通过ADC的最大电流Jmax。如果则ADC输出的最高有效位(MSB)位是1。
根据一些示例的编码方法应用以下两个步骤:(1)它确保这强制MSB为0并且强制最大电流为以及(2)通过将相应的单元电阻减半,所有权重乘以2。这就像左移操作一样。因此,最大电流将再次为Imax。此外,它忽略先前步骤的始终为零的MSB,并在ADC中再提供一个LSB位。
上述第一步依赖于以下引理:
引理:如果其中那么,或者或为真,其中
证明:假设min=MIN(sum,sum),则我们有:
因此,为了实现第一步骤,如果求和导致MSB为1,则所有权重被求反(例如,逻辑1被改变为逻辑0,并且逻辑0被改变为逻辑1)。编码方法保持每列一位表示是存储原始权重还是存储求反权重,并且这些位在图1中由求反指示符120表示。这些求反指示符位保持在求反表中。
通过这两个步骤,ADC精度增加一位。然而,如果给定列中权重被求反,则输出将不会是预期的。可以根据具有求反权重的列的输出重建正确的输出,如下面的等式IV所示:
等式IV
换句话说,如果输入值的总和可用,则可以导出原始和。要找到输入值的总和,可以将更多的一列或多列添加到忆阻器阵列中,该列中的所有权重均等于1。因此,此列的输出将为输入的总和。在将任何模拟值转换为数字之前,首先将该列的值转换并存储在输入和寄存器中。然后,对于其他列,当ADC执行转换时,将检查求反表中与该列相关联的位,并且如果列以求反格式存储,则该方法从输入和寄存器中减去ADC输出以求得结果。
与该方法相关的开销是W位求反表,其可以使用忆阻器技术、(h+d+c)位输入和寄存器、以及(h+d+c)位减法电路来实现。这种方法的性能开销等于将一列从模拟转换为数字的时间。注意,由于ADC电路很大,并且ADC通常在多个列之间共享,如果共享一个ADC的列数为N,则性能方面的开销为1/N。在性能开销不可接受或不可能再添加更多一列的情况下,可以在数字阶段确定输入的总和。这将在将数字馈送入忆阻器阵列之前的一个阶段发生。它将为流水线添加一个阶段,并保留吞吐量。它还将为方法开销添加H 1位全加器。然而,该数字阶段可以在许多阵列之间共享,因为数字阶段的速度通常比忆阻器阵列快。
图3是示出根据一个示例执行数据编码的第一步骤的忆阻器点积引擎300的元件的框图。点积引擎300包括忆阻器阵列302、6位ADC 308、加法器电路310、多路复用器312、输入和寄存器314、以及移位和减法电路316。在所示示例中,两个附加列的单元304(0)(列[0])和304(1)(列[1])已添加到128x128数组中以形成实现数据编码的130x128忆阻器阵列302。如上所述,数据编码方法涉及计算电流输入值ai的和。如图3所示,输入向量306是128位向量,被分成包括位0到63的输入向量部分306(1)和包括位64到127的输入向量部分306(2)。
使用都存储全逻辑1的两个附加列304(0)和304(1)来完成电流输入值的总和的计算。输入向量部分306(1)乘以列304(0),并且结果被ADC 308转换为第一数字值。第一数字值被提供给加法器310,加法器310将第一数字值加到初始值零,并通过多路复用器312将结果存储在输入和寄存器314中。接下来,将输入向量部分306(2)乘以列304(1),并通过ADC308将结果转换为第二数字值。将第二数字值提供给加法器310,加法器310将第二数字值加到第一数字值,并通过多路复用器312将结果存储在输入和寄存器314中。然后将输入和寄存器314中的值提供给移位和减法电路316,该移位和减法电路316实现以下等式V所示的运算:
等式V
ISR←2cxISR-ISR
如等式V所示,移位和减法电路316将输入和寄存器314中的电流值(ISR)乘以2c,其中c是每个单元的位数;从乘法结果中减去电流值ISR;并且经由多路复用器312将结果存储在输入和寄存器314中。此时,输入和寄存器314存储输入值之和的正确值。
图4是示出根据一个示例的执行数据编码的第二步骤的图3所示的忆阻器点积引擎300的元件的框图。如图4所示,除了图3所示的元件之外,点积引擎300还包括求反向量404、减法电路406和多路复用器408。
如果阵列302的任何给定列中的权重集体较大(即,具有最大输入,积和产生MSB1),则该列的权重以它们的求反或翻转形式存储。这导致积和的MSB为0,并允许将ADC大小降低一位。该编码方法每列存储一位,指示是存储原始权重还是存储求反的权重。这些位在图4中由求反向量404表示。
ADC 308将数字值输出到多路复用器408和减法电路406。每个数字值表示阵列302的给定列(例如列304(i))的积和。减法电路406从存储在输入和寄存器314中的电流值中减去接收到的数字值,并将结果输出到多路复用器408。对于阵列302的任何给定列,多路复用器408将输出ADC 308提供的数字值或由减法电路406提供的数字值,这取决于在求反向量404中对应于该列的位的值。因此,如果给定列的求反向量位指示列权重尚未被求反且为其原始形式,则多路复用器408将输出由ADC 308直接提供的数字值。如果列的求反向量位指示列权重已经被求反,则多路复用器408将输出由减法电路406提供的数字值。因此,无论给定列302的权重是否被求反,多路复用器408输出表示列的原始(非求反)权重的积和的正确值。
可以利用本文描述的编码方法来降低ADC分辨率、增加单元密度、或增加忆阻器阵列中的行。由于ADC功率是整体功耗的重要因素,并且由于某些ADC开销随分辨率呈指数级增长,所以ADC分辨率降低1%对整体效率的影响是显著的。
本公开的一个示例涉及点积引擎,其包括电阻式存储器阵列,用于接收输入向量,对输入向量和存储在存储器阵列中的存储向量执行点积运算,以及输出表示点积运算结果的模拟信号。点积引擎包括存储的求反指示符,用于指示存储向量的元素是否被求反,以及数字电路,用于基于模拟信号和存储的求反指示符生成数字点积结果值。
点积引擎中的电阻式存储器阵列可以存储具有全逻辑1的至少一列,并且对输入向量和至少一列中的逻辑1执行点积运算,以生成表示输入值之和的模拟信号。数字电路可以包括模数转换器,用于将表示输入值之和的模拟信号转换为数字输入和值,并将表示点积运算结果的模拟信号转换为数字点积结果值的第一版本。数字电路还可以包括输入和寄存器,用于存储基于数字输入和值的数字电流输入和,以及减法电路,用于从存储在该输入和寄存器中的数字电流输入和中减去数字点积结果值的第一版本以生成数字点积结果值的第二版本。数字电路还可以包括多路复用器,用于基于存储的求反指示符选择性地输出数字点积结果值的第一版本或第二版本中的一个。存储的求反指示符可以是作为求反向量的一部分存储的1位值,其对于存储器阵列的每列指示是否已经对该列中的元素求反。电阻式存储器阵列可以是忆阻器阵列。
本公开的另一示例涉及点积法。图5是示出根据一个示例的使用电阻式存储器阵列生成数字点积结果的方法500的流程图。在一些示例中,点积引擎300被配置为执行方法500。在方法500中的502处,向点积引擎的电阻式存储器阵列提供输入向量。在504处,对输入向量和存储在存储器阵列中的存储向量执行模拟点乘积运算,以由存储器阵列生成表示点积运算结果的模拟信号。在506,基于模拟信号和存储的求反指示符生成数字点积结果值,该求反指示符指示所存储的向量的元素是否已被求反。
方法500还可以包括将至少一个逻辑1向量存储在电阻存储器中;以及对所述输入向量和所述至少一个逻辑1向量执行模拟点积运算以生成表示输入值之和的模拟信号。方法500还可以包括基于表示输入值之和的模拟信号来生成电流数字输入和;并将表示点积运算结果的模拟信号转换成数字点积结果值的第一版本。方法500还可以包括从电流数字输入和中减去数字点积结果值的第一版本以生成数字点积结果值的第二版本;并且基于所存储的求反指示符选择性地输出数字点积结果值的第一版本或第二版本中的一个。
本公开的另一示例涉及忆阻器点积引擎,其包括忆阻器阵列,用于接收输入向量,对输入向量和存储在忆阻器阵列中的存储向量执行点积运算,以及输出表示点积运算结果的模拟信号。忆阻器点积引擎包括一个寄存器,用于存储基于输入向量的元素的总和的输入和值,以及数字电路,用于基于模拟信号、输入和值以及指示所存储的指示存储向量的元素是否已被求反的求反指示符来生成数字点积结果值。
忆阻器阵列可以对存储在阵列的至少一列中的输入向量和逻辑1执行点积运算,以生成表示输入值的和的模拟信号,并且存储在寄存器中的输入和值可以基于表示输入值之和的模拟信号来生成。
尽管在忆阻器技术的上下文中描述了本文公开的一些示例,但是可以使用另一种电阻式存储器技术来实现其他示例。
虽然本文已经示出和描述了具体示例,但是在不脱离本公开的范围的情况下,各种替代和/或等效实施方式可以替代所示和所描述的具体示例。本申请旨在涵盖本文讨论的具体示例的任何修改或变化。因此,本公开旨在仅由权利要求及其等同物来限制。
Claims (15)
1.一种点积引擎,包括:
电阻式存储器阵列,用于接收输入向量,对所述输入向量和存储在存储器阵列中的存储的向量执行点积运算,并输出表示所述点积运算的结果的模拟信号;
存储的求反指示符,用于指示所述存储的向量的元素是否已被求反;以及
数字电路,用于基于所述模拟信号和所述存储的求反指示符来生成数字点积结果值。
2.根据权利要求1所述的点积引擎,其中所述电阻式存储器阵列存储具有全逻辑1的至少一列。
3.根据权利要求2所述的点积引擎,其中所述电阻式存储器阵列对所述输入向量和所述至少一列中的逻辑1执行点积运算,以生成表示输入值之和的模拟信号。
4.根据权利要求3所述的点积引擎,其中所述数字电路包括:
模数转换器,用于将所述表示输入值之和的模拟信号转换为数字输入和值,并将表示所述点积运算的结果的模拟信号转换为所述数字点积结果值的第一版本。
5.根据权利要求4所述的点积引擎,其中所述数字电路还包括:
输入和寄存器,用于基于所述数字输入和值而存储数字电流输入和。
6.根据权利要求5所述的点积引擎,其中所述数字电路还包括:
减法电路,用于从存储在所述输入和寄存器中的所述数字电流输入和中减去所述数字点积结果值的第一版本,以生成所述数字点积结果值的第二版本。
7.根据权利要求6所述的点积引擎,其中所述数字电路还包括:
多路复用器,用于基于所述存储的求反指示符选择性地输出所述数字点积结果值的所述第一版本或所述第二版本中的一个。
8.根据权利要求1所述的点积引擎,其中所述存储的求反指示符是1位值,其被存储为求反向量的一部分,所述求反向量对于所述存储器阵列的每列指示所述列中的元素是否被求反。
9.根据权利要求1所述的点积引擎,其中所述电阻式存储器阵列是忆阻器阵列。
10.一种方法,包括:
向点积引擎的电阻式存储器阵列提供输入向量;
对所述输入向量和存储在存储器阵列中的存储的向量执行模拟点积运算,以由所述存储器阵列生成表示所述点积运算的结果的模拟信号;以及
基于所述模拟信号以及指示所述存储的向量的元素是否已被求反的存储的求反指示符生成数字点积结果值。
11.根据权利要求10所述的方法,还包括:
在电阻式存储器中存储具有逻辑1的至少一个向量;以及
对所述输入向量和所述具有逻辑1的至少一个向量执行模拟点积运算,以生成表示输入值之和的模拟信号。
12.根据权利要求11所述的方法,还包括:
基于所述表示输入值之和的模拟信号生成电流数字输入和;以及
将表示所述点积运算的结果的模拟信号转换为所述数字点积结果值的第一版本。
13.根据权利要求12所述的方法,还包括:
从所述电流数字输入和中减去所述数字点积结果值的所述第一版本以生成所述数字点积结果值的第二版本;以及
基于所述存储的求反指示符选择性地输出所述数字点积结果值的所述第一版本或所述第二版本中的一个。
14.一种忆阻器点积引擎,包括:
忆阻器阵列,用于接收输入向量,对所述输入向量和存储在所述忆阻器阵列中的存储的向量执行点积运算,并输出表示所述点积运算的结果的模拟信号;
寄存器,用于基于所述输入向量的元素的总和来存储输入和值;以及
数字电路,用于基于所述模拟信号、所述输入和值以及存储的求反指示符来生成数字点积结果值,所述存储的求反指示符指示所述存储的向量的元素是否已被求反。
15.根据权利要求14所述的忆阻器点积引擎,其中所述忆阻器阵列对所述输入向量以及存储在所述阵列的至少一列中的逻辑1执行点积运算,以生成表示输入值之和的模拟信号,并且其中基于表示所述输入值之和的模拟信号来生成存储在所述寄存器中的输入和值。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2016/015850 WO2017131792A1 (en) | 2016-01-30 | 2016-01-30 | Dot product engine with negation indicator |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107636640A true CN107636640A (zh) | 2018-01-26 |
CN107636640B CN107636640B (zh) | 2021-11-23 |
Family
ID=59399089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680031688.7A Active CN107636640B (zh) | 2016-01-30 | 2016-01-30 | 点积引擎、忆阻器点积引擎以及用于计算点积的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10664271B2 (zh) |
EP (1) | EP3289477B1 (zh) |
CN (1) | CN107636640B (zh) |
WO (1) | WO2017131792A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110097909A (zh) * | 2018-01-30 | 2019-08-06 | 慧与发展有限责任合伙企业 | 忆阻点积引擎虚拟化 |
CN111755062A (zh) * | 2019-03-26 | 2020-10-09 | 慧与发展有限责任合伙企业 | 自修复点积引擎 |
US11294763B2 (en) | 2018-08-28 | 2022-04-05 | Hewlett Packard Enterprise Development Lp | Determining significance levels of error values in processes that include multiple layers |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11270769B2 (en) | 2016-01-11 | 2022-03-08 | Crossbar, Inc. | Network router device with hardware-implemented lookups including two-terminal non-volatile memory |
EP3265907B1 (en) | 2016-03-31 | 2019-08-21 | Hewlett-Packard Enterprise Development LP | Data processing using resistive memory arrays |
CN112214244A (zh) * | 2016-08-05 | 2021-01-12 | 中科寒武纪科技股份有限公司 | 一种运算装置及其操作方法 |
US11315009B2 (en) * | 2017-03-03 | 2022-04-26 | Hewlett Packard Enterprise Development Lp | Analog multiplier-accumulators |
IT201700108281A1 (it) * | 2017-09-27 | 2019-03-27 | Milano Politecnico | "circuito di risoluzione di problemi matematici comprendente elementi resistivi." |
US11127460B2 (en) | 2017-09-29 | 2021-09-21 | Crossbar, Inc. | Resistive random access memory matrix multiplication structures and methods |
US10496374B2 (en) * | 2018-03-22 | 2019-12-03 | Hewlett Packard Enterprise Development Lp | Crossbar array operations using ALU modified signals |
WO2019212466A1 (en) | 2018-04-30 | 2019-11-07 | Hewlett Packard Enterprise Development Lp | Resistive and digital processing cores |
US10943652B2 (en) * | 2018-05-22 | 2021-03-09 | The Regents Of The University Of Michigan | Memory processing unit |
US10528643B1 (en) * | 2018-08-01 | 2020-01-07 | Sandisk Technologies Llc | Vector-matrix multiplication using non-volatile memory cells |
KR102556506B1 (ko) * | 2019-01-15 | 2023-07-19 | 한국전자통신연구원 | 뉴로모픽 연산 장치 및 그것의 동작 방법 |
US11194886B2 (en) * | 2019-05-09 | 2021-12-07 | Applied Materials, Inc. | Bit-ordered binary-weighted multiplier-accumulator |
US11270767B2 (en) | 2019-05-31 | 2022-03-08 | Crossbar, Inc. | Non-volatile memory bank with embedded inline computing logic |
US11354383B2 (en) * | 2019-09-27 | 2022-06-07 | Applied Materials, Inc | Successive bit-ordered binary-weighted multiplier-accumulator |
KR20210158698A (ko) * | 2020-06-24 | 2021-12-31 | 삼성전자주식회사 | 회로를 이용하여 소정의 연산을 수행하는 장치 및 방법 |
TWI777231B (zh) * | 2020-08-28 | 2022-09-11 | 國立中正大學 | 向量內積計算裝置 |
US11321050B1 (en) * | 2021-12-28 | 2022-05-03 | Aistartek HK limited | Method and system for analog computing with sub-binary radix weight representation |
WO2024003374A1 (en) | 2022-06-30 | 2024-01-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Fourier transformation technique |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03102567A (ja) * | 1989-09-18 | 1991-04-26 | Sony Corp | 行列乗算回路 |
CN1598757A (zh) * | 2004-09-02 | 2005-03-23 | 中国人民解放军国防科学技术大学 | 一种支持单指令多操作数的混合乘法器的设计方法 |
CN1707426A (zh) * | 2004-06-09 | 2005-12-14 | 上海华博科技(集团)有限公司 | 基于可配置的乘法器矩阵结构的操作数分配装置及其分配方法 |
US20070229111A1 (en) * | 2006-04-03 | 2007-10-04 | Blaise Laurent Mouttet | Programmable crossbar signal processor with rectification layer |
CN101369289A (zh) * | 2006-10-27 | 2009-02-18 | 国际商业机器公司 | 模拟数字电路设计的方法和模拟引擎 |
US7720160B1 (en) * | 2006-12-14 | 2010-05-18 | Maxim Integrated Products, Inc. | Phase noise shaping using sigma delta modulation in a timing recovery unit |
CN102520906A (zh) * | 2011-12-13 | 2012-06-27 | 中国科学院自动化研究所 | 支持定浮点可重构的向量长度可配置的向量点积累加网络 |
CN102812436A (zh) * | 2009-06-24 | 2012-12-05 | 德克萨斯系统大学董事会 | 用于低功率分支预测的方法、系统及计算机可访问的介质 |
US20130028004A1 (en) * | 2010-04-19 | 2013-01-31 | Gregory Stuart Snider | Refreshing memristive systems |
CN103778100A (zh) * | 2012-10-23 | 2014-05-07 | 亚德诺半导体技术公司 | 向量处理器的存储器互连网络体系结构 |
US20140172937A1 (en) * | 2012-12-19 | 2014-06-19 | United States Of America As Represented By The Secretary Of The Air Force | Apparatus for performing matrix vector multiplication approximation using crossbar arrays of resistive memory devices |
US8959136B1 (en) * | 2012-05-08 | 2015-02-17 | Altera Corporation | Matrix operations in an integrated circuit device |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060149804A1 (en) * | 2004-11-30 | 2006-07-06 | International Business Machines Corporation | Multiply-sum dot product instruction with mask and splat |
US20140195783A1 (en) * | 2011-12-29 | 2014-07-10 | Krishnan Karthikeyan | Dot product processors, methods, systems, and instructions |
US8749422B1 (en) | 2012-12-14 | 2014-06-10 | Charles Cullen Moore | Signal conversion using state sensitive device arrays |
CN103312331B (zh) | 2013-05-30 | 2016-04-13 | 电子科技大学 | 一种基于忆阻器的模数转换器 |
US9715655B2 (en) | 2013-12-18 | 2017-07-25 | The United States Of America As Represented By The Secretary Of The Air Force | Method and apparatus for performing close-loop programming of resistive memory devices in crossbar array based hardware circuits and systems |
US9489618B2 (en) * | 2014-05-27 | 2016-11-08 | Purdue Research Foudation | Electronic comparison systems |
JP6333477B2 (ja) * | 2014-10-23 | 2018-05-30 | ヒューレット パッカード エンタープライズ デベロップメント エル ピーHewlett Packard Enterprise Development LP | ドット積を求めるためのメムリスティブクロスバーアレイ |
US10262733B2 (en) * | 2014-10-29 | 2019-04-16 | Hewlett Packard Enterprise Development Lp | Memristive dot product engine for vector processing |
US10169297B2 (en) * | 2015-04-16 | 2019-01-01 | Hewlett Packard Enterprise Development Lp | Resistive memory arrays for performing multiply-accumulate operations |
-
2016
- 2016-01-30 WO PCT/US2016/015850 patent/WO2017131792A1/en active Application Filing
- 2016-01-30 US US16/073,650 patent/US10664271B2/en active Active
- 2016-01-30 EP EP16888520.0A patent/EP3289477B1/en active Active
- 2016-01-30 CN CN201680031688.7A patent/CN107636640B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03102567A (ja) * | 1989-09-18 | 1991-04-26 | Sony Corp | 行列乗算回路 |
CN1707426A (zh) * | 2004-06-09 | 2005-12-14 | 上海华博科技(集团)有限公司 | 基于可配置的乘法器矩阵结构的操作数分配装置及其分配方法 |
CN1598757A (zh) * | 2004-09-02 | 2005-03-23 | 中国人民解放军国防科学技术大学 | 一种支持单指令多操作数的混合乘法器的设计方法 |
US20070229111A1 (en) * | 2006-04-03 | 2007-10-04 | Blaise Laurent Mouttet | Programmable crossbar signal processor with rectification layer |
CN101369289A (zh) * | 2006-10-27 | 2009-02-18 | 国际商业机器公司 | 模拟数字电路设计的方法和模拟引擎 |
US7720160B1 (en) * | 2006-12-14 | 2010-05-18 | Maxim Integrated Products, Inc. | Phase noise shaping using sigma delta modulation in a timing recovery unit |
CN102812436A (zh) * | 2009-06-24 | 2012-12-05 | 德克萨斯系统大学董事会 | 用于低功率分支预测的方法、系统及计算机可访问的介质 |
US20130028004A1 (en) * | 2010-04-19 | 2013-01-31 | Gregory Stuart Snider | Refreshing memristive systems |
CN102520906A (zh) * | 2011-12-13 | 2012-06-27 | 中国科学院自动化研究所 | 支持定浮点可重构的向量长度可配置的向量点积累加网络 |
US8959136B1 (en) * | 2012-05-08 | 2015-02-17 | Altera Corporation | Matrix operations in an integrated circuit device |
CN103778100A (zh) * | 2012-10-23 | 2014-05-07 | 亚德诺半导体技术公司 | 向量处理器的存储器互连网络体系结构 |
US20140172937A1 (en) * | 2012-12-19 | 2014-06-19 | United States Of America As Represented By The Secretary Of The Air Force | Apparatus for performing matrix vector multiplication approximation using crossbar arrays of resistive memory devices |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110097909A (zh) * | 2018-01-30 | 2019-08-06 | 慧与发展有限责任合伙企业 | 忆阻点积引擎虚拟化 |
US11294763B2 (en) | 2018-08-28 | 2022-04-05 | Hewlett Packard Enterprise Development Lp | Determining significance levels of error values in processes that include multiple layers |
CN111755062A (zh) * | 2019-03-26 | 2020-10-09 | 慧与发展有限责任合伙企业 | 自修复点积引擎 |
CN111755062B (zh) * | 2019-03-26 | 2022-04-19 | 慧与发展有限责任合伙企业 | 点积引擎忆阻器交叉开关阵列、系统和存储介质 |
US11532356B2 (en) | 2019-03-26 | 2022-12-20 | Hewlett Packard Enterprise Development Lp | Self-healing dot-product engine |
Also Published As
Publication number | Publication date |
---|---|
US10664271B2 (en) | 2020-05-26 |
EP3289477A4 (en) | 2018-04-25 |
WO2017131792A1 (en) | 2017-08-03 |
US20190034201A1 (en) | 2019-01-31 |
CN107636640B (zh) | 2021-11-23 |
EP3289477B1 (en) | 2021-08-25 |
EP3289477A1 (en) | 2018-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107636640A (zh) | 具有求反指示符的点积引擎 | |
CN110209375B (zh) | 一种基于radix-4编码和差分权重存储的乘累加电路 | |
Liu et al. | Parallelizing SRAM arrays with customized bit-cell for binary neural networks | |
JP7384925B2 (ja) | ビットオーダバイナリ加重乗算器/積算器 | |
Hu et al. | Dot-product engine as computing memory to accelerate machine learning algorithms | |
CN112068798B (zh) | 一种实现网络节点重要性排序的方法及装置 | |
CN110543939B (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置 | |
CN111260048A (zh) | 一种基于忆阻器的神经网络加速器中激活函数的实现方法 | |
CN114499538A (zh) | 多比特输入数据编码方法、装置、电子设备及存储介质 | |
CN112181895A (zh) | 可重构架构、加速器、电路部署和计算数据流方法 | |
US10777253B1 (en) | Memory array for processing an N-bit word | |
US9933998B2 (en) | Methods and apparatuses for performing multiplication | |
Tsai et al. | RePIM: Joint exploitation of activation and weight repetitions for in-ReRAM DNN acceleration | |
McDanel et al. | Saturation rram leveraging bit-level sparsity resulting from term quantization | |
CN114168107A (zh) | 一种存内精度可调的矢量矩阵乘法运算方法及运算器 | |
Xiao et al. | A Low-Power In-Memory Multiplication and Accumulation Array With Modified Radix-4 Input and Canonical Signed Digit Weights | |
KR20230036815A (ko) | 곱셉 누적기를 이용한 컴퓨팅 장치 및 방법 | |
CN114418104A (zh) | 一种量子应用问题的处理方法及装置 | |
US20230297816A1 (en) | In-memory resonator network for factorizing hypervectors | |
Krishnan et al. | IMC architecture for robust DNN acceleration | |
Spear et al. | The Impact of Analog-to-Digital Converter Architecture and Variability on Analog Neural Network Accuracy | |
CN116486857B (zh) | 一种基于电荷再分配的存内计算电路 | |
US11977432B2 (en) | Data processing circuit and fault-mitigating method | |
Zhao et al. | ConvFIFO: A Crossbar Memory PIM Architecture for ConvNets Featuring First-In-First-Out Dataflow | |
Zhu et al. | iMAT: Energy-Efficient In-Memory Acceleration for Ternary Neural Networks With Sparse Dot Product |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |