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

多位点积运算逻辑方法、多位点积和并行异或计算电路

2023-02-06 09:53:11 来源:中国专利 TAG:


1.本发明涉及存内计算技术领域,特别是涉及一种多位点积运算逻辑方法、多位点积和并行异或计算电路。


背景技术:

2.随着存内计算的发展,现阶段可以直接利用存储阵列中的数值进行模拟点积计算,该运算方式可应用在多种环境中,例如像机器学习等这类应用程序中所需要大量重复的点积运算,利用多位向量矩阵乘法(vmm)能够加大深度神经网络(dnn)推理的效率和速度。
3.考虑到sram是一种非易失性记忆体结构,它已被证明是cim体系中的成熟结构之一。基于sram的存内计算能够大幅减少数据的搬移,进而节省数据搬移所需的时间和能耗开销。
4.现有的多位乘法设计是在两边实现乘法操作,原理是通过向左右两边位线预充得到不同电压,左边乘法通过位线充电逻辑实现,右边的乘法通过放电逻辑实现,这时存储节点两边同时发生电荷转移,同一列的电压累积在位线上得到模拟结果,通过底部的adc单元可以将模拟电压量化得到所需结果。
5.但这种方式在所有字线同时开启时会发生伪写,由于nmos的阈值电压损失,导致左边位线充电逻辑的线性度较差,进而导致最终量化的结果因误差大而不能使用。


技术实现要素:

