CN113704139A - 一种用于存内计算的数据编码方法和存内计算方法 - Google Patents

一种用于存内计算的数据编码方法和存内计算方法 Download PDF

Info

Publication number
CN113704139A
CN113704139A CN202110974491.XA CN202110974491A CN113704139A CN 113704139 A CN113704139 A CN 113704139A CN 202110974491 A CN202110974491 A CN 202110974491A CN 113704139 A CN113704139 A CN 113704139A
Authority
CN
China
Prior art keywords
memory
data
bit
storage data
cell matrix
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
Application number
CN202110974491.XA
Other languages
English (en)
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.)
Fudan University
Original Assignee
Fudan University
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 Fudan University filed Critical Fudan University
Priority to CN202110974491.XA priority Critical patent/CN113704139A/zh
Publication of CN113704139A publication Critical patent/CN113704139A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明提供一种用于存内计算的数据编码方法和存内计算方法,由于采用了用于存内计算的数据编码方法分别对存储器内的原始数据以及输入的原始数据进行了针对存内计算的编码,得到编码后的存储数据以及输入数据,因此,明显降低了存内计算数据二进制表示中1的个数,从而降低了存内计算功耗;还由于采用了三角形排列方法将编码后的存储数据存储到存储器的单元矩阵中,因此,将编码后的输入数据直接作用到该单元矩阵上,在单元矩阵的列方向上产生的电流或电荷积累即为存储数据和输入数据乘加的计算结果,从而能够以这样的方式快速直接地得到存内模拟计算结果,提高了计算效率。

Description

