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

存储器内运算方法及装置、存储器及存储介质与流程

2022-02-24 14:12:36 来源:中国专利 TAG:


1.本公开的实施例涉及一种存储器内运算方法及装置、存储器及存储介质。


背景技术:

2.静态随机存取存储器(static random-access memory,sram)是随机存取存储器的一种。“静态”是指这种存储器只要保持通电,存储的数据就可以恒常保持。sram包括存储单元阵列、地址译码器(包括行译码器和列译码器)、灵敏放大器、控制电路和缓冲/驱动电路。存储阵列中的每个存储单元都与其它单元在行和列上共享电学连接,其中水平方向的连线称为“字线(wl,word line)”,而垂直方向的数据流入和流出存储单元的连线称为“位线”。通过输入的地址可选择特定的字线和位线,字线和位线的交叉处就是被选中的存储单元,然后再对其进行读写操作。


技术实现要素:

3.本公开至少一实施例提供一种存储器内运算方法,所述存储器包括具有多个存储单元的阵列,所述阵列包括多行多列,所述方法包括:在所述多个存储单元中选择存储用于所述运算的第一数值的第一存储单元和存储用于所述运算的第二数值的第二存储单元进行读操作,获取对应于所述第一数值和所述第二数值的叠加信号,在所述存储器内使用所述叠加信号得到所述运算的运算结果。
4.例如,在本公开一些实施例提供的存储器内运算方法中,所述阵列包括多条字线、多条第一位线、多条第二位线,每个所述存储单元包括由对应的字线控制的第一读出端口,所述第一读出端口连接对应的第一位线,所述第一存储单元的第一位线和所述第二存储单元的第一位线为同一条第一位线,
5.所述获取对应于所述第一数值和所述第二数值的叠加信号,包括:通过所述同一条第一位线获取对应于所述第一数值和所述第二数值的第一叠加信号,其中,所述第一叠加信号用于获取所述叠加信号。
6.例如,在本公开一些实施例提供的存储器内运算方法中,每个所述存储单元还包括由对应的字线控制的第二读出端口,所述第二读出端口连接对应的第二位线,所述第一存储单元的第二位线和所述第二存储单元的第二位线为同一条第二位线,
7.所述获取对应于所述第一数值和所述第二数值的叠加信号,包括:通过所述同一条第二位线获取对应于所述第一数值和所述第二数值的第二叠加子信号;组合所述第一叠加子信号和所述第二叠加子信号以获取所述叠加信号。
8.例如,在本公开一些实施例提供的存储器内运算方法中,所述第一存储单元和所述第二存储单元被同步选中,以获取对应于所述第一数值和所述第二数值的所述叠加信号。
9.例如,在本公开一些实施例提供的存储器内运算方法中,在同一操作周期内,选择所述第一存储单元和所述第二存储单元、获取所述叠加信号以及得到所述运算结果。
10.例如,在本公开一些实施例提供的存储器内运算方法中,通过灵敏放大器读出所述同一条第一位线输出的第一叠加信号和所述同一条第二位线输出的第二叠加信号。
11.例如,在本公开一些实施例提供的存储器内运算方法中,将所述第一叠加信号和所述第二叠加信号组合成的所述叠加信号通过运算模块进行运算获得所述运算结果。
12.例如,在本公开一些实施例提供的存储器内运算方法中,所述运算包括逻辑运算。
13.例如,在本公开一些实施例提供的存储器内运算方法中,所述运算模块包括与非门。
14.例如,本公开一些实施例提供的存储器内运算方法还包括:将所述叠加信号通过读出电路读出的数值置0或置1。
15.例如,本公开一些实施例提供的存储器内运算方法还包括:获取所述第一存储单元的第一存储地址和所述第二存储单元的第二存储地址,对所述第一存储地址和所述第二存储地址进行解码,以选择所述第一存储单元对应的字线和对应的位线,选择所述第二存储单元对应的字线和对应的位线。
16.本公开至少一实施例还提供一种存储器内运算装置,所述存储器包括具有多个存储单元的阵列,所述阵列包括多行多列,该运算装置包括控制模块和运算模块,所述控制模块和所述运算模块分别与所述阵列耦接,所述控制模块被配置为在所述多个存储单元中选择存储用于所述运算的第一数值的第一存储单元和存储用于所述运算的第二数值的第二存储单元进行读操作,所述第一存储单元和所述第二存储单元被配置为输出对应于所述第一数值和所述第二数值的叠加信号,所述运算模块被配置为在所述存储器内使用所述叠加信号得到所述运算的运算结果。
17.本公开至少一实施例还提供一种存储器内运算装置,所述阵列包括多条字线、多条第一位线、多条第二位线,每个所述存储单元包括由对应的字线控制的第一读出端口,所述第一读出端口连接对应的第一位线,所述第一存储单元的第一位线和所述第二存储单元的第一位线为同一条第一位线,所述第一存储单元和所述第二存储单元被配置为通过所述同一第一条位线输出对应于所述第一数值和所述第二数值的第一叠加信号,其中,所述第一叠加信号用于获取所述叠加信号。
18.例如,本公开至少一实施例还提供一种存储器内运算装置中,每个所述存储单元还包括由对应的字线控制的第二读出端口,所述第二读出端口连接对应的第二位线,所述第一存储单元的第二位线和所述第二存储单元的第二位线为同一条第二位线,所述第一存储单元和所述第二存储单元还被配置为通过所述同一条第二位线获取对应于所述第一数值和所述第二数值的第二叠加子信号;组合所述第一叠加子信号和所述第二叠加子信号以获取所述叠加信号。
19.例如,在本公开至少一实施例还提供一种存储器内运算装置中,所述控制模块还被配置为同步选择所述第一存储单元和所述第二存储单元,所述运算模块被配置为获取对应于所述第一数值和所述第二数值的所述叠加信号。
20.例如,在本公开至少一实施例还提供一种存储器内运算装置中,所述控制模块还被配置为,在同一操作周期内,选择所述第一存储单元和所述第二存储单元、获取所述叠加信号,以及所述运算模块还被配置为,在所述同一操作周期内,得到所述运算结果。
21.例如,本公开至少一实施例还提供一种存储器内运算装置还包括灵敏放大器,所
述灵敏放大器被配置为读出所述同一条第一位线输出的第一叠加信号和所述同一条第二位线输出的第二叠加信号。
22.例如,本公开至少一实施例还提供一种存储器内运算装置中,所述运算模块包括与非门。例如,本公开至少一实施例还提供一种存储器内运算装置还包括读出电路,所述读出电路被配置为读出所述第一数值和所述第二数值。
23.例如,本公开至少一实施例还提供一种存储器内运算装置中,所述读出电路还被配置为将所述读出电路读出的数值置0或置1。
24.例如,本公开至少一实施例还提供一种存储器内运算装置中,所述控制模块还被配置为获取所述第一存储单元的第一存储地址和所述第二存储单元的第二存储地址,所述装置还包括地址译码模块,所述地址译码模块被配置为对所述第一存储地址和所述第二存储地址进行解码,用于选择所述第一存储单元对应的字线和对应的位线,选择所述第二存储单元对应的字线和对应的位线。
25.例如,本公开至少一实施例还提供一种存储器,包括如上述任一实施例提供的存储器内运算装置以及具有多个存储单元的阵列。
26.本公开至少一实施例还提供一种存储器内运算装置,该装置包括:存储单元,用于非暂时性存储计算机可执行指令;以及处理单元,用于运行所述计算机可执行指令,其中,所述计算机可执行指令被所述处理单元运行时,执行本公开任一实施例提供的存储器内运算方法。
27.本公开至少一实施例还提供一种非暂时性存储介质,非暂时性地存储计算机可执行指令,其中,当所述计算机可执行指令由计算机执行时,执行本公开任一实施例提供的存储器内运算方法。
附图说明
28.为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
29.图1为一种6t型的静态随机存取存储器(sram)存储单元的电路示意图;
30.图2为图1所示的6t型的sram存储单元进行读操作时的电压波形示意图;
31.图3为图1所示的6t型的sram存储单元进行写操作时的电压波形示意图;
32.图4为本公开一实施例提供的一种存储器的结构框图;
33.图5为本公开一实施例提供所的一种6t型sram存储单元的电路示意图;
34.图6a为图5所示的6t型sram存储单元中驱动电路(灵敏放大器)连接的电路图;
35.图6b为图6a中灵敏放大器的示例性结构电路图;
36.图7为本公开一实施例提供的一种存储器内运算方法的流程示意图;
37.图8为对应于图7所示的方法的第一存储单元和第二存储单元与运算模块连接的结构框图;
38.图9为本公开一实施例提供的一种存储器的部分电路设计图;
39.图10为本公开一实施例提供的第一存储单元和第二存储单元的字线和位线上“同或”运算的信号流示意图;
40.图11为本公开一实施例提供的另一种第一存储单元和第二存储单元的字线和位
线上“同或”运算的信号流示意图;
41.图12为本公开一实施例提供的一种存储器的结构示意图;
42.图13为本公开一实施例提供的一种存储器内运算装置的示意性框图;
43.图14为本公开一实施例提供的另一种存储器内运算装置的示意性框图;
44.图15为本公开一些实施例提供的一种非暂时性存储介质的示意图。
具体实施方式
45.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
46.除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
47.下面通过几个具体的实施例对本公开进行说明。为了保持本公开实施例的以下说明清楚且简明,本公开省略了已知功能和已知部件的详细说明。当本公开实施例的任一部件在一个以上的附图中出现时,该部件在每个附图中由相同或类似的参考标号表示。
48.例如,目前的集成电路设计中,电路需要进行各种数学运算,大部分的数学运算需要芯片中存储器存储的值参与运算。例如,下面分别对应或、与以及异或运算。
49.·
运算结果1=地址1的存储值or地址2的存储值;
50.·
运算结果2=地址1的存储值and地址2的存储值;
51.·
运算结果3=地址1的存储值xor地址2的存储值。
52.例如,在运算中,从芯片的存储器中第一次读取地址1的存储值,存储在外部存储设备dff(时序电路)中,从存储器中第二次读取地址2的存储值,将两次读取的存储值进行逻辑运算,两次读取存储值导致逻辑运算时间长,且需要外部存储设备存储第一次读取的存储值,导致芯片面积增大,功耗增大。
53.本公开至少一些实施例提供一种存储器内运算(可简称“存内运算”)方法,该存储器包括具有多个存储单元的阵列,该阵列包括多行多列,该存储器内运算方法包括:在多个存储单元中选择存储用于运算的第一数值的第一存储单元和存储用于运算的第二数值的第二存储单元进行读操作,获取对应于第一数值和第二数值的叠加信号,在存储器内使用叠加信号得到运算的运算结果。
54.本公开的一些实施例还提供对应于存储器内运算方法的存储器内运算装置,该存储器包括具有多个存储单元的阵列,该阵列包括多行多列,该存储器内运算装置包括控制
模块和运算模块,控制模块和运算模块分别与阵列耦接,控制模块被配置为在多个存储单元中选择存储用于运算的第一数值的第一存储单元和存储用于运算的第二数值的第二存储单元进行读操作,第一存储单元和第二存储单元被配置为输出对应于第一数值和第二数值的叠加信号,运算模块被配置为在存储器内使用叠加信号得到运算的运算结果。
55.本公开的一些实施例还提供一种包括上述存储器内运算装置的存储器。
56.本公开的一些实施例还提供对应于上述存储器内运算方法的非暂时性存储介质,该存储介质非暂时性地存储计算机可读指令,其中,当计算机可读指令由计算机执行时,执行上述本公开的实施例提供的存储器内运算方法。
57.本公开的上述实施例提供的存储器内运算方法,通过在存储器中多个存储单元中选择第一存储单元和第二存储单元进行读操作,获取第一存储单元中第一数值和第二数值的叠加信号,并在存储器中使用该叠加信号得到运算结果。该方法通过在存储器内读取需要运算的存储单元中的数值并完成逻辑运算,不仅有效缩短了逻辑运算时间,且无需额外的外部存储设备,进而缩小芯片面积,降低功耗。
58.下面结合附图对本公开的一些实施例及其示例进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
59.图1示出常见的6晶体管(6t)型随机静态存储器存储单元。该6t存储单元包括6个晶体管用于存储数据和读写操作,例如pu晶体管、pd晶体管、pu_x晶体管、pd_x晶体管、pg晶体管、pg_x晶体管。这种结构具有字线(wl,word line)以及一对用于写入数据的位线(bl/blb,bit line)。数据从读端口读出,数据从写端口写入,写入时bl和blb互为取反。pu晶体管和pd晶体管,pu_x晶体管和pd_x晶体管构成了首尾相接的两个反相器,即一个反相器输出接到另一个反相器的输入,反之亦然。由于两个反相器的首尾相接,构成了一个锁存器,没有外部影响时,q存储节点和qb存储节点可以非常稳定的存储数据,两者互补,例如q=0时,qb=1(即存储的数值为“0”)。假设q=0,读操作之前,wl=0,bl=blb=float 1(就是说充电到1之后,关断充电电路,使其悬浮在1)。
60.读操作时,字线wl加高电平(wl=1)控制pg晶体管和pg_x晶体管都处于导通状态,q=0会通过pg晶体管将bl=float 1(悬浮在1)拉低,将数据读出。例如,图2示出6t型存储单元的实际读操作中的波形图,q=0会通过pg晶体管将位线bl的电平下拉,位线blb还维持在之前的电位,这使位线bl和位线blb之间产生了一个电压差(delta v)。该电压差通过例如灵敏放大器电路将数据放大读出。
61.在写数据时,通过未示出的写电路在位线bl和位线blb之间形成一对互补的信号,当wl加高电平(wl=1)控制pg晶体管和pg_x晶体管都处于导通状态时,如果q和qb存储的数据和想写入的数据不一样,位线bl和位线blb上的信号会被强行驱动、改变、翻转q和qb存储的数据。例如,假设写操作之前,qb=1,q=0,在对该存储单元写入1的写操作时(即要将q置位为1),会出现位线blb=0和qb=1不一致的情况,blb上施加的对应于0的电位必须要强行驱动、改变、翻转qb=0,以能保证数据的写入,同理,对于位线bl=1和q=0不一致的情况,bl上施加的对应于1的电位必须要强行驱动、改变、翻转q=1,以能保证数据的写入。图3示出6t型存储单元的实际写操作中的波形图,当wl加高电平(wl=1)控制pg晶体管和pg_x晶体管都处于导通状态时,blb的0会通过pg_x灌入qb,同时bl的1会通过pg灌入q,最终使得q由0翻1,qb由1翻0。
62.图4为本公开一些实施例提供的一种存储器的结构框图。
63.如图4所示,该存储器包括存储器内运算装置和具有多行多列存储单元的阵列(存储阵列)200。该存储器内运算装置包括与存储阵列耦接的控制模块110、运算模块120、读出电路130、地址译码模块(xdec)140以及写入模块(未示出)等。例如,控制模块110用于控制整个存储中电路的使能、逻辑管控,例如读、写、逻辑运算操作。
64.例如,在进行逻辑运算操作时,控制模块110获取用于运算的多个数值各自的存储地址,并将这些存储地址提供给地址译码模块140。地址译码模块140对获取的存储地址进行解码,获取这些地址对应的存储阵列200中存储有这些数值的存储单元,并用于相应地选择存储阵列200中的字线和位线,从而驱动存储有这些数值的存储单元。运算模块120在控制模块110的控制下通过相应的位线获取存储单元输出的信号,并且进行相应的运算,例如,“异或”和“同或”逻辑运算操作,运算模块120输出运算结果,或者还可以通过读出电路130将运算结果输出存储器之外。
65.例如,在进行读操作时,控制模块110获取要读取的数据的存储地址,并将该存储地址提供给地址译码模块140。地址译码模块140对该存储地址进行解码,来选择存储有要读取的数据的存储单元的字线和位线,从而驱动存储有要读取数值的存储单元。读出电路130在控制模块110的控制下通过相应的位线获取存储单元输出的信号,将读出结果输出存储器之外。
66.例如,在进行写操作时,控制模块110获取待写入的数据的目标存储单元的存储地址,并将该存储地址提供给地址译码模块140。地址译码模块140对该存储地址进行解码,来选择将存储待写入的数据的目标存储单元的字线和位线,从而驱动要存储待写入数值的目标存储单元。写入模块(未示出)在控制模块110的控制下通过相应的位线写入数据到目标存储单元中。
67.例如,本公开的一些实施例的存储阵列的存储单元可以是基于如图1所示的6t型存储单元或其他改进的6t型存储单元,每个存储单元具有由字线控制且连接到同类型的两个位线的两个读出端口,这两个读出端口可以用于读出操作。例如,该改进的6t型存储单元可以为8t dual port(8晶体管,双端口)型sram存储单元,其在图1所示的基础上,再包括一对控制晶体管以及一对位线abl/ablb,例如,位线bl/blb定义了一对读端口,用于读取存储在存储单元中的数据,而位线abl/ablb定义了一对写端口,用于向存储单元中写入数据。
68.例如,每个存储单元可以是6t型存储单元或改进的6t型存储单元。多个存储单元排成多行多列的阵列,该阵列还包括用于上述多个存储单元的多条字线和多条位线。
69.图5为本公开一实施例提供所的一种6t型存储单元的电路示意图,其基于如图1所示的6t型存储单元。
70.如图5所示,该6t型存储单元包括由对应的由对应的字线控制的第一读出端口和第二读出端口,第一读出端口连接对应的第一位线,第二读出端口连接第二位线。例如,字线可以为wl,第一位线可以为位线bl,以提供第一读端口,第二位线可以为位线blb,以提供第二读端口。与图1所示的6t型存储单元相比,该实施例的6t型存储单元不但仍然可以利用字线wl和第一位线bl、第二位线blb通过驱动电路进行读操作,还可以与其他存储单元配合且通过驱动电路进行存内运算,该驱动电路读出的信号可以经读出电路130输出,或该驱动电路输出用于运算的叠加信号。该驱动电路例如为灵敏放大器,该灵敏放大器可以是一列
存储单元共用的,具体操作将在后面描述。如上所述,该实施例的6t型存储单元还可以对第一数值和第二数值进行运算,该驱动电路输出的用于运算的叠信号被输入到运算模块120,例如通过运算单元运算之后,输出运算结果。
71.如上所述,本公开的实施例提供的存储器内运算装置100还包括至少一个驱动电路以读出存储单元中的数据,该驱动电路例如为灵敏放大器。
72.图6a示出了将存储阵列中的每个6t型存储单元的第一位线和第二位线连接至驱动电路(例如灵敏放大器)的结构示意图,这里以图5所示的6t型存储单元为例。
73.如图所示,该6t型存储单元中包含用于存储数据的6个晶体管(6t)(分别为pu0/1、ng0/1、nd0/1六个mos晶体管)存储单元,其通过第一位线bl和第二位线blb连接驱动电路(例如灵敏放大器)。更具体而言,第一位线bl和第二位线blb各自通过对应开关元件连接到驱动电路,例如该两个开关元件例如为晶体管,如图所示,晶体管pmx0和pmx1分别用于连接第一位线bl和第二位线blb与驱动电路,并且均由控制线ymux控制。字线wl控制该存储单元以是否在第一位线bl和第二位线blb输出与存储数据对应的信号,第一位线bl和第二位线blb上输出的信号在晶体管pmx0和pmx1被控制线ymux开启的情况下,被输入至灵敏放大器中。灵敏放大器将第一位线bl和第二位线blb输出的信号放大、读出,并且被输入到运算模块120进行运算,例如运算结果不通过读出电路130直接从do输出端输出。
74.图6b示出了一种灵敏放大器的示例性结构示意图。当wl为高电平时,在节点q和qb上存储的数据在第一位线bl和第二位线blb上输出信号,且在控制线ymux上施加开启信号之后,第一位线bl输出的信号通过晶体管pmx0输入至灵敏放大器的sati线路,第二位线blb输出的信号通过晶体管pmx1输入至灵敏放大器的saci线路,当第一位线bl和第二位线blb之间产生电压差时,sati线路和saci线路之间也产生相同的电压差,那么控制灵敏放大器的开关saen打开之后,灵敏放大器将第一位线bl和第二位线blb输出的信号放大。例如,灵敏放大器的工作时状态波形如图6b右侧示意图所示。
75.图7为本公开一些实施例提供的一种存储器内运算方法的流程图;图8为对应于图7所示的方法的第一存储单元和第二存储单元与运算模块连接的结构框图。
76.如图7所示,该存储器内运算方法包括以下步骤s100至步骤s200。
77.步骤s100:在多个存储单元中选择存储用于运算的第一数值的第一存储单元和存储用于运算的第二数值的第二存储单元进行读操作,获取对应于第一数值和第二数值的叠加信号。
78.步骤s200:在存储器内使用叠加信号得到运算的运算结果。
79.如图8所示,将第一存储单元和第二存储单元输出的第一数值和第二数值的叠加信号通过运算模块120进行运算获得运算结果,该运算结果之后被输出。
80.下面将进一步结合图4以及图5所示的实施例进行说明,但是本公开的实施例不限于此。
81.首先,控制模块110获取第一数值m的第一存储地址和第二数值n的第二存储地址,并由地址译码模块140根据第一存储地址在多个存储单元中选择存储第一数值m的第一存储单元,根据第二存储地址在多个存储单元中选择存储第二数值n的第二存储单元,以对第一数值和第二数值进行读操作。
82.具体而言,地址译码模块140对控制模块110发送的第一存储地址和第二存储地址
进行解码,以选择第一存储单元对应的字线(wl[m])、第一位线(bl[m])和第二位线(blb[m]),以及选择第二存储单元对应的字线(wl[n])、第一位线(bl[n])和第二位线(blb[n])。例如,第一存储单元和第二存储单元在同一列,因此第一存储单元的第一位线(bl[m])和第二存储单元的第一位线(bl[n])为同一条第一位线bl,第一存储单元的第二位线(blb[m])和第二存储单元的第二位线(blb[n])为同一条第二位线blb。
[0083]
然后,在对第一数值和第二数值进行读操作时,第一存储单元对应的字线控制(例如施加开启信号)第一存储单元,通过第一读出端口在对应的第一位线bl输出第一数值的信号;第二存储单元对应的字线控制(例如施加开启信号)第二存储单元,通过第一读出端口在对应的同一条第一位线bl输出第二数值的信号;组合同一条第一位线bl输出的第一数值的信号和第二数值的信号得到第一叠加信号。同理,第一存储单元对应的字线控制(例如施加开启信号)第一存储单元,通过第二读出端口在对应的第二位线blb输出第一数值的信号;第二存储单元对应的字线控制(例如施加开启信号)第二存储单元,通过第二读出端口在对应的同一条第二位线blb输出第二数值的信号;组合同一条第二位线blb输出的第一数值的信号和第二数值的信号得到第二叠加信号。组合第一叠加子信号和第二叠加子信号得到一对叠加信号。每个存储单元的读出端口通过相应的位线与运算模块120连接,通过运算模块120对该一对叠加信号进行处理,得到运算结果。
[0084]
需要指出的是,这里,“第一存储单元”或“第二存储单元”用于指代多个存储单元中作为操作对象的任一存储单元,“第一位线”和“第二位线”作为描述对象的存储单元(例如第一存储单元或第二存储单元)所对应的位线。
[0085]
这里,所进行的运算包括逻辑运算,该逻辑运算可以为异或(xor)运算或同或(xnor)运算。在本公开的至少一实施例中,为了能够实现这两种存内运算,运算模块120可以包括与非门,通过与非门输出运算结果,并由该运算结果得到例如“同或”运算结果或“异或”运算结果。
[0086]
例如,运算模块120的输出端还可以连接一个锁存电路,该锁存电路用于将运算模块输出的信号(例如,后续实施例中的match输出端输出的信号)锁存,防止灵敏放大器中的线路sati/saci在重置操作后重新变回初始数值而导致运算模块输出的运算结果信号丢失。
[0087]
另外,例如,还可以将第一存储单元存储的第一数值和第二存储单元存储的第二数值的叠加信号通过读出电路130来完成读出操作,读出电路130用于读出第一数值和第二数值。由于在进行“异或”运算或“同或”运算时,读出电路130读出的数据可能被更新为当前运算的第一数值和第二数值,或读出的数据并未被更新,仍然保留为上一运算的第一数值和第二数值(后续实施例详细说明),因此,读出电路130读出的数据并不确定,为了保证读出电路130读出的数据是确定状态,所以将第一数值和第二数值的叠加信号通过读出电路130读出的数值置0或置1,从而将运算阶段中的输出状态锁定(但并非用于实际使用);之后,在数据读取阶段(而非运算阶段)中,读出电路130将根据灵敏放大器的输出而输出实际的数值。
[0088]
例如,控制模块110可以同步选择第一存储单元和第二存储单元,第一存储单元和第二存储单元在第一位线输出的第一叠加信号和在第二位线输出的第二叠加信号,彼此组合得到叠加信号,将该叠加信号输入至运算模块120内进行运算,能够有效加快整个过程的
运算速度,缩短运算周期。
[0089]
例如,在同一操作周期(时钟周期或机器周期)内,选择第一存储单元和第二存储单元、获取叠加信号以及得到运算结果。在存储器内对第一数值和第二数值的运算周期集中在同一操作周期内,有效缩短了运算周期。
[0090]
如图9所示,图9中的电路部分仅做示意说明,且以图5所示的实施例为例,实际电路设计可以根据实际情况进行适应性调整,本公开的实施例对此不做限定。在图9中io[0]表示输入/输出通道,例如可以对应于存储阵列中的一列。
[0091]
以下以逻辑运算为“同或”运算详细说明本公开实施例的存储器内运算方法在存储单元中执行时的信号传输的具体过程,这具体过程也可以适用于其他类型的运算。
[0092]
例如,图10示出一种第一存储单元和第二存储单元的字线和位线上“同或”运算的信号流示意图。
[0093]
在一种示例中,假设第一存储单元存储的第一数值和第二存储单元存储的第二数值相同,例如在节点q和qb上存储的第一数值q[m]和第二数值q[n]均为1或0。在q[m]=q[n]=0的情况下,当第一存储单元的字线wl[m]和第二存储单元的字线wl[n]为高电平时,在节点q和qb上存储的第一数值q[m]和第二数值q[n]在第一位线bl和第二位线blb上输出信号,由于q[m]=q[n]=0,q[m]节点和q[n]节点会下拉第一存储单元和第二存储单元共同的第一位线bl的电压,并且由于是两个存储单元的节点都下拉第一位线bl的电压,所以第一位线bl被下拉到0(或者接近0)的速度比单个存储单元下拉第一位线bl的电压快一倍(如图11的虚线箭头示出第一位线bl被下拉到0的放电通路);而两个存储单元的节点都不会改变第二位线blb的电压,该第二位线blb仍然处于悬浮(即1)的状态。控制线write/match ymux的功能是从多列存储单元中选择某一列中的第一位线bl和第二位线blb连接至后续的灵敏放大器。然后,在控制线write/match ymux上施加开启信号之后,两个mos晶体管(t1晶体管和t2晶体管)打开第一位线bl和第二位线blb与灵敏放大器连接的通路,使得第一位线bl输出的信号(bl=0)输入至灵敏放大器的sat线路,第二位线blb输出的信号(blb=1)输入至灵敏放大器中的sac线路,灵敏放大器的输入端开关线路match_pg(pass_gate)控制开启的两个mos晶体管(t3晶体管和t4晶体管)打开,使得sat和sati连接,sac和saci连接,sat和sati是通过match_pg连接起来的,同样的,sac和saci连接是通过match_pg连接起来的,,使得sat线路上的信号(sat=0)通过输入端线路sati进入灵敏放大器中,sac线路上的信号(sac=0)通过输入端线路saci进入灵敏放大器中,灵敏放大器输出的两个信号经过与非门(nand)运算之后输出运算结果“1”,即match=1,match=1表示第一数值q[m]和第二数值q[n]相同(均为0或均为1)。同理,在q[m]=q[n]=1的情况下,与非门(nand)中同样输出运算结果“1”,即match=1。
[0094]
例如,图11示出另一种第一存储单元和第二存储单元的字线和位线上“同或”运算的信号流示意图。
[0095]
在一种示例中,假设第一存储单元存储的第一数值和第二存储单元存储的第二数值不同,例如在节点q和qb上存储的第一数值q[m]和第二数值q[n]中有一个数值为1,另一个数值为0。在q[m]=1、q[n]=0的情况下,当第一存储单元的字线wl[m]和第二存储单元的字线wl[n]为高电平时,在节点q和qb上存储的第一数值q[m]和第二数值q[n]在第一位线bl和第二位线blb上输出信号,由于q[m]=0,q[m]节点会下拉第一存储单元和第二存储单元
共同的第一位线bl的电压,由于q[n]=1,当第一位线bl被下拉至电压值为vdd-vth时(因为通路上的nmos传输vdd会损失一个vth),q[n]会源源不断的补充电流到第一位线bl上,第一位线bl的电压就会停留在一个接近vdd-vth的值上(粗虚线为bl被下拉到0的放电通路,细虚线为q/qb给bl充电的通路)。同理,第二位线blb的电压也会停留在一个vdd-vth的值上。然后,在控制线write/match ymux上施加开启信号之后,两个mos晶体管(t1晶体管和t2晶体管)打开第一位线bl和第二位线blb与灵敏放大器连接的通路,使得第一位线输出的信号(bl=vdd-vth)输入至灵敏放大器的sat线路,第二位线blb输出的信号(blb=1)输入至灵敏放大器中的sac线路,灵敏放大器的输入端开关线路match_pg控制开启的两个mos晶体管(t3晶体管和t4晶体管)打开,使得sat和sati连接,sac和saci连接,sat和sati是通过match_pg连接起来的,同样的,sac和saci连接是通过match_pg连接起来的,使得sat线路上的信号(sat=vdd-vth)通过输入端线路sati进入灵敏放大器中,sac线路上的信号(sac=vdd-vth)通过输入端线路saci进入灵敏放大器中,灵敏放大器输出的两个信号经过与非门(nand)运算之后输出运算结果“0”,即match=0,match=0表示第一数值q[m]和第二数值q[n]不同。同理,在q[m]=0而q[n]=1的情况下,与非门(nand)中同样输出运算结果“0”,即match=0。
[0096]
由上可知,一方面,在q[m]与q[n]相同的情况下,与非门(nand)输出“1”;另一方面,在q[m]与q[n]不同的情况下,与非门(nand)输出“0”,即match=0。由此,实现“同或”运算(相同为真,不同为假)。
[0097]
例如,图12示出一种存储器的结构示意图,基于该存储器的结构示意图详细说明本公开实施例的存储器内运算方法在存储单元中执行时的信号传输的具体过程,以及存储器常规的读写操作过程。
[0098]
在一种示例中,参考上述第一存储单元和第二存储单元的字线和位线上“同或”运算的实施例,第一存储单元中存储的第一数值q[m]和第二存储单元存储的第二数值q[n]在存储器内进行运算之后,从match端输出运算结果,并且,第一数值q[m]和第二数值q[n]可以经过读出电路130从端口do输出。match输出端口和do输出端口的输出可以有多种设置方式,例如,当match=1时,将当前用于运算的第一数值q[m]和第二数值q[n]从do输出端输出,当match=0时,将do输出的数据统一置0或者置1。原因是当sati和saci其中有一个为0时,通过与非门输出match=1,d0输出的数据会被更新成当前存储的数据q,当sati和saci都为1时,通过与非门输出match=0,d0输出的数据并不会被更新,仍然输出前面存储的数据q-1,所以do输出的数据是不确定状态,为了保证d0输出的数据为确定状态,就将d0输出的数据置0或1。当然,当进行“异或”运算时,match输出端输出运算结果,同时可以将do输出的数据统一置0或者置1,本实施例不做限定。
[0099]
例如,对第一存储单元中存储的第一数值q[m]或第二存储单元存储的第二数值q[n]进行读操作的情形下,当第一存储单元的字线wl[m]或第二存储单元的字线wl[n]为高电平时,在节点q和qb上存储的第一数值q[m]或第二数值q[n]在第一位线bl上输出信号,在第二位线blb上输出信号。然后,在控制线read ymux(write/match ymux处于关闭状态)上施加开启信号之后,两个mos晶体管(pux0晶体管和pux1晶体管)打开第一位线bl和第二位线blb与灵敏放大器连接的通路,使得第一位线输出的信号输入至灵敏放大器的sat线路,或第二位线blb输出的信号输入至灵敏放大器中的sac线路。灵敏放大器的输入端开关线路
match_pg控制关闭两个mos晶体管(t3晶体管和t4晶体管),并且灵敏放大器的开关saen打开之后,sat线路上的信号并未通过输入端线路sati,同样的,sac线路上的信号并未通过输入端线路sac,sat线路上的信号或sac线路上的信号经过读出电路130,do输出端输出第一数值q[m]或第二数值[n]。
[0100]
例如,通过写入电路(未示出)对第一存储单元中存储的第一数值q[m]或第二存储单元存储的第二数值q[n]进行写操作的情形下,当第一存储单元的字线wl[m]或第二存储单元的字线wl[n]为高电平时,在节点q和qb上存储的第一数值q[m]或第二数值q[n]在第一位线bl上输出信号,在第二位线blb上输出信号。然后,在控制线write/match ymux(read ymux处于关闭状态)上施加开启信号之后,两个mos晶体管(pux0晶体管和pux1晶体管)打开第一位线bl和第二位线blb与灵敏放大器连接的通路,但是,由于灵敏放大器的输入端开关线路match_pg控制关闭两个mos晶体管(t3晶体管和t4晶体管),并且灵敏放大器的开关saen也关闭,此时可以写入数据。
[0101]
上述各个实施例中运算过程、读写操作等存储器内各个控制线开启或关闭,以及match输出端和do输出端的情况参见下表1,其中,q-1:表示上一次读出的数据;q:表示当前读出数据。表1仅做部分示例,运算的类型还可以有多种,不做具体限定。
[0102]
表1
[0103][0104]
图13为本公开一些实施例提供的一种存储器10,存储器10包括存储器内运算装置100和具有多个存储单元的阵列200(存储阵列),该阵列200包括多行多列存储单元。该存储器内运算装置100包括控制模块110和运算模块120,控制模块110和运算模块120分别与阵列200耦接。
[0105]
控制模块110被配置为在多个存储单元中选择存储用于运算的第一数值的第一存储单元和存储用于运算的第二数值的第二存储单元进行读操作,获取对应于第一数值和第二数值的叠加信号;运算模块120被配置为在存储器10内使用叠加信号得到运算的运算结果。
[0106]
例如,阵列200包括多条字线、多条第一位线、多条第二位线,每个存储单元包括由对应的字线控制的第一读出端口,第一读出端口连接对应的第一位线,第一存储单元的第一位线和第二存储单元的第一位线为同一条第一位线。第一存储单元和第二存储单元被配置为通过同一第一条位线输出对应于第一数值和第二数值的第一叠加信号,其中,第一叠加信号用于获取叠加信号。
[0107]
例如,每个存储单元还包括由对应的字线控制的第二读出端口,第二读出端口连接对应的第二位线,第一存储单元的第二位线和第二存储单元的第二位线为同一条第二位线。第一存储单元和第二存储单元还被配置为通过同一条第二位线获取对应于第一数值和第二数值的第二叠加子信号;组合第一叠加子信号和第二叠加子信号以获取叠加信号。
[0108]
例如,每个存储单元还包括由对应的字线控制的第二读出端口,第二读出端口连接对应的第二位线,第一存储单元的第二位线和第二存储单元的第二位线为同一条第二位线。第一存储单元和第二存储单元还被配置为通过同一条第二位线获取对应于第一数值和第二数值的第二叠加子信号;组合第一叠加子信号和第二叠加子信号以获取叠加信号。
[0109]
例如,控制模块110还被配置为同步选择第一存储单元和第二存储单元,运算模块120被配置为获取对应于第一数值和第二数值的叠加信号。
[0110]
例如,控制模块110还被配置为,在同一操作周期内,选择第一存储单元和第二存储单元、获取叠加信号,以及运算模块120还被配置为,在同一操作周期内,得到运算结果。
[0111]
例如,该存储器内运算装置还包括灵敏放大器,灵敏放大器被配置为读出同一条第一位线输出的第一叠加信号和同一条第二位线输出的第二叠加信号。
[0112]
例如,运算模块120包括与非门。
[0113]
例如,该存储器内运算装置还包括读出电路130,读出电路130被配置为读出第一数值和第二数值。
[0114]
例如,读出电路130还被配置为将读出电路读出的数值置0或置1。
[0115]
例如,控制模块110还被配置为获取第一存储单元的第一存储地址和第二存储单元的第二存储地址。
[0116]
存储器内运算装置还包括地址译码模块140,地址译码模块140被配置为对第一存储地址和第二存储地址进行解码,用于选择第一存储单元对应的字线和对应的位线,选择第二存储单元对应的字线和对应的位线。
[0117]
图14为本公开一些实施例提供的另一种存储单元内运算装置的示意性框图。
[0118]
例如,如图14所示,该存储器内运算装置500包括存储单元510和处理单元520。例如,存储单元510用于非暂时性存储计算机可执行指令,处理单元520用于运行该计算机可执行指令,该计算机可执行指令被处理单元520运行时执行本公开任一实施例提供的存储器内运算方法。
[0119]
例如,存储单元510和处理单元520之间可以直接或间接地互相通信。例如,在一些示例中,如图14所示,该存储器内运算装置500还可以包括系统总线530,存储单元510和处理单元520之间可以通过系统总线530互相通信,例如,处理单元520可以通过系统总线1006访问存储单元510。例如,在另一些示例中,存储单元510和处理单元520等组件之间可以通过片上网络(noc)连接进行通信。
[0120]
例如,处理单元520可以控制存储器内运算装置中的其它组件以执行期望的功能。处理单元520可以是中央处理单元(cpu)、张量处理单元(tpu)、网络处理单元(np)或者图形处理单元(gpu)等具有数据处理能力和/或程序执行能力的器件,还可以是数字信号处理单元(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
[0121]
例如,存储单元510可以包括一个或多个计算机程序产品的任意组合,计算机程序
产品可以包括各种形式的计算机可读存储介质,例如易失性存储单元和/或非易失性存储单元。易失性存储单元例如可以包括随机存取存储单元(ram)和/或高速缓冲存储单元(cache)等。非易失性存储单元例如可以包括只读存储单元(rom)、硬盘、可擦除可编程只读存储单元(eprom)、便携式紧致盘只读存储单元(cd-rom)、usb存储单元、闪存等。
[0122]
例如,在存储单元510上可以存储一个或多个计算机指令,处理单元520可以运行计算机指令,以实现各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据,例如指令处理代码以及应用程序使用和/或产生的各种数据等。
[0123]
例如,存储单元510存储的一些计算机指令被处理单元520执行时可以执行根据上文的存储器内运算方法中的一个或多个步骤。
[0124]
例如,如图14所示,存储器内运算装置500还可以包括允许外部设备与存储器内运算装置500进行通信的输入接口540。例如,输入接口540可被用于从外部计算机设备、从用户等处接收指令。存储器内运算装置500还可以包括使存储器内运算装置500和一个或多个外部设备相互连接的输出接口550。例如,存储器内运算装置500可以通过输出接口550等。
[0125]
例如,关于存储器内运算方法的处理过程的详细说明可以参考上述存储器内运算方法的实施例中的相关描述,重复之处不再赘述。
[0126]
需要说明的是,本公开的实施例提供的存储器内运算装置是示例性的,而非限制性的,根据实际应用需要,该存储器内运算装置还可以包括其他常规部件或结构,例如,为实现存储器内运算装置的必要功能,本领域技术人员可以根据具体应用场景设置其他的常规部件或结构,本公开的实施例对此不作限制。
[0127]
本公开至少一些实施例还提供一种存储器,包括多个存储单元的存储阵列以及如前述任一项实施例的存储器内运算装置,该存储阵列包括多行多列存储单元。例如,该存储器可以为sram(静态随机存取存储器)等。
[0128]
本公开至少一些实施例还提供一种非暂时性存储介质。图15为本公开一些实施例提供的一种非暂时性存储介质的示意图。
[0129]
例如,如图15所示,该存储介质600非暂时性地存储计算机可执行指令610,当非暂时性计算机可执行指令610由计算机(包括处理器)执行时可以执行本公开任一实施例提供的存储器内运算方法。
[0130]
例如,在存储介质600上可以存储一个或多个计算机指令。存储介质600上存储的一些计算机指令可以是例如用于实现上述存储器内运算方法中的一个或多个步骤的指令。
[0131]
例如,存储介质可以包括平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)、光盘只读存储器(cd-rom)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。例如,存储介质600可以包括前述存储器内运算装置500中的存储单元510。
[0132]
本公开的实施例提供的存储介质的技术效果可以参考上述实施例中关于存储器内运算方法的相应描述,在此不再赘述。
[0133]
对于本公开,有以下几点需要说明:
[0134]
(1)本公开实施例附图中,只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
[0135]
(2)在不冲突的情况下,本公开同一实施例及不同实施例中的特征可以相互组合。
[0136]
以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献