CN113672854B - 一种基于电流镜和存储单元的存内运算方法、装置及其应用 - Google Patents
一种基于电流镜和存储单元的存内运算方法、装置及其应用 Download PDFInfo
- Publication number
- CN113672854B CN113672854B CN202110982430.8A CN202110982430A CN113672854B CN 113672854 B CN113672854 B CN 113672854B CN 202110982430 A CN202110982430 A CN 202110982430A CN 113672854 B CN113672854 B CN 113672854B
- Authority
- CN
- China
- Prior art keywords
- current mirror
- data
- input
- current
- output
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 148
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000004364 calculation method Methods 0.000 claims abstract description 60
- 230000006870 function Effects 0.000 claims abstract description 59
- 238000012545 processing Methods 0.000 claims abstract description 10
- 239000011159 matrix material Substances 0.000 claims description 47
- 230000008859 change Effects 0.000 claims description 22
- 238000003491 array Methods 0.000 claims description 17
- 238000013507 mapping Methods 0.000 claims description 11
- 238000009825 accumulation Methods 0.000 claims description 7
- 238000010606 normalization Methods 0.000 claims description 3
- 229910044991 metal oxide Inorganic materials 0.000 abstract 1
- 150000004706 metal oxides Chemical class 0.000 abstract 1
- 239000004065 semiconductor Substances 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 16
- 238000013461 design Methods 0.000 description 5
- 238000005259 measurement Methods 0.000 description 4
- 230000007547 defect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- 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
Abstract
本发明涉及存储器技术领域,公开了一种基于电流镜和存储单元的存内运算方法、卷积运算方法、装置及其应用,其中方法包括将电流镜单元匹配存储阵列进行行列设置形成电流镜阵列,将各电流镜单元输出侧MOS管的一端分别接入对应的存储单元漏端,另一端作接入按列设置的公共输出线,根据目标运算功能,执行目标运算算法,采集公共输出线上的电流信号,处理转换形成目标种类信号进行输出;本发明的存内运算方法能够更高效准确地实现模拟域计算,其计算性能优异、计算准确度高、性能功耗比好,有着切实意义上的实用价值。
Description
技术领域
本发明涉及存储器技术领域,具体涉及一种基于电流镜和存储单元的存内运算方法、装置及其应用。
背景技术
由于存内计算利用存储器的模拟域特性进行运算,其计算结果易受噪声的影响。虽依托于人工智能算法本身的容错性,在多数情况下存内计算可以容许一定的计算误差,但如何减少存内计算的误差,仍对存储器性能和存内计算方法提出了很高的要求。
例如现有的一种存内运算方法:利用存储器自身作为计算单元,既存储数据,又在存储器自身进行运算,将存储状态根据对输入信号的响应分为多级以存储多比特数据,计算结果与输入信号和存储状态有关。但是因为使用多级存储状态对应多比特数据,而存储器由于工艺、制程等原因存在特性上的差异很难精准控制存储状态,导致两方面问题的出现,一方面是存储器存储的数据精度有限,很难控制单个存储器具有8比特的精度(256个状态);另一方面是由于电路控制不够精准或者器件本身存在的温度漂移,存储器的状态不能维持在较为精准的范围,这会导致计算结果存在较大的误差。还有一些设计里,会使用多个存储单元分别存储高精度数据的各个部分,分别计算之后再进行累加,而上述的误差,严重的可能会让这些设计无效。
现有另一种常见的存内运算方法,该方法利用存储器存储二值数据(与传统存储器的存储一致),由于仅计算二值化运算,故其计算较为准确、误差较小,此方案最高仅能完成三值(0,±1)的运算,很难满足实际计算的需要。另外,虽是计算二值运算,但对存储器的要求仍然很高,否则仍然会产生很大的计算误差,在这一点上的问题同第一种现有方法。
此外随着人工智能算法的发展,轻量型算法开始获得更多的关注,卷积神经网络也由传统的卷积逐渐向更加轻量的卷积转变,其中最常见的方式就是分组卷积或深度可分离卷积。而现有的存内计算方法或结构对这类的轻量的卷积支持较弱,很难发挥存算的优势。
发明内容
针对现有技术的不足,本发明提供一种基于电流镜和存储单元的存内运算方法、装置及应用,能够更高效准确地实现模拟域计算,并提高包括分组卷积在内的卷积运算效率,使其具有更高性能功耗比。
本发明解决技术问题采用如下技术方案:
本发明提供一种基于电流镜和存储单元的存内运算方法,所述方法包括:
基于CMOS晶体管配置若干电流镜单元,将电流镜单元匹配存储阵列进行行列设置形成电流镜阵列,并配置位于同一行上的电流镜单元共用同一输入侧;
将各电流镜单元输出侧MOS管的一端分别接入存储阵列中对应的存储单元漏端,另一端作为输出端分别接入按列设置的公共输出线;
根据目标运算功能,执行目标运算算法,包括:
配置各电流镜单元的输入输出比例;
匹配设置存储单元阈值使其用于控制电流镜单元是否输出电流数据;
读取待运算数据转换为电流信号分别接入位于各行电流镜单元输入侧的输入端;
采集公共输出线上的电流信号,处理转换形成目标种类信号进行输出。
优选地,所述读取待运算数据转换为电流信号具体包括:
将待运算数据值大小与电流大小正相关;
配置电流输出型DAC或开关控制型DAC进行多级受控电流输入;
所述开关控制型DAC的配置方法具体为:预设多级固定电流,采用开关控制多级固定电流的接入并根据待运算数据信号选择开关打开或闭合,实现多级受控电流输入。
优选地,所述电流镜单元为比例可配置电流镜,所述比例可配置电流镜输入侧和输出侧分别包括若干不同参数且相互并联的CMOS晶体管,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输入端,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输出端,所述参数包括CMOS晶体管宽长比。
优选地,所述目标运算功能为多比特乘法运算,所述执行目标运算算法具体包括:
将多比特数据的位数权重与位于同一行的多个电流镜单元比例进行映射,配置相应电流镜单元的输入输出比例;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
按照多比特数据的各位数值编程相应存储单元的阈值电压;
读取待运算数据转换为电流信号接入该行电流镜单元输入侧的输入端;
采集并合并各公共输出线上的电流信号作为待运算数据与多比特数据的乘积结果进行输出。
优选地,所述目标运算功能为多比特乘加运算,所述执行目标运算算法具体包括:
基于n个多比特数据与n行电流镜阵列对应关系,将各个多比特数据的位数权重与位于同一行的多个电流镜单元比例进行映射,配置相应电流镜单元的输入输出比例;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
按照多比特数据的各位数值编程相应存储单元的阈值电压;
读取n个待运算数据分别转换为电流信号,按照单列矩阵输入接入n行电流镜阵列的输入端;
采集并合并各公共输出线上的电流信号作为n个待运算数据与n个多比特数据的乘积累加结果进行输出。
优选地,所述目标运算功能为多比特乘加运算,所述执行目标运算算法具体包括:
基于n个多比特数据与n行电流镜阵列对应关系,将所有电流镜单元设置为同一输入输出比例;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
按照多比特数据的各位数值编程相应存储单元的阈值电压;
读取n个待运算数据分别转换为电流信号,按照单列矩阵输入接入n行电流镜阵列的输入端;
按照位数权值对采集的各公共输出线上的电流信号执行加权求和,作为n个待运算数据与n个多比特数据的乘积累加结果进行输出。
优选地,所述目标运算功能为二值化乘加运算,所述执行目标运算算法具体包括:
将电流镜阵列中所有电流镜单元设置为同一输入输出比例;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
按照二值的权重矩阵编程相应存储单元的阈值电压;
读取待运算数据分别转换为电流信号,按照单列矩阵输入接入电流镜阵列的输入端;
采集各公共输出线上的电流信号,处理转换形成目标种类信号作为二值化乘加运算结果分别进行输出。
优选地,所述目标运算功能为三值化乘加运算,所述执行目标运算算法具体包括:
将电流镜阵列中所有电流镜单元设置为同一输入输出比例;
将同一行相邻两列电流镜单元输出进行配对送入差分电路单元进行减法运算后输出;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
按照三值的权重矩阵分别对每对存储单元的阈值电压进行编程;
读取待运算数据分别转换为电流信号,按照单列矩阵输入接入电流镜阵列的输入端;
采集各差分电路单元的电流信号,处理转换形成目标种类信号作为三值化乘加运算结果分别进行输出。
本发明还提供一种卷积运算方法,所述方法包括:
基于CMOS晶体管配置若干电流镜单元,将电流镜单元匹配存储阵列进行行列设置形成电流镜阵列,并配置位于同一行上的电流镜单元共用同一输入侧;
将各电流镜单元输出侧MOS管的一端分别接入存储阵列中对应的存储单元漏端,另一端作为输出端进行数据输出;
对电流镜阵列和存储阵列统一按照单通道运算功能划分配置成若干运算基本块;
对运算基本块中所有电流镜单元的输出端归一接入匹配的局部求和线LSL;
对位于同一行上的各运算基本块输入端配置接入同一矩阵输入;
按列设置总和线GSL,匹配运算基本块分别设置受控开关,将位于同一列上的各求和线LSL分别通过受控开关与总和线GSL数据连接;
根据目标卷积运算功能,配置运算基本块参数、读取待运算数据,选择执行受控开关的断开或闭合,并配合输出移位操作实现目标运算结果数据的输出,所述目标卷积运算功能至少包括传统卷积、分组卷积和深度可分离卷积中的一种或几种。
优选地,所述配置运算基本块参数、读取待运算数据具体包括:
根据预设权值配置各运算模块中电流镜单元的输入输出比例;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
匹配编程存储单元阈值电压使其用于控制电流镜单元是否输出电流数据;
读取待运算数据,转换处理成若干矩阵输入接入各运算基本块输入端;
所述选择执行受控开关的断开或闭合,并配合输出移位操作实现目标运算结果数据的输出具体包括:
若目标卷积运算功能为传统卷积,则闭合所有受控开关;
若目标卷积运算功能为分组卷积或深度可分离卷积,则按照预设算法在每次计算时只闭合相应运算基本块的受控开关,并配合输出移位操作将每次计算后运算基本块的输出数据按照预定顺序进行同步输出。
本发明还提供一种卷积运算装置,包括相互配合设置的运算阵列、输入模块、DAC模块、时钟模块、SEL控制模块、控制器模块、ADC模块和移位选择模块;
所述运算阵列由电流镜阵列、存储阵列、求和线LSL、总和线GSL和受控开关组成,其中,
所述电流镜阵列由匹配存储阵列进行行列设置的若干电流镜单元组成,所述电流镜单元基于CMOS晶体管配置而成,将各电流镜单元输出侧MOS管的一端分别接入存储阵列中对应的存储单元漏端,另一端作为输出端进行数据输出,并配置位于同一行上的电流镜单元共用同一输入侧;
所述电流镜阵列和存储阵列统一按照单通道运算功能划分配置成若干运算基本块;各运算基本块中的电流镜单元的输出端归一接入局部求和线LSL,位于同一列上的各求和线LSL分别通过受控开关与按列设置的总和线GSL数据连接,且位于同一行上的各运算基本块输入端配置接入同一矩阵输入,所述矩阵输入通过各运算基本块的输入端匹配接入其中各电流镜单元的输入端;
所述输入模块和DAC模块匹配设置并配置成用于接收待运算数据并将其转换成目标格式信号并以矩阵输入方式接入各运算基本块输入端;
所述时钟模块配置成用于向其他模块提供所需频率的时钟信号;
所述SEL控制模块配置成用于根据控制器模块的指令信号选择执行受控开关的断开或闭合;
所述移位操作模块配置成用于将每次计算后运算基本块的输出数据按照预定顺序进行同步输出;
所述ADC模块配置成用于采集目标运算结果数据并转换成目标种类信号输出;所述控制器模块配置成用于根据触发信号选择预先存储的目标运算功能算法,匹配时钟模块,控制运算阵列、输入模块、DAC模块、SEL控制模块、ADC模块和移位选择模块相互配合动作,配置运算基本块参数、读取待运算数据,选择执行受控开关的断开或闭合,执行目标卷积运算功能算法的步骤,实现目标卷积运算结果数据的输出。
优选地,所述电流镜单元为可配置比例的电流镜,所述可配置比例的电流镜输入侧和输出侧分别包括若干不同参数且相互并联的CMOS晶体管,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输入端,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输出端,所述参数包括CMOS晶体管宽长比;
所述DAC模块配置成用于根据输入模块的输入信号为电流镜单元提供匹配的电流输入,DAC模块采用电流输出型DAC或开关控制型DAC配置而成;
所述开关控制型DAC具体为:预设多级固定电流,采用开关控制多级固定电流的接入并根据输入模块的输入信号选择开关打开或闭合;
所述配置运算基本块参数、读取待运算数据具体包括:
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
匹配编程存储单元阈值电压使其用于控制电流镜单元是否输出电流数据;
读取待运算数据,转换处理成若干矩阵输入接入各运算基本块输入端;
所述选择执行受控开关的断开或闭合,执行目标卷积运算功能算法的步骤,实现目标卷积运算结果数据的输出具体包括:
若目标卷积运算功能为传统卷积,则SEL控制模块接收控制器发出控制指令闭合所有受控开关;
若目标卷积运算功能为分组卷积或深度可分离卷积,则按照预设算法在每次计算时SEL控制模块只闭合相应运算基本块的受控开关,并配合移位操作模块执行输出移位操作将每次计算后运算基本块的输出数据按照预定顺序进行同步送入ADC模块进行输出。
本发明还提供一种芯片,包含前述的卷积运算装置,所述卷积运算装置被设置为按照预设程序执行如前述的运算方法
与现有技术相比,本发明具有如下的有益效果:
本发明提出的一种基于电流镜和存储单元的存内运算方法,用电流镜搭配存储器阵列完成存内计算,不仅可以实现包括二值化、三值化以及多比特数据的乘法或乘加运算,而且大大降低对存储单元状态控制的要求,并能够完成高准确度、高性能的存内计算,并且由于所有的存储阵列都可以共享该电流镜阵列,故电路面积成本不会有明显提升,能够兼顾获得更好的计算性能和性能功耗比;
此外本发明在电流镜搭配存储器阵列的基础上重新设计了一种新的卷积运算方法,不仅可以兼容传统卷积计算和分组卷积计算等卷积计算功能,还可以将存储利用率维持在100%,同时保留一定的计算性能,具有较高的计算性能和计算能效;
在此基础上进一步设计的卷积运算装置基于现有的存储阵列结构配合电流镜阵列配置而成,并同步对DAC模块进行了输入电流的多级输入设计,同时对于电流镜单元进行可配置比例的结构设置,使得运算装置具有高效的权重映射和利用率以及数据采集的准确度,能够保证整体计算的正确性以及高效性。
关于本发明相对于现有技术,其他突出的实质性特点和显著的进步在实施例部分进一步详细介绍。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为实施例1中电流镜单元和存储单元电路连接示意图;
图2为实施例1中电流镜阵列和存储阵列的电路结构示意图;
图3为实施例1中可配置比例电流镜单元的电路结构示意图;
图4为实施例1中开关控制型DAC的电路结构示意图;
图5为实施例2中进行多比特输入乘法运算时电路结构示意图;
图6为实施例3中进行多比特乘加运算时电路结构示意图;
图7为实施例4中进行多比特乘加运算时电路结构示意图;
图8为实施例6中进行三值化乘加运算时电路结构示意图;
图9为实施例6中进行三值化乘加运算时存储单元配对实现三值化权重配置的电路结构示意图;
图10为实施例7中基本运算块的电路结构示意图;
图11为实施例7中执行分组卷积运算时电路结构示意图;
图12为实施例7中执行传统卷积运算时电路结构示意图;
图13为实施例7中在分组卷积运算时受控开关移位时电路结构示意图;
图14为实施例7中执行受控开关移位时电路简易示意图;
图15为实施例8中卷积运算装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在说明书及权利要求书当中使用了某些名称来指称特定组件。应当理解,本领域普通技术人员可能会用不同名称来指称同一个组件。本申请说明书及权利要求书并不以名称的差异作为区分组件的方式,而是以组件在功能上的实质性差异作为区分组件的准则。如在本申请说明书和权利要求书中所使用的“包含”或“包括”为一开放式用语,其应解释为“包含但不限定于”或“包括但不限定于”。具体实施方式部分所描述的实施例为本发明的较佳实施例,并非用以限定本发明的范围。
实施例1
请参照图1-4,本实施例的一种基于电流镜和存储单元的存内运算方法,所述方法包括:
基于CMOS晶体管配置若干电流镜单元,将电流镜单元匹配存储阵列进行行列设置形成电流镜阵列,并配置位于同一行上的电流镜单元共用同一输入侧;
将各电流镜单元输出侧MOS管的一端分别接入存储阵列中对应的存储单元漏端,如图1所示为单个电流镜单元与存储单元的连接示意图,如图2所示,电流镜单元输出侧MOS管的另一端作为输出端分别接入按列设置的公共输出线;
请继续参照图2,在本实施例中由于位于同一行上的电流镜单元共用同一输入侧,因此各电流镜单元组成了一个关联的电流镜阵列,而与之连接的存储单元则构成了常见的存储阵列,而存储阵列和电流镜阵列间可以通过编程控制连接与否,如图2中的解码器(decoder)电路层,可以控制选择与电流镜阵列的存储阵列地址,因此所有的存储阵列都可以共享同一个电流镜阵列,故此方案下存内运算电路的面积成本不会有明显提升,有效保证了方法的运算性能比;
根据目标运算功能,执行目标运算算法,包括:
配置各电流镜单元的输入输出比例;
匹配设置存储单元阈值使其用于控制电流镜单元是否输出电流数据;
读取待运算数据转换为电流信号分别接入位于各行电流镜单元输入侧的输入端;
采集公共输出线上的电流信号,处理转换形成目标种类信号进行输出,这种目标种类可以为电压、电流中的一种,具体的处理转化方式或者电路结构均可以根据需要自己选择,在这里不做赘述;
一般的电流镜比例可以通过预先设计使其固化,且这种比例关系具有极高的准确度,不会随存储单元接入而改变,故该方法可以完成高计算准确度的模拟域计算。并且此处存储单元作用更多地是控制通路的开关,故对存储单元状态控制的要求大大降低。因此可以完成高准确度,高性能的存内计算;
在本实施例中可以选用可配置比例的电流镜配置电流镜单元,具体的如图3所示,其中可配置比例的电流镜输入侧和输出侧分别包括若干不同参数且相互并联的CMOS晶体管,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输入端,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输出端,所述参数包括CMOS晶体管宽长比,此种设计可以对电流镜的比例进行调节,提高了运算的广度,也可以提高运算的兼容性和灵活性。
在本实施例中读取待运算数据转换为电流信号具体包括:
将待运算数据值大小与电流大小正相关;
配置电流输出型DAC或开关控制型DAC进行多级受控电流输入;
如图4所示开关控制型DAC的配置方法具体为:预设多级固定电流,采用开关控制多级固定电流的接入并根据待运算数据信号选择开关打开或闭合,实现多级受控电流输入。
为了进一步说明基于电流镜和存储单元的存内运算方法的具体运算过程,以几个不同的目标运算功能为例,请参照实施例2-6。
实施例2
本实施例基于实施例1,以目标运算功能为多比特乘法运算为例进一说明基于电流镜和存储单元的存内运算方法,因此本实施例中涉及到实施例1中的内容,不做赘述,请参考实施例1;
当目标运算功能为多比特乘法运算,执行目标运算算法具体包括:
将多比特数据的位数权重与位于同一行的多个电流镜单元比例进行映射,配置相应电流镜单元的输入输出比例;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
按照多比特数据的各位数值编程相应存储单元的阈值电压;
读取待运算数据转换为电流信号接入该行电流镜单元输入侧的输入端;
采集并合并各公共输出线上的电流信号作为待运算数据与多比特数据的乘积结果进行输出。
具体的,如图5所示将多比特数据的位数权重与位于同一行的多个电流镜单元比例进行映射,也即从左至右,第一个电流镜单元比例为k,第二个电流镜单元比例为2k,第三个电流镜单元比例为22k····第n个电流镜单元比例为2n-1k,然后将多比特数据的各位数值映射到对应存储单元的阈值电压,例如第一位Bit-1数值映射到与第一个电流镜单元连接的存储单元阈值电压,控制该存储单元为高阻状态还是低阻状态,第二位Bit-2数值映射到与第二个电流镜单元连接的存储单元···第二位Bit-n数值映射到与第n个电流镜单元连接的存储单元,此时将每个电流镜单元的输出值进行合并,Iout即为待运算数据转换的输入电流Iin与多比特数据之积。
实施例3
本实施例基于实施例1,以目标运算功能为多比特乘加运算为例进一说明基于电流镜和存储单元的存内运算方法,因此本实施例中还有涉及到实施例2中的内容,在这里均不做赘述,请参考实施例1和实施例2;
当目标运算功能为多比特乘加运算时,执行目标运算算法具体包括:
基于n个多比特数据与n行电流镜阵列对应关系,将各个多比特数据的位数权重与位于同一行的多个电流镜单元比例进行映射,配置相应电流镜单元的输入输出比例;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
按照多比特数据的各位数值编程相应存储单元的阈值电压;
读取n个待运算数据分别转换为电流信号,按照单列矩阵输入接入n行电流镜阵列的输入端;
采集并合并各公共输出线上的电流信号作为n个待运算数据与n个多比特数据的乘积累加结果进行输出。
具体的,如图6所示,在图中为了结构清晰,故省略了存储单元,将m个n位的多比特数据与m行电流镜阵列一一对应,将每个多比特数据的位数权重与位于同一行的多个电流镜单元比例进行映射,也即从左至右,每行第一个电流镜单元比例为k,第二个电流镜单元比例为2k,第三个电流镜单元比例为22k····第n个电流镜单元比例为2n-1k,然后将n个多比特数据的各位数值映射到对应存储单元的阈值电压,例如将第一个多比特数据的第一位Bit-1数值,映射到存储阵列中与电流镜阵列第一行的第一个电流镜单元连接的存储单元阈值电压,控制该存储单元为高阻状态还是低阻状态,第二位Bit-2数值映射到与第二个电流镜单元连接的存储单元···第二位Bit-n数值映射到与第n个电流镜单元连接的存储单元,依次将n个多比特数据的位数值进行映射配置,将n个待运算数据分别转换为电流信号,形成单列矩阵输入接入m行电流镜阵列的输入端,采集并合并各公共输出线上的电流信号,也就是将每行每列上电流镜输出端均归一输出Iout,即为m个待运算数据转换为输入电流后与m个多比特数据的乘积累加结果。
在本实施中的电路结构实际上就是将多个实施例2中的多比特乘法电路进行并联使用,每个多比特乘法电路相当于一个乘法器,如图6所示。
实施例4
本实施例基于实施例1,以目标运算功能为多比特乘加运算为例进一说明基于电流镜和存储单元的存内运算方法,因此本实施例中还有涉及到实施例2中的内容,在这里均不做赘述,请参考实施例1和实施例2;
目标运算功能为多比特乘加运算,所述执行目标运算算法具体包括:
基于n个多比特数据与n行电流镜阵列对应关系,将所有电流镜单元设置为同一输入输出比例;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
按照多比特数据的各位数值编程相应存储单元的阈值电压;
读取n个待运算数据分别转换为电流信号,按照单列矩阵输入接入n行电流镜阵列的输入端;
按照位数权值对采集的各公共输出线上的电流信号执行加权求和,作为n个待运算数据与n个多比特数据的乘积累加结果进行输出。
具体的,如图7所示,在图中为了结构清晰,故省略了存储单元,将m个n位的多比特数据与m行电流镜阵列一一对应,将所有电流镜单元设置为同一输入输出比例,也即从左至右,每行每列的电流镜单元比例均为k,当然也可以采用其他比例,只要保证所述电流镜单元的比例相同即可,然后将m个多比特数据的各位数值映射到对应存储单元的阈值电压,例如将第一个多比特数据的第一位Bit-1数值,映射到存储阵列中与电流镜阵列第一行的第一个电流镜单元连接的存储单元阈值电压,控制该存储单元为高阻状态还是低阻状态,第二位Bit-2数值映射到与第二个电流镜单元连接的存储单元···第二位Bit-n数值映射到与第n个电流镜单元连接的存储单元,依次将m个多比特数据的位数值进行映射配置,将m个待运算数据分别转换为电流信号,形成单列矩阵输入接入m行电流镜阵列的输入端,采集按列设置的公共输出线上的电流信号,采按照位数进行加权,这种加权方式可以采用现有的电路结构,本领域人员可以根据需要自行选择,在这里不做赘述,将加权后的信号合并求和形成归一输出Iout,即为m个待运算数据转换为输入电流后与m个n位多比特数据的乘积累加结果。
实施例5
本实施例基于实施例1,以目标运算功能为二值化乘加运算为例进一说明基于电流镜和存储单元的存内运算方法,因此本实施例中还有涉及到实施例1中的内容,在这里均不做赘述,请参考实施例1;
请参照图2,当目标运算功能为二值化乘加运算,执行目标运算算法具体包括:
将电流镜阵列中所有电流镜单元设置为同一输入输出比例;也即从左至右,每行每列的电流镜单元比例均为k,当然也可以采用其他比例,只要保证所述电流镜单元的比例相同即可;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
按照二值的权重矩阵编程相应存储单元的阈值电压,具体的即根据二值的权重为0或1来编程存储单元的阈值电压,使处于高阻态的存储单元映射权值0,低阻态的存储单元映射权值1;
读取待运算数据分别转换为电流信号,按照单列矩阵输入接入电流镜阵列的输入端;在计算时,连接高阻状态存储单元的电流镜不会产生电流,连接低阻状态存储单元的电流镜则会产生电流,纵向上所有电流镜的电流会进行累加,并可以被ADC所采样,即完成了输入与二值化权重的乘加运算。
实施例6
本实施例基于实施例1,以目标运算功能为三值化乘加运算为例进一说明基于电流镜和存储单元的存内运算方法,因此本实施例中还有涉及到实施例1和实施例5中的内容,在这里均不做赘述,请参考实施例1和实施例5;
请参照图8,在图中为了结构清晰,故省略了存储单元,当目标运算功能为三值化乘加运算,执行目标运算算法具体包括:
将电流镜阵列中所有电流镜单元设置为同一输入输出比例;也即从左至右,每行每列的电流镜单元比例均为k,当然也可以采用其他比例,只要保证所述电流镜单元的比例相同即可;
请参照将同一行相邻两列电流镜单元输出进行配对送入差分电路单元进行减法运算后输出,本实施例中差分电路单元能保持两个电流输入端电压不变,且输出端结果为两个电流输入端输入电流的差值,其结构有很多种,本领域人员可以根据需要自行选择,在这里不做赘述;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
按照三值的权重矩阵分别对每对存储单元的阈值电压进行编程;
读取待运算数据分别转换为电流信号,按照单列矩阵输入接入电流镜阵列的输入端;
采集各差分电路单元的电流信号,每列上差分信号合并输出,处理转换形成目标种类信号作为三值化乘加运算结果分别进行输出。
具体的,利用一对电流镜做差,将权重扩展为0、±1三种权重,进而完成三值的乘加运算,如图9所示,将同一行相邻两列电流镜单元A和B配对,A对应的存储单元为Af,B对应的存储单元为Bf。如果Af中存储权值为1,Bf中存储权值为0,用Af-Bf产生权值1,如果Af中存储权值为0,Bf中存储权值为1,用Af-Bf产生权值-1,如果Af中存储权值为0,Bf中存储权值为0,用Af-Bf产生权值0,亦或Af中存储权值为1,Bf中存储权值为1,用Af-Bf产生权值0,也即将两个运算单元进行匹配,并将各自输出进行差分输出即可实现三值化运算,其中差分电路单元可以采用常见的差分电路结构,在这里不做赘述。
实施例7
本实施例提供一种卷积运算方法,该卷积运算方法是在实施例1中给出的存内运算方法上的进一步设计,本实施例中卷积运算方法包括:
基于CMOS晶体管配置若干电流镜单元,将电流镜单元匹配存储阵列进行行列设置形成电流镜阵列,并配置位于同一行上的电流镜单元共用同一输入侧;
如图1所示,将各电流镜单元输出侧MOS管的一端分别接入存储阵列中对应的存储单元漏端,另一端作为输出端进行数据输出,在这里由于电流镜单元的输出晶体管与存储单元串联,所以其输出受存储单元状态控制,一般的电流镜比例可以通过预先设置,也可以采用如实施例1中所述的可配置比例的电流镜单元,且这种比例关系一旦确定具有极高的准确度,不会随存储单元接入而改变,故该方法可以完成高计算准确度的模拟域计算。并且此处存储单元作用更多地是控制通路的开关,故对存储单元状态控制的要求大大降低。因此可以完成高准确度,高性能的存内计算;
如图10,对电流镜阵列和存储阵列统一按照单通道运算功能划分配置成若干运算基本块;
对运算基本块中所有电流镜单元的输出端归一接入匹配的局部求和线LSL;
如图10所示,每个运算模块接入一个单列n行的矩阵输入将权重[W1ΛWn]分别映射为每个电流镜单元的输入输出比例,也即每个运算块实现乘加运算,每个求和线LSL上的输出为/>而对位于同一行上的各运算基本块输入端配置接入同一矩阵输入,如图11所示,例如若有m行运算基本块,而且每行有m个运算基本块,则一共有m个单列矩阵第i行上的m个运算基本块共同接入同一个单列矩阵/>
如图11所示按列设置总和线GSL,匹配运算基本块分别设置受控开关,受控开关可以采用常见的MOS管开关,将位于同一列上的各求和线LSL分别通过受控开关与总和线GSL数据连接,也就是将位于不同行但是同一列的运算基本块的局部求和线LSL均通过各自的受控开关接入该列设置的总和线GSL;
根据目标卷积运算功能,配置运算基本块参数、读取待运算数据,选择执行受控开关的断开或闭合,并配合输出移位操作实现目标运算结果数据的输出,所述目标卷积运算功能至少包括传统卷积、分组卷积和深度可分离卷积中的一种或几种。
所述配置运算基本块参数、读取待运算数据具体包括:
根据预设权值配置各运算模块中电流镜单元的输入输出比例;
首先对NOR Flash存储阵列进行离线标定,获取其初始参数,得到NOR Flash存储阵列中各存储单元自身阈值电压VTH随编程操作的变化曲线;
匹配编程存储单元阈值电压使其用于控制电流镜单元是否输出电流数据;
读取待运算数据,转换处理成若干矩阵输入接入各运算基本块输入端;
所述选择执行受控开关的断开或闭合,并配合输出移位操作实现目标运算结果数据的输出具体包括:
请参照图12若目标运算功能为传统卷积,则闭合所有受控开关,也即将所有运算通道打开,此时即可完成与传统卷积一致的计算。
若目标运算功能为分组卷积或深度可分离卷积,则按照预设算法在每次计算时只闭合相应运算基本块的受控开关,并配合输出移位操作将每次计算后运算基本块的输出数据按照预定顺序进行同步输出,也即当进行分组卷积,或者深度可分离卷积时,可以将相应的运算基本块受控开关打开,其他运算基本块受控开关关闭,如此可以在未使用的运算基本块中仍然存储数据,但对任何输入产生的响应不会影响最终总和线GSL上的测量结果。如图11所示,此时灰底的MOS管处于断开的状态,对应局部求和线LSL产生的电流不会汇入总和线GSL中。故该方法可以既将存储利用率维持在100%,又能同时保留一定的计算性能,克服了现有技术的缺点。
当进行后续其他计算时,可以进行切换,亦即将受控开关移位,如图13所示;为此需要进行上述的输出移位操作用于对输出结果进行移位,以使得错位的输出数据可以通过移位选择模块恢复正确的对应关系,具体如图14所示,当第一次选择的运算基本块位于对角线时,输入和输出通道对应的关系为一一对应关系。第一个输入通道对应第一个输出通道,第N个输入通道对应第N个输出通道。但对下一次运算时,由于受控开关的受控信号sel会向着某一方向移位,此时若使用原有的计算逻辑,则会产生计算错误。故此处使用移位操作对错位的输出结果进行移位,使得移位后的计算结果可以与输入通道相对应。
为了进一步的提高计算的准确性和兼容性,在本实施例中对电流镜单元进行了进一步的设计,采用可配置比例的电流镜作为电流镜单元设置,如图3所示,其中可配置比例的电流镜输入侧和输出侧分别包括若干不同参数且相互并联的CMOS晶体管,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输入端,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输出端,所述参数包括CMOS晶体管宽长比,此种设计一方面可以对电流镜的比例进行调节,提高了运算的广度,另一方面由于局部求和线LSL+总和线GSL的配置,会存在电流差异过大的问题,具体地以16个局部求和线LSL,每个局部求和线LSL上有16个存储单元为例,在计算时,传统卷积可能会使用16个局部求和线LSL上的所有存储单元,假设每个存储单元可以提供最大Imax的电流,此时最大电流为256Imax;在深度可分离卷积中,可能只会使用1个求和线LSL上的9个存储单元,此时最大电流为9Imax。二者之间在量程上具有很大的差距,此时若使用相同的ADC进行采样,则很难保证二者都能被准确地采样,因此采用可配置比例的电流镜作为电流镜单元设置可以解决这一问题,如图3所示,右框对应CMOS电流镜的输出端,左框对应CMOS电流镜的输入端,由于单独的输入端配置会产生前述的问题,故此处使用可配置比例的电流镜,使用开关进行选择,如此,在传统卷积时,可以使用16:1的电流镜,则最大电流会将为16Imax;进行深度可分离卷积时,使用1:1的电流镜,最大电流为9Imax。此时用量程为16Imax的ADC,可以同时测量二者的计算结果,同时能够保证测量结果的精准度。
实施例8
本实施例提供一种卷积运算装置,其为实施例7的卷积运算方法的硬件实现,因此与方法类似部分的内容在这里就不做赘述,请参照实施例7;
如图15所示,本实施例提供的卷积运算装置包括相互配合设置的运算阵列、输入模块、DAC模块、时钟模块、SEL控制模块、控制器模块、ADC模块和移位选择模块;
本实施例的运算阵列由电流镜阵列、存储阵列、求和线LSL、总和线GSL和受控开关组成,其中,
电流镜阵列由匹配存储阵列进行行列设置的若干电流镜单元组成,所述电流镜单元基于CMOS晶体管配置而成,将各电流镜单元输出侧MOS管的一端分别接入存储阵列中对应的存储单元漏端,另一端作为输出端进行数据输出,并配置位于同一行上的电流镜单元共用同一输入侧;
电流镜阵列和存储阵列统一按照单通道运算功能划分配置成若干运算基本块;各运算基本块中的电流镜单元的输出端归一接入局部求和线LSL,位于同一列上的各求和线LSL分别通过受控开关与按列设置的总和线GSL数据连接,且位于同一行上的各运算基本块输入端配置接入同一矩阵输入,所述矩阵输入通过各运算基本块的输入端匹配接入其中各电流镜单元的输入端;
输入模块和DAC模块匹配设置并配置成用于接收待运算数据并将其转换成目标格式信号并以矩阵输入方式接入各运算基本块输入端;
时钟模块配置成用于向其他模块提供所需频率的时钟信号;
SEL控制模块配置成用于根据控制器模块的指令信号选择执行受控开关的断开或闭合;
移位操作模块配置成用于将每次计算后运算基本块的输出数据按照预定顺序进行同步输出;
ADC模块配置成用于采集目标运算结果数据并转换成目标种类信号输出;
所述控制器模块配置成用于根据触发信号选择预先存储的目标运算功能算法,匹配时钟模块,控制运算阵列、输入模块、DAC模块、SEL控制模块、ADC模块和移位选择模块相互配合动作,配置运算基本块参数、读取待运算数据,选择执行受控开关的断开或闭合,执行目标卷积运算功能算法的步骤,实现目标卷积运算结果数据的输出。
如图3所示在本实施例中电流镜单元为可配置比例的电流镜,该可配置比例的电流镜输入侧和输出侧分别包括若干不同参数且相互并联的CMOS晶体管,输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输入端,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输出端,所述参数包括CMOS晶体管宽长比;
本实施例中的DAC模块配置成用于根据输入模块的输入信号为电流镜单元提供匹配的电流输入,DAC模块采用电流输出型DAC或开关控制型DAC配置而成;
如图4所示,开关控制型DAC具体为:预设多级固定电流,采用开关控制多级固定电流的接入并根据输入模块的输入信号选择开关打开或闭合;
在本实施例中配置运算基本块参数、读取待运算数据具体包括:
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
匹配编程存储单元阈值电压使其用于控制电流镜单元是否输出电流数据;
读取待运算数据,转换处理成若干矩阵输入接入各运算基本块输入端;
本实施例中选择执行受控开关的断开或闭合,执行目标卷积运算功能算法的步骤,实现目标卷积运算结果数据的输出具体包括:
若目标卷积运算功能为传统卷积算法,则控制器模块根据传统卷积算法的步骤,发送控制指令至SEL控制模块控制闭合所有受控开关,也即将所有运算通道打开,此时即可完成与传统卷积一致的计算。
若目标卷积运算功能为分组卷积或深度可分离卷积,则控制器模块按照预设算法,发送控制指令至SEL控制模块,在每次计算时只闭合相应运算基本块的受控开关,并配合输出移位操作将每次计算后运算基本块的输出数据按照预定顺序进行同步输出,具体为当进行分组卷积,或者深度可分离卷积时,可以将相应的运算基本块受控开关打开,其他运算基本块受控开关关闭。如此,可以在未使用的运算基本块中仍然存储数据,但对任何输入产生的响应不会影响最终总和线GSL上的测量结果。如图11所示,此时灰底的MOS管处于断开的状态,对应局部求和线LSL产生的电流不会汇入总和线GSL中。故该方法可以既将存储利用率维持在100%,又能同时保留一定的计算性能,克服了现有技术的缺点。
实施例9
本发明提供一种芯片,包含实施例3或4的存内运算装置,所述存内运算装置被设置为按照预设程序执行实施例1或2的基于电流镜和存储单元的存内运算方法。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (10)
1.一种基于电流镜和存储单元的存内运算方法,其特征在于,所述方法包括:
基于CMOS晶体管配置若干电流镜单元,将电流镜单元匹配存储阵列进行行列设置形成电流镜阵列,并配置位于同一行上的电流镜单元共用同一输入侧;
将各电流镜单元输出侧MOS管的一端分别接入存储阵列中对应的存储单元漏端,另一端作为输出端分别接入按列设置的公共输出线;
根据目标运算功能,执行目标运算算法,包括:
配置各电流镜单元的输入输出比例;
匹配设置存储单元阈值使其用于控制电流镜单元是否输出电流数据;
读取待运算数据转换为电流信号分别接入位于各行电流镜单元输入侧的输入端;
采集公共输出线上的电流信号,处理转换形成目标种类信号进行输出;
所述读取待运算数据转换为电流信号具体包括:
将待运算数据值大小与电流大小正相关;
配置电流输出型DAC或开关控制型DAC进行多级受控电流输入;
所述开关控制型DAC的配置方法具体为:预设多级固定电流,采用开关控制多级固定电流的接入并根据待运算数据信号选择开关打开或闭合,实现多级受控电流输入;
所述电流镜单元为比例可配置电流镜,所述比例可配置电流镜输入侧和输出侧分别包括若干不同参数且相互并联的CMOS晶体管,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输入端,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输出端,所述参数包括CMOS晶体管宽长比。
2.根据权利要求1所述的一种基于电流镜和存储单元的存内运算方法,其特征在于,所述目标运算功能为多比特乘法运算,所述执行目标运算算法具体包括:
将多比特数据的位数权重与位于同一行的多个电流镜单元比例进行映射,配置相应电流镜单元的输入输出比例;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
按照多比特数据的各位数值编程相应存储单元的阈值电压;
读取待运算数据转换为电流信号接入该行电流镜单元输入侧的输入端;
采集并合并各公共输出线上的电流信号作为待运算数据与多比特数据的乘积结果进行输出。
3.根据权利要求1所述的一种基于电流镜和存储单元的存内运算方法,其特征在于,所述目标运算功能为多比特乘加运算,所述执行目标运算算法具体包括:
基于n个多比特数据与n行电流镜阵列对应关系,将各个多比特数据的位数权重与位于同一行的多个电流镜单元比例进行映射,配置相应电流镜单元的输入输出比例;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
按照多比特数据的各位数值编程相应存储单元的阈值电压;
读取n个待运算数据分别转换为电流信号,按照单列矩阵输入接入n行电流镜阵列的输入端;
采集并合并各公共输出线上的电流信号作为n个待运算数据与n个多比特数据的乘积累加结果进行输出。
4.根据权利要求1所述的一种基于电流镜和存储单元的存内运算方法,其特征在于,所述目标运算功能为多比特乘加运算,所述执行目标运算算法具体包括:
基于n个多比特数据与n行电流镜阵列对应关系,将所有电流镜单元设置为同一输入输出比例;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
按照多比特数据的各位数值编程相应存储单元的阈值电压;
读取n个待运算数据分别转换为电流信号,按照单列矩阵输入接入n行电流镜阵列的输入端;
按照位数权值对采集的各公共输出线上的电流信号执行加权求和,作为n个待运算数据与n个多比特数据的乘积累加结果进行输出。
5.根据权利要求1所述的一种基于电流镜和存储单元的存内运算方法,其特征在于,所述目标运算功能为二值化乘加运算,所述执行目标运算算法具体包括:
将电流镜阵列中所有电流镜单元设置为同一输入输出比例;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
按照二值的权重矩阵编程相应存储单元的阈值电压;
读取待运算数据分别转换为电流信号,按照单列矩阵输入接入电流镜阵列的输入端;
采集各公共输出线上的电流信号,处理转换形成目标种类信号作为二值化乘加运算结果分别进行输出。
6.根据权利要求1所述的一种基于电流镜和存储单元的存内运算方法,其特征在于,所述目标运算功能为三值化乘加运算,所述执行目标运算算法具体包括:
将电流镜阵列中所有电流镜单元设置为同一输入输出比例;
将同一行相邻两列电流镜单元输出进行配对送入差分电路单元进行减法运算后输出;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
按照三值的权重矩阵分别对每对存储单元的阈值电压进行编程;
读取待运算数据分别转换为电流信号,按照单列矩阵输入接入电流镜阵列的输入端;
采集各差分电路单元的电流信号,处理转换形成目标种类信号作为三值化乘加运算结果分别进行输出。
7.一种采用如权利要求1-6任意一项所述的存内运算方法的卷积运算方法,其特征在于,所述方法包括:
基于CMOS晶体管配置若干电流镜单元,将电流镜单元匹配存储阵列进行行列设置形成电流镜阵列,并配置位于同一行上的电流镜单元共用同一输入侧;
将各电流镜单元输出侧MOS管的一端分别接入存储阵列中对应的存储单元漏端,另一端作为输出端进行数据输出;
对电流镜阵列和存储阵列统一按照单通道运算功能划分配置成若干运算基本块;
对运算基本块中所有电流镜单元的输出端归一接入匹配的局部求和线LSL;
对位于同一行上的各运算基本块输入端配置接入同一矩阵输入;
按列设置总和线GSL,匹配运算基本块分别设置受控开关,将位于同一列上的各求和线LSL分别通过受控开关与总和线GSL数据连接;
根据目标卷积运算功能,配置运算基本块参数、读取待运算数据,选择执行受控开关的断开或闭合,并配合输出移位操作实现目标运算结果数据的输出,所述目标卷积运算功能至少包括传统卷积、分组卷积和深度可分离卷积中的一种或几种;
所述配置运算基本块参数、读取待运算数据具体包括:
根据预设权值配置各运算模块中电流镜单元的输入输出比例;
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
匹配编程存储单元阈值电压使其用于控制电流镜单元是否输出电流数据;
读取待运算数据,转换处理成若干矩阵输入接入各运算基本块输入端;
所述选择执行受控开关的断开或闭合,并配合输出移位操作实现目标运算结果数据的输出具体包括:
若目标卷积运算功能为传统卷积,则闭合所有受控开关;
若目标卷积运算功能为分组卷积或深度可分离卷积,则按照预设算法在每次计算时只闭合相应运算基本块的受控开关,并配合输出移位操作将每次计算后运算基本块的输出数据按照预定顺序进行同步输出。
8.一种卷积运算装置,其特征在于,用于实施如权利要求7所述的卷积运算方法,包括相互配合设置的运算阵列、输入模块、DAC模块、时钟模块、SEL控制模块、控制器模块、ADC模块和移位选择模块;
所述运算阵列由电流镜阵列、存储阵列、求和线LSL、总和线GSL和受控开关组成,其中,
所述电流镜阵列由匹配存储阵列进行行列设置的若干电流镜单元组成,所述电流镜单元基于CMOS晶体管配置而成,将各电流镜单元输出侧MOS管的一端分别接入存储阵列中对应的存储单元漏端,另一端作为输出端进行数据输出,并配置位于同一行上的电流镜单元共用同一输入侧;
所述电流镜阵列和存储阵列统一按照单通道运算功能划分配置成若干运算基本块;各运算基本块中的电流镜单元的输出端归一接入局部求和线LSL,位于同一列上的各求和线LSL分别通过受控开关与按列设置的总和线GSL数据连接,且位于同一行上的各运算基本块输入端配置接入同一矩阵输入,所述矩阵输入通过各运算基本块的输入端匹配接入其中各电流镜单元的输入端;
所述输入模块和DAC模块匹配设置并配置成用于接收待运算数据并将其转换成目标格式信号并以矩阵输入方式接入各运算基本块输入端;
所述时钟模块配置成用于向其他模块提供所需频率的时钟信号;
所述SEL控制模块配置成用于根据控制器模块的指令信号选择执行受控开关的断开或闭合;
所述移位操作模块配置成用于将每次计算后运算基本块的输出数据按照预定顺序进行同步输出;
所述ADC模块配置成用于采集目标运算结果数据并转换成目标种类信号输出;所述控制器模块配置成用于根据触发信号选择预先存储的目标运算功能算法,匹配时钟模块,控制运算阵列、输入模块、DAC模块、SEL控制模块、ADC模块和移位选择模块相互配合动作,配置运算基本块参数、读取待运算数据,选择执行受控开关的断开或闭合,执行目标卷积运算功能算法的步骤,实现目标卷积运算结果数据的输出。
9.根据权利要求8所述的一种卷积运算装置,其特征在于,所述电流镜单元为可配置比例的电流镜,所述可配置比例的电流镜输入侧和输出侧分别包括若干不同参数且相互并联的CMOS晶体管,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输入端,所述输入侧CMOS晶体管漏端均通过受控开关接入电流镜单元的输出端,所述参数包括CMOS晶体管宽长比;
所述DAC模块配置成用于根据输入模块的输入信号为电流镜单元提供匹配的电流输入,DAC模块采用电流输出型DAC或开关控制型DAC配置而成;
所述开关控制型DAC具体为:预设多级固定电流,采用开关控制多级固定电流的接入并根据输入模块的输入信号选择开关打开或闭合;
所述配置运算基本块参数、读取待运算数据具体包括:
根据各存储单元的初始参数,获取存储单元的阈值电压随编程操作的变化曲线;
匹配编程存储单元阈值电压使其用于控制电流镜单元是否输出电流数据;
读取待运算数据,转换处理成若干矩阵输入接入各运算基本块输入端;
所述选择执行受控开关的断开或闭合,执行目标卷积运算功能算法的步骤,实现目标卷积运算结果数据的输出具体包括:
若目标卷积运算功能为传统卷积,则SEL控制模块接收控制器发出控制指令闭合所有受控开关;
若目标卷积运算功能为分组卷积或深度可分离卷积,则按照预设算法在每次计算时SEL控制模块只闭合相应运算基本块的受控开关,并配合移位操作模块执行输出移位操作将每次计算后运算基本块的输出数据按照预定顺序进行同步送入ADC模块进行输出。
10.一种芯片,其特征在于,包含如权利要求8-9任意一项所述的卷积运算装置,所述卷积运算装置被设置为按照预设程序执行包括如权利要求1-7任意一项所述的运算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110982430.8A CN113672854B (zh) | 2021-08-25 | 2021-08-25 | 一种基于电流镜和存储单元的存内运算方法、装置及其应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110982430.8A CN113672854B (zh) | 2021-08-25 | 2021-08-25 | 一种基于电流镜和存储单元的存内运算方法、装置及其应用 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113672854A CN113672854A (zh) | 2021-11-19 |
CN113672854B true CN113672854B (zh) | 2024-02-06 |
Family
ID=78546253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110982430.8A Active CN113672854B (zh) | 2021-08-25 | 2021-08-25 | 一种基于电流镜和存储单元的存内运算方法、装置及其应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113672854B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114995783B (zh) * | 2022-07-26 | 2022-11-01 | 中科南京智能技术研究院 | 一种存内计算单元 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5541879A (en) * | 1993-01-13 | 1996-07-30 | Samsung Electronics Co., Ltd. | Nonvolatile semiconductor memory having program verifying circuit |
US5659514A (en) * | 1991-06-12 | 1997-08-19 | Hazani; Emanuel | Memory cell and current mirror circuit |
JP2001266583A (ja) * | 1991-12-19 | 2001-09-28 | Toshiba Corp | 不揮発性半導体記憶装置 |
JP2002288985A (ja) * | 2001-01-19 | 2002-10-04 | Univ Hiroshima | 半導体連想メモリ |
US7542343B1 (en) * | 2007-09-21 | 2009-06-02 | Juhan Kim | Planar NAND flash memory |
JP2014220026A (ja) * | 2013-05-09 | 2014-11-20 | ピーエスフォー ルクスコ エスエイアールエルPS4 Luxco S.a.r.l. | 半導体装置及びデータ線の切り替え方法 |
CN104748864A (zh) * | 2015-03-31 | 2015-07-01 | 中国科学院上海技术物理研究所 | 一种逐元暗电流抑制的cmos红外探测器读出电路 |
CN108446097A (zh) * | 2018-03-09 | 2018-08-24 | 合肥恒烁半导体有限公司 | 一种基于NOR Flash模块的数据运算方法 |
CN110008440A (zh) * | 2019-04-15 | 2019-07-12 | 合肥恒烁半导体有限公司 | 一种基于模拟矩阵运算单元的卷积运算及其应用 |
CN110275567A (zh) * | 2019-07-03 | 2019-09-24 | 合肥恒烁半导体有限公司 | 一种电流减法电路及其应用 |
US10446239B1 (en) * | 2018-07-11 | 2019-10-15 | Globalfoundries Inc. | Memory array including distributed reference cells for current sensing |
CN110427171A (zh) * | 2019-08-09 | 2019-11-08 | 复旦大学 | 可扩展的定点数矩阵乘加运算的存内计算结构和方法 |
CN110991608A (zh) * | 2019-11-25 | 2020-04-10 | 合肥恒烁半导体有限公司 | 一种卷积神经网络量化计算方法及系统 |
CN111222626A (zh) * | 2019-11-07 | 2020-06-02 | 合肥恒烁半导体有限公司 | 一种基于NOR Flash模块的神经网络的数据切分运算方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4012144B2 (ja) * | 2003-12-25 | 2007-11-21 | 株式会社東芝 | 半導体記憶装置 |
US7446683B2 (en) * | 2005-11-03 | 2008-11-04 | Samsung Electronics Co., Ltd. | Digital current source |
JP5181423B2 (ja) * | 2006-03-20 | 2013-04-10 | ソニー株式会社 | 半導体メモリデバイスとその動作方法 |
CN108805270B (zh) * | 2018-05-08 | 2021-02-12 | 华中科技大学 | 一种基于存储器的卷积神经网络系统 |
US20200117986A1 (en) * | 2018-10-12 | 2020-04-16 | International Business Machines Corporation | Efficient processing of convolutional neural network layers using analog-memory-based hardware |
US11500442B2 (en) * | 2019-01-18 | 2022-11-15 | Silicon Storage Technology, Inc. | System for converting neuron current into neuron current-based time pulses in an analog neural memory in a deep learning artificial neural network |
CN111583940A (zh) * | 2020-04-20 | 2020-08-25 | 东南大学 | 极低功耗关键词唤醒神经网络电路 |
-
2021
- 2021-08-25 CN CN202110982430.8A patent/CN113672854B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5659514A (en) * | 1991-06-12 | 1997-08-19 | Hazani; Emanuel | Memory cell and current mirror circuit |
JP2001266583A (ja) * | 1991-12-19 | 2001-09-28 | Toshiba Corp | 不揮発性半導体記憶装置 |
US5541879A (en) * | 1993-01-13 | 1996-07-30 | Samsung Electronics Co., Ltd. | Nonvolatile semiconductor memory having program verifying circuit |
JP2002288985A (ja) * | 2001-01-19 | 2002-10-04 | Univ Hiroshima | 半導体連想メモリ |
US7542343B1 (en) * | 2007-09-21 | 2009-06-02 | Juhan Kim | Planar NAND flash memory |
JP2014220026A (ja) * | 2013-05-09 | 2014-11-20 | ピーエスフォー ルクスコ エスエイアールエルPS4 Luxco S.a.r.l. | 半導体装置及びデータ線の切り替え方法 |
CN104748864A (zh) * | 2015-03-31 | 2015-07-01 | 中国科学院上海技术物理研究所 | 一种逐元暗电流抑制的cmos红外探测器读出电路 |
CN108446097A (zh) * | 2018-03-09 | 2018-08-24 | 合肥恒烁半导体有限公司 | 一种基于NOR Flash模块的数据运算方法 |
US10446239B1 (en) * | 2018-07-11 | 2019-10-15 | Globalfoundries Inc. | Memory array including distributed reference cells for current sensing |
CN110008440A (zh) * | 2019-04-15 | 2019-07-12 | 合肥恒烁半导体有限公司 | 一种基于模拟矩阵运算单元的卷积运算及其应用 |
CN110275567A (zh) * | 2019-07-03 | 2019-09-24 | 合肥恒烁半导体有限公司 | 一种电流减法电路及其应用 |
CN110427171A (zh) * | 2019-08-09 | 2019-11-08 | 复旦大学 | 可扩展的定点数矩阵乘加运算的存内计算结构和方法 |
CN111222626A (zh) * | 2019-11-07 | 2020-06-02 | 合肥恒烁半导体有限公司 | 一种基于NOR Flash模块的神经网络的数据切分运算方法 |
CN110991608A (zh) * | 2019-11-25 | 2020-04-10 | 合肥恒烁半导体有限公司 | 一种卷积神经网络量化计算方法及系统 |
Non-Patent Citations (5)
Title |
---|
CMOS星敏感器图像驱动及实时星点定位算法;郝雪涛,江洁,张广军;北京航空航天大学学报(第04期);第10-13页 * |
基于NOR Flash的卷积计算单元的设计;徐伟民;黄鲁;蒋明峰;;信息技术与网络安全(第05期);第67-72页 * |
基于忆阻器交叉阵列的卷积神经网络电路设计;胡飞;尤志强;刘鹏;邝继顺;;计算机研究与发展(第05期);全文 * |
用于高密度RRAM单端式可编程灵敏放大器设计;马文龙;张锋;杨红官;陈铖颖;;半导体技术(第10期);第22-26页 * |
采用遗传算法的一种可重构ANN的电路设计;卢纯,石秉学;半导体学报(第05期);第137-142页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113672854A (zh) | 2021-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111431536A (zh) | 子单元、mac阵列、位宽可重构的模数混合存内计算模组 | |
CN110750231B (zh) | 一种面向卷积神经网络的双相系数可调模拟乘法计算电路 | |
US7646622B2 (en) | Memory based computation systems and methods of using the same | |
CN111095300B (zh) | 使用半导体存储元件的神经网络运算电路 | |
CN104779954B (zh) | 逐次逼近型模数转换器及其基于误码检测的数字校正方法 | |
WO2021178225A1 (en) | In-memory computing architecture and methods for performing mac operations | |
CN113672854B (zh) | 一种基于电流镜和存储单元的存内运算方法、装置及其应用 | |
CN113517007B (zh) | 一种流水处理方法、系统和忆阻器阵列 | |
CN113672855A (zh) | 一种存内运算方法、装置及其应用 | |
US11018687B1 (en) | Power-efficient compute-in-memory analog-to-digital converters | |
CN117271436B (zh) | 基于sram的电流镜互补存内计算宏电路、及芯片 | |
CN112349316A (zh) | 用于存储单元阵列的读出单元以及包括其的存算一体芯片 | |
CN113131934A (zh) | 一种应用于16位低功耗逐次逼近型模数转换器的比较器失调电压校准方法 | |
CN114330694A (zh) | 实现卷积运算的电路及其方法 | |
CN114281149B (zh) | Rram阵列求和运算电路及方法 | |
CN113222131B (zh) | 基于1t1r的可实现带符号权重系数的突触阵列电路 | |
CN115906976A (zh) | 一种全模拟向量矩阵乘法存内计算电路及其应用 | |
Scott et al. | A flash-based current-mode IC to realize quantized neural networks | |
CN210142511U (zh) | 用于存储单元阵列的读出单元以及包括其的存算一体芯片 | |
CN114822638A (zh) | 计算器件以及计算方法 | |
CN117157636A (zh) | 存算一体装置、系统及其操作方法 | |
Li et al. | A memristor crossbar-based computation scheme with high precision | |
CN111611528A (zh) | 电流值可变的电流积分和电荷共享的多位卷积运算模组 | |
CN115664422B (zh) | 一种分布式逐次逼近型模数转换器及其运算方法 | |
Parthasarathy | Design and analysis of search algorithms for lower power consumption and faster convergence of DAC input of SAR-ADC in 65nm CMOS |
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 |