CN111048135A - 一种基于忆阻器内存计算的cnn处理装置及其工作方法 - Google Patents

一种基于忆阻器内存计算的cnn处理装置及其工作方法 Download PDF

Info

Publication number
CN111048135A
CN111048135A CN201811193203.1A CN201811193203A CN111048135A CN 111048135 A CN111048135 A CN 111048135A CN 201811193203 A CN201811193203 A CN 201811193203A CN 111048135 A CN111048135 A CN 111048135A
Authority
CN
China
Prior art keywords
row
group
neurons
array
cnn
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
Application number
CN201811193203.1A
Other languages
English (en)
Inventor
马建国
刘鹏
周绍华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin University Marine Technology Research Institute
Original Assignee
Tianjin University Marine Technology Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianjin University Marine Technology Research Institute filed Critical Tianjin University Marine Technology Research Institute
Priority to CN201811193203.1A priority Critical patent/CN111048135A/zh
Publication of CN111048135A publication Critical patent/CN111048135A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

一种基于忆阻器内存计算的CNN处理装置及其工作方法,属于非易失性存储器和神经网络领域,其将ReRAM的每个交叉开关矩阵分为内存和缓存,并添加ALU,在其每条位线通过传输门与下侧相邻位线相连,将要处理的输入数据存入内存,将卷积核的权重按列依次输入到字线上,将位线上的数据存入缓存中,累加该结果即可获得卷积的结果,从而获得卷积层输出,并通过ALU完成激励层和池化层计算,重复上述步骤至获得全连接层的输入并存入处理单元阵列内存的第一列,将每组权重依次输入内存中相应的字线并从位线获得输出结果。本发明能够提升CNN处理装置的内存容量,减小读取输入数据的开销,并提高运算的并行度,提高CNN处理的速度。

Description

