冗余存储器单元在操作寿命期间的动态启用的制作方法

文档序号:13742062阅读:217来源:国知局
冗余存储器单元在操作寿命期间的动态启用的制作方法

本申请总体涉及固态半导体存储器,并且更具体地涉及此类存储器的可靠性。



背景技术:

固态半导体存储器普遍存在于许多类型的电子系统,从大规模的计算系统和大量数据存储(例如,磁盘替代)应用到小规模的控制器和传感器。对于固态存储器可实现的每位低成本已使现代的电子系统能够在广泛应用中实施和执行复杂计算和控制功能。

存在许多类型的半导体存储器。动态随机存取存储器(dram)和静态ram(sram)存储器提供了高密度存储和快速访问,但是由于它们的内容在掉电时丢失而具有易失性。相应地,dram和sram常作为数据存储器使用。非易失性存储器技术包括电可擦可编程只读存储器(eeprom)(实现为“闪存”或非闪存擦除存储器)、掩模可编程只读存储器(rom)、一次性可编程(otp)rom、和铁电存储器(fram)。在现代电子系统中,非易失性存储器常用作程序存储器和大量数据存储(例如,固态磁盘)。

对于这些技术中的每一个增加的存储器密度已使得在较大规模的集成电路中大量的存储器容量实现,诸如包括现代复杂微处理器、微控制器、数字信号处理器和其他大规模逻辑电路的较大规模的集成电路。例如,所谓“片上系统”(soc)通常包括各种技术的嵌入存储器以作为程序和数据存储器。这些存储器资源能占用微控制器或soc器件的芯片面积的相对大的分数。这种手段使得由于在嵌入的存储器中的缺陷造成的收得率损失特别昂贵。通过缩小半导体器件特性来增加存储器密度的愿望提高了收得率压力,尤其对存储器阵列。

相应地,无论是嵌入在大规模集成电路(诸如soc)还是以独立存储器器件的形式的许多半导体存储器包括冗余存储器单元,这些冗余存储器单元可以在制造测试时被启用以在主阵列中逻辑地替代故障的存储器单元。这些冗余单元通常被布置为与主存储器阵列相邻的一个或更多个附加的列,以及这些列的必要的读取/写入电路。另一种方法提供存储器单元的一个或更多个冗余行;在这种情况下,可能不需要附加的感测放大器和其他的读取/写入电路。在任一情况下,存储器被配置为在制造测试中识别一个或更多个故障的单元时启用冗余单元。通常通过在存储器中使保险丝熔断或编程非易失性配置寄存器,启用冗余单元。

在整个集成电路的操作寿命,半导体存储器也容易受单元故障的影响。在一些情况下,诸如在dram存储器中,故障可以是“软”故障,在“软”故障中,单元在读取时可能偶尔地返回错误数据,但是然后在其剩余的寿命适当地起作用。由于物理机制随时间发生,通常在特定的单元处的物理缺陷或污染物的位置处,通常导致“硬”故障(其中单元永久的丢失保持数据的能力)。

相应地,一些存储器包括错误校正能力,以校正在整个器件的操作寿命发生的这种错误。通常通过将每个数据字存储为编码的“符号”来提供错误检测和校正,其中符号中的位数大于数据字本身中的位数,诸如,其具有存储在阵列中的附加列中的附加位。依靠特定的错误检测和校正技术,对过度指定的符号的解码可以提供正确的数据字,即使该符号的数据位是错误的。错误检测和校正水平可以从简单的奇偶校验变化到对每个数据字提供的校验总和,直到更复杂的非系统码。

对于fram器件的情况而言,长期可靠性测试表明fram单元随时间稍微易受去极化影响。在整个器件寿命,这种去极化反映在数据保持故障中。与1晶体管1电容器(1t-1c)fram单元比较,2晶体管2电容器(2t-2c)fram单元不易受这种类型的数据保持故障影响,因为2t-2c单元将数据作为互补的极化状态存储在其两个电容器上。2t-2c单元的互补极化状态当被感测时被反映为差分信号,提供比1t-1c单元更大的读取边限,其通过比较铁电电容器的极化状态与参考电平来读取。1t-1cfram存储器具有接近两倍于2t-2cfram的位密度,但是其降低的读取边限反映在更弱的数据保持性能中,这限制了1t-1cfram在一些数据关键型应用中的使用。



