一种基于电流镜和存储单元的存内运算方法、卷积运算方法、装置及其应用制造方法及图纸

技术编号:30908328 阅读:12 留言:0更新日期:2021-11-22 23:54
本发明专利技术涉及存储器技术领域,公开了一种基于电流镜和存储单元的存内运算方法、卷积运算方法、装置及其应用,其中方法包括将电流镜单元匹配存储阵列进行行列设置形成电流镜阵列,将各电流镜单元输出侧MOS管的一端分别接入对应的存储单元漏端,另一端作接入按列设置的公共输出线,根据目标运算功能,执行目标运算算法,采集公共输出线上的电流信号,处理转换形成目标种类信号进行输出;本发明专利技术的存内运算方法能够更高效准确地实现模拟域计算,其计算性能优异、计算准确度高、性能功耗比好,有着切实意义上的实用价值。意义上的实用价值。意义上的实用价值。

【技术实现步骤摘要】
一种基于电流镜和存储单元的存内运算方法、卷积运算方法、装置及其应用


[0001]本专利技术涉及存储器术领域,具体涉及一种基于电流镜和存储单元的存内运算方法、卷积运算方法、装置及其应用。

技术介绍

[0002]由于存内计算利用存储器的模拟域特性进行运算,其计算结果易受噪声的影响。虽依托于人工智能算法本身的容错性,在多数情况下存内计算可以容许一定的计算误差,但如何减少存内计算的误差,仍对存储器性能和存内计算方法提出了很高的要求。
[0003]例如现有的一种存内运算方法:利用存储器自身作为计算单元,既存储数据,又在存储器自身进行运算,将存储状态根据对输入信号的响应分为多级以存储多比特数据,计算结果与输入信号和存储状态有关。但是因为使用多级存储状态对应多比特数据,而存储器由于工艺、制程等原因存在特性上的差异很难精准控制存储状态,导致两方面问题的出现,一方面是存储器存储的数据精度有限,很难控制单个存储器具有8比特的精度(256个状态);另一方面是由于电路控制不够精准或者器件本身存在的温度漂移,存储器的状态不能维持在较为精准的范围,这会导致计算结果存在较大的误差。还有一些设计里,会使用多个存储单元分别存储高精度数据的各个部分,分别计算之后再进行累加,而上述的误差,严重的可能会让这些设计无效。
[0004]现有另一种常见的存内运算方法,该方法利用存储器存储二值数据(与传统存储器的存储一致),由于仅计算二值化运算,故其计算较为准确、误差较小,此方案最高仅能完成三值(0,
±
1)的运算,很难满足实际计算的需要。另外,虽是计算二值运算,但对存储器的要求仍然很高,否则仍然会产生很大的计算误差,在这一点上的问题同第一种现有方法。
[0005]此外随着人工智能算法的发展,轻量型算法开始获得更多的关注,卷积神经网络也由传统的卷积逐渐向更加轻量的卷积转变,其中最常见的方式就是分组卷积或深度可分离卷积。而现有的存内计算方法或结构对这类的轻量的卷积支持较弱,很难发挥存算的优势。

技术实现思路

