一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种存内计算电路、存内可回写乘法计算电路及芯片

2023-02-04 18:15:24 来源:中国专利 TAG:


1.本发明涉及存内计算技术领域,特别是涉及一种存内计算电路,以及采用存内计算电路作为基础电路的存内可回写乘法计算电路及芯片。


背景技术:

2.传统的冯诺依曼架构把处理器计算单元和存储器相分离模式,当处理器进行运算时就从存储器中读取数据,之后在处理器处理完了数据之后再写回存储器。但是在机器学习和图像识别等计算量大的领域例如卷积神经网络中,内存运行速度与处理器速度的不同步,内存的存取速度严重滞后于处理器的计算速度,进而严重影响处理器的处理速率。
3.在内存中嵌入计算有两个显着的好处,首先,数据传入/传出内存大大减少,因为过滤器权重没有被显式读取,只有计算的输出被发送到内存之外。其次,可以利用cnn的大规模并行特性同时访问多个内存地址。因此,使用这种方法可以实现更高的内存带宽,克服了传统的“冯诺依曼瓶颈”带来的一些主要限制。
4.现有存内乘法运算大多是在模拟域进行的,在人们提出的模拟imc(in memory compute)体系结构中,通常是将一个操作数预先存储在sram阵列中,而另一个操作数被调制成字线的电压水平或字线脉冲的个数。然后根据位单元不同的放电量来表示两个操作数的乘法结果。当多行字线被同时激活,位线通过相应的位单元放电,使得乘法结果在位线上累积,最后由模数转换器(adc)将乘累加结果输出。这种在模拟域实现乘法的方法会面临读干扰、计算精度与adc量化等方面的挑战。


技术实现要素:

5.基于此,有必要针对存内模拟域乘法计算具有读干扰、计算精度误差和adc量化精度误差的问题,提供一种存内计算电路,以及采用存内计算电路作为基础电路的存内可回写乘法计算电路及芯片。
6.为实现上述目的,本发明采用了以下技术方案:
7.一种存内计算电路,包括自上而下依次设置的权重层、计算层和第一存储层和第二存储层。计算层包括两组输入端a0~a3和b0~b3,以及原码输出端s0~s4和反码输出端计算层的其中一组输入端b0~b3与权重层的4个存储节点qb
20
~qb
23
一一对应连接,另一组输入端a0~a3与第一存储层的4个存储节点q
10
~q
13
一一对应连接。计算层的原码输出端s1~s4与第一存储层的4个存储节点q
10
~q
13
一一对应连接,原码输出端s0分别与第二存储层的4个存储节点q
00
~q
03
相接。计算层的反码输出端与第一存储层的4个存储节点qb
10
~qb
13
一一对应连接,反码输出端分别与第二存储层的4个存储节点qb
00
~qb
03
连接。
8.权重层的输入端与控制信号线wl《2》相接,计算层的输入端b0~b3与输入信号线in_b相接,第一存储层的输入端与控制信号线wl《1》相接,第二存储层的输入端与控制信号
线wl《0》相接。
9.存内计算电路执行乘法操作时,将输入信号线in_b输入的四位权重与权重层存储的四位权重的乘法运算拆分成四周期的加法运算,并将运算结果存储至第一存储层和第二存储层内。
10.进一步的,计算层包括全加器、4个或非门以及20个开关管m0~m
19