技术实现要素:

在所描述的示例中,半导体存储器诸如铁电随机存取存储器(fram)包括冗余存储器单元和错误检测/校正能力二者。冗余存储器单元不需要在制造时启用,而是可用于在器件的操作寿命期间启用。当错误检测/校正逻辑在存储器的系统操作期间检测到检索符号中的不可校正错误时,与符号中的错误位对应的故障单元诸如通过附加的读取/写入操作进行确定,并且启用一个或更多个冗余存储器单元以逻辑地替代故障单元。

示例实施例提供了一种半导体存储器以及其操作方法:提供了对在器件的操作寿命期间发生的位故障的数量的改进容限;可以用相对较少开销的电路实现;并且能够在数据保持敏感型应用中使用1t-1cfram存储器。

附图说明

图1是根据一个实施例构造的半导体存储器的框图形式的电气图。

图2是根据一个实施例的图1的存储器的存储器阵列的框图,其说明了在具有冗余单元的主阵列中的单元的替代的示例。

图3是根据一个实施例的图1的存储器的操作的流程图。

具体实施方式

本说明书描述了如在半导体存储器(诸如,铁电随机存取存储器(fram))中实现的一个或更多个实施例,其中那些实施例是特别有益的。然而,示例实施例的概念也有利地适用于其它实施方式,诸如若干技术中的任何一种的存储器,无论作为独立存储器器件实现还是在较大规模集成电路中作为嵌入式存储器资源实现。

图1说明了根据一个实施例构造的存储器10的架构。如上所述,存储器10的具体布置和实现可能有很大的不同,诸如,在一个较大规模集成电路中的一个或更多个存储器阵列(例如,微处理器或微控制器),或作为独立存储器集成电路实现。此外,根据该实施例的存储器10可以根据若干存储器技术中的任何一个构造,若干存储器技术包括易失性存储器技术(诸如动态随机存取存储器(dram)或静态随机存取存储器(sram))和非易失性存储器技术(诸如电可擦可编程只读存储器(eeprom)(作为“闪存”或非闪存擦除存储器实现)、掩模可编程只读存储器(rom)、一次性可编程(otp)rom、和铁电存储器(fram))。如上所述,当应用于fram时,这个实施例是尤其有益的,特别是通过促进在可靠性敏感型应用中使用1t-1cfram单元。

在图1的架构中,存储器10包括在存储单元阵列20中以行和列布置的存储器单元。图1中示出存储器单元阵列20的单一实例,但是存储器10可以包括多个存储器单元阵列20,每个存储器单元阵列与存储器10的地址空间内的存储器块对应。

在图1的示例中,阵列20包括存储器单元的行和列,其中,在相同列中的单元共享一条或一对位线,这取决于位单元结构,且其中,在相同行中的单元共享用于将选定行中的单元耦合到那些位线的字线中的一条。行解码器22接收指示要访问的阵列20中的一行单元的行地址值,并激活与该行地址值对应的字线。读取/写入电路24以传统的方式构造,诸如以包括若干感测放大器和写入电路,其每个耦合到一列的位线。列解码器28控制列选择电路26以根据列地址值(下面将进一步详细描述)选择读取/写入电路24的子集,因此选择所选行内的特定单元,其包含存储在由其行地址部分和列地址部分形成的存储器地址处的符号。

替代地,存储器10可以根据“交叉存取的”架构构造,其中,提供比列更少的读取/写入电路24。在这样的情况下,列选择电路26根据列地址选择哪些位线要耦合到读取/写入电路24。各种行和列架构(无论是非交叉存取的(如上所述)或交叉存取的,还是具有某些其他的布置)关于这些实施例是有用的。

根据这个实施例,阵列20包括足够数量的存储器单元,每个存储器地址检索的位的数量大于所需数据字中的位的数量,其中,附加的位用于执行错误检测或错误校正。为了这个描述的目的,术语“错误校正编码”或“ecc”指的是错误检测和错误校正技术二者之一或二者。错误校正技术必然包括错误检测。

