使用动态冗余寄存器的存储器设备的制作方法

文档序号:18125360发布日期:2019-07-10 09:52阅读:216来源:国知局
使用动态冗余寄存器的存储器设备的制作方法

本专利文件涉及添加到设备的寄存器,更具体地,涉及添加到随机存取存储器(ram)的寄存器。本文描述的方法和设备在自旋转移力矩磁存储器(stt-mram)设备中尤其有用。



背景技术:

磁阻随机存取存储器(“mram”)是一种通过磁存储元件存储数据的非易失性存储器技术。这些磁存储元件是两个铁磁板或电极,它们可以保持磁场并由非磁性材料隔开,例如非磁性金属或绝缘体。通常,其中一个板具有其磁化固定(即,“参考层”),这意味着该层具有比另一层更高的矫顽力(coercivity)并且需要更大的磁场或自旋极化电流来改变其磁化取向。第二板通常称为自由层,并且其磁化方向可以通过相对于参考层较小的磁场或自旋极化电流来改变。

mram器件通过改变自由层的磁化取向来存储信息。具体地,基于自由层相对于参考层是平行对齐还是反平行对齐,可以在每个mram单元(ce1l)中存储“1”或“0”。由于自旋极化电子隧穿效应,单元的电阻由于两层的磁化取向而改变。对于平行和反平行状态,单元的电阻将不同,因此单元的电阻可用于区分“1”和“0”。mram器件通常被认为是非易失性存储器设备,因为它们即使在断电时也能保持信息。两个板的横向尺寸可以是亚微米,并且磁化方向相对于热波动仍然可以是稳定的。

mram器件被认为是适用于各种存储器应用的下一代结构。基于自旋力矩转移切换的mram产品已经进入大型数据存储设备。自旋转移力矩磁随机存取存储器(“stt-mram”)具有固有的随机写机制,其中在任何给定的写周期上位具有一定的写失败概率。写失败通常是随机的,并且具有特征故障率。高的写错误率(wer)可能使存储器不可靠。

在存储器设备中,尤其是stt-mram中,用于验证和重写数据字(datawords)的方法和系统是有益的。



技术实现要素:
及可申报的主题

在一实施例中,公开了一种具有动态冗余寄存器的设备。在一个方面,提供了一种包括随机存取存储器(ram)设备的存储器设备,并且具体地是stt-mram设备。本公开提供了备用动态冗余寄存器,其允许设备在高的写错误率(wer)下操作。动态冗余寄存器允许对未能正确写入存储体(memorybank)的数据字进行验证、重写和重定位,通常不会丢失对吞吐量、速度或对随机访问寻址的限制。

在一个方面,本公开教导了一种耦合到e1寄存器的存储体。e1寄存器耦合到e2寄存器。e1寄存器存储要验证或重写到存储体的数据字。e1寄存器还存储存储体内数据字的关联地址。可以针对存储体内关联地址处的存储体中的数据字来验证e1寄存器中的数据字。如果系统写操作在存储体上失败,则可以通过将数据字从e1寄存器写入存储体来尝试重写操作。系统写操作失败的事实可以通过验证操作来确定。可以根据需要多次尝试从e1寄存器到存储体的重写操作以成功完成写操作,或者可以根本不尝试。在一个示例中,可以基于与重写尝试相关联的一个或更多个控制位来配置重写操作的数量。在一个方面,重写操作的数量可以基于每个存储体或基于存储体的每个部分来配置。这些控制位可以存储在e1寄存器中并与特定数据字相关联以及酌情进行通信和更新。

在一个方面,可以仅在存储体空闲时(即,对该存储体没有写或读操作)尝试重写操作。通过这种方式,重写操作可以是透明的,并且没有传入系统读取和系统写操作的延迟。在从e1寄存器进行所需次数(0到n)的重写尝试之后,存储器设备将数据字从e1寄存器移动(重新定位)到e2寄存器。存储器设备还可以将存储体内数据字的关联地址从e1寄存器移动到e2寄存器。在一个实施例中,重写操作可以仅发生一次从e1寄存器到存储体。如果重写操作失败,则然后存储器设备将数据字和关联地址从e1寄存器重新定位到e2寄存器。尽管参考一个存储体和两个动态冗余寄存器进行了解释,但也可以使用一个或更多个存储体和两个或更多个动态冗余寄存器。

通常,第一级动态冗余寄存器(e1寄存器)可以以存储体的时钟周期速度操作(一些操作可以以存储体的时钟周期速度操作,而其他操作可以独立地发生或者发生多倍存储体时钟周期速度)。e1寄存器可以是非易失性的或易失性的,并且通常可以包括sram。e1寄存器还可以包括内容可寻址存储器(cam)阵列,其允许减小e1寄存器的大小。在一个实施例中,e1寄存器可以是比最后一级寄存器更高速、更小的寄存器。

通常,最后一级动态冗余寄存器(e2寄存器)可以以主存储体的时钟周期速度操作(一些操作可以以存储体的时钟周期速度操作,而其他操作可以独立地发生或者发生多倍存储体时钟周期速度)。最后一级可以是非易失性的或易失性的,并且通常可以包括mram。e2寄存器还可以包括cam。最后一级动态寄存器可以有利地包括非易失性存储器,其允许在断电时备份数据。与存储体相比,e2寄存器通常优先考虑可靠性而不是大小。在一个实施例中,最后一级寄存器可以包括比e1寄存器更多的条目。在一个实施例中,当对具有与e2寄存器中的数据字共同的关联地址的数据字发生写操作时,e2寄存器条目可以无效。

在一个方面,e1寄存器存储数据字和管线(pipeline)结构中没有机会验证的数据字的关联地址。例如,由于行地址更改,数据字可能没有机会进行验证。也就是说,写操作可能发生在与验证操作不同的行地址上。因此,用于验证操作的数据字将存储在e1寄存器内,并且如果可能,将对来自e1寄存器的、与用于写操作的数据字具有公共行地址的另一数据字执行验证。此特征在伪双端口存储体中特别有用。双端口存储体允许同时执行读和写操作。伪双端口允许在少于所有端口上同时(例如,基本上在相同的存储器设备时钟周期内)执行读和写操作。在一个示例中,伪双端口mram可以允许同时执行验证和写操作,只要操作共享公共行地址和不同的列地址即可。在一个方面,如果数据字未能写入或验证到存储体,则可以从e1寄存器而不是主存储体读取数据字。

在另一方面,e1或e2寄存器数据字、关联地址和控制位可以被删除、覆写、无效,以使得数据不被使用,或者当在存储体上发生针对相同关联地址的另一写操作时被认为是垃圾。在一个方面,如果这种读操作是有益的,则可以从e2寄存器而不是主存储体读取数据字。例如,如果e1寄存器将数据字重新定位到e2寄存器。在另一方面,将存储在e2sram和cam中的数据备份到e2非易失性ram上以便在断电期间存储。在另一个实施例中,可以在上电期间将存储在e2非易失性ram中的数据传送到e2易失性ram。在另一方面,存储器设备可以将数据从e1寄存器移动到e2寄存器,以便释放e1寄存器中的空间。在另一方面,e2寄存器可以不存储数据字和关联地址,而是将从e1寄存器接收的数据字和关联地址重新映射到存储体的不同区域。在另一方面,e2寄存器可以在断电时将数据字移动到存储体。

