CN101124555B - 具有多流更新的非易失性存储器和方法 - Google Patents

具有多流更新的非易失性存储器和方法 Download PDF

Info

Publication number
CN101124555B
CN101124555B CN2005800473818A CN200580047381A CN101124555B CN 101124555 B CN101124555 B CN 101124555B CN 2005800473818 A CN2005800473818 A CN 2005800473818A CN 200580047381 A CN200580047381 A CN 200580047381A CN 101124555 B CN101124555 B CN 101124555B
Authority
CN
China
Prior art keywords
data
page
block
leaf
memory
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.)
Expired - Fee Related
Application number
CN2005800473818A
Other languages
English (en)
Other versions
CN101124555A (zh
Inventor
彼得·约翰·史密斯
瑟吉·阿纳托利耶维奇·戈罗别茨
艾伦·戴维·贝内特
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.)
Delphi International Operations Luxembourg SARL
Original Assignee
SanDisk Corp
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
Priority claimed from US11/191,686 external-priority patent/US7412560B2/en
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of CN101124555A publication Critical patent/CN101124555A/zh
Application granted granted Critical
Publication of CN101124555B publication Critical patent/CN101124555B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Abstract

在可逐页编程且每一页具有可一次编程的多个扇区的存储器中,即使相继的写入为循序的,记录到更新区块的数据也可为分段的且非循序的。替代将更新数据记录到更新区块,可在至少两个交错流中记录所述数据。当整页的数据可用时,将其记录到所述更新区块。否则,将其临时记录到高速暂存器区块,直到整页的数据变为可用于被转移到所述更新区块为止。优选地,管线操作允许一旦主机写入命令指示整页可被写入即刻设置所述向所述更新区块的记录。如果实际写入的数据由于中断而不完全,那么将取消所述设置,并改为向所述高速暂存器区块进行记录。

Description

