SRAM多单元操作的制作方法

文档序号:12513601阅读:219来源:国知局
SRAM多单元操作的制作方法与工艺

本申请要求享有于2015年3月5日递交的、美国临时专利申请62/157162的优先权,通过引用将其并入本文。

技术领域

本发明总体上涉及存储器单元,并且具体涉及在6T SRAM存储器阵列中的多单元操作。



背景技术:

在本领域中已知存储大量数据的存储器阵列。多年以来,制造者和设计者致力于使阵列物理上更小但在其中存储的数据量更大。

计算设备通常具有:一个或多个存储器阵列以存储数据,以及中央处理单元(CPU)和其它硬件以处理数据。CPU通常经由总线连接到存储器阵列。不幸的是,尽管CPU速度在近些年来极大地增加了,但是总线速度并没有以相同速度增加。因此,总线连接成为操作速度增加的瓶颈。

大数据的发展领域和机器学习算法涉及计算大量数据。在计算期间从存储器读取数据和向存储器写入数据是CPU敏感的,并且当IO是整个计算的重要部分时可能花费较长时间来完成。



技术实现要素:

根据本发明的优选实施例,提供了一种多存储器单元操作器,包括:非破坏性存储器阵列、激活单元,以及多列解码器。所述非破坏性存储器阵列每列具有第一位线和第二位线。所述激活单元同时激活所述存储器阵列的列中的至少两个单元,从而在所述第一位线上生成所述至少两个单元的数据和互补数据的多个布尔函数输出,并在所述第二位线上生成所述数据和所述互补数据的不同的多个布尔函数输出。所述多列解码器至少激活多个选定列的所述第一位线和所述第二位线以用于读取或写入。

此外,根据本发明的优选实施例,所述多列解码器还包括写入单元,所述写入单元用于将所述选定列的所述第一位线、所述第二位线或所述第一位线与所述第二位线两者的输出写入到所述存储器阵列中。

此外,根据本发明的优选实施例,所述多列解码器包括预充电器,所述预充电器用于在读取之前将所述第一位线和所述第二位线预充电到预定义的预充电电压。

此外,根据本发明的优选实施例,所述多列解码器包括:充电器,其用于利用状态值对选定列的所述第一位线充电,并利用选定列的所述状态值的互补值对所述第二位线充电,以用于将所述状态值写入到所述选定列中被激活的单元;以及预充电器,其用于在写入期间将非选定列的所述第一位线和所述第二位线预充电到预定义的预充电电压。

另外,根据本发明的优选实施例,所述多列解码器包括输出单元,所述输出单元用于在选定的所述非选定列的所述第一位线和所述第二位线中的一个或两者上输出值,以用于在所述写入期间进行读取。

此外,根据本发明的优选实施例,所述操作器还包括搜索单元,所述搜索单元用于针对具有与输入值匹配的值的单元搜遍所述数据,在所匹配的值上执行操作以生成经处理的值,并将所述经处理的值写回到其相关联的所述单元。

此外,根据本发明的优选实施例,所述单元是SRAM(静态随机访问存储器)单元,例如,6晶体管SRAM单元。

此外,根据本发明的优选实施例,所述多列解码器还包括计算器,所述计算器用于通过多次读取操作并通过将读取结果写入到所述存储器阵列中的其它位置来执行存储器内计算,所述结果被用于后续计算。

此外,根据本发明的优选实施例,所述布尔运算是NOR、NAND、AND和OR。

根据本发明的优选实施例,还提供了一种用于操作用于计算的存储器阵列的方法。所述方法包括:同时激活在每列具有第一位线和第二位线的非破坏性存储器阵列的列中的至少两个单元,从而在所述第一位线上生成被存储在所述至少两个单元中的数据和所述至少两个单元的互补数据的多个布尔函数输出,并在所述第二位线上生成所述数据和所述互补数据的不同的多个布尔函数输出。所述方法还包括:激活多个选定列的所述第一位线和所述第二位线以用于读取或写入。

此外,根据本发明的优选实施例,第二激活还包括:将所述选定列的所述第一位线、所述第二位线或所述第一位线与所述第二位线两者的输出写入到所述存储器阵列中。

此外,根据本发明的优选实施例,所述第二激活包括:在读取之前将所述第一位线和所述第二位线预充电到预定义的预充电电压。

