具有自适应容量的存储设备的制作方法

文档序号:6772232阅读:238来源:国知局
专利名称:具有自适应容量的存储设备的制作方法
技术领域
本发明通常涉及存储设备,具体涉及具有自适应存储容量的存储设备。
背景技术
多种存储设备,例如闪存和动态随机存取存储器(DRAM),使用模拟存储单元阵列来存储数据。例如,在2003年4月在IEEE学报,第91卷,第4期,第489-502页由Bez等人发表的“Introduction to Flash Memory”中,描述了闪存设备,该文献在此处以援引方式全部纳入本文。在此类存储设备中,每个模拟存储单元通常包括一个晶体管,该晶体管保持了一定数量的电荷,所述电荷表示存储在所述存储单元中的信息。写入一特定存储单元的电荷影响所述存储单元的“门限电压”,也即,需要施加电压到存储单元以使得所述存储单元可以导通电流。—些存储设备,通常称为“单层单元”(SLC)设备,在每个存储单元中存储单比特信息。通常,所述存储单元的可能的门限电压的范围被分为两个区域。落入这两个区域中的一个区域的电压值代表比特值“0”,而属于另一个区域的电压值代表“1”。更高密度设备, 通常称为“多层单元”(MLC)设备,每个存储单元存储两个或更多个比特。在多层单元中,门限电压的范围被分为多于两个区域,其中每个区域代表多于一个比特。例如,在纽约州纽约市举办的1996年IEEE国际电子器件大会(IEDM)的学报上第 169-172 页上由 Eitan 等人发表的“Multilevel Flash Cells and their Trade-Offs,,,描述了多层闪存单元和设备,该文献在此以援引方式全部纳入本文。该文献对数种多层闪存单元进行比较,例如共地型、DINOR型、AND型、NOR型和NAND型存储单元。Eitan等人在1999年9月21至对日在日本东京举行的固态器件与材料国际会议(SSDM)的学报的第522至524页发表的“Can NROM,a 2-bit,Trapping Storage NVM Cell, Give a Real Challenge to Floating Gate Cells ?”描述了另一种模拟存储单元,称为氮化物只读存储器(NROM),该文献在此以援引方式纳入本文。在2002年2月3日 7日在美国加州旧金山市举办的IEEE国际固态电子器件学会(ISSCC 2002)的学报的第100-101 页由 Maayan 等人发表的"A 512 Mb NROM Flash Data Storage Memory with 8MB/s Data Rate”中,描述了 NROM存储单元,其在此处以援引方式纳入本文。模拟存储单元的其他示例性类型为,铁电RAM(FRAM)单元、磁RAM(MRAM)单元和相变RAM(PRAM,也称为相变存储器PCM)单元。例如,在2004年5月16日至19日在塞尔维亚和黑山的Nis举办的第M届微电子国际学会(MIEL)学报第一卷的第377-484页上由Kim 禾口 Koh 发表的"Future Memory Technology including Emerging New Memories,,中,描述了 FRAM、MRAM和PRAM单元,其在此处以援引方式纳入本文。在一些应用中,数据以可变密度存储在存储单元中。例如,以援引方式将其公开内容纳入本文的美国专利6,363,008,描述了一种包括多个存储阵列的每单元多比特 (multiple-bit-per-cell)存储器,其中每个存储单元存储的比特数是针对每个存储阵列单独设定。在读、写和存储每单元较多比特数的时候,经测试证明精确的存储阵列被设置为存储每单元较多的比特数,而经测试证明不能精确地读、写和存储每单元同样多比特数的存储阵列被设置为存储每单元较少的比特数。作为替代,在其公开内容以援引方式纳入本文的美国专利6,456,528中,为通常在多个存储状态下操作其存储单元的一种闪存非易失性存储系统,提供了在两个状态下操作其存储单元块的某些所选块或所有块的能力。这两个状态被选择为所述多个状态中相距最远的状态,从而在双态操作中提供增大的裕度。美国专利5,930,167,其公开内容以援引方式纳入本文,描述了一种存储系统,其包括配置在可共同擦除的存储单元块中的闪速可电擦除可编程只读存储(EEPROM)单元阵列。单个存储单元能存储多于一比特的数据,原因在于其以多于两个的可检测的门限范围或状态来操作该单个存储单元。所述阵列的任何未存储数据的部分可被用作写缓存,其中这些存储单元的单独一个通过仅以两个可检测的门限范围来操作以存储单独一比特数据。 进入存储器的数据初始以两个状态写入可用的块中。随后,在背景(background)中,以多个状态将所述被缓存的数据读取、压缩并且写回到所述存储器的较少的块中。美国专利6,466,476,其公开内容以援引方式纳入本文,描述了每单元多比特非易失性存储器,其使用不同的每单元比特数来存储数据流的不同部分。具体地,使用相对小的每单元比特数来存储要求高度数据完整性的数据(例如,数据帧的帧头)。使用相对大的每单元比特数来存储具有较高错误容忍度的数据(例如,表示音乐、图像或视频的主要数据)。美国专利6,643,169,其公开内容以援引方式纳入本文,描述了一种根据所涉及的数据的类型以可变的每单元比特数存储数据的方法。当保真度不太重要时,可以增大每单元比特数。当保真度较为重要时,可以减小每单元比特数。在一些实施方案中,存储器可以基于逐个存储单元而在存储模式之间进行改变。