11.4个或非门的其中一个输入端与输入信号线in_b相接。4个或非门的另一个输入端与权重层的4个存储节点qb
20
~qb
23
一一对应连接,并作为计算层的输入端b0~b3。4个或非门的输出端与全加器的4个输入端b0~b3一一对应相连。
12.开关管m
16
~m
19
的漏极与全加器的4个输入端a0~a3一一对应相连。开关管m
16
~m
19
的源极与第一存储层的4个存储节点q
10
~q
13
一一对应相连,并作为计算层的输入端a0~a3。开关管m
16
~m
19
的栅极与控制信号线wl_a相接。
13.全加器的输出端c0与m
15
的源极相接,输出端与m
14
的漏极相接。全加器的输出端s3与m
13
的源极相接,输出端与m
12
的漏极相接。全加器的输出端s2与m
11
的源极相接,输出端与m
10
的漏极相接。全加器的输出端s1与m9的源极相接,输出端与m8的漏极相接。全加器的输出端s0分别与m1、m3、m5、m7的源极相接,输出端分别与m0、m2、m4、m6的漏极相接。m8~m
15
的栅极与控制信号线wl_sh相接,m0、m1的栅极与控制信号线wl_sl0相接,m2、m3的栅极与控制信号线wl_sl1相接,m4、m5的栅极与控制信号线wl_sl2相接,m6、m7的栅极与控制信号线wl_sl3相接。m
15
、m
13
、m
11
、m9的漏极分别作为计算层的原码输出端s4~s1。m
14
、m
12
、m
10
、m8的源极分别作为计算层的反码输出端。m7、m5、m3、m1的漏极作为计算层的原码输出端s0。m6、m4、m2、m0的源极作为计算层的反码输出端。
14.进一步的,权重层、第一存储层以及第二存储层均由四个存储单元构成。存储单元采用包含6个晶体管的6t存储单元。
15.进一步的,6t存储单元包括2个pmos管p1~p2,以及4个nmos管n1~n4。其中,p1和n1构成一个反相器结构,p2和n2构成另一个反相器结构,n3和n4分别作为传输管。p1和p2的源极均接vdd,n1和n2的源极均接地。p1的漏极、n1的漏极、p2的栅极、n2的栅极相连作为存储节点q并接在n3的漏极上,n3的源极接位线bl。p2的漏极、n2的漏极、p1的栅极、n1的栅极相连作为存储节点qb并接在n4的漏极上,n3、n4的栅极接字线wl,n4的源极接位线blb。
16.进一步的,存内计算电路在执行写操作时,通过控制信号线wl《2》将四位二进制权重(w3,w2,w1,w0)写入到权重层,且通过控制信号线wl《1》和控制信号线wl《0》分别将第一存储层和第二存储层写“0”。
17.进一步的,存内计算电路实现乘法操作时,通过输入信号线in_b将外部四位二进制权重(i3,i2,i1,i0)输入至计算层,并与四位二进制权重(w3,w2,w1,w0)进行四周期运算,四周期运算方式如下:
18.第一周期。输入信号线in_b输入权重i0,该权重与权重层中的四位权重(w3,w2,w1,w0进行或非运算,运算结果输入到全加器的输入端b3~b0。令控制信号线wl_a=1,第一存储层存储的权重0000输入到全加器输入端a3~a0,全加器产生了五位原码输出以及五位反码输出,它们分别为s
40
~s
10
、s
00
和计算过程由下式所示:
19.[w3,w2,w1,w0]
·
i0=[w3i0,w2i0,w1i0,w0i0],
[0020]
[w3i0,w2i0,w1i0,w0i0] 0000|2=[0,w3i0,w2i0,w1i0,w0i0]
[0021]
=[s
40
,s
30
,s
20
,s
10
,s
00
]。
[0022]
随即令控制信号线wl_sh=1、wl_sl0=1,全加器输出结果的高四位存储到第一存储层中,最低位存储到第二存储层最低位中。
[0023]
第二周期。输入信号线in_b输入权重i1,操作过程与第一周期相同,区别在于第一存储层将存储的第一周期的高四位输出结果s
40
~s
10
输入至全加器输入端a3~a0,计算过程由下式所示:
[0024]
[w3i1,w2i1,w1i1,w0i1] [0,w3i0,w2i0,w1i0]
[0025]
=[s
41
,s
31
,s
21
,s
11
,s
01
]。
[0026]
随即令wl_sh=1,wl_sl1=1,全加器输出结果的高四位存储到第一存储层中,最低位存储到第二存储层次低位中。
[0027]
第三周期。输入信号线in_b输入权重i2,操作过程与第二周期相同,区别在于第一存储层将存储的第二周期的高四位输出结果s
41
~s
11
输入至全加器输入端a3~a0,计算过程由下式所示:
[0028]
[w3i2,w2i2,w1i2,w0i2] [s
41
,s
31
,s
21
,s
11
]
[0029]
=[s
42
,s
32
,s
22
,s
12
,s
02
]。
[0030]
随即令wl_sh=1,wl_sl2=1,全加器输出结果的高四位存储到第一存储层中,最低位存储到第二存储层次高位中。
[0031]
第四周期。输入信号线in_b输入权重i3,操作过程与第三周期相同,区别在于第一存储层将存储的第三周期的高四位输出结果s
42
~s
12
输入至全加器输入端a3~a0,计算过程由下式所示:
[0032]
[w3i3,w2i3,w1i3,w0i3] [s
42
,s
32
,s
22
,s
12
]
[0033]
=[s
43
,s
33
,s
23
,s
13
,s
03
]。
[0034]
随即令wl_sh=1,wl_sl3=1,全加器输出结果的高四位存储到第一存储层中,最低位存储到第二存储层最高位中。
[0035]
进而四位二进制权重(i3,i2,i1,i0)和四位二进制权重(w3,w2,w1,w0)乘法运算结果即为存储在第一存储层和第二存储层的[s
43
,s
33
,s
23
,s
13
,s
03
,s
02
,s
01
,s
00
]。
[0036]
进一步的,开关管m0~m
19
采用noms管。
[0037]
本发明还涉及一种存内可回写乘法计算电路,包括存内计算单元阵列、字线wl、位线对、输入信号线in_b、译码电路、开关电路、模式控制电路、时序电路、输出电路。
[0038]
存内计算单元阵列由nm个存内计算单元构成n
×
m的阵列形式。其中,n表示存内计算单元的行数,m表示存内计算单元阵列的列数。
[0039]
字线wl用于控制存内计算单元阵列中各存内计算单元中传输管在读写时的开启和关断。
[0040]
位线对包括2m对位线bl和blb。每列中的各个存内计算单元均连接在同一组位线bl和blb上。
[0041]
输入信号线in_b用于向存内计算单元阵列中的计算层输入四位二进制权重。
[0042]
译码电路用于对外部输入的行地址选择信号进行译码,并根据译码结果控制字线wl。
[0043]
开关电路用于选择输入信号线in_b输入的四位二进制权重,以配合存内计算单元阵列各存内计算单元不同周期的运算。
[0044]
模式控制电路用于对外部输入的模式选择信号进行处理,以调整电路的不同工作模式。
[0045]
时序电路用于向存内计算单元阵列提供读、写和乘法计算所需的脉冲信号。
[0046]
输出电路与存内计算单元存储阵列中每列存内计算单元连接的位线bl和blb通过灵敏放大器sa连接,进而输出任意列中存内计算单元存储的数据或运算结果。
[0047]
特别地,存内计算单元采用如前述的存内计算电路的电路结构,并可实现该存内计算电路的完整功能。
[0048]
本发明还涉及一种存内可回写乘法计算芯片,其由前述的存内可回写乘法计算电路封装而成。
[0049]
进一步的,存内可回写乘法计算芯片的接口至少包括电源接口vdd、地线接口vss、行地址选择接口a、使能信号接口cen、外部时钟信号接口clkin、行数据接口data_in、读写控制接口wen、模式选择接口mode、输入信号接口mul_in、输出信号接口out。
[0050]
其中,电源接口vdd用于接电源。地线接口vss用于接地。行地址选择接口a用于向电路输入行选通信号,行选通信号用于调整各存内计算单元在各条字线上的接入状态。使能信号接口cen用于输入调整电路运行状态的使能信号。外部时钟信号接口clkin用于向电路输入一个外部时钟信号,时钟信号用于调整电路的不同工作模式以及存内计算单元阵列中各存内计算单元所需的时钟频率。行数据接口data_in用于向存内计算单元阵列各存内计算单元输入一个预存储数据。读写控制接口wen用于输入调整各存内计算单元读写操作的控制信号。模式选择接口mode用于向电路输入一个模式选择信号,模式选择信号用于调整存内计算单元阵列中各存内计算单元在读写操作和乘法操作的切换,以调整电路不同的工作模式。输入信号接口mul_in用于向各个存内计算单元输入所需计算的外部权重。输出信号接口out用于输出各存内计算单元存储的数据或运算结果。
[0051]
本发明提供的技术方案,具有如下有益效果:
[0052]
本发明的电路把乘法从基于模拟域的运算引入到基于数字域的运算,避免了模拟域乘法所遇到的问题,其乘法结果可以回写在存内计算单元中,以便在合适的时候处理这些数据,其多周期的运算方案大大减小了面积开销,同时在其构成的阵列中,可以进行全阵列的运算。基于数字域的运算方法规避了读干扰、计算精度误差与adc量化精度误差所带来的影响,并且其计算结果能够回存的特点使得数据的处理更加灵活。
附图说明
[0053]
图1为本发明实施例1中的一种存内计算电路示意图;
[0054]
图2为基于图1的存内计算电路执行乘法运算的示意图;
[0055]
图3为基于图2的存内计算电路执行周期1计算的电路示意图;
[0056]
图4为基于图3的存内计算电路执行周期1回存的电路示意图;
[0057]
图5为基于图4的存内计算电路执行周期1回存的数据存储状态示意图;
[0058]
图6为基于图4的存内计算电路执行周期2计算的电路示意图;
[0059]
图7为基于图6的存内计算电路执行周期2回存的电路示意图;
[0060]
图8为基于图7的存内计算电路执行周期2回存的数据存储状态示意图;
[0061]
图9为基于图7的存内计算电路执行周期3计算的电路示意图;
[0062]
图10为基于图9的存内计算电路执行周期3回存的电路示意图;
[0063]
图11为基于图10的存内计算电路执行周期3回存的数据存储状态示意图;
[0064]
图12为基于图10的存内计算电路执行周期4计算的电路示意图;
[0065]
图13为基于图12的存内计算电路执行周期4回存的电路示意图;
[0066]
图14为基于图13的存内计算电路执行周期4回存的数据存储状态示意图;
[0067]
图15为基于图1的6t存储单元的电路示意图;
[0068]
图16为本发明实施例2的一种存内可回写乘法计算电路示意图;
[0069]
图17为本发明存内计算电路执行乘法运算过程的波形示意图。
具体实施方式
[0070]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0071]
实施例1
[0072]
请参阅图1,本实施例介绍了一种存内计算电路,包括自上而下依次设置的权重层、计算层和第一存储层和第二存储层。计算层包括两组输入端a0~a3和b0~b3,以及原码输出端s0~s4和反码输出端。计算层的其中一组输入端b0~b3与权重层的4个存储节点qb
20
~qb
23
一一对应连接,另一组输入端a0~a3与第一存储层的4个存储节点q
10
~q
13
一一对应连接。计算层的原码输出端s1~s4与第一存储层的4个存储节点q
10
~q
13
一一对应连接,原码输出端s0分别与第二存储层的4个存储节点q
00
~q
03
相接。计算层的反码输出端与第一存储层的4个存储节点qb
10
~qb
13
一一对应连接,反码输出端分别与第二存储层的4个存储节点qb
00
~qb
03
连接。
[0073]
权重层的输入端与控制信号线wl《2》相接,计算层的输入端b0~b3与输入信号线in_b相接,第一存储层的输入端与控制信号线wl《1》相接,第二存储层的输入端与控制信号线wl《0》相接。
[0074]
存内计算电路执行乘法操作时,将输入信号线in_b输入的四位权重与权重层存储的四位权重的乘法运算拆分成四周期的加法运算,并将运算结果存储至第一存储层和第二存储层内。
[0075]
基于前述的存内计算电路,该电路在执行乘法操作的逻辑为:外部数据通过四个周期输入到计算层,然后通过或非门分别与权重层的四位权重进行乘法运算,运算结果通过全加器进行累加。累加和可以回写至第一存储层和第二存储层。权重层、第一存储层以及第二存储层均由四个存储单元构成。计算层包括全加器、4个或非门以及20个开关管m0~m
19

