CN112041928A - 忆阻器交叉杆阵列中模型/权重编程的加速 - Google Patents
忆阻器交叉杆阵列中模型/权重编程的加速 Download PDFInfo
- Publication number
- CN112041928A CN112041928A CN201880092735.8A CN201880092735A CN112041928A CN 112041928 A CN112041928 A CN 112041928A CN 201880092735 A CN201880092735 A CN 201880092735A CN 112041928 A CN112041928 A CN 112041928A
- Authority
- CN
- China
- Prior art keywords
- data
- vector data
- crossbar array
- value
- 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
- 238000003491 array Methods 0.000 title description 7
- 230000001133 acceleration Effects 0.000 title description 2
- 239000013598 vector Substances 0.000 claims abstract description 153
- 230000008859 change Effects 0.000 claims abstract description 29
- 238000000034 method Methods 0.000 claims description 96
- 238000013528 artificial neural network Methods 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 14
- 238000012549 training Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 16
- 239000011159 matrix material Substances 0.000 description 16
- 238000004364 calculation method Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 7
- 238000011156 evaluation Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000011144 upstream manufacturing Methods 0.000 description 3
- 241000282326 Felis catus Species 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- 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
- 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
-
- 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/0021—Auxiliary circuits
- G11C13/0069—Writing or programming circuits or methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2213/00—Indexing scheme relating to G11C13/00 for features not covered by this group
- G11C2213/70—Resistive array aspects
- G11C2213/77—Array wherein the memory element being directly connected to the bit lines and word lines without any access device being used
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/16—Storage of analogue signals in digital stores using an arrangement comprising analogue/digital [A/D] converters, digital memories and digital/analogue [D/A] converters
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Computer Hardware Design (AREA)
- Complex Calculations (AREA)
Abstract
交叉杆阵列包括多个存储器元件。模数转换器(ADC)电耦接到矢量输出寄存器。数模转换器(DAC)电耦接到矢量输入寄存器。处理器电耦接到ADC和DAC。处理器可以被配置为确定输入矢量数据与来自交叉杆阵列的输出矢量数据的商是否在阈值之内,并且如果不在阈值之内,则确定输出矢量数据和输入矢量数据之间的变化数据值,并将变化数据值写入交叉杆阵列的存储器元件。
Description
政府支持声明
本发明是在IARPA授予的第2017-17013000002号合同的政府支持下完成的。政府享有本发明中的某些权利。
背景技术
忆阻器交叉杆阵列可用于加速深度神经网络的生成中的计算。与深度神经网络相关的计算工作负荷通常包括训练阶段和分类阶段。训练阶段构建模型作为大型训练数据集的计算的结果。分类阶段接收由训练阶段生成的模型以基于应用至模型的新数据的评估来确定解。
训练阶段是计算和数据密集的。在训练阶段期间,忆阻器交叉杆阵列可用于矩阵点积计算。在训练阶段的逆推计算中,从模型的最后一层至模型的第一层实现模型/权重变化。忆阻器交叉杆阵列可以迭代地更新,并且执行矩阵点积计算以确定最佳模型。
与诸如互补金属氧化物半导体(CMOS)电路的传统集成电路相比,使用忆阻器交叉杆阵列的矩阵点积计算结构提供了更低的外部存储器带宽要求。但是,在某些情况下,在训练阶段期间更新已经包含在忆阻器交叉杆阵列中的模型/权重数据可能会导致处理低效。
附图说明
当结合附图阅读时,根据以下详细描述可以最好地理解本公开。要强调的是,根据行业中的标准实践,各种特征未按比例绘制。实际上,为了讨论清楚,各种特征的尺寸可以任意增加或减小。
图1是具有比较器处理器的示例性忆阻点积引擎的图。
图2是用于将输入矢量数据与先前加载到忆阻器存储器中的矢量数据进行比较的示例方法的流程图。
图3是用于相对于先前加载到忆阻器存储器中的矢量数据比较和/或评估输入矢量数据的示例方法的流程图。
图4是具有硬件处理的示例计算设备,其具有用于相对于先前加载到忆阻器存储器中的矢量数据比较和/或评估输入矢量数据的机器可读指令。
图5是用于相对于先前加载到忆阻器存储器中的矢量数据来评估增量输入矢量数据的示例方法的流程图。
发明内容
本公开的实施例针对用于矢量处理的忆阻点积系统,以及相关方法和存储可操作为使一个或多个计算机处理器执行该方法的指令的非暂时性计算机存储设备。
在一个实施例中,交叉杆阵列包括多个存储器元件。每个存储器元件可以包括彼此串联的忆阻器和晶体管。交叉杆阵列具有N行、M列以及N×M个存储器元件。矢量输入寄存器具有至交叉杆阵列的N个电压输入。矢量输出寄存器具有来自交叉杆阵列的M个电压输出。模数转换器(ADC)电耦接到矢量输出寄存器。数模转换器(DAC)电耦接到矢量输入寄存器。比较器处理器电耦接至ADC和DAC。比较器处理器被配置为将来自矢量输出寄存器的输出矢量数据与来自存储器寄存器的输入矢量数据进行比较、确定输出矢量数据和输入矢量数据之间的变化数据值、并将变化数据值写入交叉杆阵列的存储器元件。
比较器处理器可以包括用于经由ADC为交叉杆阵列中的一行检索输出矢量数据的电路。比较器处理器可以包括EXOR电路,该EXOR电路计算输入矢量数据和输出矢量数据之间的异或以确定变化数据值。比较器处理器可以包括用于经由DAC将变化数据值写入到交叉杆阵列的存储器元件的电路。用于输入矢量数据的存储器寄存器可以是与交叉杆阵列的存储器元件不同的存储器位置。输入矢量数据可以是表示n维数值矢量的数据,例如,描述用于训练神经网络的多个模型权重的数据。
在另一个实施例中,交叉杆阵列包括多个存储器元件。每个存储器元件可以包括彼此串联的忆阻器和晶体管。交叉杆阵列具有N行、M列以及N×M个存储器元件。矢量输入寄存器具有至交叉杆阵列的N个电压输入。矢量输出寄存器具有来自交叉杆阵列的M个电压输出。模数转换器(ADC)电耦接到矢量输出寄存器。数模转换器(DAC)电耦接到矢量输入寄存器。处理器电耦接到ADC和DAC。处理器被配置为确定新权重增量的绝对值除以旧权重是否小于阈值。对于大于阈值的权重变化,处理器确定变化数据值并将变化数据值写入交叉杆阵列的存储器元件。
具体实施方式
现在将公开以下要求保护的主题的示例。为了清楚起见,在本说明书中没有描述实际实施方式的所有特征。将理解的是,在任何这样的实际示例的开发中,可以做出许多特定于实施方式的决定来实现开发者的特定目标,例如遵守与系统相关且与商业相关的约束,这在各种实施方式之间彼此不同。此外,将认识到,即使是复杂且费时的,但这种开发工作对于受益于本公开的本领域普通技术人员而言也是例行工作。
与创建深度神经网络相关的计算工作负荷通常包括训练阶段和分类阶段。在训练期间,神经网络尝试从一组输入训练数据学习。未训练模型的每一层都分配了一些随机权重并且分类器通过输入训练数据进行顺推计算。此顺推计算(forward pass)预测类别标签并使用权重确定分数。将类别分数与实际标签进行比较并使用损失函数计算误差。然后,在逆推计算(backward pass)中,误差会通过神经网络反向传播并更新权重。例如,可以通过诸如梯度下降的算法来更新权重。梯度下降算法是用于查找使成本函数最小化的函数的参数值(即,系数)的优化算法。
历元(epoch)是指通过输入训练数据的所有样本的完整顺推计算和逆推计算。通常,通过使用传统的基于CMOS的CPU,这些计算非常昂贵并且在对每个样本进行处理后都使用单个权重更新来执行这些计算。在这种情况下,训练数据将分为几批并且每批之后都会更新权重。
深度学习工作负荷中使用的通用计算结构(矩阵点积)已导致对GPU的应用以提供比传统CPU加速的性能。与CPU相比,GPU更能够处理矢量和矩阵计算。单个或并行图形处理单元(GPU)可用于加快处理。但是,为图形应用程序构建的GPU尚未针对深度学习工作负荷要求进行完全优化并且存在性能和能量低效的问题。
使用忆阻器交叉杆阵列进一步减少了在GPU上的处理时间,并且忆阻器交叉杆阵列以更低能量需求提供了更高计算性能。在训练阶段期间,忆阻器交叉杆阵列可用于矩阵点积计算。在训练阶段的逆推计算期间,可以从模型的最后一层到模型的第一层实现模型/权重变化。可以利用模型/权重迭代地更新存储器忆阻器交叉杆阵列,并且执行矩阵点积计算以确定最佳模型。
电耦接到忆阻器交叉杆阵列的矢量输出寄存器的比较器电路可以将忆阻器交叉杆阵列中的已经可用的数据与写入交叉杆阵列的新模型/权重数据进行比较。在一个示例中,仅忆阻器交叉杆阵列中的不匹配值被更新,同时匹配值保持不变。在另一个示例中,针对阈值评估新模型权重的绝对增量权重值以确定是否更新交叉杆阵列。
在深度学习处理中,比较器电路减少了对交叉杆阵列的写操作次数,从而加速了整体计算处理效率并减少了神经网络的训练阶段的整体处理时间。
现在描述用于神经网络深度学习应用的示例忆阻交叉杆阵列。尽管描述了忆阻交叉杆阵列的特定示例,但是可以使用忆阻交叉杆阵列的其他配置。图1示出了具有单个电压矢量的忆阻点积引擎100。点积引擎100包括具有N行电极104和M列电极106的交叉杆阵列102。整个交叉杆阵列102的每个交叉杆结包括忆阻元件108,从而形成了点积引擎的存储器元件。每个存储器元件可以包括彼此串联的忆阻器和晶体管。点积引擎100包括用于向行电极104施加电压的矢量输入寄存器或矢量输入110,以及用于接收由列电极106中的电流流动产生的输出电压的矢量输出寄存器或矢量输出114。矢量输入可以连接到数模转换器111,数模转换器将数字值转换为模拟值以写入交叉杆阵列102。矢量输出114可以包括模数转换器115,模数转换器将模拟值转换为数字值。点积引擎100还包括用于将列电极106中的电流转换为电压的感测电路116。在示例中,感测电路116包括运算放大器118和电阻器120,可以将该电阻器120布置为代表用于读取操作的虚拟接地。
0022点积引擎100还可以包括与用作存储设备的交叉杆阵列102相关联的其他外围电路。例如,矢量输入110可以包括连接到行电极104的驱动器。地址解码器可以用于选择行电极104并激活与所选行电极104相对应的驱动器。所选行电极104的驱动器可以利用与矢量矩阵乘法相对应的不同电压或与在交叉杆阵列102的忆阻元件108内设置电阻值的过程相对应的不同电压来驱动对应的行电极104。列电极106可包括类似的驱动器和解码器电路。控制电路还可以用于控制在输入处的电压的施加以及在点积引擎100的输出处的电压的读取。可以在矢量输入110和矢量输出114处使用数模电路和模数电路。至行电极104和列电极106的输入信号可以是模拟的或数字的。可以在与上述示例中的交叉杆阵列102相同的集成结构或半导体片芯中使用半导体处理技术来制造上述外围电路。如下面进一步详细描述的,存在发生于点积引擎的运算期间的两个主要操作。第一操作是对交叉杆阵列中的忆阻器进行编程以将N×M矩阵中的数学值映射到该阵列。在一个示例中,在编程操作期间一次仅编程一个忆阻器。第二操作是点积或矩阵乘法运算。在该操作中,施加输入电压并获得输出电压,该输出电压对应于将N×M矩阵与N×1矢量相乘的结果。输入电压低于编程电压的阈值,因此在矩阵乘法运算期间,阵列102中的忆阻器的电阻值不变。
点积引擎100可以包括模数转换器115,以将矢量输出寄存器114的模拟信号转换为数字值。点积引擎100可以包括数模转换器111,以将数字值转换为至矢量输入寄存器110的模拟值。
点积引擎100可以电耦接到比较器处理器160。比较器处理器160可以集成地连接到点积引擎100并形成其一部分。比较器处理器160可以是单独部件,例如集成电路,或者单独处理器。比较器处理器160可以是一个或多个中央处理单元(CPU)、基于半导体的微处理器和/或适于检索和执行存储在机器可读存储介质中的指令的其他硬件设备。比较器处理器可以获取、解码并执行指令以控制用于相对于输入数据源(如至比较器处理器的箭头150所示)比较和/或评估从点积引擎115接收的数据(如箭头1 15所示)的过程。作为检索和执行指令的替代或补充,比较器处理器160可以包括一个或多个电子电路,该一个或多个电子电路包括用于执行一个或多个指令的功能的电子部件,例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。比较器处理器可以包括用于存储可执行指令的存储器,和/或连接到单独的存储介质162。
诸如162的机器可读存储介质可以包括易失性和非易失性、可移动和不可移动介质,并且可以是包含或存储可执行指令、数据结构、程序模块或比较器处理器160可访问的其他数据的任何电子、磁性、光学或其他物理存储设备,例如固件、可擦可编程只读存储器(EPROM)、随机存取存储器(RAM)、非易失性随机存取存储器(NVRAM)、光盘、固态状态驱动器(SSD)、闪存芯片等。机器可读存储介质可以是非暂时性存储介质,其中术语“非暂时性”不包括瞬时传播信号。
比较器处理器160可以执行用于相对于输出矢量数据(如箭头155所示)比较和/或评估已经加载到点积引擎100的忆阻器存储器中的输入矢量数据(如箭头150所示)的方法。比较器处理器160可以将变化数据值(如箭头165所示)提供给另一电路或处理器170,以将变化数据值写回到点积引擎100的忆阻器存储器。
输入矢量数据可以由比较器处理器160从另一处理器或程序接收。另外,比较器处理器160可以从与忆阻器交叉杆阵列的存储器元件不同的存储寄存器(未示出)检索输入矢量数据。输入矢量数据可以是呈n维数值矢量形式的数据。
现在将描述神经网络的其他方面。神经网络是复合可微函数,其以有向无环图(或计算图)的形式表示从其输入到其输出的数据流。这种图中的每个节点都是实现特定数据转换的简单函数。为了清楚起见,在本说明书中将神经网络计算图表示为线性图并且该图中的节点称为层(线性图是从其输入到其输出只有一条路径的图;如果计算图不是线性的,可以通过加入相邻节点将其线性化)。神经网络的输入层直接使用接收到的输入数据进行运算,并且输出层基于输入层和输出层之间中的层(也称为隐藏层)提供神经网络决策。隐藏层将输入数据转换为输出层。然后可以将输出层用于后续处理和/或决策制定。处理流程可以示出为输入→层1→层2→层3→…→层N-1→输出层→决策。
神经网络通常可以由两种类型的对象表示。第一类型对象定义了经由一系列运算符(例如,变换或函数)将输入连接到输出的计算结构(例如,计算图)。第二类型对象是由计算图中的运算符按名称或索引进行引用的权重。在训练神经网络期间,可以更新神经网络的权重。由于误差是在输出层计算的并且然后通过隐藏层逆向分布,因此更新权重的一种方法是通过称为误差逆向传播的技术。
神经网络的权重可以表示为索引集合或数值命名张量集合。如果权重表示为命名张量集合,则神经网络的运算符可以按名称引用数据。如果权重表示为其中每个张量在列表中都有相关联索引的张量列表,则神经网络的运算符可以按索引引用数据。如何存储张量的数值没有任何限制(例如,常规单精度格式(float32)、半精度格式(float16)、整数格式(int8)或适用于特定计算设备的任何其他格式)。每个张量是一个或多个矩阵的集合。例如,标量数(秩为0的张量)是维度为1×1的一个矩阵。矢量(秩为1的张量)是维度为N×1的一个矩阵。矩阵(秩为2的张量)是维度为N×M的一个矩阵。数字立方体(秩为3的张量)是维度为N×M的k个矩阵的集合等。编译器获取神经网络的计算图并将运算符映射到可用交叉杆阵列。一旦完成该映射,就可以将与运算符关联的数据张量写入关联的交叉杆阵列的存储器单元。
典型的第i个权重更新可以由以下公式表示:wi=wi-α*dwi,其中wi是神经网络的第i个权重,α是学习率并且dwi是第i个权重梯度。该公式可以重写为:其中,是可以被写入忆阻器存储器的权重更新(增量)。特定层中权重的增量可以是基于来自上游层的增量而计算的,即,这是递归依赖关系。例如,
some_function取决于层的特定类型并且可能在层与层之间有所不同。error_function提供起点,且error_function提供输出层的误差(与增量相同)。
例如,假设为了解决分类问题,则decisions是长度为K的矢量,其中包含输入数据属于特定类别的条件概率。例如,如果神经网络有4个种类-狗、猫、汽车和树并且想要识别输入图像中的主要对象,则decisions矢量可能如下所示:[0.1,0.1,0.8,0.0]。这些值表示通过神经网络确定输入图像是狗的概率为10%,为猫的概率为10%,为汽车的概率为80%并且为树的概率为0%。如果输入图像确实是汽车,则correct_decisions矢量将如下所示:[0.0,0.0,1.0,0.0]。在此示例中,为了利用增量来计算阵列,可以使用以下公式:
该计算确定交叉熵损失(误差,增量)。在此特定示例中,存在四个增量(对于所有输出),并且对于与“汽车”相对应的“true”输出,基本上不会为零(对于其他种类而言,correct_decisions包含零)。
对于层L的增量确定该层L的误差。层L可以是输出层,也可以是隐藏层。为了校正神经网络中的误差,根据某些函数将增量逆向传播到先前层L-1,并在这些增量的条件下更新层L的参数。如果没有参数,则跳过权重更新并且通过该层仅回传增量。
现在下面描述的方法特别适合于在对于具有权重的神经网络层的反向(即,逆向)传播阶段期间更新忆阻器交叉杆阵列。所描述的方法限制了先前存储在交叉杆阵列中的权重的更新。该方法确定存储在交叉杆阵列中的矢量数据的输出是否不同于正被写入交叉杆阵列的输入矢量数据。在图2中描述的一个示例中,方法将输入矢量数据至来自忆阻器的输出矢量之间的特定值进行比较(框230)并且仅更新值变化。在图5中描述的另一示例中,方法将除以存储在忆阻器阵列中的输出矢量数据的输入矢量数据增量与阈值进行比较(框530)。现在在下文描述方法的特定处理。
以下伪代码示出了输入矢量数据与已经加载到忆阻器存储器中的数据的示例比较。矢量输入数据是从神经网络的上游层接收的。大括号{}表示大括号内代码逻辑单元的分组。正斜杠//表示大括号后的文本注释。
行001:Comparison_function()
行002:{for i=0;i<number_of_rows;j++//
行003:{data_to_comp=memristor[i];//读取第一行
行004:f data_to_comp==new_data_to_write //无需写入新数据
行005:{//不执行任何操作,但XBAR中的行索引递增}
行006:Else//将新数据写入特定单元
行007:{changed_columns_bits=data_to_comp^new_data_to_write;//执行异或运算以检测输入数据与来自忆阻器的读取数据的差值
行008:for j=0;j<number_of_column bits;j++
行009:{If changed_columns_bits[j]==1 //列位相对于输入数据发生变化
行010:write_to_memristor[i][j]<=new_data_to_write[j];//将特定变化位写入行中的单元格}}}}
通过比较器处理器160经由控制电路或执行程序、应用、守护程序或服务调用或执行行001的comparison_function。在行002,该方法遍历忆阻器阵列的预定行数。该方法使用for循环逻辑构造,for i=0;i<number_of_rows;i++,来评估每一行,并针对每个连续迭代递增到行号值。值i是用于引用特定行号的索引值。
在行003中,该方法将变量data_to_comp设置为忆阻器行[索引i]的数据值。例如,如果索引i设置为0,则data_to_comp变量被设置为忆阻器行[0]的值。如果索引i设置为1,则data_to_comp变量被设置为忆阻器行[1]的值。
在行004,该方法将变量new_data_to_write与data_to_comp变量进行比较以确定值是否相等。new_data_to_write是与当前索引i对应的输入矢量数据的子矢量。如果data_to_comp值等于new_data_to_write值,则忆阻器行[索引i]已被设置为new_data_to_write值。在这种情况下,该方法不需要更新忆阻器。换句话说,忆阻器将不会使用新权重值进行更新。
然后,该方法递增行002中for循环逻辑的索引值i。
在行006,如果data_to_comp值不相等,则该方法以其他方式执行以下步骤。在行007,将变量changed_columns_bits设置为data_to_comp值和new_data_to_write值的XOR运算的值。该方法执行XOR运算以检测输入矢量数据与来自忆阻器的数据相比的差值。
在行002,该方法迭代通过忆阻器阵列的预定数量的列位。该方法使用for循环逻辑构造,for j=0;j<number_of_column bits;j++,来评估每一行,并为每个连续迭代递增到行号值。值i是用于引用特定变化列位的索引值。
在行009,该方法确定由值j索引的特定changed_column_bits是否等于值1。在此,该方法确定列位是否已变化。在行010,如果特定列位已变化,此时表达式changed_columns_bits[j]==1为真,则该方法将执行对忆阻器的写操作。
for循环逻辑构造循环并递增j的值。write_to_memristor[i][j]用特定已更新列位的值更新忆阻器。该方法将特定变化位写入忆阻器行中的单元。
图2是用于将输入矢量数据与先前加载到忆阻器存储器中的矢量数据进行比较的示例方法200的流程图。方法200开始(框205)并初始化一组变量(框210)。变量NEW_DATA_TO_WRITE是接收的数据输入。变量NUM_OF_ROWS是由图1所示的忆阻器阵列行数(N)所确定的忆阻器行数。变量NUM_OF_COL_BITS是由图1所示的忆阻器阵列列数所确定的忆阻器列位数(M)。忆阻器的列位是从忆阻器阵列的M列元素读取的数据。变量I和J作为索引值用于下一个for循环计数器。变量CHANGED_COLUMN_BITS初始化为NULL或者可以初始化为FALSE。
该方法确定NUM_OF_ROWS值是否大于变量I的值(框215)。此评估的第一实例I将被设置为零。如果NUM_OF_ROWS值大于I,则该方法将结束(框220)。如果NUM_OF_ROWS值小于或等于I,则该方法将继续。然后,该方法将变量DATA_TO_COMP设置为MEMRISTOR[索引I](框225)。在第一实例中,变量DATA_TO_COMP被设置为MEMRISTOR[索引0]的值。在此步骤中,将读取忆阻器的第一行,并将值存储在变量DATA_TO_COMP中。变量MEMRISTOR[]的数据类型可以支持每个单元的可调整位,因此任何常用的计算机编程数据类型(例如整数或浮点数)都可以轻松地存储在忆阻器单元中。
然后,该方法比较存储在变量DATA_TO_COMP中的矢量数据行的值是否等于存储在变量NEW_DATA_TO_WRITE中的新输入矢量数据(框230)。
如果变量DATA_TO_COMP的值等于变量NEW_DATA_TO_WRITE的值,则该方法继续到框265。如果这两个值相等,则意味着不需要以输入数据更新忆阻器行。在框265,变量I的值递增1。然后该方法如上所述继续进行到框215。
如果变量DATA_TO_COMP的值不等于变量NEW_DATA_TO_WRITE的值,则该方法继续到框235。将变量CHANGED_COLUMN_BITS设置为变量DATA_TO_COMP和变量NEW_DATA_TO_WRITE的EXOR运算的输出值(框225)。这里,方法是确定新输入数据相对于忆阻器特定行中的数据的变化。在下一步骤(框240)中,变量J被初始化为值0。
然后,该方法继续并更新忆阻器行的特定变化列位。在框245中,该方法确定(NUM_OF_COL_BITS-1)的值是否大于变量J的值。如果否,则该方法前进至框265,并将变量I增加值1。如果(NUM_OF_COL_BITS-1)的值小于或等于变量J的值,则方法将确定CHANGED_COL_BITS[索引J]是否等于1。如果CHANGED_COL_BITS[索引J]等于零,则意味着列位的数据值未变化。然后该方法继续到框260并将变量J增加值1。如果CHANGED_COL_BITS[索引J]等于1,则意味着列位的数据值已变化。在这种情况下,该方法前进至框255。在框255中,忆阻器存储器位置被写入。利用来自变量NEW_DATA_TO_WRITE[索引J]的值对WRITE_TO_MEMRISTOR[索引I][索引J]进行调用或执行。接下来,该方法继续到框260并将变量J增加值1。
图3是用于比较和/或评估输入矢量数据与先前加载到忆阻器存储器中的矢量数据的示例方法300的流程图。该方法开始于框310。将第一组输入矢量数据接收到存储器寄存器或某个其他存储位置中(框320)。存储器寄存器是与忆阻器存储器元件不同的单独存储器。从忆阻器的行的输出接收一组输出矢量数据(框330)。该方法确定输出矢量数据是否与输入矢量数据不同。然后,该方法利用确定为输出矢量数据和输入矢量数据之间不同的数据来更新忆阻器阵列。然后,该方法接收额外输入矢量数据并再次开始(框320)。
图4是具有硬件处理器405的示例计算设备440,其具有用于将输入矢量数据与先前加载到忆阻器存储器中的矢量数据进行比较和/或评估的机器可读指令410。如以下详细描述的,机器可读存储介质可以用可执行指令420-450编码以用于执行接收到的矢量数据的比较并且与驻留在忆阻器存储器中的矢量数据进行比较。
可执行指令包括用于接收一组输入矢量数据的指令(框420)。用于从存储器阵列的输出接收一组输出矢量数据的指令(框430)。用于确定输出矢量数据是否与输入矢量数据不同的指令(框440)。用于利用确定为输出矢量数据和输入矢量数据不同的数据更新忆阻器阵列的指令。
以下伪代码示出了相对于已经加载到忆阻器存储器中的矢量数据对输入矢量数据的示例评估。大括号{}表示大括号内代码逻辑单元的分组。正斜杠//表示括号后的文本注释。
行101:Comparison_function()
行102:{for i=0;i<number_of_rows;i++//
行103:{data_to_comp=memristor[i];//读取第一行
行104:if(|Δnew_data_to_write)/data_from_memristor|<threshold)//无需写入新数据(可以是可编程的);该操作可以在所有位上并行执行
行105:{II不执行任何操作,但XBAR中会递增行索引}
行106:Else II将新数据写入特定单元
行107:{changed_columns_bits=
column values_that_doesn’t_meet_above_threshold_comparision;
行108:for j=0;j<number_of_columnbits;j++
行109:{If changed_columns_bits[j]==1 //列位相对于输入数据变化
行110:write_to_memristor[i][j]<=new_data_to_write[j];//将特定变化位写入行中的单元}}}}
比较器处理器160经由控制电路或执行程序、应用、守护程序或服务来调用或执行行101处的comparison_function。在行102,该方法迭代通过忆阻器阵列的预定行数。该方法使用for循环逻辑构造,fori=0;i<number_of_rows;i++,来评估每一行,并针对每个连续迭代递增行号值。值i是用于引用特定行号的索引值。
在行103处,该方法将变量data_to_comp设置为忆阻器行[索引i]的数据值。例如,如果索引i设置为0,则data_to_comp变量设置为忆阻器行[0]的值。如果索引i设置为1,则data_to_comp变量设置为忆阻器行[1]的值
在行104处,该方法确定new_data_to_write增量除以来自忆阻器的data_to_comp的计算的绝对值。new_data_to_write是与当前索引i对应的输入矢量数据的子矢量。输入矢量数据可以是来自神经网络的上游层的矢量数据。如果|(Δnew_data_to_write)/data_to_comp|<阈值,则忆阻器行[索引i]已设置为new_data_to_write值。在这种情况下,该方法不需要更新忆阻器。换句话说,忆阻器将不会使用新权重值进行更新。
然后,该方法增加行102中的for循环逻辑的索引值i。可以对比较数据的所有位并行执行评估。
示例阈值可以是0.001。例如,可以确定阈值为其中weight≥1000*Δweight,即,在该示例中,如果权重与增量相比过大(例如,三个数量级),则不会进行更新。
阈值可以是存储在存储器寄存器中的预定值,或者可以是基于神经网络节点或层的大小的动态值。阈值可以是对于所有权重不变的并且预先设置的静态阈值。
阈值可以是动态权重特定阈值,其例如基于绝对权重值、当前学习率或层类型来计算。对于卷积层,阈值可以更大,而对于全连接层,阈值可以更小。
阈值可以是层特定阈值。例如,阈值可以是取决于以下因素基于神经网络的一层中的所有权重的:例如,层类型(卷积,全连接)、层中的权重统计属性、神经网络中的层位置(例如,靠近输入的层应具有更大阈值,而靠近输出的层应具有更小阈值)。
另外,可以随着神经网络训练来调节阈值。例如,在处理的开始阶段,更大阈值可用于执行交叉杆阵列的更频繁更新,并且可减小阈值以收敛到某个稳定状态,然后减小阈值以减小更新率。从数学角度来看,基于阈值的选择性更新是一种正则化形式,其有助于实现更好的归纳(对以前看不见的输入数据的分类准确性)。
在行106处,如果data_to_comp值不相等,则该方法以其他方式执行以下步骤。在行107处,将变量changed_columns_bits设置为data_to_comp值和new_data_to_write值的异或运算的值。该方法执行异或运算以检测输入矢量数据与来自忆阻器的数据相比的差值。例如,更新了不符合阈值的值changed_columns_bits=column_values。
在行102处,该方法迭代通过忆阻器阵列的预定数量的列位。该方法使用for循环逻辑构造,for j=0;j<number_of_column bits;j++,来评估每一行,并针对每个连续迭代递增行号值。值j是用于引用特定变化列位的索引值。
在行109处,该方法确定由值j索引的特定changed_column_bits是否等于值1。在此,该方法确定列位是否已变化。在行110处,如果特定列位已变化,其中表达式changed_columns_bits[j]==1为真,则该方法将执行对忆阻器的写入。
for循环逻辑构造循环并递增j的值。write_to_memristor[i][j]用特定已更新列位的值更新忆阻器。该方法将特定变化位写入忆阻器行中的单元。
图5是用于将输入矢量数据相对于先前加载到忆阻器存储器中的矢量数据进行评估的示例方法500的流程图。方法500开始(框505)并且初始化一组变量(框510)。变量NEW_DATA_TO_WRITE是接收的数据输入。变量NUM_OF_ROWS是由图1所示的忆阻器阵列的行数(N)所确定的忆阻器行数。变量NUM_OF_COL_BITS是由图1所示的忆阻器阵列的列数所确定的忆阻器列位数(M)。忆阻器的列位是从忆阻器阵列的M列元素读取的数据。变量I和J作为索引值用于下一个for循环计数器。变量CHANGED_COLUMN_BITS初始化为NULL,或者可以初始化为FALSE。
在方法中,确定NUM_OF_ROWS值是否大于变量I的值(框515)。此评估的第一个实例I将设置为零。如果NUM_OF_ROWS值大于I,则该方法将结束(框520)。如果NUM_OF_ROWS值小于或等于I,则该方法将继续。然后该方法将变量DATA_TO_COMP设置为MEMRISTOR[索引I](框525)。在第一个实例中,变量DATA_TO_COMP被设置为MEMRISTOR[索引0]的值。在此步骤中,读取忆阻器的第一行,并将该值存储在变量DATA_TO_COMP中。变量MEMRISTOR[]的数据类型可以支持每个单元的可调整位,因此任何常用的计算机编程数据类型(例如整数或浮点数)都可以轻松地存储在忆阻器单元中。
该方法然后评估是否|(DELTA NEW_DATA_TO_WRITE/DATA_TO_COMP)|<阈值(框530)。
如果(DELTA NEW_DATA_TO_WRITE/DATA_TO_COMP)的绝对值的值小于阈值(THRESHOLD)变量的值,则该方法继续到框565。如果上述表达式为真,则意味着不需要使用输入数据更新忆阻器行。在框565,变量I的值增加1。然后该方法继续到如上所述的框515。
如果(DELTA NEW_DATA_TO_WRITE/DATA_TO_COMP)的绝对值的值大于或等于阈值(THRESHOLD)变量的值,则该方法继续到框535。变量CHANGED_COLUMN_BITS被设置为对于变量DATA_TO_COMP和变量NEW_DATA_TO_WRITE的EXOR操作的输出值(框525)。在此,方法是确定新输入数据相对于忆阻器的特定行中的数据的变化。在下一步骤(框540)中,变量J被初始化为值0。
然后,该方法继续并更新忆阻器行的特定变化列位。在框555中,该方法确定(NUM_OF_COL_BITS-1)的值是否大于变量J的值。如果否,则该方法前进至框265,并将变量I增加值1。如果(NUM_OF_COL_BITS-1)的值小于或等于变量J的值,则方法确定CHANGED_COL_BITS[索引J]是否等于1。如果CHANGED_COL_BITS[索引J]等于零,则意味着列位的数据值未变化。然后该方法继续到框560,并将变量J增加值1。如果CHANGED_COL_BITS[index J]等于1,则意味着列位的数据值已更改。在这种情况下,该方法前进到框555。在框555,将忆阻器存储位置写入。使用来自变量NEW_DATA_TO_WRITE[索引J]的值,调用或执行WRITE_TO_MEMRISTOR[索引I][索引J]的写函数。接下来,该方法继续执行块250,并将变量J增加值1。
为了说明的目的,前述描述使用特定术语来提供对本公开的透彻理解。然而,对于本领域的技术人员将显而易见的是,不需要具体细节来实践本文描述的系统和方法。出于说明和描述的目的给出了具体示例的前述描述。它们不旨在穷举或将本公开限制为所描述的精确形式。显然,鉴于以上教导,许多修改和变化是可能的。示出并描述了示例以最佳地解释本公开的原理和实际应用,从而使本领域的其他技术人员能够最佳地利用本公开以及具有适于预期的特定用途的各种修改的各种示例。本公开的范围旨在由下面的权利要求及其等同物限定。
Claims (20)
1.一种用于矢量处理的忆阻点积系统,包括:
交叉杆阵列,所述交叉杆阵列具有多个存储器元件,所述交叉杆阵列具有N行、M列以及N×M个存储器元件;
矢量输入寄存器,所述矢量输入寄存器包括至所述交叉杆阵列的N个电压输入;
矢量输出寄存器,所述矢量输出寄存器包括来自所述交叉杆阵列的M个电压输出;以及
模数转换器(ADC),所述模数转换器电耦接到所述矢量输出寄存器;
数模转换器(DAC),所述数模转换器电耦接到所述矢量输入寄存器;
比较器处理器,所述比较器处理器电耦接至所述ADC和所述DAC,所述比较器处理器被配置为:
将来自所述矢量输出寄存器的输出矢量数据与来自存储器寄存器的输入矢量数据进行比较;
确定所述输出矢量数据和所述输入矢量数据之间的变化数据值;以及
将所述变化数据值写入所述交叉杆阵列的所述存储器元件。
2.根据权利要求1所述的点积系统,其中,所述比较器处理器包括EXOR电路,所述EXOR电路计算所述输入矢量数据和所述输出矢量数据之间的异或以确定所述变化数据值。
3.根据权利要求1所述的点积系统,其中,所述比较器处理器包括电路,所述电路用于经由所述ADC为所述交叉杆阵列的行检索输出矢量数据。
4.根据权利要求1所述的点积系统,其中,所述比较器处理器包括电路,所述电路用于经由所述DAC将所述变化数据值写入至所述交叉杆阵列的存储器元件。
5.根据权利要求1所述的点积系统,其中,用于所述输入矢量数据的所述存储器寄存器是与所述交叉杆阵列的所述存储器元件不同的存储器位置。
6.根据权利要求1所述的点积系统,其中,所述输入矢量数据是表示n维数值矢量的数据。
7.根据权利要求1所述的点积系统,其中,所述输入矢量数据描述用于训练神经网络的多个模型权重。
8.一种方法,包括:
从忆阻器交叉杆阵列的输出接收一组输出矢量数据,所述忆阻器交叉杆阵列具有多个存储器元件,所述交叉杆阵列具有N行、M列以及N×M个存储器元件;
从存储器寄存器接收一组输入矢量数据;
相对于所述一组输入矢量数据评估所述一组输出矢量数据;
确定所述输出矢量数据和所述输入矢量数据之间的变化数据值;以及
将所述变化数据值写入所述交叉杆阵列的所述存储器元件。
9.根据权利要求8所述的方法,其中,相对于所述一组输入矢量数据评估所述一组输出矢量数据包括:
执行确定所述输入矢量数据的绝对值除以所述输出矢量数据是否小于预定阈值的操作,其中,所述输出矢量数据表示权重值并且所述输入矢量数据表示增量权重值。
10.根据权利要求8所述的方法,其中,所述一组输出矢量数据是经由电耦接至所述交叉杆阵列的模数转换器接收的。
11.根据权利要求8所述的方法,其中,所述变化数据值经由电耦接至所述交叉杆阵列的数模转换器写入所述交叉杆阵列的所述存储器元件。
12.根据权利要求8所述的方法,其中,用于所述输入矢量数据的所述存储器寄存器是与所述忆阻器的所述存储器元件不同的存储器位置。
13.根据权利要求8所述的方法,其中,所述输入矢量数据是表示n维数值矢量的数据。
14.根据权利要求8所述的方法,其中,所述输入矢量数据描述用于训练神经网络的多个模型权重。
15.一种非暂时性计算机存储设备,所述非暂时性计算机存储设备存储能够操作为使一种或多种计算机方法执行包括以下操作的指令:
从忆阻器交叉杆阵列的输出接收一组输出矢量数据,所述忆阻器交叉杆阵列具有多个存储器元件,所述交叉杆阵列具有N行、M列以及N×M个存储器元件;
从存储器寄存器接收一组输入矢量数据;
将所述一组输出矢量数据与所述一组输入矢量数据进行比较;
确定所述输出矢量数据和所述输入矢量数据之间的变化数据值;以及
将所述变化数据值写入所述交叉杆阵列的所述存储器元件。
16.根据权利要求15所述的非暂时性计算机存储设备,其中,将所述一组输出矢量数据与所述一组输入矢量数据进行比较包括:
在所述输入矢量数据和所述输出矢量数据之间执行异或运算以确定所述变化数据值。
17.根据权利要求15所述的非暂时性计算机存储设备,其中,所述一组输出矢量数据是经由电耦接至所述交叉杆阵列的模数转换器接收的。
18.根据权利要求15所述的非暂时性计算机存储设备,其中,所述变化数据值经由电耦接至所述交叉杆阵列的数模转换器写入所述交叉杆阵列的所述存储器元件。
19.根据权利要求15所述的非暂时性计算机存储设备,其中,用于所述输入矢量数据的所述存储器寄存器是与所述忆阻器的所述存储器元件不同的存储器位置。
20.根据权利要求15所述的非暂时性计算机存储设备,其中,所述输入矢量数据是表示n维数值矢量的数据。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2018/030219 WO2019212488A1 (en) | 2018-04-30 | 2018-04-30 | Acceleration of model/weight programming in memristor crossbar arrays |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112041928A true CN112041928A (zh) | 2020-12-04 |
Family
ID=68386541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880092735.8A Pending CN112041928A (zh) | 2018-04-30 | 2018-04-30 | 忆阻器交叉杆阵列中模型/权重编程的加速 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11853846B2 (zh) |
CN (1) | CN112041928A (zh) |
WO (1) | WO2019212488A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112041928A (zh) * | 2018-04-30 | 2020-12-04 | 慧与发展有限责任合伙企业 | 忆阻器交叉杆阵列中模型/权重编程的加速 |
US20210049504A1 (en) * | 2019-08-14 | 2021-02-18 | Rain Neuromorphics Inc. | Analog system using equilibrium propagation for learning |
CN110796241B (zh) * | 2019-11-01 | 2022-06-17 | 清华大学 | 基于忆阻器的神经网络的训练方法及其训练装置 |
CN112825259A (zh) * | 2019-11-20 | 2021-05-21 | 三星电子株式会社 | 非易失性存储器及其操作方法 |
US11568217B2 (en) | 2020-07-15 | 2023-01-31 | International Business Machines Corporation | Sparse modifiable bit length deterministic pulse generation for updating analog crossbar arrays |
US11443171B2 (en) | 2020-07-15 | 2022-09-13 | International Business Machines Corporation | Pulse generation for updating crossbar arrays |
DE102020209180A1 (de) | 2020-07-22 | 2022-01-27 | Robert Bosch Gesellschaft mit beschränkter Haftung | Matrixschaltung zur Verarbeitung eines Vektors von Spannungen |
DE102020209183A1 (de) | 2020-07-22 | 2022-01-27 | Robert Bosch Gesellschaft mit beschränkter Haftung | Matrixschaltung zur Verarbeitung eines Vektors von Spannungen |
DE102020210191A1 (de) | 2020-08-12 | 2022-02-17 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren zum Durchführen einer oder mehrerer Vektor-Matrix-Operationen, Recheneinheit und Rechenmodul zu dessen Durchführung |
US11200948B1 (en) * | 2020-08-27 | 2021-12-14 | Hewlett Packard Enterprise Development Lp | System for a flexible conductance crossbar |
US20220261287A1 (en) * | 2021-02-12 | 2022-08-18 | Nvidia Corporation | Method and apparatus for improving processor resource utilization during program execution |
US11551091B2 (en) | 2021-03-05 | 2023-01-10 | Rain Neuromorphics Inc. | Learning in time varying, dissipative electrical networks |
US20220343153A1 (en) * | 2021-04-26 | 2022-10-27 | Micron Technology, Inc. | Artificial neural network retraining in memory |
CN113553293B (zh) * | 2021-07-21 | 2024-09-03 | 清华大学 | 存算一体装置及其校准方法 |
CN114781634B (zh) * | 2022-06-21 | 2022-11-04 | 之江实验室 | 一种基于忆阻器的神经网络阵列的自动映射方法和装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455843A (zh) * | 2013-08-16 | 2013-12-18 | 华中科技大学 | 一种反馈型人工神经网络训练方法及计算系统 |
US20150347896A1 (en) * | 2014-05-27 | 2015-12-03 | Purdue Research Foundation | Electronic comparison systems |
CN106463166A (zh) * | 2014-04-30 | 2017-02-22 | 慧与发展有限责任合伙企业 | 调节忆阻器切换脉冲 |
CN106815636A (zh) * | 2016-12-30 | 2017-06-09 | 华中科技大学 | 一种基于忆阻器的神经元电路 |
WO2017105517A1 (en) * | 2015-12-18 | 2017-06-22 | Hewlett Packard Enterprise Development Lp | Memristor crossbar arrays to activate processors |
KR20170108619A (ko) * | 2016-03-18 | 2017-09-27 | 국민대학교산학협력단 | 저항 메모리 읽기 회로 및 구동방법 |
CN107533668A (zh) * | 2016-03-11 | 2018-01-02 | 慧与发展有限责任合伙企业 | 用于计算神经网络的节点值的硬件加速器 |
US20180108410A1 (en) * | 2015-05-29 | 2018-04-19 | Hewlett Packard Enterprise Development Lp | Memristance feedback tuning |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5671187A (en) * | 1995-06-07 | 1997-09-23 | Texas Instruments Incorporated | Storage circuit |
US6584589B1 (en) | 2000-02-04 | 2003-06-24 | Hewlett-Packard Development Company, L.P. | Self-testing of magneto-resistive memory arrays |
US7902867B2 (en) | 2006-04-03 | 2011-03-08 | Blaise Laurent Mouttet | Memristor crossbar neural interface |
US7830726B2 (en) | 2008-09-30 | 2010-11-09 | Seagate Technology Llc | Data storage using read-mask-write operation |
US20130054886A1 (en) * | 2010-01-25 | 2013-02-28 | Idatamap Pty. Ltd. | Content addressable memory (cam) |
WO2011133139A1 (en) | 2010-04-19 | 2011-10-27 | Hewlett-Packard Development Company, L.P. | Refreshing memristive systems |
US20160364643A1 (en) * | 2012-03-08 | 2016-12-15 | Hrl Laboratories Llc | Scalable integrated circuit with synaptic electronics and cmos integrated memristors |
WO2016068920A1 (en) | 2014-10-29 | 2016-05-06 | Hewlett Packard Enterprise Development Lp | Memristive dot product engine for vector processing |
WO2016195736A1 (en) | 2015-06-02 | 2016-12-08 | Cambou Bertrand F | Memory circuit using resistive random access memory arrays in a secure element |
CN112041928A (zh) * | 2018-04-30 | 2020-12-04 | 慧与发展有限责任合伙企业 | 忆阻器交叉杆阵列中模型/权重编程的加速 |
-
2018
- 2018-04-30 CN CN201880092735.8A patent/CN112041928A/zh active Pending
- 2018-04-30 US US17/044,633 patent/US11853846B2/en active Active
- 2018-04-30 WO PCT/US2018/030219 patent/WO2019212488A1/en active Application Filing
-
2023
- 2023-12-05 US US18/528,935 patent/US20240112029A1/en active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455843A (zh) * | 2013-08-16 | 2013-12-18 | 华中科技大学 | 一种反馈型人工神经网络训练方法及计算系统 |
CN106463166A (zh) * | 2014-04-30 | 2017-02-22 | 慧与发展有限责任合伙企业 | 调节忆阻器切换脉冲 |
US20150347896A1 (en) * | 2014-05-27 | 2015-12-03 | Purdue Research Foundation | Electronic comparison systems |
US20180108410A1 (en) * | 2015-05-29 | 2018-04-19 | Hewlett Packard Enterprise Development Lp | Memristance feedback tuning |
WO2017105517A1 (en) * | 2015-12-18 | 2017-06-22 | Hewlett Packard Enterprise Development Lp | Memristor crossbar arrays to activate processors |
CN107533668A (zh) * | 2016-03-11 | 2018-01-02 | 慧与发展有限责任合伙企业 | 用于计算神经网络的节点值的硬件加速器 |
KR20170108619A (ko) * | 2016-03-18 | 2017-09-27 | 국민대학교산학협력단 | 저항 메모리 읽기 회로 및 구동방법 |
CN106815636A (zh) * | 2016-12-30 | 2017-06-09 | 华中科技大学 | 一种基于忆阻器的神经元电路 |
Also Published As
Publication number | Publication date |
---|---|
US20210201136A1 (en) | 2021-07-01 |
US20240112029A1 (en) | 2024-04-04 |
US11853846B2 (en) | 2023-12-26 |
WO2019212488A1 (en) | 2019-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240112029A1 (en) | Acceleration of model/weight programming in memristor crossbar arrays | |
CN110796241B (zh) | 基于忆阻器的神经网络的训练方法及其训练装置 | |
CN108009640B (zh) | 基于忆阻器的神经网络的训练装置及其训练方法 | |
US20190122105A1 (en) | Training of artificial neural networks | |
US11302392B2 (en) | Analog-to-digital converter and neuromorphic computing device including the same | |
US11373092B2 (en) | Training of artificial neural networks | |
EP3704637A1 (en) | Hardware accelerated discretized neural network | |
Hu et al. | Dot-product engine as computing memory to accelerate machine learning algorithms | |
US11386319B2 (en) | Training of artificial neural networks | |
US11790241B2 (en) | Systems and methods for modifying neural networks for binary processing applications | |
US20220188604A1 (en) | Method and Apparatus for Performing a Neural Network Operation | |
CN112598123A (zh) | 神经网络的权值的量化方法、量化装置及存储介质 | |
US11568217B2 (en) | Sparse modifiable bit length deterministic pulse generation for updating analog crossbar arrays | |
US11514326B2 (en) | Drift regularization to counteract variation in drift coefficients for analog accelerators | |
Zhang et al. | Memristive circuit design of quantized convolutional auto-encoder | |
CN110889080A (zh) | 乘积累加运算装置、乘积累加运算方法和系统 | |
Zhang et al. | Xbm: A crossbar column-wise binary mask learning method for efficient multiple task adaption | |
CN115796252A (zh) | 权重写入方法及装置、电子设备和存储介质 | |
Zhang et al. | Xma2: A crossbar-aware multi-task adaption framework via 2-tier masks | |
US11443171B2 (en) | Pulse generation for updating crossbar arrays | |
CN113906448A (zh) | 用于在神经网络中提供分块稀疏性的系统和方法 | |
CN115461754A (zh) | 深度过参数化 | |
Zhang et al. | Xma: A crossbar-aware multi-task adaption framework via shift-based mask learning method | |
Ma et al. | Improving noise tolerance of hardware accelerated artificial neural networks | |
Le et al. | CIMulator: a comprehensive simulation platform for computing-in-memory circuit macros with low bit-width and real memory materials |
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 |