CN110427171B - 可扩展的定点数矩阵乘加运算的存内计算设备和方法 - Google Patents
可扩展的定点数矩阵乘加运算的存内计算设备和方法 Download PDFInfo
- Publication number
- CN110427171B CN110427171B CN201910734087.8A CN201910734087A CN110427171B CN 110427171 B CN110427171 B CN 110427171B CN 201910734087 A CN201910734087 A CN 201910734087A CN 110427171 B CN110427171 B CN 110427171B
- Authority
- CN
- China
- Prior art keywords
- module
- bit
- signal
- analog
- digital
- 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
Images
Classifications
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4814—Non-logic devices, e.g. operational amplifiers
-
- 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
本发明提供一种基于存储单元的、可扩展的、用于定点数矩阵乘加运算的存内计算设备,其特征在于,包括:数据调度模块,用于将输入的多比特定点数矩阵转换为多个单比特脉冲信号;运算阵列,由M行M列的存储单元构成;辅助运算模块,至少包括低比特模数转换模块、移位加法模块以及数字减法器;列译码器;以及控制模块,存储有配置信息,用于根据配置信息向数据调度模块、列译码器以及辅助运算模块发送配置信号从而适应不同位宽的数据运算。
Description
技术领域
本发明属于信息技术领域,具体涉及一种可扩展的定点数矩阵乘加运算的存内计算设备和方法。
背景技术
随着大数据时代的带来,人们对数据运算的速度要求和功耗要求越来越高。现有的基于CMOS的数字计算方法很难满足超大并行度和低功耗的运算要求。
人们对大规模并行计算和低功耗运算的追求,促进了对存储器内计算的研究。基于存储器内的运算采用非冯诺依曼结构,减少了存储器与运算器之间的数据传输,从而减小了运算功耗;此外,该结构可以借助存储器的电路结构,可以实现大规模的并行运算,满足人们对高运算并行度和低功耗的追求。
按照计算方式分类,现有存储器乘加运算技术可以分为两类:
第一类架构使用存储器单元实现最简单的逻辑运算,然后通过存储器逻辑运算实现数字计算功能处理。以色列理工学院的研究小组提出了一种基于SRAM的乘加运算结构,该电路首先通过三个SRAM单元实现单个NOR(或非)逻辑运算,然后通过NOR逻辑实现多比特数据的乘加运算。该方法是对传统CMOS运算的一种改进,运算精确度较高,但是运算操作复杂,需要用1500个周期才能实现一个乘法运算,而且不便于实现大规模并行计算。此外,密歇根大学的科研小组也提出了一种基于静态随机存取存储器(SRAM)的存储计算处理器。该电路通过两个SRAM单元实现了逻辑与门(SRAM与门),进而实现32bit的浮点数运算。该方法精确度较高,但是实现单次运算需要4978个周期,运算速度较低。
第二类存储计算架构主要利用存储阵列的结构实现模拟乘加运算。某大学的科研小组在2018年和2019年分别提出了两种基于RRAM存储器的用于3*3卷积的模拟乘加运算的电路结构(参见A 65nm 1Mb Nonvolatile Computing-in-Memory ReRAM Macro with Sub-16ns Multiply-and-Accumulate for Binary DNN AI Edge Processors,ISSCC 2018;以及A 1Mb Multibit ReRAM Computing-In-Memory Macro with 14.6ns Parallel MACComputing Time forCNN-Based AI Edge Processors,ISSCC 2019)。该小组提出的两种电路结构基本相同。首先,该结构通过将大部分或者全部权重存入非挥发存储器,避免了传统多层存储器结构的数据访问而导致的延迟,此外,该电路通过将多个输入数据同时输入存储阵列,将多个乘加运算缩短至一个时钟周期,提高了计算并行度。但是,该小组提出的两个电路结构都存在数据精度不足的问题,2018年提出的电路只能实现1bit数据之间的乘加运算,2019年提出的电路方案也仅能实现2bits数据之间的乘加运算。而低比特数据乘加运算的应用范围极其有限,不具有通用性。此外,该电路的模拟运算精度较低,具体表现为:1.没有明确解决模拟运算中存在的电流非线性问题;2.用于正负权重相减的减法器精度不足。数据的低位宽和模拟运算的低精度限制了该电路的应用。除了基于RRAM的模拟运算电路,该小组还在2019年提出了基于SRAM的模拟运算电路,该电路通过调整WL(wiresource)的模拟电压实现4bits数据的输入。但是,由于WL电压与SRAM电流的非线性关系,该方法的运算精度较低,且不便于进行更高比特数据的扩展。
除了该小组之外,普林斯顿大学的科研小组也在2018年提出了一种基于SRAM存储器的用于卷积运算的模拟乘加运算电路。该电路的架构与上述某大学的电路架构基本相同,通过将一半乘数存储至存储器阵列来减少数据调度,从而降低计算功耗;同样通过利用存储器的并行输入来实现大规模的并行计算。但是与RRAM相比,SRAM技术比较成熟,模拟运算的精度稍高,但是SRAM的模拟运算电路比较复杂。该小组使用该电路实现了7bits数据和1bit数据之间的乘加运算,其中一个乘数的位宽过小,数据精度仍然有所欠缺,限制了该电路的应用范围。
上述存内计算芯片都只能用于低数据位宽的运算,这就大大限制了存内计算的应用范围和发展潜力。
发明内容
为解决上述问题,提供一种基于存储单元的、可扩展的、用于定点数矩阵乘加运算的存内运算设备和方法,以扩大存储器内并行模拟乘加运算的应用范围,本发明采用了如下技术方案:
本发明提供了一种可扩展的定点数矩阵乘加运算的存内计算设备,其特征在于,包括:数据调度模块,用于将输入的多比特定点数矩阵转换为多个单比特脉冲信号;运算阵列,由M行N列的存储单元构成;列译码器;辅助运算模块,至少包括低比特模数转换模块、移位加法模块以及数字减法器;以及控制模块,存储有配置信息,用于根据配置信息向数据调度模块、列译码器以及辅助运算模块发送配置信号从而适应不同位宽的数据运算,其中,配置信息包括并行度以及数据位宽,控制模块根据并行度向数据调度模块发送并行度信号,数据调度模块根据并行度信号决定运算阵列的有效行数并根据该有效行数将单比特脉冲信号按照时序发送至运算阵列的字线作为行选信号,控制模块根据数据位宽向列译码器发送权重位宽信号以及列地址信号,列译码器根据权重位宽信号以及列地址信号输出列选信号,运算阵列根据存储单元存储的权重数据以及行选信号在位线上产生相应的模拟运算电流,辅助运算模块根据列选信号将运算阵列中相应位线的电流读入低比特模数转换模块,低比特模数转换模块将模拟运算电流转换为数字信号并输出给移位加法模块,移位加法模块对数字信号进行移位以及累加操作形成正负权重的累加结果,数字减法器将累加结果进行相减从而形成最终结果。
本发明提供的可扩展的定点数矩阵乘加运算的存内计算设备,还可以具有这样的技术特征,其中,存储单元为二元存储单元,在控制模块根据数据位宽向列译码器发送权重位宽信号以及列地址信号时,列译码器根据权重位宽信号以及列地址信号输出列选信号给运算阵列。
本发明提供的可扩展的定点数矩阵乘加运算的存内计算设备,还可以具有这样的技术特征,其中,运算阵列同时存储正定点数以及负定点数,运算阵列的偶数列存储的无符号定点数表示正定点数,奇数列的无符号定点数表示负定点数,运算阵列的相邻两列共用一个电源并获取运算电流,每列二元存储单元具有单独的位线,用于汇总该列所有二元存储单元的总电流。
本发明提供的可扩展的定点数矩阵乘加运算的存内计算设备,还可以具有这样的技术特征,其中,移位加法模块对数字信号进行移位以及累加操作时,相邻多个偶数列所对应的数字信号被移位累加形成一个正权重的累加结果,相邻多个奇数列所对应的数字信号被移位累加形成一个负权重的累加结果,数字减法器在将累加结果进行相减时,将正权重的累加结果减去负权重的累加结果从而形成最终结果。
本发明提供的可扩展的定点数矩阵乘加运算的存内计算设备,还可以具有这样的技术特征,其中,低比特模数转换模块由相互独立的多个模数转换器构成,移位加法模块包括移位器、累加器以及寄存器,模数转换器将运算阵列输出的模拟运算电流转换为数字信号,移位器对模数转换器的数字信号进行移位并将移位数据输出给累加器,累加器对移位数据进行累加并在累加完成后将累加结果发送至数字减法器,累加器的中间结果暂存在寄存器中。
本发明提供的可扩展的定点数矩阵乘加运算的存内计算设备,还可以具有这样的技术特征,其中,辅助运算模块还包括辅助控制器,当多比特输入数据阵列的位宽增大时,控制模块根据数据位宽产生相应的位宽信号给辅助运算模块,辅助控制器根据位宽信号调整移位器以及累加器的工作周期。
本发明提供的可扩展的定点数矩阵乘加运算的存内计算设备,还可以具有这样的技术特征,其中,低比特模数转换模块由至少一个敏感放大器构成,敏感放大器的两个输入为参考电流和来自运算阵列的模拟电流,当使用多个敏感放大器和多个参考电流时,低比特模数转换模块在单周期内输出多比特数字信号;当使用一个敏感放大器和多个参考电流时,低比特模数转换模块在多周期输出一个多比特数字信号。
本发明提供的可扩展的定点数矩阵乘加运算的存内计算设备,还可以具有这样的技术特征,其中,存储单元为多元存储单元,在控制模块根据数据位宽向列译码器发送权重位宽信号以及列地址信号时,列译码器仅根据列地址信号输出列选信号,该列选信号的个数为2。
本发明还提供了一种可扩展的定点数矩阵乘加运算的存内计算方法,基于本发明的可扩展的定点数矩阵乘加运算的存内计算设备运行,其特征在于,包括如下步骤:步骤S1,外部输入数据发送至数据调度模块;步骤S2,数据调度模块将外部输入数据转换为多个单比特脉冲信号并根据控制模块生成的并行度信号将单比特脉冲信号发送给运算阵列作为运算阵列的行选信号;步骤S3,运算阵列根据存储的权重数据和行选信号,在位线上产生相应的模拟运算电流并传输至辅助运算模块;步骤S4,辅助运算模块根据列选信号将相应位线的模拟运算电流读入低比特模数转换模块,从而将模拟运算电流转换成数字信号;步骤S5,辅助运算模块中的移位加法模块对数字信号进行移位以及累加操作;步骤S6,辅助运算模块根据控制模块的位宽信号判断移位加法模块是否完成正负权重的乘加运算,若未完成则返回步骤S2并重复上述过程,直至完成乘加运算形成累加结果;步骤S7,数字减法器将累加结果进行相减从而得到最终结果。
发明作用与效果
根据本发明的可扩展的定点数矩阵乘加运算的存内计算设备,由于通过控制模块控制数据调度模块、辅助运算模块以及列译码器配合基于存储阵列的运算阵列进行定点数矩阵的乘加运算,是基于非冯诺依曼架构的存内计算,因此运算阵列能够对常用操作数进行存储,从而极大地减少数据搬移量,提高运算能效。本发明的存内计算设备,无需增加新的器件便可实现更大位宽的定点数矩阵乘法,具有极强的可扩展性,显著增大了定点数乘加运算的应用范围,能够广泛适用于神经网络、傅里叶变换等应用领域。
附图说明
图1是本发明实施例中可扩展的定点数矩阵乘加运算的存内计算设备的结构框图;
图2是本发明实施例中数据调度模块的示例图;
图3是本发明实施例中基于二元存储单元的运算阵列的示例图;
图4是本发明实施例中辅助运算模块的示例图;以及
图5是本发明实施例中可扩展的定点数矩阵乘加运算的存内计算方法的流程图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下结合实施例及附图对本发明的可扩展的定点数矩阵乘加运算的存内计算设备作具体阐述。
<实施例>
图1是本发明实施例中可扩展的定点数矩阵乘加运算的存内计算设备的结构框图。
如图1所示,可扩展的定点数矩阵乘加运算的存内计算设备包括数据调度模块1、运算阵列2、列译码器3、辅助运算模块4以及控制模块5。
其中,控制模块5为控制字配置模块,其输入是外部串行输入的控制字Data、网络层同步信号Lsync、主时钟信号Clk、全局复位信号Global_Rst_n等;输出为用于控制数据调度模块1、辅助运算模块4以及列译码器3的控制信号,该控制信号包括但不限于输入数据位宽信号IW、乘法并行度信号MP、权重位宽信号WW以及列地址信号CA等。
本实施例中,输入数据位宽信号IW负责对数据调度模块1、辅助运算模块4以及列译码器3进行配置,以适应不同位宽的数据运算。
数据调度模块1用于将输入的多比特定点数矩阵转换为多个单比特脉冲信号,并将其依次发送至运算阵列,用做运算阵列2的行选信号。
本实施例中,数据调度模块1的输入为多比特输入数据阵列(或者多比特输入数据阵列乘加运算的中间运算结果)、输入数据位宽信号、乘法并行度信号以及时序控制信号等;输出为多个脉冲信号,脉冲信号数量与乘法运算的并行度相同,单个脉冲信号的脉冲个数与多比特输入数据阵列的比特位宽相同。
具体地,例如,如图2所示,数据调度模块1的输入为a个b比特图像数据Fig(或者神经网络的中间多比特运算结果)、输入数据位宽信号IW、乘法并行度信号MP以及时序控制信号;输出为a个脉冲信号,a的数量与乘法并行度信号MP相同。数据调度模块的功能是将a个b比特输入数据转变为a个脉冲信号(单个脉冲信号含有b个脉冲),并将其依次发送至运算阵列,用做运算阵列的行选信号。
本实施例中,为了实现多个乘法操作的并行运算,a个脉冲信号分别被发送至同一阵列的不同行。
运算阵列2用于进行定点数的乘加运算,该运算阵列2由M行N列的存储单元构成。
本实施例中,运算阵列2的输入是经过数据调度模块1转换的脉冲信号(行选信号),输出为脉冲信号与运算阵列2所存储的权重经过乘加运算后得到的模拟电流,模拟电流的个数由来自控制模块5的权重位宽信号WW决定。
具体地,例如,如图3所示,运算阵列2的输入是经过数据调度模块1转换的a个脉冲信号,输出为脉冲信号与阵列所存储的c-bits权重(c与权重位宽信号WW对应,c表示数字)经过乘加运算后得到的2*c路模拟电流Ibl。
本实施例中,构成运算阵列2的存储单元为二元存储单元,由于单个二元存储单元只存在“0”和“1”两种状态,因此,相邻c个二元存储单元构成一个c-bits定点数(即无符号定点数)。为了实现包含负定点数在内的矩阵乘加运算,单个运算阵列同时存储正定点数和负定点数,其中,偶数列(0,2…)存储的无符号定点数表示正定点数,奇数列存储的无符号定点数表示负定点数,相邻两列存储单元(例如:0和1,2和3等)共用一个电源线(SourceLine,简称SL)。每列存储单元拥有单独的位线(Bit Line,简称BL),用于汇总该列所有二元存储单元的总电流。运算阵列的字线(Word Line,简称WL)由数据调度模块1产生。
其中,电源线SL为运算阵列2提供电压源,可以整体调控运算电流的大小;位线BL负责汇总该列存储单元的总电流,以实现乘加运算中的加操作;字线WL为运算阵列2接收的行选信号,负责控制该行存储单元是否用于乘加运算;
列译码器3用于输出列选信号,该列选信号用于决定选中运算阵列2中哪些用于计算的权重列。
本实施例中,列译码器3的输入为来自控制模块5的列地址信号CA和权重位宽信号WW等,输出为列选信号ColSel<N-1:0>(N为运算阵列的列数)。其中,来自控制模块5的列地址信号CA决定列选信号的位置(即决定列选信号ColSel<N-1:0>的起始位置),权重位宽信号WW决定列选信号的个数。例如,若CA所表示的列地址为0,WW所表示权重位宽c为3,则ColSel<2:0>有效,ColSel<N-1:3>无效。
辅助运算模块4用于进行辅助运算过程,即计算并输出矩阵乘加运算的最终结果,该辅助运算模块4至少包括低比特模数转换模块、移位加法模块、数字减法器以及辅助控制器。
本实施例中,辅助运算模块4的输入为来自运算阵列2的模拟电流信号;其输出为整个矩阵运算的数字化结果(即最终结果)。
低比特模数转换模块用于将模拟运算电流转换为数字信号。
本实施例中,低比特模数转换模块由相互独立的多个模数转换器构成,各个模数转换器用于将运算阵列2输出的模拟运算电流转换为数字信号并发送给移位器。
本实施例中,辅助运算模块4(辅助控制器)根据来自控制模块5的权重位宽信号WW对模数转换器进行配置,从而控制模数转换器的工作状态。同时,辅助运算模块4(辅助控制器)还根据列译码器3的列选信号将存储阵列中相应位线的电流读入低比特模数转换模块。
本实施例中,各个相互独立的模数转换器的作用是将不同的乘加运算电流转换成相互独立的低比特数字信号(位宽为p-bits)。
移位加法模块用于对低比特模数转换模块转换的数字信号进行移位加法运算。
本实施例中,各个模数转换器转换的低比特数字信号被发送至移位加法器进行移位加法运算,移位加法的运算次数由辅助控制器根据低比特数字信号的位宽决定。
本实施例中,移位加法模块具体包括移位器、累加器以及寄存器:移位器用于对模数转换器的数字信号进行移位,并将移位数据输出给累加器。累加器用于对接收的移位数据进行累加,并在累加完成后将正负权重的累加结果发送至数字减法器。累加器的中间结果暂存在寄存器中。
本实施例中,相邻多个运算阵列2的偶数列所输出对应的数字信号被移位累加形成一个正权重的累加结果,相邻多个运算阵列2的奇数列所输出对应的数字信号的被移位累加形成一个负权重的累加结果。
数字减法器用于实现负数的乘加运算从而形成最终结果。
本实施例中,数字减法器的输出为将正权重的累加结果减去负权重的累加结果从而形成的最终结果。
辅助控制器负责调控模数转换器、移位器和累加器的工作状态,当由多比特输入数据阵列转换成脉冲信号全部运算完毕,辅助控制器还负责将模数转换器、移位器和累加器关闭,并输出运算结果(最终结果)。
本实施例中,当多比特输入数据阵列的位宽增大时,控制模块5根据数据位宽产生相应的位宽信号给辅助运算模块4,辅助控制器根据位宽信号调整移位器以及累加器的工作周期。
具体地,例如,一种辅助运算模块4的结构如图4所示,该辅助运算模块4含有多个模数转换器601,模数转换器601之间相互独立,但是共用同一个参考电压;辅助运算模块4中的移位器分为两层。第一层移位器602用于实现多比特权重的比例变换,该第一层移位器602按照权重列的重要性决定移位距离;第二层移位器603用于实现多比特输入数据的比例变换,该第二层移位器603按照脉冲的先后顺序决定移位距离;数字减法器605用于实现负数的乘加运算。
其中,在辅助运算模块4进行辅助运算过程时,如图4所示,其输入为来自运算阵列2的模拟电流信号Ibl;其输出为并行乘加运算的数字结果Out。在辅助运算过程中,来自运算阵列的模拟电流信号Ibl流入模数转换器601,模数转换器601将其转换为3-bits数字信号D0+[2:0]~D(c-1)+[2:0]和D0-[2:0]~D(c-1)-[2:0](为了方便描述,本实施例中,模数转换器601所转换的数字信号位宽设为3bits,但这不是本发明工作的必要条件),其中c表示权重位宽,“+”和“-”表示该信号为正权重运算结果或者负权重运算结果;第一层移位器602按照权重列的重要性决定移位距离;第一层移位器602的输出结果发送至第二层移位器603,第二层移位器603根据按照脉冲的先后顺序决定移位距离;第二次移位器603的输出结果发送至累加器604,累加器604对其进行累加,并将计算结果存储在自身寄存器当中;当累加完成后,累加器604将正负权重的累加结果发送至减法器605进行减法计算,减法器605的输出为正权重运算见过减去负权重运算结果;在整个辅助运算过程中,辅助运算的辅助控制器606负责调控模数转换器601、第一层移位器602、第二次移位器603、累加器604和减法器605的工作状态,当由b-bits图像数据转换成脉冲信号全部运算完毕,辅助控制器606将模数转换器601、移位器(602和603)、累加器604关闭,并将累加运算结果输出至减法器605,开始减法运算;当减法运算完成后,辅助控制器606关闭减法器605,并输出最终运算结果。
控制模块5用于根据外部配置字生成相应的控制信号,并发送给数据调度模块1、列译码器3以及辅助运算模块4从而相应的控制。
本实施例中,数据的位宽可以被任意扩展,该数据可扩展方法为:当多比特输入数据阵列的位宽增大时,控制模块5产生相应的输入数据位宽信号,并将其发送至辅助运算模块4。辅助运算模块4内部的辅助控制器根据修改后的输入数据位宽调整移位器和累加器的工作周期数,将在工作完成后,将累加器结果发送至减法器进行运算,并输出最终结果。对于权重数据的扩展在于,当权重位宽增大时,控制模块5产生相应的权重位宽信号,并将其发送至列译码器3,列译码器3根据权重位宽信号决定列选信号的个数。
图5是本发明实施例中可扩展的定点数矩阵乘加运算的存内计算方法的流程图。
如图5所示,基于可扩展的定点数矩阵乘加运算的存内计算设备运行的存内计算方法包括如下步骤:
步骤S1,外部输入数据发送至数据调度模块1;
步骤S2,数据调度模块1将外部输入数据转换为多个单比特脉冲信号并根据控制模块5生成的并行度信号将单比特脉冲信号发送给运算阵列2作为运算阵列2的行选信号;
步骤S3,运算阵列2根据存储的权重数据以及通过步骤S2接收的行选信号,在位线上产生相应的模拟运算电流,并传输至辅助运算模块4;
步骤S4,辅助运算模块4根据列译码器3的列选信号将相应位线的模拟运算电流读入低比特模数转换模块,从而将模拟运算电流转换成数字信号;
步骤S5,辅助运算模块4中的移位加法模块对步骤S4中转换的数字信号进行移位以及累加操作;
步骤S6,辅助运算模块4根据控制模块5的位宽信号判断步骤S5中的移位加法模块是否完成正负权重的乘加运算,若未完成则返回步骤S2并重复上述过程,直至完成乘加运算形成累加结果;
步骤S7,数字减法器将步骤S6得到的累加结果进行相减从而得到最终结果。
实施例作用与效果
根据本实施例提供的可扩展的定点数矩阵乘加运算的存内计算设备,由于通过控制模块控制数据调度模块、辅助运算模块以及列译码器配合基于存储阵列的运算阵列进行定点数矩阵的乘加运算,是基于非冯诺依曼架构的存内计算,因此运算阵列能够对常用操作数进行存储,从而极大地减少数据搬移量,提高运算能效。本发明的存内计算设备,无需增加新的器件便可实现更大位宽的定点数矩阵乘法,具有极强的可扩展性,显著增大了定点数乘加运算的应用范围,能够广泛适用于神经网络、傅里叶变换等应用领域。
实施例中,由于运算阵列的存储单元采用二元存储单元,因此进一步地提高了本发明存内计算设备的可扩展性。
实施例中,由于将运算阵列的偶数列存储的无符号定点数表示正定点数,奇数列的无符号定点数表示负定点数,因此使得本发明能够通过二元存储单元实现正负定点数的计算。
实施例中,由于辅助运算模块具有辅助控制器,并且该辅助控制器能够在位宽增大时调整移位器以及累加器的工作周期,因此本发明能够完成可扩展性的定点数矩阵计算。
上述实施例仅用于举例说明本发明的具体实施方式,而本发明不限于上述实施例的描述范围。
实施例中,低比特模数转换模块由模数转换器构成。作为本发明的一个变体,低比特模数转换模块还可以由敏感放大器构成。若将模数转换器替换为敏感放大器,包括但不限于以下两种方案:方案一,使用多个敏感放大器和多个参考电流,单周期内输出多比特数字信号;方案二,使用一个敏感放大器和多个参考电流,多周期输出一个多比特数字信号。
实施例中,运算阵列由二元存储单元构成。作为本发明的一个变体,运算阵列还可以由多元存储单元构成。当使用多元存储单元替换二元存储单元时,数据调度模块、控制模块、和辅助运算模块均不需要改变。列译码器需要做出适当调整:此时,列译码器的输入为列地址信号,不再包括权重位宽信号,列选信号的位置由列地址信号决定,列选信号的个数为2(正负权重各需要一个列选信号)。
本发明实现的存内计算,所针对的存储器,包括但不限于通过高低阻值转换实现存储的非挥发存储器,例如阻变存储器(Resistive memory)、相变存储器(Phase-changememory)、铁电存储器(Ferroelectric mempry)等;还包括SRAM、FLASH等常规存储器。
Claims (9)
1.一种可扩展的定点数矩阵乘加运算的存内计算设备,其特征在于,包括:
数据调度模块,用于将输入的多比特定点数矩阵转换为多个单比特脉冲信号;
运算阵列,由M行N列的存储单元构成;
列译码器;
辅助运算模块,至少包括低比特模数转换模块、移位加法模块以及数字减法器;以及
控制模块,存储有配置信息,用于根据所述配置信息向所述数据调度模块、所述列译码器以及所述辅助运算模块发送配置信号从而适应不同位宽的数据运算,
其中,所述配置信息包括并行度以及数据位宽,
所述控制模块根据所述并行度向所述数据调度模块发送并行度信号,所述数据调度模块根据所述并行度信号决定所述运算阵列的有效行数并根据该有效行数将所述单比特脉冲信号按照时序发送至所述运算阵列的字线作为行选信号,
所述控制模块根据所述数据位宽向所述列译码器发送权重位宽信号以及列地址信号,所述列译码器根据所述权重位宽信号以及所述列地址信号输出列选信号,
所述运算阵列根据所述存储单元存储的权重数据以及所述行选信号在位线上产生相应的模拟运算电流,
所述辅助运算模块根据所述列选信号将所述运算阵列中相应位线的电流读入所述低比特模数转换模块,
所述低比特模数转换模块将所述模拟运算电流转换为数字信号并输出给所述移位加法模块,
所述移位加法模块对所述数字信号进行移位以及累加操作形成正负权重的累加结果,
所述数字减法器将所述累加结果进行相减从而形成最终结果。
2.根据权利要求1所述的可扩展的定点数矩阵乘加运算的存内计算设备,其特征在于:
其中,所述存储单元为二元存储单元,
在所述控制模块根据数据位宽向所述列译码器发送权重位宽信号以及列地址信号时,所述列译码器根据所述权重位宽信号以及所述列地址信号输出列选信号给所述运算阵列。
3.根据权利要求2所述的可扩展的定点数矩阵乘加运算的存内计算设备,其特征在于:
其中,所述运算阵列同时存储正定点数以及负定点数,
所述运算阵列的偶数列存储的无符号定点数表示正定点数,奇数列的无符号定点数表示负定点数,
所述运算阵列的相邻两列共用一个电源并获取运算电流,
每列所述二元存储单元具有单独的位线,用于汇总该列所有所述二元存储单元的总电流。
4.根据权利要求3所述的可扩展的定点数矩阵乘加运算的存内计算设备,其特征在于:
其中,所述移位加法模块对所述数字信号进行移位以及累加操作时,相邻多个所述偶数列所对应的所述数字信号被移位累加形成一个正权重的累加结果,相邻多个所述奇数列所对应的所述数字信号被移位累加形成一个负权重的累加结果,
所述数字减法器在将所述累加结果进行相减时,将所述正权重的累加结果减去负权重的累加结果从而形成所述最终结果。
5.根据权利要求1所述的可扩展的定点数矩阵乘加运算的存内计算设备,其特征在于:
其中,所述低比特模数转换模块由相互独立的多个模数转换器构成,所述移位加法模块包括移位器、累加器以及寄存器,
所述模数转换器将所述运算阵列输出的模拟运算电流转换为数字信号,
所述移位器对所述模数转换器的数字信号进行移位并将移位数据输出给所述累加器,
所述累加器对所述移位数据进行累加并在累加完成后将所述累加结果发送至所述数字减法器,
所述累加器的中间结果暂存在所述寄存器中。
6.根据权利要求5所述的可扩展的定点数矩阵乘加运算的存内计算设备,其特征在于:
其中,所述辅助运算模块还包括辅助控制器,
当所述多比特输入数据阵列的位宽增大时,所述控制模块根据所述数据位宽产生相应的位宽信号给所述辅助运算模块,所述辅助控制器根据所述位宽信号调整所述移位器以及所述累加器的工作周期。
7.根据权利要求1所述的可扩展的定点数矩阵乘加运算的存内计算设备,其特征在于:
其中,所述低比特模数转换模块由至少一个敏感放大器构成,所述敏感放大器的两个输入为参考电流和来自运算阵列的模拟电流,
当使用多个所述敏感放大器和多个参考电流时,所述低比特模数转换模块在单周期内输出多比特数字信号;
当使用一个所述敏感放大器和多个参考电流时,所述低比特模数转换模块在多周期输出一个多比特数字信号。
8.根据权利要求1所述的可扩展的定点数矩阵乘加运算的存内计算设备,其特征在于:
其中,所述存储单元为多元存储单元,
在所述控制模块根据数据位宽向所述列译码器发送权重位宽信号以及列地址信号时,所述列译码器仅根据所述列地址信号输出所述列选信号,该列选信号的个数为2。
9.一种可扩展的定点数矩阵乘加运算的存内计算方法,基于权利要求1至8所述的任意一种可扩展的定点数矩阵乘加运算的存内计算设备运行,其特征在于,包括如下步骤:
步骤S1,外部输入数据发送至数据调度模块;
步骤S2,所述数据调度模块将所述外部输入数据转换为多个单比特脉冲信号并根据控制模块生成的并行度信号将所述单比特脉冲信号发送给运算阵列作为所述运算阵列的行选信号;
步骤S3,所述运算阵列根据存储的权重数据和行选信号,在位线上产生相应的模拟运算电流并传输至辅助运算模块;
步骤S4,所述辅助运算模块根据所述列选信号将相应位线的所述模拟运算电流读入所述低比特模数转换模块,从而将所述模拟运算电流转换成数字信号;
步骤S5,所述辅助运算模块中的移位加法模块对所述数字信号进行移位以及累加操作;
步骤S6,所述辅助运算模块根据所述控制模块的位宽信号判断所述移位加法模块是否完成正负权重的乘加运算,若未完成则返回步骤S2并重复上述过程,直至完成所述乘加运算形成累加结果;
步骤S7,数字减法器将所述累加结果进行相减从而得到最终结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910734087.8A CN110427171B (zh) | 2019-08-09 | 2019-08-09 | 可扩展的定点数矩阵乘加运算的存内计算设备和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910734087.8A CN110427171B (zh) | 2019-08-09 | 2019-08-09 | 可扩展的定点数矩阵乘加运算的存内计算设备和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110427171A CN110427171A (zh) | 2019-11-08 |
CN110427171B true CN110427171B (zh) | 2022-10-18 |
Family
ID=68415224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910734087.8A Active CN110427171B (zh) | 2019-08-09 | 2019-08-09 | 可扩展的定点数矩阵乘加运算的存内计算设备和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110427171B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111079919B (zh) * | 2019-11-21 | 2022-05-20 | 清华大学 | 支持权重稀疏的存内计算架构及其数据输出方法 |
CN111880763B (zh) * | 2020-07-14 | 2022-12-02 | 安徽大学 | 一种在内存中实现带有正负数乘加的sram电路 |
TWI746126B (zh) | 2020-08-25 | 2021-11-11 | 創鑫智慧股份有限公司 | 矩陣乘法裝置及其操作方法 |
CN112487750B (zh) * | 2020-11-30 | 2023-06-16 | 西安微电子技术研究所 | 一种基于存内计算的卷积加速计算系统及方法 |
CN112711394B (zh) * | 2021-03-26 | 2021-06-04 | 南京后摩智能科技有限公司 | 基于数字域存内计算的电路 |
CN113378109B (zh) * | 2021-04-22 | 2023-09-12 | 浙江大学 | 一种基于存内计算的混合基快速傅里叶变换计算电路 |
US11561794B2 (en) | 2021-05-26 | 2023-01-24 | International Business Machines Corporation | Evicting and restoring information using a single port of a logical register mapper and history buffer in a microprocessor comprising multiple main register file entries mapped to one accumulator register file entry |
CN113419705A (zh) * | 2021-07-05 | 2021-09-21 | 南京后摩智能科技有限公司 | 存内乘加计算电路、芯片、计算装置 |
CN113672855A (zh) * | 2021-08-25 | 2021-11-19 | 恒烁半导体(合肥)股份有限公司 | 一种存内运算方法、装置及其应用 |
CN113672854B (zh) * | 2021-08-25 | 2024-02-06 | 恒烁半导体(合肥)股份有限公司 | 一种基于电流镜和存储单元的存内运算方法、装置及其应用 |
CN113743600B (zh) * | 2021-08-26 | 2022-11-11 | 南方科技大学 | 适用于多精度神经网络的存算一体架构脉动阵列设计方法 |
CN113971971B (zh) * | 2021-12-22 | 2022-05-20 | 中科南京智能技术研究院 | 一种带正负计算的存内计算单元、阵列及装置 |
CN114546335B (zh) * | 2022-04-25 | 2022-07-05 | 中科南京智能技术研究院 | 一种多比特输入与多比特权重乘累加的存内计算装置 |
WO2023240578A1 (zh) * | 2022-06-17 | 2023-12-21 | 北京大学 | 应用于神经网络的存内计算架构的操作方法、装置和设备 |
CN115019856B (zh) * | 2022-08-09 | 2023-05-16 | 之江实验室 | 一种基于rram多值存储的存内计算方法与系统 |
CN115658013B (zh) * | 2022-09-30 | 2023-11-07 | 杭州智芯科微电子科技有限公司 | 向量乘加器的rom存内计算装置和电子设备 |
CN115658011B (zh) * | 2022-09-30 | 2023-11-28 | 杭州智芯科微电子科技有限公司 | 向量乘加器的sram存内计算装置和电子设备 |
CN115756388B (zh) * | 2023-01-06 | 2023-04-18 | 上海后摩智能科技有限公司 | 多模式存算一体电路、芯片及计算装置 |
CN115879530B (zh) * | 2023-03-02 | 2023-05-05 | 湖北大学 | 一种面向rram存内计算系统阵列结构优化的方法 |
CN117077726B (zh) * | 2023-10-17 | 2024-01-09 | 之江实验室 | 一种生成存内计算神经网络模型的方法、装置及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103123806A (zh) * | 2011-11-20 | 2013-05-29 | 复旦大学 | Dram的列选择信号的控制电路及包括其的存取存储器 |
CN103544984A (zh) * | 2012-07-11 | 2014-01-29 | 三星电子株式会社 | 磁性随机存取存储器 |
CN105103234A (zh) * | 2012-11-20 | 2015-11-25 | 查尔斯·I·派德尔 | 固态驱动器体系结构 |
CN108462496A (zh) * | 2018-04-24 | 2018-08-28 | 成都吉纬科技有限公司 | 一种基于随机比特流更新的ldpc译码器 |
CN108551384A (zh) * | 2018-03-26 | 2018-09-18 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 吉比特率量级并行编码与调制的无线数据传输方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512724B (zh) * | 2015-12-01 | 2017-05-10 | 中国科学院计算技术研究所 | 加法器装置、数据累加方法及数据处理装置 |
JP6271655B1 (ja) * | 2016-08-05 | 2018-01-31 | 株式会社東芝 | 不揮発性メモリ |
-
2019
- 2019-08-09 CN CN201910734087.8A patent/CN110427171B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103123806A (zh) * | 2011-11-20 | 2013-05-29 | 复旦大学 | Dram的列选择信号的控制电路及包括其的存取存储器 |
CN103544984A (zh) * | 2012-07-11 | 2014-01-29 | 三星电子株式会社 | 磁性随机存取存储器 |
CN105103234A (zh) * | 2012-11-20 | 2015-11-25 | 查尔斯·I·派德尔 | 固态驱动器体系结构 |
CN108551384A (zh) * | 2018-03-26 | 2018-09-18 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 吉比特率量级并行编码与调制的无线数据传输方法 |
CN108462496A (zh) * | 2018-04-24 | 2018-08-28 | 成都吉纬科技有限公司 | 一种基于随机比特流更新的ldpc译码器 |
Non-Patent Citations (2)
Title |
---|
"Recryptor: A Reconfigurable Cryptographic Cortex-M0 Processor With In-Memory and Near-Memory Computing for IoT Security";Yiqun Zhang 等;《IEEE Journal of Solid-State Circuits》;20180205;第995-1005页 * |
"基于新型忆阻器的存内计算";林钰登 等;《微纳电子与智能制造》;20190630;第1卷(第2期);第35-46页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110427171A (zh) | 2019-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110427171B (zh) | 可扩展的定点数矩阵乘加运算的存内计算设备和方法 | |
Sun et al. | Fully parallel RRAM synaptic array for implementing binary neural network with (+ 1,− 1) weights and (+ 1, 0) neurons | |
CN109800876B (zh) | 一种基于NOR Flash模块的神经网络的数据运算方法 | |
Peng et al. | Optimizing weight mapping and data flow for convolutional neural networks on processing-in-memory architectures | |
Patil et al. | An MRAM-based deep in-memory architecture for deep neural networks | |
JP2023513129A (ja) | インメモリ計算のためのスケーラブルなアレイアーキテクチャ | |
Jiang et al. | A two-way SRAM array based accelerator for deep neural network on-chip training | |
CN112181895B (zh) | 可重构架构、加速器、电路部署和计算数据流方法 | |
CN112636745B (zh) | 逻辑单元、加法器以及乘法器 | |
CN115390789A (zh) | 基于磁隧道结计算单元的模拟域全精度存内计算电路及方法 | |
CN113936717B (zh) | 一种复用权重的存算一体电路 | |
Liu et al. | An energy-efficient mixed-bit cnn accelerator with column parallel readout for reram-based in-memory computing | |
Zhu et al. | Mnsim 2.0: A behavior-level modeling tool for processing-in-memory architectures | |
Peng et al. | Inference engine benchmarking across technological platforms from CMOS to RRAM | |
Sridharan et al. | X-former: In-memory acceleration of transformers | |
CN114115797A (zh) | 存储器内运算装置 | |
KR20240025540A (ko) | 깊이별 콘볼루션을 위한 메모리 아키텍처에서의 컴퓨테이션 | |
CN115879530A (zh) | 一种面向rram存内计算系统阵列结构优化的方法 | |
CN116543808A (zh) | 一种基于sram单元的全数字域存内近似计算电路 | |
Wang et al. | Deep neural network mapping and performance analysis on tiled rram architecture | |
CN113658625A (zh) | 基于1t1r阵列的可重构状态逻辑操作电路及方法 | |
Guo et al. | VCCIM: a voltage coupling based computing-in-memory architecture in 28 nm for edge AI applications | |
CN115658013B (zh) | 向量乘加器的rom存内计算装置和电子设备 | |
CN115658012B (zh) | 向量乘加器的sram模拟存内计算装置和电子设备 | |
CN115658011B (zh) | 向量乘加器的sram存内计算装置和电子设备 |
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 |