一种带符号的存内计算装置的制作方法

文档序号:30103648发布日期:2022-05-18 13:54阅读:113来源:国知局
一种带符号的存内计算装置的制作方法

1.本发明涉及存内计算技术领域,特别是涉及一种带符号的存内计算装置。


背景技术:

2.深度卷积神经网络(dcnns)在人工智能等领域发展迅速,随着它的逐步发展,需要越来越多的考虑尺寸的大小、效率和能耗等方面的问题。传统的计算过程中,权重是在存储器和运算单元之间移动作用的,这不符合低功耗的要求。内存计算(imc)对dcnn加速越来越有吸引力。传统的存算芯片多采用电压或者电平进行计算,并且单比特计算较多。


技术实现要素:

3.有鉴于此,本发明提供了一种带符号的存内计算装置,改变了传统的计算操作,通过额外的计算单元降低了读写干扰的影响,实现了全精度的计算。
4.为实现上述目的,本发明提供了如下方案:一种带符号的存内计算装置,包括:输入控制模块、位线驱动模块、字线驱动模块、8个乘累加运算模块和8个乘累加读出计算模块;所述乘累加运算模块包括64组存储计算单元,所述存储计算单元包括符号位计算子单元和4个数据位计算子单元;所述符号位计算子单元包括权重符号位存储电路、异或门xor和非门;所述权重符号位存储电路分别与所述位线驱动模块和所述字线驱动模块连接;所述权重符号位存储电路对权重的符号位进行存储;所述异或门xor的第一端与所述权重符号位存储电路的连接点q连接,所述异或门xor的第二端用于输入数据的符号位;所述异或门xor的第三端与所述非门的第一端连接;所述异或门xor对权重的符号位与数据的符号位进行异或运算,得到异或值;所述数据位计算子单元包括权重存储电路、三极管m9、三极管m7和三极管m8;所述权重存储电路分别与所述位线驱动模块和所述字线驱动模块连接;所述权重存储电路对权重进行存储;所述三极管m9的第一端用于输入与数据对应的脉冲;所述三极管m9的第二端与所述权重存储电路的连接点连接,所述三极管m9的第三端、所述三极管m7的第三端和所述三极管m8的第二端之间相连接;所述三极管m7的第一端与所述非门的第一端连接;所述三极管m8的第一端与所述非门的第二端连接;所述三极管m9对权重和数据进行乘法运算,得到输出信号;所述三极管m7的第二端和所述三极管m8的第三端对所述输出信号进行输出;当所述异或值为0时,所述三极管m8导通,当所述异或值为1时,所述三极管m7导通;所述乘累加读出计算模块对每组所述存储计算单元中第i个所述数据位计算子单元得到的所述输出信号进行累加求和,得到求和信号,所述求和信号为4个;所述乘累加读出计算模块对各所述求和信号进行模数转换后,进行按位加法运算,得到计算结果。
5.优选地,所述权重符号位存储电路和所述重存储电路均为8t静态随机存取存储器
(static random-access memory,简称sram)。
6.优选地,所述权重符号位存储电路包括三极管m1、三极管m2、三极管m3、三极管m4、三极管m5和三极管m6;所述三极管m1的第二端和所述三极管m2的第二段均与电源线vdd连接;所述三极管m1的第三端、所述三极管m5的第二端、所述三极管m3的第三端、所述三极管m2的第一端和所述三极管m6的第一端均与连接点q连接;所述三极管m5的第三端和所述三极管m6的第三端均与接地线vss连接;所述三极管m3的第一端和所述三极管m4的第一端均通过字线wl与所述字线驱动模块连接;所述三极管m3的第二端通过位线bl与所述位线驱动模块连接;所述三极管m4的第三端通过位线blb与所述位线驱动模块连接;所述三极管m4的第二端、所述三极管m2的第三端、所述三极管m6的第二端、所述三极管m1的第一端和所述三极管m5的第一端均与连接点连接。
7.优选地,所述三极管m1和所述三极管m2均为pmos管,所述三极管m3、所述三极管m4、所述三极管m5、所述三极管m6、所述三极管m9、所述三极管m7和所述三极管m8均为nmos管。
8.优选地,所述乘累加读出计算模块包括正负结合单元、模数转换单元和加法器;所述正负结合单元分别与所述三极管m7的第二端和所述三极管m8的第三端连接,所述正负结合单元对每组所述存储计算单元中第i个所述数据位计算子单元得到的所述输出信号进行累加求和,得到4个所述求和信号;所述模数转换单元对各所述求和信号进行模数转换,得到4个数字量信号;所述加法器对4个所述数字量信号进行按位加法运算,得到所述计算结果。
9.优选地,所述输入控制模块将数据分为高位数据和低位数据;所述高位数据和所述低位数据分为两个周期进行计算。
10.根据本发明提供的具体实施例,本发明公开了以下技术效果:本发明涉及一种带符号的存内计算装置,包括:输入控制模块、位线驱动模块、字线驱动模块、8个乘累加运算模块和8个乘累加读出计算模块;所述乘累加运算模块包括64组存储计算单元,所述存储计算单元包括符号位计算子单元和4个数据位计算子单元;所述符号位计算子单元包括权重符号位存储电路、异或门xor和非门;所述数据位计算子单元包括权重存储电路、三极管m9、三极管m7和三极管m8。本发明可以有效的避免读写干扰问题,增加计算结果的准确性。本发明分周期借助脉冲宽度的不同实现了多比特数据的输入,避免了单周期实现多比特计算对模数转换精度的要求,在相对较低的功耗的情况下实现了全精度的多比特乘累加存内计算。
附图说明
11.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
12.图1为本发明带符号的存内计算装置结构图;
图2为本发明存储计算单元电路结构图;图3为本发明乘累加读出计算模块结构图;图4为本发明仿真验证结果示意图。
13.符号说明:1-输入控制模块,2-位线驱动模块,3-字线驱动模块,4-乘累加运算模块,5-乘累加读出计算模块,51-正负结合单元,52-模数转换单元,53-加法器,511-正负结合电路,521-模数转换电路。
具体实施方式
14.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
15.本发明的目的是提供一种带符号的存内计算装置,改变了传统的计算操作,通过额外的计算单元降低了读写干扰的影响,实现了全精度的计算。
16.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
17.图1为本发明带符号的存内计算装置结构图。如图1所示,本发明提供了一种带符号的存内计算装置,包括:输入控制模块1、位线驱动模块2、字线驱动模块3、8个乘累加运算模块4和8个乘累加读出计算模块5。
18.所述乘累加运算模块4包括64组存储计算单元。
19.如图2所示,所述存储计算单元包括符号位计算子单元和4个数据位计算子单元。所述存储计算单元呈64行
×
5列阵列分布。
20.所述符号位计算子单元包括权重符号位存储电路、异或门xor和非门。
21.所述数据位计算子单元包括权重存储电路、三极管m9、三极管m7和三极管m8。
22.所述权重符号位存储电路和所述权重存储电路均包括三极管m1、三极管m2、三极管m3、三极管m4、三极管m5和三极管m6。
23.如图3所示,所述乘累加读出计算模块5包括正负结合单元51、模数转换单元52和加法器53。所述正负结合单元51包括4个正负结合电路511,所述模数转换单元52包括4个模数转换电路521。
24.所述权重符号位存储电路分别与所述位线驱动模块2和所述字线驱动模块3连接;所述异或门xor的第一端与所述权重符号位存储电路的连接点q连接;所述异或门xor的第三端与所述非门的第一端连接。
25.所述权重存储电路分别与所述位线驱动模块2和所述字线驱动模块3连接;所述三极管m9的第二端与所述权重存储电路的连接点连接,所述三极管m9的第三端、所述三极管m7的第三端和所述三极管m8的第二端之间相连接;所述三极管m7的第一端与所述非门的第一端连接;所述三极管m8的第一端与所述非门的第二端连接。
26.所述三极管m1的第二端和所述三极管m2的第二段均与电源线vdd连接;所述三极管m1的第三端、所述三极管m5的第二端、所述三极管m3的第三端、所述三极管m2的第一端和所述三极管m6的第一端均与连接点q连接。
27.所述三极管m5的第三端和所述三极管m6的第三端均与接地线vss连接;所述三极管m3的第一端和所述三极管m4的第一端均通过字线wl与所述字线驱动模块3连接;所述三极管m3的第二端通过位线bl与所述位线驱动模块2连接;所述三极管m4的第三端通过位线blb与所述位线驱动模块2连接。
28.所述三极管m4的第二端、所述三极管m2的第三端、所述三极管m6的第二端、所述三极管m1的第一端和所述三极管m5的第一端均与连接点连接。
29.本实施例中,所述三极管m1和所述三极管m2均为pmos管,所述三极管m3、所述三极管m4、所述三极管m5、所述三极管m6、所述三极管m9、所述三极管m7和所述三极管m8均为nmos管。
30.每列所述数据位计算子单元对应一个所述正负结合电路511,每个所述正负结合电路511对应一个所述模数转换电路521。
31.本发明具体原理如下:所述输入控制模块把输入的数据分为高两位数据和低两位数据,控制在两个周期内分别进行计算。
32.所述存储计算单元从左到右分别存储的是权重的符号位,权重的第4、3、2、1位。三极管m1至三极管m6用于存储权重,三极管m7和三极管m8用选择输出到正端(pos)还是负端(neg),pos端表示计算的结果是正数,neg端表示计算的结果是负数,m9则用于实现权重和数据的乘法运算。进行权重存储的时候,权重要存到64行中的任何一行的时候,首先所述字线驱动模块就使该行对应的字线wl的电压升高,如果存储的是权重的符号位,则正数时所述位线驱动模块就让位线bl的电压为0,位线blb的电压为1;负数就让位线bl的电压为1,位线blb的电压为0;如果存储的是权重的数据位,权重大小是1,就让位线bl的电压为1,位线blb的电压为0;如果存储的权重是0的时候,让位线bl的电压为0,位线blb的电压为1。进行计算的时候,首先是数据的输入,输入的数据分为两个部分,一部分是数据的符号位,输入到in_pn中,和权重的符号位进行一个异或,两者同为正数或负数的时候,输出结果为0;两者一正一负的时候输出的结果为1。这个部分控制的是三极管m7和三极管m8的导通情况,当输出结果为0的时候,三极管m8导通,使得pos连接到正负结合电路中,输出的结果为正数;当输出结果为1的时候,m7导通,使得neg连接到正负结合电路中,输出的结果为负数。其次是数据的数据位输入的时候,因为数据的大小是4bit的数,因此采用分两个周期输入计算的方式实现,第一个周期输入数据的低两位,第二个周期输入数据的高两位,数据的大小通过借助脉冲宽度大小的不同来表示,2bit的输入意味着脉冲宽度一共4种可能性。脉冲由in端口输入,不同的脉宽表示不同的放电时间,表现在neg和pos上的电压,这种电压就是一次乘法运算的结果。每列64个8t sram单元,每次计算只有16个单元开启,表示一个多比特乘累加运算单元进行16个2bit*1bit的运算。这16个单元都会对pos或neg产生放电的效果,最终的pos和neg上的电压,表示的就是这16个乘法运算中正和负的结果加和的结果,经过正负结合电路最终得出16个2bit*1bit的计算结果。第一个周期实现的是低两位的运算,第二个周期完成了高两位的运算,把这两个计算的结果进行累加就实现了最终的16个4bit*1bit的计算。因为一组有4列来表示全部权重的数据大小,因此,4列就代表了最终的16个4bit*4bit的计算的结果。
33.正负结合电路把pos和neg上的电压进行组合加法,得出一个电压差,这个电压差
就是一列16个带符号的运算的和;6bit的模数转换电路用于把模拟量的电压差转化为6bit的数字值,加法器首先实现两个周期计算结果的累加,产生4个7bit的数据,然后对4个7bit的数据进行按位加法的运算,实现了最终12bit的计算结果的输出。
34.对本发明所提出的装置仿真验证,设置第一个周期的4个模数转化的6bit数为101101(45)第二个周期的4个模数转化的6bit数为101100(44),计算的结果为1335,如图4所示,符合加权操作的结果。
35.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
36.本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1