CN114724595A - 一种卷积运算加速器及卷积运算方法 - Google Patents
一种卷积运算加速器及卷积运算方法 Download PDFInfo
- Publication number
- CN114724595A CN114724595A CN202210272801.8A CN202210272801A CN114724595A CN 114724595 A CN114724595 A CN 114724595A CN 202210272801 A CN202210272801 A CN 202210272801A CN 114724595 A CN114724595 A CN 114724595A
- Authority
- CN
- China
- Prior art keywords
- convolution kernel
- array
- size
- convolution
- unit
- 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
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/02—Disposition of storage elements, e.g. in the form of a matrix array
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/06—Arrangements for interconnecting storage elements electrically, e.g. by wiring
- G11C5/063—Voltage and signal distribution in integrated semi-conductor memory access lines, e.g. word-line, bit-line, cross-over resistance, propagation delay
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Read Only Memory (AREA)
- Semiconductor Memories (AREA)
Abstract
本发明公开了一种卷积运算加速器及卷积运算方法,属于微电子器件领域;其中,每条字线电极将矩阵排列的非易失性存储单元中的一列连接起来,每条位线电极倾斜地将矩阵排列的非易失性存储单元连接起来;每条字线的输入数据可以和上下两层卷积核单元进行乘加操作,实现卷积核单元在二维输入中y方向上的天然滑动;倾斜的位线和卷积核在每层非易失性存储阵列中的多次复制可以使一个输入数据和相同卷积核单元中不同位置的卷积核数据进行乘法运算,实现卷积核单元在二维输入中x方向上的天然滑动,可以在不将二维输入展开为一维的情况下一次性并行完成卷积计算,运算速度快,并行程度及阵列单元的利用率均较高。
Description
技术领域
本发明属于微电子器件领域,更具体地,涉及一种卷积运算加速器及卷积运算方法。
背景技术
卷积神经网络(Convolution Neural network,CNN)是前馈神经网络的一种形式,通常包含卷积层、池化层和全连接层。卷积神经网络通常用来处理图片信息,将图片输入到卷积层后,经过卷积运算提取出局部特征,然后通过池化层压缩模型大小,减少计算量,最后通过全连接层将特征整合得到输出。卷积神经网络具有局部连接和权值共享的特点,其参数量远远小于多层感知机模型,在图像识别领域已经取得了良好的效果。
卷积神经网络虽然有较少的参数,但在前向传播过程中,卷积层中的卷积运算产生了网络中大部分的计算量,卷积运算过程为:卷积核在输入数据上以一定步长滑动,每滑动一次进行一次卷积核与对应输入数据的乘加运算,这在传统计算单元(例如CPU、GPU)中计算速度慢、占用空间大。
同时对于一些基于新型存储器的计算结构,如平面交叉开关(crossbar)阵列来说,需要将二维的输入信息拉伸为一维然后输入给阵列;另外,如果要充分利用阵列单元,就必须采用滚动式输入,那么输入的并行程度很低,所需时间代价巨大;如果在crossbar阵列中复制多个卷积核进行大规模并行计算的话,会占用大量面积,同时大部分单元不会被使用,增加漏电流对计算结果的影响。
因此,需要一种能够高度并行计算并且能够充分利用计算资源的架构来加速卷积运算。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种卷积运算加速器及卷积运算方法,用以解决平面存储器阵列进行卷积计算时需要将二维输入拉伸为一维、并行程度低以及阵列单元利用率低的问题。
为了实现上述目标,本发明提供了一种卷积运算加速器,包括:三维非易失性存储器阵列和控制模块;
三维非易失性存储器阵列包括:P个字线电极层;任意相邻的两个字线电极层之间均放置有一个位线电极层;任意相邻的字线电极层和位线电极层之间均放置有一个非易失性存储单元阵列,且非易失性存储单元阵列与字线电极层和位线电极层均垂直相连;
字线电极层包括多个平行排布的字线电极;P个字线电极层中的字线电极共同构成一个字线电极阵列;
非易失性存储单元阵列中的每一列非易失性存储单元均连接在与非易失性存储单元阵列相连的字线电极层中的同一条字线上;非易失性存储单元阵列中每一条斜线上的非易失性存储单元均连接在与非易失性存储单元阵列相连的位线电极阵列中的同一条位线上;其中,斜线为非易失性存储单元阵列中与非易失性存储单元阵列中的对应对角线平行的斜线;
记二维输入数据的尺寸为M×N;
当与二维输入数据进行卷积运算的卷积核尺寸为2k×c时,控制模块用于将卷积核按行拆分为k个2×c大小的卷积核单元,k为正整数;在字线电极阵列中选中k个大小为(M-2(k-1))×N的不同子阵列单元,并与k个2×c大小的卷积核单元按照卷积核的拆分顺序一一对应;将每个卷积核单元及其N-c次复制均存储至对应子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列中;将二维输入数据上第2i-1行到第M-2(k-i)行的数据以电压的方式按照对应的坐标信息施加到第i个子阵列单元中的对应字线电极上,i=1,2,…,k;
当卷积核的尺寸为(2k+1)×c时,控制模块用于将卷积核按行拆分为k个2×c大小的卷积核单元和一个1×c大小的卷积核单元;在字线电极阵列中选中k个大小为(M-2(k-1)-1)×N的子阵列单元,以及一个大小为(M-2k)×N的子阵列单元;k个大小为(M-2(k-1)-1)×N的子阵列单元与k个2×c大小的卷积核单元按照卷积核的拆分顺序一一对应;将每个2×c大小的卷积核单元及其N-c次复制均存储至对应子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列中;对上述大小为(M-2k)×N的子阵列单元中的各字线电极层,在与其相连的其中一个非易失性存储单元阵列中分别存储1×c大小的卷积核单元及该1×c大小的卷积核单元的N-c次复制,未存储卷积核单元的非易失性存储单元阵列中的非易失存储单元全部置为高阻态;将二维输入数据上第2i-1行到第M-2(k-i)-1行的数据以电压的方式按照对应的坐标信息施加到第i个(M-2(k-1)-1)×N大小的子阵列单元中的对应字线电极上,i=1,2,…,k;将二维输入数据上第2k+1行到第M行的数据以电压的方式按照对应的坐标信息施加到上述大小为(M-2k)×N的子阵列单元中的对应字线电极上;
三维非易失性存储器阵列用于基于非易失性存储单元阵列并行地实现卷积核单元与二维输入数据不同部分的点乘运算,经由对应的位线电极层并行输出卷积核单元与二维输入数据对应部分的点乘运算结果之和,从而实现卷积核与二维输入数据的卷积运算;
其中,卷积核单元的每一行卷积核数据在对应非易失性存储单元阵列的对应斜线上依次存储后,沿着卷积核滑动方向水平移动到相邻的N-c条斜线上再次对该行卷积核数据进行存储,实现每一层非易失性存储单元阵列存储卷积核单元中对应行的卷积核数据及该卷积核数据的N-c次复制。
进一步优选地,当卷积核的尺寸为2k×c时,三维非易失性存储器阵列用于基于上述大小为(M-2(k-1))×N的子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列,并行地实现2×c大小的卷积核单元与二维输入数据不同部分的点乘运算后,经由对应的位线电极层并行输出2×c大小的卷积核单元与二维输入数据对应部分的点乘运算结果之和;控制模块还用于对所选中的各子阵列单元中同一相对位置的位线输出分别进行汇总,得到卷积核与二维输入数据的卷积运算结果;
当卷积核的尺寸为(2k+1)×c时,三维非易失性存储器阵列用于基于上述大小为(M-2(k-1)-1)×N的子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列,并行地实现2×c大小的卷积核单元与二维输入数据不同部分的点乘运算后,经由对应的位线电极层并行输出2×c大小的卷积核单元与二维输入数据对应部分的点乘运算结果之和;同时基于上述大小为(M-2k)×N的子阵列单元中的非易失性存储单元阵列,并行地实现1×c大小的卷积核单元与二维输入数据不同部分的点乘运算后,经由对应的位线电极层并行输出1×c大小的卷积核单元与二维输入数据对应部分的点乘运算结果之和;控制模块还用于将所选中的各子阵列单元中的各位线输出对应进行汇总,得到卷积核与二维输入数据的卷积运算结果。
进一步优选地,三维非易失性存储器阵列为多层堆叠结构,由字线电极层、非易失性存储单元阵列和位线电极层依次堆叠形成;各字线电极层之间、字线电极层与位线电极层之间均互相平行。
进一步优选地,控制模块包括:输入端信号发生装置、输出端信号发生装置和输出信号读出装置;
输入端信号发生装置和输出端信号发生装置相互配合,在子阵列单元所对应的字线电极和位线电极上施加电压,选择对应的非易失存储单元,并改变所选中的各非易失存储单元的电导值,使其存储对应的卷积核数据;
输入端信号发生装置还用于将二维输入数据以电压的方式,按照二维输入数据的坐标信息施加到上述子阵列单元中的对应字线电极上;
输出信号读出装置用于检测位线电极上的输出电流,并转化为电压信号,作为卷积运算的结果。
进一步优选地,输入信号发生装置的读电压小于或等于非易失存储单元上的当前set电压值,以保证在进行卷积运算时非易失存储单元的电导值不被改变。
进一步优选地,上述卷积运算加速器用于实现卷积神经网络中的卷积运算。
进一步优选地,在卷积神经网络的训练过程中,上述控制模块还用于通过在对应的字线电极和位线电极上施加写电压来调整各非易失存储单元的电导值,以对卷积神经网络的参数进行更新,并将卷积运算加速器上一轮的卷积运算结果重新作为卷积运算加速器下一轮卷积运算的输入。
进一步优选地,当需要增加非易失存储单元的电导值时,在对应的字线电极和位线电极上施加的写电压差值的绝对值为对应的set电压值;
当需要减小非易失存储单元的电导值时,在对应的字线电极和位线电极上施加的写电压差值的绝对值为对应的reset电压值。
第二方面,本发明提供了一种基于上述卷积运算加速器的卷积运算方法,包括以下步骤:
S1、当与二维输入数据进行卷积运算的卷积核尺寸为2k×c时,将卷积核按行拆分为k个2×c大小的卷积核单元,k为正整数;在字线电极阵列中选中k个大小为(M-2(k-1))×N的不同子阵列单元,并与k个2×c大小的卷积核单元按照卷积核的拆分顺序一一对应;将每个卷积核单元及其N-c次复制均存储至对应子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列中;将二维输入数据上第2i-1行到第M-2(k-i)行的数据以电压的方式按照对应的坐标信息施加到第i个子阵列单元中的对应字线电极上,i=1,2,…,k;
当卷积核的尺寸为(2k+1)×c时,将卷积核按行拆分为k个2×c大小的卷积核单元和一个1×c大小的卷积核单元;在字线电极阵列中选中k个大小为(M-2(k-1)-1)×N的子阵列单元,以及一个大小为(M-2k)×N的子阵列单元;k个大小为(M-2(k-1)-1)×N的子阵列单元与k个2×c大小的卷积核单元按照卷积核的拆分顺序一一对应;将每个2×c大小的卷积核单元及其N-c次复制均存储至对应子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列中;对上述大小为(M-2k)×N的子阵列单元中的各字线电极层,在与其相连的其中一个非易失性存储单元阵列中分别存储1×c大小的卷积核单元及该1×c大小的卷积核单元的N-c次复制,未存储卷积核单元的非易失性存储单元阵列中的非易失存储单元全部置为高阻态;将二维输入数据上第2i-1行到第M-2(k-i)-1行的数据以电压的方式按照对应的坐标信息施加到第i个(M-2(k-1)-1)×N大小的子阵列单元中的对应字线电极上,i=1,2,…,k;将二维输入数据上第2k+1行到第M行的数据以电压的方式按照对应的坐标信息施加到上述大小为(M-2k)×N的子阵列单元中的对应字线电极上;
S2、基于非易失性存储单元阵列并行地实现卷积核单元与二维输入数据不同部分的点乘运算,经由对应的位线电极层并行输出卷积核单元与二维输入数据对应部分的点乘运算结果之和,从而实现卷积核与二维输入数据的卷积运算;
其中,二维输入数据的尺寸为M×N;卷积核单元的每一行卷积核数据在对应非易失性存储单元阵列的对应斜线上依次存储后,沿着卷积核滑动方向水平移动到相邻的N-c条斜线上再次对该行卷积核数据进行存储,实现每一层非易失性存储单元阵列存储卷积核单元中对应行的卷积核数据及该卷积核数据的N-c次复制。
进一步优选地,当卷积核的尺寸为2k×c时,步骤S2包括:基于上述大小为(M-2(k-1))×N的子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列,并行地实现2×c大小的卷积核单元与二维输入数据不同部分的点乘运算后,经由对应的位线电极层并行输出2×c大小的卷积核单元与二维输入数据对应部分的点乘运算结果之和,并对所选中的各子阵列单元中同一相对位置的位线输出分别进行汇总,得到卷积核与二维输入数据的卷积运算结果;
当卷积核的尺寸为(2k+1)×c时,步骤S2包括:基于上述大小为(M-2(k-1)-1)×N的子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列,并行地实现2×c大小的卷积核单元与二维输入数据不同部分的点乘运算后,经由对应的位线电极层并行输出2×c大小的卷积核单元与二维输入数据对应部分的点乘运算结果之和;同时基于上述大小为(M-2k)×N的子阵列单元中的非易失性存储单元阵列,并行地实现1×c大小的卷积核单元与二维输入数据不同部分的点乘运算后,经由对应的位线电极层并行输出1×c大小的卷积核单元与二维输入数据对应部分的点乘运算结果之和;并将所选中的各子阵列单元中的各位线输出对应进行汇总,得到卷积核与二维输入数据的卷积运算结果。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
1、本发明提供了一种卷积运算加速器,其中,每条字线电极将矩阵排列的非易失性存储单元中的一列连接起来,每条位线电极倾斜地将矩阵排列的非易失性存储单元连接起来;每条字线的输入数据可以和上下两层卷积核单元进行乘加操作,实现卷积核单元在二维输入中y方向上的天然滑动;倾斜的位线和卷积核在每层非易失性存储阵列中的多次复制可以使一个输入数据和相同卷积核单元中不同位置的卷积核数据进行乘法运算,实现卷积核单元在二维输入中x方向上的天然滑动,因此可以在不将二维输入展开为一维的情况下一次性并行完成卷积计算,数据复用率和运算的并行程度均较高、运算速度快;与传统平面阵列相比,本发明利用三维阵列的高集成度特性,在较小的面积下容纳更多单元,执行更多次的计算,大大提高了阵列单元的利用率。
2、本发明所提供的卷积运算加速器,分别考虑卷积核行为奇数和偶数的情况进行拆分并存储,能够并行地实现不同拆分部分的与对应二维数据的卷积运算,充分利用了三维非易失性存储器阵列的计算资源,运算速度较快。
3、本发明所提供的卷积运算加速器可以用来实现卷积神经网络的功能,将神经网络的输入、权重和输出映射为三维非易失性存储器的输入电压、电导以及输出电流,同时由于三维非易失性存储器阵列拓扑结构的独特设计,阵列层面的物理计算过程能够天然匹配卷积神经网络中大量存在的卷积核滑动运算过程,能够在保留二维数据的位置信息的情况下一次性完成卷积运算,并且获得二维输出数据,高度还原了软件中的卷积神经网络的计算过程,同时利用尽可能少的输入输出端口实现卷积高度并行计算,大大提高了资源利用率和运算速度。
4、本发明基于三维非易失性存储器阵列的卷积运算,相比于传统的冯诺依曼架构计算单元例如CPU、GPU等,没有存储器和计算单元之间的数据传输速度限制,实现了存算一体,能够用于实现高效大规模并行的卷积神经网络计算。
附图说明
图1为本发明第一方面提供的一种卷积运算加速器的结构示意图;
图2为本发明实施例1提供的卷积运算加速器的结构示意图;
图3为本发明实施例1提供的三维非易失性存储器阵列的结构示意图;
图4为本发明实施例1提供的三维非易失性存储器的俯视剖面图;
图5为本发明实施例2提供的基于实施例1所述三维非易失性存储器阵列的卷积运算的流程图;
图6为本发明实施例2提供的三维非易失性存储器阵列天然匹配卷积神经网络中卷积核在输入数据的x方向上滑动执行乘加运算的示意图;
图7为本发明实施例2提供的三维非易失性存储阵列天然匹配卷积神经网络中卷积核在输入数据的y方向上滑动执行乘加运算的示意图;
图8为本发明实施例3提供的横向上具有八条字线的三维非易失性存储阵列的主视图。
图9为本发明实施例3提供的横向上具有八条字线的三维非易失性存储阵列的俯视剖视图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
为了实现上述目的,如图1所示,本发明提供了一种卷积运算加速器,包括:三维非易失性存储器阵列和控制模块;
其中,三维非易失性存储器阵列包括:P个字线电极层;任意相邻的两个字线电极层之间均放置有一个位线电极层;任意相邻的字线电极层和位线电极层之间均放置有一个非易失性存储单元阵列,且非易失性存储单元阵列与字线电极层和位线电极层均垂直相连;具体地,三维非易失性存储器阵列为多层堆叠结构,由字线电极层、非易失性存储单元阵列和位线电极层依次堆叠形成;各字线电极层之间、字线电极层与位线电极层之间均互相平行;
字线电极层包括多个平行排布的字线电极;P个字线电极层中的字线电极共同构成一个字线电极阵列;
非易失性存储单元阵列中的每一列非易失性存储单元均连接在与非易失性存储单元阵列相连的字线电极层中的同一条字线上;非易失性存储单元阵列中每一条斜线上的非易失性存储单元均连接在与非易失性存储单元阵列相连的位线电极阵列中的同一条位线上;其中,斜线为非易失性存储单元阵列中与非易失性存储单元阵列中的对应对角线平行的斜线;
记二维输入数据的尺寸为M×N;
当与二维输入数据进行卷积运算的卷积核尺寸为2k×c时,控制模块用于将卷积核按行拆分为k个2×c大小的卷积核单元,k为正整数;在字线电极阵列中选中k个大小为(M-2(k-1))×N的不同子阵列单元,并与k个2×c大小的卷积核单元按照卷积核的拆分顺序一一对应;将每个卷积核单元及其N-c次复制均存储至对应子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列中;将二维输入数据上第2i-1行到第M-2(k-i)行的数据以电压的方式按照对应的坐标信息施加到第i个子阵列单元中的对应字线电极上,i=1,2,…,k;
当卷积核的尺寸为(2k+1)×c时,控制模块用于将卷积核按行拆分为k个2×c大小的卷积核单元和一个1×c大小的卷积核单元;在字线电极阵列中选中k个大小为(M-2(k-1)-1)×N的子阵列单元,以及一个大小为(M-2k)×N的子阵列单元;k个大小为(M-2(k-1)-1)×N的子阵列单元与k个2×c大小的卷积核单元按照卷积核的拆分顺序一一对应;将每个2×c大小的卷积核单元及其N-c次复制均存储至对应子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列中;对上述大小为(M-2k)×N的子阵列单元中的各字线电极层,在与其相连的其中一个非易失性存储单元阵列中分别存储1×c大小的卷积核单元及该1×c大小的卷积核单元的N-c次复制,未存储卷积核单元的非易失性存储单元阵列中的非易失存储单元全部置为高阻态;将二维输入数据上第2i-1行到第M-2(k-i)-1行的数据以电压的方式按照对应的坐标信息施加到第i个(M-2(k-1)-1)×N大小的子阵列单元中的对应字线电极上,i=1,2,…,k;将二维输入数据上第2k+1行到第M行的数据以电压的方式按照对应的坐标信息施加到上述大小为(M-2k)×N的子阵列单元中的对应字线电极上;
三维非易失性存储器阵列用于基于非易失性存储单元阵列并行地实现卷积核单元与二维输入数据不同部分的点乘运算,经由对应的位线电极层并行输出卷积核单元与二维输入数据对应部分的点乘运算结果之和,从而实现卷积核与二维输入数据的卷积运算;
其中,卷积核单元的每一行卷积核数据在对应非易失性存储单元阵列的对应斜线上依次存储后,沿着卷积核滑动方向水平移动到相邻的N-c条斜线上再次对该行卷积核数据进行存储,实现每一层非易失性存储单元阵列存储卷积核单元中对应行的卷积核数据及该卷积核数据的N-c次复制。
具体地,当卷积核的尺寸为2k×c时,三维非易失性存储器阵列用于基于上述大小为(M-2(k-1))×N的子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列,并行地实现2×c大小的卷积核单元与二维输入数据不同部分的点乘运算后,经由对应的位线电极层并行输出2×c大小的卷积核单元与二维输入数据对应部分的点乘运算结果之和;控制模块还用于对所选中的各子阵列单元中同一相对位置的位线输出分别进行汇总,得到卷积核与二维输入数据的卷积运算结果;
当卷积核的尺寸为(2k+1)×c时,三维非易失性存储器阵列用于基于上述大小为(M-2(k-1)-1)×N的子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列,并行地实现2×c大小的卷积核单元与二维输入数据不同部分的点乘运算后,经由对应的位线电极层并行输出2×c大小的卷积核单元与二维输入数据对应部分的点乘运算结果之和;同时基于上述大小为(M-2k)×N的子阵列单元中的非易失性存储单元阵列,并行地实现1×c大小的卷积核单元与二维输入数据不同部分的点乘运算后,经由对应的位线电极层并行输出1×c大小的卷积核单元与二维输入数据对应部分的点乘运算结果之和;控制模块还用于将所选中的各子阵列单元中的各位线输出对应进行汇总,得到卷积核与二维输入数据的卷积运算结果。其中,各子阵列单元的输出均为(M-2k)×(N-c),对应加和后即可以得到最终的卷积运算结果。
在一种可选实施方式下,当卷积核的尺寸为2k×c时,纵向上至少选中M-2(k-1)层字线层,横向上至少选中k×N条字线;控制模块将卷积核拆分为k个2×c大小的卷积核单元,将横向上有k×N个字线上的三维非易失性存储阵列视为k个具有N个字线的子阵列单元,在每一个子阵列单元的对应位置映射一个2×c大小的卷积核单元,二维输入数据在k个阵列单元上同样也会滑动,例如,M×N个输入数据,第一个阵列单元字线上映射第一行到第M-2(k-1)行数据,第二个阵列单元字线上映射第2+1行到M-2(k-2)行数据,第i个阵列单元字线上映射第2i-1行到第M-2(k-i)(i∈1,2,3,…,k)行数据。此时,控制模块还用于对k个子阵列单元的中同一相对位置的位线输出分别进行汇总,得到最终的卷积运算结果。
当卷积核的尺寸为(2k+1)×c时,k个2×c大小的卷积核的映射方式和卷积核的尺寸为2k×c时的方法类似,区别在于,在横向上选中(k+1)×N个字线的三维非易失存储阵列,将横向上有(k+1)×N个字线上的三维非易失性存储阵列视为k+1个具有N个字线的子阵列单元,第i个阵列单元字线上映射第2i-1行到第M-2(k-i)-1(i∈1,2,3,…,k)行数据;对于剩余的一个1×c大小的卷积核单元,将其映射到第k+1个阵列单元上,对于每层位线连接的两层非易失性存储单元,将其上方(或下方)的非易失性存储单元阵列中存储1×c大小的卷积核单元及其N-c次复制,将位线下方(或上方)的非易失性存储单元全部置为高阻态(视为断路);本具体实施方式在纵向上选中M-2(k-1)-1层字线层,横向上选中(k+1)×N条字线;当在上方的非易失性存储单元阵列上存储1×c大小的卷积核单元时,在从上至下数第1层到第M-2k层上映射二维输入数据中的第2k+1行到第M行数据。当在下方的非易失性存储单元阵列上存储1×c大小的卷积核单元时,在从上至下数第2层到第M-2k+1层上映射二维输入数据中的第2k+1行到第M行数据。此时,控制模块还用于对k+1个子阵列单元的中同一相对位置的位线输出分别进行汇总,得到最终的卷积运算结果。
为了进一步说明本发明所提供的卷积运算加速器,下面结合具体实施例进行详述:
实施例1、
本实施例中的卷积运算加速器如图2所示,包括:三维非易失性存储器阵列和控制模块,其中,控制模块包括:输入端信号发生装置、输出端信号发生装置和输出信号读出装置;
如图3所示为三维非易失性存储器阵列的结构示意图,包括字线电极1、位线电极2、非易失存储单元3。输入端信号发生装置和字线电极相连,输出端信号发生装置和输出信号读出装置连接至位线电极。V11~V44以电压形式施加到字线电极上作为输入,I11~I33为输入电压作用到非易失性存储阵列后得到的输出电流。
为了进一步说明三维非易失存储器阵列内部的连接结构,如图4展示了三维非易失性存储器的俯视剖面图。左边所示的俯视剖面图为字线电极和非易失性存储单元阵列的两层结构,非易失存储单元阵列在字线电极上方。字线1~4为平行排布的电极,每条字线上各自均匀分布着非易失性存储单元,非易失性存储单元411~441连接至字线1,非易失性存储单元412~442连接至字线2,非易失性存储单元413~443连接至字线3,非易失性存储单元414~444连接至字线4。右边所示的俯视剖面图在左边的俯视剖面图基础上添加了一层位线电极,自下而上分别为字线电极、非易失性存储器阵列和位线电极。位线电极平行排布,但与字线电极的方向呈一定角度。非易失性存储单元411连接至位线1,非易失性存储单元421、412连接至位线2,非易失性存储单元431、422、413连接至位线3,非易失性存储单元441、432、423、414连接至位线4。
需要说明的是,在三维非易失性存储器阵列中,每条字线将矩阵排列的非易失性存储单元中的一列连接起来,每条位线倾斜地将矩阵排列的非易失性存储单元连接起来。每条字线的输入数据可以和上下两层卷积核单元进行乘加操作,实现卷积核单元在二维输入中y方向上的天然滑动。倾斜的位线和卷积核在每层非易失性存储阵列中的多次复制可以使一个输入数据和相同卷积核中不同位置的卷积核数据进行乘法运算,实现卷积核在二维输入中x方向上的天然滑动,因此可以在不将二维输入展开为一维的情况下一次性并行完成卷积计算,运算速度极快。
进一步地,输入端信号发生装置和输出端信号发生装置相互配合,在子阵列单元所对应的字线电极和位线电极上施加电压,选择对应的非易失存储单元,并改变所选中的各非易失存储单元的电导值,使其存储对应的卷积核数据;
输入端信号发生装置还用于将二维输入数据以电压的方式,按照二维输入数据的坐标信息施加到上述子阵列单元中的对应字线电极上;
输出信号读出装置用于检测位线电极上的输出电流,并转化为电压信号,作为卷积运算的结果。
具体地,在卷积运算过程中,输入端信号发生装置用于将输入数据对应的电压施加在对应的字线电极上,且此时电压幅值不超过非易失存储单元的set电压。输出信号读出装置用于将位线电极上的输出电流转化为电压,并读出此电压值,作为卷积运算的结果。
需要说明的是,上述卷积运算加速器用于实现卷积神经网络中的卷积运算。此时,三维非易失性存储器阵列的字线电极作为卷积神经网络的输入,每层字线电极对应卷积神经网络二维输入中的一行,每层非易失存储阵列对应卷积核中的一行,每层位线电极对应着神经网络二维输出中的一行。输入端信号发生装置用于在字线电极上施加电压,所施加的电压有两个用途,一是用电压表示输入数据,经过调整好的电导值得到电流输出,完成神经网络的前向传播运算;二在字线电极上施加电压并配合位线电极来选中一个非易失性存储单元,并改变选中的非易失存储单元的电导值。输出端信号发生装置用于在位线电极上施加电压,配合字线电极选中一个非易失性存储单元,并改变选中的非易失性存储单元的电导值。输出信号读出装置用于检测位线电极上的输出电流,并转化为电压信号,作为卷积运算的结果。另外,在卷积神经网络的训练过程中,上述控制模块还用于通过在对应的字线电极和位线电极上施加写电压来调整各非易失存储单元的电导值,以对卷积神经网络的参数进行更新,并将卷积运算加速器上一轮的卷积运算结果重新作为卷积运算加速器下一轮卷积运算的输入。具体地,输入端信号发生装置用于在与需要进行电导调节的非易失性存储单元连接的字线电极上施加一定幅值的电压,同时输出端信号发生装置在与需要进行电导调节的非易失性存储单元连接的位线电极上施加一定幅值的电压,当一个非易失性存储单元两端的字线电极和位线电极都被施加了电压后,则代表此单元被选中,而输入端信号发生装置或输出端信号发生装置单独施加的电压不能改变非易失存储单元的电导值;输入端信号发生装置和输出端信号发生装置施加的写电压相减之后的绝对值需等于set电压值(置态电压)或者reset电压值(重置电压),取决于在更新过程中电导值需要被增加或者减少;此时,单元两端电压差等于此单元的set电压或者reset电压;具体地,需要增加电导时,非易失性存储单元两侧电压等于set电压;需要减少电导时,非易失性存储单元两侧电压等于reset电压,直至调节为卷积核权重对应的电导值。
第二方面,本发明提供了基于上述卷积运算加速器的卷积运算方法,包括以下步骤:
S1、当与二维输入数据进行卷积运算的卷积核尺寸为2k×c时,将卷积核按行拆分为k个2×c大小的卷积核单元,k为正整数;在字线电极阵列中选中k个大小为(M-2(k-1))×N的不同子阵列单元,并与k个2×c大小的卷积核单元按照卷积核的拆分顺序一一对应;将每个卷积核单元及其N-c次复制均存储至对应子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列中;将二维输入数据上第2i-1行到第M-2(k-i)行的数据以电压的方式按照对应的坐标信息施加到第i个子阵列单元中的对应字线电极上,i=1,2,…,k;
当卷积核的尺寸为(2k+1)×c时,将卷积核按行拆分为k个2×c大小的卷积核单元和一个1×c大小的卷积核单元;在字线电极阵列中选中k个大小为(M-2(k-1)-1)×N的子阵列单元,以及一个大小为(M-2k)×N的子阵列单元;k个大小为(M-2(k-1)-1)×N的子阵列单元与k个2×c大小的卷积核单元按照卷积核的拆分顺序一一对应;将每个2×c大小的卷积核单元及其N-c次复制均存储至对应子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列中;对上述大小为(M-2k)×N的子阵列单元中的各字线电极层,在与其相连的其中一个非易失性存储单元阵列中分别存储1×c大小的卷积核单元及该1×c大小的卷积核单元的N-c次复制,未存储卷积核单元的非易失性存储单元阵列中的非易失存储单元全部置为高阻态;将二维输入数据上第2i-1行到第M-2(k-i)-1行的数据以电压的方式按照对应的坐标信息施加到第i个(M-2(k-1)-1)×N大小的子阵列单元中的对应字线电极上,i=1,2,…,k;将二维输入数据上第2k+1行到第M行的数据以电压的方式按照对应的坐标信息施加到上述大小为(M-2k)×N的子阵列单元中的对应字线电极上;
具体地,通过在字线和位线选中非易失存储单元,在字线和位线上施加电压增加或者减少选中的非易失存储单元的电导值;在上述过程中,比较被选中单元的电导值和目标电导值,若不相等,则通过字线和位线在该单元两端施加电压脉冲使其电导值和目标电导值相等,最终目标为将非易失存储单元的电导值调节为对应的卷积核数据。
进一步地,在输入二维数据时,将二维输入数据转化为对应电压值,并通过输入信号发生装置施加到对应的字线电极上;其中,二维排布的输入数据按照坐标信息一一对应到二维排布的字线电极上。
S2、基于非易失性存储单元阵列并行地实现卷积核单元与二维输入数据不同部分的点乘运算,经由对应的位线电极层并行输出卷积核单元与二维输入数据对应部分的点乘运算结果之和,从而实现卷积核与二维输入数据的卷积运算;
其中,二维输入数据的尺寸为M×N;卷积核单元的每一行卷积核数据在对应非易失性存储单元阵列的对应斜线上依次存储后,沿着卷积核滑动方向水平移动到相邻的N-c条斜线上再次对该行卷积核数据进行存储,实现每一层非易失性存储单元阵列存储卷积核单元中对应行的卷积核数据及该卷积核数据的N-c次复制。
具体地,施加在字线电极上的电压作用在非易失性存储阵列后,在位线电极上产生电流,使用输出信号读出装置将位线上的电流转化为电压,得到输出电压矩阵。
为了进一步说明本发明所提供的卷积运算方法,下面结合具体实施例进行详述:
实施例2、
为进一步说明本发明提出的基于三维非易失性存储器阵列的卷积运算方法以及其优势,下面以4×4大小的图片作为输入信息,2×2大小的卷积核为例,阐述本发明提出的卷积运算方法的技术细节。
图5展示了基于实施例1所述三维非易失性存储器阵列的卷积运算的流程图,包含以下步骤:
A1、将4×4大小的图片中共16个像素值映射为电压值,并确定映射后的电压值对应的字线电极;
具体的,将0~255范围内的像素值线性映射到一定范围内的电压值,此电压范围根据不同类型的非易失存储器选择,遵循最大电压值不超过非易失存储器的set电压原则。设非易失性存储器的set电压为Vset,则像素值对应的电压值为其中P为像素值,255为像素值的最大值,例如Vset为1V,则映射的电压范围在0~1V,当像素值为127.5时,此像素值映射后的电压值为
具体的,4×4图片中的第一行第一列的像素值映射的电压值对应图3中的V11,在V11对应的字线电极中输入,第二行第一列的像素值映射的电压值对应图3中的V12,依此类推,则图5中V11~V44构成的4×4电压矩阵一一对应着4×4图片中的像素点。
A2、将2×2的卷积核权重映射到非易失性存储阵列上,即分配卷积核权重在非易失性存储阵列上的位置;
具体的,以图6中一层非易失性存储器阵列的映射方式为例,V41~V44对输入图片数据的第四行数据对应的电压值,k11~k22为2×2卷积核的权重,其中k11、k12为卷积核中第一行的权重,k21、k22为卷积核中第二行的权重,按照卷积运算规则,卷积核中第二行的权重需要在第四行的输入数据上滑动进行乘加运算,对应着k21、k22需要在V41~V44上滑动三次,于是将k21和k22复制三次映射到图5中左上图所示的位置,分别对应着图4中421和412、422和413、423和414位置,其他非易失性存储器层的卷积核映射方式可以依次类推。
图7为三维非易失性存储器的侧视图,展示了卷积核在其他非易失存储单元阵列层上的映射方案,其中V11~V41为输入图片数据的第一列数据对应的电压值,以V21为例,在卷积运算中卷积核的滑动过程中,需要分别和k21、k11进行乘法运算,所以V21对应的字线电极相连的上下两个非易失性存储单元分别映射k21和k11,同时每个非易失性存储阵列层内的卷积核映射方式可以结合图6以及上段所述内容类推。所以,每两层非易失存储单元阵列完整映射一个2×2的卷积核的三次复制,而在y方向上卷积核同样需要滑动三次,所以需要六层非易失存储器。
A3、根据卷积核权重值调节非易失性存储器阵列的电导值;
具体的,通过在字线和位线上施加电压调整非易失性存储单元的权重,需要增加电导时,非易失性存储单元两侧电压等于set电压,需要减少电导时,非易失性存储单元两侧电压等于reset电压,直至调节为卷积核权重对应的电导值。
A4、将4×4大小的电压矩阵输入到对应字线电极后,经过非易失性存储阵列在位线电极上得到2×2大小的输出电流矩阵,即由V11~V44得到I11~I33;
具体的,如图6中左下图所示,V41施加在字线1上,按照①所示的电流通路经过k21后在位线2上得到电流,V42施加在字线2上,按照②所示的电流通路经过k22后在位线2上得到电流,同理在图7中,V31和V32分别经过k11和k12后在位线2上得到电流,四股电流在位线2上汇聚为I31,即I31=V31×k11+V32×k12+V41×k21+V42×k22。同时,V42还会经过k21在位线3上产生电流,即I32=V32×k11+V33×k12+V42×k21+V43×k22,V42和V32参与了卷积运算中由于卷积核在x方向上滑动而产生的两次乘加运算,实现了输入数据的重复利用。同时在图3和图7中,V21~V24和V31~V34会作用于字线电极相连的上下两层非易失性存储器阵列,参与了卷积运算中由于卷积核在y方向上滑动而产生的两次乘加运算,实现了输入数据的重复利用。4×4的电压矩阵经过复制了多个2×2卷积核的电导阵列后,得到3×3的输出电流矩阵。
A5、输出电流矩阵经过输出信号读出装置线性转化为电压矩阵,将此电压传递给下一次卷积运算作为输入,或者储存此电压矩阵作为卷积运算的最终输出。
实施例3、
为进一步说明本发明提出的基于三维非易失性存储器阵列的卷积运算方法以及其优势,下面以3×3大小的卷积核为例,阐述本发明提出的卷积运算方法的技术细节。
如图8所示为横向上具有八条字线的三维非易失性存储阵列的主视图,展示了3×3大小的卷积核在多层非易失性存储单元层上的映射方案,输入数据为4×4大小。将3×3的卷积核切分为2×3和1×3的部分分别进行卷积运算,即图8中下方k1,k2和k3,k1、k2、k3分别对应着3×3大小卷积核的第一行、第二行和第三行;V1、V2、V3、V4对应4×4输入的第一行、第二行、第三行和第四行。将V1~V3以及k1、k2映射到图8上方左边四条字线对应的阵列,V1~V3依次输入到第一层、第二层、第三层字线电极;第一层、第二层、第三层、第四层非易失存储单元层分别映射k1、k2、k1、k2,左边四条字线对应的阵列完成k1、k2的卷积运算操作。将V3、V4以及k3映射到图8上方右边四条字线对应的阵列,V3、V4输入到第一层、第二层字线电极;第一层、第三层非易失存储单元层都映射k3,第二层、第四层非易失存储单元层的非易失性存储单元全部置为高阻态,左边四条字线对应的阵列完成k3的卷积运算操作。每层的映射方案在图9中展示。
图9为横向上具有八条字线的三维非易失性存储阵列的俯视剖视图,展示了3×3大小的卷积核在一层非易失性存储单元层上的映射方案。V11~V14为第一行的输入,同时以第一行卷积核k11~k13以及第三行卷积核k31~k33为例,展示在一层非易失性存储单元层上的映射方案。在左边4条字线上输入V11~V14,在左边4条字线对应的非易失性存储单元层中,在斜对角线上映射k11~k13,并平行复制一次;在右边4条字线上输入V11~V14,在右边4条字线对应的非易失性存储单元层中,在斜对角线上映射k31~k33,并平行复制一次。
相关技术方案同实施例1和实施例2,这里不做赘述。
综上所述,本发明提出了一种基于三维非易失性存储器阵列的卷积神经网络运算加速器及运算方法,三维非易失性存储器阵列由一层字线电极、一层非易失性存储单元、一层位线电极、一层平面非易失性存储单元阵列依次堆叠而形成的基本单元叠加构造而成,字线电极作为卷积运算的输入端,经过对应的非易失存储器阵列进行卷积运算,在位线上进行电流的叠加后得到卷积运算的输出。本发明提出的三维非易失性存储阵列有独特的拓扑结构,能够天然匹配卷积运算中卷积核在输入数据上滑动进行乘加运算的过程,一次性对二维输入数据进行卷积运算,得到二维输出数据。与现有技术相比,能够不破坏输入数据矩阵的位置信息,且能够得到矩阵形式的数据输出,符合软件中进行卷积运算的逻辑,同时并行度高,集成度高,在更小的占用面积下获得更多的运算次数。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种卷积运算加速器,其特征在于,包括:三维非易失性存储器阵列和控制模块;
所述三维非易失性存储器阵列包括:P个字线电极层;任意相邻的两个字线电极层之间均放置有一个位线电极层;任意相邻的字线电极层和位线电极层之间均放置有一个非易失性存储单元阵列,且非易失性存储单元阵列与字线电极层和位线电极层均垂直相连;
所述字线电极层包括多个平行排布的字线电极;所述P个字线电极层中的字线电极共同构成一个字线电极阵列;
非易失性存储单元阵列中的每一列非易失性存储单元均连接在与非易失性存储单元阵列相连的字线电极层中的同一条字线上;非易失性存储单元阵列中每一条斜线上的非易失性存储单元均连接在与非易失性存储单元阵列相连的位线电极阵列中的同一条位线上;所述斜线为非易失性存储单元阵列中与非易失性存储单元阵列中的对应对角线平行的斜线;
记二维输入数据的尺寸为M×N;
当与所述二维输入数据进行卷积运算的卷积核尺寸为2k×c时,所述控制模块用于将所述卷积核按行拆分为k个2×c大小的卷积核单元,k为正整数;在字线电极阵列中选中k个大小为(M-2(k-1))×N的不同子阵列单元,并与所述k个2×c大小的卷积核单元按照卷积核的拆分顺序一一对应;将每个卷积核单元及其N-c次复制均存储至对应子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列中;将所述二维输入数据上第2i-1行到第M-2(k-i)行的数据以电压的方式按照对应的坐标信息施加到第i个子阵列单元中的对应字线电极上,i=1,2,…,k;
当与所述二维输入数据进行卷积运算的卷积核尺寸为(2k+1)×c时,所述控制模块用于将卷积核按行拆分为k个2×c大小的卷积核单元和一个1×c大小的卷积核单元;在字线电极阵列中选中k个大小为(M-2(k-1)-1)×N的子阵列单元,以及一个大小为(M-2k)×N的子阵列单元;所述k个大小为(M-2(k-1)-1)×N的子阵列单元与所述k个2×c大小的卷积核单元按照卷积核的拆分顺序一一对应;将每个2×c大小的卷积核单元及其N-c次复制均存储至对应子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列中;对所述大小为(M-2k)×N的子阵列单元中的各字线电极层,在与其相连的其中一个非易失性存储单元阵列中分别存储所述1×c大小的卷积核单元及所述1×c大小的卷积核单元的N-c次复制,未存储卷积核单元的非易失性存储单元阵列中的非易失存储单元全部置为高阻态;将所述二维输入数据上第2i-1行到第M-2(k-i)-1行的数据以电压的方式按照对应的坐标信息施加到第i个(M-2(k-1)-1)×N大小的子阵列单元中的对应字线电极上,i=1,2,…,k;将所述二维输入数据上第2k+1行到第M行的数据以电压的方式按照对应的坐标信息施加到所述大小为(M-2k)×N的子阵列单元中的对应字线电极上;
所述三维非易失性存储器阵列用于基于非易失性存储单元阵列并行地实现卷积核单元与二维输入数据不同部分的点乘运算,经由对应的位线电极层并行输出卷积核单元与二维输入数据对应部分的点乘运算结果之和,从而实现所述卷积核与所述二维输入数据的卷积运算;
其中,卷积核单元的每一行卷积核数据在对应非易失性存储单元阵列的对应斜线上依次存储后,沿着卷积核滑动方向水平移动到相邻的N-c条斜线上再次对该行卷积核数据进行存储,实现每一层非易失性存储单元阵列存储卷积核单元中对应行的卷积核数据及该卷积核数据的N-c次复制。
2.根据权利要求1所述的卷积运算加速器,其特征在于,包括:当所述卷积核的尺寸为2k×c时,所述三维非易失性存储器阵列用于基于所述大小为(M-2(k-1))×N的子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列,并行地实现所述2×c大小的卷积核单元与二维输入数据不同部分的点乘运算后,经由对应的位线电极层并行输出所述2×c大小的卷积核单元与所述二维输入数据对应部分的点乘运算结果之和;所述控制模块还用于对所选中的各子阵列单元中同一相对位置的位线输出分别进行汇总,得到卷积核与二维输入数据的卷积运算结果;
当所述卷积核的尺寸为(2k+1)×c时,所述三维非易失性存储器阵列用于基于所述大小为(M-2(k-1)-1)×N的子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列,并行地实现2×c大小的卷积核单元与所述二维输入数据不同部分的点乘运算后,经由对应的位线电极层并行输出所述2×c大小的卷积核单元与所述二维输入数据对应部分的点乘运算结果之和;同时基于所述大小为(M-2k)×N的子阵列单元中的非易失性存储单元阵列,并行地实现所述1×c大小的卷积核单元与所述二维输入数据不同部分的点乘运算后,经由对应的位线电极层并行输出1×c大小的卷积核单元与二维输入数据对应部分的点乘运算结果之和;所述控制模块还用于将所选中的各子阵列单元中的各位线输出对应进行汇总,得到卷积核与二维输入数据的卷积运算结果。
3.根据权利要求1所述的卷积运算加速器,其特征在于,所述三维非易失性存储器阵列为多层堆叠结构,由字线电极层、所述非易失性存储单元阵列和位线电极层依次堆叠形成;各字线电极层之间、字线电极层与位线电极层之间均互相平行。
4.根据权利要求1所述的卷积运算加速器,其特征在于,所述控制模块包括:输入端信号发生装置、输出端信号发生装置和输出信号读出装置;
所述输入端信号发生装置和输出端信号发生装置相互配合,在子阵列单元所对应的字线电极和位线电极上施加电压,选择对应的非易失存储单元,并改变所选中的各非易失存储单元的电导值,使其存储对应的卷积核数据;
所述输入端信号发生装置还用于将二维输入数据以电压的方式,按照二维输入数据的坐标信息施加到子阵列单元中的对应字线电极上;
所述输出信号读出装置用于检测位线电极上的输出电流,并转化为电压信号,作为卷积运算的结果。
5.根据权利要求4所述的卷积运算加速器,其特征在于,所述输入信号发生装置的读电压小于或等于非易失存储单元上的当前set电压值,以保证在进行卷积运算时非易失存储单元的电导值不被改变。
6.根据权利要求1-5任意一项所述的卷积运算加速器,其特征在于,所述卷积运算加速器用于实现卷积神经网络中的卷积运算。
7.根据权利要求6所述的卷积运算加速器,其特征在于,在卷积神经网络的训练过程中,所述控制模块还用于通过在对应的字线电极和位线电极上施加写电压来调整各非易失存储单元的电导值,以对卷积神经网络的参数进行更新,并将卷积运算加速器上一轮的卷积运算结果重新作为卷积运算加速器下一轮卷积运算的输入。
8.根据权利要求7所述的卷积运算加速器,其特征在于,当需要增加非易失存储单元的电导值时,在对应的字线电极和位线电极上施加的写电压差值的绝对值为对应的set电压值;
当需要减小非易失存储单元的电导值时,在对应的字线电极和位线电极上施加的写电压差值的绝对值为对应的reset电压值。
9.一种基于权利要求1-8任意一项所述卷积运算加速器的卷积运算方法,其特征在于,包括以下步骤:
S1、当与所述二维输入数据进行卷积运算的卷积核尺寸为2k×c时,将所述卷积核按行拆分为k个2×c大小的卷积核单元,k为正整数;在字线电极阵列中选中k个大小为(M-2(k-1))×N的不同子阵列单元,并与所述k个2×c大小的卷积核单元按照卷积核的拆分顺序一一对应;将每个卷积核单元及其N-c次复制均存储至对应子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列中;将所述二维输入数据上第2i-1行到第M-2(k-i)行的数据以电压的方式按照对应的坐标信息施加到第i个子阵列单元中的对应字线电极上,i=1,2,…,k;
当与所述二维输入数据进行卷积运算的卷积核尺寸为(2k+1)×c时,将卷积核按行拆分为k个2×c大小的卷积核单元和一个1×c大小的卷积核单元;在字线电极阵列中选中k个大小为(M-2(k-1)-1)×N的子阵列单元,以及一个大小为(M-2k)×N的子阵列单元;所述k个大小为(M-2(k-1)-1)×N的子阵列单元与所述k个2×c大小的卷积核单元按照卷积核的拆分顺序一一对应;将每个2×c大小的卷积核单元及其N-c次复制均存储至对应子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列中;对所述大小为(M-2k)×N的子阵列单元中的各字线电极层,在与其相连的其中一个非易失性存储单元阵列中分别存储所述1×c大小的卷积核单元及所述1×c大小的卷积核单元的N-c次复制,未存储卷积核单元的非易失性存储单元阵列中的非易失存储单元全部置为高阻态;将所述二维输入数据上第2i-1行到第M-2(k-i)-1行的数据以电压的方式按照对应的坐标信息施加到第i个(M-2(k-1)-1)×N大小的子阵列单元中的对应字线电极上,i=1,2,…,k;将所述二维输入数据上第2k+1行到第M行的数据以电压的方式按照对应的坐标信息施加到所述大小为(M-2k)×N的子阵列单元中的对应字线电极上;
S2、基于非易失性存储单元阵列并行地实现卷积核单元与二维输入数据不同部分的点乘运算,经由对应的位线电极层并行输出卷积核单元与二维输入数据对应部分的点乘运算结果之和,从而实现所述卷积核与所述二维输入数据的卷积运算;
其中,所述二维输入数据的尺寸为M×N;卷积核单元的每一行卷积核数据在对应非易失性存储单元阵列的对应斜线上依次存储后,沿着卷积核滑动方向水平移动到相邻的N-c条斜线上再次对该行卷积核数据进行存储,实现每一层非易失性存储单元阵列存储卷积核单元中对应行的卷积核数据及该卷积核数据的N-c次复制。
10.根据权利要求9所述的卷积运算方法,其特征在于,当所述卷积核的尺寸为2k×c时,所述步骤S2包括:基于所述大小为(M-2(k-1))×N的子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列,并行地实现所述2×c大小的卷积核单元与二维输入数据不同部分的点乘运算后,经由对应的位线电极层并行输出所述2×c大小的卷积核单元与所述二维输入数据对应部分的点乘运算结果之和;对所选中的各子阵列单元中同一相对位置的位线输出分别进行汇总,得到所述卷积核与所述二维输入数据的卷积运算结果;
当所述卷积核的尺寸为(2k+1)×c时,所述步骤S2包括:基于所述大小为(M-2(k-1)-1)×N的子阵列单元中所有相邻的两个字线电极层之间的两层非易失性存储单元阵列,并行地实现2×c大小的卷积核单元与所述二维输入数据不同部分的点乘运算后,经由对应的位线电极层并行输出所述2×c大小的卷积核单元与所述二维输入数据对应部分的点乘运算结果之和;同时基于所述大小为(M-2k)×N的子阵列单元中的非易失性存储单元阵列,并行地实现所述1×c大小的卷积核单元与所述二维输入数据不同部分的点乘运算后,经由对应的位线电极层并行输出1×c大小的卷积核单元与二维输入数据对应部分的点乘运算结果之和;将所选中的各子阵列单元中的各位线输出对应进行汇总,得到所述卷积核与所述二维输入数据的卷积运算结果。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210272801.8A CN114724595B (zh) | 2022-03-18 | 2022-03-18 | 一种卷积运算加速器及卷积运算方法 |
PCT/CN2022/087794 WO2023173530A1 (zh) | 2022-03-18 | 2022-04-20 | 一种卷积运算加速器及卷积运算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210272801.8A CN114724595B (zh) | 2022-03-18 | 2022-03-18 | 一种卷积运算加速器及卷积运算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114724595A true CN114724595A (zh) | 2022-07-08 |
CN114724595B CN114724595B (zh) | 2023-03-10 |
Family
ID=82238502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210272801.8A Active CN114724595B (zh) | 2022-03-18 | 2022-03-18 | 一种卷积运算加速器及卷积运算方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114724595B (zh) |
WO (1) | WO2023173530A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115348432A (zh) * | 2022-08-15 | 2022-11-15 | 上海壁仞智能科技有限公司 | 数据处理方法及装置、图像处理方法、电子设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106843809A (zh) * | 2017-01-25 | 2017-06-13 | 北京大学 | 一种基于nor flash阵列的卷积运算方法 |
WO2018137177A1 (zh) * | 2017-01-25 | 2018-08-02 | 北京大学 | 一种基于nor flash阵列的卷积运算方法 |
WO2019184619A1 (zh) * | 2018-03-27 | 2019-10-03 | 腾讯科技(深圳)有限公司 | 卷积计算加速器、卷积计算方法及卷积计算设备 |
CN110826709A (zh) * | 2019-10-18 | 2020-02-21 | 华中科技大学 | 一种基于三维相变存储器的3d卷积运算装置及方法 |
CN111048135A (zh) * | 2018-10-14 | 2020-04-21 | 天津大学青岛海洋技术研究院 | 一种基于忆阻器内存计算的cnn处理装置及其工作方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106530210B (zh) * | 2016-10-31 | 2019-09-06 | 北京大学 | 基于阻变存储器件阵列实现并行卷积计算的设备和方法 |
CN106847335B (zh) * | 2016-12-27 | 2019-03-19 | 北京大学 | 基于阻变存储阵列的卷积计算存储一体化设备及方法 |
CN107368889B (zh) * | 2017-06-01 | 2019-08-23 | 北京大学 | 基于阻变存储器三维交叉阵列的卷积、池化和激活电路 |
US20190108437A1 (en) * | 2017-10-10 | 2019-04-11 | Fu-Chang Hsu | Two and three-dimensional neural network arrays |
-
2022
- 2022-03-18 CN CN202210272801.8A patent/CN114724595B/zh active Active
- 2022-04-20 WO PCT/CN2022/087794 patent/WO2023173530A1/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106843809A (zh) * | 2017-01-25 | 2017-06-13 | 北京大学 | 一种基于nor flash阵列的卷积运算方法 |
WO2018137177A1 (zh) * | 2017-01-25 | 2018-08-02 | 北京大学 | 一种基于nor flash阵列的卷积运算方法 |
WO2019184619A1 (zh) * | 2018-03-27 | 2019-10-03 | 腾讯科技(深圳)有限公司 | 卷积计算加速器、卷积计算方法及卷积计算设备 |
CN111048135A (zh) * | 2018-10-14 | 2020-04-21 | 天津大学青岛海洋技术研究院 | 一种基于忆阻器内存计算的cnn处理装置及其工作方法 |
CN110826709A (zh) * | 2019-10-18 | 2020-02-21 | 华中科技大学 | 一种基于三维相变存储器的3d卷积运算装置及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115348432A (zh) * | 2022-08-15 | 2022-11-15 | 上海壁仞智能科技有限公司 | 数据处理方法及装置、图像处理方法、电子设备及介质 |
CN115348432B (zh) * | 2022-08-15 | 2024-05-07 | 上海壁仞科技股份有限公司 | 数据处理方法及装置、图像处理方法、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023173530A1 (zh) | 2023-09-21 |
CN114724595B (zh) | 2023-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11501141B2 (en) | Shifting architecture for data reuse in a neural network | |
CN109034373B (zh) | 卷积神经网络的并行处理器及处理方法 | |
EP3671433A1 (en) | Nand block architecture for in-memory multiply-and-accumulate operations | |
CN110826709B (zh) | 一种基于三维相变存储器的3d卷积运算装置及方法 | |
US11449754B1 (en) | Neural network training method for memristor memory for memristor errors | |
US11989646B2 (en) | Neuromorphic apparatus having 3D stacked synaptic structure and memory device having the same | |
US11562229B2 (en) | Convolution accelerator using in-memory computation | |
WO2021088248A1 (zh) | 基于忆阻器的神经网络的并行加速方法及处理器、装置 | |
CN114254733A (zh) | 使用树形直接存储器存取(dma)总线的神经网络权重分布 | |
CN114724595B (zh) | 一种卷积运算加速器及卷积运算方法 | |
CN112559046A (zh) | 数据处理装置及人工智能处理器 | |
CN111048135A (zh) | 一种基于忆阻器内存计算的cnn处理装置及其工作方法 | |
CN111860819B (zh) | 一种可拼接、可分段的全连接神经网络推理加速器及其加速方法 | |
IL297054A (en) | Creating matrices using analog architectures | |
JP7251354B2 (ja) | 情報処理装置、情報処理プログラム、及び情報処理方法 | |
CN112115665A (zh) | 存算一体存储阵列及其卷积运算方法 | |
CN113627587A (zh) | 一种多通道式卷积神经网络加速方法及装置 | |
CN112712457A (zh) | 数据处理方法以及人工智能处理器 | |
US20240054330A1 (en) | Exploitation of low data density or nonzero weights in a weighted sum computer | |
CN111931921B (zh) | 一种用于稀疏神经网络的乒乓存储方法及装置 | |
US20230229729A1 (en) | Apparatus for solving circuit equations of processing elements using neural network and method for controlling the same | |
KR102311659B1 (ko) | 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치 및 그 동작 방법 | |
CN116386687B (zh) | 一种平衡电压降影响的存储器阵列 | |
CN112052941B (zh) | 一种应用于cnn网络卷积层的高效存算系统及其运算方法 | |
US20220328099A1 (en) | Method and apparatus for performing a mac operation in a memory array |
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 |