通常,e2寄存器应该比存储体更可靠,因为在e2寄存器失败的情况下数据可能无法恢复。因此,可以实现方案以增加e2寄存器的可靠性。例如,e2寄存器可以包括状态位,仅当所有或预定数量的状态位设置为1时,该状态位才允许对e2内的特定数据字或其他条目进行数据操作。在另一种方案中,数据字的多个副本可以保持在e2寄存器中并且基于投票方案来选择。在另一种方案中,可以在e2寄存器内执行比在存储体中更严格的纠错码(ecc)方案。在另一种方案中,e2寄存器指向主存储器内用于存储数据字的特定地址,而不是将数据字存储在e2本身内。

在一个方面,本公开将存取方法和系统教导到存储体中。伪双端口允许使用所公开的y-多路复用器结构同时对共享公共行地址(例如,共享公共字线)的两个数据字执行验证和写操作。在其他实施例中,双端口存储体可以允许同时读取和写入操作。本公开的y-多路复用器结构使用两列解码器来针对列地址进行操作。一列解码器允许针对写列地址进行解码。另一列解码器允许针对读取和验证列地址进行解码。所公开的具有y-多路复用器结构的伪双端口存储体仅需要单端口存储器单元。如所解释的,双端口存储体可以允许同时执行读取和写入操作,但是需要双端口存储器单元。单端口存储器单元(例如sttmram存储器单元)可以比双端口存储器单元(例如双端口sttmram存储器单元)更具面积效率。因此,在一个实施例中,本公开教导了y-多路复用器结构以创建具有单端口存储器单元的伪双端口存储体。因此,e1寄存器与所公开的伪双端口存储体一起操作,以允许共享公共行地址的写和验证操作同时发生。

在另一方面,存储器装置包括用于本公开的控制逻辑的控制位和信号。因此,存储器设备可以知道数据是否位于存储体、管线体、e1寄存器或e2寄存器中以进行读取操作。在另一方面,用于操作的数据可以基于控制位和信号而无效,以保持操作的一致性。这种控制位和信号可以包括有效位、有效存储体信号、失败计数位、e2条目无效位。有效位表示寄存器中的特定数据对数据操纵操作有效。有效存储体信号指示用于操作的存储体是否有效(即,正在该存储体中执行系统写入或系统读取)。失败计数位表示针对数据字发生的重写操作的次数。e2条目无效位指示e2中的关联条目不应用于数据操纵操作。

在另一方面,本公开教导了一种具有用于写入和验证以及其他数据操纵操作的管线结构的存储器设备。该管线结构可用于控制系统写入、验证和重写操作以及其他数据操纵操作。使用本公开的管线结构,维护数据完整性并且构建数据流。在一个实施例中,延迟寄存器实现延迟周期,允许存储器在对数据字执行验证操作之前达到稳定状态。该延迟周期允许对数据字执行写操作,然后是延迟周期,接着是数据字的验证操作。

参考以下描述和附图,将更好地理解实施例的这些和其他目的,特征,方面和优点。此外,在不脱离本公开的教导的情况下,可以修改和组合实施例的目的、特征、方面和优点。

附图的简要说明

作为本说明书的一部分包括的附图示出了目前优选的实施例,并且与上面给出的一般描述和下面给出的详细描述一起用于解释和教导本文描述的mtj装置的原理。

图1是具有冗余寄存器的本公开的示例性存储器设备的框图。

图2是示出使用本公开的示例性存储器设备的写操作的过程流程的示例性实施例,并且示出了在存储器设备上执行的高级写操作。

图3是本公开的具有动态冗余寄存器的存储器设备的示例性实施例的框图。

图4是本公开的示出了y-多路复用器结构的存储器设备的示例性实施例的框图。

图5是本公开的示出了允许验证和重写操作的管线结构的存储器设备的示例性实施例的框图。

图6是示出使用本公开的存储器设备的实施例的系统读取操作的实施例的示例性处理流程。

图7是示出第一级动态冗余寄存器的存储器设备的实施例的框图。

图8是本公开的示出了最后一级动态冗余寄存器的存储器设备的实施例的框图。

附图不一定按比例绘制,并且在整个附图中,为了说明的目的,相似结构或功能的元件通常由相同的附图标记表示。附图仅旨在便于描述本文描述的各种实施例;附图并未描述本文公开的教导的每个方面,并且不限制权利要求的范围。

详细描述

呈现以下描述以使得本领域技术人员能够创建和使用动态冗余寄存器,其允许设备,尤其是诸如mram的磁半导体器件,在高的写错误率(wer)下操作。本文公开的每个特征和教导可以单独使用或与其他特征结合使用以实现所公开的系统和方法。参考附图进一步详细描述了单独和组合利用这些附加特征的许多特征和教导的代表性示例。该详细描述仅旨在向本领域技术人员教导用于实践本教导的优选方面的进一步细节,并且不旨在限制权利要求的范围。因此,在以下详细描述中公开的特征的组合对于在最广泛意义上实践本教导可能不是必需的,而是仅仅教导以描述本教导的特定代表性示例。

在以下描述中,仅出于解释的目的,阐述了具体的术语以提供对本教导的透彻理解。然而,对于本领域技术人员来说显而易见的是,这些具体细节不是实施本教导所必需的。

图1是本公开的具有动态冗余寄存器(在这种情况下为e1寄存器104和e2寄存器106)的示例性存储器设备的框图。图1示出了这里描述的存储器设备100,其包括存储体102,e1寄存器104和e2寄存器106。此外,存储器设备100与数据信号通信,例如,地址信号108、数据字信号110、时钟信号112、写入和芯片选择信号114、断电信号116、上电信号118。注意,图1示出了本公开的某些教导。然而,应当理解,本领域普通技术人员可以修改所示的特定信号108-118而不脱离本公开的教导。此外,可以使用到存储器设备的其他通信接口,例如双倍数据速率(ddr)接口。虽然这里仅示出了两个动态冗余寄存器(e1寄存器104和e2寄存器106)和一个存储体(存储体102),但是存储器设备100可以包括两个或更多个动态冗余寄存器和一个或更多个存储体。可以使用e1寄存器104和e2寄存器106的一些组合来实现两个或更多个动态冗余寄存器。两个或更多个动态冗余寄存器也可以分层或并行地操作。

存储体102包括包含数据位的数据存储元件阵列,并且可以由诸如静态随机存取存储器(sram),动态随机存取存储器(dram),电阻随机存取存储器(rram),相变存储器(pcm),mram,stt-mram或其他ram技术之类的易失性或非易失性ram技术实现。在示例性实施例中,存储体102可包括纠错码块(未示出)。当存储体102包括stt-mram时,本公开的教导是特别有益的,stt-mram遭受固有的随机写机制,其中位在任何给定的写周期上具有一定的写失败概率。本公开的教导允许存储体102在高wer下操作。然而,使用本公开的教导可以校正许多这样的错误。在高wer下操作可允许存储体102在其他有利条件下操作。例如,存储体102可以在高写入速度、低写入电压(其可以实现更高的位单元耐久性)、减少ecc位或增加ecc解码速度以及其他有益条件下操作。

在一个实施例中,存储体102可包括65536×50个可寻址位。此外,50位包括32位数据字和18个用于纠错的奇偶校验位。可以在存储体102上执行操作,包括系统读取,系统写入,重写和验证操作,以及其他数据操作。特定操作(例如写操作)可以发生在存储体102内的特定地址处。该操作可以具有指示字线的行地址和列地址。写操作的地址可以通过存储体102的写端口传送。可以通过存储体102的读端口传送用于读取或验证操作的地址。