此外,根据本发明的优选实施例,所述第二激活包括:利用状态值对选定列的所述第一位线充电,并利用选定列的所述状态值的互补值对所述第二位线充电,以用于将所述状态值写入到所述选定列中被激活的单元;并且在写入期间将非选定列的所述第一位线和所述第二位线预充电到预定义的预充电电压。

另外,根据本发明的优选实施例,所述第二激活包括:在选定的所述非选定列的所述第一位线和所述第二位线中的一个或两者上输出值,以用于在所述写入期间进行读取。

此外,根据本发明的优选实施例,所述方法还包括:针对具有与输入值匹配的值的单元搜遍所述数据,在所匹配的值上执行操作以生成经处理的值,并将所述经处理的值写回到其相关联的所述单元。

最后,根据本发明的优选实施例,所述第二激活还包括:通过多次读取操作并通过将读取结果写入到所述存储器阵列中的其它位置来执行存储器内计算,所述结果被用于后续计算。

附图说明

在说明书的结论部分特地指出并明显要求保护关于本发明的主题。然而,通过在结合附图进行阅读时参考后续详细描述,可以在组织和操作方法两者及其目标、特征和优点的方面最佳地理解本发明,在附图中:

图1是6T SRAM存储器单元的图;

图2是SRAM存储器阵列的示意性图示;

图3是根据本发明的优选实施例构造和操作的在SRAM存储器阵列中的存储器计算操作的示意性图示;

图4一起是在图3的SRAM存储器阵列中的操作的示范性集合的真值表图示;

图5是在SRAM存储器阵列中的多单元写入操作的示意性图示;

图6是现有技术的全加法器电路的电路图图示;并且

图7是使用本发明的全加法器运算的示意性图示。

可以理解的是,为了简明且图示清晰,在图中示出的元件不必按比例绘制。例如,为了清晰起见,一些元件的维度可以相对于另一些元件被夸大。此外,在认为适当时,可以在图中重复附图标记以指示对应的元件或模拟元件。

具体实施方式

在以下的详细描述中,阐述了众多具体细节以便提供对本文发明的透彻理解。然而,本领域技术人员可以理解的是,可以在没有这些具体细节的情况下实践本发明。在其它实例中,没有详细描述已知的方法、流程和部件,以免使本发明难以理解。

申请人已经认识到,通过启用并发的多单元操作而不是在标准6T SRAM存储器阵列的每个计算周期进行单次行访问,可以更有效地使用标准的6T SRAM(静态随机存取存储器)存储器阵列。

根据本发明的实施例,在每个计算周期进行多行访问,引起能够执行多单元操作,例如,多单元写入操作和多单元计算。

现在参考图1,其图示了包括六个晶体管的6T SRAM存储器单元100;参考图2,其图示了多个6T SRAM 100的存储器阵列200。

6T SRAM单元100的四个晶体管(为了简明起见,未在图中示出)形成简单的标准触发器元件102,所述标准触发器元件102具有被定义为逻辑“0”状态和“1”状态的两个稳定电压状态。通常,高电压值定义逻辑“1”,而低电压值定义逻辑“0”。该单元经由数据信号Q具体化其存储的值并经由数据信号Q’具体化其互补值。因此,如果单元100存储值“1”,则数字信号Q中的电压值反映值“1”,并且在互补数据信号Q’中的电压值反映值“0”。

使用两条位线BL和BL’来将数据转移到单元中和从单元中转移数据以用于读取操作和写入操作。位线BL和BL’经由控制对单元访问的两个晶体管N1和N2分别被连接到触发器102。

如图2所示,存储器阵列200中的单元被布置在矩阵中。在同一列中的所有单元连接到同一位线对BL和BL’。在同一行的所有单元连接到同一字线WL,所述字线WL连接到每个单元的访问晶体管N1和N2。列解码器210通过利用适当的电压对选定列的位线对BL和BL’充电来控制列选择。行解码器220通过将字线WL充电到高来控制行选择。针对操作的选定单元是驻留在字线WL与位线对BL和BL’的交叉处的单元。

