减少的不可校正的存储器错误

申请号 CN201480008297.4 申请日 2014-03-05 公开(公告)号 CN104969193B 公开(公告)日 2017-01-18
申请人 英特尔公司; 发明人 K.潘加; P.S.达姆勒; R.森达拉姆; S.卡瓦米; J.M.瓦克; D.里维斯;
摘要 不可校正的 存储器 错误可以通过确定用于存储器阵列的集合的逻辑阵列地址并且至少部分地基于存储器阵列的集合内的至少两个存储器阵列的逻辑 位置 将逻辑阵列地址变换成至少两个唯一阵列地址来减少。然后分别使用至少两个唯一阵列地址来 访问 至少两个存储器阵列。
权利要求

1.一种减少不可校正的存储器错误的方法,包括:
确定用于存储器阵列的集合的逻辑阵列地址;
至少部分地基于存储器阵列的集合内的至少两个存储器阵列的逻辑位置而将逻辑阵列地址变换成至少两个唯一阵列地址,其中变换所述逻辑阵列地址包括以下各项中的至少一个:
基于逻辑位置将逻辑阵列地址旋转数个位置;
将逻辑阵列地址的上线旋转逻辑位置的第一倍数,并且将逻辑阵列地址的下线旋转不同于第一倍数的逻辑位置的第二倍数;或者
向逻辑阵列地址添加逻辑位置的倍数,并且舍弃任何附加高位;以及
分别使用至少两个唯一阵列地址访问至少两个存储器阵列;
其中所述变换减少包括来自存储器阵列的集合的数据的错误校正代码字中的不可校正的错误。
2.权利要求1的方法,其中错误校正代码字至少包括分别来自存储器阵列的集合的存储器阵列的数据位;并且
至少两个存储器阵列中的公共物理位置映射到至少两个不同的错误校正代码字以减少由于使错误校正代码字过载有错误的存储器阵列的集合中的系统错误所致的不可校正的存储器错误。
3.权利要求1的方法,还包括:
使用至少两个唯一阵列地址从存储器阵列的集合检索错误校正代码字的数据;以及从存储器阵列的集合向控制器提供错误校正代码字的数据;
其中控制器校正错误校正代码字中的一个或多个错误。
4.权利要求1的方法,其中第一唯一阵列地址包括第一行地址和第一列地址;并且第二唯一阵列地址包括第二行地址和第二列地址;
其中第一行地址不同于第二行地址,或者第一列地址不同于第二列地址。
5.权利要求1至4中任一项的方法,还包括使用至少两个唯一阵列地址的第一唯一阵列地址访问存储器阵列的集合内的存储器阵列的组。
6.权利要求1至4中任一项的方法,其中至少两个存储器阵列的逻辑位置包括存储器阵列的集合内的存储器阵列的组的标识符。
7.权利要求6的方法,其中至少两个存储器阵列的逻辑位置还包括芯片标识符。
8.一种集成电路,包括:
至少包含第一存储器阵列和第二存储器阵列的存储器阵列的集合;
至少部分地基于存储器阵列的集合内的第一存储器阵列的逻辑位置将逻辑阵列地址变换成耦合到第一存储器阵列的第一唯一阵列地址的第一电路;以及
至少部分地基于存储器阵列的集合内的第二存储器阵列的逻辑位置将逻辑阵列地址变换成耦合到第二存储器阵列的第二唯一阵列地址的第二电路,其中所述第二电路执行包括以下各项中的至少一个的运算:
基于逻辑位置将逻辑阵列地址旋转数个位置;
将逻辑阵列地址的上线旋转逻辑位置的第一倍数,并且将逻辑阵列地址的下线旋转不同于第一倍数的逻辑位置的第二倍数;或者
向逻辑阵列地址添加逻辑位置的倍数,并且舍弃任何附加高位;
其中来自第一唯一阵列地址处的第一存储器阵列的数据和来自第二唯一阵列地址处的第二存储器阵列的数据包括在特定错误校正代码字中以减少特定错误校正代码字中的不可校正的错误。
9.权利要求8的集成电路,其中第一错误校正代码字包括由第一逻辑阵列地址标识的数据,并且第二错误校正代码字包括由第二逻辑阵列地址标识的数据;
第一电路将第一逻辑地址变换成标识第一存储器阵列中的特定阵列位置,并且第二电路将第二逻辑地址变换成标识第二存储器阵列中的特定阵列位置;并且第一存储器阵列和第二存储器阵列二者中的特定阵列位置中的系统错误在第一错误校正代码字和第二错误校正代码字之间分布错误以避免使第一错误校正代码字或第二错误校正代码字过载有错误。
10.权利要求8的集成电路,还包括:
向控制器提供特定错误校正代码字的数据的数据接口
其中所述控制器被配置成校正特定错误校正代码字中的一个或多个错误。
11.权利要求8的集成电路,其中第一电路包括对逻辑阵列地址的地址线重排序的电路。
12.权利要求8的集成电路,其中第一电路包括使用逻辑阵列地址和存储器阵列的集合内的第一存储器阵列的逻辑位置的至少一部分执行算术运算的电路。
13.权利要求12的集成电路,其中第二电路包括使用逻辑阵列地址和存储器阵列的集合内的第二存储器阵列的逻辑位置的至少一部分执行算术运算的电路。
14.权利要求8至13中任一项的集成电路,其中第一电路包括部分地基于编程到控制寄存器中的值对逻辑阵列地址进行变换的电路。
15.权利要求8至13中任一项的集成电路,其中至少两个存储器阵列的逻辑位置包括存储器阵列的集合内的存储器阵列的组的标识符。
16.权利要求8至13中任一项的集成电路,还包括芯片标识符输入;
其中至少两个存储器阵列的逻辑位置还包括从芯片标识符输入接收的值。
17.一种电子系统,包括
生成包括逻辑阵列地址的存储器读取命令的监控电路;以及
耦合到监控电路以响应于存储器控制命令的存储器,存储器包括:
存储器阵列的集合;
至少部分地基于存储器阵列的集合内的至少两个存储器阵列的逻辑位置而将逻辑阵列地址变换成至少两个唯一阵列地址的电路,至少两个唯一阵列地址分别耦合到至少两个存储器阵列,其中所述电路执行包括以下各项中的至少一个的运算:
基于逻辑位置将逻辑阵列地址旋转数个位置;
将逻辑阵列地址的上线旋转逻辑位置的第一倍数,并且将逻辑阵列地址的下线旋转不同于第一倍数的逻辑位置的第二倍数;或者
向逻辑阵列地址添加逻辑位置的倍数,并且舍弃任何附加高位;以及
响应于存储器控制命令从至少两个存储器阵列向监控电路提供由至少两个唯一阵列地址标识的数据的电路;
其中由逻辑阵列地址标识的数据包括在特定错误校正代码字中以减少特定错误校正代码字中的不可校正的错误;并且
监控电路被配置成校正包括特定错误校正代码字的错误校正代码字的数据中的错误。
18.权利要求17的电子系统,其中存储器是第一存储器,电子系统还包括:
耦合到第一存储器的第一芯片标识符;
耦合到监控电路的第二存储器;以及
耦合到第二存储器的第二芯片标识符;
其中第二存储器包括:
第一存储器阵列和第二存储器阵列;
至少部分地基于第二芯片标识符将逻辑阵列地址变换成用于第一存储器阵列和第二存储器阵列的行和列地址的第一电路;以及
响应于存储器控制命令从第一存储器阵列和第二存储器阵列向监控电路提供附加数据的第二电路;
其中第一存储器的电路至少部分地基于第一芯片标识符将逻辑阵列地址变换成至少两个唯一阵列地址;并且
监控电路被配置成校正包括来自第一存储器的数据和来自第二存储器的附加数据的代码字中的至少一个错误。
19.权利要求17或18的电子系统,还包括:
耦合到监控电路以与外部设备通信的I/O电路。
20.权利要求17或18的电子系统,其中电子系统是固态驱动器
21.一种减少不可校正的存储器错误的方法,包括:
获得存储器设备中的两个或更多存储器阵列的错误率;
基于所述错误率确定两个或更多存储器阵列到两个或更多代码字中的映射,其中确定所述映射包括以下各项中的至少一个:
基于逻辑位置将逻辑阵列地址旋转数个位置;
将逻辑阵列地址的上线旋转逻辑位置的第一倍数,并且将逻辑阵列地址的下线旋转不同于第一倍数的逻辑位置的第二倍数;或者
向逻辑阵列地址添加逻辑位置的倍数,并且舍弃任何附加高位;以及
对控制寄存器编程以将两个或更多存储器阵列映射到两个或更多代码字中;
其中所述映射减少两个或更多代码字中的不可校正的错误。
22.权利要求21的方法,其中编程到控制寄存器中的值将存储器设备配置成:
将具有比两个或更多存储器阵列中的其它存储器阵列更高的错误率的第一存储器阵列映射到特定代码字;并且
将具有比两个或更多存储器阵列中的其它存储器阵列更低的错误率的第二存储器阵列映射到特定代码字。
23.权利要求21或22的方法,其中所述确定和所述编程作为存储器设备上的制造测试过程的一部分执行。
24.权利要求21或22的方法,其中所述确定和所述编程在系统环境中执行。
25.权利要求21或22的方法,还包括:
从存储器设备检索数据的代码字;以及
校正数据的代码字中的至少一个错误。