一种基于忆阻器内存计算的CNN处理装置及其工作方法
技术领域
本发明属于非易失性存储和神经网络领域,尤其涉及一种基于忆阻器内存计算的CNN处理装置及其工作方法。
背景技术
目前,卷积神经网络(Convolutional Neural Network,CNN)等神经网络是进行目标识别、图像检测与分割等任务时极为常见的手段,而且图像等输入数据通常都是非负值。但卷积神经网络的实现过程中包含了大量的运算,尤其是卷积运算,因此通过传统的CPU等并行度低的处理器实现CNN的时候,需要花费极高的时间和功耗代价,而通过GPU等并行度高的处理器实现CNN,因为其本身没有对CNN进行专门的设计,因此也会造成资源的利用效率较低。
近几年,出现了专用的神经网络处理器,用于对CNN等神经网络进行加速实现,其中通常包含了大量的向量运算模块、乘加运算模块或者卷积运算模块,用于实现大规模并行的乘加运算等,如专利《神经网络处理器和卷积神经网络处理器》、《基于计算阵列的神经网络处理器》和论文《A 1.9nJ/pixel Embedded Deep Neural Network Processor forHigh Speed Visual Attention in a Mobile Vision Recognition SoC》等。但上述处理器面临众多问题:大规模的并行运算模块占据了大量的资源,芯片面积较大,运行的时候功耗也很高;上述处理器中采用的都是SRAM一类的易失性存储器,功耗高,存储密度低,因此无法缓存更多的数据,而神经网络处理的数据量通常都极大,因此上述处理器通常都需要一个较大的外部存储器;而且通常上述处理器都是采用了传统的冯诺依曼结构,因此无法避免存储墙(memory-wall)的问题,从各级存储器中获取数据到运算模块中花费了较长的时间。
通过基于忆阻器的内存计算(processing in memory,PIM)实现神经网络,是最近几年提出的一种新的方法。忆阻器是构成ReRAM(阻变式存储器)的基础器件,通常以crossbar(交叉开关矩阵)的形式体现。该方法将由忆阻器构成的ReRAM作为内存,将神经网络中的权重(weight)数据存储在内存中,并直接在内存上添加完成神经网络各种计算所需的运算电路构成一个处理单元,将所要处理的神经元数据输入该单元,通过内存计算完成神经元与权重的卷积等运算。PRIME: A Novel Processing-in-memory Architecture forNeural Network Computation in ReRAM-based Main Memory中,将权重数据存储于ReRAM的一个小块中,每个存储单元(cell)存储一个权重数据,通过ReRAM的字线(wordline)将要处理的神经元数据输入ReRAM中作为输入电压,其与cell中代表权重数据的电导率相乘,位线(bitline)上的电流就是该次乘法运算的结果,一组位线上的电流合成一个电流,就是该组权重数据与神经元数据的乘加运算结果,将多条位线上的数据加起来即可得到一个卷积结果。论文Training and Operation of an Integrated Neuromorphic Network Basedon Metal-Oxide Memristors则是在忆阻器上设计了一个全连接的10输入3输出的single-layer perceptron神经网络,在忆阻器的一个crossbar(交叉开关矩阵)上存储了30个权重数据,10个输入信号输入到crossbar上,3个输出信号输出结果,每个crossbar包括字线(wordline)和位线(bitline),存储单元(cell)位于字线和位线的交点,输入信号连接到字线上,输出信号由位线输出。专利《含有三维存储阵列的集成神经网络处理器》、《电路结构及神经网络芯片》和《一种基于存储阵列的神经网络的训练方法》中,存储阵列中的存储数据用于表征层之间的连接权重,输入神经元数据进行计算。上述方法都是利用了基于非易失性存储器的内存计算模块来实现神经网络,通过将计算模块靠近存储来减小计算过程中读写数据的开销,通过引入非易失性存储器来提高内存计算模块中的数据存储量并降低功耗,通过部分非易失性存储器本身的计算功能来对神经网络的乘加运算进行加速。但上述方法中同样存在多个问题:内存计算模块中的内存单元存放的是神经突触的权重数据,而没有存储神经元数据,因此在处理高分辨率的图像等大型数据时,需要耗费较多的其他存储设备进行存储,而这些其他的存储设备同样存在数据墙的问题,这些大规模的神经元数据在进行读取时同样需要较大的开销;上述方法中,内存计算模块的并行度和对神经网络的加速能力与权重的个数成正比,在CNN、RNN等较为常用的先进的神经网络中,权重数据比较少,因此上述方法对CNN、RNN的并行加速效果较差;上述方法中,通常采用多个内存计算模块存储同样的权重数据构成来一个并行的内存计算模块阵列,每个内存计算模块分别对不同的神经元数据同时进行乘加运算以提高运算的并行度,但如此则存储了大量相同的数据,降低了内存的使用效率。
发明内容
为了解决现有神经网络处理器中内存容量不足、存储墙(memory-wall)问题严重、运算并行度低等缺陷,本发明提出了一种基于忆阻器内存计算的CNN处理装置及其工作方法,对面向神经网络的内存计算(PIM)架构进行了改进,该处理阵列在面对高分辨率图像等大型神经元数据时,能够提供更高的内存容量和更高的并行度,对使用CNN等神经网络处理高分辨率图像等任务具有极高的效率提升。
一种基于忆阻器内存计算的CNN处理装置及其工作方法是通过以下技术方案实现的。
一种基于忆阻器内存计算的CNN处理装置,在一块ReRAM的每一个crossbar上添加算术逻辑单元(ALU)等辅助电路构成一个CNN处理单元,其中算术逻辑单元(ALU)用于完成CNN中激励层、池化层、归一化层等层次中的计算任务,包括全加、比较、移位等,整块ReRAM构成一个CNN处理单元阵列,在所述crossbar的每一条位线上均添加一个传输门,每一条位线连接到传输门的输入端,每一个传输门与一条位线一一对应,每一条位线对应的传输门的输出端与其所在crossbar的下侧相邻crossbar的相同位置的位线相连,用于控制位线上信号的传输,所述算术逻辑单元(ALU)的输入端与其所在的crossbar中所有的传输门的输出端相连,用于实现对周围crossbar中的数据进行计算。
一种基于忆阻器内存计算的CNN处理装置的工作方法,其中ReRAM共有a×b个crossbar,构成一个a行b列的阵列,每个crossbar的字线的条数为L,位线的条数为n,CNN的卷积核阵列的大小为h×h,输入层包括c×d个神经元,共c行d列,具体包括以下步骤:
第一步,将每个crossbar的前m条字线所连接的存储单元构成一个m×n存储阵列,所有的crossbar的存储阵列构成CNN处理单元阵列的内存,内存中共有a×m×b×n个存储单元,其中共有a×m条字线,每条字线均是一行crossbar中相同位置的字线连接而成,构成一个a×m行b×n列的存储阵列,将crossbar中m×n存储阵列之外其他的存储空间作为该CNN处理单元的缓存,将CNN所要处理的输入层c×d个神经元按照其在输入层中的顺序存入CNN处理单元阵列的内存中,在内存中占据了e行f列个存储单元,构成一个e×f神经元阵列,有e条字线和f条位线;
第二步,将卷积核阵列的第一列h1作为输入信号,连接到CNN处理单元阵列中e×f神经元阵列的字线上,具体连接方式为h1的每个权重按照顺序从上到下依次连接到e×f神经元阵列中的一条字线上,即在e×f神经元阵列中的第1行开始到第h行的字线上依次连接h1的权重,第h+1行到第2h行的字线上同样依次连接h1的权重数值信号,依次类推,直至第⌊e÷h⌋×h-h+1行到第⌊e÷h ⌋×h行的字线上同样依次连接h1的权重,共需要连接⌊e÷h ⌋组h1信号,对应的将e×f神经元阵列分出了⌊e÷h ⌋组神经元,记为H1、H2、……、H⌊e÷h ⌋,其中H1是第1行到第h行,H2是第h+1行到第2h行,依此类推,直到第⌊e÷h ⌋×h行,每组神经元分别连接一组h1,其中⌊e÷h ⌋是e÷h向下取整;
第三步,将连接的h1信号激活,即输入h1的权重数值到其连接的字线上,收取激活每一组h1后第1条到第f-h+1条位线上的结果数据,具体方法是,使每个crossbar每次只激活一组h1中的信号,对应其连接的H1、H2、……、H⌊e÷h ⌋中的一组神经元,所有的crossbar同时进行激活,若一个crossbar的字线连接了两组及两组以上的h1信号,则依次激活该crossbar连接的各组h1信号并收取结果数据,若上下相邻的两个crossbar连接了同一组h1信号,则两个crossbar之间的传输门打开,使所述两个crossbar共同激活该组h1信号,否则,传输门关闭;
第四步,将激活每一组h1后第1条到第f-h+1条位线上的结果数据,分别依次存储在第2条到第f-h+2条位线在该组h1信号所连接最后一条字线所在crossbar的缓存中,其存储方法是,同一组h1信号的结果数据所在的存储单元由同一条字线相连,即一组h1的f-h+1个结果数据依次存储在地址坐标为(g,2)、(g,3)、(g,4)、……、(g,f-h+2)的一组存储单元上,该组存储单元都由字线g连接,共有⌊e÷h ⌋组结果数据,分别对应H1、H2、……、H⌊e÷h ⌋;
第五步,将输入信号由h1信号换成卷积核阵列的第二列h2信号,重复第二步的步骤;
第六步,按照第三步的方法将连接的h2信号激活,同时,在激活H1、H2、……、H⌊e÷h ⌋中一组神经元所连接的一组h2的同时,将逻辑1信号输入到该组神经元所对应的结果数据所存储在的字线上,收取激活每一组h2后第2条到第f-h+2条位线上的结果数据;
第七步,将激活每一组h2后第2条到第f-h+2条位线上的结果数据,分别依次存储在第3条到第f-h+3条位线在该组h2信号所连接最后一条字线所在crossbar的缓存中,其存储方法是,同一组h2信号的结果数据所在的存储单元由同一条字线相连,即一组h2的f-h+1个结果数据依次存储在地址坐标为(g,3)、(g,4)、(g,5)、……、(g,f-h+3)的一组存储单元上;
第八步,依此类推,将输入信号由h2信号换成卷积核阵列的第三列h3信号,重复第五步、第六步和第七步,并继续依此类推,将输入信号依此换成h4、h5、……,直至换成hh,在执行完第五步和第六步后,将激活每一组hh后第h条到第f条位线上的结果数据依此输出,即为卷积层输出的第1行、第h+1行、第2h+1行、……、第(⌊e÷h ⌋-1)×h+1行神经元,每行有f-h+1个神经元,共⌊e÷h ⌋×h行;
第九步,将第二步中的第1行开始改成从第2行开始,将第2行到第h+1行、第h+2行到第2h+1行的字线上依此连接h1的权重数值信号,依此类推,需要连接的⌊e÷h ⌋组h1信号,对应的H1、H2、……、H⌊e÷h ⌋,其中H1是第2行到第h+1行,H2是第h+2行到第2h+1行,以此类推,直到第⌊e÷h ⌋×h+1行;
第十步,重复第三到八步,即得到卷积层输出的第2行、第h+2行、第2h+2行、……、第(⌊e÷h ⌋-1)×h+2行神经元,每行有f-h+1个神经元,共⌊e÷h ⌋×h行;
第十一步,以此类推,依次从第3行、第4行、……、第h-1行、第h行开始,重复第二到八步,即依次分别得到卷积层输出的第3行、第h+3行、第2h+3行、……、第(⌊e÷h ⌋-1)×h+3行神经元,第4行、第h+4行、第2h+4行、……、第(⌊e÷h⌋-1)×h+4行神经元,依次类推至第h-1行、第2h-1行、第3h-1行、……、第⌊e÷h ⌋×h-1行神经元,第h行、第2h行、第3h行、……、第⌊e÷h ⌋×h行神经元;
第十二步,将得到的所有卷积层输出的神经元依次存入所述的CNN处理单元阵列,通过每个CNN处理单元中crossbar连接的ALU完成CNN的激励层运算和池化层运算,并按照上述步骤重复完成卷积层、激励层和池化层运算,直至到全连接层;
第十三步,在全连接层,每一个全连接层神经元对应一组权重,将全连接层的输入神经元依次存入所述CNN处理单元阵列的第一列存储单元中,将一组权重按与输入神经元的一一对应关系输入到所述CNN处理单元阵列的字线中,即在第一条位线上得到该组权重对应的全连接层神经元,依次重复本步骤,即可得到全连接层的所有神经元,进而输出CNN的处理结果。
一种基于忆阻器内存计算的CNN处理装置的工作方法,其中,若c≤a×m且d≤b×n,则e=c且f=d,输入层c×d个神经元可在CNN处理单元阵列中一次完成处理;
若c≤a×m且d>b×n,则e=c且f=b×n,则将输入层c×d个神经元的第1列到第f列先存入CNN处理单元阵列中进行处理,再将第f-h+2列到第2f-h+1列存入CNN处理单元阵列中进行处理,依次类推,直至处理完整个输入层;
若c>a×m且d≤b×n,则e=a×m且f=d,则将输入层c×d个神经元的第一行到第e行先存入CNN处理单元阵列中进行处理,再将第e-h+2行到第2e-h+1行存入CNN处理单元阵列中进行处理,依次类推,直至处理完整个输入层;
若c>a×m且d>b×n,则e=a×m且f=b×n,则先将输入层c×d个神经元的左上角的前e行的第1到第f列的e×d个数据存入CNN处理单元阵列中进行处理,再将前e行的第f-h+2列到第2f-h+1列的数据存入CNN处理单元阵列中进行处理,依此类推,直至处理完前e行的所有数据,再将第e-h+2行到第2e-h+1行的第1到第f列的e×d个数据存入CNN处理单元阵列中进行处理,并按上述步骤依此类推,直至处理完第e-h+2行到第2e-h+1行的所有数据,然后再按上述步骤处理完第2e-2h+3行到第3e-2h+2行的所有数据,以此类推,直至处理完整个输入层。
本发明提出了一种基于忆阻器内存计算的CNN处理装置及其工作方法,神经元数据存储于ReRAM内存中,将内存分成大量的crossbar,利用ReRAM中crossbar本身的计算能力完成乘加运算,并在每个crossbar上添加辅助电路构成一个CNN处理单元,将权重数据作为输入信号,整个内存则构成了一个大规模的并行的CNN处理单元阵列。
因为采用了ReRAM作为内存,因此比传统的以SRAM为内存的神经网络处理器功耗更低,且内存的存储空间更大,能够存储更多的数据。
本发明将所要处理的神经元数据存在内存中进行直接计算,而不是像其他基于内存计算的神经网络处理装置一样把权重数据存储在内存中,因此在处理高分辨率图像等大规模输入层时,能够省去将大量的输入数据从外部存储中取出的时间;同时,本发明是在输入神经元上进行并行处理,并行度更高,卷积层运算的时间开销只与卷积核的大小成正比,因此处理效率更快;本发明中内存中存储的神经元数据同时还可以提供给其他模块进行处理,即当做其他模块如片上处理内核的缓存。
附图说明
图1是基于忆阻器内存计算的CNN处理单元阵列结构图;
图2是基于忆阻器内存计算的CNN处理单元结构图。
图中:1、ReRAM;2、crossbar;3、m×n存储阵列;4、CNN处理单元缓存;5、传输门;6、ALU;7、字线;8、位线;9、存储单元(cell)。
具体实施方式
下面结合附图对本发明具体实施例作进一步详细描述,但是,本实施例并不限定于以下所公开的实施例,而是可以以多种方式实现。
本实例以22×28个像素的图像为输入,卷积核为5×5,ReRAM共有3×3个crossbar,每个crossbar中的内存空间是8×8个cell,还有包含若干cell的缓存,每个cell存储一个像素,ReRAM的内存空间是24×24个cell,构成一个CNN处理单元阵列,其结构如图1所示。
先将图像中前24列的22×24个像素存储入CNN处理单元阵列的内存中,即有效内存为22×24个cell,将卷积核第一列的5个权重依次循环添加到第1到第20行的字线上,共四组,先将第一组和第三组的共10个权重激活,将第一行和第二行crossbar中第1到第20条位线上的数据分别存储在两行crossbar中下一条位线在缓存中第一个cell中;再将第二组权重激活,将第一行和第二行crossbar之间的传输门打开,将第二行crossbar第1到第20条位线上的数据存入下一条位线在第二行crossbar的缓存中第二个cell中;再将第四组权重激活,将第二行和第三行crossbar之间的传输门打开,将第三行crossbar中第1到第20条位线上的数据存入缓存中第1个cell中,至此,每一组第一列权重均输入到CNN处理单元阵列中进行计算了,处理单元的结构如图2所示。
再将第二列卷积核的数据如上加在第1到第20行的字线上,然后先将第一组和第三组的共10个权重激活,同时在第一行和第二行中缓存中的第一条字线上输入逻辑1信号,即激活其中存储的上一步的数据,将第一行和第二行crossbar中第2到第21条位线上的数据分别存储在两行crossbar中下一条位线在缓存中第一个cell中;依此类推,将每一组第二列权重均输入到CNN处理单元阵列中进行计算。
再以此类推,将第3、4、5列的权重均依次输入到CNN处理单元阵列中进行计算,将第5到24条位线上的数据分别输出至外部存储,即为卷积层输出的第1、6、11、16行神经元,每行各20个神经元。
上面是对CNN处理单元阵列中第1到第20行字线进行处理的步骤,接下来按照上述步骤分别对第2到21行、第3到22行、第4到18行、第5到19行字线进行处理,分别获得第2、7、12、17行神经元,第3、8、13、18行神经元,第4、9、14行神经元,和第5、10、15行神经元,每行共20个神经元,最终获得该22×24个像素的卷积层输出结果,共18行,共18×20个神经元。
再将原图像中第21到28列的22×8个像素存入CNN处理单元阵列的内存中,即有效内存为22×8个cell,按照上述步骤进行处理,可获得该部分图像22×8个像素的神经元,共18行,共18×4个神经元。
将上面两部分神经元结合起来,就是该22×28个像素的卷积层输出结果。
将卷积层输出结果再存入CNN处理单元阵列的内存中,通过处理单元中的ALU中的比较功能完成ReLU函数f(x)=max(x,0),获得激励层输出;将激励层输出结果再存入CNN处理单元阵列的内存中,通过处理单元中的ALU中的比较功能完成2×2的max pooling计算,输出结果。重复上述步骤直至神经元数位9个,输入全连接层。
全连接层的输出数量为20个,则每个输出有一组包含9个权重的数组,共20组。将9个输入神经元分别存储在CNN处理单元阵列内存中的第一条位线上的第1到第9条字线的存储单元里,然后将20组权重分别按照与输入神经元一一对应的关系连接到第1到第9条字线上,输入每组权重,从第一条位线上获得的数据就是该组权重对应的输出结果。共需输入20次,即可获得所有的输出,记为通过CNN处理该图像的输出结果。

