一种基于1T1R存储器阵列的卷积计算加速器及其操作方法与流程

文档序号:19420635发布日期:2019-12-14 01:24阅读:210来源:国知局
一种基于1T1R存储器阵列的卷积计算加速器及其操作方法与流程

本发明属于数字电路领域,更具体地,涉及一种基于1t1r存储器阵列的卷积计算加速器及其操作方法。



背景技术:

卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。随着深度学习理论的提出和数值计算设备的改进,卷积神经网络得到了快速发展,并被大量应用于计算机视觉、自然语言处理等领域。卷积神经网络结构包括输入层、隐含层和输出层,其中隐含层又包括卷积层、池化层和全连接层。相较于一般的全连接神经网络,卷积神经网络内的稀疏连接提高了网络结构的稳定性,同时减少了权重参数的总量,有利于神经网络的快速学习,并在计算时减少内存开销。

将输入层和卷积层的数据二值化,比起直接利用原始数据进行卷积计算,计算量更小,计算结果的准确性更高,故研究二值化数据的卷积运算有着非常重要的意义。

传统的卷积计算加速器是基于cmos器件的卷积计算,采用的是冯·诺伊曼计算架构,因架构中存储与计算分离,数据需要在存储器与处理器之间频繁传输,产生巨大的功耗和延时。随着cmos器件性能日益优化,总线上的数据传输问题日益严重,极大地限制了计算机的计算性能,即冯·诺伊曼瓶颈。

因此,提出一种功耗和延时较小的卷积计算加速器及其操作方法是亟需解决的问题。



技术实现要素:

针对现有技术的缺陷,本发明的目的在于提出一种基于1t1r存储器阵列的卷积计算加速器及其操作方法,旨在解决现有技术中由于计算架构中存储与计算分离而导致的延时较大的问题。

为实现上述目的,本发明一方面提供了一种基于1t1r存储器阵列的卷积计算加速器,包括1t1r存储器阵列、控制器;

其中,控制器分别与1t1r存储器阵列的字线、位线、选择线相连;

1t1r存储器阵列用于根据控制器输入的电压改变阵列中阻变单元的阻态,从而实现输入数值之间的卷积运算;

控制器用于根据进行卷积运算的数在1t1r存储器阵列的输入端输入不同的电压。

进一步优选地,进行卷积运算的数包括卷积核、待卷积数;卷积核与待卷积数均为二值数,卷积核为多行一列结构,待卷积数为多行多列结构,且卷积核的行数与待卷积数的行数相等,卷积核的行数小于或等于1t1r存储器阵列的选择线数目,待卷积数的列数小于或等于1t1r存储器阵列的位线数目。

进一步优选地,1t1r存储器阵列中包含阻变单元,所述阻变单元具有第一阈值和第二阈值,其中,第一阈值是使阻变单元从高阻态转变为低阻态的电压阈值,第二阈值是使阻变单元从低阻态转变为高阻态的反向电压阈值。

本发明另一方面提供了一种基于1t1r存储器阵列的卷积计算加速器操作方法,包括以下步骤:

s1、根据输入的待卷积数分别控制1t1r存储器阵列中不同行和列对应的选择线、字线、位线上的电压,将m行n列待卷积数存储到1t1r存储器阵列中,其中m和n均为大于等于1的整数;

s2、将存入数据的阻变单元所在的位线分别接地,在存入数据的阻变单元所在的字线上分别施加大于等于第二阈值绝对值的电压,根据输入的卷积核控制存入数据的阻变单元所在选择线上的电压,实现卷积核与待卷积数在列上的乘法运算;

s3、在存入数据的阻变单元所在的选择线上分别施加大于晶体管开启电压的电压,在存入数据的阻变单元所在的字线上分别施加小于第一阈值的电压,检测存入数据的阻变单元所在列上每一列的总电流;

s4、将所得每一列上的总电流与参考电流比较,获得每一列的运算结果之和,从而完成卷积运算。其中,参考电流为阻变单元处于低阻态时的读取电流。