说明书全文

减少的不可校正的存储器错误

背景技术

[0001] 本主题涉及半导体存储器,并且更具体地涉及通过组织错误校正代码字减少半导体存储器中的不可校正的存储器错误。
[0002] 许多类型的半导体存储器是已知的。某种存储器是易失性的并且如果移除电则将丢失其内容。某种存储器是非易失性的并且在已经移除电力之后将保留存储在存储器中的信息。一种类型的非易失性存储器是闪速存储器,其在存储器单元的电荷存储区中存储电荷。一些闪速存储器单元每单元存储信息的单个位,但是对于闪速存储器单元而言变得越来越常见的是通过将单元的阈值电压设置成存储信息的n位的2n级中的一个来存储信息的多于一个位。
[0003] 另一类型的存储器是相变存储器(PCM)。PCM利用具有非导电非晶态和导电晶态的相变材料。可以将PCM单元置于一个状态或另一个以指示所存储的值。通过跨PCM单元提供电势,PCM单元的状态可以通过测量流过PCM单元的电流来确定。PCM单元具有比关断电流高得多的接通电流。
[0004] 一些存储器技术被组织成交叉点阵列,其中存储器单元的阵列密集堆积并且单独耦合到唯一一对控制线。单独的存储器单元耦合到在一个方向上取向的一条行线(诸如字线)和在垂直方向上取向的一条列线(诸如位线)。一些存储器可以组织为交叉点阵列的阵列,其中各个交叉点阵列非常紧密地堆积但是可以包括各个交叉点阵列之间的某种电路
[0005] 一些存储器技术可以足够可靠使得对于许多应用而言没有错误校正是必要的。在其它技术中,单独的存储器单元的可靠性可能足够低使得存储器的应用可能包括冗余存储器单元并且错误校正和/或检测信息可以存储在冗余存储器单元中。一种常见形式的存储器错误校正是汉明(Hamming)码,其中包括允许校正代码字中的任何单个位错误的奇偶校验位的集合。汉明码要求n+1个奇偶校验位来保护2n位,因此6位可以用于保护32位数据字。许多其它类型的错误校正码是公知的,包括但不限于,里德所罗(Reed-Solomon)码和博斯乔赫里霍克文黑姆(BCH)码。取决于数据的页或代码字的大小、包括的错误校正码的数目和所选代码的类型,一个或多个错误可以是可校正的或者在代码字内被简单地检测。
附图说明
[0006] 合并在说明书中并且构成说明书的部分的附图图示了各种实施例。连同一般描述一起,附图用于解释各种原理。在图中:
[0007] 图1示出变换地址以减少存储器中的不可校正的错误的实施例的框图
[0008] 图2示出跨存储器阵列的阵列的代码字的位的分布的实施例的图;
[0009] 图3示出跨存储器阵列的阵列的代码字的位的分布的可替换实施例的图;
[0010] 图4是被组织以减少存储器中的不可校正的错误的电子系统的实施例的框图;
[0011] 图5是减少存储器中的不可校正的错误的方法的实施例的流程图
[0012] 图6是减少存储器中的不可校正的错误的方法的可替换实施例的流程图;以及[0013] 图7A和7B是被组织以减少存储器中的不可校正的错误的存储器的实施例的框图。

