用于解码码字的方法、设备和计算机程序的制作方法

文档序号:6359426阅读:173来源:国知局
专利名称:用于解码码字的方法、设备和计算机程序的制作方法
技术领域
本发明涉及用于解码码字的方法、设备和计算机程序。更具体地,本发明涉及已经使用纠错码生成的码字的数据纠错的方法。
背景技术
不依赖于闪速存储器制造者,闪速存储器面临不可忽略的原始误码率。过去的研究活动已经研究和识别这些原始误码的原因,原始误码包括隧穿和热电子注入的程序干扰、量子能级噪声效应、不稳定隧穿(erratic tunneling)、由于应力感应的漏电流(SILC)和读取干扰的数据保持、以及去陷感应保持(detrapping-induced retention)。适当放置纠错码(ECC),以便实现更好可靠性。里德所罗门(RS)或博斯-查德胡里-霍昆格母(BCH)码可以用于该目的。一些硬件制造者明确建议使用4位ECC。 ECC特征在于它们可以校正的错误数(t_c)以及它们能够检测的错误数(t_d),其中t_c〈=t_d。如果发生数据块中比它们可以检测到的更多错误,那么存在更高误校正的风险。可以通过相应地选择ECC的参数,减小出现比可以校正的更多错误的可能性。ECC解码器接收编码的码字,并且从其计算告知编码的码字是否包括一个或多个错误的值。在该计算之后,ECC解码器可以尝试解码码字。不稳定码字的解码结果可以是-解码正确码字-称为擦除的解码失败事件,例如不能校正码字,或者-导致不正确码字的误校正。设计用于特定应用的ECC,以便将误校正的可能性减小到可接受的水平。在此检测擦除比进行误校正更好。在擦除的情况下,更高级ECC (像诸如RAID的C2码)可以用于检测和恢复这些情况。由 N. Mielke、T. Marquart> N. Wu> J. Kessenich、H. Belgal、E. Schares> F. Trivedi、E Goodness和L. R. Nevill在IEEE第46界年度国际可靠性物理研讨会(菲尼克斯,2008年)上发表的“Bit Error Rate in NAND Flash Memories”包括基于闪速存储器的多层单兀(MLC)中的错误模式的调查。来自四种类型的基于MLC的NAND闪速存储器器件的分析的结果显示三种类型的错误,即导致单元用比预定的更高阈值电压编程的写错误、由于浮置栅极的电子损失的保持错误、以及由于施加到块中所有取消选择的字线的特定电压的读干扰错误。这些错误类型导致在阈值电压向上或向下移动一个级别的意义上的位错误。在Jen-Wei Hsieh、Tei-Wei Kuo、Hsiang-Chi Hsieh 的文章 “Apparatusfor improving Data Access Reliability of Flash Memory” (美国专利申请US2007/0266298A1,2007年11月)中,提出了一种方法,其使用阈值电压的精确值,以指示测量的电压是否在合理范围。如果否,那么读取的单元将标记为可疑的。该信息然后可以用在ECC解码中,以指示错误在何处,并且因此改进数据存取可靠性。该方法意味着直接集成在闪存芯片上,因为需要对于精确阈值电压值的存取。如果测量的阈值电压精确匹配错误级别,那么该方法不能检测错误位置。
US5475693指向用于闪速EEPROM存储器阵列的错误管理处理。其描述了在错误可能影响由该闪速EEPROM存储器阵列提供的数据的精度之前,利用错误检测和校正电路来检测和校正可能在闪速EEPROM存储器阵列中出现在以每单元多位格式存储的数据中错误的方法。该方法包括检测正在读取的阵列的扇区中存在的错误,如果没有检测到错误则终止检测处理,如果检测到小于第一数目的错误则校正错误,如果检测到大于第一数目的错误则重试阵列的扇区中的错误检测,如果检测到大于第一数目的错误的第二数目的错误则在重试之后校正错误,如果检测到大于第二数目的错误但是小于第三数目的错误(其是能够校正的最大的错误检测处理)则标记阵列块为可疑的,然后校正检测到的错误。该方法通过重试(包括以更低读取速度重试),尝试从大于给定数目的错误恢复。如果重试失败,并且该块之前已经标记为可疑的,它将从服务永久移除。该方法仅依赖于使用的ECC。在特定实施例中,ECC检测6个错误,并且可以校正直到5个错误。结果,具有大于5个错误的块直接标记为坏的。US6209113指向一种用于对从多级存储器读取的数据执行错误校正的方法和装置。根据一个实施例,读取存储器设备中的单元,以生成通过单元的状态确定的读取电压,并且基于读取电压选择排序的一系列编码信号之一,其中每个编码信号对应于位的字段, 并且相邻的编码信号对应于仅仅在单个位上不同的各个位的字段。解码选择的编码信号,以生成未校正位的字段和指示未校正位中的任何错误的校验位(syndrome bit)的字段。解码校验位以生成用于校正错误的校正位。该方法包括以下步骤编码从阵列的每个存储器元件读取的数据,检测来自一个存储器元件的编码数据中的错误,并且通过改变编码数据的选择数目的位来校正错误。该方法是用格雷编码,使得在单元中只可能存在一个错误位。因此,使用的解码器每个单元仅仅必须校正小数目(优选地,I个)的位,而不是潜在地单元中所有位,这减少要存储的ECC数据的量。该方法首先进行错误校正解码,然后只要每个码元错误改变I位,就接受校正。该方法不允许校正比ECC解码器能够校正的更多错误。US2008/0168319指向一种闪速存储器设备错误校正码控制器。用于闪速存储器设备的ECC控制器存储M位数据,其中M是等于或大于2的正整数,并且ECC控制器包括ECC编码器和ECC解码器。ECC编码器使用第一纠错方案生成用于要在闪速存储器设备中存储的输入数据的第一 ECC数据,并且使用第二纠错方案生成用于输入数据的第二 ECC数据。输入数据、第一 ECC数据和第二 ECC数据存储在闪速存储器设备中。ECC解码器计算从闪速存储器设备读取的数据中的错误的数目,并且基于错误的数目,选择性地使用第一 ECC数据和第二 ECC数据之一校正读取的数据中的错误。该方法使用两种纠错方案。优选地,方案之一较快,但是比另一个方案校正较少错误。取决于检测到的错误的数目,使用方案之一校正错误。该方案要求存储冗余位用于两种校正方案,因此显著增加冗余信息量而不能够校正更多错误。US7450425指向一种用于非易失性存储器单元读取失败减少的方法。一个实施例包括使用初始读取电势执行第一读取操作,以便确定非易失性存储器单元串中选择的存储器单元的状态。该方法包括通过使用数据检查技术执行第一检查,确定选择的存储器单元的状态是否是不正确状态,并且如果确定不正确状态,则使用步进到更高和更低读取电势的读取电势,执行若干后继读取操作到特定计数的读取操作。在各种实施例中,当读取的数据包含可由ECC解码器校正的若干错误位时,也出现ECC检查通过。可由ECC解码器校正的阈值位数可能取决于采用的特定ECC技术。一些ECC技术可以校正单个位错误,而其他技术可以校正双位错误或其他更大数目的位错误。在其中读取的数据包括少于可由ECC解码器校正的阈值数目的单元的情况下,ECC解码器可以在将读取的数据提供到控制器之前校正错误位。当从闪存单元读取时,适当的电压施加到控制栅极和漏极。指示单元的阈值电压的漏极到源极电流相对于基准电流的比较允许确定存储器单元的状态。该方法在不能使用ECC解码器恢复数据的情况下改变基准电流,并且对相同单元执行后继读取操作。重复该处理,直到ECC解码器实际上可以恢复数据,或者已经尝试给定量的步骤而没有成功。在后一情况下,返回读取错误。该方法利用闪速存储器芯片中的模拟阈值电压信号。然而,固态存储器控制器制造者可能不能访问阈值电压信号。此外,通过应用若干额外读取操作,其中变化的电压在到单个读取电势的任何方向上步进,该方法引入了延迟和复杂性。该方法还引入读取引发的错误的可能性。US6839875指向一种用于对从多级存储器读取的数据执行错误校正的方法和装置。用于对从多级存储器阵列读取的数据执行错误校正的方法通过编码从阵列的每个存储器元件读取的数据、检测来自一个存储器元件编码数据中的错误、以及通过改变编码数据的X位(优选地,X=I)校正错误来工作,并且一种用于执行该方法的多状态存储器系统。优 选地,该系统是其中每个存储器元件是闪速存储器单元的电路。通过坚持具有值范围中的信号值的信号,从每个存储器单元读取数据位,其中该值范围是一系列非重叠值子范围的一部分。该方法还包括将电压信号编码为一系列编码信号之一,每个编码信号代表二进制位的唯一排序组;并且对编码信号执行错误检测和校正,以便检测编码信号中的错误,并且校正编码信号中可校正的错误。US2009/0055706指向一种用于闪速存储器错误校正的方法和装置。在闪速存储器设备中,存储器阵列包括用于数据存储的主区域,以及用于与存储的数据相关联的奇偶校验的存储的空闲区域。擦除表格保持指示不可用于数据存储的存储器阵列中缺陷的地址的擦除列表。处理器基于奇偶校验和擦除列表对存储的数据执行错误校正,以输出校正的输出。闪速存储器设备包括存储器阵列,其包括用于数据存储的主区域、以及用于与存储的数据相关联的奇偶校验的存储的空闲区域;擦除表格,其保持其中不能校正数据存储内容的存储器阵列中缺陷的擦除列表;处理器,其基于奇偶校验和擦除列表对存储的数据执行错误校正,以便输出校正的输出。描述了一种用于闪速存储器设备的错误校正方法,其中闪速存储器设备包括存储器阵列,该存储器阵列包括用于数据存储的主区域、以及用于与存储的数据相关联的奇偶校验的存储的空闲区域;该错误校正方法包括建立用于保持其中不能校正数据存储内容的存储器阵列中缺陷的擦除列表;基于奇偶校验和擦除列表对存储的数据执行错误校正,以便输出校正的输出。根据错误校正理论,当存储器阵列中的特定地址是已知的缺陷时,提高恢复数据的能力。该思想是引入存储缺陷的地址的擦除表格,以便容忍更多错误。可以在制造阶段建立擦除表格。当在错误校正处理期间检测到新的缺陷时,自动添加新的缺陷地址。如果已知所有错误位置,那么该方法校正错误直到可由使用的ECC解码器检测的错误量。这里,需要额外的存储空间以保持擦除表格。US05864569指向一种用于对从多状态存储器读取的数据执行错误校正的方法和装置。该方法使用MLC闪存中的位翻转思想,但是要求在单元中存储的信息为格雷编码。因此,挑战是提供一种用于数据错误校正的方法,其克服已知的数据错误校正方法的缺点。