在一个实施例中,存储体102包括伪双端口存储体,允许存储设备100同时(例如,基本上在存储设备时钟周期内)执行共享公共行(字线)地址的写操作和验证操作。对存储体102的系统读操作通常取代写和验证操作。因此,系统读操作将在排定的写和验证操作之前执行。然后可以在随后的时钟周期发生写入和验证操作。如果使用双端口存储体102,则可以同时执行读和写操作。

e1寄存器104耦合到存储体102和e2寄存器106。e1寄存器104包括包含数据位的数据存储元件阵列,并且可以由易失性和非易失性ram技术实现。e1寄存器104还可以包括控制位并使用维持存储器设备100内的操作的一致性的控制信号进行通信。通常,将数据更可靠地写入e1寄存器104而不是存储体102中。因此,如果存储体102包括stt-mram,则e1寄存器104可以包括sram。在其他实施例中,e1寄存器可以包括非易失性ram,例如stt-ram。e1寄存器还可以包括双端口stt-ram,以允许同时读取和写入操作。在这种情况下,e1寄存器104可以以与存储体相同的循环吞吐速度运行。e1寄存器104还可以包括内容可寻址存储器(cam)。

通常,e1寄存器104存储存储体102中尚未验证或验证失败的数据的数据字和关联地址。在一个实施例中,e1寄存器104可以存储尚未验证的数据字。例如,e1寄存器104接收rowchg信号,该信号指示本公开的管线结构内的行地址改变。rowchg信号指示来自管线结构的应存储在e1寄存器104中的数据字和关联地址。rowchg信号还可以指示应该从e1寄存器104向管线结构发送另一个数据字和关联地址以进行验证操作。如果使用伪双端口存储体,则e1寄存器104可以选择数据字和关联地址,使得它们与管线结构的写寄存器中的数据字共享公共行地址。以这种方式,由于数据字共享公共行地址,因此可以同时执行写操作和验证操作。

在另一个实施例中,e1寄存器104可以存储验证失败的数据字。例如,管线结构可以向e1寄存器104发送信号,指示数据字未能写入(即,验证失败)到存储体102。管线结构还可以将数据字和关联地址(在e1寄存器104尚未包含数据字和关联地址的情况下)发送到e1寄存器104,以便稍后尝试将数据字重写入存储体102。在另一示例中,可以发生读取操作,并且管线结构可以确定在预定的错误预算内没有发生读取操作。然后,管线结构可以发送指示读取操作失败的信号,并将数据字和关联地址发送到e1寄存器104以进行存储。

从前面的内容,本领域普通技术人员将理解,e1寄存器104可以存储数据字和关联地址以供将来验证。例如,由于行地址更改,数据字可能没有机会进行验证。因此,e1寄存器104可以在一些后续时钟周期期间将数据字和关联地址发送到本公开的管线结构以验证数据字。通常,控制信号可以向e1寄存器104指示将发生行地址改变或者存储体102将在后续时钟周期期间变为不活动。然后,e1寄存器104可以在随后的时钟周期期间确定与要写入的数据字共享公共行地址(在行地址改变的情况下)的适当数据字。然后,e1寄存器104发送数据字和关联地址以验证管线结构的寄存器。在一个实施例中,如果数据字已经存储在e1寄存器104内,则e1寄存器104还可以发送e1寄存器104内的物理地址。以这种方式,可以更新与数据字相关联的控制位。

从前面的内容,本领域技术人员将理解,e1寄存器104还可以存储数据字以用于将来的重写尝试。e1寄存器104可以从本公开的管线结构接收验证失败的数据字。存储器设备100可能已尝试写入操作,并且数据字未通过验证操作。存储器设备100还可能已尝试读取操作,并且数据字可能未能在指定的错误预算内读取。在两种情况下,本公开的管线结构可以将数据字发送到e1寄存器104。存储体102可以在后续周期期间变为不活动。然后,e1寄存器104可以确定适当的数据字以尝试重写入存储体102。在这种情况下,e1寄存器104可以将数据字和关联地址发送到管线结构。e1寄存器104发送数据字,使得写寄存器可以在存储体102不活动的时钟周期期间重写数据字。

通常,e1寄存器102还可以将数据字、关联地址和控制位重新定位到e2寄存器106。如果不再需要重写尝试,则e1寄存器104可以将数据字和关联地址重新定位到e2寄存器106。e1寄存器还可以在断电时将数据重新定位到存储体102或e2寄存器106,以便在e1寄存器104包括易失性存储器的情况下将数据存储在非易失性存储器中。在e1寄存器104缺少用于数据字的空间的情况下,e1寄存器104还可以将数据重定位到e2寄存器106。

e1寄存器包括控制位并使用控制信号进行通信。在一个实施例中,e1寄存器包括指示关联数据字是否是e1寄存器内的有效条目的有效位。在另一实施例中,e1寄存器包括失败计数位,其指示与数据字相关联的重写尝试的次数。以这种方式,存储器设备100可以仅尝试指定次数的重写尝试。在另一个实施例中,e1寄存器包括指示由于行地址改变关联数据字尚未被验证且应该被验证的位。

e2寄存器106耦合到e1寄存器104,并且还可以耦合到存储体102。e2寄存器106包括包含数据位的数据存储元件阵列,并且可以由易失性和非易失性ram技术实现。e2寄存器106还可以包括ecc块和cam。e2寄存器106可以包括数据字、关联地址和控制位。通常,e2寄存器106将包括非易失性存储器技术,例如stt-mram。

e2寄存器106存储来自e1寄存器104重新定位的数据字和关联地址。在另一实施例中,e2寄存器106不是存储来自e1寄存器104的数据字和关联数据字,而是将那些数据字重新映射到存储体102内的地址。例如,e2寄存器106可以将重映射地址存储在存储体102中。然后,e2寄存器106临时存储来自e1寄存器的数据字,然后将其写入存储体102中的适当的重映射地址。当应该读取数据字时,e2寄存器包含用于从存储体102读取数据字的适当的重映射地址。

数据字和关联地址可以重新定位到e2寄存器106或基于不同条件重新映射。在一个实施例中,e1寄存器104将数据字和关联地址重新定位到e2寄存器106,因为在指定次数的重写尝试之后数据字未能写入存储体102。在另一实施例中,因为断电信号116指示应将数据字和关联地址移动到非易失性存储器,例如包括stt-mram的e2寄存器106,所以e1寄存器104将数据字和关联地址重新定位到e2寄存器106。在另一个实施例中,因为e1寄存器104缺少空间,所以e1寄存器104将数据字和关联地址重新定位到e2寄存器106。本领域普通技术人员将理解,期望的控制位也可以与关联数据字一起重新定位。在另一个实施例中,如果在预定次数的写入尝试之后数据字未能写入e2寄存器106内的物理地址,则可以为数据字选择不同的物理地址。

e2寄存器106还可以耦合到管线结构的输入寄存器。以这种方式,e2寄存器106可以接收控制信号,该控制信号指示可能正在发生对与e2寄存器106内的数据字共享公共关联地址的数据字的写操作。因此,e2寄存器106内的控制位可以指示e2寄存器106内的数据字由于系统写操作而无效。