发明内容
7
本发明的实施方案提供一种用于在包括多个模拟存储单元的存储器中存储数据的方法,所述方法包括估计所述模拟存储单元的相应的可达到的存储容量;基于所估计的可达到的存储容量,为所述存储单元分配定义待要存储在该存储单元中的数据量的相应的存储配置;根据相应的分配的存储配置,将数据存储在所述存储单元中;以及在所述存储器已经被安装在主机系统中并用于在该主机系统中存储数据之后,重新估计模拟存储单元的相应的可达到的存储容量,并且响应于所重新估计的可达到的容量,修改所述存储配置。在一些实施方案中,存储数据包括使用纠错码(ECC)对数据进行编码,将已编码的数据转换为选自一标称模拟值的集合中的模拟值并且将所述模拟值写入相应的存储单元,且每个存储配置指定相应的ECC码率和用于存储数据的所述标称模拟值的集合的大小。在一个实施方案中,对于每个模拟存储单元,存储数据包括将数据转换成选自一标称模拟值的集合中的模拟值并将所述模拟值写入所述存储单元,且每个存储配置均指定用于在所述模拟存储单元中存储所述数据的标称模拟值。在另一实施方案中,存储数据包括将数据转换成模拟值,并且将所述模拟值写入相应的存储单元中,且估计可达到的存储容量包括对影响写入存储单元的模拟值的相应的失真度(distortion level)作估计,并且响应于所述失真度确定可达到的存储容量。估计失真度可以包括从存储单元读取模拟值,并且基于从所述存储单元读取的模拟值来估计所述失真度。估计失真度可以包括从读取自存储单元的模拟值来重构数据,并且基于所重构的数据来计算所述失真度。在一些实施方案中,计算失真度可以包括对读取自所述存储单元的模拟值的标量函数求和。对标量函数的求和可以包括响应于数据对在读取自存储单元的模拟值和存储在存储单元中的数据的相应的期望值之间的差的平方求和。 在另一实施方案中,计算失真度包括对如下存储单元的数量进行计数,在该存储单元中,读取自所述存储单元的模拟值和存储在所述存储单元中的数据的相应的期望值之间的差响应于所述数据而超过一预定值。在公开的实施方案中,存储数据包括将模拟值写入存储单元并且使用迭代的编程与验证(P&V)过程来验证已写入的模拟值,而估计失真度包括基于由所述P&V过程验证的模拟值来计算所述失真度。在另一实施方案中,存储数据包括将模拟值写入存储单元并且使用迭代的编程和验证(P&V)过程验证已写入的模拟值,该过程通过编程步骤迭代地增量所述模拟值,且存储配置定义由所述迭代的P&V过程使用的编程步骤的大小。在又一实施方案中,存储数据包括对待要存储在一组存储单元内的数据用纠错码 (ECC)编码,并且将已编码的数据转换成模拟值以用于存储在该组存储单元中的相应的模拟存储单元中,估计可达到的存储容量包括从所述组中的存储单元读取模拟值并且对介于读取的模拟值和最接近于所述模拟值的有效的ECC码字之间的距离度量作估算,并且修改存储配置包括响应于所估算的距离度量适配该组存储单元的存储配置。在又一实施方案中,重新估计可达到的存储容量包括读取存储在所述存储单元中的数据,而修改存储配置包括响应于在已读取的数据中的检测错误来适配所述存储配置。 存储数据可以包括使用纠错码(ECC)对数据编码,而适配所述存储配置可以包括修改ECC 的码率。在一些实施方案中,估计存储单元可达到的容量包括对施加到相应的存储单元的先前的编程和擦除操作进行追踪并且响应于已追踪的先前的编程和擦除操作来估计所述可达到的容量。估计可达到的容量可以包括响应于先前的编程和擦除操作以来流逝的时间段的长度来计算可达到的容量。在一个实施方案中,存储数据包括将所述数据的初始部分转换成模拟值并且将所述模拟值写入相应的存储单元,且随后通过增大写入到所述存储单元的模拟值而不擦除该存储单元,将所述数据的另外部分存储在所述存储单元的至少一些之中。在另一实施方案中,存储数据包括使用为所述数据增加冗余位的纠错码(ECC)对数据进行编码,并且将所述冗余位存储在一些模拟存储单元中,且修改存储配置包括修改多个由所述ECC增加的冗余位而不擦除所述存储单元。存储冗余位可以包括与数据分离地存储冗余位。在又一实施方案中,分配存储配置包括预定义一个可能的存储配置的集合,且修改存储配置包括从所述预定义的集合中选择更新的存储配置。由至少一个所述存储配置所定义的所述数据量指定每单元非整数的比特数。在又一实施方案中,存储数据包括在将数据写入存储单元之前对数据进行压缩, 且存储配置定义将对数据进行压缩所采用的相应的压缩比。在一个公开的实施方案中,分配存储配置包括为所述存储单元的相应组定义存储配置。在一个实施方案中,在存储单元中存储数据包括接受用于存储在所述存储器中的数据项,选择存储单元子集以在其中响应于所分配的存储配置存储所述数据项,并且将所述数据项存储在所选择的存储单元子集中。在一些实施方案中,重新估计可达到的存储容量是在不对所述数据进行存储和读取的空闲时间段期间执行。在另一实施方案中,分配和修改存储配置包括将所述存储配置存储在配置表中。 在一些实施方案中,可以在将存储器已经安装在主机系统之前,在存储配置表中存储存储配置的初始值。在又一实施方案中,分配和修改存储配置包括在存储在存储单元中的数据量和相应的估计可达到的容量之间维持预定的裕度。在又一实施方案中,至少一些失真是由模拟存储单元中的泄漏电流所导致,且估计失真包括估计泄漏电流。根据本发明的一实施方案,还提供一种用于在包括多个模拟存储单元的存储器中进行数据存储的方法,该方法包括估计在相应的模拟存储单元之中的失真度;基于所估计的失真度,估计所述模拟存储单元的相应的可达到的存储容量,基于所估计的可达到的容量,为所述存储单元分配定义待要存储在所述存储单元中的数据量的相应的存储配置;并且根据相应的分配的存储配置将所述数据存储在所述存储单元中。根据本发明的一实施方案,还提供一种用于在包括多个模拟存储单元的存储器中进行数据存储的方法,所述方法包括当所述存储器在主机系统中处于使用状态时,追踪所述模拟存储单元的相应的可达到的存储容量;接受用于存储在所述存储器中的数据;基于所追踪的可达到的容量选择一用于存储所述数据的存储单元子集;并且将所述数据存储在所述子集的存储单元中。在一些实施方案中,选择子集包括选择其可达到的总容量与所接受的数据的大小最佳匹配的存储单元。在另一实施方案中,接受数据包括接受用于存储所述数据的要求的可靠性等级,且选择子集包括响应于所要求的可靠性等级选择存储单元。附加地或替代地, 接受数据包括接受所要求的用于存储数据的保持期,且选择子集包括响应于所要求的保持期而选择存储单元。选择子集可以包括选择相对于其他存储单元具有低失真度的存储单兀。在另一实施方案中,追踪可达到的存储容量包括对施加到存储单元的先前的编程和存储操作进行追踪,而选择子集包括响应于先前的编程和擦除操作来选择存储单元。选择子集可以包括通过选择在所述存储单元内的相对于其他存储单元具有较少次数的先前的编程和擦除操作的存储单元,将多个编程和擦除操作均勻分布在所述存储单元中。分布编程和擦除操作的次数可以包括选择在预定的最近时间段内相对于其他存储单元执行较少次数的先前的编程和擦除操作的存储单元。在公开的实施方案中,追踪可达到的存储容量包括通过对可用于存储数据的存储单元的可达到的容量求和,来计算可用的存储空间的大小并且报告给所述主机系统。在另一实施方案中,存储器被分成多个擦除块,每个擦除块包括在单次擦除操作中擦除的一组存储单元,所述方法还包括通过如下方式从所述存储器中擦除数据项识别存储有所述数据项的一个或多个擦除块;当存储有所述数据项的擦除块包含另一数据项的已存储数据时,基于所追踪的所述存储单元的可达到的容量和另一数据项的大小,识别在所述擦除块之外的存储有所述数据项的另外的存储单元,并且将所述另一数据项的数据复制到所述另外的存储单元;并且擦除存储有所述数据项的擦除块。在一个实施方案中,接受用于存储的数据包括以固定容量块接受来自主机系统的数据,并且基于所追踪的可变容量组的可达到的容量,将数据存储在存储单元的可变容量组中。在另一实施方案中,在可变容量组中存储数据包括识别两个或更多个其容量小于固定容量块的容量的可变容量组,并且将接受在一个或多个固定容量块中的数据存储在所识别的两个或更多个可变容量组中。在又一实施方案中,在可变容量组中存储数据包括将一个或多个可变容量组分配为用作逾额存储器存储区域,将接受在固定容量块中的数据存储在相应的可变容量组中, 并且,当一个可变容量组的可达到的容量小于所述固定容量块的容量时,将接受在相应的固定容量块中的数据中的一些存储在所分配的逾额存储器存储区域中。在又一实施方案中,在可变容量组中存储数据包括将接受在固定容量块中的数据循序地存储在存储单元中,而与可变容量组之间的边界无关。存储数据可以包括,初始将接受在每个固定容量块中的数据存储在相应的可变容量组中,且随后对初始存储的数据循序重新编程,而与所述可变容量组之间的边界无关。在一些实施方案中,所述方法包括从可变容量组中取出数据,重构固定容量块,并且使用固定容量块向主机系统输出数据。所述方法可以包括通过缓存所述数据中的至少一些,来减少施加到所述存储器的存储器存取操作的次数。缓存所述数据中的至少一些可以包括一旦检测到瞬时存储事件,就将被缓存的数据传送到存储器。瞬时存储事件可以包括选自即将到来的电源故障、超时和接受自主机系统的文件结束(EOF)命令的事件中的至少
一个事件。根据本发明的一实施方案,还提供一种数据存储装置,包括接口,其被布置为与包括多个模拟存储单元的存储器通信;和存储器信号处理器(MSP),其被布置为估计所述存储单元的相应的可达到的存储容量,基于所估计的可达到的容量为所述存储单元分配定义待要存储在所述存储单元中的数据量的相应的存储配置,根据相应的分配的存储配置将数据存储在所述存储单元中,在所述存储器已经被安装在主机系统中并用于在该主机系统中存储数据之后重新估计模拟存储单元的相应的可达到的存储容量,并且响应于所重新估计的可达到的容量来修改所述存储配置。根据本发明的一个实施方案,还提供一种数据存储装置,包括接口,其被布置为与包括多个模拟存储单元的存储器通信;和存储器信号处理器(MSP),其被布置为估计在相应的模拟存储单元之中的失真度, 基于所估计的失真度估计所述模拟存储单元的相应的可达到的存储容量,基于所估计的可达到的容量为所述存储单元分配定义待要存储在所述存储单元中的数据量的存储配置,并且根据相应的分配的存储配置将所述数据存储在所述存储单元中。根据本发明的一个实施方案,还提供一种数据存储装置,包括接口,其被布置为与包括多个模拟存储单元的存储器通信;和存储器信号处理器(MSP),其被布置为当所述存储器在主机系统中处于使用状态时追踪所述存储单元的相应的可达到的存储容量,接受用于存储在所述存储器中的数据, 基于所追踪的可达到的容量选择一用于存储所述数据的存储单元子集,并且将数据存储在所述子集的存储单元中。根据本发明的一实施方案,还提供一种数据存储装置,包括存储器,其包括多个模拟存储单元;和存储器信号处理器(MSP),其连接到所述存储器并且被布置为估计所述存储单元的相应的可达到的存储容量,基于所估计的可达到的存储容量为所述存储单元分配定义待要存储在所述存储单元中的数据量的相应的存储配置,根据相应的分配的存储配置将数据存储在所述存储单元中,在所述存储器已经被安装在主机系统中并用于在该主机系统中存储数据之后重新估计模拟存储单元的相应的可达到的存储容量,并且响应于所重新估计的可达到的容量来修改所述存储配置。在一些实施方案中,存储器位于第一集成电路(IC)中,且MSP位于不同于第一 IC 的第二 IC中。在一个替代性的实施方案中,存储器和MSP被集成在单个设备之中。也作为替代,MSP被实施在主机系统的处理器中。在一些实施方案中,存储单元可以包括闪存单元、 动态随机存取存储(DRAM)单元、相变存储(PCM)单元、氮化物只读存储(NROM)单元、磁随机存取存储(MRAM)单元或者铁电随机存取存储(FRAM)单元。根据本发明的一个实施方案,还提供一种数据存储装置,包括
存储器,其包括多个模拟存储单元;以及 存储器信号处理器(MSP),其被连接到所述存储器,并被布置为当所述存储器在主机系统中处于使用中时,追踪所述存储单元的相应的可达到的存储容量,接受用于存储在存储器中的数据,基于所追踪到的可达到的容量来选择用于存储所述数据的存储单元子集,并且将所述数据存储在所述子集的存储单元中。从下面对实施例的详细说明,并结合以下附图,可以更充分地理解本发明。


