存算一体电路和基于存算一体电路的数据运算方法转让专利

申请号 : CN201910854667.0

文献号 : CN112558917B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 安友伟刘大海闫江李迪陈刚张登军李建球余作欢逯钊琦

申请人 : 珠海博雅科技有限公司

摘要 :

本发明实施例公开了一种存算一体电路和基于存算一体电路的数据运算方法,涉及存储器技术领域。所述存算一体电路,包括:配置单元,用于在预设精度误差范围内,计算在一次加法运算中所述存储单元的个数的最大值;选通单元,用于根据所述最大值提供选通信号;存算单元,根据所述选通信号将所述存储阵列按行和列分块以得到至少一个子块,所述存算单元用于根据所述选通信号每次选通一个所述子块,以分块对待运算数据和所述存储阵列的存储数据做乘加运算;模数转换单元,用于将每一个所述子块的模拟运算结果模数转换为数字运算结果;累加求和单元,对所述至少一个子块的所述数字运算结果做加法运算,得到所述存算一体电路的乘加运算结果。

权利要求 :

1.一种存算一体电路,其特征在于,包括:配置单元,用于基于存储单元的输出电流偏差,在对所述存储单元的输出电流进行加法运算的预设精度误差范围内,计算在一次加法运算中所述存储单元的个数的最大值;

选通单元,与所述配置单元相连,用于根据所述最大值提供选通信号;

存算单元,包括由多个所述存储单元组成的存储阵列,根据所述选通信号将所述存储阵列按行和列分块以得到至少一个子块,每一个所述子块中所述存储单元的行数小于等于所述最大值,

所述存算单元用于根据所述选通信号每次选通一个所述子块,以分块对待运算数据和所述存储阵列的存储数据做乘加运算;

模数转换单元,与所述存算单元相连,用于将每一个所述子块的模拟运算结果模数转换为数字运算结果;以及

累加求和单元,对所述至少一个子块的所述数字运算结果做加法运算,得到所述存算一体电路的乘加运算结果。

2.根据权利要求1所述的存算一体电路,其特征在于,所述存储单元包括非易失性存储器,所述非易失性存储器包括:浮栅场效应管和SONOS场效应管。

3.根据权利要求2所述的存算一体电路,其特征在于,所述累加求和单元,包括:加法器,用于对所述至少一个子块的所述数字运算结果做加法运算;

计数器,用于计数所述至少一个子块的所述数字运算结果的当前累加次数;

判断电路,用于根据所述当前累加次数,为所述加法器提供反馈信号,根据所述反馈信号,如果所述当前累加次数小于所述子块的个数减一,则所述加法器对当前累加结果和下一个所述子块的所述数字运算结果做加法运算,如果所述当前累加次数大于等于所述子块的个数减一,则所述加法器将所述当前累加结果作为所述存算一体电路的乘加运算结果。

4.根据权利要求2所述的存算一体电路,其特征在于,所述存算单元包括:所述存储阵列,其中,每一行的所述存储单元的控制端均连接至同一字线,多行所述存储单元对应连接至多个字线;

每一列的所述存储单元的第一通路端均连接至同一位线,多列所述存储单元对应连接至多个位线;

每一列的所述存储单元的第二通路端均连接至同一源极线,多列所述存储单元对应连接至多个源极线。

5.根据权利要求4所述的存算一体电路,其特征在于,所述存算单元还包括:字线信号产生电路,用于根据所述待运算数据产生多个字线驱动信号,并且根据所述选通信号为当前选通的所述子块的相应行的所述存储单元提供所述字线驱动信号;

位线信号产生电路,用于根据所述选通信号为所述当前选通的所述子块的相应列的所述存储单元提供位线驱动信号;

根据所述字线驱动信号和所述位线驱动信号,所述当前选通的所述子块的所述存储单元处于导通状态并在所述存储单元的所述第一通路端产生输出电流,当前未选通的所述子块的所述存储单元处于关断状态。