发明内容
根据本发明的一个方面,提出了一种用于解码从闪速存储器接收的码字的方法。闪速存储器包括若干多级闪速存储器单元,其中每个这种多级闪速存储器单元存储所述码字的一个码元。安排ECC解码器用于将所述码字解码为解码码字,并且所述ECC解码器设计为校正最大数目的错误。所述方法包括错误检查步骤,用于确定所述码字中错误的数目。如果所述错误的数目大于所述ECC解码器能够校正的错误的最大数目,那么执行第一码元修改步骤和第二码元修改步骤的至少一个。在第一码元修改步骤中,通过将所述码元的值增加到下一个更高值级别,生成第一修改码字,并且在第二码元修改步骤中,通过将所述码元(Si)的值减小到下一个更低值级别,生成第二修改码字。在分析步骤中,计算码元修改步骤的校正效果,并且在返回步骤中,基于所述校正效果确定解码码字。 提出的解码方法可以从比使用的ECC解码器能够恢复多一个额外错误恢复。因此,可以结合具有固有错误校正能力t的ECC解码器使用提出的方法,以便校正数目t+1个错误。提出的解码方法利用对于多级单元(MLC)闪速存储器中可能错误模式的了解。码元到那些码兀的邻近值的任一的修改具有两个有利效果。在一方面,如果修改码字导致正确的解码的修改码字,那么减少需要检查的修改码字的数目,另一方面,减少了合法但不正确的解码的修改码字的数目。第一效果主要减少计算量,而第二效果进一步降低解码失败的概率。在一个实施例中,对于接收码字,将每个码元偏移更高一个阈值电压(V_T)级别的等量以形成第一修改码字,如果这种码字存在,并且将每个码元偏移更低一个阈值电压(V_T)级别的等量以形成第二修改码字,如果这种码字存在。用ECC解码器解码从而获得的修改码字,导致解码的修改码字,也称为候选解码码字。计数每个候选解码码字的出现号码。低于具有t+1个错误的接收码字,将恰好导致正确的候选解码码字的t+1出现。如果恰好存在具有t+1出现的一个候选解码码字,那么这是正确的一个。如果存在超过一个具有t+1出现的候选解码码字,那么解码方法不能正确校正错误,并且将返回码字的擦除。根本原因是通过该解码方法,具有t+1个错误的接收码字W修改为得到多一个错误、相等数目的错误、或少一个错误。通过将错误的数目减少一个,修改码字将仅具有t个错误,并且可以校正和解码为正确的编码数据字。因为接收码字具有t+1个错误,所以该效果将恰好出现t+1次。如果存在多于一个修改码字显示该效果,那么存在解码器不能决定哪个修改码字是正确的一个并且不能执行精确校正和解码的情况。如果接收码字处于到正确编码数据字的距离恰好与到另一合法编码数据字的距离相同的区域中,那么这种情况可能出现。提出的解码方法提供以下优点首先,它可以从超过使用的ECC解码器原始能够恢复的错误数目一个额外错误恢复。因此,可以结合具有错误校正能力t的ECC解码器使用提出的解码方法,以便校正t+1个错误。这获得随着码字中码元数目线性缩放的一些额外计算量的开销。该额外计算量仅在恰好恢复t+1个错误的罕见情况下出现。如果存在少于t+1个错误,那么解码方法完全不引入额外的计算开销。这允许在闪速存储器中在线使用提出的解码方法。该解码方法还可能在数据恢复模式中离线执行。为了生成码字,可以使用ECC解码器,其提供允许检测t+1个错误的校正信息(即,奇偶校验信息)以及数据字,而允许校正码字中的t个错误。已知的实践是安排ECC解码器,其理论上能够校正t个错误,但是实际上仅使用用于校正t-1、t-2或更少错误的能力。这具有在同时使用更简单并且因此更快的逻辑用于ECC解码器时,通过减少误校正概率提高ECC解码器的鲁棒性。例如,可以使用里德所罗门(RS)码,其实现t个错误的校正和t+1个错误的检测。ECC解码器还可以建立来仅校正t-1个错误,同时它仍将能够检测t+1个错误。因此,可以结合仅校正t-1个错误同时仍能够校正t个错误的ECC解码器使用该解码方法。从而,提出的解码方法允许使用更简单的ECC解码器,其在出现直到t-1个错误时的情况下将更快地解码数据,并且将仍能够校正数据块中的t个错误。解码方法的缺点在于如果解码方法用于校正恰好t个错误,那么将出现更高计算量以恢复数据。然而,认为该情况相对少出现,并且如果出现,认为额外的延迟是可接受的。在本方法的优选实施例中,如果所述码元的值处于所述多级闪速存储器单元能够编程到的最高级别,那么省略第一码元修改步骤。增加码元值超过基本多级闪速存储器单元能够编程到的最高级别意味着采用该单元的不可能值。因为该值是不可能的,所以不需 要与该级别相关的计算。因此,对于该情况省略这个步骤将导致降低本方法的复杂性。在解码方法的另一优选实施例中,如果所述码元的值处于所述多级闪速存储器单元能够编程到的最低级别,那么省略第二码元修改步骤。降低码元值低于基本多级闪速存储器单元能够编程到的最低级别意味着采用该单元的不可能值。因为该值是不可能的,所以不需要与该级别相关的计算。因此,对于该情况省略这个步骤将导致降低本方法的复杂性。在解码方法的另一优选实施例中,用另一码元重复至少一个码元修改步骤。通过对于一个码元执行一个或多个码元修改步骤,解码方法测试该修改是否导致正确效果。从而增加校正ECC解码器不可校正的错误的概率。然而,如果已经对其执行至少一个码元修改步骤的码元不在这种错误的位置,那么有利的是对一个或多个其他码元执行相同种类的测试。在解码方法的另一优选实施例中,在已经对一个码元进行所述码元修改步骤的至少一个之后,对所述码元进行分析步骤。在该实施例中,替代首先执行所有码元修改步骤并且此后进行分析步骤,在对于一个码元的码元修改步骤之后执行分析步骤。因此,每个码元得到其自己的一组码元修改步骤和分析步骤。以此方式,可以正好在对于该码元的码元修改步骤之后确定校正效果。在可能确定校正效果之前,解码方法不必对于若干码元执行,并且确定对于哪个码元实现校正效果。因此,对于每个码元执行分析步骤将导致寻找的错误所处位置的更快估计。该解码方法在以下实施例中工作特别良好,其中单个码元的校正效果与相关码字实际上是用于解码码字的正确基础的充分概率相关联。运行具有小于全错误校正能力(即,能够校正少于t个错误)的ECC解码器将是这种示例。假设充分概率解码方法已经发现正确的修改码字,这里误校正的概率减少到能够用于终止对于码字的解码方法的级别,其中分析步骤对于各个修改码字发出在修改码元情况下错误数目减少的信号。在其他设置的情况下,该实施例将以误校正的风险导致更短的处理。用于执行该解码方法的额外逻辑显著小于用于ECC解码器的一个逻辑,并且ECC解码器不需要改变。在解码方法的另一优选实施例中,对于其他所述码元重复至少一个码元修改步骤,直到在分析步骤中发现的校正效果指示相应的修改码字能解码为解码码字。根据上面段的说明,可以证明当分析步骤发信号通知正确修改码字时停止解码方法是有利的,因为以该方式可以减少解码方法执行时间。在解码方法的另一优选实施例中,在已经对所有所述码元进行至少一个码元修改步骤之后,进行分析步骤。该实施例提供有用于其中认为误校正的概率太高以至于不能在之间的任何时间停止解码方法的解码系统。这里,测试所有码元,并且仅当进行分析步骤时,具有对于所有码元的修改码字的访问。从而增加校正概率。如果ECC解码器用于以全部能力运行,即能够检测t+1个错误并且能够校正t个错误,则该解码方法特别有用。在解码方法的另一优选实施例中,从码字中一个码元移动到下一个右边码元,重复至少一个码元修改步骤。以此方式,以便于跟踪解码方法已经应用于哪个码元的逻辑顺序,解码方法自身运转通过码字。在解码方法的另一优选实施例中,基于所述码元的错误概率的估计,选择对其执 行至少一个码元修改步骤的码元的顺序。该步骤引入超过上述左到右方式的更多复杂性。然而,使用错误概率估计可以用于首先以最可能错误的那些码元为目标。结合一旦已经对于相应的码元和码元修改步骤确认校正效果就终止处理的设置,该设置可以导致方法的缩短。在解码方法的另一优选实施例中,在错误类型确定步骤中,确定对于多级闪速存储器单元最可能的错误类型,并且其中取决于此进行应该执行哪一个码元修改步骤的选择。同样在此,通过预测错误最可能在何处,可以简化解码方法。如果例如可以预测或估计错误源是写入错误,那么最可能错误是码元到更高值的值偏移。因此,仅执行第二码元修改步骤导致执行一半数目的码元修改步骤,以足够的概率获得正确的码字。这种改进还可以遍及所有码元,使得对于所有码元仅执行第二码元修改步骤,同时省略第一码元修改步骤。当然仍然对于每个码元分别地、或者对于若干或者甚至所有码元分组执行分析步骤。在解码方法的另一优选实施例中,在错误类型确定步骤中,确定对于多级闪速存储器单元最可能的错误类型,并且其中取决于此进行应该首先执行哪一个码元修改步骤的选择。这种改进类似于上面讨论的一个工作。然而在此,仍执行两个码元修改步骤,并且仅仅它们的顺序依赖于错误类型确定步骤预定。因为执行两个码元修改步骤,所以发现正确码字的概率增加,同时保持增加早期发现正确码字的概率的积极效果,并且能够更早停止解码方法,增进解码方法执行速度。在解码方法的另一优选实施例中,分析步骤包括在解码步骤中,计算修改码字中错误的数目,并且在效果步骤中,确定所述修改码字中所述计算的错误的数目是否低于在所述码字中的错误的数目。通过码元修改步骤的计算的错误数目的减少是解码方法已经发现正确码字的指示符。在ECC解码器设计为以小于全错误校正能力运行的情况下,即能够校正少于t个错误,假设充分概率解码方法已经发现正确的修改码字,误校正的概率减少到能够用于终止对于码字的解码方法的级别,其中分析步骤对于各个修改码字发出在修改码元情况下错误数目减少的信号。在ECC解码器能够校正t个错误的情况下,错误减少的效果是较不可靠的因素,然而,对于码字中的所有码元检查该效果可以用于选出具有该效果的一个修改码字或者选出具有该效果的修改码字之一。稍后的解码方法可以是有根据的猜测,随机选出或者结合其他条信息使用的选出增加正确码字的可能性。在解码方法的另一优选实施例中,分析步骤包括在解码步骤中,解码修改码字,并且对于所有解码的修改码字,计算解码的修改码字的出现号码,并且在效果步骤中,确定是否恰好存在一个解码的修改码字,其出现号码等于比错误的最大数目多I。在该改进的情况下,进一步增加正确码字 的概率。可以一起或分开执行解码步骤和效果步骤。例如,可以正好在码元修改步骤或多个码元修改步骤之后执行解码步骤,而在优选实施例中效果步骤仅仅在已经执行所有解码步骤之后(即,在对于所有解码的修改码字,已经计数解码的修改码字的出现号码)执行。在解码方法的另一优选实施例中,将解码的修改码字转换为散列值,所述散列值与所述解码的修改码字的出现号码一起输入候选散列图。这种改进允许更快和消耗较少空间的处理,因为替代所有解码的修改码字,仅仅需要存储较小的散列值。当在候选散列图中进行条目的最终选择时,基于出现的号码,可以重建相应的解码的修改码字。该重建例如可以利用在散列图中存储的额外条信息,诸如关于在哪个方向修改哪个码元的信息以得到相应的修改码字。因为接收码字的t+1的这种操作导致这种修改码字,所以使用那些操作的任一个。在解码方法的另一优选实施例中,返回步骤包括当所述效果步骤产生肯定结果时,从在效果步骤中使用的解码的修改码字确定正确的解码码字。肯定结果是指示解码的修改码字是码字解码为的正确解码码字的结果。取决于效果步骤的类型,这可以由以下不同因素指示,诸如修改码字中的计算的错误数目低于接收码字中的错误数目,或者是否恰好存在一个解码的修改码字其出现号码等于比可由解码器校正的最大错误数目大I。在解码方法的另一优选实施例中,返回步骤包括当所述效果步骤产生否定结果时,在擦除步骤中确定码字的擦除。否定结果可以是缺乏肯定结果,或者若干相互竞争的肯定结果。例如,如果存在多于恰好一个解码的修改码字其出现号码等于比可由解码器校正的最大错误数目大1,也称为潜在候选,那么不存在唯一肯定结果,并且有利的是决定擦除,替代当随机选择它们之一时具有1-1/ (潜在候选)可能性的误解码。根据本发明的第二方面,提供了一种解码装置。解码装置设计用于解码从闪速存储器接收的码字,其中每个这种多级闪速存储器单元存储所述码字的一个码元。所述解码装置还包括ECC解码器,所述ECC解码器设计用于将所述码字解码为解码码字,并且所述ECC解码器设计为校正最大数目的错误。所述解码装置包括输入端口,用于结束所述码字,计算器,设计用于确定所述码字中错误的数目。如果所述错误的数目大于所述解码器能够校正的错误的最大数目,则计算器还设计用于通过将所述码元的值增加到下一个更高值级别,生成第一修改码字,以及通过将所述码元的值减小到下一个更低值级别,生成第二修改码字。计算器然后可以计算码元修改步骤的校正效果,并且基于校正效果确定解码码字。解码装置还包括输出端口,用于输出所述解码码字。根据本发明的第三方面,存在一种计算机程序产品,包括计算机可读介质,该计算机可读介质体现能够由处理器执行的程序指令,以便执行如上所述的解码方法。


