CN104809031B - 操作存储器的方法及存储器装置 - Google Patents
操作存储器的方法及存储器装置 Download PDFInfo
- Publication number
- CN104809031B CN104809031B CN201410116208.XA CN201410116208A CN104809031B CN 104809031 B CN104809031 B CN 104809031B CN 201410116208 A CN201410116208 A CN 201410116208A CN 104809031 B CN104809031 B CN 104809031B
- Authority
- CN
- China
- Prior art keywords
- ecc
- stratum
- group
- data
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/35—Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
- H03M13/356—Unequal error protection [UEP]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
- H03M13/6505—Memory efficient implementations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6561—Parallelized implementations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明公开了一种操作存储器的方法及存储器装置,该操作存储器的方法包括:接收输入数据组、储存用于输入数据组的数据的第一阶层错误更正码(Error Correction Code,ECC)、储存用于输入数据组的多个第二阶层群组数据的多个第二阶层ECC、储存数据组于存储器、以及测试数据组以决定使用第一阶层ECC或多个第二阶层ECC。此方法包括若使用第一阶层ECC,储存使用第一阶层ECC的标识。若使用多个第二阶层ECC,储存使用多个第二阶层ECC的标识。此方法包括储存多个第二阶层ECC于替换ECC存储器,以及储存指针以指示多个第二阶层ECC于替换ECC存储器的多个位置。
Description
技术领域
本发明是有关于一种存储器装置与系统,且特别是有关于一种包括错误更正码(error correction code,ECC)逻辑的存储器装置及其操作方法。
背景技术
集成电路的存储器所使用的工艺尺寸逐渐减小,且在单一集成电路中配置存储器阵列越来越大。随着存储器科技的演进,感测存储器数据的边界(margin)变得更小。此外,导因于高速以及大量的存取存储单元(memory cell)以及邻近存储单元,当存在存储单元状态的干扰(disturbance)时,存储单元维持数据值的能力也会受限于变小的边界。
因应存储器科技尺寸以及密度持续演进,为克服变小的感测边界以及存储单元干扰所引起的问题,已发展使用错误更正码(ECC)于集成电路存储器中。然而,存储器中仅有有限的资源储存错误更正码。
因此,提出一种有效利用存储器中有限资源以作为ECC之用的方法,乃目前业界所致力的课题之一。
发明内容
本发明是有关于一种操作存储器的方法,此方法包括接收输入数据组、储存用于输入数据组的数据的第一阶层ECC、储存用于输入数据组的多个第二阶层群组数据的多个第二阶层ECC、储存数据组于存储器、以及测试数据组以决定使用第一阶层ECC或多个第二阶层ECC。因此,针对给定的数据组,所需使用的ECC资源可根据数据组储存后的测试而动态决定。在第一阶层ECC以及第二阶层ECC被储存于存储器之前,第一阶层ECC以及第二阶层ECC可由耦接至存储器的处理器计算得到。
第一阶层ECC及多个第二阶层ECC的大小是决定于ECC的位数,因此多个第二阶层ECC的组合可以较单独的第一阶层ECC有较佳的侦测错误以及更正错误的能力。举例而言,第一阶层ECC及第二阶层ECC可以有相同大小。
若使用第一阶层ECC,储存使用第一阶层ECC的标识。若使用多个第二阶层ECC,储存使用多个第二阶层ECC的标识。可储存多个第二阶层ECC于替换ECC存储器,并可储存指针以指示多个第二阶层ECC于替换ECC存储器的多个位置。其中替换ECC存储器储存多个存储器所储存其他数据组的第二阶层ECC。
测试数据组的步骤可包括若输入数据组的数据的失败位数量小于第一临界值,则决定使用第一阶层ECC。
可使用多于两个阶层的ECC。举例而言,此方法可包括储存用于数据组的多个第三阶层群组数据的多个第三阶层ECC,其中第三阶层群组较第二阶层群组具有较少的位数。在使用三个阶层的例子中,此方法包括若输入数据组的数据的失败位数量小于第一临界值,则使用第一阶层ECC。若输入数据组的数据的失败位数量大于等于第一临界值且小于第二临界值,则使用多个第二阶层ECC。以及若输入数据组的数据的失败位数量大于等于第二临界值且小于第三临界值,则使用多个第三阶层ECC。在第三阶层ECC被储存于存储器之前,第三阶层ECC可由耦接至存储器的处理器计算得到。
本发明并提出一种存储器装置以及用以执行如上述方法的处理器。
为了对本发明的上述及其他方面有更佳的了解,下文特举较佳实施例,并配合所附图式,作详细说明如下:
附图说明
图1绘示依照本发明一实施例包括存储器的装置的方块图。
图2绘示存储器以及替换ECC存储器的详细图。
图3绘示标识如何指示使用第一阶层ECC于一数据组或是多个ECC分别对应于此数据组中多个群组的数据。
图4绘示储存数据及ECC替换标识的流程图。
图5绘示读取储存有ECC替换标识的数据的流程图。
图6绘示位数与临界电压的关系图。
图7绘示目标页面中存储单元的两个数据值的临界电压范围之间的感测窗。
图8绘示依照本发明一实施例处理器耦接至包括有存储器装置的方块图。
【符号说明】
100、820:装置
105:数据总线
110:控制器
120:电压供应源
130、175:总线
140:列译码器
145:字线
150:ECC逻辑
155:信号线
160、160a、822:存储器
165:字线
170:页面缓冲区
180:替换ECC存储器
190:输入/输出电路
210、220、230、240:地址
211、221、231、241:数据组
213、223、233、243:第一阶层ECC
215、225、235、245:标识
217、227、237、247:指针
219、229、239、249:位置
410、420、430、440、445、450、455、465、510、515、520、530、540、550:步骤
610、620、630、640:VT分布
615、625、635、645:感测窗
617、627、637:重叠处
710、720:临界电压范围
713、723、717、727:临界电压
715:低边界
725:高边界
730:感测窗
810:处理器
812、814:逻辑电路
830:信号
具体实施方式
请参照图示,底下详细说明本发明的实施例。虽然本发明以如下较佳实施例揭露,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视随附的权利要求范围所界定的为准。在说明书与图式中,即使是不同实施例中,相同的元件符号是用以指示相同或相似的元件。
图1绘示依照本发明一实施例包括存储器的装置的简化芯片方块图。于图1所绘示的例子中,装置100包括存储器160,存储器160储存多个数据组(data set)。多个数据组中包括至少一个数据组使用一个第一阶层(level)ECC,以及至少另一个数据组使用多个ECC,多个ECC分别对应到在此数据组内的多个群组(group)的数据上。各个数据组可以有相同的大小。存储器160于存储器160a中储存第一阶层ECC,是逻辑关联于第一阶层ECC所对应的数据组的地址。
包括有存储器(例如存储器160)的装置(例如装置100)可以使用一个地址转换表,以将主机(例如是处理器,如图8的处理器810)使用的逻辑地址(logical address),转换成存储器使用的实体地址(physical address)。举例而言,逻辑地址0x0010,0x0011,0x0012及0x0013可以分别转换为实体地址0x0AAA,0x0123,0x0456及0x1000,其中“0x”代表十六进制值。因此存储器中一个数据组的实体地址,是根据地址转换表从逻辑地址转换而来。此外,主机可以决定改变地址转换表中逻辑地址到实体地址的对映关系,以执行存储器管理功能,包括有坏区块管理(bad block management)、重新对映(re-mapping)、复新(refreshing)、以及平均擦除(wear leveling)。
第一阶层ECC可储存于存储器160a中逻辑关联于第一阶层ECC所对应的数据组的地址,第一阶层ECC与其对应的数据组有相同的逻辑地址。当数据组的逻辑地址与实体地址对映关系改变时,此数据组的第一阶层ECC也会有相同的改变。举例而言,逻辑地址0x0010的数据组原先被转换至实体地址0x0AAA,之后因执行存储器管理功能而改变为转换至实体地址0x0BBB,然而在改变前与改变后,数据组与第一阶层ECC皆可以透过逻辑地址0x0010存取。
如之后所述的图2中的ECC替换标识215,225,235,245以及指针217,227,237,247,亦是逻辑关联于其对应数据组的地址,与前述的第一阶层ECC概念相同。
存储器160储存标识以及指针于存储器中,逻辑关联于对应的数据组的地址,并储存多个ECC于替换ECC存储器180中,其中多个ECC又称作「替换ECC」(replacement ECC)。标识用以指示要使用第一阶层ECC或是使用多个ECC,指针用以指示多个ECC在替换ECC存储器180中的位置。替换ECC存储器180储存用于存储器160中所储存其他数据组的多个ECC。在一些实施例中,存储器160储存的第一阶层ECC与替换ECC存储器180储存的多个ECC其中的每一个ECC可以有相同的长度。
在一种实作方式中,装置100对于每一个字线(word line)的页面(pages)可以有一个替换ECC存储器。例如每一个字线可以有64个页面。用于每一个字线页面的替换ECC存储器可以包括多个区段(segments),例如4或8个区段。因此每一个字符在线的64个页面共享替换ECC存储器当中的多个区段。每一个区段可以储存2个、4个或8个用于此字符在线一个页面的替换ECC。用以指示替换ECC位置的指针即代表多个区段中的特定一个区段。举例而言,对于一个包括4个区段的替换ECC存储器,指针的值可以是“00”,“01”,“10”,“11”以分别代表替换ECC存储器中的第1、第2、第3、第4个区段。由于对每一个字线有一个替换ECC存储器,指针仅需2个位即可以表示用于每个页面的4个区段,能够有效地利用存储器中有限的资源。相较之下,若是装置100对于存储器中的所有页面使用一个一般的替换ECC存储器,每个页面的指针则需要有更多位以指示一般替换ECC存储器中的替换ECC位置。
如图1所示的例子中,使用偏压安排状态机的控制器110控制偏压安排供应电压的应用,例如是读取或是编程电压,其中偏压安排供应电压是经由电压供应源120所产生或提供。控制器110耦接至页面缓冲区170、ECC逻辑150、以及存储器160。ECC逻辑150经由信号线155耦接至页面缓冲区170。
控制器110包括逻辑电路以经由输入/输出电路190接收输入数据,以储存数据组于存储器160中,以储存标识用于指示使用第一阶层ECC于数据组中的数据或是使用多个ECC于数据组中的多个群组的数据。控制器110更包括逻辑电路以储存多个ECC于替换ECC存储器180中,以及逻辑电路以储存指针用于指示多个ECC在替换ECC存储器180中的位置。
控制器110更包括逻辑电路以读取数据组、此数据组的标识(指示此数据组使用第一阶层ECC或使用多个ECC)、第一阶层ECC、以及多个ECC。若标识指示为第一阶层ECC,则使用第一阶层ECC执行ECC逻辑于此数据组;若标识指示为多个ECC,则使用多个ECC执行ECC逻辑于此数据组。
控制器110可使用本领域熟知的特殊目的逻辑电路而实作。在另一实施例中,控制逻辑电路包括一般用途处理器,可实作于同一个集成电路上,处理器执行计算机程序以控制装置的运作。又或着在更另一实施例中,控制逻辑电路可利用特殊目的逻辑电路以及一般用途处理器的组合而实作完成。
如图1所示的例子中,列译码器140耦接至多个字线145,并沿着存储器160的列(row)方向排列。页面缓冲区170耦接至多条字线165,用以从存储器160读取数据以及写入数据至存储器160,字线165沿着存储器的行(column)方向排列。地址是由控制器110经由总线130提供至页面缓冲区170及列译码器140。页面缓冲区170可包括耦接至存储器160以及总线130的行译码器、用于读取操作的感测放大器(sense amplifier)、及用于编程操作的编程缓冲区,感测放大器及编程缓冲区耦接至行译码器。页面缓冲区170耦接至输入/输出电路190,于此例中是经由总线175。输入/输出电路190将数据驱动至装置100外部的目标。输入/输出数据以及控制信号是经由数据总线105传送于下列模块之间:输入/输出电路190、控制器110、以及装置100的输入/输出端口或是装置100内部或外部的其他数据源,例如一般用途处理器、特殊目的应用电路、或是提供单芯片系统(system-on-a-chip)功能(由存储器160所支持)模块的组合。
图2绘示图1中存储器以及替换ECC存储器更详细的图。如图2所示的例子中,存储器160储存多个数据组211、221、231、241,是逻辑关联于多个数据组的地址210、220、230、240。存储器160储存第一阶层ECC 213、223、233、243逻辑关联于这些数据组的地址。
存储器160并储存标识215、225、235、245以及指针217、227、237、247逻辑关联于这些数据组的地址。替换ECC存储器180可储存多个ECC分别用于数据组内的多个群组的数据。存储器包括的内容可由部份的数据组地址以及指针而寻址,数据组地址例如是页面地址(page address)或是区块地址(block address)。标识指示使用第一阶层ECC或是多个ECC。指针指示多个ECC在替换ECC存储器中的位置。举例而言,对于逻辑关联于地址210的数据组211,标识215指示数据组211是使用多个ECC,而指针217指示数据组211使用的多个ECC在替换ECC存储器180中的位置219。对于逻辑关联于地址220的数据组221,标识225指示数据组221是使用第一阶层ECC,因此数据组221无需使用替换存储器180以及指针227。
图3绘示标识如何指示使用第一阶层ECC于一数据组或是多个ECC分别对应于此数据组中多个群组的数据。如图3所示的例子中,标识有2个位,其值包括有“00”、“01”以及“10”。此处以一个页面的数据为数据组中的数据作为例子。标识值“00”代表此页面使用一个30位第一阶层ECC。标识值“01”代表此页面使用两个30位第二阶层ECC,每半页使用一个ECC。标识值“10”代表此页面使用四个30位第三阶层ECC,每四分之一页使用一个ECC。30位第一阶层ECC、两个30位第二阶层ECC中的每一个ECC、以及四个30位第三阶层ECC中的每一个ECC皆有相同长度。
图4绘示依照本发明一实施例储存数据及ECC替换标识的流程图。于此例中提供一种步骤的顺序。这些步骤亦可以其他顺序执行,在一些例子中这些步骤亦可以平行执行。如下所述的方法可以由如图1所示的控制器110以及如图8所示的处理器执行。
如图4所示的例子中,于步骤410接收输入数据组。于步骤420,储存输入数据组数据的第一阶层ECC,并且储存数据组内多个第二阶层群组数据的第二阶层ECC。亦可以使用多于两个阶层,例如也可以储存数据组内多个第三阶层群组数据的第三阶层ECC。在储存第一阶层ECC、第二阶层ECC、及第三阶层ECC至存储器之前,第一阶层ECC、第二阶层ECC、及第三阶层ECC可由耦接至存储器的处理器计算得到。于步骤430,数据组可储存于存储器。储存数据组的步骤可包括对数据组内数据的每一位进行编程操作及验证操作。未通过验证操作的数据位视作失败位。数据组中失败位的数量可用以决定使用第一阶层ECC、第二阶层ECC、或是第三阶层ECC。
于步骤440,决定失败位的数量是否小于第一临界值。若失败位的数量小于第一临界值,则储存标识以使用第一阶层ECC(步骤445)。若失败位的数量不小于第一临界值,则决定失败位的数量是否大于等于第一临界值且小于第二临界值(步骤450),若是的话,储存标识以使用第二阶层ECC(步骤455),若否的话,且若第三阶层ECC已被计算且储存,可再进一步决定失败位的数量是否大于等于第二临界值且小于第三临界值。关于标识如何指示使用第一阶层ECC于一数据组或是多个ECC分别对应于此数据组中多个群组的数据的例子,其描述可配合参考图3。
若失败位的数量大于等于第一临界值且小于第二临界值(步骤450),可将第二阶层ECC储存于替换ECC存储器中(如图2所示的替换ECC存储器180),并可将用以指示替换ECC存储器内第二阶层ECC位置的指针(如图2所示指针217)储存于存储器中逻辑关联于对应数据组的地址。
若失败位的数量大于等于第二临界值且小于第三临界值,可将第三阶层ECC储存于替换ECC存储器中(如图2所示的替换ECC存储器180),并可将用以指示替换ECC存储器内第三阶层ECC位置的指针(如图2所示指针217)储存于存储器中逻辑关联于对应数据组的地址。
第二临界值大于第一临界值,且第三临界值大于第二临界值,一个页面数据的第一临界值、第二临界值及第三临界值可以预先决定为特定的大小。举例而言,对于有1K字节(bytes)的一个页面数据,第一临界值、第二临界值及第三临界值可以预先决定分别为25、30及40个失败位。
若是判定数据组的失败位数量大于最大临界值(例如40个失败位),以致于数据组无法以ECC更正,或是替换ECC存储器(如图2所示的替换ECC存储器180)已经满了而无法储存更多的替换ECC(例如第二阶层ECC),则此数据组可被标示为失败数据组,此数据组可使用例如存储器冗余(memory redundancy)的技术修复。更进一步关于最大临界值的描述可配合参考图6及图7。
图5绘示读取储存有ECC替换标识的数据的流程图。如图5所示的例子中,于步骤510,读取一数据组以及此数据组对应的标识,其中标识用以指示使用第一阶层ECC于此数据组或是第二阶层ECC分别对应于此数据组中多个群组的数据。于步骤510亦读取第一阶层ECC及第二阶层ECC。于步骤515,检查此数据组的标识。若判定是指示第一阶层ECC(步骤520的分支「是」),则使用第一阶层ECC执行ECC逻辑于此数据组(步骤530)。若判定是指示第二阶层ECC(步骤540的分支「是」),则使用第二阶层ECC执行ECC逻辑于此数据组(步骤550)。尽管图5仅绘示第一阶层ECC以及分别对应于此数据组中多个群组数据的第二阶层ECC,然而亦可以使用多于两个阶层的ECC。举例而言,关于第三阶层ECC的描述可配合参考图3。ECC替换标识可指示是否使用多于两个阶层的ECC,如图3所示的例子中,标识值“10”代表使用第三阶层ECC。此处所描述读取数据的方法可由如图1所示的装置100中的控制器110所执行。
对于读取储存有ECC替换标识(例如第二阶层ECC)的数据,可执行ECC逻辑以施加一序列的动作于数据组中的每一个第二阶层群组的数据。可先执行ECC逻辑以施加序列中的第一动作至一个第二阶层群组的数据,接着执行ECC逻辑以施加序列中的第二动作至此群组的数据,并于此同时执行ECC逻辑以施加序列中的第一动作至另一个第二阶层群组的数据。
于一种实作方式中,序列的动作包括有症状(syndrome)动作、钥匙(key)动作以及Chien搜寻(Chien search)。症状动作计算出症状(例如多项式,polynomial)用以指示是否ECC逻辑执行的数据正确无误,或是数据中的哪一个位有错误。钥匙动作以症状作为输入以输出钥匙(例如错误定位多项式,error locator polynomial)。Chien搜寻以钥匙作为输入,并输出错误的位置。
在一例子中,一个数据组内包括两个第二阶层群组的数据,其中每个第二阶层群组包括数据组中一半的数据。可先执行ECC逻辑以施加第一动作至其中一群组以产生症状,此群组包含数据组中一半的数据。接着可执行ECC逻辑以施加后续的第二动作至此群组以产生钥匙,而于此同时并执行ECC逻辑以施加第一动作至另一群组以产生症状,另一群组是包含数据组中另外一半的数据。
因此,序列中的不同动作可以平行地施加至数据组中不同的第二阶层群组数据,而能减少在数据组中不同群组数据执行ECC逻辑的时间,不致影响存储器的读取速度。
图6绘示位数与临界电压的关系图,显示存储器中多个页面中的2位存储单元的临界电压(threshold voltage,VT)分布。对2位存储单元而言,存储器是依照存储单元的临界电压所落在的4个临界电压范围以侦测数据。如图6所绘示的例子中,2位存储单元的4种数据值是“11”,“10”,“00”,“01”,感测窗615位于数据值“11”的VT分布610以及相邻的数据值“10”的VT分布620之间。另外,感测窗625位于数据值“10”的VT分布620以及相邻的数据值“01”的VT分布630之间,感测窗635位于数据值“01”的VT分布630以及相邻的数据值“00”的VT分布640之间。
存储器中各页面间的VT分布不相同,是导因于不同位数的分布、不同编程图样(program pattern)的分布、不同程序收尾位(process tail bits)的分布、以及不同随机电报噪声(random telegraph noise)的分布。因此,对于存储器中多页面组合的VT分布,相邻的VT分布可能会重叠。例如,一个数据值的VT分布会与另一个数据值的VT分布重叠。如图6所示的例子中,数据值“11”的VT分布610重叠于数据值“10”的VT分布620(重叠处617),数据值“10”的VT分布620重叠于数据值“01”的VT分布630(重叠处627),以及数据值“01”的VT分布630重叠于数据值“00”的VT分布640(重叠处637)。
若是根据存储器中多个页面的VT分布的临界电压范围(相邻的VT分布有重叠的现象),决定对多个页面使用单一长度的ECC,则此单一长度的ECC对于存储器中的某些页面(有较宽的感测边界)是不必要地过长,然而对于存储器中的其他页面(有较窄的感测边界)却仍可能是不够长。
单一长度的ECC可定义为存储器中一个页面最大长度的ECC。最大长度的ECC即为一个页面中最多可以被更正的失败位。举例而言,若最大长度的ECC是40位,则最多可以更正40个位。
图7绘示目标页面中存储单元的两个数据值的临界电压范围之间的感测窗。如图7所示的例子中,2位存储单元有4种数据值“11”,“10”,“00”,“01”,感测窗730介于两个相邻数据值的临界电压范围710与720之间。举例而言,相邻的数据值可以是11及10、10及00、或是00及01。对于有临界电压713的存储单元(临界电压713低于临界电压范围710中的低边界715),以及对于有临界电压723的存储单元(临界电压723高于临界电压范围720中的高边界725),这样的存储单元内的数据较少机会发生错误或需要ECC更正。相对的,对于有临界电压717的存储单元(临界电压717高于临界电压范围710中的低边界715),以及对于有临界电压727的存储单元(临界电压727低于临界电压范围720中的高边界725),这样的存储单元内的数据有较高的机会发生错误或需要ECC更正。目标页面中的存储单元(包括有临界电压717或是临界电压727的存储单元)的数据错误,可通过第一阶层ECC或是第二阶层ECC更正,选择何种ECC是依据目标页面的感测窗730的宽度决定。
由于每个目标页面的感测窗是宽于多个页面的感测窗,对每个目标页面决定ECC长度时,这样的ECC长度可以小于前述相关于图6的最大长度ECC。举例而言,对于存储器中的多个页面的数据,若最大长度的ECC是40个位,则例如30位的较短长度ECC可用于每个目标页面、半个目标页面、或四分之一个目标页面,如图3所示。
图8绘示处理器耦接至如上所述的装置并执行如上所述的方法。于一种实作方式中,处理器810包括逻辑电路812以对数据组中的数据计算并储存第一阶层ECC,以及对数据组中多个第二阶层群组数据计算并储存第二阶层ECC。处理器810可包括逻辑电路814以对数据组测试,以决定使用第一阶层ECC或是第二阶层ECC。处理器810耦接至装置820。装置820包括存储器822,存储器822可储存多个数据组,其中包括至少一个数据组使用第一阶层ECC,以及至少另外一个数据组以多个ECC分别用于数据组内的多个群组的数据。各个数据组可以有相同大小。处理器810及装置820经由信号830耦接,使得可以从处理器810传送第一阶层ECC、多个ECC、以及指示使用第一阶层ECC或多个ECC的标识至装置820,并且可以从装置820传送数据组中失败位的信息至处理器810。
测试数据组的逻辑电路可包括逻辑电路以决定若输入数据的失败位数量小于第一临界值时,使用第一阶层ECC,并可包括逻辑电路以决定若输入数据的失败位数量大于等于第一临界值且小于第二临界值时,使用第二阶层ECC。处理器810更可包括逻辑电路以计算并储存第三阶层ECC,第三阶层ECC是用于数据组内的多个第三阶层群组的数据。测试数据组的逻辑电路可包括逻辑电路以决定若输入数据的失败位数量大于等于第二临界值且小于第三临界值时,使用第三阶层ECC。
处理器810可使用如上所述的方法处理多个数据组,其中多个数据组可包括一或多个字线的数个页面的数据,或是装置820中存储器822全部页面的数据。于一种实作方式中,处理器可先对多个数据组中的数据计算并储存第一阶层ECC,以及计算并储存分别用于多个群组数据的多个ECC。接着对每一个数据组,测试此数据组以决定使用第一阶层ECC或是多个ECC。于另一种实作方式中,处理器可对于每个数据组测试以决定使用第一阶层ECC或是多个ECC,接着再对数据组中的数据计算并储存第一阶层ECC或是分别用于多个群组数据的多个ECC。
如上所述,第一阶层ECC以及第二阶层ECC中的每一个ECC,皆有相同长度。以131,072个页面进行估算,其中一个页面有512字节(4096个位),若前述的相同长度是30位,则所有页面中99.99%的错误可通过30位的第一阶层ECC侦测并且更正,而所有页面中剩余0.01%的错误可通过第二阶层ECC侦测并且更正。相较之下,若前述的相同长度减少至20位,则所有页面中95%的错误可通过20位的第一阶层ECC侦测并且更正,而所有页面中剩余5%的错误可通过第二阶层ECC侦测并且更正。因此,所有页面中5%的页面储存两个20位的替换ECC(第二阶层ECC),所有页面中95%的页面储存第一阶层ECC的位数减少了10个位。此分析可用于指定一实作方式中所需的替换ECC存储器的大小。
综上所述,虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视随附的权利要求范围所界定的为准。
Claims (7)
1.一种操作存储器的方法,包括:
接收一输入数据组;
储存用于该输入数据组的数据的一第一阶层错误更正码(ECC),以及储存用于该输入数据组的多个第二阶层群组数据的多个第二阶层ECC;
储存该输入数据组于该存储器;
测试该输入数据组以决定使用该第一阶层ECC或这些第二阶层ECC;
若使用该第一阶层ECC,储存一使用该第一阶层ECC的标识,若使用这些第二阶层ECC,储存一使用这些第二阶层ECC的标识;
储存这些第二阶层ECC于一替换ECC存储器;以及
储存一指针以指示这些第二阶层ECC于该替换ECC存储器的多个位置;
其中,该替换ECC存储器储存多个该存储器所储存其他数据组的第二阶层ECC;该第一阶层ECC以及各这些第二阶层ECC的长度相同。
2.根据权利要求1所述的方法,包括:
在储存该第一阶层ECC的步骤之前,计算该第一阶层ECC;以及
在储存这些第二阶层ECC的步骤之前,计算这些第二阶层ECC;
其中测试该输入数据组的步骤包括:
若该输入数据组的数据的一失败位数量小于一第一临界值,则决定使用该第一阶层ECC;以及
若该输入数据组的数据的该失败位数量大于等于该第一临界值且小于一第二临界值,则决定使用这些第二阶层ECC。
3.根据权利要求1所述的方法,包括:
计算用于该输入数据组的多个第三阶层群组数据的多个第三阶层ECC;以及
储存这些第三阶层ECC;
其中测试该输入数据组的步骤包括:
若该输入数据组的数据的一失败位数量小于一第一临界值,则决定使用该第一阶层ECC;
若该输入数据组的数据的该失败位数量大于等于该第一临界值且小于一第二临界值,则决定使用这些第二阶层ECC;以及
若该输入数据组的数据的该失败位数量大于等于该第二临界值且小于一第三临界值,则决定使用这些第三阶层ECC。
4.一种操作存储器的方法,包括:
读取一数据组、该数据组的一标识、一第一阶层ECC、多个第二阶层ECC,其中该标识用以指示使用该第一阶层ECC于该数据组的数据或是使用这些第二阶层ECC分别于该数据组的多个第二阶层群组数据;
若指示为该第一阶层ECC,使用该第一阶层ECC执行一ECC逻辑于该数据组;以及
若指示为这些第二阶层ECC,使用这些第二阶层ECC执行该ECC逻辑于该数据组;
其中,该ECC逻辑施加一序列的动作至该数据组内各这些第二阶层群组数据,使用这些第二阶层ECC执行该ECC逻辑的步骤包括:执行该ECC逻辑以施加该序列中的一第一动作至这些第二阶层群组数据中的一群组数据;以及执行该ECC逻辑以施加该序列中后续的一第二动作至该群组数据,并于此同时执行该ECC逻辑以施加该序列中的该第一动作至这些第二阶层群组数据中的另一群组数据。
5.一种存储器装置,包括:
一存储器,用以储存多个数据组,这些数据组包括至少一使用一第一阶层ECC的数据组,以及至少另一使用多个ECC分别于数据组内多个群组数据的数据组,其中各这些数据组的大小相同;
其中,该存储器储存一标识及一指针逻辑关联于一对应数据组的一地址,且这些ECC储存于一替换ECC存储器中,其中该标识指示使用该第一阶层ECC或这些ECC,该指针指示这些ECC于该替换ECC存储器中的多个位置,且该替换ECC存储器储存多个该存储器所储存其他数据组的多个ECC,其中该第一阶层ECC以及各这些ECC的长度相同。
6.根据权利要求5所述的存储器装置,包括一控制器耦接至该存储器,该控制器包括:
一第一逻辑电路,用以接收一输入数据组;
一第二逻辑电路,用以储存该输入数据组于该存储器;
一第三逻辑电路,用以储存一标识,该标识用以指示使用该第一阶层ECC于该输入数据组的数据或是使用这些ECC分别于该输入数据组的这些群组数据;
一第四逻辑电路,用以储存这些ECC于一替换ECC存储器中;
一第五逻辑电路,用以储存一指针,该指针用以指示这些ECC于该替换ECC存储器中的多个位置,其中该替换ECC存储器储存多个该存储器所储存其他数据组的多个ECC;
一第六逻辑电路,用以读取该输入数据组、该输入数据组的该标识、该第一阶层ECC、这些ECC,其中该标识用以指示使用该第一阶层ECC或这些ECC;
一第七逻辑电路,用以当指示为该第一阶层ECC时,使用该第一阶层ECC执行一ECC逻辑于该输入数据组;以及
一第八逻辑电路,用以当指示为这些ECC时,使用这些ECC执行该ECC逻辑于该输入数据组;
其中该ECC逻辑施加一序列的动作至该输入数据组内各这些群组数据,该第八逻辑电路包括:
一第九逻辑电路,用以执行该ECC逻辑以施加该序列中的一第一动作至这些群组数据中的一群组数据;以及
一第十逻辑电路,用以执行该ECC逻辑以施加该序列中后续的一第二动作至该群组数据,并于此同时执行该ECC逻辑以施加该序列中的该第一动作至这些群组数据中的另一群组数据。
7.根据权利要求5所述的存储器装置,包括一处理器耦接至该存储器,该处理器包括:
一第十一逻辑电路,用以计算并储存该第一阶层ECC,以及计算并储存这些ECC,这些ECC是多个第二阶层ECC;
一第十二逻辑电路,用以测试这些数据组其中的一输入数据组,以决定该输入数据组使用该第一阶层ECC或这些第二阶层ECC,该第十二逻辑电路包括:
一第十三逻辑电路,用以决定当该输入数据组的数据的一失败位数量小于一第一临界值时,使用该第一阶层ECC;以及
一第十四逻辑电路,用以决定当该输入数据组的数据的该失败位数量大于等于该第一临界值且小于一第二临界值时,使用这些第二阶层ECC;以及
一第十五逻辑电路,用以计算并储存用于这些数据组其中之一的多个第三阶层群组数据的多个第三阶层ECC。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/167,927 | 2014-01-29 | ||
US14/167,927 US9542268B2 (en) | 2014-01-29 | 2014-01-29 | Dynamic data density ECC |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104809031A CN104809031A (zh) | 2015-07-29 |
CN104809031B true CN104809031B (zh) | 2018-01-30 |
Family
ID=53679153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410116208.XA Active CN104809031B (zh) | 2014-01-29 | 2014-03-26 | 操作存储器的方法及存储器装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9542268B2 (zh) |
CN (1) | CN104809031B (zh) |
TW (1) | TWI527049B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10606713B2 (en) | 2018-01-03 | 2020-03-31 | International Business Machines Corporation | Using dual channel memory as single channel memory with command address recovery |
US10546628B2 (en) | 2018-01-03 | 2020-01-28 | International Business Machines Corporation | Using dual channel memory as single channel memory with spares |
US10853167B2 (en) | 2019-01-28 | 2020-12-01 | Winbond Electronics Corp. | Memory apparatus having hierarchical error correction code layer |
JP2020154728A (ja) | 2019-03-20 | 2020-09-24 | キオクシア株式会社 | メモリシステム及びその制御方法 |
US11409601B1 (en) | 2021-01-26 | 2022-08-09 | Micron Technology, Inc. | Memory device protection |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023901A (zh) * | 2009-09-11 | 2011-04-20 | 索尼公司 | 非易失性存储器装置、存储器控制器和存储器系统 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5359468A (en) * | 1991-08-06 | 1994-10-25 | R-Byte, Inc. | Digital data storage tape formatter |
JP4129381B2 (ja) | 2002-09-25 | 2008-08-06 | 株式会社ルネサステクノロジ | 不揮発性半導体記憶装置 |
US20060080515A1 (en) * | 2004-10-12 | 2006-04-13 | Lefthand Networks, Inc. | Non-Volatile Memory Backup for Network Storage System |
JP2007018563A (ja) * | 2005-07-05 | 2007-01-25 | Toshiba Corp | 情報記憶媒体、情報記録方法及び装置、情報再生方法及び装置 |
US8595573B2 (en) * | 2006-12-03 | 2013-11-26 | Apple Inc. | Automatic defect management in memory devices |
US8151163B2 (en) * | 2006-12-03 | 2012-04-03 | Anobit Technologies Ltd. | Automatic defect management in memory devices |
KR100873824B1 (ko) * | 2007-05-04 | 2008-12-15 | 삼성전자주식회사 | 오류 제어 코드 장치 및 그 방법 |
US8327249B2 (en) * | 2009-08-20 | 2012-12-04 | Broadcom Corporation | Soft error rate protection for memories |
JP5764392B2 (ja) * | 2011-06-13 | 2015-08-19 | 株式会社メガチップス | メモリコントローラ |
US8898548B1 (en) * | 2012-08-24 | 2014-11-25 | Western Digital Technologies, Inc. | Methods, data storage devices and systems having variable size ECC page size |
US9071281B2 (en) * | 2013-03-10 | 2015-06-30 | Intel Corporation | Selective provision of error correction for memory |
-
2014
- 2014-01-29 US US14/167,927 patent/US9542268B2/en active Active
- 2014-03-26 CN CN201410116208.XA patent/CN104809031B/zh active Active
- 2014-04-01 TW TW103112067A patent/TWI527049B/zh active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023901A (zh) * | 2009-09-11 | 2011-04-20 | 索尼公司 | 非易失性存储器装置、存储器控制器和存储器系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104809031A (zh) | 2015-07-29 |
TWI527049B (zh) | 2016-03-21 |
US20150212875A1 (en) | 2015-07-30 |
US9542268B2 (en) | 2017-01-10 |
TW201530554A (zh) | 2015-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101379566B (zh) | 用于修复高速缓存阵列中单元的装置、系统和方法 | |
CN104809031B (zh) | 操作存储器的方法及存储器装置 | |
JP5984989B2 (ja) | オンチップのnand型フラッシュメモリおよびその不良ブロック管理方法 | |
US8255773B2 (en) | System and method of tracking error data within a storage device | |
US8862953B2 (en) | Memory testing with selective use of an error correction code decoder | |
US9535785B2 (en) | ECC method for flash memory | |
US10248497B2 (en) | Error detection and correction utilizing locally stored parity information | |
US9146809B2 (en) | ECC method for double pattern flash memory | |
CN105144302A (zh) | 存储器装置中的错误校正操作 | |
CN101529526A (zh) | 用于估计和报告闪存盘存储器的预期寿命的方法 | |
US9772901B2 (en) | Memory reliability using error-correcting code | |
US9437327B2 (en) | Combined rank and linear address incrementing utility for computer memory test operations | |
CN110265074B (zh) | 一种层次化多重冗余的磁性随机存储器及其运行方法 | |
US9009548B2 (en) | Memory testing of three dimensional (3D) stacked memory | |
CN105206307B (zh) | 一种芯片修复方法和装置 | |
US10735030B2 (en) | Re-encoding data associated with failed memory devices | |
US11106532B1 (en) | Selective sampling of a data unit during a program erase cycle based on error rate change patterns | |
US11231990B2 (en) | Device and method for generating error correction information | |
CN105027084A (zh) | 在移动通信系统中控制存储器的装置和方法 | |
CN104810061B (zh) | 存储器及其操作方法 | |
CN106158031B (zh) | 半导体存储器以及数据写入方法 | |
US9519539B2 (en) | Monitoring data error status in a memory | |
CN104637542A (zh) | 储存对应于数据的错误更正码的存储器装置及其操作方法 | |
TWI523023B (zh) | 用於記憶體之錯誤校正碼方法 | |
CN102789817A (zh) | NAND Flash存储芯片的校验算法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |