在固态存储器设备中的解码的制作方法

文档序号:6361851阅读:180来源:国知局
专利名称:在固态存储器设备中的解码的制作方法
技术领域
本发明总体上涉及包括固态存储器设备(诸如,基于闪存的存储器设备)的存储系统,以及涉及用于控制这种固态存储器设备的技术,特别是关注于用于这种固态存储器设备的解码机制。
背景技术
固态存储器设备包括使用电子电路来存储数据的可重写非易失性存储器设备。目前,固态存储器设备开始在某些领域(诸如,在针对笔记本电脑或台式机的大容量存储应用中)取代诸如硬盘驱动和光盘驱动的常规存储设备。还对固态存储器设备进行了研究,以在其他领域中诸如在企业存储系统中取代常规存储设备。这是因为固态存储器设备提供了超常的带宽以及突出的随机1/0(输入/输出)性能,和归因于缺少可移动部件而带来的值得重视的鲁棒性。目前发展水平的固态驱动装置(SSD)(该术语与术语“固态存储器设备”等同使用)可以利用单层单元(SCL)(针对其执行二进制量化以产生一个信息位)实现,或者可以利用多层单元(MLC)(针对若干层(通常是4或8)的一层执行量化,以产生不止一个信息位)实现。纠错码(ECC)可以应用于固态驱动装置,以实现数据取回过程的所需可靠性。典型地,里得-所罗门(Reed-Solomon,RS)码或博斯-查德胡里-霍昆格姆(Bose-Chaudhur1-Hocquenghem, BCH)码与硬解码算法一起用于上述目的。硬解码算法的主要问题在于,无论何时对从存储器单元读回的物理值执行量化时,都会出现不可恢复性的信息损失。为了克服由硬解码技术引起的信息损失,最近已经提出了针对SSD的ECC软解码。软解码技术的特征在于在多个迭代中对码字进行解码。已知的是,软解码较之于RS码会产生较大的编码增益。然而,迭代解码引入了与解码过程相关联的延迟,这可能会不利地影响SSD应用的响应时间。在W02007/084751A2中,将迭代解码技术用于固态存储器设备,其中该设备部分包括编码器,适用于存储由编码器编码的数据的多层固态非易失性存储器阵列,和适用于对从存储器阵列取回的数据进行解码的解码器。该存储器阵列可以是闪速EEPROM阵列。存储器单元可选地包括调制器和解调器。由调制器调制的数据存储在存储器阵列中。解调器对从存储器阵列取回的调制数据进行解调。另一迭代解码器在US2009/0024905A1中示出,其中,用于操作存储器设备的相应方法包括使用纠错码(ECC)来对数据进行编码,以及将编码数据作为第一模拟值存储在存储器设备的相应模拟存储器单元中。在存储了编码数据之后,从其中存储器设备中存储有编码数据的相应存储器单元读取第二模拟值。第二模拟值的至少某些值不同于相应的第一模拟值。对第二模拟值中存在的失真进行估计。响应于估计的失真,针对第二模拟值来计算纠错度量。在ECC解码过程中使用纠错度量来处理第二模拟值,以便重建数据。

发明内容
根据本发明第一方面的实施方式,提供了一种用于控制固态存储器设备的方法,该方法包括步骤:借助于纠错迭代解码过程来对所述存储器设备的单元中存储的码字进行解码,确定成功解码所述单元的码字所需的平均迭代次数,以及监测所述平均迭代次数。在实施方式中,该方法可以包括以下一个或多个特征:-依据所述平均迭代次数,触发下述动作的至少一个:-修改操作所述单元的模式;-应用损耗均衡例程;-不再操作所述单元;-针对所述单元应用避免数据损失的措施;-修改在所述解码过程中使用的一个或多个参数,以及继续利用经过修改的参数来运行所述解码过程;-监测所述平均迭代次数的步骤包括:将所述平均迭代次数与阈值进行比较,以及当所述平均迭代次数超过所述阈值时,触发至少一个动作;-当所述平均迭代次数超过所述阈值时,标记所述单元;-在所述解码过程中,限定最大延迟和最大迭代次数中的一个,最迟在此之后终止用于解码码字的所述解码过程,以及当所述平均迭代次数超过所述阈值时,分别增大所述最大延迟或所述最大迭代次数;-限定最大用户比特误码率,其中所述用户比特误码率是在已应用所述纠错迭代解码过程之后的码字的错误比特率,以及当所述平均迭代次数超过所述阈值时,增大所述最大用户比特误码率;-在所述解码过程中,在迭代中应用若干量化级别以确定由在所述存储器设备的单元中存储的物理值所代表的码符号的后验概率,其中量化级别的数目超出针对每个单元可用的码符号的数目;-单元的所述平均迭代次数通过针对来自所述块的预定数目读取而累计成功解码单元码字所需的所述迭代次数并将所述累计的迭代次数除以预定读取数目而确定;-监测所述预定数目读取所需的所述时间;-所述存储器设备包括多个单元;针对每个单元确定所述平均迭代次数;以及通过累计所述单元的每个单元的所述平均迭代次数并将所述累计的平均次数除以所述单元的数目,来确定平均迭代次数;-该设备包括单个单元。根据本发明另一方面的实施方式,提供了一种计算机程序产品,其包括计算机可读介质,其上包含有计算机可读程序代码,所述计算机可读程序代码包括配置用于执行根据任一前述实施方式所述的方法的计算机可读程序代码。根据本发明另一方面的实施方式,提供了一种用于控制固态存储器设备的存储控制器,该存储控制器包括:软解码器,用于借助于纠错迭代解码过程来解码在所述存储器设备的单元中存储的码字,计算单元,用于确定成功解码所述单元的码字所需的平均迭代次数,以及监测单元,用于监测所述平均迭代次数。在实施方式中,存储控制器可以包括下述一个或多个特征:
-软解码器包括:多个解码单元,用于借助于纠错迭代解码过程,对在所述存储器设备的单元中存储的多个码字并行地进行解码;-所述软解码器包括:单个解码单元,用于借助于纠错迭代解码过程对所述存储器设备的单元中存储的码字进行解码,以及队列,用于存储待解码的连续码字。根据本发明另一方面的实施方式,提供了一种存储器设备,包括固态存储器以及根据本发明的存储控制器方面的用于控制所述固态存储器的存储控制器。应当理解,方法步骤可以以不同于方法权利要求列出的顺序执行。这种不同顺序也将与目前列出的步骤顺序一样包括在这种权利要求的范围内。与该方法方面关联描述的实施方式也将被视作结合任何其他种类(诸如,设备、计算机程序产品等)所公开的实施方式,反之亦然。