存储器设备100还使用示例性信号108-118进行通信。地址信号108包括存储体102内的要写入或读取(或以其他方式操纵)的数据的地址。数据字信号110包括要写入(或以其他方式操纵)存储体102的数据字。时钟信号112包括存储器设备100时钟信号或其他时钟信号(诸如用于存储器设备100内的特定组件)。写入和芯片选择信号114包括用于确定要在存储体102内执行的操作的信号。例如,如果写信号为高并且芯片选择信号为低,则可以在存储体102上执行读取操作。断电信号116指示是否将从存储器设备100或存储器设备100内的特定组件移除电力。因此,断电信号116可用于确定e1寄存器104的内容应被写入存储器或e2寄存器106。上电信号118指示向存储器设备100提供电力。上电信号可指示应将e2非易失性存储器内容加载到e2易失性存储器。本领域普通技术人员将认识到,可以在不脱离本公开的情况下修改特定信号108-118。

断电信号116可指示e2寄存器106的易失性存储器内容应移动到e2寄存器106的非易失性存储器。例如,可以将尚未存储在e2的非易失性存储器中的e2寄存器106的易失性存储器内容移动到e2寄存器106的非易失性存储器。在另一实施例中,断电信号116可指示应将e2寄存器106的内容移动到非易失性存储体102。在另一个实施例中,断电信号116可以指示应该将e1寄存器104内的某些数据字验证到存储体102。在另一实施例中,断电信号116指示e1寄存器104内的某些数据字应重写入存储体102。

图2描绘了示出使用本公开的示例性存储器设备的写操作的过程流程的示例性实施例,并且示出了在存储器设备上执行的高级写操作。在步骤202中,要在主存储器(例如,存储体102的输入寄存器)上执行的写操作存在于存储器设备中。在步骤202中,可以在主存储器上执行系统写操作。在步骤204中,确定系统写操作是否成功。例如,验证操作可以确定写操作是否在主存储器中成功发生(例如,数据字是否以可接受的错误预算写入或完美地写入)。如果写操作成功,则过程流程200前进到结束步骤210。另一方面,如果写操作不成功,则在步骤206中确定是否应该重试写操作。在图2的过程流程200期间示出了一次重试,但是可以根据需要尝试将数据写入存储体中的多次尝试(0到n次重试)。如果应该尝试重试,则当过程流程200返回到步骤202时,将数据从e1寄存器写入主存储器。根据该描述,本领域普通技术人员将理解步骤202-206和210的操作。然而,在某些情况下,尽管进行了总的期望重试次数,但是从e1寄存器到主存储器的写操作可能是不成功的。在那种情况下,如果在步骤206确定不再进行更多的尝试,则将数据从e1寄存器写入主存储器,过程流程200将进行到步骤208。在步骤208中,将数据写入备用存储器(例如,从e1寄存器到e2寄存器)。

图3是本公开的具有动态冗余寄存器的存储器设备300的示例性实施例的框图。图3是本文描述的存储器设备300的框图,其包括存储体304和306,管线体308和310,输入寄存器312,e1寄存器314和e2寄存器316。存储器设备300使用信号318-324进行通信。存储器设备300包括端口326-336,用于对存储体304和306执行读、写和验证(或其他数据操纵)操作。本文描述存储器设备300以描述本公开的方面。普通技术人员将理解如何在不脱离本公开的教导的情况下修改存储器设备300。因此,例如,在不脱离本公开的教导的情况下,本领域普通技术人员可以修改特定信号318-324。虽然这里仅示出了两个动态冗余寄存器(e1寄存器314和e2寄存器316)和两个存储体(存储体304和306),但是存储器设备300可以包括两个或更多个动态冗余寄存器和一个或更多个存储体。

先前已经参考图1描述了存储体304和306。存储体304和306还包括两个端口(分别为326和328;332和334),用于执行读、写和验证(或其他数据操纵)操作。存储体304可以例如包括具有偶数地址的数据字,而存储体306包括具有奇数地址的数据字。存储体304的两个端口326和328耦合到存储体304的位线。同样,存储体306的两个端口332和334耦合到存储体306的位线。尽管示出了每个存储体具有一个读取端口和一个写入端口,但是存储器设备300可以包括任何期望数量的读取端口和写入端口。在一个实施例中,使用双端口存储体。因此,每个端口326-336可以执行同时的读和写操作。然而,本领域普通技术人员将理解,讨论以伪双端口存储体304-306继续进行,以突出本公开的具体教导。本公开的y-多路复用器结构允许伪双端口存储体304-308执行共享公共行地址和不同列地址的同时写入和验证操作。

关于存储体304,写端口326允许从管线体308向存储体304传输包括写地址和写数据的信号。端口328允许从管线体308向存储体304传输包括读地址或验证地址的数据信号。端口330允许将包括读数据字的数据信号从存储体304传输到管线体308。

管线体308和310包括用于实现本公开的写、读和验证(以及其他数据操纵)操作的数据寄存器。如上所述,管线体308和310分别使用伪双端口结构耦合到存储体304和306,用于提供同时的写入和验证操作。此外,管线体308和310耦合到输入寄存器312。如结合图5所解释的,管线体308和310实现允许在存储体304和306上同时执行验证和写操作的管线结构。此外,管线体与e1寄存器314通信以实现本公开的管线结构。

输入寄存器312包括包含数据位的数据存储元件。输入寄存器包括数据字、存储体内的关联地址以及指示系统操作(例如系统读取或系统写入)的控制位。例如,输入寄存器312可以包括要写入存储体(从数据信号322接收)的数据字、数据的地址(从地址信号324接收)和控制位。输入寄存器312可以耦合到管线体308和管线体310,以传送数据字、其关联地址和控制位。本领域普通技术人员将认识到,其他连接是可能的并且与本公开的教导一致,并且为了便于理解示出了特定连接。例如,输入寄存器312可以耦合到e1寄存器314(用于将数据字的关联地址传送到e1寄存器312)和控制信号。

已经结合图1描述了e1寄存器314,并且还将结合图7进一步描述e1寄存器314。e1寄存器314耦合到管线体308和310以及e2寄存器316。e1寄存器314包括包含数据位的数据存储元件。例如,e1寄存器314可以包括数据字和用于未能在存储体304和306内正确验证的数据字的关联地址。e1寄存器314可以包括数据字和用于尚未在存储体304和306内验证的数据字的关联地址。e1寄存器314还可以包括数据字和用于在关联错误预算内未能从存储体304和306读取的数据字的关联地址。

已经结合图1描述了e2寄存器316,并且还将结合图8进一步描述e2寄存器316。e2寄存器316可以耦合到e1寄存器314。e2寄存器316包括包含数据位的数据存储元件。e2寄存器316包括数据字、关联地址和控制位。这些数据字通常无法写入存储体304和306。由于存储器设备300的断电或者e1寄存器内的空间不足,这些数据字也可能已经从e1寄存器314写入到e2寄存器316。在一个实施例中,e2寄存器316可以可选地耦合到管线体308和310或存储体304和306,以便写入数据字(或其他信号)。例如,e2寄存器不是存储来自e1寄存器316的数据字和关联地址,而是可以将重映射地址存储在存储体304和306中,以通过重映射过程直接写入存储体。在另一实施例中,e2寄存器316在断电期间将数据写入存储体304和306。

图4是本公开的示出了y-多路复用器结构的存储器设备的示例性实施例的框图。图4示出了存储器装置400的一部分,其包括存储体402,行解码器404,写列解码器和y多路复用器406,读列解码器和y-多路复用器408以及多路复用器410-412。图4示出了解码器406-408的y-多路复用器结构。y-多路复用器结构允许对共享存储体中的公共行地址(字线)但具有不同列地址的数据字进行同时验证和写操作。