Claims (3)

1.一种基于忆阻器内存计算的CNN处理装置,其特征在于:在一块ReRAM的每一个crossbar上添加算术逻辑单元ALU等辅助电路构成一个CNN处理单元,其中ALU用于完成CNN中激励层、池化层、归一化层等层次中的计算任务,包括全加、比较、移位等,整块ReRAM构成一个CNN处理单元阵列,其特征在于,在所述crossbar的每一条位线上均添加一个传输门,每一条位线连接到传输门的输入端,每一个传输门与一条位线一一对应,每一条位线对应的传输门的输出端与其所在crossbar的下侧相邻crossbar的相同位置的位线相连,所述ALU的输入端与其所在的crossbar中所有的传输门的输出端相连。
2.一种基于忆阻器内存计算的CNN处理装置的工作方法,其特征在于: ReRAM共有a×b个crossbar,构成一个a行b列的阵列,每个crossbar的字线的条数为L,位线的条数为n,CNN的卷积核阵列的大小为h×h,输入层包括c×d个神经元,共c行d列,其特征在于,包括以下步骤:
第一步,将每个crossbar的前m条字线所连接的存储单元构成一个m×n存储阵列,所有的crossbar的存储阵列构成CNN处理单元阵列的内存,内存中共有a×m×b×n个存储单元,其中共有a×m条字线,每条字线均是一行crossbar中相同位置的字线连接而成,构成一个a×m行b×n列的存储阵列,将crossbar中m×n存储阵列之外其他的存储空间作为该CNN处理单元的缓存,将CNN所要处理的输入层c×d个神经元按照其在输入层中的顺序存入CNN处理单元阵列的内存中,在内存中占据了e行f列个存储单元,构成一个e×f神经元阵列,有e条字线和f条位线;
第二步,将卷积核阵列的第一列h1作为输入信号,连接到CNN处理单元阵列中e×f神经元阵列的字线上,具体连接方式为h1的每个权重按照顺序从上到下依次连接到e×f神经元阵列中的一条字线上,即在e×f神经元阵列中的第1行开始到第h行的字线上依次连接h1的权重,第h+1行到第2h行的字线上同样依次连接h1的权重数值信号,依次类推,直至第⌊e÷h⌋×h-h+1行到第⌊e÷h ⌋×h行的字线上同样依次连接h1的权重,共需要连接⌊e÷h ⌋组h1信号,对应的将e×f神经元阵列分出了⌊e÷h ⌋组神经元,记为H1、H2、……、H⌊e÷h ⌋,其中H1是第1行到第h行,H2是第h+1行到第2h行,依此类推,直到第⌊e÷h ⌋×h行,每组神经元分别连接一组h1,其中⌊e÷h ⌋是e÷h向下取整;
第三步,将连接的h1信号激活,即输入h1的权重数值到其连接的字线上,收取激活每一组h1后第1条到第f-h+1条位线上的结果数据,具体方法是,使每个crossbar每次只激活一组h1中的信号,对应其连接的H1、H2、……、H⌊e÷h ⌋中的一组神经元,所有的crossbar同时进行激活,若一个crossbar的字线连接了两组及两组以上的h1信号,则依次激活该crossbar连接的各组h1信号并收取结果数据,若上下相邻的两个crossbar连接了同一组h1信号,则两个crossbar之间的传输门打开,使所述两个crossbar共同激活该组h1信号,否则,传输门关闭;
第四步,将激活每一组h1后第1条到第f-h+1条位线上的结果数据,分别依次存储在第2条到第f-h+2条位线在该组h1信号所连接最后一条字线所在crossbar的缓存中,其存储方法是,同一组h1信号的结果数据所在的存储单元由同一条字线相连,即一组h1的f-h+1个结果数据依次存储在地址坐标为(g,2)、(g,3)、(g,4)、……、(g,f-h+2)的一组存储单元上,该组存储单元都由字线g连接,共有⌊e÷h ⌋组结果数据,分别对应H1、H2、……、H⌊e÷h ⌋;
第五步,将输入信号由h1信号换成卷积核阵列的第二列h2信号,重复第二步的步骤;
第六步,按照第三步的方法将连接的h2信号激活,同时,在激活H1、H2、……、H⌊e÷h ⌋中一组神经元所连接的一组h2的同时,将逻辑1信号输入到该组神经元所对应的结果数据所存储在的字线上,收取激活每一组h2后第2条到第f-h+2条位线上的结果数据;
第七步,将激活每一组h2后第2条到第f-h+2条位线上的结果数据,分别依次存储在第3条到第f-h+3条位线在该组h2信号所连接最后一条字线所在crossbar的缓存中,其存储方法是,同一组h2信号的结果数据所在的存储单元由同一条字线相连,即一组h2的f-h+1个结果数据依次存储在地址坐标为(g,3)、(g,4)、(g,5)、……、(g,f-h+3)的一组存储单元上;
第八步,依此类推,将输入信号由h2信号换成卷积核阵列的第三列h3信号,重复第五步、第六步和第七步,并继续依此类推,将输入信号依此换成h4、h5、……,直至换成hh,在执行完第五步和第六步后,将激活每一组hh后第h条到第f条位线上的结果数据依此输出,即为卷积层输出的第1行、第h+1行、第2h+1行、……、第(⌊e÷h ⌋-1)×h+1行神经元,每行有f-h+1个神经元,共⌊e÷h ⌋×h行;
第九步,将第二步中的第1行开始改成从第2行开始,将第2行到第h+1行、第h+2行到第2h+1行的字线上依此连接h1的权重数值信号,依此类推,需要连接的⌊e÷h ⌋组h1信号,对应的H1、H2、……、H⌊e÷h ⌋,其中H1是第2行到第h+1行,H2是第h+2行到第2h+1行,以此类推,直到第⌊e÷h ⌋×h+1行;
第十步,重复第三到八步,即得到卷积层输出的第2行、第h+2行、第2h+2行、……、第(⌊e÷h ⌋-1)×h+2行神经元,每行有f-h+1个神经元,共⌊e÷h ⌋×h行;
第十一步,以此类推,依次从第3行、第4行、……、第h-1行、第h行开始,重复第二到八步,即依次分别得到卷积层输出的第3行、第h+3行、第2h+3行、……、第(⌊e÷h ⌋-1)×h+3行神经元,第4行、第h+4行、第2h+4行、……、第(⌊e÷h⌋-1)×h+4行神经元,依次类推至第h-1行、第2h-1行、第3h-1行、……、第⌊e÷h ⌋×h-1行神经元,第h行、第2h行、第3h行、……、第⌊e÷h ⌋×h行神经元;
第十二步,将得到的所有卷积层输出的神经元依次存入所述的CNN处理单元阵列,通过每个CNN处理单元中crossbar连接的ALU完成CNN的激励层运算和池化层运算,并按照上述步骤重复完成卷积层、激励层和池化层运算,直至到全连接层;
第十三步,在全连接层,每一个全连接层神经元对应一组权重,将全连接层的输入神经元依次存入所述CNN处理单元阵列的第一列存储单元中,将一组权重按与输入神经元的一一对应关系输入到所述CNN处理单元阵列的字线中,即在第一条位线上得到该组权重对应的全连接层神经元,依次重复本步骤,即可得到全连接层的所有神经元,进而输出CNN的处理结果。
3.根据权利要求2所述的一种基于忆阻器内存计算的CNN处理装置的工作方法,其特征在于:若c≤a×m且d≤b×n,则e=c且f=d,输入层c×d个神经元可在CNN处理单元阵列中一次完成处理;
若c≤a×m且d>b×n,则e=c且f=b×n,则将输入层c×d个神经元的第1列到第f列先存入CNN处理单元阵列中进行处理,再将第f-h+2列到第2f-h+1列存入CNN处理单元阵列中进行处理,依次类推,直至处理完整个输入层;
若c>a×m且d≤b×n,则e=a×m且f=d,则将输入层c×d个神经元的第一行到第e行先存入CNN处理单元阵列中进行处理,再将第e-h+2行到第2e-h+1行存入CNN处理单元阵列中进行处理,依次类推,直至处理完整个输入层;
若c>a×m且d>b×n,则e=a×m且f=b×n,则先将输入层c×d个神经元的左上角的前e行的第1到第f列的e×d个数据存入CNN处理单元阵列中进行处理,再将前e行的第f-h+2列到第2f-h+1列的数据存入CNN处理单元阵列中进行处理,依此类推,直至处理完前e行的所有数据,再将第e-h+2行到第2e-h+1行的第1到第f列的e×d个数据存入CNN处理单元阵列中进行处理,并按上述步骤依此类推,直至处理完第e-h+2行到第2e-h+1行的所有数据,然后再按上述步骤处理完第2e-2h+3行到第3e-2h+2行的所有数据,以此类推,直至处理完整个输入层。
CN201811193203.1A 2018-10-14 2018-10-14 一种基于忆阻器内存计算的cnn处理装置及其工作方法 Pending CN111048135A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811193203.1A CN111048135A (zh) 2018-10-14 2018-10-14 一种基于忆阻器内存计算的cnn处理装置及其工作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811193203.1A CN111048135A (zh) 2018-10-14 2018-10-14 一种基于忆阻器内存计算的cnn处理装置及其工作方法

