一种基于sram存内计算阵列的计算系统及方法转让专利

申请号 : CN202210051274.8

文献号 : CN114063975B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 乔树山李润成尚德龙周玉梅

申请人 : 中科南京智能技术研究院

摘要 :

本发明涉及一种基于sram存内计算阵列的计算系统及方法。该系统中数据地址生成器与sram存内计算阵列连接;数据地址生成器根据被乘数输出对应booth编码操作的地址;sram存内计算阵列用于根据地址写入的被乘数确定部分积;sram存内计算阵列的每一列对应连接一个电容;每一组均依次与一MUX器件和一模数转换器连接;MUX器件将每一组内设定数目个电容的设定数目路结果合成一路结果;模数转换器将一路结果进行模数转换;拼接乘模块与多个模数转换器连接;拼接乘模块将多个模数转换后的一路结果进行拼接乘,确定计算结果。本发明能够降低编码操作产生的功耗以及延时。

权利要求 :

1.一种基于sram存内计算阵列的计算系统,其特征在于,包括:数据地址生成器、sram存内计算阵列、拼接乘模块、多个电容、多个MUX器件以及多个模数转换器;

所述数据地址生成器与sram存内计算阵列连接;所述数据地址生成器用于根据被乘数输出对应booth编码操作的地址;所述sram存内计算阵列用于根据数据地址生成器输出的booth编码操作的地址写入被乘数,并根据所述被乘数来确定部分积;

所述sram存内计算阵列的每一列对应连接一个电容;以设定数目的列为一组;每一组均依次与一所述MUX器件和一所述模数转换器连接;

所述MUX器件用于将每一组内设定数目个电容的设定数目路结果合成一路结果;

所述模数转换器用于将一路结果进行模数转换;

所述拼接乘模块分别与多个模数转换器连接;

所述拼接乘模块用于将多个模数转换后的一路结果进行拼接乘,确定计算结果;

所述电容的个数为16个,每一个按列求和的sram存内计算将结果反应在电容的充放电结果上,每一列对应的一个电容,一共16列,共连接了16个电容,每个电容上都是一位的数据,4个电容一组分成四组。

2.根据权利要求1 所述的一种基于sram存内计算阵列的计算系统,其特征在于,所述MUX器件和所述模数转换器的个数均为4个。

3.一种基于sram存内计算阵列的计算方法,应用于权利要求1‑2任意一项所述的一种基于sram存内计算阵列的计算系统,其特征在于,所述计算方法包括:利用数据地址生成器,生成被乘数的地址;同时根据被乘数确定对应的补码;

根据被乘数的地址将所述被乘数和对应的补码写入sram存内计算阵列;

对写入后的sram存内计算阵列中每一列进行求和,确定计算结果。

4.根据权利要求3所述的一种基于sram存内计算阵列的计算方法,其特征在于,所述根据被乘数的地址将所述被乘数和对应的补码写入sram存内计算阵列,具体包括:所述sram存内计算阵列根据所述被乘数和对应的补码确定部分积。

5.根据权利要求3所述的一种基于sram存内计算阵列的计算方法,其特征在于,所述对写入后的sram存内计算阵列中每一列进行求和,确定计算结果,具体包括:以每4列为一组,分别确定每一组的求和结果;

将所有组的求和结果进行拼接乘,确定计算结果。

说明书 :

一种基于sram存内计算阵列的计算系统及方法

技术领域

[0001] 本发明涉及sram存内计算阵列领域,特别是涉及一种基于sram存内计算阵列的计算系统及方法。

背景技术

[0002] 卷积神经网络作为第二代神经网络,目前在人脸识别,语音识别等领域被得到广泛的应用。Booth编码是一种乘法运算的编码方式,而由于卷积神经网络中往往会多次重复
使用同样的乘数,造成多次的编码运算产生不必要的延迟和功耗;传统的乘法器在进行一
次运算需要较长的延时,并且在数据传输过程中会消耗更多的能量。
[0003] 因此,亟需一种降低编码操作产生的功耗以及延时的计算系统或方法。

发明内容

[0004] 本发明的目的是提供一种基于sram存内计算阵列的计算系统及方法,能够降低编码操作产生的功耗以及延时。
[0005] 为实现上述目的,本发明提供了如下方案:
[0006] 一种基于sram存内计算阵列的计算系统,包括:数据地址生成器、sram存内计算阵列、拼接乘模块、多个电容、多个MUX器件以及多个模数转换器;
[0007] 所述数据地址生成器与sram存内计算阵列连接;所述数据地址生成器用于根据被乘数输出对应booth编码操作的地址;所述sram存内计算阵列用于根据地址写入的被乘数
确定部分积;
[0008] 所述sram存内计算阵列的每一列对应连接一个电容;以设定数目的列为一组;每一组均依次与一所述MUX器件和一所述模数转换器连接;
[0009] 所述MUX器件用于将每一组内设定数目个电容的设定数目路结果合成一路结果;
[0010] 所述模数转换器用于将一路结果进行模数转换;
[0011] 所述拼接乘模块分别与多个模数转换器连接;
[0012] 所述拼接乘模块用于将多个模数转换后的一路结果进行拼接乘,确定计算结果。
[0013] 可选地,所述电容的个数为16个。
[0014] 可选地,所述MUX器件和所述模数转换器的个数均为4个。
[0015] 可选地,所述设定数目为4。
[0016] 一种基于sram存内计算阵列的计算方法,应用于所述的一种基于sram存内计算阵列的计算系统,所述计算方法包括:
[0017] 利用数据地址生成器,生成被乘数的地址;同时根据被乘数确定对应的补码;
[0018] 根据被乘数的地址将所述被乘数和对应的补码写入sram存内计算阵列;
[0019] 对写入后的sram存内计算阵列中每一列进行求和,确定计算结果。
[0020] 可选地,所述根据被乘数的地址将所述被乘数和对应的补码写入sram存内计算阵列,具体包括:
[0021] 所述sram存内计算阵列根据所述被乘数和对应的补码确定部分积。
[0022] 可选地,所述对写入后的sram存内计算阵列中每一列进行求和,确定计算结果,具体包括:
[0023] 以每4列为一组,分别确定每一组的求和结果;
[0024] 将所有组的求和结果进行拼接乘,确定计算结果。
[0025] 根据本发明提供的具体实施例,本发明公开了以下技术效果:
[0026] 本发明所提供的一种基于sram存内计算阵列的计算系统及方法,通过将booth编码的乘法运算,分为多路进行,避免了传统的乘法器在进行一次运算导致的长延时和消耗
较多能量的现象。本发明减小了booth编码过程的延时,并且消除了部分数据传输过程中的
能量消耗。