图1是示意性地示出了根据本发明的一个实施方案的存储系统的框图;图2是示意性地示出了根据本发明的一个实施方案的存储单元阵列的示意图;图3是示出了根据本发明的一个实施方案的在多层存储单元阵列中的电压分布的曲线图;图4是示出了根据本发明的一个实施方案的在存储单元阵列中的存储单元容量分布的曲线图;图5是示出了根据本发明的一个实施方案的在存储单元阵列中的块和页结构的示意图;图6至11是示意性地示出了根据本发明的实施方案的用于自适应地修改存储设备存储密度的方法的流程图;图12是示意性地示出了根据本发明的一个实施方案的一种用于在可变容量的存储设备中存储数据的方法的流程图;图13是示意性地示出了根据本发明的一个实施方案的一种用于从可变容量的存储设备擦除数据的方法的流程图;以及图14至17是示意性地示出了根据本发明的实施方案的用于在可变容量的存储设备中存储固定大小的数据块的方法的示意图。
具体实施例方式概述诸如闪存之类的模拟存储单元阵列可达到的存储容量,随着时间的流逝而变化。 在许多情况下,由于反复的编程与擦除操作、老化以及其他效应,存储单元阵列可达到的容量随着时间的流逝而减小。容量变化程度经常对于阵列中各个不同的存储单元而言有所区别。另一方面,存储设备通常被规定为在某一可靠性等级提供某一容量,并且在某一数量的数据保持期中满足这些规定。某些公知的存储设备和相关联的存储方法,通过过设计或过规定存储单元阵列的尺寸和性能来应付变化的存储单元容量。在此类设备中,存储单元的数量和它们的性能被规定具有裕度,在期望的保持期之内的给定预期退化程度的情况下,所述裕度大得足以将所述设备保持在规定之内。此类设计方法通常缺乏效率,增加了成本和复杂度并且减少了存储设备的可用容量。本发明的实施方案通过自适应地修改数据存储的密度,提供了用于在存储设备中存储数据的改进的方法和系统。
在一些实施方案中,存储器信号处理器(MSP)将数据存储在诸如闪存或DRAM设备之类的存储设备中,该存储设备包括多个模拟存储单元。所述MSP持续地对所述存储单元可达到的存储容量进行估计。所述MSP可以基于如下因素来估计可达到的容量,所述因素例如存储单元中的失真度、针对数据规定的可靠性和/或保持要求、在被编程在存储单元中的数据中检测到的错误和/或所述存储单元已经经历的先前的编程和擦除操作的历史。基于所估计的可达到的容量,所述MSP为各存储单元分配相应的存储配置。每种存储配置定义可存储在各存储单元中的数据量。例如,所述存储配置可以定义多个标称电压电平以及用于将数据存储在存储单元中的纠错编码(ECC)方案。在一些实施方案中,所述MSP从预定配置的有限集合中选择适当的存储配置。所述MSP根据分配给存储单元的存储配置,将数据存储在存储单元中。在存储设备的整个使用寿命中,所述MSP随着时间的推移而自适应地修改存储配置,以使得存储单元中的数据存储密度和存储单元可达到的容量相匹配。与一些已知的对存储密度进行先验规定的存储设备和数据存储方法不同,此处所描述的方法和系统,在存储阵列的整个使用寿命中,追踪不同存储单元可达到的容量,并据此不断地适应数据存储密度。因此,存储设备可达到的容量可以由于其随着时间的推移而变化而得以充分利用,从而减小了尺寸和成本。MSP和存储器控制器或其他主机交互,也即,从存储器控制器接受用于存储的数据,并且当存储器控制器请求时,取出存储在存储器中的数据。在一些实施方案中,MSP对存储器控制器模仿固定容量操作,尽管它将数据存储在具有可变容量的多个存储单元组中。 例如,当MSP与旧式存储器控制器交互时,使用此类方法,所述旧式存储器控制器被设计为具有固定容量和固定页尺寸。从而,通过在存储器控制器的固定容量操作和此处描述的存储方法的自适应容量特性之间进行调解,旧式存储器控制器可以不经修改而使用。系统描述图1是示意性地示出了根据本发明的一个实施方案的存储系统20的框图。系统 20可用于不同的主机系统和设备中,例如用于计算设备、蜂窝电话或其他通信终端、可移除存储器模块(例如“U盘”设备)、数码相机、音乐及其他媒体播放器、和/或任何其他存储和取出数据的系统或设备。在典型的应用中,存储系统20与存储器控制器22交互,也即, 接受来自存储器控制器的用于存储的数据,并且当被请求时将存储在存储器中的数据输出到存储器控制器。系统20包括存储设备M,其将数据存储在存储单元阵列观中。存储阵列观包括多个模拟存储单元32。在本专利申请的上下文中以及在权利要求书中,术语“模拟存储单元”用于描述保持诸如电压或电荷之类的物理参数的连续模拟值的任意的存储元件。阵列 28可以包括任何种类的模拟存储单元,举例而言,例如,NAND和NOR闪存单元、PCM、NR0M、 FRAM、MRAM和DRAM单元。存储在存储单元中的电荷电平和/或写入与读出存储单元的模拟电压在本文中被统称为模拟值。用于存储在存储设备M中的数据被提供给所述设备并且缓存在数据缓冲器36 中。然后所述数据被转换成模拟电压并且使用读/写(R/W)单元40写入存储单元32中, 该读/写单元40的功能将在下文中进行更为详细的描述。当从阵列观中读出数据时,单元40将电荷以及由此的存储单元32的模拟电压转换成数字样本,每个数字样本具有一个或多个比特的分辨率。由单元40产生的样本被缓存在缓冲器36中。存储设备M的操作和时序均由控制逻辑48管理。存储器信号处理器(MSP) 52执行将数据存入存储设备M以及从存储设备M取出数据。MSP 52介于存储设备M和存储器控制器22或其他主机之间。如下文将会更详细地描述,MSP 52使用新颖的方法,用于自适应地估计存储单元32的可达到的容量,并用于基于所估计的存储单元容量来管理存储阵列观中的数据的存储和取出。MSP 52自适应地修改阵列观中的数据存储密度,从而在所述系统的使用寿命期间提供最佳的容量。MSP 52能根据存储单元可达到的容量,以不同的密度将数据写入存储单元32。在本专利申请的上下文中以及在权利要求书中,术语“容量”用于描述给定存储单元或存储单元组能够可靠保持的信息量(通常以每单元比特数为单位来表达)。术语“密度”用来描述实际存储在存储单元或存储单元组中的通常以每单元比特数计算的信息量。从而,只要未超过容量,就能够将信息以不同密度可靠地存储在一组存储单元中。从而,假定数据被可靠存储,那么一个存储单元或者一组存储单元的存储密度根据定义就不大于其容量。例如通过改变用于将数据写入存储单元32的电压电平的数量,MSP 52能够改变存储单元32中的数据存储密度。使用较多数量的电压电平能够使信息密度较高。在一些实施方案中,MSP 52使用纠错码(ECC)将存储在设备M中的数据编码。MSP 52包括编码器/解码器64,该编码器/解码器64将待要写入设备M的数据编码,并且将从设备M读出的数据解码。在一些实现中,MSP 52通过选择不同的码或改变ECC的码率来改变信息密度。信号处理单元60处理写入设备M并从设备M取出的数据。特别地,信号处理单元60对存在于从存储单元32中读出的电压中的失真进行估计。所估计的失真用于估计存储单元32的可达到的容量,并且用于确定待要使用的期望存储密度。MSP 52包括数据缓冲器72,该数据缓冲器72由单元60用于存储数据,并且用作与存储设备M通信的接口。MSP 52还包括输入/输出(I/O)缓冲器56,该输入/输出(I/O)缓冲器56形成在所述MSP和存储器控制器之间的接口。存储器管理单元76管理MSP 52的操作和定时。具体而言,存储器管理单元76追踪每个存储单元或存储单元组的估计容量和状态,以使得MSP 52在每个存储单元中或存储单元组中以与其估计容量相匹配的密度存储数据。信号处理单元60和管理单元76可以以硬件形式实现。替代地,单元60和/或单元76可以包括运行适合的软件的微处理器,或者硬件和软件元素的组合。在一些实施方案中,编码器/解码器64或其局部,也可以以软件实现。在一些实施方案中,MSP 52的功能有时可以以软件实现并且由适当的处理器或主机系统的其他元件执行。图1的配置是示例性的系统配置,该图示纯粹用于使概念清晰。也可以使用任意其他适合的配置。为清晰起见,从附图中已经省略了对于理解本发明的原理非必要的元素, 例如各种接口、寻址电路、定时和定序电路、数据置乱电路和调试电路。在一些实施方案中,存储设备M和MSP 52被实现为两个单独的集成电路(IC)。 然而,在替代的实施方案中,存储设备和MSP可被集成在单个IC中或片上系统(SoC)中。在一些实现中,单个MSP 52可被连接到多个存储设备M。实现系统20的某些实施方案的另外的架构性方面,在上文所引用的美国临时专利申请60/867,399中得到更详细地描述。替代地,存储器控制器的一些功能或所有功能可以在MSP 52中实现,如下文将进一步详述。在典型的写操作中,待要写入存储设备M的数据是接受自存储器控制器22,并且缓存在I/O缓冲器56中。存储器管理单元76确定待要写入数据的存储单元。单元76也基于指定的存储单元的估计容量,确定待要使用的存储配置(例如,多个电压电平以及码率)。编码器/解码器64编码所述数据,且所编码的数据通过数据缓冲器72传送到存储设备M。在设备M中,所述数据临时地存储在缓冲器36中。读/写单元40将所述数据转换成模拟电压值,并且将数据写入阵列观的适当的存储单元32中。在典型的读操作中,读/写单元40从适当的存储单元32读出模拟电压值并且将所述电压转换为数字样本。所述样本被缓存在缓冲器36中,并且传送到MSP 52的缓冲器 72。数据块从缓冲器72传送到单元60,而编码器/解码器64将这些数据块的ECC解码。 已解码的数据经由I/O缓冲器56传送到存储器控制器22。存储器控制器22有时可以包括已知的设备,例如由Phison Electronics Corp. (在台湾新竹县竹东镇)提供的PS8000NAND闪速控制器设备。该设备在2007年3月观日发布的“PS8000 Controller Specif ication (PS8000控制器规格)”第1. 2修订版中被详述,在此处以援引方式纳入本文。另一种已知的存储器控制器是DatabahnTM闪存控制器 IP,其由Denali Software, Inc.(在加利福尼亚州的帕洛阿尔托市)所提供。关于此产品的详情请参见 www. denali. com/products/databahn_f lash, html 又一实例是由 Datalight, he (在华盛顿州的博塞尔市)提供的FlashFXPro 闪速媒体管理器。此设备在2006年11 月 16 日发表的"FlashFXPro3. IHigh Performance Flash Manager for Rapid Development of Reliable Products”中得以描述,该文献在此以援引方式纳入本文。当存储器控制器22包括传统存储器控制器设备时,其通常具有预定的用于与存储设备通信的接口和协议。这些接口和协议通常被设计用于与具有固定存储容量的存储设备通信。在一些实施方案中,MSP 52模仿由存储器控制器22所使用的数据结构、接口和协议,从而在系统20的自适应容量特性和存储器控制器22的固定容量特性之间起中介作用。 在下文的图14-17中,描述了多种示例性的方法。在替代的实施方案中,在MSP 52中实现一些存储器管理功能。在这些实施方案中,MSP接受用于存储的数据项,且可以将它们分区并且存储在可变容量的页中,而不必模仿固定容量操作。在MSP 52和存储设备M之间的接口,和/或在MSP 52和存储器控制器22之间的接口,可以遵循公知的标准或协议。例如,这些接口中的一类或两类可以遵循开放式NAND 闪存接口(ONFI)规格。ONFI 规格在 2006 年 12 月发布的 “Open NAND Flash Interface Specification"修订第1. 0版中定义,其在此处以援引方式纳入本文。存储阵列结构和失真机制图2是示意性地示出了根据本发明的一个实施方案的存储单元阵列观的示意图。 虽然图2涉及连接在特定阵列配置中的闪存单元,但本发明的原理也可应用于其他类型的存储单元和其他阵列配置。在上文背景技术部分中所引用的参考文献中,描述了一些示例性的存储单元类型和阵列配置。阵列观的存储单元32被布置在具有多个行和多个列的栅格中。每个存储单元32 包括浮置栅极金属氧化物半导体(M0Q晶体管。通过向晶体管的栅极、源极和漏极施加适当的电压电平,可以将一定数量的电荷(电子或空穴)存储在一特定的存储单元中。存储在所述存储单元中的值可通过测量所述存储单元的门限电压来读取,所述门限电压被定义为使所述晶体管导通而需要向所述晶体管的栅极施加的最小电压。所读取的门限电压与存储在所述存储单元中的电荷成比例。在图2的示例性配置中,每一行中的晶体管的栅极由字线80连接。每一列中的晶体管的源极由位线84连接。在一些实施方案中,例如在一些NOR单元设备中,源极被直接连接到位线。在替代的实施方案中,例如在一些NAND单元设备中,位线被连接到多串浮置栅极单元。通常,读/写单元40,通过将变化的电压电平施加到一特定存储单元32的栅极 (也即,施加到所述存储单元所连接到的字线),并且检查所述存储单元的漏极电流是否超过了某一门限(也即,所述晶体管是否导通),来读取该特定的存储单元32的门限电压。读 /写单元40通常向所述存储单元所连接到的字线施加一系列的不同的电压值,并且确定为使漏极电流超过所述门限的最低栅极电压值。通常,单元40从某一行同时读取一组存储单兀。在一些实施方案中,读/写单元40通过将所述存储单元的位线预充电到某一电压电平来测量漏极电流。一旦栅极电压被设定到期望值,漏极电流就使得位线电压经存储单元放电。在施加栅极电压之后的数毫秒,读/写单元40测量位线电压,并且将位线电压与门限进行比较。在一些实施方案中,每个位线84被连接到相应的读出放大器,该读出放大器将位线电流放大并将该电流转换成电压。使用比较器将所述电压与门限进行比较。上文所描述的电压读取方法是一种示例性方法。作为替代,读/写单元40可以使用任何其他适合的方法来用于读取存储单元32的门限电压。例如,读/写单元40可以包括一个或多个模数转换器(ADC),该模数转换器将位线电压转换成数字样本。在一些实施方案中,整个页(行)被并行读写。对存储单元的擦除通常在包含多个页的块中执行。典型的存储设备可以包括数十万个页,每个页包括成千上万个存储单元 (例如,每页16K个或3 个存储单元)。典型的擦除块是1 页的数量级,尽管也可以使用其它块尺寸。由读/写单元40数字化的电压可以包含多种失真,这些失真是由阵列观中的不同的失真机制所导致的。一些失真机制影响了存储在存储单元中的实际电荷,而其他机制使得所读出的电压失真。例如,阵列中的相邻存储单元之间的电耦合会修改特定存储单元中的门限电压。这种效应被称为干扰噪声。作为另一实例,电荷会随着时间的推移而从单元中泄漏。这种老化效应的结果是,所述存储单元的门限电压将随着时间的推移而从最初写入的值漂移。另一种类的失真,通常被称为扰动噪声,是由阵列中某一存储单元上的读、写或擦除操作所导致的,这引起了对其他存储单元的非预期的擦除或编程。作为又一实例,通过一种称为背景图案相关性(back pattern dependency)的效应,特定存储单元的源极-漏极电流可以被相邻存储单元中(例如在同一 NAND单元串中)的电荷所影响。失真/容量权衡图3是示出了根据本发明的一个实施方案的存储单元阵列观中的电压分布的曲线图。图3被用于演示在存储单元的可达到的容量上的失真效应。在图3中被示出了其电
16压分布的存储单元,均被配置为使用四个标注为90A至90D的标称电压电平来存储两个比特的信息。为了在一个存储单元中存储两个数据位,读/写单元40将四个标称电压电平之一写入该存储单元。在当前实例中,电压电平90A对应于位值“ 11”,而电压电平90B至90D各自对应于位值“ 01 ”、“ 00 ”和“ 10 ”。虽然读/写单元所写的是特定的标称电压电平,但因为失真机制不同,并且对存储单元所做的编程和擦除的精确性有限,所以存储单元的实际门限电压电平通常偏离该标称电平。图92A至92D示出了示例性的电压分布。图92A示出了存储“11”位值的存储单元中的电压的分布。图92B、92C和92D各自示出了存储“ 01 ”、“ 00,,和"10"位值的存储单元中的电压的分布。注意,由于老化和其他失真机制,读取时的电压分布可能不同于写入时的电压分布。通过限定三个门限94A至94C,将门限电压的总范围分为四个区间96A至96D。当读取存储单元的门限电压电平时,落入区间96A的电压电平被假定为对应于“11”位值。类似地,落入区间96B至96D的电压电平被假定各自对应于位值“01,,、“00 ”和“ 10 ”。因此区间96A至96D通常被称为判决区间,而门限94A至94C被称为判决门限。当根据某一数据位值而写入的电压落入错误的判决区间时,从存储单元读出的数据与写入的数据不同,导致读取错误。对于给定的失真度,在存储单元的错误执行和可达到的容量之间存在一种权衡。当标称电压电平的数量增加(也即,存储密度增加)时,判决区间的大小将会由于失真效应而变得更小。因此,读取电压更可能漂移或落入错误的判决区间,且错误概率增加。对于给定错误概率,存储单元可达到的容量随着失真度的增大而减整个存储单元阵列中的变动的存储单元容量如上所述,存储单元可达到的容量(也即,在存储单元中可被可靠编程的信息位的数量)取决于该特定存储单元的失真度。在许多实际情况下,可达到的容量从一个存储单元到另一个存储单元的变化相当大。阵列观中的不同的存储单元32通常具有不同的失真特性。例如,一些存储单元, 例如位于擦除块的外边界上的存储单元,具有更少的相邻存储单元,因此经常具有来自相邻存储单元的较低的交叉耦合噪声电平。作为另一实例,由于正在编程的存储单元对先前的编程的存储单元导致了干扰、扰动和背景图案相关性错误,因此较迟编程的存储单元与较早编程的存储单元相比,可能遭受较小的错误电平。作为又一实例,某一读出放大器或 ADC可以引入特别高的噪声电平,其导致沿着特定位线的存储单元与其他位线相比,具有更高的失真。其他失真特性可以取决于在特定存储单元中或在其环境中执行的编程和擦除操作的历史。因为这些和其他因素,存储单元32中的失真,以及因此的这些存储单元中可达到的容量,通常在整个阵列观的范围内显著变化。图4是示出了根据本发明的一个实施方案的存储单元阵列中的示例性的存储单元容量分布的曲线图。图示100示出了不同的存储单元可达到的容量。在当前实例中,可达到的容量在大约每单元4. 2到7. 3比特之间变化。图示104示出了可用于对存储单元编程的实际存储密度,假设了某一安全裕度以保证在整个期望的数据保持期内的可靠性能。如图中可见,当根据图示104对每个存储单元单独地分配存储密度的时候,所达到的平均存储密度高于每单元5比特。如果图4中的阵列的存储单元被分配了固定的存储密度,则整个阵列将不得不被规定为每个存储单元仅仅具有三个比特,尽管大多数存储单元能够达到高得多的存储容量。在使用了坏块管理(BBM)方法的一些已知的存储设备中,阵列可被指定为 4比特/单元的阵列,其中一些组的存储单元被认定为有瑕疵。BBM方法在例如由ST Microelectronics (瑞士,日内瓦)在2004年11月四日的操作说明书AN-1819上发表的 "Bad Block Management in NAND Flash Memories”中得以描述,其在此处以援引方式纳入本文。本文所描述的方法和系统将数据以和存储单元可达到的容量相匹配的密度存储在每个存储单元或存储单元组中。具有较低失真度的存储单元被分配较高的容量,而遭受较强失真的存储单元被分配较低的容量。在阵列的整个使用寿命中,本文所描述的方法和系统追踪失真和容量的改变,且因此自适应地修改在不同存储单元中存储数据的密度。可以估计存储单元容量,也可以将存储密度分配到单独的存储单元或共同地分配到多组存储单元。向较小的多组存储单元分配单独的密度,以更加复杂的管理为代价来允许更精密地将存储密度匹配于可达到的容量,并且反之亦然。图5是示出了根据本发明的一个实施方案的存储单元阵列110中的块和页结构的示意图。阵列Iio包括多个行114。存储器页被定义为被同时写(编程)的一组存储单元。 在一些情况中,每个页都包括一整行存储单元。在其他情况中,每个行可以分为数个页。通过同时擦除多组页(称为擦除块118)来从阵列110擦除数据。例如,一个典型页可包括 16,384个存储单元,而典型的擦除块可包括1 个页,不过也可使用其他尺寸。在一些实施方案中,每个页可被分为数个扇区(图中未示出)。在下文的说明中,基本的容量和密度分配单位是页。换言之,在一个特定页中的所有存储单元均使用相同数量的电压电平以及使用相同的ECC来编程。可以通过对电压电平的数量和/或ECC进行适配,来向不同的页分配不同的密度。在替代的实施方案中,容量估计和密度分配可以使用具有任何期望的粒度的多组存储单元来执行,例如基于逐页、逐块、 逐扇区、甚至逐存储单元的粒度。在一些实施方案中,容量估计和密度分配是针对连接到特定位线84或字线80的存储单元而一同执行的。自适应密度分配方法根据本发明的实施方案,下文的说明中描述了数种示例性方法,用于估计多组存储单元32 (即多个页)的可达到的容量,并且用于自适应地修改存储设备M的存储密度。在一些实施方案中,MSP 52中的管理单元76保持一个存储配置表,该存储配置表为每个页保持被称为存储配置的一组参数。特定页的存储配置确定了如何将数据存储在页中,且可包括如下参数,例如用于将数据存储在页的存储单元中的电压电平的数量、这些电压电平的值、用于在页中对数据编码的ECCjn /或任意其他适合的参数。在一些情况下, 例如当使用网格编码调制(TCM)或其他编码调制方法时,组合了对ECC和电压电平的选择。 除了存储配置之外,存储配置表还可以保持诸如该页的估计失真度和估计可达到的容量之类的参数。在一些实施方案中,存储配置的初始值可以在产生过程中存储在存储配置表中。当向一个特定页写入数据时,MSP 52查询该页的存储配置。所述MSP使用适当的 ECC进行编码,并且将已编码的数据映射到适当的电压电平的数量,如该页的存储配置所指示的。在一些实施方案中,当从特定页读取数据时,所述MSP根据由该页的存储配置所指示的电平的数量,将由读/写单元40产生的样本转换成硬比特判决。然后所述MSP将ECC解码器配置成存储配置中所指示的ECC,以解码ECC。作为替代,例如,当所述解码器包括软解码器时,所述MSP使用软解码器解码由读/写单元40产生的样本,而不生成硬判决。使用不同数量的电压电平可能对读/写单元40的设计造成影响,例如对比较器、 ADC、DAC、读出放大器和相关电路的设计造成影响。在一些实施方案中,读/写单元的灵敏度和分辨率被设计为匹配所使用的电压电平的最大数量。在替代的实施方案中,单元40可以在逐渐增大的分辨率的几次迭代中(例如,通过在每次迭代中使用不同的门限),从一个页读取多个门限电压。基于用于在特定页中进行存储的电平的数量,管理单元76可以确定迭代的期望次数,以及作为结果的分辨率。图6是示意性地示出了根据本发明的一个实施方案的一种自适应修改存储设备 M的存储密度的方法的流程图。在失真估计步骤130,该方法始于MSP 52对在存储单元32 中的失真度进行估计。MSP 52可以使用估计存储单元失真的不同方法。例如,为了估计在特定目标存储单元中的失真,MSP可以读取来自相邻存储单元的电压,估计目标存储单元和相邻存储单元之间的交叉耦合比,并且计算由相邻存储单元贡献的累积耦合噪声。在一些实施方案中,在对某页施加的编程操作之后,MSP可以对在该页中的失真进行估计。下面的图7示出了示例性的写后(post-writing)估计方法。作为替代,在对某页施加的读操作之后,MSP可以对在该页中的失真进行估计。下面的图8示出示例性的读后 (post-reading)估计方法。也可以通过变化编程数据的可靠性来估计容量,例如通过施加渐强的纠错码直到实现无误存储。下文在图9中描述此类方法。进一步作为替代,可以基于该页已经历过的编程和擦除操作历史来估计失真度。 编程和擦除历史可以以多种方式影响失真度。通常,人们认为,较旧的存储单元(也即,当前已经经历了较多次数的编程和擦除操作的存储单元)与经历了较少次数的编程和擦除操作的较新的存储单元相比,具有更高的泄漏电流电平。从而,失真也受到自先前的编程和擦除操作以来所流逝的时间的影响。在下面的图11中,描述了一种基于编程和擦除操作历史来估计存储单元容量的示例性方法。在存储配置计算步骤134,MSP 52估计页容量并且确定待要在每个页所使用的存储配置。所述MSP可以使用任何适当的方法,用于基于估计的失真来估计可达到的页容量, 并用于选择适当的存储配置(例如,电压电平的数量和ECC)。通常,所述MSP在估计容量和其设定的存储密度之间留有某一安全裕度。所述安全裕度,也被称为性能裕度,是被设定来保证在期望的数据保持期内的可靠操作。下文进一步描述用于确定适当的存储配置的数种示例性方法。MSP 52的单元76用新计算的存储配置来更新存储配置表。在写步骤138,MSP 52用更新的存储配置来将随后的数据写到阵列 28的页。P&V辅助密度分配图7是示意性地示出了根据本发明的另一实施方案的在编程和验证(P&V)过程之后,自适应地修改存储设备M的存储密度的方法的流程图。P&V过程通常用于对存储单元编程。在典型的P&V过程中,通过施加一系列电压脉冲来对存储单元编程,这些电压脉冲的电压电平逐个脉冲地增大。被编程的电压电平在每个脉冲之后被读取(“验证”),迭代过程继续进行,直到达到期望电压电平或直到操作超时。P&V过程例如由Jung等人于1996年11月在IEEE固态电路杂志(IEEE Journal of Solid State Circuits) (11 31)的 1575-1583 页发表的 “A 117mm23. 3V Only 128Mb Multilevel NAND Flash Memory for Mass Storage Applications", 1 ^ Takeuchi ^A 于1998年8月在IEEE固态电路杂志(33 :8)的1228-1238页上发表的“A Multipage Cell Architecture for High-Speed Programming Multilevel NAND Flash Memories,,中进行了描述,这两篇文献均以援引方式纳入本文。图7的方法可以与系统20的正常操作相结合。在此操作模式下,在对特定组的页 (例如,单个页或者包括数个NAND串的NAND存储块)编程之后,对其失真度进行估计,且将其存储配置更新以便在下一个编程操作中使用。在P&V编程步骤150,该方法始于由MSP 52 使用P&V过程对特定组的页编程。在后P&V计算步骤154,在上一次P&V迭代之后,MSP计算失真统计。上一次P&V迭代固有地涉及读取该页内的不同存储单元的已编程电压电平。 MSP可以使用这些读取的电压电平来计算该页内的失真度。在一些情况下,用于编程验证的读取分辨率不足以用于可靠失真估计。在这些情况下,所述MSP可以在高于验证操作的读取分辨率的分辨率下读取被编程的该组的页的电压电平。在后P&V更新步骤158,MSP 52更新对页的估计可达到的容量。所述MSP使用计算的失真度来更新该页的存储配置,也即,适当的电压电平数量和ECC。所述MSP在存储配置表中存储更新的数据,以便在该页的下一编程操作中使用。在一些实施方案中,MSP 52可以在编程之后尝试增加页密度。在这些实施方案中, 所述MSP确定已编程的数据是否足够可靠(也即,在步骤IM计算的失真统计表明该裕度足够高以保证低错误概率)。如果存在足够的性能裕度,该MSP就通过增大电压电平数量和 /或码率,来修改该页的存储配置以反映较高的密度。当结合P&V过程来确定页存储配置时,可以在P&V过程的参数和页存储配置之间作出不同的权衡。在P&V过程中,可以通过改变在连续的P&V迭代之间的电压增量或电压步长,来用编程速度换取精确度。设置较高的P&V步长,就能够以较低的编程精确性为代价来允许以较少的迭代次数对页进行编程,且反之亦然。这样的权衡例如由Suh等人于1995 年11月在IEEE固态电路杂志的第3卷第11期的1149-1156页发表的“A 3. 3V 32Mb NAND Flash Memory with Incremental Step Pulse Programming Scheme,,中描述,其在此处以援引方式纳入本文。在一些实施方案中,MSP 52为每个页设置具体的P&V步长值。P&V步长被作为在存储配置表中页的存储配置的一部分而存储。当对具体页编程时,所述MSP查询该页的存储配置并且使用适当的P&V步长。可以通过选择P&V步长、电压电平的数量和ECC来提供不同的性能权衡。例如, 较大的P&V步长以更高的错误概率为代价来使得编程能够更快。又例如,降低的电压电平也能够以较高的错误概率为代价来使得编程能够更快,以及能够得到更低的扰动电平 (disturb level)、干扰电平和磨损电平。可以通过减少电压电平数量或通过引入更强的 ECC,以降低存储密度为代价来降低错误概率。ECC的选择可以影响MSP的复杂度。从而,可
20以牺牲存储密度和/或纠错性能来换取编程速度。判决导向的密度分配图8是示意性地示出了根据本发明的又一实施方案的用于在读操作之后自适应地修改存储设备M的存储密度的方法的流程图。在页读取步骤170,该方法始于MSP 52从设备M读取具体的存储器页。在读后计算步骤174,所述MSP计算假设无错误存在的页内的失真度。典型地,MSP计算在每个软样本和相应的硬判决之间的差。因为假设是不存在解码错误,所以这个差归因于失真。注意, 可以由ECC解码器产生硬判决。可以通过计算在软样本和对应的硬判决之间的差的标量函数的和(例如,差的平方和)来估计失真度。也可以通过计算其中该差超过某一门限的存储单元的数量来估计失真。如果这些门限是在读取这些存储单元以得到硬判决时所使用的门限电平,则失真估计包括由所述ECC校正的错误的数量。在读后更新步骤178,所述MSP更新对该页估计的可达到的容量。所述MSP使用所计算的失真度以更新在存储配置表中该页的存储配置,以用于该页的下一编程操作。图8 所示的方法可以和系统20的正常操作相结合。在这种操作模式下,在读取数据之后,对一具体页进行编程,估计该页的失真度,并且更新其存储密度,以用于下一编程操作。在一些实施方案中,所述MSP能够在系统空闲的时间段内执行失真估计任务,以免减缓读操作。在一些实施方案中,所述MSP可以进行盲估计失真度,也即,不作硬判决不含错误的假设。例如,当写入存储单元的标称电压电平是IV和3V时,如果较大量的读取电压在2V 周围,则即便不对数据进行编码,所述MSP也可以断定失真度为高。基于已编程数据的可靠性的密度自适应在一些实施方案中,MSP 52通过评估写在给定页内的数据的可靠性,来估计该页的可达到的容量。在一些情况下,所述MSP对页的存储配置进行适配而不擦除这些存储单元。在这些情况下,可以在不擦除已存在的页的情况下在随后的编程循环中向该页内写入另外的数据。通过修改电压电平的数量和/或修改ECC,实现对密度的改变。图9是示意性地示出了根据本发明的一个实施方案的自适应地修改存储设备M 的存储配置的示例性方法的流程图。在当前实例中,使用系统ECC(也即,一种基于未编码信息位添加冗余位而不修改该未编码位的ECC)对数据进行编程。通过适配冗余位数来修改存储密度和错误性能。在未编码编程步骤190,该方法始于由MSP 52不经过编码而对一具体页进行编程。通常地但非必要地,选择电压电平的数量以使得存储密度略超过预定性能裕度,也即, 该页可以包含一些错误。在解码步骤194,MSP从页读取数据且可选地解码该数据,并且在失真度检查步骤 198,检查存储单元中的失真度。MSP可以使用不同的方法和判据,以确定失真对于当前分配给所述页的存储配置而言是否过高、过低还是可接受。例如,MSP可以检查已解码的页是否包含未被ECC校正的错误。替代地,所述MSP可以估算在读取自页的存储单元的电压集合与所述ECC的有效码字之间的距离度量。所述MSP可以将读取电压距正确码字(也即,实际上写到存储单元的码字)的距离与距其他码字的距离作比较。为此目的,可以使用任何适当的距离度量,例如Hamming度量或Euclidean度量。所述MSP基于在步骤198所评估的失真来对分配给页的存储配置进行适配。如果失真度可接受,则在终止步骤202,MSP维持当前存储配置且该方法终止。如果失真度过高, 则在冗余度增加步骤204,所述MSP增加ECC的冗余度(也即,增加冗余位)。随之,页的密度降低。在配置更新步骤206,所述MSP据此更新存储配置表。然后该方法循环回到上面的步骤194。如果失真度过低(也即,可增加存储密度而不使性能无法接受地降低),则在冗余度减少步骤208,所述MSP减少ECC的冗余度。在步骤206,所述MSP更新存储配置表,且所述方法循环回到上面的步骤194。所述迭代继续,直到该方法收敛于和当前失真度相匹配的适当的冗余位数。在设备M的使用寿命中,可以例如使用上面图8的方法,不定期地执行对已编程数据的可靠性的检查,如有必要,可以执行对冗余位数的增加。因为失真度随着时间推移而变化,故可以据此适配存储配置以维持期望的错误性能。在一些实施方案中,可以用图9的方法适配存储配置而不对存储单元进行擦除。 例如,当ECC包括系统码时,冗余位可与未编码位分开存储。可以增加或减少冗余位的数量而不对存储未编码位的存储单元进行擦除或重新编程。用于增加一组存储单元(例如,一个页)的存储密度而不擦除存储单元或者对另外的存储单元编程的一种替代技术,涉及在已编程的存储单元上进行另外的编程操作。例如,考虑一个存储单元阵列,在其中存储单元可被编程为电平0至On-I),其中对应于电平 i的已存储的电荷电平小于与电平i+Ι相关的电荷电平。在一些实施方案中,初始将m个存储单元编程为偶数阶电平,也即,编程为电平0, 2,...2n-2。在对存储单元中的失真度进行估计后,所述MSP使用二进制编码器将另外的信息位编码,所述二进制编码器生成m个已编码位。所述编码器的码率依赖于估计的失真。 所述MSP将已编码位为“1”的存储单元重新编程(不经擦除)为奇数阶电平,也即,电平1, 3,...2n-l。例如,新存储单元的电平可被写为y(m) = χ (m)+b (m),其中y (m)表示存储单元m的新电平,x(m)表示该存储单元的先前电平,而b(m)表示第m个已编码位的值(“0” 或“1”)。这种方案可以认为是根据估计的失真而适配的自适应速率网格编码调制(TCM)。存储配置的有限集在一些实施方案中,MSP 52从存储配置的预定集合中为每个页选择适当的存储配置(例如,电平的数量以及ECC方案)。对存储配置的有限集的使用降低了 MSP的复杂度, 且尤其简化了单元76中的存储配置表。图10是示意性地示出了根据本发明的一个实施方案的一种使用存储配置的有限集以自适应地修改存储设备M的存储密度的方法的流程图。在定义步骤210,该方法始于预定义一组存储配置。每种存储配置均指定电压电平的具体数量和具体的ECC方案。从而, 每种存储配置定义某一存储密度,也即,某个每单元比特值。注意到每单元比特数并不需要是整数,因为(1)数据位向电压电平的映射可以对多组存储单元联合执行而不是对单独存储单元执行,并且O)电压电平的数量可以不是2 的幂。下文进一步描述实现每单元小数比特的存储密度的示例性方法。下表示出了一个示例性的十个存储配置的集合
权利要求
1.一种用于在存储器中进行数据存储的方法,该存储器包括多个模拟存储单元,所述方法包括当所述存储器在主机系统中处于使用状态时,追踪所述模拟存储单元的相应的可达到的存储容量;接受用于存储在所述存储器中的数据;基于所追踪的可达到的容量选择一用于存储所述数据的存储单元子集;并且将所述数据存储在所述子集的存储单元中。
2.根据权利要求1所述的方法,其中选择子集包括选择其可达到的总容量与所接受的数据的大小最佳匹配的存储单元。
3.根据权利要求1所述的方法,其中接受数据包括接受用于存储所述数据的要求的可靠性等级,且其中选择子集包括响应于所要求的可靠性等级选择所述存储单元。
4.根据权利要求1所述的方法,其中接受数据包括接受所要求的用于存储所述数据的保持期,且其中选择子集包括响应于所要求的保持期而选择所述存储单元。
5.根据权利要求1所述的方法,其中选择子集包括选择相对于其他存储单元具有低失真度的存储单元。
6.根据权利要求1所述的方法,其中追踪可达到的存储容量包括对施加到所述存储单元的先前的编程和存储操作进行追踪,且其中选择子集包括响应于先前的编程和擦除操作来选择存储单元。
7.根据权利要求6所述的方法,其中选择子集包括通过选择在所述存储器内的相对于其他存储单元具有较少次数的先前的编程和擦除操作的存储单元,将多个编程和擦除操作均勻分布在所述存储单元中。
8.根据权利要求7所述的方法,其中分布编程和擦除操作的次数包括选择在预定的最近时间段内相对于其他存储单元执行较少次数的先前的编程和擦除操作的存储单元。
9.根据权利要求1所述的方法,其中追踪可达到的存储容量包括通过对可用于存储数据的存储单元的可达到的容量求和,来计算可用的存储空间的大小并且报告给所述主机系统。
10.根据权利要求1所述的方法,其中所述存储器被分成多个擦除块,每个擦除块包括在单次擦除操作中擦除的一组存储单元,所述方法还包括通过如下方式从所述存储器中擦除数据项识别存储有所述数据项的一个或多个擦除块;当存储有所述数据项的擦除块包含另一数据项的已存储数据时,基于所追踪的所述存储单元的可达到的容量和另一数据项的大小,识别在所述擦除块之外的存储有所述数据项的另外的存储单元,并且将所述另一数据项的数据复制到所述另外的存储单元;并且擦除存储有所述数据项的擦除块。
11.根据权利要求1所述的方法,其中接受用于存储的数据包括以固定容量块接受来自主机系统的数据,并且基于所追踪的可变容量组的可达到的容量,将所述数据存储在所述存储单元的可变容量组中。
12.根据权利要求11所述的方法,在可变容量组中存储数据包括识别两个或更多个其容量小于固定容量块的容量的可变容量组,并且将接受在一个或多个固定容量块中的数据存储在所识别的两个或更多个可变容量组中。
13.根据权利要求11所述的方法,其中在可变容量组中存储数据包括将一个或多个可变容量组分配为用作逾额存储器存储区域,将接受在固定容量块中的数据存储在相应的可变容量组中,并且,当一个可变容量组的可达到的容量小于所述固定容量块的容量时,将接受在相应的固定容量块中的数据中的一些存储在所分配的逾额存储器存储区域中。
14.根据权利要求11所述的方法,其中在可变容量组中存储数据包括将接受在固定容量块中的数据循序地存储在所述存储单元中,而与可变容量组之间的边界无关。
15.根据权利要求14所述的方法,其中存储数据包括,初始将接受在每个固定容量块中的数据存储在相应的可变容量组中,且随后对初始存储的数据循序重新编程,而与所述可变容量组之间的边界无关。
16.根据权利要求11所述的方法,还包括从所述可变容量组中取出所述数据,重构所述固定容量块,并且使用所述固定容量块向所述主机系统输出数据。
17.根据权利要求1所述的方法,还包括通过缓存所述数据中的至少一些,来减少施加到所述存储器的存储器存取操作的次数。
18.根据权利要求17所述的方法,其中缓存所述数据中的至少一些包括一旦检测到瞬时存储事件,就将被缓存的数据传送到所述存储器。
19.根据权利要求18所述的方法,其中所述瞬时存储事件包括选自即将到来的电源故障、超时和接受自所述主机系统的文件结束(EOF)命令的事件中的至少一个事件。
20.一种数据存储装置,包括接口,其被布置为与包括多个模拟存储单元的存储器通信;和存储器信号处理器(MSP),其被布置为当所述存储器在主机系统中处于使用状态时追踪所述存储单元的相应的可达到的存储容量,接受用于存储在所述存储器中的数据,基于所追踪的可达到的容量选择一用于存储所述数据的存储单元子集,并且将所述数据存储在所述子集的存储单元中。
21.根据权利要求20所述的装置,其中所述MSP被布置为选择其可达到的总容量与所接受的数据的大小最佳匹配的存储单元。
22.根据权利要求20所述的装置,其中所述MSP被布置为接受用于存储所述数据的要求的可靠性等级,且响应于所要求的可靠性等级选择所述存储单元。
23.根据权利要求20所述的装置,其中所述MSP被布置为接受所要求的用于存储所述数据的保持期,并响应于所要求的保持期而选择所述存储单元。
24.根据权利要求20所述的装置,其中所述MSP被布置为选择相对于其他存储单元具有低失真度的存储单元。
25.根据权利要求20所述的装置,其中所述MSP被布置为对施加到所述存储单元的先前的编程和擦除操作进行追踪,并响应于先前的编程和擦除操作来选择存储单元。
26.根据权利要求25所述的装置,其中所述MSP被布置为通过选择在所述存储器内的相对于其他存储单元具有较少次数的先前的编程和擦除操作的存储单元,将多个编程和擦除操作均勻分布在所述存储单元中。
27.根据权利要求沈所述的装置,其中所述MSP被布置为选择在预定的最近时间段内相对于其他存储单元具有较少次数的先前的编程和擦除操作执行的存储单元。
28.根据权利要求20所述的装置,其中所述MSP被布置为通过对可用于存储数据的存储单元的可达到的容量求和,来计算可用的存储空间的大小并且报告给所述主机系统。
29.根据权利要求20所述的装置,其中所述存储器被分成多个擦除块,每个擦除块包括在单次擦除操作中擦除的一组存储单元,且其中所述MSP被布置为通过如下方式从所述存储器中擦除数据项识别存储有所述数据项的一个或多个擦除块;当存储有所述数据项的擦除块包含另一数据项的已存储数据时,基于所追踪的所述存储单元的可达到的容量和另一数据项的大小,识别在所述擦除块之外的存储有所述数据项的另外的存储单元,并且将所述另一数据项的数据复制到所述另外的存储单元;并且擦除存储有所述数据项的擦除块。
30.根据权利要求20所述的装置,其中所述MSP被布置为从所述主机系统以固定容量块接受数据,并且基于所追踪的所述可变容量组的可达到的容量,将所述数据存储在所述存储单元的可变容量组中。
31.根据权利要求30所述的装置,其中所述MSP被布置为识别两个或更多个其容量小于固定容量块的容量的可变容量组,并且将接受在一个或多个固定容量块中的数据存储在所识别的两个或更多个可变容量组中。
32.根据权利要求30所述的装置,其中所述MSP被布置为将一个或多个可变容量组分配为用作逾额存储器存储区域,将接受在固定容量块中的数据存储在相应的可变容量组中,并且,当一个可变容量组的可达到的容量小于所述固定容量块的容量时,将接受在相应的固定容量块中的数据中的一些存储在所分配的逾额存储器存储区域中。
33.根据权利要求30所述的装置,其中所述MSP被布置为将接受在固定容量块中的数据循序地存储在所述存储单元中,而与可变容量组之间的边界无关。
34.根据权利要求33所述的装置,其中所述MSP被布置为初始将接受在每个固定容量块中的数据存储在相应的可变容量组中,且随后对初始存储的数据循序重新编程,而与所述可变容量组之间的边界无关。
35.根据权利要求30所述的装置,其中所述MSP被布置为从可变容量组中取出所述数据,重构所述固定容量块,并且使用所述固定容量块向所述主机系统输出数据。
36.根据权利要求20所述的装置,其中所述MSP被布置为通过缓存所述数据中的至少一些,以减少施加到所述存储器的存储器存取操作的次数。
37.根据权利要求36所述的装置,其中所述MSP被布置为一旦检测到瞬时存储事件,就将被缓存的数据传送到所述存储器。
38.根据权利要求37所述的装置,其中所述瞬时存储事件包括选自即将到来的电源故障、超时和接受自所述主机系统的文件结束(EOF)命令的事件中的至少一个事件。
39.一种数据存储装置,包括存储器,其包括多个模拟存储单元;以及存储器信号处理器(MSP),其被连接到所述存储器,并被布置为当所述存储器在主机系统中处于使用中时,追踪所述存储单元的相应的可达到的存储容量,接受用于存储在存储器中的数据,基于所追踪的可达到的容量来选择用于存储所述数据的存储单元子集,并且将所述数据存储在所述子集的存储单元中。
40.根据权利要求39所述的装置,其中所述存储器位于第一集成电路(IC)中,且其中所述MSP位于不同于所述第一 IC的第二 IC中。
41.根据权利要求39所述的装置,其中所述存储器和所述MSP被集成在单个设备中。
42.根据权利要求39所述的装置,其中所述MSP被实施在所述主机系统的处理器中。
43.根据权利要求39所述的装置,其中所述存储单元包括闪存单元。
44.根据权利要求39所述的装置,其中所述存储单元包括动态随机存取存储(DRAM)单兀。
45.根据权利要求39所述的装置,其中所述存储单元包括相变存储(PCM)单元。
46.根据权利要求39所述的装置,其中所述存储单元包括氮化物只读存储(NROM)单兀。
47.根据权利要求39所述的装置,其中所述存储单元包括磁随机存取存储(MRAM)单兀。
48.根据权利要求39所述的装置,其中所述存储单元包括铁电随机存取存储(FRAM)单兀。
全文摘要
一种用于在包括多个模拟存储单元(32)的存储器(28)中进行数据存储的方法,包括估计模拟存储单元相应的可达到的存储容量。基于所估计的可达到的存储容量,将定义待要存储在存储单元中的数据量的相应的存储配置分配给该存储单元。根据相应的分配的存储配置,将数据存储在存储单元中。在所述存储器被安装在主机系统中并用于在该主机系统中存储数据之后,重新估计所述模拟存储单元的可达到的存储容量。响应于重新估计的可达到的容量,修改所述存储配置。
文档编号G11C16/06GK102394101SQ201110294868
公开日2012年3月28日 申请日期2007年5月10日 优先权日2006年5月12日
发明者A·梅斯罗斯, D·索科洛夫, E·格吉, G·西莫, O·沙尔维, Z·科恩 申请人:爱诺彼得技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1