6.基于此,有必要针对现有多位乘法运算出现字线伪写造成的量化结果误差大的问题,提供一种多位点积运算逻辑方法、多位点积和并行异或计算电路。
7.为实现上述目的,本发明采用了以下技术方案:
8.一种多位点积运算逻辑方法,其应用于存内计算电路。存内计算电路包括由多个存储单元构成的存储阵列。存储单元采用由八个晶体管构成的8tsram存储单元。每个存储单元连接四条独立的字线wl1~wl4。每列存储单元共享位线bl1、bl2、blb1、blb2。每列位线bl1、bl2和blb1、blb2分别接在4个模数转换器adc1、adc2、adc3、adc4上。
9.多位点积运算逻辑方法包括以下步骤:
10.将一个4位操作数的电压信号通过字线wl1、wl2、wl3、wl4同步输入至预存有1位操作数的存储单元内。
11.采集该存储单元的位线bl1、bl2和blb1、blb2的电压信号,并分别转换成表征电压信号所代表的运算结果的二进制数。
12.将表征bl1、bl2电压信号的1个二进制数作为被减数,与表征wl1、wl2中高电平个数的1个二进制数进行差值计算,得到1个表征bl1、bl2差值结果的二进制数。
13.将表征差值结果的二进制数进行左移两位的移位操作后,并与表征blb1、blb2运算结果的二进制数相加计算,得到4位操作数与1位操作数的点积运算结果。
14.进一步的,在4位操作数的电压信号输入至存储单元前,需将位线bl1、bl2和blb1、blb2的电压信号预充至高电平。高电平的数值至少为1.2v。
15.进一步的,存内计算电路中每列位线bl1、bl2和blb1、blb2尾端分别连接灵敏放大器sa,灵敏放大器sa与模数转换器adc1~adc4之间通过功能选择开关相连,用以控制每列位线bl1、bl2和blb1、blb2与模数转换器adc1~adc4之间的通断。
16.进一步的,8tsram存储单元包括nmos晶体管n0~n5和pmos晶体管p0~p1,p0和n0构成一个反相器,p1和n1构成另一个反相器,两个反相器形成交叉耦合结构对存储节点q、qb的数据进行锁存,p0的源极与p1源极电连接到vcc,开启存储节点q、qb节点对电源通路,n0的源极与n1的源极连接到vss,开启存储节点q、qb节点对地通路。n2、n3、n4和n5作为传输管,各自位于交叉耦合结构左右两侧作为sram双端口数据通路。n2和n4构成左通路,n3和n5构成右通路。
17.进一步的,传输管n2、n3、n4和n5的栅长均相同。传输管n2、n3、n4和n5的栅宽均相同。
18.进一步的,所有存储单元实现sram模式包括保持操作、写操作和读操作。存储单元执行保持操作时,wl1~wl4均保持低电平。p0、n0、p1和n1构成的锁存结构将锁存存储节点q和qb的数据。存储单元执行写操作时,将写字线wl1和wl3被拉为高电平,同时将需要写入的数据加载到写位线上。存储单元执行读操作时,读位线bl1和blb1预充至高电平,读字线wl1或wl3被拉为高电平,经过灵敏放大器sa放大读位线bl1和blb1上的电平信号后,读取结果。
19.进一步的,存储单元实现写操作的具体方式如下:若在写操作前存储单元存储节点q为高电平,qb为低电平,即存储数据为“1”。在写入数据“0”时,写字线wl1和wl3被拉为高电平,同时将需要写入的数据“0”加载到写位线上,即bl1为低电平,blb1为高电平。bl1通过n2下拉存储节点q,blb1通过n3上拉存储节点qb,p0、n0、p1和n1构成的锁存结构被打破,数据“0”写入存储节点q和qb内。
20.若在写操作前存储单元存储节点q为低电平,qb为高电平,即存储数据为“0”。在写入数据“1”时,写字线wl1和wl3被拉为高电平,同时将需要写入的数据“1”加载到写位线上,即bl1为高电平,blb1为低电平。bl1通过n2上拉存储节点q,blb1通过n3下拉存储节点qb,p0、n0、p1和n1构成的锁存结构被打破,数据“1”写入存储节点q和qb内。
21.进一步的,存储单元实现读操作的具体方式如下:若在读操作前存储单元存储节点q为高电平,qb为低电平,即存储数据为“1”。在读操作开始时,读位线bl1和blb1预充至高电平,读字线wl1或wl3被拉为高电平,n2或n3被开启。读位线bl1仍保持高电平,读位线blb1的电平受到存储节点qb影响被拉低,经过灵敏放大器sa放大后,读出结果为“1”。
22.若在读操作前存储单元存储节点q为低电平,qb为高电平,即存储数据为“0”。在读操作开始时,读位线bl1和blb1预充至高电平,读字线wl1或wl3被拉为高电平,n2或n3被开启。读位线blb1仍保持高电平,读位线bl1的电平受到存储节点q影响被拉低,经过灵敏放大器sa放大后,读出结果为“0”。
23.本发明还涉及一种多位点积和并行异或计算电路,包括存储阵列、字线组、位线组、行列解码器、字线驱动模块、预充电模块、读写电路模块、时序控制模块、adc模块、移位计算模块。
24.其中,存储阵列由n2个相同的存储单元构成的n
×
n的阵列形式。每个存储单元包
含互为反向的存储节点q和qb。
25.字线组包括n2组字线wl1~wl4。每个存储单元连接在一组字线wl1~wl4上。
26.位线组包括n组bl1、blb1、bl2、blb1。每列中的各个存储单元均连接在同一组位线bl1、blb1、bl2、blb1上。
27.行列解码器用于把外部输入的地址信号转换成行和列的控制时序信号。
28.字线驱动模块用于控制任意存储单元的字线,以驱动与该字线相连的传输管的通断。
29.预充电模块用于对存储阵列中各列存储单元的位线预充电平信号。
30.读写电路模块用于控制存储阵列中各存储单元在sram模式下读写操作。
31.时序控制模块用于给电路工作所需的时序信号。
32.adc模块用于将存储阵列中各列存储单元的计算结果转换成数字量。
33.移位计算模块用于对adc模块输出的数字量进行减法计算和移位操作,并将运算结果输出。
34.特别地,多位点积和并行异或计算电路执行多位点积运算时,采用如前述的多位点积运算逻辑方法。
35.进一步的,多位点积和并行异或计算电路实现并行异或的方式如下:
36.将需进行并行异或操作的3个1位操作数分别记为异或值a、b和被异或值c。预先将被异或值c的电压信号通过sram写数据模式写入需进行异或操作的存储单元中,并将其位线bl1、bl2和blb1、blb2预充电至高电平。
37.将异或值a和其反值的电压信号分别通过相对称的一对字线输入至该存储单元内,将异或值b和其反值的电压信号分别通过相对称的另一对字线输入至该存储单元内。其中,相对称的两对位线分别为wl1、wl3,以及wl2、wl4。
38.将该存储单元的位线bl1和blb1分别通过模数转换器adc1、adc3输出的数值相加计算得到异或值a和被异或值c的异或结果。将位线bl2和blb2分别通过模数转换器adc2、adc4输出的数值相加计算得到异或值b和被异或值c的异或结果。
39.本发明提供的技术方案,具有如下有益效果:
40.本发明设计的双端口存储单元阵列结构通过使用左右不同的编码逻辑可使左右通路同时进行乘法运算,并且避免了传统的左右同时进行乘法运算时引入的单边线性度差的情况。此外,由于左右两边同时预充到相同的电位,也避免了传统结构的伪写现象。可通过外部电路加上控制信号实现多位点积运算过程,增加了深度神经网络推理的效率和速度。通过采取降低位线电压以及所有的存储单元采用相同种类的传输管使存储单元更加稳定和保持一定的线性度。
附图说明
41.图1为本发明实施例1中的8tsram存储单元的电路结构图;
42.图2为基于图1的4
×
4的8t-sram单元实现并行xor计算结构示意图;
43.图3为基于图2的单列8t-sram单元实现并行xor计算结构示意图;
44.图4为基于图3的进行并行xor计算时序示意图;
45.图5为实施例2的64
×
64个8t-sram单元的多位点乘和并行异或计算电路的整体架
构示意图;
46.图6为基于图1实现2
×
2个8t-sram单元为基础的4'b数据同时进行乘法运算结构示意图;
47.图7为实施例1的多位点积运算逻辑方法的流程图。
具体实施方式
48.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.实施例1
50.本实施例介绍了一种多位点积运算逻辑方法,该方法应用与存内计算电路,首先对该存内计算电路进行简单介绍。该存内计算电路包括由多个存储单元构成的存储阵列。每个存储单元连接四条独立的字线wl1~wl4。每列存储单元共享位线bl1、bl2、blb1、blb2。每列位线bl1、bl2和blb1、blb2分别接在模数转换器adc1、adc2、adc3、adc4上。
51.每个存储单元均包括四个nmos传输管n2~n5和两个存储节点q、qb。n2~n5的栅极与4条字线wl1~wl4一一对应连接,n2~n5的源极与4条位线bl1、bl2、blb1、blb2一一对应连接。n2、n4与存储节点q相连,n3、n5与存储节点qb相连。q和qb互为反码。
52.请参阅图7,在存内计算电路的基础上,多位点积运算逻辑方法包括以下步骤:
53.将一个4位操作数的电压信号通过字线wl1、wl2、wl3、wl4同步输入至预存有1位操作数的存储单元内;
54.采集该存储单元的位线bl1、bl2和blb1、blb2的电压信号,并分别转换成表征电压信号所代表的运算结果的二进制数;
55.将表征bl1、bl2电压信号的1个二进制数作为被减数,与表征wl1、wl2中高电平个数的1个二进制数进行差值计算,得到1个表征bl1、bl2差值结果的二进制数;
56.将表征差值结果的二进制数进行左移两位的移位操作后,并与表征blb1、blb2运算结果的二进制数相加计算,得到4位操作数与1位操作数的点积运算结果。
57.本实施例的方法用于将四位权重操作数的点积运算结果按照其权重顺序输出,得到最终的点积运算结果。其中,将左侧的bl1、bl2经减法运算后的二进制数作为高位,右侧后blb1、blb2转换后的二进制数作为低位,因此需要对左侧进行左移两位的操作,实现其作为高位输出。
58.为方便了解本实施例实现多位点积运算具体运算步骤,下面针对存储阵列中其中一个存储单元进行详细说明:
59.请结合图1理解本实施例的电路结构,图1为一个8tsram单存储单元的电路结构图。存储单元的4条字线wl1~wl4作为一个四位操作数的输入端口,存储单元内部存储一个一位操作数,在进行运算操作前,将4条位线bl1、bl2、blb1、blb2预充至高电平。将输入的四位操作数转化成合适的高低字线电压,例如vdd代表信号“1”和gnd代表信号“0”,分别施加到四条字线wl1、wl2、wl3和wl4端口上,若输入的高电平,则与该字线相连的传输管导通,若输入的是低电平,则与该字线相连的传输管关闭,以此控制传输管的通断。以wl1、wl2位于
存储单元的左侧且分别通过传输管n2、n4与存储节点q连接,wl3、wl4位于存储单元的左侧且分别通过传输管n3、n5与存储节点qb连接为例。bl1、bl2分别输出wl1、wl2代表的操作数和存储节点q的数据乘积结果,blb1、blb2分别输出wl3、wl4代表的操作数和存储节点q的数据乘积结果。由于bl1、bl2输出的结果并非最终所需的结果,因此需要进行一个减法运算,得到所需结果,并和blb1、blb2输出的结果构成最终的点积运算结果。
60.为了进一步了解本实施例的实现多位点积运算,以具体的随机数值运算进行说明。假设存储单元存储的数据为“1”,即q=1,qb=0。以及外部输入的操作数为(1,1,1,1)。则对wl1~wl4均施加高电平,此时传输管n2~n5均导通,由于bl1、bl2、blb1、blb2均预充高电平,由于q处于高电平,则bl1、bl2上的电压无变化,因此bl1、bl2输出为0。由于qb处于低电平,而blb1、blb2处于高电压,电荷转移,使得blb1、blb2出现压降,分别下降一个