具有多流更新的非易失性存储器和方法
技术领域
本发明大体上涉及非易失性快闪存储器系统的操作,且更具体来说,涉及在非易失性快闪存储器内对数据进行编程的较有效方法。
背景技术
存在很多现今正在使用的商业上成功的非易失性存储器产品,尤其是以小外形尺寸卡的形式,其使用形成于一个或一个以上集成电路芯片上的快闪EEPROM(电子可擦除可编程只读存储器)单元阵列。通常但不必须处于单独集成电路芯片上的存储器控制器与主机介接(所述卡可移除地连接到所述主机),且控制所述卡内的所述存储器阵列的操作。这种控制器通常包括微处理器、某一非易失性只读存储器(ROM)、易失性随机存取存储器(RAM)和一个或一个以上特殊电路,例如在编程和读取数据期间在数据通过控制器时从数据计算出错误校正码(ECC)的电路。某些市售卡为CompactFlashTM(CF)卡、多媒体卡(MMC)、安全数字(SD)卡、个人标记(P-Tag)和记忆棒卡。主机包括个人计算机、笔记本计算机、个人数字助理(PDA)、各种数据通信装置、数码相机、蜂窝式电话、便携式音频播放器、汽车语音系统和相似类型的设备。在某些系统中,可移除卡不包括控制器,且主机控制所述卡内存储器阵列的操作。此类型存储器系统的实例包括智能媒体卡和xD卡。因此,存储器阵列的控制可通过所述卡片中控制器上的软件或主机中的控制软件达成。除存储器卡实施方案外,此类型的存储器或者可被嵌入各种类型的主机系统中。在可移除式与嵌入式应用中,可根据由存储器控制软件实施的存储方案,将主机数据存储于存储器阵列中。
两个通用存储器单元阵列架构创建了商业应用,NOR与NAND。在典型NOR阵列中,存储器单元连接于沿列方向延伸的邻近位线源极与漏极扩散之间,其中控制栅极连接到沿单元行延伸的字线。存储器单元包括定位于源极与漏极之间的单元通道区域的至少一部分上方的至少一个存储元件。存储元件上的编程电平的电荷因此控制所述单元的操作特征,其随后可通过将适当电压施加到定址的存储器单元而被读取。所述单元的实例,在第5,070,032,、5,095,344、5,313,421、5,315,541、5,343,063、5,661,053和6,222,762号美国专利中给出其在存储器系统中的用途及其制造方法。这些专利连同本申请案中所引用的所有其它专利和专利申请案一起全文以引用的方式并入本文中。
NAND阵列利用两个以上存储器单元的串联串(例如16或32),其和个别位线与参考电位之间的一个或一个以上选择晶体管连接以形成单元列。字线延伸横跨大量这些列内的单元。通过致使串中的剩余单元被较难地开启,在编程期间读取并验证列内的个别单元,以便使流过串的电流视存储于定址单元中的电荷的电平而定。NAND架构阵列及其作为存储器系统的一部分的操作的实例参阅第5,570,315、5,774,397、6,046,935和6,522,580号美国专利。
如前述参考专利中所论述的当前快闪EEPROM阵列的电荷存储元件大多数通常为导电浮动栅极,通常由传导掺杂的多晶硅材料形成。可用于快闪EEPROM系统的替代类型的存储器单元利用非传导介电材料替代传导浮动栅极,从而以非易失性方式来存储电荷。由氧化硅、氮化硅和氧化硅形成的三层电介质(ONO)夹于传导控制栅极与存储器单元通道上的半导衬底的表面之间。通过从所述单元通道将电子注入所述氮化物中来编程所述单元,其中所述电子被收集并存储于有限区域中,且通过将热空穴注入所述氮化物中来擦除所述单元。Harari等人的第2003/0109093号美国专利申请公开案中描述了使用介电存储元件的若干特定单元结构和阵列。
如在大多数全集成电路应用中,用以缩减实施某一集成电路功能所需的硅衬底面积的压力也存在于快闪EEPROM存储器单元阵列中。不断需要增加可存储于硅衬底的给定面积内的数字数据的量,以便增加给定尺寸存储器卡和其它类型封装的存储容量,或既增加容量又减小尺寸。一种增加数据的存储密度的方式是每一存储器单元和/或每一存储单元或元件存储一个以上数据位。这通过将存储元件电荷电平电压范围的窗口划分为两种以上状态而实现。使用四种所述状态允许每一单元存储两个数据位,使用八种状态则每存储元件存储三个数据位,等等。第5,043,940和5,172,338号美国专利描述了使用浮动栅极的多状态快闪EEPROM结构及其操作,且使用介电浮动栅极的结构描述于前述第2003/0109093号美国专利申请公开案中。多状态存储器单元阵列的选定部分因多种原因也可以第5,930,167和6,456,528号美国专利中所描述的方式在两种状态(二元)下操作,所述专利连同本申请案中所引用的所有专利和专利申请案一起全文以引用的方式并入本文中。
典型快闪EEPROM阵列的存储器单元划分为被一起擦除的离散的单元区块(擦除区块)。也就是说,所述擦除区块是擦除单位,即可同时擦除的最小数目的单元。每一擦除区块通常存储一个或一个以上页的数据,所述页是编程和读取的最小单位,但可在不同子阵列或平面中并行编程或读取一个以上页。每一页通常存储一个或一个以上扇区的数据,所述扇区的尺寸通过主机系统界定。实例扇区包括512字节的用户数据(遵循与磁盘驱动器建立的标准),加上关于所述用户数据和/或存储用户数据的擦除区块的开销信息的某一数目的字节。所述存储器在每一擦除区块内通常配置有16、32或更多页,且每一页存储一个或仅少数几个主机扇区的数据。
为了在将用户数据编程到存储器阵列中和从其中读取用户数据期间增加并行性的程度,通常将阵列划分为子阵列(一般称作平面),其含有其自身的数据寄存器和其它电路以允许并行操作,以便可同时将数据扇区编程到若干或所有平面的每一者中或从若干或所有平面的每一者读取数据扇区。单一集成电路上的阵列可物理划分为平面,或每一平面可由单独的一个或一个以上集成电路芯片形成。第5,798,968和5,890,192号美国专利中描述了所述存储器实施方案的实例。
为了进一步有效地管理存储器,可将擦除区块链接在一起以形成虚拟区块或元区块(metablock)。也就是说,界定每一元区块以包括来自每一平面的一个擦除区块。第6,763,424号美国专利中描述了所述元区块的用途。所述元区块通过主机逻辑区块地址而被识别为编程和读取数据的目的地。类似地,元区块的所有擦除区块被一起擦除。元区块可编程于元页的单元中,所述单元包含来自元区块中每一擦除区块的一个页。与此种大区块和/或元区块一起操作的存储器系统中的控制器执行许多功能,包括从主机接收的逻辑区块地址(LBA)与存储器单元阵列内的物理区块编号(PBN)之间的转译。擦除区块内的个别页通常由区块地址内的偏移识别。地址转译通常涉及使用逻辑区块编号(LBN)的中间项和逻辑页。在使用元区块的存储器系统中,所述元区块可为存储器阵列的有效最小擦除单位。因此,视存储器架构而定,最小擦除单位(区块)可为擦除区块或元区块。视所述架构而定,术语“区块”可指代擦除区块或元区块。类似地,术语“页”可指代存储器系统的最小编程单位。视存储器系统的架构而定,此可为单一擦除区块内的页,或可为延伸横跨若干擦除区块的元页。
存储于元区块中的数据经常更新,更新的可能性随所述元区块的数据容量的增加而增加。一个元区块的已更新扇区通常写入到另一元区块中。未改变的扇区通常也作为同一编程操作的一部分而从原始元区块复制到新的元区块,以合并数据。或者,未改变的数据可保留于所述原始元区块中,直到稍后再次与更新的数据合并到单一元区块中为止。将当前数据合并到新区块并擦除仅含有过时数据的区块的操作通常称为“垃圾收集(garbage collection)”操作。
通常操作具有保持于已擦除区块集区中的某些额外区块的大区块或元区块系统。当少于区块的容量的一个或一个以上数据页正被更新时,通常将已更新页从所述集区写入到已擦除区块,且随后将未改变的页的数据从原始区块复制到擦除集区区块。前述第6,763,424号美国专利中描述了此技术的变化形式。随着时间的过去,由于主机数据文件正被重新写入和更新,所以许多区块可以其相对较少数目的含有有效数据的页结束,并保留含有不再是当前数据的页。为了能够有效地使用阵列的数据存储容量,时常从多个区块中的分段将有效数据的逻辑相关数据页集合在一起,并一起合并为较少数目的区块。此处理通常称为“垃圾收集”。
在某些存储器系统中,物理存储器单元也分组为两个或两个以上区域。区域可为物理存储器或存储器系统的指定范围的逻辑区块地址被映射到达的任一分割子集。举例来说,能够存储64兆字节的数据的存储器系统可分割为四个区域,其中每一区域存储16兆字节的数据。逻辑区块地址的范围随后也划分为四组,向所述四个区域中的每一者的物理区块指派一个组。在典型实施方案中,抑制逻辑区块地址,以便每一者的数据决不被写入到逻辑区块地址被映射到达的单一物理区域外。在划分为平面(子阵列)的存储器单元阵列中(其中每一平面具有其自身的定址、编程和读取电路),每一区域优选包括来自多个平面的区块,通常包括来自所述平面的每一者的相同数目的区块。区域主要用于简化地址管理(例如,逻辑到物理的转译),从而产生较小的转译表、保持这些表所需的较少RAM存储器和用以定址存储器的当前活动区域的较快存取时间,但由于其限制性性质,可能产生不及最佳损耗水平的损耗水平。
个别快闪EEPROM单元在电荷存储元件或单元中存储表示一个或一个以上数据位的一定量的电荷。存储元件的电荷电平控制其存储器单元的阈值电压(通常称为VT),其用作读取所述单元的存储状态的基础。阈值电压窗口通常划分为许多范围,存储器单元的两个或两个以上存储状态中的每一者具有一个范围。这些范围由包括允许确定个别单元的存储状态的标称感测电平的安全带分隔。这些存储装置电平确实由于干扰在邻近或其它相关存储器单元、页或区块中执行的编程、读取或擦除操作的电荷而偏移。因此错误校正码(ECC)通常由控制器计算,并与正被编程的主机数据一起存储,且在读取期间用于验证数据并在必要时执行某水平的数据校正。并且,在干扰操作致使电荷电平完全偏移出其被界定的范围并因此导致读取错误数据之前,偏移的电荷电平可时常被恢复回到其状态范围的中心。第5,532,962和5,909,449号美国专利中描述了此处理,称为数据刷新或擦洗(scrub)。
在某些存储器阵列中,页可由可保留多个数据扇区的擦除区块的一部分构成。一旦所述页已被写入,就不可能在不破坏已写入的数据的情况下进行进一步写入。对于使用所述系统的存储器阵列,可通过连接到相同字线的一组存储器单元来界定页。所述存储器阵列可被无效地编程,其中以小于页尺寸的量接收数据。举例来说,在以一次一个扇区的方式接收数据的情况下,仅一个扇区可编程到页。不可在不冒破坏已存储于页处的数据扇区的风险的情况下将额外数据编程到所述页。有时,可接收一系列单一扇区,其间具有某些延迟。在此情况下,每一扇区写入到所述存储器阵列的单独页中。因此,以在如何使用存储器阵列中的空间方面无效的方式存储所述扇区。在使用多级逻辑时,存储器单元对附近单元的稍后编程的效果尤其敏感。另外,多级单元的编程通常通过编程具有第一页数据的一组单元,且稍后编程具有第二页数据的单元来完成。在某些情况下,所述第二页数据的编程可导致对所述第一页数据的破坏。因此,需要一种当存储器阵列以少于页的量接收数据时在具有多扇区页的存储器阵列中存储数据的更有效的方式。还需要一种当编程一组多级单元时防止在编程后续页期间破坏第一页的数据的方式。
发明内容
在具有作为擦除单位的区块的存储器阵列中,可将一个或一个以上区块指定为高速暂存器区块,且可将其用于改进存储器系统的性能。高速暂存器区块可作为缓冲器而操作,以便以低程度的并行性将数据写入到所述高速暂存器区块,且随后以高程度的并行性将数据复制到所述存储器阵列内的另一位置。数据可积累于所述高速暂存器区块内,直到可将其较有效地写入到另一位置为止。在具有多扇区页的存储器中,可积累扇区,直到可使用系统的最大并行性对整页进行写入为止。在多级单元存储器中,可将下部页存储于高速暂存器区块中,直到上部页可用为止,以便将上部和下部页存储在一起。
特定编程操作的并行性程度与一起编程的数据位的数目成比例。因此,一起编程大量数据被认为是以高并行性进行的写入,而一起编程少量数据被认为是低并行性。在使用小于页的并行性时,存储器阵列中的空间可能被浪费,且此浪费的空间意味着必须更频繁地执行垃圾收集,因此对存储器系统的效率产生负面影响。有时,必须将少量数据存储于存储器系统中。通过在一个位置(高速暂存器区块)中写入这些小写入,且随后以较高的并行性将其一起写入到另一位置,可改进所述存储器系统的效率。
本发明揭示一种在具有由多个数据扇区构成的页的最小编程单位的存储器系统中存储以少于一个页的量被接收的数据的方法。指定为高速暂存器区块的区块用于存储所接收的扇区,直到可将完整页写入到快闪存储器阵列为止。将第一扇区存储于所述高速暂存器区块的第一页中。随后接收的扇区可存储于所述高速暂存器区块的额外页中。个别接收的扇区或数组扇区当被接收时保存于所述高速暂存器区块的新页中。来自所述高速暂存器区块中其它页的先前存储的扇区可与新数据一起复制到最新页。因此,只要在所述高速暂存器区块的页中存在少于整页的新数据,就将数据扇区积累于所述高速暂存器区块中。以比区块的最大可用并行性低的程度的并行性将扇区写入到所述高速暂存器区块中。当扇区存储于所述高速暂存器区块中时可更新所述扇区。当接收新数据扇区(其导致整页的数据可用于编程)时,所述新扇区与先前存储于所述高速暂存器区块中的扇区可被一起编程到所述存储器阵列的另一区块中的相同页。此页完全由数据占据,并被以最大可用并行性写入。存储于所述高速暂存器区块中的数据可随后被标记为过时,并可在适宜的时间擦除。因此,更有效地使用了快闪存储器中的空间,且降低了垃圾收集操作的频率。
在具有多级单元的存储器中,高速暂存器区块可存储也被写入到活动区块的数据页。所述存储的页可保留于所述高速暂存器区块中,直到接收到另一数据页为止,以便可将两个数据页一起写入到其在活动区块中的目的地。可使用高程度并行性将其作为上部页和下部页一起写入,且与将其分开写入相比破坏数据的风险较低。也可使用所述高速暂存器区块在编程相关联的上部页期间保留先前编程的下部页的副本,使得如果存在功率损失,那么可从所述高速暂存器区块恢复所述下部页中的数据。
高速暂存器区块可允许临时存储将被写入到另一位置的数据。可在区块的数据扇区的更新期间,将数据存储于高速暂存器区块中。在区块内的页含有来自不同文件的数据扇区时,在更新任一区块时更新所述页。使用常规方法可能需要一个以上的区块来存储来自两个文件的已更新数据,因为可能需要多文件页的两个副本。使用高速暂存器区块允许存储来自一个文件的页的一部分,直到(来自其它文件的)所述页的剩余部分可用为止。随后,使用最大并行性将完整的已更新页编程到其目的地。
高速暂存器区块可含有不相关的数据的扇区。主机数据扇区与控制数据扇区均可存储于高速暂存器区块中。主机数据扇区与控制数据扇区可存储于高速暂存器区块内的相同页中。来自两个不同文件或来自同一文件的逻辑上远离部分的扇区可存储于高速暂存器区块的相同页中。这可允许以最大并行性编程所述高速暂存器区块,以便在接收数据时保持较高速度。当以较低速度接收数据时,页中的额外空间可由含有控制数据的扇区占据。这可允许较不频繁地更新控制数据结构,因此降低垃圾收集的频率。
通常,存储于高速暂存器区块的相同页中的扇区不需要属于不同的文件。作为独立数据对象,其仅需为例如相同页的但通过不同的写入命令写入的两个逻辑扇区。
高速暂存器可由标记扇区识别,以便控制器可容易地识别所述高速暂存器。存储于高速暂存器区块中的数据的索引可保留于索引扇区中,所述索引扇区本身存储于所述高速暂存器区块中。由于新扇区存储于所述高速暂存器区块中,所以所述索引扇区通过以新索引扇区替换旧索引扇区而被更新。类似地,由于将所述高速暂存器区块中的扇区复制到其它位置,所以可更新所述索引扇区以指示所述高速暂存器区块中的这些扇区为过时的。
高速暂存器区块和更新区块的改进的索引-保留于高速暂存器区块中的SPBI/CBI索
根据本发明另一方面,当除更新区块外还使用高速暂存器区块时,使用相关联的高速暂存器区块索引(″SPBI″)来跟踪记录于所述高速暂存器区块中的更新扇区。这(除索引(例如,″CBI″)外)用于跟踪记录于所述更新区块中的逻辑扇区。只要将用户数据存储于高速暂存器区块的部分页中,就意味着所述页的至少最后槽(slot)未填满。在一个实施例中,SPBI可存储于所述高速暂存器区块中部分页的最后槽中。在优选实施例中,SPBI和CBI可封装于SPBI/CBI扇区内,并存储于无论如何都不被使用的高速暂存器区块中部分页的最后槽中。每次写入新部分页,就在末端槽处写入更新的SPBI/CBI扇区,从而使所有先前的版本过时。
同时,索引方案利用高速暂存器区块中未使用的存储装置来在非易失性存储器中存储索引。
根据本发明的又一方面,存储于存储器区块中的数据使其索引存储于部分页的未被数据占据的部分中。因此,在组织为存储器单元(其中存储器单元的页可一起编程且存储器页的区块可一起擦除)的存储器中,当存储于所述存储器单元中的数据单位根据预定次序在所述页中对准时,且尤其如果所述页在每次擦除之后可一次编程,那么将存在被部分填充的页。所述区块的索引随后存储于未用更新数据填充的部分页中。所述部分页可在当前区块中或另一区块中。
多流更新跟踪-两个或两个以上流之间的同步
根据本发明的另一方面,提供一种将更新数据写入到具有同步信息的非易失性存储器的方法,所述同步信息允许识别可能存在于多个存储器区块上的数据的最近写入的版本。来自主机的更新数据可经由多个流而被引导到多个区块。所述同步信息的保持通过存储关于在所述流中的至少一者的每次更新时所述流/区块有多满的信息来完成。
在优选实施例中,指向区块中第一空位的写入指针将指示所述区块有多满。举例来说,在两个流之间,第二区块的写入指针的值指示在将所述写入指针写入到第一区块时所述第二区块有多满。此外,所述写入指针保存于所述第一区块中的位置同样指示此时所述第一区块有多满。
本发明尤其适用于非易失性存储器,其组织为可擦除的存储器单元区块,每一存储器单元用于存储逻辑数据单位,且每一区块还组织为一个或一个以上页。此外,每一页在擦除之后可以多个逻辑单位一次编程,每一逻辑单位以给定页偏移而处于预定次序。所述方法大体上提供用于存储或缓冲一组逻辑单位的更新数据的两个区块(例如,更新区块和高速暂存器区块),并保持用于帮助识别逻辑单位的最近写入版本位于第一还是第二区块中的同步信息。
根据优选实施例,每当写入指针形式的同步信息在高速暂存器区块中被缓冲时,所述同步信息与主机数据被保存在一起。所述写入指针是更新区块写入指针,其给出在将所述写入指针保存于所述高速暂存器区块中时所述更新区块中的下一写入的位置的地址。特定来说,其被保存于所述高速暂存器区块中无论如何都不用于存储主机数据的一部分中。优选地,所述更新区块写入指针包括在存储于所述高速暂存器区块的部分页中的索引SPBI/CBI中。所述更新区块写入指针将允许确定缓冲于所述高速暂存器区块中的给定逻辑扇区是否已通过随后到所述更新区块的写入而变为过时的。
根据本发明的另一实施例,保持同步信息,所述同步信息将允许确定缓冲于所述高速暂存器区块中的给定逻辑扇区是否已通过到所述更新区块的随后写入而变为过时的。这通过包括高速暂存器写入指针而完成,所述写入指针给出在将所述同步信息存储于更新区块的页中时所述高速暂存器区块中下一写入的位置的地址
在又一实施例中,可将所述同步信息编码为写入到多个流的数据扇区的时戳,以便可正确找到最新版本。
在优选实施例中,所述时戳信息存储于正被写入的页中的扇区的至少一者的开销部分中。
具有管线操作的多流更新
根据本发明的另一方面,一种更新非易失性存储器的方法包括使用用于记录更新数据的第一区块(更新区块)和用于在记录到所述更新区块之前临时保存某些更新数据的第二区块(高速暂存器区块)。所述非易失性存储器组织为可擦除的存储器单元区块,每一存储器单元用于存储逻辑数据单位,且每一区块还组织为一个或一个以上页,其中每一页能够存储具有确定的页偏移的多个逻辑单位,且在擦除之后可一起一次编程。所述方法进一步包括从主机接收所述逻辑单位,和将所述接收的逻辑单位逐页对准,以便当满足接收的逻辑单位具有页末偏移的预定条件时,将所述接收的逻辑单位与先前任何逻辑单位以适当的页对准存储到所述更新区块中的页,否则,将任何剩余的所接收的逻辑单位临时存储到所述高速暂存器区块中的部分页。当满足所述预定条件时,最终将所述高速暂存器区块中的所述逻辑单位转移到所述更新区块。
在优选实施例中,接收所述更新数据,并逐页解析,用于转移到所述第一区块(例如,更新区块)。将任何剩余的所接收数据的部分页转移到所述第二区块(例如,高速暂存器区块),且其将保留于第二区块处直到数据的整页变得可用于记录到所述第一区块为止。尽管所记录的页仅被部分地用所述接收的数据填充,但当将所述接收的数据转移到所述第二区块时,其被逐页记录。所述部分页中的空闲(通常未使用的)空间用于存储用于定位第二和第一区块中的数据的索引。
根据另一优选实施例,实施预示性管线操作,其中,并非等待直到确定对于向所述更新区块记录的预定条件为止,而是设置所述更新区块,从而一旦所述主机写入命令指示期望被写入的数据单位潜在地满足预定条件就向所述更新区块进行写入。以此方式,当等待来自主机的数据单位时,所述设置可具有跳跃式开始。当最终接收的实际数据单位确实满足所述预定条件时,所述更新区块中页的编程可立即进行,而无需等待设置,藉此改进写入性能。在所述主机写入中断且所接收的实际数据单位不再满足所述预定条件的情况下,将放弃所述用于记录到所述更新区块的设置,且改为将把所述数据单位记录到所述高速暂存器区块中。
在另一优选实施例中,在数据正被接收时且当在将所接收的数据记录到第一存储装置还是第二存储装置方面初始存在不确定性时,将所述接收的数据载入到编程电路的数据锁存器以用于第一与第二存储装置两者。以此方式,所述数据将始终可立即用于编程第一或第二存储装置。在特殊情况下,所述第一和第二存储装置共享相同组的数据锁存器。举例来说,当第一和第二存储装置处于相同存储器平面中时,其可由具有相同组的读出放大器和数据锁存器的相同组的编程电路服务。在所述情况下,数据将被载入到一组默认的数据锁存器,而与将编程第一存储装置还是第二存储装置无关。
从对本发明的优选实施例的以下描述中将了解本发明的额外特征和优势,所述描述内容应与附图结合来理解。
附图说明
图1A和1B分别是一起操作的非易失性存储器和主机系统的方框图。
图2说明图1A的存储器阵列的第一实例组织。
图3展示具有如存储于图1A的存储器阵列中的开销数据的实例主机数据扇区。
图4说明图1A的存储器阵列的第二实例组织。
图5说明图1A的存储器阵列的第三实例组织。
图6展示图1A的存储器阵列的所述第三实例组织的扩展。
图7是处于一种特定配置的图1A的阵列的一组存储器单元的电路图。
图8展示例如图1A的存储器阵列的存储器阵列的区块中数据扇区的存储。
图9展示例如图1A的存储器阵列的存储器阵列的区块中数据扇区的替代性存储。
图10A展示在垃圾收集操作期间在复制到另一区块之后图8或9的数据扇区。
图10B展示在第二垃圾收集操作期间在复制到另一区块之后图10A的数据扇区。
图10C展示在接收较多数据扇区之后图10B的区块。
图11A展示使用两个擦除区块,活动区块和高速暂存器区块,来存储图10A和10B的数据扇区的替代性存储配置。
图11B展示使用两个元区块,活动区块和高速暂存器区块,来存储图10A和10B的数据扇区的替代性存储配置。
图12A展示用于存储数据扇区以便可在存储而未触发垃圾收集操作时更新所述数据扇区的两个区块,活动区块和高速暂存器区块。
图12B展示图12A的替代性存储系统,其允许在存储而未触发垃圾收集时更新页的所有扇区。
图12C展示使用高速暂存器区块1250更新数据的另一实例。
图13展示用于在多级单元中存储两个数据位的四个阈值电压范围。
图14展示多级单元的两个区块,活动区块和高速暂存器区块,其中所述高速暂存器区块保留活动区块的下部页的副本。
图15展示来自存储于区块中的两个文件的数据扇区,和当更新所述两个文件需要存储器阵列中的空间的一个以上区块时所述数据扇区的后续存储。
图16展示更新图15的数据扇区的替代性系统,其中高速暂存器区块在扇区被复制到活动区块之前存储某些扇区。
图17展示高速暂存器区块在相同页中存储不相关数据的扇区,以及随后将此数据复制到不同位置。
图18展示高速暂存器区块存储经受多个更新的不相关数据的扇区。
图19展示高速暂存器区块由标记扇区识别。
图20展示图19的高速暂存器区块存储一组扇区和一索引扇区。
图21展示图20的高速暂存器区块存储第二组扇区和替换第一索引扇区的第二索引扇区。
图22展示图21的高速暂存器区块存储第三组扇区和替换第二索引扇区的第三索引扇区。
图23展示当将一组复制到另一区块时图22的高速暂存器区块具有替换第三索引扇区的第四索引扇区。
图24说明以常规方式正被更新并存储于具有单扇区页的更新区块中的逻辑组中的扇区的实例。
图25说明当应用于页为多扇区且可能可一次写入的存储器时,图24中展示的相同写入序列。
图26是说明根据本发明的通用实施例的更新数据的方法的流程图,所述方法通过将第一存储器区块与第二存储器区块结合使用并将所存储的数据的索引保存于第二区块中来更新数据。
图27A说明根据本发明的优选实施例的通过将更新区块与高速暂存器区块结合使用来更新数据和保持索引的特定实例。
图27B说明根据本发明的优选实施例的通过将更新区块与高速暂存器区块结合使用来更新正保持的数据的循序次序的另一实例。
图28说明用于保存存储器区块的索引的优选方案,所述索引用于将更新数据存储于所述区块的部分页中。
图29示意说明用于多流更新的高速暂存器区块,在所述多流更新中若干逻辑组同时经受更新。
图30说明将输入数据序列写入到区块的常规情况。
图31A说明根据本发明的优选实施例即使当不同的写入交错于两个区块上时也跟踪记录次序或优先级的方案。
图31B说明当写入记录于两个区块上时跟踪记录次序的另一实施例。
图32A是说明根据本发明的通用实施例的在两个数据流之间使记录序列同步的方法的流程图。
图32B是说明根据使用写入指针的实施例的在两个数据流之间使记录序列同步的方法的流程图。
图33A展示在根据第一次序的两个主机写入#1和#2之后高速暂存器区块和更新区块的状态。
图33B展示在根据与图33A中所示的第一序列相反的第二序列的两个主机写入#1和#2之后高速暂存器区块和更新区块的状态。
图34A说明高速暂存器区块索引(SPBI)的优选数据结构。
图34B说明高速暂存器区块索引中针对图33A中所示的主机写入#1的实例值。
图35A和图35B展示在图33A和图33B的循序主机写入之后,高速暂存器区块和更新区块分别相对于高速暂存器写入指针的中间状态。
图36说明存储于被记录到更新区块的扇区的开销部分中的高速暂存器写入指针。
图37说明使用时戳来跟踪两个更新流之间的记录序列。
图38是说明根据本发明的通用实施例的将更新数据同时记录并编索引到两个存储器区块的方法的流程图,每一存储器区块具有多扇区页。
图39是说明使用高速暂存器区块和更新区块的图37的方法的更具体实施方案的流程图。
图40A示意说明具有一系列读取/写入电路的存储器装置,其提供实施本发明的情境。
图40B说明图40A中所示的存储器装置的优选配置。
图41更详细地说明图40A中所示的感测模块。
图42是说明根据优选实施例的使用预示性管线方案的多流更新的流程图。
图43是说明根据另一实施例的多流更新的流程图,在所述多流更新中在发送正确目的地地址之前载入编程数据。
具体实施方式
存储器架构及其操作
先参看图1A,快闪存储器包括存储器单元阵列和控制器。在所示的实例中,两个集成电路装置(芯片)11和13包括存储器单元阵列15和多个逻辑电路17。所述逻辑电路17经由数据、命令和状态电路在单独芯片上与控制器19介接,且还提供定址、数据转移与感测和对所述阵列13的其它支持。视所提供的存储容量而定,许多存储器阵列芯片可为一个到很多个。或者,可将所述控制器和部分或整个阵列组合到单一集成电路芯片上,但这目前并非经济的选择。
典型的控制器19包括微处理器21、主要存储韧件的只读存储器(ROM)23和主要用于临时存储被写入到存储器芯片11和13或从存储器芯片11和13进行读取的用户数据的缓冲存储器(RAM)25。电路27与存储器阵列芯片介接,且电路29经由连接31与主机介接。在此实例中数据的完整性通过以专门计算代码的电路33计算ECC而确定。在用户数据从主机正被转移到快闪存储器阵列用于存储时,所述电路计算来自数据的ECC,且所述代码存储于存储器中。当稍后从所述存储器读取用户数据时,再次使其经过电路33,电路33通过相同的算法计算所述ECC并将所述代码与使用数据计算并存储的代码进行比较。如果其相当(compare),那么确定数据的完整性。如果其不同,那么视所利用的特定ECC算法而定,可识别并校正那些错误位(多达所述算法所支持的数目)。
图1A的存储器的连接31与主机系统的连接31′配对,图1B中给出其实例。图1A的所述主机与所述存储器之间的数据转移经由接口电路35。典型的主机还包括微处理器37、用于存储韧件代码的ROM 39和RAM 41。视特定主机系统而定,其它电路和子系统43通常包括高容量磁性数据存储磁盘驱动器,用于键盘、监视器和类似物的接口电路。所述主机的某些实例包括台式计算机、膝上型计算机、手持式计算机、掌上型计算机、个人数字助理(PDA)、MP3和其它音频播放器、数码相机、视频摄像机、电子游戏机、无线和有线电话装置、答录机、语音记录器、网络路由器和其它装置。
图1A的存储器可实施为含有控制器及其所有存储器阵列电路装置的小型封闭式卡片,其处于可与图1B的主机可移除地连接的形式。也就是说,配对连接31和31′允许将卡片分离且移动到另一主机,或通过将另一卡片连接到所述主机而进行替换。或者,可将所述存储器阵列装置封闭于单独卡片中,所述卡片可与含有控制器和连接31的卡片电连接以及机械连接。作为另一选择,可将图1A的存储器嵌入图1B的主机内,其中永久地产生连接3 1和3 1′。在此情况下,所述存储器通常与其它组件一起包含于所述主机的外壳中。
图2说明存储器阵列的一部分,其中将存储器单元分组为擦除区块,每一擦除区块中的单元通常可作为单一擦除操作的一部分而同时被一起擦除。擦除区块是这种类型的存储器中的最小擦除单位。
图2的个别存储器单元擦除区块的尺寸可变化,但一个商业实用形式在个别擦除区块中包括数据的单一扇区。图3中说明所述数据扇区的内容。用户数据51通常为512字节。除用户数据51以外的是开销数据,其包括从用户数据计算出的ECC 53、关于扇区数据和/或在其中编程扇区的擦除区块的参数55,和从所述参数55计算出的ECC 57,以及可能包括的任何其它开销数据。
在所述参数55中也可包括指示状况或状态的一个或一个以上旗标。用于编程和/或擦除所述擦除区块的电压电平的指示也可存储于所述参数55内,这些电压随所述擦除区块经历的循环的数目和其它因素改变而更新。所述参数55的其它实例包括所述擦除区块内任何缺陷单元的指示、映射到此物理擦除区块的擦除区块的逻辑地址,和在原始擦除区块有缺陷的情况下任何替代擦除区块的地址。用于任何存储器系统中的参数55的特定组合将根据设计而变化。并且,可将某些或所有开销数据存储于专用于所述功能的擦除区块中,而非存储于含有用户数据或与开销数据有关的擦除区块中。
与图2的单一数据扇区擦除区块不同的是图4的多扇区擦除区块。仍为最小擦除单位的实例擦除区块59含有四个页0-3,每一页为最小编程单位。数据的一个或一个以上主机扇区通常与包括至少从所述扇区的数据计算出的ECC的开销数据一起存储于每一页中,且可处于图3的数据扇区的形式。
重新写入整个区块的数据通常涉及将新数据编程到擦除区块集区块,原始区块随后被擦除并放置于所述擦除集区中。当更新少于区块的所有页的数据时,所述更新的数据通常存储于来自擦除的区块集区的区块的页中,并将剩余未改变的页中的数据从原始区块复制到新区块中。随后擦除所述原始区块。此大区块管理技术的变化形式包括将经更新的数据写入到另一区块的页中,而不从所述原始区块移动数据或将其擦除。这导致具有相同逻辑地址的多个页。数据的最近页通过某一便利的技术(例如,记录为扇区或页开销数据中的字段的编程时间)来识别。
图5中说明另一多扇区区块配置。此处,将全部存储器单元阵列物理上划分为两个或两个以上平面,说明四个平面0-3。每一平面是存储器单元的子阵列,其具有其自身的数据寄存器、读出放大器、定址解码器和类似物,以便能够很大程度上独立于其它平面而操作。可在单一集成电路装置或多个装置上提供所有平面,一实例为由一个或一个以上不同的集成电路装置形成每一平面。图5的实例系统中的每一区块含有16页P0-P15,每一页具有一个、两个或两个以上主机数据扇区和一些开销数据的容量。
图6中说明又一存储器单元配置。每一平面含有大量单元的擦除区块。为了增加操作并行性的程度,将不同平面内的擦除区块逻辑上链接以形成元区块。图6中说明一个所述元区块,其由平面0的擦除区块3、平面1的擦除区块1、平面2的擦除区块1和平面3的擦除区块2形成。每一元区块为逻辑上可定址的,且存储器控制器指派并跟踪形成个别元区块的擦除区块。主机系统优选地以等于所述个别元区块的容量的数据单位与存储器系统介接。图6的所述逻辑数据区块61例如由逻辑区块地址(LBA)识别,所述逻辑区块地址由控制器映射到构成所述元区块的区块的物理区块编号(PBN)中。所述元区块的所有擦除区块被一起擦除,且来自每一擦除区块的页优选地被同时编程和读取。元区块可被认为是擦除区块以此方式链接的系统中的擦除单位。在某些具有元区块架构的存储器阵列中,页仅可与元区块的其它页并行编程。在这些存储器阵列中,元页是元区块的最小编程单位,其由来自所述元区块的每一平面的页构成。
存在许多可用于实施上文参看图2-6描述的存储器的不同存储器阵列架构、配置和特定单元结构。图7中展示NAND型存储器阵列的一个擦除区块。大量列定向的串联连接的存储器单元串连接于电压Vss的共同源极65与位线BL0-BLN中的一者之间,位线BL0-BLN又与含有地址解码器、驱动器、读取读出放大器和类似物的电路67连接。具体来说,一个所述串含有在串的相对末端处的选择晶体管77与79之间串联连接的电荷存储晶体管70、71…72和74。在此实例中,每一串含有16个存储晶体管,但其它数目是可能的。字线WL0-WL15延伸横越每一串的一个存储晶体管,且连接到含有地址解码器和所述字线的电压源极驱动器的电路81。线83和84上的电压控制将擦除区块中所有串经由其选择晶体管一起连接到电压源65和/或位线BL0-BLN。数据和地址来自存储器控制器。
擦除区块的每一行电荷存储晶体管(存储器单元)可形成被一起编程和读取的页。将适当电压施加到所述页的字线(WL)用于编程或读取其数据,同时选择施加到剩余字线的电压以使其各自存储晶体管具有传导性。在编程或读取一行(页)存储晶体管期间,由于施加于所有串上和施加到其字线上的电压的缘故,可能干扰未选择的行上的先前存储的电荷电平。这可防止在行中其它单元已被编程之后对特定行的单元进行编程。多状态快闪存储器对干扰尤其敏感。增加数目的逻辑状态导致个别状态的狭窄的阈值电压范围,以致电荷电平的较小变化可能产生逻辑状态的变化。由于数据存储密度通过在单元中使用增加数目的逻辑状态而增加,所以对干扰的敏感性增加。因此,在编程行中的单元之后,可能不能在不破坏已编程的单元中的数据的情况下将数据编程到所述行中的其它单元。因此,来自邻近单元的随后编程的干扰可界定页尺寸。如果在编程行中的单元之后不可编程相同行中的其它单元,那么所述行界定最小编程单位。因此,一行单元可含有一个数据页。在所述存储器阵列中,如果行中的一组单元被编程,那么即使所述行中某些单元不含有数据也认为所述行已被编程。在存储器阵列中具有不可被随后编程的空单元效率不高。
已编程页中的空单元可从由存储器系统一次接收的少量扇区中产生。举例来说,单一扇区可由主机发送到存储器系统。所述扇区存储于快闪存储器阵列的页中。所述扇区防止随后向所述页进行写入。在页保留多个扇区的存储器系统中,这可能无效。举例来说,在页包含四个数据扇区的情况下,当将单一扇区写入到所述页时,可保留三个数据扇区的存储器阵列的一部分为空的。随着页尺寸增加,来自所述部分填充页的被浪费的空间增加。元页可含有大量扇区,所以存储在使用元区块的存储器阵列中可能尤其无效。所述问题在接收两个或两个以上扇区但所接收的扇区数目少于页中的扇区数目的情况下是类似的。所述部分页可存储于高速暂存器区块中,直到接收到整页的数据为止。
在写入部分填充页的数据之后,可执行对所存储数据的合并,从而将来自所述部分填充页的数据组合到填充页中。这可作为周期性执行的垃圾收集的一部分来完成。所述数据的合并将数据从部分填充页复制到处于不同擦除区块中的整页。保留所述部分填充页的擦除区块随后被标记为过时的,以便可将其擦除或重新使用。所述操作可能占用可用于其它功能的系统资源。
对存储器的单扇区写入的实例
图8展示擦除区块,其指定为存储器系统中存储器阵列的活动区块800,其中页由四个数据扇区组成。展示页0-5,每一者沿水平方向延伸。每一页可含有四个数据扇区,指定为扇区0、扇区1、扇区2和扇区3。主机将单一数据扇区发送到存储器系统,所述数据扇区被存储于活动区块800中。接收扇区X,并将其存储为页0的扇区0。这防止对页0的随后编程。因此,页0的扇区1、2和3不被编程并保持为空的(已擦除)。在编程页0之后,接收扇区X+1。扇区X+1被存储为页1的扇区0。页1的扇区1、2和3保持为空的。在编程扇区X+1之后,接收扇区X+2。扇区X+2被存储为页2的扇区0。页2的扇区1、2和3保持为空的。在编程扇区X+2之后,接收扇区X+3。扇区X+3被存储为页3的扇区0。页3的扇区1、2和3保持为空的。
图9展示将扇区存储在指定为活动区块900的擦除区块中的替代方式。此处,不同于每页仅存储一个扇区,而是将先前存储的扇区复制到相同擦除区块中的新的页,在所述新的页中将所述先前存储的扇区与较新近接收的扇区一起存储。与先前一样,扇区X被存储为页0的扇区0。随后,接收扇区X+1,并将其存储为页1的扇区1,其中将扇区X从页0复制到页1的扇区0。因此,扇区X和扇区X+1都存储于页1中。随后,接收扇区X+2,并将其存储为页2的扇区2。扇区X被存储为页2的扇区0,且扇区X+1被存储为页2的扇区1。因此,扇区X、X+1和扇区X+2一起存储于页2中。随后,接收扇区X+3,并将其存储为页3的扇区3。扇区X被存储为扇区0,扇区X+1被存储为扇区1,且扇区X+2被存储为页3的扇区2。因此,四个数据扇区存储于页3中,以便页3完全由数据占据。
在存储图8或图9中所示的扇区之后,可将数据合并。可将图8或图9的扇区X、X+1、X+2和X+3复制到新擦除区块的单一页。这可在方便时作为垃圾收集的一部分而完成。图10A展示存储于指定的活动区块1000的页0中的扇区X、X+1、X+2和X+3。擦除区块1000的页0充满数据。当以扇区X、X+1、X+2和X+3来编程活动区块1100的页0时,可从作为所述扇区的复制来源的擦除区块中擦除扇区X、X+1、X+2和X+3。当在垃圾收集期间将活动区块800、900的内容合并时,可擦除活动区块800、900并使其可用于存储新数据。
在编程页0后,接收扇区X+4并将其存储为活动区块1000的页1的扇区0。随后,各自接收扇区X+5、X+6和X+7,并分别存储在页2、3和4中。可能需要再次合并扇区,以将扇区X+4、X+5、X+6和X+7合并到单一页。所述扇区的合并花费时间,在此期间不可写入主机数据。在第二次将数据合并到另一擦除区块后,将作为其复制来源的擦除区块1000标记为过时的,并可随后擦除所述擦除区块1000。
图10B展示在第二垃圾收集操作重新定位来自先前活动区块1000的数据之后的活动区块1010。将扇区X+4到X+7合并到活动区块1010的单一页(页1)中。随后,可接收更多扇区,并可将其存储于活动区块1010中。如果以单一扇区的形式接收所述扇区,那么可与之前一样将单一扇区存储于页中。
图10C展示活动区块1010,其中额外扇区X+8到X+11存储于页2-5中。此时可能需要另一垃圾收集操作以合并扇区X+8到X+11。因此,为了将从主机接收的扇区有效地存储为单一扇区,此方法使用需要将数据从一个擦除区块转移到另一擦除区块并擦除第一擦除区块的多个垃圾收集操作。在较大的擦除区块中,垃圾收集操作的数目较大。在使用元区块的存储器系统中,可链接一组擦除区块,以便其被一起擦除且一起编程。可在含有很多扇区的元页中编程数据。因此,存储单一扇区由于所必需的垃圾收集的数目而变得效率非常低。
图11A展示存储数据的替代方法。图11A展示存储器阵列的两个擦除区块。活动区块1110是可编程数据以用于长期存储的擦除区块。高速暂存器区块1120是可编程数据以用于短期存储的擦除区块。当接收少量扇区时,首先将其存储于高速暂存器区块1120中。扇区继续存储于所述高速暂存器区块1120中,直到接收足够的扇区以填满数据页为止。随后将这些扇区复制到活动区块1110的页。
与之前一样,接收扇区X并在高速暂存器区块1120中将其编程为页0的扇区0。随后,接收扇区X+1,并将其存储为高速暂存器区块1120的页1的扇区1,其中将扇区X复制到页1的扇区0。随后,接收扇区X+2,并将其存储为高速暂存器区块1120的页2的扇区2,其中将扇区X和X+1分别存储为页2的扇区0和扇区1。在将扇区X+2存储于高速暂存器区块1120中之后,接收扇区X+3。此时,将扇区X、X+1、X+2和X+3写入到活动区块1110的页0。这四个扇区形成整页的数据。因此,将扇区X、X+1、X+2和X+3有效地存储于活动区块1110的页0中。随后,各自接收扇区X+4、X+5、X+6和X+7。当接收扇区X+7时,将扇区X+4、X+5和X+6存储于高速暂存器区块1120的页3、4和5中,并将其复制到活动区块1110的页1的扇区0、1和2。将扇区X+7直接编程到活动区块1110的页1的扇区3。此时,高速暂存器区块1120不具有可用于存储数据的页,并可表示为已准备好进行擦除(过时)。对于将接收的下一扇区或下一组扇区,可将新的擦除区块指定为高速暂存器区块。虽然此实例展示接收单一扇区,但此方法也可用于扇区组,其中所述扇区组具有比页中的扇区数目少的扇区。并且,虽然上述实例展示以最大并行性将数据从高速暂存器区块写入到活动区块,但所述写入可以比最大并行性小的并行性完成,并仍提供效率益处。因此,以一个程度的并行性将扇区写入到高速暂存器区块,且随后以较高程度的并行性将其写入到另一区块,以便较密集地压缩所述数据,且需要较不频繁的垃圾收集。
高速暂存器区块也可用于使用元区块的存储器阵列中。举例来说,图11B展示两个元区块,活动区块1130和高速暂存器区块1140。活动区块1130和高速暂存器区块1140都具有四个平面,指示为平面0-3。每一平面为一个扇区宽,所以四个扇区存储于区块1130或1140的元页中。两个区块都具有6个元页,指示为元页0-5。用于有效地存储数据的技术与上文相对于擦除区块描述的技术相同。将扇区积累于高速暂存器区块1140中,直到数据的全元页可用为止,此时将全元页编程到活动区块1130。举例来说,当接收扇区X+3时,将全元页(扇区X、X+1、X+2和X+3)编程到活动区块1130的元页0。元页可具有大量扇区,因为元区块可具有很多平面,且平面可为若干页宽。上文描述的技术对于所述大元页尤其有价值,因为否则将会浪费存储器阵列中的大量空间。如参看图11A和11B所示,相对于使用擦除区块架构的实例而描述的本发明的各方面也可应用于元区块架构,且反之亦然。视存储器阵列的配置而定,术语“区块”可指擦除区块或元区块。在任一情况下,区块是所述配置中使用的擦除单位。类似地,术语“页”可指单一擦除区块内的页或元区块的元页。在任一情况下,页是所述配置的编程单位。
在接收具有多于页中的扇区数目的一组扇区时,可将扇区直接编程到存储器阵列的活动区块,而无需首先存储于高速暂存器区块中。因此,可以高程度的并行性将数据的整页直接编程到活动区块,同时以较低程度的并行性将数据的部分页编程到高速暂存器区块,直到其可作为整页编程的一部分被写入到活动区块为止。控制器可确定特定扇区或一组扇区的目的地。在将一组扇区写入到活动区块时将包括部分页写入和整页写入的情况下,可将所述整页写入到活动区块,并可将所述部分页写入到高速暂存器区块。
图12A展示另一实例,其中在将来自主机的扇区存储于高速暂存器区块中时使所述扇区更新。接收第一扇区X0,并将其存储于高速暂存器区块1250的页0中。在此实例中页存储数据的四个扇区。随后接收X0的替代,展示为X1。此实例中的扇区根据其逻辑地址编号,以下标指示扇区是否为更新扇区,且如果是,那么指示是何版本。因此,扇区X1是具有逻辑地址X的扇区,且是此扇区的第一更新版本。其是具有与X0相同逻辑地址但可含有反映某些更新信息的不同数据的数据扇区。将扇区X1写入到高速暂存器区块1250的页1。控制器跟踪哪些扇区为当前的和哪些扇区为过时的。在高速暂存器区块1250中,具有特定逻辑地址的扇区的最近写入的副本为当前版本。任何其它版本为过时的。因此,当编程X1时,X0变为过时的。在接收扇区X1后,接收扇区(X+1)0。其是逻辑上在扇区X1之后的扇区。将扇区X1和(X+1)0写入到页2。随后,用(X+1)1替代扇区(X+1)0。其是替换扇区(X+1)0的扇区(X+1)0的更新版本。将扇区(X+1)1与扇区X1一起写入到页3。随后,接收扇区(X+2)0并将其写入到页4。扇区(X+2)0随后由扇区(X+2)1替换,并与扇区X1和(X+1)1一起被写入到页5。随后,接收扇区(X+3)0。因此,数据页(扇区X1、(X+1)1、(X+2)1和(X+3)0)可用。将扇区X1、(X+1)1、(X+2)1和(X+3)0写入到指定为活动区块1252的区块。以整页写入的并行性将扇区X1、(X+1)1、(X+2)1和(X+3)0写入到活动区块1252。这是在此情况下的最大可能并行性。因此,即使以低程度的并行性将扇区X1、(X+1)1、(X+2)1和(X+3)0写入到高速暂存器区块1250,但随后将其以高程度的并行性写入到活动区块1252。此意味着将扇区X1、(X+1)1、(X+2)1和(X+3)0更有效地存储于活动区块中。更有效的存储可导致较不频繁地需要垃圾收集,因此改进性能。
图12B中提供了替代实例。此实例与图12A中所示的实例类似,但此处扇区(X+3)0在被复制到活动区块1252之前存储于高速暂存器区块1250中。这允许扇区(X+3)0在被写入到活动区块1252之前被更新。展示扇区(X+3)0通过用扇区(X+3)1替换而更新。数据的完整页(扇区X1、(X+1)1、(X+2)1和(X+3)1)可保留于高速暂存器区块1250中,准备直到发生某一触发事件才进行更新。在此情况下,接收扇区(X+4)0,从而提供触发事件。此时,以最大并行性将扇区X1、(X+1)1、(X+2)1和(X+3)1写入到活动区块1252。将扇区(X+4)0写入到高速暂存器区块1250中的下一可用页(页8)。
图12C展示使用高速暂存器区块1250更新数据的另一实例。将数据的扇区X0到(X+15)0存储于原始区块1254中。主机发送扇区(X+6)1,其为具有与扇区(X+6)0相同逻辑地址的更新扇区。因此,扇区(X+6)1将替换(X+6)0。为了替换扇区(X+6)0,原始区块1254的页1(含有扇区(X+4)0到(X+7)0)与扇区(X+6)1组合,且将所述组合写入到高速暂存器区块1250的页0。组合这些扇区可在例如控制器ram 25的随机存取存储器中进行,或可在连接到存储器阵列的存储器寄存器中完成。更新的页数据可保留于高速暂存器区块1250中,而在一段时间内不将其写入到活动区块。在从主机接收随后更新的扇区(X+5)1的情况下,可通过将扇区(X+5)1与所复制的扇区(X+4)0、(X+6)1和(X+7)0一起写入到高速暂存器区块1250的另一页(在此情况下为页1)而在高速暂存器区块1250中更新数据。在高速暂存器区块1250中的数据页的多个更新可以此方式执行。通过在高速暂存器区块1250中的新的页中替换更新的数据扇区并复制未改变的数据扇区来实行更新。所述复制的扇区被复制于相同平面内,以便可有效地执行复制。随后,可将更新的数据页复制到存储器阵列中的活动区块1252。非循序的更新可以此方式来执行,而无需无序更新区块。举例来说,在上述实例中非循序地接收更新扇区(X+6)1和(X+5)1,但活动区块1252为循序的。以此方式,多个数据页可同时保留于高速暂存器区块中并进行更新。当不再期望更新页时,可将所述页复制到活动区块。
多级单元编程的实例
通过将浮动栅极存储器单元的阈值电压范围划分为两个以上电平,某些种类的存储器可在存储器阵列的每一单元中存储一个以上数据位。图13展示所述多级单元(MLC)存储器可如何经编程以提供表示不同逻辑状态的多个阈值电压的实例。展示四个不同阈值电压,标记为A、B、C和D。将多个单元编程到每一电压。图13表示单元状态的分布,其中单元的数目表示于垂直轴上。每一阈值电压A、B、C和D表示不同的逻辑状态。四个状态表示两个数据位,一个位来自数据的下部页,且一个位来自数据的上部页,如图所示。在某些实例中,可首先编程所述下部页。在编程所述下部页之后,单元处于状态A或B。随后,可编程所述上部页,以便所述单元停留于状态A或B(上部位=1)或被修改为状态C或D(上部位=0)。因为这四种状态各具有相对较窄的电压窗口,所以MLC存储器尤其易受由于阈值电压的相对较小变化而引起的对数据的破坏的影响。在某些实例中,可能有利的是同时编程下部和上部页。这可帮助减少由于编程邻近单元而导致的对单元中数据的破坏(例如可在编程上部页数据期间发生)。
图14展示可如何使用高速暂存器区块1460来减少在MLC存储器中对数据的破坏的实例。图14将活动区块1462和高速暂存器区块1460两者展示为MLC存储器的区块。两个区块的页被编号,并依据使用何种阈值电压状态来存储页的数据位而展示为“上部”或“下部”。在此实例中,存储器首先接收扇区X到X+3,并将这些扇区存储于高速暂存器区块1460的下部页0中。随后,存储器接收扇区X+4到X+7。此时,将下部页(扇区X到X+3)与上部页(X+4到X+7)同时写入到活动区块1462。这可避免在编程活动区块1462的上部页0期间破坏活动区块1462的下部页0。通常,一起编程上部和下部页所必需的时间与单独编程上部页所必需的时间相同,因此此系统不遭受时间损失。在以扇区X到X+7编程活动区块1462的下部页0和上部页0之后,接收扇区X+8到X+11,并将其编程到高速暂存器区块1460的上部页0。当接收扇区X+12到X+15时,将扇区X+8到X+11与扇区X+12到X+15并行编程到活动区块的上部页1和下部页1。如图所示,此系统为随后的数据扇区继续。因此,将数据页写入到高速暂存器区块1460,且随后将此页与额外页一起写入到活动区块1462,作为相同组的存储器单元的上部和下部页。向高速暂存器区块1460编程以页的并行性进行,而向活动区块1462编程以页的并行性的两倍进行。
在替代实施例中,可在不同时间将上部和下部页写入到活动区块,但将下部页的副本保留于高速暂存器区块中,以防在编程上部页期间活动区块中的下部页被破坏。在图14中,可接收扇区X到X+3,并同时将其编程到活动区块1462的下部页0和高速暂存器区块1460的下部页0。随后,接收扇区X+4到X+7,并将其编程到活动区块1462的上部页0。扇区X+4到X+7不保存于高速暂存器区块1460中。如果在将X+4到X+7编程到活动区块1462的上部页0期间存在任何问题(例如功率损耗),那么活动区块1462的下部页0中的数据可能被破坏。也就是说,可修改正被编程的单元的阈值电压,以致其不再处于表示下部页的数据的状态,但尚未完全编程到表示上部页的数据的状态。举例来说,正从图13中的状态A被编程到状态D的单元当编程停止时可处于状态B或C。如果数据以此方式被破坏,那么正被写入的数据的上部页可从其被复制的位置恢复。然而,在很多情况下,不存在下部页的其它副本。此处,下部页的副本保留于高速暂存器区块1460中,直到完成上部页的编程为止。因此,存在下部页的未被破坏的副本,且所述副本可用于恢复下部页的数据。
多个文件的实例
来自一个以上主机数据文件的数据可存储于单一区块中。文件之间的间断可出现于一页内,以致页的一部分含有来自一个文件的数据,且页的一部分含有来自另一文件的数据。图15展示一实例,其中原始区块1570的页0到页i-1含有来自第一文件(文件1)的数据,且页i+1到页n-1含有来自第二文件(文件2)的数据。页i含有来自文件1的扇区(i*4)与(i*4)+1以及来自文件2的扇区(i*4)+2与(i*4)+3。文件2的扇区被绘上阴影,以说明存在来自两个文件的扇区。
图15展示正被更新到新区块1572的文件2。以原始区块1570的页i的内容写入新区块1572的第一页(页0)。因此,新区块1572的页0含有来自文件2和文件1两者的扇区。此时不更新来自文件1的扇区(i*4)和(i*4)+1,而是可将其复制以便编程数据的整页。将更新的文件2的剩余部分编程到新区块1572的页1到i-1。随后,更新文件1。扇区0到扇区(i*4)-1存储于页i到页n-1中。然而,扇区(i*4)和(i*4)+1也是文件1的一部分,且必须被更新。因为此时新区块1572是满的,所以将更新的扇区(i*4)和(i*4)+1编程到另一区块。随后,可作为垃圾收集操作的一部分,将扇区(i*4)和(i*4)+1与新区块1572中的扇区合并到单一区块。然而,这花费时间和系统资源,且通常不合需要。
图16展示用于更新含有来自两个不同文件的扇区的图15的原始区块1570的扇区的替代技术。此技术使用高速暂存器区块1674来存储更新的扇区,直到可以系统的最大并行性将其作为更新的整页的一部分写入时为止。当更新文件2时,将更新的扇区(i*4)+2和(i*4)+3写入到高速暂存器区块1674。此处,将其写入到高速暂存器区块1674的页0,且不将数据写入到页的剩余部分,以便使用低程度的并行性。将文件2的剩余扇区(扇区(i*4)+4到N-1)复制到新区块1676的页0到n-i。这些扇区均使用最大并行性在整页写入中被写入。随后,更新文件1。以最大并行性将扇区0到(i*4)-1编程到页n-i+1到n-2中。随后与将扇区(i*4)+2和(i*4)+3复制到新区块1676的页n-1并行,写入文件1的扇区(i*4)和(i*4)+1。因此,现将先前保留于原始区块1570中的所有扇区的已更新副本保留于新区块1676中,且在新区块1676中不保留过时数据。通常不需要对例如新区块1676的区块进行垃圾收集。以最大并行性来编程新区块1676的每一页,以在所述区块中实现最大的数据密度。此时,可将高速暂存器区块1674中的扇区(i*4)+2和(i*4)+3标记为过时的。然而,高速暂存器区块1674可用于进一步的操作,而无需进行垃圾收集操作,因为高速暂存器区块常规地含有当前和过时数据两者。
存储非循序数据扇区的实例
在某些先前实例中,以比写入完整页小的程度的并行性将数据扇区写入到高速暂存器区块。在所述实例中,正被写入的高速暂存器区块的页中的剩余空间可保持为空,因为不可能稍后在不干扰已存储的数据的情况下对其进行编程。在某些情况下,可能使用此原本为空的空间以及原本不被使用的编程带宽来在相同页中存储不相关的数据。举例来说,在存储器系统以少于一页的单一扇区或扇区组接收主机数据的情况下,这些主机数据的扇区可以页存储于高速暂存器区块中,所述页还保留例如不相关主机数据的不相关数据或控制数据的扇区。类似地,被存储于高速暂存器区块中用于稍后作为整页的一部分存储的来自文件开头的扇区可具有存储于相同高速暂存器区块页中的逻辑上不相关的额外扇区。
图17展示一实例,其中如先前实例中一样,将扇区X、X+1和X+2存储于高速暂存器区块1780中。然而,此处,保留扇区X、X+1和X+2的高速暂存器区块的页中的剩余空间用于存储其它数据。扇区Y、Y+1和Y+2与扇区X一起存储于页0中。扇区Y、Y+1和Y+2可与扇区X、X+1和X+2逻辑上无关。其可来自另一主机数据文件或来自同一文件内的另一扇区丛集。扇区Y、Y+1和Y+2可与扇区X、X+1和X+2为不循序的,且可在逻辑地址空间中分隔。类似地,扇区Z和Z+1与扇区X和X+1一起存储于页1中。扇区Z和Z+1可与扇区X、X+1和X+2以及扇区Y、Y+1和Y+2两者在逻辑上无关。当接收扇区X+3时,随后将扇区X、X+1、X+2和X+3写入到另一区块的页。当接收扇区Y+3时,将扇区Y、Y+1、Y+2和Y+3写入到另一区块的页。因此,可将不相关的数据存储于高速暂存器区块的相同页中,以较有效地使用可用资源。
图18展示存储于高速暂存器区块1890中的不相关数据的另一实例。此处,与之前一样,存储并更新扇区X、X+1和X+2。然而,此处,还并行存储并更新扇区Y。更新的扇区由指示存储何版本的下标表示。举例来说,扇区X0是扇区X的原始版本,而X1是扇区X的第一更新版本。扇区Y可为频繁更新的主机数据扇区或控制数据扇区。在某些系统中,例如FAT信息的控制数据在存储主机数据时更新。在接收少量主机数据的情况下,可能有利的是在高速暂存器区块1890中更新控制数据。这可避免更新其中仅更新控制数据的单一扇区的控制结构。在稍后某时,可使用来自高速暂存器区块的控制数据来更新所述控制数据结构。
高速暂存器区块管理
高速暂存器区块可为存储器阵列中的指定区块。可选择固定物理位置作为高速暂存器区块。然而,这可能导致存储器阵列的不均匀损耗。或者,所述指定区块可时常改变,以便在高速暂存器区块变为由过时数据填满时,选择另一擦除区块作为高速暂存器区块。在此情况下,由存储器控制器使用的数据结构可识别高速暂存器区块的位置,或可标记所述指定的高速暂存器区块,使得如果控制器扫描存储器阵列的擦除区块,那么其可确定哪一擦除区块为高速暂存器区块。可使用扇区来标记高速暂存器区块,以将其识别为高速暂存器区块。举例来说,图19展示将扇区2110标记为高速暂存器区块2100的第一扇区。当卡片通电时,可扫描存储器阵列(或所述存储器阵列的一部分)的擦除区块,以确定高速暂存器区块(一或多个)的位置。在图19的实例中,读取每一擦除区块的第一扇区以查看其是否为指示高速暂存器区块的标记扇区。
可将数据作为数据组写入到高速暂存器区块。数据组是从主机接收的逻辑上循序的扇区组。当数据组存储于高速暂存器区块中时,还写入索引扇区,其提供关于所存储的数据组的信息。数据组的扇区的位置可存储于索引扇区中。例如图19的高速暂存器区块2100的高速暂存器区块可用于存储多个数据组。图20展示存储一个数据组的高速暂存器2100。数据组1由两个扇区2220、2221构成。这些扇区,标记扇区2110和索引扇区2230存储于高速暂存器2100中。索引扇区2230存储关于组1的信息。
图21展示编程由两个扇区2340、2341构成的数据组2之后的图20的高速暂存器区块2100。索引扇区2350是存储关于组1和组2的信息的新索引扇区。因此,索引扇区2230为过时的,因为索引扇区2350含有包括组1的高速暂存器区块2100的数据组的完整记录。
图22展示在编程由扇区2460、2461和2462构成的数据组3之后的图21的高速暂存器区块2100。索引扇区2470是存储关于数据组1、2和3的信息的新索引扇区。索引扇区2470含有高速暂存器区块2100的数据的完整记录,且因此使索引扇区2350过时。
图23展示在从高速暂存器区块2100读取数据组1和数据组2并将其作为单一页写入在存储器阵列的另一区块中之后的图22的高速暂存器区块2100。索引扇区2560存储关于数据组3的信息。高速暂存器2100中的数据组1和数据组2为过时的,且因为其被存储于别处而不需要索引。因此,索引扇区2560含有高速暂存器区块2100中所有当前数据的完整记录。
当主机从存储器阵列请求数据扇区(一或多个)时,控制器可首先检查所请求的扇区是否处于高速暂存器区块中。如果所述扇区不存在于高速暂存器区块中,那么可以常规方式寻找所述扇区。因此,高速暂存器不需要改变用于跟踪存储器阵列中数据扇区的位置的常规媒体管理。
多流更新与索引
图24说明通过以常规方式将更新存储于具有单扇区页的更新区块中来更新逻辑组中的扇区的实例。数据被封装到逻辑扇区中并存储于元区块(也简称作“区块”)中,其中元区块的所有逻辑扇区可一起擦除。将数据逐页记录到区块中,其中每一页中的所有逻辑扇区可一起编程。所述实例展示每一扇区尺寸通常为大约512字节的单扇区页。在某些情况下,由整个逻辑扇区组形成“原始”区块10,所述整个逻辑扇区组根据例如以递升逻辑扇区编号排序的预定次序存储于所述“原始”区块10中。所述区块被认为是完整区块,其具有优选处于循序次序的完整的逻辑组的所有扇区。
因此,当主机发送更新作为逻辑组的这些逻辑扇区中的一些逻辑扇区的最新版本时,将所更新的扇区写入到专用于所述逻辑组的更新区块20。如果结果发现更新数据处于预定次序,那么可将其依序地记录于更新区块中。所述更新区块被认为是有可能变为完整区块的循序更新区块。另一方面,当更新扇区不处于循序次序时,所述更新区块被认为是非循序的,或“无序”。在此情况下,扇区的任何最新版本将最终被复制到别处,以形成新的完整区块。
在主机写入#1中,将更新的逻辑扇区LS10′发送到存储器,并将其记录于更新区块20的页0中。在主机写入#2中,将更新的逻辑扇区LS11′发送到存储器,并将其记录于更新区块20中的下一可用位置(页1)中。在主机写入#3中,将更新的逻辑扇区LS6′和LS7′分别记录于页2和3中。最后,在主机写入#4中,将更新的逻辑扇区L10″发送到存储器,并将其记录于更新区块的页4中。认为逻辑组的更新会形成流,例如流1,其中更新数据从主机流到更新区块。通常,如果存在分布于原始区块和更新区块中的逻辑扇区的多个版本,那么仅最近写入的版本将为有效的版本,其使得所有先前版本过时。举例来说,图24展示记录于更新区块的页4中的LS10″,其为最近写入的版本,且因此对于逻辑扇区编号10的数据来说是当前有效的扇区。先前版本,原始区块10中的LS10和更新区块20中的LS10′为过时的。
最终,将关闭更新区块,且更新区块与原始区块之间的有效扇区(逻辑扇区的最新版本)将以预定次序合并,从而形成新的原始区块。过时的原始区块和更新区块将再循环。
图25说明当应用于页为多扇区且可能可一次写入的存储器时图24中所示的相同写入序列。所述实例页结构与图24中所示的结构不同之处在于,每一页现含有四个扇区而非一个,且在某一实施例中,每一页在擦除之后仅可被写入一次。与现有术语一致,存储器装置占用的最小编程单位将被称为“物理页”,而系统占用的最小编程单位将被称为“元页”,元页可由多个物理页构成。为了方便起见,除非另外规定,否则“元页”与“页”将可互换使用。
与先前一样,每一逻辑扇区最初以升序逻辑编号次序循序地存储于原始区块10中。如果所述区块具有四扇区页结构,那么所述区块将被进一步分为页,且每一逻辑扇区优选地在每一页中具有确定的页偏移。举例来说,页P0具有存储于其中的逻辑扇区LS0-LS3。因此,LS0存储于所述页的四个槽的第一者中,且LS1存储于第二槽中,等等。在四扇区页的实例中,如果将区块的第一逻辑扇区编号为LS0,那么给定扇区LSn的页偏移将由MOD[(n+1),4]给出。
每当主机向存储器进行写入时,其发布写入许多数据单位(通常为逻辑扇区)的写入命令,随后是逻辑扇区自身的传输。为了防止数据丢失,主机与存储器之间的协议为,直到将当前的写入数据成功地写入到存储器之后才开始下一主机写入。
如先前所解释,在具有多扇区页的存储器架构中,优选地在页中实施扇区对准,因为这避免需要在垃圾收集期间进行重新对准。因此,当对准时,从每一主机写入接收的扇区无需填满更新区块中的整数页。这可能导致部分填充的页被编程。所述部分填充的页可在主机数据之前或之后具有间隙。这些间隙也可用现有逻辑扇区来预先填补或随后填补,以便尽可能地保持循序次序。在下一主机写入是下一逻辑扇区的情况下,通常优选地不随后填补所述部分页。然而,在具有可一次写入的页的存储器架构的情况下,部分页的未填充部分一旦已被写入就不能选择对其进行重写。
在所述实例中,已视需要将更新流(SPB)中的一者中的有效页的数目限制为一。这足以说明所述原理,但应注意,可在SPB中存储一个以上页,其中需要分析较多信息(例如,较旧的写入指针),以便寻找最新写入的扇区。
例如在图25中,在主机写入#1中,更新的扇区LS10′存储于更新区块20的页P0的第三偏移中。视需要,为了完整性,可用例如来自原始区块10的LS8和LS9的有效数据填补最初两个槽。然而,这仍使得当在主机写入#1结束时保存页P0时第四槽保持未填满。部分页可视需要用LS11的最新版本来随后填补。由于页可一次写入,所以未填满的第四槽将关闭而不用于进一步编程。
在主机写入#2中,命令是写入接收的已更新扇区LS11′,结果发现所述扇区LS11′处于与上一扇区LS10′循序的次序。理想地,其应被记录于P0中LS10′之后的下一槽中。然而,P0被关闭而不用于进一步写入,且因此,将LS11′存储于下一空页P1中的最后槽处,此是其适当的页偏移。用作为循序处于LS11′之前的逻辑扇区的有效版本的LS8、LS9和LS10′来填补P1的最初三个槽。
在主机写入#3中,命令是写入LS6′和LS7′。将这些分别写入到P2(其为更新区块中的下一空页)的第三和第四槽处。用例如LS4和LS5的有效数据来填补第一和第二槽。
最后,在主机写入#4中,命令是写入LS10″,且将其存储于P3的槽3中,同时分别用LS8和LS9来填补槽1和2,且槽4保持为空。
可见,在试图在每一可一次编程的页内保持扇区对准时,由于许多填补和死空间(dead space)的缘故,更新区块的使用效率低下。不合需要的特征为,即使主机循序进行写入(在两个单独写入命令中,扇区10,随后是11),更新区块也停止循序,且由于其具有某些过时数据而不能变得完整。
为了避免上述问题,并使由于部分填充页以及过多填补导致的更新区块20中的低效存储最小化,先前已描述使用额外的高速暂存器区块30。所述高速暂存器区块(SPB)30充当传入的数据的临时缓冲器和预留区域(staging area),使得数据的整页可在写入到更新区块20之前被预留。在上文四扇区页的实例中,预留所述扇区,以便写入四个扇区,从而完全填满更新区块中的页。在主机在单独写入中写入循序数据的情况下,SPB允许缓冲部分页的写入并使更新区块保持循序。然而,这也意味着,除原始和更新区块外,有效数据现也可分布于SPB上。
为了方便起见,高速暂存器区块的页尺寸与更新区块的页尺寸相同,但通常其可能是不同的。举例来说,如果存储器系统支持以物理页级编程,那么高速暂存器区块的页可具有物理页的尺寸。
高速暂存器区块和更新区块索引管理
2004年8月13日申请的第10/917,725号美国专利申请案揭示了一种具有区块管理的存储器系统,其整个揭示内容以引用的方式并入本文中。区块管理提供更新区块以与在更新中的数据的每一逻辑组相关联。所揭示内容为定位可能存在于原始区块或更新区块上的有效数据的多种索引方案的实例。明确地说,当更新区块含有处于非循序次序的逻辑扇区时,其被认为是“无序更新区块”。无序更新区块索引(“CBI”)用于跟踪记录于无序更新区块中的逻辑扇区。
保存于高速暂存器区块中的SPBI/CBI索引
根据本发明的另一方面,当除更新区块外还使用高速暂存器区块时,相关联的高速暂存器区块索引(“SPBI”)用于跟踪记录于所述高速暂存器区块中的更新扇区。这用于(除索引(例如“CBI”)外)跟踪记录于更新区块中的逻辑扇区。只要用户数据存储于高速暂存器区块的部分页中,就意味着页的至少最后槽未填满。在一个实施例中,SPBI可存储于高速暂存器区块中的部分页的最后槽中。在优选实施例中,SPBI和CBI可封装于SPBI/CBI扇区内,并存储于无论如何都不使用的高速暂存器区块中部分页的最后槽处。每次写入新的部分页,就在末端槽处写入更新的SPBI/CBI扇区,从而使所有先前版本过时。
图26是说明根据本发明的通用实施例的更新数据的方法的流程图,所述方法通过将第一存储器区块与第二存储器区块结合使用并将所存储的数据的索引保存于第二区块中来更新数据。
步骤80:提供第一和第二非易失性存储装置,每一非易失性存储装置用于循序地记录数据。
步骤81:保持已被记录于第一和第二非易失性存储装置中的数据的至少一个索引。
步骤82:接收输入数据。
步骤84:确定是否满足对于将缓冲的输入数据记录到第一存储装置的第一预定条件。如果满足,那么进行到步骤85,否则进行到步骤86。
步骤85:将所述缓冲的输入数据记录到第一存储装置。进行到步骤88。
步骤86:将所述缓冲的输入数据与至少一个索引一起记录到第二存储装置。进行到步骤88。
步骤88:如果存在更多待处理的输入数据,那么进行到步骤72,否则结束过程。
图27A说明根据本发明的优选实施例通过将更新区块与高速暂存器区块结合使用来更新数据并保持索引的特定实例。每一区块是元区块,其中其所有存储器位置可一起擦除。所述区块组织为页,其中页内所有存储器位置可一起编程。此外,每一页具有存储一个以上扇区的尺寸,且每当区块已被擦除时可一次写入。
除更新区块(“UB”)20外,还提供高速暂存器区块(“SPB”)30。如果“流1”用于标记数据向更新区块20的流动,那么向高速暂存器区块30的相应流动将被标记为“流0”。
图24和图25中的相同主机写入实例将用于说明图27A中所示的本发明的优势。在主机#1中,命令是写入LS10′。由于LS10′应占据槽3,所以整页不可被写入到更新区块20。事实上,其通过缓冲于SPB 30的新的页中而被预留。因此,LS10′存储于SPB 30的下一可用部分页PP0的槽3中。同时,槽1和2视需要分别用LS8和LS9填补。并且,根据本发明的特征,SPBI和CBI都封装于扇区内,即索引扇区SPBI/CBI150内,且所述索引扇区50有利地存储于部分页PP0的最后、未使用的槽中。
在主机写入#2中,命令是写入LS11′。由于LS11′属于处于页末处的槽4,所以以来自SPB 30的循序LS8、LS9和LS10′预先填补的整页可被写入到更新区块20的下一可用页P0。在此情况下,不更新SPBI/CBI的索引扇区,因为其不写入到SPB 30中的部分页。SPB中的对准以及预先填补是优选的,但可任选。
在主机写入#3中,命令是写入LS6′和LS7′。其分别属于槽3和4。因此,当用LS4和LS5填补先前槽时,写入另一整页,即更新区块20的P1。再次,不更新SPBI/CBI的索引扇区,因为其不写入到SPB 30中的部分页。
在主机写入#4中,命令是写入LS10″。由于LS10″属于槽3,所以其将被写入到SPB30的下一部分页PP1。类似地,用LS8和LS9填补先前槽1和2,而最后槽还将存储有索引扇区的最新更新SPBI/CBI3
通过将主机写入#4结束时对更新区块20的使用与图25的方案相比容易看出,图27A中所示的方案是对更新区块更有效的利用。对于相同的主机写入,图27A中所示的方案消耗较少的存储装置,且在更新区块中需要较少的填补(虽然以高速暂存器区块30为代价)。同时,索引方案利用高速暂存器区块中未使用的存储装置将索引存储在非易失性存储器中。
本发明的一个重要特征和优势为,在循序逻辑扇区的一系列独立主机写入期间,保持更新区块中更新扇区的循序次序,这不同于图25中所示的实例。从图27B中说明的实例将了解这一情况。
图27B说明根据本发明的优选实施例通过将更新区块与高速暂存器区块结合使用来更新正保持的数据的循序次序的另一实例。在此实例中,依次但经由若干单独的主机写入来写入逻辑扇区LS10′-LS16′。
在主机写入#1中,写入LS10′。由于其应占据页的槽3(并非页末槽),所以其被记录到在高速暂存器区块30的槽3中。同时,将索引SPBI/CBI1记录于页末槽中。
在主机写入#2中,写入LS11′。由于其应占据页末槽,所以将其直接记录到更新区块20中的新的页的最后槽。同时,将临时存储于高速暂存器区块中的LS10′复制到槽3,同时用来自原始或完整区块10的LS8和LS9预先填补槽1和2。
在主机写入#3中,写入LS12′-LS14′。由于其均不具有末端页偏移,所以将其存储于高速暂存器区块中新的页的槽1-3中。同时,将已更新的索引SPBI/CBI3记录于页末槽中。
在主机写入#4中,写入LS15′和LS16′。由于LS15′属于页末槽,所以将其直接写入到更新区块中的下一页的最后槽。同时,用来自高速暂存器区块的LS12′-LS14′分别填充槽1-3。
将了解,以循序方式将循序的逻辑扇区LS10′-LS16′记录于更新区块中,但其是经由若干单独的主机写入而写入的。
在优选实施例中,在高速暂存器区块中每一逻辑组保持一个有效部分页(例如,最后写入的部分页)。本发明可等效地应用于在高速暂存器区块中每一逻辑组保持一个以上有效部分页。在所述情况下,需要解析来自一个以上页的索引信息,以便定位所记录的扇区。
高速暂存器区块的页内的扇区对准和填补是优选的,但可任选。所述对准和填补将有助于随后向更新区块转移。
在某一存储器架构中,更新区块的页内过时扇区对准将简化索引和复制。即使当页中所有循序扇区由某数目的槽循环转移时,所述页中的扇区也被认为是页对准的。在所述情况下,指示页中第一逻辑扇区的位置的页标记将提供偏移地址。
所示的优选实施例具有两个存储装置作为两个不同的可擦除区块。通常,本发明可等效地应用于作为存储器的两个部分的两个存储装置。
本发明也可等效地应用于每一存储器单元存储一个数据位的两状态存储器,和每一存储器单元能够存储一个以上数据位的多状态存储器。对于支持多页存储的多状态存储器,下部页优选地用于存储高速暂存器区块的操作。如果将要写入的第一扇区并非开始于多槽页的槽1位置,那么优选地预先填补部分页。
页级索引用于无序区块,且扇区级索引用于高速暂存器区块。为了快速存取和处理,在控制器SRAM中保持用于存取所有无序区块和高速暂存器区块的所有必需的索引信息,即SPBI/CBI。无论何时写入新的部分页,均将索引信息周期性写到高速暂存器区块。
通常,将部分元页重定位数据与传入的数据一起编程,以减少编程循环的数目。当高速暂存器区块(SPB)变满时,对其进行压缩。SPB压缩是将所有有效数据重定位到新的区块。由于在SPB中每UB仅有一个具有有效数据的页,所以仅需要将那些页复制到新的区块。如果每更新区块存在多个具有有效数据的页(其可能含有不同或相同的逻辑地址;在后一情况下优选地将其合并)。
保存于部分页中的更新区块索引
根据本发明的又一方面,存储于存储器区块中的数据使其索引存储于部分页的未被数据占据的部分中。因此,在组织为存储器单元(其中存储器单元的页可一起编程且存储器页的区块可一起擦除)的存储器中,当存储于存储器单元中的数据单位根据预定次序在页中对准时,且尤其如果所述页在每次擦除之后可一次编程,那么将存在部分填充的页。区块的索引随后存储于未用更新数据填充的部分页中。所述部分页可在当前区块中或另一区块中。
图28说明用于保存存储器区块的索引的优选方案,所述索引用于将更新数据存储于所述区块的部分页中。
步骤90:将非易失性存储器组织为存储器单元的可擦除区块,每一存储器单元用于存储逻辑数据单位,且每一区块还被组织为一个或一个以上页,其中每一页中的存储器单元具有预定的页偏移,且在擦除之后可一起一次编程。
步骤92:提供一区块作为更新区块,用于记录逻辑数据单位的更新版本。
步骤94:从主机接收逻辑数据单位。
步骤96:保持更新区块中的数据的索引。
步骤98:逐页向更新区块进行记录,其中所接收的数据在页中根据其页偏移而对准,且当待记录的页具有未被数据占据的部分时,也将所述索引记录到所述未被数据占据的部分。
多流跟踪与同步
图29示意说明用于多流更新的高速暂存器区块,其中若干逻辑组同时经受更新。举例来说,如果存在k个正经受更新的逻辑组,那么将存在使用k个更新区块20-1,...,20-k的k个更新流。为了避免更新区块中的部分页,在另一流(流0)中使用高速暂存器区块30,以在k个更新区块的k个相应部分页中缓冲数据。因此,将存在k+1个开放的区块和k个部分页,以为k个更新区块中k个逻辑组的逻辑单位的同时更新服务。所示的实例是针对在高速暂存器区块中每更新区块存在一个有效页的优选实施例。
在有效扇区分布于更新区块和高速暂存器区块中的情况下,在功率循环中识别扇区的最近写入的版本时可能出现问题,因为可在更新区块和高速暂存器区块两者中找到相同逻辑扇区的不同副本。功率重设之后在更新区块上进行存储器扫描将建立逻辑扇区的多个版本(如果有的话)的优先级,因为更新区块的位置以确定的次序填充。类似地扫描高速暂存器区块,可识别出逻辑扇区的最近写入的版本。然而,如果高速暂存器区块中存在最新版本且更新区块中存在最新版本,那么不容易确定哪一者为真正最新的。举例来说,在图27A中,可在两个流中找到扇区LS8-LS10。通过不同命令序列-写入LS8′-LS10′;写入LS8″-LS10″;写入LS8″′-LS11′″;写入LS4′-LS7′可产生相同的数据图案,如图27A上。在此情况下,有效扇区将位于更新区块中而非高速暂存器区块中。
根据本发明的另一方面,提供一种将更新数据写入到具有同步信息的非易失性存储器的方法,所述同步信息允许识别可能存在于多个存储器区块上的数据的最近写入的版本。
图30说明将输入数据序列写入到区块的常规情况。非易失性存储器区块22经组织以使其以确定的次序被填充。其示意展示为从顶部填充。因此,数据“A”、“B”、“C”和“A′”的片段的循序写入被循序置于区块中。以此方式,如果(例如)“A′”是“A”的另一版本,那么可从其在区块22中的被记录位置确定其为替代“A”的稍后版本。下文的实施例尽管有效,但仅是存储关于在更新一个确定的流时所述流有多满的信息的较广义概念的特殊情况。
图31A说明根据本发明的优选实施例即使当不同的写入交错于两个区块上时也跟踪记录次序或优先级的方案。例如数据片段“A”、“B”、“C”和“A′”的每一写入依据一个或一个以上预定条件而可被记录到第一区块(例如,区块22)上或第二区块(例如,区块32)上。在所述实例中,“A”在第一写入中被记录到第二区块32。随后是第二写入,在第二写入中“B”被记录到第一区块22,和第三写入,在第三写入中“C”被记录到第二区块32,且最后是第四写入,在第四写入中“A′”被记录到第一区块22。
在所示的图式中,流0是记录到第二区块32的数据流,且流1是记录到第一区块22的数据流。在两个或两个以上流中的相同逻辑数据的交错更新的情况下,有必要跟踪更新的优先级,所述优先级界定最近记录的数据的位置。在优选实施例中,这通过至少每当记录给定的流时保存优先级信息来完成。
每当流0中的写入数据被记录到区块32上时,将优先级信息与写入数据一起保存。在所述优选实施例中,优先级信息是写入指针40,其指向第一区块22中的下一空位置(即,下一记录位置的地址)。所述写入指针与存储于流0中的数据一起保存。
因此,在写入“A”操作中,在流0中将指向区块22中的下一空位置的指针PA 40-A与“A”一起保存于区块32中。在写入“B”操作中,由于在流1中写入是针对区块22的,所以不保存指针。在写入“C”中,在流0中将指针PC 40-C与“C”一起保存于区块32中。在针对区块22的写入“A′”过程中,在流1中不保存指针。
如果在写入“A′”结束时,存储器在功率中断后被重设,那么控制器RAM中的任何索引都会丢失,且必须通过扫描存储器来重建。通过向后扫描,区块22和32中的每一者将定位数据“A”的最近写入的版本。写入指针40可用于在两个区块之间确定真正最新的版本。举例来说,指针Pc在记录“A′”之前指向区块22中的一位置,因此“A′”在“C”之后被记录。并且,由于“C”在“A”之后被记录于区块32中的一位置处,因此可推断“A′”是“A”的稍后版本。
在每UBSPB中存在一个以上有效页的另一实施例中,因此,为了检测最近写入的数据,将必须解析一个以上写入指针。
图31B说明当写入记录于两个区块上时跟踪记录次序的另一实施例。此实施例与图31A所示的类似,只是写入指针指向区块32中的下一空位置且保存于区块22中。流0被记录到第二区块(例如,区块32),而流1被记录到第一区块(例如,区块22)。每当流1被记录到第一区块上时,给出第二区块22中的下一记录位置的地址的第二区块写入指针40′与其一起保存。在此实例中,以″B″记录指针P′B 40′-B。类似地,在流1中以“A′”将指针P′A′-40′-A′记录于第一区块22中。
图32A是说明根据本发明的通用实施例在两个数据流之间使记录序列同步的方法的流程图。
步骤100:提供第一和第二非易失性存储装置,每一非易失性存储装置用于循序地记录数据。
步骤102:将第一或第二存储装置指定为用于优先级信息的存储装置,所述优先级信息用于确定第一存储装置中的第一数据单位是在第二存储装置中的第二数据单位之前还是之后被记录。
步骤110:接收输入数据。
步骤120:确定是否满足对于将接收的输入数据记录到第一存储装置的预定条件。如果满足,那么进行到步骤130′,否则进行到步骤140′。
步骤130:将所接收的数据记录到第一存储装置。同时,如果第一存储装置是所指定的存储装置,那么另外将优先级信息记录到第一存储装置。进行到步骤150。
步骤140:将所接收的输入数据记录到第二存储装置。同时,如果第二存储装置是所指定的存储装置,那么另外将优先级信息记录到第二存储装置。进行到步骤150。
步骤150:如果存在更多待处理的输入数据,那么进行到步骤110,否则结束过程。
在优选实施例中,优先级信息是写入指针,其是下一记录将在非指定的存储装置中发生的位置的地址。
图32B是说明根据使用写入指针的实施例在两个数据流之间使记录序列同步的方法的流程图。
步骤100′:提供第一和第二非易失性存储装置,每一非易失性存储装置用于循序地记录数据。
步骤110′:接收输入数据。
步骤120′:确定是否满足对于将接收的输入数据记录到第一存储装置的预定条件。如果满足,那么进行到步骤130′,否则进行到步骤140′。
步骤130′:获取下一记录将在第二存储装置中发生的位置的地址。
步骤132′:将地址和所接收的输入数据记录到第一存储装置。进行到步骤150′。
步骤140′:将所接收的输入数据记录到第二存储装置。进行到步骤150′。
步骤150′:如果存在更多待处理的输入数据,那么进行到步骤110,否则结束过程。
本发明尤其可应用于组织为存储器单元的可擦除区块的非易失性存储器,每一存储器单元用于存储逻辑数据单位,且每一区块还组织成一个或一个以上页。此外,每一页在擦除之后可以多个逻辑单位一次编程,每一逻辑单位以给定的页偏移而处于预定次序。所述方法实质上提供用于存储或缓冲一组逻辑单位的更新数据的两个区块(例如,更新区块和高速暂存器区块),并保持用于帮助识别逻辑单位的最近写入的版本位于第一还是第二区块中的同步信息。参看图29,如果存在多个流,那么图31A所示的实施例为优选的,因为将所有写入指针存储于SPB中的一个位置较方便。
更新区块写入指针实施例
根据优选实施例,每当写入指针形式的同步信息缓冲于高速暂存器区块中时,所述同步信息与主机数据一起保存。写入指针是更新区块写入指针,其给出在将写入指针保存于高速暂存器区块中时更新区块中下一写入的位置的地址。特定来说,其被保存于高速暂存器区块的无论如何不用于存储主机数据的一部分中。优选地,更新区块写入指针包括在存储于高速暂存器区块的部分页中的索引SPBI/CBI中。更新区块写入指针将允许确定缓冲于高速暂存器区块中的给定逻辑扇区是否已通过随后向更新区块进行的写入而变为过时的。
如果存在功率重设,且在两个区块中找到讨论中的逻辑扇区的两个版本,那么写入指针将允许决定哪一版本为真正最新的。举例来说,如果在所指位置之后记录更新区块中的逻辑扇区,那么其将替代SPB中部分页中的版本。另一方面,如果未在更新区块中找到逻辑扇区或逻辑扇区记录于较早的位置处,那么结论将是,缓冲于高速暂存器区块的部分页中的版本仍为有效的。
图33A展示在根据第一序列的两个主机写入#1和#2之后,高速暂存器区块和更新区块的状态。第一序列针对用于写入LS10′的主机写入#1,和用于写入LS10″和LS11′的主机写入#2。
在主机写入#1中,命令是写入LS10′。由于LS10′并非处于页边界处,所以其被记录于用LS8和LS9预先填补并以当前索引SPBI/CBI1终止的高速暂存器区块30中的部分页PP0中。当写入部分页PP0时,将写入指针40包括在保存于最后槽中的当前索引SPBI/CBI150中。写入指针40指向更新区块20中的第一空页P0。
在主机写入#2中,命令是写入LS10″和LS11。由于LS11′处于页末,所以其被直接写入到更新区块20中的P0的最后槽(槽4)。同时,以LS10′对槽3进行写入,且分别用LS8和LS9来填补槽1和2。
如果存储器现经受功率中断,丢失了维持于RAM中的索引信息,那么对物理存储器的向后扫描将试图重建所述索引信息。将了解,更新区块和高速暂存器区块(SPB)都将产生其LS10的最新版本,即LS10′与LS10″。然而,由于LS10″是在记录于SPB的PP0中的写入指针之后记录的,所以可推断其为比LS10′更迟的版本。
图33B展示在根据与图33A中所示的第一序列相反的第二序列的两个主机写入#1和#2之后,高速暂存器区块和更新区块的状态。所述相反序列针对用于写入LS10′和LS11′的主机写入#1,和用于写入LS10″的主机写入#2。
在主机写入#1中,命令是写入LS10′和LS11′。由于LS11′处于页末,所以其被直接写入到更新区块20中的P0的最后槽(槽4)。同时,以LS10′对槽3进行写入,且分别用LS8和LS9填补槽1和2。
在主机写入#1之后的主机写入#2中,命令是写入LS10″。由于LS10″并非处于页边界处,所以其被记录于用LS8和LS9预先填补并以当前索引SPBI/CBI2终止的高速暂存器区块30中的部分页PP0中。当写入部分页PP0时,写入指针40包括在保存于最后槽中的当前索引SPBI/CBI250中。写入指针40指向更新区块20中的下一空页P1。
在此情况下,在功率重设之后,更新区块中的逻辑扇区LS10′(例如)被发现记录于更新区块20的被指向的位置之前。因此可推断更新区块20中LS10′的最新版本由驻存在高速暂存器区块30的部分页中的另一版本LS10″替代。
图34A说明高速暂存器区块索引(SPBI)的优选数据结构。SPBI信息对于k个更新区块中的每一者含有以下字段。这是每逻辑组/UB具有一个有效页的SPB的特殊情况。
逻辑组编号识别给定流中正经受更新的逻辑组。优选地,对于自由更新区块或不具有有效高速暂存器数据的更新区块存储空值“FFFF”。
页开始扇区是写入到高速暂存器区块的部分页的第一逻辑扇区。
扇区运行长度(Sector Run Length)是写入到高速暂存器页的部分页的有效扇区的数目。
有效页编号识别写入于高速暂存器区块中的唯一有效(唯一有效的)部分页。其将是高速暂存器区块中最后写入的部分页。或者,可以扇区偏移来实施定址,所述扇区偏移指向更新区块的部分页的第一有效扇区。相对于区块的开始对扇区偏移进行计数。在所述优选实施例中,仅一个物理页含有给定更新区块的有效数据。对于未写入到高速暂存器区块的扇区存储FFFF。
更新区块写入指针40是当最后写入高速暂存器时相应的更新区块的第一未写入的扇区位置的扇区地址。从此扇区位置写入到更新区块的任何扇区将替代写入到高速暂存器区块中的扇区。
图34B说明图33A中所示的主机写入#1的高速暂存器区块索引中的实例值。在此实例中,逻辑组编号为“1”,其含有逻辑扇区LS0到LSN-1。其在流1中与附随的更新区块和高速暂存器区块一起更新。部分页为PP0,且其以LS8或“8”开始并具有行程(run)“3”从而以LS10′结束。有效部分页编号为“0”。最终,写入指针指向更新区块中下一写入位置,其具有扇区偏移“0”。
将了解,如果更新的索引仅存储于高速暂存器区块中,且无论何时将数据直接写入到更新区块都不写入所述高速暂存器区块,那么在那些情况下索引将变得无效。
通常,整个SPB索引信息以及CBI索引信息总是保持于控制器SRAM中的数据结构中。基于扇区级索引信息存取SPB中的有效扇区。在所述优选实施例中,SPBI/CBI索引存储于高速暂存器区块中的非易失性存储器中。明确地说,每当在高速暂存器区块(SPB)中写入部分页时,将最新的SPBI/CBI存储于所述部分页的最后扇区中。
SPB支持多达预定数目(例如,8)的更新区块。当主机写入页的最后扇区时,SPB区块中的部分页数据合并到相关联的更新区块。在给定情况下,对于逻辑组,数据可存在于SPB中的一个以上部分页中,但仅最后写入的部分页的数据是有效的。类似地,SPBI/CBI扇区的多个副本可存在于SPB中,但仅最后写入的副本是有效的。当需要将扇区写入到SPB且所述SPB已满时,将区块首先复制到新的SPB区块,并擦除旧的SPB,其后将扇区写入到所述新的SPB。当因为循序更新区块变得无序或因为先前含有高速暂存器数据的更新区块被关闭而需要更新SPBI/CBI时,也对SPB进行写入。
在所述优选实施例中,高速暂存器区块(SPB)写入是以一次一页的方式进行的。每流/逻辑组/更新区块的页的数目也被限制为一,所以仅需要最新的SPBI,因为仅存在一个关于有效副本在UB或SPB中处于何处存在疑问的逻辑页。类似地,如果SPB中每UB的页的数目多于一,那么同样将需要解析旧的SPBI。
上文描述的实施例存储更新区块写入指针,作为高速暂存器区块的最新部分页中SPBI/CBI扇区的一部分。替代实施例可能从可存在于多个区块中的多个版本中识别逻辑扇区的有效版本。也有可能在高速暂存器区块中每流具有一个以上页,或如果每一逻辑组具有一个以上更新区块或流。
高速暂存器区块写入指针实施例
根据本发明的另一实施例,保持同步信息,所述同步信息将允许确定缓冲于高速暂存器区块中的给定逻辑扇区是否已由于随后向更新区块进行的写入而变得过时。这通过包括高速暂存器写入指针来完成,所述写入指针给出在将同步信息存储于更新区块的页中时高速暂存器区块中下一写入的位置的地址
图35A和图35B展示在图33A和图33B的循序主机写入之后,高速暂存器区块和更新区块分别相对于高速暂存器写入指针的中间状态。
图35A说明在主机写入#1之后高速暂存器区块和更新区块的状态。在主机写入#1中,逻辑扇区LS10′属于页的槽3,且不处于页边界处,且因此被记录于高速暂存器区块30的部分页PP0中。将视需要用LS8和LS9填补并以当前索引SPBI/CBI1终止。如果存储器在功率关闭后已被重新启动,那么逻辑扇区LS10′的有效版本将由最后的SPBI/CBI1索引正确地定位。情况如此是因为对更新区块20未进行任何写入。
图35B说明主机写入#1之后的主机写入#2,其中命令是写入LS11′。由于LS11′处于页边界(槽4)处,所以其被记录于填满的页P0的第四槽中,所述页P0用LS8、LS9和LS10预填补。同步信息采用SPB写入指针40′的形式,其指向SPB 30中的下一空位置。不同于之前的实施例,所述SPB写入指针40′不包括于SPB 30的SPBI/CBI索引中。事实上,其存储于更新区块20中当前正被记录的页中的扇区的标头部分中。如果存储器在功率关闭后已被重新启动,那么逻辑扇区LS10′的有效版本将在更新区块20中被正确定位,因为SPB中的LS10的版本记录在由SPB写入指针40′指向的位置之前。
图36说明存储于被记录到更新区块的扇区的开销部分中的高速暂存器写入指针。高速暂存器写入指针40′保存于当前正被记录到更新区块的页中的扇区中的至少一者中。在所述优选实施例中,将其保存于正被写入的页中的扇区中的至少一者的开销部分中。
时戳实施例
在又一实施例中,可将同步信息编码为写入到多个流的数据扇区的时戳,以便可正确找到最新版本。
图37说明使用时戳来跟踪两个更新流之间的记录序列。与之前一样,更新数据的每一片段可记录于第一区块(流1)中或第二区块(流2)中。所述实例展示:在时间T1,将“A”记录于第一区块中,在T2,将“B”记录于第二区块中,在T3,将“C”记录于第一区块中,且在T4,将“A′”记录于第二区块中。
对于每个新的数据更新部分存储至少一个时戳。因此,“A”将具有时戳TS1,“B”具有TS2,“C”具有TS3且“A′”具有TS4。因此,举例来说,“A′”是“A”的稍后版本,因为其具有较后的时戳。在所述优选实施例中,时戳信息存储于正被写入的页中扇区的至少一者的开销部分中。
具有多扇区页的区块的多流更新
根据本发明的另一方面,一种更新非易失性存储器的方法包括使用用于记录更新数据的第一区块(更新区块)和用于在记录到所述更新区块之前临时保存某些更新数据的第二区块(高速暂存器区块)。所述非易失性存储器组织成存储器单元的可擦除区块,每一存储器单元用于存储逻辑数据单位,且每一区块还组织为一个或一个以上页,其中每一页能够存储具有确定的页偏移的多个逻辑单位,且在擦除之后可一起一次编程。所述方法进一步包括从主机接收逻辑单位,并将所述接收的逻辑单位逐页对准,以便当满足接收的逻辑单位具有页末偏移的预定条件时,将所述接收的逻辑单位与先前任何逻辑单位以适当的页对准存储到更新区块中的页中,否则,将任何剩余的所接收的逻辑单位临时存储到高速暂存器区块中的部分页中。当满足所述预定条件时,最终将高速暂存器区块中的逻辑单位转移到更新区块。
在优选实施例中,接收更新数据,并对其进行逐页解析以便转移到第一区块(例如,更新区块)。将任何剩余的缓冲数据的部分页转移到第二区块(例如,高速暂存器区块),且所述部分页将保留于第二区块处直到数据的整页变为可用于记录到第一区块为止。当将所缓冲的数据转移到第二区块时,其被逐页记录,但所记录的页仅部分地被所接收的数据填充。所述部分页中的空闲(通常为未使用的)空间用于存储用于定位第二和第一区块中的数据的索引。
图38是说明根据本发明的通用实施例将更新数据同时记录并编索引到两个存储器区块的方法的流程图,每一存储器区块具有多扇区的页。
步骤200:将非易失性存储器组织成存储器单元的可擦除区块,每一存储器单元用于存储逻辑数据单位,且每一区块还组织成一个或一个以上页,其中每一页含有多个存储器单元,且在擦除之后可一起一次编程。
步骤210:提供第一区块用于以逐整页的方式记录逻辑数据单位的更新版本。
步骤220:提供第二区块用于缓冲从主机接收的逻辑数据单位的更新版本。
步骤232:从主机接收逻辑单位中的数据。
步骤234:通过定位具有页末偏移的任何逻辑单位来逐页解析所接收的逻辑单位;
步骤236:在用先前逻辑单位的最新版本填充新的页的同时,将具有页末偏移的逻辑单位的每一者记录到第一区块中的所述新的页,并将部分页中任何剩余的所接收的逻辑单位记录于第二区块中。
图39是说明使用高速暂存器区块和更新区块的图37的方法的更具体实施方案的流程图。
步骤310:提供更新区块(UB)用于以逐整页的方式记录逻辑单位的更新版本,每一逻辑单位根据预定次序而具有预定的页偏移。
步骤322:提供高速暂存器区块(SPB)用于临时逐页缓冲导向其处的更新。
步骤324:提供SPBI索引用于定位SPB中的有效(最新版本)数据。
步骤332:以逐逻辑单位的方式接收当前写入请求的数据。
步骤334:如果当前逻辑单位在页末处偏移,那么进行到步骤340,否则进行到步骤336。
步骤336:如果写入请求具有更多待接收的数据,那么进行到步骤332,否则进行到步骤350。
步骤340:记录UB的新的页,其中当前逻辑单位处于页末,且根据预定次序用有效(最新版本)的逻辑单位填充页的剩余部分。进行到步骤336。
步骤350:如果所有接收的数据已被记录,那么进行到步骤180,否则进行到步骤360。
步骤360:如果未记录的所接收数据不属于与SPB中任何现有有效(最新版本)数据相同的页,那么进行到步骤370,否则进行到步骤362。
步骤362:更新SPB索引。
步骤364:将未记录的所接收数据和任何现有有效数据在其页偏移处记录到SPB的新的页中,所述新的页以SPB索引终止。进行到步骤380。
步骤370:通过合并,将来自SPB的当前页的现有有效数据重新定位到UB的新的页。
步骤372:更新SPB索引。
步骤374:将未记录的所接收数据在其页偏移处写入到SPB的新的页中,所述新的页以SPB索引终止。
步骤380:结束当前写入请求。
所述SPB支持多达预定数目(例如,8)的更新区块。当主机写入页的最后扇区时,SPB区块中的部分页数据合并到相关联的更新区块。在给定情况下,对于逻辑组,数据可存在于SPB中一个以上部分页中,但在所述优选实施例中仅最后写入的部分页的数据是有效的。类似地,SPBI/CBI扇区的多个副本可存在于SPB中,但仅最后写入的副本是有效的。出于相同考虑,如果SPB中每UB的有效页的数目被限制为一,那么仅需要最后的写入指针。当需要将扇区写入到SPB且所述SPB已满时,将区块首先复制到新的SPB区块并擦除旧的SPB,其后将扇区写入到新的SPB。当因为循序更新区块变得无序,或因为先前含有高速暂存器数据的更新区块被关闭而需要更新SPBI/CBI时,也对SPB进行写入。
通常,如先前所提及,每一更新区块的一个以上SPB部分页可用于存储有效数据。以此方式,如果下一主机写入页外部的扇区,那么无需将所述部分页合并以为新的页让路。
多流更新方案允许对更新区块的较有效利用。对于具有可一次写入的多扇区页的区块来说情况尤其如此。所述方案消耗较少的存储装置,且在更新区块中需要较少的填补。更重要的是,在循序逻辑扇区的一系列单独主机写入期间维持更新区块中的更新扇区的循序次序。
具有预示性管线操作的多流更新
在上文所述的多流更新方案中,每当存在主机写入时,将必须作出将所接收的主机数据记录到更新区块还是高速暂存器区块的决定。来自主机的数据单位在其被接收时可被逐一监视,直到接收到具有末端页偏移的数据单位为止。此时,确定对于写入整页的预定条件,但可能进行预先填补。
为了向更新区块进行写入,需要设置待写入的页以用于编程。这涉及对页进行定址,且随后将所述页的数据载入到数据锁存器。
根据优选实施例,实施预示性管线操作,在所述操作中,并非等待直到确定对于向更新区块记录的预定条件为止,而是设置所述更新区块,从而一旦主机写入命令指示期望被写入的数据单位潜在地满足预定条件就对所述更新区块进行写入。以此方式,当等待来自主机的数据单位时,所述设置可具有跳跃式开始。当最终接收的实际数据单位确实满足所述预定条件时,更新区块中页的编程可立即进行,而无需等待设置,藉此改进写入性能。在主机写入中断以及所接收的实际数据单位不再满足所述预定条件的情况下,将放弃用于向更新区块记录的设置,而是将把数据单位记录到高速暂存器区块。
图40A示意说明具有一系列读取/写入电路的存储器装置,其提供实施本发明的情境。所述存储器装置包括存储器单元的二维阵列400、控制电路410和读取/写入电路470。所述存储器阵列400可经由行解码器430由字线定址以及经由列解码器460由位线定址。读取/写入电路470实施为一系列感测模块480(未图示),且允许并行读取或编程一组(也称为“页”)存储器单元。并行操作的整个系列p个感测模块480允许并行读取或编程沿着行的一页p个单元。一个实例存储器阵列可具有p=512字节(512×8位)。在所述优选实施例中,区块具有整行单元的行程。在另一实施例中,区块是行中单元的子集。举例来说,单元的子集可以是整行的一半或整行的四分之一。单元的子集可以是邻接单元或每隔一个单元或每隔预定数目的单元的行程。因此,在优选实施例中,由邻接的一行存储器单元构成一页。在另一实施例中,在一行存储器单元被分为多个页的情况下,提供页多路复用器350以将读取/写入电路470多路传输到个别页。
控制电路410与读取/写入电路470协作以对存储器阵列400执行存储器操作。所述控制电路410包括状态机412、芯片上地址解码器414和功率控制模块416。所述状态机412提供对存储器操作的芯片级控制。所述芯片上地址解码器414在由主机或存储器控制器使用的地址与由解码器330和370使用的硬体地址之间提供地址接口。所述功率控制模块416控制在存储器操作期间供应到字线和位线的功率和电压。
图40B说明图40A中所示的存储器装置的优选配置。通过多个外围电路对存储器阵列400的存取在所述阵列的相对侧以对称样式实施,以便每一侧的存取线和电路减半。因此,行解码器被分为行解码器430A和430B,且列解码器被分为列解码器460A和460B。在将一行存储器单元划分为多个区块的实施例中,页多路复用器450被分为页多路复用器450A和450B。类似地,读取/写入电路被分为连接到来自阵列400底部的位线的读取/写入电路470A和连接到来自阵列400顶部的位线的读取/写入电路470B。以此方式,读取/写入模块的密度,且因此所述系列的感测模块480的密度,大体上减半。导引到位于阵列顶部的读取/写入模块的数据将经由顶部的I/O转移。类似地,导引到位于阵列底部的读取/写入模块的数据将经由底部的I/O转移。
图41更详细地说明图40A中所示的感测模块。每一感测模块480大体上包括用于感测存储器单元的传导状态的读出放大器482、用于存储所感测的数据或待编程的数据的一组数据锁存器484和用于与外部通信的I/O电路486。第2004-0109357-A1号美国专利公开案中揭示了优选的读出放大器,所述专利公开案的整个揭示内容以引用的方式并入本文中。
在编程操作期间,首先定址所选择的字线和位线。之后经由I/O端口向个别数据锁存器转移待编程的数据。随后,在将编程电压施加到字线以开始编程之前将位线预充电。实际施加编程电压之前的步骤可被认为是编程设置。当页尺寸相当大时,将编程数据转移到数据锁存器所需的时间也会相当多。
在主机写入期间,主机首先发送主机写入命令,其向存储器装置指示其期望写入的数据单位的范围。随后是以逐数据单位的方式传输所述范围内的数据单位,直到到达所述范围的末端为止。视协议而定,有可能所述传输可能意外中断,且在新的写入命令中发送剩余的数据单位。
为了改进写入性能,将需要进行管线操作,在所述管线操作中可在仍在接收数据单位的同时进行编程设置过程。然而,在可依据是否接收到特定数据单位而将数据单位记录到多个存储装置中的任一者的多流方案中,向给定存储装置记录的定址将直到实际上无中断地接收到那些特定数据单位才确定。
为了克服此问题,使用预示性管线方案。如果在由主机写入命令指示的范围内找到导致向给定存储装置进行记录的那些特定数据单位,那么所述给定存储装置将被立即设置以用于编程。当实际上接收到那些特定数据单位时,所述给定存储装置将能够编程所述数据单位而不会由于编程设置而延迟。另一方面,如果那些特定数据单位由于中断而未能实现,那么将放弃对所述给定存储装置的编程设定,且改为选择另一存储装置进行设置和随后的编程。
图42是说明根据优选实施例的使用预示性管线方案的多流更新的流程图。
步骤500:提供第一和第二存储装置用于记录主机数据单位。举例来说,所述第一存储装置是更新区块,其为专用于存储更新数据的可擦除区块,且所述第二存储装置是高速暂存器区块,其为用于临时缓冲正向更新区块转移的更新数据的另一可擦除区块。
步骤510:接收指示待写入的数据单位的范围的主机写入命令。
步骤512:如果数据单位的所述范围含有满足对于将数据单位记录到第一存储装置的预定条件的数据单位,那么进行到步骤520,否则进行到步骤530。举例来说,将可擦除区块组织为页,每一页能够存储可一起编程的多个数据单位。所述数据单位以逻辑上循序次序存储于页中,以便每一数据单位具有预定的页偏移。所述对于向更新区块记录的预定条件是当可记录整页时。充分条件是当存在具有末端页偏移的数据单位时,其中如果需要,通过在页中预填补任何先前数据单位来形成整页。如果不满足所述预定条件,那么主机数据将被记录到高速暂存器区块。
步骤520:设置地址,为向第一存储装置记录作准备。举例来说,如果所述范围包括具有末端页偏移的数据单位,那么将假定将整页记录到更新区块。在所述情况下,更新区块中的新的页将被定址以用于记录。
步骤522:向数据锁存器中载入所接收的数据,为向第一存储装置记录作准备。一旦从主机接收到数据单位,就将其载入到数据锁存器以用于编程新的页。
步骤524:如果实际上接收到满足所述预定条件的数据单位,那么进行到步骤540,否则进行到步骤526。举例来说,当从主机实际上接收到具有末端页偏移的数据单位时,可明确地形成所预示的整页。
步骤526:中止向第一存储装置进行记录的设置。进行到步骤530。举例来说,如果所期望的具有末端页偏移的数据单位由于中断而未到达,那么整页将被记录到更新区块的预示不再为真。在所述情况下,将必须放弃对于更新区块的编程设置。事实上,现将设置高速暂存器区块以用于编程。
步骤530:设置地址,为向第二存储装置记录作准备。举例来说,当不满足对于将整页记录到更新区块的预定条件时,主机数据将被记录到高速暂存器区块。在所述情况下,将定址高速暂存器区块中的新的页以用于记录。
步骤532:向数据锁存器中载入所接收的数据,为向第二存储装置记录作准备。一旦从主机接收到数据单位,就将其载入到数据锁存器以用于编程新的页。
步骤540:将数据锁存器中的数据编程到所定址的存储装置。举例来说,当所接收的数据单位确定向更新区块或向高速暂存器区块进行的所预示的记录时,可在无延迟的情况下编程设置区块。
步骤550:结束当前的主机写入。
视存储器架构而定,步骤520和530可处于不同次序,例如可在步骤522或步骤532中对数据锁存器进行载入之后选择地址。
在另一优选实施例中,在数据正被接收时且当在将所接收的数据记录到第一存储装置还是第二存储装置方面初始存在不确定性时,将所述接收的数据载入到编程电路的数据锁存器以用于第一与第二存储装置两者。以此方式,数据将始终可立即用于编程第一或第二存储装置。在特殊情况下,第一和第二存储装置共享相同组数据锁存器。举例来说,当第一和第二存储装置处于相同存储器平面中时,其可由具有相同组的读出放大器和数据锁存器的相同组的编程电路提供服务。在所述情况下,数据将被载入到一组默认的数据锁存器,而与将编程第一存储装置还是第二存储装置无关。
在第一和第二存储装置由不同组的数据锁存器提供服务的情况下(例如,处于相同平面的不同存储器页中或处于不同存储器平面中的情况),可将数据载入到两组数据锁存器。
图43是说明根据另一实施例的多流更新的流程图,在所述多流更新中在发送正确目的地地址之前载入编程数据。
步骤600:提供第一和第二存储装置用于记录主机数据单位。
步骤610:接收主机数据。
步骤620:在数据正被接收到用于编程第一存储装置的数据锁存器和用于编程第二存储装置的数据锁存器时载入所述数据。
步骤630:视所接收的数据是否满足预定条件而定,定址第一或第二存储装置以用于记录。
步骤640:将数据从其数据锁存器编程到所定址的存储装置。
步骤650:结束当前的主机写入。
尽管已参照各种示范性实施例描述本发明,但将了解,本发明享有在所附权利要求书的整个范围内受保护的权利。