6.根据权利要求5所述的存算一体电路,其特征在于,所述存算单元还包括:输出信号测量电路,与所述多个位线的一端相连,用于测量所述存储阵列中每一列所述存储单元的所述第一通路端的输出电流和以得到每一个所述子块的所述模拟运算结果。

7.根据权利要求6所述的存算一体电路,其特征在于,在每一个所述子块中,当所述存储单元处于导通状态时,通过所述存储单元的工作模型,对所述存储单元的所述存储数据和所述待运算数据做乘法运算,得到每一个所述存储单元的所述第一通路端的所述输出电流;

在每一个所述子块中,分列对所述存储单元的所述第一通路端的所述输出电流做加法运算,得到所述至少一个子块的所述模拟运算结果。

8.一种基于存算一体电路的数据运算方法,其特征在于,所述存算一体电路包括由多个存储单元组成的存储阵列,所述数据运算方法包括:基于所述存储单元的输出电流偏差,在对所述存储单元的输出电流进行加法运算的预设精度误差范围内,计算在一次加法运算中所述存储单元的个数的最大值;

根据所述最大值提供选通信号,并根据所述选通信号将所述存储阵列按行和列分块以得到至少一个子块,每一个所述子块中所述存储单元的行数小于等于所述最大值;

根据所述选通信号每次选通一个所述子块,以分块对待运算数据和所述存储阵列的存储数据做乘加运算;

将每一个所述子块的模拟运算结果模数转换为数字运算结果;以及对所述至少一个子块的所述数字运算结果做加法运算,得到所述存算一体电路的乘加运算结果。

9.根据权利要求8所述的数据运算方法,其特征在于,所述对所述至少一个子块的所述数字运算结果做加法运算,得到所述存算一体电路的乘加运算结果,包括:对所述至少一个子块的所述数字运算结果做加法运算;

计数所述至少一个子块的所述数字运算结果的当前累加次数;

如果所述当前累加次数小于所述子块的个数减一,则对当前累加结果和下一个所述子块的所述数字运算结果做加法运算;

如果所述当前累加次数大于等于所述子块的个数减一,则将所述当前累加结果作为所述存算一体电路的乘加运算结果。

10.根据权利要求9所述的数据运算方法,其特征在于,所述根据所述选通信号每次选通一个所述子块,以分块对待运算数据和所述存储阵列的存储数据做乘加运算,包括:根据所述待运算数据产生多个字线驱动信号,并且根据所述选通信号为当前选通的所述子块的相应行的所述存储单元提供所述字线驱动信号;

根据所述选通信号为所述当前选通的所述子块的相应列的所述存储单元提供位线驱动信号;

根据所述字线驱动信号和所述位线驱动信号,所述当前选通的所述子块的所述存储单元处于导通状态,并在所述存储单元的第一通路端产生输出电流,当前未选通的所述子块的所述存储单元处于关断状态。

11.根据权利要求10所述的数据运算方法,其特征在于,所述根据所述选通信号每次选通一个所述子块,以分块对待运算数据和所述存储阵列的存储数据做乘加运算,还包括:在每一个所述子块中,当所述存储单元处于导通状态时,通过所述存储单元的工作模型,对所述存储单元的所述存储数据和所述待运算数据做乘法运算,得到每一个所述存储单元的所述第一通路端的所述输出电流;

在每一个所述子块中,分列对所述存储单元的所述第一通路端的所述输出电流做加法运算,得到所述至少一个子块的所述模拟运算结果。

说明书 :

存算一体电路和基于存算一体电路的数据运算方法

技术领域

[0001] 本发明涉及存储器技术领域,具体涉及一种存算一体电路和基于存算一体电路的数据运算方法。

背景技术