错误校正编码(ecc)将m位的给定数据字编码为表示该数据字的n位(n>m)的符号。附加的n-m位提供了检测符号的任何位中是否存在错误的能力,并且对于许多码,提供了校正符号中一个或更多个错误位的能力。存在多种ecc码,诸如奇偶校验位、校验总和、循环冗余校验、卷积码和分组码(如hamming(汉明)码、reed-solomon码)。对于半导体存储器,ecc码通常是系统码,因此数据字(例如,有效负载)与单独的校验位(ecc位)组合被嵌入符号中。可以替代地使用非系统码,在非系统码中,数据字没有被嵌入到符号内,但是可以只在解码整体符号后被发现。某些ecc码仅检测错误,因为他们只能够检测错误,但不能够校正错误。其他的ecc码校正错误,其允许校正在检索的符号中的一个或更多个错误位。通过ecc码可校正的错误位的数量由特定的校正错误码以及在每个符号中的超过m位的编码的数据字的n-m个码位确定。

图1显示的架构与系统码对应,其中,主阵列部分20a存储数据字,并且ecc部分20e与存储这些数据字的ecc位的存储器单元的若干列对应。相应地,存储器阵列20中的一行单元的检索检索在主阵列部分20a的该行中的一个或更多个数据字,以及来自在那些数据字的该相同行中的部分20e的相应ecc位。这些来自部分20e的ecc位由读取/写入电路24感测,且如果由列选择26选择则这些来自部分20e的ecc位沿着对应的数据字作为符号转发到ecc编码器/解码器30。

ecc编码器/解码器30可以被构造为常规逻辑(如,可编程逻辑、半定制逻辑电路或定制逻辑电路),其根据可应用的ecc码能够将数据字编码到符号中并能够将符号解码到数据字中。ecc编码器/解码器30可以在存储器10的架构中整体地执行,如由图1所建议的,或替代地,可由在集成电路中的别处的逻辑电路实现并执行,包括由在较大规模的集成电路中的处理器或逻辑电路实现并执行。

在读取环境下,ecc编码器/解码器30将符号解码以确定是否存在任何错误位。如果不存在,与检索的符号对应的数据字在输入/输出线i/o上被转发到期望的目的地。如果实施错误校正码,并且如果错误位的数量未超过码的可校正的数量,则ecc编码器/解码器30校正符号中的错误位并在输入/输出线i/o上转发数据字。如果应用错误检测码的ecc编码器/解码器30检测到错误,或者如果错误位的数量超过错误校正码的可校正的数量,则ecc编码器/解码器30发出故障、设置标志或发出另一个适当的通知。

相反地,ecc编码器/解码器30从输入/输出线i/o接收数据字形式的输入数据,并且将那些输入数据字编码到被写至主阵列部分20a和ecc部分20e的符号中。

根据这个实施例,存储器10另外包括冗余存储器单元,其可以有选择地被启用以替代存储器10的地址空间中的阵列20中的存储器单元。在图1的架构中,这些冗余存储器单元布置在两个冗余列250、251中。替代地,只有单个冗余列250或大于两个这种列可以被部署。冗余列250、251与冗余读取/写入电路24r和冗余列选择26r相关联,并且因此以与读取/写入电路24和列选择26类似的方式耦合到ecc编码器/解码器30。冗余列选择26r接收来自列解码器28的信号,其指示冗余列250、251中的任一个、二者、或没有冗余列250、251转发至ecc编码器/解码器30的选择。

替代地,可以以存储器单元的一个或更多个冗余行的形式在存储器10中提供冗余存储器单元。在该替代的布置中,当一行存储器单元的替代被启用时,行解码器22会被扩展以驱动冗余行的字线。如在图1显示的列冗余的情况下,行冗余以这种方式消除了对附加的读取/写入电路和列选择电路的需求。一些列冗余和行冗余技术是已知的。

在传统的存储器中,无论是在大规模集成电路(诸如soc)中的嵌入式的存储器还是独立存储器器件,通常仅实现错误校正编码或仅实现冗余。更具体地,如在集成电路组装成其末端系统应用之前的情况,冗余技术通常在制造测试时被启用以替代计时起点缺陷位、行或列。