[0076]
基于此,本实施例的电路工作于两种模式,一种是sram的读写模式,另一种是乘法模式。详细的计算过程如下:
[0077]
1.初始化:首先系统工作在sram模式,在该模式下将需要计算的四位二进制权重(w3,w2,w1,w0)写入到权重层。由于运算的结果需要存储在存储层,因此还需要把存储层的所有位都清零,即全部写0。
[0078]
2.乘法模式开启:此时系统由sram模式切换至cim(乘法)模式。在cim模式下,时序电路自动产生四个周期的脉冲用于计算乘法,在这四个周期中将处理外部输入数据(i3,i2,i1,i0),同时在相应周期内实现回存。
[0079]
3.乘法运算:请参阅图2,图2示出了存内计算单元执行乘法运算的电路示意图。该cim宏是实现4bits权重与外部4bits输入的乘积,四位权重(w3,w2,w1,w0)分别与外部权重in_b进行乘法运算(即与非运算),并将输出的四位结果送到全加器的一端,而全加器的另四位输入由第一存储层的高四位存储单元提供。因此,高四位存储单元起到两个作用,一方面是存储计算产生的高4bits值,另一方面是将该4bits值传给全加器。具体分为以下四个周期:
[0080]
a.周期1:
[0081]
计算:如图3所示,在此周期要处理外部输入i0,即in_b=i0,该数据与权重层中的四位权重(w3,w2,w1,w0)进行或非运算,产生的结果是(w3,w3,w3,w3)与i0的乘积即(w3,w2,w1,w0)
·
i0,该结果输入到全加器的输入端b3~b0。然后使控制信号wl_a=1,由于第一存储层高四位数据被初始化为0000,所以0000被送入全加器输入端a3~a0,全加器产生了五位原码输出以及五位反码输出,它们分别为s
40
~s
10
、s
00
和,计算过程由下式所示:
[0082]
[w3,w2,w1,w0]
·
i0=[w3i0,w2i0,w1i0,w0i0]
[0083]
[w3i0,w2i0,w1i0,w0i0] 0000|2=[0,w3i0,w2i0,w1i0,w0i0]
[0084]
=[s
40
,s
30
,s
20
,s
10
,s
00
]
[0085]
回存:如图4所示,全加器的输出扮演局部位线的角色,回存操作就如同6t单元的写操作,打开局部字线,即wl_sh=1,wl_sl0=1,此时全加器输出结果的高四位和最低位分别被存储到第一存储层和第二存储层中,该最低位也是[w3,w2,w1,w0]
×
[i3,i2,i1,i0]结果的最低位,即lsb。回存的数据存储状态如图5所示。
[0086]
b.周期2:
[0087]
计算:如图6所示,此周期外部输入数据为in_b=i1,整个过程与周期1类似,值得注意的是,由于第一存储层高四位数据是周期1中全加器产生的高四位数据,即s
40
~s
10
,这个结果继续被送入全加器输入端a3~a0。当控制信号wl_a=1时,全加器的计算过程由下式表示:
[0088]
[w3i1,w2i1,w1i1,w0i1] [0,w3i0,w2i0,w1i0]
[0089]
=[s
41
,s
31
,s
21
,s
11
,s
01
]
[0090]
换句话说,第一存储层的高四位6t单元存储的值作为中间结果,它在下一周期的计算中被重新利用。
[0091]
回存:如图7所示,同样打开局部字线,不同于周期1的是存储最低位打开wl_sl1,即wl_sh=1,wl_sl1=1,此时全加器输出结果的高四位和最低位分别被存储到第一存储层和第二存储层中,该最低位是[w3,w2,w1,w0]
·
[i3,i2,i1,i0]结果的次低位,即lsb 1。回存的数据存储状态如图8所示
[0092]
c.周期3:
[0093]
计算:如图9所示,此周期外部输入数据为in_b=i2,整个过程与周期1、2类似,此时第一存储层高四位数据是周期2中全加器产生的高四位数据,即s
41
~s
11
,这个结果继续被送入全加器输入端a3~a0。当控制信号wl_a=1时,全加器的计算过程由下式表示:
[0094]
[w3i2,w2i2,w1i2,w0i2] [s
41
,s
31
,s
21
,s
11
]
[0095]
=[s
42
,s
32
,s
22
,s
12
,s
02
]
[0096]
回存:如图10所示,打开局部字线即wl_sh=1,wl_sl2=1,此时全加器输出结果的高四位和最低位分别被存储到第一存储层和第二存储层中,该最低位是[w3,w2,w1,w0]
·
[i3,i2,i1,i0]结果的lsb 2。回存的数据存储状态如图11所示。
[0097]
d.周期4:
[0098]
计算:如图12所示,此周期外部输入数据为in_b=i3,此时第一存储层高四位数据是周期3中全加器产生的高四位数据,即s
42
~s
12
,这个结果继续被送入全加器输入端a3~a0。当控制信号wl_a=1时,全加器的计算过程由下式表示:
[0099]
[w3i3,w2i3,w1i3,w0i3] [s
42
,s
32
,s
22
,s
12
]
[0100]
=[s
43
,s
33
,s
23
,s
13
,s
03
]
[0101]
回存:如图13所示,打开局部字线即wl_sh=1,wl_sl3=1,此时全加器输出结果的高四位和最低位分别被存储到第一存储层和第二存储层中,该最低位是[w3,w2,w1,w0]
·
[i3,i2,i1,i0]结果的lsb 3。回存的数据存储状态如图14所示
[0102]
通过以上四个周期,第一存储层和第二存储层中的八位存储值为[s
43
,s
33
,s
23
,s
13
,s
03
,s
02
,s
01
,s
00
],这个8bits数据表示内部权重[w3,w2,w1,w0]与外部权重[i3,i2,i1,i0]的乘法结果。
[0103]
本实施例提及的权重层、第一存储层和第二存储层中的存储单元可以包含6个晶体管的6t存储单元,也可以采用常规的6t、8t、10t、12t
……
等多种具有不同数量晶体管的存储单元,但不局限于所提及的存储单元,只要能实现前述存储单元在电路中相同的功能即可。且电路内部的电路连接关系也不局限于某一种形式。
[0104]
为清楚介绍本实施例的电路,对权重层、计算层和第一存储层和第二存储层的结构提供一种具体的电路结构,具体如下:
[0105]
权重层、第一存储层和第二存储层中的存储单元采用6t存储单元,请参阅图15,6t存储单元包括2个pmos管p1~p2,以及4个nmos管n1~n4。其中,p1和n1构成一个反相器结构,p2和n2构成另一个反相器结构,n3和n4分别作为传输管。p1和p2的源极均接vdd,n1和n2的源极均接地。p1的漏极、n1的漏极、p2的栅极、n2的栅极相连作为存储节点q并接在n3的漏极上,n3的源极接位线bl。p2的漏极、n2的漏极、p1的栅极、n1的栅极相连作为存储节点qb并接在n4的漏极上,n3、n4的栅极接字线wl,n4的源极接位线blb。
[0106]
对于计算层,以开关管m0~m
19
采用noms管为例,具体连接方式为:4个或非门的其中一个输入端与输入信号线in_b相接。4个或非门的另一个输入端与权重层的4个存储节点qb
20
~qb
23
一一对应连接,并作为计算层的输入端b0~b3。4个或非门的输出端与全加器的4个输入端b0~b3一一对应相连。
[0107]
开关管m
16
~m
19
的漏极与全加器的4个输入端a0~a3一一对应相连。开关管m
16
~m
19
的源极与第一存储层的4个存储节点q
10
~q
13
一一对应相连,并作为计算层的输入端a0~a3。开关管m
16
~m
19
的栅极与控制信号线wl_a相接。
[0108]
全加器的输出端c0与m
15
的源极相接,输出端与m
14
的漏极相接。全加器的输出端s3与m
13
的源极相接,输出端与m
12
的漏极相接。全加器的输出端s2与m
11
的源极相接,输出端与m
10
的漏极相接。全加器的输出端s1与m9的源极相接,输出端与m8的漏极相接。全加器的输出端s0分别与m1、m3、m5、m7的源极相接,输出端分别与m0、m2、m4、m6的漏极相接。m8~m
15
的栅极与控制信号线wl_sh相接,m0、m1的栅极与控制信号线wl_sl0相接,m2、m3的栅极与控制信号线wl_sl1相接,m4、m5的栅极与控制信号线wl_sl2相接,m6、m7的栅极与控制信号线wl_sl3相接。m
15
、m
13
、m
11
、m9的漏极分别作为计算层的原码输出端s4~s1。m
14
、m
12
、m
10
、m8的源极分别作为计算层的反码输出端。m7、m5、m3、m1的漏极作为计算层的原码输出端s0。m6、m4、m2、m0的源极作为计算层的反码输出端。
[0109]
本实施例介绍的电路实现了4比特与4比特乘法存内计算,该电路把乘法从基于模拟域的运算引入到基于数字域的运算,避免了模拟域乘法所遇到的问题,如读干扰、计算精度与adc量化等方面的挑战。其乘法结果可以回写在存内计算单元(imcu)中,以便在合适的时候处理这些数据,其多周期的运算方案大大减小了面积开销。
[0110]
实施例2
[0111]
请参阅图16,本实施例介绍了一种存内可回写乘法计算电路,包括存内计算单元阵列、字线wl、位线对、输入信号线in_b、译码电路(预充控制/译码/字线驱动电路)、开关电路(外部权重数据驱动电路)、模式控制电路(模式控制驱动电路)、时序电路、输出电路(灵敏放大器和输出电路)。
[0112]
存内计算单元阵列由nm个存内计算单元构成n
×
m的阵列形式。其中,n表示存内计算单元的行数,m表示存内计算单元阵列的列数。
[0113]
字线wl用于控制存内计算单元阵列中各存内计算单元中传输管在读写时的开启和关断。
[0114]
位线对包括2m对位线bl和blb。每列中的各个存内计算单元均连接在同一组位线bl和blb上。
[0115]
输入信号线in_b用于向存内计算单元阵列中的计算层输入四位二进制权重。
[0116]
译码电路用于对外部输入的行地址选择信号进行译码,并根据译码结果控制字线wl。
[0117]
开关电路用于选择输入信号线in_b输入的四位二进制权重,以配合存内计算单元阵列各存内计算单元不同周期的运算。
[0118]
模式控制电路用于对外部输入的模式选择信号进行处理,以调整电路的不同工作模式。
[0119]
时序电路用于向存内计算单元阵列提供读、写和乘法计算所需的脉冲信号。
[0120]
输出电路与存内计算单元存储阵列中每列存内计算单元连接的位线bl和blb通过灵敏放大器sa连接,进而输出任意列中存内计算单元存储的数据或运算结果。
[0121]
特别地,存内计算单元采用如前述的存内计算电路的电路结构,并可实现该存内计算电路的完整功能。
[0122]
本实施例与实施例1的区别在于:本实施例将实施例1中的存内计算电路通过阵列分布的形成构成一个大规模的存内运算电路阵列,并与其他电路相配合,构成了完整的存
内可回写乘法计算电路。因此本实施例能够实现实施例1中的存储、乘法运算等操作。
[0123]
根据图16对本实施例的方案进行详细说明:在图16中,原始的6t存储单元的呈64*64分布,考虑到本实施例中的存内计算单元包含12个6t存储单元,且呈3*4分布的,因此最终设计的存内计算单元阵列的分布呈21*16分布。为了满足64*64的分布,由于一个存内计算单元只包含3行6t存储单元,在实际上存内计算单元阵列中根据存内计算单元分布,只具有63行6t存储单元,因此还具有一行仅以6t存储单元分布。最终的行列分布为21*16存内计算单元阵列加一行6t存储单元。
[0124]
此外,对于同一行的6t存储单元接同一条字线(信号控制线),同一行的计算层接同一条信号输入线;对于同一列的6t存储单元而言,左右两边分别连接位线blb和bl。
[0125]
例如,对第1行的存内计算单元而言,包含三行6t存储单元,最下行的所有6t存储单元接字线wl《0》,中间行的所有6t存储单元接wl《1》,最上行的所有6t存储单元接wl《2》;对第1列的存内计算单元而言,包含的四列6t存储单元,最右列的所有6t存储单元接位线blb《0》和bl《0》,右数第二列的所有6t存储单元接位线blb《1》和bl《1》,右数第三列的所有6t存储单元接位线blb《2》和bl《2》,右数第四列的所有6t存储单元接位线blb《3》和bl《3》。
[0126]
基于上述电路结构,存储功能的实现依然和原始sram存储单元一致,即通过字线和位线定位到各个存储单元,并获取存储单元对应的存储节点内的数据。
[0127]
需要说明的是,6t-sram存储单元、64
×
64的存内计算单元阵列分布等均是本实施例为了说明该方案而列举出的示例,并非对本案的限定,在其它实施例中,基于相同的技术思路,完全可以采用其它类型的存储单元构成更大规模的其它阵列进而得到所需的“计算单元阵列”。
[0128]
本实施例不仅具有和实施例1相同的效果,同时在实施例1的基础上构成的阵列中,可以进行全阵列的运算。
[0129]
实施例3
[0130]
本实施例介绍了一种存内可回写乘法计算芯片,其由前述存内可回写乘法计算电路封装而成。存内可回写乘法计算芯片的接口至少包括电源接口vdd、地线接口vss、行地址选择接口、使能信号接口cen、外部时钟信号接口clkin、行数据接口data_in、读写控制接口wen、模式选择接口mode、输入信号接口mul_in、输出信号接口out。
[0131]
电源接口vdd用于接电源。地线接口vss用于接地。行地址选择接口a用于向电路输入行选通信号,行选通信号用于调整各存内计算单元在各条字线上的接入状态。使能信号接口cen用于输入调整电路运行状态的使能信号。外部时钟信号接口clkin用于向电路输入一个外部时钟信号,时钟信号用于调整电路的不同工作模式以及存内计算单元阵列中各存内计算单元所需的时钟频率。行数据接口data_in用于向存内计算单元阵列各存内计算单元输入一个预存储数据。读写控制接口wen用于输入调整各存内计算单元读写操作的控制信号。模式选择接口mode用于向电路输入一个模式选择信号,模式选择信号用于调整存内计算单元阵列中各存内计算单元在读写操作和乘法操作的切换,以调整电路不同的工作模式。输入信号接口mul_in用于向各个存内计算单元输入所需计算的外部权重。输出信号接口out用于输出各存内计算单元存储的数据或运算结果。
[0132]
本实施通过封装成芯片的模式,更易于存内可回写乘法计算电路的推广与应用。
[0133]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实
施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0134]
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献