存储体402耦合到解码器404-408。行解码器404将要写入存储体402或从存储体402读取或验证的数据字的地址行作为输入。然后行解码器确定数据字的适当行。在各种实施例中,数据字是由存储器设备处理的一条信息的预定义数量的位。例如,数据字可以包括8、16、24等位。数据字的大小取决于存储器设备,并且可以根据需要改变。

多路复用器410耦合到行解码器404。多路复用器410将管线行地址(pipeline_a_row,管线_a_行)和读取行地址(read_a_row,读取_a_行)作为输入。管线行地址指示从管线接收的用于写入或验证操作的数据字的行地址。通常,管线行地址指示要写入存储体402的数据字与要在存储体402中同时验证的另一数据字之间的共享行地址。读取行地址指示要从存储体402读取的数据字的行地址。当使用伪双端口存储体402时,读取行地址通常优先于管线行地址。然后,多路复用器410将适当的行地址输出到行解码器404。然后行地址解码器404激活存储体402中的适当行。适当的激活方案对于本领域普通技术人员来说是已知的。

写入列解码器和y-多路复用器406耦合到存储体402。写入列解码器和y-多路复用器406将写入地址列wr_a_col和写入数据wr_d(例如数据字)作为输入。写地址列指示从本公开的管线结构接收的系统写入或重写操作的列地址。写入列解码器和y-多路复用器406然后确定用于写入操作的适当列地址。写入列解码器和y-多路复用器406然后激活存储体402中的适当列。适当的激活方案对于本领域普通技术人员来说是已知的。

读取列解码器和y-多路复用器408耦合到存储体402。读取列解码器和y-多路复用器408将从多路复用器412输出的列地址作为其输入。然后,读取列解码器和y-多路复用器408确定用于读取操作的适当列。然后,读取列解码器和y-多路复用器408激活存储体402中的适当列。适当的激活方案对于本领域普通技术人员来说是已知的。

多路复用器412耦合到读取列解码器和y-多路复用器408。多路复用器412将输入管线列地址(pipeline_a_col,管线_a_列)和读取列地址(read_a_col,读取_a_列)作为输入。管线列地址指示应当在存储体402中验证的数据字的列地址。从管线结构接收管线列地址。读取列地址指示应该从存储体402读取的数据字的列地址。通常,当使用伪双端口存储体402时,读取列地址优先。多路复用器402将包括用于读取操作或验证操作的列地址的信号输出至读取列解码器和y-多路复用器408。因此,一起操作,行和列解码器404-408对存储体402内的特定地址执行操作(例如,读、写或验证)。

本领域普通技术人员将理解,列解码器和y-多路复用器406-408的y-多路复用器结构允许将存储体402作为伪双端口存储体操作。因此可以使用单端口存储器单元,但是当这些操作共享公共行地址但是不同的列地址时,存储体402可以同时执行验证和写入操作。如果使用双端口存储体402,则可以同时执行读和写或验证和写操作。

图5是本公开的存储器设备的示例性实施例的框图,示出了允许验证和重写操作的管线结构。图5示出了用于实现用于系统写入、重写和验证操作以及其他数据操纵操作的管线流的示例性管线500。使用系统操作502,输入寄存器504,管线体506,e1寄存器508和存储体510来实现管线500。管线体506包括写寄存器512,延迟寄存器514,验证寄存器516和验证结果寄存器518。此外,管线500包括比较存储器逻辑520。

系统操作502包括用于执行期望操作的信号,例如系统写入和系统读取,以及其他数据操纵操作。这样,系统操作502通常包括指示数据字、存储体510内的关联数据地址的信号,以及指示要对存储体510执行的操作的控制信号(例如写或芯片选择信号),以及用于执行数据操纵操作并维护适当的状态的其他信号。通常,来自系统操作502的信号存储在输入寄存器504中。可以使用来自系统操作502的信号的其他配置而不脱离本公开的范围。此外,在不脱离本公开的教导的情况下,管线500的其他实施例是可能的。例如,延迟寄存器514允许对数据字的写和验证操作之间的延迟。stt-mram可能需要在特定地址处的写操作之间延迟并验证公共地址处的操作。延迟周期允许存储体510内的数据存储元件在执行验证操作之前返回到稳定状态。其他ram技术,以及在某些情况下stt-mram本身,可能不需要这种延迟,并且延迟寄存器514不是必需的。

输入寄存器504耦合到写寄存器512。输入寄存器504包括包含数据位的数据存储元件。在某些实施例中,输入寄存器504可包括数据字的数据位,关联地址,有效位和其他所需控制位。有效位指示是否应执行数据操纵操作(如系统写操作)或不应使用寄存器来执行此类操作。例如,基于由系统操作502提供的写信号和芯片选择信号的有效位可以指示输入寄存器中的数据字是否用于写入。输入寄存器504还可以耦合到e1寄存器508,例如,以将关联地址和控制位发送到e1寄存器508。例如,该关联地址和控制位可以在管线中的行地址改变的情况下使用,或者用于使具有相同的关联地址的e1寄存器500条目无效。

本公开的实施例的活动存储体表示其中正在进行系统写入或系统读取的存储体。因此,活动存储体信号(或活动存储体位)防止在该时钟周期期间重写,而是指示在该时钟周期期间将发生系统写入或读取。例如,活动存储体信号指示写寄存器512将在该时钟周期期间将先前从输入寄存器504接收的数据字写入存储体510。因此,e1寄存器知道在该时钟周期期间不应将用于重写操作的数据字发送到写寄存器512。输入寄存器504将数据字、关联地址和所需控制位发送到写寄存器512。

先前已经参照图1对e1寄存器508进行了描述,并且将结合图7进行描述。e1寄存器508耦合到输入寄存器504,写寄存器512,延迟寄存器514,验证寄存器516和验证结果寄存器520。e1寄存器508可以提供数据字,存储体510内数据字的关联地址,以及写寄存器512的控制信号和验证寄存器516。e1寄存器508可以从延迟寄存器514和验证结果寄存器518接收数据字、其关联地址和控制信号。在数据字已经存储在e1寄存器508内的情况下,e1寄存器508还可以在e1寄存器508内发送物理地址。尽管未示出,但是如果未使用延迟寄存器514,则e1寄存器508可以从写寄存器512接收数据字、关联地址和控制信号。此外,e1寄存器508可以与输入寄存器通信,以接收诸如数据字信号和控制信号(诸如不活动存储体信号)之类的信号。

写寄存器512耦合到延迟寄存器514和存储体510。在其他实施例中,写寄存器512可以耦合到验证寄存器516。写寄存器512包括包含数据位的数据存储元件。通常,写寄存器512包括数据字的数据位,其关联地址,有效位和其他所需控制位。有效位是有效的寄存器位,并且当写寄存器512的内容有效时可以设置为1,使得可以发生写操作。写寄存器504从输入寄存器504接收数据字、关联地址和所需控制位,以进行系统写操作。对于存储体时钟周期,写寄存器504不会将系统数据字写入该存储体,e1寄存器508将数据字、关联地址和所需控制位发送到写寄存器512。这允许写寄存器512在写寄存器512不会将系统数据字写入存储体510时尝试重写操作。如前所述,当使用伪双端口存储体510时,读操作通常优先于来自写寄存器512的写操作。此外,当使用伪双端口存储体510时,如果操作共享公共行地址,则写寄存器512可以与验证寄存器516执行的验证操作同时地执行写操作。写寄存器512还将数据字、关联地址和所需控制位发送到延迟寄存器514(或者如果没有使用延迟寄存器则验证寄存器516)。