[0002] 在传统冯诺依曼计算体系结构中,存储器与处理器是分离的,两者之间通过数据总线进行连接,数据处理需要在存储器与处理器之间来回传输。但是,随着大数据应用的兴
起,海量数据的传输与处理使得传统冯诺依曼计算体系结构面临带宽与功耗的双重挑战,
分别称为存储墙与功耗墙问题。为了解决这两个难题,近年来,受到人脑中突触能同时进行
记忆和计算的启发,计算机架构中的存算一体(Processing‑In‑Memory,PIM)技术开始得到
人们的广泛研究。
[0003] 相关技术中,通过在由非易失性存储器组成的存储单元阵列中直接进行数据运算来实现数据的存储和运算一体化。然而,在实际工作中存储单元的输出电流往往存在电流
偏差,这降低了存算一体电路的数据运算精度。

发明内容

[0004] 为了克服相关技术中存在的存储单元的输出电流存在电流偏差致使存算一体电路的运算精度低的问题,本发明实施例提供了一种存算一体电路和基于存算一体电路的数
据运算方法。
[0005] 根据本发明的一方面,提供一种存算一体电路,包括:
[0006] 配置单元,用于基于存储单元的输出电流偏差,在对所述存储单元的输出电流进行加法运算的预设精度误差范围内,计算在一次加法运算中所述存储单元的个数的最大
值;
[0007] 选通单元,与所述配置单元相连,用于根据所述最大值提供选通信号;
[0008] 存算单元,包括由多个所述存储单元组成的存储阵列,根据所述选通信号将所述存储阵列按行和列分块以得到至少一个子块,每一个所述子块中所述存储单元的行数小于
等于所述最大值,
[0009] 所述存算单元用于根据所述选通信号每次选通一个所述子块,以分块对待运算数据和所述存储阵列的存储数据做乘加运算;
[0010] 模数转换单元,与所述存算单元相连,用于将每一个所述子块的模拟运算结果模数转换为数字运算结果;以及
[0011] 累加求和单元,对所述至少一个子块的所述数字运算结果做加法运算,得到所述存算一体电路的乘加运算结果。
[0012] 可选地,所述存储单元包括非易失性存储器,所述非易失性存储器包括:浮栅场效应管和SONOS场效应管。
[0013] 可选地,所述累加求和单元,包括:
[0014] 加法器,用于对所述至少一个子块的所述数字运算结果做加法运算;
[0015] 计数器,用于计数所述至少一个子块的所述数字运算结果的当前累加次数;
[0016] 判断电路,用于根据所述当前累加次数,为所述加法器提供反馈信号,
[0017] 根据所述反馈信号,如果所述当前累加次数小于所述子块的个数减一,则所述加法器对当前累加结果和下一个所述子块的所述数字运算结果做加法运算,
[0018] 如果所述当前累加次数大于等于所述子块的个数减一,则所述加法器将所述当前累加结果作为所述存算一体电路的乘加运算结果。
[0019] 可选地,所述存算单元包括:
[0020] 所述存储阵列,其中,每一行的所述存储单元的控制端均连接至同一字线,多行所述存储单元对应连接至多个字线;
[0021] 每一列的所述存储单元的第一通路端均连接至同一位线,多列所述存储单元对应连接至多个位线;
[0022] 每一列的所述存储单元的第二通路端均连接至同一源极线,多列所述存储单元对应连接至多个源极线。
[0023] 可选地,所述存算单元还包括:
[0024] 字线信号产生电路,用于根据所述待运算数据产生多个字线驱动信号,并且根据所述选通信号为当前选通的所述子块的相应行的所述存储单元提供所述字线驱动信号;
[0025] 位线信号产生电路,用于根据所述选通信号为所述当前选通的所述子块的相应列的所述存储单元提供位线驱动信号;
[0026] 根据所述字线驱动信号和所述位线驱动信号,所述当前选通的所述子块的所述存储单元处于导通状态并在所述存储单元的所述第一通路端产生输出电流,
[0027] 当前未选通的所述子块的所述存储单元处于关断状态。
[0028] 可选地,所述存算单元还包括:
[0029] 输出信号测量电路,与所述多个位线的一端相连,用于测量所述存储阵列中每一列所述存储单元的所述第一通路端的输出电流和以得到每一个所述子块的所述模拟运算
结果。
[0030] 可选地,在每一个所述子块中,当所述存储单元处于导通状态时,通过所述存储单元的工作模型,对所述存储单元的所述存储数据和所述待运算数据做乘法运算,得到每一
个所述存储单元的所述第一通路端的所述输出电流;
[0031] 在每一个所述子块中,分列对所述存储单元的所述第一通路端的所述输出电流做加法运算,得到所述至少一个子块的所述模拟运算结果。
[0032] 根据本发明的另一方面,提供一种基于存算一体电路的数据运算方法,所述存算一体电路包括由多个存储单元组成的存储阵列,所述数据运算方法包括:
[0033] 基于所述存储单元的输出电流偏差,在对所述存储单元的输出电流进行加法运算的预设精度误差范围内,计算在一次加法运算中所述存储单元的个数的最大值;
[0034] 根据所述最大值提供选通信号,并根据所述选通信号将所述存储阵列按行和列分块以得到至少一个子块,每一个所述子块中所述存储单元的行数小于等于所述最大值;
[0035] 根据所述选通信号每次选通一个所述子块,以分块对待运算数据和所述存储阵列的存储数据做乘加运算;
[0036] 将每一个所述子块的模拟运算结果模数转换为数字运算结果;以及
[0037] 对所述至少一个子块的所述数字运算结果做加法运算,得到所述存算一体电路的乘加运算结果。
[0038] 可选地,所述对所述至少一个子块的所述数字运算结果做加法运算,得到所述存算一体电路的乘加运算结果,包括:
[0039] 对所述至少一个子块的所述数字运算结果做加法运算;
[0040] 计数所述至少一个子块的所述数字运算结果的当前累加次数;
[0041] 如果所述当前累加次数小于所述子块的个数减一,则对当前累加结果和下一个所述子块的所述数字运算结果做加法运算;
[0042] 如果所述当前累加次数大于等于所述子块的个数减一,则将所述当前累加结果作为所述存算一体电路的乘加运算结果。
[0043] 可选地,所述根据所述选通信号每次选通一个所述子块,以分块对待运算数据和所述存储阵列的存储数据做乘加运算,包括:
[0044] 根据所述待运算数据产生多个字线驱动信号,并且根据所述选通信号为当前选通的所述子块的相应行的所述存储单元提供所述字线驱动信号;
[0045] 根据所述选通信号为所述当前选通的所述子块的相应列的所述存储单元提供位线驱动信号;
[0046] 根据所述字线驱动信号和所述位线驱动信号,所述当前选通的所述子块的所述存储单元处于导通状态,并在所述存储单元的所述第一通路端产生输出电流,
[0047] 当前未选通的所述子块的所述存储单元处于关断状态。
[0048] 可选地,所述根据所述选通信号每次选通一个所述子块,以分块对待运算数据和所述存储阵列的存储数据做乘加运算,还包括:
[0049] 在每一个所述子块中,当所述存储单元处于导通状态时,通过所述存储单元的工作模型,对所述存储单元的所述存储数据和所述待运算数据做乘法运算,得到每一个所述
存储单元的所述第一通路端的所述输出电流;
[0050] 在每一个所述子块中,分列对所述存储单元的所述第一通路端的所述输出电流做加法运算,得到所述至少一个子块的所述模拟运算结果。
[0051] 本发明的一个实施例至少包括以下优点或有益效果:
[0052] 根据在一次加法运算中存储单元的个数的最大值,将存储阵列按行和列分块以得到至少一个子块,使得每一个子块中存储单元的行数小于等于最大值。分块对待运算数据
和存储阵列的存储数据做乘加运算,得到至少一个子块的模拟运算结果。具体地,在每一个
子块中,当存储单元处于导通状态时,通过存储单元的工作模型,对存储单元的存储数据和
待运算数据做乘法运算,得到每一个存储单元的输出电流;在每一个子块中,分列对存储单
元的第一通路端的输出电流做加法运算,得到至少一个子块的模拟运算结果。控制每个子
块中存储单元的行数,以避免本发明实施例中数据运算的运算精度超出算法允许的预设精
度误差范围,提高了存算一体电路的数据运算精度。
[0053] 另外,存算一体电路中的存储阵列可以对数据进行存储和计算,无需耗费数据的存取时间,提高了基于存算一体电路的数据运算速度和效率。