具体实施方式

[0014] 在以下详细描述中,通过示例的方式阐述大量具体细节以便提供相关教导的透彻理解。然而,对本领域技术人员应当显而易见的是,本教导可以在没有这样的细节的情况下实践。在其它实例中,公知的方法、过程和组件已经以相对高层级描述而没有细节,以便避免不必要地使本概念的各方面晦涩难懂。在描述本公开的各种实施例中使用许多描述性术语和短语。这些描述性术语和短语用于向本领域技术人员传达一般意见一致的含义,除非在本说明书中给出不同的定义。现在对附图中图示和以下论述的示例做出详细参考。
[0015] 图1示出变换地址以减少存储器中的不可校正的错误的实施例的框图。电路100可以接收用于存储器访问的地址。取决于实施例,地址可以包括标识存储器系统内的数据的字的字地址101和可以标识数据的字内的数据位的位地址102。如果在组织中访问宽于位的数据,位地址102可以标识数据的更大组(诸如字节),而不是单独的位。数据的字或代码字可以包括任何数目的数据位和专用于错误校正和/或检测的任何数目的位。数据的字可以取决于实施例而具有任何大小,并且可以取决于所使用的错误校正的类型。在一些系统中,数据的字可以跨多个存储器设备散布。虽然可以使用任何大小的代码字,但是在一些实施例中可以使用大约1024和大约4096位数据之间的代码字。在一些实施例中,可以同时访问数据的整个代码字,但是在其它实施例中,可以执行多个存储器访问以访问整个代码字。在一些实施例中,代码字可以包括可以不被同时访问的单个数据阵列内的多个数据位。在一些实施例中,阵列可以组织成允许同时访问存储器阵列内的多个位,诸如一次一行。
[0016] 单个存储器设备可以包括存储器阵列的阵列,并且数据的代码字可以跨一个存储器设备内的多个存储器阵列分布。字地址101可以包括可以对存储器阵列的集合寻址的物理地址103,和可以对存储器阵列的该集合的各个存储器阵列内的逻辑位置寻址的逻辑阵列地址104。为了说明简化的示例,存储器设备可以具有4个存储器阵列,每一个存储4位信息。可以定义包括来自两个不同存储器阵列的一位信息的两位字。在该示例中,物理地址103将为单个位长,以标识两个存储器阵列中的哪个集合被寻址,并且逻辑阵列地址104将为两位以标识存储器阵列中的哪个位置被访问。对于用以对可以存储在存储器设备中的16位数据寻址的总共4位,位地址102将为单个位以标识字内的哪个位被寻址。
[0017] 物理地址103可以由解码电路110解码,解码电路110可以基于物理地址103确定访问哪些存储器阵列。解码电路110可以具有对各种存储器阵列使能的输出,诸如第一使能线114和第二使能线116。单独的使能线114、116可以对单个存储器阵列使能,或者可以对多于一个存储器阵列使能,如所示的。
[0018] 在一些实施例中,物理地址103对存储器阵列集合的映射可以在设计时间固定,并且可以基于存储器设备内的存储器阵列的物理布置。在其它实施例中,可以编程有配置信息的控制寄存器118可以用于将物理地址103映射到存储器阵列的集合。控制寄存器118可以编程有基于各种存储器阵列的错误率的信息,以跨多个代码字分布具有较高错误率的存储器阵列以减少不可校正的错误的数目。在一些实施例中,控制寄存器118可以在制造测试过程期间、在封装之前或之后被编程。在一些实施例中,控制寄存器118可以在存储器设备已经集成到电子系统中之后、诸如在系统的制造期间,或者甚至在系统的操作期间被编程。可以利用任何类型的存储技术来构建控制寄存器118,但是在许多实施例中,控制寄存器
118可以是非易失性的,使得即使不施加电力也可以维持编程到控制寄存器118中的值。在一些实施例中,控制寄存器118可以是可一次编程的,诸如熔丝环或反熔丝环,但是其它实施例可以使用闪速存储器单元、PCM单元或可以允许数据被多于一次地写入到控制寄存器
118中的任何其它类型的非易失性存储器。
[0019] 逻辑阵列地址104可以通过变换电路变换成多个不同的阵列地址。在所示的实施例中,第一变换电路121使用代码字内的第一逻辑位置122来生成包括第一列地址123和第一行地址124的第一阵列地址。取决于实施例,第一阵列地址可以用于对可以向所寻址的代码字贡献数据位的一个或多个阵列寻址。第二变换电路125使用代码字内的第二逻辑位置126来生成包括第二列地址127和第二行地址128的第二阵列地址。
[0020] 取决于实施例,诸如第一列地址123之类的列地址和诸如第一行地址124之类的行地址可以是允许n个地址线来标识2n个可能性中的单个列或行的标准二进制地址总线,或者可以部分或完全被解码成更多线,诸如每行或列一条线。取决于实施例,分离的阵列地址可以用于对可以向所寻址的代码字贡献数据位的一个或多个阵列寻址。因此,在一些实施例中,第一列地址124和第一行地址124可以耦合到多个存储器阵列,包括存储器阵列132,并且第二列地址127和第二行地址128可以耦合到多个存储器阵列,包括存储器阵列134。来自所访问的存储器阵列的数据可以耦合到可以选择单个数据位142或多个数据位以供特定访问的复用器140。
[0021] 取决于实施例,耦合到公共阵列地址的(多个)阵列的逻辑位置可以基于包含代码字中使用的数据的存储器阵列的集合内的不同存储器阵列的物理布置、用于集合内的不同存储器阵列的不同值的任意分配,和/或可以基于编程到控制寄存器中的值。作为示例,实施例可以具有大小为1024位的字,其中字的位作为1024个不同存储器阵列中的每个存储器阵列一位而存储。存储器阵列可以分组为16个存储器阵列的64组,其中单个组的16个存储器阵列耦合到公共阵列地址。可以为每个组提供一个变换电路,因此可以存在64个不同的变换电路。64个不同的组可以被分配范围从0至63的逻辑位置,其中用于一组的逻辑位置被提供给生成用于该组的阵列地址的变换电路。分配可以以任何方式完成,尽管一些实施例可以分布逻辑位置使得不存在逻辑位置的复制。
[0022] 变换电路121可以将逻辑阵列地址104变换成基于诸如第一逻辑位置122之类的逻辑位置的阵列地址。可以使用任何类型的变换,只要不存在被单个变换电路映射到相同阵列地址的两个有效逻辑阵列地址104即可。可以使用在一些实施例中的一种类型的变换是地址线的重排序。在一个实施例中,阵列地址可以通过逻辑阵列地址104基于逻辑地址122循环移位或旋转数个位置来获得。作为使用循环移位的变换的示例,如果在逻辑阵列地址Li中存在n条线,并且由变换电路执行的移位的量为m,其可以基于(多个)阵列的逻辑位置,则阵列地址Ai可以定义为:
[0023] 。
[0024] 在另一实施例中,逻辑阵列地址104的上线可以旋转逻辑位置122的倍数以获得第一列地址123,并且逻辑阵列地址104的下线可以旋转逻辑位置122的不同倍数以获得第一行地址124。在另一实施例中,逻辑阵列地址104的线可以以不同的伪随机布置缠绕在不同的变换电路中。在一些实施例中,一些地址线可以不进行重排序。可以使用地址线重排序的任何布置,只要存在所执行的至少两个不同的唯一变换以创建逻辑阵列地址104对阵列地址的至少两个唯一映射即可。
[0025] 在一些实施例中可以使用的另一类型的变换包括在逻辑阵列地址上执行算术运算。在一个实施例中,阵列地址可以通过向逻辑阵列地址添加逻辑位置的倍数并且舍弃所生成的任何附加高位来获得。作为这样的变换的示例,阵列地址A可以通过以下等式从具有n位的逻辑地址L基于逻辑位置N计算,其中0≤N<2n,并且M为跨各种变换电路恒定的奇数:
[0026] A=(L+N×M) modulo (模) 2n。
[0027] 另一示例变换可以通过以下等式表示:
[0028] A=(L×(2N+1)+3M modulo (模) 2n。
[0029] 可以执行任何其它类型的算术运算,只要没有两个逻辑阵列地址被相同的变换电路映射到单个阵列地址即可。
[0030] 对可以向代码字贡献数据的不同阵列的阵列地址执行这样的变换可以减少不可校正的错误。虽然存储器中的一些错误由于随机制造缺陷而位于随机位置处,但是一些错误可以是系统的。系统错误可以涉及存储器阵列内的存储器单元的物理位置。这样的系统错误的原因可能是基于单元距线驱动器和电力连接所位于的存储器阵列的边缘的距离、在存储器阵列之间可能重复的掩模缺陷或其它的系统问题。取决于实施例,错误校正代码具有可以被检测或校正的有限数目的错误。如果系统错误基于单元在阵列内的物理位置,在该特定位置中,高百分比的阵列可能具有有缺陷的单元。如果没有执行地址的变换,存储器阵列的集合中的相应存储器阵列的相同物理位置可能映射到公共代码字,这可能导致超过可以校正的位数目的代码字中的数个错误,这可以称为使代码字过载有错误。通过在各种存储器阵列内分布代码字的位的物理位置,可以减少系统错误的影响,这可以减少存储器中的不可校正的错误的数目。
[0031] 在其中代码字跨多个存储器设备分布的一些实施例中,逻辑位置可以包括存储器设备的标识符,使得不同设备的相同物理位置中的存储器阵列可以接收不同的阵列地址。通过这样做,还可以缓解涉及集成电路管芯内的存储器阵列的物理位置的系统缺陷。
[0032] 图2示出跨存储器阵列200的阵列的代码字的位的分布的实施例的图。存储器阵列200的阵列可以包括任何数目的存储器设备,诸如第一存储器设备210和第二存储器设备
250。存储器设备210、250分别包括可以以各种方式分组的存储器阵列的阵列。在所示的实施例中,第一存储器设备210包括多个分区,诸如第一分区220、第二分区230和第三分区
240。第二存储器设备250也包括多个分区,诸如第一分区260、第二分区270和第三分区280。
[0033] 各种分区可以分布成存储器阵列的组,使得分区是存储器阵列的组中的组。第一存储器设备210的第一分区220包括第一组221、第二组222和第三组223。同样地,第二存储器设备250的第一分区260包括第一组261、第二组262和第三组263。诸如第一存储器设备210的第一分区220的第一组221之类的存储器阵列的组可以包括一个或多个存储器阵列,诸如第一存储器阵列224、第二存储器阵列225和第三存储器阵列226。实施例可以包括存储器设备中的任何数目的分区,其中分区包括任何数目的组,并且组包括存储器的任何数目的存储器阵列或拼。其它实施例可以使用在组织中具有层次的更多或更少层级的存储器阵列的其它组织。
[0034] 在所示的实施例中,小黑色方块指示分配给单个代码字的数据位,诸如第一存储器设备210的第一分区220的第一组221的存储器阵列225中的数据位227、第一存储器设备210的第一分区220的第二组222的存储器阵列228中的数据位229、第一存储器设备210的第二分区230的第一组的存储器阵列237中的数据位235和第二存储器设备250的第一分区260的第一组261的存储器阵列265中的数据位267。虽然所示的所有存储器阵列包括代码字的数据位,但是可以在所示出或未示出的组中、所示出或未示出的分区中、所示出或未示出的存储器设备中的其它存储器阵列可以包括在存储器阵列200的阵列中并且可以或者可以不包括所图示的代码字的任何数据。
[0035] 对于单个访问,物理地址可以标识两个或更多阵列,诸如包括黑色方块的存储器阵列。逻辑阵列地址可以标识由物理地址标识的两个或更多阵列中的逻辑位置。在所示的实施例中,逻辑阵列地址基于分区内的逻辑组号进行变换,而不管存储器阵列的组处于哪个分区或哪个芯片中。如从存储器阵列内的黑色方块的位置可以看到的,用于组内的各种存储器阵列的阵列地址相同。因此存储器阵列224和存储器阵列226中的黑色方块的位置与存储器阵列225中的黑色方块227的位置相同,因为那三个存储器阵列在第一存储器设备220的第一分区220的第一组221中。
[0036] 对于所示实施例的任何存储器设备中的任何分区的第一组中的其它存储器阵列,表示代码字的数据位的黑色方块的位置在相同位置中。因此第一存储器设备210的第二分区230的第一组的存储器阵列237的数据位235的物理位置和第二存储器设备260的第一分区260的第一组261的存储器阵列265的数据位267的物理位置与第一存储器设备210的第一分区220的第一组221的存储器阵列225的数据位227的物理位置相同。但是第一存储器设备的第一分区220的第二组222中的存储器阵列228的数据位229的位置不同。
[0037] 图3示出跨存储器阵列300的阵列的代码字的位的分布的可替换实施例的图。存储器阵列300的阵列可以包括任何数目的存储器设备,诸如耦合到芯片标识符ID0 315的第一存储器设备310,和耦合到不同的芯片标识符ID1 355的第二存储器设备350。存储器设备310、320包括可以类似于图2的存储器设备分组的存储器阵列的阵列。在所示的实施例中,第一存储器设备310包括多个分区,诸如第一分区320、第二分区330和第三分区340。第二存储器设备350也包括多个分区,诸如第一分区360、第二分区370和第三分区380。各种分区可以分布到存储器阵列的组中,使得分区为存储器阵列的组中的组。第一存储器设备310的第一分区320包括第一组321、第二组322和第三组323。同样地,第二存储器设备350的第一分区360包括第一组361、第二组362和第三组363。
[0038] 在所示的实施例中,基于分组内的逻辑组号、关于设备的分区号和设备的芯片标识符来对逻辑阵列地址进行变换。如从存储器阵列内的黑色方块的位置可以看到的,用于组内的各种存储器阵列的阵列地址是相同的,但是该位置对于所示的每一个组不同。因此如存储器阵列324和存储器阵列326中的黑色方块表示的代码字内的数据字的物理位置与存储器阵列325中的黑色方块327的位置相同,因为那三个存储器阵列在第一存储器设备320的第一分区320的第一组321中。
[0039] 但是第一存储器设备310的第一分区320的存储器阵列328中的数据字329的位置不同于存储器阵列325中的数据字327的位置,尽管它们在相同存储器设备310的相同分区320中。类似地,第一存储器设备310的第二分区330的存储器阵列337中的数据字335的位置不同于存储器阵列325中的数据字327的位置,尽管它们在相同存储器设备310的相同组中,并且第二存储器设备350的第一分区360的存储器阵列365中的数据字367的位置不同于存储器阵列325中的数据字327的位置,尽管它们在相同分区号的相同组号中,因为它们在不同的存储器设备中。
[0040] 图4是组织成减少存储器中的不可校正的错误的电子系统400的实施例的框图。监控电路401耦合到具有控制/地址线403和数据线404的存储器设备410。在一些实施例中,数据和控制可以利用相同的线。监控电路401可以包括处理器、微处理器、微控制器、有限状态机或某种其它类型的控制电路。监控电路401在一些实施例中可以执行程序指令。在一些实施例中,监控电路401可以集成在与存储器设备410相同的封装中或甚至相同的管芯上。在一些实施例中,监控电路401可以与控制电路411集成,从而允许相同电路中的一些被用于两种功能。监控电路401可以具有外部存储器,诸如随机存取存储器(RAM)和只读存储器(ROM),其用于程序存储和中间数据,或者监控电路401可以具有内部RAM或ROM。在一些实施例中,监控电路401可以使用存储器设备410以用于程序或数据存储。运行在监控电路401上的程序可以实现许多不同的功能,包括但不限于,操作系统、文件系统、存储器块重映射和错误校正。
[0041] 在一些实施例中,提供外部连接402。外部连接402耦合到输入/输出(I/O)电路405,其然后可以耦合到监控电路401并且允许监控电路401与外部设备通信。在一些实施例中,I/O电路405可以与监控电路401集成,使得外部连接402直接耦合到监控电路401。如果电子系统400是存储系统,外部连接402可以用于为外部设备提供非易失性存储。电子系统
400可以是固态驱动器(SSD)、USB拇指驱动器、安全数字卡(SD卡)或任何其它类型的存储系统。外部连接402可以用于连接到计算机或其它智能设备,诸如使用标准或专用通信协议的手机或数字相机。外部连接402可以与之兼容的计算机通信协议的示例包括但不限于以下协议的任何版本:通用串行总线(USB)、串行高级技术附件(SATA)、小型计算机系统互连(SCSI)、光纤信道、并行高级技术附件(PATA)、集成驱动电子器件(IDE)、以太网、IEEE-
1394、安全数字卡接口(SD卡)、紧凑闪速接口、存储器棒接口、外围组件互连(PCI)或PCI Express(PCI-e)。
[0042] 如果电子系统400是计算系统,诸如移动电话、平板、笔记本计算机、机顶盒或某种其它类型的计算系统,外部连接402可以是网络连接,诸如但不限于以下协议的任何版本:电气与电子工程师协会(IEEE)802.3、IEEE 802.11、电缆数据服务接口规范(DOCSIS)、数字电视标准,诸如数字视频广播(DVB)——陆地、DVB线缆和高级电视协会标准(ATSC)、以及移动电话通信协议,诸如移动通信全球系统(GSM)、基于码分多址(CDMA)(诸如CDMA2000)的协议和长期演进(LTE)。
[0043] 存储器设备410可以包括存储器阵列417、418的阵列416。地址线和控制线403可以通过控制电路411接收和解码。I/O电路412可以耦合到数据线404从而允许数据从监控电路401接收和发送到监控电路401。来自存储器阵列416的数据读数可以临时存储在读取缓冲器419中。地址变换电路413可以生成可以耦合到一个或多个存储器阵列417的第一阵列地址414和可以耦合到一个或多个存储器阵列418的第二阵列地址415。地址变换电路413可以至少部分地基于存储器阵列的集合内的存储器阵列417、418的逻辑位置将地址线403的至少一部分上的可以从监控电路接收的逻辑阵列地址变换成至少两个阵列唯一阵列地址
414、415。
[0044] 存储在存储器阵列416的阵列中的数据可以布置成包括错误校正代码的代码字。一旦从存储器阵列416的阵列读取了代码字,可以校正代码字的数据中的一个或多个错误。
在一些实施例中,可以在存储器设备410内执行错误校正。在其它实施例中,监控电路401可以使用一个或多个存储器访问命令从存储器设备410读取代码字的数据,并且然后监控电路401可以校正代码字的数据中的一个或多个错误。
[0045] 图4中图示的系统已经被简化以促进存储器特征的基本理解。许多不同的实施例是可能的,包括将固态驱动控制器用作监控电路401和I/O电路405以控制多个存储器设备410充当固态驱动器。另一实施例可以使用用于具有附加功能的监控电路401和I/O电路405的处理器,诸如驱动显示器的视频图形控制器,并且用于面向人类的I/O的其它设备可以用于实现个人计算机、个人计算机或智能电话。
[0046] 图5是减少存储器中的不可校正的错误的方法的实施例的流程图500。方法在块501处开始并且在块502处确定逻辑阵列地址。在一些实施例中,逻辑阵列地址可以是从可以耦合到存储器设备的监控电路或处理器发送的地址的部分。逻辑阵列地址可以在块503处至少部分地基于存储器阵列的集合内的至少两个存储器阵列的逻辑位置而变换成至少两个唯一阵列地址。在一些实施例中,变换可以通过对地址线重排序来执行。在其它实施例中,变换可以通过使用逻辑阵列地址的一个或多个算术运算来执行。在一些实施例中,变换还可以基于编程到控制寄存器中的值。
[0047] 唯一阵列地址可以包括行地址和列地址。阵列地址是唯一的,如果其组合的行地址和列地址不同于其它阵列地址的话。因此两个阵列地址是唯一的,如果第一行地址不同于第二行地址,或者第一列地址不同于第二列地址的话。
[0048] 在块504处,阵列地址可以用于访问存储器阵列。一个阵列地址可以耦合到存储器阵列的集合的存储器阵列的组。存储器阵列的集合内的存储器阵列的组的位置可以用作用于变换逻辑阵列地址的逻辑位置。在一些实施例中,可以在系统的多个芯片之间进行区分的芯片标识符可以用作逻辑位置的一部分。可以读取来自两个或更多存储器阵列的数据以确定包括错误校正代码的数据字并且数据字中的至少一个错误可以在块505处校正,之后流程图500在块506处结束。
[0049] 图6是减少存储器中的不可校正的错误的方法的可替换实施例的流程图600。流程图600在块601处开始并且在块602处继续确定存储器设备中的两个或更多存储器阵列的错误率。在一些实施例中,两个或更多存储器阵列的错误率的确定可以作为独立存储器设备上的在其集成到系统中之前的制造测试过程的一部分进行。制造测试可以在存储器管芯上在封装之前或其集成到封装中之后执行。在一些实施例中,多个存储器管芯可以集成到具有标识管芯在封装中的逻辑定位的芯片标识符输入的单个封装中。在其它实施例中,两个或更多存储器阵列的错误率的确定可以在存储器设备集成到系统中(诸如集成到计算机、平板、智能电话或某个其它类型的电子系统中)之后在系统环境中执行。可以测试存储器阵列以确定其在系统测试环境中或者在正常操作期间的错误率,并且测试可以发生在制造系统时,或者甚至在部署了系统之后。在一些实施例中,错误率可以基于系统的正常操作期间收集的数据,并且使其可用于帮助确定如何将两个或更多存储器阵列映射到两个或更多代码字中。
[0050] 一旦已经获得两个或更多存储器阵列的错误率,两个或更多存储器阵列到两个或更多代码字中的映射可以基于错误率确定603。具有比其它存储器阵列更高的错误率的存储器阵列可以在不同代码字之中分布以分布错误使得它们更可能是可校正的。同样地,可以分布具有比其它存储器阵列更低的错误率的存储器阵列。通过在代码字之中分布可能的错误,可以减少可能发生在单个代码字中的错误数目,这可以减少不可校正的错误的数目。
[0051] 一旦已经确定了期望的映射,可以对控制寄存器编程604以将两个或更多存储器阵列映射到两个或更多代码字中。控制寄存器可以使用任何类型的存储技术,但是在至少一个实施例中可以利用非易失性可一次编程元件。取决于实施例,编程可以在任何时间执行,诸如制造测试过程的部分或在系统环境中。在操作中,存储器设备可以响应于一个或多个存储器访问以允许从存储器设备检索数据的代码字。然后可以在数据的代码字中校正至少一个错误。流程图在块605处结束。
[0052] 图7A和7B是组织成减少存储器中的不可校正的错误的存储器700的实施例的框图。存储器700可以适合于供图6中所示的方法使用。存储器700包括控制寄存器701和接收地址703并且使用编程到控制寄存器701中的数据来选择性地使能存储器阵列711、712、721、722的地址变换电路702。存储器阵列可以被分组到存储器阵列的组中,其中来自存储器阵列的组的数据使用在代码字中以用于代码校正。如流程图600中所描述的,可以测试存储器阵列以确定其错误率。一旦确定错误率,可以将控制寄存器编程为在不同的代码字之中分布具有较高错误率的存储器阵列。
[0053] 在图7A中,可以测试存储器阵列并且可以确定存储器阵列711具有最低错误率,存储器阵列722具有第二低错误率,存储器阵列721具有第二高错误率,并且存储器阵列712具有最高错误率。一旦已经确定错误率,可以确定将存储器阵列711和存储器阵列712分组到第一组731中,并且将存储器阵列721和存储器阵列722分组到第二组732中可以提供减少的不可校正的存储器错误。控制寄存器701然后可以编程有控制地址变换电路702执行该映射的信息。因此具有比两个或更多存储器阵列中的其它存储器阵列更高的错误率的第一存储器阵列712可以映射到特定代码字并且具有比两个或更多存储器阵列中的其它存储器阵列更低的错误率的第二存储器阵列711可以映射到相同的特定代码字。
[0054] 在图7B中,可以测试存储器阵列并且可以确定存储器阵列712具有最低错误率,存储器阵列711具有第二低错误率,存储器阵列721具有第二高错误率,并且存储器阵列722具有最高错误率。一旦已经确定错误率,可以确定将存储器阵列711和存储器阵列721分组到第一组741中,并且将存储器阵列712和存储器阵列722分组到第二组742中可以提供减少的不可校正的存储器错误。控制寄存器701然后可以编程有控制地址变换电路702执行该映射的信息。
[0055] 图中的流程图和/或框图帮助说明各种实施例的方法的可能实现的操作。应当指出的是,在一些可替换实施例中,在块中指出的功能可以不以图中指出的顺序发生。例如,相继示出的两个块可以事实上基本上同时执行,或者块有时可以以相反的顺序执行,这取决于所涉及的功能。
[0056] 以下段落描述了各种实施例的示例:
[0057] 一种减少不可校正的存储器错误的示例方法可以包括确定用于存储器阵列的集合的逻辑阵列地址,至少部分地基于存储器阵列的集合内的至少两个存储器阵列的逻辑位置而将逻辑阵列地址变换成至少两个唯一阵列地址,以及分别使用至少两个唯一阵列地址访问至少两个存储器阵列。变换减少包括来自存储器阵列的集合的数据的错误校正代码字中的不可校正的错误。在一些示例方法中,错误校正代码字至少包括分别来自存储器阵列的集合的存储器阵列的数据位,并且至少两个存储器阵列中的公共物理位置映射到至少两个不同的错误校正代码字以减少由于使错误校正代码字过载有错误的存储器阵列的集合中的系统错误所致的不可校正的存储器错误。一些示例方法还可以包括使用至少两个唯一阵列地址从存储器阵列的集合检索错误校正代码字的数据,并且从存储器阵列的集合向控制器提供错误校正代码字的数据,其中控制器校正错误校正代码字中的一个或多个错误。在一些示例方法中,变换包括对逻辑阵列地址的地址线重排序。在一些示例方法中,变换包括在逻辑阵列地址上执行算术运算。在一些示例方法中,变换还部分地基于编程到控制寄存器中的值。在一些示例方法中,第一唯一阵列地址包括第一行地址和第一列地址,并且第二唯一阵列地址包括第二行地址和第二列地址,其中第一行地址不同于第二行地址,或者第一列地址不同于第二列地址。一些示例方法还可以包括使用至少两个唯一阵列地址的第一唯一阵列地址访问存储器阵列的集合内的存储器阵列的组。在一些示例方法中,至少两个存储器阵列的逻辑位置包括存储器阵列的集合内的存储器阵列的组的标识符。在一些示例方法中,至少两个存储器阵列的逻辑位置还包括芯片标识符。该段落的示例的任何组合可以使用在实施例中。
[0058] 一种示例集成电路包括用于确定用于存储器阵列的集合的逻辑阵列地址的构件,用于至少部分地基于存储器阵列的集合内的至少两个存储器阵列的逻辑位置而将逻辑阵列地址变换成至少两个唯一阵列地址的构件,以及分别使用至少两个唯一阵列地址访问至少两个存储器阵列的构件,其中逻辑阵列地址的变换减少包括来自存储器阵列的集合的数据的错误校正代码字中的不可校正的错误。在一些示例集成电路中,错误校正代码字至少包括分别来自存储器阵列的集合的存储器阵列的数据位,并且至少两个存储器阵列中的公共物理位置映射到至少两个不同的错误校正代码字以减少由于使错误校正代码字过载有错误的存储器阵列的集合中的系统错误所致的不可校正的存储器错误。一些示例集成电路还包括用于使用至少两个唯一阵列地址从存储器阵列的集合检索错误校正代码字的数据的构件,以及用于从存储器阵列的集合向控制器提供错误校正代码字的数据的构件,其中控制器被配置成校正错误校正代码字中的一个或多个错误。在一些示例集成电路中,所述用于变换的构件包括用于对逻辑阵列地址的地址线重排序的构件。在一些示例集成电路中,所述用于变换的构件包括用于在逻辑阵列地址上执行算术运算的构件。在一些示例集成电路中,第一唯一阵列地址包括第一行地址和第一列地址,并且第二唯一阵列地址包括第二行地址和第二列地址,其中第一行地址不同于第二行地址,或者第一列地址不同于第二列地址。一些示例集成电路还包括用于使用至少两个唯一阵列地址的第一唯一阵列地址访问存储器阵列的集合内的存储器阵列的组的构件。在一些示例集成电路中,至少两个存储器阵列的逻辑位置包括存储器阵列的集合内的存储器阵列的组的标识符。该段落的示例的任何组合可以使用在实施例中。
[0059] 一种示例集成电路包括至少包含第一存储器阵列和第二存储器阵列的存储器阵列的集合,至少部分地基于存储器阵列的集合内的第一存储器阵列的逻辑位置将逻辑阵列地址变换成耦合到第一存储器阵列的第一唯一阵列地址的第一电路,以及至少部分地基于存储器阵列的集合内的第二存储器阵列的逻辑位置将逻辑阵列地址变换成耦合到第二存储器阵列的第二唯一阵列地址的第二电路。在示例集成电路中,来自第一唯一阵列地址处的第一存储器阵列的数据和来自第二唯一阵列地址处的第二存储器阵列的数据包括在特定错误校正代码字中以减少特定错误校正代码字中的不可校正的错误。在一些示例集成电路中,第一错误校正代码字包括由第一逻辑阵列地址标识的数据,并且第二错误校正代码字包括由第二逻辑阵列地址标识的数据,第一电路将第一逻辑地址变换成标识第一存储器阵列中的特定阵列位置,并且第二电路将第二逻辑地址变换成标识第二存储器阵列中的特定阵列位置,并且第一存储器阵列和第二存储器阵列二者中的特定阵列位置中的系统错误在第一错误校正代码字和第二错误校正代码字之间分布错误以避免使第一错误校正代码字或第二错误校正代码字过载有错误。一些示例集成电路还可以包括向控制器提供特定错误校正代码字的数据的数据接口,其中控制器被配置成校正特定错误校正代码字中的一个或多个错误。在一些示例集成电路中,第一电路包括对逻辑阵列地址的地址线重排序的电路。在一些示例集成电路中,第一电路包括使用逻辑阵列地址和存储器阵列的集合内的第一存储器阵列的逻辑位置的至少一部分执行算术运算的电路。在一些示例集成电路中,第二电路包括使用逻辑阵列地址和存储器阵列的集合内的第二存储器阵列的逻辑位置的至少一部分执行算术运算的电路。在一些示例集成电路中,第一电路包括至少部分地基于编程到控制寄存器中的值变换逻辑阵列地址的电路。在一些示例集成电路中,至少两个存储器阵列的逻辑位置包括存储器阵列的集合内的存储器阵列的组的标识符。一些示例集成电路还包括芯片标识符输入,其中至少两个存储器阵列的逻辑位置还包括从芯片标识符输入接收的值。该段落的示例的任何组合可以使用在实施例中。
[0060] 一种示例电子系统包括生成包括逻辑阵列地址的存储器读取命令的监控电路,以及耦合到监控电路以响应于存储器控制命令的存储器。示例电子系统中的存储器可以包括存储器阵列的集合,至少部分地基于存储器阵列的集合内的至少两个存储器阵列的逻辑位置而将逻辑阵列地址变换成至少两个唯一阵列地址的电路,至少两个唯一阵列地址分别耦合到至少两个存储器阵列,以及响应于存储器控制命令从至少两个存储器阵列向监控电路提供由至少两个唯一阵列地址标识的数据的电路。在示例电子系统中,由逻辑阵列地址标识的数据包括在特定错误校正代码字中以减少特定错误校正代码字中的不可校正的错误,并且监控电路被配置成校正包括特定错误校正代码字的错误校正代码字的数据中的错误。在一些示例电子系统中,至少两个错误校正代码字包括分别由至少两个不同逻辑阵列地址标识的数据,电路将至少两个不同逻辑阵列地址变换成分别对至少两个存储器阵列中的公共阵列位置寻址,并且至少两个存储器阵列中的公共阵列位置中的系统错误在至少两个错误校正代码字之中分布错误以避免使至少两个错误校正代码字中的任一个过载有错误。在一些示例电子系统中,变换逻辑阵列地址的电路包括对逻辑阵列地址的地址线重排序以创建至少两个唯一阵列地址的电路。在一些示例电子系统中,变换逻辑阵列地址的电路包括使用逻辑阵列地址和存储器阵列的集合内的第一存储器阵列的逻辑位置的至少一部分执行算术运算以创建耦合到第一存储器阵列的第一唯一阵列地址的电路,以及使用逻辑阵列地址和存储器阵列的集合内的第二存储器阵列的逻辑位置的至少一部分执行算术运算以创建耦合到第二存储器阵列的第二唯一阵列地址的电路。在一些示例电子系统中,电路包括部分地基于编程到控制寄存器中的值变换逻辑阵列地址的电路。在一些示例电子系统中,至少两个存储器阵列的逻辑位置包括存储器阵列的集合内的存储器阵列的组的标识符。在一些示例电子系统中,存储器是第一存储器并且电子系统还可以包括耦合到第一存储器的第一芯片标识符、耦合到监控电路的第二存储器以及耦合到第二存储器的第二芯片标识符。在一些示例电子系统中,第二存储器包括第一存储器阵列和第二存储器阵列,至少部分地基于第二芯片标识符将逻辑阵列地址变换成用于第一存储器阵列和第二存储器阵列的行和列地址的第一电路,以及响应于存储器控制命令从第一存储器阵列和第二存储器阵列向监控电路提供附加数据的第二电路。在一些示例电子系统中,第一存储器的电路至少部分地基于第一芯片标识符将逻辑阵列地址变换成至少两个唯一阵列地址,并且监控电路被配置成校正包括来自第一存储器的数据和来自第二存储器的附加数据的代码字中的至少一个错误。一些示例电子系统还可以包括耦合到监控电路的I/O电路,以与外部设备通信。至少一个示例电子系统是固态驱动器。该段落的示例的任何组合可以使用在实施例中。
[0061] 一种减少不可校正的存储器错误的示例方法可以包括获得存储器设备中的两个或更多存储器阵列的错误率,基于所述错误率确定两个或更多存储器阵列到两个或更多代码字中的映射,以及对控制寄存器编程以将两个或更多存储器阵列映射到两个或更多代码字中,其中所述映射减少两个或更多代码字中的不可校正的错误。在一些示例方法中,编程到控制寄存器中的值将存储器设备配置成将具有比两个或更多存储器阵列中的其它存储器阵列更高的错误率的第一存储器阵列映射到特定代码字,并且将具有比两个或更多存储器阵列中的其它存储器阵列更低的错误率的第二存储器阵列映射到特定代码字。在一些示例方法中,所述确定和编程作为存储器设备上的制造测试过程的一部分执行。在一些示例方法中,所述确定和编程在系统环境中执行。一些示例方法还可以包括从存储器设备检索数据的代码字,并且校正数据的代码字中的至少一个错误。该段落的示例的任何组合可以使用在实施例中。
[0062] 一种示例电子系统包括用于获得存储器设备中的两个或更多存储器阵列的错误率的构件,用于基于所述错误率确定两个或更多存储器阵列到两个或更多代码字中的映射以减少两个或更多代码字中的不可校正的错误的构件,以及用于对控制寄存器编程以将两个或更多存储器阵列映射到两个或更多代码字中的构件。一些示例电子系统还可以包括用于将值编程到控制寄存器中以将存储器设备配置成将具有比两个或更多存储器阵列中的其它存储器阵列更高的错误率的第一存储器阵列映射到特定代码字,并且将具有比两个或更多存储器阵列中的其它存储器阵列更低的错误率的第二存储器阵列映射到特定代码字的构件。一些示例电子系统还可以包括用于从存储器设备检索数据的代码字的构件,以及用于校正数据的代码字中的至少一个错误的构件。该段落的示例的任何组合可以使用在实施例中。
[0063] 如本说明书和随附权利要求中所使用的,单数形式“一”、“一个”和“所述”包括复数引用,除非内容以其它方式明确规定。另外,如本说明书和随附权利要求中所使用的,术语“或者”一般以其包含“和/或”的含义使用,除非内容以其它方式明确规定。如本文所使用的,术语“耦合”包括直接和间接连接。而且,在第一和第二设备耦合的情况下,包括有源设备的居间设备可以位于其间。
[0064] 以上提供的各种实施例的描述在本质上是说明性的并且不意图限制本公开、其应用或用途。因此,超出本文所描述的那些的不同变型意图在实施例的范围内。这样的变形不被视为脱离本公开的意图范围。如此,本公开的宽度和范围不应当受以上描述的示例性实施例限制,而是应当仅依照接下来的权利要求及其等同物来限定。
QQ群二维码
意见反馈