当行解码器220选择字线WL时,单元100连接到其位线BL和BL’,并且可以针对读取操作或写入操作进行访问。当字线WL未被选择时,位线BL和BL’可能未连接到单元100,并因此未传达单元内容或未将数据写入到单元中。

为了读取6T SRAM单元100的状态,列解码器210将位线BL和BL’两者预充电到高电压水平,之后,行解码器220激活其字线WL。一旦字线WL被激活,数据信号Q和Q’的电压水平将分别影响位线BL和BL’。根据位线BL和BL’的电压值确定单元的内容。如果数据信号Q的值为低,则被预充电到高值的BL的电压值将由于连接到数据信号Q而降低,这是因为Q为低。如果数据信号Q的值为高,则位线BL的电压值将保持为高。相同的逻辑也应用于互补数据信号Q’和位线BL’。如果数据信号Q’的值为低,则位线BL’的电压值将由于连接到数据信号Q’而降低。如果数据信号Q’的值为高,则位线BL’的电压值将保持为高。在就绪状态,位线对BL和BL’中的一个将降低,同时另一个将保持为高,这是因为数据信号Q和Q’是互补的。

在读取操作期间,比较位线BL和BL’的值,并且如果位线BL的水平高于位线BL’的水平,则单元100据说存储值“1”;如果位线BL的水平低于位线BL’的水平,则单元100据说存储值“0”。

为了将值写入到6T SRAM单元100,列解码器210将位线BL充电到与要被写入的值相关联的电压水平,并且将位线BL’充电到互补电压水平。具体地,为了在单元100中存储值“1”,将位线BL充电到高电压水平且将位线BL’充电到低电压水平;并且为了在单元100中存储值“0”,将位线BL充电到低电压水平且将位线BL’充电到低电压水平。为了执行写入操作,激活字线WL,并将位线BL上的电压水平转移到数据信号Q,且将位线BL’上的电压水平转移到数据信号Q’。因此,在该状态下触发器102是稳定的。

申请人已经认识到,当同时激活多条字线时,连接多行中的单元的位线对的电压水平受连接到位线的所有选定单元的数据信号影响。具体地,申请人已经认识到,当位线BL和BL’在读取之前被预充电时,如果连接到位线的激活单元的数据信号为低,则将连接所有激活单元的整个位线的电压水平拉低。只有当连接到位线的所有选定单元的数据信号为高时,位线的电压水平将维持为高。事实上,申请人已经认识到,连接若干选定单元的位线的电压水平反映在所有选定单元中存储的值上执行的布尔运算“AND”和“NOR”的结果。

另外,在两个位线上的合成电压水平不再是如在标准6T SRAM存储器阵列中一样的互补。它们可能具有相同的电压水平。这如图3所示,现在将参考图3。

图3示出了包括多个单元(示出了三个单元301、302和303)、列解码器310和行解码器320的存储器阵列300。列解码器310可以包括预充电器312、充电器314和写入单元316。

在图3中,通过行解码器320和位线(这里标记为BLQ和BLQ’)同时激活两个字线WLa和WLb,其被预充电器312预充电到固定电压水平。如上所述,位线BLQ和BLQ’上的电压水平受列中的每个选定单元的数据信号的电压水平影响。在图3中,单元301的数据信号Q的电压水平表示逻辑值“1”,而单元302的数据信号Q的电压水平表示逻辑值“0”。因此,单元301的互补数据信号Q’的电压水平表示逻辑值“0”,而单元302的互补数据信号Q’的电压水平表示逻辑值“1”。

在连接单元301和302的数据信号Q的位线BLQ上的合成电压水平将为低,这反映了单元301和302的数据信号Q的布尔“AND”。另外,其还反映单元301和302的互补数据信号Q’的布尔“NOR”。因此,位线BLQ上的合成电压水平反映AND(Q)和NOR(Q’)。

类似地,在连接单元301和302的互补数据信号Q’的位线BLQ’上的电压水平反映互补数据信号Q’的布尔“AND”,以及数据信号Q的布尔“NOR”,即:AND(Q’)和NOR(Q)。

可以理解的是,通过本发明任何类型的逻辑是可能的,这取决于信号Q是如何定义的。例如,如果我们将“0”定义为“真”且将“1”定义为“假”,则位线BLQ上的合成电压水平反映NAND(Q)和(WHAT?)。

