CN101124554A - 带多流更新跟踪的非易失性存储器和方法 - Google Patents

带多流更新跟踪的非易失性存储器和方法 Download PDF

Info

Publication number
CN101124554A
CN101124554A CNA200580047187XA CN200580047187A CN101124554A CN 101124554 A CN101124554 A CN 101124554A CN A200580047187X A CNA200580047187X A CN A200580047187XA CN 200580047187 A CN200580047187 A CN 200580047187A CN 101124554 A CN101124554 A CN 101124554A
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.)
Granted
Application number
CNA200580047187XA
Other languages
English (en)
Other versions
CN100547565C (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
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of CN101124554A publication Critical patent/CN101124554A/zh
Application granted granted Critical
Publication of CN100547565C publication Critical patent/CN100547565C/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

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号美国专利中描述了此种存储器实施方案的实例。
为了更加有效地管理存储器,可将擦除区块链接在一起以形成虚拟的区块或元区块。也就是说,将每一元区块界定为包含来自每一平面的一个擦除区块。第6,763,424号美国专利中描述了元区块的使用。由主机逻辑区块地址将元区块识别为用于编程和读取数据的目的地。类似地,将元区块的所有擦除区块一起擦除。可以元页为单位编程元区块,其中元页包括来自元区块中的每一擦除区块的一个页。用这种较大的区块和/或元区块进行操作的存储器系统中的控制器执行许多功能,包含从主机接收的逻辑区块地址(LBA)与存储器单元阵列内的物理区块编号(PBN)之间的转换。擦除区块内的个别页通常由区块地址内的偏移来识别。地址转换通常涉及使用逻辑区块编号(LBN)与逻辑页的中间术语。在使用元区块的存储器系统中,元区块可为存储器阵列的有效的最小擦除单位。因此,最小擦除单位(区块)可为擦除区块或者元区块,这取决于存储器架构。术语“区块”视架构而定可指代擦除区块或元区块。类似地,术语“页”可指代存储器系统的最小编程单位。依据存储器系统的架构,其可为单个擦除区块内的页,或者可为延伸越过若干擦除区块的元页。
存储在元区块中的数据经常会被更新,更新的可能性随着元区块的数据容量的增加而增加。一个元区块的经更新的扇区一般被写入另一元区块。未经改变的扇区通常也作为同一编程操作的一部分被从原始元区块拷贝到新元区块以合并数据。或者,未经改变的数据可保持在原始元区块中,直到稍后与更新的数据一起再次合并到单个元区块中为止。将当前数据合并到新区块和擦除仅含有过时数据的区块的操作一般称为“垃圾收集”操作。
经常用将有些额外区块保留在擦除区块集区中的方式来操作较大的区块或元区块系统。当更新小于区块容量的一个或一个以上页的数据时,通常将更新的页写入来自所述集区的擦除区块,并接着将未经改变的页的数据从原始区块拷贝到擦除集区区块。前述第6,763,424号美国专利中描述了这种技术的变化形式。随着时间的逝去,由于主机数据文件正被重写和更新,所以许多区块最终可使得相对较少的页含有有效数据且剩余页含有不再是当前的数据。为了能够有效地使用阵列的数据存储容量,不时地将多个区块中的逻辑上相关的有效数据的数据页从碎片搜集在一起,并一起合并为较少数目的区块。这一过程一般被称为“垃圾收集”。
在一些存储器系统中,还将物理的存储器单元分组成两个或两个以上的区。区可为物理存储器或存储器系统的任何经分割的子集,指定范围的逻辑区块地址被映射到所述子集中。举例来说,可将能够存储64兆字节的数据的存储器系统分割成四个区,每个区存储16兆字节的数据。接着,还将所述范围的逻辑区块地址划分成四个群组,每一群组被分配给四个区中的每一区的物理区块。在典型的实施方案中,逻辑区块地址受到约束,使得每一者的数据永远不会被写入在其中映射逻辑区块地址的单个物理区的外部。在划分成平面(子阵列)(其每一者具有其各自的定址、编程和读取电路)的存储器单元阵列中,每一区优选包含来自多个平面的区块,通常来自每一平面的区块的数目相同。主要使用区来简化地址管理(例如逻辑到物理转换),从而导致较小的转换表、较少的保存这些表所需的RAM存储器和对存储器的当前有效区域定址的较快的存取时间,但由于其限制性质,可能导致达不到最佳的磨损水平。
个别快闪EEPROM单元在代表一个或一个以上数据位的电荷存储元件或单位中存储一定数量的电荷。存储元件的电荷电平控制其存储器单元的阈值电压(通常参考为VT),其用作读取单元的存储状态的基础。阈值电压窗通常被划分为若干范围,每个范围用于存储器单元的两个或两个以上存储状态中的每一状态。这些范围由保护带分离,所述保护带包含可允许确定个别单元的存储状态的标称感测电平。这些存储电平因在邻近的或其它相关存储器单元、页或区块中执行的扰乱电荷的编程、读取或擦除操作而发生转变。因此,在读取期间通常通过控制器来计算误差校正码(ECC),并将其连同被编程和使用的主机数据一起存储,以便在必要时执行一定程度的误差校正。而且,在扰乱性操作使转变的电荷电平完全转变离开其界定范围且因此导致读取错误数据之前,可将转变的电荷电平不时地重新恢复回到其状态范围的中心。第5,532,962号和第5,909,449号美国专利中描述了这个被称作数据刷新或擦洗的过程。
在有些存储器阵列中,页可由可保持多个数据扇区的擦除区块的一部分组成。一旦已写入页,便不可能在不破坏已写入的数据的情况下进行进一步的写入。对于使用此种系统的存储器阵列而言,可由连接到同一字线的一组存储器单元界定页。可能会对此种存储器阵列进行低效的编程,其中以小于页的大小的量接收数据。举例来说,在一次接收一个数据扇区的情况下,仅可将一个扇区编程到页中。不会在没有破坏已保存在此处的数据扇区的风险下将任何额外的数据编程到页中。有时候,可在相互之间具有某种延迟的情况下接收一系列单个扇区。在此情况下,将每一扇区写入存储器阵列的单独页中。因此,扇区是以在其低效使用存储器阵列中的空间的方式存储的。在使用多电平逻辑的情况下,存储器单元对附近单元的稍后编程的影响特别敏感。此外,一般通过用第一数据页编程一组单元且然后用第二数据页编程所述单元来对多电平单元进行编程。对第二数据页的编程在某些情况下可能会破坏第一数据页。因此,需要一种更加有效的方式在存储器阵列接收小于一页的量的数据时在具有多扇区页的存储器阵列中存储数据。还需要一种在对多电平单元群组编程时在后续页的编程期间防止破坏第一数据页的方式。
发明内容
在以区块作为擦除单位的存储器阵列中,可将一个或一个以上区块指定为高速暂存区块,且可用其来改进存储器系统的性能。高速暂存区块可作为缓冲器来操作,使得数据以较低并行程度写入高速暂存区块,并接着以较高平行程度拷贝到存储器阵列内的另一位置。可在高速暂存区块内累积数据,直到其可更有效地被写入到另一位置为止。在具有多扇区页的存储器中,可累积扇区,直到可使用系统的最大并行度写入整个页为止。在多电平单元存储器中,可在高速暂存区块中存储下部页,直到上部页可用为止,使得可一起存储上部和下部页。
特定程序操作的并行程度与可一起编程的数据位的数目成比例。因此,将对大量数据一起编程视为具有高并行度的写入,而将对少量数据一起编程视为低并行度。在使用少于一页的平行度时,存储器阵列中的空间可能会被浪费,且这种被浪费的空间意味着必须更加经常地执行垃圾收集,因此会对存储器系统的效率造成负面影响。有时候,必须在存储器系统中存储少量数据。通过在一个位置(高速暂存区块)中写入这些小写入,并稍后将其以较高并行度一起写入另一位置,可改进存储器系统的效率。
揭示一种在以由多个数据扇区组成的页作为最小编程单位的存储器系统中,存储以少于一页的量接收的数据的方法。使用指定为高速暂存区块的区块来存储接收到的扇区,直到可将整个页写入快闪存储器阵列为止。将第一扇区存储在高速暂存区块的第一页中。可将随后接收到的扇区存储在高速暂存区块的额外页中。当接收到个别接收到的扇区或扇区群组时,将所述个别接收到的扇区或扇区群组保存在高速暂存区块的新页中。可将来自高速暂存区块中的其它页的先前存储的扇区连同新数据一起拷贝到最后的页中。因此,只要高速暂存区块的页中存在少于一整页的新数据,便在高速暂存区块中累积数据扇区。以低于高速暂存区块最大可用的并行度的并行程度将扇区写入高速暂存区块。当扇区存储在高速暂存区块中时可对扇区进行更新。当接收到导致整页数据可用于编程的新数据扇区时,可将新扇区和先前存储在高速暂存区块中的扇区一起编程到存储器阵列的另一区块中的同一页中。这一页中完全填满了数据,且以最大可用的并行度写入。接着,可将存储在高速暂存区块中的数据标记为过时的,且可在便利的时间将其擦除。因此,更有效地使用快闪存储器中的空间,且降低垃圾收集操作的频率。
在具有多电平单元的存储器中,高速暂存区块可存储一个数据页,所述数据页还写入到活动区块中。所存储的页可保留在高速暂存区块中,直到接收到另一数据页以使得可将两个数据页一起写入其在活动区块中的目的地为止。可使用高并行程度,并以与将其单独写入相比较低的破坏数据的风险将所述两个数据页一起写入为上部和下部页。还可在对与下部页相关联的上部页编程期间使用高速暂存区块来保持先前编程的下部页的拷贝,使得如果存在失去电力的话可从高速暂存区块中移除下部页中的数据。
高速暂存区块可允许临时存储将临时被写入另一位置的数据。可在更新区块的数据扇区期间将数据存储在高速暂存区块中。在区块内的页含有来自不同文件的数据扇区的情况下,在更新任一区块时更新页。使用常规方法可能需要一个以上区块来存储来自两个文件的更新的数据,因为可能需要多文件页的两份拷贝。使用高速暂存区块允许存储来自一个文件的页的一部分,直到页的剩余部分(来自另一文件)可用为止。接着,使用最大并行度将充满的更新页编程到其目的地。
高速暂存区块可能含有无关的数据的扇区。主机数据扇区和控制数据扇区均可存储在高速暂存区块中。主机数据扇区和控制数据扇区均可存储在高速暂存区块内的同一页中。可将来自两个不同文件或来自同一文件中逻辑上遥远的部分的扇区存储在高速暂存区块中的同一页中。这可允许以最大并行度对高速暂存区块进行编程,以便在接收数据时保持高速度。在以低速度接收数据时,可用含有控制数据的扇区占用页中的额外空间。这可允许较不频繁地更新控制数据结构,从而降低垃圾收集的频率。
一般来说,存储在高速暂存区块的同一页中的扇区不需要属于不同文件。作为独立的数据对象,其仅需要为(例如)同一页的两个逻辑扇区,但通过不同的写入命令写入。
可通过标记扇区来识别高速暂存区块,使得控制器可容易地识别所述高速暂存区块。可将存储在高速暂存区块中的数据索引保持在本身存储在高速暂存区块中的索引扇区中。当在高速暂存区块中存储新扇区时,通过用新索引扇区代替旧索引扇区来更新索引扇区。类似地,在将高速暂存区块中的扇区拷贝到其它位置时,可将索引扇区更新以指示高速暂存区块中的这些扇区是过时的。
用于高速暂存和更新区块的改进的索引——在高速暂存区块中保持的SPBI/CBI索
根据本发明的另一方面,当除了更新区块之外还使用高速暂存区块时,使用相关联的高速暂存区块索引(SPBI)来保持对高速暂存区块中记录的更新扇区的跟踪。这是作为用于保持对更新区块中记录的逻辑扇区的跟踪的索引(例如,CBI)的补充。只要在高速暂存区块的部分页中存储用户数据,便意味着至少页的最后的槽未被充满。在一个实施例中,可将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的存储系统的替代存储系统,其允许在存储的同时更新页的所有扇区而不会触发垃圾收集。
图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或者从中读取的用户数据的缓冲存储器(RAM)25。电路27与存储器阵列芯片介接,且电路29通过连接部分31与主机介接。在此实例中,通过使用专用于计算代码的电路33计算ECC来确定数据的完整性。当将用户数据从主机转移到快闪存储器阵列以供存储时,电路从数据中计算出ECC,且所述代码存储在存储器中。当稍后从存储器中读取所述用户数据时,其再次通过电路33,所述电路33通过相同的算法计算ECC,并将所述代码与已经计算并与数据一起存储的代码进行比较。如果其相当,则确认数据的完整性。如果其不同,则可依据所利用的特定ECC算法来识别和校正那些错误的位,所识别和校正的错误位的数目可达到算法所支持的数目。
图1A的存储器的连接部分31与主机系统的连接部分31′相配,图1B中给出连接部分的实例。图1A的主机与存储器之间的数据传递是通过接口电路35来进行。典型的主机还包含微处理器37、用于存储固件代码的ROM 39、以及RAM 41。其它电路和子系统43通常包含高容量磁性数据存储磁盘驱动器、用于键盘的接口电路、监视器等,这取决于特定的主机系统。此种主机的一些实例包含台式计算机、膝上型计算机、手持计算机、掌上计算机、个人数字助理(PDA)、MP3及其它音频播放器、数码相机、摄像机、电子游戏机、无线和有线电话装置、答录机、录音机、网络路由器等。
图1A的存储器可构建为可与图1B的主机以可移除连接的形式的含有控制器及其所有存储器阵列电路装置的小型封闭卡。也就是说,相配的连接部分31和31′允许卡可解除连接并移动到另一主机,或者通过将另一卡连接到主机而被替代。或者,可将存储器阵列装置封闭在单独的卡中,所述卡可以电和机械方式与含有控制器和连接部分31的卡连接。作为进一步的替代方案,可将图1A的存储器嵌入在图1B的主机内,其中连接部分31和31′是永久制造的。在此情况下,存储器通常连同其它组件一起包含在主机的封围物中。
图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形成。每一元区块可在逻辑上定址,且存储器控制器分配并保持对形成个别元区块的擦除区块的跟踪。主机系统优选以等于个别元区块的容量的数据为单位与存储器系统介接。举例来说,通过由控制器映射为组成元区块的区块的物理区块编号(PBN)的逻辑区块地址(LBA)来识别图6的此种逻辑数据区块61。元区块的所有擦除区块被一起擦除,且来自每一擦除区块的页优选同时编程和读取。可将元区块视为擦除区块以此方式链接的系统中的擦除单位。在有些具有元区块架构的存储器阵列中,页可能仅与元区块的其它页并行编程。在这些存储器阵列中,元页是元区块的最小编程单位,其由来自元区块的每一平面的页组成。
有许多不同的存储器阵列架构、配置和特定单元结构可用来构建以上关于图2-6描述的存储器。图7中展示NAND类型的存储器阵列的一个擦除区块。串联连接的存储器单元的大量以列定向的串连接在电压Vss的共同源极65与位线BI0-BLN中的一者之间,所述位线BL0-BLN又与含有地址解码器、驱动器、读出放大器等类似物的电路67连接。具体来说,一个此种串含有电荷存储晶体管70、71……72和74,所述电荷存储晶体管在串的相对末端处的选择晶体管77与79之间串联连接。在此实例中,每一串含有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并将其与从页0拷贝到页1的扇区0的扇区X一起存储为页1的扇区1。因此,扇区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中充满了数据。当活动区块1100的页0用扇区X、X+1、X+2和X+3来编程时,可从作为其拷贝来源的擦除区块中擦除扇区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标记为过时的且随后可将其擦除。
图10B展示在第二次垃圾收集操作将来自前一活动区块1000的数据重新定位之后的活动区块1010。将扇区X+4到X+7合并到活动区块1010的单个页(页1)中。随后,可接收到更多的扇区,且可将其存储在活动区块1010中。如果所述扇区是以单个扇区的形式接收的,则可如同之前一般将单个扇区存储在页中。
图10C展示将额外扇区X+8到X+11存储在页2-5中的活动区块1010。可能在此点需要另一垃圾收集操作以合并扇区X+8到X+11。因此,为了有效地将从主机接收的扇区存储作为单个扇区,此方法使用多次垃圾收集操作,其需要将数据从一个擦除区块转移到另一擦除区块,并擦除第一擦除区块。在较大的擦除区块中,垃圾收集操作的数目较大。在使用元区块的存储器系统中,可将擦除区块群组链接在一起,使得其可一起擦除和编程。数据可被编程在含有许多扇区的元页中。因此,由于必需量的垃圾收集的缘故,存储单个扇区变得非常低效。
图11A展示存储数据的替代方法。图11A展示存储器阵列的两个擦除区块。活动区块1110是其中数据可经编程用于长期存储的擦除区块。高速暂存区块1120是其中数据可经编程用于短期存储的擦除区块。当接收到少量扇区时,首先将其存储在高速暂存区块1120中。扇区继续被存储在高速暂存区块1120中,直到接收到足够充满一页数据的扇区为止。接着将这些扇区拷贝到活动区块1110的一页。
接收扇区X,并将其如同之前一般编程为高速暂存区块1120中的页0的扇区0。随后,接收扇区X+1,并将其与拷贝到页1的扇区0的扇区X一起存储为高速暂存区块1120的页1的扇区1。随后,接收扇区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+4、X+5和X+6存储在高速暂存区块1120的页3、4和5中,并在接收到扇区X+7时将以上三个扇区拷贝到活动区块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)1来代替扇区(X+2)0,且与扇区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)1替代来更新扇区(X+3)0。可将充满的数据页(扇区X1、(X+1)1、(X+2)1和(X+3)1)保存在高速暂存区块1250中,使其准备更新,直到发生某一触发事件为止。在此情况下,接收扇区(X+4)0,从而提供触发事件。在此点处,以最大并行度向活动区块1252写入扇区X1、(X+1)1、(X+2)1和(X+3)1。将扇区(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。不在高速暂存区块1460中保存扇区X+4到X+7。如果在向活动区块1462的上部页0编程X+4到X+7期间存在任何问题(例如失去电力),那么活动区块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。新区块1572的第一页(页0)与原始区块1570的页i的内容一起写入。因此,新区块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并行地将文件1的扇区(i*4)和(i*4)+1写入新区块1676的页n-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展示图20的在由两个扇区2340、2341组成的数据群组2经过编程之后的高速暂存区块2100。索引扇区2350是存储与群组1和群组2相关的信息的新索引扇区。因此,索引扇区2230是过时的,因为索引扇区2350含有包含群组1的高速暂存区块2100的数据群组的完整记录。
图22展示图21的在由扇区2460、2461和2462组成的数据群组3经过编程之后的高速暂存区块2100。索引扇区2470是存储与数据群组1、2和3相关的信息的新索引扇区。索引扇区2470含有高速暂存区块2100的数据的完整记录,且因此使得索引扇区2350过时。
图23展示图22的在从高速暂存区块2100中读取数据群组1和数据群组2并将其作为单个页写入存储器阵列的另一区块中之后的高速暂存区块2100。索引扇区2560存储与数据群组3相关的信息。高速暂存区块2100中的数据群组1和数据群组2是过时的且并不需要索引,因为其存储在其它地方。因此,索引扇区2560含有高速暂存区块2100中的所有当前数据的完整记录。
当主机请求来自存储器阵列的数据扇区时,控制器可能首先检查所请求的扇区是否位于高速暂存区块中。如果扇区不在高速暂存区块中,则可以常规方式搜寻扇区。因此,高速暂存并不需要用以保持对存储器阵列中的数据扇区位置的跟踪的常规媒体管理有任何变化。
多流更新和索引
图24说明通过以常规方式在具有单扇区页的更新区块中存储更新来更新逻辑群组中的扇区的实例。将数据封装到逻辑扇区中,并将其存储在元区块(也简称为“区块”)中,其中元区块的所有逻辑扇区可一起擦除。将数据逐页记录到区块中,其中每一页内的所有逻辑扇区可一起编程。所述实例展示单扇区页,其中每一扇区的大小通常为约512字节。在某一例子中,“原始”区块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,则将由MOD[(n+1),4]给出给定扇区LSn的页偏移。
每当主机写入存储器时,其发出写入若干数据单位(通常为逻辑扇区)的写入命令,然后传输逻辑扇区本身。为了防止数据损失,主机与存储器之间的协议使得下次主机写入将在将当前写入数据成功地写入存储器之后才会开始。
如早先所阐释,在具有多扇区页的存储器架构中,优选在页中实施扇区对准,因为这会避免在垃圾收集期间需要重新对准。因此,从每一主机写入接收到的扇区在对准时无必要填充更新区块中的整数页。这会导致编程部分填充的页。部分填充的页可能在主机数据之前或之后具有间隙。也可能用现有的逻辑扇区对这些间隙进行预填补或后填补,以便尽可能地维持循序次序。在下一主机写入是下一逻辑扇区的情况下,一般而言优选不对部分页进行后填补。然而,在具有可一次写入页的存储器架构的情况下,一旦已写入部分页,便不可能对所述部分页的未填充部分进行重写。
在所述实例中,更新流(SPB)中的一个更新流中的有效页的数目可选地限制为一个。这足以说明原理,但应注意,可将一个以上页存储在SPB中,其中需要对更多信息(例如,较旧的写入指针)进行分析以找出最新写入的扇区。
举例来说,在图25中,在主机写入#1中,将更新的扇区LS10′存储在更新区块20的页P0的第三偏移中。视情况而定,出于完整性考虑,可用例如来自原始区块10的LS8和LS9的有效数据来填补前两个槽。然而,当在主机写入#1结束处保存页P0时,这仍然使得第四槽为未填充的。可用LS11的最新版本对部分页进行可选的后填补。由于所述页是一次写入的,所以未填充的第四槽将被关闭而无法进行进一步编程。
在主机写入#2中,命令是写入接收到的更新的扇区LS11′,其最终从最新扇区LS10′开始成循序次序。理想的情况是,应当将此记录在P0中的LS10′后的下一槽中。然而,P0已被关闭而无法进一步写入,且因此将LS11′存储在最新槽处的下一空页P1中,这是其正确的页偏移。用LS8、LS9和LS10′来填补P1的前三个槽,LS8、LS9和LS10′是循序在LS11′前面的逻辑扇区的有效版本。
在主机写入#3中,命令是写入LS6′和LS7′。将其分别写入第三和第四槽处的P2,P2为更新区块中的下一空页。用例如LS4和LS5的有效数据来填补第一和第二槽。
最终,在主机写入#4中,命令是写入LS10″,且将其存储在P3、槽3中,同时分别用LS8和LS9来填补槽1和2,且将槽4保持为空的。
可以看出,试图在每一可一次编程的页内维持扇区对准的同时具有大量填补和死区而低效地使用更新区区块。不合需要的特征是,即便主机循序地写入(在两个单独的写入命令中先写入10然后写入11),更新区块仍然不是循序的且无法变完整,因为其具有一些过时数据。
为了避免上述问题且将更新区块20中因部分填充的页以及过分填补而导致的低效存储最小化,早先描述了使用额外的高速暂存区块30。高速暂存区块(SPB)30充当传入数据的临时缓冲器和筹备区域,使得可筹备整页的数据然后再将其写入更新区块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中。同时,分别用LS8和LS9来可选地填补槽1和2。此外,根据本发明的特征,将SPBI和CBI均封装在扇区内,即索引扇区SPBI/CBI1 50内,且有利地将索引扇区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位置开始,那么优选对部分页进行预填补。
对混乱区块使用页级别的索引且对高速暂存区块使用扇区级别的索引。将对存取所有混乱区块和高速暂存区块必需的索引信息(即,SPBI/CBI)维持在控制器SRAM中以便于快速存取和处理。无论何时写入新的部分页,将其周期性地写出到高速暂存区块。
一般而言,将经部分元页重新定位的数据与传入数据一起编程,以减少编程循环的数目。当高速暂存区块(SPB)变满时将其压缩。SPB压缩是将所有有效数据重新定位到新区块。因为SPB中的每个UB仅有一个具有有效数据的页,所以我们只需要将那些页拷贝到新区块。如果每个更新区块有多个具有有效数据的页(其可能含有不同的或相同的逻辑地址,如果是后者的话则优选将其合并)。
部分页中保存的更新区块索引
根据本发明的又一方面,存储在存储器区块中的数据的索引存储在部分页的未被数据占用的部分中。因此,在以存储器单位组织的存储器中(其中,存储器单位的页可一起编程,且存储器页的区块可一起擦除),则当存储在存储器单位中的数据单位根据预定次序而在页中对准时,且尤其在页在每次擦除后可一次编程的情况下,将存在部分被填充的页。接着,将区块的索引存储在未填充更新数据的部分页中。部分页可能在当前区块中或在另一区块中。
图28说明在区块的部分页中保存用于存储更新数据的存储器区块的索引的优选方案。
步骤90:将非易失性存储器组织成存储器单位的可擦除区块,每一存储器单位用于存储逻辑数据单位,且每一区块也组织成一个或一个以上页,其中每一页中的存储器单位具有预定的页偏移且在擦除后一起可一次编程。
步骤92:将区块提供为记录逻辑数据单位的更新版本的更新区块。
步骤94:从主机接收逻辑数据单位。
步骤96:在更新区块中维持数据的索引。
步骤98:对更新区块进行逐页记录,其中接收到的数据根据其页偏移而在页中对准,且当待记录的页具有未被数据占用的部分时,也将索引记录到未被数据占用的部分。
多流跟踪和同步
图29示意性说明在多流更新中使用的高速暂存区块,其中若干逻辑群组同时经受更新。举例来说,如果有k个逻辑群组经受更新,那么将存在使用k个更新区块20-1……20-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”操作中,将指向区块22中的下一空位置的指针PA 40-A与“A”一起保存在流0中的区块32中。在写入“B”操作中不保存任何指针,因为写入是针对流1中的区块22的。在写入“C”中,将指针PC 40-C与“C”一起保存在流0中的区块32中。在针对区块22的写入“A′”中,不在流1中保存任何指针。
如果在写入“A′”的末尾时存储器在电源中断后被复位,则控制器RAM中的任何索引均将丢失,且必须通过扫描存储器来重建。通过向后扫描,区块22和32中的每一者均将已定个数据位“A”的最后写入的版本。可使用写入指针40来确定两个区块之间的真正最后版本。举例来说,指针PC在记录“A′”之前指向区块22中的位置,因此在“C”之后记录“A′”。此外,由于“C”被记录在区块32中位于“A”之后的位置处,因此可得出“A′”是“A”的较后版本的结论。
在每UB在SPB中存在一个以上有效页的另一实施例中,然后为了检测最近写入的数据,将必须分析一个以上写入指针。
图31B说明当在两个区块上记录写入时保持对记录次序的跟踪的另一实施例。此实施例与图31A所示的实施例相似,区别仅在于写入指针指向区块32中的下一空位置,且保存在区块22中。流0正被记录到第二区块(例如,区块32),而流1正被记录到第一区块(例如,区块22)。每当将流1记录到第一区块上时,便将给出第二区块22中的下一记录位置的地址的第二区块写入指针40′与其一起保存。在此实例中,将指针P′B40′-B与“B”一起记录。类似地,P′A′40′-A′与“A′”一起记录在流1中的第一区块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′不在页边界处,所以将其记录在高速暂存区块30中的部分页PP0中,所述部分页PP0被用LS8和LS9预填补且以当前索引SPBI/CBI1结束。当写入部分页PP0时,在当前索引SPBI/CBI150中包含写入指针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″不在页边界处,所以将其记录在高速暂存区块30中的部分页PP0中,所述部分页PP0被用LS8和LS9预填补且以当前索引SPBI/CBI2结束。当写入部分页PP0时,在当前索引SPBI/CBI150中包含写入指针40,所述索引SPBI/CBI150保存在最后槽中。写入指针40指向更新区块20中的下一空页P1。
在此情况下,在电源复位之后,(例如)发现在更新区块20的指向位置之前记录更新区块中的逻辑扇区LS10′。可得出以下结论:更新区块20中的LS10′的最后版本被驻存在高速暂存区块30的部分页中的另一版本LS10″取代。
图34A说明高速暂存区块索引(SPBI)的优选数据结构。SPBI信息含有用于k个更新区块中的每一更新区块的以下字段。这是每个逻辑群组/UB具有一个有效页的SPB的特殊情况。
逻辑群组号识别正在给定流中经受更新的逻辑扇区。优选情况是,针对空闲的更新区块或不具有有效高速暂存数据的更新区块来存储零值“FFFF”。
页开始扇区是写入高速暂存区块的部分页的第一逻辑扇区。
扇区运行长度是写入高速暂存页的部分页的有效扇区的数目。
有效页号识别写入高速暂存区块中的唯一有效(唯一有效)部分页。其将是高速暂存区块中的最后写入的部分页。或者,可以扇区偏移来实施定址,所述扇区偏移指向更新区块的部分页的第一有效扇区。相对于区块的开头来计算扇区偏移。在优选实施例中,只有一个物理页含有用于给定更新区块的有效数据。针对未写入高速暂存区块的扇区存储FFFF。
更新区块写入指针40是在最后写入高速暂存时相应更新区块的第一未写入扇区位置的扇区地址。任何从此扇区位置写入更新区块的扇区均将取代在高速暂存区块中写入的扇区。
图34B说明用于图33A中所示的主机写入#1的高速暂存区块索引中的实例值。在此实例中,逻辑群组号为“1”,其含有逻辑扇区LS0到LSN-1。其在流1中更新,且伴随有更新区块和高速暂存区块。部分页是PP0,且其以LS8或“8”开始并具有运行长度“3”从而以LS10′结束。有效部分页号为“0”。最终,写入指针指向更新区块中的下一写入位置,其扇区偏移为“0”。
显而易见,如果更新的索引只存储在高速暂存区块中,且每当将数据直接写入更新区块时便不会对高速暂存区块进行写入,则索引将在那些情况下变成无效。
一般而言,一直将整个SPB索引信息以及CBI索引信息维持在控制器SRAM中的数据结构中。基于扇区级别的索引信息来存取SPB中的有效扇区。在优选实施例中,将SPBI/CBI索引存储在高速暂存区块中的非易失性存储器中。确切地说,每当在高速暂存区块(SPB)中写入部分页时,便在部分页的最后扇区中存储最新的SPBI/CBI。
SPB支持多达预定数目(例如,8个)更新区块。当主机写入页的最后扇区时,将SPB区块中的部分页数据合并到相关联的更新区块。在给定时刻,用于逻辑群组的SPB中的一个以上部分页中可能存在数据,但只有最后写入的部分页的数据才是有效的。类似地,SPB中可能存在SPBI/CBI扇区的多个拷贝,但只有最后写入的拷贝才是有效的。
当需要将扇区写入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结束。如果存储器在电源关闭之后重新启动,则可通过最后的SPBI/CBI1索引来正确地定位逻辑扇区LS10′的有效版本。由于未向更新区块20写入任何内容,所以事实如此。
图35B说明主机写入#1之后的主机写入#2,其中命令是写入LS11′。由于LS11′在页边界(槽4)处,所以将其记录在填充的页P0的第四槽中,用LS8、LS9和LS10进行预填补。同步信息采用指向SPB 30中的下一空位置的SPB写入指针40′的形式。与早先实施例不同的是,SPB写入指针40′不包含在SPB 30中的SPBI/CBI索引中。而是,将其存储在当前正被记录到更新区块20中的页中的扇区的标题部分中。如果存储器在电源关闭之后重新启动,则将在更新区块20中正确地定位逻辑扇区LS10′的有效版本,因为在SPB写入指针40′指向的位置之前记录SPB中的LS10的版本。
图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:提供用于在SPB中定位有效(最新版本)数据的SPBI索引。
步骤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中的一个以上部分页中可能存在数据,但在优选实施例中,只有最后写入的部分页的数据才是有效的。类似地,SPB中可能存在SPBI/CBI扇区的多个拷贝,但只有最后写入的拷贝才是有效的。通过同一合并,如果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的相对侧上实施各种外围电路对存储器阵列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 (64)

1.一种记录来自主机的数据的方法,其包括:
(a)提供第一和第二非易失性存储装置,其每一者均用于循序地记录数据单位;
(b)将所述第一或第二存储装置指定为用于优先级信息的存储装置,所述优先级信息允许确定是在所述第二存储装置中的第二数据单位之前还是之后记录了所述第一存储装置中的第一数据单位;
(c)接收所述来自主机的数据;
(d)依据是否满足预定条件,将所述接收到的数据分别记录到所述第一存储装置或所述第二存储装置中的下一可用位置中;
(e)其中每当将所述接收到的数据记录到所述指定的存储装置时,还将所述优先级信息记录在所述指定的存储装置中;以及
(f)重复(c)-(e),直到不再有接收到的数据要记录为止。
2.根据权利要求1所述的方法,其中所述第一和第二存储装置中的每一者均被组织成可一起擦除的存储器单位的区块。
3.根据权利要求1所述的方法,其中所述第一和第二存储装置是快闪EEPROM的一部分。
4.根据权利要求1所述的方法,其中所述优先级信息是写入指针,其提供将在未指定的存储装置中发生下一记录的位置的地址。
5.根据权利要求4所述的方法,其中:
所述来自主机的数据是用于数据单位群组的更新数据;
所述第一存储装置用于存储所述更新数据;且
所述第二存储装置用于在将所述更新数据转移到所述第一存储装置之前缓冲所述更新数据,且是用于所述优先级信息的所述指定存储装置。
6.根据权利要求5所述的方法,其中:
所述第一存储装置是用于存储更新数据的多个存储装置中的一者;且
所述第二存储装置用于在将所述更新数据转移到所述多个第一存储装置中的一者之前缓冲所述更新数据。
7.根据权利要求5所述的方法,其进一步包括:
将所述数据组织成具有预定次序的数据单位;以及
将所述第一和第二非易失性存储装置组织成页,每一页用于对具有预定页偏移的多个数据单位一起进行编程。
8.根据权利要求6所述的方法,其中每一页在擦除之后可一次编程。
9.根据权利要求6所述的方法,其中:
所述预定条件是在所述接收到的数据单位中的一者具有页末偏移时;且
所述将所述数据记录到所述第一存储装置包含:将所述页末数据单位以及所述页中的任何以前的数据单位记录到所述第一存储装置的页中。
10.根据权利要求6所述的方法,其中将所述写入指针记录到所述第二存储装置中未被数据占用的页的位置。
11.根据权利要求6所述的方法,其中将所述写入指针记录到所述第二存储装置中具有页末偏移的页的位置。
12.根据权利要求4所述的方法,其中:
所述来自主机的数据是用于数据单位群组的更新数据;
所述第一存储装置用于存储所述更新数据,并被指定为用于所述优先级信息的存储装置;且
所述第二存储装置用于在将所述更新数据转移到所述第一存储装置之前缓冲所述更新数据。
13.根据权利要求12所述的方法,其中:
所述第一存储装置是用于存储更新数据的多个存储装置中的一者;且
所述第二存储装置用于在将所述更新数据转移到所述多个存储装置中的一者之前缓冲所述更新数据。
14.根据权利要求12所述的方法,其进一步包括:
将所述数据组织成具有预定次序的数据单位;以及
将所述第一和第二非易失性存储装置组织成页,每一页用于对具有预定页偏移的多个数据单位一起进行编程。
15.根据权利要求13所述的方法,其中每一页在擦除之后可一次编程。
16.根据权利要求13所述的方法,其中:
所述预定条件是在所述接收到的数据单位中的一者具有页末偏移时;且
所述将所述数据记录到所述第一存储装置包含将所述页末数据单位以及所述页中的任何以前的数据单位记录到所述第一存储装置的页中。
17.根据权利要求13所述的方法,其中将所述写入指针记录到所述第一存储装置中未被数据占用的页的位置。
18.根据权利要求13所述的方法,其中:
将所述数据单位各自分割成数据部分和额外开销部分;且
将所述写入指针记录在所述第一存储装置中所述页的所述数据单位中的至少一者的额外开销部分中。
19.根据权利要求1-18中任一权利要求所述的方法,其中所述第一和第二非易失性存储装置由各自存储一个数据位的存储器单元构成。
20.根据权利要求1-18中任一权利要求所述的方法,其中所述第一和第二非易失性存储装置由各自存储一个以上数据位的存储器单元构成。
21.一种非易失性存储器,其包括:
存储器,其被组织成多个区块,每一区块是可一起擦除的多个存储器单位,每一存储器单位用于存储一数据单位;
控制器,其用于控制所述区块的操作;
第一和第二区块,其每一者用于循序地记录数据单位;
优先级信息,其用于允许确定是在所述第二区块中的第二数据单位之前还是之后记录了所述第一区块中的第一数据单位;
指定区块,其从所述第一和第二区块中的一者指定,用于存储所述优先级信息;
缓冲器,其用于接收来自主机的数据;
所述控制器依据是否满足预定条件,控制将所述接收到的数据分别记录到所述第一区块或所述第二区块中的下一可用位置中;且
其中每当将所述接收到的数据记录到所述指定的区块时,均将所述优先级信息存储在所述指定的区块中。
22.根据权利要求21所述的非易失性存储器,其中所述非易失性存储器是快闪EEPROM。
23.根据权利要求21所述的非易失性存储器,其中所述非易失性存储器采用可移除存储器卡的形式。
24.根据权利要求21所述的非易失性存储器,其中:
所述优先级信息是写入指针,其提供将在未指定的区块中发生记录的位置的地址。
25.根据权利要求24所述的非易失性存储器,其中:
所述来自所述主机的数据是用于数据单位群组的更新数据;
所述第一区块用于存储所述更新数据;且
所述第二区块用于在将所述更新数据转移到所述第一区块之前缓冲所述更新数据,并指定为用于存储所述优先级信息。
26.根据权利要求25所述的非易失性存储器,其中:
所述第一区块是用于存储更新数据的多个区块中的一者;且
所述第二区块用于在将所述更新数据转移到所述多个所述第一区块中的一者之前缓冲所述更新数据。
27.根据权利要求25所述的非易失性存储器,其中:
所述数据被组织成具有预定次序的数据单位;且
所述第一和第二区块被组织成页,每一页用于对具有预定页偏移的多个数据单位一起进行编程。
28.根据权利要求26所述的非易失性存储器,其中每一页在擦除之后可一次编程。
29.根据权利要求26所述的非易失性存储器,其中:
所述预定条件是在所述接收到的数据单位中的一者具有页末偏移时;且
所述控制器控制将所述数据记录到所述第一区块包含:将所述页末数据单位以及所述页中的任何以前的数据单位记录到所述第一区块的页中。
30.根据权利要求26所述的非易失性存储器,其中所述写入指针被记录到所述第二区块中未被数据占用的页的位置。
31.根据权利要求26所述的非易失性存储器,其中所述写入指针被记录到所述第二区块中具有页末偏移的页的位置。
32.根据权利要求24所述的非易失性存储器,其中:
所述来自所述主机的数据是用于数据单位群组的更新数据;
所述第一区块用于存储所述更新数据,并被指定用于存储所述优先级信息;且
所述第二区块用于在将所述更新数据转移到所述第一区块之前缓冲所述更新数据。
33.根据权利要求32所述的非易失性存储器,其中:
所述第一区块是用于存储更新数据的多个区块中的一者;且
所述第二区块用于在将所述更新数据转移到所述多个所述第一区块中的一者之前缓冲所述更新数据。
34.根据权利要求32所述的非易失性存储器,其中:
所述数据被组织成具有预定次序的数据单位;且
所述第一和第二区块被组织成页,每一页用于对具有预定页偏移的多个数据单位一起进行编程。
35.根据权利要求32所述的非易失性存储器,其中每一页在擦除之后可一次编程。
36.根据权利要求35所述的非易失性存储器,其中:
所述预定条件是在所述接收到的数据单位中的一者具有页末偏移时;且
所述控制器控制将所述数据记录到所述第一区块包含:将所述页末数据单位以及
所述页中的任何以前的数据单位记录到所述第一区块的页中。
37.根据权利要求35所述的非易失性存储器,其中所述写入指针被记录到所述第一区块中未被数据占用的页的位置。
38.根据权利要求35所述的非易失性存储器,其中所述数据单位被各自分割成数据部分和额外开销部分;且
所述写入指针被记录到所述第一区块中所述页的所述数据单位中的至少一者的额外开销部分。
39.一种非易失性存储器,其包括:
存储器,其被组织成多个区块,每一区块是可一起擦除的多个存储器单位,每一存储器单位用于存储逻辑数据单位;
第一和第二区块,其每一者用于循序地记录来自主机的数据;
写入指针,其指向所述第一区块的下一记录位置;
指定区块,其从所述第一和第二区块中的一者指定,用于存储所述写入指针;
缓冲器,其用于接收所述来自主机的数据;
纪录构件,其用于依据是否满足预定条件,将所述接收到的数据分别记录到所述第一区块或所述第二区块中的下一可用位置;且
其中每当将所述接收到的数据记录到所述指定区块时,均将所述写入指针存储在所述指定区块中。
40.根据权利要求21-39中任一权利要求所述的非易失性存储器,其中所述第一和第二非易失性存储装置由各自存储一个数据位的存储器单元构成。
41.根据权利要求21-39中任一权利要求所述的非易失性存储器,其中所述第一和第二非易失性存储装置由各自存储一个以上数据位的存储器单元构成。
42.一种记录来自主机的数据的方法,其包括:
(a)提供第一和第二非易失性存储装置,其每一者均用于循序地记录数据单位;
(b)接收所述来自主机的数据;
(d)依据是否满足预定条件,将所述数据和指示记录时间的时戳分别记录到所述第一存储装置或所述第二存储装置中的下一可用位置;
(e)重复(b)-(d),直到不再有要记录的数据为止。
43.根据权利要求42所述的方法,其中所述第一和第二存储装置中的每一者用于存储可一起擦除的存储器单位的区块。
44.根据权利要求42所述的方法,其中所述第一和第二存储装置是快闪EEPROM的一部分。
45.根据权利要求42所述的方法,其中:
所述来自所述主机的数据是用于数据单位群组的更新数据;
所述第一存储装置用于存储所述更新数据;且
所述第二存储装置用于在将所述更新数据转移到所述第一存储装置之前缓冲所述更新数据。
46.根据权利要求45所述的方法,其中:
所述第一存储装置是用于存储更新数据的多个存储装置中的一者;且
所述第二存储装置用于在将所述更新数据转移到所述多个第一存储装置中的一者之前缓冲所述更新数据。
47.根据权利要求42所述的方法,其进一步包括:
将所述数据组织成具有预定次序的数据单位;以及
将第一和第二非易失性存储装置组织成页,每一页用于对具有预定页偏移的多个数据单位一起进行编程。
48.根据权利要求47所述的方法,其中每一页在擦除之后可一次编程。
49.根据权利要求47所述的方法,其中:
所述预定条件是在所述接收到的数据单位中的一者具有页末偏移时;且
所述将所述数据记录到所述第一存储装置包含:将所述页末数据单位以及任何以前的数据单位记录到所述第一存储装置的页中。
50.根据权利要求47所述的方法,其中将所述数据单位各自分割成数据部分和额外开销部分;且
将所述时戳记录在每一页的所述数据单位中的至少一者的额外开销部分中。
51.根据权利要求42-50中任一权利要求所述的方法,其中所述第一和第二非易失性存储装置由各自存储一个数据位的存储器单元构成。
52.根据权利要求42-50中任一权利要求所述的方法,其中所述第一和第二非易失性存储装置由各自存储一个以上数据位的存储器单元构成。
53.一种记录来自主机的数据的非易失性存储器,其包括:
存储器,其被组织成多个区块,每一区块为可一起擦除的多个存储器单位,每一存储器单位用于存储逻辑数据单位;
控制器,其用于控制所述区块的操作;
第一和第二区块,其每一者用于循序地记录来自主机的数据;其中
所述控制器依据是否满足预定条件,控制将所述数据和指示记录时间的时戳分别记录到所述第一区块或所述第二区块。
54.根据权利要求53所述的非易失性存储器,其中所述非易失性存储器是快闪EEPROM。
55.根据权利要求53所述的非易失性存储器,其中所述非易失性存储器采用可移除存储器卡的形式。
56.根据权利要求53所述的非易失性存储器,其中:
所述来自所述主机的数据是用于数据单位群组的更新数据;
所述第一区块用于存储所述更新数据;且
所述第二区块用于在将所述更新数据转移到所述第一区块之前缓冲所述更新数据。
57.根据权利要求56所述的非易失性存储器,其中:
所述数据被组织成具有预定次序的数据单位;且
所述第一和第二区块被组织成页,每一页用于对具有预定页偏移的多个数据单位一起进行编程。
58.根据权利要求57所述的非易失性存储器,其中每一页在擦除之后可一次编程。
59.根据权利要求57所述的方法,其中:
所述预定条件是在所述接收到的数据单位中的一者具有页末偏移时;且
所述控制器控制将所述数据记录到所述第一区块包含:将所述页末数据单位以及所述页中的任何以前的数据单位记录到所述第一区块的页中。
60.根据权利要求57所述的非易失性存储器,其中所述时戳被记录到未被数据占用的页的位置。
61.根据权利要求57所述的非易失性存储器,其中所述数据单位被各自分割成数据部分和额外开销部分;且
所述时戳被记录在页的各个数据单位的额外开销部分中。
62.一种记录来自主机的数据的非易失性存储器,其包括:
存储器,其被组织成多个区块,每一区块是可一起擦除的多个存储器单位,每一存储器单位用于存储逻辑数据单位;
第一和第二区块,其每一者用于循序地记录来自主机的数据;以及纪录构件,其用于依据是否满足预定条件,将所述数据和指示记录时间的时戳分别记录到第一区块或第二区块。
63.根据权利要求53-62中任一权利要求所述的非易失性存储器,其中所述第一和第二非易失性存储装置由各自存储一个数据位的存储器单元构成。
64.根据权利要求53-62中任一权利要求所述的非易失性存储器,其中所述第一和第二非易失性存储装置由各自存储一个以上数据位的存储器单元构成。
CNB200580047187XA 2004-12-16 2005-12-05 带多流更新跟踪的非易失性存储器和方法 Expired - Fee Related CN100547565C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/016,285 2004-12-16
US11/016,285 US7315916B2 (en) 2004-12-16 2004-12-16 Scratch pad block
US11/192,220 2005-07-27

Publications (2)

Publication Number Publication Date
CN101124554A true CN101124554A (zh) 2008-02-13
CN100547565C CN100547565C (zh) 2009-10-07

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 (1)

Application Number Title Priority Date Filing Date
CN2005800422500A Active CN101095121B (zh) 2004-12-16 2005-12-01 高速暂存区块

Family Applications After (2)

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

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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104412241A (zh) * 2012-06-21 2015-03-11 微软公司 用于主存储器数据库的存储器紧缩机制
CN106528441A (zh) * 2016-10-26 2017-03-22 珠海格力电器股份有限公司 仿真eeprom的数据处理方法、装置及电子设备
TWI690928B (zh) * 2019-01-10 2020-04-11 慧榮科技股份有限公司 改善快閃記憶體之讀取重試的方法、控制器以及相關儲存裝置
CN111400302A (zh) * 2019-11-28 2020-07-10 杭州海康威视系统技术有限公司 连续存储数据的修改方法、装置和系统
TWI718889B (zh) * 2019-01-10 2021-02-11 慧榮科技股份有限公司 改善快閃記憶體之讀取重試的方法、控制器以及相關儲存裝置

Families Citing this family (140)

* 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 パナソニック株式会社 不揮発性記憶装置およびそのデータ書込み方法
US20070300130A1 (en) * 2006-05-17 2007-12-27 Sandisk Corporation Method of Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices
US7809994B2 (en) * 2006-05-17 2010-10-05 Sandisk Corporation 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 記憶装置
US8209461B2 (en) 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
US8166267B2 (en) * 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
US7917686B2 (en) 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
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
US7739444B2 (en) 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
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 株式会社日立製作所 半導体記憶装置及び半導体記憶装置の制御方法
US8533562B2 (en) * 2007-09-12 2013-09-10 Sandisk Technologies Inc. Data protection after possible write abort or erase 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
WO2009072104A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith
US8359516B2 (en) 2007-12-12 2013-01-22 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 威盛电子股份有限公司 控制方法及运用该控制方法的存储器及处理系统
JP2011522301A (ja) 2008-03-11 2011-07-28 アギア システムズ インコーポレーテッド クロス・ページ・セクタ、マルチ・ページ符号化およびパー・ページ符号化を使用して多重レベル・セル・フラッシュ・メモリ・デバイスにデータを記憶するための方法および装置
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
US8458574B2 (en) * 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
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
JP5209793B2 (ja) * 2009-08-21 2013-06-12 パナソニック株式会社 不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム
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
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
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
GB2488480B (en) 2009-12-03 2017-07-19 Hitachi Ltd Storage device and memory controller
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
US8468431B2 (en) 2010-07-01 2013-06-18 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
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
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
WO2013162598A1 (en) 2012-04-27 2013-10-31 Hewlett-Packard Development Company, L.P. Local checkpointing using a multi-level cell
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
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
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
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
US9218242B2 (en) 2013-07-02 2015-12-22 Sandisk Technologies Inc. Write operations for defect management in 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
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
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
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
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
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
US9928169B2 (en) 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
US9710198B2 (en) 2014-05-07 2017-07-18 Sandisk Technologies Llc Method and computing device for controlling bandwidth of swap operations
US9633233B2 (en) 2014-05-07 2017-04-25 Sandisk Technologies Llc Method and computing device for encrypting data stored in swap memory
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
US10204341B2 (en) * 2016-05-24 2019-02-12 Mastercard International Incorporated Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
WO2018039654A1 (en) * 2016-08-26 2018-03-01 Sunrise Memory Corporation Capacitive-coupled non-volatile thin-film transistor strings in three dimensional arrays
JP2018160189A (ja) 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステム
TWI625620B (zh) * 2017-05-12 2018-06-01 威盛電子股份有限公司 非揮發性記憶體裝置及其讀取方法
CN109144414B (zh) * 2018-07-27 2020-07-07 阿里巴巴集团控股有限公司 区块链数据的多级存储方法和装置
CN109215171A (zh) * 2018-08-20 2019-01-15 深圳市长龙铁路电子工程有限公司 一种机车信号设备数据记录的存储方法
CN110888820B (zh) 2018-09-07 2022-01-25 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN110888593B (zh) 2018-09-07 2024-01-26 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN110888591B (zh) * 2018-09-07 2023-05-30 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
TWI727842B (zh) 2020-02-20 2021-05-11 大陸商長江存儲科技有限責任公司 存儲器件及其編程方法
JP7494287B2 (ja) 2020-04-23 2024-06-03 長江存儲科技有限責任公司 メモリデバイスおよびそのプログラミング方法
US11295801B1 (en) * 2020-09-21 2022-04-05 Silicon Motion, Inc. Method for managing flash memory module and associated flash memory controller and memory device
CN114911426B (zh) * 2022-07-15 2022-10-18 北谷电子有限公司 一种数据存储方法、存储器件和高空车

Family Cites Families (128)

* 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
JPS6134793A (ja) * 1984-07-27 1986-02-19 Hitachi Ltd ダイナミツクメモリ装置における診断及びエラ−訂正装置
US4612630A (en) * 1984-07-27 1986-09-16 Harris Corporation EEPROM margin testing design
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
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5043940A (en) * 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5095344A (en) * 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
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 ローム株式会社 自己訂正機能を有する半導体記憶装置
EP0477369B1 (en) 1989-06-12 1997-08-13 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
US5122985A (en) * 1990-04-16 1992-06-16 Giovani Santin Circuit and method for erasing eeprom memory arrays to prevent over-erased cells
US5132935A (en) * 1990-04-16 1992-07-21 Ashmore Jr Benjamin H Erasure of 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
US5504760A (en) * 1991-03-15 1996-04-02 Sandisk Corporation Mixed data encoding EEPROM system
US5270979A (en) 1991-03-15 1993-12-14 Sundisk Corporation Method for optimum erasing of EEPROM
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
US5657332A (en) * 1992-05-20 1997-08-12 Sandisk Corporation Soft errors handling in EEPROM devices
US5532962A (en) * 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
JPH065823A (ja) 1992-06-19 1994-01-14 Toshiba Corp 不揮発性半導体記憶装置及びその使用方法
US5550394A (en) 1993-06-18 1996-08-27 Texas Instruments Incorporated Semiconductor memory device and defective memory cell correction circuit
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
US5623620A (en) 1993-06-30 1997-04-22 Intel Corporation Special test modes for a page buffer shared resource in a 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
JPH09319645A (ja) * 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
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
US5745418A (en) * 1996-11-25 1998-04-28 Macronix International Co., Ltd. Flash memory mass storage system
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
JP4173642B2 (ja) * 1999-02-22 2008-10-29 株式会社ルネサステクノロジ メモリカードのデータ書き込み方法
JP2000251483A (ja) * 1999-02-24 2000-09-14 Sanyo Electric Co Ltd 1チップマイクロコンピュータとそのデータリフレッシュ方法
EP1729304B1 (en) * 1999-04-01 2012-10-17 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
JP4141581B2 (ja) * 1999-04-05 2008-08-27 株式会社ルネサステクノロジ フラッシュメモリを搭載する記憶装置
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
CN100442247C (zh) * 2000-05-04 2008-12-10 Nxp股份有限公司 存储媒体上的数据管理方法、系统
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
US6678785B2 (en) * 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
GB0123412D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Memory system sectors
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
ES2307942T3 (es) * 2002-01-17 2008-12-01 The University Of British Columbia Oligonucleotidos antisentido biespecificos que inhiben igfbp-2 e igfbp-5 y metodos de uso.
JP4206688B2 (ja) * 2002-04-15 2009-01-14 ソニー株式会社 データ処理装置及びデータ処理方法
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
DE60316171T2 (de) * 2002-10-28 2008-05-29 SanDisk Corp., Milpitas Automatischer abnutzungsausgleich in einem nicht-flüchtigen speichersystem
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
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
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

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104412241A (zh) * 2012-06-21 2015-03-11 微软公司 用于主存储器数据库的存储器紧缩机制
CN104412241B (zh) * 2012-06-21 2017-06-27 微软技术许可有限责任公司 用于主存储器数据库的存储器紧缩机制
CN106528441A (zh) * 2016-10-26 2017-03-22 珠海格力电器股份有限公司 仿真eeprom的数据处理方法、装置及电子设备
TWI690928B (zh) * 2019-01-10 2020-04-11 慧榮科技股份有限公司 改善快閃記憶體之讀取重試的方法、控制器以及相關儲存裝置
TWI718889B (zh) * 2019-01-10 2021-02-11 慧榮科技股份有限公司 改善快閃記憶體之讀取重試的方法、控制器以及相關儲存裝置
US11573734B2 (en) 2019-01-10 2023-02-07 Silicon Motion, Inc. Method for improving read-retry of flash memory and related controller and storage device
CN111400302A (zh) * 2019-11-28 2020-07-10 杭州海康威视系统技术有限公司 连续存储数据的修改方法、装置和系统
CN111400302B (zh) * 2019-11-28 2023-09-19 杭州海康威视系统技术有限公司 连续存储数据的修改方法、装置和系统

Also Published As

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

Similar Documents

Publication Publication Date Title
CN100547565C (zh) 带多流更新跟踪的非易失性存储器和方法
EP1834242B1 (en) Non-volatile memory and method with multi-stream update tracking
EP1834241B1 (en) Non-volatile memory and method with improved indexing for scratch pad and update blocks
JP4431175B2 (ja) 不揮発性メモリおよびマルチストリーム更新を伴う方法
US7395404B2 (en) Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
US20120191927A1 (en) Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques

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 TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: SANDISK CORP.

Effective date: 20120329

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

Effective date of registration: 20120329

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

Owner name: SANDISK TECHNOLOGY CO., LTD.

Free format text: FORMER NAME: SANDISK TECHNOLOGIES, INC.

CP01 Change in the name or title of a patent holder

Address after: American Texas

Patentee after: Sandisk Corp.

Address before: American Texas

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091007

Termination date: 20181205