进一步优选地,阵列中未存入数据的阻变单元所在的选择线、字线和位线全部悬空。

进一步优选地,当阻变单元的阻态为高阻态时,阻变单元存储的数据为“0”;当阻变单元的阻态为低阻态时,阻变单元存储的数据为“1”。

进一步优选地,步骤s1中所述的方法包括:

(1)在第m1行选择线上施加大于晶体管开启电压的电压,将第m1行的字线接地,并在第n1列的位线上施加大于等于第一阈值的正向电压,从而在1t1r存储器阵列的第m1行n1列(1≤m1≤m,1≤n1≤n)写入数据1;

(2)在m1行选择线上施加大于晶体管开启电压的电压,在第m1行的字线上施加大于等于第二阈值绝对值的电压,并将第n1列的位线接地,从而在1t1r存储器阵列的第m1行n1列(1≤m1≤m,1≤n1≤n)写入数据0。

进一步优选地,步骤s2中根据输入的卷积核控制存入数据的阻变单元所在选择线上的电压,实现卷积核与待卷积数在列上的乘法运算的方法包括:

(1)当卷积核中的数为0时,在其对应行所在选择线上施加大于晶体管开启电压的电压;

(2)当卷积核中的数为1时,将其对应行所在的选择线接地。

进一步优选地,步骤s2所得的乘法运算结果以阻变单元的阻态形式即时存储在1t1r阵列的阻变单元中。

进一步优选地,计算存入数据的阻变单元所在列上的总电流与参考电流的比值作为每一列的运算结果之和。

通过本发明所构思的以上技术方案,与现有技术相比,能够取得以下有益效果:

1、本发明提供了一种基于1t1r存储器阵列的卷积计算加速器,采用1t1r存储器阵列结构,通过晶体管断开状态几乎无电流通过的特点,解决了阵列中的漏电流问题,另外通过1t1r存储器阵列中阻变单元的阻态来存储计算结果,并且实现了存储与计算的融合,大幅节约了能耗和计算时间,解决了现有技术中由于计算架构中存储与计算分离而导致的延时较大的问题。

2、本发明提供了一种基于1t1r存储器阵列的卷积计算加速器操作方法,利用“与”逻辑运算和总电流读取的方式,代替卷积计算中最关键的乘法运算和加法运算步骤,实现了卷积计算,并简化了计算过程。依靠1t1r阵列的结构特点,一步完成卷积核对所有数据的乘法运算,运算结果可以并行读取,极大地提高了处理效率,整个操作实现了存储与计算的融合,大幅节约了能耗和计算时间。

附图说明

图1是本发明所提供的基于1t1r存储器阵列的卷积计算加速器结构示意图;

图2是本发明所提供的阻变单元电流-电压关系示意图;

图3是本发明实施例所提供的阻变单元写入数据的电压控制示意图;其中,图(a)为存储单元中写入数据“1”的电压控制示意图,图(b)为存储单元中写入数据“0”的电压控制示意图;

图4是本发明所提供的在1t1r阵列中完成“与”操作的示意图;其中,图(a)为控制数据“0”与数据“0”进行“与”操作的示意图,图(b)为控制数据“0”与数据“1”进行“与”操作的示意图,图(c)为控制数据“1”与数据“0”进行“与”操作的示意图,图(d)为控制数据“1”与数据(1)进行“与”操作的示意图;

图5是本发明实施例所提供的在1t1r阵列中一步完成多个阻变单元“与”操作的示意图;

图6是本发明实施例所提供的对卷积核与待卷积数完成“与”运算以后的结果按列进行求和的操作示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

为了实现上述目的,本发明提供了一种基于1t1r存储器阵列的卷积计算加速器,包括1t1r存储器阵列、控制器;

其中,控制器分别与1t1r存储器阵列的字线wl、位线bl、选择线sl相连;