延迟寄存器514耦合到验证寄存器516和e1寄存器508。延迟寄存器514包括包含数据位的数据存储元件。通常,延迟寄存器514包括数据字、关联地址位、有效位和其他所需的控制位。有效位指示延迟寄存器514的内容是否有效。延迟寄存器或多个延迟寄存器可以在写和验证之间提供更多的时钟周期延迟。如前所述,延迟寄存器514对于ram技术是可选的,其需要对存储体510内的特定地址的写和验证操作之间的延迟。如果在管线体504内发生行地址改变,则延迟寄存器514将数据字、关联地址和所需控制位发送到e1寄存器508。因此,当写寄存器将写入共享公共行地址的数据字时,可以在稍后的时钟周期验证数据字。在另一个实施例中,当存储体将不发生验证操作时,可以在稍后的时钟周期验证数据字。如果在管线体504内没有发生行地址改变,则在所需的延迟时钟周期之后,延迟寄存器514将数据字、关联地址和所需控制位发送到验证寄存器516。

验证寄存器516耦合到存储体510并验证结果寄存器520。验证寄存器516包括包含数据位的数据存储元件。通常,验证寄存器516包括数据字,其关联地址,有效位和其他所需控制位。如果作为重写操作或来自e1寄存器的验证操作的结果接收到数据字,则验证寄存器156可以包括内部e1地址。有效位指示验证寄存器516的内容是否对验证操作有效。验证寄存器516的内容,例如数据字,可以源自延迟寄存器514(或者在不使用延迟寄存器512的情况下为写寄存器512)或者e1寄存器508。如果没有发生行地址改变,则验证寄存器516将从延迟寄存器514接收内容。如果发生行地址改变,则验证寄存器516将从e1寄存器508接收内容。在一个实施例中,验证寄存器516从e1寄存器508接收数据字,其关联地址,e1寄存器内的地址,失败计数位和其他所需控制位。验证寄存器516将关联地址发送到存储体510,以便验证数据字。验证寄存器516发送数据字,失败计数位和其他所需状态位,以比较数据逻辑520。在系统写入的情况下,验证寄存器516发送数据字及其关联地址以验证结果寄存器518。验证寄存器516在重写操作或从e1寄存器508验证的情况下发送内部e1地址。因此,如果数据字和关联地址已经存在于e1寄存器508中,则验证寄存器516不需要发送数据字和关联地址以验证结果寄存器518。

比较存储器逻辑520耦合到验证寄存器516。比较存储器逻辑520包括包含数据位的数据存储元件。比较存储器逻辑520可以包括读取放大器或灵敏放大器(senseamplifier)以从存储体510读取数据字。用于实现比较存储器逻辑520的硬件逻辑可以由本领域普通技术人员使用。

在验证操作的情况下,比较存储器逻辑520接收来自验证寄存器516和存储体510的输入。存储体510基于从验证寄存器516发送的关联地址输出数据字至比较存储器逻辑520。比较存储器逻辑520还从验证寄存器516接收数据字。因此,比较存储器逻辑520确定写操作是通过还是失败。比较存储器逻辑520基于本领域普通技术人员所希望的方法进行通过/失败确定。在一个实施例中,比较存储器逻辑520确定来自验证寄存器516的数据字是否与来自存储体510的数据字匹配。在其他实施例中,比较存储器逻辑520认为如果预定数量的位匹配则操作通过。如果验证操作通过,则比较存储器逻辑520传递适当的控制位至验证结果寄存器518,例如,失败计数位可以设置为0。如果需要,验证结果寄存器518然后可以使e1寄存器内的条目无效。如果验证操作失败,则验证结果寄存器518更新e1寄存器内的失败计数位(在重写或从e1验证的情况下)或将数据字、关联地址和控制位发送到e1寄存器(在系统写入的情况下)。

在读取操作的情况下,存储体510输出数据字、关联地址和期望控制位至比较存储器逻辑520。比较存储器逻辑520确定是否通过了读操作或者是否应该对存储体510执行重写操作,因为在读取数据字时发生了太多错误。在一个实施例中,比较存储器逻辑520使用ecc和与数据字相关联的奇偶校验位来校正数据字。如果ecc确定发生了太多错误(例如,高于预定阈值的错误),则比较存储器逻辑520还发送数据字和控制位以验证结果寄存器518。

验证结果寄存器518耦合到比较存储器逻辑520和e1寄存器508。验证结果寄存器518包括包含数据位的数据存储元件。通常,验证结果寄存器518包括数据字的数据位,关联地址,有效位和所需控制位。有效位指示验证结果级寄存器518的内容有效以写入e1寄存器508。验证结果寄存器518还可以包括内部e1地址。验证结果寄存器518如前所述将数据发送到e1寄存器。

本领域普通技术人员将理解,管线结构500是示例性的,并且可以包括更多写入,延迟,验证,验证结果寄存器和比较逻辑块,以在将失败的数据字写入e1寄存器之前允许更多的重写尝试。此外,在不脱离本公开的范围的情况下,可以添加更多寄存器和存储体。

图6是示出使用本公开的存储器设备的实施例进行系统读操作的实施例的示例性过程流程。图6示出了用于本公开的系统读操作的过程流程600。过程流程600示出了在存储器设备上执行的高级读操作。在步骤602中,要在存储体上执行的系统读操作存在于存储器设备中。在步骤604中,检查存储在两个管线体中的有效地址,以确定是否存在与系统读操作相关的数据字。如果否,则e1寄存器检查地址以确定在步骤606中是否存在与系统读操作相关联的数据字。如果否,则e2寄存器检查地址以确定在步骤608中是否存在与系统读操作相关联的数据字。如果否,则在步骤610中在系统读操作的关联地址处从存储体读取数据字。如果步骤608的结果为是,则在步骤618中从e2寄存器读取数据字。如果步骤604的答案返回是,则从管线614读取数据字。如果步骤606的答案为是,则在步骤616中从e1寄存器读取数据字。在不脱离本公开的教导的情况下,本领域普通技术人员可以认识到用于系统读操作的其他过程流程。

系统读过程流程600可以包括附加步骤。在步骤610之后,比较逻辑可以在步骤612中确定是否在预定的错误预算内读取了来自存储体的系统数据字。如果从存储体输出的数据字包含错误,则可以通过ecc校正这些错误。如果从存储体输出的数据字包含的错误多于预定错误预算所允许的错误,则在步骤619中也可以校正数据字并将其存储在e1寄存器中。以这种方式,e1寄存器可以尝试将数据字重新写回存储体,以便在未来的读操作中可以在预定的错误预算内读取数据字。校正的数据字和关联地址将被存储在e1寄存器中。

图7是示出第一级动态冗余寄存器的存储器设备的实施例的框图。图7示出了这里描述的示例性e1寄存器700,其包括物理地址解码器702,cam704,多路复用器706,ram708,状态逻辑710和控制逻辑712。本领域普通技术人员将认识到,e1寄存器700是示例性的,并且包括诸如cam704的特征,这些特征对于实现本公开的教导不是必需的。此外,e1寄存器700传送控制信号,以便内部地和与诸如管线体和e2寄存器的存储器设备的组件通信时保持操作的一致性。在不脱离本公开的教导的情况下,可以修改这样的控制信号。

物理地址解码器702耦合到cam704,多路复用器706和控制逻辑712。物理地址解码器702从控制逻辑712接收地址输入。物理地址解码器702使用地址输入来确定cam704和ram708内的适当物理地址,以执行数据操纵操作,例如读和写。物理地址解码器702使用解码信号选择cam704内的条目。物理地址解码器702还可以使用到多路复用器706的解码信号来选择ram708内的条目。

在一个实施例中,物理地址解码器702可以将来自控制逻辑712的指针作为输入。来自控制逻辑712的不同指针指示用于将数据写入cam704和ram708或从cam704和ram708读取数据的可用地址,或者可以使用其他指针。例如,来自控制逻辑712的指针可以跟踪cam704和ram704内的最低开放地址。因此,e1寄存器700跟踪用于存储新数据的地址。来自控制逻辑712的指针还可以跟踪cam704和ram708内最早存储的数据。因此,可以在先进先出(fifo)的基础上尝试重写操作。在不脱离本公开的范围的情况下,本领域普通技术人员可以使用用于在e1寄存器700内寻址数据和选择用于数据操纵操作的数据的其他方案。

cam704耦合到多路复用器706。cam704将来自物理地址解码器702的输入解码信号作为输入。cam704还将关联地址作为输入,该关联地址可以从管线结构的输入寄存器、延迟寄存器或验证结果寄存器接收。cam704还将从控制逻辑712接收的诸如读、写或搜索信号的控制位作为输入。cam704还将来自状态逻辑710的其他控制位作为输入。

关联地址信号指示存储体内的地址。通常从输入寄存器、延迟寄存器或验证结果寄存器接收关联地址信号。因此,e1寄存器700接收存储体内的地址,其中应该验证或写入数据字。e1寄存器700还可以从输入寄存器接收关联地址以搜索具有可以验证的匹配行地址的字。cam704通常将来自延迟寄存器或验证结果寄存器的关联地址写入其自身,以便稍后可以使用关联地址进行重写或验证操作。

状态信号(例如有效位)指示cam704内的物理地址是否包含用于数据操纵操作的有效数据。cam704可以从状态逻辑710接收状态信号。

读信号指示cam704应输出关联地址,ram708应输出相应的数据字。cam704可以使用解码信号和读取信号来输出存储在ram708中的数据字的关联地址。例如,cam704可以输出数据字的关联地址到写寄存器。以这种方式,写寄存器可以在时钟周期中写入来自e1寄存器的数据,否则在该期间它将处于不活动状态。

写信号指示关联地址应存储在cam704内,并且相应的数据字应存储在ram708中。例如,cam704可以使用关联地址信号,解码信号和写信号将关联地址写入cam704内的物理地址。在一个实施例中,这可能因为管线结构内发生的行地址改变而发生,并且延迟寄存器将数据字、关联地址和控制位发送到e1寄存器700以进行存储。在另一个实施例中,因为验证操作失败或者在预定的错误预算内没有读取数据,验证结果寄存器可以将数据字、关联地址和控制位发送到e1寄存器700以进行存储。

搜索信号指示cam704应搜索自己以寻找适当地址。例如,cam704使用从控制逻辑712接收的搜索信号来搜索其自身以寻找关联地址以输出到验证寄存器。因此,如果在管线结构中发生了行改变,则cam704可以输出共享公共行地址的数据字和要从管线写入的数据字的关联地址。另外,e1ram708将与cam704内的关联地址匹配的数据字输出到管线。

cam704将关联地址输出到管线结构,例如写寄存器和验证寄存器。cam704还将关联地址输出到e2寄存器。cam704可以仅输出关联地址的一部分。例如,如果发生行地址改变并且cam704搜索其自身以寻找用于验证操作的适当地址,则cam704可以仅输出列地址,因为行地址可以是已知的。cam704还将匹配信号输出到多路复用器706。匹配信号指示数据字的ram708内的物理地址,其对应于cam704内的关联地址。当从ram708读取数据字时,可以使用匹配信号。

多路复用器706将来自控制逻辑712的读取、写入、搜索信号作为输入。多路复用器706还将从物理地址解码器接收的输入解码信号作为输入。多路复用器706还将来自cam704的匹配信号作为输入。然后,多路复用器将选择信号发送到ram708以进行数据操纵操作。如果多路复用器706接收到读信号,则多路复用器706通常将解码信号发送到ram708,因为解码信号指示ram708内的物理地址用于读取操作。如果多路复用器706接收写信号,则多路复用器706通常将解码信号发送到ram708,因为解码信号指示ram708内的物理地址用于写操作。如果多路复用器706接收搜索信号,则多路复用器706通常将匹配信号发送到ram708,因为匹配信号指示ram708内的物理地址用于输出数据字。

ram708将来自多路复用器706的选择信号作为输入。ram708还将从管线结构接收的数据字作为输入,例如来自延迟寄存器或验证结果寄存器。ram708还将从控制逻辑712接收的读和写信号作为输入。来自多路复用器706的选择信号指示ram708内的物理地址用于执行诸如读或写操作的数据操纵操作。数据字信号指示用于存储在ram708内的数据字。读信号指示物理地址信号是否应该用于读取操作,使得应该从ram708读取数据并输出到管线结构或e2寄存器。写入信号指示是否应该将选择信号用于写入操作,使得数据字信号应该被写入ram708。ram708通常包括诸如sram的易失性存储器,但是可以包括诸如stt-mram的非易失性存储器。

状态逻辑710包括驱动控制逻辑710内的地址选择的硬件逻辑。状态逻辑710将来自管线结构和e2寄存器的控制信号作为输入。控制信号可以包括先前讨论的rowchg标志。管线结构还可以将失败计数位发送到状态逻辑710。在一个实施例中,在状态逻辑710接收设置为0的失败计数位的情况下,状态逻辑710将与数据字相关联的有效位更新为无效。也就是说,因为从验证结果寄存器接收的控制信号指示验证操作通过,所以e1寄存器700使与数据字相关联的条目(关联地址,数据字,任何关联控制位)无效。状态逻辑还可以将不活动信号作为输入,所述不活动信号指示存储体可以在随后的时钟周期期间变为不活动。因此,e1寄存器应输出数据字至写寄存器以进行重写操作。状态逻辑710还可以从e2寄存器接收控制信号。例如,状态逻辑710可以接收指示e2寄存器准备好用于新数据字的信号。状态逻辑710还可以从物理解码器702接收解码信号。解码信号将指示正在更新的e1寄存器700内的一个或更多个条目。

状态逻辑710发送状态信号。状态逻辑710在内部和外部发送状态信号。状态逻辑710将状态信号发送到控制逻辑710。状态逻辑710还可以将状态信号(例如失败计数位)发送到管线结构和e2寄存器。因此,来自状态逻辑710的控制信号可用于维持e1寄存器700内和管线结构内的操作的一致性。