一种用于存内计算的数据编码方法和存内计算方法
技术领域
本发明属于信息技术领域,具体涉及一种用于存内计算的数据编码方法以及一种存内计算方法。
背景技术
近年来在存储器内部实现计算功能(简称存内计算)成为研究热点。存内计算被普遍认为能够解决传统冯诺依曼结构计算的存储瓶颈和功耗瓶颈问题。当前的存内计算实现普遍为低精度实现,而功能主要为神经网络的推断,神经网络的推断不需要太高的精度,因此存内计算非常适合被应用于神经网络推断。
目前,有一些研究者提出了高精度的存内计算架构,这些架构大部分是基于逻辑门存内计算或者数字存内计算的。其优点是高能效,缺点是延迟非常高,在微秒量级。例如,Jingcheng Wang等人利用SRAM和附加电路实现了1位串行全加器,并通过处理器串行指令实现了32bit整数和32bit浮点数运算,但是这一实现并非并行运算,进行一个浮点操作需要4978个周期,延迟非常高,参见《A Compute SRAM with Bit-Serial Integer/Floating-Point Operations for Programmable In-Memory Vector Acceleration》。Ji-Hoon Kim等人使用了基于逻辑门的存内计算,利用稀疏性提高了效能,但是运算延迟高,参见《Z-PIM:An Energy-Efficient Sparsity Aware Processing-In-Memory Architecture withFully-Variable Weight Precision》。Yun Long等人提出了一种数字存内计算方法,但每一次运算真正开启的行数只能小于等于1,对于高比特的数据输入,需要大量周期才能完成存内计算,带来大量延迟,参见《Flex-PIM:A Ferroelectric FET based Vector MatrixMultiplication Engine with Dynamical Bitwidth and Floating Point Precision》。Mahmut E.Sinangil等人提出了一种模拟存内计算方法,使用多次脉冲作为该存内计算方法的输入方式,这种方式对于高比特的输入会带来大量延迟。
因此,为了在高精度的存内计算要求下能够提高能效,并且降低延迟,需要一种新的针对存内计算的编码方法以及相应的存内计算方法。
发明内容
为解决上述问题,提供一种用于存内计算的数据编码方法和存内计算方法,本发明采用了如下技术方案:
本发明提供了一种用于存内计算的数据编码方法,用于对原始数据进行针对于存内计算的数据编码,其特征在于,包括步骤A1,在原始数据的首位前和末尾后均添加1比特的0;步骤A2,将原始数据的每两位相邻的比特位做差,相对高位的比特位为减数,相对低位的比特位为被减数,得到编码后的数据。
本发明提供了一种存内计算方法,其特征在于,包括步骤S1,通过数据编码方法对存储器内的原始数据进行数据编码,得到编码后的存储数据,通过数据编码方法对输入的原始数据进行数据编码,得到编码后的输入数据;步骤S2,将存储数据按照预定的排列方法存储到存储器的单元矩阵中;步骤S3,将输入数据输入到存储器的输入段,进行存内模拟计算,得到存内模拟计算结果,其中,数据编码方法为上述的数据编码方法。
本发明提供的存内计算方法,还可以具有这样的技术特征,其中,排列方法为三角形排列方法,该三角形排列方法包括以下步骤:步骤B1,将存储数据按照从最高有效位到最低有效位的顺序横向排布开,得到横向存储数据,并将横向存储数据存储在存储器的第一行单元矩阵中;步骤B2,将横向存储数据的每个比特位右移1位并移除最后一个比特位,在横向存储数据的最高有效位用0补充,然后将处理后的横向存储数据存储在存储器的下一行单元矩阵中;步骤B3,重复步骤B2,重复次数为横向存储数据的比特位数-1。
本发明提供的存内计算方法,还可以具有这样的技术特征,其中,排列方法为线性排列方法。
本发明提供的存内计算方法,还可以具有这样的技术特征,其中,存内模拟计算具体为:将输入模拟信号作用到存储器的单元矩阵上,在存储器的单元矩阵的列方向上产生电流或电荷的积累,积累为存内模拟计算结果。
本发明提供的存内计算方法,还可以具有这样的技术特征,其中,将存内模拟计算结果作为存内计算结果进行输出。
本发明提供的存内计算方法,还可以具有这样的技术特征,其中,通过模数转换单元将存内模拟计算结果转化为数字信号,将数字信号作为存内计算结果进行输出。
发明作用与效果
根据本发明的存内计算方法,由于采用了用于存内计算的数据编码方法分别对存储器内的原始数据以及输入的原始数据进行了针对存内计算的编码,得到编码后的存储数据以及输入数据,因此,明显降低了存内计算数据二进制表示中1的个数,从而降低了存内计算功耗;还由于采用了三角形排列方法将编码后的存储数据存储到存储器的单元矩阵中,因此,将输入数据转换为模拟信号并直接作用到该单元矩阵上,在单元矩阵的列方向上产生的电流或电荷积累即为存储数据和输入数据乘加的计算结果,从而能够以这样的方式快速直接地得到存内模拟计算结果,提高了计算效率。
附图说明
图1是本发明实施例中存内计算方法的流程图;
图2是本发明实施例中数据编码方法和存内计算方法的示意图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下结合实施例及附图对本发明的用于存内计算的数据编码方法和存内计算方法作具体阐述。
<实施例>
图1是本发明实施例中存内计算方法的流程图。
如图1所示,本发明实施例的存内计算方法包括以下步骤:
步骤S1,通过数据编码方法对存储器内的原始数据进行编码,得到编码后的存储数据,通过相同的数据编码方法对输入的原始数据进行编码,得到编码后的输入数据。
图2是本发明实施例中数据编码方法和存内计算方法的示意图。
如图2所示,本实施例中,数据编码方法为用于存内计算的数据编码方法,包括以下步骤:
步骤A1,在原始数据的首位前和末尾后均添加1比特的0;
步骤A2,将原始数据的每两位比特位做差,相对高位的比特位为减数,相对低位的比特位为被减数,得到编码后的数据。
编码前的数据表示为:
A=a727+a626+a525+a424+a323+a222+a121+a020
=-0·28+a727+a626+a525+a424+a323+a222+a121+a020+0·2-1
=(-0+a7)28+(-a7+a6)27+(-a6+a5)26+(-a5+a4)25+(-a4+a3)24+(-a3+a2)23+(-a2+a1)22+(-a1+a0)21+(-a0+0)20
编码后的数据表示为:
A=y828+y727+y626+y525+y424+y323+y222+y121+y020
其中,
y8=a7,y7=-a7+a6,y6=-a6+a5,y5=-a5+a4,y4=-a4+a3,y3
=-a3+a2,y2=-a2+a1,y1=-a1+a0,y0=-a0
式中,a0~a7为原始数据第0位至第7位的比特值,y0~y8为编码后的数据的第0位至第8位的比特值,其中第0位为最低位。可以看到编码后的数据比原始数据多一个比特位。
本实施例中,如图2中所示,存储器内的原始数据为11111011,输入的原始数据为10011111,将两者分别进行上述的数据编码后,得到编码后的存储数据为10000-110-1,编码后的输入数据为1-1010000-1。对比原始数据和编码后的数据,可以看到编码后的存储数据以及编码后的输入数据中1的位数明显减少。
步骤S2,将编码后的存储数据按照预定的排列方法存储到存储器的单元矩阵中。
本实施例中,预定的排列方法为三角形排列方法,该三角形排列方法包括以下步骤:
步骤B1,将编码后的存储数据按照从最高有效位(MSB)到最低有效位(LSB)的顺序横向排布开,得到横向存储数据,并将该横向存储数据存储在存储器的第一行单元矩阵中;
步骤B2,将横向存储数据的每个比特位右移1位并移除最后一个比特位,在横向存储数据的最高有效位用0补充,并将处理后的横向存储数据存储在存储器的下一行单元矩阵中;
步骤B3,重复步骤B2,重复次数为横向存储数据的比特位数-1。
本实施例中,编码后的存储数据按照从最高有效位到最低有效位的顺序横向排布开,得到的横向存储数据即为10000-110-1,将10000-110-1存入存储器的第一行单元矩阵;然后,将该横向存储数据的每个比特右移1位并移除最后一个比特位,也即保持该横向存储数据的总长度不变,在其最高有效位用0补充,得到010000-110,将010000-110存入存储器的第二行单元矩阵;依次类推,直到右移次数等于存储数据的比特数-1,最终有效数据(即除首位0以外的数据)在存储器内形成三角形排列,如图2中所示。
步骤S3,将编码后的输入数据输入到存储器的输入端,进行存内模拟计算,得到存内模拟计算结果。
本实施例中,输入数据为数字信号,将该数字信号直接输入到存储器的输入端。存内模拟计算的方法为,将输入模拟信号作用到存储器的单元矩阵上,在存储器的单元矩阵中已存储有上述三角形排列的存储数据,输入模拟信号直接作用到该单元矩阵后,在存储器的单元矩阵的列方向上产生电流或电荷的积累,该积累即为存储数据和输入数据乘加的计算结果,也即为存内模拟计算结果,该存内模拟计算结果为模拟信号。
本实施例中,如图2所示,存储器的单元矩阵中存储有按三角形排列的存储数据,编码后的输入数据为10000-110-1,将对应的输入数字信号作用到存储器的单元矩阵,在列方向上产生积累,得到的存内计算结果具体为:左数第1列的积累结果为1,第2列积累结果为-1,第3列积累结果为0,第4列积累结果为1,第5列积累结果为0,第6列积累结果为-1,第7列积累结果为2,第8列积累结果为-1,第9列积累结果为-3。
最后,可以将该存内模拟计算结果直接进行输出,也可以通过模数转换单元将该存内模拟计算结果转换为数字信号再进行输出。本实施例中,模数转换单元为现有技术中的模数转换器,将模拟信号(即电平)转换成对应的数字信号。
如上所述,通过本发明实施例的存内计算方法,分别对存储器内的原始数据以及输入的原始数据进行了针对存内计算的编码,并对编码后的数据进行了存内模拟计算,最后将存内模拟计算的结果直接进行输出或转为数字信号再进行输出。
实施例作用与效果
根据本发明的存内计算方法,由于采用了用于存内计算的数据编码方法分别对存储器内的原始数据以及输入的原始数据进行了针对存内计算的编码,得到编码后的存储数据以及输入数据,因此,明显降低了存内计算数据二进制表示中1的个数,从而降低了存内计算功耗;还由于采用了三角形排列方法将编码后的存储数据存储到存储器的单元矩阵中,因此,将输入数据转换为模拟信号并直接作用到该单元矩阵上,在列方向上产生的电流或电荷积累即为存储数据和输入数据乘加的计算结果,从而能够以这样的方式快速直接地得到存内模拟计算结果,提高了计算效率。
此外,由于输入的原始数据为数字信号,而通过本发明的存内计算方法得到的存内模拟计算结果也可以通过模数转换器转化为数字信号后再进行输出,也即输入输出数据都可以为数字信号,因此,可以实现高精度的存内计算。
上述实施例仅用于举例说明本发明的具体实施方式,而本发明不限于上述实施例的描述范围。
在上述实施例中,存储器内的原始数据在编码后按照三角形排列存储到存储器的单元矩阵中,在本发明的其他方案中,存储器内的原始数据在编码后也可以按照传统线性排列存储到存储器的单元矩阵中,同样也能实现本发明的技术效果。
在上述实施例中,输入数据为编码后的数字信号,将该数字信号直接输入到存储器的输入端进行存内计算,在本发明的其他方案中,也可以将输入数据通过数模转换器转换为相应的模拟信号,再将该模拟信号输入到存储器的输入端进行存内计算,同样也能实现本发明的技术效果。