然而,根据这些实施例,存储器10中的冗余与ecc电路(和对应的附加存储器单元)组合实现,其中,在存储器10的寿命期间在其系统应用中,ecc和冗余协作操作。由ecc和冗余单元的组合提供的动态冗余扩展存储器10的错误校正能力。该扩展的可靠性关于存储器技术特别有用,诸如,fram单元和其他的非易失性储存器,其在整个操作寿命易受数据保持退化的影响。

如图1所示,在这个实施例中,ecc编码器/解码器30耦合到冗余控制逻辑32。在其一般操作中,ecc编码器/解码器30能向冗余控制逻辑32指示其错误校正解码的结果,特别地指示针对具体的存储器地址,在从阵列20读取的符号中是否存在一个或更多个错误位。如下将进一步详细描述的,该信号可以指示错误位的发生,即使它是可校正的,或可被布置以仅指示在该符号中的不可校正的错误的发生。

冗余控制逻辑32可以作为逻辑电路实现,诸如,可编程逻辑、或定制或半定制逻辑,以将存储器地址映射到冗余存储器单元,诸如在传统的存储器中执行的,其中,在制造测试(即,在将集成电路组装成其系统应用之前)时启用冗余。然而,根据该实施例,冗余控制逻辑32包括某些决策制定逻辑,其用于具体地,响应于如上所述来自ecc编码器/解码器30的信号,确定是否启用冗余存储器单元;在传统的存储器中,这个决策制定逻辑通常被嵌入到自动测试设备中,以执行存储器测试。该逻辑的操作在下文进一步详细描述。针对具体的实施方式,通过冗余控制逻辑32的适当的程序指令或冗余控制逻辑32中的逻辑电路以合适的方式执行这些功能。

此外,在该实施例中,如在传统的能够进行冗余的(redundancy-capable)存储器中,冗余控制逻辑32包括用于存储地址信息的一些非易失性存储器能力,该地址信息与最初指代主阵列20a中的单元的哪些存储器地址替代地指代在冗余列250、251中的冗余单元有关。在存储器阵列20是fram单元的布置的情况下,在冗余逻辑控制32中的非易失性存储也可以由fram实现。例如,存储器阵列20中的fram单元可以是1t-1c类型,而在冗余控制逻辑32中的是2t-2cfram单元。替代地,可以使用其他类型的非易失性存储。

如上所描述的,冗余单元在该架构中作为列25被布置。冗余控制逻辑32因此接收存储器地址的列地址部分,并且如果冗余单元替代在存储器阵列20中的单元,则冗余控制逻辑32将该列地址映射到合适的冗余列250、251的物理地址,并且应用该映射的物理地址到线ca_map上的列解码器28。列解码器28发出合适的控制信号,使得列选择26和冗余列选择26r选择并转发映射的地址所指代的存储器阵列20和冗余列25的列。相反地,如果进来的列地址未映射到冗余列250、251,则冗余控制逻辑32将接收的列地址转发到线ca_map上的列解码器28,响应于此,列解码器28发出合适的控制信号到列选择26以选择接收的列地址所指代的存储器阵列20的列。

在图1的架构中,冗余列250、251分别被划分为四个分区,以允许在存储器阵列20中的单元的替代的附加的灵活性。虽然可选的,但是该划分允许单个冗余列25替代阵列20的四个不同列中的单元,只要故障的单元在不同的行地址段中(在该示例中为四分之一阵列段)。因此,如图1显示,部分行地址被应用到冗余控制逻辑32中,其中,该行地址部分指示当前存储器地址所指向的行地址段。对于该四个分区的示例,这个行地址部分可以是行地址的两个最高有效位。行地址的该部分包括在由冗余控制逻辑32执行的映射中,以确定是否冗余列250、251之一将被选择用于被访问的存储器地址。

图2说明了该划分的冗余的示例,该示例针对冗余列251替代存储器阵列20的四个不同列中的单元。在该示例中,在冗余控制逻辑32中映射冗余列251的顶部分区251[0],以替代主阵列部分20a中的列a的部分20[a]。具体地,该部分20[a]存在于阵列20的最上面的行地址段中,与行地址00xx…xx对应(假设逻辑地址和阵列20的物理行之间的对应关系)。对于与行地址01xx…xx对应的行地址段,冗余列251的分区251[1]替代主阵列部分20a中的不同的列c的部分20[c]。对于与行地址10xx…xx对应的行地址段,冗余列251的分区251[2]类似地替代主阵列部分20a中的列b的部分20[b]。根据该实施例,由冗余的列250、251的分区替代的列分区可在主阵列20a中或在ecc部分20e中;在图2的示例中明显的是,对于与行地址11xx…xx对应的行地址段,由冗余分区251[2]替代ecc部分20e中的列d的部分20[d]。

