CN114499538A - 多比特输入数据编码方法、装置、电子设备及存储介质 - Google Patents
多比特输入数据编码方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114499538A CN114499538A CN202111542066.XA CN202111542066A CN114499538A CN 114499538 A CN114499538 A CN 114499538A CN 202111542066 A CN202111542066 A CN 202111542066A CN 114499538 A CN114499538 A CN 114499538A
- Authority
- CN
- China
- Prior art keywords
- pulse
- weighted
- bit
- coding
- encoding
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3002—Conversion to or from differential modulation
- H03M7/3044—Conversion to or from differential modulation with several bits only, i.e. the difference between successive samples being coded by more than one bit, e.g. differential pulse code modulation [DPCM]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请涉及集成电路技术领域,特别涉及一种多比特输入数据编码方法、装置、电子设备及存储介质,方法应用于忆阻器存算一体系统,包括以下步骤:在忆阻器存算一体系统中,获取至少一个多比特数据;由至少一个多比特数据生成用于表示多比特数据的多个加权脉冲组;计算每个加权脉冲组的脉冲的计算结果,并由每个加权脉冲组的脉冲的计算结果和对应的权值,加权求和得到多比特输入数据编码结果。由此,解决了相关技术中忆阻器存算一体系统的多比特输入数据编码类型,存在运算精度、运算时间和硬件开销难以折中等问题。
Description
技术领域
本申请涉及集成电路技术领域,特别涉及一种多比特输入数据编码方法、装置、电子设备及存储介质。
背景技术
相关技术中,忆阻器存算一体系统的多比特输入数据的编码类型主要有脉冲持续时长(宽度)编码、脉冲幅度值编码和脉冲个数编码三类,其中脉冲个数编码主要有一般脉冲个数编码和逐位加权脉冲个数编码两种,即共四种。
然而,相关技术中的脉冲宽度编码、脉冲幅度值编码、一般脉冲个数编码和逐位加权脉冲个数编码四种多比特输入数据编码类型,存在运算精度、运算时间和硬件开销难以折中的问题,有待解决。
发明内容
本申请提供一种多比特输入数据编码方法、装置、电子设备及存储介质,以解决相关技术中忆阻器存算一体系统的多比特输入数据编码类型,存在运算精度、运算时间和硬件开销难以折中等问题。
本申请第一方面实施例提供一种多比特输入数据编码方法,所述方法应用于忆阻器存算一体系统,包括以下步骤:在所述忆阻器存算一体系统中,获取至少一个多比特数据;由所述至少一个多比特数据生成用于表示多比特数据的多个加权脉冲组;计算每个加权脉冲组的脉冲的计算结果,并由所述每个加权脉冲组的脉冲的计算结果和对应的权值,加权求和得到多比特输入数据编码结果。
进一步地,在由所述至少一个多比特数据生成用于所述表示多比特数据的多个加权脉冲组之前,还包括:设置多比特输入数据的编码类型,其中,所述编码类型包括分组加权脉冲个数编码类型和分组幅值加权的脉冲混合编码类型。
进一步地,所述编码类型为分组加权脉冲个数编码类型时,所述计算每个加权脉冲组的脉冲的计算结果,并由所述每个加权脉冲组的脉冲的计算结果和对应的权值,求和得到多比特输入数据编码结果,包括:将所述每个加权脉冲组的数据编码编码成为1比特脉冲串,并将各加权脉冲组的脉冲串在时间上相接;将所述每个加权脉冲组的脉冲依次施加到对应的忆阻器的器件上,得到所述脉冲的计算结果;将同组内的脉冲的计算结果依次相加,且将不同组之间的计算结果基于对应的权值进行加权相加,得到所述多比特输入数据编码结果。
进一步地,所述编码类型为分组幅值加权的脉冲混合编码类型时,所述计算每个加权脉冲组的脉冲的计算结果,并由所述每个加权脉冲组的脉冲的计算结果和对应的权值,求和得到多比特输入数据编码结果,包括:将所述每个加权脉冲组的数据编码编码成为1比特脉冲串,并将所述每个加权脉冲组对应的脉冲权重用幅度值编码,及将各加权脉冲组的脉冲串在时间上相接;将所述每个加权脉冲组的脉冲依次施加到对应的忆阻器中的器件上,得到所述脉冲的计算结果;将同组内的脉冲的计算结果依次相加,且将不同组之间的计算结果相加,得到所述多比特输入数据编码结果。
本申请第二方面实施例提供一种多比特输入数据编码装置,所述装置应用于忆阻器存算一体系统,包括:获取模块,用于在所述忆阻器存算一体系统中,获取至少一个多比特数据;生成模块,用于由所述至少一个多比特数据生成用于表示多比特数据的多个加权脉冲组;计算模块,用于计算每个加权脉冲组的脉冲的计算结果,并由所述每个加权脉冲组的脉冲的计算结果和对应的权值,求和得到多比特输入数据编码结果。
进一步地,还包括:设置模块,用于在由所述至少一个多比特数据生成用于所述表示多比特数据的多个加权脉冲组之前,设置多比特输入数据的编码类型,其中,所述编码类型包括分组加权脉冲个数编码类型和分组幅值加权的脉冲混合编码类型。
进一步地,所述编码类型为分组加权脉冲个数编码类型时,所述计算模块用于:将所述每个加权脉冲组的数据编码编码成为1比特脉冲串,并将各加权脉冲组的脉冲串在时间上相接;将所述每个加权脉冲组的脉冲依次施加到对应的忆阻器的器件上,得到所述脉冲的计算结果;将同组内的脉冲依次相加,且将不同组之间的计算结果基于对应的权值进行加权相加,得到所述多比特输入数据编码结果。
进一步地,所述编码类型为分组幅值加权的脉冲混合编码类型时,所述计算模块用于:将所述每个加权脉冲组的数据编码编码成为1比特脉冲串,并将所述每个加权脉冲组对应的脉冲权重用幅度值编码,及将各加权脉冲组的脉冲串在时间上相接;将所述每个加权脉冲组的脉冲依次施加到对应的忆阻器中的器件上,得到所述脉冲的计算结果;将同组内的脉冲的计算结果依次相加,且将不同组之间的计算结果相加,得到所述多比特输入数据编码结果。
本申请第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如上述实施例所述的多比特输入数据编码方法。
本申请第四方面实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以用于实现如上述实施例所述的多比特输入数据编码方法。
由此,本申请至少具有如下有益效果:
使用多个加权脉冲组表示一个多比特数据,通过将各组内脉冲的计算结果求和,将多个脉冲组的计算结果加权后求和,从而可以较快实现原多比特数据向量与忆阻器电导矩阵的乘法运算,降低输出端ADC所需的精度、面积和功耗,保留较高的计算的精度。由此,解决了相关技术中忆阻器存算一体系统的多比特输入数据编码类型,存在运算精度、运算时间和硬件开销难以折中等问题。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据相关技术中四种多比特数据编码类型示意图。
图2为根据本申请实施例提供的多比特输入数据编码方法的流程示意图的流程图;
图3为根据本申请实施例提供的分组加权脉冲个数编码类型的流程图;
图4为根据本申请实施例提供的分组加权脉冲个数编码类型的实现装置示例图;
图5为根据本申请实施例提供的分组加权脉冲个数编码示意图;
图6为根据本申请实施例提供的分组加权脉冲个数编码的部分运算结果整合示意图;
图7为根据本申请实施例提供的分组幅值加权的脉冲混合编码类型的流程图;
图8为根据本申请实施例提供的分组幅值加权的脉冲混合编码类型的实现装置示例图;
图9为根据本申请实施例提供的分组幅值加权的脉冲混合编码示意图;
图10为根据本申请实施例提供的分组幅值加权的脉冲混合编码的部分运算结果整合示意图;
图11为根据本申请实施例提供的多比特输入数据编码装置的示例图;
图12为根据本申请实施例提供的电子设备的方框示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
随着信息技术的快速发展,大数据时代已然来临。物联网传感技术采集得到的大量数据需要低功耗高能效的处理。传统计算平台,如CPU和GPU,由于摩尔定律逼近极限,算力的提升面临终结。忆阻器是一种新型的微纳电子器件,其电阻状态可以通过外在电压激励进行调节。基于忆阻器的神经形态计算突破了传统计算设备的冯诺依曼架构,计算和存储在相同的地方完成,减少了数据搬运的时间,计算时所需能效较高、功耗较低、面积较小。基于忆阻器阵列利用实现模拟计算是近年来的热点研究领域。
在计算矩阵向量乘法时,忆阻器阵列使用电压脉冲来表示输入向量,用器件的电导表示待运算的矩阵元素值,通过欧姆定律和基尔霍夫电压定律得到的电流值可以代表计算的计算结果。忆阻器存算一体系统的多比特输入数据的编码类型主要有脉冲持续时长(宽度)编码、脉冲幅度值编码和脉冲个数编码三类,其中脉冲个数编码主要有一般脉冲个数编码和逐位加权脉冲个数编码两种,即共四种。
举例而言,对于1(8位二进制表示为00000001)、2(8位二进制表示为00000010)、100(8位二进制表示为01100100)三个待运算的输入数据,(1)脉冲持续时长编码可以采用持续时长分别为100ns,200ns和10us的1个脉冲表示;(2)脉冲幅度编码可以采用脉冲幅度分别为0.005V,0.010V和0.5V的1个脉冲表示;(3)一般脉冲个数编码可以采用1,2和100个100ns的电压脉冲表示,各脉冲下输出电流累加即为运算结果;(4)逐位加权脉冲个数编码采用最多8个脉冲编码1个8比特数据,可以用1个权为20的脉冲编码输入1,1个权为21的脉冲编码输入2,1个权为26的脉冲,1个权为25的脉冲和1个权为22的脉冲共三个脉冲编码输入100,每个脉冲下电流需要加权累积后得到最后的运算结果。如图2所示,四种多比特数据编码类型以四个10bit数据的编码为例。
然而,相关技术中的脉冲宽度编码、脉冲幅度值编码、一般脉冲个数编码和逐位加权脉冲个数编码四种多比特输入数据编码类型,存在如下缺点:
(1)脉冲宽度编码类型:以最小脉冲宽度编码最下输入数据值(对于忆阻器目前最小的脉冲在10ns的量级),在编码较大数值的数据时,脉冲的宽度较长(例如,1对应10ns,100就需要一个1us的脉冲),限制了存算一体系统的速度和能效。
(2)脉冲幅度值编码类型:高比特(例如大于4bit)数目的数据的编码需要高精度的数模转化器(high-precisiondigital-to-analogconverter,HPDAC),其面积和功耗较大,降低了忆阻器存一体系统的能效优势。
(3)一般脉冲个数编码类型:与脉冲宽度编码类似,在编码较大数值的数据时,脉冲的个数较长(Nbit数据需要最大需要2N-1个脉冲),运算时间较长,限制了存算一体系统的速度与能效。
(4)逐位加权脉冲个数编码类型:该方法通常需要在输出端的电流经过模数转化器(Analog-to-digitalconverter,ADC)后通过移位的方式做乘法(即乘以对应的权)和累加(把不同权的脉冲得到的计算结果加权后的求和)得到最终的计算结果;这种方式有两个明显的不足,第一,它要求输出端的ADC精度足够高,至少要达到输入数据的比特位数;第二,忆阻器固有的电导波动使得每个加权脉冲的运算结果的低位不可靠,从而数据的低比特段的脉冲的运算结果会被淹没在高比特段的噪声当中。因此,该方式会降低系统的运算精度,同时ADC的面积和功耗较大,降低了存算一体系统的面积和能效优势。
针对现有编码类型存在的运算精度、运算时间和硬件开销难以折中的问题,本申请实施例提出一种用于忆阻器存算一体系统的多比特输入数据编码方法和实现装置。
下面参考附图描述本申请实施例的多比特输入数据编码方法、装置、电子设备及存储介质。针对上述背景技术中心提到的相关技术中忆阻器存算一体系统的多比特输入数据编码类型,存在运算精度、运算时间和硬件开销难以折中的问题,本申请提供了一种多比特输入数据编码方法,在该方法中,使用多个加权脉冲组表示一个多比特数据,通过将各组内脉冲的计算结果求和,将多个脉冲组的计算结果加权后求和,从而可以较快实现原多比特数据向量与忆阻器电导矩阵的乘法运算,降低输出端ADC所需的精度、面积和功耗,保留较高的计算的精度。由此,解决了相关技术中忆阻器存算一体系统的多比特输入数据编码类型,存在运算精度、运算时间和硬件开销难以折中等问题。
具体而言,图2为本申请实施例所提供的一种多比特输入数据编码方法的流程示意图。其中,本申请实施例的方法可以应用于忆阻器存算一体系统,需要说明的是,本申请实施例的方法范围也可以拓展到其他存算一体系统,如基于相变存储器的存算一体系统、基于磁存储器的存算一体系统、基于SRAM的存算一体系统,基于NorFlash的存算一体系统等,包括但不限定于RRAM。
如图2所示,该多比特输入数据编码方法包括以下步骤:
在步骤S101中,在忆阻器存算一体系统中,获取至少一个多比特数据。
在步骤S102中,由至少一个多比特数据生成用于表示多比特数据的多个加权脉冲组。
可以理解的是,本申请实施例可以将将长比特的数据拆分成多个短比特数据,并使用多个加权脉冲组表示一个多比特数据。
在步骤S103中,计算每个加权脉冲组的脉冲的计算结果,并由每个加权脉冲组的脉冲的计算结果和对应的权值,求和得到多比特输入数据编码结果。
可以理解的是,本申请实施例可以通过将各组内脉冲的计算结果求和,将多个脉冲组的计算结果加权后求和,且在输出端可以通过移位乘法器和加法器(或仅用加法器)对ADC量化的部分运算结果做整合,从而可以较快实现原多比特数据向量与忆阻器电导矩阵的乘法运算,降低输出端ADC所需的精度、面积和功耗,保留较高的计算的精度。
需要说明的是,本申请实施例的编码数据主要针对多比特的非负整数(如下面的例子),但是可以扩展到适用于有限位的小数:负整数的运算可以先把通次输入的多个输入数据加上一个足够大的正整数固定偏置量转换为非负整数,原数据的向量矩阵乘法的运算结果可以在转换后数据编码运算后得到的计算结果的,每列结果都减去一个固定值得到;有限长正小数的编码可以通过乘以一个固定的倍数转化为整数后再编码,运算后所有结果均除以该倍数可以得到原来的运算的计算结果;有限长负小数的编码可以通过加一个固定的正数偏置量转化为有限长正小数再按上述方法编码,运算的每列结果都减去一个固定值得到原运算的计算结果。
在本实施例中,在由至少一个多比特数据生成用于表示多比特数据的多个加权脉冲组之前,还包括:设置多比特输入数据的编码类型,其中,所述编码类型包括分组加权脉冲个数编码类型和分组幅值加权的脉冲混合编码类型。
在本实施例中,编码类型为分组加权脉冲个数编码类型时,计算每个加权脉冲组的脉冲的计算结果,并由每个加权脉冲组的脉冲的计算结果和对应的权值,求和得到多比特输入数据编码结果,包括:将每个加权脉冲组的数据编码编码成为1比特脉冲串,并将各加权脉冲组的脉冲串在时间上相接;将每个加权脉冲组的脉冲依次施加到对应的忆阻器的器件上,得到脉冲的计算结果;将同组内的脉冲的计算结果依次相加,且将不同组之间的计算结果基于对应的权值进行加权相加,得到多比特输入数据编码结果。
可以理解的是,分组加权脉冲个数编码相比于相关技术中的逐位加权脉冲编码方法,可以提高计算精度,减少对ADC精度的需求;相对于相关技术中的一般脉冲个数编码和脉冲宽度编码,可以加快运算时间,降低系统延时。
具体而言,1、分组加权脉冲个数编码的编码方法和部分运算结果整合的数学原理,具体如下:
N比特数据DN=bNbN-1…b1可以写成如下形式:
其中,km+km-1+…+k1=N且kj(j=1,2,...,m)是正整数。该表示将原N比特数据划分为了m组权重不同的低比特二进制数,每个低比特二进制数包含kj(j=1,2,...,m)个比特。在进行这样的转换后,对每个组内的脉冲进行脉冲个数编码,计算得到的计算结果相加,不同组的和结果加权相加可以得到原数据的计算结果。计算整合的过程可以用以下公式表示:
其中,wj(j=1,2,...,m)是各组脉冲的权重,均为2的整数次幂;yj,p(j=1,2,...,m,p=1,2,...,n1或1,2,...,n2或...或1,2,...,nm)是每个脉冲的运算结果;是第j组低比特数据转化为1比特脉冲串中的脉冲个数。
2、多比特数据编码方法和部分运算结果整合流程,如图3所示,将一个N比特数据采用分组加权脉冲个数编码类型编码的流程包括:
第一步,根据延时、计算精度等的需求,满足km+km-1+…+k1=N,确定要划分的组数m以及每一组的比特数kj(j=1,2,...,m);
第二步,按照确定的m以及kj(j=1,2,...,m),划分原数据;
第三步,将各组的数据编码按照一般脉冲个数编码类型编码成为1比特脉冲串,各组脉冲串在时间上相接;
第四步,确定将各组的脉冲依次施加到对应的忆阻器器件上,计算得到的计算结果;
第五步,同组内的脉冲的计算结果依次相加,不同组之间的计算结果加权后相加,得到最后的计算结果。
3、多比特数据编码方法和部分运算结果整合的实现装置,具体如下:
实现分组加权脉冲个数编码类型的忆阻器阵列的外围电路以及系统架如图4所示,来自数据存储器的多个多比特数据,分别通过在BL端的低比特数据存储单元(用于存储几个小分组的数据)和低比特数据的解码单元(用于将每个小二进制数据组的多比特数据转化为对应的多个1比特数据)构成的分组脉冲个数编码器,经由1比特DAC转化成为具有相同幅值的电压脉冲串,并行施加给对应的忆阻器;每一次的矩阵(忆阻器电导矩阵)向量(输入单比特向量)的运算结果,在SL端经过移位乘法器(通过移位寄存器执行2j的乘法操作)和加法器构成的部分结果整合单元,可以形成电导矩阵和输入的多比特数据向量之间的矩阵向量乘法的计算结果。
4、分组加权脉冲个数编码类型的具体示例如图5和图6所示,具体如下:
如图5所示,以四个10bit数据作为示例,四个10bit数据分别是0000000001(十进制的1)、0000000010(十进制的2)、0001100100(十进制的100)和1111111111(十进制的1023)。这里采用的分组方式是[2,3,3],即最高的2bit为一组,权为27;左起第3到第5位的3bit为一组,权为24;最低的4bit为一组,权为20;可以看到,四个10bit数据只有1111111111(十进制的1023)在三个组中都有脉冲,最低位的4个比特1111被编码成为了15个脉冲,中间的3个比特111被编码成为了7个脉冲,最高位的3个比特111被编码成为了7个脉冲。需要说明的是,在图5的示例中,为简单计,各个组的1bit脉冲均是从最右边开始画的,但是并不限定于此,也可以在这一组脉冲中的左侧或中间位置,例如可以把0000000001(1)的脉冲和1111111111(1023)的最左侧或者中间的某一个的脉冲对齐。
如图6所示,以一个矩阵向量乘法运算为例,以x=[1 2 100 1024]作为输入的多比特(10bit)数据向量,以矩阵A=[4 3 2 1;2 2 2 1;1 1 3 2;1 3 1 3]为待运算的矩阵,图中分别给出了第一、第二和第三组数据的每次运算部分结果及其整合的示意,比如,第一组数据的运算部分结果有15个,第二组数据的运算部分结果有7个,第三组数据的运算部分结果有7个和前述编码相对应。各部分结果与权的乘积的和即为原运算ATxT的计算结果。
在本实施例中,编码类型为分组幅值加权的脉冲混合编码类型时,计算每个加权脉冲组的脉冲的计算结果,并由每个加权脉冲组的脉冲的计算结果和对应的权值,求和得到多比特输入数据编码结果,包括:将每个加权脉冲组的数据编码编码成为1比特脉冲串,并将每个加权脉冲组对应的脉冲权重用幅度值编码,及将各加权脉冲组的脉冲串在时间上相接;将每个加权脉冲组的脉冲依次施加到对应的忆阻器中的器件上,得到脉冲的计算结果;将同组内的脉冲的计算结果依次相加,且将不同组之间的计算结果相加,得到多比特输入数据编码结果。
具体而言,1、分组幅值加权的脉冲混合编码的编码方法和部分运算结果整合的数学原理,可参见上述实施例的分组加权脉冲个数编码的编码方法和部分运算结果整合的数学原理,原理相同,为避免冗余,不在阐述。
2、多比特数据编码方法和部分运算结果整合的流程,如图7所示,将一个N比特数据采用分组幅值加权的脉冲混合编码类型编码,包括以下步骤:
第一步,根据延时、计算精度等的需求,满足,确定要划分的组数m以及每一组的比特数;
第二步,按照确定的m以及每一组的比特数kj(j=1,2,...,m),划分原数据;
第三步,将各组的数据编码按照一般脉冲个数编码类型编码成为1比特脉冲串,脉冲的权重用幅度值编码,各组脉冲串在时间上相接;
第四步,确定将各组的脉冲依次施加到对应的忆阻器器件上,计算得到的计算结果;
第五步,同组内的脉冲的计算结果依次相加,不同组之间的计算结果相加,得到最后的计算结果。
3、多比特数据编码方法和部分运算结果整合的实现装置,具体如下:
实现分组幅值加权的脉冲混合编码类型的忆阻器阵列的外围电路以及系统架构如图8所示。来自数据存储器的多个多比特数据,分别通过在BL端的低比特数据存储单元(用于存储几个小分组的数据)和低比特数据的解码单元(用于将每个小二进制数据组的多比特数据转化为对应的多个1比特数据)构成的分组脉冲混合编码器,经由多比特DAC转化成为具有代表脉冲权重的幅值的电压脉冲串,并行施加给对应的忆阻器;每一次的矩阵(忆阻器电导矩阵)向量(输入单比特向量)的运算结果,在SL端经过由加法器构成的部分运算结果整合单元,可以形成电导矩阵和输入的多比特数据向量之间的矩阵向量乘法的计算结果。其中,与图4的区别在于,图8中无需移位乘法器,且DAC的精度由“1比特”变为了“多比特”。
4、分组幅值加权的脉冲混合编码的编码方法的具体示例,如图9和图10所示,具体如下:
如图9所示,利用四个10bit数据作为例子,四个10bit数据分别是0000000001(十进制的1)、0000000010(十进制的2)、0001100100(十进制的100)和1111111111(十进制的1023)。这里采用的分组方式是[2,3,3],即最高的2bit为一组,权为27,用0.384V的脉冲表示;左起第3到第5位的3bit为一组,权为24,用0.048V的脉冲表示;最低的4bit为一组,权为20,用0.003V的脉冲表示;可以看到,四个10bit数据只有1111111111(十进制的1023)在三个组中都有脉冲,最低位的4个比特1111被编码成为了15个脉冲,中间的3个比特111被编码成为了7个脉冲,最高位的3个比特111被编码成为了7个脉冲。
需要说明的是,图9的实例中,各个组的脉冲都是从最右边开始画的,但是不限定于此,也可以在这一组脉冲中的左侧或中间位置,例如可以把0000000001(1)的脉冲和1111111111(1023)的最左侧或者中间的某一个的脉冲对齐。图中最右侧脉冲,即权重为20的脉冲使用了0.003V的脉冲幅值,只是举例子说明,也可以用其他的,比如0.005V,这时候权重为24和权重为27的幅值分别为0.08V和0.64V。
如图10所示,以一个矩阵向量乘法运算为例,以x=[1 2 100 1024]作为输入的多比特(10bit)数据向量,以矩阵A=[4 3 2 1;2 2 2 1;1 1 3 2;1 3 1 3]为待运算的矩阵,图中分别用给出了第一、第二和第三数据的每次运算部分结果及其整合的示意图,其中第一组数据的运算部分结果有15个,第二组数据的运算部分结果有7个,第三组数据的运算部分结果有7个和前述编码相对应。各部分结果与权的乘积的和即为原运算ATxT的计算结果。需要说明的是,0.003V的电压值没有和所有的计算结果再相乘一遍计算出真实的电流值,可以认为0.003被归为“1”和相乘了。
综上,针对相关技术中编码类型存在的运算精度、运算时间和硬件开销难以折中的问题,本发明提出一种用于忆阻器存算一体系统的多比特输入数据编码方法,蕴含逐位加权脉冲个数编码、一般脉冲个数编码类型,和脉冲幅度值编码类型的想法,使用多个加权脉冲组表示一个多比特数据,通过将各组内脉冲的计算结果求和,将多个脉冲组的计算结果加权后求和,加权运算既可以使用移位乘法器实现,也可以通过用脉冲幅值编码脉冲权重实现。该方法的总脉冲个数介于2N与N之间,相对于采用2N脉冲个数/宽度的脉冲个数编码和脉冲宽度编码方法,该方法可以较快实现原多比特数据向量与忆阻器电导矩阵的乘法运算;相对于采用N个脉冲的逐位脉冲个数编码方法,该方法可以降低输出端ADC所需的精度、面积和功耗,保留较高的计算的精度;相对于采用1个脉冲的脉冲幅度编码的方法,该方法降低了输入端DAC对精度、面积和功耗的需求。
根据本申请实施例提出的多比特输入数据编码方法,使用多个加权脉冲组表示一个多比特数据,通过将各组内脉冲的计算结果求和,将多个脉冲组的计算结果加权后求和,从而可以较快实现原多比特数据向量与忆阻器电导矩阵的乘法运算,降低输出端ADC所需的精度、面积和功耗,保留较高的计算的精度。
其次参照附图描述根据本申请实施例提出的多比特输入数据编码装置。
图11是本申请实施例的多比特输入数据编码装置的方框示意图。其中,装置应用于忆阻器存算一体系统。
如图11所示,该多比特输入数据编码装置10包括:获取模块100、生成模块200和计算模块300。
其中,获取模块100用于在忆阻器存算一体系统中,获取至少一个多比特数据;生成模块200用于由至少一个多比特数据生成用于表示多比特数据的多个加权脉冲组;计算模块300用于计算每个加权脉冲组的脉冲的计算结果,并由每个加权脉冲组的脉冲的计算结果和对应的权值,加权求和得到多比特输入数据编码结果。
进一步地,本申请实施例的装置10还包括:设置模块。其中,设置模块用于在由所述至少一个多比特数据生成用于所述表示多比特数据的多个加权脉冲组之前,设置多比特输入数据的编码类型,其中,所述编码类型包括分组加权脉冲个数编码类型和分组幅值加权的脉冲混合编码类型。
进一步地,编码类型为分组加权脉冲个数编码类型时,计算模块300用于:将每个加权脉冲组的数据编码编码成为1比特脉冲串,并将各加权脉冲组的脉冲串在时间上相接;将每个加权脉冲组的脉冲依次施加到对应的忆阻器的器件上,得到脉冲的计算结果;将同组内的脉冲依次相加,且将不同组之间的计算结果基于对应的权值进行加权相加,得到多比特输入数据编码结果。
进一步地,编码类型为分组幅值加权的脉冲混合编码类型时,计算模块300用于:将每个加权脉冲组的数据编码编码成为1比特脉冲串,并将每个加权脉冲组对应的脉冲权重用幅度值编码,及将各加权脉冲组的脉冲串在时间上相接;将每个加权脉冲组的脉冲依次施加到对应的忆阻器中的器件上,得到脉冲的计算结果;将同组内的脉冲的计算结果依次相加,且将不同组之间的计算结果相加,得到多比特输入数据编码结果。
需要说明的是,前述对多比特输入数据编码方法实施例的解释说明也适用于该实施例的多比特输入数据编码装置,此处不再赘述。
根据本申请实施例提出的多比特输入数据编码装置,使用多个加权脉冲组表示一个多比特数据,通过将各组内脉冲的计算结果求和,将多个脉冲组的计算结果加权后求和,从而可以较快实现原多比特数据向量与忆阻器电导矩阵的乘法运算,降低输出端ADC所需的精度、面积和功耗,保留较高的计算的精度。
图12为本申请实施例提供的电子设备的结构示意图。该电子设备可以包括:
存储器1201、处理器1202及存储在存储器1201上并可在处理器1202上运行的计算机程序。
处理器1202执行程序时实现上述实施例中提供的多比特输入数据编码方法。
进一步地,电子设备还包括:
通信接口1203,用于存储器1201和处理器1202之间的通信。
存储器1201,用于存放可在处理器1202上运行的计算机程序。
存储器1201可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
如果存储器1201、处理器1202和通信接口1203独立实现,则通信接口1203、存储器1201和处理器1202可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(PeripheralComponent,简称为PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器1201、处理器1202及通信接口1203,集成在一块芯片上实现,则存储器1201、处理器1202及通信接口1203可以通过内部接口完成相互间的通信。
处理器1202可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上的多比特输入数据编码方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或N个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“N个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更N个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或N个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,N个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种多比特输入数据编码方法,其特征在于,所述方法应用于忆阻器存算一体系统,包括以下步骤:
在所述忆阻器存算一体系统中,获取至少一个多比特数据;
由所述至少一个多比特数据生成用于表示多比特数据的多个加权脉冲组;
计算每个加权脉冲组的脉冲的计算结果,并由所述每个加权脉冲组的脉冲的计算结果和对应的权值,加权求和得到多比特输入数据编码结果。
2.根据权利要求1所述的方法,其特征在于,在由所述至少一个多比特数据生成用于所述表示多比特数据的多个加权脉冲组之前,还包括:
设置多比特输入数据的编码类型,其中,所述编码类型包括分组加权脉冲个数编码类型和分组幅值加权的脉冲混合编码类型。
3.根据权利要求2所述的方法,其特征在于,所述编码类型为分组加权脉冲个数编码类型时,所述计算每个加权脉冲组的脉冲的计算结果,并由所述每个加权脉冲组的脉冲的计算结果和对应的权值,求和得到多比特输入数据编码结果,包括:
将所述每个加权脉冲组的数据编码编码成为1比特脉冲串,并将各加权脉冲组的脉冲串在时间上相接;
将所述每个加权脉冲组的脉冲依次施加到对应的忆阻器的器件上,得到所述脉冲的计算结果;
将同组内的脉冲的计算结果依次相加,且将不同组之间的计算结果基于对应的权值进行加权相加,得到所述多比特输入数据编码结果。
4.根据权利要求2所述的方法,其特征在于,所述编码类型为分组幅值加权的脉冲混合编码类型时,所述计算每个加权脉冲组的脉冲的计算结果,并由所述每个加权脉冲组的脉冲的计算结果和对应的权值,求和得到多比特输入数据编码结果,包括:
将所述每个加权脉冲组的数据编码编码成为1比特脉冲串,并将所述每个加权脉冲组对应的脉冲权重用幅度值编码,及将各加权脉冲组的脉冲串在时间上相接;
将所述每个加权脉冲组的脉冲依次施加到对应的忆阻器中的器件上,得到所述脉冲的计算结果;
将同组内的脉冲的计算结果依次相加,且将不同组之间的计算结果相加,得到所述多比特输入数据编码结果。
5.一种多比特输入数据编码装置,其特征在于,所述装置应用于忆阻器存算一体系统,包括:
获取模块,用于在所述忆阻器存算一体系统中,获取至少一个多比特数据;
生成模块,用于由所述至少一个多比特数据生成用于表示多比特数据的多个加权脉冲组;
计算模块,用于计算每个加权脉冲组的脉冲的计算结果,并由所述每个加权脉冲组的脉冲的计算结果和对应的权值,加权求和得到多比特输入数据编码结果。
6.根据权利要求5所述的装置,其特征在于,还包括:
设置模块,用于在由所述至少一个多比特数据生成用于所述表示多比特数据的多个加权脉冲组之前,设置多比特输入数据的编码类型,其中,所述编码类型包括分组加权脉冲个数编码类型和分组幅值加权的脉冲混合编码类型。
7.根据权利要求6所述的装置,其特征在于,所述编码类型为分组加权脉冲个数编码类型时,所述计算模块用于:
将所述每个加权脉冲组的数据编码编码成为1比特脉冲串,并将各加权脉冲组的脉冲串在时间上相接;将所述每个加权脉冲组的脉冲依次施加到对应的忆阻器的器件上,得到所述脉冲的计算结果;将同组内的脉冲的计算结果依次相加,且将不同组之间的计算结果基于对应的权值进行加权相加,得到所述多比特输入数据编码结果。
8.根据权利要求6所述的装置,其特征在于,所述编码类型为分组幅值加权的脉冲混合编码类型时,所述计算模块用于:
将所述每个加权脉冲组的数据编码编码成为1比特脉冲串,并将所述每个加权脉冲组对应的脉冲权重用幅度值编码,及将各加权脉冲组的脉冲串在时间上相接;将所述每个加权脉冲组的脉冲依次施加到对应的忆阻器中的器件上,得到所述脉冲的计算结果;将同组内的脉冲的计算结果依次相加,且将不同组之间的计算结果相加,得到所述多比特输入数据编码结果。
9.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如权利要求1-4任一项所述的多比特输入数据编码方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行,以用于实现如权利要求1-4任一项所述的多比特输入数据编码方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111542066.XA CN114499538A (zh) | 2021-12-16 | 2021-12-16 | 多比特输入数据编码方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111542066.XA CN114499538A (zh) | 2021-12-16 | 2021-12-16 | 多比特输入数据编码方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114499538A true CN114499538A (zh) | 2022-05-13 |
Family
ID=81493393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111542066.XA Pending CN114499538A (zh) | 2021-12-16 | 2021-12-16 | 多比特输入数据编码方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114499538A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114974351A (zh) * | 2022-05-31 | 2022-08-30 | 北京宽温微电子科技有限公司 | 一种多比特存内计算单元及存内计算装置 |
CN116414456A (zh) * | 2023-01-19 | 2023-07-11 | 杭州知存智能科技有限公司 | 存算芯片内的加权融合变换部件、存算电路及协同计算方法 |
US20230238047A1 (en) * | 2022-01-21 | 2023-07-27 | National Tsing Hua University | Memory unit with time domain edge delay accumulation for computing-in-memory applications and computing method thereof |
-
2021
- 2021-12-16 CN CN202111542066.XA patent/CN114499538A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230238047A1 (en) * | 2022-01-21 | 2023-07-27 | National Tsing Hua University | Memory unit with time domain edge delay accumulation for computing-in-memory applications and computing method thereof |
US11967357B2 (en) * | 2022-01-21 | 2024-04-23 | National Tsing Hua University | Memory unit with time domain edge delay accumulation for computing-in-memory applications and computing method thereof |
CN114974351A (zh) * | 2022-05-31 | 2022-08-30 | 北京宽温微电子科技有限公司 | 一种多比特存内计算单元及存内计算装置 |
CN114974351B (zh) * | 2022-05-31 | 2023-10-17 | 苏州宽温电子科技有限公司 | 一种多比特存内计算单元及存内计算装置 |
CN116414456A (zh) * | 2023-01-19 | 2023-07-11 | 杭州知存智能科技有限公司 | 存算芯片内的加权融合变换部件、存算电路及协同计算方法 |
CN116414456B (zh) * | 2023-01-19 | 2024-01-19 | 杭州知存智能科技有限公司 | 存算芯片内的加权融合变换部件、存算电路及协同计算方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114499538A (zh) | 多比特输入数据编码方法、装置、电子设备及存储介质 | |
US11714749B2 (en) | Efficient reset and evaluation operation of multiplying bit-cells for in-memory computing | |
CN107636640B (zh) | 点积引擎、忆阻器点积引擎以及用于计算点积的方法 | |
WO2020238889A1 (zh) | 一种基于Radix-4编码和差分权重的乘累加电路 | |
CN108780492B (zh) | 模拟协处理器 | |
JP7338876B2 (ja) | 混合信号コンピューティングのためのシステムおよび方法 | |
CN110543939B (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置 | |
US11537861B2 (en) | Methods of performing processing-in-memory operations, and related devices and systems | |
CN110288510B (zh) | 一种近传感器视觉感知处理芯片及物联网传感装置 | |
Tsai et al. | RePIM: Joint exploitation of activation and weight repetitions for in-ReRAM DNN acceleration | |
CN113364462B (zh) | 模拟存算一体多比特精度实现结构 | |
US11275563B2 (en) | Low-discrepancy deterministic bit-stream processing using Sobol sequences | |
US20190294957A1 (en) | Arithmetic device and arithmetic method | |
US11544037B2 (en) | Low area multiply and accumulate unit | |
CN115099396B (zh) | 基于忆阻器阵列的全权重映射方法及装置 | |
US20230075348A1 (en) | Computing device and method using multiplier-accumulator | |
JP7255068B2 (ja) | メモリデバイス及びその動作方法 | |
CN113988279A (zh) | 一种支持负值激励的存算阵列输出电流读出方法及系统 | |
CN115906976A (zh) | 一种全模拟向量矩阵乘法存内计算电路及其应用 | |
CN114816335A (zh) | 一种忆阻器阵列符号数乘法实现方法、装置及设备 | |
CN113326914A (zh) | 神经网络计算方法和神经网络计算装置 | |
CN111091190A (zh) | 数据处理方法及装置、光子神经网络芯片、数据处理电路 | |
JP7206531B2 (ja) | メモリデバイスおよびその動作方法 | |
JP7279293B2 (ja) | メモリデバイスおよびその動作方法 | |
CN117492696A (zh) | 乘加运算电路、存储器及电子设备 |
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 |