CN102394101B - 具有自适应容量的存储设备 - Google Patents

具有自适应容量的存储设备 Download PDF

Info

Publication number
CN102394101B
CN102394101B CN201110294868.3A CN201110294868A CN102394101B CN 102394101 B CN102394101 B CN 102394101B CN 201110294868 A CN201110294868 A CN 201110294868A CN 102394101 B CN102394101 B CN 102394101B
Authority
CN
China
Prior art keywords
storage unit
data
capacity
storage
msp
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
Application number
CN201110294868.3A
Other languages
English (en)
Other versions
CN102394101A (zh
Inventor
O·沙尔维
D·索科洛夫
A·梅斯罗斯
Z·科恩
E·格吉
G·西莫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Computer Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN102394101A publication Critical patent/CN102394101A/zh
Application granted granted Critical
Publication of CN102394101B publication Critical patent/CN102394101B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5657Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using ferroelectric storage elements

Abstract

一种用于在包括多个模拟存储单元(32)的存储器(28)中进行数据存储的方法,包括估计模拟存储单元相应的可达到的存储容量。基于所估计的可达到的存储容量,将定义待要存储在存储单元中的数据量的相应的存储配置分配给该存储单元。根据相应的分配的存储配置,将数据存储在存储单元中。在所述存储器被安装在主机系统中并用于在该主机系统中存储数据之后,重新估计所述模拟存储单元的可达到的存储容量。响应于重新估计的可达到的容量,修改所述存储配置。

Description

具有自适应容量的存储设备
本申请为分案申请,其原申请的申请日为2007年5月10日,申请号为200780026094.8(国际申请号PCT/IL2007/000579),名称为“具有自适应容量的存储设备”。
相关申请的交叉引用
本申请主张享有下列专利申请的权益:提交于2006年5月12日的美国临时专利申请60/747,106,提交于2006年8月13日的美国临时专利申请60/822,236,提交于2006年9月17日的美国临时专利申请60/825,913,提交于2006年11月16日的美国临时专利申请60/866,071,提交于2006年11月22日的美国临时专利申请60/866,860,提交于2006年11月28日的美国临时专利申请60/867,399,提交于2006年12月26日的美国临时专利申请60/871,838,提交于2006年12月28日的美国临时专利申请60/882,240,提交于2007年1月2日的美国临时专利申请60/883,071,提交于2007年1月22日的美国临时专利申请60/885,987,以及提交于2007年2月11日的美国临时专利申请60/889,277,这些申请的公开内容在此均以援引方式纳入本文。
技术领域
本发明通常涉及存储设备,具体涉及具有自适应存储容量的存储设备。
背景技术
多种存储设备,例如闪存和动态随机存取存储器(DRAM),使用模拟存储单元阵列来存储数据。例如,在2003年4月在IEEE学报,第91卷,第4期,第489-502页由Bez等人发表的“Introduction toFlash Memory”中,描述了闪存设备,该文献在此处以援引方式全部纳入本文。
在此类存储设备中,每个模拟存储单元通常包括一个晶体管,该晶体管保持了一定数量的电荷,所述电荷表示存储在所述存储单元中的信息。写入一特定存储单元的电荷影响所述存储单元的“门限电压”,也即,需要施加电压到存储单元以使得所述存储单元可以导通电流。
一些存储设备,通常称为“单层单元”(SLC)设备,在每个存储单元中存储单比特信息。通常,所述存储单元的可能的门限电压的范围被分为两个区域。落入这两个区域中的一个区域的电压值代表比特值“0”,而属于另一个区域的电压值代表“1”。更高密度设备,通常称为“多层单元”(MLC)设备,每个存储单元存储两个或更多个比特。在多层单元中,门限电压的范围被分为多于两个区域,其中每个区域代表多于一个比特。
例如,在纽约州纽约市举办的1996年IEEE国际电子器件大会(IEDM)的学报上第169-172页上由Eitan等人发表的“MultilevelFlash Cells and their Trade-Offs”,描述了多层闪存单元和设备,该文献在此以援引方式全部纳入本文。该文献对数种多层闪存单元进行比较,例如共地型、DINOR型、AND型、NOR型和NAND型存储单元。
Eitan等人在1999年9月21至24日在日本东京举行的固态器件与材料国际会议(SSDM)的学报的第522至524页发表的“Can NROM,a2-bit,Trapping Storage NVM Cell,Give a Real Challenge toFloating Gate Cells?”描述了另一种模拟存储单元,称为氮化物只读存储器(NROM),该文献在此以援引方式纳入本文。在2002年2月3日~7日在美国加州旧金山市举办的IEEE国际固态电子器件学会(ISSCC2002)的学报的第100-101页由Maayan等人发表的“A 512 Mb NROMFlash Data Storage Memory with 8MB/s Data Rate”中,描述了NROM存储单元,其在此处以援引方式纳入本文。
模拟存储单元的其他示例性类型为,铁电RAM(FRAM)单元、磁RAM(MRAM)单元和相变RAM(PRAM,也称为相变存储器PCM)单元。例如,在2004年5月16日至19日在塞尔维亚和黑山的Nis举办的第24届微电子国际学会(MIEL)学报第一卷的第377-484页上由Kim和Koh发表的“Future Memory Technology including Emerging NewMemories”中,描述了FRAM、MRAM和PRAM单元,其在此处以援引方式纳入本文。
在一些应用中,数据以可变密度存储在存储单元中。例如,以援引方式将其公开内容纳入本文的美国专利6,363,008,描述了一种包括多个存储阵列的每单元多比特(multiple-bit-per-cell)存储器,其中每个存储单元存储的比特数是针对每个存储阵列单独设定。在读、写和存储每单元较多比特数的时候,经测试证明精确的存储阵列被设置为存储每单元较多的比特数,而经测试证明不能精确地读、写和存储每单元同样多比特数的存储阵列被设置为存储每单元较少的比特数。
作为替代,在其公开内容以援引方式纳入本文的美国专利6,456,528中,为通常在多个存储状态下操作其存储单元的一种闪存非易失性存储系统,提供了在两个状态下操作其存储单元块的某些所选块或所有块的能力。这两个状态被选择为所述多个状态中相距最远的状态,从而在双态操作中提供增大的裕度。
美国专利5,930,167,其公开内容以援引方式纳入本文,描述了一种存储系统,其包括配置在可共同擦除的存储单元块中的闪速可电擦除可编程只读存储(EEPROM)单元阵列。单个存储单元能存储多于一比特的数据,原因在于其以多于两个的可检测的门限范围或状态来操作该单个存储单元。所述阵列的任何未存储数据的部分可被用作写缓存,其中这些存储单元的单独一个通过仅以两个可检测的门限范围来操作以存储单独一比特数据。进入存储器的数据初始以两个状态写入可用的块中。随后,在背景(background)中,以多个状态将所述被缓存的数据读取、压缩并且写回到所述存储器的较少的块中。
美国专利6,466,476,其公开内容以援引方式纳入本文,描述了每单元多比特非易失性存储器,其使用不同的每单元比特数来存储数据流的不同部分。具体地,使用相对小的每单元比特数来存储要求高度数据完整性的数据(例如,数据帧的帧头)。使用相对大的每单元比特数来存储具有较高错误容忍度的数据(例如,表示音乐、图像或视频的主要数据)。
美国专利6,643,169,其公开内容以援引方式纳入本文,描述了一种根据所涉及的数据的类型以可变的每单元比特数存储数据的方法。当保真度不太重要时,可以增大每单元比特数。当保真度较为重要时,可以减小每单元比特数。在一些实施方案中,存储器可以基于逐个存储单元而在存储模式之间进行改变。
发明内容
本发明的实施方案提供一种用于在包括多个模拟存储单元的存储器中存储数据的方法,所述方法包括:
估计所述模拟存储单元的相应的可达到的存储容量;
基于所估计的可达到的存储容量,为所述存储单元分配定义待要存储在该存储单元中的数据量的相应的存储配置;
根据相应的分配的存储配置,将数据存储在所述存储单元中;以及
在所述存储器已经被安装在主机系统中并用于在该主机系统中存储数据之后,重新估计模拟存储单元的相应的可达到的存储容量,并且响应于所重新估计的可达到的容量,修改所述存储配置。
在一些实施方案中,存储数据包括使用纠错码(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包括存储设备24,其将数据存储在存储单元阵列28中。存储阵列28包括多个模拟存储单元32。在本专利申请的上下文中以及在权利要求书中,术语“模拟存储单元”用于描述保持诸如电压或电荷之类的物理参数的连续模拟值的任意的存储元件。阵列28可以包括任何种类的模拟存储单元,举例而言,例如,NAND和NOR闪存单元、PCM、NROM、FRAM、MRAM和DRAM单元。存储在存储单元中的电荷电平和/或写入与读出存储单元的模拟电压在本文中被统称为模拟值。
用于存储在存储设备24中的数据被提供给所述设备并且缓存在数据缓冲器36中。然后所述数据被转换成模拟电压并且使用读/写(R/W)单元40写入存储单元32中,该读/写单元40的功能将在下文中进行更为详细的描述。当从阵列28中读出数据时,单元40将电荷以及由此的存储单元32的模拟电压转换成数字样本,每个数字样本具有一个或多个比特的分辨率。由单元40产生的样本被缓存在缓冲器36中。存储设备24的操作和时序均由控制逻辑48管理。
存储器信号处理器(MSP)52执行将数据存入存储设备24以及从存储设备24取出数据。MSP 52介于存储设备24和存储器控制器22或其他主机之间。如下文将会更详细地描述,MSP 52使用新颖的方法,用于自适应地估计存储单元32的可达到的容量,并用于基于所估计的存储单元容量来管理存储阵列28中的数据的存储和取出。MSP 52自适应地修改阵列28中的数据存储密度,从而在所述系统的使用寿命期间提供最佳的容量。
MSP 52能根据存储单元可达到的容量,以不同的密度将数据写入存储单元32。在本专利申请的上下文中以及在权利要求书中,术语“容量”用于描述给定存储单元或存储单元组能够可靠保持的信息量(通常以每单元比特数为单位来表达)。术语“密度”用来描述实际存储在存储单元或存储单元组中的通常以每单元比特数计算的信息量。从而,只要未超过容量,就能够将信息以不同密度可靠地存储在一组存储单元中。从而,假定数据被可靠存储,那么一个存储单元或者一组存储单元的存储密度根据定义就不大于其容量。
例如通过改变用于将数据写入存储单元32的电压电平的数量,MSP52能够改变存储单元32中的数据存储密度。使用较多数量的电压电平能够使信息密度较高。在一些实施方案中,MSP 52使用纠错码(ECC)将存储在设备24中的数据编码。MSP 52包括编码器/解码器64,该编码器/解码器64将待要写入设备24的数据编码,并且将从设备24读出的数据解码。在一些实现中,MSP 52通过选择不同的码或改变ECC的码率来改变信息密度。
信号处理单元60处理写入设备24并从设备24取出的数据。特别地,信号处理单元60对存在于从存储单元32中读出的电压中的失真进行估计。所估计的失真用于估计存储单元32的可达到的容量,并且用于确定待要使用的期望存储密度。MSP 52包括数据缓冲器72,该数据缓冲器72由单元60用于存储数据,并且用作与存储设备24通信的接口。MSP 52还包括输入/输出(I/O)缓冲器56,该输入/输出(I/O)缓冲器56形成在所述MSP和存储器控制器之间的接口。
存储器管理单元76管理MSP 52的操作和定时。具体而言,存储器管理单元76追踪每个存储单元或存储单元组的估计容量和状态,以使得MSP 52在每个存储单元中或存储单元组中以与其估计容量相匹配的密度存储数据。信号处理单元60和管理单元76可以以硬件形式实现。替代地,单元60和/或单元76可以包括运行适合的软件的微处理器,或者硬件和软件元素的组合。在一些实施方案中,编码器/解码器64或其局部,也可以以软件实现。在一些实施方案中,MSP 52的功能有时可以以软件实现并且由适当的处理器或主机系统的其他元件执行。
图1的配置是示例性的系统配置,该图示纯粹用于使概念清晰。也可以使用任意其他适合的配置。为清晰起见,从附图中已经省略了对于理解本发明的原理非必要的元素,例如各种接口、寻址电路、定时和定序电路、数据置乱电路和调试电路。
在一些实施方案中,存储设备24和MSP 52被实现为两个单独的集成电路(IC)。然而,在替代的实施方案中,存储设备和MSP可被集成在单个IC中或片上系统(SoC)中。在一些实现中,单个MSP 52可被连接到多个存储设备24。实现系统20的某些实施方案的另外的架构性方面,在上文所引用的美国临时专利申请60/867,399中得到更详细地描述。替代地,存储器控制器的一些功能或所有功能可以在MSP 52中实现,如下文将进一步详述。
在典型的写操作中,待要写入存储设备24的数据是接受自存储器控制器22,并且缓存在I/O缓冲器56中。存储器管理单元76确定待要写入数据的存储单元。单元76也基于指定的存储单元的估计容量,确定待要使用的存储配置(例如,多个电压电平以及码率)。编码器/解码器64编码所述数据,且所编码的数据通过数据缓冲器72传送到存储设备24。在设备24中,所述数据临时地存储在缓冲器36中。读/写单元40将所述数据转换成模拟电压值,并且将数据写入阵列28的适当的存储单元32中。
在典型的读操作中,读/写单元40从适当的存储单元32读出模拟电压值并且将所述电压转换为数字样本。所述样本被缓存在缓冲器36中,并且传送到MSP 52的缓冲器72。数据块从缓冲器72传送到单元60,而编码器/解码器64将这些数据块的ECC解码。已解码的数据经由I/O缓冲器56传送到存储器控制器22。
存储器控制器22有时可以包括已知的设备,例如由PhisonElectronics Corp.(在台湾新竹县竹东镇)提供的PS8000NAND闪速控制器设备。该设备在2007年3月28日发布的“PS8000 ControllerSpecification(PS8000控制器规格)”第1.2修订版中被详述,在此处以援引方式纳入本文。另一种已知的存储器控制器是DatabahnTM闪存控制器IP,其由Denali Software,Inc.(在加利福尼亚州的帕洛阿尔托市)所提供。关于此产品的详情请参见www.denali.com/products/databahn_flash.html。又一实例是由Datalight,Inc(在华盛顿州的博塞尔市)提供的FlashFX闪速媒体管理器。此设备在2006年11月16日发表的“FlashFXPro3.1HighPerformance Flash Manager for Rapid Development of ReliableProducts”中得以描述,该文献在此以援引方式纳入本文。
当存储器控制器22包括传统存储器控制器设备时,其通常具有预定的用于与存储设备通信的接口和协议。这些接口和协议通常被设计用于与具有固定存储容量的存储设备通信。在一些实施方案中,MSP 52模仿由存储器控制器22所使用的数据结构、接口和协议,从而在系统20的自适应容量特性和存储器控制器22的固定容量特性之间起中介作用。在下文的图14-17中,描述了多种示例性的方法。
在替代的实施方案中,在MSP 52中实现一些存储器管理功能。在这些实施方案中,MSP接受用于存储的数据项,且可以将它们分区并且存储在可变容量的页中,而不必模仿固定容量操作。
在MSP 52和存储设备24之间的接口,和/或在MSP 52和存储器控制器22之间的接口,可以遵循公知的标准或协议。例如,这些接口中的一类或两类可以遵循开放式NAND闪存接口(ONFI)规格。ONFI规格在2006年12月发布的“Open NAND Flash Interface Specification”修订第1.0版中定义,其在此处以援引方式纳入本文。
存储阵列结构和失真机制
图2是示意性地示出了根据本发明的一个实施方案的存储单元阵列28的示意图。虽然图2涉及连接在特定阵列配置中的闪存单元,但本发明的原理也可应用于其他类型的存储单元和其他阵列配置。在上文背景技术部分中所引用的参考文献中,描述了一些示例性的存储单元类型和阵列配置。
阵列28的存储单元32被布置在具有多个行和多个列的栅格中。每个存储单元32包括浮置栅极金属氧化物半导体(MOS)晶体管。通过向晶体管的栅极、源极和漏极施加适当的电压电平,可以将一定数量的电荷(电子或空穴)存储在一特定的存储单元中。存储在所述存储单元中的值可通过测量所述存储单元的门限电压来读取,所述门限电压被定义为使所述晶体管导通而需要向所述晶体管的栅极施加的最小电压。所读取的门限电压与存储在所述存储单元中的电荷成比例。
在图2的示例性配置中,每一行中的晶体管的栅极由字线80连接。每一列中的晶体管的源极由位线84连接。在一些实施方案中,例如在一些NOR单元设备中,源极被直接连接到位线。在替代的实施方案中,例如在一些NAND单元设备中,位线被连接到多串浮置栅极单元。
通常,读/写单元40,通过将变化的电压电平施加到一特定存储单元32的栅极(也即,施加到所述存储单元所连接到的字线),并且检查所述存储单元的漏极电流是否超过了某一门限(也即,所述晶体管是否导通),来读取该特定的存储单元32的门限电压。读/写单元40通常向所述存储单元所连接到的字线施加一系列的不同的电压值,并且确定为使漏极电流超过所述门限的最低栅极电压值。通常,单元40从某一行同时读取一组存储单元。
在一些实施方案中,读/写单元40通过将所述存储单元的位线预充电到某一电压电平来测量漏极电流。一旦栅极电压被设定到期望值,漏极电流就使得位线电压经存储单元放电。在施加栅极电压之后的数毫秒,读/写单元40测量位线电压,并且将位线电压与门限进行比较。在一些实施方案中,每个位线84被连接到相应的读出放大器,该读出放大器将位线电流放大并将该电流转换成电压。使用比较器将所述电压与门限进行比较。
上文所描述的电压读取方法是一种示例性方法。作为替代,读/写单元40可以使用任何其他适合的方法来用于读取存储单元32的门限电压。例如,读/写单元40可以包括一个或多个模数转换器(ADC),该模数转换器将位线电压转换成数字样本。
在一些实施方案中,整个页(行)被并行读写。对存储单元的擦除通常在包含多个页的块中执行。典型的存储设备可以包括数十万个页,每个页包括成千上万个存储单元(例如,每页16K个或32K个存储单元)。典型的擦除块是128页的数量级,尽管也可以使用其它块尺寸。
由读/写单元40数字化的电压可以包含多种失真,这些失真是由阵列28中的不同的失真机制所导致的。一些失真机制影响了存储在存储单元中的实际电荷,而其他机制使得所读出的电压失真。例如,阵列中的相邻存储单元之间的电耦合会修改特定存储单元中的门限电压。这种效应被称为干扰噪声。作为另一实例,电荷会随着时间的推移而从单元中泄漏。这种老化效应的结果是,所述存储单元的门限电压将随着时间的推移而从最初写入的值漂移。
另一种类的失真,通常被称为扰动噪声,是由阵列中某一存储单元上的读、写或擦除操作所导致的,这引起了对其他存储单元的非预期的擦除或编程。作为又一实例,通过一种称为背景图案相关性(backpattern dependency)的效应,特定存储单元的源极-漏极电流可以被相邻存储单元中(例如在同一NAND单元串中)的电荷所影响。
失真/容量权衡
图3是示出了根据本发明的一个实施方案的存储单元阵列28中的电压分布的曲线图。图3被用于演示在存储单元的可达到的容量上的失真效应。在图3中被示出了其电压分布的存储单元,均被配置为使用四个标注为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被称为判决门限。
当根据某一数据位值而写入的电压落入错误的判决区间时,从存储单元读出的数据与写入的数据不同,导致读取错误。对于给定的失真度,在存储单元的错误执行和可达到的容量之间存在一种权衡。当标称电压电平的数量增加(也即,存储密度增加)时,判决区间的大小将会由于失真效应而变得更小。因此,读取电压更可能漂移或落入错误的判决区间,且错误概率增加。对于给定错误概率,存储单元可达到的容量随着失真度的增大而减小。
整个存储单元阵列中的变动的存储单元容量
如上所述,存储单元可达到的容量(也即,在存储单元中可被可靠编程的信息位的数量)取决于该特定存储单元的失真度。在许多实际情况下,可达到的容量从一个存储单元到另一个存储单元的变化相当大。
阵列28中的不同的存储单元32通常具有不同的失真特性。例如,一些存储单元,例如位于擦除块的外边界上的存储单元,具有更少的相邻存储单元,因此经常具有来自相邻存储单元的较低的交叉耦合噪声电平。作为另一实例,由于正在编程的存储单元对先前的编程的存储单元导致了干扰、扰动和背景图案相关性错误,因此较迟编程的存储单元与较早编程的存储单元相比,可能遭受较小的错误电平。作为又一实例,某一读出放大器或ADC可以引入特别高的噪声电平,其导致沿着特定位线的存储单元与其他位线相比,具有更高的失真。其他失真特性可以取决于在特定存储单元中或在其环境中执行的编程和擦除操作的历史。因为这些和其他因素,存储单元32中的失真,以及因此的这些存储单元中可达到的容量,通常在整个阵列28的范围内显著变化。
图4是示出了根据本发明的一个实施方案的存储单元阵列中的示例性的存储单元容量分布的曲线图。图示100示出了不同的存储单元可达到的容量。在当前实例中,可达到的容量在大约每单元4.2到7.3比特之间变化。图示104示出了可用于对存储单元编程的实际存储密度,假设了某一安全裕度以保证在整个期望的数据保持期内的可靠性能。如图中可见,当根据图示104对每个存储单元单独地分配存储密度的时候,所达到的平均存储密度高于每单元5比特。
如果图4中的阵列的存储单元被分配了固定的存储密度,则整个阵列将不得不被规定为每个存储单元仅仅具有三个比特,尽管大多数存储单元能够达到高得多的存储容量。在使用了坏块管理(BBM)方法的一些已知的存储设备中,阵列可被指定为4比特/单元的阵列,其中一些组的存储单元被认定为有瑕疵。BBM方法在例如由STMicroelectronics(瑞士,日内瓦)在2004年11月29日的操作说明书AN-1819上发表的“Bad Block Management in NAND Flash Memories”中得以描述,其在此处以援引方式纳入本文。
本文所描述的方法和系统将数据以和存储单元可达到的容量相匹配的密度存储在每个存储单元或存储单元组中。具有较低失真度的存储单元被分配较高的容量,而遭受较强失真的存储单元被分配较低的容量。在阵列的整个使用寿命中,本文所描述的方法和系统追踪失真和容量的改变,且因此自适应地修改在不同存储单元中存储数据的密度。
可以估计存储单元容量,也可以将存储密度分配到单独的存储单元或共同地分配到多组存储单元。向较小的多组存储单元分配单独的密度,以更加复杂的管理为代价来允许更精密地将存储密度匹配于可达到的容量,并且反之亦然。
图5是示出了根据本发明的一个实施方案的存储单元阵列110中的块和页结构的示意图。阵列110包括多个行114。存储器页被定义为被同时写(编程)的一组存储单元。在一些情况中,每个页都包括一整行存储单元。在其他情况中,每个行可以分为数个页。通过同时擦除多组页(称为擦除块118)来从阵列110擦除数据。例如,一个典型页可包括16,384个存储单元,而典型的擦除块可包括128个页,不过也可使用其他尺寸。在一些实施方案中,每个页可被分为数个扇区(图中未示出)。
在下文的说明中,基本的容量和密度分配单位是页。换言之,在一个特定页中的所有存储单元均使用相同数量的电压电平以及使用相同的ECC来编程。可以通过对电压电平的数量和/或ECC进行适配,来向不同的页分配不同的密度。在替代的实施方案中,容量估计和密度分配可以使用具有任何期望的粒度的多组存储单元来执行,例如基于逐页、逐块、逐扇区、甚至逐存储单元的粒度。在一些实施方案中,容量估计和密度分配是针对连接到特定位线84或字线80的存储单元而一同执行的。
自适应密度分配方法
根据本发明的实施方案,下文的说明中描述了数种示例性方法,用于估计多组存储单元32(即多个页)的可达到的容量,并且用于自适应地修改存储设备24的存储密度。
在一些实施方案中,MSP 52中的管理单元76保持一个存储配置表,该存储配置表为每个页保持被称为存储配置的一组参数。特定页的存储配置确定了如何将数据存储在页中,且可包括如下参数,例如用于将数据存储在页的存储单元中的电压电平的数量、这些电压电平的值、用于在页中对数据编码的ECC、和/或任意其他适合的参数。在一些情况下,例如当使用网格编码调制(TCM)或其他编码调制方法时,组合了对ECC和电压电平的选择。除了存储配置之外,存储配置表还可以保持诸如该页的估计失真度和估计可达到的容量之类的参数。在一些实施方案中,存储配置的初始值可以在产生过程中存储在存储配置表中。
当向一个特定页写入数据时,MSP 52查询该页的存储配置。所述MSP使用适当的ECC进行编码,并且将已编码的数据映射到适当的电压电平的数量,如该页的存储配置所指示的。在一些实施方案中,当从特定页读取数据时,所述MSP根据由该页的存储配置所指示的电平的数量,将由读/写单元40产生的样本转换成硬比特判决。然后所述MSP将ECC解码器配置成存储配置中所指示的ECC,以解码ECC。作为替代,例如,当所述解码器包括软解码器时,所述MSP使用软解码器解码由读/写单元40产生的样本,而不生成硬判决。
使用不同数量的电压电平可能对读/写单元40的设计造成影响,例如对比较器、ADC、DAC、读出放大器和相关电路的设计造成影响。在一些实施方案中,读/写单元的灵敏度和分辨率被设计为匹配所使用的电压电平的最大数量。在替代的实施方案中,单元40可以在逐渐增大的分辨率的几次迭代中(例如,通过在每次迭代中使用不同的门限),从一个页读取多个门限电压。基于用于在特定页中进行存储的电平的数量,管理单元76可以确定迭代的期望次数,以及作为结果的分辨率。
图6是示意性地示出了根据本发明的一个实施方案的一种自适应修改存储设备24的存储密度的方法的流程图。在失真估计步骤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)过程之后,自适应地修改存储设备24的存储密度的方法的流程图。
P&V过程通常用于对存储单元编程。在典型的P&V过程中,通过施加一系列电压脉冲来对存储单元编程,这些电压脉冲的电压电平逐个脉冲地增大。被编程的电压电平在每个脉冲之后被读取(“验证”),迭代过程继续进行,直到达到期望电压电平或直到操作超时。P&V过程例如由Jung等人于1996年11月在IEEE固态电路杂志(IEEE Journalof Solid State Circuits)(11:31)的1575-1583页发表的“A 117mm23.3V Only 128Mb Multilevel NAND Flash Memory for Mass StorageApplications”,以及由Takeuchi等人于1998年8月在IEEE固态电路杂志(33:8)的1228-1238页上发表的“A Multipage CellArchitecture for High-Speed Programming Multilevel NAND FlashMemories”中进行了描述,这两篇文献均以援引方式纳入本文。
图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确定已编程的数据是否足够可靠(也即,在步骤154计算的失真统计表明该裕度足够高以保证低错误概率)。如果存在足够的性能裕度,该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 StepPulse Programming Scheme”中描述,其在此处以援引方式纳入本文。
在一些实施方案中,MSP 52为每个页设置具体的P&V步长值。P&V步长被作为在存储配置表中页的存储配置的一部分而存储。当对具体页编程时,所述MSP查询该页的存储配置并且使用适当的P&V步长。
可以通过选择P&V步长、电压电平的数量和ECC来提供不同的性能权衡。例如,较大的P&V步长以更高的错误概率为代价来使得编程能够更快。又例如,降低的电压电平也能够以较高的错误概率为代价来使得编程能够更快,以及能够得到更低的扰动电平(disturb level)、干扰电平和磨损电平。可以通过减少电压电平数量或通过引入更强的ECC,以降低存储密度为代价来降低错误概率。ECC的选择可以影响MSP的复杂度。从而,可以牺牲存储密度和/或纠错性能来换取编程速度。
判决导向的密度分配
图8是示意性地示出了根据本发明的又一实施方案的用于在读操作之后自适应地修改存储设备24的存储密度的方法的流程图。
在页读取步骤170,该方法始于MSP 52从设备24读取具体的存储器页。在读后计算步骤174,所述MSP计算假设无错误存在的页内的失真度。典型地,MSP计算在每个软样本和相应的硬判决之间的差。因为假设是不存在解码错误,所以这个差归因于失真。注意,可以由ECC解码器产生硬判决。可以通过计算在软样本和对应的硬判决之间的差的标量函数的和(例如,差的平方和)来估计失真度。也可以通过计算其中该差超过某一门限的存储单元的数量来估计失真。如果这些门限是在读取这些存储单元以得到硬判决时所使用的门限电平,则失真估计包括由所述ECC校正的错误的数量。
在读后更新步骤178,所述MSP更新对该页估计的可达到的容量。所述MSP使用所计算的失真度以更新在存储配置表中该页的存储配置,以用于该页的下一编程操作。图8所示的方法可以和系统20的正常操作相结合。在这种操作模式下,在读取数据之后,对一具体页进行编程,估计该页的失真度,并且更新其存储密度,以用于下一编程操作。
在一些实施方案中,所述MSP能够在系统空闲的时间段内执行失真估计任务,以免减缓读操作。
在一些实施方案中,所述MSP可以进行盲估计失真度,也即,不作硬判决不含错误的假设。例如,当写入存储单元的标称电压电平是1V和3V时,如果较大量的读取电压在2V周围,则即便不对数据进行编码,所述MSP也可以断定失真度为高。
基于已编程数据的可靠性的密度自适应
在一些实施方案中,MSP 52通过评估写在给定页内的数据的可靠性,来估计该页的可达到的容量。在一些情况下,所述MSP对页的存储配置进行适配而不擦除这些存储单元。在这些情况下,可以在不擦除已存在的页的情况下在随后的编程循环中向该页内写入另外的数据。通过修改电压电平的数量和/或修改ECC,实现对密度的改变。
图9是示意性地示出了根据本发明的一个实施方案的自适应地修改存储设备24的存储配置的示例性方法的流程图。在当前实例中,使用系统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。所述迭代继续,直到该方法收敛于和当前失真度相匹配的适当的冗余位数。
在设备24的使用寿命中,可以例如使用上面图8的方法,不定期地执行对已编程数据的可靠性的检查,如有必要,可以执行对冗余位数的增加。因为失真度随着时间推移而变化,故可以据此适配存储配置以维持期望的错误性能。
在一些实施方案中,可以用图9的方法适配存储配置而不对存储单元进行擦除。例如,当ECC包括系统码时,冗余位可与未编码位分开存储。可以增加或减少冗余位的数量而不对存储未编码位的存储单元进行擦除或重新编程。
用于增加一组存储单元(例如,一个页)的存储密度而不擦除存储单元或者对另外的存储单元编程的一种替代技术,涉及在已编程的存储单元上进行另外的编程操作。例如,考虑一个存储单元阵列,在其中存储单元可被编程为电平0至(2n-1),其中对应于电平i的已存储的电荷电平小于与电平i+1相关的电荷电平。
在一些实施方案中,初始将m个存储单元编程为偶数阶电平,也即,编程为电平0,2,...2n-2。在对存储单元中的失真度进行估计后,所述MSP使用二进制编码器将另外的信息位编码,所述二进制编码器生成m个已编码位。所述编码器的码率依赖于估计的失真。所述MSP将已编码位为“1”的存储单元重新编程(不经擦除)为奇数阶电平,也即,电平1,3,...2n-1。例如,新存储单元的电平可被写为y(m)=x(m)+b(m),其中y(m)表示存储单元m的新电平,x(m)表示该存储单元的先前电平,而b(m)表示第m个已编码位的值(“0”或“1”)。这种方案可以认为是根据估计的失真而适配的自适应速率网格编码调制(TCM)。
存储配置的有限集
在一些实施方案中,MSP 52从存储配置的预定集合中为每个页选择适当的存储配置(例如,电平的数量以及ECC方案)。对存储配置的有限集的使用降低了MSP的复杂度,且尤其简化了单元76中的存储配置表。
图10是示意性地示出了根据本发明的一个实施方案的一种使用存储配置的有限集以自适应地修改存储设备24的存储密度的方法的流程图。在定义步骤210,该方法始于预定义一组存储配置。每种存储配置均指定电压电平的具体数量和具体的ECC方案。从而,每种存储配置定义某一存储密度,也即,某个每单元比特值。
注意到每单元比特数并不需要是整数,因为(1)数据位向电压电平的映射可以对多组存储单元联合执行而不是对单独存储单元执行,并且(2)电压电平的数量可以不是2的幂。下文进一步描述实现每单元小数比特的存储密度的示例性方法。下表示出了一个示例性的十个存储配置的集合:
  存储配置   比特/单元   电平/单元
  0   N/A   N/A
  1   1   2
  2   ~1.5   3
  3   2   4
  4   ~2.5   6
  5   3   8
  6   ~3.5   12
  7   4   16
  8   ~4.25   20
  9   ~4.5   24
存储配置0表示坏页,其不被使用。配置1至9提供9种不同的密度等级,介于1到4.5比特/单元之间。在替代的实施方案中,可以使用任何其他适当的存储配置集合。
典型地,管理单元76中的存储配置表采用来自预定集合的某个缺省存储配置来进行初始化。在页编程步骤214,当写一个具体页时,MSP52使用由此页的存储配置所指定的ECC和电平数量来对数据进行编码和映射。
在一次编程操作之后或在一次读操作之后,在裕度估计步骤218,所述MSP估计页的性能裕度。如上所述,所述MSP可以通过测量从所述页中读取的电压的失真或通过评估从所述页中读取的数据的可靠性,来估计性能裕度。所述裕度可以用信噪比(SNR)或使用任何其他适当的度量来表达。
所述MSP使用性能裕度,以确定为该页指定的存储配置是否与该页的当前容量相匹配,或者确定存储密度是应该增加还是减少。例如,所述MSP可以将估计裕度与一个门限进行比较。
如果估计裕度表明存储密度应被修改,则在配置更新步骤222,MSP从预定集合中选择不同的配置。所述MSP对在存储配置表中的配置选择进行更新,以使得该页上的随后的编程操作将可使用已更新的存储配置。
在一些实施方案中,MSP 52在ECC编码之前对将被存储在一具体页中的数据进行压缩。本领域公知的任何压缩方法,无论是低损耗的还是高损耗的,均可用于此目的。压缩和ECC编码的组合可产生不同的存储密度,也即,不同的每单元比特值。
在一些实施方案中,存储在每个页内的比特总数(标注为M)在不同的存储配置中保持恒定,而净信息位数(标注为K)可变。例如,假设一页包含4,224个存储单元,且使用十六个电压电平对存储单元进行编程(也即,每个存储单元存储4个比特)。存储在一个页内的比特总数是4,224×4=16,896。采用7/8的ECC码率,可存储在一个页内的净信息位数是14,784。采用13/16的较低ECC码率,可存储在一个页内的净信息位数是13,728。然而,第二种存储配置却由于较强的ECC而更具鲁棒性。
替代地,每个存储单元的电压电平的数量从一个存储配置到另一个存储配置可以有所变化,也即,K和M均有变化。例如,下面的表示出了在4,224存储单元页的阵列中使用的三种存储配置:
在一些实施方案中,每个页被分为具有恒定净信息位数的扇区。每个页的扇区的数量不同。例如,下面的表示出了在4,224存储单元页的阵列中使用的三种存储配置。在当前实例中,每个扇区包含用2/3码率ECC编码的1,412个净信息位,以产生2,118个已存储比特。
使用编程/擦除历史的容量估计
如上所述,在一个具体存储单元32中的失真度可取决于此单元已经经历的编程和擦除操作的历史。从而,MSP 52通常将具有较低存储密度的存储配置分配给较旧的存储单元,且反之亦然。
在一些情况下,失真是由存储单元的泄漏电流所导致的。泄漏电流效应例如由Mielke等人在于2006年3月在加利福尼亚州圣何塞市举行的IEEE Annual International Reliability Physics Symposium学报第29-35页上发表的“Recovery Effects in the DistributedCycling of Flash Memories”中进行了描述,其在此处以援引方式纳入本文。根据此论文,由编程和擦除循环所导致的电介质损坏在循环之间的延迟期间部分地得以恢复。此论文描述了关于电荷反捕获数据保持机制的此类延迟的效应。从而,和泄漏电流相关的失真度取决于自先前的编程和擦除操作以来经过的时间长度。其他种类的失真也可能受到电荷捕获的影响,从而受到最近的编程和擦除操作的影响。例如,在具有较高数量的电荷捕获的存储单元中,扰动错误的程度会增大。
图11是示意性地示出了根据本发明的一个实施方案的一种基于编程和擦除操作的历史的自适应地修改存储设备24的存储密度的方法的流程图。此方法始于MSP 52的管理单元76对在阵列28的不同存储单元32上执行的编程和擦除操作的次数做记录。所述MSP可以保持追踪当前时间的运行计数器,以便对编程和擦除操作加上时间标签。替代地,在一些情况下,时间标签是由存储器控制器22所提供。
因为编程操作通常是逐页执行,而擦除操作是在整个擦除块上执行,所以MSP可以记录每一页的编程和擦除次数。这种信息可作为每个页的存储配置的一部分而存储在存储配置表中。可以存储每页或每个擦除块的擦除次数。
在泄漏估计步骤234,MSP 52对在一具体页中的泄漏电流进行估计。所述MSP可以使用不同的估计器和标准以基于记录的编程和擦除次数来估计泄漏电流。例如,泄漏电流可由下列函数估计:
I Leakage = a 0 · CurrentTime + Σ n = 1 K a i ProgramTime ( n )
其中ProgramTime(n)表示在该页上执行的第n次编程操作的时间,如上面的步骤230所纪录。CurrentTime表示对估计被计算时所处的时间。α0…K表示加权系数,其通常为较为新近的编程操作分配更高的权重。当对于i>1而αi=0时,则所述估计仅仅基于上次编程操作。
在替代的实施方案中,可以基于在某个时间间隔之内(例如,在前一天、前一小时或前一分钟之内)执行的擦除操作的次数来估计泄漏电流。此外作为替代,泄漏电流可被迭代地估计,例如使用函数
ILeakage(n+1)=(1-δ)·ILeakage(n)+
δ·[ProgramTime(n+1)-ProgramTime(n)]
其中0<δ<1表示加权系数或“遗忘因子”。此类迭代估计允许MSP52仅仅记录上两次编程操作的时间和先前估计的值,而不是存储多个时间标签的列表。
替代地,所述MSP可以使用任何其他估计方法,以便基于编程和擦除操作的已记录历史来估计泄漏电流。
在一些实施方案中,在补充失真估计步骤238,所述MSP基于其他因素估计存储单元失真。失真估计可以基于对来自相邻存储单元的交叉耦合比的测量或基于任意其他适合过程。
所述MSP将在上述步骤234执行的泄漏电流估计和在上述步骤238执行的失真估计进行结合,在容量估计步骤242,估计页的容量。例如,可以使用下列函数估计容量:
Capacity=C0+β·ILeakage+γ·DistortionEstimate
其中C0表示基线容量值,而β和γ表示将期望的相对权重分配给对泄漏电流和失真估计的加权系数,在一些实施方案中,步骤238可被略去,且所述MSP可以仅仅基于泄漏电流估计来估计页容量,例如通过设定γ=0。
MSP 52采用已更新的页容量值来更新存储配置表。所述MSP可以使用任何适当的方法,例如上文提到的方法,确定针对该页的页密度和适当的存储配置(例如,ECC和电压电平数量)。
带有每单元小数比特值的密度分配
在一些实施方案中,MSP 52可以定义具有每单元非整数比特数的存储配置。例如,在一些情况下可以通过使用不是2的幂的多个电压电平来增大存储密度并且逼近存储单元的可达到的容量。当每单元比特数不是整数时,MSP 52可以使用不同的方法以将数据位映射到电压电平。
设K表示用于将数据存储在一具体页内的电压电平的数量。K不一定是2的幂,因此存储密度也不必然是整数。可由K个电平表示的最大的比特数由nopt=log2(K)给出,其通常是非整数值。为了达到这个最佳存储密度,将需要在无限数量的存储单元中存储无限数量的数据位,而这个过程将引发无限的延迟。然而,在实际情况下,可以用增加处理延迟(也即,用于存储数据的存储单元的数量)来换取距最佳存储密度的偏离。
设nc表示用于存储数据的存储单元的数量,而ntb表示存储在这nc个存储单元中的比特的总数。nc和ntb均为整数值。从而存储密度由nbpc=ntb/nc给出。ntb和nc应被选定而使得由ngap=nbpc-nopt给出的距最佳密度的偏离是非负且最小的。增大nc使得nbpc能够逼近nopt,但却会增大映射复杂度和处理延迟。
在已经选定nc和ntb的期望值之后,MSP 52将每组ntb个数据位映射到nc个电压,接着这nc个电压被写入nc个存储单元中。这ntb个电压中的每一个均可以采用K个可能电平中的一个。此处的ntb个数据位被表示为 b 1 , . . . , b n tb ∈ { 0,1 } .
在一些实施方案中,MSP 52通过将ntb个比特二进制数由基于K的比特来表达,将这ntb个数据位映射到nc个电压。也就是说,MSP 52确定nc个系数 k 1 , . . . , k n c ∈ { 0 , . . . , K - 1 } , 以使得
b n tb · 2 n tb - 1 + b n tb - 1 · 2 n tb - 2 + . . . + b 2 · 2 + b 1 =
k n c · K n c - 1 + k n c - 1 · K n c - 2 + . . . + K 2 · K + k 1
然后MSP 52以值对这nc个存储单元进行编程。
例如,设K=11。此情况下的最佳存储密度nopt=log2(11)≈3.4594。假设数据被写入nc=3的存储单元的组中,则距最佳密度的偏离是ngap≈0.1261而ntb=10。从而,由十个数据位组成的序列被映射到由三个存储单元组成的组,每一组使用十一个电压电平。例如,比特序列“1101100100”被映射到k1=7,k2=1和k3=10。
在可变容量的存储设备中存储和擦除数据
图12是示意性地示出了根据本发明的一个实施方案的一种用于在可变容量的存储设备中存储数据的方法的流程图。在输入步骤250,此方法始于MSP 52从存储器控制器22接受用于存储的数据项。
在一些实施方案中,存储器控制器指定针对存储数据项的某一可靠性需求。存储器控制器可以使用任何适当的方法或形式,以指定所请求的存储可靠性,例如通过明确指定最大容许错误概率或通过从一系列预定可靠性等级中选择一个可靠性等级。通常地但非必要地,可靠性要求是与生成所述数据项的应用的错误容忍度相关联。例如,可以在相对低的可靠性等级下存储包括音频或视频媒体的文件。而在另一方面,通常为包含程序代码的文件和操作系统数据文件指定较高的可靠性等级。
另外地或替代地,存储器控制器可以指定用于存储数据项的某一保持要求。所述保持要求表示数据项被期望存储的时间段。例如,可以为临时操作系统文件指定低的保持时间段。
在页选择步骤254,MSP 52选择由阵列28中的一个或多个其中待要存储数据项的页组成的集合。通常,管理单元76追踪每个存储器页的状态。每个页可具有“已擦除”(也即,可用于编程)、“包含信息”、“有瑕疵”或“准备擦除”。如上所述,单元76也保持在每个页内使用的存储配置(也即电压电平数量和ECC),其定义可在页内存储的数据量。
单元76选择一个或多个“已擦除”页的集合,其总尺寸足以存储所述数据项。在一些实施方案中,单元76循序扫描“已擦除”页,并且对页进行选择,直到页的总尺寸足以存储数据项。替代地,单元76可以将不同的策略或判据应用于对页的选择。
例如,单元76可选择已经经历较少次数的编程和擦除循环的页,以便在整个阵列28中实现更好的损耗均衡。再例如,单元76可以搜索其总尺寸提供对所述数据项最接近的匹配(也即,尽量少地超过数据项的大小)的页集合,以便最小化未使用的存储单元的数量。又例如,单元76可以为高容量页给出优选,以便在最小数量的页之间分割数据,并且减少编程时间、损耗和管理开销。替代地,当选择用于存储的页时,单元76可以使用任意其他适合的判据或判据组合。
在一些实施方案中,单元76基于为数据项指定的可靠性和/或保持要求,修改页的存储配置(以及由此的存储密度)。例如,当数据项具有相对较低的可靠性和/或保持要求时,单元76可以将数据项存储在具有较高失真的存储单元中和/或以相对于存储单元的失真度而言较高的密度来存储数据项。
在存储步骤258,MSP 52将数据项存储在所选择的页内。单元76将已经用于存储的页的状态设置成“包含信息”,且如有必要则更新页上的存储配置。单元76也记录用于存储数据项的页的标识,以使得当系统20此后被请求取出所述数据项的时候,这些页可被寻址。
在一些实施方案中,可以由存储器控制器22请求系统20报告可用的存储器尺寸。在这些实施方案中,单元76将标记为“已擦除”的页的容量求和,并且将该结果报告为现有存储器尺寸。
图13是根据本发明的一个实施方案,示意性地示出了一种用于从可变容量的存储设备中擦除数据的方法的流程图。在删除请求步骤270,所述方法始于MSP 52接受来自存储器控制器22的从存储设备24中删除某一数据项的请求。在删除步骤274,MSP 52中的管理单元76识别用于存储数据项的页,并且将它们标记为“准备擦除”。
存储所述数据项的页可位于一个或多个擦除块之中。在这些块可被擦除之前,这些块中任何正在使用(也即,具有“包含信息”状态)的页应该被重定位到其他擦除块。
在使用中检查步骤278,单元76检查包含了上述步骤274所识别的页的擦除块是否包含使用中的页。如果擦除块不包含任何使用中的页,则在擦除步骤282,单元76擦除所述块并且将这些块中的页的状态更新为“已擦除”。在另一方面,如果单元76检测到一些打算擦除的块中的页仍然处于使用之中,则其将存储在这些页中的数据重定位到打算擦除的块之外的其他页中。(在一些情况下,例如当擦除块包含单个的属于已擦除数据项的页并且所有其他页均已擦除的时候,单元76可以决定不擦除该块。)
在重定位选择步骤286,单元76选择由一个或多个页组成的集合,这些页位于打算擦除的块之外,且其总尺寸足以存储正在使用的页中的数据。单元76可以根据任何适当的策略或判据,选择数据被重定位到的页。例如,可以按照先后顺序从可用页中选出上述页。作为替代,单元76可以选择所述页以增进损耗均衡或减少未使用的存储单元的数量,如上述图12的方法的页选择步骤254中所描述。也作为替代,单元76可以使用任何其他适合的判据。
在重定位步骤290,单元76将存储在正在使用的页中的数据复制到在上述步骤286所选择的页。注意,重定位操作并不必然保留页的数量或数据成页的分区。因为设备24中的页具有不同的容量,重定位的数据可被复制到不同数量的页中和/或以与初始存储方式不同的方式被分区在页之间。一旦数据被重定位,则在擦除步骤282,在上述步骤274中被识别的块即被擦除。
可变容量的存储设备中的数据存储管理
如上所述,MSP 52和存储器控制器22交互,也即,从所述存储器控制器接受用于存储的数据并且当被请求时向所述存储器控制器输出存储在存储器中的数据。系统20可以采用数种方式和存储器控制器交互或通常和主机系统交互,这些方式在由所述MSP执行的管理功能层次上彼此不同。
在一种极端状况下,系统20和旧式存储器控制器交互,该旧式存储器控制器被设计为控制固定容量的存储设备。在此情况下,存储器控制器维持一个固定容量的页表,其指示哪些固定容量页被用于存储每个数据项。固定容量的页表也可以保持每个固定容量页或块的状态,并且指示某个擦除块是否被认为是坏块。
在这些实施方案中,MSP 52通过维持两个并行的索引方案,在系统20的自适应容量特性和存储器控制器22的固定容量特性之间起媒介作用。所述MSP使用固定容量页的索引方案和存储器控制器通信,这样,系统20对于存储器控制器而言似乎是一个固定容量设备。在系统20内部,MSP 52有效率地将数据项存储在可变容量的页中。所述MSP维持可变容量的页的单独的索引方案,其指示使用哪些可变容量的页来存储每个数据项。在写数据和读数据时,所述MSP能够在两种索引方案之间转换。
在一些情况下,存储器控制器22也执行诸如ECC编码和解码、在读取自存储器的数据中检测错误和/或坏块管理之类的功能。使用此处描述的技术,已知的存储器控制器可被用于控制存储设备24而不必修改它们的数据结构或协议。
在另一极端状况下,存储器控制器22的功能基本由MSP 52自身实现。在这些实施方案中,所述MSP从主机系统(例如从计算机CPU)接受任意尺寸的数据项,并且将所述数据项存储在阵列28的可变容量的页中。因为由MSP执行存储器管理功能,所以没有必要模仿固定容量索引,且所述MSP仅仅维持一个索引方案。
此外作为替代,MSP 52可以支持在系统20和主机系统之间的任何其他适合的存储器管理功能的划分。单个MSP设备可支持不同的接口和索引方案,以便与不同类型的存储器控制器或主机交互。
图14-17是示意性地示出了根据本发明的实施方案的用于在可变容量的存储设备中存储固定尺寸的数据块的方法的示意图。
图14示出了一种和存储器控制器交互的方法,其被设计为在具有固定数量的存储单元的擦除块的存储设备中存储数据,且其执行坏块管理(BBM)功能。在一些已知的BBM方法中,即便某个擦除块中只有一个页有瑕疵,这个擦除块也被分类为坏块。此类方法极为不具有效率,因为在坏块中大多数的存储单元仍然可用。另一方面,使用图14的方法,系统20在被分类为坏块的块的可用存储单元中有效率地存储数据。
在典型的写操作中,存储器控制器22接受数据项300以便存储在存储阵列304中。阵列304包括多个存储块308。存储器控制器22将所述数据项分成一个或多个固定尺寸的块,这些块被称为控制器块312。每个控制器块312被指定为存储在某个可用存储块308之中。存储器控制器22将控制器块312提供给MSP 52以便存储。
由于失真效应、制造瑕疵或其他任何原因,块308中的一些具有减小的容量(也即,具有小于控制器块312尺寸的容量)。使用已知的BBM方法,即便这样的块的存储单元的绝大部分仍然可用,其仍已被分类为坏块,并保持弃用。
另一方面,MSP 52将所有的存储块308视为可变容量的块,且不将块分成好块或坏块。所述MSP从控制器块中提取数据,并且将所述数据再分区成多个片段316,这些片段可以具有相同尺寸或不同尺寸。所述MSP识别出多个其容量与片段316的尺寸相匹配的块,并且将每个片段存储在相应的存储块之中。在当前实例中,所述MSP将此数据项分成三个片段,并且将片段存储在标注为#3、#6和#10的存储块中。
MSP 52可以使用不同的方法和标准来确定存储每个数据项的块。例如,所述MSP可以搜索具有降低的容量的一对存储块,其总容量足以存储单个控制器块的数据。然后所述MSP将控制器块映射到所述一对存储块。又例如,所述MSP可以搜索可用的存储块,并且确定由两个或更多个块308组成的集合,其总容量与数据项300的尺寸最佳匹配。
作为替代,所述MSP可以搜索具有最小数量的其中可存储数据项的块的集合,以便减少管理开销。进一步作为替代,所述MSP可以选择经历最少次数的最近的编程和擦除循环的块,以便改进损耗均衡。也可以使用其他任何适合的方法或判据。在一些实施方案中,单一的存储块308可被用于存储属于多于一个数据项的片段。
将数据项300分区为片段316,可以独立执行也可以结合对存储块308的选择来执行。例如,所述MSP可以首先将数据项片段化为固定尺寸的片段,而不论将最终存储这些片段的存储块的数量和标识如何。替代地,所述MSP可以首先对其中待要存储数据项的存储块进行识别,然后根据这些存储块的数量和尺寸对数据项进行片段化。
在一些实施方案中,MSP 52向所述存储器控制器模拟固定容量块中的存储,以使得由所述MSP执行的片段化对于存储器控制器及其BBM功能而言为透明。例如,所述MSP可以维持两个索引表,也即,一个固定尺寸控制器块的索引表和一个对应的可变容量的存储块的索引表。当数据项由所述存储器控制器发送以便存储在控制器块的某个集合中时,所述MSP指示哪些可变容量的存储块用于存储所述数据项。当所述数据项被所述存储器控制器请求时,所述MSP从存储有该数据项的可变容量的存储块中取出该数据项,并且将所述项发送到所述存储器控制器中,如同该项被存储在对于所述控制器已知的固定大小的控制器块之中一样。
可以理解,相对于已知BBM方法,图14的方法明显增大了存储设备的可达到的容量,原因在于其允许将数据存储在已经被其他方法分类为坏块的存储块中。
虽然图14的说明书涉及整个擦除块的存储粒度,但是该方法也可以使用更精细的存储粒度来实现,例如,页粒度。换言之,所述MSP可以确定其中可以存储数据项的可变容量的存储器页的一个适合的集合。基于逐个页来片段化并存储数据项,就允许以相对高的管理开销为代价来实现较高的存储密度。
在一个示例性实现中,当由所述存储器控制器所使用的标称页尺寸是P比特的时候,所述MSP将所述存储设备中的存储器页分类成容量小于P的降低容量的存储器页以及容量大于或等于P的标称容量存储器页。然后所述MSP可以将每个具有P比特的控制器页存储在标称容量存储器页中,或者存储在一对降低容量的存储器页中。所述MSP典型地维持一个表,该表将每个控制器页映射到对应的标称容量存储器页或一对降低容量的存储器页。从而,其容量低于存储器页的标称尺寸的存储器页仍然可用于存储数据。
图15示出了根据本发明的一个实施方案的有效地将具有P比特的固定尺寸的控制器页存储在可变容量的存储器页中的另一种方法。存储阵列320包括多个存储器页324。存储器页被定义为被同时编程和读取的一组存储单元。
虽然阵列320的存储器页通常具有相同数量的存储单元,但是它们的容量(即它们可以可靠地存储的信息量)可以根据页不同而随时间改变。一般地,每个存储器页324的容量可以小于、等于或大于P。MSP52将一个或多个存储器页分配为用作逾额容量页328,其被用于存储容量小于P的其他存储器页的逾额比特。在当前实例中,阵列320包括32个存储器页,其中一个页用作逾额容量页。
当所述MSP接受具有P个比特的控制器页以供存储时,其评估下一可用的存储器页324的容量,标注为Cn。如果Cn>P(也即下一个可用的存储器页的容量足以存储所述控制器页的P个比特),那么所述MSP将所述P个比特存储在存储器页中。如果下一可用的存储器页的容量不足以存储所述控制器页的P个比特,也即,当Cn≤P时,则所述MSP将所述P个比特中的Cn个比特存储在存储器页之中,并将剩余的P-Cn个比特存储在逾额容量页328的未使用的存储单元之中。
注意,使用上述方法对一个页的写或读可能涉及对两个页的写或读操作。在一些实施方案中,所述MSP可以将逾额容量页的一些或全部,或者这些页的一部分,缓存在RAM或其他缓冲存储器中。通过缓存逾额页,所述MSP可以降低双读和双写操作的次数。
当从所述存储设备读出数据时,所述MSP可以将上次读取的逾额容量比特缓存。当取出一个存储器页时,所述MSP检查所述页的逾额比特是否存在于缓存的数据中。如果期望的逾额比特被缓存,则它们可被附加到所取出的存储器页,而不必物理地读取逾额容量页。当向存储设备写入数据时,所述MSP可以缓存逾额容量比特并且将它们较为不频繁地物理地存储在所述存储设备中。
为了防止在电压故障的情况下丢失缓存数据,所述MSP可以包括识别电压异常并且在必要时快速地存储缓存数据的电路。所述存储器控制器也可以使用文件结束(EOF)属性或其他适合的命令,指示所述MSP将被缓存的数据存储在所述存储设备中。存储器控制器通常在关闭电源之前和/或在写数据文件结束之时使用此命令。也作为替代,所述MSP也可以在经过某段时间之后将缓存的数据存储在存储器中。
图16示出了根据本发明的一个实施方案的用于一种在可变容量的存储器页中有效地存储固定尺寸的控制器页的替代的方法。在图16的方法中,MSP 52将控制器页(标注为控制器页#1...#5)存储在存储阵列330的可变容量的存储器页334中,其中每个控制器页均具有P个比特。每个存储器页334的容量可以小于、等于或大于P。
MSP 52逐个地存储控制器页,而不考虑存储器页334的边界。从而,某一存储器页可以包含属于一个或多个控制器页的数据,而某一控制器页的数据可以存储在一个或多个存储器页中。所述MSP例如通过存储每个控制器页的起始和结束地址,来记录每个控制器页在阵列中的位置。这种存储方法以一些管理开销为代价,从而利用了存储器页的整个容量。
上述存储方法通常对于存储器控制器是透明的。当存储器控制器请求某一控制器页时,所述MSP从适当的存储器位置读取所请求的控制器页并且将所述数据发送到所述控制器。
在一些情况下,例如当存储较大数据文件或数字图像时,所述存储器控制器发送连续的控制器页的序列以供存储。在这样的情况下,所述MSP能够通过缓存从所述存储器控制器接受的数据,来降低物理的页编程操作的次数。例如,当缓冲器为满时,当受到存储器控制器明确指示时(例如响应于EOF命令),或当存储器控制器发送不构成所述序列的一部分的控制器页时,所述MSP物理地将所述数据写到所述存储阵列。为此目的可使用的一种示例性命令是“页缓存编程(PageCache Program)”命令,其在上面引用的ONFI规格中已进行了定义。所述MSP也可以通过缓存读取自存储器的数据,从而来减少读取循序存储在该存储器中的大量数据所需的读页操作。
图17示出了根据本发明的另一个实施方案的另一种在可变容量的存储器页中有效地存储固定尺寸的控制器页的方法。在图17的方法中,所述MSP在两个阶段中写控制器页,以加快编程速度。
存储阵列340的存储器页被分为临时存储区域344和永久存储区域348。当所述MSP从存储器控制器接受控制器页时,其初始将它们写入区域344中的分开的存储器页,以使得每个控制器页被写入单个存储器页中。
在较晚的时间点,典型地,当与存储器控制器的通信为空闲时,所述MSP将数据重新编程到永久存储区域348中。区域348内的数据以上面图16中的紧密压缩、容量高效的方法进行存储。区域344中已经被重新编程的页被释放,并且可被再用于后继的控制器页的临时存储。
损耗均衡考虑
在具体页中的失真度通常取决于该页已经经历的编程和擦除的次数。典型地,页的性能和容量随着它经历越来越多的编程和擦除循环次数而恶化。从而,经常有利的是,将存储器页的编程进行分布,以使得编程退化在整个存储单元阵列中均匀分布。这个特征被称为损耗均衡,且例如描述于由STMicroelectronics(位于瑞士日内瓦)于2007年2月在Application note AN-1822中的“Wear Leveling in SingleLevel Cell NAND Flash Memories”,该文在此处以援引方式纳入本文。
当MSP 52选择其中将写入数据的一个页或一组页时,所述MSP可以选择一个或一组已经经历了相对较少次数的编程和擦除循环的页。这样的损耗均衡考虑可以用于上述任何方法中。
在一些情况下,所述MSP可以基于将损耗均衡与失真估计组合的度量来选择页,例如
度量=γ·写擦除循环数+δ·失真估计
其中γ和δ表示加权系数。失真估计表示估计的失真度。例如,失真估计可以通过对电压已经显著下降的存储单元进行计数来获得。可加到对上述度量的定义中的另一因素是,自该块的上次擦除操作以来经过的时间(类似于在上文图11的描述中定义ILeakage的公式)。
虽然此处描述的实施方案主要涉及通过修改电压电平数量和ECC方案以自适应多层存储单元的存储密度,但是此处描述的方法和系统也可以通过仅仅改变ECC而用于单层存储单元。
虽然此处描述的实施方案主要注重于从固态存储设备中取出数据,但本发明的原理也可用于从硬盘驱动器(HDD)和其他数据存储介质和设备中存储和取出数据。在诸如HDD和数字磁带的一些存储设备中,在存储数据之前,存储介质并不被预先分成离散的存储单元。相反地,数据被存储在连续介质的区域中,且这些区域在连续介质中的位置被定义为存储过程其自身的一部分。在本专利申请的上下文中和权利要求书中,在推断为连续的介质中的存储过程期间定义的此类区域,也被视为“模拟存储单元”。
因此应该理解,上文所描述的实施方案仅进行示例引用,且本发明不限于上文中所具体示出和描述的实施方案。与此相反,本发明的范围包括上述各个特征的组合和子组合,以及其中本领域技术人员在阅读上述说明之后即可作出的未在现有技术中披露的变化和修改。

Claims (44)

1.一种用于在存储器中进行数据存储的方法,该存储器包括多个模拟存储单元,所述方法包括:
当所述存储器在主机系统中处于使用状态时,追踪所述模拟存储单元的相应的可达到的存储容量;
在固定容量块中接受来自主机系统的数据以用于存储在所述存储器中;
基于所追踪的可达到的容量选择一用于存储所述数据的存储单元子集;并且
基于所述子集的存储单元的可变容量组的所追踪的可达到的容量,将所述数据循序地存储在所述子集的存储单元的所述可变容量组中,而与可变容量组之间的边界无关,
其中,一可变容量组包括所述子集的存储单元中的一个或多个存储单元,该可变容量组的容量是该可变容量组中所包括的一个或多个存储单元的所追踪的可达到的容量之和。
2.根据权利要求1所述的方法,其中选择子集包括选择其可达到的总容量与所接受的数据的大小最佳匹配的存储单元。
3.根据权利要求1所述的方法,其中接受数据包括接受用于存储所述数据的要求的可靠性等级,且其中选择子集包括响应于所要求的可靠性等级选择所述存储单元。
4.根据权利要求1所述的方法,其中接受数据包括接受所要求的用于存储所述数据的保持期,且其中选择子集包括响应于所要求的保持期而选择所述存储单元。
5.根据权利要求1所述的方法,其中选择子集包括选择相对于其他存储单元具有低失真度的存储单元。
6.根据权利要求1所述的方法,其中追踪可达到的存储容量包括对施加到所述存储单元的先前的编程和擦除操作进行追踪,且其中选择子集包括响应于先前的编程和擦除操作来选择存储单元。
7.根据权利要求6所述的方法,其中选择子集包括通过选择在所述存储器内的相对于其他存储单元具有较少次数的先前的编程和擦除操作的存储单元,将后续多个编程和擦除操作均匀分布在所述存储单元中。
8.根据权利要求7所述的方法,其中分布多个编程和擦除操作包括选择在预定的最近时间段内相对于其他存储单元执行较少次数的先前的编程和擦除操作的存储单元。
9.根据权利要求1所述的方法,其中追踪可达到的存储容量包括通过对可用于存储数据的存储单元的可达到的容量求和,来计算可用的存储空间的大小并且报告给所述主机系统。
10.根据权利要求1所述的方法,其中所述存储器被分成多个擦除块,每个擦除块包括在单次擦除操作中擦除的一组存储单元,所述方法还包括通过如下方式从所述存储器中擦除数据项:
识别存储有所述数据项的一个或多个擦除块;
当存储有所述数据项的擦除块包含另一数据项的已存储数据时,基于在存储有所述数据项的擦除块之外的另外的存储单元的所追踪的可达到的容量和所述另一数据项的大小,将所述另一数据项的已存储数据重定位到所述另外的存储单元,并且将所述另一数据项的数据复制到所述另外的存储单元;并且
擦除存储有所述数据项的擦除块。
11.根据权利要求1所述的方法,在可变容量组中存储数据包括识别两个或更多个其容量小于固定容量块的容量的可变容量组,并且将接受在一个或多个固定容量块中的数据存储在所识别的两个或更多个可变容量组中。
12.根据权利要求1所述的方法,其中在可变容量组中存储数据包括将一个或多个可变容量组分配为用作逾额存储器存储区域,将接受在固定容量块中的数据存储在相应的可变容量组中,并且,当一个可变容量组的可达到的容量小于所述固定容量块的容量时,将接受在相应的固定容量块中的数据中的一些存储在所分配的逾额存储器存储区域中。
13.根据权利要求1所述的方法,其中存储数据包括,初始将接受在每个固定容量块中的数据存储在相应的可变容量组中,且随后对初始存储的数据循序重新编程,而与所述可变容量组之间的边界无关。
14.根据权利要求1所述的方法,还包括从所述可变容量组中取出所述数据,重构所述固定容量块,并且使用所述固定容量块向所述主机系统输出数据。
15.根据权利要求1所述的方法,还包括通过缓存所述数据中的至少一些,来减少施加到所述存储器的存储器存取操作的次数。
16.根据权利要求15所述的方法,其中缓存所述数据中的至少一些包括一旦检测到瞬时存储事件,就将被缓存的数据传送到所述存储器。
17.根据权利要求16所述的方法,其中所述瞬时存储事件包括选自即将到来的电源故障、超时和接受自所述主机系统的文件结束(EOF)命令的事件组中的至少一个事件。
18.一种数据存储装置,包括:
接口,其被布置为与包括多个模拟存储单元的存储器通信;和
存储器信号处理器(MSP),其被布置为当所述存储器在主机系统中处于使用状态时追踪所述存储单元的相应的可达到的存储容量,在固定容量块中接受来自主机系统的数据以用于存储在所述存储器中,基于所追踪的可达到的容量选择一用于存储所述数据的存储单元子集,并且基于所述子集的存储单元的可变容量组的所追踪的可达到的容量,将所述数据循序地存储在所述子集的存储单元的所述可变容量组中,而与可变容量组之间的边界无关,
其中,一可变容量组包括所述子集的存储单元中的一个或多个存储单元,该可变容量组的容量是该可变容量组中所包括的一个或多个存储单元的所追踪的可达到的容量之和。
19.根据权利要求18所述的装置,其中所述MSP被布置为选择其可达到的总容量与所接受的数据的大小最佳匹配的存储单元。
20.根据权利要求18所述的装置,其中所述MSP被布置为接受用于存储所述数据的要求的可靠性等级,且响应于所要求的可靠性等级选择所述存储单元。
21.根据权利要求18所述的装置,其中所述MSP被布置为接受所要求的用于存储所述数据的保持期,并响应于所要求的保持期而选择所述存储单元。
22.根据权利要求18所述的装置,其中所述MSP被布置为选择相对于其他存储单元具有低失真度的存储单元。
23.根据权利要求18所述的装置,其中所述MSP被布置为对施加到所述存储单元的先前的编程和擦除操作进行追踪,并响应于先前的编程和擦除操作来选择存储单元。
24.根据权利要求23所述的装置,其中所述MSP被布置为通过选择在所述存储器内的相对于其他存储单元具有较少次数的先前的编程和擦除操作的存储单元,将后续多个编程和擦除操作均匀分布在所述存储单元中。
25.根据权利要求24所述的装置,其中所述MSP被布置为选择在预定的最近时间段内相对于其他存储单元执行较少次数的先前的编程和擦除操作的存储单元。
26.根据权利要求18所述的装置,其中所述MSP被布置为通过对可用于存储数据的存储单元的可达到的容量求和,来计算可用的存储空间的大小并且报告给所述主机系统。
27.根据权利要求18所述的装置,其中所述存储器被分成多个擦除块,每个擦除块包括在单次擦除操作中擦除的一组存储单元,且其中所述MSP被布置为通过如下方式从所述存储器中擦除数据项:
识别存储有所述数据项的一个或多个擦除块;
当存储有所述数据项的擦除块包含另一数据项的已存储数据时,基于在存储有所述数据项的擦除块之外的另外的存储单元的所追踪的可达到的容量和所述另一数据项的大小,将所述另一数据项的已存储数据重定位到所述另外的存储单元,并且将所述另一数据项的数据复制到所述另外的存储单元;并且
擦除存储有所述数据项的擦除块。
28.根据权利要求18所述的装置,其中所述MSP被布置为识别两个或更多个其容量小于固定容量块的容量的可变容量组,并且将接受在一个或多个固定容量块中的数据存储在所识别的两个或更多个可变容量组中。
29.根据权利要求18所述的装置,其中所述MSP被布置为将一个或多个可变容量组分配为用作逾额存储器存储区域,将接受在固定容量块中的数据存储在相应的可变容量组中,并且,当一个可变容量组的可达到的容量小于所述固定容量块的容量时,将接受在相应的固定容量块中的数据中的一些存储在所分配的逾额存储器存储区域中。
30.根据权利要求18所述的装置,其中所述MSP被布置为初始将接受在每个固定容量块中的数据存储在相应的可变容量组中,且随后对初始存储的数据循序重新编程,而与所述可变容量组之间的边界无关。
31.根据权利要求18所述的装置,其中所述MSP被布置为从可变容量组中取出所述数据,重构所述固定容量块,并且使用所述固定容量块向所述主机系统输出数据。
32.根据权利要求18所述的装置,其中所述MSP被布置为通过缓存所述数据中的至少一些,以减少施加到所述存储器的存储器存取操作的次数。
33.根据权利要求32所述的装置,其中所述MSP被布置为一旦检测到瞬时存储事件,就将被缓存的数据传送到所述存储器。
34.根据权利要求33所述的装置,其中所述瞬时存储事件包括选自即将到来的电源故障、超时和接受自所述主机系统的文件结束(EOF)命令的事件组中的至少一个事件。
35.一种数据存储装置,包括:
存储器,其包括多个模拟存储单元;以及
存储器信号处理器(MSP),其被连接到所述存储器,并被布置为当所述存储器在主机系统中处于使用中时,追踪所述存储单元的相应的可达到的存储容量,在固定容量块中接受来自主机系统的数据以用于存储在存储器中,基于所追踪的可达到的容量来选择用于存储所述数据的存储单元子集,并且基于所述子集的存储单元的可变容量组的所追踪的可达到的容量,将所述数据循序地存储在所述子集的存储单元的所述可变容量组中,而与可变容量组之间的边界无关,
其中,一可变容量组包括所述子集的存储单元中的一个或多个存储单元,该可变容量组的容量是该可变容量组中所包括的一个或多个存储单元的所追踪的可达到的容量之和。
36.根据权利要求35所述的装置,其中所述存储器位于第一集成电路(IC)中,且其中所述MSP位于不同于所述第一IC的第二IC中。
37.根据权利要求35所述的装置,其中所述存储器和所述MSP被集成在单个设备中。
38.根据权利要求35所述的装置,其中所述MSP被实施在所述主机系统的处理器中。
39.根据权利要求35所述的装置,其中所述存储单元包括闪存单元。
40.根据权利要求35所述的装置,其中所述存储单元包括动态随机存取存储(DRAM)单元。
41.根据权利要求35所述的装置,其中所述存储单元包括相变存储(PCM)单元。
42.根据权利要求35所述的装置,其中所述存储单元包括氮化物只读存储(NROM)单元。
43.根据权利要求35所述的装置,其中所述存储单元包括磁随机存取存储(MRAM)单元。
44.根据权利要求35所述的装置,其中所述存储单元包括铁电随机存取存储(FRAM)单元。
CN201110294868.3A 2006-05-12 2007-05-10 具有自适应容量的存储设备 Active CN102394101B (zh)

Applications Claiming Priority (20)

Application Number Priority Date Filing Date Title
US74710606P 2006-05-12 2006-05-12
US60/747,106 2006-05-12
US82223606P 2006-08-13 2006-08-13
US60/822,236 2006-08-13
US82591306P 2006-09-17 2006-09-17
US60/825,913 2006-09-17
US86607106P 2006-11-16 2006-11-16
US60/866,071 2006-11-16
US86686006P 2006-11-22 2006-11-22
US60/866,860 2006-11-22
US86739906P 2006-11-28 2006-11-28
US60/867,399 2006-11-28
US87183806P 2006-12-26 2006-12-26
US60/871,838 2006-12-26
US88224006P 2006-12-28 2006-12-28
US60/882,240 2006-12-28
US88307107P 2007-01-02 2007-01-02
US60/883,071 2007-01-02
US88598707P 2007-01-22 2007-01-22
US60/885,987 2007-01-22

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN2007800260948A Division CN101501779B (zh) 2006-05-12 2007-05-10 具有自适应容量的存储设备

Publications (2)

Publication Number Publication Date
CN102394101A CN102394101A (zh) 2012-03-28
CN102394101B true CN102394101B (zh) 2014-12-31

Family

ID=40759967

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110294868.3A Active CN102394101B (zh) 2006-05-12 2007-05-10 具有自适应容量的存储设备

Country Status (3)

Country Link
JP (1) JP5183625B2 (zh)
KR (2) KR101208312B1 (zh)
CN (1) CN102394101B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4999921B2 (ja) * 2006-05-12 2012-08-15 アノビット テクノロジーズ リミテッド メモリ素子用の歪み推定と誤り訂正符号化の組み合せ
US7639542B2 (en) * 2006-05-15 2009-12-29 Apple Inc. Maintenance operations for multi-level data storage cells
US7911834B2 (en) 2006-05-15 2011-03-22 Apple Inc. Analog interface for a flash memory die
KR101378365B1 (ko) * 2008-03-12 2014-03-28 삼성전자주식회사 하이브리드 메모리 데이터 검출 장치 및 방법
JP5971509B2 (ja) 2011-08-30 2016-08-17 ソニー株式会社 情報処理装置および方法、並びに記録媒体
US8788743B2 (en) * 2012-04-11 2014-07-22 Micron Technology, Inc. Mapping between program states and data patterns
KR101949987B1 (ko) * 2012-12-18 2019-02-20 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP5855150B2 (ja) * 2014-03-06 2016-02-09 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
WO2015151261A1 (ja) * 2014-04-03 2015-10-08 株式会社日立製作所 不揮発メモリシステム及び情報処理システム
WO2015155860A1 (ja) * 2014-04-09 2015-10-15 株式会社日立製作所 情報記憶装置及び情報記憶装置の制御方法
KR102468992B1 (ko) * 2015-11-06 2022-11-22 에스케이하이닉스 주식회사 메모리 장치 및 이의 동작 방법
JP6156710B2 (ja) * 2016-05-16 2017-07-05 ソニー株式会社 情報処理装置および方法、並びに記録媒体
US10275165B2 (en) 2016-09-12 2019-04-30 Toshiba Memory Corporation Memory controller
JP2018160018A (ja) * 2017-03-22 2018-10-11 株式会社ジェイテクト データ処理装置
KR102032878B1 (ko) * 2017-12-22 2019-10-16 한국외국어대학교 연구산학협력단 플래시 메모리 컨트롤러의 에러 정정 방법
US10741568B2 (en) 2018-10-16 2020-08-11 Silicon Storage Technology, Inc. Precision tuning for the programming of analog neural memory in a deep learning artificial neural network
CN110795037B (zh) * 2019-10-22 2021-06-22 广东高云半导体科技股份有限公司 存储器的单元连接方法、处理器

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61338U (ja) * 1984-06-06 1986-01-06 クラリオン株式会社 復号装置
JP3315472B2 (ja) * 1993-04-26 2002-08-19 新日本製鐵株式会社 不揮発性半導体記憶装置
JP3200012B2 (ja) * 1996-04-19 2001-08-20 株式会社東芝 記憶システム
JP3828376B2 (ja) * 2001-05-07 2006-10-04 株式会社東芝 記憶システム
US6961890B2 (en) * 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
US7301807B2 (en) 2003-10-23 2007-11-27 Sandisk Corporation Writable tracking cells
US7210077B2 (en) * 2004-01-29 2007-04-24 Hewlett-Packard Development Company, L.P. System and method for configuring a solid-state storage device with error correction coding
JP2008508632A (ja) * 2004-08-02 2008-03-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データ記憶及び再生装置
JP2008123330A (ja) * 2006-11-14 2008-05-29 Toshiba Corp 不揮発性半導体記憶装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Bad Block Management in NAND Flash Memories";ANONYMOUS;《AN1819 APPLICATION NOTE》;20040531;1-7 *

Also Published As

Publication number Publication date
CN102394101A (zh) 2012-03-28
KR101208312B1 (ko) 2012-12-05
KR101274950B1 (ko) 2013-06-17
JP2009537055A (ja) 2009-10-22
KR20090033835A (ko) 2009-04-06
JP5183625B2 (ja) 2013-04-17
KR20120090084A (ko) 2012-08-16

Similar Documents

Publication Publication Date Title
CN102394101B (zh) 具有自适应容量的存储设备
CN101501779B (zh) 具有自适应容量的存储设备
US8694859B2 (en) Memory device with adaptive capacity
TWI501238B (zh) 藉由調變編碼用於單元間干擾抑制的方法及裝置
CN103258572B (zh) 存储设备中的失真估计和消除
US8472280B2 (en) Alternate page by page programming scheme
KR100850515B1 (ko) 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법
US9449705B2 (en) Programming schemes for multi-level analog memory cells
JP4391941B2 (ja) メモリセルの隣接する行の記憶素子間の結合の効果を減少させる方法
JP4787266B2 (ja) スクラッチパッドブロック
US7333364B2 (en) Cell-downgrading and reference-voltage adjustment for a multi-bit-cell flash memory
US7499320B2 (en) Non-volatile memory with cache page copy
US9164830B2 (en) Methods and devices to increase memory device data reliability
US7502255B2 (en) Method for cache page copy in a non-volatile memory
JP2015064925A (ja) セル当たり複数ビット(mbc)不揮発性メモリ内のデータを読み出す方法、メモリコントローラおよびシステム
WO2009037691A2 (en) Programming orders for reducing distortion in arrays of multi-level analog memory cells
US20120163080A1 (en) Reducing Distortion Using Joint Storage
Lv et al. MGC: Multiple-gray-code for 3d nand flash based high-density ssds
CN106959822B (zh) 数据储存装置及其数据写入方法
KR20090110648A (ko) 플래시 메모리로 데이터를 기록하는 방법과 플래시메모리에 기록된 데이터를 읽는 방법 및 플래시 메모리시스템
CN116758961A (zh) 一种高密度3d闪存两步编程方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: APPLE INC.

Free format text: FORMER OWNER: ANOBIT TECHNOLOGIES LTD.

Effective date: 20130105

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20130105

Address after: American California

Applicant after: Apple Computer, Inc.

Address before: Israel Hertz Leah

Applicant before: Anobit Technologies Ltd.

C14 Grant of patent or utility model
GR01 Patent grant