当布尔代数支持关联属性时,可以将分组变量关联到一起,而不改变等式的真值;因此,在位线BLQ和BLQ’上反映的值是布尔运算的结果,而不管选定单元的数量。

申请人已经认识到,由于位线BLQ和BLQ’两者的电压水平可以被同时读取,因此操作的计算时间可以减少50%,这是因为单个计算周期提供两个不同布尔运算的结果,一个结果在BLQ上反映而另一个在BLQ’上反映。

现在参考图4,其是给出在6T SRAM存储器阵列中存储的数据的示范性值的表格。存储器阵列具有6行(标记为1-6)和3列(标记为Col-1、Col-2和Col-3)。在表格中,每个单元具有其列出的数据信号Q和Q’。

在Col-1中的所有单元连接到同一位线对BLQ和BLQ’。在列-1中的一些单元具有“1”的数据信号Q(在行1、2和5中的单元),而其它的具有“0”的数据信号Q(在行3、4和6中的单元)。Q’具有互补值。

表格示出了在列-1的位线BLQ上的合成值是“0”,这是因为在列Col-1中存在至少一个这样的单元:所述单元的Q值为低并且该低值拉低整体位线。表格还示出了在Col-1的位线BLQ’上的合成值也是“0”,这是因为在列Col-1中存在至少一个这样的单元:所述单元的Q’值为低并且该低值拉低整体位线。因此,在位线BL上的值可以是AND(Q)。另一方式是NOR(Q’)。

在第二列Col-2中,所有的数据信号Q的值是“0”。其BLQ的值因此是“0”,这是因为存在具有低值的至少一个单元。然而,其BLQ’的值是“1”,这是因为所有的互补数据信号Q’的值为高。

在第三列Col-3中的所有单元存储“1”。因此,位线BLQ的值是“1”,并且位线BLQ’的值出于上述相同的原因是“0”。

根据本发明的优选实施例,在列解码器310中的写入单元316(图3)可以直接将位线的结果写回到存储器阵列300的单元中的一个(例如,单元303)中。申请人已经认识到,还可以如上所述通过选择若干行来并发地将值写入遍及SRAM阵列的若干单元。针对多个写入操作,列解码器310可以以指令命令充电器314对用于要被写入的单元的列的位线对BLQ和BLQ’充电到要被写入的适当值,并且可以以指令命令与充电器312对不应被写入的所有列的位线对BLQ和BLQ’预充电。对列的两个位线BLQ和BLQ’预充电可以防止单元被写入,这是因为当触发器的两个位线都为高时不能在新状态中稳定。

现在参考图5,其是包括3行和3列(总共9个存储器单元)的小型存储器阵列500的范例。图5的阵列只是范例;任何尺寸的阵列可以使用在本文中描述的相同原理操作。为了促进对下文描述的写入操作的理解,图5中的存储器阵列500的三行以大写字母标记为A、B和C,而存储器阵列500的列以小写字母标记为a、b和c,并且在阵列中的每个单元可以通过其行和列标记进行参考。存储器阵列500还包括用于激活多行的行解码器502以及用于对多列进行充电和预充电的列解码器504。

在图5中,为了仅将值“1”写入到单元“Ab”(在行“A”列“b”中的单元)和“Cb”(在行“C”列“b”中的单元),存储器阵列500可以执行以下操作:行解码器502可以选择分别控制行A和行C的字线WLA和WLC。列解码器504可以对不应被写入的列(列“a”和列“c”(BLa、BL’a、BLc和BL’c))的位线预充电。此外,列解码器504可以利用期望值对列b的位线充电(即,可以以“1”对BLb充电,并且以“0”对BL’b充电)。

在该范例中,按照期望,仅将值1提供给列“b”、行“A”和行“C”中的单元。在阵列500中的所有其它单元不被改变。

申请人已经认识到,使用本文描述的写入方法可以仅在两个周期中写入整个阵列。在一个实施例中,在第一周期中使阵列无效,并且在第二周期中将值“1”写入到应被设置为“1”的所有单元。在另一实施例中,将值“1”写入到应当具有值“1”的单元,并且在第二周期上执行对其它单元写入值“0”的多个写入操作。

申请人已经认识到可以一起实现这两个操作。

