CN104810061A - 存储器及其操作方法 - Google Patents
存储器及其操作方法 Download PDFInfo
- Publication number
- CN104810061A CN104810061A CN201410041249.7A CN201410041249A CN104810061A CN 104810061 A CN104810061 A CN 104810061A CN 201410041249 A CN201410041249 A CN 201410041249A CN 104810061 A CN104810061 A CN 104810061A
- Authority
- CN
- China
- Prior art keywords
- ecc
- data set
- extra
- predetermined value
- programmed
- 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.)
- Granted
Links
Landscapes
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种储存数据集(data set)以及数据集的ECC于存储器中的操作方法。此方法包括在将新数据写入在一数据集中时,如果储存新数据及事先在数据集中被编程的数据的一些可编址段包括至少一预定数目的可编址段,则计算并储存一ECC。此方法包括通过使用ECC及从ECC衍生出的一第一额外ECC位,来储存关于是否致能或禁能ECC的使用的多个指示。此方法包括从一数据集读取一扩展ECC(包括一ECC及从ECC衍生出的一第一额外ECC位),并依据为数据集所储存的指示而致能或禁能ECC的使用。此方法包括通过使用这些指示及一第二额外ECC位来致能空白数据集的ECC的使用。
Description
技术领域
本发明是有关于包括错误校正码(Error Correction Code,ECC)逻辑的存储器装置及系统,尤其是一种存储器及其操作方法,用于存储器的错误校正码方法。
背景技术
用于集成电路存储器的存储器技术正朝向体积越来越小的技术发展,且应用于单一集成电路的越来越大的存储器阵列上。随着存储单元(Memory Cell)的技术前进,用于感测数据的容限(Margin)会变成更严谨。又,在存储单元状态的扰动(由存取存储单元及存取邻近存储单元的高速及高容积所导致)存在时,存储单元保留数据值的能力(亦即,持久性)更受限于更严谨的容限。
当这些技术着重在尺寸及密度上时,为了处理因更严谨的容限及存储单元扰动而出现的关键问题,使用嵌入于集成电路存储器的错误校正码(ECC)已变得更普及。
通常将闪存设计成可通过区块擦除来一次擦除一区块。当擦除一区块时,区块中的存储单元被设定到逻辑值,例如1。在擦除了一区块之后,区块中的存储单元可被编程至不同数值,例如0。一旦存储单元被编程至0,对被编程存储单元的区块进行区块擦除可将存储单元改回至1。一旦一区块中的某些存储单元(例如区块的一选择的字节(byte)或字(word)中的晶胞)是在一第一编程操作期间被编程至0,在相同区块的不同字节或字中的其他存储单元(已知是处于擦除状态),仍然可在一第二编程操作期间被编程至0,而不需要预先擦除此区块。在本说明中,伴随着对相同区块中的不同位置所进行的第一编程操作及第二编程操作的一区块擦除,可被称为双重图案化。当然,当每个编程操作是针对此区块的一不同部分以达成一″多重图案化操作″时,区块擦除操作可以伴随着多重编程操作(两个以上)。
在双重或多重图案化操作中,一错误校正码(ECC)可在第一编程操作期间,被计算并编程于此区块中的一特定位置。然而,因为区块擦除的一存储器中的第二编程操作的关系,无法安全地改变ECC。ECC无法在第二编程操作中安全地被改变,这是因为一再计算出的ECC,必须将ECC中的至少一位从0(被编程状态)改变成1(擦除状态),且此改变将需要一区块擦除,这将擦除整个区块中的数据。
较好可以提供一种解决方法,用于确实地控制双重图案化及多重图案化操作的错误侦测及修正用的ECC逻辑的利用。
发明内容
一种存储器的操作方法包括:储存多个数据集(例如分页),以及数据集用的多个错误校正码ECC于存储器中,数据集包括多个可编址段(例如字或字节)。当将新数据写入在存储器中的一选择数据集的其中一个可编址段中时,如果储存新数据及事先在选择数据集中被编程的数据的一些可编址段包括至少一预定数目的可编址段,则可为选择数据集计算并储存一ECC。预定数目可以是选择数据集中的全部的可编址段。
多个指示可以与数据集一起被储存,数据集表示是否致能或禁能与数据集一起被储存的ECC的使用。这些指示可通过储存扩展ECC(例如128位数据用的xtECC[9:0])而被提供,扩展ECC包括数据集的ECC的一字段(例如128位数据用的xtECC[7:0])、从ECC衍生出的一第一额外ECC位的一字段(例如xtECC[8])以及一第二额外ECC位用一字段(例如xtECC[9])。对ECC执行一逻辑互斥函数(logical exclusive-OR function)而衍生出第一额外ECC位。扩展ECC可表示是否致能或禁能与数据集一起被储存的ECC的使用。
扩展ECC可具有一第一预定值(例如128位数据用的9′h000)、一第二预定值(例如128位数据用的9′h1C0)以及一计算值,第一预定值供第一额外位与ECC使用,表示一第一状态以禁能ECC的字段中的数据的使用,第二预定值供第一额外位与ECC使用,表示一第二状态,于其中扩展ECC原始具有等于第一预定值的一计算值,而计算值表示一第三状态,包括在ECC的字段中的多个计算出的ECC,以及在从计算出的ECC衍生出的第一额外ECC位的字段中的一位。
此方法包括:如果储存新数据及事先在选择数据集中被编程的数据的一些可编址段包括至少一预定数目(例如全部)的可编址段,则使用选择数据集的一扩展ECC的一计算值,且一错误状况不会发生(于此错误状况中,选择数据集已经于新数据用的可编址段被编程)。
此方法包括:如果选择数据集是事先于新数据用的可编址段被编程,则将扩展ECC设定成第一预定值,藉以表示禁能与选择数据集一起被储存的ECC的使用。此方法包括:如果扩展ECC等于第一预定值,且选择数据集并未于新数据的可编址段被编程,则将扩展ECC设定成第二预定值。
此方法更包括:将第二额外ECC位设定成一数值,用于表示选择数据集是在至少一可编址段中被编程。一空白或未被编程状态可起因于数据集的一区块擦除,以使位于空白ECC状态的一ECC包括所有″1″。在一区块擦除之后,第一额外ECC位亦包括一数值′1′。一ECC的一计算值亦可以是所有″1″,而ECC的第一额外ECC位应具有一数′0′,如于此所说明的。然而,在一保留错误的情况下,第一额外ECC位可错误地改变成′1′。在那种情况下,为了决定ECC的使用是否应被致能的,一读取操作无法分辨全为″1s″的ECC,以及具有一数值″1″的第一额外ECC位是否是计算值或位于擦除状态。第二额外ECC位从而用于表示选择数据集是否在至少一可编址段中被编程。
包括一ECC(例如128位数据的xtECC[7:0])、一第一额外ECC位(例如xtECC[8])以及一第二额外ECC位(例如xtECC[9])的一扩展ECC(例如128位数据的xtECC[9:0]),是可从一选择数据集被读取,于此第一额外ECC位是通过使用一逻辑函数而从ECC衍生出。如果ECC的逻辑函数等于第一额外ECC位,且ECC并不等于表示第一状态的第一预定值以禁能ECC的使用,则可致能与选择数据集一起被储存的ECC的使用。
此方法包括:将ECC设定成表示第一状态的第一预定值(例如9′h000),然后致能具有选择数据集的ECC的使用。逻辑函数可以是一逻辑互斥函数,如果ECC的逻辑函数并不等于第一额外ECC位,且ECC等于第二预定值(例如9′h1C0)(表示第二状态,其中ECC原始具有等于第一预定值的一计算值)的话。
此方法包括:读取第二额外ECC位,表示选择数据集是否在至少一可编址段中被编程;以及致能与选择数据集一起被储存的ECC的使用,如果ECC的逻辑函数并不等于第一额外ECC位、ECC等于表示一空白ECC状态的一空白值(例如8′hFF),以及第二额外ECC位表示选择数据集在至少一可编址段中被编程的话。一空白ECC状态可起因于数据集的一区块擦除,以使位于空白ECC状态的一ECC位于擦除状态,例如所有″1″。第一与第二状态用的第一与第二预定值是被预先决定成不同于空白值。
为了对本发明的上述及其他方面有更佳的了解,下文特举较佳实施例,并配合所附图式,作详细说明如下:
附图说明
图1是依据一实施例的一集成电路存储器的简化芯片方块图。
图2显示一存储器中的局部数据集编程操作。
图3是一存储器中的编程操作的流程图。
图4是使用扩展ECC的ECC产生的流程图。
图5是使用扩展ECC的读取操作的流程图。
【符号说明】
100:存储器
105:数据总线
110:控制器
120:偏压配置电源电压方块
130:总线
140:列译码器
145:字线
150:ECC逻辑
155:信号
160:数据集
165:位线
170:分页缓冲器
175:数据总线
190:输入/输出电路
210:第一局部数据集编程操作
211:其他地址
212:阵列的ECC
213:第一额外ECC位及第二额外位
220:第二局部数据集编程操作
221:其他地址
222:数据集的ECC
223:第一额外ECC位及第二额外位
230:最后局部阵列操作
232:ECC
233:第一额外ECC位
305、310、320、330、340、341、343、350、360、365、370、375、380、385、390:步骤
410、420、430、440、451、453、460、470、480、490:步骤
510、520、530、550、551、560、561、563、570、571:步骤
具体实施方式
以下参考附图而提供本发明的多个实施例的详细说明。
随着集成电路存储器中的存储单元的技术尺寸缩小,用于感测数据的容限会变得更严谨,因而在存储单元状态的扰动(由存取存储单元及存取邻近存储单元的高速及高容积所导致)存在时,限制了存储单元保留数据值的能力。为了处理起因于更严谨的容限与存储单元扰动的议题,可使用嵌入于集成电路存储器的错误校正码(ECC)。
一种完整数据集编程操作是将位于数据集中的每个地址的数据集予以编程。当利用完整数据集编程操作而编程一数据集(例如一分页的存储单元)时,可计算出此数据集的ECC并与数据集一起被储存。一局部数据集编程操作系用于将位于数据集中的某些而非所有地址的数据集予以编程。当利用一第一局部数据集编程操作而编程一数据集时,可计算出此数据集的ECC并与数据集一起被储存。然而,当利用一在第一局部数据集编程操作之后的第二局部数据集编程操作来编程数据集时,此数据集的ECC将无法被更新(理由于底下说明之),从而对利用多重局部数据集编程操作而编程的数据集使用ECC可能失败。
本技术通过使用扩展错误校正码ECC来提供控制逻辑,用于致能由多重局部数据集编程操作而编程的数据集的ECC的使用,扩展的错误校正码ECC包括数据集的ECC、每一个数据集的一第一额外ECC位及一第二额外ECC位。
图1是依据一实施例的一集成电路存储器的简化芯片方块图。在图1所显示的例子中,一存储器100储存多个数据集160,这些数据集160包括多个可编址段以及数据集的扩展错误校正码ECC。扩展ECC包括数据集的ECC、每一个数据集的一第一额外ECC位及一第二额外ECC位。
在图1所显示的例子中,使用一偏压配置状态机的控制器110,是利用方块120的电压源或电源供应所产生或提供的电源电压而控制偏压配置(例如读取及程序电压)的施加。控制器110被耦接至分页缓冲器170、ECC逻辑150以及具有扩展ECC(包括第一与第二额外ECC位)的数据集160。ECC逻辑150是经由多个信号155而耦接至分页缓冲器170。
在一编程模式中,控制器110所包括的逻辑在将新数据写入在存储器中的一选择数据集的其中一个可编址段时,可为选择数据集计算并储存一ECC,如果储存新数据及事先在选择数据集中被编程的数据的一些可编址段包括至少一预定数目的可编址段的话。预定数目的可编址段可以是选择数据集的全部可编址段。举例而言,如图2所示,对一最后的局部阵列操作(例如230)而言,储存新数据(例如最终字wordx)及事先在选择数据集中被编程的数据(例如word0至wordx-1)的一些可编址段包括选择数据集的全部可编址段。因此,选择的数据集的ECC(232)是被计算出并与选择数据集一起被储存。
多个指示可以与数据集一起被储存,这些指示表示是否致能或禁能与数据集一起被储存的ECC的使用。这些指示可通过储存扩展ECC(包括数据集的ECC的一字段,以及从ECC衍生的一第一额外ECC位的一字段)而提供。扩展ECC表示是否致能或禁能与数据集一起被储存的ECC的使用。控制器110另包括一逻辑,此逻辑储存选择数据集用的一第二额外ECC位,以表示选择数据集是在至少一可编址段中被编程。
在一读取模式中,控制器110包括逻辑,此逻辑从一选择数据集读取一扩展ECC(包括一ECC及一第一额外ECC位),于此,第一额外ECC位是通过使用一逻辑函数(Logical Function)而从ECC衍生出。如果ECC的逻辑函数等于第一额外ECC位,且ECC并不等于指示将ECC使用禁能的一第一状态的一第一预定值,则控制器110所包括的逻辑可致能ECC(其与选择数据集一起被储存)的使用。通过使用第二额外ECC位,控制器110所包括的逻辑可致能一空白数据集的ECC的使用。
控制器110可通过使用如已知技艺已知的特殊用途逻辑电路(Special-Purpose Logic Circuitry)而被实施。在替代实施例中,控制逻辑包括可在相同的集成电路上被实施的一通用处理器(General-PurposeProcessor),通用处理器执行一计算机程序以控制此装置的操作。在又其他实施例中,可利用特殊用途逻辑电路及通用处理器的组合来实行控制逻辑。
在图1所显示的例子中,一列译码器140被耦接至多个条字线145,并沿着数据集160中的列而排列。分页缓冲器170被耦接至多个条沿着数据集160中的多行排列的位线165,用于从数据集160读取数据并写入数据至数据集160。多个地址是在总线130上从控制器110被提供至分页缓冲器170与列译码器140。分页缓冲器170可包括耦接至数据集160与总线130的行译码器,以及读取操作用的多个感测放大器,以及耦接至行译码器的编程操作的程序缓冲器。于此例子中,分页缓冲器170是经由数据总线175而耦接至输入/输出电路190。输入/输出电路190将数据驱动至存储器100外部的目标。输入/输出数据及控制信号是透过数据总线105而移动,数据总线105介于输入/输出电路190、存储器100上的控制器110及输入/输出端口或存储器100内部或外部的其他数据源(例如一通用处理器或特殊用途应用电路,或者提供由数据集160所支持的系统单芯片功能的模块的一组合)之间。
图2显示依据本实施例的存储器中的局部数据集编程操作。在图2所显示的例子中,存储器储存例如分页的数据集。数据集包括多个可编址段(例如字或字节),以及该存储器的这些数据集的错误校正码ECC。每个数据集亦可包括一第一额外ECC位及一第二额外位。如在本发明所说明的,一数据集包括一扩展ECC,而扩展ECC包括一数据集的一ECC、一第一额外ECC位以及一第二额外位。在图2所显示的例子中,在一第一局部数据集编程操作(例如210)期间,一第一字(例如word0)是于一数据集中的一第一地址被编程,而数据集中的其他地址维持未被编程(例如211)。阵列的ECC(例如212)在第一局部数据集编程操作期间并未被编程,且维持于一空白或未被编程状态。在第一局部数据集编程操作(例如210)之后,第一额外ECC位及第二额外位(例如213)亦维持于一空白或未被编程状态。
一空白ECC状态可起因于数据集的一区块擦除,以使位于空白ECC状态的一ECC包括擦除状态值,例如全部为″1s″。举例而言,如果一ECC包括8位,则ECC的空白ECC状态等于″11111111″或擦除状态值。在一区块擦除之后,ECC可具有指示空白ECC状态的一空白值(例如″11111111″)。如于此所说明的数据集的第一额外ECC位及第二额外ECC位,亦可在一区块擦除之后具有一擦除数值(例如′1′)。不同位计数的ECC对应至不同长度数据,举例而言,8位ECC系用于128位的数据。对一数据集的8位ECC而言,数据集的扩展ECC包括10位,其包括ECC的8位,第一额外ECC位的1位以及第二额外ECC位的1位。
在一第二局部数据集编程操作(例如220)期间,一第二字(例如word1)是于数据集的一第二地址被编程,而数据集的其他地址维持未被编程(例如221)。数据集的ECC(例如222)在第二局部数据集编程操作期间并未被编程,且维持于一空白ECC状态。第一额外ECC位及第二额外位(例如223)亦在第二局部数据集编程操作(例如220)之后,维持于一空白或未被编程状态。
可执行额外局部数据集编程操作,以将数据集中的更多字予以编程,直到数据集是于此阵列中的全部的地址被编程为止。如图2所示,在一最后的局部阵列操作(例如230)中,在第二字(例如word1)与最终字(例如wordx)两者之间的字(例如word2~wordx-1)在数据集中被编程之后,一最终字(例如wordx)是于数据集的一最后地址被编程。当数据集的最终字(例如wordx)被编程时,数据集的ECC(例如232)系被计算出并与数据集一起被储存。第一额外ECC位(例如233)亦可在最后的局部数据集编程操作(例如230)期间被计算出并与数据集一起被储存。因此,在一读取操作期间,当利用多重局部数据集编程操作来将数据集编程时,可致能与数据集一起被储存的ECC的使用。第一额外ECC位及第二额外位是参考图4及图5而更进一步作说明。更特别是,在数据集的至少一地址被编程时,第二额外位是被编程。
于一实施例中,数据集中的地址朝第一字至最终字的方向增加,于此第一字是位于最低地址,而最终字是位于数据集中的最高地址。在一替代实施例中,数据集中的地址朝最终字至第一字的方向增加,于此第一字是位于最高地址,而最终字是位于数据集中的最低地址。
结合图3、图4及图5说明控制逻辑,此控制逻辑用于在一数据集中的最终字被编程时计算并储存ECC,且用于在一读取操作期间致能与数据集一起被储存的ECC的使用。
图3是存储器的编程操作的流程图。在图3所显示的例子中,于步骤305,接收到存储器的一选择数据集的其中一个可编址段的新数据。于步骤310,决定新数据的编程操作是否为一完整数据集编程操作或一局部数据集编程操作。如果新数据用的编程操作是一完整数据集编程操作(步骤310,是),则于步骤320为新数据计算一错误校正码ECC。于步骤330,检查数据集是否于任何地址被编程。如果数据集并未于任何地址被编程,则数据集被称为空白。如果数据集是空白的(步骤340,是),则于步骤341,数据集是与新数据及从此数据集所计算出的ECC一起被编程。如果数据集是于任何地址被编程或不是空白的(步骤340,否),则于步骤343,数据集是与新数据一起被编程,且ECC被设定为一第一预定值(例如9′h00),其指示禁能ECC的使用的一第一状态。第一状态是更进一步结合图4作说明。或者,用于为新数据计算ECC的步骤320,是可在步骤340之后(当决定数据集是空白时)以及在步骤341之前(当ECC被编程时)被执行。
如果新数据的编程操作并非是一完整数据集编程操作而是一局部数据集编程操作(步骤310,否),则于步骤350,检查数据集,以决定是否新数据的地址是空白的或被编程。如果数据集于新数据的地址并非是空白的(步骤360,否),则数据集是于这些地址与新数据一起被编程,且ECC被设定到第一预定值(例如9′h00),其指示禁能ECC的使用的第一状态(步骤365)。第一状态是更进一步结合图4作说明。
如果数据集于新数据的地址是空白的(步骤360,是),则决定数据集是否于数据集的第一地址或最后地址被编程(步骤370)。如果数据集是于数据集的第一地址或最后地址被编程(步骤370,是),则更进一步决定数据集是否于不是新数据的地址的其他地址是空白的(步骤380)。如果不是(步骤380,否),则新数据及于数据集中的其他地址事先被编程的数据可填满数据集。因此,如果储存新数据及事先在选择数据集中被编程的数据的可编址段包括至少一预定数目的可编址段,则为选择数据集的ECC计算出一数值(步骤385)。预定数目可以是选择数据集中的全部的可编址段。于步骤390,数据集是与新数据及选择数据集的ECC一起被编程。
如果数据集于第一地址并未被编程,且于数据集的最后地址并未被编程(步骤370,否),或如果数据集于某些地址(非新数据用的地址)是空白的(步骤380,是),则新数据与事先在选择数据集中被编程的数据无法填满数据集。因此,新数据是被编程(步骤375),但并不计算ECC,直到新数据与事先在选择数据集中被编程的数据可填满选择数据集为止。
十六进制及二进制的表示法系使用于本发明中。举例而言,″8′hFF″是一8位二进制数″8′b11111111″的十六进制的表示法,于此二进制数中的每个位具有一数值′1′。″8′hFF"或″8′b11111111″中的″8″表示位数。″8′hFF″中的″h″表示十六进制的,而″8′b11111111″中的″b″表示二进制的。在"8′hFF″中的″h″之后的数字是十六进制数字。在″8′b11111111″中的″b″之后的数字是二进制数。十六进制数字包括16个数值:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E及F,分别等于二进制中的0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110及1111。因此,十六进制中的"8′hFF″、″8′h00″及"8′hC0″是分别等于二进制中的″8′b11111111″、″8′b00000000″及″8′b11000000″。对另一个例子而言,1′b0是只包括具有数值′0′的1位的二进制数,而1′b1是只包括具有数值′1′的1位的二进制数。
图4是使用扩展ECC的ECC产生的流程图。在图4所显示的例子中,一数据集具有128位数据,而数据的ECC具有8个位。多个指示可与数据集一起被储存,以表示是否致能或禁能ECC(与数据集一起被储存)的使用。这些指示可通过储存扩展ECC(例如128位数据用的xtECC[9:0])而提供,扩展ECC包括数据集的ECC的一字段(例如xtECC[7:0])、从ECC衍生出的一第一额外ECC位的一字段(例如xtECC[8])以及一第二额外ECC位的一字段(例如xtECC[9])。第一额外ECC位可以通过对ECC执行逻辑互斥函数(XOR)而衍生出。ECC的长度随着数据长度改变,且因此扩展ECC的长度随着数据长度而改变。例如,在一替代实施例中,256位数据的ECC具有9个位(例如xtECC[8:0]),而256位数据的扩展ECC具有11个位(例如xtECC[10:0]),包括第一额外位(例如xtECC[9])及第二额外位(例如xtECC[10])。
扩展ECC可具有一第一预定值(例如9′h000)、一第二预定值(例如9′h1C0)以及一计算值;第一预定值指示禁能ECC的字段中的数据的一第一状态;第二预定值指示一第二状态,于其中扩展ECC原始具有一等于第一预定值的计算值;而计算值指示一第三状态,其包括多个在ECC字段中的计算出的ECC及在从计算出的ECC衍生出的第一额外ECC位的字段中的一位。于此例子中,第一预定值及第二预定值两者系128位数据的扩展ECC中的第一额外位与ECC。
第一、第二及第三状态是总结在图4的表格中。当ECC被设定到第一预定值(例如9′h000)以禁能ECC的使用时,第一状态对应至步骤460的是(Yes)分支及步骤470。当ECC被设定到第二预定值(例如9′h1C0)以表示ECC原始为等于第一预定值的计算值时,第二状态对应至步骤440的是(Yes)分支及步骤451。当致能计算出的ECC的使用时,第三状态对应至步骤440的否(No)分支及步骤453。
ECC产生的流程于步骤410开始,于此,是通过如图3所示的步骤341、343、390、375及365来决定是否计算数据集的ECC。于此所说明的多个理由,决定结果可以是不要计算一ECC(步骤410,否),如对应于步骤375、343及365,或要计算一ECC(步骤410,是),如对应于步骤341及390。
如果决定是不要计算ECC(步骤410,否),则更进一步决定是否禁能读取操作的ECC的使用(步骤460)。此决定可以是不要禁能一读取操作的ECC的使用(步骤460,否),因为局部数据集编程操作尚未编程一完整数据集(步骤375)。如果此决定是不要禁能一读取操作的ECC的使用(步骤460,否),则如于步骤305所接收的新数据是在存储器中被编程,而不需要储存任何新数据的ECC(步骤480)。此决定可以是禁能一读取操作的ECC的使用(步骤460,是),因为一数据集对一完整数据集编程操作而言并非是空白的(步骤343),或因为一数据集对一局部数据集编程操作而言是于新数据用的地址被编程(步骤365)。如果此决定是禁能一读取操作的ECC的使用(步骤460,是),则于步骤470,将第一额外位与数据集的扩展ECC中的ECC设定到第一预定值(例如xtECC[8:0]=9′h000),藉以指示在一读取操作中,禁能ECC(与数据集一起被储存)的使用。
如果于步骤410的决定是计算一ECC(步骤410,是),如对应于一完整数据集编程操作的步骤341,或对应于一局部数据集编程操作(编程数据集中的最终字)的步骤390,则于步骤420,计算数据集的ECC的数值。于步骤430,此数值是由来自ECC的第一额外ECC位所衍生出。此数值可通过对ECC执行一逻辑互斥函数(XOR)(例如xECC[8]=XOR(xtECC[7:0])而衍生出。包括第一额外ECC位与ECC的扩展ECC,是可被使用在一读取操作中,用于表示是否致能或禁能ECC(与数据集一起被储存)的使用。
于步骤440,决定ECC是否等于表示第一状态的第一预定值,如步骤470中所使用的。如果是的话(步骤440,是),则一特殊情况发生,于此扩展ECC用的计算值可以是9′h000,对应于步骤470的第一状态,从而错误地指示禁能ECC的使用。为了解决特殊情况,将扩展ECC中的第一额外位与ECC设定到指示一第二状态的第二预定值(例如xtECC[8:0]=9′h1C0),于其中扩展ECC原始具有等于第一预定值的计算值。在如结合图5所说明的一读取操作中,特殊情况是相反的(步骤550及551,图5)。如果ECC并不等于表示第一状态的第一预定值,则于步骤453,包括第一额外ECC位与ECC的扩展ECC是不变的。
在步骤451、453或470以后,第二额外ECC位可被设定到指示被编程状态的数值(例如xtECC[9]=1′b0),用于表示选择数据集是在至少一可编址段中被编程,因此,数据集并非是一空白数据集。第二额外ECC位因此可用来保护一空白数据集,如结合图5所说明的。于步骤305所接收的新数据与新数据的扩展ECC(例如xtECC[9:0]),是可在存储器的数据集中被编程(步骤490)。
图5是使用扩展ECC的读取操作的流程图。在图5所显示的例子中,从存储器读取一数据集中的数据(例如128位数据)与扩展ECC(例如xtECC[9:0]);扩展ECC包括一数据集中的数据的ECC(例如xtECC[7:0])、一第一额外ECC位(例如xtECC[8])以及一第二额外ECC位(例如xtECC[9])(步骤510)。第一额外ECC位是通过使用一逻辑函数而从ECC衍生出。用于衍生储存于数据集的第一额外ECC位所用的相同逻辑函数系对ECC执行,且接着决定从数据集读取的第一额外ECC位是否等于来自逻辑函数的结果(步骤520)。
在读取流程中所使用的第一状态、第二状态、第三状态及一空白ECC状态系总结在图5的表格中。当禁能ECC的使用时,第一状态对应至步骤560的是(Yes)分支及步骤561。当ECC被反转至等于表示第一状态的第一预定值的原始数值时,第二状态对应至步骤550的是(Yes)分支及步骤551。当致能计算出的ECC的使用时,第三状态对应至步骤563。
如果从数据集读取的第一额外ECC位(例如xtECC[8])等于来自逻辑函数的结果(步骤520,是),则更进一步决定ECC是否等于表示第一状态的第一预定值(例如xtECC[7:0]=8′h00)。如果不是的话(步骤560,否),则扩展ECC(例如xtECC[8:0])表示数据集是通过一完整数据集编程操作(步骤341)或编程数据集中的最终字的一局部数据集编程操作(步骤390)而与ECC一起被编程。因此,致能ECC(与数据集一起被储存)的使用(步骤563)。
于步骤560,如果ECC等于表示第一状态的第一预定值(例如xtECC[7:0]=8′h00),则并未致能ECC(与数据集一起被储存)的使用(步骤561),其乃因为第一状态表示禁能ECC的字段中的数据的使用(步骤470、图4)。
如果从数据集读取的第一额外ECC位(例如xtECC[8])并不等于来自逻辑函数的结果(步骤520,No),则可表示ECC等于指示第二状态的第二预定值(xtECC[7:0]=8′hC0),ECC等于指示空白ECC状态的空白值(xtECC[7:0]=8′hFF),或扩展ECC由于一保留错误已改变。更进一步决定ECC是否等于表示第一状态的第一预定值(例如xtECC[7:0]=8′h00)。如果是的话(步骤530,是),则并未致能与数据集一起被储存的ECC的使用(步骤540)。如果不是的话(步骤530,否),则更进一步决定ECC等于是否指示第二状态的第二预定值(例如xtECC[7:0]=8′hC0),如为特殊情况所设定的(步骤451,图4)。如果ECC等于指示第二状态的第一预定值(步骤550,是),则将ECC设定到第一预定值(例如xtECC[7:0]=8′h00),然后,致能与数据集一起被储存的ECC的使用(步骤551)。
如果ECC并不等于指示第二状态的第二预定值(步骤550,否),则于步骤570,更进一步决定ECC是否等于指示一空白ECC状态的空白值(例如xtECC[7:0]=8′hFF)。如果ECC并不等于指示一空白ECC状态的空白值,则不致能与数据集一起被储存的ECC的使用(步骤561)。
于步骤570,如果ECC等于指示一空白ECC状态的空白值(例如xtECC[7:0]=8′hFF),则更进一步决定第二额外ECC位是否被编程(例如xtECC[9]=1′b0),藉以指示数据集不是空白的。如果数据集不是空白的(步骤571,否),则不致能与数据集一起被储存的ECC的使用(步骤561)。因为数据集不是空白的,所以已发生一项错误,如由从数据集读取的第一额外ECC位不等于来自逻辑函数的结果(步骤520,否)的事实所表示的。如果数据集是空白的(例如xtECC[9]=1′b1。步骤571,是),则与数据集一起被储存的ECC的使用是一空白数据集而致能(步骤572),从而保护一数据集中的一空白数据图案。
综上所述,虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视随附的权利要求范围所界定的为准。
Claims (10)
1.一种存储器的操作方法,包括:
储存多个数据集以及这些数据集的多个错误校正码(ECC)于该存储器中,这些数据集包括多个可编址段;以及
当将新数据写入在该存储器中的一选择数据集的这些可编址段的其中一个可编址段中时,如果储存该新数据及事先在该选择数据集中被编程的数据的可编址段包括至少一预定数目的可编址段的话,则计算并储存该选择数据集的一ECC。
2.根据权利要求1所述的方法,包括:储存多个指示于这些数据集,这些指示表示是否致能或禁能与这些数据集一起被储存的这些ECC的使用。
3.根据权利要求1所述的方法,包括:储存多个扩展ECC,包括这些数据集的这些ECC的一字段,以及从该ECC衍生出的一第一额外ECC位的一字段。
4.根据权利要求3所述的方法,其中这些扩展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原始具有等于该第一预定值的一计算值。
7.根据权利要求5所述的方法,包括:
读取一第二额外ECC位,该第二额外ECC位表示该选择数据集是否在至少一可编址段中被编程;以及
如果该ECC的该逻辑函数不等于该第一额外ECC位,该ECC等于表示一空白ECC状态的一空白值,且该第二额外ECC位表示该选择数据集是空白的话,则致能与该选择数据集一起被储存的这些ECC的使用。
8.一种存储器,包括:
多个数据集,包括多个可编址段,以及该存储器中的这些数据集的多个错误校正码(ECC);以及
一控制器,耦接至这些数据集,包括逻辑,该逻辑在将新数据写入在该存储器中的一选择数据集的这些可编址段的其中一个可编址段中时,如果储存该新数据及事先在该选择数据集中被编程的数据的一些可编址段包括至少一预定数目的可编址段的话,则计算并储存该选择数据集的一ECC。
9.根据权利要求8所述的存储器,其中
该控制器包括:
一逻辑,储存多个扩展ECC,这些扩展ECC包括这些数据集的这些ECC的一字段,以及从该ECC衍生出的一第一额外ECC位的一字段,这些扩展ECC具有一第一预定值、一第二预定值以及一计算值,该第一预定值表示一第一状态,用于禁能这些ECC的该字段中的该数据的使用,该第二预定值表示一第二状态,于其中这些扩展ECC原始具有等于该第一预定值的一计算值,而该计算值表示一第三状态,包括在这些ECC的该字段中的多个计算出的ECC,以及在从该计算出的ECC衍生出的该第一额外ECC位的在该字段中的一个位;
一逻辑,使用该选择数据集的一扩展ECC的一计算值,如果储存该新数据及事先在该选择数据集中被编程的数据的可编址段包括至少一预定数目的可编址段,且该选择数据集已经于该新数据的该可编址段被编程的一错误状况不会发生的话;
一逻辑,其将该扩展ECC设定成该第一预定值,藉以表示禁能与该选择数据集一起被储存的这些ECC的使用,如果该选择数据集是于该新数据的该可编址段事先被编程的话;
一逻辑,将该扩展ECC设定成该第二预定值,如果该扩展ECC等于该第一预定值且该选择数据集并未于该新数据的该可编址段被编程的话,这些扩展ECC包括一第二额外ECC位用的一字段;以及
一逻辑,该逻辑将该第二额外ECC位设定成一数值,以表示该选择数据集是在至少一可编址段中被编程。
10.根据权利要求8所述的存储器,其中
该控制器包括:
一逻辑,用于从一选择数据集读取包括一ECC及一第一额外ECC位的一扩展ECC,其中该第一额外ECC位是通过使用一逻辑函数而从该ECC衍生出;
一逻辑,用于致能与该选择数据集一起被储存的该ECC的使用,如果该ECC的该逻辑函数等于该第一额外ECC位,且该ECC并不等于一第一预定值的话,该第一预定值表示一第一状态以禁能这些ECC的使用;
一逻辑,将该ECC设定成该第一预定值,然后致能具有该选择数据集的该ECC的使用,如果该ECC的该逻辑函数并不等于该第一额外ECC位,且该ECC等于一第二预定值,该第二预定值表示该ECC原始具有等于该第一预定值的一计算值的一第二状态;
一逻辑,读取一第二额外ECC位,该第二额外ECC位表示该选择数据集是否在至少一可编址段中被编程;以及
一逻辑,致能与该选择数据集一起被储存的这些ECC的使用,如果该ECC的该逻辑函数并不等于该第一额外ECC位、该ECC等于表示一空白ECC状态的一空白值,以及该第二额外ECC位表示该选择数据集是空白的话。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410041249.7A CN104810061B (zh) | 2014-01-28 | 2014-01-28 | 存储器及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410041249.7A CN104810061B (zh) | 2014-01-28 | 2014-01-28 | 存储器及其操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104810061A true CN104810061A (zh) | 2015-07-29 |
CN104810061B CN104810061B (zh) | 2018-08-24 |
Family
ID=53694834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410041249.7A Active CN104810061B (zh) | 2014-01-28 | 2014-01-28 | 存储器及其操作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104810061B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255633A (zh) * | 2016-12-28 | 2018-07-06 | 旺宏电子股份有限公司 | 存储控制方法、存储装置 |
CN111209137A (zh) * | 2020-01-06 | 2020-05-29 | 支付宝(杭州)信息技术有限公司 | 数据访问控制方法及装置、数据访问设备及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6883131B2 (en) * | 2001-09-28 | 2005-04-19 | Sun Microsystems, Inc. | XOR processing incorporating error correction code data protection |
US20080158984A1 (en) * | 2006-12-29 | 2008-07-03 | Nima Mokhlesi | Margined neighbor reading for non-volatile memory read operations including coupling compensation |
TW200929240A (en) * | 2007-12-26 | 2009-07-01 | Macronix Int Co Ltd | Memory module and writing and reading method thereof |
US7823044B2 (en) * | 2003-12-04 | 2010-10-26 | Texas Instruments Incorporated | Method for streamlining error connection code computation while reading or programming a NAND flash memory |
US20110055647A1 (en) * | 2009-08-27 | 2011-03-03 | Kabushiki Kaisha Toshiba | Processor |
US20130262958A1 (en) * | 2012-03-30 | 2013-10-03 | Joshua D. Ruggiero | Memories utilizing hybrid error correcting code techniques |
-
2014
- 2014-01-28 CN CN201410041249.7A patent/CN104810061B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6883131B2 (en) * | 2001-09-28 | 2005-04-19 | Sun Microsystems, Inc. | XOR processing incorporating error correction code data protection |
US7823044B2 (en) * | 2003-12-04 | 2010-10-26 | Texas Instruments Incorporated | Method for streamlining error connection code computation while reading or programming a NAND flash memory |
US20080158984A1 (en) * | 2006-12-29 | 2008-07-03 | Nima Mokhlesi | Margined neighbor reading for non-volatile memory read operations including coupling compensation |
TW200929240A (en) * | 2007-12-26 | 2009-07-01 | Macronix Int Co Ltd | Memory module and writing and reading method thereof |
US20110055647A1 (en) * | 2009-08-27 | 2011-03-03 | Kabushiki Kaisha Toshiba | Processor |
US20130262958A1 (en) * | 2012-03-30 | 2013-10-03 | Joshua D. Ruggiero | Memories utilizing hybrid error correcting code techniques |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255633A (zh) * | 2016-12-28 | 2018-07-06 | 旺宏电子股份有限公司 | 存储控制方法、存储装置 |
CN111209137A (zh) * | 2020-01-06 | 2020-05-29 | 支付宝(杭州)信息技术有限公司 | 数据访问控制方法及装置、数据访问设备及系统 |
CN111209137B (zh) * | 2020-01-06 | 2021-09-17 | 支付宝(杭州)信息技术有限公司 | 数据访问控制方法及装置、数据访问设备及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104810061B (zh) | 2018-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9535785B2 (en) | ECC method for flash memory | |
US9760434B2 (en) | ECC method for double pattern flash memory | |
EP2449468B1 (en) | System and method of tracking error data within a storage device | |
CN105144302A (zh) | 存储器装置中的错误校正操作 | |
CN102132354B (zh) | 闪存中的数据的快速低功率读取 | |
US9507662B2 (en) | Expanded error correction codes | |
CN103871447A (zh) | 与非门快闪存储器阵列及芯片及其存取、读取及管理方法 | |
CN103119569A (zh) | 基于存储条的非易失性多级存储器操作 | |
CN101794256A (zh) | 非易失性存储器子系统及其存储器控制器 | |
CN101908376B (zh) | 非挥发性存储装置及其控制方法 | |
CN109426441B (zh) | 数据储存装置以及其操作方法 | |
EP1994470B1 (en) | Electronic circuit with a memory matrix that stores pages including extra data | |
CN105005450A (zh) | 数据写入方法、存储器存储装置及存储器控制电路单元 | |
CN105320464A (zh) | 防止读取干扰的方法、存储器控制电路单元与存储装置 | |
CN104517654A (zh) | 半导体存储器件和包括其的半导体系统 | |
CN102483710A (zh) | 纠错 | |
US8966344B2 (en) | Data protecting method, memory controller and memory storage device | |
CN104809031B (zh) | 操作存储器的方法及存储器装置 | |
CN104810061A (zh) | 存储器及其操作方法 | |
CN109119126B (zh) | 半导体器件和错误管理方法 | |
US11669392B2 (en) | Non-volatile memory | |
JP4582078B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
KR20150072043A (ko) | 반도체 장치 | |
CN104637542B (zh) | 储存对应于数据的错误更正码的存储器装置及其操作方法 | |
US20140195874A1 (en) | Memory system |
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 |