附图说明

[0054] 通过以下参照附图对本发明实施例的描述,本发明的上述以及其他目的、特征和优点将更为清楚,在附图中:
[0055] 图1示出本发明的一个实施例的存算一体电路的结构示意图。
[0056] 图2示出本发明的一个实施例的存储单元的基准输出电流的分布示意图。
[0057] 图3示出本发明的一个实施例的存算一体电路的结构示意图。
[0058] 图4示出本发明的一个实施例的存算单元的结构示意图。
[0059] 图5a示出本发明的一个实施例的存储单元的转移特性曲线。
[0060] 图5b示出本发明的一个实施例的存储单元的输出特性曲线。
[0061] 图6示出本发明的一个实施例的基于存算一体电路的数据运算方法的流程图。

具体实施方式

[0062] 以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有
这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过
程、流程没有详细叙述。另外附图不一定是按比例绘制的。
[0063] 图1是本发明的一个实施例的存算一体电路的结构示意图。如图1所示,存算一体电路包括:存算单元100、配置单元200、选通单元300、模数转换单元400和累加求和单元
500。存算单元100包括由多个存储单元组成的存储阵列。
[0064] 配置单元200,用于基于存储单元的输出电流偏差,在对存储单元的输出电流进行加法运算的预设精度误差范围内,计算在一次加法运算中存储单元的个数的最大值N。图2
是本发明的一个实施例的存储单元的基准输出电流的分布示意图。如图2所示的存储单元
中存储2位二进制数据。可以根据存储单元的输出电流来确定存储单元的存储数据。例如,
所述存储单元的基准输出电流是存储单元的漏极电流的基准输出电流。当给不同阈值电压
的存储单元施加相同的栅源电压和漏源电压时,存储单元的漏极电流不同。规定漏极电流
iD1、漏极电流iD2、漏极电流iD3和漏极电流iD4分别作为存储单元存储有存储数据“00”、“01”、
“10”和“11”时的基准输出电流。然而在实际工作中,存储单元的漏极电流往往存在电流偏
差,如图2所示,L是存储单元可用于描述存储数据的电流宽度,l是基准输出电流的理想电
k
流值间距,l=L/2 ,k为存储单元存储的二进制数据的位数。实际输出电流偏离基准输出电
流的输出电流偏差值为r,r时,认为该存储单元存储二进制数据“00”,当某一个存储单元的漏极电流iD在iD2‑r/2iD2+r/2之间时,认为该存储单元存储二进制数据“01”,当某一个存储单元的漏极电流是iD
在iD3‑r/2漏极电流是iD在iD4‑r/2
[0065] 例如,在对存储单元的输出电流进行加法运算的预设精度误差范围内,在一次加法运算中存储单元的个数的最大值N的计算公式为:
[0066] N=2P/r     (1)
[0067] 其中,P为对存储单元的输出电流,例如漏极电流,进行加法运算的预设精度误差,r为每个存储单元的输出电流偏差,输出电流偏差r是实际输出电流偏离(包括正偏离和负
偏离)基准输出电流的电流范围值,r/2是实际输出电流正偏离或负偏离基准输出电流的电
流偏差值。
[0068] 选通单元300,与配置单元200相连,用于根据最大值N提供选通信号Vs。在存算单元100中,根据选通信号Vs将存储阵列按行和列分块以得到至少一个子块110,每一个子块
110中存储单元的行数小于等于最大值N。例如,存算单元100中存储阵列的行数为Q,而在一
次加法运算中存储单元的个数的最大值为N,则如果Q可以整除N,则将存储阵列按行分为
[Q/N]个子块110,每个子块110中存储单元的行数等于最大值N;如果Q不可以整除N,则将存
储阵列按行分为[Q/N]+1个子块110,前[Q/N]个子块110的存储单元的行数等于最大值N,第
[Q/N]+1个子块110的存储单元的行数小于最大值N。可以理解的是,只要每一个子块110中
存储单元的行数小于等于最大值,将存储阵列按行分块的分块方式还可以为其他方式。
[0069] 存算单元100,用于根据选通信号Vs每次选通一个子块110,以分块对待运算数据X和存储阵列的存储数据W做乘加运算。模数转换单元400,与存算单元100相连,用于将每一
个子块110的模拟运算结果Y1模数转换为数字运算结果Y2。累加求和单元500,对至少一个
子块110的数字运算结果Y2做加法运算,得到存算单元100的乘加运算结果Y。
[0070] 可选地,存储单元包括非易失性存储器。非易失性存储器具有掉电仍保留数据的特点,运用此特性设计存储阵列来进行数据运算,非易失性存储器例如为忆阻器、相变存储
器、铁电存储器、自旋磁矩耦合存储器、浮栅场效应管或SONOS(硅‑氧化硅‑氮化硅‑氧化硅‑
硅)场效应管等。
[0071] 图3是本发明的一个实施例的存算一体电路的结构示意图。如图3所示,存算一体电路包括:存算单元100、配置单元200、选通单元300、模数转换单元400和累加求和单元
500。其中,累加求和单元500包括:加法器510、计数器520和判断电路530。
[0072] 加法器510,用于对至少一个子块110的数字运算结果Y2做加法运算。计数器520,用于计数至少一个子块110的数字运算结果Y2的当前累加次数T。判断电路530,用于根据当
前累加次数T,为加法器510提供反馈信号FB,根据反馈信号FB,如果当前累加次数T小于存
储阵列的子块110的个数减一,则加法器510对当前累加结果和下一个子110的数字运算结
果Y2做加法运算,如果当前累加次数T大于等于存储阵列的子块110的个数减一,则加法器
510将当前累加结果作为存算一体电路的乘加运算结果Y。
[0073] 图4示出本发明的一个实施例的存算单元的结构示意图。如图4所示,存算单元100中包括n×m阵列布置的n×m个存储单元111,n和m是大于0的正整数、字线信号产生电路
120、位线信号产生电路130和输出信号测量电路140。为了描述方便,假设基于存储单元111
的输出电流偏差,在对存储单元111的输出电流进行加法运算的预设精度误差范围内,计算
在一次加法运算中存储单元111的个数的最大值N为2,则每一个子块110中存储单元111的
行数小于等于最大值2。
[0074] 其中,第i行的存储单元111的控制端(例如,控制栅)均连接至同一字线WLi(0极)均连接至同一位线BLj(0储单元111的第二通路端(例如,源极)均连接至同一源极线SLj(0对应连接至多个源极线SL。可以理解的是,可以将第i行的存储单元111的第二通路端(例
如,源极)均连接至同一源极线SLi(0这里可以将多个源极线SL接参考地电位。可选地,通过提前为存储阵列中的存储单元111编
程,使得存储阵列的存储单元111中存储有存储数据W,第i行第j列的存储单元111中存储有
存储数据wij,其中,0的阈值电压。例如,通过热载流子注入和Fowler‑Nordheim隧穿等方法设置存储阵列中每一
个存储单元111的阈值电压,以使每一个存储单元111中存储有与预设权值相对应的存储数
据W。通过非易失性存储器的擦写特性实现存储数据W的修改,速度快且可实现数值的连续
调节。
[0075] 字线信号产生电路120,用于根据待运算数据X产生多个字线驱动信号,并且根据选通信号Vs为当前选通的子块110的相应行的存储单元111的控制端提供字线驱动信号。具
体地,字线信号产生电路120,根据待运算数据X的大小,生成相同脉宽、不同幅值的多个字
线驱动信号,其幅值大小与相应的待运算数据X大小成比例。
[0076] 位线信号产生电路130,用于根据选通信号Vs为当前选通的子块110的相应列的存储单元111的第一通路端提供位线驱动信号。根据字线驱动信号和位线驱动信号,当前选通
的子块110的存储单元111处于导通状态并在存储单元111的第一通路端产生输出电流。当
前未选通的子块110的存储单元111处于关断状态。
[0077] 输出信号测量电路140,与多个位线BL的一端相连,用于测量存储阵列中每一列存储单元111的第一通路端的输出电流和以得到每一个子块110的模拟运算结果Y1。可以理解
的是,这里的输出信号测量电路140可以与多个源极线SL的一端相连,用于测量存储阵列中
每一列存储单元111的第二通路端的输出电流和以得到每一个子块110的模拟运算结果Y1。
[0078] 具体地,在每一个子块110中,当存储单元111处于导通状态时,通过存储单元111的工作模型,对存储单元111的存储数据W和待运算数据X做乘法运算,得到每一个存储单元
111的第一通路端的输出电流。当处于导通状态时,存储单元111在感知到的控制端施加的
字线驱动信号和第一通路端施加的位线驱动信号时,会在存储单元111的第一通路端产生
一定大小的电流,该电流与自身存储状态和控制端施加的字线驱动信号有关,可以表征对
应两个数值的乘积。可以理解的是,当存储单元111处于关断状态时,存储单元111的第一通
路端的输出电流为零。在每一个子块110中,分列对存储单元111的第一通路端的输出电流
做加法运算,得到至少一个子块110的模拟运算结果Y1。
[0079] 例如,待运算数据X为xij,其中,0
[0080] 图5a是本发明的一个实施例的存储单元的转移特性曲线。图5b是本发明的一个实施例的存储单元的输出特性曲线。图5a和图5b所示的存储单元例如是浮栅场效应管或
SONOS场效应管,存储单元的源极接参考地电位。如图5a所示的转移特性曲线中,当漏源电
压uDS为常量时,漏极电流iD和栅源电压uGS存在函数关系。跨导gm数值的大小表示栅源电压
uGS对漏极电流iD的控制作用的强弱。跨导gm是存储单元的转移特性曲线上某一点的切线的
斜率。跨导gm与切点的位置密切相关,由于转移特性曲线的非线性,因而漏极电流iD愈大,跨
导gm愈大。通常,存储单元例如浮栅场效应管或SONOS场效应管有三个工作区域:可变电阻
区、恒流区和夹断区。如图5b所示的输出特性曲线中示出存储单元的可变电阻区,具体示出
存储单元施加三种栅源电压uGS时漏源电压uDS和漏极电流iD的关系曲线。当存储单元施加不
同的栅源电压uGS和漏源电压uDS时,输出不同的漏极电流iD。
[0081] 可选地,当漏源电压uDS为常量时,存储单元的工作模型的计算公式包括:
[0082] iD=gm×uGS     (2)
[0083] 其中,iD为存储单元的漏极电流,uGS为存储单元的栅源电压,gm为存储单元的跨导。
[0084] 可以理解的是,通过公式(2)得到每一个存储单元的第一通路端的输出电流iD。进而,利用基尔霍夫定律,在每一个子块中,分列对存储单元的输出电流iD做加法运算,得到
至少一个子块的模拟运算结果Y1。
[0085] 根据本发明实施例,根据在一次加法运算中存储单元的个数的最大值,将存储阵列按行和列分块以得到至少一个子块,使得每一个子块中存储单元的行数小于等于最大
值。分块对待运算数据和存储阵列的存储数据做乘加运算,得到至少一个子块的模拟运算
结果。具体地,在每一个子块中,当存储单元处于导通状态时,通过存储单元的工作模型,对
存储单元的存储数据和待运算数据做乘法运算,得到每一个存储单元的输出电流;在每一
个子块中,分列对存储单元的第一通路端的输出电流做加法运算,得到至少一个子块的模
拟运算结果。控制每个子块中存储单元的行数,以避免本发明实施例中数据运算的运算精
度超出算法允许的预设精度误差范围,提高了存算一体电路的数据运算精度。
[0086] 另外,存算一体电路中的存储阵列可以对数据进行存储和计算,无需耗费数据的存取时间,提高了基于存算一体电路的数据运算速度和效率。
[0087] 图6是本发明的一个实施例的基于存算一体电路的数据运算方法的流程图。本实施例中的存算一体电路是如上述实施例中所示的存算一体电路,包括由多个存储单元组成
的存储阵列。具体包括:
[0088] 步骤S610,基于所述存储单元的输出电流偏差,在对所述存储单元的输出电流进行加法运算的预设精度误差范围内,计算在一次加法运算中所述存储单元的个数的最大
值。
[0089] 步骤S620,根据所述最大值提供选通信号,并根据所述选通信号将所述存储阵列按行和列分块以得到至少一个子块,每一个所述子块中所述存储单元的行数小于等于所述
最大值。
[0090] 步骤S630,根据所述选通信号每次选通一个所述子块,以分块对待运算数据和所述存储阵列的存储数据做乘加运算。
[0091] 具体地,根据待运算数据产生多个字线驱动信号,并且根据选通信号为当前选通的子块的相应行的存储单元提供字线驱动信号;根据选通信号为当前选通的子块的相应列
的存储单元提供位线驱动信号;根据字线驱动信号和位线驱动信号,当前选通的子块的存
储单元处于导通状态并在第一通路端产生输出电流,当前未选通的子块的存储单元处于关
断状态。
[0092] 在每一个子块中,当存储单元处于导通状态时,通过存储单元的工作模型,对存储单元的存储数据和待运算数据做乘法运算,得到每一个存储单元的第一通路端的输出电
流;在每一个子块中,分列对存储单元的第一通路端的输出电流做加法运算,得到至少一个
子块的模拟运算结果。
[0093] 步骤S640,将每一个所述子块的模拟运算结果模数转换为数字运算结果。
[0094] 步骤S650,对所述至少一个子块的所述数字运算结果做加法运算,并计数所述至少一个子块的所述数字运算结果的当前累加次数。
[0095] 步骤S660,判断所述当前累加次数是否小于所述子块的个数减一。如果所述当前累加次数小于所述子块的个数减一,则返回执行步骤S630;
[0096] 如果所述当前累加次数大于等于所述子块的个数减一,则将所述当前累加结果作为所述存算一体电路的乘加运算结果。
[0097] 根据本发明实施例,根据选通信号每次选通一个子块,以分块对待运算数据和存储阵列的存储数据做乘加运算,将每一个子块的模拟运算结果模数转换为数字运算结果,
对至少一个子块的数字运算结果做加法运算,并计数至少一个子块的数字运算结果的当前
累加次数,判断当前累加次数是否小于子块的个数减一,如果当前累加次数小于子块的个
数减一,则返回对下一个子块的待运算数据和存储数据做乘加运算,如果当前累加次数大
于等于子块的个数减一,则将当前累加结果作为存算一体电路的乘加运算结果。逐块累加
至少一个子块的数字运算结果以得到存算一体电路的乘加运算结果,减少了每个子块的数
据运算量,进而降低了对执行数据运算的硬件系统的需求。
[0098] 应当说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存
在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖
非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要
素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备
所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在
包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0099] 依照本发明的实施例如上文所述,这些实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施例。以上所述仅为本发明的较佳实施例而已,并不用已限
制本发明,任何熟悉本专业的技术人员,再不脱离本发明技术方案范围内,当可利用上述揭
示的技术内容作出些许变更或修饰等,凡在本发明的精神和原则之内所作的任何修改、等
同替换或改进等,均应包含在本发明的保护范围之内。本说明书选取并具体描述这些实施
例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地
利用本发明以及在本发明基础上的修改使用。