已知的是,可以根据NOR门构建任何电路或逻辑单元,这是因为其是功能完全的运算,并且因此可以使用上述多行选择操作来计算任何布尔运算。为了实施任何其它操作,可以将位线(BLQ或BLQ’)上的作为NOR门的输出的信号写入到SRAM阵列的单独位置中,并且可以用作到另外的NOR门的输入,从而实现其它布尔运算。

例如,可以使用本发明实施全加法器。现在参考图6,其示出了设计有逻辑门的全加法器电路;现在还参考图7,其示出了如何利用本发明实施相同的计算。

在图6的全加法器电路中,存在两个输入X和Y,以及进位信号Z。逆变器13、14和15转变信号X、Y和Z以产生其互补信号X_bar、Y_bar和Z_zar。门19-22中的每个组合六个信号中的三个以生成临时信号XYZ_bar、XY_barZ、X_barYZ和X_barY_barZ_bar。门25-27中的每个转变两个信号的组合以产生X_barY_bar。Y_barZ_bar和X_barZ_bar。最后,门23根据门19-22的组合输出产生X与Y的总和,并且门28根据门25-27的组合输出产生输出进位值C。

图7示出了被存储在存储器阵列300的各个单元中的值。三个初始单元存储两个输入X和Y以及进位信号Z。在前三个周期中的每个中,读取初始单位的互补信号以生成互补信号X_bar、Y_bar和Z_bar并在三个其它单元中存储互补信号X_bar、Y_bar和Z_bar(图7中的箭头在它们发生的周期中结束,并且在用于计算的数据的存储器单元中开始)。

在接着的四个周期中的每个中,激活这六个存储器单元中的不同的三个,并且将结果写入到存储器阵列300的不同单元中,以生成临时信号XYZ_bar、XY_barZ、X_barYZ和X_barY_barZ_bar。

在接着的三个周期中,激活互补存储器单元中的不同的两个,以产生并存储X_barY_bar、Y_barZ_bar和X_barZ_bar。最后,在最后的两个周期中,通过激活存储临时信号XYZ_bar、XY_barZ、X_barYZ和X_barY_barZ_bar的单元产生X与Y的总和S,并且通过激活存储临时信号X_barY_bar、Y_barZ_bar和X_barZ_bar的单元产生输出进位值C。然后将总和S和输出进位C写回到存储器阵列300中。

申请人已经认识到可以以多种方式利用上述选择性写入。例如,其可以用于更新在搜索操作中发现的数据,所述搜索操作例如是在2012年5月31日公开的、题目为“TCAM SEARCH UNIT INCLUDING A DISTRIBUTOR TCAM AND DRAM AND A METHOD FOR DIVIDING A DATABASE OF TCAM RULES”、美国公开号2012/0137060的申请人的共同申请中讨论的TCAM搜索,其被指定给本发明的共同受让人。可以搜索被存储在存储器阵列中的大数据库,以发现具有特定值或不匹配特定输入值的所有单元。然后可以将在搜索中发现的被存储在单元中的值写入新值。以这种方式,可以发现故障单元。

还可以以这种方式执行乘法。搜索可以查找具有特定值(例如,具有值6)的所有“字节”(单元组)。然后选择性写入将被存储在单元中的值重新写为36,从而提供一种在大数据库上执行平方运算的快速方式。

申请人已经认识到,利用本发明,可以在同一周期中读取和写入不同列。需要回想的是,在写入操作期间,可以将要被写入的列中的位线对充电到针对要被写入的值的适当电压,并且不应被写入的所有列的位线对BL和BL’被预充电,这是因为当触发器的两个位线都为高时不能在新状态中稳定。然而,如申请人已经认识到的,非写入列的预充电使得非写入列准备进行读取,并且因此可以在其它列被写入的同时读取这些列。

可以理解的是,本文针对6T SRAM描述的操作可以被实施在每列具有两个位线的任何非破坏性或非易失性存储器阵列上,并且其中,一个位线与存储的电荷相关联,而另一位线与存储的电荷的互补值相关联。

尽管在本文中已经图示和描述了本发明的某些特征,但是本领域普通技术人员现在可以想到许多修改、替换、改变和等价方案。因此,可以理解的是,权利要求旨在覆盖落入本发明的真实范围内的所有这种修改和改变。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1