回收快闪存储器系统中的数据存储容量的制作方法

文档序号:6568436阅读:224来源:国知局
专利名称:回收快闪存储器系统中的数据存储容量的制作方法
回收快闪存储器系统中的数据存储容量技术领域本申请案涉及例如半导体快闪存储器的可重新编程的非易失性存储器系统的操作, 且更具体地说,涉及主机装置与存储器之间的接口的管理。
背景技术
对通过主机系统、存储器系统和其它电子系统的外部接口通信的数据进行寻址主要 有两种技术。在其中的一种技术中,将系统产生或接收到的数据文件的地址映射到针对 所述系统建立的连续逻辑地址空间的不同范围中。地址空间的广度通常足以覆盖系统能 够处置的整个地址范围。在一个实例中,磁盘存储驱动器通过此逻辑地址空间与计算机 或其它主机系统通信。此地址空间具有足以寻址磁盘驱动器的整个数据存储容量的广度。 在所述两种技术中的第二种技术中,唯一地识别电子系统产生或接收到的数据文件,且 通过所述文件内的偏移量来逻辑地寻址其数据。 一种形式的这种寻址方法在计算机或其 它主机系统与被称为"智能卡"的可移除存储卡之间使用。智能卡通常由消费者用来进 行识别、银行业务、销售点购买、ATM接入和类似活动。在早一代的商用快闪存储器系统中,将矩形存储器单元阵列分成大量单元群组,每 个单元群组存储标准磁盘驱动器扇区的数据量,即512字节。额外量的数据(例如16个 字节)通常也包含在每个群组中,以存储误差校正码(ECC)以及可能其它与用户数据 且/或与里面存储有相关联的用户数据的存储器单元群组有关的额外开销数据。每个此群 组中的存储器单元是可一起擦除的最小数目的存储器单元。即,擦除单位实际上是存储 一个数据扇区和所包含的任何额外开销数据的若干存储器单元。这种类型的存储器系统 的实例在第5,602,987号和第6,426,893号美国专利中描述。在使存储器单元重新编程有 数据之前对其进行擦除是快闪存储器的特征。快闪存储器系统最常见的是以可移除地与多种主机(例如个人计算机、相机或类似 物)连接的存储卡或快闪驱动器的形式提供,但也可嵌入在此类主机系统内。当将数据 写入到存储器时,主机通常将唯一逻辑地址指派给扇区、群集或存储器系统的连续虚拟 地址空间内的其它数据单位。与磁盘操作系统(DOS)类似,主机将数据写入到存储器 系统的逻辑地址空间内的地址并从所述地址读取数据。存储器系统内的控制器将从主机 接收到的逻辑地址转换成实际存储数据的存储器阵列内的物理地址,且所述控制器接着记住这些地址转换。存储器系统的数据存储容量至少与可在针对存储器系统界定的整个 逻辑地址空间上寻址的数据的量一样大。在后面几代快闪存储器系统中,擦除单位的大小增加到足以存储多个数据扇区的存 储器单元的区块。即使与存储器系统连接的主机系统可以最小单位(例如扇区)编程和 读取数据,但大量扇区存储在快闪存储器的单个擦除单位内。以下情况是常见的当主 机更新或替换逻辑数据扇区时,区块内的一些数据扇区变成废弃的。由于在区块中所存 储的任何数据可被重写之前,必须擦除整个区块,所以新的或经更新的数据通常存储在 己经被擦除且具有用于所述数据的剩余容量的另一区块中。这个过程留下具有废弃数据 的原先区块,所述废弃数据占用存储器内的宝贵空间。但如果所述区块中还有任何有效 数据留在里面,那么就不能擦除所述区块。因此,为了更好地利用存储器的存储容量,常见的是通过将有效部分区块量的数据 复制到经擦除的区块中来对其进行合并或收集,使得从中复制这些数据的区块接着可被 擦除,且其整个存储容量可再用。还希望复制所述数据,以便以其逻辑地址的次序对区 块内的数据扇区进行分组,因为这会提高读取所述数据和将所读取的数据传递到主机的 速度。如果此数据复制发生得太频繁,那么存储器系统的操作性能可能降级。这尤其会影 响存储器系统的操作,其中存储器的存储容量几乎与可由主机通过系统的逻辑地址空间 寻址的数据的量没有差别(典型情况)。在这种情况下,在可执行主机编程命令之前,可 能需要数据合并或收集。于是编程时间因而增加。在相继几代存储器系统中,区块的大小已经逐渐增加,以便增加可以存储在给定半 导体区域中的数据位的数目。存储256个数据扇区和更多扇区的区块正变得越来越常见。 另外,不同阵列或子阵列的两个、四个或更多区块通常逻辑上一起连接成元区块,以便 提高数据编程和读取中的并行度。伴随此类大容量操作单位而来的是对其进行高效操作 的难题。用于此类存储器系统的常见主机接口是与通常与磁盘驱动器一起使用的接口类似的 逻辑地址接口。存储器连接到的主机所产生的文件被指派有所述接口的逻辑地址空间内 的唯一地址。存储器系统接着通常在逻辑地址空间与存储器的物理区块或元区块之间映 射数据。存储器系统记住逻辑地址空间如何映射到物理存储器中,但主机不知道这个。 主机记住其数据文件在逻辑地址空间内的地址,但存储器系统在不知道此映射的情况下 操作。发明内容已经开发了很多技术,其在各种程度上克服了高效地操作此类大型擦除区块快闪存 储器系统中所遇到的问题。另一方面,本发明是基于基本变化的,即通过改变存储器与 主机系统之间的数据传递接口。不是通过使用虚拟地址空间内的逻辑地址来在它们之间 传送数据,而是数据文件通过主机所指派的文件名来识别,且其由所述文件内的偏移地 址存取。接着,存储器系统知道每个扇区或其它数据单位所属的主机文件。本文论述的 文件单位是(例如)通过具有循序偏移地址而排序的一组数据,且所述组数据由在主机 计算系统中操作的应用程序创建并唯一地识别。这并不被大多数当前商用存储器系统所使用,因为主机现在在不识别文件的情况下, 通过一组共用逻辑地址来在所有文件内向存储器系统识别数据。通过由文件对象而不是 使用逻辑地址来识别主机数据,存储器系统控制器可以用减少对此频繁数据合并和垃圾 收集的需要的方式存储数据。数据复制操作的频率和所复制数据的量因此显著减少,从 而提高了存储器系统的数据编程和读取性能。另外,存储器系统控制器保存主机文件存 储在其中的存储器区块的目录和索引表信息。于是,主机没有必要保存当前对管理逻辑 地址接口来说必要的文件分配表(FAT)。区块回收操作包含垃圾收集和数据合并,其中, 一般来说,将未充分利用的区块的 有效数据一起聚集在其它区块中,且接着擦除未充分利用的区块,并使其可用于接受新 的数据。根据本发明的一方面,基于区块的内容来选择待回收的存储器单元的区块。在 利用逻辑地址接口的存储器系统中,通常不基于物理区块的内容,而是响应于主机关闭 映射到物理区块中的逻辑数据区块,来回收存储器单元的区块。通过在所述选择标准中 包含区块内容,使得存储器系统的更高效的操作成为可能。在特定实施例中,基于包含在里面的有效数据的量来选择部分填充有有效数据的区 块以用于回收操作。具有最少量的有效数据的区块可被最高效地回收,因为要复制到另 一区块的数据较少。由于复制数据会从其它存储器操作(例如数据编程或读取)中夺取 相当大量的时间,所以(例如)选择具有最少量的有效数据的区块以用于回收意味着可 在对系统性能产生最少负面影响的情况下,使此区块可用于新数据的存储。由于含有少 量有效数据的一些区块还含有在不必回收所述区块的情况下即可将数据写入其中的一些 经擦除容量,所以一些实施例包含当选择待回收的区块时,考虑区块中的经擦除容量的 量。如果两个区块中存储的有效数据的量相同,但(例如) 一个区块具有一些经擦除容 量而另一区块不具有,那么首先回收不具有经擦除容量的区块,因为得到的会更多。具有经擦除容量的区块具有新数据的存储的当前值,所述值视可写入其中的数据的量而定, 而不具有经擦除容量的区块并非如此。本发明的其它方面、优势、特征和细节包含在以下对本发明的示范性实例的描述内 容中,所述描述内容应结合附图来理解。本文所参考的所有专利、专利申请案、文章、其它出版物、文献等等之类出于所有 目的全文以引用的方式并入本文中。如果所并入的任何出版物、文献等等之类与本申请 案之间在术语的定义或用法方面存在任何不一致性或冲突,则应以本申请案的定义或用 法为准。


图1示意性地说明如当前所实施的主机和所连接的非易失性存储器系统; 图2是用作图1的非易失性存储器的示范性快闪存储器系统的方框图; 图3是可在图2的系统中使用的存储器单元阵列的代表性电路图; 图4说明图2的系统的示范性物理存储器组织; 图5展示图4的物理存储器的一部分的展开图; 图6展示图4和图5的物理存储器的一部分的进一步展开图; 图7说明主机与可重新编程的存储器系统之间的常见现有技术逻辑地址接口; 图8以与图7不同的方式说明主机与可重新编程的存储器系统之间的常见现有技术 逻辑地址接口;图9说明根据本发明的主机与可重新编程的存储器系统之间的直接文件存储接口; 图10以与图9不同的方式说明根据本发明的主机与可重新编程的存储器系统之间的 直接文件存储接口;图11是与直接数据文件存储接口一起操作的存储器系统的功能方框图; 图12说明直接数据文件存储器的操作循环;图13A到图13D展示将文件的数据直接写入到存储器中的四个不同实例;图14A到图14E展示在各种允许的区块类型的组合中存储的数据文件的实例;图15是存储着个别文件的数据的区块类型所允许的文件状态的列表;图16是展示图15中所列出的文件状态之间所允许的初级转变的状态图;图17是描述图16的状态图中所说明的初级文件状态转变的表;图18是展示图15中所列出的文件状态之间的结果次级转变的状态图;图19是描述图18的状态图中所说明的次级文件状态转变的表;图20是列出在图15到图20的条件下被分配为活动区块的区块类型的一览表; 图21A到图21D展示区块回收操作的实例;图22是概括地说明回收操作的流程图;图23说明典型部分存储器单元区块中所存储的数据的类型; 图24提供实行图22的流程图的步骤中的一者的特定实施例的细节; 图25提供执行图22的流程图的同一步骤的替代实施例的细节;以及 图26是界定放置在又一实施例的两个区块列表上的区块类型的表。
具体实施方式
快闪存储器系统一般说明相对于图1到图8描述常见快闪存储器系统和与主机装置的典型操作。在此类系统 中,可实施本发明的各个方面。图1的主机系统1将数据存储在快闪存储器2中,并从 快闪存储器2检索数据。尽管快闪存储器可嵌入在主机内,但将存储器2说明为呈现更 为普遍的通过机械和电连接器的配合部分3和4可移除地连接到主机的卡的形式。目前 有许多不同的商业上可购得的快闪存储卡,实例是那些以CompactFlash (CF)、 MultiMediaCard(MMC)、 Secure Digital( SD)、 miniSD、microSD、Memory Stick、 SmartMedia 和TransFlash的商标出售的存储卡。尽管这些卡具有根据其标准化规格的唯一机械和/或 电接口,但每个卡中所包含的快闪存储器是非常相似的。这些卡都可从本申请案的受让 人SanDisk公司购得。SanDisk还在其Cruzer商标下提供一系列快闪驱动器,其为呈小 型封装形式的手持式存储器系统,所述系统具有用于通过插入到主机的USB插口中而与 主机连接的通用串行总线(USB)插头。这些存储卡和快闪驱动器中的每一者均包含控 制器,所述控制器与主机介接,并控制它们内的快闪存储器的操作。使用此类存储卡和快闪驱动器的主机系统有许多且是各式各样的。它们包含个人计 算机(PC)、膝上型和其它便携式计算机、蜂窝式电话、个人数字助理(PDA)、数字照 相机、数字摄影机和便携式音频播放器。主机通常包含内建式插口以供一种或一种以上 类型的存储卡或快闪驱动器使用,但有些需要存储卡插入到其中的适配器。存储器系统 通常含有其自己的存储器控制器和驱动器,但也存在一些只有存储器的系统,其改为由所述存储器连接到的主机所执行的软件来控制。在含有控制器的一些存储器系统(尤其 是那些嵌入在主机内的存储器系统)中,存储器、控制器和驱动器通常形成于单个集成 电路芯片上。就存储器2涉及到的范围而言,图1的主机系统1可被视为具有两个主要部分,由 电路和软件的组合构成。所述两个主要部分是应用程序部分5和与存储器2介接的驱动 器部分6。举例来说,在个人计算机中,应用程序部分5可包含运行文字处理、图形、控制或其它普及应用软件的处理器。在摄像机、蜂窝式电话或其它主要专用于执行单组 功能的主机系统中,应用程序部分5包含操作摄像机以拍摄并存储图片、操作蜂窝式电 话以发出和接收呼叫等等的软件。图1的存储器系统2包含快闪存储器7和电路8,所述两者都与卡所连接到的主机 介接,以用于来回传递数据并控制存储器7。控制器8通常在数据编程和读取期间在主 机1所使用的数据的逻辑地址与存储器7的物理地址之间转换。参看图2,描述可用作图1的非易失性存储器2的典型快闪存储器系统的电路。通 常在通过系统总线13与一个或一个以上集成电路存储器芯片并联连接的单个集成电路 芯片11上实施系统控制器,图2中展示单个此类存储器芯片15。所说明的特定总线13 包含单独一组导线17用来运载数据、 一组导线19用于存储器地址以及一组导线21用于 控制与状态信号。或者,单组导线可在这三个功能之间时间共享。另外,可使用系统总 线的其它配置,例如2004年8月9日申请的第10/915,039号美国专利申请案(现第 2006/0031593 Al号公开案)中所描述的环形总线。典型的控制器芯片11具有其自己的内部总线23,所述内部总线23通过接口电路25 与系统总线13介接。通常连接到总线的主要功能是处理器27 (例如微处理器或微控制 器);只读存储器(ROM)29,其含有用以初始化("引导")系统的代码;只读存储器(RAM) 31,其主要用于缓冲正在存储器与主机之间传递的数据;以及电路33,其计算并检査经 过存储器与主机之间的控制器的数据的误差校正码(ECC)。控制器总线23通过电路35 与主机系统介接,在图2的系统包含在存储卡内的情况下,这是通过卡的作为连接器4 的一部分的外部触点37来完成的。时钟39与控制器11的其它组件中的每一者连接并由 其利用。存储器芯片15以及与系统总线13连接的任何其它芯片通常含有组织成多个子阵列 或平面的存储器单元阵列,为了简单起见,说明两个此类平面41和43,但可改为使用 更多(例如四个或八个)此类平面。或者,芯片15的存储器单元阵列可不分成平面。然 而,当这样分时,每个平面具有其自己的列控制电路45和47,其可很大程度上独立于 彼此而操作。电路45和47从系统总线13的地址部分19接收其相应存储器单元阵列的 地址,并对所述地址进行解码以寻址相应位线49和51中的特定一者或一者以上。通过 行控制电路55响应于在地址总线19上接收到的地址而寻址字线53。源极电压控制电路 57和59也与相应的平面连接,p阱电压控制电路61和63也是如此。如果存储器芯片 15具有单个存储器单元阵列,且如果系统中存在两个或两个以上此类芯片,那么每个芯片的阵列可以与上文所述的多平面芯片内的一个平面或子阵列类似的方式操作。数据通过与系统总线13的数据部分17连接的相应数据输入/输出电路65和67转移 到平面41和43中且从平面41和43中转移出来。电路65和67用于通过线69和71将 数据编程到存储器单元中和从其相应平面的存储器单元中读取数据两者,所述线69和 71通过相应的列控制电路45和47连接到平面。尽管控制器11控制存储器芯片15的操作以编程数据、读取数据、擦除和办理各种 内务处理事项,但每个存储器芯片还含有一些控制电路,所述控制电路执行来自控制器 11的命令以执行此类功能。接口电路73连接到系统总线13的控制与状态部分21。将来 自控制器的命令提供到状态机75,状态机75接着提供其它电路的特定控制,以便执行 这些命令。控制线77到81使状态机75与这些其它电路连接,如图2中所示。来自状态 机75的状态信息通过线83传送到接口 73,以便通过总线部分21传输到控制器11。存储器单元阵列41和43的NAND结构当前是优选的,但是也可改为使用其它结构 (例如NOR)。 NAND快闪存储器及其作为存储器系统的一部分的操作的实例可通过参 考第5,570,315号、第5,774,397号、第6,046,935号、第6,373,746号、第6,456,528号、 第6,522,580号、第6,771,536号和第6,781,877号美国专利以及第2003/0147278号美国 专利申请公开案获得。图3的电路图说明示范性NAND阵列,其为图2的存储器系统的存储器单元阵列41 的一部分。提供大量全局位线,为了阐释的简单性,图2中仅展示四个此类线91到94。 许多串联连接的存储器单元串97到104连接在这些位线中的一者与参考电位之间。使用 存储器单元串99作为代表,多个电荷存储存储器单元107到110在所述串的任一端处与 选择晶体管lll和112串联连接。当串的选择晶体管变得具有传导性时,所述串连接在 其位线与参考电位之间。接着, 一次对所述串内的一个存储器单元进行编程或读取。图3的字线115到118个别地延伸越过许多存储器单元串中的每一者中的一个存储 器单元的电荷存储元件,且栅极119和120控制所述串的每个端处的选择晶体管的态。 使共享共用字线和控制栅极线115到120的存储器单元串形成一起擦除的存储器单元区 块123。此单元块含有一次可物理擦除的最小数目的单元。 一次对沿字线115到118中的 一者的一行存储器单元进行编程。通常,以指定次序对NAND阵列的行进行编程,在此 情况下,开始于沿最接近于连接到接地或另一共用电位的串的端部的字线118的行。接 下来对沿字线117向那行存储器单元进行编程,以此类推,贯穿区块123。最后对沿字线 115的行进行编程。第二区块125是类似的,其存储器单元串连接到与第一区块123中的串相同的全局 位线,但具有不同组的字线和控制栅极线。通过行控制电路55将字线和控制栅极线驱动 到其合适的操作电压。如果系统中存在一个以上平面或子阵列,例如图2的平面1和2, 那么一个存储器结构使用在它们之间延伸的共用字线。或者,可能存在两个以上共享共 用字线的平面或子阵列。在其它存储器结构中,分别驱动个别平面或子阵列的字线。如上文参考的NAND专利和公开申请案中的几者中所述,存储器系统可经操作以在 每个电荷存储元件或区域中存储两个以上可检测电荷电平,从而在每一者中存储一个以 上数据位。存储器单元的电荷存储元件最通常是导电性浮动栅极,但可替代地是非导电 性介电电荷俘获材料,如第2003/0109093号美国专利申请公开案中所述。图4在概念上说明用作下文进一步描述内容中的实例的快闪存储器单元阵列7(图1) 的组织。存储器单元的四个平面或子阵列131到134可位于单个集成存储器单元芯片上、 位于两个芯片(每个芯片上有所述平面中的两者)或位于四个单独芯片上。特定布置对 下文的论述内容并不重要。当然,系统中可能存在其它数目的平面,例如1个、2个、8 个、16个或更多。通过矩形将所述平面个别地分成图4中所示的存储器单元区块,例如 位于相应平面131到134内的区块137、 138、 139和140。每个平面内可能存在数十个 或数百个区块。如上文所提及,存储器单元区块是擦除单位,即可一起物理擦除的最小 数目的存储器单元。然而,为了获得增加的并行性,以较大的元区块单位来操作所述区 块。来自每个平面的一个区块逻辑上连接在一起以形成元区块。展示四个区块137到140 形成一个元区块141。元区块内的所有单元通常一起擦除。用于形成元区块的区块无需 限于其相应平面内的相同相对位置,如由区块145到148组成的第二元区块143中所示。 尽管通常优选使元区块延伸越过所有平面,但为了获得较高系统性能,可用动态地形成 位于不同平面内的一个、两个或三个区块中的任何一者或所有的元区块的能力来操作存 储器系统。这允许元区块的大小与一个编程操作中可用于存储的数据的量更紧密地匹配。出于操作目的,个别区块又分成存储器单元页,如图5中所说明。举例来说,区块 131到134中的每一者的存储器单元每一者被分成八个页P0到P7。或者,每个区块内可 存在16个、32个或更多个存储器单元页。页是区块内的含有一次所编程的最小量的数 据的数据编程和读取单位。在图3的NAND结构中,页由区块内的沿字线的存储器单元 形成。然而,为了增加存储器系统操作并行性,两个或两个以上区块内的此类页可逻辑 上连接成元页。图5中说明元页151,其由来自四个区块131到134中的每一者的一个 物理页形成。举例来说,元页151包含四个区块中的每一者中的页P2,但元页的页不一定需要在区块的每一者内具有同一相对位置。尽管优选越过所有四个平面并行编程和读取最大量的数据,但为了获得较高系统性 能,存储器系统也可经操作以形成不同平面内的单独区块中的一个、两个或三个页中的 任何一者或所有的元页。这允许编程和读取操作适应性地与可方便地并行处置的数据的 量匹配,且减少元页的一部分保持未编程有数据的机会。如图5中所说明,由多个平面的物理页形成的元页沿那多个平面的字线行含有存储 器单元。不是同时编程一个字线行中的所有单元,而是更通常在两个或两个以上交错的 群组中交替地对它们进行编程,每个群组存储一个数据页(在单个区块中)或一个数据 元页(越过多个区块)。通过一次对交替的存储器单元进行编程,无需为每个位线提供包 括数据寄存器和读出放大器的外围电路单元,而是在邻近位线之间对其进行时间共享。 这节约了外围电路所需的衬底空间的量,且允许存储器单元沿行以增加的密度堆积。否 则,优选沿行同时编程每一单元,以便使可从给定存储器系统得到的并行性最大。参看图3,通过沿NAND串的至少一个端提供两行选择晶体管(未图示)而不是所 示的单个行,来最方便地实现沿行同时将数据编程到每隔一个存储器单元中。 一个行的 选择晶体管接着响应于一个控制信号将区块内的每隔一个串连接到其相应的位线,且另 一行的选择晶体管响应于另一控制信号将介入的每隔一个串连接到其相应的位线。因此, 将两个数据页写入到每个存储器单元行中。按照惯例,每个逻辑页中的数据的量通常是一个或一个以上数据扇区的整数数目, 每个扇区含有512个字节的数据。图6展示页或元页的两个数据扇区153和155的逻辑 数据页。每个扇区通常含有部分157,其具有正被存储的512个字节的用户或系统数 据;和另一数目的字节159,其用于与部分157中的数据有关或与其存储在里面的物理 页或区块有关的额外开销数据。额外开销数据的字节数目通常是16个字节,使得扇区 153和155中的每一者总共具有528个字节。额外开销部分159可含有在编程期间从数 据部分157计算出的ECC、其逻辑地址、区块已经被擦除和重新编程的次数的经历计数、 一个或一个以上控制旗标、操作电压电平和/或类似物,加上从此类额外开销数据159计 算出的ECC。或者,额外开销数据159或其一部分可存储在其它区块中的不同页中。随着存储器的并行性增加,元区块的数据存储容量增加,且因此数据页和元页的大小也增加。数据页于是可含有两个以上数据扇区。在一个数据页中具有两个扇区且每个 元页具有两个数据页的情况下, 一个元页中存在四个扇区。因此,每个元页存储2048个字节的数据。这是高度的并行性,且可能随着行中的存储器单元的数目增加而更进一步增加。为此,快闪存储器的宽度延伸,以便增加页和元页中的数据的量。上文指出的物理上较小的可重新编程的非易失性存储卡和快闪驱动器商业上可以 512兆字节(MB)、 1千兆字节(GB)、 2GB和4GB的数据存储容量购得,且可变得更 高。图7说明主机与此大容量存储器系统之间的最常见的接口。主机处理由主机执行的 应用软件或固件程序所产生或使用的数据文件。文字处理数据文件是一个实例,且计算 机辅助设计(CAD)软件的绘图文件是另一个实例,主要用于例如PC、膝上型计算机和 类似物的通用计算机主机中。pdf格式的文档也是这样的文件。静止数字视频摄像机针对 每个图片产生一个存储在存储卡上的数据文件。蜂窝式电话利用来自内部存储卡上的文 件(例如电话号码簿)的数据。PDA存储并使用若干不同文件,例如地址文件、日历文 件和类似文件。在任一此类应用中,存储卡还可含有操作主机的软件。图7中说明主机与存储器系统之间的常见逻辑接口。连续的逻辑地址空间161足够 大以便为可存储在存储器系统中的所有数据提供地址。通常将主机地址空间分成数据群 集的增量。每个群集可在给定主机系统中设计成含有若干数据扇区,大约在4到64个扇 区是典型的。标准扇区含有512个字节的数据。图7的实例中展示已经创建了三个文件1、 2和3。在主机系统上运行的应用程序创 建每个文件作为一组有序数据,并通过唯一名称或其它参考对其进行识别。尚未分配给 其它文件的足够可用的逻辑地址空间由主机指派给文件1。文件1被展示为已经被分配 有连续范围的可用逻辑地址。地址的范围通常还出于特定目的而分配,例如特定范围用 于主机操作软件,所述地址接着避免用于存储数据,即使在主机将逻辑地址指派给数据 时这些地址尚未被利用也是如此。当主机稍后创建文件2时,主机类似地在逻辑地址空间161内指派两个不同范围的 连续地址,如图7中所示。文件无需被指派有连续的逻辑地址,而是可为已经分配给其 它文件的地址范围之间的地址片段。此实例接着展示主机所创建的又一文件3被分配有 主机地址空间的先前未分配给文件1和2和其它数据的其它部分。主机通过保存文件分配表(FAT)来记住存储器逻辑地址空间,其中由主机通过转换 160指派给各个主机文件的逻辑地址被保存。随着新文件被存储、其它文件被删除、文 件被修改等等,FAT表由主机频繁地更新。FAT表通常存储在主机存储器中,FAT表的 备份也存储在非易失性存储器中并被不时地更新。正如任何其它数据文件一样,通常通 过逻辑地址空间在非易失性存储器中存取所述备份。当主机文件被删除时,主机接着通 过更新FAT表来解除分配先前分配给被删除文件的逻辑地址,以展示它们现在可用于与其它数据文件一起使用。主机不关心存储器系统控制器选择用来存储文件的物理位置。典型的主机仅知道其 逻辑地址空间和其已经分配给其各个文件的逻辑地址。另一方面,存储器系统通过典型 的主机/卡接口,仅知道逻辑地址空间的数据已经被写入到的部分,但不知道分配给特定 主机文件的逻辑地址,乃至不知道主机文件的数目。存储器系统控制器将主机所提供的 用于存储或检索数据的逻辑地址转换成存储有主机数据的快闪存储器单元阵列内的唯一 物理地址。区块163表示这些逻辑到物理地址转换的工作表,其由存储器系统控制器保 存。存储器系统控制器经编程以便以使系统的性能维持在高等级的方式将数据文件存储 在存储器阵列165的区块和元区块内。在此说明中使用四个平面或子阵列。优选越过由 来自所述平面中的每一者的区块形成的整个元区块,以系统允许的最大并行度对数据进 行编程和读取。通常将至少一个元区块167分配为用于存储操作固件和存储器控制器所 使用的数据的保留区块。可分配另一元区块169或多个元区块用于存储主机操作软件、 主机FAT表等等。物理存储空间的大部分留下用于存储数据文件。然而,存储器控制器 不知道接收到的数据如何己经由主机在其各个文件对象之间分配。存储器控制器通常从 与主机的交互中知道的只是由主机写入到特定逻辑地址的数据存储在如由控制器的逻辑 到物理地址表163保存的对应物理地址中。在典型的存储器系统中,提供比必需的多几个的额外区块的存储容量,以存储地址 空间161内的数据的量。可提供这些额外区块中的一者或一者以上作为冗余区块,用于 代替在存储器的使用寿命期间可能变得有缺陷的其它区块。包含在个别元区块内的区块 的逻辑分组通常可出于各种原因而改变,所述原因包含冗余区块替代原本指定给元区块 的有缺陷区块。 一个或一个以上额外区块(例如元区块171)通常保存在擦除区块集区 中。当主机将数据写入到存储器系统时,控制器将由主机指派的逻辑地址转换成擦除区 块集区中的元区块内的物理地址。其它没有被用于将数据存储在逻辑地址空间161内的 元区块接着被擦除,且被规定为擦除集区区块,以供在随后的数据写入操作期间使用。 在优选形式中,将逻辑地址空间分成多个逻辑群组,每个逻辑群组含有等于物理存储器 元区块的存储容量的数据量,因此允许所述逻辑群组一对一地映射到所述元区块中。当原先存储的数据变得废弃时,存储在特定主机逻辑地址处的数据由新数据频繁地 重写。作为响应,存储器系统控制器将新数据写入擦除的区块中,且接着针对那些逻辑 地址改变逻辑到物理地址表,以识别那些逻辑地址处的数据所存储到的新的物理区块。接着擦除含有那些逻辑地址处的原先数据的区块,并使其可用于存储新的数据。如果在 写入开始时,来自擦除区块集区的经预擦除的区块中没有足够的存储容量,那么此类擦 除通常必须在当前数据写入操作可完成之前发生。这可能不利地影响系统数据编程速度。 存储器控制器通常仅在主机将新数据写入到其给定逻辑地址时才了解到主机已经使同一 逻辑地址处的数据变得废弃。因此,存储器的许多区块可能暂时存储此类无效数据。区块和元区块的大小逐渐增加,以便高效地使用集成电路存储器芯片的面积。这导 致较大比例的个别数据写入存储小于元区块的存储容量(且在许多情况下,甚至小于区 块的存储容量)的数据量。由于存储器系统控制器通常将新数据引导到擦除集区元区块, 所以这可能导致元区块的多个部分变得未填满。如果新数据是存储在另一元区块中的某 数据的更新,那么来自所述另一元区块的具有与新数据元页的那些逻辑地址邻接的逻辑 地址的剩余有效数据元页也合意地以逻辑地址次序复制到新的元区块中。旧的元区块可 保留其它有效数据元页。随着时间的过去,这导致个别元区块的某些元页的数据变得废 弃和无效,且由被写入到不同元区块的具有同一逻辑地址的新数据代替。为了保存足够的物理存储器空间以在整个逻辑地址空间161上存储数据,周期性地 对此类数据进行压縮或合并(垃圾收集)。尽可能地将数据扇区以与其逻辑地址相同的次 序保存在元区块内也是合乎要求的,因为这使得以连续逻辑地址读取数据更高效。因此, 通常为了此额外目标而执行数据压縮和垃圾收集。第6,763,424号美国专利中描述当接收 部分区块数据更新时管理存储器的一些方面以及元区块的使用。数据压縮通常涉及从元区块读取所有有效数据元页,和将所述元页写入到新的元区 块,在所述过程中忽略具有无效数据的元页。具有有效数据的元页还优选以与存储在其 中的数据的逻辑地址次序匹配的物理地址次序布置。新的元区块中被占据的元页的数目 将小于旧的元区块中被占据的元页的数目,因为含有无效数据的元页没有被复制到新的 元区块。接着擦除旧的区块,并使其可用于存储新的数据。通过合并获得的额外元页容 量可接着用于存储其它数据。在垃圾收集期间,从两个或两个以上元区块收集具有邻接或几乎邻接的逻辑地址的 有效数据的元页,并将其重写到另一元区块中,通常是擦除区块集区中的一个元区块。 当所有的有效数据元页都从原先的两个或两个以上元区块复制出来时,可擦除所述元区 块以供将来使用。数据合并和垃圾收集会花费时间,且可能影响存储器系统的性能,尤其是在数据合 并或垃圾收集需要在可执行来自主机的命令之前发生时。此类操作通常由存储器系统控制器调度以尽可能在后台发生,但执行这些操作的需要可能导致控制器不得不给主机忙 碌状态信号,直到这个操作完成为止。主机命令的执行可延迟的实例是擦除区块集区中 没有足够的预擦除元区块用来存储主机想要写入到存储器中的所有数据,且首先需要数 据合并或垃圾收集来清除一个或一个以上有效数据的元区块,所述元区块接着可被擦除。 因此,注意力已经被引导到管理对存储器的控制,以便使此类中断减到最小。在以下美 国专利申请案中描述许多此类技术2003年12月30日申请的题为"Management of Non-Volatile Memory Systems Having Large Erase Blocks"的第10/749,831号美国专利申 请案,现在的第2005/0144358 Al号公开案;2003年12月30日申请的题为"Non-Volatile Memory and Method with Block Management System"的第10/750,155号美国专利申i青案; 2004年8月13日申请的题为"Non-Volatile Memory and Method with Memory Planes Alignment"的第10/917,888号美国专利申请案,现在是第2005/0141313 Al号公开案; 2004年8月13日申请的第10/917,867号美国专利申请案,现在是第2005/0141312Al号 公开案;2004年8月13日申请的题为"Non-Volatile Memory and Method with Phased Program Failure Handling"的第10/917,889号美国专利申请案,现在是第2005/0166087 Al 号公开案;2004年8月13日申请的题为"Non-Volatile Memory and Method with Control Data Management"的第10/917,725号美国专利申请案,现在是第2005/0144365 Al号公 开案;2005年7月27日申请的题为"Non-Volatile Memory and Method with Multi-Stream Update Tracking"的第11/192,220号美国专利申请案;2005年7月27日申请的题为"Non-Volatile Memory and Method with Improved Indexing for Scratch Pad and Update Blocks"的第11/192,386号美国专利申请案;以及2005年7月27日申请的题为"Non-Volatile Memory and Method with Multi-Stream Updating"的第11/191,686号美国专 利申请案。高效地控制具有非常大的擦除区块的存储器阵列的操作的一个难题是使给定写入操 作期间存储的数据扇区的数目与存储器的区块的容量和边界匹配并对准。 一种手段是配 置元区块,所述元区块用于以少于最大数目的区块存储来自主机的新数据,所述数目的 区块是存储少于填充整个元区块的量的数量的数据所必需的。2003年12月30申请的题 为"Adaptive Metablocks"的第10〃49,189号美国专利申请案(现在是第2005/0144357 Al 号公开案)中描述适应性元区块的使用。2004年5月7日申请的第10/841,118号专利申 请案(现在是第2005/0144363Al号公开案)以及2004年12月16日申请的题为"Data Run Programming"的第11/016,271号专利申请案(现在是第2005/0144367 Al号公开案)中描述数据区块之间的边界与元区块之间的物理边界的配合。存储器控制器还可使用来自FAT表(其由主机存储在非易失性存储器中)的数据, 以更高效地操作存储器系统。 一种此类使用是通过解除分配其逻辑地址来了解数据何时 己经由主机识别为废弃的。知道这一点将允许存储器控制器在其会正常地通过主机将新 数据写入到那些逻辑地址而了解它之前调度含有此类无效数据的区块的擦除。2004年7 月21曰申请的题为"Method and Apparatus for Maintaining Data on Non-Volatile Memory Systems"的第10/897,049号美国专利申请案(现在是第2006/0020744 Al号公开案)中 描述这种情况。其它技术包含监视将新数据写入到存储器的主机模式,以便推导出给定 写入操作是单个文件还是(如果有多个文件)文件之间的边界所在之处。2004年12月 23日申请的题为"FAT Analysis for Optimized Sequential Cluster Management"的第 11/022,369号美国专利申请案(现在是第2006/0020745 Al号公开案)描述这种类型的技 术的使用。为了高效地操作存储器系统,对控制器来说合乎需要的是尽可能多地知道由主机指 派给其个别文件的数据的逻辑地址。数据文件接着可由控制器存储在单个元区块或元区 块群组内,而不是当不知道文件边界时分散在更大数目的元区块之间。结果是数据合并 和垃圾收集操作的数目和复杂性减小。因此,存储器系统的性能改进。但如上文所述, 当主机/存储器接口包含逻辑地址空间161 (图7)时,存储器控制器难以知道关于主机 数据文件结构的较多信息。参看图8,以不同的方式来说明图7中已经展示的典型逻辑地址主机/存储器接口。 主机向主机产生的数据文件分配逻辑地址。存储器系统于是看到这些逻辑地址,并将其 映射到实际存储数据的存储器单元的区块的物理地址中。基于文件的存储器接口与操作主机与用于存储大量数据的存储器系统之间的一种不同类型的接口不使用逻辑地址 空间。主机改为通过唯一文件ID (或其它唯一参考)和所述文件内的数据单位(例如字 节)的偏移地址在逻辑上寻址每个文件。此文件地址是直接给存储器系统控制器的,存 储器系统控制器接着保存其自己的关于每个主机文件的数据物理上存储在何处的表。可 用如上文相对于图2到图6所述的同一存储器系统来实施这种新的接口。与上文所述内 容的主要不同之处是存储器系统与主机系统通信的方式。图9中说明这种基于文件的接口,其应与图7的逻辑地址接口相比较。文件l、 2和 3中的每一者的识别以及图9的文件内的数据的偏移量被直接传递到存储器控制器。此逻辑地址信息接着由存储器控制器功能173转换成存储器165的元区块和元页的物理地 址。文件目录记住每个所存储的扇区、页或其它文件数据单位所属的主机文件。图IO还说明基于文件的接口,其应与图8的逻辑地址接口相比较。图8的逻辑地址 空间和主机保存的FAT表在图10中不存在。而是通过文件编号和所述文件内的数据的偏 移量向存储器系统识别由主机产生的数据文件。存储器系统控制器接着直接将所述文件 映射到存储器单元阵列的物理区块,并保存里面存储有主机文件的存储器区块的文件目 录和索引表信息。于是,主机没有必要保存当前对管理逻辑地址接口来说是必需的文件 分配表(FAT)。图11是直接数据文件系统的主要功能的概括方框图,所述功能由其处理器且由控制 器的其它电路执行的存储器系统固件实行。图11提供了可在其中考虑下文描述的特定存 储器操作的总体框架。基于文件的接口 601层在存储器系统与外部主机系统或正在同一 存储卡或快闪驱动器上执行的主机应用程序之间传递命令和数据,以实现存储器系统的 三个主要功能,即写入文件、删除文件和读取文件。数据存储在快闪存储器阵列603中。文件区块管理功能605根据借以识别数据的文件来组织数据在快闪存储器中的存 储,并使存储用于一个以上文件的数据的区块的出现减到最少。存储器603的存储器单 元的物理区块是数据管理的基本单位。通过功能607将数据组织成元页,以写入到存储器603中,使得个别元页含有特定 文件内的邻接逻辑偏移地址范围的数据。功能609控制对存储器603的存取以读取存储 在其中的数据。当由主机命令时,删除文件的数据致使功能611更新功能613所保存的 文件索引信息和功能615中的区块列表。文件数据索引613通过唯一文件识别符和所述文件内的数据的偏移地址将存储在存 储器603中的个别文件编入索引。每个文件的数据被存储为一组具有邻接逻辑偏移地址 的数据群组。文件目录识别个别文件在多组数据群组条目的文件索引表(FIT)中的位置。 被擦除的(部分地编程有文件数据或含有文件数据以及废弃数据)的区块的身份由区块 列表功能615保存。上文所述的垃圾收集和数据合并功能的主要目的是回收未经使用的存储器空间,以 用于存储额外数据。在垃圾收集中,将源区块的有效数据从也含有废弃数据的区块复制 到具有至少一些经擦除空间的一个或一个以上目的地区块中。这将有效数据收集到数目较少的区块中,从而一旦原先源区块被擦除,便释放由废弃数据占用的容量。在数据合 并中, 一个部分填充的区块(其因此也含有经擦除但未经使用的空间)的有效数据与另一部分填充的区块的有效数据进行组合。部分填充的区块最常见是由写入已关闭但其最 后一个擦除区块仅部分地填充的新文件引起的。 一旦数据被合并,接着擦除含有刚被复 制的数据(其于是是复制数据)的源区块,并使其可用于存储新数据。垃圾收集和数据合并两者在本文可一起作为区块回收来处置。功能617通过控制有 效文件数据从具有未经编程的元页或含有废弃数据的物理区块复制到其它区块来回收区 块。这允许原先区块被擦除,以回收其所含有的未经使用的空间,并使此空伺可用于存 储新的文件数据。功能619根据可回收容量的量和经擦除区块的数目,适应性地控制区 块回收操作的发生和持续时间。以维持存储器系统的良好的总体性能的方式,以相对于 新文件数据的写入速率的最佳速率执行区块回收。在图ll的功能图中,转换层621和接口层623在文件接口 601之上,文件接口601 与快闪存储器的后端系统介接,并控制其操作。在此实例中,接口层623具有根据三个 不同协议中的一者,用主机或以其它方式将数据传送到存储器系统外部的能力。文件接 口 625是本文主要描述的文件接口,其中个别文件的数据由唯一文件识别符和所述文件 内的逻辑偏移地址识别。对象接口 627的主要用途是在电子装置之间传递数据文件,其 中文件的大小通常是已知的。现存的用于接口 627的协议包含来自微软公司的媒体传送 协议(MTP)和图片传递协议(PTP)。此实例中还包含向后兼容逻辑(LBA)接口 629。 以快闪存储卡当前所使用的协议,通过接口 629传递数据,这与磁盘驱动器系统的情况 类似,其中主机将数据寻址到存储器系统的已界定的逻辑地址空间。转换层621包含协议适配器631、 633和635,其用于将相应接口协议625、 627和 629的协议转换成文件接口 601的共用协议。命令、数据格式等等通过转换层在不同协 议之间转换。LBA协议适配器635另外将存储器系统的逻辑地址空间分成静态文件。这 些文件接着由文件接口 601以与通过接口 625和627传送的不同文件相同的方式进行处 置。可参考2005年8月3日申请的发明人为S. A. Gorobets的第11/196,869号美国专利 申请案获得LBA协议适配器635的功能的细节。在2005年12月21日申请的发明人为 Alan Sinclair的第11/316,577号美国专利申请案中给出转换和接口层621和623的更多信 息。当新的数据文件被编程到存储器中时,数据被写入到存储器单元的经擦除区块中, 从所述区块中的第一物理位置开始,并依次循序地进行完所述区块的位置。数据以从主 机接收到的次序被编程,不管所述数据在文件内的偏移量的次序如何。编程继续进行, 直到所述文件的所有数据都已经写入到存储器中为止。如果文件中的数据的量超过单个存储器区块的容量,那么当第一区块满时,编程在第二经擦除区块中继续进行。以从第 一位置开始的次序,以与第一存储器区块相同的方式对第二存储器区块进行编程,直到 文件的所有数据都被存储或第二区块满为止。可以文件的任何剩余数据对第三或额外区 块进行编程。存储单个文件的数据的多个区块或元区块无需是物理上或逻辑上邻接的。 为了便于阐释,除非另外规定,否则希望本文所使用的术语"区块"指代擦除区块单位 或多区块"元区块",视特定系统中是否使用元区块而定。图12的状态图说明图11中所示的存储器操作的总体运行。个别存储器区块可被视 为处于三个状态中的一者。这些是经擦除区块641、区块643,其存储有效文件数据而 不具有可回收容量;区块645,其可含有一些有效文件数据,但还具有来自未经编程的 经擦除页和/或存储在其中的废弃(无效)数据的可回收容量。数据通过功能647写入到 经擦除存储器区块,从而形成类别643或645中的区块,视所得的经编程区块是否保留 任何可回收容量而定。当文件被删除(如由功能649所指示)时,含有文件的数据的区 块643转换成具有可回收容量的区块645。区块645的未经使用的存储容量由功能651 回收,这导致将这些区块返回到新的数据可写入到的经擦除区块641的状态。参看图13A,说明将数据文件写入到存储器系统。在此实例中,数据文件181大于 存储器系统的一个区块或元区块183的存储容量,其被展示为在垂直实线之间延伸。数 据文件181的一部分184因此也被写入到第二区块185中。将这些存储器单元区块展示 为物理上邻接,但它们无需如此。来自文件181的数据以与其从主机被串流的方式相同 的方式被写入,直到文件的所有数据都已经写入到存储器中为止。在图13A的实例中, 数据181是文件的初始数据。存储器系统管理和记住所存储数据的优选方式是使用可变大小的数据群组。即,将 文件的数据存储为多个数据群组,所述数据群组可以界定的次序链接在一起以形成完整 的文件。然而,优选的是,存储器系统控制器通过使用文件索引表(FIT)来保存数据群 组在文件内的次序。当来自主机的数据流被写入时,只要文件数据的逻辑偏移地址中或 数据将存储在其中的物理空间中存在不连续性,就开始新的数据群组。此物理不连续性 的实例是当文件的数据填充一个区块并开始被写入到另一区块中的时候。这在图13A中 说明,其中第一数据群组填充第一区块183,文件的剩余部分184存储在第二区块185 中,作为第二数据群组。第一数据群组可由(F0,D0)表示,其中F0是数据文件的开头的 逻辑偏移量,且D0是存储器内文件开始的物理位置。第二数据群组表示为(F1,D1),其 中Fl是存储在第二区块185的开头处的数据的逻辑文件偏移,且Dl是所述数据所存储的物理位置。通过主机-存储器接口传递的数据的量可用若干数据字节、若干数据扇区或以某一其 它颗粒度来表达。在通过当前逻辑地址接口与大容量存储器系统通信时,主机最常用字 节颗粒度来界定其文件的数据,但接着将字节分组成每者具有512个字节的扇区,或分 组成每者具有多个扇区的群集。这样做通常是为了简化存储器系统的操作。尽管本文所 述的基于文件的主机-存储器接口可使用某一其它数据单位,但原先主机文件字节颗粒度 通常是优选的。即,数据偏移量、长度及类似物优选用字节(数据的最小合理单位)而 不是用扇区、群集或类似物来表达。这允许用本文所述的技术更高效地使用快闪存储器 存储设备的容量。以图13A中所说明的方式写入到存储器中的新文件接着在FIT中以所述次序表示为 数据群组的索引条目(F0,D0)、 (F1,D1)的序列。艮P,只要主机系统想要存取特定文件,主 机就将其文件ID或其它标识发送到存储器系统,存储器系统接着存取其FIT以识别组成 所述文件的数据群组。为了方便存储器系统的操作,个别数据群组的长度<长度>也可包 含在其个别条目中。在使用时,存储器控制器计算并存储数据群组的长度。只要主机以打开状态保存图13A的文件,物理写入指针P就也优选被保存,以界定 用于针对所述文件写入从主机接收到的任何进一步数据的位置。在物理存储器中的文件 的结尾处写入用于所述文件的任何新的数据,而不管所述新数据在文件内的逻辑位置如 何。存储器系统允许多个文件同时保持打开,例如4个或5个此类文件,并保存所述文 件中的每一者的写入指针P。不同文件的写入指针指向不同存储器区块中的位置。如果 当存储器系统对打开文件的数目的限制已经存在时主机系统想要打开新的文件,那么首 先关闭打开的文件中的一者,且接着打开新的文件。图13B说明通过主机将数据附加到图13A的先前写入但仍打开的文件的结尾。展示 数据187由主机系统添加到文件的结尾,其还在所述文件的数据的结尾处写入第二区块 185中。所附加的数据变成数据群组(F1,D1)的一部分,所述数据群组因此现在含有更多 数据,因为现存数据群组184与所附加数据189之间不存在逻辑或物理地址不连续性。 因此,完整的文件在FIT中仍表示为索引条目(F0,D0)、 (F1,D1)的序列。指针P的地址也 改变成所存储的附加数据的结尾的地址。图13C中展示将数据区块191插入到图13A的先前写入的文件中的实例。尽管主机 正将数据191插入到文件中,但存储器系统将所插入的数据附加在先前写入的文件数据 的结尾处的位置193处。当数据被插入到打开文件中时,没有必要以其逻辑次序来重写文件的数据,尽管这可以稍后在主机关闭所述文件之后在后台进行。由于插入的数据完 全存储在第二存储器区块185内,所以如果形成单个新群组(F1,D3)。但进行此插入导致 图13A的先前数据群组(FO,DO)被分成两个群组, 一个(F0,D0)在插入之前,且一个(F2,D1) 在插入之后。这是因为每当存在数据的逻辑不连续性时就需要形成新的数据群组,所述 不连续性例如在插入的开头Fl处且在插入的结尾F2处发生。群组(F3,D2)是物理地址 D2为第二区块185的开头的结果。群组(F1,D3)和(F3,D2)即使存储在同一存储器区块中 也是分别保存,因为存储在所述群组中的数据的偏移量中存在不连续性。具有插入的原 先文件于是在存储器系统FIT中由数据群组索引条目(FO,DO)、 (F1,D3)、 (F2,D1)、 (F3,D2) 以所述次序表示。从图13A、图13B和图13C的实例应注意,可在不使存储器中的任何 数据废弃的情况下,写入新的或现存文件的新数据。作为图13C中所说明的将数据插入到现存文件中的替代方案,只要数据已经插入, 主机就可将文件作为单独文件重写到存储器中。接着,存储器系统可将此单独文件视为 新的文件。旧的文件接着被主机删除,且存储器系统可通过回收旧文件存储在其中的空 间来作出响应,所述旧文件的数据现在是废弃的。图13D说明另一实例,其中原先以图13A中所示方式写入的数据的某一部分被更新。 展示数据文件的一部分195被更新。不是用所述更新重写存储器系统中的整个文件,而 是将文件的经更新部分197附加到先前写入的数据。先前写入的数据的部分199现在是 废弃的。在更新之后,文件在存储器系统FIT中由数据群组索引条目(FO,DO)、 (F1,D3)、 (F2,D1)、 (F3,D2)以所述次序表示。图13A的所述单个数据群组(FO,DO)再次被分成图13D 中的片段,在经更新部分之前的一个片段、经更新部分以及在经更新部分之后的一个片 段。回收由废弃数据占用的空间199是合乎需要的,但优选稍后完成此步骤,而不是作 为将文件数据写入到存储器中的过程的一部分。此回收通常将导致被存储的特定文件的 数据的更少数目的数据群组。在根据前面的描述内容的文件创建或修改之后,优选将每个文件的数据的偏移量维 持为以正确的逻辑次序连续。因此,举例来说,作为将数据插入到文件中的操作的一部 分,由主机提供的插入的数据的偏移量从紧接在所述插入物之前的偏移量开始是连续的, 且在所述插入物之后的已经在文件中的数据递增所插入数据的量。更新现存文件最常见 的是导致现存文件的给定地址范围内的数据由类似量的经更新数据代替,因此文件的其 它数据的偏移量通常不需要被代替。将注意,上文相对于图13所描述的所有数据分配和索引功能都由存储器系统的控制器执行。连同适当的命令一起,主机仅传送正被发送到存储器系统的文件ID和文件内的 数据的偏移量。存储器系统完成剩余的工作。以刚才描述的方式直接将文件数据从主机写入到快闪存储器的优势在于这样存储的 数据的颗粒度或分辨率可维持成与主机的相同。举例来说,如果主机应用程序写入具有 1字节颗粒度的文件数据,那么所述数据可也以1字节颗粒度写入到快闪存储器中。接 着以字节数目来测量数据在个别数据群组内的量和位置。gP,可在主机应用程序文件内 分别寻址的同一数据偏移单位在存储在快闪存储器中时也可在所述文件内分别寻址。接 着,区块内的同一文件的数据群组之间的任何边界在索引表中被指定为最近字节或其它 主机偏移量单位。类似地,区块内的不同文件的数据群组之间的边界以主机偏移量的单 位界定。对于较大区块存储器,本文使用术语"扇区"以表示ECC与之相关联的存储数据的 单位。扇区也是转移到快闪存储器和从快闪存储器转移的数据的最小单位。使用"页" 来表示区块内的存储器单元的单位,且"页"是最小编程单位。使用术语"元页"来表 示具有元区块的完整并行性的页。元页是最大编程单位。文件区块管理现将描述图11的文件到区块映射功能605的实例。当将来自外部主机或来自内部主 机处理,或从存储器中的某一其它位置复制(作为数据回收操作的一部分)的数据写入 存储器系统时,根据特定过程选择用于存储所述数据的目的地区块。在此过程中,基于 存储在区块中的文件数据的结构,来辨别某些类型的区块。接着,存储在存储器系统中 的每个文件被注释为处于若干状态中的一者,每个文件状态由里面存储有所述文件的数 据的区块的数目和类型来界定。当要为文件写入数据时,其当前状态和所允许的从一个 状态到另一状态的转变被控制以限制含有特定文件的数据(且还含有一个或一个以上其 它文件的数据)的区块的数目。这促进存储器区块的高效利用,并减少了稍后的对在整 个存储器中维持足够的经擦除区块以用于接受新的或经复制的数据来说必要的回收操作 的频率。在此实例中辨别的含有文件数据的区块的类型如下"文件区块",其已经完全编程,且含有单个文件的有效数据。所述区块还可含有一 些废弃数据。"编程区块",其已经部分编程,且含有仅单个文件的有效数据。 一些经擦除容量保 留在所述区块中。所述区块还可含有一些废弃数据。"共用区块",其已经部分编程,且含有两个或两个以上文件的有效数据。 一些经擦 除容量保留。所述区块还可含有一些废弃数据。"满共用区块",其已经完全编程,且含有两个或两个以上文件的有效数据。所述区 块还可含有一些废弃数据。"满编程区块",其为已经变满的编程区块在其含有文件的最新近写入的数据且还具 有一些废弃数据,且针对所述文件而存在的偏移地址的范围可由单个区块容纳时的转变 表示。如果待针对所述文件写入的下一数据超出单个区块可容纳的偏移地址范围,那么 满编程区块接着变成被指定为文件区块。满编程区块等效于现存逻辑区块地址(LBA) 系统的满混乱区块,因为文件的某些逻辑偏移量多次写入区块中, 一次是指定有效数据, 且至少另一次是为了指定废弃数据。另一种类型的区块是"经擦除区块",其中区块的总容量未经编程,且可用于接受数 据。当存储器充满或几乎充满数据时,通常通过连续回收正被使用的区块内存在的未经 使用的容量来维持指定最小数目的经擦除区块的集区。"分形区块"是涉及编程区块、共用区块或满共用区块的统称术语。文件的分形区 块含有所述文件的有效数据,以及未经编程的存储器容量、其它文件的有效数据或两者。 本文所述的技术的主要目的是通过管理被指定为接收文件的数据的活动区块的类型来使 存储器系统中的分形区块的数目减到最小。这减少了保存指定最小数目的经擦除区块所 必需的垃圾收集和数据合并(区块回收操作)的情况。因为内部复制数据以回收先前编 程的区块中的未经使用的容量的片段所花费的时间较少,所以数据可写入到存储器的速 率于是就增加。本文还使用额外术语来共同描述其它类型的区块"部分区块",其含有一些未经编程的容量, 一个或一个以上文件的有效数据,且可 含有一些废弃数据。编程区块和共用区块是部分区块的实例。"废弃区块"是含有一些废弃数据的文件区块或满共用区块。废弃区块不含有任何 经擦除容量,且含有有效数据和废弃数据两者。"无效区块"不含有有效数据。无效区块含有至少一些废弃数据,且可含有经擦除 容量,但不含有任何有效数据。图14A到图14E说明使用上文所列出的类型的区块的一些实例。在图14A中,文件 A的数据具有填满的区块661和663,以及部分填充的第三区块665。在此实例的每个区 块中,从左向右写入数据,首先填充区块661,接着填充区块663且其后写入到区块665的一部分中。区块665的剩余部分是可存储额外数据的未经编程的经擦除容量。区块661 和663是文件区块(根据上文所列出的定义),且区块665是编程区块。任何新的数据将 写入到区块665中,在编程指针P处开始。指针P随着数据被写入到区块而从左向右移 动,以总是指向区块中的下一可用存储位置。此指针为保留未经编程的经擦除容量的个 别区块(不管是当前活动的与否)而保存,使得待写入到区块的任何其它数据的物理地 址总是已知的。图14B的实例展示文件A被存储在文件区块662和满编程区块667中。根据上文针 对满编程区块给出的定义,区块667含有文件A的最新近写入的数据、 一些废弃数据且 没有未经使用的容量。还是根据所述定义,存储在两个区块662和667中的文件A的数 据的总量等于一个区块的存储容量。在编程指针P所示的区块667的结尾处写入文件A 的最后的数据。接收到的文件A的任何进一步数据将被编程到另一区块中。所述区块可 以是区块667中的文件A的数据被收集到其中的另一区块,因为由废弃数据占用的空间 将被回收。或者,可将额外数据写入到完全擦除的区块中。在任一种情况下,指针P移 动到新区块且位于文件A的额外数据的开始位置处。区块667于是变成文件区块。区块 667因此是暂时的,因为其仅在正如图14B中所示的状态的时间内存在。就在所述区块 完全充满文件A的数据前,所述区块是编程区块,且文件A的任何新数据被写入之后, 所述区块立即变成文件区块。图14C的实例包含区块669,其为共用区块,因为其含有另一文件B的数据以及当 前文件A的数据,加上一些未经编程的容量。在展示有编程指针P的位置开始,在文件 A的结尾处将新数据写入到区块669中。区块669是文件A的活动区块。其还可以是文 件B的活动区块,在这种情况下,可在编程指针P处写入文件A或B中的任一者的额外 数据。或者,单独区块(未图示)可以是文件B的活动区块。文件的数据可直接写入到已经含有另一文件的数据的部分区块的经擦除容量中,而 不是写入到经擦除区块中,以便以此形式较好地利用未经编程的容量。这在文件数据的 已知数量小于待写入的满区块的容量时尤其有用。搜索现存的部分区块以找到适合待写 入的数据的已知量的经擦除容量的量。将数据的页(或元页,如果使用元区块的话)的 数目与部分区块中未经编程的经擦除容量的页的数目进行比较。当以此方式对编程区块 的未经使用的经擦除空间进行编程时,所述区块被转换成共用区块。在图14D中,文件A存储在文件区块661、区块671的一部分和区块673的一部分 中。区块671是满共用区块,因为其充满两个文件A和B的数据。区块673是编程区块,与图14A的区块665类似。区块673是文件的活动区块,且指针P指向额外数据将首先 写入到的区块673内的未经使用的容量的位置。在图14E的实例中,文件A写入到满共用区块671和共用区块675的一部分中。区 块675含有第三文件C的数据。指针P指向额外数据将写入到的活动区块675的未经使 用的部分中的第一位置。尽管图14A到图14E的实例展示存储在多个区块中的文件A的数据,以便说明几个 不同类型的区块,但在许多情况下,文件可足够小以存储在更少数目的区块中,甚至单 个区块中。本文所述的技术也可应用于此类小文件。而且,较大的文件可占用三个以上 区块中的页。将注意,区块665、 667、 669、 671、 673和675是分形区块。希望使任何一个文件 的数据所占用的分形区块的数目减到最小,因为它们的存在增加了需要回收它们中的未 经使用的容量的可能性,且因此不利地影响了系统性能。未经使用的经擦除容量存在于 部分区块665、 669、 673和675中,但将新数据从主机直接写入到此空间可能不是高效 的,除非文件的未写入数据的数量已知且所述已知量与这些区块中的一者的未经使用的 容量匹配。最常见的情况是,用于特定文件的来自主机的数据的量不是己知的,所以这 些位的容量不容易被填满。因此,在回收操作期间,数据可能需要从另一区块移动到未 经使用的空间中,以便高效地利用存储器容量。区块669、 671和675含有一个以上文件 的数据,这意味着当所述文件中的一者被删除或其存储在共用区块中的数据变成废弃时, 将可能进行数据回收以回收由废弃数据占用的区块的容量。因此,为了减少耗费时间的数据回收操作的数目,允许特定文件的数据在任一时刻 仅存储在一个、两个或某一其它数目的分形区块中。在本文所描述的特定实例中,任何 一个文件的数据可存储在两个或更少(但不会更多)分形区块中。这样限定指定新的活 动区块来存储文件的数据的过程。将一组允许的文件状态中的一者指派给通过里面存储 有每个文件的数据的区块的类型界定的所述文件。当新的活动区块需要被指派以用于接收特定文件的数据时,例如当现存区块变满时,这样指定的区块的类型取决于文件的状 态且(在许多情况下)还取决于其它因素。图15的表中在本文所述的存储器操作概念的特定实施方案中,用分形区块和里面存 储有文件的数据的满编程区块的类型和组合,来给出十个允许的文件状态0到9的定义。 允许的文件状态中的每一者允许数据存储在不多于两个的分形区块或仅一个满编程区块 中。可与文件相关联的文件区块的数目没有限制。这些文件状态用于在文件数据由存储器从主机接收时且在数据在回收操作期间重新定位在存储器内时,为所述文件数据的存 储选择活动区块。在文件索引表(FIT) 613 (图ll)中(例如在所述文件的FIT记录的 标头中)监视并记录存储在存储器系统中的每个文件的状态,以及其它信息。只要状态 转变发生,FIT条目就更新以记录新的文件状态。图15中所界定的文件状态0到9之间的所引起的主要转变由图16的状态图说明, 且在图17的表中描述。这三个图提供存储器系统的优选操作的细节,且被相信足以独立 地完成这项工作。然而,现在将另外描述此操作的某些方面。如图15的表中所示,指定文件处于状态0,因为没有数据存储在分形区块中。仅另 一类型的区块是文件区块,所以所述文件具有仅写入到一个或一个以上文件区块的数据, 这最可能是临时情况,因为数据的量与区块容量之间需要精确性,或者所述文件不具有 存储在任何区块中的数据。后一种情况在存储器系统第一次接收到新文件的信息但尚未 写入所述文件的任何数据时发生。在任一种情况下,活动区块需要被指定以接收数据。 当具有未知长度的数据从主机被提供时,经擦除区块被指定为活动区块。 一旦数据写入 到所述经擦除区块中,文件就从状态0转变到状态2 (见图16),因为此区块已经变成活 动编程区块。但当在文件状态0下,且从主机接收到的新文件的数据具有小于区块的存储容量的 已知长度时,如果一个部分区块可用且具有足够的经擦除容量以用于存储已知量的数据, 那么将所述部分区块指定为活动区块。文件那时已经从状态0转变到状态3 (见图16)。 此部分区块可能是编程区块或共用区块。在已知数据长度与可用部分区块的剩余存储容 量之间实现可能的最好配合。如果没有具有用于已知量的数据的足够容量的部分区块, 那么将数据写入到经擦除区块,从而导致文件改为从状态0转变到状态2。状态2下的文件的特征在于分配编程区块来接收所述文件的额外数据。但如果所 述文件足够大,那么所述区块最终将变满,且那么需要指定另一活动区块。如果满区块 (现为文件区块)不含有废弃数据,那么文件返回到状态0,其中不指定活动区块。接 着将经擦除区块或部分区块指定为新的活动区块,视待存储的额外数据的量而定,如上 文所论述。但如果满区块含有废弃数据,且文件的最大偏移量小于可由单个区块容纳的 偏移地址的范围,那么根据上文给出的定义,所述区块是满编程区块。于是,优选的情 况是,通过将区块的有效数据复制到经擦除区块来压缩所述区块,且原先区块被擦除。 于是所得区块含有此有效数据和经擦除容量,其为部分区块。此新的部分区块接着成为 活动编程区块。文件的状态那时已经从状态2转变到状态1,且接着回到状态2 (见图16)。但如果在状态1时,接收到偏移地址超过单个区块可容纳的地址范围的文件的数据, 那么满编程区块变成文件区块。所述文件那时已经转变到状态O。作为部分区块,当文件处于状态2时存在的活动编程区块在回收操作期间可被选择 为来自源区块的另一文件的己知量的数据的目的地区块。编程区块的身份保存在部分区 块的列表上,其包含所述列表上的区块中的每一者中的可用经擦除容量。待从源区块复 制的数据的量配合于列表上的部分区块的经擦除容量。如果在回收操作期间,将当前文 件的编程区块选择为另一文件的数据的目的地区块,那么在所述另一文件的数据被复制 到其经擦除容量中之后,编程区块变成当前文件的活动共用区块。所述文件那时已经从 状态2转变到状态3 (见图15和图16)。另外,当文件处于状态2时,存在一种可能性写入到文件的编程区块中的数据可 能被复制到作为存储另一文件的数据的部分区块的另一区块中(作为回收编程区块的操 作的一部分)。在这种情形下,回收操作的目的地区块变成活动共用区块。文件已经从状 态2转变到状态4。文件的进一步数据现写入到所述共用区块中,所述共用区块为文件 的活动区块。当状态2下的文件的活动共用区块变满时,其被指定为满共用区块。接着,所述区 块包含在最多两个分形区块中,即满共用区块和编程区块。由于可能不分配另一个分形 区块以接收所述文件的数据,所以可将所述文件的数据从编程区块复制到经擦除区块中, 且此新的区块接着被指定为所述文件的活动编程区块。此类文件数据复制作为文件状态 转变的一部分在本文称为"数据转变",且在图16和图17中这样注释。文件那时已经从 状态4转变到状态8。在状态转变可被视为完成之前,任一数据转变均作为单个操作完成。这意味着如果 文件需要可将数据写入其中的活动区块,那么存储器不能执行其它操作,直到数据转变 的数据复制部分完成为止。此数据复制因此通常不随时间而与其它存储器操作交错。从文件状态4转变到状态3发生在其编程区块被指定为回收区块时。作为回收操作 的一部分,编程区块中的文件的数据移动到共用区块,其后共用区块变成所述文件的活 动区块。另外, 一旦状态4下的文件的活动共用区块变满,那么文件存储在两个分形区 块中。不能将另一区块分配为活动区块,直到所述分形区块中的一者被去除为止。因此 作为从状态4转变到状态7的一部分,编程区块中的数据移动(数据转变)到部分区块 的经擦除容量,从而去除分形编程区块。接着,所得共用区块变成文件的活动区块。当在状态3下时,文件的数据写入到活动共用区块中。如果文件的数据在回收操作期间从活动共用区块移动到部分区块的经擦除容量,那么目的地部分区块变成文件的进 一步数据写入到其的活动共用区块。文件那时已经从状态3转变到状态6。但如果待从 源编程区块移动的数据的量不能很好地配合部分区块列表上的部分区块的容量,那么共 用区块中的文件数据从所述区块移动到经擦除区块,且所述经擦除区块变成文件的活动 编程区块。文件那时己经从状态3转变到状态2。在此状态转变的过程中,活动区块的 分配包含进行从原先共用区块到新的经擦除区块的数据转变,所述新的经擦除区块接着 变成文件的活动编程区块。文件处于状态3下时的另一可能性是文件的数据写入到的活动共用区块变满。文 件那时不具有可写入进一步数据的活动区块,且已经转变到状态5。此状态在操作方面 与文件状态0的类似之处在于不存在文件的活动区块,但不同之处在于当文件处于状态 5时,文件的数据包含在满共用区块中。当处于状态0时,不存在含有文件的数据的分 形区块。状态0和状态5两者通常是临时状态, 一写入文件的额外数据,就从所述状态 发生转变。当处于状态5时,到达其它文件状态的可能转变与文件处于状态0时的转变类似, 只是当处于状态5时,文件的一些数据存储在共用区块中,且当处于状态O时,情况并 非如此。如果文件的额外数据的量是未知的,那么为所述数据分配经擦除区块,从而创 建活动编程区块并使文件转变到状态8。如果数据的量是已知的,那么在可进行良好的 大小配合时,将所述数据写入到部分区块的剩余容量中,从而导致部分区块变成活动共 用区块,且文件从状态5转变到状态7。文件状态8类似于状态2,区别只是当处于状态 8时,文件的数据存储在满共用区块中,且当处于文件状态2时,不存在此区块。文件 状态7类似地与文件状态3有关。当处于文件状态6且活动共用区块充满数据时,那么将文件存储在满共用区块和共 用区块中。由于此实施例中两个分形区块的限制已经达到,所以不能将另一区块分配为 编程区块或某一其它分形区块。因此,需要发生数据转变。来自共用区块中的一者的文 件的数据移动到部分区块中(文件转变到状态7),所述区块接着变成文件的活动共用区 块,或者如果所述数据不能与部分区块的经擦除容量合适地配合,那么数据移动到经擦 除区块中(文件转变到状态8)。当处于文件状态7时,活动共用区块可能变满。接着文件存储在两个满共用区块中, 转变到状态9。同样当文件处于状态7时,可将共用区块指定为回收区块,所以文件的数据接着需要重新定位。接着发生数据转变。如果文件的数据从共用区块移动到经擦除区块,所述 经擦除区块其后变成活动编程区块,那么到达文件状态8的转变已经发生。如果文件的 数据改为移动到部分区块中,那么部分区块接着变成共用区块,且文件状态保持7。文件状态9是稳定状态,因为文件可保持具有两个满共用区块持续一段时间,在这 段时间期间,没有额外数据写入到文件。但当文件处于所述状态时,不指定任何活动区 块。由于存在两个分形区块的限制,因此必需在额外数据可写入到文件之前作出数据转 变。在一种情况下,两个满共用区块中的一者中的文件的所有数据可移动到经擦除区块, 且此区块接着变成用于写入文件的新数据的活动编程区块。文件那时已经从状态9转变 到状态8。但如果所述两个满共用区块中的一者中的文件的数据的量加上文件的额外数 据的总和小于区块的容量,那么在部分区块中寻找足够的经擦除空间。如果找到,那么 来自所述满共用区块中的一者的文件的数据移动到所述部分区块中,且所述部分区块接 着变成用于写入文件的额外数据的活动共用区块。这导致从状态9到状态7的转变。当处于文件状态8时,文件的数据写入到活动编程区块,而文件的其它数据保持存 储在满共用区块中。当编程区块变满时,其变成文件区块,且不再有文件的活动区块。 状态8接着转变到状态5,其中进一步文件转变将经擦除区块或部分区块分配为新的活 动区块,如上文所述。但当处于状态8且文件的活动编程区块被选为回收操作的目的地区块时,文件状态 直接转变到状态7(在第一种情况下)。这创建正在活动以接收文件的新数据的共用区块。 或者,如果当处于状态8时,文件的活动编程区块被指定为回收操作的源区块,那么文 件的数据移动到部分区块中,所述部分区块接着变成用于写入文件的额外数据的活动共 用区块。文件状态也已经从状态8转变到状态7 (在第二种情况下)。除了图16和图17中所说明的初级文件状态转变之外,还发生一组次级文件转变。 图18和图19中展示这些转变。当存储在含有所关心的当前文件的数据的分形区块中的 一个文件的所有数据都变成废弃时,所述当前文件的这些次级转变发生。所述废弃数据 可以是当前文件的或某一其它文件的。由于文件由主机删除、先前针对文件写入的数据 由主机更新或文件的数据在回收操作期间被重新定位的缘故,数据可能变成废弃。举例 来说,在文件被更新的过程中,存储在共用区块中的文件的所有数据在都由写入到另一 区块中的新数据更新时变得废弃。在回收操作的实例中,如果共用区块中的文件的数据 (其不属于所关心的当前文件)被复制到另一区块中,那么其使共用区块中的另一文件的数据废弃。在这些情况下,使数据变得废弃导致里面存储有废弃数据的区块的类型改变,从而 导致文件的状态改变。当文件的数据需要新的活动区块时,用相对于图16和图17所述 的方式但基于新的文件状态来对其进行选择。图18的转变和图19中对发生的特定转变的识别提供对所述转变的全面描述。将注 意,这些转变趋向于减少含有文件的数据的分形区块的数目,因此简化文件状态。这些 转变趋向于致使文件的状态向不具有分形区块的状态O移动。文件状态的信息用于确定在待针对文件而编程数据且当前针对所述文件不存在活动 区块时被分配为所述文件的活动区块的区块的类型。图20的表在右边的列中总结了在中 间列中所陈述的条件下,处于状态0到9中的任何一者的文件的活动区块的分配。以所 示次序选择区块的类型。通过"最配合部分区块"表示具有已知量的数据可高效地利用 的经擦除容量的量的部分区块。如果不存在合适的部分区块,那么最常见的是选择经擦 除区块。但如果不能针对处于状态2或状态3中的任一者的文件识别最配合部分区块, 那么分配"最大部分区块",其为不具有足够的经擦除容量来保存待写入的整个量的数据 的区块,但其是可保存最大量的所述数据的区块。所述文件接着改变其状态,且新的状 态控制区块的选择以接收不配合到最大部分区块中的剩余量的数据。但如果由于数据的 量和部分区块中的可用容量的缘故,使用最大部分区块使数据可能将在两个以上区块上 展开,那么将经擦除区块分配为活动区块。在图2中所示的示范性存储器系统中,上文所述的操作可由控制器11的处理器27 通过执行存储的固件来实行。回收区块容量如上文所述,区块管理的一部分包含回收区块中的未经使用的容量以用于存储新的 数据。当存储在存储器系统中的数据的量远小于其容量时,这没有特别的关系,但存储 器系统优选被设计成如同其充满数据那样操作。这意味着,对于仅含有废弃数据的区块 以及含有有效数据但也具有一些废弃数据和/或未经写入的经擦除页的其它区块,可用回收此未经使用的容量的方式对其进行处理。目的是为了尽可能完全地利用存储器系统的 存储容量,而同时使对系统的性能的不利影响减到最小。在图11的总体系统操作图中, 区块的回收被注释为617。将指定用于回收操作的区块(源区块)中的任何有效数据复制到具有足够经擦除容 量以存储所述有效数据的一个或一个以上区块(目的地区块)中。根据上文所述的区块 管理技术来选择目的地区块。将存储在源区块中的每个文件的数据复制到基于文件的状态和其它因素而选择的一种类型的区块,如上文所述。图21A到图21D中给出作为回收 操作的一部分的不同类型的文件之间的数据复制的实例。在图21A中,作为实例,说明对两个部分区块681和683的回收操作。区块681是 里面存储有文件A的有效数据同时还含有未存储有数据的经擦除容量的编程区块。视文 件A的状态而定, 一个可能的回收操作是将区块681的文件A的数据复制到已经包含不 同文件B的数据的另一部分区块685的可用经擦除容量中,因此使其成为共用区块。接 着,区块681中的数据群组不再在FIT中参考到,且将所述区块注释为废弃。当存储在 区块681中时,文件A具有状态2、 4或8 (见图15)中的包含编程区块的一者。数据接 着可移动到另一分形区块,而所述文件保持写入到最多两个分形区块。在复制到区块685 之后,文件A已经转变到状态3、 4、 6或7中的包含存储在共用区块中的文件的数据的 一者,这视里面存储有文件的其他数据的区块的类型而定。图21A的区块683是通过将其存储的文件C和D的数据复制到含有文件E的数据的 编程区块687 (其于是变成共用区块)的经擦除容量中而回收的共用区块。区块683中 的文件C和D的数据接着废弃,所述区块本身也废弃。文件C和D中的每一者的状态未 改变,因为数据已经从一个共用区块移动到另一个共用区块。然而,文件E的状态已经 从2改变到3,或从8改变到7。或者,文件C和D中的每一者的数据可从不同区块向 彼此移动,且无需必然被复制到共用区块的可用空间。所述文件的状态接着可能转变到 其它状态。图21B中说明对示范性区块689和691的回收操作。这些区块中的每一者是废弃区 块,因为其充满数据(有效的和废弃的)。区块689是含有文件F的数据的文件区块,其 一部分是废弃的,且其余部分是有效的。这可能(例如)在文件F的更新期间发生,其 中在具有与文件的现存数据相同的逻辑偏移量的文件结尾处物理地写入新数据,且所述现存数据接着变成废弃。在此实例中,将文件F的数据复制到含有文件G的数据的编程 区块693的经擦除容量中,导致区块693的类型改变成共用区块。或者,文件F的有效 数据可写入到经擦除区块,这接着将导致所述区块成为编程区块。图21B的区块691是含有文件H的无效数据和文件I的有效数据的满共用区块。在 此实例中,文件I的有效数据从区块691复制到经擦除区块695。区块695接着变成编程 区块。或者,如果可找到良好配合,那么文件I的数据可写入到含有另一文件的数据的 部分区块。目的地区块将视回收操作时文件I的状态而定。由于图21A和图21B中所示的回收操作的四个特定实例中的每一者,存储在两个部分区块中的数据组合到一个区块中,从而使所述两个区块中的另一个区块仅具有废弃数 据。它们于是为无效区块。如图21C中所说明,接着通过擦除所述区块来回收原先区块 681、 683、 689和691中的每一者的整个空间。经擦除区块是回收无效区块的结果。图21D展示里面存储有文件J的数据的文件区块697的实例。当文件J被主机删除 时,区块697中且可能还在其它区块中的文件J的数据变得废弃。区块697接着变成无 效。回收无效区块为系统经擦除区块集区提供经擦除区块。从存储器中删除文件通常还导致一个或一个以上分形区块(例如共用区块或满共用 区块)中的文件的数据变成废弃。接着,所述区块经受回收操作,因为另一文件的剩余 有效数据将小于区块的存储容量,且可能是较小的量。图22的流程图概括地展示回收操作。如步骤701所指示,视特定实施例而定,针对 部分、废弃和无效区块保存一个或一个以上列表。可将所述列表保持为区块列表615 (图 11)的一部分。根据一种存储器操作技术,在启动存储器系统时(例如当第一次施加功 率时)建立此区块列表。此列表可包含一次启用一个回收区块的选择的区块的其它信息, 例如每个区块中的有效数据的量和每个区块中的经擦除存储器的量。通常用所述区块的 页或元页(如果使用元区块的话)的数目来测量这些数量。优选的替代技术是将这些列 表保存在非易失性存储器中,并且只要其状态改变就添加或更新所述列表中的区块的条 目。通过此技术,就没有必要在初始化存储器系统时扫描区块并建立列表。作为在列表 上保存所有部分、废弃和无效区块的替代方案,仅包含具有在某个设置的阈值量之下的 较小量的有效数据的那些区块,因为选定回收区块的一个特征在于其具有较少或不具 有需要被复制的有效数据。许多回收操作中必需的将数据从一个区块复制到另一区块要 花费相当量的时间,所以通常首先对具有较少量的待复制数据的那些区块执行这个复制 操作。此类区块的列表随着数据被写入、更新、移动、删除等等而不断地改变。导致区块 将其类型改变成部分、废弃和无效且从部分、废弃和无效改变的变化导致图22的步骤 701所保存的列表改变。个别地存储在此类区块中的有效数据的量的变化和经擦除容量 的量的变化也在区块列表615 (图ll)中注释。在步骤703中,优选从经更新列表上的区块中识别出单个回收区块以作为按顺序下 一个要回收的区块。如果是部分或废弃区块,那么其为待复制到被称为目的地区块的另 一区块中的有效数据的来源。下文描述几种可用于选择源区块的特定技术。下一步骤705接着考虑到需要响应于主机的命令而执行的存储器操作,而确定当前执行回收操作是否合适。如果主机已经向存储器系统发送了闲置命令,或指示将存在主 机不会期望存储器系统执行特定操作的某一时间段的某类似物,那么存储器系统在前台 随意实行额外开销操作,包含回收操作。即使存储器系统忙于响应于主机命令而将数据 写入到存储器或从存储器读取数据,回收操作(尤其是其数据复制)也可与数据写入和 读取操作交错进行。2005年10月25日申请的Alan Sinclair的第11/259,423号和2005 年12月19日申请的Alan Bennett等人的第11/312,985号美国专利申请案中描述此类交 错。如果步骤705确定可实行回收操作,那么过程视所识别的回收区块是否含有有效数 据而不同,且如果含有,那么视其是否含有一个以上文件的有效数据而不同。如果是部 分区块或废弃区块,那么根据定义其将含有有效数据,且如果是共用区块或满共用区块, 那么其将含有两个或两个以上文件的有效数据。步骤707确定回收区块中是否存在有效 数据。如果存在必须移动的有效数据,那么在下一步骤709中,识别单个文件的数据, 且识别目的地区块以接收所述数据。通过上文相对于图15到图17所述的过程来识别目 的地区块,以便保存存储在两个或更少分形区块(在此实例中)中的有效数据所属的文 件的所有数据。接着开始将一个文件的有效数据从源回收区块复制到目的地区块,如步 骤711所指示。在复制这些数据之后,过程返回到步骤707以确定另一文件的数据是否 保留。如果是,那么针对额外数据重复步骤709和711的过程。独立于对不同文件的数 据的早先选择而选择目的地区块。这继续进行,直到在步骤707中确定源区块中不再有 待移动的数据为止,在所述情况下,源区块可通过步骤713擦除。接着,可将此区块放 置到经擦除区块集区中,以用于存储新的数据。返回到步骤707,如果源区块不含有有效数据(这是针对无效区块的情况),那么没 有待移动的有效数据。源区块仅需要被擦除。因此,在这种情况下,过程绕过步骤709 和711,如图22中所示。在图22的过程的第一实施例中,步骤701保存部分、废弃和无效区块的单个列表。 在列表上的各个条目中包含区块中的有效数据的量。在步骤703中,从所述列表选择的 作为回收区块的区块是具有最少有效数据的区块。如果列表上存在一个无效区块,那么 将首先选择所述区块,因为其不具有有效数据。如果列表上存在许多无效区块,那么选 择已经在那里最长时间的一个区块。如果列表上没有无效区块,那么将具有最少量的有 效数据的区块选择为回收区块。通过选择列表上的所有区块中的具有最少量的有效数据 的区块,回收操作于是与要将更多有效数据从一个区块复制到另一个区块时相比花费更少的时间。因此,存储器系统的其它操作(例如将数据写入到存储器和从存储器读取数 据的速度)保持在高速率。在较少以存储器性能为代价的情况下获得新擦除的区块。图22的用于基于单个列表上的分形区块中的有效数据的量而选择源区块的过程的 此第一实施例具有实施起来相对较简单的优势。然而,可通过还考虑部分区块的值来改 进此过程。部分区块具有可将数据写入其中的经擦除容量,而废弃区块和无效区块都不 含有任何经擦除容量。在废弃区块可用于存储新数据之前,任何有效数据必须从它们中 移出并移动到另一区块中,使得它们可接着被擦除,且可用于存储新的数据。但部分区 块在不必忍受回收操作的额外开销的情况下具有可将数据写入其中的经擦除容量。举例 来说,当部分区块还含有大量可将数据写入到其中的经擦除容量时,只因为所述部分区 块含有最少量的有效数据就将其回收可能不是有益的。因此,在图22的过程的其它实施例中,基于存在于部分区块中的有效数据的量和经 擦除容量的量两者,将部分区块选择为回收源区块的候选区块。图23中展示部分区块中 的数据的成分。区块(可能是元区块)具有某一数目的一个或一个以上含有有效数据的 页(可能是元页)和一个或一个以上被擦除且可将数据写入到其中的其它页。部分区块 还可含有一个或一个以上含有废弃数据的其它页,如图23的实例中所示。在图22的过程的这些其它实施例中,部分区块优选由步骤701保存在与废弃和无效 区块的列表独立的列表中。当部分区块具有较少经擦除容量(这意味着它们在其目前状 态下不是非常有用)和较少量的需要移动的有效数据时,所述部分区块朝其列表的顶部移动,以用于回收操作。此类区块将主要含有废弃数据。相反地,具有大量经擦除容量 (意味着它们潜在地可用于存储数据)和大量待移动有效数据的部分区块将最不可能被 识别为回收区块的候选区块。回收具有经擦除容量的部分区块不会向存储器系统添加与 回收废弃区块相同量的存储容量。无效区块对回收来说显然是最有吸引力的区块,因为 它们不具有有益的经擦除容量,且不具有需要被复制的有效数据。在图22的回收区块识别步骤703的第二实施例中,步骤701保存三个单独列表,一 个列表用于部分、废弃和无效区块中的一者。如果存在无效区块,那么从无效区块列表 中选择回收区块,直到所述列表上不再有区块为止。列出无效区块没有特定的次序,只 是可能是以先入先出(FIFO)的次序,使得已经在列表上最长时间的无效区块最先被选 择。接下来,如果不存在无效区块,那么从废弃区块列表中选择所述列表上的所有区块 中具有最少量的有效数据的区块。如果无效或废弃列表上都没有区块,那么在步骤703中,将部分区块列表上的区块选为回收区块。尽管可将部分区块选为具有最少量有效数据的区块,但优选以认识到其 经擦除容量的益处的方式对部分区块进行分级。为此目的,可针对每个部分区块计算"回 收增益",如下回收增益=(S-kE)/V(1)其中S是用区块的存储页的数据的总数表示的区块大小,E是可将数据写入到其中 的经擦除容量的页的数目,且V是含有需要移动到另一区块的有效数据的页的数目。包 含常数k以对区块的经擦除容量的正效应进行加权,但可设置为l。随着kE的值增加, 所得回收增益降低。随着V的值上升,回收增益也下降。在步骤703中选择具有最高回 收增益值的部分区块作为回收区块。可替代地使用其它数学表达式来用E和V界定回收 增益,其平衡了含有有效数据对系统操作的不利与具有经擦除容量的益处。每当区块有 变化时,例如每当将数据写入到其经擦除容量中时,可计算回收增益,并将其存储为由 文件目录或FIT保存的信息的一部分。图25中说明此第二实施例,其展示从单独的部分、废弃和无效区块列表(如通过图 22的步骤701保存)选择回收区块(图22的步骤703)的方法。步骤721首先确定无效 区块列表上是否列出了区块。如果存在多个此类区块,那么通过步骤723将已经在所述 列表上最长时间的区块选择为回收区块。如果无效区块列表上不存在区块,那么通过步 骤725确定废弃区块列表上是否存在条目。如果是,那么在废弃区块列表上有一个以上 区块的情况下,通过步骤727选择具有最少量的有效数据的区块作为回收区块。如果步 骤725确定废弃区块列表上没有条目,那么在步骤729中查阅部分区块列表。当部分区 块列表上存在一个以上区块时,选择具有最高回收增益的一个区块作为回收区块。回收 增益(例如)通过使用上文的等式(1)来考虑区块中的有效数据的量和经擦除容量。如 果部分区块列表上无任何内容,那么通过返回到步骤721使过程重复,直到所述列表中 的一者上出现区块为止。在选择回收区块之后,处理进行到图22的步骤705。图24的流程图展示第三实施例。图22的步骤703的执行也由步骤741开始,所述 步骤741在通过图22的步骤701保存的无效区块列表上寻找条目。如果无效区块列表上 存在一个以上条目,那么通过图25的步骤743将时间最长的区块选为回收区块。如果无 效区块列表上没有条目,那么下一步骤745确定废弃区块列表上是否存在条目。如果是, 那么随后的步骤与图24的实施例的不同之处在于如果部分区块列表上也存在至少一个条目,那么确定最好是从废弃区块列表还是从部分区块列表选择回收区块。步骤747识别废弃区块列表上含有最少量的有效数据的区块。接着通过步骤749确 定部分区块列表上是否存在至少一个区块,且如果是,那么在步骤751中识别具有最少 量的有效数据的区块。接着,下一步骤753在从废弃区块列表识别的一个区块与在部分 区块列表上识别的一个区块之间作出选择。为此目的,针对在步骤751中从部分区块列 表中识别的区块,计算数量(V + kE), V、 E和k项与上文所使用的相同。将此数量与步 骤747中从废弃区块列表中识别的区块中的有效数据的量V进行比较。如果部分区块的 (V+kE)数量大于废弃区块的V,那么在步骤755中,将所述废弃区块选为回收区块。但 如果废弃区块的V大于所识别的部分区块的(V + kE)数量,那么在步骤757中将所述部 分区块选为回收区块。通过在将所识别的部分区块的经擦除容量数量kE与仅所识别的废弃区块的有效数 据V进行比较之前,将所述kE添加到其有效数据V,所述过程偏向于选择废弃区块。 与所识别的废弃区块具有相同量的有效数据的所识别的部分区块将保留,因为其仍具有 将数据存储在其经擦除容量中的潜在用途。事实上,有效数据的量比废弃区块的有效数 据的量小kE量的部分区块将保留。返回到图25的步骤745,如果废弃区块列表上没有条目,那么在步骤759中确定部 分区块列表上是否列出了区块。如果没有,那么过程返回到步骤741,以重复直到所述 三个列表中的一者上放置有区块为止。如果列出了多个部分区块,那么在步骤761中, 选择具有最少量有效数据的区块作为回收区块。或者,通过使用如第二实施例(图24)的相对于步骤731描述的回收增益来选择部分区块。第三实施例可替代地仅利用两个列表。第一列表是含有具有废弃数据且不具有经擦 除存储器容量的区块的条目的废弃区块列表。不是使用如图25中所示的单独的无效区块 列表,而是将无效和废弃区块两者放置在单个"废弃"区块列表上。所述区块可视情况 含有有效数据。所述列表中的每个条目具有含有界定与其有关的区块中的有效数据的量 的值的字段。根据这些字段中的值来对列表中的条目进行排序。因此,将含有废弃数据 且不含有有效数据的区块(无效区块)在此第一列表的顶部处分组在一起。第三实施例的此替代方案中的第二列表是部分区块列表,其含有具有一些经擦除存 储器容量的区块的条目。所述区块可视情况含有有效数据。所述列表中的每个条目具有 含有界定与其有关的区块中的有效数据的量的值的字段。根据这些字段中的值对列表中 的条目进行排序。可通过图25的步骤753的技术,从第一或第二列表的顶部(具有最少量的无效数据的区块)选择区块。图26的表陈述放置在部分和废弃区块列表上以用于根据第三实施例的此修改而进 行回收操作的区块的类型的细节。为了放置在部分区块列表上,区块含有有效数据和经 擦除容量两者。区块中是否存在任何废弃数据是无关紧要的。为了放置在废弃区块列表 上,区块含有废弃数据以及有效数据或经擦除容量但不是两者。在图2中所示的示范性存储器系统中,可由控制器11的处理器27通过执行存储的 固件来实行上文相对于图22、图24和图25所述的过程。总结尽管已经相对于本发明的示范性实施例描述了本发明的各个方面,但将了解,本发 明有权在所附权利要求书的整个范围内受到保护。
权利要求
1.一种操作非易失性存储器系统的方法,所述存储器系统具有分组成存储器单元区块的数据存储单元,所述区块在重新编程之前被擦除,所述方法包括保存包含区块的至少一个列表,所述区块个别地含有小于所述区块的数据存储容量的某一量的有效数据,基于以下标准从所述至少一个列表中选择区块所述区块中的有效数据相对于所述至少一个列表上的其它区块中的有效数据的量的量,将所述有效数据从所述选定区块复制到另一区块中,以及其后擦除所述选定区块,借此所述经擦除的选定区块变成可用于存储其它数据。
2. 根据权利要求l所述的方法,其中选择区块包含仅基于所述区块中的有效数据相 对于所述至少一个列表上的其它区块中的有效数据的量的量,来从所述列表中选择 所述区块。
3. 根据权利要求l所述的方法,其中选择区块包含从所述至少一个列表中选择其中 相对于所述列表上的其它区块中的有效数据的量具有最少量的有效数据的区块。
4. 根据权利要求l所述的方法,其中从所述至少一个列表中选择区块另外包含基于 所述区块中的经擦除存储容量相对于所述至少一个列表上的其它区块中的经擦除 存储容量的量的量,来从所述至少一个列表中选择所述区块。
5. —种操作非易失性存储器系统的方法,所述存储器系统具有分组成存储器单元区块 的存储单元,所述区块在重新编程之前被擦除,所述方法包括保存包含区块的至少一个列表,所述区块个别地含有某一量的有效数据加上废弃 数据或一些经擦除的数据存储容量或两者,通过考虑所述至少一个列表上的所述区块的有效数据和所述经擦除存储容量的 相对量,来从所述至少一个列表中选择区块,以及将所述有效数据从所述选定区块复制到另一区块中,且其后擦除所述选定区块,借此所述经擦除区块变成可用于存储其它数据。
6. 根据权利要求5所述的方法,其中从所述至少一个列表中选择所述区块包含权衡 相对于所述至少一个列表上的其它区块具有较低量的有效数据的选定区块的益处 与相对于所述至少一个列表上的其它区块具有较高量的经擦除存储容量的选定区 块的益处。
7. —种操作非易失性存储器系统的方法,所述存储器系统具有分组成存储器单元区块的存储单元,所述区块在重新编程之前被擦除,所述方法包括-保存任何区块的第一列表,所述区块个别地含有某一量的有效数据加上废弃数据,但不具有经擦除的数据存储容量,确定所述第一列表上是否存在一个或一个以上区块,如果是,那么基于所述第一列表上的所述区块中的有效数据的量,从所述列表中识别第一区块,保存任何区块的第二列表,所述区块个别地含有某一量的有效数据加上一些经擦除的数据存储容量,确定所述第二列表上是否存在一个或一个以上区块,且如果是,那么基于所述列 表上的所述区块中的有效数据的量和经擦除的存储容量的量两者,来从所述第二列 表中识别第二区块,基于从回收所述区块到操作所述存储器系统的值,选择所述第一区块或第二区 块,以及将所述有效数据从所述选定区块复制到另一区块中,以及其后擦除所述选定区块,借此所述选定的第一或第二区块已经被回收作为可用于 存储其它数据的经擦除区块。
8. —种操作非易失性存储器系统的方法,所述存储器系统具有分组成存储器单元区块 的存储单元,所述区块在重新编程之前被擦除,所述方法包括保存包含任何区块的第一列表,所述区块个别地含有某一量的有效数据加上废弃 数据,但不具有经擦除的数据存储容量,确定所述第一列表上是否存在一个或一个以上区块,如果是,那么从所述第一列 表中识别所述列表上的所述区块中具有最少量的有效数据的第一区块,保存包含任何区块的第二列表,所述区块个别地含有某一量的有效数据加上一些 经擦除的数据存储容量,确定所述第二列表上是否存在一个或一个以上区块,且如果是,那么从所述第二 列表中识别所述列表上的所述区块中具有最少量的有效数据的第二区块,在针对所述第二区块中的经擦除的数据存储容量的量调整所述第二区块中的有 效数据的量之后,基于所述第一或第二区块中包含的有效数据的量,来选择所述第 一或第二区块,以及将所述有效数据从所述选定区块复制到另一区块中,以及其后擦除所述选定区块,借此所述选定的第一或第二区块已经变成可用于存储其它数据的经擦除区块。
9. 一种操作非易失性存储器系统的方法,所述存储器系统具有分组成存储器单元区块 的存储单元,所述区块在重新编程之前被擦除,所述方法包括基于所述区块中的至少一些区块的内容,选择用于回收操作的区块,以及 其后通过将所述选定区块的有效数据复制到另一区块中且接着擦除所述选定区 块,来回收所述选定区块。
10. 根据权利要求9所述的方法,其中选择用于回收操作的区块包含基于所述区块中至 少一些个别地包含某一数量的有效数据的区块的内容来进行所述选择。
11. 根据权利要求10所述的方法,其中选择用于回收操作的区块另外包含基于所述 区块中至少一些个别地包含所述个别区块中剩余的用于存储数据的某一量的经擦 除容量的区块的内容来进行所述选择。
12. 根据权利要求11所述的方法,其中选择用于回收操作的区块另外包含基于所述区 块中至少一些个别地不包含废弃数据的区块的内容来进行所述选择。
13. 根据权利要求9所述的方法,其中选择用于回收操作的区块包含基于所述区块中 至少一些个别地包含所述个别区块中剩余的用于存储数据的某一量的经擦除容量的区块的内容来进行所述选择。
14. 根据权利要求9所述的方法,其中选择用于回收操作的区块包含基于所述区块中 至少一些个别地不包含废弃数据的区块的内容来进行所述选择。
15. —种可重新编程的非易失性存储器系统,其包括非易失性存储器单元区块,其特征是在将数据重写到其中之前被擦除,以及 控制器,其在功能上与所述存储器单元区块连接,且所述控制器操作以基于存储 在所述区块中的至少多个区块中的有效数据的相对量,来选择存储容量的一部分未 由有效数据占用的区块进行回收以用于存储有效数据,且接着致使所述选定区块的 所述有效数据复制到另一区块。
16. 根据权利要求15所述的存储器系统,其中所述控制器进一步操作以从所述存储器系统区块中的至少多个区块中选择含有最少量的有效数据的区块进行回收。
17. 根据权利要求15所述的存储器系统,其中所述控制器进一步操作以基于所述区块中的至少多个区块中个别地剩余的供数据存储在其中的经擦除容量的量,来选择区 块进行回收。
18. 根据权利要求17所述的存储器系统,其中所述控制器进一步操作以从所述区块中的至少多个不含有废弃数据的区块中选择区块进行回收。
19.一种可编程的非易失性存储器系统,其包括-非易失性存储器单元阵列,其组织成可同时擦除的存储器单元区块,以及 控制器,其可操作地与所述存储器阵列连接,所述控制器操作以保存包含任何区块的第一列表,所述区块个别地含有某一量的有效数据加上废 弃数据但不具有经擦除的数据存储容量,确定所述第一列表上是否存在一个或一个以上区块,如果是,那么从所述第一 列表中识别所述列表上的所述区块中具有最少量的有效数据的第一区块,保存包含任何区块的第二列表,所述区块个别地含有某一量的有效数据加上一 些经擦除的数据存储容量,确定所述第二列表上是否存在一个或一个以上区块,如果是,那么从所述第二 列表中识别所述列表上的所述区块中具有最少量的有效数据的第二区块,在针对所述第二区块中的经擦除的数据存储容量的量调整所述第二区块中的 有效数据的量之后,基于所述第一或第二区块中包含的有效数据的量,来选择所 述第一或第二区块,以及将所述有效数据从所述选定区块复制到另一区块中,以及其后擦除所述选定区块。
全文摘要
用每个文件的唯一标识和所述文件内的数据偏移量将主机系统数据文件直接写入到大型擦除区块快闪存储器系统,而无需使用所述存储器的任何中间逻辑地址或虚拟地址空间。通过所述存储器系统的控制器而不是通过主机将关于所述文件存储在所述存储器中的哪个位置的目录信息保存在所述存储器系统内。选择一种类型的存储器区块以接收文件的额外数据,所述类型取决于所述文件的数据已经被写入其中的区块的类型。通过以含有最少量的有效数据的区块开始依次选择区块的过程,来选择含有数据的区块以用于从其中回收任何未经使用的容量。
文档编号G06F12/02GK101233499SQ200680028318
公开日2008年7月30日 申请日期2006年8月1日 优先权日2005年8月3日
发明者巴里·赖特, 艾伦·韦尔什·辛克莱 申请人:桑迪士克股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1