具体实施方式
如用于例示目的的附图所示,本发明在一个基于二极管的OTP存储设备中实现。在下面的段落中,将描述OTP存储设备的结构,后面跟着两个地址协议的描述。一个地址协议可以提供容错地址配置。另一个地址协议可以提供邻域不相交地址配置以及容错地址配置。容错地址逻辑可以提高制造成品率,邻域不相交地址逻辑允许存储设备以高分辨率形成。在地址协议的描述的后面是一种使用查找表来扩展对大存储阵列的地址配置的方法的描述。
图1显示了一个多层固态存储设备110。多层112在顶部相互堆叠。每层112包括主存储器和地址逻辑。层112通过一个存储器系统接口116连接到控制/接口电路114。控制/接口电路114在基底上形成。控制/接口电路114执行错误代码校正(ECC)和缺陷管理功能以及用于操作设备110的功能。这些功能包括设置写电压、设置写允许线和控制功率感测脱模、通过将逻辑地址变换成访问物理存储单元所需的地址线模式来访问存储器以及感测线输出的数据读处理。
系统接口116包括地址线。每层112上的地址逻辑共享相同的地址线。在将数据写到设备110时,不将二进制位存储在一层的连续存储单元中。相反,将一个字的各个位存储在不同的层112上。
如果地址逻辑是容错的,在一层中一个地址线可以是有缺陷的,在另一层另一个地址线可以是有缺陷的,但每层将独立地容忍缺陷。
下面参考图2,图2显示了一个固态存储设备的一层208。层208包括主存储器210和可编程地址逻辑212,214。主存储器210包括OTP存储单元216的交叉点阻性阵列、沿存储单元216的行延伸的字线218和沿存储单元216的列延伸的位线220。对于存储单元216的每行可以有一个字线218,对于存储单元216的每列可以有一个位线220。每个存储单元216位于字线218和位线220的一个交叉点上。只显示了相对小的数目的存储单元216,以简化层208的例示。实际上,可以使用任何尺寸的阵列。
存储器线可以指字线218或位线220。
在读和写操作期间地址逻辑212、214使用组合二极管逻辑来寻址存储单元216。地址逻辑212、214包括一个用于选择字线218的OTP行译码器212。行译码器212通过对在行地址线222上提供的地址(该地址可以由外部行地址驱动器224提供)译码来选择字线218。行译码器212包括多个OTP地址单元226。行译码器212的每个地址单元226在字线218和行地址线222的交点上。
地址逻辑212、214还包括一个用于选择位线220的OTP列译码器214。列译码器214通过对在列地址线228上提供的地址(该地址可以由外部列地址驱动器230提供)译码来选择位线220。列译码器214还包括多个OTP地址单元226。列译码器214的每个地址单元226在位线220和列地址线228的交点上。
每个字线218的一端终止于行感测逻辑234。行感测逻辑234包括多个感测电阻236,每个感测电阻236连接在一个行功率线238和一个字线218的一端之间。行感测线240穿过字线218。行感测逻辑234还包括多个感测单元242,每个感测单元242连接在行感测线240和字线218之间。
每个位线220的一端终止于列感测逻辑244。列感测逻辑244包括多个感测电阻236,每个感测电阻236连接在一个列功率线246和一个位线220的一端之间。列感测线248穿过位线220。列感测逻辑244还包括多个感测单元242,每个感测单元242连接在列感测线248和位线220之间。
在主存储器210和行译码器212之间的行编程线250穿过字线218。编程单元252连接在行编程线250和字线218之间。
在主存储器210和列译码器214之间的列编程线254穿过位线220。编程单元252连接在列编程线254和位线220之间。
存储单元216、地址单元226、感测单元242和编程单元252都可以是基于二极管的。这简化了层208的制作。
在图3a-3c中显示了不同类型的可编程单元216/226/242/252。图3a的可编程单元包括一个与二极管312串联耦合的熔丝310。在编程之前,这样一个单元的电阻状态为低,熔丝310保持原样。在编程期间,单元的电阻状态可以通过“烧断”熔丝310从低变为高。
图3b的可编程单元包括一个与二极管322串联耦合的电阻320。在编程之前,这样一个单元的电阻状态为低,电阻320保持原样。在编程期间,单元的电阻状态可以通过“烧断”电阻320从低变为高。
图3c的可编程单元只包括一个二极管332。在编程之前,二极管332保持原样,从而其电阻状态为低。在编程期间,二极管332可以打开,将其电阻状态从低变为高。这样一个二极管332用作一个熔丝。或者,二极管332可以用作一个反熔丝,在编程期间从高电阻状态变为低电阻状态。
可编程单元216/226/242/252不限于图3a-3c中所示的类型。例如,可编程单元216/226/242/252可以包括晶体管来代替二极管。
返回图2,层208可以被如下制作。列线220在一个基底上形成,硅的多层薄膜在列线220上形成,字线218在薄膜上形成。每个可编程单元216/226/242/252可以形成为在两个相交迹线(T)之间的薄膜(F)的那部分(参见图4)。可编程单元216/226/242/252的大小由相交线之间的重叠区域和薄膜的厚度来确定。例如,主存储器210中的二极管可以被形成为相交字线和位线218和220之间的薄膜的那部分。
薄膜的不同层具有适当的掺杂(和/或结晶和非晶硅的组合),以形成二极管312、322、332。可以添加具有适当掺杂的附加层以形成电阻320、熔丝310或反熔丝。感测电阻236可以通过修改字线和位线218和220的末端来形成。行和列地址驱动器224和230可以作为控制/接口电路114的一部分在基底上形成。
可以通过向行和列译码器212和214提供行和列地址来将数据写到主存储器210。写电流流过一选定字线218和一选定位线220,并因此流过在选定字线和位线218和220的交叉点的存储单元216。写电流的幅度足以改变选定单元的电阻状态(例如,通过打开图3a的熔丝310、打开图3b的电阻320、打开图3c的二极管332、短路反熔丝)。
存储单元216的电阻状态可以通过向行和列译码器212和214提供行和列地址来感测。将一个电压加到行感测线240上,将一个相反极性的电压加到列感测线248上。感测电流流过一选定字线218和一选定位线220,并因此流过在选定字线和位线218和220的交叉点的存储单元216。感测电流的幅度表明选定存储单元216的电阻状态。
下面参考图4a。行和列译码器212和214可以在设备制作(412)之前配置(410),并在已经制作了层208之后编程(414)。译码器212和214可以通过将地址配置分配给存储器线来配置。每个地址配置包含逻辑1和逻辑0的位模式。地址配置中的每一位对应于与存储器线相连的可编程地址单元226。地址单元226是根据地址配置制作的。例如,对应于地址配置位值‘0’的地址单元226具有与对应于地址配置位值‘1’的地址单元226不同的载流能力。下面将更详细地描述地址单元的制作和编程。用于产生地址配置的地址协议将在后面讨论。
下面参考图5。以实零点(·)表示的较高载流能力单元对应于地址配置位的第一逻辑值。以十字标(×)表示的较低载流能力单元对应于地址配置位状态的第二逻辑值。以实零点表示的地址单元226在编程期间不改变其电阻状态。以十字标表示的地址单元在编程期间改变其电阻状态。仅仅出于例示的目的,以十字标表示的单元对应于逻辑‘0’,以实零点表示的单元对应于逻辑‘1’。逻辑‘1’不是必须对应于高电压。
在行译码器212的编程期间,将一个电压(-V)加到行编程线250上,将一个相反极性的电压(+V)加到行感测线240上。(在列译码器214的编程期间,将一个电压加到列编程线254上,将一个相反极性的电压加到列感测线248上。)这将有效地将电压加到两个背对背相连的二极管上。以这样一种方式加电压使得所有地址单元是反向偏压的,而感测单元是正向偏压的。因此,电流流过地址单元226。这个电流断开了由十字标指示的地址单元226的链接,但该电流未断开由实零点指示的地址单元226的链接。于是,由实零点指示的地址单元226保持原样。行译码器212的存储器线M1-M9连接到原样的和改变的地址单元226的不同模式,使得一组地址线除了一个存储器线外将取消选定所有存储器线。
下面另外参考图5a,图5a显示了存储器线的二极管模式(在编程之后)。地址单元226中的二极管是形成有线逻辑单元的有源单元。如果将地址a0a1a2a3a4a5=110110加到地址线A0-A5上,与地址线A0、A1、A3和A4相连的二极管将被反向偏压。其结果是,允许电流(由箭头指示)通过存储器线流到主存储器210。
同一地址a0a1a2a3a4a5=110110将取消选定图5b中所示的存储器线。例如,将逻辑‘0’加到地址线A2将使得连接在地址线A2和存储器线之间的二极管变为正向偏压。其结果是,电流将通过正向偏压的二极管分流,而不流向主存储器210。
下面参考图6a-6c。具有较高载流能力的地址单元226b在物理上可以比具有较低载流能力的地址单元226a做得更大。如果地址协议可以保证没有一列具有相邻的放大地址单元226b,则地址逻辑可以具有如图6a所示的配置。图6a显示了行译码器212,其中,各列不包含任何相邻的放大地址单元226b。虽然未显示为这样,但地址单元226a和226b可以以全接点间距形成。
如果地址协议不能提供这样一个保证,从而地址逻辑可以在一列中包括相邻的放大地址单元,则字线218之间的距离可能被增大。然而,这将减小主存储器的数据存储密度。
作为替代,行译码器212可以被分成在空间上分开的两组21a和212b,如图6b所示。奇数字线218a与偶数字线218b是交叉指型的。第一组地址线222a穿过奇数字线218a,第二组地址线222b穿过偶数字线218b。第一组和第二组地址线222a和222b接收相同的地址信号。
这个方法允许相邻地址单元226b的尺寸被三倍地放大,但它仍然允许其他地址单元226a以较高分辨率制作。如果地址协议可以保证没有一列具有相邻的放大地址单元226b,则不相邻放大存储单元226b的尺寸可以被五倍地放大(参见图6c)。
图6a-6c刚刚结合行译码器212进行了描述。然而,相同的原理也可以运用到列译码器214上。
地址协议包含n位地址配置到L个存储器线(例如,L行或L列)中的每一个的1∶1的映射,使得没有两个行被分配相同的地址配置,以及没有两个列被分配相同的地址配置。
考虑表1中所示的地址配置。有六个存储器线M1-M6和四个地址线A0-A3。加到一个地址线上的逻辑‘0’将通过原样单元取消选定与该地址线相连的所有存储器线。如果将一个地址a0a1a2a3=1100提供给地址线A0、A1、A2和A3,则除了第一存储器线M1的所有存储器线M2-M6将被取消选定(第一存储器线M1的第一和第二地址单元被保持原样,而第一存储器线的第三和第四地址单元则不保持原样)。
表1
|
A0 |
A1 |
A2 |
A3 |
M1 |
- |
- |
× |
× |
M2 |
- |
× |
- |
× |
M3 |
- |
× |
× |
- |
M4 |
× |
- |
- |
× |
M5 |
× |
- |
× |
- |
M6 |
× |
× |
- |
- |
因为地址线是与所有层上的对应地址单元在物理和电学上连接的,所以任何层上的一单个有缺陷的连接可使一个地址线不能使用。由于老化或环境作用随着时间的过去而出现的缺陷将致使一个地址线不能使用。如果地址线A0、A1、A2或A3中的一个变得不能使用,该地址线将不能取消选定某些存储器线。如果地址线A3变为有缺陷,它将不能取消选定存储器线M2、M4和M6。
这个问题可以通过使用一个提供容错地址配置的地址协议来避免。容错具有一个内置的冗余,即使在出现缺陷时也允许存储设备能正确地工作。这样,容错可以提高制造成品率。代价是地址线的增多。
参考图7。可以通过分配一组具有至少为t+1的对称距离的无覆盖地址配置来实现容错,其中t是有缺陷地址线的最大可允许的数目(710)。
下面解释一些术语。设u1,u2∈{0,1}n。单向距离dU(u1,u2)是u1具有1和u2具有0的位置数。对称距离是dS(u1,u2)=min{dU(u1,u2),dU(u2,u1)}。汉明距离是dH(u1,u2)=dU(u1,u2)+dU(u2,u1)。汉明距离至少是对称距离的两倍;即,dH(u1,u2)≥2dS(u1,u2)。例如,如果u1=1110及u2=1001,则dU(u1,u2)=2,dU(u2,u1)=1;dH(u1,u2)=3;以及dS(u1,u2)=1。对于至少两个n位字的集合U,对称距离dS(U)是集合U中的任何两个不同的字之间的最小对称距离,汉明距离dH(U)是集合U中任何两个不同的字之间的最小汉明距离。
如果dU(u1,u2)=0,则u2覆盖u1。因此,如果并且仅仅如果u2覆盖u1或u1覆盖u2,ds(u1,u2)=0。向存储器线分配地址配置,使得没有地址配置覆盖其他地址配置。这个约束条件防止一单个地址选择不止一个存储器线。
因此,如果集合中的n位字是无覆盖的,则该字集合可以被分配为用于n个地址线的地址配置。
一个满足这些约束条件的字集合是t-Sperner(n,L)代码字。一个t-Sperner(n,L)代码是一个由L个n位字组成的集合U,dS(U)≥t+1。一个1-Sperner(7,6)代码的一个例子是U={1100100,1010010,1001101,0110001,0101010,0011100}。汉明距离是dH(U)=4。即使t=1的地址线变得有缺陷,也没有字会覆盖其他字。
地址字可以是恒权码(CWC)字,其类型是t-Sperner字。如果一个n位字的集合C中的每个字具有汉明加权(w)并且dH(C)≥2t+2,则该集合C是CWC(n,2t+2,w)。这些条件表明C是一个t-Sperner(n,L)代码。
考虑表2中的地址配置。增加了另外三个地址线(A4、A5和A6)。即使在有任何t=1的地址线不能使用时,也没有地址配置覆盖其他。因此,有缺陷的地址线的最大可允许数目是t=1。
表2
|
A0 |
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
M1 |
- |
- |
× |
× |
- |
× |
× |
M2 |
- |
× |
- |
× |
× |
- |
× |
M3 |
- |
× |
× |
- |
× |
× |
- |
M4 |
× |
- |
- |
× |
× |
× |
- |
M5 |
× |
- |
× |
- |
× |
- |
× |
M6 |
× |
× |
- |
- |
- |
× |
× |
如果地址线A1变得不能使用,剩余的六个地址线A0和A2-A6将能够明确地选择六个存储器线M1-M6中的每一个。地址a0a2a3a4a5a6=100100仍然将取消选定除了第一个存储器线M1之外的全部存储器线M2-M6。
存储设备可以通过使用一个产生邻域不相交的地址配置的地址协议来以较高分辨率制作。这样一个地址协议保证没有一列具有相邻的放大地址单元226b。
下面参考图8,通过分配一个满足不等式(2w+t+1)≤n的恒权码字的集合来产生邻域不相交的地址配置,其中w是代码字的加权,n是地址线的数目,t是有缺陷地址线的最大可允许数目(810)。
设T(b)是第b个存储器线Mb的地址配置。如果寻址是邻域不相交的,则对于每个b,T(b)和T(b+1)是不相交的,从而相邻地址不在同一位置具有1。即,如果对于所有b,T(b)ΛT(b+1)=0,并且另外T(L)ΛT(1)=0,则寻址是邻域不相交的。运算符Λ表示逐位“AND(与)”。
考虑表3中所示的地址配置。汉明加权是w=3,地址线的数目是n=9,有缺陷的地址线的最大可允许数目是t=1。没有一列具有相邻的放大二极管(由实零点表示);因此,地址配置是邻域不相交的。此外,任何一个地址线可以是不能使用的,而剩余地址线仍然可以明确地选择一个存储器线。容错和邻域不相交的代价是地址线的数目从四增大到九。
表3
|
A0 |
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
A7 |
A8 |
M1 |
- |
- |
× |
× |
- |
× |
× |
× |
× |
M2 |
× |
× |
- |
× |
× |
- |
× |
- |
× |
M3 |
- |
× |
× |
- |
× |
× |
- |
× |
× |
M4 |
× |
- |
- |
× |
× |
× |
× |
× |
- |
M5 |
× |
× |
× |
- |
- |
× |
× |
- |
× |
M6 |
× |
× |
× |
× |
× |
- |
- |
× |
- |
表3的地址配置是从一个t-Sperner(n,L)代码选择的,在这个例子中,t=1,n=9,以及L=6。为了满足这个邻域不相交特性,分配给第k个存储器线(Mk)的地址配置被从与分配给第k-1个存储器线的配置是邻域不相交的剩余代码字中随机地选择。如果在剩余代码字中不能找到一个邻域不相交的代码字,则删除第k-1个地址配置,并作出对第k-1个地址配置的另一个选择。然后选择第k个地址配置。
无论是只是容错的、只是邻域不相交的还是容错的和邻域不相交的,都可以采用一个查找表来将地址配置分配给存储器线。查找表可以为具有n个地址线和L个存储器线的存储设备提供全部n位地址配置。然而,随着存储设备的存储容量增大,这样一个查找表可以变得惊人地大。
图9显示了一种涉及一个为n个地址线和L个存储器线提供一个n位地址配置的序列的查找表的方法。该方法包括使用查找表来为2n个地址线和L2个存储器线产生地址配置。
下面参考图9。总共形成L块(910)。“最高有效列”指的是每块的左半边。“最低有效列”指的是每块的右半边。
将每块的最高有效列填充该序列,使得每块的最高有效列包含相同的序列(912)。每块的最高有效列中的第i个入口等于查找表的第i个入口。
将每块的最低有效列填充该序列,使得第二块中的序列相对于第一块中的序列被循环地移位,第三块中的序列相对于第二块中的序列被循环地移位,等等(914)。序列被循环地移位,使得第k块的最低有效列中的第i个入口等于查找表的第(i+s(k))个入口,其中s(k)是第k个块中相对于第一个块的位移量。当i+s(k)大于L时,应该从这个总和中减去L。
当L是奇数时,第k个块中的最低有效列的位移量s(k)可以从第k-1个块中的位移量s(k-1)减2得到。即,s(k)=s(k-1)-2。如果减法产生一个负值,则加L。即,如果s(k-1)<2,s(k)=s(k-1)-2+L。当L是偶数时相同,除了对于第(L/2+1)块,选择s(L/2+1)的奇数值,使得邻域不相交特性不被违反。
对于每块(k)的循环移位s(k)是不同的。其结果是,L块包含用于L2个存储器线和2n个地址线的地址配置。
下面将提供图9的方法的第一个例子。表4所示的查找表提供了L=3个存储器线、n=3个地址线和t=0的地址配置。地址配置形成序列ABC,其中A、B和C分别代表3位配置001b、010b和100b。
图9的方法用于产生用于2n=6个地址线和L2=9个存储器线的邻域不相交的地址配置。如表5所示,每块的最高有效列(b0)具有相同的未移位序列(ABC),最高有效列中的第i个入口等于表4的查找表的第i个入口。最低有效列(b1)中的每块的序列被移位。在这个例子中,s(1)=0,s(2)=1,s(3)=2(在第一块中没有移位,第二块移位1,第三块移位2)。邻域不相交的特性仍然保持在这个较大的寻址协议中。
表4
表5
表6中提供了另一个例子。序列ABCD代表用于n个地址线和四个存储器线的L=4个邻域不相交的地址配置。星号(*)假设地址配置D和B是邻域不相交的,地址配置A和D是邻域不相交的。即,AΛD=0,BΛD=0。
每块的最高有效列(b0)具有相同的序列(ABCD),每个最高有效列(b0)中的第i个入口等于该序列的第i个入口。最低有效列(b1)中的序列在每块改变其状态。在这个例子中,s(1)=0,s(2)=2,s(3)=3,s(4)=1。除了最后一个2n位配置与第一个不相交之外,邻域不相交的特性仍然保持在这个较大的寻址协议中。
表6
如果用于L=4个存储器线的地址配置可以容忍(来自n个地址线的)直至t个有缺陷的地址线,则总共L2=16个存储器线可以容忍同样数目的有缺陷的地址线。此外,直至t个有缺陷的地址线可以在最高有效列中,直至t个有缺陷的地址线可以在最低有效列中。
在这个例子中,邻域不相交的特性不是循环保持的,除非n位配置地址A**被一个与配置地址D和A是邻域不相交的n位配置地址所替换。
可以构造一个“孪生”表并附加在表6上来取代替换A**。表7是这样一个孪生表(仍然假设BΛD=0)。表7不是循环的;然而,如果AΛC=0,表7可以被附加到表6上而不违反邻域不相交的特性。同样,如果AΛC=0,表6可以跟在表7后面而不违反该特性。
表7
对于L3个线的寻址,孪生表现在将具有三列(b0、b1和b2),并且具有图10a和10b所示的结构。在图10a和10b的每个图中,右边的列与左边的列并置在一起。标号1010指的是包含表6的前两列的块,标号1012指的是包含表7的前两列的块。标号1014指的是重复四次的序列ABCD,标号1016指的是重复四次的序列CDAB,标号1018指的是重复四次的序列DABC,标号1020指的是重复四次的序列BCDA。
图9的方法可以进一步扩展到L4个存储器线和4n个地址线,等等。
如果在1和L之间存在系数c0、c1和c2,使得用于L个存储器线的初始地址协议T是相邻不相交的,并且另外满足下面六个条件,则可以构造出孪生表和扩展到大存储阵列:
(a)具有不同奇偶性的c0和c1(作为整数)。
(b)具有不同奇偶性的c2和c3(作为整数)。
(c)T(c0+1)ΛT(c1)=0。
(d)T(c1+1)ΛT(c2)=0。
(e)T(c2+1)ΛT(c3)=0。
(f)T(c3+1)ΛT(c0)=0。
L+1的系数值应该被解释为1。于是,如果L=4,T(1)=A,T(2)=B,T(3)=C以及T(4)=D,并且AΛC=0,BΛD=0,则条件(a)-(f)适用于
c0=1,
c1=4,
c2=3,和
c3=2。
图9的方法并不限于扩展由图7和8所示方法产生的容错和/或邻域不相交的地址配置。地址配置同样可以由其他方法产生。
上述地址协议并不限于上述存储设备。它们可以运用到使用组合地址逻辑的任何存储设备。
本发明并不限于上面描述和例示的特定实施例。本发明可以根据后面的权利要求书进行构造。