将结合附图来参考目前而言是优选的但仍是示意性的根据本发明的实施方式的下述详细描述,来更全面地理解本发明及其实施方式。附图示出了:图1为根据本发明的实施方式用于控制固态存储器设备的方法的流程图;图2为根据本发明的实施方式用于控制固态存储器设备的方法的流程图;图3为示出了在图2的方法中使用的各种计数器的示例性状态的两个表格;图4为示出了解码过程中的延迟/迭代、原始比特错误率和用户比特错误率之间关系的图不;图5为根据本发明实施方式的存储设备的框图;图6为根据本发明实施方式的存储器控制器的框图;图7为基于闪存的存储器设备的存储器空间的一部分的示意图示。
具体实施例方式作为下述描述的引言而首先指出的是,本发明的整体方面涉及控制固态存储器设备的方式,典型地借助于存储控制器来控制。存储在存储器设备的单元中的码字借助于纠错迭代解码过程来解码。确定成功解码单元的码字所需的平均迭代次数。监测这种平均迭代次数。该想法是基于这样的认知,S卩,可以从针对损耗(wear)的固态存储器设备中非常不同的主体的解码操作,来推导何时借助于适当纠错码向存储器设备中存储的码字应用允许迭代地解码有意义信息的软解码过程。闪速存储器设备和诸如相变存储器设备的其他固态存储器设备因损耗形式的设备物理现象而具有有限的寿命。特别地,闪速存储器设备具有有限次数的写入-擦除周期,之后存储完整性开始降低且数据可能既不能安全读取也不能安全写入。这种在每个块用坏之前可以对其执行的最大写入-擦除周期次数被称为耐受时间。在块经历一定水平的损耗(这可能因块而异)之后,性能快速下降。假设数据保留期为10年,则针对SLC的耐受时间可以典型地处于100000的量级,而对于MLC处于10000的量级,其中数据保留期表示是指可以从设备读出数据的最大时间段(可能伴有可纠正的错误)。
另外,固态存储器设备的损耗会归因于操作这些设备的方式而部分地加速。例如,NAND闪存以块的单元和页面的子单元来组织。多个页面形成块。尽管读取和写入操作可以应用于作为这种操作最小单元的页面,但是擦除操作仅可以应用于整个块。并且在其他存储技术中,过时的数据可以简单地由新数据覆写,闪速技术需要在新数据可以写入已擦除块之前进行擦除操作。出于闪速技术中擦除操作比读取和写入操作耗时要长的原因,所以应用称为“非原址写入”的写入技术,其中将新的或更新的数据写入空闲页面分配器提供的某个空闲页面,而不是写入过时数据所驻留的相同页面。包含过时数据的页面是无效页面。在某个时间点,称为“垃圾收集”的过程通过将块的所有有效页面的内容移动至处于不同块的空闲页面从而释放这些块以便执行新写入。结果,主体块最终仅包括无效页面,并且可以擦除。显然,此非原址写入过程需要某些附加的内部写入操作,其效果被称为“写入放大”,其转而放大了设备的损耗。对固态存储器设备的损耗进行监测对于避免数据因块用坏而丢失是非常重要的。已发现,在应用迭代纠错解码过程时对码字进行解码所需的平均迭代次数代表了相应单元展现出的损耗水平。换言之,成功解码码字所需的平均迭代次数是针对单元损耗的度量。借助于监测平均迭代次数,可以监测单元的损耗,以及依据平均迭代次数,可以采取确定的动作。对于正常使用下的低损耗水平,良好的块/单元性能转化为宣称成功解码所需的非常少的迭代次数,且因此还经历较低的解码延迟。随着自块的上一次写入操作的时间段或损耗的增大,性能会下降,并且成功解码会需要更多次的迭代。因而将对存储在块中的码字成功进行解码的平均迭代次数用作对损耗水平的测量。在针对纠错码(ECC)的解码算法(其中,使用硬决策形式的硬解码来替代软解码)中,对存储器设备的单元中存储的物理值(其代表并且应当译成码符号)执行量化。假设例如物理值是存储在单元中的电压,量化级别可能是代表在单元中编码的码符号所采用的可能二进制值其中之一的某个电压。因此,用于硬解码的量化级别数目典型地等于码符号所采用的可能二进制值的数目。例如,在闪速存储器设备的四层单元中,典型地对两个二进制码符号进行编码,以及将四级量化器用于硬检测。通过量化获得的码符号的恢复序列应当代表信息位的原始序列。例如,里得-所罗门RS码或博斯-查德胡里-霍昆格姆BCH码通常在闪速存储器中结合硬解码算法一起使用。硬解码的主要问题在于:无论何时在可能代表一个或多个码符号的物理值上执行硬量化都会发生不可恢复的信息损失。为了克服这个问题,可以应用ECC的软解码。在软解码算法中,将可能代表一个或多个码符号的物理值理想地输入至解码器,而无需本着硬编码的精神进行先量化,在硬编码中针对给定的几个量化级别采取最终决策。在实施软解码时,利用若干量化级别来应用量化,量化级别的数目显著大于由物理值代表的码符号所采用的可能二进制值的数目,例如,大8倍。因此,软解码的特征在于通过使用显著增大码符号数目的大量量化级别,来迭代地接近物理值代表哪个码符号二进制值的决策。对于某一类编码,如果应用迭代软解码算法的话,则可获得的编码增益显著增加。迭代软解码机制通常在两个软解码部件/逻辑之间应用消息传递过程,从而使得每个部件使用来自另一部件的软信息来产生更可靠的决策。通过应用软解码过程,不可恢复的信息损失较之于硬解码可以得以避免。
因此,在本发明的上下文中,软解码涉及这样的解码过程,其在各种迭代中使用大量量化级别来确定由存储在存储器设备的单元中的物理值所代表的码符号二进制值。在这种过程中,量化级别的数目超过由每单元可用的码符号所采用的可能二进制值的数目。优选地,量化级别的数目至少超过由每单元可用的码符号所采用的可能二进制值的数目的8倍。在优选实施方式中,应用用于解码turbo码或低密度奇偶校验(LDPC)码的软解码器。优选地,在向设备写入数据时,利用对应的纠错码(优选地可以由软解码器解码的turbo码或低密度奇偶校验(LDPC)码)对数据进行编码。为了缓解固态存储器设备中的损耗问题,已经提出针对具有不同损耗水平的块进行不等同的错误保护。不再需要这样的方式,原因在于借助于软解码,所有的块都可以由作为建议的迭代码的相同纠错码来处理,因为损耗的水平可以较早推导出或者在平均迭代次数中暗示。依据平均迭代次数,可以应用由闪速控制器执行的内部管理过程,称为损耗均衡。该过程旨在解决存储器设备的用坏特征。损耗均衡涉及各种数据放置和移动功能,其旨在在所有可用的单元间均匀地分布写入擦除周期以避免不均匀的用坏,从而延长整体寿命。具体地,损耗均衡功能控制对应当向其写入新数据的块的选择以及移动闪速存储器内存储的数据以释放具有较低周期计数乃至用坏的块。这种损耗均衡过程可以由所识别平均迭代的特定次数或范围来触发。不再需要单独建立用于诸如通过针对每个单元对写入-擦除周期进行计数而确定损耗的手段。在平均迭代次数中暗示的损耗的度量可以视为针对损耗均衡过程的损耗估计输入和/或触发。总之,监测使用诸如turbo码或LDPC码的迭代码对存储在单元中的码字进行软解码所需的迭代次数。对于正常使用下的低损耗水平,良好的单元性能转化成宣称成功解码所需的非常少迭代,并且因此经历非常低的解码延迟。随着自块的最后写入操作起的时间段或损耗的增大,性能会下降,并且成功解码需要更多次的迭代。因而将对存储在块中的码字进行成功软解码的平均迭代次数用作对损耗水平的度量。图1示出了根据本发明的实施方式用于控制固态存储器设备的方法的流程图。在步骤10中,利用纠错迭代解码过程,对存储在单元(例如,基于闪存的存储器设备的块)中的码字进行解码。在步骤11中,基于步骤10中对多个码字的解码(等同于多个读取过程)来确定对该单元中的码字进行成功解码所需的平均迭代次数。在步骤12,监测平均迭代次数,即将其与阈值的比较。如果平均迭代次数低于阈值(N),则该过程重新从步骤10开始,直到根据步骤11的要求执行了能够构建平均迭代次数的足够次数的读取。如果在步骤12中,平均迭代次数高于阈值(Y),则可以在步骤13中应用一个或多个动作:这种动作可以包括下述一个或多个:-修改操作该单元的模式;-应用损耗均衡例程;-使得单元不再被操作;-启动用于针对该单元避免数据损失的措施;-修改在解码过程中使用的一个或多个参数,以及继续利用新参数来运行解码过程。上述列表既不是穷尽的,也不是需要在设备中同时提供的全部不同动作。
依据平均迭代次数(优选地,当平均次数超过阈值时)而发起的动作的特定示例可以如下:针对平均次数超过损耗均衡阈值,可以启动损耗均衡过程,以跨包括当前块的多个块来均衡损耗分布。如果,例如平均迭代次数和对应的损耗均衡阈值指示本块中相对高水平的损耗,则可以使得任何新到达的数据被写入展现较低损耗水平的不同块。还可以理解,作为一种操作模式(如果例如通过超过阈值而触发),可以仅允许将来对当前块的只读操作而不允许写入或擦除操作。作为监测平均迭代次数结果而对操作模式的改变可能影响例如数据的读取、数据的写入、擦除操作、编码和/或解码操作、垃圾收集、其他管理性任务等。总之,可能就所识别损耗而言发生偏离和/或改变的任何当前操作过程都应当落入操作模式的改变的范围。如果例如平均迭代次数超过指示非常高水平损耗的停止阈值,则可以例如在应用了故障保护例程以防止来自当前块的有效数据损失之后,对当前块停止所有操作,且该块不再使用。在优选实施方式中,以上给出的某些动作可以相继发起或者并行发起;针对不同动作的阈值,它们的值可能不同。根据图1中的优选方法,将平均迭代次数超过阈值的块标记为不再可用和/或不可靠。在这种情况中,或者在步骤14中,可以停止对当前块的任何操作。在除了停止操作之外的动作(诸如,例如修改解码参数)作为优选选择时,解码过程可以在步骤10继续,参见虚线,并且运行包括关联解码的新读取操作周期,以便在步骤11中确定新的平均迭代次数,然而,现在应用的是修改过的解码参数。图1的流程图示出了随着块损耗的增大,单元性能下降,且针对成功解码需要更多次的迭代。当成功解码所需的平均迭代次数超过阈值(其可以相对于在单元未耗尽期间初始阶段处的正常操作进行设置)时,可以将该块声明为不可靠的以及不再使用。图2示出了根据本发明另一实施方式的流程图,其中再次监测软解码算法在读取请求后生成其输出所需的迭代次数。在块级别(块可以是本方法适用的闪速存储器设备的单元),该操作在步骤20中开始,以及各种计数器<k>、〈r>和<i>被设置为0,统一参见步骤21。引入了大小“w”的预定窗口,其考虑在块中的“w”次连续读取。这可以通过针对每个块的寄存器中的计数器<r>实现,该计数器可以在块中的每次读取操作后递增,以及当在步骤24中“r”达到“w”时,在步骤21中重置。在重置之后,计数器<k> (代表窗口 “w”的索引)在针对每个块的寄存器中递增。另一寄存器<i>在针对每个块的寄存器中实现,其在步骤23中根据在步骤22中块的读取操作之后产生输出结果所需的迭代次数“m”来递增。在这种情况下,计数器<i>累计解码过程中支持各种读取操作所需的迭代次数。当“r”达到“w”时,此计数器<i>被重置,参见步骤21。在重置之前,计数器<i>的值可以存储在针对每个块的寄存器中的另一计数器位置〈^previous〉,其未在图2的流程图中示出。由此,第一“w”读取形成第一窗口(由w_l指代),随后的“w”读取形成第二窗口(由w_2指代),等等。因此,窗口 w_k包含w次连续读取的序列(k-l)*w+l, (k-l)*w+2,...., k*Wo在“r”达到“w”之后, 在步骤25中基于上文按下述公式来计算所需的平均迭代次数n_k:在窗口 w_k中的平均迭代次数n_k:n_k = i/w。
在步骤26中,借助于与阈值“thres”的比较来监测这种平均迭代次数n_k。在平均次数n_k高于阈值“thresh” (是)的情况下,该过程在步骤27中停止,以及在本实施方式中,将相应的块标记为不可用。也可以适当地结合步骤27来发起其他动作。在步骤26中平均迭代次数n_k低于闽值“thresh”的情况下,该过程再次在步骤21中针对“w”个读取的新窗口 k+Ι开始,针对该新窗口在步骤25中确定平均迭代次数以及在步骤26中对其进行监测。可选地,结合确定平均迭代次数n_k,可以计算平均迭代次数的改变速率如下:窗口w_(k_l)中的平均迭代次数:n_(k_l) = i_previous/w。窗口 w_k中的平均迭代次数d_k的变化:d_k = n_k-n_(k_l)。序列d_k可以用于估计设备中的损耗改变速率。如果d_k超过预定阈值,则可以附加地采取适当动作。可以根据另一实施方式还可以解决数据保留的问题。数据保留是指存储的数据可被读出(可能带有可纠正的错误)的最大时间段。回想读取问题可能归因于数据损坏而产生,不是因为损耗而是归因于数据已被存储较长时段但未被更新。具体地,参考上述方法,典型的窗口包含w个读取操作,带有关于已针对解码执行的迭代次数的信息,而不具有时间的概念。为了将保留与耗尽区分,可以提供附加的计数器以指示对应窗口的年龄,即,窗口活跃的时间。在窗口的年龄超过保留闽值以及平均迭代次数超过该指派阈值的情况下,可以假设在这种块中的数据可能损失不会是起源于损耗而是起源于数据保留。可以作为监测窗口活跃多久的结果而实现其他或附加的措施,例如,在窗口年龄超过保留阈值的情况下重新定位块的有效数据。图2中示出的方式还可以扩展,以检测整个存储器设备何时用坏。一种可能的实现在下文描述,并且构成了在块级别确定平均迭代次数的等同,然而该实现转为设备级别,其中实现计数器以对设备中任何读取过程的迭代进行计数。因此,在设备级别的迭代次数通过针对设备的计数器进行计数。具体地,引入了大小“W”的窗口,其考虑设备中的W个连续读取。这可以通过针对设备的寄存器中的计数器<R>实现,在设备中的每次读取操作之后将其递增,以及在“R”达到“W”时将其重置。在重置后,代表窗口索引的另一计数器〈K〉在针对每个设备的寄存器中递增。在针对每个设备的寄存器中实现另一计数器〈1>,该计数器根据在任何块中的读取操作之后产生结果所需的迭代次数而进行递增。当“R”达到“W”时,对此计数器〈I〉进行重置。在重置该计数器之前,计数器〈I〉的值可以存储在针对每个设备的寄存器中的另一计数器位置<I_preViouS>中。由此,第一 W个读取形成由W_1代表的第一窗口,随后的W个读取形成由W_2代表的第二窗口,等等。因此,窗口 W_K包含W个连续读取的序列(K-1)*W+1,(K-1)*W+2,...,K*W。基于上文并按照下述来计算所需的平均迭代次数及其改变速率: ff_K中的平均迭代次数N_K:N_K = I/W。ff_ (K-1)中的平均迭代次数:N_ (K-1) = I_previous/W。ff_K中的平均迭代次数变化D_K:D_K = N_K-N_ (K-1)。针对在设备级别对平均迭代次数的确定可以作为在块级别上的确定的补充或者替代。在设备级别观察到用坏时,在设备级别的平均迭代次数超过阈值后发起的任何动作都可以是设备特定的,例如通过将设备标记为用坏和/或避免对该设备应用任何其他写入和/或擦除操作而实现。在另一实施方式中,可以在设备的每个块上执行针对平均迭代次数的确定。此外,针对在设备级别确定平均迭代次数,可以累计针对所有块确定的平均迭代次数。在一个实施方式中,如果针对特定块的平均迭代次数超过了阈值,则可以停止或者修改在每个个体块上的操作,以及如果累计的迭代次数超过阈值,则可以停止或修改在整个设备上的操作,该阈值可以设置为与块级别阈值相同的值,或者设置为不同的值,特别是设置为较低的值。如果被声明为不可用的块的数量超过闽值,则也可以停止在整个设备上的操作。在图3的表格中针对采样块ID和采样设备ID示出了针对每个块的和针对每个设备的寄存器的内容的典型快照。示出了计数器k,r,i,K,R,I (对应于针对图2介绍的计数器)的采样计数器值。图4借助于3D图示出了本方法和设备的更广的上下文,其中在X轴上描述原始比特误码率,在y轴上描述延迟/迭代,以及在z轴上描述用户比特误码率。原始比特误码率表征存储在存储器中的数据的比特误码率,即如果不应用纠错则存储的码字将表现出的比特误码率。出于应用纠错码的原因,可以借助于纠错码来改进比特误码率,而用户比特误码率代表在对纠错编码的数据进行解码之后仍会留下的误码率。出于使用利用迭代解码过程的码的原因,延迟/迭代可以代表对码字进行成功解码所需的时间长度或者对码字进行成功解码所需的迭代次数。注意,在本图示中,迭代次数代表对个体码字进行解码所需的次数,而不是对多次解码确定的平均次数。假定在本示例中,固态存储器设备是闪速存储器设备,所提议的方法的实施方式利用从闪速存储器设备中的单元读回的模拟信号采样V(T),即随时间改变的电压。随着相应块损耗的增加,原始比特误码率(即,在纠错之前应用于个体符号决策的误码率)也增力口,导致解码所需迭代次数的增加。为了在即使码符号不能成功解码时也维持有限的延迟以允许设备继续操作,则优选地对用于解码码字所执行的迭代次数加以界限。因此,对于所允许的给定延迟或最大迭代次数,对于增大的损耗,用户比特误码率会随着原始比特错误的增加而增加。注意,当原始比特误码率增加时,可以以增大迭代次数以及因此增大解码延迟为代价维持指定的用户比特误码率。在接近设备寿命的终止时,用于成功解码码字所需的迭代次数会接近于所允许的最大迭代次数。在该时刻,即例如当平均迭代次数超过第一闽值(其中第一闽值低于所允许的最大迭代次数)时,可以将允许的最大迭代次数设置为较高的值并由此超常增加允许的最大迭代次数以维护可靠性,即维护特定的用户比特误码率。在第二步骤中,当平均迭代次数超过第二阈值(其优选地可以超过第一阈值)时,该块或设备可以标记为且在这样做时声明为不可靠的以及不再可用的。如果第二阈值设置为等于所允许的最初最大迭代次数的值,则可以当在最大允许的解码器迭代的平均数目内不能达到目标用户比特误码率时,将块声明为不可靠。在图4的图示中,在设备的寿命期间,主体块的损耗增加,这会导致原始比特误码率从RBl增加到RB2。假设,将在原始比特误码率为RBl的情况下对码字进行成功解码所需的迭代次数限制为IT1,从图中可以变得显然的是,与RBl和ITl相关联的用户比特误码率UBl (其是对即使存在纠错码也不能纠正的比特错误的度量)增加至UB2。然而,在允许的最大迭代次数ITM具有比ITl高的值的情况下,存在通过运行超过ITl但小于ITM次数的迭代而遵守用户比特误码率UBl的机会,其中UBl可以是针对设备操作指定的目标用户比特误码率。假设,如果平均迭代次数超过阈值,则可例外地允许将最大迭代次数设置为超过ITM的IT2,以允许至少针对低于RB3的原始比特误码率而将目标用户比特误码率保持在UBl。换言之,可以在块寿命和解码延迟之间选择各种平衡,如图4量化地所示。图5示出了根据本发明实施方式的存储设备的框图。存储器设备I包括具有块/页存储器空间结构的基于闪存的固态存储器2。若干块指示为21。存储器控制器3控制闪速存储器2的动作,由此可以将存储器描述为计算化的存储器。存储器控制器3也可以标记为存储控制器。存储器控制器3特别适用于从存储器2读取数据和向其写入数据(包括编码和解码),以及结合数据的读取和写入而执行所有管理任务。存储器控制器3进一步连接至主机4,其利用存储设备I来存储数据。因此,主机4向存储设备I发布读取和/或写入命令。为了实现根据上述实施方式的任一的方法,存储器控制器3优选地提供优选存储在诸如R0M31(参见图6)的非易失性、非可重写存储介质中的计算机程序代码。存储器控制器进一步提供RAM32以向其加载程序代码,以及处理单元33,用于执行RAM32中的程序代码。处理单元33包括功能单元,诸如软解码器331,用于根据上述方法进行软解码,计算单元332,用于确定在若干读取命令的解码过程中所需的平均迭代次数,和监测单元333,在其中例如将平均迭代次数与阈值进行比较。本处理单元33包括单个软解码器,其由队列334馈送待解码的码字。此外,提供了内部通信系统34,以用于在存储器控制器3的部件之间通信,并且提供了接口 35,以用于与闪速存储器通信,而另一接口 36可被提供以用于与主机的任何通信。在优选实施方式中,LDPC码实现为纠错码,以及迭代软解码应用于软解码器31中的数据取回。关键参数是与解码过程相关联的延迟。监测用于解码码字(存储在块中)的平均迭代次数。对于可接受的损耗水平,预期针对高达5000比特的码字长度在20次迭代之内提供响应。假设每个迭代在Ius中执行,则响应时间将至多为20us,其位于针对适当SSD操作的可接受界限内。作为使用仅一个逻辑用于迭代解码加上一个队列用于存储连续读取请求的针对软解码器331的上述硬件设置(其中以更大的延迟为代价降低了实现复杂度)的备选,可选地可以存在通过一次复制解码η个码字所需的逻辑来实现的设置,从而使得可以并行地处理读取请求,由此导致较低的延迟。最后,图7示出了在块21中组织的闪速存储器的一部分,若干个块131-138被明确地示出。页面被示出为在以方块示出的栏中的水平条带。所有块131-138是适用于保有用户数据的数据块。在本示例中,假设,块133被确定为表现出高于可接受阈值的损耗。结果以及如图7的箭头60所示,该块的有效页面被拷贝至另一块,即在本示例中的块135,该块目前支持写入新的或更新的数据。在这种数据保存之后,块133被标记为不再被使用。所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于一电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、电线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
权利要求
1.一种用于控制固态存储器设备的方法,包括步骤: 借助于纠错迭代解码过程对所述存储器设备(I)的单元中存储的码字进行解码, 确定成功解码所述单元的码字所需的平均迭代次数(n_k),以及监测所述平均迭代次数(n_k)。
2.根据权利要求1所述的方法,其中依据所述平均迭代次数(n_k),触发下述动作的至少一个: 修改在其中操作所述单元的模式; 应用损耗均衡例程; 不再操作所述单元; 针对所述单元避免数据损失; 修改在所述解码过程中使用的一个或多个参数,以及利用修改后的所述参数来继续运行所述解码过程。
3.根据权利要求1或2所述的方法, 其中所述监测所述平均迭代次数(n_k)的步骤包括:将所述平均迭代次数与阈值进行比较,以及 其中当所述平均迭代次数(n_k)超过所述阈值时,触发至少一个动作。
4.根据权利要求3所述的方法,其中当所述平均迭代次数(n_k)超过所述阈值时,标记所述单元。
5.根据权利要求3所述的方法, 其中限定最大延迟和最大迭代次数(ITM)中的一个,最迟在此之后终止用于解码码字的所述解码过程,以及 其中当所述平均迭代次数(n_k)超过所述阈值时,分别增大所述最大延迟或所述最大迭代次数(ITM)。
6.根据前述任一权利要求3所述的方法, 其中限定最大用户比特误码率,所述用户比特误码率是在已应用所述纠错迭代解码过程之后的码字的错误比特率, 以及其中当所述平均迭代次增大时,增大所述最大用户比特误码率。
7.根据前述任一权利要求所述的方法,其中在所述解码过程中,在迭代中应用多个量化级别以确定由在所述存储器设备的单元中存储的物理值所代表的码符号二进制值的后验概率,所述量化级别的数目超出每个单元可用的码符号的数目。
8.根据前述任一权利要求所述的方法,其中通过针对从一个单元的预定数目(w)的读取而累计成功解码单元的码字所需的迭代次数并且将累计的所述迭代次数除以所述读取的预定数目(《),来确定所述单元的所述平均迭代次数(n_k)。
9.根据权利要求8所述的方法,其中监测所述预定数目(w)的读取所需的时间。
10.根据前述任一权利要求所述的方法, 其中所述存储器设备包括多个单元, 其中针对每个单元确定所述平均迭代次数(n_k),以及 其中通过累计所述单元中的每个单元的所述平均迭代次数(n_k)并且将累计的所述平均次数除以所述单元的数目,来确定针对所述设备的平均迭代次数(n_K)。
11.根据前述任一权利要求所述的方法,其中所述设备包括单个单元。
12.—种计算机程序产品,包括计算机可读介质,其上包含有计算机可读程序代码,所述计算机可读程序代码包括配置用于执行根据前述权利要求ι-1i的任一项所述的方法的计算机可读程序代码。
13.一种用于控制固态存储器设备的存储控制器,包括: 解码器(331),用于借助于纠错迭代解码过程对所述存储器设备(I)的单元中存储的码字进行解码, 计算单元(332),用于确定成功解码所述单元的码字所需的平均迭代次数(n_k),以及 监测单元(333),用于监测所述平均迭代次数(n_k)。
14.根据权利要求13所述的存储控制器,其中所述解码器(331)包括多个解码单元,用于每个借助于纠错迭代解码过程针对在所述存储器设备(I)的单元中存储的多个码字并行地进行解码。
15.根据权利要求13所述的存储控制器, 其中所述解码器(331)包括单个解码单元,用于借助于纠错迭代解码过程对所述存储器设备(1)的单元中存储的码字进行解码,以及 其中提供队列(334)以用于存储将要由所述解码器(331)解码的连续码字。
16.一种存储器设备,包括固态存储器和根据权利要求13-15中任一项所述的用于控制所述固态存储器的存储控制器。
全文摘要
在固态存储器设备中,借助于纠错迭代解码过程来对存储器设备(1)的单元中存储的码字进行解码。确定成功解码所述单元的码字所需的平均迭代次数(n_k),以及特别地出于平均迭代次数(n_k)可以用作主体单元损耗的度量这样的原因,而监测所述平均迭代次数(n_k)。
文档编号G06F11/10GK103119563SQ201180046175
公开日2013年5月22日 申请日期2011年9月22日 优先权日2010年9月29日
发明者G·切鲁比尼, I·伊利亚迪斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1