附图说明

[0027] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施
例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图
获得其他的附图。
[0028] 图1为本发明所提供的一种基于sram存内计算阵列的计算系统结构示意图;
[0029] 图2为本发明所提供的一种基于sram存内计算阵列的计算方法流程示意图。

具体实施方式

[0030] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
[0031] 本发明的目的是提供一种基于sram存内计算阵列的计算系统及方法,能够降低编码操作产生的功耗以及延时。
[0032] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0033] 图1为本发明所提供的一种基于sram存内计算阵列的计算系统结构示意图,如图1所示,本发明所提供的一种基于sram存内计算阵列的计算系统,包括:数据地址生成器(如
图1中的Address_generator)、sram存内计算阵列、拼接乘模块、多个电容(如图1中的C)、多
个MUX器件(如图1中的MUX)以及多个模数转换器(如图1中的ADC);
[0034] 所述数据地址生成器与sram存内计算阵列连接;所述数据地址生成器用于根据被乘数输出对应booth编码操作的地址;所述sram存内计算阵列用于根据地址写入的被乘数
确定部分积;
[0035] 所述sram存内计算阵列的每一列对应连接一个电容;以设定数目的列为一组;每一组均依次与一所述MUX器件和一所述模数转换器连接;
[0036] 所述MUX器件用于将每一组内设定数目个电容的设定数目路结果合成一路结果;
[0037] 所述模数转换器用于将一路结果进行模数转换;
[0038] 所述拼接乘模块分别与多个模数转换器连接;
[0039] 所述拼接乘模块用于将多个模数转换后的一路结果进行拼接乘,确定计算结果。
[0040] 为了减小模数转换器带来的功耗,将累加结果的电容分为四个一组,分四个周期完成模数转换转换,即将电容上的电荷反映出的模拟数据转化为二进制的数字数据,通过
四次转换,拼接乘最后的16bit的结果,也即是这次乘法计算的积。
[0041] 其中,基2的booth编码通常有写0、加被乘数、减被乘数、加两倍的被乘数、减两倍的被乘数以及减被乘数这几种操作,根据booth编码的规则,乘数三位一组,每组之间重叠
一位(例如01111110,分为011,111,111,100,根据表得到操作);先取得被乘数的补码;其次
将这些8bit的数高位都填上0补充为16bit;写0的位不做操作,加被乘数则把被乘数写入一
行(基于sram的存内计算都具有sram的读写功能,该操作即是sram的写入操作,按图1中的
方式写入根据表中操作后得到的部分积,部分积如Partial‑product【0】‑Partial‑product
【7】),减被乘数则写入被乘数对应的补码,两倍的被乘数将被乘数或者其补码右移后写入。
这样,在sram存内计算阵列中完成了这些booth编码乘法器中的基本操作,如表1所示。
[0042] 表1
[0043]
[0044] 作为一个具体的实施例,所述电容的个数为16个。每一个按列求和的sram存内计算通常会将结果反应在电容的充放电结果上。每一列对应的一个电容。一共16列,接了16个
电容,每个电容上都是一位的数据,4个电容一组分成四组。
[0045] 所述MUX器件和所述模数转换器的个数均为4个。
[0046] 所述设定数目为4。
[0047] 如图2所示,本发明所提供的一种基于sram存内计算阵列的计算方法,应用于所述的一种基于sram存内计算阵列的计算系统,所述计算方法包括:
[0048] S201,利用数据地址生成器,生成被乘数的地址;同时根据被乘数确定对应的补码;
[0049] 在S201之前还包括:
[0050] 将sram存内计算阵列中写满0,从而完成对空位的补位,
[0051] S202,根据被乘数的地址将所述被乘数和对应的补码写入sram存内计算阵列;
[0052] S202所述根据被乘数的地址将所述被乘数和对应的补码写入sram存内计算阵列,具体包括:
[0053] 所述sram存内计算阵列根据所述被乘数和对应的补码确定部分积。
[0054] S203,对写入后的sram存内计算阵列中每一列进行求和,确定计算结果。
[0055] S203具体包括:
[0056] 以每4列为一组,分别确定每一组的求和结果;
[0057] 将所有组的求和结果进行拼接乘,确定计算结果。
[0058] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统
而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说
明即可。
[0059] 本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据
本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不
应理解为对本发明的限制。