Publications (1)

Publication Number Publication Date
CN111048135A true CN111048135A (zh) 2020-04-21

Family

ID=70229983

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811193203.1A Pending CN111048135A (zh) 2018-10-14 2018-10-14 一种基于忆阻器内存计算的cnn处理装置及其工作方法

Country Status (1)

Country Link
CN (1) CN111048135A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112183732A (zh) * 2020-10-22 2021-01-05 中国人民解放军国防科技大学 卷积神经网络加速方法、装置和计算机设备
CN112598122A (zh) * 2020-12-23 2021-04-02 北方工业大学 一种基于可变电阻式随机存储器的卷积神经网络加速器
CN114724595A (zh) * 2022-03-18 2022-07-08 华中科技大学 一种卷积运算加速器及卷积运算方法
CN115481562A (zh) * 2021-06-15 2022-12-16 中国科学院微电子研究所 多并行度优化方法、装置、识别方法和电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104573238A (zh) * 2015-01-09 2015-04-29 江西理工大学 一种忆阻细胞神经网络的电路设计方法
WO2016030230A1 (fr) * 2014-08-28 2016-03-03 Commissariat A L'energie Atomique Et Aux Energies Alternatives Reseau de neurones convolutionnels
CN106650922A (zh) * 2016-09-29 2017-05-10 清华大学 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作***
CN107229598A (zh) * 2017-04-21 2017-10-03 东南大学 一种面向卷积神经网络的低功耗电压可调卷积运算模块
WO2017186829A1 (fr) * 2016-04-27 2017-11-02 Commissariat A L'energie Atomique Et Aux Energies Alternatives Dispositif et procede de calcul de convolution d'un reseau de neurones convolutionnel
US20180137414A1 (en) * 2016-11-14 2018-05-17 Kneron, Inc. Convolution operation device and convolution operation method

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016030230A1 (fr) * 2014-08-28 2016-03-03 Commissariat A L'energie Atomique Et Aux Energies Alternatives Reseau de neurones convolutionnels
CN104573238A (zh) * 2015-01-09 2015-04-29 江西理工大学 一种忆阻细胞神经网络的电路设计方法
WO2017186829A1 (fr) * 2016-04-27 2017-11-02 Commissariat A L'energie Atomique Et Aux Energies Alternatives Dispositif et procede de calcul de convolution d'un reseau de neurones convolutionnel
CN106650922A (zh) * 2016-09-29 2017-05-10 清华大学 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作***
US20180137414A1 (en) * 2016-11-14 2018-05-17 Kneron, Inc. Convolution operation device and convolution operation method
CN107229598A (zh) * 2017-04-21 2017-10-03 东南大学 一种面向卷积神经网络的低功耗电压可调卷积运算模块

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112183732A (zh) * 2020-10-22 2021-01-05 中国人民解放军国防科技大学 卷积神经网络加速方法、装置和计算机设备
CN112598122A (zh) * 2020-12-23 2021-04-02 北方工业大学 一种基于可变电阻式随机存储器的卷积神经网络加速器
CN112598122B (zh) * 2020-12-23 2023-09-05 北方工业大学 一种基于可变电阻式随机存储器的卷积神经网络加速器
CN115481562A (zh) * 2021-06-15 2022-12-16 中国科学院微电子研究所 多并行度优化方法、装置、识别方法和电子设备
CN114724595A (zh) * 2022-03-18 2022-07-08 华中科技大学 一种卷积运算加速器及卷积运算方法

