CN111988031B - 一种忆阻存内矢量矩阵运算器及运算方法 - Google Patents

一种忆阻存内矢量矩阵运算器及运算方法 Download PDF

Info

Publication number
CN111988031B
CN111988031B CN202010889956.7A CN202010889956A CN111988031B CN 111988031 B CN111988031 B CN 111988031B CN 202010889956 A CN202010889956 A CN 202010889956A CN 111988031 B CN111988031 B CN 111988031B
Authority
CN
China
Prior art keywords
decimal
point
floating
matrix
vector
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
Application number
CN202010889956.7A
Other languages
English (en)
Other versions
CN111988031A (zh
Inventor
李祎
李健聪
缪向水
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN202010889956.7A priority Critical patent/CN111988031B/zh
Publication of CN111988031A publication Critical patent/CN111988031A/zh
Application granted granted Critical
Publication of CN111988031B publication Critical patent/CN111988031B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种忆阻存内矢量矩阵运算器及运算方法,包括:输入拆分单元、十进制乘法单元和外部累加单元;其中,十进制乘法单元有多个,且均包括忆阻器阵列;各十进制乘法单元并行连接;输入拆分单元的输出端分别与各十进制乘法单元的输入端相连,各十进制乘法单元的输出端均与外部累加单元的输入端相连。通过对输入的浮点数矢量和浮点数矩阵中的浮点数按位进行拆分,实现对浮点数的高精度映射,可以在没有精度损失的前提下执行浮点数的矢量‑矩阵运算,有效的降低忆阻器件非理想效应对计算结果的影响,实现浮点数的高精度计算。另外,由于采用十进制映射的方式,本发明所需的器件数量较少,电路面积开销也较小。

Description

一种忆阻存内矢量矩阵运算器及运算方法
技术领域
本发明属于模拟电路领域,更具体地,涉及一种忆阻存内矢量矩阵运算器及运算方法。
背景技术
由于具有高能效、低延时、低运算时间复杂度的特点,基于忆阻器的存内矢量-矩阵运算在数据密集型任务中已经取得了广泛的应用,基于忆阻器阵列构筑的神经网络已经展示了存内计算方式相比其传统数值计算机在能效上的巨大优势。然而,同样作为一种数据密集型任务,基于忆阻器的存算一体化技术在执行数值计算加速时,面临着不小的挑战,由于忆阻器阵列执行的矢量-矩阵运算是一种模拟式运算方式,受到忆阻器件非理想效应和阵列非理想效应的影响,基于单一忆阻阵列的矢量-矩阵运算只能提供低精度运算结果,无法满足数值计算任务的苛刻需求。
现有的高精度存内矢量-矩阵运算单元采用二进制浮点格式进行运算,以浮点数0.5为例,由于可以将其进一步表示为1/2,故实现其二进制精确表示,但是像0.3的这种类型的浮点数,由于无法表示成2的幂次或者2的幂次的组合,无法用二进制精确表示;故采用二进制映射的方式事实上是不精准的。同时,对于32位的浮点数运算,由于计算机中全精度二进制计算在32位浮点表示下有一位隐藏位,而阵列映射无法体现隐藏位,故即使能够精确映射32位浮点数,也无法实现全精度的浮点运算。故现有的高精度存内矢量-矩阵运算单元无法实现对浮点数的精准映射和全精度计算。另外,这种采用二进制浮点格式进行运算的方式,为了精确的映射二进制数据,比如2,在4位二进制数表示下即为0010,那么就需要4个器件来映射一个数据,相应的,如果需要执行32bit的浮点运算,一个数据就需要32个器件,若数据需要64位扩展格式,需要的器件个数则进一步增加,电路面积开销较大。因而迫切的需要一种新的高精度存内矢量-矩阵运算单元执行高精度浮点数的矢量-矩阵乘法运算。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种忆阻存内矢量矩阵运算器及运算方法,其目的在于由此解决现有技术无法对浮点数执行高精度计算的技术问题。
为实现上述目的,第一方面,本发明提供了一种忆阻存内矢量矩阵运算器,包括:输入拆分单元、十进制乘法单元和外部累加单元;其中,十进制乘法单元有多个,且均包括忆阻器阵列;各十进制乘法单元并行连接,输入拆分单元的输出端分别与各十进制乘法单元的输入端相连,各十进制乘法单元的输出端均与外部累加单元的输入端相连;
输入拆分单元用于将输入的浮点数矢量和浮点数矩阵中的各浮点数位数分别进行统一后按位进行拆分,得到N个十进制矢量和M个十进制矩阵;将M个十进制矩阵分别写入到M个十进制乘法单元的忆阻器阵列后,将每一个十进制矢量依次并行的输入到上述M个十进制乘法单元的忆阻器阵列中;其中,M为浮点数矩阵中浮点数的位数,N为浮点数矢量中浮点数的位数,M小于或等于十进制乘法单元的个数;十进制矩阵的行数小于或等于忆阻器阵列的行数,列数小于或等于忆阻器阵列的列数;
十进制乘法单元用于基于忆阻器阵列实现十进制矢量与十进制矩阵的乘法运算,并将运算结果输入到外部累加单元中;
外部累加单元用于将所得各乘法运算结果分别与对应的补偿系数相乘后进行累加,所得结果即为浮点数矢量和浮点数矩阵的乘法运算结果。
进一步优选地,上述忆阻器阵列为十字交叉结构,忆阻器处于阵列的十字交叉点上;上述忆阻器阵列的大小为X×Y,相邻两列连接到一个电压减法器上形成差分结构;其中,X为正整数,Y为偶数;
对于大小为K×L的十进制矩阵,将其存入到上述忆阻器阵列的前K行和前2L列中;十进制矩阵中第k行l列的元素为忆阻器阵列中第k行2l-1列的电导值与第k行2l列的电导值之差,其中,k=1,2,…,K,l=1,2,…,L,K≤X,2L≤Y。
进一步优选地,上述忆阻器阵列为十字交叉结构,忆阻器处于阵列的十字交叉点上;上述忆阻器阵列的大小为X×(Y+1),其中一列作为参考列,其余列分别与该参考列连接到一个电压减法器上形成差分结构;其中,X、Y为正整数;
对于大小为K×L的十进制矩阵,将其存入到上述忆阻器阵列的前K行和前L列中;参考列为忆阻器阵列的第p列;十进制矩阵中第k行l列的元素为忆阻器阵列中第k行l列的电导值与第k行p列的电导值之差,其中,k=1,2,…,K,l=1,2,…,L,K≤X,L≤Y。
进一步优选地,上述忆阻器阵列中的忆阻器具有至少10个不同的电导阶态,用于映射数值0~9;上述忆阻器阵列可映射-9~+9的十进制数值。
进一步优选地,十进制乘法单元还包括控制器、数模转换器和模数转化器;
控制器用于选通上述忆阻器阵列中对应的行和列,控制忆阻器阵列的输入和输出;
在执行乘法运算时,数模转换器将输入拆分单元输入的数据转换为电压矢量,输入到忆阻器阵列中执行乘法运算,忆阻器阵列输出的电流矢量经模数转换器后转换为数据量,即为乘法运算结果,输出到外部累加单元中。
第二方面,本发明提供了一种基于第一方面所提供的忆阻存内矢量矩阵运算器的忆阻存内矢量矩阵运算方法,包括以下步骤:
S1、将输入的浮点数矩阵中的各浮点数位数进行统一后,按位进行拆分,得到M个十进制矩阵,并分别写入到M个忆阻器阵列中;
S2、将输入的浮点数矢量中的各浮点数位数进行统一后,按位进行拆分,得到N个十进制矢量,并将每一个十进制矢量依次并行的输入到上述M个忆阻器阵列中,实现十进制矢量与各十进制矩阵的乘法运算,得到M×N个乘法运算结果;
S3、将所得各乘法运算结果分别与对应的补偿系数相乘后进行累加,所得结果即为浮点数矢量和浮点数矩阵的乘法运算结果。
进一步优选地,将位数统一后的浮点数矩阵
Figure BDA0002656602110000041
中的各浮点数按位进行拆分,得到
Figure BDA0002656602110000042
这M个十进制矩阵,分别与浮点数的位数相对应。
进一步优选地,将位数统一后的浮点数矢量
Figure BDA0002656602110000043
中的各浮点数按位进行拆分,得到
Figure BDA0002656602110000044
这N个十进制矢量,分别与浮点数的位数相对应。
进一步优选地,记十进制矢量中浮点数的小数点位于第r和第r+1位之间,十进制矩阵中浮点数的小数点位于第s和第s+1位之间,则浮点数的第n位对应的十进制矢量与浮点数的第m位对应的十进制矩阵相乘后结果的补偿系数为10r-m·10s-n,其中,1≤m≤M,1≤n≤N。
进一步优选地,上述M和N的取值可调,分别对应浮点数矩阵和浮点数矢量中浮点数的有效位的个数,以满足不同的数值计算任务对精度的需求;
对浮点数矩阵中的各浮点数位数进行统一的方法为:对浮点数矩阵中的各浮点数,若小数点之前的位数小于各浮点数中小数点之前的最长位数Q1,则在小数点之前的最高位进行补0,使小数点之前的位数均相等;若小数点之后的位数小于M-Q1,则在小数点之后的最低位进行补0,使小数点之后的位数均相等;若小数点之后的位数大于M-Q1,则从小数点之后的最低位开始删除相应的位数,使小数点之后的位数均为M-Q1;
对浮点数矢量中的各浮点数位数进行统一的方法为:对浮点数矢量中的各浮点数,若小数点之前的位数小于各浮点数中小数点之前的最长位数Q2,则在小数点之前的最高位进行补0,使小数点之前的位数均相等;若小数点之后的位数小于N-Q2,则在小数点之后的最低位进行补0,使小数点之后的位数均相等;若小数点之后的位数大于N-Q2,则从小数点之后的最低位开始删除相应的位数,使小数点之后的位数均为N-Q2。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
1、本发明提供了一种忆阻存内矢量矩阵运算器及运算方法,通过对输入的浮点数矢量和浮点数矩阵中的浮点数按位进行拆分,实现对浮点数的高精度映射,有效的降低了忆阻器件非理想效应对计算结果的影响,可以在没有精度损失的前提下执行浮点数的矢量-矩阵运算,实现浮点数的高精度计算。
2、本发明所提供的一种忆阻存内矢量矩阵运算器及运算方法,可通过控制拆分位的大小,即在对浮点数矢量和浮点数矩阵中的各浮点数位数进行统一时,通过控制浮点数有效位的个数,来平衡运算精度与运算时间。本发明既可以执行高精度浮点计算也可以执行低精度浮点计算,可满足不同的数值计算任务对精度的需求。
3、本发明所提供的一种忆阻存内矢量矩阵运算器,由于采用十进制映射的方式,相比于现有的二进制映射方式,映射相同的数据所需的器件数量大大减少,因此映射所需要的阵列面积也大大较小,电路面积开销较小,使得全系统的面积效率大幅提升。
附图说明
图1是本发明实施例1所提供的一种忆阻存内矢量矩阵运算器的结构示意图;
图2是本发明实施例1所提供的忆阻器阵列的结构示意图;
图3是本发明实施例1所提供的采用图2所示忆阻器阵列实现的十进制矢量与十进制矩阵乘法运算的示意图;
图4是本发明实施例1所提供的十进制乘法单元的结构示意图;
图5是本发明实施例2所提供的一种忆阻存内矢量矩阵运算方法流程图;
图6是本发明实施例2所提供的浮点数矩阵的拆分过程示意图;
图7是本发明实施例2所提供的浮点数矢量的拆分过程示意图;
图8是本发明实施例2所提供的实现浮点数矢量与浮点数矩阵乘法运算的过程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1、
一种忆阻存内矢量矩阵运算器,如图1所示,包括:输入拆分单元、十进制乘法单元和外部累加单元;其中,十进制乘法单元有M个,且均包括忆阻器阵列;各十进制乘法单元并行连接,输入拆分单元的输出端分别与各十进制乘法单元的输入端相连,各十进制乘法单元的输出端均与外部累加单元的输入端相连;
输入拆分单元用于将输入的浮点数矢量和浮点数矩阵中的各浮点数位数分别进行统一后按位进行拆分,得到N个十进制矢量和M个十进制矩阵;将M个十进制矩阵分别写入到M个十进制乘法单元的忆阻器阵列后,将每一个十进制矢量依次并行的输入到上述M个十进制乘法单元的忆阻器阵列中;其中,M为浮点数矩阵中浮点数的位数,N为浮点数矢量中浮点数的位数;十进制矩阵的行数小于或等于忆阻器阵列的行数,列数小于或等于忆阻器阵列的列数;M和N的取值可调,分别对应浮点数矩阵和浮点数矢量中浮点数的有效位的个数,以满足不同的数值计算任务对精度的需求;这里M和N可以通过权衡运算精度与运算时间后确定,在精度要求相对较低时,可以舍弃掉浮点数的最后几位,适当的减小N的取值,降低运算延时。需要说明的是,本实施例中将浮点数矩阵和浮点数矢量中的各浮点数位数分别进行统一,并使小数点之前位数均相等,小数点之后的位数也均相等。具体的,对浮点数矩阵中的各浮点数位数进行统一的方法为:对浮点数矩阵中的各浮点数,若小数点之前的位数小于各浮点数中小数点之前的最长位数Q1,则在小数点之前的最高位进行补0,使小数点之前的位数均相等;若小数点之后的位数小于M-Q1,则在小数点之后的最低位进行补0,使小数点之后的位数均相等;若小数点之后的位数大于M-Q1,则从小数点之后的最低位开始删除相应的位数,使小数点之后的位数均为M-Q1。对浮点数矢量中的各浮点数位数进行统一的方法为:对浮点数矢量中的各浮点数,若小数点之前的位数小于各浮点数中小数点之前的最长位数Q2,则在小数点之前的最高位进行补0,使小数点之前的位数均相等;若小数点之后的位数小于N-Q2,则在小数点之后的最低位进行补0,使小数点之后的位数均相等;若小数点之后的位数大于N-Q2,则从小数点之后的最低位开始删除相应的位数,使小数点之后的位数均为N-Q2。在本实施例中,为实现高精度运算,位数M取值为浮点数矩阵各浮点数中小数点之前最长的位数与小数点之后最长的位数之和,位数N取值为浮点数矢量各浮点数中小数点之前最长的位数与小数点之后最长的位数之和。通过在最高位进行补0将各浮点数小数点之前的位数统一为小数点之前的最长位数,通过在最低位进行补0将各浮点数小数点之后的位数统一为小数点之后的最长位数。需要进一步说明的是,上述浮点数矩阵经过拆分后所得的十进制矩阵个数小于或等于十进制乘法单元的个数,本实施例中,十进制矩阵个数与十进制乘法单元的个数相等,均为M。
十进制乘法单元用于基于忆阻器阵列实现十进制矢量与十进制矩阵的乘法运算,并将运算结果输入到外部累加单元中;具体的,忆阻器阵列具有执行矢量-矩阵乘法的能力。本发明中忆阻器阵列为十字交叉结构,具有多阶可调电导特征的忆阻器处于阵列的十字交叉点上。为了同时实现对正数和负数的映射,本发明将忆阻器阵列与电压减法器进行结合形成差分结果。具体实现如下:(1)忆阻器阵列的大小为X×Y,相邻两列连接到一个电压减法器上形成差分结构;其中,X为正整数,Y为偶数;对于大小为K×L的十进制矩阵,将其存入到上述忆阻器阵列的前K行和前2L列中;十进制矩阵中第k行l列的元素为忆阻器阵列中第k行2l-1列的电导值与第k行2l列的电导值之差,其中,k=1,2,…,K,l=1,2,…,L,K≤X,2L≤Y。(2)忆阻器阵列的大小为X×(Y+1),其中一列作为参考列,其余列分别与该参考列连接到一个电压减法器上形成差分结构;其中,X、Y为正整数;对于大小为K×L的十进制矩阵,将其存入到上述忆阻器阵列的前K行和前L列中;参考列为忆阻器阵列的第p列;十进制矩阵中第k行l列的元素为忆阻器阵列中第k行l列的电导值与第k行p列的电导值之差,其中,k=1,2,…,K,l=1,2,…,L,K≤X,L≤Y。需要说明的是,上述忆阻器阵列中的忆阻器具有至少10个不同的电导阶态,用于映射数值0~9,故上述忆阻器阵列可映射-9~+9的十进制数值。本实施例选用第一种实现方式,如图2所示,为了能够对负数进行映射,本实施例将每相邻的两列构成一个差分对,差分对中左侧一列为“+”,与电压减法器的正输入端相连;右侧一列为“-”,与电压减法器的负输入端相连。该忆阻器阵列具有一个行输入端和一个列输出端,分别输入电压信号输出电流信号。进一步地,忆阻器阵列执行矢量-矩阵乘法的过程如图3所示,在执行矢量-矩阵乘法操作时,将数值矢量映射为电压矢量施加在忆阻器阵列的输入端,将十进制矩阵映射为电导存储在忆阻器阵列中,对于大小为K×L的十进制矩阵A,其中第k行l列的元素akl在忆阻阵列中的存储方式为
Figure BDA0002656602110000091
l=1,2,…,L。当进行矢量矩阵乘法运算时,对于输入矢量,对应成电压后从忆阻器阵列的行进行输入,根据欧姆定律i=u·g,即对于忆阻阵列中的每一个单元都会得到一个电流量,而根据基尔霍夫电流定律,阵列的每一列的输出电流是这一列上每一个单元的电流之和,则每一列的输出电流为
Figure BDA0002656602110000092
由此可在列线上得到一系列输出的电流,这些电流就构成了电流矢量,由此忆阻器阵列完成了一次基于模拟量的矢量矩阵乘法。进一步的,需要说明的是,上述十进制乘法单元还包括控制器、数模转换器和模数转化器,具体结构如图4所示,其中,控制器用于选通上述忆阻器阵列中对应的行和列,控制忆阻器阵列的输入和输出。在执行矢量-矩阵乘法运算时,数模转换器将输入拆分单元输入的数据转换为电压矢量,输入到忆阻器阵列中执行乘法运算,忆阻器阵列输出的电流矢量经模数转换器后转换为数据量,即为乘法运算结果,输出到外部累加单元中。
外部累加单元用于将所得各乘法运算结果分别与对应的补偿系数相乘后进行累加,所得结果即为浮点数矢量和浮点数矩阵的乘法运算结果。具体的,记十进制矢量中浮点数的小数点位于第r和第r+1位之间,十进制矩阵中浮点数的小数点位于第s和第s+1位之间,则浮点数的第n位对应的十进制矢量与浮点数的第m位对应的十进制矩阵相乘后结果的补偿系数为10r-m·10s-n,其中,1≤m≤M,1≤n≤N。
实施例2、
一种基于实施例1所提供的忆阻存内矢量矩阵运算器的忆阻存内矢量矩阵运算方法,如图5所示,包括以下步骤:
S1、将输入的浮点数矩阵中的各浮点数位数进行统一后,按位进行拆分,得到M个十进制矩阵,并分别写入到M个忆阻器阵列中;
具体的,本实施例中的忆阻器阵列与实施例1相同,这里不再赘述。按照实施例1中对应的方式将浮点数矩阵中的各浮点数位数统一为M位后按位进行拆分。以小数点之前的位数为1(即最高位为个位)为例,如图6所示,将位数统一后的浮点数矩阵
Figure BDA0002656602110000101
中的各浮点数按位进行拆分,得到
Figure BDA0002656602110000102
这M个十进制矩阵,分别与浮点数的位数相对应;其中,第一个十进制矩阵仅包含原浮点数矩阵的个位,第二个十进制矩阵仅包含原浮点数矩阵的十分之一位,第三个十进制矩阵仅包含原浮点数矩阵的百分之一位,以此类推,直至完成原浮点数矩阵的拆分,得到M个十进制矩阵。
S2、将输入的浮点数矢量中的各浮点数位数进行统一后,按位进行拆分,得到N个十进制矢量,并将每一个十进制矢量依次并行的输入到上述M个忆阻器阵列中,实现十进制矢量与各十进制矩阵的乘法运算,得到M×N个乘法运算结果;
具体的,同样按照实施例1中对应的方式将浮点数矢量中的各浮点数位数统一为N位后按位进行拆分。以小数点之前的位数为1(即最高位为个位)为例,如图7所示,将位数统一后的浮点数矢量
Figure BDA0002656602110000111
中的各浮点数按位进行拆分,得到
Figure BDA0002656602110000112
这N个十进制矢量,分别与浮点数的位数相对应;其中,第一个十进制矢量仅包含原浮点数矢量的个位,第二个十进制矢量仅包含原浮点数矢量的十分之一位,第三个十进制矢量仅包含原浮点数矢量的百分之一位,以此类推,直至完成原浮点数矢量的拆分过程,得到N个十进制矢量。
S3、将所得各乘法运算结果分别与对应的补偿系数相乘后进行累加,所得结果即为浮点数矢量和浮点数矩阵的乘法运算结果。
具体的,记十进制矢量中浮点数的小数点位于第r和第r+1位之间,十进制矩阵中浮点数的小数点位于第s和第s+1位之间,则浮点数的第n位对应的十进制矢量与浮点数的第m位对应的十进制矩阵相乘后结果的补偿系数为10r-m·10s-n,其中,1≤m≤M,1≤n≤N。具体的过程如图8所示,上述十进制矢量按照1~N的顺序依次并行输入到各忆阻器阵列中,每个十进制矢量均与M个十进制矩阵执行矢量-矩阵乘法,则共得到M×N个输出,每个输出编号为(m,n),本实施例使用的浮点数矢量与浮点数矩阵中的各浮点数小数点之前的位数为1,即最高位为100,r、s均为1,故每一个输出得到的补偿为101-m·101-n。最后将这些输出进行总和,得到浮点数矢量和浮点数矩阵的乘法运算结果。
需要说明的是,在上述过程中,可以通过控制M与N的大小兼顾高精度运算与低精度运算,即在对浮点数矢量和浮点数矩阵中的各浮点数位数进行统一时,通过控制浮点数有效位的个数,来平衡运算精度与运算时间。本发明既可以执行高精度浮点计算也可以执行低精度浮点计算,以满足不同的数值计算任务对精度的需求。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种忆阻存内矢量矩阵运算器,其特征在于,包括:输入拆分单元、十进制乘法单元和外部累加单元;
所述十进制乘法单元有多个,且均包括忆阻器阵列;所述忆阻器阵列中的忆阻器具有至少10个不同的电导阶态,用于映射数值0~9;所述忆阻器阵列映射-9~+9的十进制数值;各十进制乘法单元并行连接;所述输入拆分单元的输出端分别与各十进制乘法单元的输入端相连,各十进制乘法单元的输出端均与所述外部累加单元的输入端相连;
所述输入拆分单元用于将输入的浮点数矢量和浮点数矩阵中的各浮点数位数分别进行统一后按位进行拆分,得到N个十进制矢量和M个十进制矩阵;将M个十进制矩阵分别写入到M个十进制乘法单元的忆阻器阵列后,将每一个十进制矢量依次并行的输入到所述M个十进制乘法单元的忆阻器阵列中;其中,M为所述浮点数矩阵中浮点数的位数,N为所述浮点数矢量中浮点数的位数,M小于或等于所述十进制乘法单元的个数;所述十进制矩阵的行数小于或等于忆阻器阵列的行数,列数小于或等于忆阻器阵列的列数;
所述十进制乘法单元用于基于忆阻器阵列实现十进制矢量与十进制矩阵的乘法运算,并将运算结果输入到所述外部累加单元中;
所述外部累加单元用于将所得各乘法运算结果分别与对应的补偿系数相乘后进行累加,所得结果即为所述浮点数矢量和所述浮点数矩阵的乘法运算结果。
2.根据权利要求1所述的忆阻存内矢量矩阵运算器,其特征在于,所述忆阻器阵列为十字交叉结构,忆阻器处于阵列的十字交叉点上;所述忆阻器阵列的大小为X×Y,相邻两列连接到一个电压减法器上形成差分结构;其中,X为正整数,Y为偶数;
对于大小为K×L的十进制矩阵,将其存入到所述忆阻器阵列的前K行和前2L列中;所述十进制矩阵中第k行l列的元素为忆阻器阵列中第k行2l-1列的电导值与第k行2l列的电导值之差,其中,k=1,2,…,K,l=1,2,…,L,K≤X,2L≤Y。
3.根据权利要求1所述的忆阻存内矢量矩阵运算器,其特征在于,所述忆阻器阵列为十字交叉结构,忆阻器处于阵列的十字交叉点上;所述忆阻器阵列的大小为X×(Y+1),其中一列作为参考列,其余列分别与该参考列连接到一个电压减法器上形成差分结构;其中,X、Y为正整数;
对于大小为K×L的十进制矩阵,将其存入到所述忆阻器阵列的前K行和前L列中;参考列为忆阻器阵列的第p列;十进制矩阵中第k行l列的元素为忆阻器阵列中第k行l列的电导值与第k行p列的电导值之差,其中,k=1,2,…,K,l=1,2,…,L,K≤X,L≤Y。
4.根据权利要求1-3任意一项所述的忆阻存内矢量矩阵运算器,其特征在于,所述十进制乘法单元还包括控制器、数模转换器和模数转换器;
所述控制器用于选通忆阻器阵列中对应的行和列,控制忆阻器阵列的输入和输出;
在执行乘法运算时,所述数模转换器将所述输入拆分单元输入的数据转换为电压矢量,输入到忆阻器阵列中执行乘法运算,忆阻器阵列输出的电流矢量经所述模数转换器后转换为数据量,即为乘法运算结果,输出到所述外部累加单元中。
5.一种基于权利要求1-4任意一项所述的忆阻存内矢量矩阵运算器的忆阻存内矢量矩阵运算方法,其特征在于,包括以下步骤:
S1、将输入的浮点数矩阵中的各浮点数位数进行统一后,按位进行拆分,得到M个十进制矩阵,并分别写入到M个忆阻器阵列中;
S2、将输入的浮点数矢量中的各浮点数位数进行统一后,按位进行拆分,得到N个十进制矢量,并将每一个十进制矢量依次并行的输入到所述M个忆阻器阵列中,实现十进制矢量与各十进制矩阵的乘法运算,得到M×N个乘法运算结果;
S3、将所得各乘法运算结果分别与对应的补偿系数相乘后进行累加,所得结果即为浮点数矢量和浮点数矩阵的乘法运算结果。
6.根据权利要求5所述的忆阻存内矢量矩阵运算方法,其特征在于,将位数统一后的浮点数矩阵
Figure FDA0003580807950000031
中的各浮点数按位进行拆分,得到
Figure FDA0003580807950000032
这M个十进制矩阵,分别与浮点数的位数相对应。
7.根据权利要求5所述的忆阻存内矢量矩阵运算方法,其特征在于,将位数统一后的浮点数矢量
Figure FDA0003580807950000033
中的各浮点数按位进行拆分,得到
Figure FDA0003580807950000034
这N个十进制矢量,分别与浮点数的位数相对应。
8.根据权利要求5所述的忆阻存内矢量矩阵运算方法,其特征在于,记所述十进制矢量中浮点数的小数点位于第r和第r+1位之间,所述十进制矩阵中浮点数的小数点位于第s和第s+1位之间,则浮点数的第n位对应的十进制矢量与浮点数的第m位对应的十进制矩阵相乘后结果的补偿系数为10r-m·10s-n,其中,1≤m≤M,1≤n≤N。
9.根据权利要求5-8任意一项所述的忆阻存内矢量矩阵运算方法,其特征在于,所述M和N的取值可调,分别对应浮点数矩阵和浮点数矢量中浮点数的有效位的个数,以满足不同的数值计算任务对精度的需求;
对所述浮点数矩阵中的各浮点数位数进行统一的方法为:对所述浮点数矩阵中的各浮点数,若小数点之前的位数小于各浮点数中小数点之前的最长位数Q1,则在小数点之前的最高位进行补0,使小数点之前的位数均相等;若小数点之后的位数小于M-Q1,则在小数点之后的最低位进行补0,使小数点之后的位数均相等;若小数点之后的位数大于M-Q1,则从小数点之后的最低位开始删除相应的位数,使小数点之后的位数均为M-Q1;
对所述浮点数矢量中的各浮点数位数进行统一的方法为:对所述浮点数矢量中的各浮点数,若小数点之前的位数小于各浮点数中小数点之前的最长位数Q2,则在小数点之前的最高位进行补0,使小数点之前的位数均相等;若小数点之后的位数小于N-Q2,则在小数点之后的最低位进行补0,使小数点之后的位数均相等;若小数点之后的位数大于N-Q2,则从小数点之后的最低位开始删除相应的位数,使小数点之后的位数均为N-Q2。
CN202010889956.7A 2020-08-28 2020-08-28 一种忆阻存内矢量矩阵运算器及运算方法 Active CN111988031B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010889956.7A CN111988031B (zh) 2020-08-28 2020-08-28 一种忆阻存内矢量矩阵运算器及运算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010889956.7A CN111988031B (zh) 2020-08-28 2020-08-28 一种忆阻存内矢量矩阵运算器及运算方法

Publications (2)

Publication Number Publication Date
CN111988031A CN111988031A (zh) 2020-11-24
CN111988031B true CN111988031B (zh) 2022-05-20

Family

ID=73440751

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010889956.7A Active CN111988031B (zh) 2020-08-28 2020-08-28 一种忆阻存内矢量矩阵运算器及运算方法

Country Status (1)

Country Link
CN (1) CN111988031B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112487750B (zh) * 2020-11-30 2023-06-16 西安微电子技术研究所 一种基于存内计算的卷积加速计算系统及方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1122024A (zh) * 1994-08-15 1996-05-08 张胤微 一种任意字长、任意精度的乘法运算方法及乘法器
CN102073473A (zh) * 2009-11-20 2011-05-25 杨军 基于fpga的十进制浮点乘法器设计
CN108665061A (zh) * 2017-03-28 2018-10-16 华为技术有限公司 数据处理装置和用于卷积计算的计算设备
CN108780492A (zh) * 2016-02-08 2018-11-09 斯佩罗设备公司 模拟协处理器
CN109344964A (zh) * 2018-08-08 2019-02-15 东南大学 一种适用于神经网络的乘加计算方法和计算电路
CN110276447A (zh) * 2018-03-14 2019-09-24 上海寒武纪信息科技有限公司 一种计算装置及方法
CN111460365A (zh) * 2020-03-10 2020-07-28 华中科技大学 一种基于忆阻线性神经网络的方程组求解器及其操作方法
CN111507464A (zh) * 2020-04-19 2020-08-07 华中科技大学 一种基于忆阻器阵列的方程求解器及其操作方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9619596B2 (en) * 2015-06-23 2017-04-11 King Fahd University Of Petroleum And Minerals Floating memristor emulator
US11157237B2 (en) * 2018-11-13 2021-10-26 Hewlett Packard Enterprise Development Lp Memristive dot product circuit based floating point computations

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1122024A (zh) * 1994-08-15 1996-05-08 张胤微 一种任意字长、任意精度的乘法运算方法及乘法器
CN102073473A (zh) * 2009-11-20 2011-05-25 杨军 基于fpga的十进制浮点乘法器设计
CN108780492A (zh) * 2016-02-08 2018-11-09 斯佩罗设备公司 模拟协处理器
CN108665061A (zh) * 2017-03-28 2018-10-16 华为技术有限公司 数据处理装置和用于卷积计算的计算设备
CN110276447A (zh) * 2018-03-14 2019-09-24 上海寒武纪信息科技有限公司 一种计算装置及方法
CN109344964A (zh) * 2018-08-08 2019-02-15 东南大学 一种适用于神经网络的乘加计算方法和计算电路
CN111460365A (zh) * 2020-03-10 2020-07-28 华中科技大学 一种基于忆阻线性神经网络的方程组求解器及其操作方法
CN111507464A (zh) * 2020-04-19 2020-08-07 华中科技大学 一种基于忆阻器阵列的方程求解器及其操作方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
On the analog computational characteristics of memristive networks;Ioannis Vourkas等;《2013 IEEE 20th International Conference on Electronics, Circuits, and Systems (ICECS)》;20140515;309-312 *
基于忆阻器的存储与计算融合理论与实现;李等;《国防科技》;20161220(第06期);22-27 *
基于忆阻器的神经网络应用研究;陈佳等;《微纳电子与智能制造》;20191215(第04期);31-45 *
新型忆阻器混沌电路及其在图像加密中的应用;闵富红等;《电子与信息学报》;20161031(第10期);272-279 *

Also Published As

Publication number Publication date
CN111988031A (zh) 2020-11-24

Similar Documents

Publication Publication Date Title
US10867239B2 (en) Digital architecture supporting analog co-processor
CN108780492B (zh) 模拟协处理器
EP3564867A1 (en) Peripheral circuit and system for supporting rram-based neural network training
CN111507464B (zh) 一种基于忆阻器阵列的方程求解器及其操作方法
CN111460365B (zh) 一种基于忆阻线性神经网络的方程组求解器及其操作方法
CN111478703B (zh) 基于忆阻交叉阵列的处理电路及输出电流的补偿方法
CN112181895B (zh) 可重构架构、加速器、电路部署和计算数据流方法
CN113517007B (zh) 一种流水处理方法、系统和忆阻器阵列
CN110442323A (zh) 进行浮点数或定点数乘加运算的架构和方法
CN111988031B (zh) 一种忆阻存内矢量矩阵运算器及运算方法
US9933998B2 (en) Methods and apparatuses for performing multiplication
CN114168107A (zh) 一种存内精度可调的矢量矩阵乘法运算方法及运算器
CN116303229A (zh) 一种分组前向梯度回归的存算系统的计算方法
CN115906976A (zh) 一种全模拟向量矩阵乘法存内计算电路及其应用
CN113988279A (zh) 一种支持负值激励的存算阵列输出电流读出方法及系统
CN113571109A (zh) 存储器电路及其操作方法
CN111611528A (zh) 电流值可变的电流积分和电荷共享的多位卷积运算模组
Cheng et al. Design and Dataflow for Multibit SRAM-Based MAC Operations
CN114723032B (zh) 一种长短期记忆神经网络硬件加速方法与计算系统
CN115658012B (zh) 向量乘加器的sram模拟存内计算装置和电子设备
WO2023084299A1 (en) Hybrid matrix multiplier
WO2023028884A1 (zh) 一种浮点数计算电路以及浮点数计算方法
CN115658013B (zh) 向量乘加器的rom存内计算装置和电子设备
CN116402106B (zh) 神经网络加速方法、神经网络加速器、芯片及电子设备
US20230418557A1 (en) Data computation circuit and method

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