控制逻辑712包括用于确定要在cam704和ram708上执行的操作的硬件逻辑。控制逻辑712还包括用于将地址信号输出到物理地址解码器702的硬件逻辑。控制逻辑712将来自状态逻辑710的状态信号作为输入。状态信号通过控制逻辑712驱动地址的选择。例如,状态信号可以指示应该在cam704和ram708上执行写操作。然后,控制逻辑可以将指针递增到下一个地址,指示cam704和ram708内的空地址,用于写入关联地址和数据字。从控制逻辑712输出的地址信号可以包括由物理地址解码器702解码的指针,以选择cam704或ram708内的适当物理地址以执行数据操纵操作。从控制逻辑712输出的地址信号也可以输出到管线以指示e1寄存器700内的物理地址。

以这种方式,e1寄存器700可以将数据字、其关联地址以及其在e1寄存器700内的物理地址发送到管线结构。e1寄存器700内的物理地址可用于在验证或重写操作发生之后更新e1寄存器700的控制位。例如,如果重写操作失败,则可以使用e1寄存器700内的物理地址来更新e1寄存器700内的失败计数位。

本领域普通技术人员将理解,关于图7公开的特定控制信号、逻辑和结构仅仅是示例性的,并且示出了e1寄存器700的许多可能实现之一。e1寄存器700的其他实现可以结合本公开的教导使用。

图8是本公开的存储器设备的实施例的框图,其示出了最后一级动态冗余寄存器。图8示出了这里描述的示例性e2寄存器800,其包括cam/ram/enbl/指针块802,多路复用器816,e2ram818以及物理y-多路复用器832,灵敏放大器834,纠错码位836,写寄存器838和控制逻辑840。本领域普通技术人员将认识到e2寄存器800是示例性的,并且包括诸如ram存储体fc814之类的特征,这些特征对于实现本公开的教导不是必需的。此外,e2寄存器800传送控制信号,以便内部地和与诸如管线体、存储体和e1寄存器的存储器设备的组件通信时保持操作的一致性。在不脱离本公开的教导的情况下,可以修改这样的控制信号。

cam/ram/enbl/指针块802包括物理地址解码器804,地址cam806,ram更新标志807,ram使能808,rame2失败计数810,使用ram计数812和ram存储体fc814。因此,块802包括包含数据位的数据存储元件。块802用于存储控制位和数据字的关联地址。

物理地址解码器804从控制逻辑840接收地址输入。如关于e1寄存器和图7所解释的,物理地址解码器804使用地址输入来确定用于分别将关联地址和数据字写入cam806和ram818的物理地址。物理地址解码器804将解码信号输出到cam806和多路复用器816。此外,物理地址解码器804可以将解码信号输出到物理y-多路复用器832。

cam806存储数据字的关联地址。如关于e1寄存器和图7所解释的,cam806可以将各种控制信号和关联地址作为输入。然后,cam806可以将关联地址写入其自身或者确定ram818内的适当物理地址以匹配数据字。通常,这种数据字将被输出到例如管线体或存储体。

ram更新标志807包括用于确定是否应该在ram818内更新关联数据的控制位。例如,从控制逻辑840接收的控制信号可以指示应该基于新数据字更新ram818的条目。因此,ram更新标志807提供了跟踪在不可能立即更新数据字的情况下应该更新的数据字的机制。

ram使能808包括指示e2ram818是否包含有效数据字的控制位。因此,ram使能808可以要求将所有位设置为1,例如,以提供严格的机制来确保ram818包括有效数据。ram使能808可以输出到控制逻辑840,使得控制逻辑可以跟踪块802和ram818内的有效数据。本领域普通技术人员将认识到,可以使用其他方案来确保数据字的可靠性。例如,数据字的多个副本可以保持在ram818中并且基于投票方案来选择。在另一种方案中,可以在e2寄存器800内执行比在存储体中更严格的纠错码(ecc)方案。在另一种方案中,ram818指向主存储器内用于存储数据字的特定地址,而不是将数据字存储在e2寄存器800本身内。

rame2失败计数810表示数据字未能写入e2ram818的次数。例如,在一个实施例中,ram818可以包括非易失性stt-mram。在那种情况下,e2寄存器800可以写入ram818直到写操作成功,以便维持e2寄存器800内的可靠性。因此,e2失败计数表示数据字未能写入ram818的次数。rame2失败计数810可以输出到控制逻辑840,使得控制逻辑840可以输出适当的地址以用于写入ram818。

使用ram计数812表示e2ram818中已经使用的物理地址的次数。e2寄存器800可能希望跟踪ram818中的特定物理地址已被使用的次数。例如,已经在ram818内的特定物理地址上发生读取操作,发生写入操作或者两者都发生的次数。

ram存储体fc814指示数据字未能写入存储体的次数。例如,e2寄存器800可能希望跟踪来自e2寄存器800的写操作未能写入存储体的次数。这可能是有用的,因此仅尝试了所需数量的重写操作。框802的具体组件是示例性的,并且可以在不脱离本公开的教导的情况下进行修改。例如,本领域普通技术人员将认识到ram存储体fc814是可选的,并且提供用于控制对存储体的重写尝试次数的机制。

多路复用器816耦合到cam/ram/enbl/指针块802和e2ram818。多路复用器816将来自物理地址解码器804的指示e2ram818内的物理地址的解码信号和来自cam806的指示e2ram818内存在匹配的匹配信号作为输入。因此,如关于图7的e1寄存器700所解释的,e2ram818可以执行读或写操作。如果e2ram818包括mram,则可以基于rame2失败计数810多次尝试写操作。在另一个实施例中,在对e2ram818内的物理地址进行预定次数的写入尝试之后,使用ram计数812可以操作以指示应当选择e2ram818内的另一个位置用于写操作。

e2ram818包括ram数据820,ram地址822,ram使能824,使用ram计数826和存储体fc830。e2ram818可以包括易失性或非易失性存储器。在一个实施例中,e2ram818包括诸如mram的非易失性存储器,使得可以在断电期间保存内容。

ram数据820包括数据存储元件,其包括存储从e1寄存器接收的数据字的数据位。ram地址822存储用于存储在ram数据820内的数据字的存储体内的关联地址。例如,cam806可以存储与ram地址822的关联地址。ram使能824存储与ram使能808相同的使能位。使用ram计数826存储与使用ram计数812相同的使用计数。存储体fc830存储与ram存储体fc814相同的故障计数。因此,包括易失性存储器(例如,sram)的块802可以备份到非易失性存储器(例如,mram)。

类似于关于图4给出的解释,y-多路复用器832允许在ram818上执行读和写操作。灵敏放大器824用于读取ram818。ecc块836允许在ram818上进行纠错。写寄存器938可以包括用于搜索写寄存器内容的cam。写寄存器838从e1寄存器接收数据字和地址。写寄存器838还与e2控制逻辑840通信,以便例如在写寄存器838准备好来自e1寄存器的新数据字时发送就绪e2就绪信号。

控制逻辑840包括硬件逻辑。控制逻辑840确定要在e2寄存器800上执行的适当操作(诸如读、写和搜索)。控制逻辑840还确定地址。如先前结合图7所解释的,控制逻辑840可以使用许多不同的寻址方案。在一个实施例中,控制逻辑840使用指针来确定块802和ram818内的物理地址以写入数据字。控制逻辑840还可以与存储器设备的其他组件通信,包括管线体、存储体和e1寄存器。例如,控制逻辑840将e2标志发送到e1寄存器以指示e2寄存器800可以接收新的数据字到写寄存器838。

应当认为,以上描述和附图仅是对特定实施例的说明,其实现了本文描述的特征和优点。可以对特定工艺条件进行修改和替换。因此,不应将本专利文件中的实施例视为受前述描述和附图的限制。

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