Claims (65)

1.一种将自主机的数据单位记录到非易失性存储器中的方法,其包含:
提供来自所述非易失性存储器之中的第一和第二存储器区块;
接收指示所述将被写入的数据单位的主机写入命令;
依据所述将被写入的数据单位是否满足预定条件而定,设置所述第一或第二存储器区块以用于记录;
在接收来自所述主机的所述数据单位时,将所述数据单位发送到所述正被设置的存储器区块;以及
当基于所述所接收的数据单位确认到所述预定条件时,将所述数据单位记录到所述设置的存储器区块,否则,将所述数据单位记录到另一存储器区块,如果是所述第二存储器区块未设置,那么设置所述第二存储器区块,并将所述所接收的数据单位记录到所述第二存储器区块。
2.根据权利要求1所述的方法,其中所述设置包括定址所述选定的存储器区块。
3.根据权利要求1所述的方法,其中所述将所述数据单位发送到所述存储器区块包括将所述数据单位发送到一组用于编程所述选定的存储器区块的数据锁存器。
4.根据权利要求1所述的方法,其进一步包含:
将所述数据组织为具有预定次序的数据单位;以及
将所述第一和第二存储器区块组织为页,每一页用于将具有预定页偏移的多个数据单位一起编程;且其中:
所述预定条件是当所述数据单位中的一者具有页末偏移时;以及
所述将所述数据记录到所述第一存储器区块包括将所述页末数据单位和所述页中的任何先前数据单位记录到所述第一存储器区块的页。
5.根据权利要求4所述的方法,其中所述第一和第二存储器区块中的每一者用于存储可一起擦除的存储器单元的区块。
6.根据权利要求4所述的方法,其中:
所述来自所述主机的数据是用于数据单位群组的更新数据;
所述第一存储器区块用于存储所述更新数据;以及
所述第二存储器区块用于在将所述更新数据转移到所述第一存储器区块之前缓冲所述更新数据。
7.根据权利要求4所述的方法,其进一步包含:
将所述数据组织为具有预定次序的数据单位;以及
将所述第一和第二非易失性存储器区块组织为页,每一页用于将具有预定页偏移的多个数据单位一起编程。
8.根据权利要求7所述的方法,其中每一页在擦除之后可一次编程。
9.根据权利要求7所述的方法,其中:
所述将数据记录到所述第二存储器区块包括将存储于所述第二存储器区块中的数据的至少一个索引记录到其页中。
10.根据权利要求9所述的方法,其中将存储于所述第二存储器区块中的数据的所述至少一个索引记录到具有页末偏移的所述页的位置中。
11.根据权利要求7所述的方法,其中:
所述将数据记录到所述第二存储器区块包括将存储于所述第一和第二存储器区块中的数据的至少一个索引记录到其页中。
12.根据权利要求11所述的方法,其中将存储于所述第一和第二存储器区块中的数据的所述至少一个索引记录到具有页末偏移的所述页的位置中。
13.根据权利要求7所述的方法,其中:
所述将数据记录到所述第二存储器区块包括将指向所述第一存储器区块的下一记录位置的指针记录到其页中。
14.根据权利要求13所述的方法,其中将所述指针记录到具有所述页末偏移的页的位置中。
15.根据权利要求1-14中任一权利要求所述的方法,其中所述第一和第二存储器区块由各自存储一个数据位的存储器单元构成。
16.根据权利要求1-14中任一权利要求所述的方法,其中所述第一和第二存储器区块由各自存储一个以上数据位的存储器单元构成。
17.一种非易失性存储器,其包含:
存储器,其被组织为多个区块,每一区块是可一起擦除的多个存储器单元,每一存储器单元用于存储逻辑数据单位;
控制器,其用于控制所述区块的操作;
第一和第二区块,其每一者用于记录来自主机的数据;
缓冲器,其用于接收来自所述主机的所述数据;以及
所述控制器依据将被写入的数据单位是否满足预定条件而定,设置所述第一或第二区块以用于记录;以及
在从所述主机接收所述数据单位时将所述数据单位发送到所述正被设置的区块;以及
当基于所述所接收的数据单位确认到所述预定条件时,将所述数据单位记录到所述设置的区块,否则,将所述数据单位记录到另一区块,如果是所述第二区块未设置,那么设置所述第二区块,并将所述所接收的数据单位记录到所述第二区块。
18.根据权利要求17所述的非易失性存储器,其中所述非易失性存储器采用可移除存储器卡的形式。
19.根据权利要求17所述的非易失性存储器,其中:
来自所述主机的所述数据是用于数据单位群组的更新数据;
所述第一区块用于存储所述更新数据;以及
所述第二区块用于在将所述更新数据转移到所述第一区块之前缓冲所述更新数据。
20.根据权利要求17所述的非易失性存储器,其中:
所述数据组织为具有预定次序的数据单位;以及
所述第一和第二区块组织为页,每一页用于将具有预定页偏移的多个数据单位一起编程。
21.根据权利要求20所述的非易失性存储器,其中每一页在擦除之后可一次编程。
22.根据权利要求17所述的非易失性存储器,其中:
所述预定条件是当所述所接收的数据单位中的一者具有页末偏移时;以及
所述控制器控制将所述数据记录到所述第一区块包括将所述页末数据单位和所述页中的任何先前数据单位记录到所述第一区块的页。
23.根据权利要求17所述的非易失性存储器,其中:
所述控制器控制将所述数据记录到所述第二区块包括将存储于所述第二区块中的数据的至少一个索引记录到其页中。
24.根据权利要求23所述的非易失性存储器,其中将存储于所述第二区块中的数据的所述至少一个索引记录到具有页末偏移的所述页的位置中。
25.根据权利要求17所述的非易失性存储器,其中:
所述控制器控制将所述数据记录到所述第二区块包括将存储于所述第一和第二区块中的数据的至少一个索引记录到其页中。
26.根据权利要求25所述的非易失性存储器,其中将存储于所述第一和第二区块中的数据的所述至少一个索引记录到具有页末偏移的所述页的位置中。
27.根据权利要求17所述的非易失性存储器,其中:
所述控制器控制将所述数据记录到所述第二区块包括将指向所述第一区块的下一记录位置的指针记录到其页中。
28.根据权利要求27所述的非易失性存储器,其中将所述指针记录到具有所述页末偏移的页的位置中。
29.根据权利要求17-28中任一权利要求所述的非易失性存储器,其中所述第一和第二非易失性区块由各自存储一个数据位的存储器单元构成。
30.根据权利要求17-28中任一权利要求所述的非易失性存储器,其中所述第一和第二非易失性区块由各自存储一个以上数据位的存储器单元构成。
31.一种非易失性存储器,其包含:
存储器,其被组织为多个区块,每一区块是可一起擦除的多个存储器单元,每一存储器单元用于存储逻辑数据单位;
控制器,其用于控制所述区块的操作;
第一和第二区块,其每一者用于循序地记录来自主机的数据;
缓冲器,其用于接收来自所述主机的所述数据;以及
记录构件,其用于控制当满足预定条件时将所述数据记录到所述第一区块,或当未满足所述预定条件时将所述数据记录到所述第二区块。
32.根据权利要求31所述的非易失性存储器,其中所述第一和第二区块由各自存储一个数据位的存储器单元构成。
33.根据权利要求31所述的非易失性存储器,其中所述第一和第二区块由各自存储一个以上数据位的存储器单元构成。
34.一种将来自主机的数据记录到非易失性存储器的方法,其包含:
提供来自所述非易失性存储器之中的第一和第二区块;
接收来自所述主机的所述数据;
在所述数据被接收到一组用于编程所述第一区块的数据锁存器和一组用于编程所述第二区块的数据锁存器时载入所述数据;
依据所述所接收的数据是否满足预定条件而定,定址所述第一或第二区块;
将所述数据从其数据锁存器组记录到所述定址的区块。
35.根据权利要求34所述的方法,其中所述用于编程所述第一区块的数据锁存器组与用于编程所述第二区块的数据锁存器组相同。
36.根据权利要求34所述的方法,其进一步包含:
将所述数据组织为具有预定次序的数据单位;以及
将所述第一和第二区块组织为页,每一页用于将具有预定页偏移的多个数据单位一起编程;且其中:
所述预定条件是当所述数据单位中的一者具有页末偏移时;以及
所述将所述数据记录到所述第一区块包括将所述页末数据单位和所述页中的任何先前数据单位记录到所述第一区块的页中。
37.根据权利要求36所述的方法,其中所述第一和第二区块中的每一者用于存储可一起擦除的存储器单元的区块。
38.根据权利要求36所述的方法,其中:
来自所述主机的所述数据是用于数据单位群组的更新数据;
所述第一区块用于存储所述更新数据;以及
所述第二区块用于在将所述更新数据转移到所述第一区块之前缓冲所述更新数据。
39.根据权利要求36所述的方法,其进一步包含:
将所述数据组织为具有预定次序的数据单位;以及
将所述第一和第二区块组织为页,每一页用于将具有预定页偏移的多个数据单位一起编程。
40.根据权利要求39所述的方法,其中每一页在擦除之后可一次编程。
41.根据权利要求39所述的方法,其中:
所述将数据记录到所述第二区块包括将存储于所述第二区块中的数据的至少一个索引记录到其页中。
42.根据权利要求41所述的方法,其中将存储于所述第二区块中的数据的所述至少一个索引记录到具有页末偏移的所述页的位置中。
43.根据权利要求39所述的方法,其中:
所述将数据记录到所述第二区块包括将存储于所述第一和第二区块中的数据的至少一个索引记录到其页中。
44.根据权利要求43所述的方法,其中将存储于所述第一和第二区块中的数据的所述至少一个索引记录到具有页末偏移的所述页的位置中。
45.根据权利要求39所述的方法,其中:
所述将数据记录到所述第二区块包括将指向所述第一区块的下一记录位置的指针记录到其页中。
46.根据权利要求45所述的方法,其中将所述指针记录到具有所述页末偏移的页的位置中。
47.根据权利要求34-46中任一权利要求所述的方法,其中所述第一和第二区块由各自存储一个数据位的存储器单元构成。
48.根据权利要求34-46中任一权利要求所述的方法,其中所述第一和第二区块由各自存储一个以上数据位的存储器单元构成。
49.一种非易失性存储器,其包含:
存储器,其被组织为多个区块,每一区块是可一起擦除的多个存储器单元,每一存储器单元用于存储逻辑数据单位;
控制器,其用于控制所述区块的操作;
第一和第二区块,其每一者用于记录来自主机的数据;
缓冲器,其用于接收来自所述主机的所述数据;以及
所述控制器控制在所述数据被接收到一组用于编程所述第一区块的数据锁存器和一组用于编程所述第二区块的数据锁存器时载入所述数据;
依据所述所接收的数据是否满足预定条件而定,定址所述第一或第二区块;以及将所述数据从其数据锁存器组编程到所述定址的区块。
50.根据权利要求49所述的非易失性存储器,其中所述非易失性存储器采用可移除存储器卡的形式。
51.根据权利要求49所述的非易失性存储器,其中:
来自所述主机的所述数据是用于数据单位群组的更新数据;
所述第一区块用于存储所述更新数据;以及
所述第二区块用于在将所述更新数据转移到所述第一区块之前缓冲所述更新数据。
52.根据权利要求49所述的非易失性存储器,其中:
所述数据组织被为具有预定次序的数据单位;以及
所述第一和第二区块被组织为页,每一页用于将具有预定页偏移的多个数据单位一起编程。
53.根据权利要求51所述的非易失性存储器,其中每一页在擦除之后可一次编程。
54.根据权利要求49所述的非易失性存储器,其中:
所述预定条件是当所述所接收的数据单位中的一者具有页末偏移时;以及
所述控制器控制将所述数据记录到所述第一区块包括将所述页末数据单位和所述页中的任何先前数据单位记录到所述第一区块的页中。
55.根据权利要求49所述的非易失性存储器,其中:
所述控制器控制将所述数据记录到所述第二区块包括将存储于所述第二区块中的数据的至少一个索引记录到其页中。
56.根据权利要求54所述的非易失性存储器,其中将存储于所述第二区块中的数据的所述至少一个索引记录到具有页末偏移的所述页的位置中。
57.根据权利要求49所述的非易失性存储器,其中:
所述控制器控制将所述数据记录到所述第二区块包括将存储于所述第一和第二区块中的数据的至少一个索引记录到其页中。
58.根据权利要求56所述的非易失性存储器,其中将存储于所述第一和第二区块中的数据的所述至少一个索引记录到具有页末偏移的所述页的位置中。
59.根据权利要求49所述的非易失性存储器,其中:
所述控制器控制将所述数据记录到所述第二区块包括将指向所述第一区块的下一记录位置的指针记录到其页中。
60.根据权利要求58所述的非易失性存储器,其中将所述指针记录到具有所述页末偏移的页的位置中。
61.根据权利要求49-60中任一权利要求所述的非易失性存储器,其中所述第一和第二区块由各自存储一个数据位的存储器单元构成。
62.根据权利要求49-60中任一权利要求所述的非易失性存储器,其中所述第一和第二区块由各自存储一个以上数据位的存储器单元构成。
63.一种非易失性存储器,其包含:
存储器,其被组织为多个区块,每一区块是可一起擦除的多个存储器单元,每一存储器单元用于存储逻辑数据单位;
第一和第二区块,其每一者用于循序地记录来自主机的数据;
缓冲器,其用于接收来自所述主机的所述数据;以及
载入构件,其用于在所述数据被接收到一组用于编程所述第一区块的数据锁存器和一组用于编程所述第二区块的数据锁存器时载入所述数据;
定址构件,其用于依据所述所接收的数据是否满足预定条件而定,定址所述第一或第二区块;
记录构件,其用于将所述数据从其数据锁存器组记录到所述定址的区块。
64.根据权利要求63所述的非易失性存储器,其中所述第一和第二区块由各自存储一个数据位的存储器单元构成。
65.根据权利要求63所述的非易失性存储器,其中所述第一和第二区块由各自存储一个以上数据位的存储器单元构成。
CN2005800473818A 2004-12-16 2005-12-08 具有多流更新的非易失性存储器和方法 Expired - Fee Related CN101124555B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US11/016,285 US7315916B2 (en) 2004-12-16 2004-12-16 Scratch pad block
US11/016,285 2004-12-16
US11/191,686 2005-07-27
US11/191,686 US7412560B2 (en) 2004-12-16 2005-07-27 Non-volatile memory and method with multi-stream updating
PCT/US2005/044720 WO2006065668A2 (en) 2004-12-16 2005-12-08 Non-volatile memory and method with multi-stream updating