Claims (7)

1.一种用于存内计算的数据编码方法,用于对原始数据进行针对于存内计算的数据编码,其特征在于,包括:
步骤A1,在所述原始数据的首位前和末尾后均添加1比特的0;
步骤A2,将所述原始数据的每两位相邻的比特位做差,相对高位的所述比特位为减数,相对低位的所述比特位为被减数,得到编码后的数据。
2.一种存内计算方法,其特征在于,包括:
步骤S1,通过数据编码方法对存储器内的原始数据进行编码,得到编码后的存储数据,通过所述数据编码方法对输入的原始数据进行编码,得到编码后的输入数据;
步骤S2,将所述存储数据按照预定的排列方法存储到所述存储器的单元矩阵中;
步骤S3,将所述输入数据输入到所述存储器的输入端,进行存内模拟计算,得到存内模拟计算结果,
其中,所述数据编码方法为权利要求1所述的数据编码方法。
3.根据权利要求2所述的存内计算方法,其特征在于:
其中,所述排列方法为三角形排列方法,该三角形排列方法包括以下步骤:
步骤B1,将所述存储数据按照从最高有效位到最低有效位的顺序横向排布开,得到横向存储数据,并将所述横向存储数据存储在所述存储器的第一行所述单元矩阵中;
步骤B2,将所述横向存储数据的每个比特位右移1位并移除最后一个所述比特位,在所述横向存储数据的最高有效位用0补充,然后将处理后的所述横向存储数据存储在所述存储器的下一行所述单元矩阵中;
步骤B3,重复步骤B2,重复次数为所述横向存储数据的比特位数-1。
4.根据权利要求2所述的存内计算方法,其特征在于:
其中,所述排列方法为线性排列方法。
5.根据权利要求2所述的存内计算方法,其特征在于:
其中,所述存内模拟计算具体为:
将所述输入数据作用到所述存储器的所述单元矩阵上,在所述单元矩阵的列方向上产生电流或电荷的积累,所述积累为所述存内模拟计算结果。
6.根据权利要求2所述的存内计算方法,其特征在于:
其中,将所述存内模拟计算结果作为存内计算结果进行输出。
7.根据权利要求2所述的存内计算方法,其特征在于:
其中,通过模数转换单元将所述存内模拟计算结果转化为数字信号,将所述数字信号作为存内计算结果进行输出。
CN202110974491.XA 2021-08-24 2021-08-24 一种用于存内计算的数据编码方法和存内计算方法 Pending CN113704139A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110974491.XA CN113704139A (zh) 2021-08-24 2021-08-24 一种用于存内计算的数据编码方法和存内计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110974491.XA CN113704139A (zh) 2021-08-24 2021-08-24 一种用于存内计算的数据编码方法和存内计算方法