v,blb1、blb2输出为1。
61.在上述计算中,只有q为0时bl1、bl2才会发生压降,因此wl1、wl2的一侧实际上进行的是1
×
0的运算。反之,只有qb=0时blb1、blb2才会发生压降,因此wl3、wl4的一侧实际上进行的是1
×
1的运算。由于任何数乘以0均为0,所以最终点积的结果是所有1
×
1的数。为此,需要对bl1、bl2的输出结果进行一个减法运算,即统计wl1、wl2高电平的总个数,由于是二进数乘法计算,因此该总个数包含了wl1、wl2一侧的运算结果中1
×
1和1
×
0的结果和,将该总个数减去bl1、bl2的输出的数字量能够得到wl1、wl2一侧的1
×
1的运算结果。如等式所示,n
input1
=n1×1 n1×0=》n1×1=n
input1-n1×0,其中n
input1
是wl1、wl2上高电平的数量,n1×0是bl1、bl2的输出结果的数字量,n1×1是所需的wl1、wl2一侧运算的1
×
1的运算结果。以上述数值为例,可得到n1×0=0,n
input1
=2,因此》n1×1=n
input1-n1×0=2,两侧的数值加在一起得到4,即为(1,1,1,1)和1的点积运算结果。
62.在上述运算中,是以操作数为随机数举例,实际计算中,操作数具有权重即x3x2x1x0=1111,则无法将两侧的量化的结果相加得到,在4位操作数的电压信号通过wl1、wl2、wl3和wl4后,运算过程与上述一致,但是在采集bl1、bl2和blb1、blb2电压信号后,将bl1、bl2的电压信号量化成1个二进制数,blb1、blb2的电压信号量化成另外1个二进制数,由于bl1、bl2输出的是高位,因此需要其量化后的结果进行左移两位的移位操作,随后再与blb1、blb2的量化结果相加,得到最终的结果。
63.下面对本实施采用的8tsram存储单元的具体连接结构进行详细说明:8tsram存储单元包括nmos晶体管n0~n5和pmos晶体管p0~p1,p0和n0构成一个反相器,p1和n1构成另一个反相器,两个反相器形成交叉耦合结构对存储节点q、qb的数据进行锁存,p0的源极与p1源极电连接到vcc,开启存储节点q、qb节点对电源通路,n0的源极与n1的源极连接到vss,开启存储节点q、qb节点对地通路。n2、n3、n4和n5作为传输管,各自位于交叉耦合结构左右两侧作为sram双端口数据通路。n2和n4构成左通路,n3和n5构成右通路。p0的漏极与p1的栅极、n0的漏极、n2的漏极、n1的栅极、n4的漏极电连接,p0的栅极与p1的漏极、n1的漏极、n3的漏极、n0的栅极、n5的漏极电连接。需要强调的是,所有8tsram存储单元的所有传输管采用的是相同规格同种类的晶体管,进而使加强存储单元的稳定性。
64.以8tsram存储单元为例,对sram模式进行详细说明,sram模式包含保持操作、写操作和读操作,具体步骤如下:
65.(1)保持操作
66.在存储单元保持数据期间,写字线wl1、写字线wl2、写字线wl3、写字线wl4均保持低电平。此时nmos晶体管n2、nmos晶体管n3、nmos晶体管n4以及nmos晶体管n5均关断,写位线bl1、bl2、blb1、blb2均不会对存储节点q或qb造成影响。pmos晶体管p0、nmos晶体管n0、pmos晶体管p1和nmos晶体管n1构成的锁存结构将锁存存储节点q和qb的数据。
67.(2)写操作
68.假设在写操作前存储单元存储节点q为高电平,qb为低电平,即存储数据为“1”,在写入数据“0”时,写操作字线wl1和wl3被拉为高电平选中单元,同时将需要写入的数据“0”加载到写位线上,即bl1为低电平,blb1为高电平。bl1通过nmos晶体管n2下拉节点q,blb1通过nmos晶体管n3上拉节点qb,所存结构反馈环被打破,数据“0”写入存储节点q和qb内。
69.假设在写操作前存储单元存储节点q为低电平,qb为高电平,即存储数据为“0”。在写入数据“1”时,写字线wl1和wl3被拉为高电平,同时将需要写入的数据“1”加载到写位线上,即bl1为高电平,blb1为低电平。bl1通过n2上拉存储节点q,blb1通过n3下拉存储节点qb,p0、n0、p1和n1构成的锁存结构被打破,数据“1”写入存储节点q和qb内。
70.(3)读操作
71.假设在读操作前存储单元存储节点q为高电平,qb为低电平,即存储数据为“1”。在读操作开始时,读位线bl1和blb1预充电至高电平,读字线wl1或wl3被拉为高电平,nmos晶体管n2或nmos晶体管n3被开启。读位线bl1仍保持高电平,读位线blb1受到存储节点内部的电压影响被拉低。读出结果为“1”。
72.假设在读操作前存储单元存储节点q为低电平,qb为高电平,即存储数据为“0”。在读操作开始时,读位线bl1和blb1预充至高电平,读字线wl1或wl3被拉为高电平,n2或n3被开启。读位线blb1仍保持高电平,读位线bl1的电平受到存储节点q影响被拉低,读出结果为“0”。
73.本实施例的存储阵列的分布可以是n
×
n,例如2
×
2、4
×
4等。图6示出了2
×
2阵列分布的8tsram存储阵列。由图6可知,每个8tsram存储单元的字线不共享,通过一个外部控制电路控制所有8tsram存储单元字线的高低电平,每列8tsram存储单元位线共享,有外部预充电电路控制位线的高低电平,位线经过模数转换器(adc)输出两侧的乘法结果,并通过后续的一个计算得到最终的点积结果。该存储阵列结构在不增加晶体管数量的情况下可以实现4'b乘法运算操作,既可以很好地适应sram的读写方式,又增加了结构的复用性,并且数据抗干扰能力大大提高,可以适应各种复杂的应用场景
74.需要说明的是,每列位线bl1、bl2和blb1、blb2尾端分别连接灵敏放大器sa,灵敏放大器sa与模数转换器adc1~adc4之间通过功能选择开关相连,用以控制每列位线bl1、bl2和blb1、blb2与模数转换器adc1~adc4之间的通断。
75.基于以上设计,本实施例设计的双端口8t-sram阵列架构可以配置为一个类似于内存中的多位点乘引擎,在不牺牲并行计算效率的情况下,可同时进行4'b数据乘法运算,在原本6t sram位单元的基础上增加了两个端口,通过使用左右不同的编码逻辑可使左右通路同时进行乘法运算,并且避免了传统的左右同时进行乘法运算时引入的单边线性度很差的现象。因为两边同时预充到相同的电位,也避免了传统结构的伪写现象,可通过外部电路加上控制信号实现多位点积运算过程,增加了深度神经网络推理的效率和速度。通过采取降低位线电压和左右使用相同种类的传输管和预充电平使得存储单元更加稳定和保持
一定的线性度。
76.实施例2
77.请参阅图5,本实施例介绍了一种多位点积和并行异或计算电路,包括存储阵列、字线组、位线组、行列解码器(row decoder)、字线驱动模块(wl driver)、预充电模块(precharge control)、读写电路模块(peripheral read-write circuit)、时序控制模块(timing ctrl)、adc模块、移位计算模块。
78.其中,存储阵列由n2个相同的存储单元构成的n
×
n的阵列形式。每个存储单元包含互为反向的存储节点q和qb。
79.字线组包括n2组字线wl1~wl4。每个存储单元连接在一组字线wl1~wl4上。
80.位线组包括n组bl1、blb1、bl2、blb1。每列中的各个存储单元均连接在同一组位线bl1、blb1、bl2、blb1上。
81.行列解码器用于把外部输入的地址信号转换成行和列的控制时序信号。
82.字线驱动模块用于控制任意存储单元的字线,以驱动与该字线相连的传输管的通断。
83.预充电模块用于对存储阵列中各列存储单元的位线预充电平信号。
84.读写电路模块用于控制存储阵列中各存储单元在sram模式下读写操作。
85.时序控制模块用于给电路工作所需的时序信号。
86.adc模块用于将存储阵列中各列存储单元的计算结果转换成数字量。
87.移位计算模块用于对adc模块输出的数字量进行减法计算和移位操作,并将运算结果输出。
88.特别地,多位点积和并行异或计算电路执行多位点积运算时,采用如前述的多位点积运算逻辑方法。因此本实施例能够实现实施例1的多位点积和并行异或的操作。
89.本实施例的存内计算电路执行并行异或操作的方式如下:将需进行异或操作的3个1位操作数记为异或值a、b和被异或值c。预先将被异或值c的电压信号通过sram写数据模式写入需进行异或操作的存储单元中,并将其位线bl1、bl2和blb1、blb2预充电至vdd。
90.将异或值a和其反值的电压信号分别通过该存储单元相对称的一对字线输入至该存储单元内,将异或值b和其反值的电压信号分别通过该存储单元相对称的另一对字线输入至该存储单元内。其中,相对称的两对位线分别为wl1、wl3,以及wl2、wl4。
91.将该存储单元的位线bl1和blb1分别通过模数转换器adc1、adc3输出的数值相加计算得到异或值a和被异或值c的异或结果。将位线bl2和blb2分别通过模数转换器adc2、adc4输出的数值通过加法器相加计算得到异或值b和被异或值c的异或结果。
92.为了进一步了解上述并行异或计算,对操作方式以具体数值进行详细说明:请参阅图2和图3,图2示出了一个呈4
×
4阵列分布的存储阵列,图3为图2中其中一列的存储单元,以存储阵列中第一个存储单元为例,存储单元的wl1、wl3作为异或值a和其反值的输入端,wl2、wl4作为异或值b和其反值的输入端,假设输入异或值a的数据也就是异或值为0和存储数据也就是被异或值为1进行异或计算。那么存储单元中存储的值为“1”即存储单元存储节点q为高电平,qb为低电平(q=vdd,qb=0v),左侧字线wl1端口输入要计算的输入异或值0(也就是在左侧字线wl1端口输入低电平信号),右侧wl3端口输入的取反输入异或值为1(也就是在左侧字线wl3端口输入高电平信号)。这时,nmos晶体管n2是关断状态,所以bl1无
法通过n2传输管影响节点q点的电荷,blb1通过nmos晶体管n3上拉节点qb,所以在位线blb1上产生电压降,使用底端adc1、adc3将相应左右位线(bl1和blb1)的模拟量量化成数字量相加便是异或值“1”和被异或值“0”异或操作的结果。值得注意的是,上述只是一位xor运算操作示例。这种设计具有双端口和四根独立的位线(bl1、blb1、bl2、blb2)和字线(wl1、wl3、wl2、wl4)。因此,它可以配置为2位xor运算引擎。同一个存储单元另一位xor运算由b端口实现(wl2和wl4),原理和a端口一致,实现异或操作的时序如图4所示。
93.下面结合图5对本实施例的电路结构进行具体说明,在图5中,8tsram存储阵列是64
×
64。每一列8tsram存储单元是连接在一组位线bl1、blb1、bl2、blb1上,每一行的每个8tsram存储单元均有一组字线wl1~wl4,因此字线不共享。
94.基于上述电路结构,存储功能的实现的原理一致,通过字线定位到各个存储单元,通过位线获取存储单元中存储节点存储的数据。下面对多位点积运算和并行异或运算进行详细说明。
95.1、多位点积运算
96.本实施例提供的存储阵列为呈64
×
64分布的8tsram存储阵列,通过将外部四位操作数变成相应的高低电平与8tsram存储单元中存储节点q预存的一位操作数进行乘法运算。需要强调的是,当一个存储单元进行点积运算时,实际上只有一侧进行乘法运算并输出结果,这是由于存储节点q、qb互为反码,而结果的获取是根据位线的电压降得到,因此必然只有一侧位线bl1、bl2或blb1、blb2出现电压降。由于本实施例的点乘运算是以存储节点q存储的数据作为一位操作数的,因此blb1、blb2只有存储节点qb为低电平才会出现压降,也就是q为高电平,即q=1,因此blb1、blb2输出的结果只会是1
×
1。反之bl1、bl2一侧只有q为低电平,即q为0时位线才会出现压降,因此bl1、bl2的一侧输出的结果只会是1
×
0,但是1
×
0的结果是0,而点积最终获取的是1
×
1,因此bl1、bl2还需多进行一步减法运算,在一个周期内将字线wl1、wl2置为高电平的个数减去原始bl1、bl2的结果,即能够得到所需的1
×
1结果。这是由于字线wl1、wl2位于高电平时,代表外部输入的操作数为1,不管存储节点q存储的是1或0,都会有乘法运算,只不过只有在q为0时位线才会出现电压降,因此wl1、wl2置位高电平的个数代表着该侧1
×
0和1
×
1的总和。
97.当四位操作数为随机数时,任意一列的8tsram存储单元将左侧结果(bl1、bl2输出的结果)经过sa放大以及过adc转换后进行减法运算后和右侧结果(blb1、blb2输出的结果)sa放大以及过adc转换后的结果累加在一起即为所需的一列多位点积运算结果,将所有列的结果累在一起即为被定位的所有8tsram存储单元的点积运算结果。
98.当四位操作数具有权重时,需要对bl1、bl2和blb1、blb2输出的结果经过adc转换后根据操作数的权重顺序进行移位操作,才能得到相应的点积运算结果。
99.2、并行异或计算
100.在本实施例中,通过将每个8tsram存储单元的左右两侧输出互为反码的操作数,可同时进行两位异或运算。根据图2所示,以存储阵列中相邻的4
×
4个8tsram进行异或运算为例,字线控制模块通过两个反相器分别控制一行四个8tsram的字线,字线控制模块将字线信号通过两个反相器输入至位于8tsram左侧的字线即wl1、wl2,通过一个反相器输入至位于8tsram右侧的字线即wl3、wl4,实现8tsram存储单元两侧字线的输出信号互为反码,由于异或计算的结果通过位线的输出,为获得最后的异或结果,需要将每列四条位线输出的
结果经过sa放大和adc转换后通过加法器相加得到一列的异或结果,将所有列的结果相累计得到存储阵列中所有被定位的存储单元进行异或运算的最终结果。
101.需要强调的是,在实际应用时,对于给位线的高电平和给字线的高电平电压不一致,位线的高电平电压值是字线电压值的4倍以上,给到字线的电压刚好能够打开传输管即可,在同一条位线上,每次压降产生的

v数值小,因此,即使一条位线上的所有传输管均打开,由于位线处于的高电压远大于字线电压,最终一条位线上输出的结果仍在误差允许的范围内。
102.需要说明的是,4
×
4、64
×
64的存储阵列只是本实施例说明该方案而列举出的示例,并非对本案的限定。
103.以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
104.以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
再多了解一些

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

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

相关文献