1t1r存储器阵列用于根据控制器输入的电压改变阵列中阻变单元的阻态,从而实现卷积运算;具体的,如图1所示为1t1r存储器阵列,由晶体管t和阻变单元r组成,其中,晶体管为nmos管,包括栅极、源极和漏极,晶体管的漏极与阻变单元的负极相连。在1t1r存储器阵列中每一行的所有晶体管的源极连接在一起,构成阵列的字线wl;每一列的所有阻变单元的正极连接在一起,构成阵列的位线bl;每一行的所有晶体管的栅极连接在一起,构成阵列的选择线sl。通过在相应的选择线、字线和位线上施加电压,可选取阵列中的一个或几个阻变单元进行操作。

具体的,阻变单元具有第一阈值和第二阈值,其中,第一阈值是使阻变单元从高阻态转变为低阻态的电压阈值,第二阈值是使阻变单元从低阻态转变为高阻态的反向电压阈值。如图2所示为双极性阻变单元的代表性伏安特性曲线示意图,由图可知,当加在阻变单元两端的正向电压大于或等于第一阈值时,阻变单元从高阻态变为低阻态;当加在阻变单元的反向电压大于或等于第二阈值时,阻变单元从低阻态变为高阻态。以ti/hfo2(10nm)/tin阻变单元为例,其第一阈值取值为0.8v,第二阈值取值为-1v。图中,vset、vreset、vread均为操作电压,其中电压vset大于等于第一阈值,电压vreset大于等于第二阈值的绝对值,电压vread为小于第一阈值的正向电压。

控制器用于根据进行卷积运算的数在1t1r存储器阵列的输入端输入不同的电压。

具体的,进行卷积运算的数包括卷积核、待卷积数;其中,卷积核与待卷积数均为二值数,卷积核为多行一列结构,待卷积数为多行多列结构,且卷积核的行数与待卷积数的行数相等,卷积核的行数小于或等于1t1r存储器阵列的选择线数目,待卷积数的列数小于或等于1t1r存储器阵列的位线数目。

本发明另一方面提供了一种基于1t1r存储器阵列的卷积计算加速器操作方法,包括以下步骤:

s1、根据输入的待卷积数分别控制1t1r存储器阵列中不同行和列对应的选择线、字线、位线上的电压,将m行n列待卷积数存储到1t1r存储器阵列中,其中m和n均为大于等于1的整数;

实施例1、

在阻变单元中写入待卷积数,具体的,如图3所示,其中图(a)为存储单元中写入数据“1”的电压控制示意图,当在存储单元中写入数据“1”时,在晶体管栅极施加大于晶体管开启电压的电压vg,使晶体管源极和漏极导通,目前比较成熟的晶体管开启电压为0.7v左右。本发明中施加在栅极的操作电压vg为大于0.7v的电压。另外,晶体管源极接地(gnd),同时在阻变单元的正极施加大于等于第一阈值的正向电压vset,并将阵列中未存入数据的单元所在的选择线、字线和位线全部悬空。根据晶体管的导通特性,漏极和源极电压近似相等,所以漏极近似为接地,此时阻变单元两端压降近似为vset,使器件发生set操作,变成低阻,即写入数据“1”,此时存储单元处于低阻态。当在存储单元中写入数据“0”时,如图3中的(b)图所示为存储单元中写入数据“0”的电压控制示意图,在晶体管栅极施加大于晶体管开启电压的电压vg,使晶体管源极和漏极导通;晶体管源极施加大于等于第二阈值绝对值的电压vreset,同时阻变单元的正极接地(gnd)。根据晶体管的导通特性,漏极和源极电压近似相等,近似为vreset,此时阻变单元两端压降近似为vreset,使器件发生reset操作,变成高阻,即写入数据“0”,此时存储单元处于高阻态。