Publications (2)

Publication Number Publication Date
CN101124555A CN101124555A (zh) 2008-02-13
CN101124555B true CN101124555B (zh) 2012-05-09

Family

ID=36190514

Family Applications (4)

Application Number Title Priority Date Filing Date
CN2005800422500A Active CN101095121B (zh) 2004-12-16 2005-12-01 高速暂存区块
CNB200580047187XA Expired - Fee Related CN100547565C (zh) 2004-12-16 2005-12-05 带多流更新跟踪的非易失性存储器和方法
CNA2005800483896A Pending CN101124556A (zh) 2004-12-16 2005-12-07 具有用于高速暂存器和更新区块的改进索引的非易失性存储器和方法
CN2005800473818A Expired - Fee Related CN101124555B (zh) 2004-12-16 2005-12-08 具有多流更新的非易失性存储器和方法

Family Applications Before (3)

Application Number Title Priority Date Filing Date
CN2005800422500A Active CN101095121B (zh) 2004-12-16 2005-12-01 高速暂存区块
CNB200580047187XA Expired - Fee Related CN100547565C (zh) 2004-12-16 2005-12-05 带多流更新跟踪的非易失性存储器和方法
CNA2005800483896A Pending CN101124556A (zh) 2004-12-16 2005-12-07 具有用于高速暂存器和更新区块的改进索引的非易失性存储器和方法