如上所述,这些实施例的冗余技术针对后面的寿命故障。由于这些故障趋向为在现代非易失性存储器中的单个位故障(例如数据保持故障),而不是满行或满列故障,冗余列250、251的划分是特别有益的,允许更大数量单元故障的冗余替代并且因此显著改进器件的可靠性。

根据这些实施例,冗余列25的划分(和替代地如果被实施则是冗余行的类似的划分)在存储器架构中是一个选择。此外,如果实施这种划分,在每个冗余列和行中分区的数量可能从图2显示的四个分区变化,其中,实施较少的或较多的分区。在一个示例中,512行的存储器阵列的冗余列可以被划分成每32行的16个分区。在任何特定的实施方式中的划分技术可以根据结合实施期望的划分所需的开销电路考虑的所涉及到的特定存储器技术的可靠性性能进行选择。针对其具体的实施方式,冗余存储器单元被布置以进行优化。

图3是根据一个实施例的存储器10的操作的流程图。如上面所提到的,结合涉及其存取的存储器10中及其外部的其他的外围电路,冗余控制逻辑32被构造或编程以执行关于该实施例所描述的功能中的一些或所有。根据这些实施例,存储器10的这个操作发生在该正常系统使用期间,而不是作为制造或其他测试序列的部分。相应地,在图3的操作之前,存储器10将在其制造中经过充分的测试,并且其中存储器10被实现的集成电路将被安装或以其他方式组装在其系统应用中,并且对这些操作性能之前的一段时间将已操作。

在过程40中,由外部功能(诸如微处理器或处理器核心)存取存储器10,以将数据写入某存储器地址处的存储器阵列20。作为该过程40的部分,ecc编码器/解码器30根据使用的ecc码编码该输入数据,并且编码的符号被写入该地址处的阵列20中。对于上面描述的示例,其中,使用系统的ecc码,符号的数据字将被写入主阵列部分20a中,并且相应的ecc位将被写入ecc部分20e中。在该过程40中的将输入数据写入阵列20通常将写入存储器10的地址空间中的许多(如果不是全部)地址的数据作为脉冲串(burst)或块,或者以与其他存储器操作交叉存取的分布方式。根据该实施例,其中将数据写入存储器阵列20的具体的方式不是特别重要的,只要编码的数据被存储用于阵列20的一些存储器地址。

在过程42中,执行在具体地存储器地址处的存储器阵列20的读取。在该系统码示例中,由于以ecc符号的形式存储数据,过程42涉及从与存储器地址对应的阵列20的单元检索的符号的解码,以读取来自主阵列部分20a的符号的数据字部分和来自ecc部分20e的ecc位。在由ecc编码器/解码器30执行的解码操作确定没有错误存在于检索的符号中,或错误位的数量不大于使用码的可校正的数量(决定43返回“否”结果)时,过程42的读取是成功的,并且从检索的符号解码的数据字(其中在ecc解码中校正任何错误位)在输入/输出线i/o上被转发到期望的目的地。存储器10的操作然后以正常方式继续,其中,在处理器核心或在系统中的其他存取功能的控制下,如所期望的执行写入(过程40)和读取(过程42)。

然而,根据该实施例,如果在过程42在存储器地址的读取中执行的ecc解码确定不可校正的错误存在于如从该地址的阵列20检索的符号中,更具体地,因为解码检测到错误位的数量大于该码的可校正的数量(决定43返回“是”结果),在过程44中,存储器10发出对存储器存取的中断。在该示例中,在处理这种操作中涉及的系统的常用操作将被执行,诸如,通过系统存储其当前环境。根据该实施例,然后执行中断处理程序,以启用冗余存储器单元,以替代与那些错误位对应的阵列单元。