Publications (1)

Publication Number Publication Date
CN113704139A true CN113704139A (zh) 2021-11-26

Family

ID=78654378

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110974491.XA Pending CN113704139A (zh) 2021-08-24 2021-08-24 一种用于存内计算的数据编码方法和存内计算方法

Country Status (1)

Country Link
CN (1) CN113704139A (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000000052A (ko) * 1999-08-12 2000-01-15 최명렬 액정 표시 장치 구동 시스템에서의 전자파 간섭을 감소시키기위한 직렬/병렬 시그널링 장치
US6125201A (en) * 1997-06-25 2000-09-26 Andrew Michael Zador Method, apparatus and system for compressing data
CN103873070A (zh) * 2014-03-20 2014-06-18 航天恒星科技有限公司 一种针对ccsds规范7/8码率ldpc的高速编码装置及编码方法
CN105594129A (zh) * 2013-10-03 2016-05-18 富士通株式会社 程序、编码装置以及编码方法
CN108694918A (zh) * 2017-06-09 2018-10-23 京东方科技集团股份有限公司 编码方法及装置、解码方法及装置及显示装置
CN111710356A (zh) * 2020-05-29 2020-09-25 北京大学 编码型闪存装置和编码方法
CN111816232A (zh) * 2020-07-30 2020-10-23 中科院微电子研究所南京智能技术研究院 一种基于4管存储结构的存内计算阵列装置
CN112486901A (zh) * 2020-11-30 2021-03-12 清华大学 基于乒乓缓冲的存内计算系统及方法
CN112989273A (zh) * 2021-02-06 2021-06-18 江南大学 一种利用补码编码进行存内运算的方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6125201A (en) * 1997-06-25 2000-09-26 Andrew Michael Zador Method, apparatus and system for compressing data
KR20000000052A (ko) * 1999-08-12 2000-01-15 최명렬 액정 표시 장치 구동 시스템에서의 전자파 간섭을 감소시키기위한 직렬/병렬 시그널링 장치
CN105594129A (zh) * 2013-10-03 2016-05-18 富士通株式会社 程序、编码装置以及编码方法
CN103873070A (zh) * 2014-03-20 2014-06-18 航天恒星科技有限公司 一种针对ccsds规范7/8码率ldpc的高速编码装置及编码方法
CN108694918A (zh) * 2017-06-09 2018-10-23 京东方科技集团股份有限公司 编码方法及装置、解码方法及装置及显示装置
CN111710356A (zh) * 2020-05-29 2020-09-25 北京大学 编码型闪存装置和编码方法
CN111816232A (zh) * 2020-07-30 2020-10-23 中科院微电子研究所南京智能技术研究院 一种基于4管存储结构的存内计算阵列装置
CN112486901A (zh) * 2020-11-30 2021-03-12 清华大学 基于乒乓缓冲的存内计算系统及方法
CN112989273A (zh) * 2021-02-06 2021-06-18 江南大学 一种利用补码编码进行存内运算的方法

Similar Documents

Publication Publication Date Title
WO2020238889A1 (zh) 一种基于Radix-4编码和差分权重的乘累加电路
US11669446B2 (en) Configurable in memory computing engine, platform, bit cells and layouts therefore
US20210357736A1 (en) Deep neural network hardware accelerator based on power exponential quantization
CN110427171A (zh) 可扩展的定点数矩阵乘加运算的存内计算结构和方法
CN112989273B (zh) 一种利用补码编码进行存内运算的方法
CN114499538A (zh) 多比特输入数据编码方法、装置、电子设备及存储介质
Chen et al. A high-throughput and energy-efficient RRAM-based convolutional neural network using data encoding and dynamic quantization
CN115018062A (zh) 一种基于fpga的卷积神经网络加速器
Tsai et al. RePIM: Joint exploitation of activation and weight repetitions for in-ReRAM DNN acceleration
CN113283587A (zh) 一种Winograd卷积运算加速方法及加速模块
CN113704139A (zh) 一种用于存内计算的数据编码方法和存内计算方法
CN112232499A (zh) 卷积神经网络加速器
CN113392963B (zh) 基于fpga的cnn硬件加速系统设计方法
Al Maharmeh et al. A comparative analysis of time-domain and digital-domain hardware accelerators for neural networks
CN111666063B (zh) 一种基于随机计算的增函数实现装置
CN113222158B (zh) 一种量子态的获得方法及装置
CN109117114B (zh) 一种基于查找表的低复杂度近似乘法器
Chen et al. An image recognition processor with time-domain accelerators using efficient time encoding and non-linear logic operation
CN113285725A (zh) 一种qc-ldpc编码方法及编码器
CN112734021A (zh) 一种基于位稀疏计算的神经网络加速方法
Guo et al. VCCIM: a voltage coupling based computing-in-memory architecture in 28 nm for edge AI applications
CN112002365A (zh) 基于多比特非易失存储器的并行逻辑运算方法及全加器
CN111181568A (zh) 数据压缩装置及方法、数据解压装置及方法
Ho et al. Approximate programming design for enhancing energy, endurance and performance of neural network training on nvm-based systems
JP7206531B2 (ja) メモリデバイスおよびその動作方法

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