Country Status (7)

Country Link
US (1) US7315916B2 (zh)
EP (1) EP1828906B1 (zh)
JP (1) JP4787266B2 (zh)
KR (1) KR100914263B1 (zh)
CN (4) CN101095121B (zh)
TW (1) TWI393140B (zh)
WO (1) WO2006065566A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170038985A1 (en) * 2013-03-14 2017-02-09 Seagate Technology Llc Nonvolatile memory data recovery after power failure

Families Citing this family (142)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7412560B2 (en) * 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7366826B2 (en) 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
US7386655B2 (en) 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
US7882299B2 (en) * 2004-12-21 2011-02-01 Sandisk Corporation System and method for use of on-chip non-volatile memory write cache
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
JP4418439B2 (ja) * 2006-03-07 2010-02-17 パナソニック株式会社 不揮発性記憶装置およびそのデータ書込み方法
US7809994B2 (en) * 2006-05-17 2010-10-05 Sandisk Corporation Error correction coding for multiple-sector pages in flash memory devices
US20070300130A1 (en) * 2006-05-17 2007-12-27 Sandisk Corporation Method of Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices
US7366017B2 (en) * 2006-08-22 2008-04-29 Micron Technology, Inc. Method for modifying data more than once in a multi-level cell memory location within a memory array
KR100849221B1 (ko) * 2006-10-19 2008-07-31 삼성전자주식회사 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
US8316206B2 (en) * 2007-02-12 2012-11-20 Marvell World Trade Ltd. Pilot placement for non-volatile memory
JP2008152464A (ja) * 2006-12-15 2008-07-03 Toshiba Corp 記憶装置
US7917686B2 (en) 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US8209461B2 (en) 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
US7739444B2 (en) 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
US8166267B2 (en) * 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
US8046522B2 (en) * 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
KR100877609B1 (ko) * 2007-01-29 2009-01-09 삼성전자주식회사 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
KR20090024971A (ko) * 2007-09-05 2009-03-10 삼성전자주식회사 섹터의 집합을 이용한 캐시 운용 방법 및 캐시 장치
JP5087347B2 (ja) * 2007-09-06 2012-12-05 株式会社日立製作所 半導体記憶装置及び半導体記憶装置の制御方法
US7719890B2 (en) 2007-09-12 2010-05-18 Sandisk Corporation Data protection for write abort
WO2009095902A2 (en) 2008-01-31 2009-08-06 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
US8296498B2 (en) * 2007-11-13 2012-10-23 Sandisk Technologies Inc. Method and system for virtual fast access non-volatile RAM
US8453022B2 (en) * 2007-12-05 2013-05-28 Densbits Technologies Ltd. Apparatus and methods for generating row-specific reading thresholds in flash memory
WO2009074978A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US20090164745A1 (en) * 2007-12-21 2009-06-25 Alan Sinclair System and Method for Controlling an Amount of Unprogrammed Capacity in Memory Blocks of a Mass Storage System
CN101364444B (zh) * 2008-02-05 2011-05-11 威盛电子股份有限公司 控制方法及运用该控制方法的存储器及处理系统
EP2592551A3 (en) 2008-03-11 2013-08-28 Agere System Inc. Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding
US8972472B2 (en) 2008-03-25 2015-03-03 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
TWI413984B (zh) * 2008-10-16 2013-11-01 Silicon Motion Inc 快閃記憶體裝置以及資料更新方法
CN101740123B (zh) * 2008-11-10 2012-04-04 扬智科技股份有限公司 存储器的数据保护方法
US8452940B2 (en) * 2008-12-30 2013-05-28 Sandisk Technologies Inc. Optimized memory management for random and sequential data writing
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8458574B2 (en) * 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8832353B2 (en) * 2009-04-07 2014-09-09 Sandisk Technologies Inc. Host stop-transmission handling
US8085588B2 (en) * 2009-04-30 2011-12-27 Spansion Llc Semiconductor device and control method thereof
US8566510B2 (en) * 2009-05-12 2013-10-22 Densbits Technologies Ltd. Systems and method for flash memory management
US8307241B2 (en) * 2009-06-16 2012-11-06 Sandisk Technologies Inc. Data recovery in multi-level cell nonvolatile memory
WO2011021367A1 (ja) * 2009-08-21 2011-02-24 パナソニック株式会社 不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
JP4956593B2 (ja) 2009-09-08 2012-06-20 株式会社東芝 メモリシステム
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
JP5480913B2 (ja) 2009-12-03 2014-04-23 株式会社日立製作所 記憶装置、およびメモリコントローラ
US9037777B2 (en) * 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
TWI399644B (zh) * 2009-12-24 2013-06-21 Univ Nat Taiwan 非揮發記憶體區塊管理方法
JP5330549B2 (ja) * 2010-02-02 2013-10-30 株式会社東芝 ストレージ機能を持つ通信装置
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US8621321B2 (en) 2010-07-01 2013-12-31 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
US8345482B2 (en) * 2010-12-15 2013-01-01 Micron Technology, Inc. Methods for segmented programming and memory devices
TWI479505B (zh) * 2010-12-16 2015-04-01 Phison Electronics Corp 資料管理方法、記憶體控制器與記憶體儲存裝置
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
CN103092771A (zh) * 2011-10-31 2013-05-08 建兴电子科技股份有限公司 固态储存装置及其高速缓存的控制方法
TWI470575B (zh) * 2011-11-24 2015-01-21 Mediatek Inc 用於緩衝裝置之讀取指標暫存的方法、緩衝控制器以及緩衝裝置
CN103138875B (zh) * 2011-11-28 2015-06-10 澜起科技(上海)有限公司 高速广播信道的校准方法
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
DE102012201978A1 (de) * 2012-02-10 2013-08-14 Robert Bosch Gmbh Verfahren zum Auslesen einer Lichtsensorsteuereinrichtung sowie Vorrichtung zum Auslesen einer Lichtsensorsteuereinrichtung
CN103258570B (zh) * 2012-02-15 2016-05-11 旺宏电子股份有限公司 一种记忆装置及产生程序化偏压脉冲的方法和集成电路
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
CN104081357A (zh) * 2012-04-27 2014-10-01 惠普发展公司,有限责任合伙企业 使用多级单元设置本地检查点
JP2013229086A (ja) * 2012-04-27 2013-11-07 Sony Corp メモリ装置、メモリ制御装置、メモリ制御方法
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US9053003B2 (en) * 2012-06-21 2015-06-09 Microsoft Technology Licensing, Llc Memory compaction mechanism for main memory databases
CN102831072B (zh) * 2012-08-10 2016-03-02 深圳市江波龙电子有限公司 闪存设备及其管理方法、数据读写方法及读写装置
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9384839B2 (en) 2013-03-07 2016-07-05 Sandisk Technologies Llc Write sequence providing write abort protection
US9189389B2 (en) * 2013-03-11 2015-11-17 Kabushiki Kaisha Toshiba Memory controller and memory system
US9037902B2 (en) 2013-03-15 2015-05-19 Sandisk Technologies Inc. Flash memory techniques for recovering from write interrupt resulting from voltage fault
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US20150006784A1 (en) 2013-06-27 2015-01-01 Sandisk Technologies Inc. Efficient Post Write Read in Three Dimensional Nonvolatile Memory
US9063671B2 (en) 2013-07-02 2015-06-23 Sandisk Technologies Inc. Write operations with full sequence programming for defect management in nonvolatile memory
US9218242B2 (en) 2013-07-02 2015-12-22 Sandisk Technologies Inc. Write operations for defect management in nonvolatile memory
CN104423888B (zh) * 2013-08-23 2017-10-03 群联电子股份有限公司 数据写入方法、存储器控制电路单元与存储器存储装置
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9043537B1 (en) 2013-11-21 2015-05-26 Sandisk Technologies Inc. Update block programming order
US9058881B1 (en) 2013-12-05 2015-06-16 Sandisk Technologies Inc. Systems and methods for partial page programming of multi level cells
US9244631B2 (en) 2013-12-06 2016-01-26 Sandisk Technologies Inc. Lower page only host burst writes
CN104731710B (zh) * 2013-12-18 2018-06-29 群联电子股份有限公司 存储器管理方法、存储器控制电路单元与存储器储存装置
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US8947817B1 (en) 2014-04-28 2015-02-03 Seagate Technology Llc Storage system with media scratch pad
US9443553B2 (en) 2014-04-28 2016-09-13 Seagate Technology Llc Storage system with multiple media scratch pads
US9633233B2 (en) 2014-05-07 2017-04-25 Sandisk Technologies Llc Method and computing device for encrypting data stored in swap memory
US9665296B2 (en) 2014-05-07 2017-05-30 Sandisk Technologies Llc Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications
US9710198B2 (en) 2014-05-07 2017-07-18 Sandisk Technologies Llc Method and computing device for controlling bandwidth of swap operations
US9928169B2 (en) 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
US8902652B1 (en) 2014-05-13 2014-12-02 Sandisk Technologies Inc. Systems and methods for lower page writes
US8886877B1 (en) 2014-05-15 2014-11-11 Sandisk Technologies Inc. In-situ block folding for nonvolatile memory
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
US9928138B2 (en) * 2015-02-17 2018-03-27 Toshiba Memory Corporation Memory system
JP6412820B2 (ja) * 2015-03-31 2018-10-24 株式会社メガチップス 記憶システム、制御装置、メモリ制御装置、記憶装置、上位装置、制御プログラム及びデータ読み出し方法
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
CN105159601B (zh) * 2015-08-07 2018-12-07 杭州海兴电力科技股份有限公司 一种提高Flash擦写寿命的方法
US9858009B2 (en) 2015-10-26 2018-01-02 Sandisk Technologies Llc Data folding in 3D nonvolatile memory
KR102441284B1 (ko) * 2016-01-12 2022-09-08 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
JP7089505B2 (ja) * 2016-08-26 2022-06-22 サンライズ メモリー コーポレイション 3次元アレイにおける容量結合型不揮発性薄膜トランジスタストリング
CN106528441B (zh) * 2016-10-26 2020-08-04 珠海格力电器股份有限公司 仿真eeprom的数据处理方法、装置及电子设备
JP2018160189A (ja) 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステム
TWI625620B (zh) * 2017-05-12 2018-06-01 威盛電子股份有限公司 非揮發性記憶體裝置及其讀取方法
CN111897498A (zh) * 2018-07-27 2020-11-06 创新先进技术有限公司 区块链数据的多级存储方法和装置
CN109215171A (zh) * 2018-08-20 2019-01-15 深圳市长龙铁路电子工程有限公司 一种机车信号设备数据记录的存储方法
CN110888591B (zh) * 2018-09-07 2023-05-30 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN110888820B (zh) 2018-09-07 2022-01-25 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN110888593B (zh) 2018-09-07 2024-01-26 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
TWI718889B (zh) * 2019-01-10 2021-02-11 慧榮科技股份有限公司 改善快閃記憶體之讀取重試的方法、控制器以及相關儲存裝置
TWI690928B (zh) 2019-01-10 2020-04-11 慧榮科技股份有限公司 改善快閃記憶體之讀取重試的方法、控制器以及相關儲存裝置
CN111400302B (zh) * 2019-11-28 2023-09-19 杭州海康威视系统技术有限公司 连续存储数据的修改方法、装置和系统
TWI727842B (zh) 2020-02-20 2021-05-11 大陸商長江存儲科技有限責任公司 存儲器件及其編程方法
JP2022542990A (ja) 2020-04-23 2022-10-07 長江存儲科技有限責任公司 メモリデバイスおよびそのプログラミング方法
CN114911426B (zh) * 2022-07-15 2022-10-18 北谷电子有限公司 一种数据存储方法、存储器件和高空车

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835927A (en) * 1993-06-30 1998-11-10 Intel Corporation Special test modes for a page buffer shared resource in a memory device
US5933368A (en) * 1996-11-25 1999-08-03 Macronix International Co., Ltd. Flash memory mass storage system
US6189081B1 (en) * 1996-05-24 2001-02-13 Nec Corporation Non-volatile semiconductor storage with memory requirement and availability comparison means and method
US20020083262A1 (en) * 1999-04-05 2002-06-27 Tomoya Fukuzumi Memory device operable with a small-capacity buffer memory and having a flash memory
CN1516834A (zh) * 2002-04-15 2004-07-28 索尼公司 数据存储设备