中断处理程序开始于过程46,其中,在故障存储器地址处错误的位被识别。如果解码操作能够确定在符号中的哪个或哪些位是错误的,则过程46简单的识别那些符号中的位。然而,当错误位数超过可校正的位数时,解码操作本身通常不能识别符号中的哪些具体的位是错的,否则其会容易地校正那些位。相反,解码操作仅知晓数据字不能根据检索的符号被解决。在这种情况下,附加的操作在过程46中被执行以识别与符号中的错误位对应的阵列20中的故障单元。

根据一个实施例,通过将数据状态写入在故障存储器地址处的所有单元以及从该所有单元读取数据状态,执行过程46。对此一个简单的方法是将该地址处的所有单元写入“0”数据状态,并且然后读取那些单元,以识别任何不返回“0”数据状态的单元;类似地,在该地址处的所有单元被写入“1”数据状态,并且然后被读取回,以识别任何不返回“1”的单元。替代地,其他模式(诸如,交替“0”和“1”状态)是有用的,只要每个单元针对每个数据状态被测试。由ecc编码器/解码器30应用的ecc编码在该过程46期间可以暂时地被禁用,或者写入和读取的数据模式可被调节以确保主阵列位且因此确保ecc位在两个数据状态处被测试。对应于故障存储器地址的未返回两个数据状态的那些单元因此被识别。

ecc编码器/解码器30发出从过程46得到的适当信号到冗余控制逻辑32,诸如,其中,对于故障的存储器地址的识别的故障单元的一些识别。冗余控制逻辑32在决定47中确定冗余存储器单元是否可用于一个或更多个这些故障单元。在图1的架构中,这个确定依靠识别的故障单元数量,以及冗余列250,251的合适的分区是否已经用于不同的存储器地址。依靠ecc码的强度,不是所有的故障单元需要被替代用于由ecc解码可校正的错误的符号位的数量。例如,如果错误位数量超过可校正的数量一个,则只有一个单元需要被替代用于待被正确地恢复的数据字。如果冗余存储器单元的可用性依靠阵列20内的位位置,冗余控制逻辑32可以包括充足的逻辑功能,以选择多少单元和哪些单元要替代。

如果冗余存储器单元可用于替代故障存储器地址处的一个或更多个故障单元(决定47为“是”),冗余控制逻辑32相应地在过程48中启用那些冗余单元。在该实施例中,该过程48通常会涉及在冗余控制逻辑32内的或可由冗余控制逻辑32访问的在非易失性存储器中的故障存储器地址的存储,使得接收到的逻辑存储器地址将被正确的映射以替代故障单元而指代在冗余列250,251的一个中的冗余单元。在过程50中执行来自中断处理程序的适当的返回,诸如,以恢复环境(如果可能的话,包括恢复在故障地址处的存储器20的内容),且存储器10返回其正常系统操作。

或者,如果冗余存储器单元不可用于故障单元(决定47为“否”),诸如,当冗余列25先前已经被分配给其他的存储器地址,则存储器阵列20在故障存储器地址处的读取被认为是已经发生故障。然后,针对存储器故障,其中实施存储器10的系统发出并处理合适的故障。

根据该实施例的存储器10的这种操作的各种替代是可能的。例如,决定43可以调用中断44以启用在过程42中读取的符号的解码中检测到的第一错误位上的冗余,即使该错误可以由ecc校正。其他替代的决定标准可以替代地被使用,诸如在读取精确地具有错误位的可校正的数量的符号时的替代,以避免读取的故障数据的事件。

这些实施例对固态存储器器件和嵌入式存储器提供了重要的益处,特别是对于非易失性存储器(诸如fram)。通过如果错误校正不再足以校正数据字中的错误位则启用故障存储器单元的替代,根据这些实施例在相同的存储器器件中的ecc和冗余的组合在其系统寿命期间向存储器提供扩展的可靠性。当这种能力应用到非易失性存储器(诸如fram)时,这种能力特别有益的,这考虑了在整个系统寿命去极化的铁电材料的发展趋势。例如,由这些实施例提供的扩展的可靠性可以启用1t-1cfram单元的更高位密度,尽管与2t-2c单元的相比密度,其具有固有的少的读取边限。

在所描述的实施例中修改是可能的,并且在权利要求范围内,其他实施例是可能的。

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