通过参照结合附图进行的、根据本发明的当前优选但是仍然为说明性实施例的以下详细描述,将更完全地理解本发明及其实施例。附示图I是描述作为阈值电压(V_T)的函数的、编程到特定级别X的MLC单元的概率密度的曲线图,图2是描述支配类型的写入错误对于概率密度的影响,以及写入错误将阈值电压(V_T)偏移到比所意图的级别更高级别的效果的曲线图,图3是描述在错误的情况下趋于将阈值电压(V_T)偏移到下一个更低级别的保持错误的影响的曲线图,图4是描述趋于将阈值电压(V_T)从级别0移动到级别I的读取干扰错误的影响的曲线图,
图5是具有闪速存储器的计算机系统的框图,图6是具有编码器/解码器电路的闪速存储器阵列的框图,图7是处理具有t+1个错误的接收的码字的流程图,图8是使用邻近错误校正方案校正错误的流程图,图9是编码处理的可视化,图10是解码处理的可视化。
具体实施例方式图I描述作为阈值电压(V_T)的函数的、编程到特定级别X的多级单元(MLC)的概率密度的曲线图。基于闪速存储器的单级单元(SLC)每个单元存储一位。在基于闪速存储器的多级单元(MLC)中,其中存储数据的一个单元的阈值电压(V_T)可以编程为多于两个不同级别x。在图I中,存在四个级别,因此该单元可以存储2个位的信息。图2描述支配类型的写入错误对于概率密度的影响。写入错误将阈值电压(V_T)偏移到下一个更高级别。图3描述保持错误对于概率密度的影响。保持错误将阈值电压(V_T)偏移到下一个更低级别。图4描述读取干扰错误对于概率密度的影响。读取干扰错误将阈值电压(V_T)从级别0偏移到级别I。其他级别不受影响。错误源分组为3个类型-由过编程失败支配的写入错误,过编程失败导致单元用更高阈值电压(V_T)编程,如图2所不。-保持错误取决于编程/擦除循环的数目以及保持时间,并且主要由于电荷丢失。它们导致将阈值电压(V_T)移动到下一个更低级别,如图3所示。-读取干扰错误导致级别0单元移动到下一个更高阈值电压(V_T)级别,如图4所
/Jn o所有这3个不同错误源具有共同点在于它们将阈值电压(V_T)的值偏移到邻近级别,即,偏移到阈值电压(V_T)的下一个更高或下一个更低级别。偏移到其他级别理论上可能,但是实际上非常不可能。该认知在在此提出的解码方法中用于校正超过ECC解码器可以正常校正的错误数目的一个额外错误。
现在参照图5,图示了利用闪速存储器阵列的示例性数字系统(诸如计算机系统)的框图。这样的系统包括中央处理单元13,其执行提供来控制系统的操作的各种指令。中央处理单元13加入适于在系统的各种组件之间携带信息的总线10。主存储器11加入总线10,该主存储器11典型地由动态随机存取存储器构造,以便在为系统供电的时段期间存储信息。诸如只读存储器14、长期非易失性存储器12和诸如帧缓冲器15的电路的各种外围组件也连接到总线10,数据可以写入到帧存储器15,该数据要传送到诸如监视器16的输出设备用于显示。替代典型地用于长期存储器的电子机械硬盘驱动器,闪速存储器阵列可以用作长期存储器12。这样的闪速存储器阵列可以包括单位或多级存储器系统,并且可以包括用于控制存储器阵列的操作的电路,存储器阵列的操作包括于读取、编程(写入)和擦除存储器阵列相关联的所有操作。图6图示形成诸如图5所示的存储器系统12的框图。存储器系统12通过接口 17加入总线10。接口 17提供适当的电路,用于提供在总线17供应到闪存系统总线18的信号。闪存系统总线18传送来自接口 17的信号。在一个实施例中,该逻辑电路20是专用集成电路(ASIC),其提供用于实施和协调长期存储器(也称为存储器系统12)的各种功能(诸 如闪速存储器阵列的各种部分的读取、写入、擦除以及确定状态)的逻辑。逻辑电路20用作命令中心,并且经由闪存总线27控制在多个闪存芯片26中出现的操作,使得哪些闪存芯片26 一起用作长期闪速存储器系统。闪存芯片26包括大量多级闪速存储器单元28。也称为ECC编码器的编码器电路21以及解码器和校正电路22包括在逻辑电路20中。这些电路21和22用于完成错误检测和校正。逻辑电路20通过在微处理器总线19上与随机存取存储器23和只读存储器24相关联的微处理器25辅助其操作。微处理器25、随机存取存储器23和只读存储器24基本用作通用处理器。到达闪存系统总线18的数据可以缓冲在RAM23中,并且经由提供数据的编码的逻辑电路20从RAM 23发送到闪存芯片26。在一个实施例中利用只读存储器24来存储在控制执行提出的解码方法中使用的错误检测和校正操作的一部分时利用的处理。在一个实施例中,每对闪速存储器芯片26包括32块存储器晶体管。该对的每个芯片26包括32块的存储器晶体管的一半,以及影响该芯片对上块的个别存储器单元中的读取、写入和擦除操作之一的电路控制。每个闪存芯片对通过命令用户接口加入闪存总线27,命令用户接口从系统的逻辑电路20提供命令信号到芯片对。纠错码(ECC) C据由错误校正能力t和错误检测能力S,其中(t〈=s),并且最小距离d=s+t+l。此外,ECC编码器21使用纠错码C以生成字码,以便将它们存储在像图5和6中描述的一个的MLC闪速存储器设备12中。有界距离ECC解码器校正直到从MLC闪速存储器设备12读取的这种码字中错误的感知数目e,其中e〈(t+l)。因此,ECC解码器设计为校正最大数目t的错误。使用以下命名通过编码器编码原始数据字0以形成编码数据字W*。这是一对一映射操作。该编码数据字W*包括原始数据字0以及冗余信息,并且代表允许的编码数据字W*,因为已经从原始数据字0得出冗余信息而没有错误。编码数据字W*因此是原始数据字0的正确、无错误表现。编码数据字W*也称为合法数据字,因为其不包含错误。冗余信息算术地链接到原始数据字O。对于合法数据字,编码数据字W*中的冗余信息是精确地由基本编码算法广生的冗余彳目息。
编码数据字W*存储在存储器中,并且无论任何原因,错误出现,使得当试图读取编码数据字W*时,替代读取具有数目e*错误的作为接收的码字W的其错误版本。挑战在于现在找到从接收的码字W计算编码数据字W*并且因此原始数据字0的方式。解码器能够检测接收的码字W的感知数目e的错误,其中e〈=e*。从接收的码字W计算编码数据字W*的步骤称为解码。一旦已经获得正确的编码数据字W*,那么可以通过移除冗余信息从其生成原始数据字O。在优选实施例中,提出的解码方法可以根据以下优选算法校正MLC闪速存储器设备12中t+1个错误。I.码元修改步骤改变接收的码字W中的一个码元为其最近相邻码元的每一个,以形成一个或两个修改码字r、W”。2.解码步骤使用ECC解码器解码得到的修改码字r、W”。
3.效果步骤ECC解码器未能解码,或者对于解码的修改码字D’、D”发现不同于接收的码字的错误的感知数目e的错误的感知数目e’、e”。4’.如果不是e=0也不是e〈t+l,那么解码器发现自身处于结论e>t的情形。然后,在ECC解码器具有t的校正能力的情况下,如上所述对于所有码元,使用码元修改步骤和解码步骤形成所有可能解码的修改码字,并且计数它们的出现号码。最后,如果存在获得t+1次的唯一解码的修改码字,宣布该解码的修改码字为解码的码字,否则通过擦除替换接收的码字。4”.如果e=t,那么在ECC解码器具有t-1的校正能力的情况下,ECC解码器保持形成修改码字并且解码它们,直到ECC解码器发现t-1码元中不同于修改的接收字的码字。在此情况下,宣布对应于该修改的接收码字的解码码字为正确的解码码字。在后一情况下,计数解码码字的所有出现。在特定的第一优选实施例中,在该示例中使用具有t的错误校正能力的解码器。如果码的最小距离是d=2t+2,那么提出的算法可以校正任何t+1错误,尽管纠错码(ECC) C具有错误校正能力t。如果码的最小距离是d=2t+l,那么提出的算法可以校正t+1错误,尽管纠错码(ECC) C具有错误校正能力t,其中然而可能出现极罕见的误校正。具有t错误校正能力的ECC编码器用于将数据字编码为包括每个大小m的n个码元S的码字,其中m对应于MLC闪速存储器设备中级别的数目。当ECC解码器不能解码码字时,最可能存在t+1错误,并且较低概率可能存在多于t+1错误。在这样的情况下,处理数据恢复,如图7描述的。图7示出处理具有t+1个错误的接收的编码码字的流程图。在接收步骤30中,从闪速存储器26接收接收的码字W。在重置步骤31中,索引i设为值I。该索引i用作到各个码元Si的指针。每个这种码元Si是在各个多级闪速存储器单元28中存储的信息。在索引i设为I的情况下,在两个码元修改步骤32’、32”中,选择并且改变接收的编码码字中的第一码元SI (即,i=l)为其邻近值的每一个,即,在第一码元修改步骤32’中,一次改变为下一个更高阈值电压(V_T)级别,并且在第二码元修改步骤32”中,一次改变为下一个更低阈值电压(V_T)级别。这因此导致一组两个修改码字W’、W”,如果第一码元SI的值是中间值之一,即不是最低或最高可能值。这导致一个修改码字,r或W”,如果第一码元SI的值是边界值之一,即最低或最高可能值级别(即,值)。在此情况下,最高值将不会偏移到更高,并且仅仅将选择更低邻近值级别以形成第一修改码字W’。类似地,最低值将不会偏移到更低,并且仅仅将选择更高邻近值级别以形成第二修改码字W”。接下来是分析步骤50。在该分析步骤50中,计算码元修改步骤32’、32”的校正效果。在该实施例中,分析步骤50包括解码步骤33,其中用ECC解码器22解码修改码字r、W”,导致相应数目的解码的修改码字D’、D”。这些解码的修改码字D’、D”代表使用修改码字W’、W”中的错误校正信息以达到合法编码数据字W*的尝试。如上说明的,如果冗余信息算术地正确链接到编码数据字W*中信息的剩余部分,那么这种编码数据字W*是合法的。每个解码的修改码字D’、D”然后在散列图处理中处理如下 在散列图检查步骤34中,执行解码的修改码字D’或D”是否已经包含在候选散列图H (也仅仅称为散列图H)中的检查。如果没有,那么用于解码的修改码字D’或D”的条目将在图添加步骤35中添加,并且解码的修改码字D’或D”的出现号码X (D)将在条目步骤36中设为值I。如果用于解码的修改码字D’或D”的条目已经包含在候选散列图H中,那么用于解码的修改码字D’或D”的新条目将不添加到候选散列图H,但是替代地将其出现号码X (D)在递增步骤37中递增I。如名称所意味的,散列图H优选地是存储散列值的图。因此在优选实施例中,为了创建条目,解码的修改码字D’、D”没有照原样进入散列图H,而是通过相应的散列计算器将它们转换为散列值。从而可以在恒定时间中更有效地搜索用于存储解码的修改码字D’、D”的散列图H (实质是表格),并且使其更小,因为散列值自然小于基本的解码的修改码字D’、D”。仍然对于已经在散列图H中由其散列值替换的每个解码的修改码字D’、D”,相应的出现号码X (D)也存储在散列图H中。散列图H也可以是不保持条目的表格,即用于存储分析步骤50的结果的任何类型的表格,为其原始形式或者已经进行一些计算的形式,好像减少可能合适变为正确解码的修改码字D’或D”的条目的数目。有利的是分别每个解码的修改码字D’、D”在散列图H中仅具有一个条目。在散列图检查步骤34之前可以执行额外的可选步骤可以进行邻近检查步骤,其检查修改码字r、w”是否包括允许的错误模式,即与移动码元到邻近值的思想一致。在该背景下仅允许解码的修改码字D’、D”的码元S,如果其距离接收的码字W中的相应码元S的级别不超过I级。换句话说,邻近检查步骤对于解码的修改码字D’或D”的每个码元S检查其值是否大于或小于接收的码字W的相应码元S的值超过I。如果不满足该标准,那么解码的修改码字D’、D”视为不正确,并且因此不需要进一步处理。它们可以被丢弃。这种方式,提出的解码方法的校正能力进一步增加,因为导致合法但是非邻近解码的修改码字D’、D”的那些解码步骤33实际导致不正确的解码的修改码字D’、D”。在进行散列图检查步骤34之前取出那些结果,减小误校正的可能性,并且还具有由于具有出现号码X (D)是t+1的多散列图条目的擦除。处理解码的修改码字D’、D”将导致用于这些解码的修改码字D’、D”的零或多个条目添加到候选散列图H,或者如果他们已经存在在那里,则他们的出现号码X (D)在该候选散列图H中更新。因此候选散列图H中的所有解码的修改码字D’、D”是有区别的。候选散列图H保持解码的修改码字D’、D”和解码的修改码字D’、D”的相关出现号码X (D),或者对于每个解码的修改码字D’或D”,保持解码的修改码字D’、D”的散列值以及接收的码字W中码元的位置和其从属一个码元修改步骤的修改类型(增加或减小),该码元修改步骤导致相应的解码的修改码字D’或D”。优选地,对于当使得用于解码的修改码字D’、D”的条目首次进行散列图H时已经执行的码元修改步骤,收集该信息。以此方式,解码方法稍后可以从散列图H中的该信息重建正确的解码码字D。候选散列图H可以是允许搜索和处理该数据的任何类型的数据结构。此后,在索引递增步骤39中,递增所以i,并且重复包括码元修改步骤32、解码步骤33和散列图处理的处理,直到已经处理接收的编码码字W中的所有码元Si,即直到i=n。通过退出检查步骤38测试该条件。一旦已经处理通过对所有码元S分别执行码元修改步骤32’、32”获得的所有解码的修改码字D’、D”,就在效果步骤40中检查候选散列图H中每个解码的修改码字D’、D”的出现号码X (D)0更精确地,确定是否恰好存在一个解码的修改码字D’、D”,其出现号码X(D)等于比可由解码器校正的错误的最大数目t大I。这结束分析步骤50,然后已经确定校正效果。如果恰好存在具有出现号码X (D’ 或D”)=t+1的一个候选字(即,解码的修改码字D’或D”),那么在返回步骤41中返回该解码的修改码字D’或D”作为码字W*。这称为效果步骤40的肯定结果。如果已经在散列图H中以修改的码元S的位置和修改类型的形式存储相应的解码的修改码字D’或D”,通过应用来自散列图H的该信息到接收的编码码字W执行解码操作,以返回在此宣布为码字W*的相应的解码的修改码字D’或D”。否则,如果没有恰好存在具有出现号码X (D’或D”)=t+l的一个候选字(即,解码的修改码字D’或D”),那么这称为效果步骤40的否定结果,并且在返回步骤41中确定如此,因此在擦除步骤42中返回讨论中码字W的擦除。描述的实施例在ECC解码器22的情况下工作特别良好,ECC解码器22设计为以全部错误校正能力运行,即,能够校正数目t的错误,因为消除具有相同数目t+1的出现的多个解码的码字的情况的能力。在图9中,图示如何经由编码步骤E从原始数据字0生成编码数据字W*。编码数据字W*包括可用于错误检测和错误校正的额外冗余信息。如果可应用,编码数据字W*中冗余信息的数目和位置取决于使用的纠错码和编码器的类型。在描述的示例中,原始数据字0包括位“abcdef”,而编码数据字W*以形式“xabycdezfg”包括额外位“x、y、z、g”。为了在此描述的解码方法的目的,编码数据字W*也可表现为一系列码元SI、S2、…,其中每个码元S可以具有通过使用的存储器单元的类型确定的若干值。对于4级MLC闪速存储器单元的情况,码元S可以具有值0、1、2、3之一,因此这种单元存储两位的信息,并且每个码元S代表这种两位的信息。编码数据字W*通常包括数目n的码元S,其中每个码元S可以取从0直到m-1的值,m-1是MLC闪速存储器单元可以编程到的最高值。在描述的示例中,编码数据字W*包括五个码元S,同时m=4。在图10中,图示了优选地可以由解码装置执行的解码处理。在试图从闪速存储器读取编码数据字W*时,读取接收的码字W。可以解码装置处在输入端口接收接收的码字W。解码处理寻求确定接收的码字W是否错误,如果是,那么确定是否可以正确解码接收的码字W以获得编码数据字W*。首先,接收的码字W用于确定感知的错误情况。该步骤可以由作为解码装置的一部分的计算器执行。基于此,可能出现若干情况之一
I.如果指示没有错误,S卩,错误的感知数目e为0,那么解码器22输出解码的数据字。2.如果指示大于零,但是小于或等于t个错误,即0〈e〈t+l,那么解码器22将用于校正错误并且输出解码的数据字。3.如果情况I和情况2没有出现,那么存在多于t个错误。那么在此描述的解码方法可以用于试图从这些错误恢复。在上面的情况I和2中,还可能出现误校正,即如果错误的感知数目e小于t+1,而错误的实际数目e*实际上大于t+1。在上面的情况3中,即e>=t+l,如上面已经描述的修改接收的码字W :第一码元SI 一次递增一个电压级别并且一次递减一个电压级别,如图10中a)之下所示,从而获得修改的码字W’和W”。然后解码修改的码字W’和W”。对于获得的候选码字D’和D”,即解码的修改码字D’和D”,将使得条目与用于各个候选码字D’和D”的出现号码X (D’或D”)的计数器一起进入候选散列图H。接下来,第二码字S2经历该处理。然而,这里将不发生递减,因为第二码元S2的值已经是0,如图10中的b)之下所示。所以在此仅得到一个候选码字D”。对于获得的候选码字D”,使得条目与用于候选码字D”的出现号码X (D”)的计数器一起进入候选散列图H0如图10中c)所指示的,对于每个以下码元Si执行该处理,直到已经到达最后码元Sn (这里S5)。在候选散列图H中没有现有条目的候选码字D’或D”将进入具有出现号码X (D)=I的候选散列图H。对于在候选散列图H中已经具有条目的候选码字D’或D”,因为它们之前已经出现,所以每次它们出现时,各个出现号码X (D)递增。此后候选散列图H充满若干候选码字D’、D”以及它们各个出现号码X (D’)、X(D”)。如果恰好存在一个候选码字D’或D”,其中它的出现号码X (D’)或X (D”)恰好等于t+1,那么解码器22已经在该候选码字D’或D”中发现用于编码数据字W*的正确数据字。如上面说明的,通过仅使那些候选码字D’、D”进入满足邻近标准的候选散列图H,可以进一步提高解码精度。该标准是候选码字D’、D”的每个码元S和接收码字W的相应码元S之间的值差别不大于1,即分别对于所有i|,Si (W)-Si (D’)|〈=1,对于所有i,
Si (W)-Si(D")|〈=1。计算器可以设计来执行码元修改步骤32’、32”、分析步骤50和返回步骤41中的一个或多个。如果解码的码字D’或D”由返回步骤41产生,那么解码的码字D’或D”可以经
由输出端口输出。在特定的第二优选实施例中,在该示例中使用具有t-1的错误校正能力的解码器。码的最小距离是d=2t+l。在此情况下,主张的算法可以校正t个错误。在正常操作期间,当与校正直到t个错误的ECC解码器相比时,由ECC解码器22校正直到(t-1)个错误,同时改进解码速度和解码复杂性。在t个错误出现的情况下,该算法可以用于校正t个错误。在此情况下,该算法总是继续正确解码具有t个错误的接收码字。更一般地,在正常操作期间,可以由ECC解码器校正直到(t-x)个错误,其中0〈x〈t,x是由解码器设计确定的固定数目。在t-x+1个错误的情况下,提出的解码方法可以用于校正t-x+1个错误。在此情况下,算法总是继续正确解码具有t-x+1个错误的接收码字。
图8图示使用提出的错误校正方案的错误校正的替代实施例。如果ECC解码器22设计为检测数目t的错误并且校正数目t-1的错误(即,这对应于x=l ),那么该实施例提供了优势。接收的码字W包括每个大小m的数目n的码元S,其中m对应于MLC闪速存储器设备的多级闪速存储器单元28中的可编程级别的数目。在接收步骤30中从闪速存储器26接收码字W。在重置步骤31中,索引i设为值
I。该索引i用作到各个码元Si的指针。在索引i设为I的情况下,在第一码元修改步骤32’中和在第二码元修改步骤32”中,选择并且改变第一码元SI到其每个邻近值,即分别改变到下一个更高、下一个更低阈值电压(V_T)级别。这导致一组一个或两个修改码字W’和 W”,如已经结合第一特定实施例描述的。如果第一码元SI的原始级别是最高或最低可能值级别,则该组将恰好具有一个修改码字r或W”,或者如果它是在最高或最低可能值级别之间的值级别,则该组具有两个修改码字r和W”。对于所有得到的修改码字W’和W”,在解码步骤33中计算在这些修改码字中检测到的错误的数目e’、e”。因为在得到的解码的修改码字D’或D”中包括关于相应的解码的修改码字D’或D”具有多少感知的错误e’或e”的信息,所以可以通过执行常规解码算法执行该计算。接下来,之后是效果步骤40,其中确定计算的修改码字r、W ”中的错误的数Se’、e”是否低于码字W中感知的错误数目e。如果对于解码的修改码字W’或W”检测到的错误的数目e’、e”已经从t减小到t-1,那么变得清楚的是选择相应的邻近值已经导致改进,并且在返回步骤41中,可以通过解码该修改码字D’或D”获得正确的解码码字,其然后宣布为编码数据字W*。然而,如果与接收码字W的感知的错误数目e相比,检测到的错误的数目e’、e”上升,或者错误的数目e’、e”保持相同,那么邻近值级别的选择不正确,并且解码方法继续接收码字W中的下一个码元Si。索引i的值在索引递增步骤39中递增,然后重复码元修改步骤32等,但是这次使用下一个码元Si+1。一旦已经发现正确的解码码字D’或D”,算法就在返回步骤41中完成处理。宣布解码的码字D’或D”为数据字W*。在已经尝试修改直到并且包括接收码字W中的最后码元Sn而没有成功之后,算法将可替代地在擦除步骤42中停止。当重复码元修改步骤32’、32”时,存在如何步进通过码元Si的多种可能性。第一种可能性是从左向右进行,第二种是从右向左进行。两种方法具有优点在于它们相对容易通过使用二进制指针实施。跟踪当前在调查(即,用码元修改步骤32’、32”处理)哪个码元Si的开销保持相对低。一种替代方案是对于以哪种顺序选择哪个码元Si花费更多情报。可以进行关于码元Si的错误概率的估计。在该估计中,可以确定哪些码元Si是最可能展现错误的。然后,可以选择那些码元Si中的一个为要用码元修改步骤32’、32”处理的第一码元Si。接下来,处理可以在转移到下一个右边码元的情况继续,或者下一个码元Si可以再次是比其他码元Si具有更高错误可能性的那些码元中的一个。特别地,设置在此描述的解码方法为在对于当前处理的码元Si的分析步骤50产生肯定结果时,结束具有更高可能性的码元Si的这种选择,以便更早终止解码方法。因此,该解码方法花费更少时间。简化并且同样加速解码方法的另一种方式是在最前面确定哪种错误类型是最可能随着接收的码字W出现的一个。如上说明的,因为不同错误类型具有不同的电压级别改变更可能出现的分布,了解那些错误类型的哪个存在或很可能存在,可以用于对于首先执行哪个码元修改步骤32’、32”或完全执行哪个码元修改步骤32’、32”进行选择。例如,在保持错误的情况下,典型的改变是电压级别下降一个级别。因此,相应的码元Si的值到下一个更高级别的偏移将消除这种错误,并且导致正确的解码码字D’。因此,可以通过仅对码元Si执行第一码元修改步骤32’,加速该解码方法。如果错误类型的假设正确,那么解码方法应该能够正确地解码码字W。然而,如果返回步骤41没有返回正确的解码码字D’,那么返回步骤41替代地确定擦除,并且解码方法以擦除结束。为了提高解码概率,可以通过对于码元Si添加第二码元修改步骤32”的执行,再次提高上面改进的解码方法。因此,优选的顺序将是首先执行所有第一码元修改步骤32’,对得到的第一修改码字D’执行分析步骤50,检查是否一个产生肯定结果,并且如果不是这种情况,则执行第二码元修改步骤32”,然后再次分析步骤50,这次计算第二码元修改步骤 32”的校正效果。然后,解码方法已经运行遍及所有可能的码元修改步骤32’和32”,并且返回解码码字D’或D”,或者返回擦除。描述的实施例在ECC解码器22的情况下工作特别良好,ECC解码器22设计为以小于全部错误校正能力运行,即,能够校正小于t个错误的数目e的错误,因为利用该设置降低误解码的概率。该算法随着码字W中码元S的数目线性缩放。通常,需要检查小于n个修改的接收码字W’、W”,由于足以发现接收码字W中错误的第一出现。因此,在错误平均分布的假设下,需要检查的码元S的平均数目是大约n/(t+l)。此外,如果码字W内码元的值平均分布,那么在具有4个级别的MLC闪速存储器中,存在0.5的机会处于最高或最低级别。该效果也减少要检查的修改码字W’或W”的数目。如果可以估计最可能的错误类型(诸如当写入错误使得阈值电压(V_T)),那么可以进一步改进算法。如果正好在已经写入接收码字W并且校正错误之后检查接收码字,那么将最可能由于写入错误而不是保持错误。在此情况下,可以通过仅对相对于每个码元S的值的一个邻近级别执行,改进解码方法。在写入错误的情况下,那么可以省略第一码元修改步骤32’。这减少要检查的邻近值的数目。在另一优选实施例中,可以根据告知错误引起的电压级别改变的哪个变量更可能的估计量的输出,进行仅仅增加或减小码元值级别的选择。更可能的变量然后可以首先或专门地检查。由于技术进步,基于MLC的闪速存储器的级别的数目将来可能增加。提出的解码方法将有利地适于这样的MLC,因为随着级别数目增加,要测试的修改码元的数目对于相同量的数据减少。该解码方法可以在RS、BCH或其它码的情况下使用。能够通过降低误校正概率减少可由解码器校正的错误的数目,以增加鲁棒性。可以结合格雷映射使用解码方法。在此描述的解码方法的所有实施例可以部分或整体组合。提出的解码方法不限于MLC闪速存储器,而是可应用于设置与MLC NAND闪速存储器设置类似先决条件的任何存储器设备。
对于SLC闪速存储器的测试也已经显示页面的错误率还取决于页面在块中的位置。例如,已经观察到较低编号的页面比较高编号的页面具有显著更高的错误率。该观察取决于实际使用的闪速存储器芯片技术,并且从一个制造者到另一制造者改变。然而,如果当分析和分类芯片时可以观察码字内位置之间的这种差别,那么可以优选地通过考虑替代在第一个开始线性贯穿码元执行码元修改步骤,可以以具有更高错误概率的那些码元开始,进一步改进在此描述的解码方法。解码方法可以部分或整体以软件或硬件或其组合实施。以硬件实施的解码方法可以由解码器执行。以软件实施的解码方法可以由计算机程序产品执行。计算机程序产品可以提供在计算机可读介质上,该计算机可读体现可由计算机运行以执行解码方法的 步骤的软件指令。计算机可读介质例如可以是CD-R0M、DVD、闪速存储卡、硬盘、或者任何其它合适的计算机可读介质,例如网络中的存储介质。
权利要求
1.一种用于解码从闪速存储器(26)接收的码字(W)的方法,所述闪速存储器(26)包括若干多级闪速存储器单元(28),其中每个这种多级闪速存储器单元(28)存储所述码字(W)的一个码元(Si),并且其中安排ECC解码器(22)用于将所述码字(W)解码为解码码字(D),所述ECC解码器(22)设计为校正最大数目(t)的错误,所述方法包括以下步骤 -在错误检查步骤(44)中,确定所述码字(W)中错误的数目(e), -如果所述错误的数目(e)大于错误的最大数目(t),那么所述ECC解码器(22)能够校正 〇执行以下的至少一个 第一码元修改步骤(32’),通过将所述码元(Si)的值增加到下一个更高值级别,生成第一修改码字(W’), 以及第二码元修改步骤(32”),通过将所述码元(Si)的值减小到下一个更低值级别,生成第二修改码字(W”), 〇在分析步骤(50)中,计算至少一个码元修改步骤(32’、32”)的校正效果, O在返回步骤(41)中,确定 基于所述校正效果的解码码字(D), 或者码字(W)的擦除。
2.如权利要求I所述的方法,其中如果所述码元(Si)的值处于所述多级闪速存储器单元(28)能够编程到的最高级别,那么省略第一码元修改步骤(32’)。
3.如权利要求I或2所述的方法,其中如果所述码元(Si)的值处于所述多级闪速存储器单元(28)能够编程到的最低级别,那么省略第二码元修改步骤(32”)。
4.如前述权利要求之一所述的方法,其中用另一所述码元(Si)重复至少一个码元修改步骤(32’、32”)。
5.如权利要求4所述的方法,其中在已经对一个码元(Si)进行所述码元修改步骤(32’、32”)的至少一个之后,对所述码元(Si)进行分析步骤(50)。
6.如权利要求4或5所述的方法,其中对于其他所述码元(Si)重复至少一个码元修改步骤(32’、32”),直到在分析步骤(50)中发现的校正效果指示相应的修改码字(W’、W”)能解码为解码码字(D)。
7.如权利要求4所述的方法,其中在已经对所有所述码元(Si)进行至少一个码元修改步骤(32 ’、32,,)之后,进行分析步骤(50 )。
8.如权利要求4到7之一所述的方法,其中从码字(W)中一个码元(Si)移动到下一个右边码元(Si+1),重复至少一个码元修改步骤(32’、32”)。
9.如权利要求4到7之一所述的方法,基于所述码元(Si)的错误概率的估计,选择对其执行至少一个码元修改步骤(32’、32”)的码元(Si)的顺序。
10.如前述权利要求之一所述的方法,其中在错误类型确定步骤中,确定对于多级闪速存储器单元(28)最可能的错误类型,并且其中取决于此进行应该执行哪一个码元修改步骤(32’、32”)的选择。
11.如前述权利要求之一所述的方法,其中在错误类型确定步骤中,确定对于多级闪速存储器单元(28)最可能的错误类型,并且其中取决于此进行应该首先执行哪一个码元修改步骤(32’、32”)的选择。
12.如前述权利要求之一所述的方法,其中分析步骤(50)包括 -在解码步骤(33)中,计算修改码字(W’、W”)中错误的数目(e’、e”),并且-在效果步骤(40)中,确定所述修改码字(W’、W”)中所述计算的错误的数目(e’、e”)是否低于在所述码字(W)中的错误的数目(e)。
13.如前述权利要求之一所述的方法,其中分析步骤(50)包括 -在解码步骤(33)中,解码修改码字(W’、W”),并且对于所有解码的修改码字(D’、D”),计算解码的修改码字(D’、D”)的出现号码(X (D)),并且 -在效果步骤(40)中,确定是否恰好存在一个解码的修改码字(D’、D”),其出现号码(X(D))等于比错误的最大数目(t)多I。
14.如权利要求13所述的方法,其中将解码的修改码字(D’、D”)转换为散列值,所述散列值与所述解码的修改码字(D’、D”)的出现号码(x (D))—起输入候选散列图(H)。
15.如前述权利要求之一所述的方法,其中返回步骤(41)包括当所述效果步骤(40)产生肯定结果时,从在效果步骤(40)中使用的解码的修改码字(D’、D”)确定正确的解码码字(D)。
16.如前述权利要求之一所述的方法,其中返回步骤(41)包括当所述效果步骤(40)产生否定结果时,在擦除步骤(42)中确定码字(W)的擦除。
17.一种用于解码从闪速存储器(26)接收的码字(W)的解码装置,所述闪速存储器(26)包括若干多级闪速存储器单元(28),其中每个这种多级闪速存储器单元(28)存储所述码字(W)的一个码元(Si ),所述解码装置还包括ECC解码器(22 ),所述ECC解码器设计用于将所述码字(W)解码为解码码字(D),并且所述ECC解码器(22)设计为校正最大数目(t)的错误,所述解码装置包括 -输入端口,用于结束所述码字(W), -计算器,设计用于确定所述码字(W)中错误的数目(e),并且如果所述错误的数目(e)大于所述解码器(22)能够校正的错误的最大数目(t),则用于 〇执行以下的至少一个 第一码元修改步骤(32’),用于通过将所述码元(Si)的值增加到下一个更高值级别,生成第一修改码字(W’), 以及第二码元修改步骤(32”),用于通过将所述码元(Si)的值减小到下一个更低值级别,生成第二修改码字an, 〇在分析步骤(50)中,计算码元修改步骤(32’、32”)的校正效果, O在返回步骤(41)中,确定 基于所述校正效果的解码码字(D), 或者码字(W)的擦除, -输出端口,用于输出所述解码码字(D)。
18.一种计算机程序产品,包括计算机可读介质,该计算机可读介质体现能够由处理器执行的程序指令,以便执行根据权利要求I到16之一的方法。
全文摘要
提出一种用于解码从闪速存储器接收的码字的方法。所述闪速存储器包括若干多级闪速存储器单元,其中每个这种多级闪速存储器单元存储所述码字的一个码元。安排ECC解码器用于将所述码字解码为解码码字,并且所述ECC解码器设计为校正最大数目的错误。所述方法包括错误检查步骤,用于确定所述码字中错误的数目。如果所述错误的数目大于所述ECC解码器能够校正的错误的最大数目,那么执行第一码元修改步骤和第二码元修改步骤的至少一个。在第一码元修改步骤中,通过将所述码元的值增加到下一个更高值级别,生成第一修改码字,并且在第二码元修改步骤中,通过将所述码元(Si)的值减小到下一个更低值级别,生成第二修改码字。在分析步骤中,计算码元修改步骤的校正效果,并且在返回步骤中,确定基于所述校正效果的解码码字,或者码字(W)的擦除。
文档编号G06F11/10GK102741819SQ201180007766
公开日2012年10月17日 申请日期2011年1月27日 优先权日2010年1月28日
发明者I.伊利亚迪斯, R.A.普莱特卡, R.D.希德西严 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1