具体的,当在1t1r存储器阵列的第m1行n1列(1≤m1≤m,1≤n1≤n)写入数据1时,在第m1行选择线sl上施加大于晶体管开启电压的电压vg,使第m1行的字线wl接地,并在第n1列的位线bl上施加大于等于第一阈值的正向电压vset,将阵列中未存入数据的单元所在的选择线、字线和位线全部悬空,此时第m1行n1列的阻变单元两端压降近似为vset,使器件发生set操作,变成低阻,写入数据“1”,此时存储单元处于低阻态。当在1t1r存储器阵列的第m1行n1列(1≤m1≤m,1≤n1≤n)写入数据0时,在m1行选择线sl上施加大于晶体管开启电压的电压vg,在第m1行的字线wl上施加大于等于第二阈值绝对值的电压vreset,并将第n1列的位线bl接地,此时第m1行n1列的阻变单元两端的压降近似为vreset,使器件发生reset操作,变成高阻,写入数据“0”,此时存储单元处于高阻态。

进一步的,待卷积数串行输入到1t1r存储器阵列中,每输入完一个待卷积数后,若下一个输入的待卷积数与其处于同一行上,则输入完上一个待卷积数后将其所在的位线bl悬空,再输入下一个待卷积数;若下一个输入的待卷积数与其处于同一列上,则输入完上一个待卷积数后将其所在的字线wl悬空,再输入下一个待卷积数。

s2、将存入数据的阻变单元所在的位线分别接地,在存入数据的阻变单元所在的字线上分别施加大于等于第二阈值绝对值的电压,根据输入的卷积核控制存入数据的阻变单元所在选择线上的电压,实现卷积核与待卷积数在列上的乘法运算;

具体的,二值信息的乘法运算可以看作是“与”运算,即0×0=0,0×1=0,1×0=0,1×1=1,而卷积计算过程包含乘法和加法两个步骤,这里“与”运算可用于二值卷积计算中的乘法运算部分。如图4所示为在1t1r阵列中完成“与”操作的示意图,将存入数据的阻变单元所在的位线bl分别接地(gnd),在存入数据的阻变单元所在的字线wl上分别施加大于等于第二阈值绝对值的电压vreset,并将阵列中未存入数据的单元所在的选择线、字线和位线全部悬空,在存入数据的阻变单元所在的选择线sl上分别施加每一行卷积核p所对应的电压。

具体的,当p为0时,在所在选择线sl上施加大于晶体管开启电压的电压vg,晶体管漏极和源极导通,漏极电压为vreset,此时阻变单元两端电压近似为vreset,若此时阻变单元处于高阻态,则当前输入待卷积数q为0,由于vreset不会使阻变单元发生阻变,结果仍为高阻态,对应输出为0,逻辑计算结果直接存储在阻变单元中,如图4中的(a)图所示;若此时阻变单元处于低阻态,则当前输入待卷积数q为1,由于此时vreset会使阻变单元发生阻变,所以器件最终阻态为高阻态,对应输出为0,如图4中的(b)图所示。综上所述,当p=0,q=0时,输出q’=0;当p=0,q=1时,输出q’=0。

当p为1时,将所在选择线sl接地(gnd),晶体管漏极和源极不导通,此时电路处于断路状态,所在字线wl上的电压vreset无法对阻变单元造成影响,若此时阻变单元处于高阻态,则当前输入待卷积数q为0,输出仍为0,如图4中的(c)图所示;若此时阻变单元处于低阻态,则当前输入待卷积数q为1,输出仍为1,如图4中的(d)图所示。综上所述,当p=1,q=0时,输出q’=0;当p=1,q=1时,输出q’=1。

从以上几种情况综合来看正好对应“与”逻辑的输入和输出情况,故s2中所述的方法实现了“与”逻辑运算,实现卷积核与待卷积数在列上的乘法运算。

实施例2、

在1t1r阵列中一步完成多个阻变单元“与”操作,如对卷积核[011]和待卷积数进行“与”操作时,如图5所示,首先将卷积核[011]转换为3行1列的结构将待卷积数转换为3行2列的结构使卷积核的行数与待卷积数的行数相等,然后将待卷积数分别以阻变单元阻态的形式写入到1t1r存储器阵列的前三行前两列中,在前三行所在的字线上分别施加大于等于第二阈值绝对值的电压vreset,将前两列所在的位线接地(gnd),阵列中未存入数据的阻变单元所在的选择线、字线和位线全部悬空。根据卷积核在前三行的选择线上施加电压,其中,0代表大于晶体管开启电压的电压vg,1代表接地电压gnd,在卷积核0对应的行所在的选择线上施加大于晶体管开启电压的电压vg,将卷积核1对应的行所在的选择线接地(gnd),此时卷积核分别与每一列的待卷积数进行“与”运算,具体的在待卷积数的第一列上,卷积核中的数“0”与待卷积数“1”进行“与”操作得到结果“0”,卷积核中的数“1”与待卷积数“1”进行“与”操作得到结果“1”,卷积核中的数“1”与待卷积数“0”进行“与”操作得到结果“0”;第二列同理进行,最终得到卷积核与待卷积数在列上的乘法运算结果并以阻态的形式存储在相应的阻变单元中。由于所有操作电压为同时施加,所以卷积核会对6个阻变单元同时进行“与”运算,而且是一步完成。

s3、在存入数据的阻变单元所在的选择线上分别施加大于晶体管开启电压的电压,在存入数据的阻变单元所在的字线上分别施加小于第一阈值的电压,检测存入数据的阻变单元所在列上每一列的总电流;

具体的,实现卷积计算过程中的加法部分,在存入数据的阻变单元所在的选择线上施加大于晶体管开启电压的电压vg,在存入数据的阻变单元所在的字线上施加小于第一阈值的电压vread,将存入数据的阻变单元所在的位线接地(gnd);将阵列中未存入数据的单元所在的选择线、字线和位线全部悬空。检测存入数据的阻变单元的每一列上的总电流ibl。

s4、将所得每一列上的总电流与参考电流比较,获得每一列的运算结果之和,从而完成卷积运算。其中,参考电流为阻变单元处于低阻态时的读取电流。

具体的,将存入数据的阻变单元每一列上的总电流ibl与参考电流比较,即可获得每一列的运算结果之和。具体的,参考电流为阻变单元处于低阻态时的读取电流,利用阻变单元高阻态远大于低阻态这一特点,在相同读取电压下,低阻态的电流会远大于高阻态的电流,所以每一列的总电流主要由低阻态单元的个数决定。

实施例3、

对实施例2中卷积核与待卷积数完成乘法运算以后的结果按列进行求和,如图6所示,在存入数据的阻变单元所在的选择线上施加大于晶体管开启电压的电压vg,在存入数据的阻变单元所在的字线上施加小于第一阈值的电压vread,将存入数据的阻变单元所在的位线接地(gnd);将阵列中未存入数据的单元所在的选择线、字线和位线全部悬空。计算存入数据的阻变单元所在列上的总电流与参考电流的比值作为每一列的运算结果之和,这里参考电流即为阻变单元处于低阻态时的读取电流,即低阻态读取电流。具体的,卷积核与待卷积数完成乘法运算以后所得的第一列的结果为对应两个高阻态阻变单元和一个低阻态阻变单元,由于低阻态时的电流远大于高阻态时的电流,所以第一列的总电流ibl1近似为一倍的低阻态读取电流,所以第一列的结果求和为1;卷积核与待卷积数完成乘法运算以后所得的第一列的结果为对应一个高阻态单元和两个低阻态单元;由于低阻态的电流远大于高阻态的电流,所以第二列的总电流ibl2近似为两倍的低阻态读取电流,所以第二列的结果求和为2。综上可得,卷积运算所得的结果为[12]。

本发明提供了一种高效的二值化卷积计算加速器及其操作方法。加速器采用1t1r阵列结构,解决了阵列中的漏电流问题;利用“与”逻辑运算和总电流读取的方式,代替卷积计算中最关键的乘法运算和加法运算步骤,实现了卷积计算,并简化了计算过程;依靠1t1r阵列的结构特点,一步完成卷积核对所有数据的乘法运算,运算结果可以并行读取,极大地提高了处理效率;整个操作实现了存储与计算的融合,大幅节约了能耗和计算时间。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1