Family Cites Families (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4139911A (en) * 1978-03-13 1979-02-13 Westinghouse Electric Corp. High speed sense circuit for semiconductor memories
US4218764A (en) * 1978-10-03 1980-08-19 Matsushita Electric Industrial Co., Ltd. Non-volatile memory refresh control circuit
US4253059A (en) * 1979-05-14 1981-02-24 Fairchild Camera & Instrument Corp. EPROM Reliability test circuit
JPS58139399A (ja) * 1982-02-15 1983-08-18 Hitachi Ltd 半導体記憶装置
US4460982A (en) * 1982-05-20 1984-07-17 Intel Corporation Intelligent electrically programmable and electrically erasable ROM
US4612630A (en) * 1984-07-27 1986-09-16 Harris Corporation EEPROM margin testing design
JPS6134793A (ja) * 1984-07-27 1986-02-19 Hitachi Ltd ダイナミツクメモリ装置における診断及びエラ−訂正装置
JPS6148197A (ja) * 1984-08-13 1986-03-08 Fujitsu Ltd チヤ−ジアツプ回路
JPS61172300A (ja) * 1985-01-26 1986-08-02 Toshiba Corp 半導体記憶装置
EP0198935A1 (de) * 1985-04-23 1986-10-29 Deutsche ITT Industries GmbH Elektrisch umprogrammierbarer Halbleiterspeicher mit Redundanz
US4962322A (en) * 1988-12-05 1990-10-09 Texas Instruments Incorporated Nonvolatible capacitor random access memory
JPS62114200A (ja) * 1985-11-13 1987-05-25 Mitsubishi Electric Corp 半導体メモリ装置
US5157629A (en) * 1985-11-22 1992-10-20 Hitachi, Ltd. Selective application of voltages for testing storage cells in semiconductor memory arrangements
US4763305A (en) * 1985-11-27 1988-08-09 Motorola, Inc. Intelligent write in an EEPROM with data and erase check
JPH0715799B2 (ja) * 1987-06-30 1995-02-22 日本電気株式会社 半導体記憶装置
FR2618579B1 (fr) * 1987-07-21 1989-11-10 Thomson Semiconducteurs Circuit integre a memoire comportant un dispositif anti-fraude
US4809231A (en) * 1987-11-12 1989-02-28 Motorola, Inc. Method and apparatus for post-packaging testing of one-time programmable memories
FR2630573B1 (fr) * 1988-04-26 1990-07-13 Sgs Thomson Microelectronics Memoire programmable electriquement avec plusieurs bits d'information par cellule
US5095344A (en) * 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5043940A (en) * 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
JPH07105146B2 (ja) 1988-07-29 1995-11-13 三菱電機株式会社 不揮発性記憶装置
US5070032A (en) 1989-03-15 1991-12-03 Sundisk Corporation Method of making dense flash eeprom semiconductor memory structures
JPH02260298A (ja) * 1989-03-31 1990-10-23 Oki Electric Ind Co Ltd 不揮発性多値メモリ装置
US7190617B1 (en) * 1989-04-13 2007-03-13 Sandisk Corporation Flash EEprom system
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
JPH0664918B2 (ja) * 1989-05-25 1994-08-22 ローム株式会社 自己訂正機能を有する半導体記憶装置
WO1990016069A1 (en) 1989-06-12 1990-12-27 Kabushiki Kaisha Toshiba Semiconductor memory device
FR2650109B1 (fr) * 1989-07-20 1993-04-02 Gemplus Card Int Circuit integre mos a tension de seuil ajustable
US5065364A (en) 1989-09-15 1991-11-12 Intel Corporation Apparatus for providing block erasing in a flash EPROM
US5200959A (en) * 1989-10-17 1993-04-06 Sundisk Corporation Device and method for defect handling in semi-conductor memory
US5270551A (en) 1990-02-14 1993-12-14 Hitachi, Ltd. Method of and apparatus for protecting electronic circuit against radiation
US5132935A (en) * 1990-04-16 1992-07-21 Ashmore Jr Benjamin H Erasure of eeprom memory arrays to prevent over-erased cells
US5122985A (en) * 1990-04-16 1992-06-16 Giovani Santin Circuit and method for erasing eeprom memory arrays to prevent over-erased cells
US5200922A (en) * 1990-10-24 1993-04-06 Rao Kameswara K Redundancy circuit for high speed EPROM and flash memory devices
US5343063A (en) * 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
US5239505A (en) * 1990-12-28 1993-08-24 Intel Corporation Floating gate non-volatile memory with blocks and memory refresh
US5270979A (en) 1991-03-15 1993-12-14 Sundisk Corporation Method for optimum erasing of EEPROM
US5504760A (en) * 1991-03-15 1996-04-02 Sandisk Corporation Mixed data encoding EEPROM system
US5263032A (en) 1991-06-27 1993-11-16 Digital Equipment Corporation Computer system operation with corrected read data function
US5313427A (en) * 1991-09-20 1994-05-17 Texas Instruments Incorporated EEPROM array with narrow margin of voltage thresholds after erase
JPH05109292A (ja) * 1991-10-14 1993-04-30 Toshiba Corp 不揮発性半導体記憶装置
US5313421A (en) * 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
FR2689253B1 (fr) * 1992-03-24 1997-01-24 Souriau & Cie Dispositif de moulage comportant une contre-piece de guidage de broches pour le moulage de viroles de connecteurs de fibres optiques, et virole moulee au moyen d'un tel dispositif.
GB9208493D0 (en) * 1992-04-16 1992-06-03 Thomson Consumer Electronics Dual port video memory
US5347489A (en) 1992-04-21 1994-09-13 Intel Corporation Method and circuitry for preconditioning shorted rows in a nonvolatile semiconductor memory incorporating row redundancy
US5327383A (en) * 1992-04-21 1994-07-05 Intel Corporation Method and circuitry for erasing a nonvolatile semiconductor memory incorporating row redundancy
US5315421A (en) 1992-04-28 1994-05-24 Matsushita Electric Industrial Co., Ltd. Rubbing apparatus including double refraction phase difference measuring means and manufacturing method for liquid crystal display device
US5532962A (en) * 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
US5657332A (en) * 1992-05-20 1997-08-12 Sandisk Corporation Soft errors handling in EEPROM devices
US5550394A (en) 1993-06-18 1996-08-27 Texas Instruments Incorporated Semiconductor memory device and defective memory cell correction circuit
JPH065823A (ja) 1992-06-19 1994-01-14 Toshiba Corp 不揮発性半導体記憶装置及びその使用方法
JP2708333B2 (ja) * 1992-09-02 1998-02-04 株式会社東芝 レベルシフタ回路
JP3088866B2 (ja) * 1992-11-26 2000-09-18 大日本印刷株式会社 Icカード
US5365486A (en) 1992-12-16 1994-11-15 Texas Instruments Incorporated Method and circuitry for refreshing a flash electrically erasable, programmable read only memory
JP2856621B2 (ja) * 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5335198A (en) * 1993-05-06 1994-08-02 Advanced Micro Devices, Inc. Flash EEPROM array with high endurance
US5555204A (en) * 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) * 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5661053A (en) * 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
US5523972A (en) * 1994-06-02 1996-06-04 Intel Corporation Method and apparatus for verifying the programming of multi-level flash EEPROM memory
JP3563452B2 (ja) * 1994-08-10 2004-09-08 株式会社東芝 セル閾値分布検知回路およびセル閾値分布検知方法
FR2728380A1 (fr) * 1994-12-20 1996-06-21 Sgs Thomson Microelectronics Procede d'ecriture de donnees dans une memoire et memoire electriquement programmable correspondante
US5475693A (en) 1994-12-27 1995-12-12 Intel Corporation Error management processes for flash EEPROM memory arrays
JP3274306B2 (ja) * 1995-01-20 2002-04-15 株式会社東芝 半導体集積回路装置
US5513144A (en) * 1995-02-13 1996-04-30 Micron Technology, Inc. On-chip memory redundancy circuitry for programmable non-volatile memories, and methods for programming same
US5699297A (en) 1995-05-30 1997-12-16 Kabushiki Kaisha Toshiba Method of rewriting data in a microprocessor additionally provided with a flash memory
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6125435A (en) * 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
US5696929A (en) 1995-10-03 1997-12-09 Intel Corporation Flash EEPROM main memory in a computer system
US5687114A (en) * 1995-10-06 1997-11-11 Agate Semiconductor, Inc. Integrated circuit for storage and retrieval of multiple digital bits per nonvolatile memory cell
US5703506A (en) 1995-12-26 1997-12-30 Motorola Signal processing method
US5903495A (en) * 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5712815A (en) * 1996-04-22 1998-01-27 Advanced Micro Devices, Inc. Multiple bits per-cell flash EEPROM capable of concurrently programming and verifying memory cells and reference cells
US5715193A (en) * 1996-05-23 1998-02-03 Micron Quantum Devices, Inc. Flash memory system and method for monitoring the disturb effect on memory cell blocks due to high voltage conditions of other memory cell blocks
US5860091A (en) * 1996-06-28 1999-01-12 Symbios, Inc. Method and apparatus for efficient management of non-aligned I/O write request in high bandwidth raid applications
US5675537A (en) * 1996-08-22 1997-10-07 Advanced Micro Devices, Inc. Erase method for page mode multiple bits-per-cell flash EEPROM
US5798968A (en) * 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
US5890192A (en) * 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US5717632A (en) * 1996-11-27 1998-02-10 Advanced Micro Devices, Inc. Apparatus and method for multiple-level storage in non-volatile memories
US5835413A (en) 1996-12-20 1998-11-10 Intel Corporation Method for improved data retention in a nonvolatile writeable memory by sensing and reprogramming cell voltage levels
JP3866818B2 (ja) * 1997-02-14 2007-01-10 三菱電機株式会社 半導体記憶装置
US5930167A (en) * 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US5909449A (en) * 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
US5937425A (en) * 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
JP3177207B2 (ja) * 1998-01-27 2001-06-18 インターナショナル・ビジネス・マシーンズ・コーポレ−ション リフレッシュ間隔制御装置及び方法、並びにコンピュータ
GB9903490D0 (en) * 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6725322B1 (en) * 1999-02-22 2004-04-20 Renesas Technology Corp. Memory card, method for allotting logical address, and method for writing data
JP2000251483A (ja) * 1999-02-24 2000-09-14 Sanyo Electric Co Ltd 1チップマイクロコンピュータとそのデータリフレッシュ方法
WO2000060605A1 (en) * 1999-04-01 2000-10-12 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
JP3793868B2 (ja) * 1999-11-25 2006-07-05 カシオ計算機株式会社 フラッシュメモリ管理装置及び記録媒体
US6426893B1 (en) * 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
WO2001084321A1 (en) * 2000-05-04 2001-11-08 Koninklijke Philips Electronics N.V. Method, system and computer program for data management on storage medium
JP3942807B2 (ja) * 2000-06-06 2007-07-11 株式会社ルネサステクノロジ ブロックアラインメント機能付き半導体記憶装置
US6567307B1 (en) * 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
US6772274B1 (en) * 2000-09-13 2004-08-03 Lexar Media, Inc. Flash memory system and method implementing LBA to PBA correlation within flash memory array
US6345001B1 (en) * 2000-09-14 2002-02-05 Sandisk Corporation Compressed event counting technique and application to a flash memory system
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6522580B2 (en) * 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
JP3979486B2 (ja) * 2001-09-12 2007-09-19 株式会社ルネサステクノロジ 不揮発性記憶装置およびデータ格納方法
US6456528B1 (en) * 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
GB0123412D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Memory system sectors
US6678785B2 (en) * 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US6925007B2 (en) * 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
US6560152B1 (en) * 2001-11-02 2003-05-06 Sandisk Corporation Non-volatile memory with temperature-compensated data read
ATE402999T1 (de) * 2002-01-17 2008-08-15 Univ British Columbia Bispezifische antisense oligonukleotide die igfbp-2 und igfbp-5 inhibieren und deren verwendung
KR100453053B1 (ko) * 2002-06-10 2004-10-15 삼성전자주식회사 플래쉬 메모리용 파일 시스템
US7196931B2 (en) * 2002-09-24 2007-03-27 Sandisk Corporation Non-volatile memory and method with reduced source line bias errors
CN100483552C (zh) * 2002-10-28 2009-04-29 桑迪士克股份有限公司 在非易失性存储系统中执行自动磨损平衡的方法
JP4073799B2 (ja) * 2003-02-07 2008-04-09 株式会社ルネサステクノロジ メモリシステム
JP3928724B2 (ja) * 2003-02-20 2007-06-13 ソニー株式会社 記録媒体の記録制御方法および記録媒体の記録制御装置
US6928511B2 (en) * 2003-03-03 2005-08-09 High Tech Computer, Corp. Method and system for managing virtual memory
EP1489490A3 (en) * 2003-06-19 2005-09-14 Texas Instruments Incorporated Method for converting a cache to a scratch-pad memory
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
JP2005222201A (ja) * 2004-02-04 2005-08-18 Matsushita Electric Ind Co Ltd メモリアクセス装置、及び半導体メモリカード
JP4713867B2 (ja) * 2004-09-22 2011-06-29 株式会社東芝 メモリコントローラ,メモリ装置及びメモリコントローラの制御方法
JP2006139556A (ja) * 2004-11-12 2006-06-01 Toshiba Corp メモリカード及びそのカードコントローラ
US7437653B2 (en) * 2004-12-22 2008-10-14 Sandisk Corporation Erased sector detection mechanisms

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835927A (en) * 1993-06-30 1998-11-10 Intel Corporation Special test modes for a page buffer shared resource in a memory device
US6189081B1 (en) * 1996-05-24 2001-02-13 Nec Corporation Non-volatile semiconductor storage with memory requirement and availability comparison means and method
US5933368A (en) * 1996-11-25 1999-08-03 Macronix International Co., Ltd. Flash memory mass storage system
US20020083262A1 (en) * 1999-04-05 2002-06-27 Tomoya Fukuzumi Memory device operable with a small-capacity buffer memory and having a flash memory
CN1516834A (zh) * 2002-04-15 2004-07-28 索尼公司 数据存储设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170038985A1 (en) * 2013-03-14 2017-02-09 Seagate Technology Llc Nonvolatile memory data recovery after power failure
US10048879B2 (en) * 2013-03-14 2018-08-14 Seagate Technology Llc Nonvolatile memory recovery after power failure during write operations or erase operations

