CN107533459A - 使用电阻存储器阵列的数据处理 - Google Patents
使用电阻存储器阵列的数据处理 Download PDFInfo
- Publication number
- CN107533459A CN107533459A CN201680023228.XA CN201680023228A CN107533459A CN 107533459 A CN107533459 A CN 107533459A CN 201680023228 A CN201680023228 A CN 201680023228A CN 107533459 A CN107533459 A CN 107533459A
- Authority
- CN
- China
- Prior art keywords
- layer
- processing
- data
- output
- array
- 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
Classifications
-
- 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/0023—Address circuits or decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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
-
- 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
-
- 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
- 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/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1039—Read-write modes for single port memories, i.e. having either a random port or a serial port using pipelining techniques, i.e. using latches between functional memory parts, e.g. row/column decoders, I/O buffers, sense amplifiers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Image Processing (AREA)
- Memory System (AREA)
- Complex Calculations (AREA)
- Non-Volatile Memory (AREA)
Abstract
在一个示例中,一种方法包括在存储器中接收第一处理层和第二处理层中要处理的输入数据。可以对第一处理层的处理操作的输出执行第二层的处理操作。该方法可进一步包括根据第一层的至少一个处理操作来分配要处理的输入数据,其可包括使用电阻存储器阵列和将输出数据进行缓冲。可以确定缓冲的输出数据是否超过执行第二层的至少一个处理操作的阈值数据量,并且当确定缓冲的输出数据超过阈值数据量时,可以根据第二层的处理操作来分配要处理的至少一部分缓冲的输出数据。
Description
背景技术
描述了诸如“忆阻器”的电阻存储设备,其中电组件能够以非易失性方式用电阻写入。已提出将此类设备的阵列用于例如在“深度学习”应用的上下文中进行逻辑运算。
在一些计算应用中,例如深度学习应用,对输入数据进行逻辑运算以提供第一层处理中的输出。接着,对后一层处理中的输出进行逻辑运算,在一些示例中用于多个迭代。已提出将此类处理策略用于诸如大数据分析、图像与语音识别、机器学习和其它复杂的计算任务的领域中。
附图说明
现在将参考附图来描述非限制性示例,其中:
图1示出了多个处理层中的示例性处理方法;
图2示出了分配处理资源的示例性方法;
图3a-c为示例性存储器的一部分的简化示意图;
图4为示例性处理装置的简化示意图;
图5为处理装置的示例性处理单元的简化示意图;
图6和7示出了分配处理资源的示例性方法;并且
图8为数据包的示例的示意性表示。
具体实施方式
图1为一种方法的示例,其可以是执行多层处理任务中的至少一层中的处理的计算机实现的方法。在框102处,在存储器中接收输入数据,该存储器可以例如为数据缓冲器并可以由动态随机存取存储器(DRAM)提供。在一些示例中,存储器可包括嵌入式DRAM(eDRAM),其可在还提供处理数据的处理装置上的芯片或晶圆上提供。在其它示例中,可提供其它形式的存储器(可为嵌入式存储器)。
在至少第一和第二处理层中处理输入数据,其中处理层应用于数据,使得在第二处理层中,对第一处理层的处理操作的输出数据进行处理操作。在一些示例中,可以有更多的处理层,例如大约10、20或30个处理层,每个处理器对前一层的输出进行操作。
例如,第一处理层可对输入数据流(有时称作信道)进行操作,其可为任意数据,例如语音、手写体、图像、实验数据等。在每层中,可处理若干输入信道以形成若干输出信道。输出信道可形成另一层的输入信道。
在一些示例中,例如从“深度学习”处理技术,数据可能经受一个或数个称为“卷积(convolution)”层的处理层中的处理操作,其中将输入信道与预定义的nxn内核(kernel)(可为矩阵运算数)进行卷积以生成输出信道。其它层可以包括至少一个池化层(poolinglayer)、至少一个变换层和至少一个分类层。在池化层中,通过池化函数(例如,提供最大数、最小数、平均数等)将输入信道进行缩减以生成输出。在变换层中,可以使用诸如tanh(x)(其为sigmoid函数的示例)的非线性函数对输入信道(可为池化层的输出)进行变换。这可以形成对分类层的输入,其中可将该输入与预定义的1x1内核进行卷积。该层可生成应用的输出。
其中,卷积处理(其可为多层处理)可能是计算最密集的,并可能占用约80%或80%以上的计算资源。因此,在下面的示例中,可将处理管道设计为加速至少某个卷积处理的处理。
框104包括根据使用至少一个电阻存储器阵列的第一处理层的至少一个处理操作,对要处理的输入数据进行分配。在一个示例中,电阻存储器阵列可包括电阻存储元件的二维网格,其可为交叉杆阵列(crossbar array)。可通过设置至少一个电阻存储元件的电阻值写入此类阵列。在一些示例中,元件可为二进制的,具有例如代表0或1的两个值中的一个。然而,已证实可采用多个值、例如32个不同水平(其可表示5比特)的电阻存储元件。忆阻器或其它电阻存储元件的交叉杆阵列可以处理输入电压矢量以提供输出矢量,在输出矢量中在该阵列的每个元件处由电导对输入值进行加权。这实际上意指该阵列对输入执行“点积(dot product)”矩阵运算以生成输出(因而此类阵列有时被称为“点积引擎”)。可通过使元件经受电压脉冲来对元件的权重进行“编程”,每个电压脉冲递增地改变那一元件的电阻。此类阵列与高密度、低功耗、长循环耐久性和快速切换速度相关联。
在一些示例中,将分配有输入数据的电阻存储器阵列写入以表示运算数或内核,这可适于对输入数据进行卷积。
框106包括将来自电阻存储器阵列执行的第一层的至少一个处理操作的输出数据进行缓冲。该方法进一步包括,在框108中,确定缓冲的输出数据是否超过执行第二处理层的至少一个处理操作的阈值数据量;并且倘若如此,那么根据第二处理层的处理操作来分配处理至少一部分缓冲的输出数据,在一些示例中其可为使用至少一个电阻存储器阵列的处理操作。
以此方式,当到达阈值时,第二处理层的处理可以开始(其可以在第一层的处理完成之前,即,阈值量可小于第一处理层的总预期输出)。换言之,可以在重叠的时间帧内执行第一层和第二层的至少一个处理操作,而不是等待第一处理层完成,接着根据第二处理层发送用于处理的数据。因此该方法可以提供一种数据处理的管道,其中至少部分同时执行处理层。这可加速处理,并可减少用于保存层的输出的存储容量规格,因为一旦将输出数据提供给第二层用于处理,就可以重新分配存储容量。
在一些示例中,阈值数据量基于足以执行第二处理层的至少一个处理操作的数据量。在一些此类示例中,阈值数据可为(或可至少为)足以执行第二处理层的至少一个处理操作的最小数据量。这可有助于降低存储容量规格。在一些示例中,阈值量可以与第一层的处理周期中的数据输出相关,即,可以以“单元”输出数据,每个单元为来自特定处理周期的输出,并且该阈值可与若干数据单元相关。
在一些示例中,可将数据分配给用于第一和第二处理层的处理操作的电阻存储器阵列。
在一些示例中,执行第二处理层的至少一个处理操作的电阻存储器阵列在包括存储器(例如,作为诸如eDRAM的嵌入式存储器)的处理单元内,并且对输出数据进行缓冲包括缓冲在处理单元的存储器中的输出数据以执行第二处理层的至少一个处理操作。换言之,可以在靠近与第二层相关联(或更一般地,与后一个处理层相关联)的处理装置的位置缓冲输出数据。该缓冲可为输出数据的第一或后续缓冲。
现在参考图2来描述可以例如用于对处理装置进行设置以执行图1的方法的方法。在框202中,基于层的相对处理速率,确定要分配给处理层的电阻存储器阵列的数目,其中该确定是为平衡层的处理速率。
换言之,分配给处理操作的处理速率较慢的层的阵列可以多于分配给处理速率较快的层的阵列,以便相较于其它层,通过增加一些层内的并形性(parallelism)而在整体上使每层的处理速率均衡。该确定可能例如为的是使层中阵列的平均使用率最大化,使得阵列的闲置周期减少或最小化。
在一个示例中,第二处理层与至少一个对第一处理层的输出数据进行缓冲的输入数据缓冲器相关联,并且框204包括由至少一个处理器基于阈值数据量(例如如上面关于框106和108所讨论的)和第一层与第二层之间处理速率的差(或处理操作的处理速率的差)中的至少一个来分配数据缓冲器的大小。
在一个示例中,处理层使用Ky阵列处理缓冲器的内容,其按阶段应用于输入数据部分。这可视觉化为落入移动窗口内的处理输入数据,其中根据步幅(stride)规定窗口的移动,并且参考图3a-c示出窗口的移动。在该示例中,输入数据部分包括编号为0至35的6×6值阵列,例如表示源自图像的特征映射,并且操作内核为2×2的操作内核。首先可以将该内核与图3a中粗体轮廓所示的左上方的4个值(值0、1、6和7)进行卷积。在该示例中,“步幅”为y方向上的一个值(一列)和x方向上的2个值(两行)。首先进行逐行移动。因此,执行的下个卷积介于操作内核与如图3b中粗体轮廓所示的头2列(值2、3、8和9)中的值的中央块之间。将运算数用作顺行向下的滑动窗口,直至头2列的所有数据块都经历卷积。接着,进行1值逐列(1-value column-wise)的移动,使得如图3c中粗体轮廓所示来处理第一行和第二行的第二值和第三值(值6、7、12和13)。该层中处理的特征可在于具有步幅Sx=2、Sy=1。处理速率由在单位时间内可执行多少卷积来确定。因此,假如内核由两个而非一个类似指定的电阻存储器阵列来表示,那么可将不同的数据部分与电阻存储器阵列中的每个进行卷积(即,一次可执行层的两个处理操作),并且用于那一层的处理速率可以加倍。
在该示例中,要注意的是,内核的每个移动意指它对两个新的数据值(即不包含在之前卷积中的两个数据值)进行运算。例如,为了将内核从它在图3a中的位置移到图3b,应该接收值8和9(值2和3之前已经接收)。因此,为了无闲置周期地使用此内核,应该在这段时间里从之前的层接收2个新的数据值,以用于该层中的一个处理操作。因此,为了平衡处理速率,给前一层分配的阵列数目可为分配给此示例层的2倍。因此,要注意的是,步幅可用于量化处理速率的差;和/或可基于(多个)层的(多个)步幅来确定层中资源。
图4为包括多个处理单元402的处理装置400的示例,其中每个处理单元402包括多个电阻存储器阵列404、缓冲器406和控制单元408。每个电阻存储器阵列404用于执行多层处理任务的一层中的处理操作。至少一个阵列404在多层处理任务的不同于至少一个其它阵列的层的层中执行处理操作。换言之,处理装置400在处于使得阵列被写入以表示操作内核的特定状态时,包括与多层的运算数相关联的阵列404。在一些示例中,处理装置400的阵列404可表示使用阵列404执行的全部或基本上全部的卷积层。
每个处理单元402可包括处理“瓦片(tile)”,在一个晶圆或芯片上可有至少一个这种瓦片(如果有多个瓦片,则可在一些示例中共享一些组件,例如缓冲器)。缓冲器406可包括嵌入式存储器,并可接收数据以用于相同处理单元402的电阻存储器阵列的处理。在一些示例中,缓冲器406可通过数据总线连接到处理单元402的电阻存储器阵列404,该数据总线被配置为处理最大带宽以在阵列404的一个数据运算周期(下文称作“阶段”)内将缓冲的数据携带至阵列404。在一些示例中,缓冲器406包括“先进先出”(FIFO)数据缓冲器,并以逐列的方式提供数据存储。当接收到数据时,这可被存储在缓冲器406中。当缓冲器406满时,可以覆盖(overwrite)数据,使得新数据会覆盖最旧的数据。
在此示例中,当控制单元408确定已在缓冲器406中接收足够的数据以使用至少一个阵列404执行处理任务时,其例如通过总线发送至少一部分数据以用至少一个电阻存储器阵列404处理。下面参考图5更具体地描述处理单元402的示例。
参考图3的示例,假设按顺序接收数据值,确定已在缓冲器中接收足够的数据以执行处理任务将包括对数据值0、1、6和7执行第一卷积时,确定已接收数据值0-7。
在此示例中,处理装置400进一步包括控制器410,以给多层处理任务的各层分配电阻存储器阵列容量和存储容量中的至少一个。例如,控制器410可执行图2或下面描述的图6的过程。在此示例中的处理装置400包括H树配置,进一步包括处理单元402之间的互联链路412。在一些示例中,可使用不同的拓扑,例如网格或“胖树”拓扑。
图5示出了处理单元500的示例,其能够例如提供图4的处理单元402,并且其中以类似的编号对类似的部件进行标记。在该示例中,阵列404为交叉杆阵列,各自具有128行和128列,并且多个原位乘法累加(IMA)单元502各自包含4个此类阵列404。每个阵列404与数字模拟转换器(DAC)单元504和移位保持(shift and hold)(S+H)单元506相关联。IMA单元502进一步包括输入寄存器IR508、模拟数字转换器ADC单元510、移位加(shift and add)(S+A)寄存器512和输出寄存器OR514。
处理单元500进一步包括至少一个共享的输出寄存器OR516,其可以存储来自多个IMA单元502的输出,直到由其接收在处理周期内那一层中的那个处理单元500的IMA单元502所处理的所有数据部分。处理单元500进一步包括可以结合IMA单元502使用的处理装置,包括移位加(S+A)单元518、最大池(max-pool)单元520和sigmoid单元522。总线526连接缓冲器406、IMA单元502和其它处理装置。
在将处理单元500用于任意处理层i的处理的示例中,可以接收数据输入(例如若干输入特征映射Ni,各自包括16比特值)。可以按阶段执行随后的操作,由最慢的阶段表示阶段时间,该最慢的阶段可包括读取阵列404,并且大约100ns。在第一阶段,读取缓冲器406(例如包括eDRAM)以提供数据部分,例如256个16比特输入。在总线526上将这些值发送给(多个)IMA单元502,其包括为执行层i的处理而分配的(多个)阵列404,并将这些值记录在输入寄存器508中。在该示例中,输入寄存器508具有1KB的最大容量,并用SRAM实现。可以指定总线526和缓冲器406,使得在100ns阶段内执行从缓冲器406完整复制高达1KB的数据给输入寄存器508。一旦将输入值复制到输入寄存器508,IMA单元502就为接下来的16个阶段执行点积运算。在接下来的16个阶段中,缓冲器406准备接收其它输入,并可将该数据编址到处理单元的(多个)其它IMA单元502(例如控制单元408可基于可将层标识到用于那层的(多个)IMA单元502的上下文,对数据进行引导)。
返回数据被发送到的IMA单元502,在该示例中,经过接下来的16个阶段,IR508为256个输入值的每个值,一次给阵列404馈送1比特。通过各DAC单元504将头128个比特发送到第一和第二阵列404,将接下来的128比特发送给第三和第四阵列404。在该示例中,层i用4×4个共享内核执行卷积,且内核步幅(Sx和Sy)等于1。
层i用4×4×16矩阵执行点积运算,即执行256个乘-加运算。可以并行执行32个此类运算以生成32个输出。这可用256个阵列行实现。因为这些32个操作各自是跨一行中8个2比特忆阻器单元执行的,所以这可以用256个阵列列实现。在一些示例中,这可以是一个阵列的大小,但在其它示例中,这可以由多个阵列表示。在该示例中,可以跨IMA单元502中大小为128×128的4个阵列404来表示256×256行和列。在该示例中,单个IMA单元502的4个阵列可执行层i的计算,但来自多个IMA单元502的阵列可执行层i的处理。
在每个100ns阶段结束时,将输出锁存(latch)在采样&保持单元506中。在下个阶段,将这些输出馈送给ADC单元510。然后将ADC单元510的结果馈送给移位加寄存器512,其中用IMA单元502中的输出寄存器514合并结果。输出寄存器514在该示例中为128B SRAM结构,但在其它示例中它可以具有其它大小和/或包括不同的存储器类型。在该示例中,输出寄存器514经过一个16阶段周期生成32个16比特值。在每个阶段中,将ADC单元510的结果进行移位并加到输出寄存器514的值。由于在此示例中该阶段为100ns阶段,因此这允许100ns更新到高达64个16比特值,这可以用4个并行的移位加单元实现,表示面积开销小。
在阶段19结束时(简要概括一下,如上所述,阶段1-18包括1个接收数据的阶段、16个处理数据的阶段、1个用于“采样保持”操作的阶段、1个用于“移位加”运算的阶段),IMA单元502中的输出寄存器514有其最终的输出值。这在总线526上被发送到中央输出寄存器516(如果跨多个IMA单元502扩展卷积,则通过移位加单元518)。中央输出寄存器516在阶段20结束时包含用于层i的最终结果。因此,在此示例中,用于示例性层i的处理周期(即用于访问、处理数据及返回结果的时间)包括20个阶段。同时,用于层i的IMA单元502可能已经开始处理其接下来的输入(例如用于层i的下个处理周期),因此可能在每个阶段一直忙(即用于层i的处理周期可以交错,或至少部分同时执行)。另外,接着传递来自层i的数据输出以用于层i+1中的处理,同时至少一个处理单元继续执行层i的至少一个处理操作(即可以在重叠的时间帧内执行层i的至少一个处理操作(处理周期或其阶段)和层i+1的至少一个处理操作,或换言之,执行层i中的至少一些处理可以与层i+1中的一些处理同时执行)。在其它示例中,如果处理层中使用多个IMA单元502,那么可将另一移位加或加合并结果的阶段用于多个IMA单元502的合并输出。
在一些示例中,输出数据可以由相同处理单元500的IMA单元502处理,或可以发送到另一处理单元500的缓冲器。在一个示例中,中央输出寄存器516的内容可以在至少一些层中由sigmoid单元522处理,例如在阶段21中,其可以作为平滑函数运算,将诸如tanh(x)的sigmoid函数应用于输出。在阶段22中,可以将sigmoid结果写到另一缓冲器406,其可以具体为与(多个)阵列404相关联的缓冲器406,用内核对阵列404进行写入以应用于下一处理层i+1。在此类示例中,用于层i的处理周期可包括22个阶段。如果这是相同处理单元500的另一IMA单元502,那么此缓冲器406可为用来存储用于层i+1的输入的缓冲器406。在一些示例中,可以使用相同处理单元500,除非其至少一个组件或组件类(例如缓冲器406或IMA单元502)被完全使用。
为了将多个值转换为较少的值,可使用最大池单元520。在一个示例中,层i可以输出32个输出以馈送到对每个滤波器上的每个2×2网格执行最大池操作的操作层i+1。32个大小缩减的滤波器接着作为输入被馈送到层i+2。在此情况下,在层i+1中,每个最大池运算可包括每64个阶段生成4个值的滤波器(用于IMA502、完成卷积以生成输出的16个阶段)。因此,可以每滤波器每64个阶段执行最大池运算。由于有并行生成输出的32个此类滤波器,因此可以每64个阶段并行执行用于32个滤波器的最大池。可以将最大池的结果写到在阶段27中用于层i+2的处理单元500的缓冲器406。
因此,要注意的是,不必是多层处理的每层都使用电阻存储器阵列404的情况。在一些层中,可将其它处理器类型用于对数据进行运算。
图6为一种方法的示例,该方法在一些示例中可为用于设置处理装置(例如图4的处理装置400)的方法。
框602包括使用电阻存储器阵列来确定用于多个层处理的处理管道,其中对于第一层之后的各层,对前一层的输出执行处理;并且其中至少部分同时执行用于至少2个层的处理。
框604包括确定用于处理管道的处理资源的分配,该分配包括确定层之间的电阻存储器阵列的分布,以便平衡前一层处理的比特的输出比特率与后一层处理中的处理比特率。
如上参考图3a-c已讨论的,在本文描述的一些示例中,一旦从前一层接收到足够的比特,就可以开始后一层的处理。考虑到图3的示例(但假设步幅为1而不是2),这意味着在下一层处理开始之前,就从前一层接收比特0-7。当前一层i-1生成输出数据值8时,可将它放在用于层i的输入缓冲器中。这时,值0不再有用,并可从输入缓冲器移除。因此,由层i-1生成的每个新输出允许层i通过一个阶段推进内核,并执行它自己的新运算。在此示例中,将一组输入(其可包括特征映射)馈送到Nof卷积内核以生成Nof个输出特征映射。这些内核中的每个可为电阻存储器阵列中不同的列,并可以并行地对一组输入进行运算。
如上关于图2和3所提及的,如果可在每个阶段后以步幅Sx和/或Sy移动Kx×Ky内核。如果例如Sx=2且Sy=1,那么在层i能够执行其下个处理操作前,前一层i-1必须生成2个值。更一般地,由层i-1为要执行的级别i处理操作而生成的输出值的数目为与级别i相关联的步幅值的函数。这可能导致不平衡的管道,其中层i-1的阵列在每个周期内都忙,而层i的阵列在一些周期内可能闲置,例如交替周期内在忙闲之间交替。为了使管道平衡,可以通过复制表示用于不同阵列中层i-1的(多个)内核的突触权重,使分配给层i-1的资源加倍,以便可以并行处理两个不同的输入矢量从而在一个周期内生成2个输出值。
图7包括一种包含图6的框620的方法。在此示例中,框702和704为通过给各层分配突触权重存储容量来确定电阻存储器阵列的分布(如框604中所述)的示例,存储容量用于存储突触权重。这可包括分配所有阵列的总比特容量以用于处理那个层(这些阵列的元素表示要施加于输入值的“权重”,在神经网络领域中称作突触权重,类似于脑突触)。在框702中,根据要处理的数据部分的数目(例如,用于那层的输入特征映射的数目Nif)、要输出的数据部分的数目(例如,用于那层的输出特征映射的数目Nof)以及对数据部分进行运算的运算数的大小(例如,内核大小Kx×Ky,其中Ky和Kx为内核中列与行的数目),来确定用于最后层的存储容量。
例如,如果期望最后层在每周期中都生成输出,那么可以用存储器对它进行分配以存储Kx×Ky×Nif×Nof个突触权重。
框704包括确定对至少一个前面的层所分配的突触权重存储容量。这可以根据要处理的数据部分的数目(Nif)、要输出的数据部分的数目Nof、对数据部分进行运算的运算数的大小(例如,内核大小Kx×Ky)以及在处理层中执行的处理操作的输出比特率来确定(例如,基于步幅确定,使得当步幅较高时存储器分配增加,或当处理操作的输出比特率较低时相反)。
在一个示例中,对层i分配的突触权重存储器可为Kxi×Kyi×Nifi×Nofi×Sxi+1×Syi+1。因此,如果Sxi+1或Syi+1大于1,那么这允许多次存储用于层i的权重。
在一些示例中,如果聚合存储规格超过芯片上的可用存储一个因子(例如因子2),那么除了最后的层之外,可将分配给各层的存储减少该因子。在此类示例中,管道保持平衡,并且大多数阵列可能在每个周期内都忙;但最后一层可以执行运算,并且在某些周期而不是其它周期内生成结果(如果因子为因子2,那么可在每个交替周期内都生成结果)。
确定每个层的突触权重规格可能接着导致将阵列分配给每个层,因为突触权重可由阵列的元素表示。
框706包括将缓冲存储容量分配给每个层,缓冲存储容量存储用于层中处理的输入数据,其中基于要并行处理的数据部分(例如,其可包括特征映射)的数目(Nif)(即,一次执行多少处理操作)、要用每个阵列处理的输入特征映射的行数以及对数据部分进行运算的运算数的大小(例如,内核大小Kx×Ky),来确定缓冲存储容量。
例如,缓冲器可被分配为包括用于至少:((Nx×(Ky-1))+Kx)×Nif的存储空间,其中Nx为输入特征映射中的行数,Ky和Kx为内核中列和行的数目,并且Nif为用于层的输入特征映射的数目。
要注意的是,如果要处理整个层并且存储输出特征映射,那么在启动层i之前,这会根据层i-1建议Nx×Ny×Nif的缓冲容量。因此,通过在前一层继续时启动一个层,这可以减少规定的缓冲容量约Ny/Ky。
在上面的示例中,处理单元402的控制单元408可在层之间路由数据。然而,在其它示例中,控制器410可以路由数据,和/或可以有中央缓冲器以及或代替处理单元402的缓冲器406。在一些示例中,将在特定层中编址的数据部分保存在控制器410和/或控制单元408可访问的目的地寄存器中(可以为各层提供目的寄存器之一)。
图8示出了可以由处理单元402、500接收的数据包800。在此示例中,数据包800包括路由信息802(其包括网络元数据,例如标识处理单元402、500的目的地标识符)、虚拟电路信息804、层索引806、数据段(data piece)的编号的指示808(在此示例中为2)和至少一个数据段810。在此示例中,每个数据块810包括输入索引810a和多个数据位(data bit)810b。数据位的数量可与阵列404的输入行的数量相同。
在一个示例中,在接收此类数据包800时,处理单元402、500可根据以下的数据流操作:
可以拆封引入的数据包800,例如在处理单元402的控制单元408的解封(depack)单元中。层索引806可提供对映射表的索引,其可由控制单元408访问以标识IMA单元502和/或阵列404(由其处理每个数据段810)。在一层具有多个数据段的情况下,可使用数据段810的输入索引810a。
可提供本公开中的示例作为方法、系统或机器可读指令,例如软件、硬件、固件等的任意组合。此类机器可读指令可包含在其中或其上具有计算机可读程序代码的计算机可读存储介质(包括但不限于磁盘存储、CD-ROM、光存储等)上。
参考根据本公开的示例的方法、设备和系统的流程图和/或框图描述了本公开。虽然上面描述的流程图示出了具体的执行顺序,但执行顺序可不同于所描述的。可将关于一个流程图描绘的框与另一流程图的那些组合。应理解的是,流程图和/或框图中每个流程和/或框以及流程图和/或框图中的流程和/或图的组合可由机器可读指令实现。
机器可读指令可以例如由通用计算机、专用计算机、其它可编程数据处理设备的一个或多个嵌入式处理器执行,从而实现说明书和附图中描述的功能(例如,控制器410、控制单元408、最大池单元520、sigmoid单元522等)。尤其是,处理器或处理装置可以执行机器可读指令。因此,装置和设备的功能模块可以由执行存储在存储器中的机器可读指令的处理器或根据嵌入逻辑电路的指令操作的处理器来实现。术语“处理器”被广义解释为包括CPU、处理单元、ASIC、逻辑单元或可编程门阵列等。方法和功能模块可以全都由单个处理器执行,或在数个处理器间划分。
此类机器可读指令还可以存储在计算机可读介质(其可指导计算机或其它可编程数据处理设备在特定模式中操作)中。
还可以将此类机器可读指令加载到计算机或其它可编程数据处理设备上,以使计算机或其它可编程数据处理设备执行一系列操作以生成计算机实现的处理,因而在计算机或其它可编程设备上执行的指令实现由流程图中的(多个)流程和/或框图中的(多个)框所指明的功能。
此外,可以以计算机软件产品的形式实现本文的教导,计算机软件产品存储在存储介质内,并且包括用于使计算机设备实现本公开的示例中所述的方法的多个指令。
尽管参考某些示例描述了方法、装置和相关方面,但在不背离本公开的精神的情况下,可以进行各种修改、变化、省略和替换。因此,方法、装置和相关方面旨在仅限于随后的权利要求及其等效方式。应该注意,上面提及的示例说明而非限制本文所描述的,并且在不背离所附的权利要求的范围的情况下,本领域技术人员将能够设计许多替代的实施方式。关于一个示例所描述的特征可与另一示例的特征相结合。
词“包括”不排除存在除了权利要求中列出的那些元件之外的元件,“一个”或“一种”不排除多个,并且单个处理器或其它单元可以满足权利要求中记载的数个单元的功能。
任意从属权利要求的特征可与独立权利要求或其它从属权利要求的特征相结合。
Claims (15)
1.一种方法,包括:
在存储器中接收要在第一处理层和第二处理层中处理的输入数据,其中,在所述第二处理层中,对所述第一处理层的处理操作的输出执行处理操作,并且使用至少一个电阻存储器阵列来执行所述第一处理层的处理操作;
根据所述第一处理层的至少一个处理操作,分配要处理的所述输入数据;
将来自所述第一处理层的至少一个处理操作的输出数据进行缓冲;
确定缓冲的输出数据是否超过执行所述第二处理层的至少一个处理操作的阈值数据量;并且,当确定所述缓冲的输出数据超过阈值数据量时;
根据第二处理层的至少一个处理操作,分配要处理的至少一部分所述缓冲的输出数据。
2.根据权利要求1所述的方法,其中所述阈值数据量基于足以执行所述第二处理层的至少一个处理操作的数据量。
3.根据权利要求1所述的方法,进一步包括在重叠的时间帧内执行所述第一处理层和所述第二处理层的至少一个处理操作。
4.根据权利要求1所述的方法,进一步包括将输入数据分配给用于所述第一处理层和所述第二处理层的处理操作的不同电阻存储器阵列。
5.根据权利要求1所述的方法,其中使用电阻存储器阵列执行所述第二处理层的至少一个处理操作,并且所述电阻存储器阵列在包括存储器的处理单元内,并且其中将输出数据进行缓冲包括缓冲在处理单元的存储器中的输出数据以执行所述第二处理层的至少一个处理操作。
6.根据权利要求1所述的方法,其中每个层与处理速率相关联,所述方法包括基于所述层的相对处理速率,由至少一个处理器确定要分配给处理层的电阻存储器阵列的数目,其中所述确定是为平衡所述层的处理速率。
7.根据权利要求1所述的方法,其中将所述第一处理层的输出数据缓冲在所述第二处理层的至少一个输入数据缓冲器中,所述方法包括由至少一个处理器基于以下中的至少一个来分配数据缓冲器的大小:所述阈值数据量;所述第一处理层和所述第二处理层之间处理速率的差;以及所述第一处理层的处理操作与所述第二处理层的处理操作的处理速率的差。
8.一种处理单元,包括多个电阻存储器阵列、缓冲器和控制单元,其中每个所述电阻存储器阵列用于执行多层处理任务的一层中的处理操作,其中:
所述缓冲器接收输入数据;并且
所述处理单元的所述控制单元:
确定在所述缓冲器中接收到足够的数据以使用至少一个所述电阻存储器阵列来执行处理任务;
发送至少一部分数据以使用至少一个电阻存储器阵列进行处理。
9.根据权利要求8所述的处理单元,进一步包括至少一个输出寄存器,以存储来自多个电阻存储器阵列的输出,直到从其接收由那一处理单元的电阻存储器阵列在一层的处理周期内要处理的所有数据部分。
10.根据权利要求8所述的处理单元,其中至少一个阵列执行所述多层处理任务的第一层中的处理操作,并且至少一个阵列执行所述多层处理任务的第二层中的处理操作。
11.根据权利要求8所述的处理单元,进一步包括至少一个移位加单元、最大池单元和sigmoid单元。
12.根据权利要求8所述的处理单元,其中所述控制单元包括多个原位乘法累加单元,所述原位乘法累加单元各自包括与至少一个移位保持单元相关联的多个电阻存储器阵列。
13.一种方法,包括:
使用电阻存储器阵列确定用于多层处理的处理管道,其中对于第一层之后的各层,对前一层的输出执行处理;并且其中至少部分同时执行用于至少两层的处理;和
确定用于所述处理管道的处理资源的分配,所述分配包括确定至少两层之间电阻存储器阵列的分布,以便平衡前一层的处理的比特的输出比特率和后一层的处理中的处理比特率。
14.根据权利要求13所述的方法,其中确定处理资源的分配包括确定用于每个所述层的突触权重存储容量,所述突触权重存储容量用于存储突触权重,
其中根据要处理的数据部分的数目、要输出的数据部分的数目以及对所述数据部分进行运算的运算数的大小,来确定用于最后层的所述突触权重存储容量;并且
其中根据要处理的数据部分的数目、要输出的数据部分的数目以及对所述数据部分进行运算的运算数的大小和在所述层中执行的处理的输出比特率,来确定用于至少一个前面的层的所述突触权重存储容量。
15.根据权利要求13所述的方法,进一步包括将缓冲存储容量分配给每个所述层,所述缓冲存储容量对用于所述层中处理的输入数据进行存储,其中基于要处理的数据部分的数目、要对所述数据部分执行的并行运算的数目以及对所述数据部分进行运算的运算数的大小,来确定所述缓冲存储容量。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2016/025151 WO2017171771A1 (en) | 2016-03-31 | 2016-03-31 | Data processing using resistive memory arrays |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107533459A true CN107533459A (zh) | 2018-01-02 |
CN107533459B CN107533459B (zh) | 2020-11-20 |
Family
ID=59965058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680023228.XA Active CN107533459B (zh) | 2016-03-31 | 2016-03-31 | 使用电阻存储器阵列的数据处理方法和单元 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10942673B2 (zh) |
EP (1) | EP3265907B1 (zh) |
CN (1) | CN107533459B (zh) |
WO (1) | WO2017171771A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109635941A (zh) * | 2018-11-06 | 2019-04-16 | 华中科技大学 | 一种基于1t1r存储器件的最大池化处理器 |
CN111091186A (zh) * | 2018-10-24 | 2020-05-01 | 旺宏电子股份有限公司 | 供机器学习的存储器内数据池化的装置及其方法 |
CN111307182A (zh) * | 2020-03-06 | 2020-06-19 | 宁波飞芯电子科技有限公司 | 数据处理方法及阵列型传感器 |
CN111681697A (zh) * | 2019-03-11 | 2020-09-18 | 华邦电子股份有限公司 | 半导体储存装置 |
US11562229B2 (en) | 2018-11-30 | 2023-01-24 | Macronix International Co., Ltd. | Convolution accelerator using in-memory computation |
US11934480B2 (en) | 2018-12-18 | 2024-03-19 | Macronix International Co., Ltd. | NAND block architecture for in-memory multiply-and-accumulate operations |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016175781A1 (en) * | 2015-04-29 | 2016-11-03 | Hewlett Packard Enterprise Development Lp | Discrete-time analog filtering |
WO2017171771A1 (en) | 2016-03-31 | 2017-10-05 | Hewlett Packard Enterprise Development Lp | Data processing using resistive memory arrays |
JP6852365B2 (ja) * | 2016-11-25 | 2021-03-31 | 富士通株式会社 | 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法 |
US10402527B2 (en) | 2017-01-04 | 2019-09-03 | Stmicroelectronics S.R.L. | Reconfigurable interconnect |
CN108269224B (zh) | 2017-01-04 | 2022-04-01 | 意法半导体股份有限公司 | 可重新配置的互连 |
CN106920545B (zh) * | 2017-03-21 | 2020-07-28 | 百度在线网络技术(北京)有限公司 | 基于人工智能的语音特征提取方法和装置 |
US10600147B2 (en) * | 2017-08-22 | 2020-03-24 | Intel Corporation | Efficient memory layout for enabling smart data compression in machine learning environments |
KR102442055B1 (ko) * | 2017-09-26 | 2022-09-13 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
US11861429B2 (en) | 2018-04-30 | 2024-01-02 | Hewlett Packard Enterprise Development Lp | Resistive and digital processing cores |
KR102525165B1 (ko) * | 2018-12-18 | 2023-04-24 | 삼성전자주식회사 | 연산 회로를 포함하는 비휘발성 메모리 장치 및 이를 포함하는 뉴럴 네트워크 시스템 |
EP3889844A4 (en) * | 2018-12-29 | 2021-12-29 | Huawei Technologies Co., Ltd. | Neural network system and data processing technology |
US11620510B2 (en) * | 2019-01-23 | 2023-04-04 | Samsung Electronics Co., Ltd. | Platform for concurrent execution of GPU operations |
US11042715B2 (en) | 2019-04-11 | 2021-06-22 | International Business Machines Corporation | Electronic system for performing a multiplication of a matrix and vector |
US11531898B2 (en) * | 2019-05-16 | 2022-12-20 | International Business Machines Corporation | Training of artificial neural networks |
US20210142153A1 (en) * | 2019-11-07 | 2021-05-13 | International Business Machines Corporation | Resistive processing unit scalable execution |
US11593609B2 (en) | 2020-02-18 | 2023-02-28 | Stmicroelectronics S.R.L. | Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks |
US11531873B2 (en) | 2020-06-23 | 2022-12-20 | Stmicroelectronics S.R.L. | Convolution acceleration with embedded vector decompression |
US11823035B2 (en) | 2020-07-07 | 2023-11-21 | Qualcomm Incorporated | Power-efficient compute-in-memory pooling |
KR20220010362A (ko) * | 2020-07-17 | 2022-01-25 | 삼성전자주식회사 | 뉴럴 네트워크 장치 및 그의 동작 방법 |
US12112200B2 (en) | 2021-09-13 | 2024-10-08 | International Business Machines Corporation | Pipeline parallel computing using extended memory |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5101361A (en) * | 1989-09-29 | 1992-03-31 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Analog hardware for delta-backpropagation neural networks |
CN102341815A (zh) * | 2009-05-21 | 2012-02-01 | 国际商业机器公司 | 使用记忆切换元件的具有尖峰-时间依赖塑性的电子学习突触 |
CN103430186A (zh) * | 2012-01-20 | 2013-12-04 | 松下电器产业株式会社 | 神经网络电路的学习方法 |
CN103778468A (zh) * | 2014-01-16 | 2014-05-07 | 北京大学 | 一种基于rram的新型神经网络电路 |
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 |
WO2016018397A1 (en) * | 2014-07-31 | 2016-02-04 | Hewlett-Packard Development Company, L.P. | Assigning redundancy in encoding data onto crossbar memory arrays |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5745409A (en) | 1995-09-28 | 1998-04-28 | Invox Technology | Non-volatile memory with analog and digital interface and storage |
US7912889B1 (en) | 2006-06-16 | 2011-03-22 | Nvidia Corporation | Mapping the threads of a CTA to the elements of a tile for efficient matrix multiplication |
FR2936626B1 (fr) | 2008-09-30 | 2011-03-25 | Commissariat Energie Atomique | Dispositif de traitement en parallele d'un flux de donnees |
US8487655B1 (en) | 2009-05-05 | 2013-07-16 | Cypress Semiconductor Corporation | Combined analog architecture and functionality in a mixed-signal array |
FR2977351B1 (fr) * | 2011-06-30 | 2013-07-19 | Commissariat Energie Atomique | Methode d'apprentissage non supervise dans un reseau de neurones artificiel a base de nano-dispositifs memristifs et reseau de neurones artificiel mettant en oeuvre la methode. |
FR2988190A1 (fr) | 2012-03-13 | 2013-09-20 | Commissariat Energie Atomique | Procede d'acquisition et de traitement de signaux |
US8959136B1 (en) | 2012-05-08 | 2015-02-17 | Altera Corporation | Matrix operations in an integrated circuit device |
US9304913B2 (en) | 2013-03-15 | 2016-04-05 | Qualcomm Incorporated | Mixed memory type hybrid cache |
US10019352B2 (en) * | 2013-10-18 | 2018-07-10 | Sandisk Technologies Llc | Systems and methods for adaptive reserve storage |
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 |
KR20170074234A (ko) | 2014-10-23 | 2017-06-29 | 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 | 내적을 결정하기 위한 멤리스티브 크로스바 어레이 |
US9847125B2 (en) | 2015-08-05 | 2017-12-19 | University Of Rochester | Resistive memory accelerator |
US10901939B2 (en) | 2015-10-30 | 2021-01-26 | International Business Machines Corporation | Computer architecture with resistive processing units |
US10664271B2 (en) | 2016-01-30 | 2020-05-26 | Hewlett Packard Enterprise Development Lp | Dot product engine with negation indicator |
WO2017171771A1 (en) | 2016-03-31 | 2017-10-05 | Hewlett Packard Enterprise Development Lp | Data processing using resistive memory arrays |
US9640256B1 (en) | 2016-05-26 | 2017-05-02 | Nxp Usa, Inc. | Nonvolatile static random access memory (NVSRAM) system having a static random access memory (SRAM) array and a resistive memory array |
US9910827B2 (en) | 2016-07-01 | 2018-03-06 | Hewlett Packard Enterprise Development Lp | Vector-matrix multiplications involving negative values |
US10559344B2 (en) | 2016-09-16 | 2020-02-11 | Aspiring Sky Co. Limited | Hybrid non-volatile memory devices with static random access memory (SRAM) array and non-volatile memory (NVM) array |
-
2016
- 2016-03-31 WO PCT/US2016/025151 patent/WO2017171771A1/en active Application Filing
- 2016-03-31 EP EP16894800.8A patent/EP3265907B1/en active Active
- 2016-03-31 CN CN201680023228.XA patent/CN107533459B/zh active Active
- 2016-03-31 US US15/571,340 patent/US10942673B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5101361A (en) * | 1989-09-29 | 1992-03-31 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Analog hardware for delta-backpropagation neural networks |
CN102341815A (zh) * | 2009-05-21 | 2012-02-01 | 国际商业机器公司 | 使用记忆切换元件的具有尖峰-时间依赖塑性的电子学习突触 |
CN103430186A (zh) * | 2012-01-20 | 2013-12-04 | 松下电器产业株式会社 | 神经网络电路的学习方法 |
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 |
CN103778468A (zh) * | 2014-01-16 | 2014-05-07 | 北京大学 | 一种基于rram的新型神经网络电路 |
WO2016018397A1 (en) * | 2014-07-31 | 2016-02-04 | Hewlett-Packard Development Company, L.P. | Assigning redundancy in encoding data onto crossbar memory arrays |
Non-Patent Citations (1)
Title |
---|
MAHDI NAZM BOJNORDI ET AL..: "Memristive Boltzmann machine: A hardware accelerator for combinatorial optimization and deep learning", 《2016 IEEE INTERNATIONAL SYMPOSIUM ON HIGH PERFORMANCE COMPUTER ARCHITECTURE(HPCA)》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111091186A (zh) * | 2018-10-24 | 2020-05-01 | 旺宏电子股份有限公司 | 供机器学习的存储器内数据池化的装置及其方法 |
TWI768174B (zh) * | 2018-10-24 | 2022-06-21 | 旺宏電子股份有限公司 | 供機器學習的記憶體內資料池化的裝置及其方法 |
US11636325B2 (en) | 2018-10-24 | 2023-04-25 | Macronix International Co., Ltd. | In-memory data pooling for machine learning |
CN111091186B (zh) * | 2018-10-24 | 2024-01-09 | 旺宏电子股份有限公司 | 供机器学习的存储器内数据池化的装置及其方法 |
CN109635941A (zh) * | 2018-11-06 | 2019-04-16 | 华中科技大学 | 一种基于1t1r存储器件的最大池化处理器 |
CN109635941B (zh) * | 2018-11-06 | 2022-02-15 | 华中科技大学 | 一种基于1t1r存储器件的最大池化处理器 |
US11562229B2 (en) | 2018-11-30 | 2023-01-24 | Macronix International Co., Ltd. | Convolution accelerator using in-memory computation |
US11934480B2 (en) | 2018-12-18 | 2024-03-19 | Macronix International Co., Ltd. | NAND block architecture for in-memory multiply-and-accumulate operations |
CN111681697A (zh) * | 2019-03-11 | 2020-09-18 | 华邦电子股份有限公司 | 半导体储存装置 |
CN111307182A (zh) * | 2020-03-06 | 2020-06-19 | 宁波飞芯电子科技有限公司 | 数据处理方法及阵列型传感器 |
CN111307182B (zh) * | 2020-03-06 | 2022-08-23 | 宁波飞芯电子科技有限公司 | 数据处理方法及阵列型传感器 |
Also Published As
Publication number | Publication date |
---|---|
EP3265907B1 (en) | 2019-08-21 |
EP3265907A1 (en) | 2018-01-10 |
EP3265907A4 (en) | 2018-03-14 |
CN107533459B (zh) | 2020-11-20 |
US10942673B2 (en) | 2021-03-09 |
WO2017171771A1 (en) | 2017-10-05 |
US20180113649A1 (en) | 2018-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107533459A (zh) | 使用电阻存储器阵列的数据处理 | |
CN111047031B (zh) | 用于神经网络中的数据重用的移位装置 | |
US11568200B2 (en) | Accelerating sparse matrix multiplication in storage class memory-based convolutional neural network inference | |
JP7379581B2 (ja) | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング | |
US11126549B2 (en) | Processing in-memory architectures for performing logical operations | |
US20160196488A1 (en) | Neural network computing device, system and method | |
CN110334799A (zh) | 基于存算一体的神经网络推理与训练加速器及其运行方法 | |
CN108304922A (zh) | 用于神经网络计算的计算设备和计算方法 | |
CN111465943B (zh) | 一种集成电路和用于神经网络处理的方法 | |
CN111105023A (zh) | 数据流重构方法及可重构数据流处理器 | |
EP3971787A1 (en) | Spatial tiling of compute arrays with shared control | |
CN114692854A (zh) | 用于生成人工神经网络模型的内核的npu及其方法 | |
Liu et al. | Era-bs: Boosting the efficiency of reram-based pim accelerator with fine-grained bit-level sparsity | |
CN111949405A (zh) | 资源调度方法、硬件加速器及电子设备 | |
CN109582911B (zh) | 用于实行卷积的计算装置及实行卷积的计算方法 | |
CN114282667A (zh) | 一种通过异构架构增强忆阻器计算系统安全性的方法 | |
US11694065B2 (en) | Spiking neural unit | |
US11556765B2 (en) | Neuromorphic system and operating method thereof | |
CN114072778A (zh) | 存储器处理单元架构 | |
CN114004344A (zh) | 神经网络电路 | |
US11972349B1 (en) | Flexible compute array utilization in a tensor processor | |
CN116386687B (zh) | 一种平衡电压降影响的存储器阵列 | |
US11586895B1 (en) | Recursive neural network using random access memory | |
EP4296900A1 (en) | Acceleration of 1x1 convolutions in convolutional neural networks | |
Shindo et al. | Evaluation of Task Mapping on Multicore Neural Network Accelerators |
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 |