Similar Documents

Publication Publication Date Title
CN111048135A (zh) 一种基于忆阻器内存计算的cnn处理装置及其工作方法
Bavikadi et al. A review of in-memory computing architectures for machine learning applications
US11126549B2 (en) Processing in-memory architectures for performing logical operations
EP3265907B1 (en) Data processing using resistive memory arrays
US11507808B2 (en) Multi-layer vector-matrix multiplication apparatus for a deep neural network
CN108665063B (zh) 用于bnn硬件加速器的双向并行处理卷积加速***
US20220269483A1 (en) Compute in memory accumulator
CN112395092A (zh) 数据处理方法及人工智能处理器
KR20230084449A (ko) 신경 프로세싱 유닛
KR102544063B1 (ko) 데이터 재사용이 가능한 신경 프로세싱 유닛 및 그 방법
CN111045727B (zh) 一种基于非易失性内存计算的处理单元阵列及其计算方法
CN115148234A (zh) 存储器中计算(cim)存储阵列
Kim et al. Inca: Input-stationary dataflow at outside-the-box thinking about deep learning accelerators
CN110597487B (zh) 一种矩阵向量乘法电路及计算方法
CN115879530B (zh) 一种面向rram存内计算***阵列结构优化的方法
Liu et al. Era-bs: Boosting the efficiency of reram-based pim accelerator with fine-grained bit-level sparsity
CN115204380B (zh) 存算一体卷积神经网络的数据存储及阵列映射方法与装置
US20230047364A1 (en) Partial sum management and reconfigurable systolic flow architectures for in-memory computation
KR20240025540A (ko) 깊이별 콘볼루션을 위한 메모리 아키텍처에서의 컴퓨테이션
CN114072778A (zh) 存储器处理单元架构
EP4160598A1 (en) Bit-cell architecture based in-memory compute
CN115719088B (zh) 一种支持存内cnn的中间缓存调度电路装置
JP3860545B2 (ja) 画像処理装置及び画像処理方法
Chen et al. High-Speed SRAM with Flexible Read/Write Data Width Tailored for Convolutional Neural Network
CN111445940B (zh) 编码型闪存结构及数据处理方法

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20200421

WD01 Invention patent application deemed withdrawn after publication