[0006]针对现有技术的不足,本专利技术提供一种基于电流镜和存储单元的存内运算方法、卷积运算方法、装置及应用,能够更高效准确地实现模拟域计算,并提高包括分组卷积在内的卷积运算效率,使其具有更高性能功耗比。
[0007]本专利技术解决技术问题采用如下技术方案:
[0008]本专利技术提供一种基于电流镜和存储单元的存内运算方法,所述方法包括:
[0009]基于CMOS晶体管配置若干电流镜单元,将电流镜单元匹配存储阵列进行行列设置形成电流镜阵列,并配置位于同一行上的电流镜单元共用同一输入侧;
[0010]将各电流镜单元输出侧MOS管的一端分别接入存储阵列中对应的存储单元漏端,
另一端作为输出端分别接入按列设置的公共输出线;
[0011]根据目标运算功能,执行目标运算算法,包括:
[0012]配置各电流镜单元的输入输出比例;
[0013]匹配设置存储单元阈值使其用于控制电流镜单元是否输出电流数据;
[0014]读取待运算数据转换为电流信号分别接入位于各行电流镜单元输入侧的输入端;
[0015]采集公共输出线上的电流信号,处理转换形成目标种类信号进行输出。
[0016]优选地,所述读取待运算数据转换为电流信号具体包括:
[0017]将待运算数据值大小与电流大小正相关;
[0018]配置电流输出型DAC或开关控制型DAC进行多级受控电流输入;
[0019]所述开关控制型DAC的配置方法具体为:预设多级固定电流,采用开关控制多级固定电流的接入并根据待运算数据信号选择开关打开或闭合,实现多级受控电流输入。
[0020]优选地,所述电流镜单元为比例可配置电流镜,所述比例可配置电流镜输入侧和输出侧分别包括若干不同参数且相互并联的CMOS晶体管,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输入端,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输出端,所述参数包括CMOS晶体管宽长比。
[0021]优选地,所述目标运算功能为多比特乘法运算,所述执行目标运算算法具体包括:
[0022]将多比特数据的位数权重与位于同一行的多个电流镜单元比例进行映射,配置相应电流镜单元的输入输出比例;
[0023]根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
[0024]按照多比特数据的各位数值编程相应存储单元的阈值电压;
[0025]读取待运算数据转换为电流信号接入该行电流镜单元输入侧的输入端;
[0026]采集并合并各公共输出线上的电流信号作为待运算数据与多比特数据的乘积结果进行输出。
[0027]优选地,所述目标运算功能为多比特乘加运算,所述执行目标运算算法具体包括:
[0028]基于n个多比特数据与n行电流镜阵列对应关系,将各个多比特数据的位数权重与位于同一行的多个电流镜单元比例进行映射,配置相应电流镜单元的输入输出比例;
[0029]根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
[0030]按照多比特数据的各位数值编程相应存储单元的阈值电压;
[0031]读取n个待运算数据分别转换为电流信号,按照单列矩阵输入接入n行电流镜阵列的输入端;
[0032]采集并合并各公共输出线上的电流信号作为n个待运算数据与n个多比特数据的乘积累加结果进行输出。
[0033]优选地,所述目标运算功能为多比特乘加运算,所述执行目标运算算法具体包括:
[0034]基于n个多比特数据与n行电流镜阵列对应关系,将所有电流镜单元设置为同一输入输出比例;
[0035]根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
[0036]按照多比特数据的各位数值编程相应存储单元的阈值电压;
[0037]读取n个待运算数据分别转换为电流信号,按照单列矩阵输入接入n行电流镜阵列的输入端;
[0038]按照位数权值对采集的各公共输出线上的电流信号执行加权求和,作为n个待运算数据与n个多比特数据的乘积累加结果进行输出。
[0039]优选地,所述目标运算功能为二值化乘加运算,所述执行目标运算算法具体包括:
[0040]将电流镜阵列中所有电流镜单元设置为同一输入输出比例;
[0041]根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
[0042]按照二值的权重矩阵编程相应存储单元的阈值电压;
[0043]读取待运算数据分别转换为电流信号,按照单列矩阵输入接入电流镜阵列的输入端;
[0044]采集各公共输出线上的电流信号,处理转换形成目标种类信号作为二值化乘加运算结果分别进行输出。
[0045]优选地,所述目标运算功能为三值化乘加运算,所述执行目标运算算法具体包括:
[0046]将电流镜阵列中所有电流本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于电流镜和存储单元的存内运算方法,其特征在于,所述方法包括:基于CMOS晶体管配置若干电流镜单元,将电流镜单元匹配存储阵列进行行列设置形成电流镜阵列,并配置位于同一行上的电流镜单元共用同一输入侧;将各电流镜单元输出侧MOS管的一端分别接入存储阵列中对应的存储单元漏端,另一端作为输出端分别接入按列设置的公共输出线;根据目标运算功能,执行目标运算算法,包括:配置各电流镜单元的输入输出比例;匹配设置存储单元阈值使其用于控制电流镜单元是否输出电流数据;读取待运算数据转换为电流信号分别接入位于各行电流镜单元输入侧的输入端;采集公共输出线上的电流信号,处理转换形成目标种类信号进行输出。2.根据权利要求1所述的一种基于电流镜和存储单元的存内运算方法,其特征在于,所述读取待运算数据转换为电流信号具体包括:将待运算数据值大小与电流大小正相关;配置电流输出型DAC或开关控制型DAC进行多级受控电流输入;所述开关控制型DAC的配置方法具体为:预设多级固定电流,采用开关控制多级固定电流的接入并根据待运算数据信号选择开关打开或闭合,实现多级受控电流输入。3.根据权利要求2所述的一种基于电流镜和存储单元的存内运算方法,其特征在于,所述电流镜单元为比例可配置电流镜,所述比例可配置电流镜输入侧和输出侧分别包括若干不同参数且相互并联的CMOS晶体管,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输入端,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输出端,所述参数包括CMOS晶体管宽长比。4.根据权利要求1所述的一种基于电流镜和存储单元的存内运算方法,其特征在于,所述目标运算功能为多比特乘法运算,所述执行目标运算算法具体包括:将多比特数据的位数权重与位于同一行的多个电流镜单元比例进行映射,配置相应电流镜单元的输入输出比例;根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;按照多比特数据的各位数值编程相应存储单元的阈值电压;读取待运算数据转换为电流信号接入该行电流镜单元输入侧的输入端;采集并合并各公共输出线上的电流信号作为待运算数据与多比特数据的乘积结果进行输出。5.根据权利要求1所述的一种基于电流镜和存储单元的存内运算方法,其特征在于,所述目标运算功能为多比特乘加运算,所述执行目标运算算法具体包括:基于n个多比特数据与n行电流镜阵列对应关系,将各个多比特数据的位数权重与位于同一行的多个电流镜单元比例进行映射,配置相应电流镜单元的输入输出比例;根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;按照多比特数据的各位数值编程相应存储单元的阈值电压;读取n个待运算数据分别转换为电流信号,按照单列矩阵输入接入n行电流镜阵列的输入端;采集并合并各公共输出线上的电流信号作为n个待运算数据与n个多比特数据的乘积
累加结果进行输出。6.根据权利要求1所述的一种基于电流镜和存储单元的存内运算方法,其特征在于,所述目标运算功能为多比特乘加运算,所述执行目标运算算法具体包括:基于n个多比特数据与n行电流镜阵列对应关系,将所有电流镜单元设置为同一输入输出比例;根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;按照多比特数据的各位数值编程相应存储单元的阈值电压;读取n个待运算数据分别转换为电流信号,按照单列矩阵输入接入n行电流镜阵列的输入端;按照位数权值对采集的各公共输出线上的电流信号执行加权求和,作为n个待运算数据与n个多比特数据的乘积累加结果进行输出。7.根据权利要求1所述的一种基于电流镜和存储单元的存内运算方法,其特征在于,所述目标运算功能为二值化乘加运算,所述执行目标运算算法具体包括:将电流镜阵列中所有电流镜单元设置为同一输入输出比例;根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;按照二值的权重矩阵编程相应存储单元的阈值电压;读取待运算数据分别转换为电流信号,按照单列矩阵输入接入电流镜阵列的输入端;采集各公共输出线上的电流信号,处理转换形成目标种类信号作为二值化乘加运算结果分别进行输出。8.根据权利要求1所述的一种基于电流镜和存储单元的存内运算方法,其特征在于,所述目标运算功能为三值化乘加运算,所述执行目标运算算法具体包括:将电流镜阵列中所有电流镜单元设置为同一输入输出比例;将同一行相邻两列电流镜单元输出进行配对送入差分电路单元进行减法运算后输出;根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;按照三值的权重矩阵分别对每对存储单元的阈值电压进行编程;读取待运算数据分别转换为电流信号,按照单列矩阵输入接入电流镜阵列的输入端;采集各差分电路单元的电流信号,处理转换形成目标种类信号作为三值化乘加运算结果分别进行输出。9.一种采用如权利要求1

8任意一项所述的存内运算方法的卷积运算方法,其特征在于,所述方法包括:基于CMOS晶体管配置若干电流镜单元,将电流镜单元匹配存储阵列进行行列设置形成电流镜阵列,并配置位于同一行上的电流镜单元共用同一输入侧;将各电流镜单元输出侧MOS管的一端分别接入存储阵列中对应的存储单...

【专利技术属性】
技术研发人员:盛荣华李政达陶临风吕向东任军陈真欧阳托日唐伟童
申请(专利权)人:恒烁半导体合肥股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1