Also Published As

Publication number Publication date
TWI393140B (zh) 2013-04-11
JP2008524705A (ja) 2008-07-10
WO2006065566A9 (en) 2006-09-08
CN101124556A (zh) 2008-02-13
CN101095121A (zh) 2007-12-26
US7315916B2 (en) 2008-01-01
EP1828906A1 (en) 2007-09-05
EP1828906B1 (en) 2014-09-10
CN100547565C (zh) 2009-10-07
JP4787266B2 (ja) 2011-10-05
CN101095121B (zh) 2010-05-05
KR100914263B1 (ko) 2009-08-27
TW200632916A (en) 2006-09-16
CN101124555A (zh) 2008-02-13
KR20070087571A (ko) 2007-08-28
CN101124554A (zh) 2008-02-13
WO2006065566A1 (en) 2006-06-22
US20060161722A1 (en) 2006-07-20

Similar Documents

Publication Publication Date Title
CN101124555B (zh) 具有多流更新的非易失性存储器和方法
KR101202620B1 (ko) 복수-스트림 업데이팅을 갖는 비휘발성 메모리 및 방법
KR101089576B1 (ko) 업데이트 및 스크래치 패드 블록들을 위한 개선된 인덱싱을갖는 비휘발성 메모리 및 방법
JP5069256B2 (ja) 不揮発性メモリおよびマルチストリーム更新追跡を伴う方法
CN101099125B (zh) 群集的自动对准方法和存储器系统
CN1902599B (zh) 将数据更新到非易失性存储器系统和操作该系统的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: SANDISK TECHNOLOGIES, INC.

Free format text: FORMER OWNER: SANDISK CORPORATION

Effective date: 20120905

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

Effective date of registration: 20120905

Address after: American Texas

Patentee after: Sandisk Corp.

Address before: American California

Patentee before: Sandisk Corp.

C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: American Texas

Patentee after: DELPHI INT OPERATIONS LUX SRL

Address before: American Texas

Patentee before: Sandisk Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120509

Termination date: 20181208

CF01 Termination of patent right due to non-payment of annual fee