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

文档序号:6553599阅读:140来源:国知局
专利名称:带多流更新跟踪的非易失性存储器和方法
技术领域
本发明一般涉及非易失性快闪存储器系统的操作,且更明确地说,涉及在非易失性 快闪存储器中编程数据的更有效的方法。
技术背景如今有许多正在使用的商业上成功的非易失性存储器产品,特别是以小形态因数卡 形式的存储器产品,其采用形成在一个或一个以上集成电路芯片上的快闪EEPROM(电 可擦除可编程只读存储器)单元阵列。通常但并无必要位于单独集成电路芯片上的存储 器控制器与主机(所述卡可移除地连接到所述主机)介接,并且控制卡内的存储器阵列 的操作。所述控制器通常包含微处理器、 一些非易失性只读存储器(ROM)、易失性随 机存取存储器(RAM)以及一个或一个以上特殊电路,例如在数据编程和读取期间在数 据经过控制器时从数据中计算出误差校正码(ECC)的电路。市售卡中的一些卡为 CompactFlash (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/010卯93号美国专利申请案 公开案中论述了若干采用介电存储元件的特定单元结构和阵列。与大多集成电路应用中一样,快闪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,卯9,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的数据扇区。
图IOC展示在接收到更多数据扇区之后的图10B的区块。
图IIA展示使用两个擦除区块(一活动区块和一高速暂存区块)的用以存储图10A 和10B的数据扇区的替代存储布置。
图IIB展示使用两个元区块(一活动区块和一高速暂存区块)的用以存储图IOA和 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中所示的主机写入弁l的高速暂存区块索引中的实例值。图35A和图35B展示高速暂存区块和更新区块分别在图33A和图33B的连续的主机写入之后相对于高速暂存写入指针的中间状态。图36说明记录到更新区块的扇区的额外开销部分中存储的高速暂存写入指针。图37说明使用时戳来保持对两个更新流之间的记录序列的跟踪。
图38是说明根据本发明的一般实施例,同时将更新数据记录和索引到两个存储器 区块的方法的流程图,其中每一存储器区块具有多扇区页。图39是说明图37的使用高速暂存区块和更新区块的方法的更具体的实施方案的流 程图。图40A示意性说明具有一排读取/写入电路的存储器装置,其提供实施本发明的环境o图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、用于存储固件代码的ROM39、以及RAM41。其它电路和子系 统43通常包含高容量磁性数据存储磁盘驱动器、用于键盘的接口电路、监视器等,这 取决于特定的主机系统。此种主机的一些实例包含台式计算机、膝上型计算机、手持计 算机、掌上计算机、个人数字助理(PDA)、 MP3及其它音频播放器、数码相机、摄像 机、电子游戏机、无线和有线电话装置、答录机、录音机、网络路由器等。图1A的存储器可构建为可与图1B的主机以可移除连接的形式的含有控制器及其所 有存储器阵列电路装置的小型封闭卡。也就是说,相配的连接部分31和31'允许卡可解 除连接并移动到另一主机,或者通过将另一卡连接到主机而被替代。或者,可将存储器 阵列装置封闭在单独的卡中,所述卡可以电和机械方式与含有控制器和连接部分31的 卡连接。作为进一步的替代方案,可将图1A的存储器嵌入在图1B的主机内,其中连接 部分31和31'是永久制造的。在此情况下,存储器通常连同其它组件一起包含在主机的 封围物中。图2说明存储器阵列的一部分,其中将存储器单元分组成擦除区块,每一擦除区块 中的单元可通常同时一起被擦除,作为单一存储操作的一部分。擦除区块是此种类型存 储器中的最小擦除单位。图2的个别存储器单元擦除区块的大小可发生变化,但一种商业上实践的形式在个 别擦除区块中包含单个数据扇区。图3中说明此种数据扇区的内容。用户数据51通常 为512个字节。除了用户数据51之外还有额外开销数据,其包含从用户数据中计算出 的ECC 53、与扇区数据和/或其中编程扇区的擦除区块相关的参数55以及从参数55计 算出的ECC57,以及任何其它可包含的额外开销数据。参数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。这阻止 对页O进行后续编程。因此,页0的扇区1、 2和3未被编程且保持为空(擦除的)。在 页O被编程之后,接收扇区X+1。将扇区X+1存储为页1的扇区O。页1的扇区1、 2 和3保持为空。在扇区X+1被编程之后,接收扇区X+2。将扇区X+2存储为页2的 扇区O。页2的扇区1、 2和3保持为空。在扇区X+2被编程之后,接收扇区X+3。 将扇区X+3存储为页3的扇区0。页3的扇区1、 2和3保持为空。图9展示在擦除区块(指定的活动区块900)中存储扇区的替代方式。此处,代替 一页仅存储一个扇区,而是将先前存储的扇区拷贝到其与更近时候接收到的扇区一起被 存储的同一擦除区块中的新的页中。将扇区X与之前一样存储为页O的扇区O。接着, 接收X+1并将其与从页O拷贝到页1的扇区0的扇区X—起存储为页1的扇区1。因 此,扇区X和扇区X+l均存储在页1中。随后,接收扇区X+2,并将其存储为页2 的扇区2。将扇区X存储为页2的扇区0,且将扇区X+l存储为页2的扇区1。因此, 将扇区X、 X+l和X+2—起存储在页2中。随后,接收扇区X+3,并将其存储为页3 的扇区3。将扇区X存储为扇区O,将扇区X+l存储为扇区1,并将扇区X+2存储为 页3的扇区2。因此,将四个数据扇区存储在页3中,使得页3中充满了数据。在图8或图9中展示的对扇区的存储之后,可合并数据。可将图8或图9的扇区X、 X+l、 X + 2或X+3拷贝到新擦除区块的单个页。这可在便于进行垃圾收集时作为垃圾 收集的一部分来进行。图10A展示存储在指定的活动区块1000的页0中的扇区X、 X + 1、 X+2禾QX+3中。擦除区块1000的页0中充满了数据。当活动区块1100的页0 用扇区X、 X+l、 X + 2和X + 3来编程时,可从作为其拷贝来源的擦除区块中擦除扇区 X、 X+l、 X+2和X+3。当在垃圾收集期间合并活动区块800、 900的内容时,可擦除 活动区块800、 900并使其可用于存储新数据。在对页O进行编程之后,接收扇区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的单个页(页l)中。随 后,可接收到更多的扇区,且可将其存储在活动区块1010中。如果所述扇区是以单个 扇区的形式接收的,则可如同之前一般将单个扇区存储在页中。图10C展示将额外扇区X+8到X+11存储在页2-5中的活动区块1010。可能在此 点需要另一垃圾收集操作以合并扇区X+8到X+U。因此,为了有效地将从主机接收 的扇区存储作为单个扇区,此方法使用多次垃圾收集操作,其需要将数据从一个擦除区 块转移到另一擦除区块,并擦除第一擦除区块。在较大的擦除区块中,垃圾收集操作的 数目较大。在使用元区块的存储器系统中,可将擦除区块群组链接在一起,使得其可一 起擦除和编程。数据可被编程在含有许多扇区的元页中。因此,由于必需量的垃圾收集 的缘故,存储单个扇区变得非常低效。图IIA展示存储数据的替代方法。图IIA展示存储器阵列的两个擦除区块。活动区 块1110是其中数据可经编程用于长期存储的擦除区块。高速暂存区块1120是其中数据 可经编程用于短期存储的擦除区块。当接收到少量扇区时,首先将其存储在高速暂存区 块1120中。扇区继续被存储在高速暂存区块1120中,直到接收到足够充满一页数据的 扇区为止。接着将这些扇区拷贝到活动区块1110的一页。接收扇区X,并将其如同之前一般编程为高速暂存区块1120中的页0的扇区0。随后,接收扇区X+1,并将其与拷贝到页1的扇区0的扇区X—起存储为高速暂存区块1120的页1的扇区1。随后,接收扇区X+2,并将其存储为高速暂存区块1120的页2的扇区2,其中扇区X和X+l分别存储为页2的扇区0和扇区1。在将扇区X+2存储在高速暂存区块1120之后,接收扇区X+3。在此点处,将扇区X、 X+l、 X+2和X+ 3写入到活动区块1110的页0。这四个扇区形成一整个数据页。因此,扇区X、 X+l、X+2禾H 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没有可供存储数据用的页,且可指定为准备擦除(过时)。可将新的擦除区块指定为用于将接收的下一扇区或下一扇区群组的高速暂存区块。虽然此实例展示正接收单个扇区,但此方法也可用于扇区群组,其中所述扇区群组具有的扇区少于一页中的扇区的数目。此外,虽然以上实例展示以最大并行度将数据从高速暂存区块写入活动区块,
但可以小于最大并行度的并行度来进行此写入且仍然提供效率益处。因此,以一种并行 程度将扇区写入高速暂存区块,且以较高的并行程度将其写入另一区块,以使得数据可 更密集地填塞且需要较低频率的垃圾收集。也可在使用元区块的存储器阵列中使用高速暂存区块。举例来说,图IIB展示两个 元区块活动区块1130和高速暂存区块1140。活动区块1130和高速暂存区块1140均 具有四个平面,表示为平面0-3。每一平面的宽度为一个扇区,因而区块1130或1140 的元页中存储四个扇区。这两个区块均具有6个元页,表示为元页0-5。用于有效地存 储数据的技术与以上关于擦除区块所描述的相同。在高速暂存区块1140中累积扇区, 直到有整个数据元页可用为止,此时将整个元页编程到活动区块1130。举例来说,当接 收到扇区X+3时,将整个元页(扇区X、 X+l、 X+2和X+3)编程到活动区块1130 的元页0。元页可具有较大数目的扇区,因为元区块可具有许多平面且平面的宽度可为 若干页。上述技术对于此种较大元页特别有价值,因为不这样的话存储器阵列中的大量 空间将被浪费。如关于图IIA和IIB所示,本发明的关于使用擦除区块架构的实例所描 述的方面也可应用于元区块架构且反之亦然。依据存储器阵列的配置,术语"区块"可 指示擦除区块或元区块。在任一情况下,区块是在该配置中使用的擦除单位。类似地, 术语"页"可指代单个擦除区块内的页或元区块的元页。在任一情况下,页均是所述配 置的编程单位。在接收到多于一页中的扇区数目的扇区群组的情况下,可将扇区直接编程到存储器 阵列的活动区块,而无需首先将其存储在高速暂存区块中。因此,将整页数据以较高的 并行程度直接编程到活动区块,同时将部分数据页以较低的并行程度编程到高速暂存区 块,直到其可作为整页程序的一部分写入活动区块。控制器可确定特定扇区或扇区群组 的目的地。在将扇区群组写入活动区块既包含部分页写入又包含整页写入的情况下,可 将整个页写入活动区块,且可将部分页写入高速暂存区块。图12A展示其中来自主机的扇区在存储于高速暂存区块中时经受更新的另一实例。接收到第一扇区XO,并将其存储在高速暂存区块1250的页0中。此实例中的页存储四个数据扇区。接着接收XO的替代,其展示为X1。此实例中的扇区根据其逻辑地址进行编号,并用下标指示所述扇区是否为更新,且如果是的话,则指示是哪个版本。因此,扇区XI是具有逻辑地址X的扇区且为此扇区的第一更新版本。其是与X0具有相同逻辑地址但可能含有反映某一更新信息的不同数据的数据扇区。将扇区XI写入高速暂存区块1250的页1。控制器保持对当前扇区和过时扇区的跟踪。在高速暂存区块1250中,扇区的具有特定逻辑地址的最近写入拷贝是当前版本。任何其它版本均是过时的。因此, 当对X1进行编程时,X0变成过时。在接收到扇区X1之后,接收扇区(X+l) 0。这 是逻辑上接续扇区XI之后的扇区。扇区XI和(X+l) O均写入页2。随后,由(X+l) l来代替扇区(X+l) 0。这是代替扇区(X+l) O的扇区(X+l) o的更新版本。将扇 区(X+l) 1与扇区X1—起写入页3。随后,接收(X+2) 0,且将其写入页4。随后 由(X+2) l来代替扇区(X+2) 0,且与扇区X1和扇区(X+l) l—起写入页5。随 后,接收扇区(X+3) 0。因此,数据页(扇区X1、 (X+l) 1、 (X + 2) l禾卩(X + 3) 0)可用。将X1、 (X+l) 1、 (X+2) l和(X+3) 0写入被指定为活动区块1252的区 块。将扇区X1、 (X+l) 1、 (X+2) l和(X+3) 0以整页写入的并行度写入活动区块 1252。这在此种情况下是最大可能的并行度。因此,即使以较低的并行程度将扇区X1、(X+l) 1、 (X+2) 1和(X+3) 0写入高速暂存区块1250,随后仍以较高的并行程度 将其写入活动区块1252。这意味着扇区X1、 (X+l) 1、 (X + 2) l和(X + 3)0更有效 地存储在活动区块中。更有效的存储可导致必需的垃圾收集较不频繁,因此改进性能。在图12B中提供替代实例。此实例与图12A中展示的相似,但此处扇区(X + 3) o 在拷贝到活动区块1252之前存储在高速暂存区块1250中。这允许在将扇区(X + 3) 0 写入活动区块1252之前对其进行更新。图中展示通过由扇区(X+3) i替代来更新扇区(X+3) o。可将充满的数据页(扇区Xt、 (X+l) h (X+2) i和(X+3),)保存在 高速暂存区块1250中,使其准备更新,直到发生某一触发事件为止。在此情况下,接 收扇区(X+4) o,从而提供触发事件。在此点处,以最大并行度向活动区块1252写入 扇区X卜(X+l)卜(X+2) !和(X+3)"将扇区(X+4) o写入高速暂存区块1250 中的下一可用页(页8)。图12C展示使用高速暂存区块1250更新数据的另一实例。将数据扇区Xo到(X+ 15) o存储在原始区块1254中。主机发送扇区(X+6) n其为与扇区(X+6)o具有相 同逻辑地址的更新的扇区。因此,扇区(X+6),将代替(X + 6) o。为了代替扇区(X + 6) G,将原始区块1254的页1 (含有扇区((X+4) o)到(X+7) Q)与扇区(X+6) j组合,并将所述组合写入高速暂存区块1250的页0。组合这些扇区可能发生在随机存 取存储器(例如控制器RAM25)或可在连接到存储器阵列的存储器寄存器中进行。更 新的页数据可保持在高速暂存区块1250中,而无需将其写入到活动区块并持续一段时 间。在从主机接收后续的更新的扇区(X+5) !的情况下,可通过将扇区(X+5) i连 同拷贝的扇区(X+4) o、 (X+6) !和(X+7) o—起写入高速暂存区块1250的另一页(在此情况下为页1)来在高速暂存区块1250中更新数据。可以此方式执行对高速暂存区块1250中的数据页的多次更新。通过代替更新的数据扇区并将未改变的数据扇区拷
贝在高速暂存区块1250的新的页中来执行更新。拷贝的扇区在同一平面内拷贝,以便 可有效地执行拷贝。随后,可将更新的数据页拷贝到存储器阵列中的活动区块1252。可 以此方式执行非循序的更新,而无需混乱的更新区块。举例来说,在以上实例中以非循 序的方式接收更新的扇区(X + 6) !和(X+5)。但活动区块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的下部页O在活动区块1462的上部页O的编程期间损坏。通常,对上部和下部页一起编程所必需的时间与仅单独对上部页编程所必需的时间相同,因而此系统不带有时间损失。在用扇区X到X+7对活动区块1462的下部页O和上部页O编程之后,接收扇区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的下部页O和高速暂存 区块1460的下部页0。随后,接收扇区X + 4到X + 7,并将其编程到活动区块1462的 上部页O。不在高速暂存区块1460中保存扇区X+4到X+7。如果在向活动区块1462 的上部页O编程X+4到X+7期间存在任何问题(例如失去电力),那么活动区块1462 的下部页0中的数据可能会受到损坏。也就是说,正被编程的单元的阛值电压可经修改, 使其不再处于代表下部页的数据的状态,但尚未被完全编程而成为代表上部页的数据的 状态。举例来说,正从图13中的状态A编程为状态D的单元在编程停止时可能处于状 态B或C。如果数据以此方式受到损坏,那么正被写入的上部数据页可从其拷贝来源的 位置进行恢复。然而,在许多情况下,不存在下部页的其它拷贝。然而,在高速暂存区 块1460中保留下部页的拷贝,直到完成对上部页的编程为止。因此,存在下部页的未 受损坏的拷贝,且可使用所述拷贝来恢复下部页的数据。多个文件的实例 、可将来自一个以上主机数据文件的数据存储在单个区块中。可能在页内发生文件之 间的中断,使得页的一部分含有来自一个文件的数据,且页的一部分含有来自另一文件 的数据。图15展示原始区块1570的页0到页i-l含有来自第一文件(文件l)的数据且 页i+l到页n-l含有来自第二文件(文件2)的数据的实例。页i含有来自文件l的扇 区(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-l。随后,更新文件1。扇区O到扇区(i*4) -l存储在页i到页n-l中。然而,扇区(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。使用最大并行度将所有 这些扇区以整页写入而写入。随后,更新文件l。用最大并行度将扇区O到(i*4) -l编 程到页n-i+l到n-2中。接着,与拷贝扇区(i*4) +2和(i*4) +3并行地将文件1的扇 区(i*4)和(i*4) +1写入新区块1676的页n-l。因此,原先保存在原始区块1570中的 所有扇区的更新拷贝现在保存在新区块1676中,且在新区块1676中不保存任何过时数 据。 一般而言无需对区块(例如新区块1676)进行垃圾收集。用最大的并行度编程新区 块1676的每一页,以在区块中实现最大的数据密度。高速暂存区块1674中的扇区(P4) +2和(i*4) +3可在此点处标记为过时的。然而,高速暂存区块1674无需垃圾收集操 作即可用于进一步的操作,因为高速暂存区块在常规上既含有当前数据又含有过时数 据。存储非循序数据扇区的实例在先前的一些实例中,用低于写入整页的并行程度的并行程度将数据扇区写入高速 暂存区块。在此种实例中,高速暂存区块的正被写入的页中的剩余空间可能会保持为空 的,因为稍后不可能在不扰乱已经存储的数据的情况下对其编程。在有些情况下,可使 用这个原本为空的空间和原本未被使用的编程带宽来将无关数据存储在同一页中。举例 来说,在存储器系统接收少于一页的单个扇区或扇区群组中的主机数据的情况下,这些 主机数据扇区可能会存储在高速暂存区块中,处于还保存无关数据(例如无关的主机数 据或控制数据扇区)的页中。类似地,来自文件开头的正被存储在高速暂存区块中以供 稍后作为整页的一部分而存储的扇区可能有额外的扇区存储在同一高速暂存区块页中, 所述额外扇区在逻辑上是不相关的。图17展示扇区X、 X+l和X+2与先前实例中一样存储在高速暂存区块1780中的实例。然而,此处保存扇区X、 X+l和X+2的高速暂存区块的页中的剩余空间用来存储其它数据。扇区Y、 Y+l和Y+2与扇区X—起存储在页0中。扇区Y、 Y+1禾口Y 能在逻辑上与扇区X、 X+l和X + 2无关。其可能来自另一主机数据文件或来自 同一文件内的另一扇区群集。扇区Y、 Y+l和Y + 2可能与扇区X、 X+l和X + 2是非 循序关系,且可能在逻辑地址空间中分离。类似地,扇区Z和Z+1与扇区X和X+1 一起存储在页1中。扇区Z和Z+l可能在逻辑上与扇区X、 X+l和X+2以及扇区Y、 Y+l和Y+2均无关。随后,当接收到扇区X+3时,将扇区X、 X+l、 X+2和X+3 随后写入另一区块的页。当接收到扇区Y + 3时,将扇区Y、 Y+l、 Y+2和Y+3写入 另一区块的页。因此,可将无关的数据存储在高速暂存区块的同一页中以更加有效地使 用可用资源。图18展示存储在高速暂存区块1890中的无关数据的另一实例。此处,扇区X、 X + 1和X + 2如同之前一般存储和更新。然而,此处扇区Y也是并行存储和更新的。更 新的扇区由指示存储哪个版本的下标表示。举例来说,扇区Xo是扇区X的原始版本, 而X,是扇区X的第一更新版本。扇区Y可能是频繁更新的主机数据扇区或控制数据扇 区。在有些系统中,在存储主机数据时对例如FAT信息的控制数据进行更新。在接收到 少量主机数据的情况下,更新高速暂存区块1890中的控制数据可能是有利的。在仅更 新单个控制数据扇区的情况下,这可能会避免更新控制结构。在稍后某一时间,可使用 来自高速暂存区块的控制数据来更新控制数据结构。高速暂存区块管理高速暂存区块可为存储器阵列中的指定区块。可将固定的物理位置选作高速暂存区 块。然而,这可能会导致存储器阵列不均匀地磨损。或者,指定区块可不时地变化,从 而当高速暂存区块变成充满了过时数据时,将另一擦除区块选作高速暂存区块。在此情 况下,存储器控制器所使用的数据结构可识别高速暂存区块的位置或者可对指定的高速 暂存区块进行标记,从而如果控制器扫描到存储器阵列的擦除区块,其可确定哪个擦除 区块是高速暂存区块。可使用扇区来标记高速暂存区块,以将其识别为高速暂存区块。 举例来说,图19展示将扇区2110标记为高速暂存区块2100的第一扇区。当为卡加电 时,可扫描存储器阵列(或存储器阵列的一部分)的擦除区块,以确定高速暂存区块的 位置。在图19的实例中,读取每一擦除区块的第一扇区以确定其是否为指示高速暂存 区块的标记扇区。可将数据作为数据群组写入高速暂存区块。数据群组是从主机接收的逻辑上循序的扇区群组。当在高速暂存区块中存储数据群组时也写入索引扇区,其提供与存储的数据群组相关的信息。数据群组的扇区的位置可存储在索引扇区中。可使用例如图19的高速暂存区块2100的高速暂存区块来存储多个数据群组。图20展示存储一个数据群组的高速暂存2100。数据群组l由两个扇区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中。据说逻辑群组的更新将形成流(例如流l), 其中更新数据从主机流到更新区块。 一般而言,如果有多个逻辑扇区版本分布在原始区 块和更新区块之间,那么只有最近写入的版本将是有效版本,其使得所有先前版本成为 过时。举例来说,图24展示记录在更新区块的页4中的LS10",其为最近写入的版本, 且因此是用于逻辑扇区号IO的数据的当前有效扇区。先前版本(原始区块IO中的LSIO 和更新区块20中的LS10')是过时的。最终,更新区块将关闭且更新区块与原始区块之间的有效扇区(逻辑扇区的最新版 本)将以预定次序合并以形成新的原始区块。过时的原始区块和更新区块将被循环利用。图25说明图24中所示的应用于其中页是多扇区的且可能是一次写入的存储器的相 同写入序列。所述实例页结构与图24所示的页结构的不同之处在于,现在每一页含有 四个扇区而不是一个扇区,且在特定实例中在擦除之后仅可一次写入。为了与现有术语 体系保持一致,将存储器装置利用的最小编程单位称为"物理页",而将系统利用的最 小编程单位称为"元页",元页可能是由多个物理页组成的。为了方便起见,除非另有 规定,否则"元页"与"页"将可互换使用。如同之前一般,每一逻辑扇区起初按照上升逻辑编号次序循序存储在原始区块10 中。如果区块具有四扇区页结构,那么区块将被进一步划分成多页,且每一逻辑扇区优 选在每一页中具有限定的页偏移。举例来说,页P0中存储有逻辑扇区LS0-LS3。因此, 将LSO存储在页的四个槽中的第一槽中,且将LS1存储在第二槽中,等等。在四扇区页 的实例中,如果区块的第一逻辑扇区的编号为LS0,则将由MOD[(n+l),4]给出给定扇 区LSn的页偏移。每当主机写入存储器时,其发出写入若干数据单位(通常为逻辑扇区)的写入命令, 然后传输逻辑扇区本身。为了防止数据损失,主机与存储器之间的协议使得下次主机写 入将在将当前写入数据成功地写入存储器之后才会开始。如早先所阐释,在具有多扇区页的存储器架构中,优选在页中实施扇区对准,因为这会避免在垃圾收集期间需要重新对准。因此,从每一主机写入接收到的扇区在对准时无必要填充更新区块中的整数页。这会导致编程部分填充的页。部分填充的页可能在主
机数据之前或之后具有间隙。也可能用现有的逻辑扇区对这些间隙进行预填补或后填 补,以便尽可能地维持循序次序。在下一主机写入是下一逻辑扇区的情况下, 一般而言 优选不对部分页进行后填补。然而,在具有可一次写入页的存储器架构的情况下, 一旦 已写入部分页,便不可能对所述部分页的未填充部分进行重写。在所述实例中,更新流(SPB)中的一个更新流中的有效页的数目可选地限制为一 个。这足以说明原理,但应注意,可将一个以上页存储在SPB中,其中需要对更多信息 (例如,较旧的写入指针)进行分析以找出最新写入的扇区。举例来说,在图25中,在主机写入弁l中,将更新的扇区LS10'存储在更新区块20 的页PO的第三偏移中。视情况而定,出于完整性考虑,可用例如来自原始区块10的 LS8和LS9的有效数据来填补前两个槽。然而,当在主机写入#1结束处保存页PO时, 这仍然使得第四槽为未填充的。可用LS11的最新版本对部分页进行可选的后填补。由 于所述页是一次写入的,所以未填充的第四槽将被关闭而无法进行进一步编程。在主机写入弁2中,命令是写入接收到的更新的扇区LS11',其最终从最新扇区LS10' 开始成循序次序。理想的情况是,应当将此记录在P0中的LS10'后的下一槽中。然而, PO已被关闭而无法进一步写入,且因此将LS11'存储在最新槽处的下一空页Pl中,这 是其正确的页偏移。用LS8、 LS9和LS10'来填补Pl的前三个槽,LS8、 LS9和LS10' 是循序在LS11'前面的逻辑扇区的有效版本。在主机写入弁3中,命令是写入LS6'和LS7'。将其分别写入第三和第四槽处的P2, P2为更新区块中的下一空页。用例如LS4和LS5的有效数据来填补第一和第二槽。最终,在主机写入弁4中,命令是写入LS10",且将其存储在P3、槽3中,同时分 别用LS8和LS9来填补槽1和2,且将槽4保持为空的。可以看出,试图在每一可一次编程的页内维持扇区对准的同时具有大量填补和死区 而低效地使用更新区区块。不合需要的特征是,即便主机循序地写入(在两个单独的写 入命令中先写入IO然后写入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。而是,通过在SPB30的新页中对其进行缓冲来将进行筹备。因此,将LS10' 存储在SPB30的下一可用部分页PP0的槽3中。同时,分别用LS8和LS9来可选地填 补槽1和2。此外,根据本发明的特征,将SPBI和CBI均封装在扇区内,即索引扇区 SPBI/CBI, 50内,且有利地将索引扇区50存储在部分页PPO的最后的、未使用的槽中。在主机写入弁2中,命令是写入LS11'。由于LS11'属于位于页末的槽4,所以可将 用来自SPB 30的循序的LS8、 LS9和LS10'预填补的整页写入更新区块20的下一可用 页PO。在此情况下,用于SPBI/CBI的索引扇区未经更新,因为其并不写入SPB30中的 部分页中。SPB中的对准以及预填补是优选的,但是可选的。在主机写入弁3中,命令是写入LS6'和LS7'。其分别属于槽3和4。因此,当用LS4 和LS5填补以前的槽时,写入更新区块20的另一整页一一Pl。同样,用于SPBI/CBI 的索引扇区未经更新,因为其并不写入SPB 30中的部分页中。在主机写入弁4中,命令是写入LS10"。由于LS10"属于槽3,所以其将被写入SPB 30的下一部分页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'。由于其中没有一者具有末页偏移,所以将其 存储在高速暂存区块中的新页的槽l-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示意性说明在多流更新中使用的高速暂存区块,其中若干逻辑群组同时经受更新。举例来说,如果有A个逻辑群组经受更新,那么将存在使用A个更新区块20-1……20-yt的更新流。为了避免在更新区块中存在部分页,在另一流(流0)中使用高速暂存区块30来缓冲/t个更新区块的A个相应部分页中的数据。因此,将有k+l个区块打开,且有k个部分页来服务k个更新区块中的逻辑单位的k个逻辑群组的同时更新。所示的实例是针对优选实施例,其中高速暂存区块中每个更新区块存在一个有效页。 在有效扇区分布在更新区块和高速暂存区块中的情况下,当在电源循环的情况下识 别扇区的最近写入的版本时可能会出现问题,因为可在更新区块和高速暂存区块中发现 相同逻辑扇区的不同拷贝。电源复位之后更新区块上的存储器扫描将建立逻辑扇区的多 个版本(如果存在的话)的优先级,因为更新区块的位置是以限定次序填充的。通过对 高速暂存区块进行类似的扫描,可识别出逻辑扇区的最后写入的版本。然而,如果高速 暂存区块中存在最新版本且更新区块中存在最新版本,则不容易确定哪个是真正最新的 版本。举例来说,在图27A中,可在两个流中均发现扇区LS8-LS10。可通过不同的命 令序列——写入LS8'-LS10'、写入LS8"-LS10"、写入LS8"'-LSir'、写入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中的下一空位置的指针PA40-A与"A" 一起保存在流0中的区块32中。在写入"B"操作中不保存任何指针,因为写入是针对 流1中的区块22的。在写入"C"中,将指针PC40-C与"C" 一起保存在流O中的区 块32中。在针对区块22的写入"A'"中,不在流l中保存任何指针。如果在写入"A'"的末尾时存储器在电源中断后被复位,则控制器RAM中的任何 索引均将丢失,且必须通过扫描存储器来重建。通过向后扫描,区块22和32中的每一 者均将已定个数据位"A"的最后写入的版本。可使用写入指针40来确定两个区块之间 的真正最后版本。举例来说,指针PC在记录"A'"之前指向区块22中的位置,因此在 "C"之后记录"A'"。此外,由于"C"被记录在区块32中位于"A"之后的位置处, 因此可得出"A'"是"A"的较后版本的结论。在每UB在SPB中存在一个以上有效页的另一实施例中,然后为了检测最近写入的 数据,将必须分析一个以上写入指针。图31B说明当在两个区块上记录写入时保持对记录次序的跟踪的另一实施例。此实 施例与图31A所示的实施例相似,区别仅在于写入指针指向区块32中的下一空位置, 且保存在区块22中。流O正被记录到第二区块(例如,区块32),而流l正被记录到第 一区块(例如,区块22)。每当将流1记录到第一区块上时,便将给出第二区块22中的 下一记录位置的地址的第二区块写入指针40'与其一起保存。在此实例中,将指针P'b 40'-B与"B" —起记录。类似地,PV 40'-A'与"A'" —起记录在流1中的第一区块22 中。图32A是说明根据本发明一般实施例的对两个数据流之间的记录序列进行同步的 方法的流程图。步骤100:提供第一和第二非易失性存储装置,每一者均用于循序地记录数据。 步骤102:将第一或第二存储装置指定为用于优先级信息的存储装置,所述优先级 信息用于确定第一存储装置中的第一数据单位是在第二存储装置中的第二数据单位之前还是之后记录o步骤110:接收输入数据。步骤120:确定是否满足将接收到的输入数据记录到第一存储装置的预定条件。如果满足,则进行到步骤130',否则进行到步骤140'。步骤130:将接收到的输入数据记录到第一存储装置。此时,如果第一存储装置是指定的存储装置,则额外地将优先级信息记录到第一存储装置。进行到步骤150。 步骤140:将接收到的输入数据记录到第二存储装置。此时,如果第二存储装置是 指定的存储装置,则额外地将优先级信息记录到第二存储装置。进行到步骤150。 步骤150:如果有更多的输入数据要处理,则进行到步骤IIO,否则结束过程。 在优选实施例中,优先级信息是写入器指针,其为将在非指定存储装置中发生下一 记录的位置的地址。图32B是说明根据使用写入指针的实施例对两个数据流之间的记录序列进行同步的方法的流程图。步骤100':提供第一和第二非易失性存储装置,每一者均用于循序地记录数据。 步骤110':接收输入数据。步骤120':确定是否满足将接收到的输入数据记录到第一存储装置的预定条件。如果满足,则进行到步骤130',否则进行到步骤140'。步骤130':获得将在第二存储装置中发生的下一记录的位置的地址。步骤132':将地址和接收到的输入数据记录到第一存储装置。进行到步骤150'。 步骤140':将接收到的输入数据记录到第二存储装置。进行到步骤150'。步骤150':如果有更多的输入数据要处理,则进行到步骤IIO,否则结束过程。本发明特别适用于组织成存储器单位的可擦除区块、,每一存储器单位用于存储逻 辑数据单位且每一区块也组织成一个或一个以上页的非易失性存储器。此外,每一页在 多个逻辑单位的擦除之后可一次编程,每一逻辑单位成预定次序且具有给定的页偏移。 所述方法本质上提供用于对逻辑单位的群组的更新数据进行存储或缓冲的两个区块(例 如,更新区块和高速暂存区块),且维持同步信息以帮助识别逻辑单位的最近写入的版本是位于第一区块中还是第二区块中。关于图29,如果存在多个流,则图31A所示的 实施例是优选的,因为将所有写入指针存储在SPB中的一个地方更加便利。 更新区块写入指针实施例根据优选实施例,每当在髙速暂存区块中缓冲主机数据时,以写入指针形式的同步 信息与主机数据一起保存。写入指针是当将写入指针保存在高速暂存区块中时给出用于 更新区块中的下一写入的位置的地址的更新区块写入指针。确切地说,其保存在高速暂 存区块中不以任何方式用于存储主机数据的部分中。更新区块写入指针优选包含在存储 于高速暂存区块的部分页中的索引SPBI/CBI中。更新区块写入指针将允许确定在高速 暂存区块中缓冲的给定逻辑扇区是否已在对更新区块的后续写入后而成为过时的。如果存在电源复位,且在两个区块之间发现讨论中的逻辑扇区的两个版本,那么写入指针将允许解决哪个版本是真正最新的。举例来说,如果在指向的位置之后记录更新 区块中的逻辑扇区,那么其将取代SPB中的部分页中的版本。另一方面,如果在更新区 块中未发现逻辑扇区,或者逻辑扇区被记录在早先的位置处,那么将得出在高速暂存区 块的部分页中缓冲的版本仍然有效的结论。图33A展示高速暂存区块和更新区块在根据第一序列的两个主机写入井1和#2之 后的状态。第一序列是用于用以写入ls10'的主机写入#1,和用以写入ls10"和ls11' 的主机写入弁2。在主机写入弁l中,命令是写入LS10'。由于LS10'不在页边界处,所以将其记录在 高速暂存区块30中的部分页PP0中,所述部分页PP0被用LS8和LS9预填补且以当前 索引SPBI/CBI!结束。当写入部分页PPO时,在当前索引SPBI/CBI!50中包含写入指针 40,所述索引SPBI/CBL50保存在最后槽中。写入指针40指向更新区块20中的第一空 页po。在主机写入#2中,命令是写入ls10"和LSll。由于ls11'在页末处,所以将其直 接写入更新区块20中的P0的最后槽(槽4)。同时,将LS10'写入槽3,且分别用LS8 和LS9填补槽1和2。如果存储器现在遭受电源中断且ram中维持的索引信息丢失,则物理存储器的向 后扫描将试图重建索引信息。将看出,更新区块和高速暂存区块(SPB)均将产生其对 LS10的最后版本,即LS10'和LS10"。然而,由于LS10"是在记录于spb的ppo中的写 入指针之后记录的,所以可得出其为比ls10'更新的版本的结论。图33b展示高速暂存区块和更新区块在根据与图33a所示的第一序列相反的第二序 列的两个主机写入弁1和#2之后的状态。相反序列用于用以写入LS10'和LS11'的主机 写入弁l,和用以写入LS10"的主机写入弁2。在主机写入弁i中,命令是写入lsio'和Lsir。由于Lsir在页末处,所以将其直接写入更新区块20中的P0的最后槽(槽4)。同时,将LS10'写入槽3,且分别用LS8 和LS9填补槽1和2。在主机写入#1之后的主机写入#2中,命令是写入LS10"。由于LS10"不在页边界 处,所以将其记录在高速暂存区块30中的部分页PP0中,所述部分页PP0被用LS8和 ls9预填补且以当前索引SPBI/CBl2结束。当写入部分页PPO时,在当前索引SPBI/CBI! 50中包含写入指针40,所述索引SPBI/CBI!50保存在最后槽中。写入指针40指向更新 区块20中的下一空页Pl。在此情况下,在电源复位之后,(例如)发现在更新区块20的指向位置之前记录更新区块中的逻辑扇区LS10'。可得出以下结论更新区块20中的LS10'的最后版本被驻
存在高速暂存区块30的部分页中的另一版本LS10"取代。图34A说明高速暂存区块索引(SPBI)的优选数据结构。SPBI信息含有用于A:个 更新区块中的每一更新区块的以下字段。这是每个逻辑群组/UB具有一个有效页的SPB 的特殊情况。逻辑群组号识别正在给定流中经受更新的逻辑扇区。优选情况是,针对空闲的更新 区块或不具有有效高速暂存数据的更新区块来存储零值"FFFF"。 页开始扇区是写入高速暂存区块的部分页的第一逻辑扇区。 扇区运行长度是写入高速暂存页的部分页的有效扇区的数目。有效页号识别写入高速暂存区块中的唯一有效(唯一有效)部分页。其将是高速暂 存区块中的最后写入的部分页。或者,可以扇区偏移来实施定址,所述扇区偏移指向更 新区块的部分页的第一有效扇区。相对于区块的开头来计算扇区偏移。在优选实施例中, 只有一个物理页含有用于给定更新区块的有效数据。针对未写入高速暂存区块的扇区存 储FFFF。更新区块写入指针40是在最后写入高速暂存时相应更新区块的第一未写入扇区位 置的扇区地址。任何从此扇区位置写入更新区块的扇区均将取代在高速暂存区块中写入 的扇区。图34B说明用于图33A中所示的主机写入#1的高速暂存区块索引中的实例值。在 此实例中,逻辑群组号为"l",其含有逻辑扇区LS0到LSN-1。其在流l中更新,且伴 随有更新区块和高速暂存区块。部分页是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中的 部分页PPO中。其可选地用LS8和LS9来预填补,并以当前索引SPBI/CBI,结束。如果 存储器在电源关闭之后重新启动,则可通过最后的SPBI/CBI!索引来正确地定位逻辑扇 区LS10'的有效版本。由于未向更新区块20写入任何内容,所以事实如此。图35B说明主机写入弁1之后的主机写入#2,其中命令是写入LS11'。由于LS11'在页边界(槽4)处,所以将其记录在填充的页PO的第四槽中,用LS8、 LS9禾BLS10进行预填补。同步信息采用指向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 X8个位)。在优选实施例中,区块是一连串整行单元。在另一实施例中,区块是行中的 单元的子集。举例来说,单元的子集可为整行的一半或者整行的四分之一。单元的子集 可为一连串的邻接单元或相隔一个的单元,或相隔预定数目的单元。因此,在优选实施 例中,页由存储器单元的邻接行构成。在将一行存储器单元分割成多个页的另一实施例 中,提供页多路复用器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/0来转移被引导到阵列顶部处的读取/写入模块的数据。类似地,将经由 底部的1/0来转移被引导到阵列底部处的读取/写入模块的数据。
图41更详细地说明图40A所示的感测模块。每一感测模块480本质上包含读出放大器482,用于读出存储器单元的导通状态; 一组数据锁存器484,用于存储读出数
据或待编程的数据;以及1/0电路486,用于与外部通信。第2004-0109357-A1号美国 专利公开案中揭示了一种优选的读出放大器,该案的整个揭示内容以引用的形式并入本 文中。在编程操作期间,首先将选定的字线和位线定址。接着经由1/0端口将待编程的数 据转移到个别的数据锁存器。接着,在通过向字线施加编程电压而开始编程之前,先对 位线进行预充电。可将施加编程电压之前的步骤视为编程设置。当页的大小相当大时, 将编程数据转移到数据锁存器中所需的时间也较长。在主机写入期间,主机首先发送主机写入命令,其向存储器装置指示其期望写入的 数据单位的范围。接着逐数据单位地传输所述范围内的数据单位,直到达到范围末尾为 止。视协议而定,传输可能会被意外地中断,且可在新的写入命令中发送剩余的数据单 位。为了改进写入性能,将需要具有管线操作,其中可在仍然接收数据单位的同时发生程序设置过程。然而,在可根据接收到的特定数据单位而将数据单位记录到多个存储装置中的任何存储装置的多流方案中,对到达给定存储装置的记录的定址将不是确定的,直到实际上不中断地接收到那些特定的数据单位为止。为了克服此问题,使用预测性管线方案。如果发现导致到达给定存储装置的记录的那些特定数据单位处于主机写入命令所指示的范围内,则给定存储装置将立即被设置以供编程。当实际上接收到那些特定的数据单位时,给定的存储装置将准备对数据单位编程,而不存在因编程设置导致的延迟。另一方面,如果那些特定的数据单位因中断而无法具体化,则将放弃针对给定存储装置的编程设置的编程,而是将选择另一存储装置来设置并供随后编程。图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:结束当前主机写入。虽然己关于各种示范性实施例描述了本发明,但将了解,本发明有权受到所附权利 要求书的完整范围内的保护。
权利要求
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中任一权利要求所述的非易失性存储器,其中所述第一和第二 非易失性存储装置由各自存储一个以上数据位的存储器单元构成。
全文摘要
可将到达非易失性存储器的更新数据记录在至少两个交错的流中,例如依据预定条件记录在更新区块或者高速暂存区块中。所述高速暂存区块用来缓冲最终指定去往更新区块的更新数据。用所述流中的至少一者保存与所述流中的更新的记录次序相关的同步信息。这将允许识别可能存在于多个存储器区块上的最近写入的数据版本。在一个实施例中,所述同步信息被保存在第一区块中,且是指向第二区块中的下一记录位置的写入指针。在另一实施例中,所述同步信息是时戳。
文档编号G06F12/02GK101124554SQ200580047187
公开日2008年2月13日 申请日期2005年12月5日 优先权日2004年12月16日
发明者彼得·约翰·史密斯, 瑟吉·阿纳托利耶维奇·戈罗别茨, 艾伦·戴维·贝内特 申请人:桑迪士克股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1