CN114077418A - 存储器内运算方法及装置、存储器及存储介质 - Google Patents
存储器内运算方法及装置、存储器及存储介质 Download PDFInfo
- Publication number
- CN114077418A CN114077418A CN202111371117.7A CN202111371117A CN114077418A CN 114077418 A CN114077418 A CN 114077418A CN 202111371117 A CN202111371117 A CN 202111371117A CN 114077418 A CN114077418 A CN 114077418A
- Authority
- CN
- China
- Prior art keywords
- signal
- memory
- bit line
- memory cell
- storage unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Nonlinear Science (AREA)
- General Engineering & Computer Science (AREA)
- Static Random-Access Memory (AREA)
Abstract
一种存储器内运算方法及装置、存储器及存储介质。该存储器包括具有多个存储单元的阵列,该阵列包括多行多列,该存储器内运算方法包括:在多个存储单元中选择存储用于运算的第一数值的第一存储单元以获取第一数值的第一信号;在多个存储单元中选择存储用于运算的第二数值的第二存储单元以获取第二数值的第二信号;在存储器内使用第一数值的第一信号和第二数值的第二信号进行运算。该方法通过在存储器内读取需要运算的存储单元中的数值并完成逻辑运算,不仅有效缩短了逻辑运算时间,且无需额外的外部存储设备,进而缩小芯片面积,降低功耗。
Description
技术领域
本公开的实施例涉及一种存储器内运算方法及装置、存储器及存储介质。
背景技术
静态随机存取存储器(Static Random-Access Memory,SRAM)是随机存取存储器的一种。“静态”是指这种存储器只要保持通电,存储的数据就可以恒常保持。例如,SRAM包括存储单元阵列、地址译码器(包括行译码器和列译码器)、灵敏放大器、控制电路和缓冲/驱动电路。存储阵列中的每个存储单元都与其它单元在行和列上共享电学连接,其中水平方向的连线称为“字线”(WL,word line),而垂直方向的数据流入和流出存储单元的连线称为“位线”(BL,bit line)。通过输入的地址可选择特定的字线和位线,字线和位线的交叉处就是被选中的存储单元,然后再对其进行读写操作。
发明内容
本公开至少一实施例提供一种存储器内运算方法,所述存储器包括具有多个存储单元的阵列,所述阵列包括多行多列,所述方法包括:在所述多个存储单元中选择存储用于所述运算的第一数值的第一存储单元以获取所述第一数值的第一信号;在所述多个存储单元中选择存储用于所述运算的第二数值的第二存储单元以获取所述第二数值的第二信号;在所述存储器内使用所述第一数值的第一信号和所述第二数值的第二信号进行所述运算,得到运算结果。
例如,在本公开一些实施例提供的存储器内运算方法中,所述阵列还包括多条第一字线、多条第一位线、多条第二字线和多条第二位线,每个所述存储单元包括由对应的第一字线控制的第一读出端口和由对应的第二字线控制的第二读出端口,所述第一读出端口连接对应的第一位线,且通过所述对应的第一位线输出所述第一信号,所述第二读出端口连接对应的第二位线,且通过所述对应的第二位线输出所述第二信号。所述方法还包括:所述第一存储单元对应的第一字线控制所述第一存储单元通过所述第一读出端口在所述对应的第一位线输出所述第一信号,所述第二存储单元对应的第二字线控制所述第二存储单元通过多数第二读出端口在所述对应的第二位线输出所述第二信号。
例如,在本公开一些实施例提供的存储器内运算方法中,所述第一存储单元和所述第二存储单元被同步选中,同步获取所述第一信号和所述第二信号。
例如,在本公开一些实施例提供的存储器内运算方法中,在同一操作周期内,选择所述第一存储单元和所述第二存储单元、获取所述第一信号和所述第二信号以及得到所述运算结果。
例如,在本公开一些实施例提供的存储器内运算方法中,通过灵敏放大器读出所述第一存储单元对应的第一位线输出的所述第一信号和/或所述第二存储单元对应的第二位线输出的所述第二信号。
例如,在本公开一些实施例提供的存储器内运算方法中,将所述第一信号和所述第二信号通过运算模块进行运算获得所述运算结果。
例如,在本公开一些实施例提供的存储器内运算方法中,所述运算包括逻辑运算。
例如,在本公开一些实施例提供的存储器内运算方法中,所述运算模块包括多个运算单元,所述第一信号和所述第二信号被输入到所述多个运算单元。所述方法还包括:接收用于确定运算类型的选择信号,根据所述选择信号将所述第一信号和所述第二信号发送至所述多个运算单元中所述选择信号确定的运算类型对应的运算单元以进行运算。
例如,在本公开一些实施例提供的存储器内运算方法中,所述多个运算单元包括与门、或门、非门、与非门、异或门、同或门中一个或多个。
例如,在本公开一些实施例提供的存储器内运算方法中,所述运算模块还包括多个与所述运算单元连接的多个选择开关,所述多个选择开关接收所述选择信号,并根据所述选择信号开启与所述选择信号对应的一个选择开关。
例如,在本公开一些实施例提供的存储器内运算方法中,获取所述第一存储单元的第一存储地址和所述第二存储单元的第二存储地址,对所述第一存储地址和所述第二存储地址进行解码,以选择所述第一存储单元对应的第一字线和对应的第一位线,以及选择所述第二存储单元对应的第二字线和对应的第二位线。
例如,在本公开一些实施例提供的存储器内运算方法中,所述阵列包括多条第一字线和多条第一位线,每个所述存储单元包括由对应的第一字线控制的第一读出端口,所述第一读出端口连接对应的第一位线,通过所述第一读出端口在所述对应的第一位线上输出所述第一信号,所述第一存储单元对应的第一位线和所述第二存储单元对应的第一位线为同一条第一位线。所述方法包括:在所述多个存储单元中同步选择所述第一存储单元和所述第二存储单元,且在所述同一条第一位线上输出所述第一数值和所述第二数值的叠加信号,以获取所述运算结果。
本公开至少一实施例还提供一种存储器内运算装置,所述存储器包括具有多个存储单元的阵列,所述阵列包括多行多列,所述运算装置包括控制模块和运算模块,所述控制模块和所述运算模块分别与所述阵列耦接,所述控制模块被配置为在所述多个存储单元中选择存储用于所述运算的第一数值的第一存储单元,在所述多个存储单元中选择存储用于所述运算的第二数值的第二存储单元;所述第一存储单元被配置为输出所述第一数值的第一信号;所述第二存储单元被配置为输出所述第二数值的第二信号;所述运算模块被配置为通过所述第一数值的第一信号和所述第二数值的第二信号进行所述运算,得到运算结果。
例如,在本公开一些实施例提供的存储器内运算装置中,所述阵列还包括多条第一字线、多条第一位线、多条第二字线和多条第二位线,每个所述存储单元包括由对应的第一字线控制的第一读出端口和由对应的第二字线控制的第二读出端口,所述第一读出端口连接对应的第一位线,所述第二读出端口连接对应的第二位线,所述第一存储单元被配置为由所述对应的第一字线控制所述第一存储单元通过所述第一读出端口在所述对应的第一位线输出所述第一信号,所述第二存储单元被配置为由所述对应的第二字线控制所述第二存储单元通过所述第二读出端口在所述对应的第二位线输出所述第二信号。
例如,在本公开一些实施例提供的存储器内运算装置中,所述控制模块还被配置为同步选择所述第一存储单元和所述第二存储单元,所述运算模块被配置为同步获取所述第一信号和所述第二信号。
例如,在本公开一些实施例提供的存储器内运算装置中,所述控制模块还被配置为,在同一操作周期内,选择所述第一存储单元和所述第二存储单元、获取所述第一信号和所述第二信号;所述运算模块还被配置为,在所述同一操作周期内,得到所述运算结果。
例如,在本公开一些实施例提供的存储器内运算装置,还包括至少一个灵敏放大器,其中,所述至少一个灵敏放大器被配置为分别读出每个所述存储单元通过第一位线和/或第二位线输出的信号。
例如,在本公开一些实施例提供的存储器内运算装置中,所述运算模块包括多个运算单元,所述第一位线和所述第二位线与所述多个运算单元连接,所述运算模块还被配置为,接收用于确定运算类型的选择信号,根据所述选择信号将所述第一信号和所述第二信号发送至所述多个运算单元中选择信号确定的运算类型对应的运算单元以进行运算。
例如,在本公开一些实施例提供的存储器内运算装置中,所述多个运算单元包括与门、或门、非门、与非门、异或门、同或门中的一个或多个。
例如,在本公开一些实施例提供的存储器内运算装置中,所述运算模块还包括多个与所述运算单元连接的开关,所述控制模块还被配置为根据所述选择信号打开所述选择信号对应的运算单元的开关,将对应的运算结果输出到所述存储器外。
例如,在本公开一些实施例提供的存储器内运算装置,还包括地址译码模块,其中,所述控制模块还被配置为获取所述第一存储单元的第一存储地址和所述第二存储单元的第二存储地址;所述地址译码模块被配置为对所述第一存储地址和所述第二存储地址进行解码,用于选择所述第一存储单元对应的第一字线和对应的第一位线,选择所述第二存储单元的对应的第二字线和对应的第二位线。
例如,在本公开一些实施例提供的存储器内运算装置中,所述阵列包括多条第一字线和多条第一位线,每个所述存储单元包括由对应的第一字线控制的第一读出端口,所述第一读出端口连接对应的第一位线,通过所述第一读出端口在所述对应的第一位线上输出所述第一信号,所述第一存储单元对应的第一位线和所述第二存储单元对应的第一位线为同一条第一位线,所述控制模块还被配置为在所述多个存储单元中同步选择所述第一存储单元和所述第二存储单元,由此在所述同一条第一位线上输出所述第一数值和所述第二数值的叠加信号,所述运算模块还被配置为在所述存储器内使用所述叠加信号以获取所述运算结果。
本公开至少一实施例还提供一种存储器,包括如上述任一实施例提供的存储器内运算装置以及相应的具有多个存储单元的阵列。
本公开至少一实施例还提供一种存储器内运算装置,该装置包括:存储单元,用于非暂时性存储计算机可执行指令;以及处理单元,用于运行所述计算机可执行指令,其中,所述计算机可执行指令被所述处理单元运行时,执行本公开任一实施例提供的存储器内运算方法。
本公开至少一实施例还提供一种非暂时性存储介质,非暂时性地存储计算机可执行指令,其中,当所述计算机可执行指令由计算机执行时,执行本公开任一实施例提供的存储器内运算方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为一种8T型的静态随机存取存储器(SRAM)存储单元的电路示意图;
图2为图1所示的8T型的SRAM存储单元进行读操作时的电压波形示意图;
图3为另一种8T型的SRAM存储单元的电路示意图;
图4为本公开一实施例提供的一种存储器的结构框图;
图5A为本公开一实施例提供的一种8T2P型SRAM存储单元的电路示意图,图5B为本公开一实施例提供的一种8T Dual Port(双端口)型SRAM存储单元的电路示意图;
图6A为图5A和图5B所示的8T2P型SRAM存储单元中驱动电路(灵敏放大器)连接的电路图;
图6B为图6A中灵敏放大器的示例性结构电路图;
图7为本公开一实施例提供的一种存储器内运算方法的流程示意图;
图8为对应于图7所示的方法的第一存储单元和第二存储单元与运算模块连接的结构框图;
图9为本公开一实施例提供的一种存储器的部分电路设计图;
图10为本公开一实施例提供的第一存储单元和第二存储单元的字线和位线上“与”运算的信号流示意图;
图11为本公开一实施例提供的第一存储单元和第二存储单元的字线和位线上“或”运算的信号流示意图;
图12为本公开一实施例提供的一种运算模块的结构示意图;
图13为本公开一实施例提供的另一种运算模块的结构示意图;
图14为本公开一实施例提供的一种存储器内运算装置的示意性框图;
图15为本公开一实施例提供的另一种存储器内运算装置的示意性框图;
图16为本公开一些实施例提供的一种非暂时性存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
下面通过几个具体的实施例对本公开进行说明。为了保持本公开实施例的以下说明清楚且简明,本公开省略了已知功能和已知部件的详细说明。当本公开实施例的任一部件在一个以上的附图中出现时,该部件在每个附图中由相同或类似的参考标号表示。
例如,目前的集成电路设计中,电路需要进行各种数学运算,大部分的数学运算需要芯片中存储器存储的值参与运算。例如,下面分别对应或、与以及异或运算。
·运算结果1=地址1的存储值or地址2的存储值;
·运算结果2=地址1的存储值and地址2的存储值;
·运算结果3=地址1的存储值xor地址2的存储值。
在运算中,从芯片的存储器中第一次读取地址1的存储值,存储在外部存储设备DFF(时序电路)中,从存储器中第二次读取地址2的存储值,将两次读取的存储值进行逻辑运算,两次读取存储值导致逻辑运算时间长,且需要外部存储设备存储第一次读取的存储值,导致芯片面积增大,功耗增大。
本公开至少一些实施例提供一种存储器内运算方法,该存储器包括具有多个存储单元的阵列,该阵列包括多行多列,该存储器内运算方法包括:在多个存储单元中选择存储用于运算的第一数值的第一存储单元以获取第一数值的第一信号;在多个存储单元中选择存储用于运算的第二数值的第二存储单元以获取第二数值的第二信号;在存储器内使用第一数值的第一信号和第二数值的第一信号进行运算,得到运算结果。
本公开的一些实施例还提供对应于存储器内运算方法的存储器内运算装置,该存储器包括具有多个存储单元的阵列,该阵列包括多行多列,该装置包括控制模块和运算模块,控制模块和运算模块分别与上述阵列耦接。控制模块被配置为在多个存储单元中选择存储用于运算的第一数值的第一存储单元,在多个存储单元中选择存储用于运算的第二数值的第二存储单元;第一存储单元被配置为输出第一数值的第一信号;第二存储单元被配置为输出第二数值的第二信号;运算模块被配置为第一数值的第一信号和第二数值的第一信号进行运算,得到运算结果。
本公开的一些实施例还提供一种包括上述存储器内运算装置的存储器。
本公开的一些实施例还提供对应于上述存储器内运算方法的非暂时性存储介质,该存储介质非暂时性地存储计算机可读指令,其中,当计算机可读指令由计算机执行时,执行上述本公开的实施例提供的存储器内运算方法。
本公开的上述实施例提供的存储器内运算方法,通过在存储器中多个存储单元中选择第一存储单元和第二存储单元进行读操作,获取第一存储单元中第一数值的第一信号和第二存储单元中第二数值的第二信号,并在存储器中使用第一信号和第二信号进行运算,得到运算结果。该方法通过在存储器内读取需要运算的存储单元中的数值并完成逻辑运算,不仅有效缩短了逻辑运算时间,且无需额外的外部存储设备,进而缩小芯片面积,降低功耗。
下面结合附图对本公开的一些实施例及其示例进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
图1示出一种8晶体管(8T)型随机静态存储器存储单元。该8T型存储单元包括8个晶体管用于存储数据和读写操作,例如PU晶体管、PD晶体管、PU_X晶体管、PD_X晶体管、PG晶体管、PG_X晶体管。由于这种结构具有独立的读字线(RWL,Read word line)、读位线(RBL,Read Bit Line)、写字线(WWL,Write Word Line)、以及一对用于写入数据的写位线(WBL/WBLB,Write Bit Line),从而有分开的读端口和写端口。数据从读端口读出,数据从写端口写入,写入时BL和BLB互为取反。PU晶体管和PD晶体管,PU_X晶体管和PD_X晶体管构成了首尾相接的两个反相器,即一个反相器输出接到另一个反相器的输入,反之亦然。由于两个反相器的首尾相接,构成了一个锁存器,没有外部影响时,Q存储节点和QB存储节点可以非常稳定的存储数据,两者互补,例如Q=0时,QB=1(即存储的数值为“0”)。例如,图2示出了上述8T型存储单元的实际读操作中的波形图,读操作时读字线RWL加高电平(RWL=1)控制晶体管T1开启,若QB=1,控制相应的晶体管T2开启,则位线RBL接地从而其上的电平会从“1”被下拉到“0”即低电平,若QB=0,控制相应的晶体管T2不开启,则位线RBL的电平被维持在“1”即高电平。因此,存储的数值1将在被读出的时候将使得RBL的电平会被下拉到“0”即低电平。
图3示出另一种8晶体管(8T)型的随机静态存储器存储单元。该8T型存储单元包括8个晶体管用于存储数据和读写操作,例如PU晶体管、PD晶体管、PU_X晶体管、PD_X晶体管、PG1晶体管、PG_X1晶体管、PG2晶体管、PG_X2晶体管。与图1示出的8T型晶体管的区别是增加了与PG1晶体管、PG_X1晶体管对称的一对晶体管,即PG2晶体管和PG_X2晶体管。因此,该8T型存储单元具有两对字线和位线,分别是用于控制PG1晶体管、PG_X1晶体管的第一字线AWL和第一位线ABL/ABLB,用于控制PG2晶体管、PG_X2晶体管的第二字线BWL和第二位线BBL/BBLB,从而有分开的读端口和写端口。即该8T型存储单元为8T Dual Port(双端口)型存储单元。例如,第一字线AWL和第一位线ABL/ABLB用于读出操作,则第一位线ABL/ABLB连接驱动电路以实现利用这一对位线上的电位差进行数据读取操作,该驱动电路例如为灵敏放大器,且为一列存储单元分时共用。
图4为本公开一些实施例提供的一种存储器的结构框图。
如图4所示,该存储器包括存储器内运算装置和具有多行多列存储单元的阵列(存储阵列)200。存储器内运算装置包括与存储阵列耦接的控制模块110、运算模块120、读出电路130、地址译码模块(XDEC)140以及写入模块(未示出)。例如,控制模块110用于控制整个存储中电路的使能、逻辑管控,例如读、写、逻辑运算操作。
例如,在进行运算操作时,控制模块110获取用于运算的多个数值各自的存储地址,并将这些存储地址提供给地址译码模块140。地址译码模块140对获取的存储地址进行解码获取这些地址对应的存储阵列200中存储有这些数值的存储单元,并用于相应地选择存储阵列200中的字线和位线,从而驱动存储有这些数值的存储单元。运算模块120在控制模块110的控制下通过相应的位线获取存储单元输出的信号,并且进行相应的运算,例如,“与”、“异或”、“同或”等逻辑运算操作。读出电路130将运算结果输出存储器之外。
例如,在进行读操作时,控制模块110获取要读取的数据的存储地址,并将该存储地址提供给地址译码模块140。地址译码模块140对该存储地址进行解码,来选择存储有要读取的数据的存储单元的字线和位线,从而驱动存储有要读取数值的存储单元。读出电路130在控制模块110的控制下通过相应的位线获取存储单元输出的信号,将读出结果输出存储器之外。
例如,在进行写操作时,控制模块110获取待写入的数据的目标存储单元的存储地址,并将该存储地址提供给地址译码模块140。地址译码模块140对该存储地址进行解码,来选择将存储待写入的数据的目标存储单元的字线和位线,从而驱动要存储待写入数值的目标存储单元。写入模块(未示出)在控制模块110的控制下通过相应的位线写入数据到目标存储单元中。
例如,本公开的一些实施例的存储阵列的存储单元可以是基于如图1或图3所示的8T型存储单元改进得到的8T2P型存储单元,每个存储单元具有分别由不同字线控制且连接到不同位线的两个读出端口,这两个读出端口可以用于读出操作。
例如,每个存储单元可以是8T2P型存储单元。多个存储单元排成多行多列的阵列,该阵列还包括多条第一字线、多条第一位线、多条第二字线和多条第二位线。
图5A为本公开一实施例提供的一种8T2P型存储单元的电路示意图,其基于如图1所示的8T型存储单元。如图5A所示,该8T2P型存储单元包括由对应的第一字线控制的第一读出端口和由对应的第二字线控制的第二读出端口,第一读出端口连接对应的第一位线,且通过对应的第一位线输出第一信号,第二读出端口连接对应的第二位线,且通过对应的第二位线输出第二信号。例如,第一字线可以为字线RWL,第一位线可以为位线RBL,以提供第一读端口;第二字线可以为字线WWL,第二位线可以包括一对位线WBL和WBLB,以提供第二读端口。与图1所示的8T型存储单元相比,该实施例的8T2P型存储单元不但仍然可以利用字线RWL和位线RBL进行读操作,还可以利用字线WWL以及一对位线WBL和WBLB通过增加的驱动电路进行读操作。该驱动电路例如为灵敏放大器,该灵敏放大器可以是一列存储单元共用的,具体操作将在后面描述。读出的信号被输入到运算模块120,例如通过运算单元运算之后,再经读出电路130输出。
图5B为本公开一实施例提供的另一种8T2P型存储单元的电路示意图,其基于如图3所示的8T型存储单元。如图5B所示,该8T Dual Port(双端口)型存储单元包括由对应的第一字线控制的第一读出端口和由对应的第二字线控制的第二读出端口,第一读出端口连接对应的第一位线,且通过对应的第一位线输出第一信号,第二读出端口连接对应的第二位线,且通过对应的第二位线输出第二信号。例如,第一字线可以为字线AWL,第一位线可以为一对位线ABL和ABLB,以提供第一读端口;第二字线可以为字线BWL,第二位线可以包括一对位线BBL和BBLB,以提供第二读端口。与图3所示的8T型存储单元相比,该实施例的8T DualPort(双端口)型存储单元不但仍然可以利用字线AWL和一对位线ABL/ABLB通过第一驱动电路进行读操作,还可以利用字线BWL以及一对位线BBL和BBLB通过增加的第二驱动电路进行读操作。该第一驱动电路例如为第一灵敏放大器,该第二驱动电路例如为第二灵敏放大器,该第一和第二灵敏放大器可以是一列存储单元共用的,具体操作将在后面描述。读出的信号被输入到运算模块120,例如通过运算单元运算之后,再经读出电路130输出。
如上所述,本公开的实施例提供的存储器内运算装置100还包括至少一个驱动电路以读出存储单元中的数据,该驱动电路例如为灵敏放大器。
图6A示出了将存储阵列中的每个8T2P型存储单元的第二位线连接至驱动电路(例如灵敏放大器)的结构示意图(省略了第一字线和第一位线),这里以图5A所示的8T2P型存储单元为例,但也适用于图5B所示的8T Dual Port(双端口)型存储单元,二者区别仅在于标识的不同。如图所示,该8T2P型存储单元中包含用于存储数据的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输出端输出。
图6B示出了一种灵敏放大器的示例性结构示意图。当WL为高电平时,在节点Q和QB上存储的数据在位线BL和位线BLB上输出信号,且在控制线YMUX上施加开启信号之后,位线BL输出的信号通过晶体管PMX0输入至灵敏放大器的SAT线路,位线BLB输出的信号通过晶体管PMX1输入至灵敏放大器的SAC线路,当位线BL和位线BLB之间产生电压差时,SAT线路和SAC线路之间也产生相同的电压差,那么控制灵敏放大器的开关SAEN打开之后,灵敏放大器将位线BL和位线BLB输出的信号放大。例如,灵敏放大器的工作时状态波形如图6B右侧示意图所示。
如上所述,8T2P型存储单元还可以是如图3所示的8T型存储单元,此情形下在该8T2P型存储单元的位线ABL与ABLB输出的信号通过第一驱动电路(第一灵敏放大器)读出,在位线BBL与BBLB输出的信号第二驱动电路(第二灵敏放大器)读出。位线ABL与ABLB与第一驱动电路(第一灵敏放大器)的连接方式以及位线BBL与BBLB与第二驱动电路(第二灵敏放大器)的连接方式与图6A和图6B所示的相同,且第一灵敏放大器和第二灵敏放大器与图6B的示例性结构相同。
图7为本公开一些实施例提供的一种存储器内运算方法的流程图;图8为对应于图7所示的方法的第一存储单元和第二存储单元与运算模块连接的结构框图。
如图7所示,该存储器内运算方法包括以下步骤S100至步骤S200。
步骤S100:在多个存储单元中选择存储用于运算的第一数值的第一存储单元以获取第一数值的第一信号,和用于运算的第二数值的第二存储单元以获取第二数值的第二信号。
步骤S200:在存储器内使用第一数值的第一信号和第二数值的第二信号进行运算,得到运算结果。
如图8所示,将第一存储单元输出的第一数值的第一信号和第二存储单元输出的第二数值的第二信号通过运算模块120进行运算获得运算结果,该运算结果之后被输出。
下面将进一步结合图4以及图5A所示的实施例进行说明,但是本公开的实施例不限于此。
首先,控制模块110获取第一数值m的第一存储地址和第二数值n的第二存储地址,并由地址译码模块140根据第一存储地址在多个存储单元中选择存储第一数值m的第一存储单元,根据第二存储地址在多个存储单元中选择存储第二数值n的第二存储单元,以对第一数值和第二数值进行读操作。
具体而言,地址译码模块140对控制模块110发送的第一存储地址和第二存储地址进行解码,以选择第一存储单元对应的第一字线(RWL[m]/WWL[m])和第一位线(RBL[m]或BL[m]/BLB[m]),以及选择第二存储单元对应的第二字线(RWL[n]/WWL[n])和第二位线(RBL[n]或BL[n]/BLB[n])。
然后,在对第一数值和第二数值进行读操作时,第一存储单元对应的第一字线控制(例如施加开启信号)第一存储单元通过第一读出端口在对应的第一位线输出第一数值的第一信号,第二存储单元对应的第二字线控制(例如施加开启信号)第二存储单元通过多数第二读出端口在对应的第二位线输出第二数值的第二信号。
需要指出的是,这里,“第一存储单元”或“第二存储单元”用于指代多个存储单元中作为操作对象的任一存储单元,“第一字线”和“第一位线”作为描述对象的存储单元(例如第一存储单元或第二存储单元)所对应的字线和位线,同样的,“第二字线”和“第二位线”是作为描述对象的存储单元(例如第一存储单元或第二存储单元)所对应的另一字线和另一位线。
这里,所进行的运算包括逻辑运算,该逻辑运算可以为与、或、非、与非、异或、同或等。在本公开的至少一实施例中,为了能够实现多种存内运算,运算模块120可以包括多个运算单元,例如,参考图12或图13,该多个运算单元包括与门、或门、非门、与非门、异或门、同或门中一个或多个,分别用于执行与、或、非、与非、异或、同或中的一个或多个。
在运算模块120可以包括多个运算单元以能进行多种运算之一的情形,控制模块110还会根据需要进行的运算的类型而产生对应于运算类型的选择信号,然后将该选择信号提交给运算模块120以选择相应的运算单元以执行相应类型的运算。每个存储单元的读出端口通过相应的位线与运算模块120连接,如图12或图13所示,运算模块120包括选择电路,该选择电路根据选择信号选择多个运算单元以接收要运算的信号。
例如,运算类型可以是逻辑运算的运算类型,例如,“或(or)”“与(and)”、“异或(xor)”、“同或(xnor)”、“非(not)”、“与非(nand)”等信号,本公开的实施例对逻辑运算的类型不做具体限定。控制模块110根据运算类型生成用于确定运算类型的选择信号,将该选择信号发送至运算模块120,运算模块120接收用于确定运算类型的选择信号之后,根据该选择信号接收第一信号和第二信号,且将第一信号和第二信号输入到多个运算单元中与该选择信号对应的运算单元以进行运算。
例如,控制模块110可以同步选择第一存储单元和第二存储单元,可以使得在第一存储单元的第一位线输出第一信号,第二存储单元的第二位线输出第二信号时,第一信号和第二信号同步输出,将第一信号和第二信号输入至运算模块120内进行运算,能够有效加快整个过程的运算速度,缩短运算周期。
例如,在同一操作周期(时钟周期或机器周期)内,选择第一存储单元和第二存储单元、获取第一信号和第二信号以及得到运算结果。在存储器内对第一数值和第二数值的运算周期集中在同一操作周期内,有效缩短了运算周期。
例如,控制模块110可以根据不同的运算类型在选择的第一存储单元和第二存储单元时,选择该逻辑运算对应的字线和位线,不同的逻辑运算对于第一存储单元和第二存储单元所选择的字线和位线可能不同,从而控制第一存储单元和第二存储单元是在不同类型的读出端口输出第一数值的第一信号和第二数值的第二信号,还是在同一类型的读出端口读出第一数值的第一信号和第二数值的第二信号(如下不同示例所述)。
如下表1和图9所示,图9中的电路部分仅做示意说明,且以图5A所示的实施例为例,实际电路设计可以根据实际情况进行适应性调整,本公开的实施例对此不做限定。在图9中IO[0]表示输入/输出通道,例如可以对应于存储阵列中的一列。
在一些实施例中,以下举例说明对于第一存储单元和第二存储单元所选择的字线和位线控制第一存储单元和第二存储单元是在不同类型的读出端口分别输出第一数值的第一信号和第二数值的第二信号的情形,该情形不但适用于图5A的实施例,也适用于图5B所示的实施例。例如,在“或”(第一种“或”,表格中表述为“或1”)、“与(and)”、“异或(xor)”、“同或(xnor)”、“非(not)”、“与非(nand)”等逻辑运算过程中的读取存储数值(第一数值和第二数值)阶段,第一存储单元的第一字线RWL[m]控制第一存储单元通过第一读出端口在第一位线RBL[m]输出第一信号,第二存储单元的第二字线WL[n]控制第二存储单元通过多数第二读出端口在第二位线BL[n]和BLB[n]输出第二信号。下面以“或1”和“与”运算为例进行说明,但是本公开的实施例不限于此。
例如,在一个实施例中,要进行“地址1存储的第一数值or地址2存储的第二数值”这一运算,这一运算指令被输入到控制控制模块110,在选择进行“或(or)”(“或1”)运算的情形,控制模块110将第一存储地址和第二存储地址发送到地址译码模块140,经过地址译码模块140译码,选择第一存储单元的第一字线RWL[m]和第二存储单元的第一字线WL[n],由此选择在第一存储单元的第一读出端口输出信号,在第二存储单元的第二读出端口输出信号,相应地在第一存储单元的第一位线RBL上输出对应于第一数值的第一信号和在第二存储单元的第二位线BL/RBL上输出对应于第二数值的第二信号。这样,在第一存储单元的第一读出端口获取第一信号,在第二存储单元的第二读出端口获取第二信号,第二信号将通过驱动电路(例如灵敏放大器)处理,这两个信号彼此不干扰地被读出,并将被发送到运算模块中的或门进行运算。
在另一个实施例中,要进行“与(and)”运算(或“异或(xor)”)运算,对应运算指令被输入控制模块110,控制模块110将第一存储地址和第二存储地址发送到地址译码模块140,经过地址译码模块140译码,选择开启第一存储单元的第一字线RWL[m]和第二存储单元的第二字线WL[n],由此选择在第一存储单元的第一读出端口输出信号,在第二存储单元的第二读出端口输出信号,相应地在第一存储单元的第一位线RBL上输出对应于第一数值的第一信号和在第二存储单元的第二位线BL/RBL上输出对应于第二数值的第二信号。这样,在第一存储单元的第一读出端口获取第一信号,在第二存储单元的第二读出端口获取第二信号,第二信号将通过驱动电路(例如灵敏放大器)处理。这两个信号彼此不干扰地被读出,并将被发送到运算模块中的与门(或异或门)进行运算
表1
以下以逻辑运算为“与”运算详细说明本公开实施例的存储器内运算方法在存储单元中执行时的信号传输的具体过程,这具体过程也可以适用于其他类型的运算。
例如,图10示出第一存储单元和第二存储单元的字线和位线上“与”运算的信号流示意图。
当逻辑运算为“与”运算时,控制模块110获取第一数值m的第一存储地址和第二数值n的第二存储地址。地址译码模块140对第一存储地址和第二存储地址进行解码,在多个存储单元中选择存储第一数值m的第一存储单元和存储第二数值n的第二存储单元进行读操作。如前述表1所示,“与”运算对应开启第一存储单元的字线RWL和第二存储单元的字线WL,因此,地址译码模块140选择第一存储单元的第一字线RWL[m]和第一位线RBL[m],选择第二存储单元的第二字线WL[n]和第二位线BL[n]/BLB[n]。在对第一数值m和第二数值n进行读操作时,开启第一字线RWL[m]和第二字线WL[n],其中,第一字线RWL[m]控制第一存储单元的第一读出端口通过第一位线RBL[m]输出第一信号,第二字线WL[n]控制第二存储单元的第二读出端口通过第二位线BL[n]和BLB[n]输出第二信号,由于BL[n]和BLB[n]之间会产生电压差,因此第二信号通过灵敏放大器放输出放大后的第二信号,放大后的第二信号和未经过灵敏放大器的第一信号输入至运算模块120中。运算模块120接收控制模块110发送的“与”运算对应的选择信号,根据该选择信号选择与门接收第一信号和第二信号,使用第一信号和第二信号进行“与”逻辑运算,输出最终的“与”运算结果。例如,Q[m]=1,Q[n]=0,“与”运算结果=0。
另一实施例中,对于第一存储单元和第二存储单元所选择的字线和位线控制第一存储单元和第二存储单元是在同一类型的读出端口读出第一数值的第一信号和第二数值的第二信号的情形,并进行运算。
在该实施例中,“或(or)”(表1中表述为“或2”)这一运算指令被输入控制模块110时,控制模块110将第一存储地址和第二存储地址发送到地址译码模块140,经过地址译码模块140译码,选择开启第一存储单元的第一字线RWL[m]和第二存储单元的第一字线RWL[n],由此选择在第一存储单元的第一读出端口输出信号,在第二存储单元的第一读出端口输出信号,相应地在第一存储单元的第一位线RBL上输出对应于第一数值的第一信号和在第二存储单元的第一位线RBL上输出对应于第二数值的第二信号,并且第一存储单元的第一位线和第二存储单元的第一位线为同一条第一位线RBL,即在同一条第一位线RBL上输出第一数值和第二数值的叠加信号,并通过该叠加信号获得运算结果,并输出最终“或”运算结果。
以下以逻辑运算为“或”(“或2”)运算详细说明存储器内运算方法在存储单元中执行时的信号传输的具体过程。
图11示出第一存储单元和第二存储单元的字线和位线上“或”(“或2”)运算的信号流示意图。当逻辑运算为“或2”运算时,控制模块110获取第一数值m的第一存储地址和第二数值n的第二存储地址,。地址译码模块140对第一存储地址和第二存储地址进行解码,在多个存储单元中选择存储第一数值m的第一存储单元和存储第二数值n的第二存储单元进行读操作。如前述表1,“或2”运算将会打开两个存储单元的字线RWL,地址译码模块选择第一存储单元的第一字线RWL[m]和第一位线RBL[m],选择第二存储单元的第一字线RWL[n]和第一位线RBL[n],第一存储单元的第一位线RBL[m]和第二存储单元的第一位线RBL[n]为同一条第一位线。在对第一数值m和第二数值n进行读操作时,同时开启第一存储单元的第一字线RWL[m]和第二存储单元的第一字线RWL[n],其中,第一存储单元的第一字线RWL[m]控制第一读出端口通过第一位线RBL输出第一信号,第二存储单元的第二字线WL[n]控制第二读出端口通过同一位线RBL输出第二信号,且组合第一信号和第二信号得到叠加信号,该叠加信号输入至运算模块120中。运算模块120接收了控制模块110发送的“或”运算的选择信号,根据该选择信号,使用叠加信号进行逻辑运算,通过输出电路输出最终的“或”运算结果。例如,Q[m]=0,Q[n]=1,“或”运算结果=1,参考图2所述,由于Q[m]=0,因此第一存储单元将维持该同一位线RBL的电平,而且由于Q[n]=1,因此第二存储单元将下拉该同一位线RBL的电平到“0”对应的低电平,二者叠加的作用效果则使得位线RBL的电平处在“0”对应的低电平。例如,Q[m]=1,Q[n]=1,“或”运算结果=1,参考图2所述,由于Q[m]=1,因此第一存储单元将下拉该同一位线RBL的电平到“0”对应的低电平,而且由于Q[n]=1,因此第二存储单元将下拉该同一位线RBL的电平到“0”对应的低电平,二者叠加的作用效果则使得位线RBL的电平在对应于“0”的低电平。例如,Q[m]=0,Q[n]=0,“或”运算结果=0,参考图2所述,由于Q[m]=0,因此第一存储单元将维持该同一位线RBL的电平,而且由于Q[n]=0,因此第二存储单元将维持该同一位线RBL的电平,二者叠加的作用效果则使得位线RBL的电平在对应于“1”的高电平。因此,只要运算的过程中位线RBL的电平被下拉到对应于“0”的低电平,则参与运算的第一数值和第二数值之一为“1”。
例如,图12示出了一种运算模块的结构示意图。该运算模块可以耦接图5A所示类型的8T2P型存储单元。该运算模块120包括选择电路和多个运算单元,在该示例中,该多个运算单元包括与门和异或门,另外,还提供一个反相器用于将位线RBL上对应于“0”的低电平改变为对应于“1”的高电平,由此可以参与后续的逻辑运算,或者作为“或2”运算的结果直接输出。运算模块120的选择单路包括与多个运算单元分别连接的多个选择开关PG1~PG4,该多个选择开关接收选择信号,并根据选择信号开启与选择信号对应的一个选择开关,将运算单元的运算结果输出到输出电路。例如,如图12所示,PG1开关是当逻辑运算为“与非”时打开,PG2开关是当逻辑运算为“异或”时打开,PG3开关是当逻辑运算为“或”(“或2”)时打开,PG4开关是当逻辑运算为直接读取数据时打开(即SRAM正常读)。例如,在另一个示例中各个开关可以设置在运算单元在灵敏放大器(驱动电路)之间。需要注意的是PG3开关和PG4开关可以合并为一个开关,因为都是直接将反相器的结果输出至输出电路。当然,开关的数量和设置方式本实施例不做具体限定。在另一个示例中,可以图12中与PG3开关对应的分支上设置“或”门以用于执行“或1”运算。
例如,对于图12所示的示例,当运算类型信号为“与”运算信号时,将灵敏放大器输出的第二存储单元的第二位线BL和BLB输出的第二信号、第一存储单元的第一位线RBL输出的第一信号通过反相器反相之后输入至运算模块中的“与门”,输出“与”运算结果。同样的,当运算类型信号为“异或”运算信号时,将灵敏放大器输出的第二存储单元的第二位线BL和BLB输出的第二信号和第一存储单元的第一位线RBL输出的第一信号通过反相器反相之后输入至运算模块中的“异或门”,输出“异或”运算结果,其它与前述相似不再赘述。根据需要做的逻辑运算可以设置更多复杂的逻辑运算,运算单元的类型不做具体限定。特别的,当运算类型信号为“或”运算信号或者仅仅是读取数据的信号时,则无需使用灵敏放大器,例如可以直接将第一存储单元的第一位线RBL输出的第一数值的第一信号,或者直接将第二存储单元的第一位线RBL输出的第二数值的第二信号,输出运算结果或输出读取的存储数据。
例如,图13示出了另一种运算模块的结构示意图。该运算模块可以耦接图5B所示类型的8T Dual Port(双端口)型存储单元,此时仅能进行“或1”运算,而不能执行“或2”运算。该运算模块120包括选择电路和多个运算单元,该多个运算单元包括与门、或门、异或门。分别通过第一灵敏放大器和第二灵敏放大器读出第一位线ABL/ABLB输出的第一信号和第二位线BBL/BBLB输出的第二信号,与上述实施例类似,同样能够实现将第一信号和第二信号经过各自对应的第一灵敏放大器和第二灵敏放大器放大之后,输入选择的运算单元中,输出对应的运算结果。
图14为本公开一些实施例提供的一种存储器10,存储器10内包括存储器内运算装置100和多个存储单元组成的多行多列的存储阵列200。存储器内运算装置100包括控制模块110和运算模块120,控制模块110和运算模块120分别与阵列200耦接。
控制模块110被配置为控制模块被配置为在存储阵列200的多个存储单元中选择存储用于运算的第一数值的第一存储单元;在多个存储单元中选择存储用于运算的第二数值的第二存储单元。第一存储单元被配置为输出第一数值的第一信号,第二存储单元被配置为输出第二数值的第二信号。运算模块120被配置为通过第一数值的第一信号和第二数值的第二信号进行运算,得到运算结果。
例如,在本公开一些实施例提供的存储器中,存储阵列200还包括多条第一字线、多条第一位线、多条第二字线和多条第二位线,每个存储单元包括由对应的第一字线控制的第一读出端口和由对应的第二字线控制的第二读出端口,第一读出端口连接对应的第一位线,第二读出端口连接对应的第二位线。
第一存储单元被配置为由对应的第一字线控制第一存储单元通过第一读出端口在对应的第一位线输出第一信号,第二存储单元被配置为由对应的第二字线控制第二存储单元通过第二读出端口在对应的第二位线输出第二信号。
例如,在本公开一些实施例提供的存储器内运算装置中,控制模块110还被配置为同步选择第一存储单元和第二存储单元,运算模块120被配置为同步获取第一信号和第二信号。
例如,在本公开一些实施例提供的存储器内运算装置中,控制模块110还被配置为,在同一操作周期(时钟周期或机器周期)内,选择第一存储单元和第二存储单元、获取第一信号和第二信号,以及运算模块120还被配置为,在同一操作周期内,得到运算结果。
例如,在本公开一些实施例提供的存储器内运算装置中,还包括至少一个灵敏放大器,其中,至少一个灵敏放大器被配置为分别读出每个存储单元通过第一位线和/或第二位线输出的信号。
例如,在本公开一些实施例提供的存储器内运算装置中,运算模块120包括多个运算单元,第一位线和第二位线与多个运算单元连接,运算模块120还被配置为,接收用于确定运算类型的选择信号,根据选择信号将第一信号和第二信号发送至多个运算单元中选择信号确定的运算类型对应的运算单元以进行运算。
例如,在本公开一些实施例提供的存储器内运算装置中,多个运算单元包括与门、或门、非门、与非门、异或门、同或门中的一个或多个。
例如,在本公开一些实施例提供的存储器内运算装置中,运算模块120还包括多个与运算单元连接的开关,控制模块110还被配置为根据选择信号打开选择信号对应的运算单元的开关,将对应的运算结果输出到存储器外。
例如,在本公开一些实施例提供的存储器内运算装置中,还包括地址译码模块140,其中,控制模块110还被配置为获取第一存储单元的第一存储地址和第二存储单元的第二存储地址,地址译码模块140被配置为对第一存储地址和第二存储地址进行解码,用于选择第一存储单元对应的第一字线和对应的第一位线,选择第二存储单元对应的第二字线和对应的第二位线。
例如,在本公开一些实施例提供的存储器内运算装置中,存储阵列200包括多条第一字线和多条第一位线,每个存储单元包括由对应的第一字线控制的第一读出端口,第一读出端口连接对应的第一位线,且通过第一读出端口在对应的第一位线上输出第一信号,第一存储单元对应的第一位线和第二存储单元对应的第一位线为同一条第一位线,控制模读出每个所述存储单元通过第一位线和/或第二位线输出的信号多个存储单元中同步选择第一存储单元和第二存储单元,由此在同一条第一位线上输出第一数值和第二数值的叠加信号,运算模块120还被配置为在存储器内使用叠加信号以获取运算结果。
图15为本公开一些实施例提供的另一种存储单元内运算装置的示意性框图。
例如,如图15所示,该存储器内运算装置500包括存储单元510和处理单元520。例如,存储单元510用于非暂时性存储计算机可执行指令,处理单元520用于运行该计算机可执行指令,该计算机可执行指令被处理单元520运行时执行本公开任一实施例提供的存储器内运算方法。
例如,存储单元510和处理单元520之间可以直接或间接地互相通信。例如,在一些示例中,如图15所示,该存储器内运算装置500还可以包括系统总线530,存储单元510和处理单元520之间可以通过系统总线530互相通信,例如,处理单元520可以通过系统总线1006访问存储单元510。例如,在另一些示例中,存储单元510和处理单元520等组件之间可以通过片上网络(NOC)连接进行通信。
例如,处理单元520可以控制存储器内运算装置中的其它组件以执行期望的功能。处理单元520可以是中央处理单元(CPU)、张量处理单元(TPU)、网络处理单元(NP)或者图形处理单元(GPU)等具有数据处理能力和/或程序执行能力的器件,还可以是数字信号处理单元(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
例如,存储单元510可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储单元和/或非易失性存储单元。易失性存储单元例如可以包括随机存取存储单元(RAM)和/或高速缓冲存储单元(cache)等。非易失性存储单元例如可以包括只读存储单元(ROM)、硬盘、可擦除可编程只读存储单元(EPROM)、便携式紧致盘只读存储单元(CD-ROM)、USB存储单元、闪存等。
例如,在存储单元510上可以存储一个或多个计算机指令,处理单元520可以运行计算机指令,以实现各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据,例如指令处理代码以及应用程序使用和/或产生的各种数据等。
例如,存储单元510存储的一些计算机指令被处理单元520执行时可以执行根据上文的存储器内运算方法中的一个或多个步骤。
例如,如图15所示,存储器内运算装置500还可以包括允许外部设备与存储器内运算装置500进行通信的输入接口540。例如,输入接口540可被用于从外部计算机设备、从用户等处接收指令。存储器内运算装置500还可以包括使存储器内运算装置500和一个或多个外部设备相互连接的输出接口550。例如,存储器内运算装置500可以通过输出接口550等。
例如,关于存储器内运算方法的处理过程的详细说明可以参考上述存储器内运算方法的实施例中的相关描述,重复之处不再赘述。
需要说明的是,本公开的实施例提供的存储器内运算装置是示例性的,而非限制性的,根据实际应用需要,该存储器内运算装置还可以包括其他常规部件或结构,例如,为实现存储器内运算装置的必要功能,本领域技术人员可以根据具体应用场景设置其他的常规部件或结构,本公开的实施例对此不作限制。
本公开至少一些实施例还提供一种存储器,包括多个存储单元的存储阵列以及如前述任一项实施例的存储器内运算装置,该存储阵列包括多行多列。例如,该存储器可以为SRAM(静态随机存取存储器)等。
本公开至少一些实施例还提供一种非暂时性存储介质。图14为本公开一些实施例提供的一种非暂时性存储介质的示意图。
例如,如图16所示,该存储介质600非暂时性地存储计算机可执行指令610,当非暂时性计算机可执行指令610由计算机(包括处理器)执行时可以执行本公开任一实施例提供的存储器内运算方法。
例如,在存储介质600上可以存储一个或多个计算机指令。存储介质600上存储的一些计算机指令可以是例如用于实现上述存储器内运算方法中的一个或多个步骤的指令。
例如,存储介质可以包括平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、光盘只读存储器(CD-ROM)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。例如,存储介质600可以包括前述存储器内运算装置500中的存储单元510。
本公开的实施例提供的存储介质的技术效果可以参考上述实施例中关于存储器内运算方法的相应描述,在此不再赘述。
对于本公开,有以下几点需要说明:
(1)本公开实施例附图中,只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开同一实施例及不同实施例中的特征可以相互组合。
以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
Claims (25)
1.一种存储器内运算方法,所述存储器包括具有多个存储单元的阵列,所述阵列包括多行多列,所述方法包括:
在所述多个存储单元中选择存储用于所述运算的第一数值的第一存储单元以获取所述第一数值的第一信号;
在所述多个存储单元中选择存储用于所述运算的第二数值的第二存储单元以获取所述第二数值的第二信号;
在所述存储器内使用所述第一数值的第一信号和所述第二数值的第二信号进行所述运算,得到运算结果。
2.根据权利要求1所述的运算方法,其中,所述阵列还包括多条第一字线、多条第一位线、多条第二字线和多条第二位线,
每个所述存储单元包括由对应的第一字线控制的第一读出端口和由对应的第二字线控制的第二读出端口,所述第一读出端口连接对应的第一位线,且通过所述对应的第一位线输出所述第一信号,所述第二读出端口连接对应的第二位线,且通过所述对应的第二位线输出所述第二信号,
所述方法还包括:
所述第一存储单元对应的第一字线控制所述第一存储单元通过所述第一读出端口在所述对应的第一位线输出所述第一信号,
所述第二存储单元对应的第二字线控制所述第二存储单元通过多数第二读出端口在所述对应的第二位线输出所述第二信号。
3.根据权利要求2所述的运算方法,其中,所述第一存储单元和所述第二存储单元被同步选中,同步获取所述第一信号和所述第二信号。
4.根据权利要求2所述的运算方法,其中,在同一操作周期内,选择所述第一存储单元和所述第二存储单元、获取所述第一信号和所述第二信号以及得到所述运算结果。
5.根据权利要求2所述的运算方法,其中,通过灵敏放大器读出所述第一存储单元对应的第一位线输出的所述第一信号和/或所述第二存储单元对应的第二位线输出的所述第二信号。
6.根据权利要求2所述的运算方法,其中,将所述第一信号和所述第二信号通过运算模块进行运算获得所述运算结果。
7.根据权利要求6所述的运算方法,其中,所述运算包括逻辑运算。
8.根据权利要求6或7所述的运算方法,其中,所述运算模块包括多个运算单元,所述第一信号和所述第二信号被输入到所述多个运算单元,所述方法还包括:
接收用于确定运算类型的选择信号,
根据所述选择信号将所述第一信号和所述第二信号发送至所述多个运算单元中所述选择信号确定的运算类型对应的运算单元以进行运算。
9.根据权利要求8所述的方法,其中,所述多个运算单元包括与门、或门、非门、与非门、异或门、同或门中一个或多个。
10.根据权利要求8所述的运算方法,其中,所述运算模块还包括多个与所述运算单元连接的多个选择开关,
所述多个选择开关接收所述选择信号,并根据所述选择信号开启与所述选择信号对应的一个选择开关。
11.根据权利要求2所述的运算方法,还包括:
获取所述第一存储单元的第一存储地址和所述第二存储单元的第二存储地址,
对所述第一存储地址和所述第二存储地址进行解码,以选择所述第一存储单元对应的第一字线和对应的第一位线,以及选择所述第二存储单元对应的第二字线和对应的第二位线。
12.根据权利要求1所述的运算方法,其中,所述阵列包括多条第一字线和多条第一位线,
每个所述存储单元包括由对应的第一字线控制的第一读出端口,所述第一读出端口连接对应的第一位线,且通过所述第一读出端口在所述对应的第一位线上输出所述第一信号,
所述第一存储单元对应的第一位线和所述第二存储单元对应的第一位线为同一条第一位线,
所述方法包括:
在所述多个存储单元中同步选择所述第一存储单元和所述第二存储单元,且在所述同一条第一位线上输出所述第一数值和所述第二数值的叠加信号,以获取所述运算结果。
13.一种存储器内运算装置,所述存储器包括具有多个存储单元的阵列,所述阵列包括多行多列,所述运算装置包括控制模块和运算模块,所述控制模块和所述运算模块分别与所述阵列耦接,
所述控制模块被配置为在所述多个存储单元中选择存储用于所述运算的第一数值的第一存储单元,在所述多个存储单元中选择存储用于所述运算的第二数值的第二存储单元,
所述第一存储单元被配置为输出所述第一数值的第一信号,
所述第二存储单元被配置为输出所述第二数值的第二信号,
所述运算模块被配置为通过所述第一数值的第一信号和所述第二数值的第二信号进行所述运算,得到运算结果。
14.根据权利要求13所述的运算装置,其中,所述阵列还包括多条第一字线、多条第一位线、多条第二字线和多条第二位线,
每个所述存储单元包括由对应的第一字线控制的第一读出端口和由对应的第二字线控制的第二读出端口,所述第一读出端口连接对应的第一位线,所述第二读出端口连接对应的第二位线,
所述第一存储单元被配置为由所述对应的第一字线控制所述第一存储单元通过所述第一读出端口在所述对应的第一位线输出所述第一信号,
所述第二存储单元被配置为由所述对应的第二字线控制所述第二存储单元通过所述第二读出端口在所述对应的第二位线输出所述第二信号。
15.根据权利要求14所述的运算装置,其中,所述控制模块还被配置为同步选择所述第一存储单元和所述第二存储单元,
所述运算模块被配置为同步获取所述第一信号和所述第二信号。
16.根据权利要求14所述的运算装置,其中,所述控制模块还被配置为,在同一操作周期内,选择所述第一存储单元和所述第二存储单元、获取所述第一信号和所述第二信号,以及
所述运算模块还被配置为,在所述同一操作周期内,得到所述运算结果。
17.根据权利要求14所述的运算装置,还包括至少一个灵敏放大器,
其中,所述至少一个灵敏放大器被配置为分别读出每个所述存储单元通过第一位线和/或第二位线输出的信号。
18.根据权利要求14所述的运算装置,其中,所述运算模块包括多个运算单元,所述第一位线和所述第二位线与所述多个运算单元连接,
所述运算模块还被配置为,接收用于确定运算类型的选择信号,根据所述选择信号将所述第一信号和所述第二信号发送至所述多个运算单元中所述选择信号确定的运算类型对应的运算单元以进行运算。
19.根据权利要求18所述的运算装置,其中,所述多个运算单元包括与门、或门、非门、与非门、异或门、同或门中的一个或多个。
20.根据权利要求18所述的运算装置,其中,所述运算模块还包括多个与所述运算单元连接的开关,
所述控制模块还被配置为根据所述选择信号打开所述选择信号对应的运算单元的开关,将对应的运算结果输出到所述存储器外。
21.根据权利要求14所述的运算装置,还包括地址译码模块,其中,所述控制模块还被配置为获取所述第一存储单元的第一存储地址和所述第二存储单元的第二存储地址,
所述地址译码模块被配置为对所述第一存储地址和所述第二存储地址进行解码,用于选择所述第一存储单元对应的第一字线和对应的第一位线,选择所述第二存储单元对应的第二字线和对应的第二位线。
22.根据权利要求13所述的运算装置,其中,所述阵列包括多条第一字线和多条第一位线,
每个所述存储单元包括由对应的第一字线控制的第一读出端口,所述第一读出端口连接对应的第一位线,且通过所述第一读出端口在所述对应的第一位线上输出所述第一信号,
所述第一存储单元对应的第一位线和所述第二存储单元对应的第一位线为同一条第一位线,
所述控制模块还被配置为在所述多个存储单元中同步选择所述第一存储单元和所述第二存储单元,由此在所述同一条第一位线上输出所述第一数值和所述第二数值的叠加信号,
所述运算模块还被配置为在所述存储器内使用所述叠加信号以获取所述运算结果。
23.一种存储器,包括:
如权利要求16-22任一项所述的存储器内运算装置;以及
所述相应的具有多个存储单元的阵列。
24.一种存储器内运算装置,包括:
存储单元,用于非暂时性存储计算机可执行指令;以及
处理单元,用于运行所述计算机可执行指令,
其中,所述计算机可执行指令被所述处理单元运行时执行根据权利要求1-12任一项所述的存储器内运算方法。
25.一种非暂时性存储介质,非暂时性地存储计算机可执行指令,其中,当所述计算机可执行指令由计算机执行时,执行根据权利要求1-12任一项所述的存储器内运算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111371117.7A CN114077418A (zh) | 2021-11-18 | 2021-11-18 | 存储器内运算方法及装置、存储器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111371117.7A CN114077418A (zh) | 2021-11-18 | 2021-11-18 | 存储器内运算方法及装置、存储器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114077418A true CN114077418A (zh) | 2022-02-22 |
Family
ID=80283944
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111371117.7A Pending CN114077418A (zh) | 2021-11-18 | 2021-11-18 | 存储器内运算方法及装置、存储器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114077418A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023077798A1 (zh) * | 2021-11-02 | 2023-05-11 | 华为技术有限公司 | 一种相似度计算装置、方法和存储器件 |
CN116136835A (zh) * | 2023-04-19 | 2023-05-19 | 中国人民解放军国防科技大学 | 一种三进二出数值获取方法、装置及介质 |
CN117437944A (zh) * | 2023-12-20 | 2024-01-23 | 长鑫存储技术有限公司 | 存储器 |
-
2021
- 2021-11-18 CN CN202111371117.7A patent/CN114077418A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023077798A1 (zh) * | 2021-11-02 | 2023-05-11 | 华为技术有限公司 | 一种相似度计算装置、方法和存储器件 |
CN116136835A (zh) * | 2023-04-19 | 2023-05-19 | 中国人民解放军国防科技大学 | 一种三进二出数值获取方法、装置及介质 |
CN117437944A (zh) * | 2023-12-20 | 2024-01-23 | 长鑫存储技术有限公司 | 存储器 |
CN117437944B (zh) * | 2023-12-20 | 2024-03-08 | 长鑫存储技术有限公司 | 存储器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107025924B (zh) | 存储器设备及其使用方法 | |
CN114077418A (zh) | 存储器内运算方法及装置、存储器及存储介质 | |
TWI622993B (zh) | 記憶體裝置與操作該記憶體裝置之方法 | |
TW451221B (en) | Semiconductor memory device and driving signal generator therefor | |
JP4504364B2 (ja) | センス・アンプおよびセルフタイム式ラッチを備えるメモリ装置 | |
US20090285010A1 (en) | Write Assist Circuit for Improving Write Margins of SRAM Cells | |
JPH02177196A (ja) | スタティック型半導体メモリ | |
JPH01178193A (ja) | 半導体記憶装置 | |
US9275710B2 (en) | Three dimensional cross-access dual-port bit cell design | |
US9305635B2 (en) | High density memory structure | |
CN114077417A (zh) | 存储器内运算方法及装置、存储器及存储介质 | |
USRE46474E1 (en) | Multiple write during simultaneous memory access of a multi-port memory device | |
US20150043297A1 (en) | Active control device and semiconductor device including the same | |
JP2005293814A (ja) | 6トランジスタデュアルポートsramセル | |
US9823874B2 (en) | Memory device with combined non-volatile memory (NVM) and volatile memory | |
US9275724B2 (en) | Method of writing to and reading data from a three-dimensional two port register file | |
US7233542B2 (en) | Method and apparatus for address generation | |
JPH07211077A (ja) | 半導体記憶装置 | |
JP2588936B2 (ja) | 半導体記憶装置 | |
JP3872922B2 (ja) | 半導体記憶装置及びメモリ混載ロジックlsi | |
US9030887B2 (en) | Semiconductor memory device and information processing apparatus | |
JPH1021687A (ja) | 半導体記憶装置 | |
JP3793580B2 (ja) | 半導体記憶装置及びラインメモリの制御方法 | |
JP2000173270A (ja) | 半導体メモリ | |
JP2003091992A (ja) | マルチポートメモリ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |