具有连续逻辑地址空间接口的直接数据文件系统的使用的制作方法

文档序号:6456888阅读:160来源:国知局
专利名称:具有连续逻辑地址空间接口的直接数据文件系统的使用的制作方法
技术领域
本申请案大体上涉及非易失性存储器系统(例如,可再编程的半导体快闪存储器) 的存储数据且与连接的主机装置传递数据的操作,且更确切地说涉及其中数据文件对象 的管理。
背景技术
在较早代的商用快闪存储器系统中,将存储器单元的矩形阵列划分为大量的单元群 组,其每一者存储标准磁盘驱动器扇区的数据量,即512个字节。每一群组中也通常包 括额外量的数据(例如,16个字节)来存储误差校正码(ECC),且可能包括与用户数据 及/或与其中存储用户数据的存储器单元群组有关的其它额外开销数据。每一此群组中的
存储器单元为可一起擦除的最小数后的存储器单元。亦即,擦除单位事实上是存储一个 数据扇区及所包括的任何额外开销数据的存储器单元的数目。在第5,602,987号及第 6,426,893号美国专利中描述了此类型存储器系统的实例。需要在用数据再编程存储器单 元之前擦除存储器单元是快闪存储器的一特征。
最常见以与例如个人计算机、相机或类似装置等多种主机可移除地连接的存储卡或 快闪驱动器的形式提供快闪存储器系统,但也可在所述主机系统内嵌入快闪存储器系统。 当将数据写入到存储器时,主机通常对存储器系统的连续虚拟地址空间内的数据的扇区、 丛集或其它单位指派唯一逻辑地址。与磁盘操作系统(DOS) —样,主机将数据写入到 存储器系统的逻辑地址空间内的地址并从所述地址读取数据。存储器系统内的控制器将 从主机接收的逻辑地址转译为存储器阵列内的物理地址(其中实际上存储着数据),且接 着记录这些地址转译。存储器系统的数据存储容量至少与可在对存储器系统界定的整个 逻辑地址空间上寻址的数据的量一样大。
在较后代的快闪存储器系统中,将擦除单位的大小增大为足够存储器单元的块以存 储多个扇区的数据。即使与存储器系统连接的主机系统可以例如扇区等小的最小单位编 程及读取数据,也将大量的扇区存储于快闪存储器的单个擦除单位中。当主机更新或替 换数据的逻辑扇区时, 一块内的一些数据扇区通常变得过时。因为必须先擦除整个块然 后才能覆写存储在块中的任何数据,所以通常将新数据或经更新数据存储于已经擦除且 具有用于所述数据的剩余容量的另一块中。此过程使得原始块具有过时数据,其占据着存储器内的宝贵空间。但是如果存在留存在所述块中的任何有效数据,则不能擦除所述 块。
因此,为了更好地利用存储器的存储容量,通常通过将有效部分块的量的数据复制 到一己擦除块中来合并或收集所述数据,以便接着可擦除从其复制这些数据的块且可重 新使用其整个存储容量。也需要复制数据以便以一块内的数据扇区的逻辑地址的次序将 所述数据扇区分组,因为这会使读取数据及将经读取数据传递到主机的速度提高。如果 此数据复制发生得太频繁,则存储器系统的操作性能可能降级。这尤其在存储器的存储 容量比可由主机通过系统的逻辑地址空间寻址的数据量大不了多少(典型情况)的情况 下会影响存储器系统的操作。在此情况下,可能需要先进行数据合并或收集然后才能执 行主机编程命令。于是编程时间增加。
在逐代的存储器系统中,块的大小不断增大以便增加可存储于给定半导体区域中的 数据的位的数目。存储256个数据扇区或256个数据扇区以上的块变得常见。另外,不 同阵列或子阵列的两个、四个或四个以上块经常逻辑上一起链接成元块以增大数据编程 及读取时的并行程度。伴随所述大容量操作单位而来的是高效地操作存储器系统的挑战。

发明内容
上文交叉引用的专利申请案描述将由主机供应的数据文件对象直接存储于快闪存储 器中的存储器系统。这与大多数当前商用系统不同,在大多数当前商用系统中,如上文 在背景技术中所描述,在主机与存储器系统之间的接口处存在连续逻辑地址空间。利用 此"LBA接口",个别数据文件对象的数据最普遍地存在于大量存储器单元块中。所述存 储器系统未将由主机供应的文件对象的数据(通常各自在多个数据扇区的丛集中)与个 别数据文件对象相关联。相反,所述主机仅对正被供应到存储器系统以进行存储的数据 指派所述LBA接口内的当前未对有效数据指派的未用逻辑地址。所述存储器系统接着指 派其各个存储器单元块以用使存储器系统高效地操作但不了解所述丛集所属于的数据文
件对象的方式存储所接收的数据。典型结果可为,将个别文件对象的数据分段为存储在 许多不同存储器单元块中的片段。
另一方面,在上文交叉引用的许多专利申请案中,存储器系统不经由LBA接口而从 主机直接接收数据文件对象,使得存储器系统可以改进其性能的方式将个别文件的数据 分配给其存储器单元块。举例而言,因为所述数据所属于的文件是己知的,所以存储器 系统可限制存储任一数据文件的存储器单元块的数目。具体地说,存储器系统可约束存 储一文件对象的数据的也含有另一文件对象的数据的存储器单元块的数目。因此,可控制文件数据的分段。这使得必须被重新定位在共用块之外以回收过时数据空间的有效文 件数据的量最小化,所述过时数据空间是在删除或修改存储于所述块中的第二文件的数 据时产生。这使得快闪存储器系统的性能显著改进,且其使用寿命期间的耐久性显著改 进。
此改进的性能及耐久性也可在将直接数据文件管理系统实施于主机而非存储器系统 中的情况下实现。主机与存储器系统之间仍可存在LBA接口。但并非将丛集中的文件数 据分配给此单个相连逻辑地址空间,而是将文件数据分配给此空间内的对应于存储器系 统内的物理块的逻辑地址块。在上文交叉引用的专利申请案中被描述为在快闪存储器系 统内相对于物理存储器单元块实施的所述文件数据管理技术改为在主机内相对于主机/ 存储器系统接口的逻辑地址空间内的相连地址的逻辑块进行。所述存储器系统于是可为 当前商业上普及的具有LBA接口的常规存储器系统。主机内的直接数据文件管理系统的 操作可限制含有来自一个以上文件的数据的逻辑块的数目,正如在存储器系统中操作的 直接数据文件系统限制含有来自一个以上文件的数据的物理存储器单元块的数目。个别 文件对象的数据在物理存储器单元块中的分段类似地减少,但是通过管理映射到物理存 储器单元块中的逻辑地址空间的块而实现。
因此,LBA接口处的逻辑块优选映射到存储器系统的具有相同数据存储容量及其它 相似性的物理块中。具体地说,如果直接数据文件系统在存储器系统内操作,则主机将 逻辑块配置成在其直接数据文件系统看来与物体块看起来相同。物理存储器块的特征(通 常不供应到主机的信息)可由存储器系统在其用主机初始化时提供。主机接着将连续逻 辑地址空间配置成具有对应于物理存储器的特征的特征的块中,且随后将数据写入到那 些逻辑块内的地址。
作为替代方案,直接数据文件系统可以与上文描述相同的方式在具有越过存储器系 统的LBA接口的连续地址空间而界定的逻辑块的存储器系统中操作,而非在主机中实施。 即使是存储器系统的一部分,此直接数据文件操作仍不同于在上文交叉引用的专利申请 案中描述的实例。并非在存储器系统的后端处以允许存储器系统在文件中接收替换:LBA 接口的数据的方式来操作(在先前申请案中描述了其实例),所述直接数据文件系统可在 LBA接口之前添加到存储器系统且似乎在主机中在其LBA接口之前以与上文描述的相 同方式操作。此存储器系统可甚至经配置以提供LBA接口及文件对象接口两者,存储器 系统可通过所述两种接口与主机通信,所述主机'具有LBA接口或文件对象接口但并非兼 有所述两种类型的接口。这特别便于在与许多类型的主机装置可移除地连接的存储卡中使用。
作为另一替代方案,具有处理能力的可移除母卡可具备上文描述的直接数据文件系 统,以便将直接文件能力添加到不具有直接文件能力但具有直接数据文件接口的主机。 当与主机连接时,母卡接着操作以在卡的输出端处提供LBA接口,具有LBA接口的标 准存储卡可能可移除地与所述卡连接。
以下对本发明的示范性实施例的描述中包括本发明的额外方面、优点及特征,所述 描述应结合随附图式来理解。
本文中引用的所有专利、专利申请案、文章、书籍、说明书、其它公开案、文件及 事物的全文兹出于所有目的而以此引用的方式并入本文中。在任何所并入的公开案、文 档或事物与本文档的正文之间在术语的定义或使用方面有任何不一致或冲突的情况下, 以本文档中的术语的定义或使用为准。


图1示意性地说明主机及连接的非易失性存储器系统;
图2为用作图1的非易失性存储器的实例快闪存储器系统的框图3为可在图2的系统中使用的存储器单元阵列的代表性电路图4说明图2的系统的实例物理存储器组织;
图5展示图4的物理存储器的一部分的扩展图6展示图4及图5的物理存储器的一部分的另一扩展图7A、图7B及图7C展示且比较操作可再编程存储器系统的三种方法;
图8A、图8B及图8C以不同格式展示且比较与分别在图7A、图7B及图7C中所展
示的相同的操作可再编程存储器系统的三种方法及与主机系统的接口;
图9A、图9B及图9C以不同格式展示且比较与分别在图8A、图8B及图8C中所展
示的相同的操作可再编程存储器系统的三种方法及与主机的接口;
图10说明可用于进行图9C的技术的逻辑到物理块映射的一实例;
图11展示用以设定参数以进行在图9C及图IO中说明的技术的在主机与存储器系统
之间的交互;
图12说明直接数据文件系统的操作周期; 图13A到图13D展示写入文件数据的四个不同实例; 图14A到图14E展示写入单个数据文件的顺序; 图15展示回收图14E的块的结果;图16A到图16D展示存储于块类型的多种允许组合中的数据文件的实例;
图17为根据一特定实例的给出文件的准许状态的表;
图18为展示由于编程数据的准许文件状态转变的状态图19为描述在图18中展示的文件状态转变的表;
图20为展示由于过时数据引起的准许文件状态转变的状态图21为描述在图20中展示的文件状态转变的表;
图22为展示由于回收块引起的准许文件状态转变的状态图23为描述在图22中展示的文件状态转变的表;
图24展示数据文件与逻辑块的对准的一个实施例;
图25为展示在图24的数据对准实施例的多种状况下的活动块的分配的表;
图26展示数据文件与逻辑块的对准的替代实施例;
图27为展示在图26的数据对准实施例的多种状况下的活动块的分配的表; 图28A到图28D展示块回收操作的实例; 图29为概括说明回收操作的流程图; 图30说明存储于典型部分存储器单元块中的数据的类型; 图31提供进行图29的流程图的步骤中的一者的特定实施例的细节; 图32提供执行图29的流程图的相同步骤的替代实施例的细节;及 图33为定义放置在又一实施例的两个块列表上的块类型的表。
具体实施例方式
快闪存储器系统的一般描述
参看图1到图6描述一种典型快闪存储器系统。在所述系统中,可实施本发明的多 种方面。图1的主机系统1将数据存储到快闪存储器2中且从快闪存储器2检索数据。 尽管可在主机内嵌入快闪存储器,但仍将存储器2说明为通过机械及电连接器的配对零 件3及4可移除地连接到主机的卡的更普及形式。当前存在许多不同的市售快闪存储卡, 实例为紧凑式闪存(CF)、多媒体卡(MMC)、安全数字(SD)、迷你SD、存储棒、智 能媒体及TransFlash卡。尽管这些卡中的每一者根据其标准化规格而具有唯一机械及/或 电接口,但每一者中包括的快闪存储器非常类似。这些卡均可从本申请案的受让人晟碟 (SanDisk)公司获得。晟碟还在其Cruzer商标下提供一系列快闪驱动器,所述快闪驱动 器是在小封装中的手持式存储器系统,其具有一用于通过插入到主机的USB插口中而与 主机连接的通用串行总线(USB)插头。这些存储卡及快闪驱动器中的每一者包括与主机介接且控制其内的快闪存储器的操作的控制器。
使用所述存储卡及快闪驱动器的主机系统有许多且各种各样的。所述主机系统包括 个人计算机(PC)、膝上型及其它便携型计算机、蜂窝式电话、个人数字助理(PDA)、 数字静态相机、数字摄像机及便携型音频播放器。主机通常包括一内建式插口,其用于 一或多种类型的存储卡或快闪驱动器(但是有些要求将存储卡插入其中的配接器)。
可将图1的主机系统1视为具有两个主要部分(在涉及存储器2的范围内),其由电 路勺软件的组合构成。所述两个部分为应用程序部分5及与存储器2介接的驱动程序部 分6。在个人计算机中,例如,应用程序部分5可包括一运行文字处理、图形、控制或 其它普及应用程序软件的处理器。在相机、蜂窝式电话或主要专用于执行单个一组功能 的其它主机系统中,应用程序部分5包括操作相机以获得并存储图片、操作蜂窝式电话 以进行并接收呼叫及其类似操作的软件。
图1的存储器系统2包括快闪存储器7及电路8,所述电路8既与卡所连接到的主 机介接以来回传递数据,又控制存储器7。在数据编程及读取期间,控制器8通常在由 主机1使用的数据的逻辑地址与存储器7的物理地址之间转换。
参看图2,描述可用作图1的非易失性存储器2的典型快闪存储器系统的电路。系 统控制器通常实施于单个集成电路芯片11上,所述集成电路芯片11经由系统总线13上 与一个或一个以上集成电路存储器芯片并行连接,图2中展示了单个所述存储器芯片15。 所说明的特定总线13包括单独的一组用于载运数据的导体17、 一组用于存储器地址的 导体19及一组用于控制及状态信号的导体21。或者,单组的导体可在此三种功能之间 时间共享。另外,可采用系统总线的其它配置,例如,在2004年8月9日申请的标题为 "环形总线结构及其在快闪存储器系统中的使用"("Ring Bus Structure and It's Use in Flash Memory Systems")的第10/915,039号美国专利申请案(第2006/0031593 Al号公开案) 中描述的环形总线。
典型控制器芯片11具有其自身的内部总线23,所述内部总线23通过接口电路25 与系统总线13介接。通常连接到总线的主要功能为处理器27 (例如,微处理器或微控 制器)、含有用于初始化("引导")系统的代码的只读存储器(ROM) 29及主要用于缓 冲在存储器与主机之间传递的数据的随机存取存储器(RAM) 31。对经过存储器与主机 之间的控制器的数据计算且检验误差校正码(ECC)的电路33也可连接到总线23。也可 包括专用于编码及解码经过控制器的数据的电路34。此编码包括压縮及安全性加密,但 几乎任何类型的数据变换均可以此方式执行。专用电路33及34在被利用时执行原本可由在固件控制下的处理器27执行的特定算法。控制器总线23通过电路35与主机系统介 接,这在存储卡中含有图2的系统的情况下是通过作为连接器4的一部分的卡的外部触 点37而进行。时钟39与控制器11的其它组件中的每一者连接且由控制器11的其它组 件中的每一者利用。
存储器芯片15以及与系统总线13连接的任何其它芯片通常含有存储器单元的阵列, 所述阵列被组织为多个子阵列或平面,为了简单起见说明了两个所述平面41及43,但 可替代地使用更多(例如,四个或八个)所述平面。或者,可不将芯片15的存储器单元 阵列划分为平面。然而,当如此划分时,每一平面具有其自身的列控制电路45及47, 所述列控制电路可彼此独立地操作。电路45及47从系统总线13的地址部分19接收其 相应的存储器单元阵列的地址,且将所述地址解码以寻址相应位线49及51中的特定一 者或一者以上。响应于在地址总线19上接收的地址而通过行控制电路55来寻址字线53。 与p井电压控制电路61及63—样,源电压控制电路57及59也与相应平面连接。如果 存储器芯片15具有存储器单元的单个阵列,且如果在系统中存在两个或两个以上所述芯 片,则可与上述多平面芯片内的平面或子阵列类似地操作每一芯片的阵列。
通过与系统总线13的数据部分17连接的相应数据输入/输出电路65及67,将数据 传递到平面41及43内且将数据传递到平面41及43之外。电路65及67用于既经由通 过相应列控制电路45及47连接到平面的线69及71将数据编程到存储器单元中又从其 相应平面的存储器单元读取数据。
尽管控制器11控制存储器芯片15的操作以编程数据、读取数据、擦除且办理各种 内务处理事件,但每一存储器芯片也含有某一控制电路,其执行来自控制器11的命令以 执行所述功能。接口电路73连接到系统总线13的控制及状态部分21。将来自控制器的 命令提供到状态机75,接着所述状态机75提供对其它电路的特定控制以执行这些命令。 如图2中所示,控制线77到81连接状态机75与这些其它电路。经由线83将来自状态 机75的状态信息传送到接口 73,以经由总线部分21传输到控制器11。
尽管也可替代地使用例如NOR等其它架构,但存储器单元阵列41及43的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号美国专利申请公开案,可获知作为存储器系统的一部分的NAND快闪存 储器及其操作的实例。
图3的电路图说明一实例NAND阵列,其是图2的存储器系统的存储器单元阵列41的一部分。提供大量全局位线,在图2中为解释简单起见仅展示四条所述线91到94。 若干串联连接的存储器单元串97到104连接于这些位线中的一者与参考电位之间。使用 存储器单元串99作为代表,多个电荷存储存储器单元107到IIO在串的任一末端处与选 择晶体管11及112串联连接。当使一串的选择晶体管导电时,所述串连接于其位线与 参考电位之间。接着同时编程或读取所述串内的一个存储器单元。
图3的字线115到118各自延伸越过若干存储器单元的串中的每一者中的一个存储 器单元的电荷存储元件,且栅极119及120控制串的每一末端处的选择晶体管的状态。 使得共享共用字线及控制栅极线115到120的存储器单元串形成一起擦除的存储器单元 的块123。单元的此块含有最小数目的单元,所述单元可同时物理上擦除。每次编程沿 字线115到118中的一者的一行存储器单元。通常,以一规定次序编程NAND阵列的行, 在此情况下,以沿最接近于串的连接到接地或另一共用电位的末端的字线118的行开始。 接着在块123中编程沿字线117的存储器单元的行,依此类推。最后编程沿字线115的 行。
第二块125是类似的,其存储器单元的串连接到与第一块123中的串相同的全局位 线,但具有不同组的字线及控制栅极线。行控制电路55将字线及控制栅极线驱动到其适 当操作电压。如果在系统中存在一个以上的平面或子阵列(例如,图2的平面1及2), 则一个存储器架构使用在其间延伸的共用字线。或者可存在共享共用字线的两个以上平 面或子阵列。在其它存储器架构中,分别驱动个别平面或子阵列的字线。
如上文所参考的NAND专利及已公开的申请案中的若干者中所描述,可操作存储器 系统以将两个以上可检测电平的电荷存储于每一电荷存储元件或区域中,借此以将数据 的一个以上位存储于每一者中。如第6,925,007号美国专利中所描述,存储器单元的电荷 存储元件最通常为导电浮动栅极,但或者可为非导电电介质电荷捕获材料。
图4概念性说明快闪存储器单元阵列7 (图1)的组织,其在下文的进一步描述中用 作一实例。存储器单元的四个平面或子阵列131到134可处于单个集成存储器单元芯片 上、两个芯片上(每一芯片上有平面中的两者)或四个单独芯片上。特定布置对于下文 的论述并不重要。当然,系统中可存在其它数目的平面(例如,1、 2、 8、 16或16个以 上)。将平面各自划分为在图4中以矩形展示的存储器单元的块(例如,块137、 138、 139及140),所述块位于相应平面131到134内。在每一平面中,可存在数十或数百个 块。如上所述,存储器单元的块是擦除单位,其是可一起物理上擦除的最小数目的存储 器单元。然而,为了获得提高的并行度,以较大的元块单位操作块。将来自每一平面的一个块逻辑上链接在一起以形成一元块。将四个块137到140展示成形成一个元块141。 一元块内的所有单元通常一起擦除。无需将用于形成一元块的块约束在其相应平面中的 相同相对位置,如在由块145到148构成的第二元块143中所展示。尽管通常优选越过 所有平面延伸元块,但为了获得高系统性能,可利用动态地形成不同平面中的一个、两 个或三个块中的任一者或所有者的元块的能力来操作存储器系统。这允许元块的大小更 紧密地与可用于在一个编程操作中存储的数据量匹配。
出于操作R的,接着将个别块划分为存储器单元的页,如图5中所说明。将块131 到134中的每一者的存储器单元(例如)各划分为八个页PO到P7。或者,每一块内可 存在存储器单元的6个、32个或32个以上页。页是一块内的数据编程及读取的单位, 其含有同时编程的最小量的数据。在图3的NAND架构中,页由沿一块内的字线的存储 器单元形成。然而,为了提高存储器系统操作并行度,可将两个或两个以上块内的所述 页逻辑上链接为元页。在图5中说明一元页151,其由来自四个块131到134中的每一 者的一个物理页形成。元页151 (例如)包括在四个块中的每一者中的页P2,但元页的 页无需必须在块中的每一者内具有相同相对位置。尽管优选越过所有四个平面来并行编 程及读取最大量的数据,但为了获得高系统性能,也可操作存储器系统以形成在不同平 面中的单独块中的一个、两个或三个页中的任一者或所有者的元页。此允许编程及读取 操作与可便利地并行处理的数据的量自适应地匹配,且减少元页的一部分保持未用数据 编程的情形。
由多个平面的物理页形成的元页(如图5中所说明)含有沿所述多个平面的字线行 的存储器单元。并非同时编程一个字线行中的所有单元,更通常将其在两个或两个以上 交错群组中交替地编程,每一群组存储数据的页(在单个块中)或数据的元页(越过多 个块)。通过同时交替地编程存储器单元,包括数据寄存器及读出放大器的外围电路的单 位无需为每一位线提供,而是在邻近位线之间时间共享。这节约外围电路所需要的衬底 空间的量,且允许用沿行增加的密度来压縮存储器单元。否则,优选同时编程沿一行的 每个单元以使可从一给定存储器系统获得的并行度最大化。
参看图3,将数据同时编程到沿一行的每个其它存储器单元中是通过沿NAND串的 至少一个末端提供两行选择晶体管(未图示)而非所展示的单行最便利地实现。接着, 一行的选择晶体管响应于一个控制信号而将块内的每隔一个串连接到其相应位线,且另 一行的选择晶体管响应于另一控制信号而将插入的每隔一个串连接到其相应位线。因此, 将两个页的数据写入到存储器单元的每一行中。每一逻辑页中的数据量通常为数据的整数的一个或一个以上扇区,按照惯例,每一 扇区含有512个字节的数据。图6展示页或元页的数据的两个扇区153及155的逻辑数 据页。每一扇区通常含有经存储的用户或系统数据的512个字节的一部分157,及用于 与部分157中的数据或与物理页或其中存储物理页的块有关的额外开销数据的另一数目 的字节159。额外开销数据的字节数目通常为16个字节,从而使扇区153及155中的每 一者共有528个字节。额外开销部分159可含有在编程期间根据数据部分157计算出的 ECC、其逻辑地址、块已擦除及再编程的次数的经历计数、 一个或一个以上控制旗标、 操作电压电平及/或相似内容,加上根据此额外开销数据159计算出的ECC。或者,额外 开销数据159或其的一部分可存储于其它块中的不同页中。
随着存储器的并行度提高,元块的数据存储容量增大,且数据页及元页的大小也因 此增大。于是,数据页可含有两个以上扇区的数据。在一数据页中有两个扇区且每元页 有两个数据页的情况下,在一元页中存在四个扇区。因此,每一元页存储2048个字节的 数据。这是高程度的并行度,且甚至可随着行中的存储器单元的数目的增大而进一步增 大。鉴于此原因,快闪存储器的宽度正经延伸以便增大一页及一元页中的数据量。
上文所识别的物理上较小的可再编程非易失性存储卡及快闪驱动器是市售的,其具 有512兆字节(MB)、 1千兆字节(GB)、 2 GB及4 GB的数据存储容量,且可变得更高。
用于处理文件对象的技术
使用逻辑块(LBA)存储器/主机接口的操作
在图7A、图8A及图9A中的每一者中以不同形式说明在主机与存储器系统之间的 共用逻辑接口。由主机对主机产生的数据文件分配连续系统地址空间(LBA接口)中的 逻辑地址(通常以多扇区的数据的丛集为单位)。接着,存储器系统看见这些逻辑地址并 将其映射成实际存储数据的存储器单元的块的物理地址。
特别参看图9A,连续逻辑地址空间161的大小足以为可存储于存储器系统中的所有 数据提供地址。通常将主机地址空间划分为数据的丛集的增量。在一给定主机系统中, 每一丛集可经设计以含有若干扇区的数据,大约在4与64个扇区之间为典型的。标准扇 区含有512个字节的用户数据,加上任选的若干字节的额外开销数据(通常16个字节), 共528个字节。
图9A说明在主机与(例如)在存储卡或快闪驱动器上得到的大容量存储器系统之间 的最常见接口。主机处理由主机所执行的应用程序软件或固件程序所产生或使用的数据 文件。"文件"或"文件对象"意谓由主机针对一些应用或目的而认识为界定的实体的数据群组。将一文件对象的数据作为一单位而管理。文字处理文件的数据为一实例,且计 算机辅助设计(CAD)软件的制图文件的数据为另一实例,其主要在例如PC、膝上型计 算机及类似装置等一般计算机主机中得到。pdf格式的文档的数据也为此文件。文件对象 的数据可在执行应用程序期间由主机产生,或在别处产生且接着被提供到主机。静态数 字摄像机产生用于存储于存储卡上的每一图片的数据文件。蜂窝式电话利用来自内部存 储卡上的文件(例如,电话号码簿)的数据。PDA存储且使用若干不同文件(例如,地 址文件、日程表文件及类似文件)。在任何此应用中,存储卡也可含有操作主机的软件。
在图9A的实例中,将三个文件l、 2及3展示成已产生。在主机系统上运行的应用 程序将每一文件产生为一有序组的数据且通过唯一名称或其它参考来识别所述有序组的 数据。主机对文件1指派尚未分配给其它文件的足够可用的逻辑地址空间。将文件1展 示成已被指派有相连范围的可用逻辑地址。也为了特定目的共同地分配若干范围的地址 (例如,用于主机操作软件的特定范围),接着即使在主机正对数据指派逻辑地址时尚未 利用这些地址,所述范围也避免用于存储数据。
当主机稍后产生文件2时,主机类似地指派在逻辑地址空间161内的两个不同范围 的相连地址,如图7中所示。 一文件无需被指派相连逻辑地址,而是可被指派在已分配 给其它文件的地址范围之间的地址分段。接着,此实例展示对主机产生的又一文件3分 配主机地址空间的其它部分,所述其它部分先前并未分配给文件1与2或其它数据。
主机通过维持文件分配表(FAT)来记录存储器逻辑地址空间,在所述文件分配表中 维持主机对各种主机文件指派的逻辑地址。FAT表通常存储于非易失性存储器以及主机 存储器中,且在存储新文件、删除其它文件、修改文件及类似操作时被主机频繁地更新。 举例而言,当删除主机文件时,主机接着通过更新FAT表来对先前分配给已删除文件的 逻辑地址解除分配,以展示所述逻辑地址现在可用于配合其它数据文件使用。
主机并不关心存储器系统控制器选择来存储文件的物理位置。典型主机仅知道其逻 辑地址空间及其已分配给其各种文件的逻辑地址。另一方面,存储器系统通过典型LBA 主机/卡接口而仅知道逻辑地址空间的已写入数据的部分,但并不知道分配给特定主机文 件的逻辑地址乃至主机文件的数目。存储器系统控制器将由主机提供以用于数据存储或 检索的逻辑地址转换为存储主机数据的快闪存储器单元阵列内的唯一物理地址。块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号(现为第7,139,864号专利);在2004年 8月13日申请的标题为"具有存储器平面对准的非易失性存储器及方法"("Non-VolatileMemory and Method with Memory Planes Alignment")的第10/917,888号(现为第 2005/0141313 Al号公开案);在2004年8月13日申请的标题为"具有非循序更新块管 理的非易失性存储器及方法"("Non-volatile Memory and Method with Non-S叫uential Update Block Management")的第10/917,867号(现为第2005/0141312 Al号公开案); 在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号公开案);在 2004年12月16日申请的标题为"高速缓存块"("Scratch Pad Block")的第11/016,285 号(现为第2006/0161722 Al号公开案);在2005年7月27日申请的标题为"具有多流 更新记录的非易失性存储器及方法"("Non-Volatile Memory and Method with Multi-Stream Update Tracking")的第11/192,220号(现为公开案第2006/0155921 Al号);在2005年7 月27日申请的标题为"具有改进的高速缓存及更新块索引的非易失性存储器及方法" ("Non-Volatile Memory and Method with Improved Indexing for Scratch Pad and Update Blocks")的第11/192,386号(现为第2006/0155922 Al号公开案);及在2005年7月27 日申请的标题为"具有多流更新的非易失性存储器及方法"("Non-Volatile Memory and Method with Multi-Stream Updating")的第11/191,686号(现为第2006/0155920 Al号公 开案)。
高效控制具有非常大的擦除块的存储器阵列的操作的一个挑战在于使在给定写入操 作期间存储的数据扇区的数目与存储器的块的容量及边界匹配且对准。 一种方法是将用 于存储来自主机的新数据的元块配置为具有少于最大数目的块(其是存储少于填满整个 元块的量的数量的数据所必要的)。在2003年12月30日申请的标题为"自适应元块" ("Adaptive Metablocks")的第10/749,189号美国专利申请案(现为第2005/0144357 Al 号公开案)中描述自适应元块的使用。在2004年5月7日申请的标题为"数据边界管理" ("Data Boundary Management")的第10/841,118号专利申请案(现为第2005/0144363 Al 号公开案)及在2004年12月16日申请的标题为"数据运行编程"("Data Run Programming")的第11/016,271号专利申请案(现为第2005/0144367 Al号公开案)中描 述数据块之间的边界与元块之间的物理边界的配合。
存储器控制器也可使用来自FAT表(其由主机存储于非易失性存储器中)的数据,以便更高效地操作存储器系统。 一种此使用在于了解数据何时已因解除其逻辑地址分配 而被主机识别为过时。知道此情况允许存储器控制器在通常将因主机将新数据写入到那 些逻辑地址而了解含有此无效数据的块的擦除之前调度所述块的擦除。这是在2004年7 月21日申请的标题为"用于在非易失性存储器系统中维持数据的方法及设备"("Method and Apparatus for Maintaining Data in Non-Volatile Memory Systems")的第10/897,049号 美国专利申请案中描述。其它技术包括监控将新数据写入到存储器的主机模式以推断给 定写入操作是否为单个文件,或在多个文件的情况下推断文件之间的边界在何处。在2004 年12月23日申请的标题为"用于最优化循序丛集管理的FAT分析"("FAT Analysis for Optimized Sequential Cluster Management")的第11/022,369号美国专利申请案描述了此 类型的技术的使用。
为了高效地操作存储器系统,需要控制器尽可能多地了解关于主机对其个别文件的 数据指派的逻辑地址。数据文件接着可由控制器存储于单个元块或元块群组内,而并非 在不知道文件边界时散布于较大量的元块中。结果是减小了数据合并及垃圾收集操作的 数目及复杂性。结果,存储器系统的性能改进。但在主机/存储器接口包括逻辑地址空间 161 (图9A)时,存储器控制器难以知道关于主机数据文件结构的许多内容,如上文所 描述。
直接数据文件操作
在图7B、图8B及图9B中展示的在主机与用于存储大量数据的存储器系统之间的不 同类型的接口排除了逻辑地址空间的使用。主机改为通过唯一文件ID(或其它唯一参考) 及文件内的数据的单位(例如,字节)的偏移地址来逻辑上寻址每一文件的数据。直接 对存储器系统控制器提供这些地址,所述存储器系统控制器接着保持其自身的关于每一 主机文件的数据物理上存储于何处的表。这是作为上文交叉引用的专利申请案的主要主 题的操作。可利用与上文参看图2到图6描述的相同的存储器系统来实施此文件接口 。 图7B、图8B及图9B的基于文件的接口与图7A、图8A及图9A的LBA接口之间的主 要区别是存储器系统与主机系统通信及存储文件数据的方式。
将图8B的基于文件的接口与图8A的LBA接口相比较,图8A的逻辑地址空间及主 机维持的FAT表并未在图8B中出现。相反,通过主机产生的数据文件的文件编号及文
件内的数据的偏移向存储器系统识别所述数据文件。存储器系统接着直接将文件映射到 存储器单元阵列的物理块。
当使用直接数据文件存储技术将新数据文件 程到存储器中时,将数据写入到存储器单元的已擦除块中,以块中的第一物理位置开始且按次序循序地前进穿过块的位置。 不管文件内的数据的偏移的次序如何,均以从主机接收的次序编程所述数据。编程继续 直到己将文件的所有数据写入到存储器中为止。如果文件中的数据量超出单个存储器块 的容量,则接着当第一块变满时,编程在第二已擦除块中继续。以与第一存储器块相同 的方式、依次从第一位置开始编程第二存储器块,直到文件的所有数据已被存储或第二 块变满为止。可用文件的任何其余数据来编程第三或额外块。用于存储单个文件的数据 的多个块或元块不需要物理上或逻辑上相连。为了易于解释,除非另有说明,否则希望 本文中使用的术语"块"指擦除的块单位或多块式"元块",这取决于特定系统中是否正 使用元块。
参看图9B,将文件l、文件2及文件3中的每一者的标识及所述文件内的数据的偏 移直接传递到存储器控制器。接着由存储器控制器功能173将此逻辑地址信息转译为存 储器165的元块及元页的物理地址。并不将文件数据映射到图9A的逻辑地址空间161。
快闪最优化文件系统的原理
图7C、图8C及图9C以不同形式说明使图7B、图8B及图9B的直接数据文件技术 与包括在图7A、图8A及图9A中的类型的LBA接口合并的操作系统。图7C的"快闪 最优化文件系统"以与图7B的"直接文件存储后端系统"基本上相同的方式操作,除了 将文件的数据映射到图7C中的LBA接口的连续地址空间内的逻辑块,而不是将其映射 到图7B中的NAND快闪的物理存储器单元块。图7C的LBA接口及"LBA到物理后端 系统"与图7A的系统相同。在图7C的系统中,直接的文件到块地址分配在LBA接口 之前发生,但配合LBA接口的连续地址空间中的逻辑块地址而不是NAND快闪存储器 的物理块而工作。
在图8C中,以不同形式说明相同观点。将由主机产生的数据文件分配给存储装置的 逻辑地址空间中的逻辑块地址。逻辑地址空间的逻辑块接着由存储器控制器以常规方式 映射到物理存储媒体的块。在图8C中说明这些功能在主机与存储器系统之间的两种可能 划分。第一实施例将文件分配给主机(在图中识别为主机1)中的逻辑块地址。于是, 存储器1是具有与主机的LBA接口连接的LBA接口的常规存储卡或其它装置。或者, 图8C的主机2使数据文件标识及文件内的数据偏移与存储器系统介接。接着在存储器2 内执行将这些文件分配给逻辑块地址的直接数据文件功能。
图8C的存储器2 (最常见形式为存储卡、快闪驱动器或其它较小的便携型单元)可 通过提供与用于存储装置的逻辑地址空间的外部连接而另外包括LBA接口。作为另一替代方案,可在包括微处理器的母卡中执行将文件分配给逻辑块地址的功能。接着使母卡 可以可移除地与主机2连接,且存储器1将可以可移除地与母卡连接。
在图9C中,以不同方式说明将文件对象的数据映射到逻辑地址空间的技术。功能 173'接收个别文件的数据,其具有唯一文件识别符的个别逻辑地址及在所述文件内的数据 的偏移地址。功能173'将这些文件地址转换为连续逻辑地址空间161的逻辑块内的地址。 依据物理存储器利用的单位,将个别逻辑块的地址范围界定成具有存储器阵列165的块 或元块的相同数据存储容量。图9C的功能173'基本上与图9B的功能173相同,除了在 图9C中将文件映射到地址空间161内的逻辑块,而在图9B中将文件直接映射到存储器 单元阵列165。与图9A中基本上相同,接着在图9C中由功能163将逻辑地址块转译为 存储器阵列165。功能163可为常规快闪存储器操作系统,例如,在前述第7,139,864号 美国专利及先前列出的以下已公开的专利申请案中所描述的系统2005/0141313 Al、 2005/0141312 Al、 2005/0166087 Al 、 2005/0144365 Al及2006/0161722 Al 。
从图9C中将注意到,地址空间161的个别逻辑块可含有来自一个以上文件的数据的 地址。又,可对个别文件的数据指派一个以上逻辑块内的地址。举例而言,对数据文件 2及3中的每一者指派两个或两个以上逻辑块内的地址。逻辑块也可含有两个不同文件 的数据图9C的逻辑块2为此的一实例。但优选对可含有给定文件的数据以及某一其它 文件的数据的逻辑块数目设置至少一个限值。可在不同环境下利用不同限值。在一特定 实例中,以任一文件可与另一文件的数据共享不多于两个逻辑块的方式将文件的数据分 配给地址空间161的若干逻辑块。通过约束允许仅用文件的数据部分填充的逻辑块数目, 可在对特定文件对象的数据指派逻辑块地址期间遵循此限制。
此约束使(例如)由于其它文件的数据随后变得过时而可能会变得必要的数据重新 定位量保持为低。当此情况发生时,通常将给定文件的有效数据从含有另一文件的过时 数据的块复制到另一块中。通过约束给定文件与另一文件的数据共享的块的数目,所述 数据复制操作的频率变得较低。此使存储器系统的性能改进。
参看图10,以逻辑块及物理块两者说明文件数据的分配。出于说明目的将实例物理 存储器单元块191划分为四个页195到199,但实际系统的每个块通常将含有多得多的 页。每一页存储多个扇区的数据。每次编程一页数据,通常在块内以195到199的次序 编程。如果存储器系统是利用元块,则块191为元块且页195到199为元页。
逻辑地址空间161的逻辑块193被映射到物理块181中。将逻辑块193界定成具有 与物理块191相同的数据存储容量,且也划分为与物理块191数目相同的页201到204,每一逻辑页具有与物理页195到199中的每一者相同的数据存储容量。亦即,优选使逻 辑地址空间的粒度与物理存储器页或元页的数据存储容量相等。以与在物理块191中写 入数据的页相同的顺序对数据指派逻辑块193内的逻辑页。使得在逻辑块193的第一页 201开始处的数据写入在物理块191的第一页195开始处开始。
为维持此逻辑功能与物理功能的协调,进行文件到逻辑块转译的主机需要知道与所 述主机一起操作的存储器的物理特征。在使用元块的存储器系统的一实例中,这些特征 可由以下参数界定
1. 物理页的大小,以物理页所存储的数据的扇区的数目计;
2. 元页的大小,以链接在一起以形成个别元页的页的数目计;
3. 每个元块的页的数目;及
4. 映射到物理元块的第一页的最低逻辑地址。
利用此信息,主机可配置其逻辑地址空间161的逻辑块结构以用由图IO说明的方式 操作。如果特定主机仅将使用一种类型的存储器(例如,嵌入于主机中的存储器),则仅 需维持主机的逻辑地址空间的一种配置。但更典型情况为,具有不同物理特征的便携型 存储器装置与给定主机装置可移除地连接,实际上与许多不同主机装置可移除地连接。 因此,在主机内提供使所述主机的逻辑块配置适应于与所述主机连接的特定便携型存储 器装置的物理块布置的能力。为实现此,以存储器参数可由主机读取的方式在存储器装 置本身中存储上文列出的存储器参数的数据。存储器系统的控制器通常将改变任何特定 逻辑块将映射到的物理块,但主机并不知道此情况且此情况不影响主机对逻辑块指派文 件数据的地址。
图11说明存储器装置207,其在可由主机211通过内连总线213存取的非易失性存 储空间209中含有这些参数数据。存在可由主机读取这些参数的许多方式。 一实例为界 定一供货商特定命令,其是在存储器装置207初始化期间由主机211发出给所述存储器 装置。存储器装置207接着操作以将所存储的参数值返回到所述主机。另一实例为,这 些参数可包括于存储器装置207响应于来自主机的现有标准命令而已返回到主机211的 现有字段的未用部分中。此命令的一实例为识别驱动器(Identify Drive)命令。
示范性快闪最优化文件系统
在此部分中提供将个别文件映射到连续逻辑地址空间的逻辑块的技术的实例实施方
案的其它细节。所述实施方案的某些方面已参考基本上相同的以下功能而描述图7C的
"快闪最优化文件系统"、图8C的"将文件分配给逻辑块地址"及图9C的"文件/偏移到逻辑地址转换"173'。
在此部分中描述的用于将文件映射到逻辑块地址的许多内容利用在上文交叉引用的 专利申请案中描述的将文件映射到物理存储器单元块地址的相同技术。主要不同在于, 文件映射是(例如)由主机装置越过LBA接口而进行,而非通过直接将数据文件映射到 物理存储器块(如在先前交叉引用的专利申请案中所描述)绕过LBA接口而进行。可替 代地应用先前申请案的物理存储器块映射技术以将数据文件对象映射到LBA地址空间的 逻辑块,本文中描述其的一些实例。
在本文中对逻辑映射文件对象的描述中,称将数据"写入到"或"编程到"LBA接 口的块。当然,与物理存储器块相反,这些逻辑块实际上并不存储数据,所以此指对特 定逻辑块指定数据的地址。类似地,逻辑块在未被分配数据时称其"已擦除"。"已擦除" 逻辑块为不含有数据的地址的逻辑块,所以其完全可用于被指派数据的地址。其它逻辑 块可为"部分擦除",此意谓所述逻辑块的一部分可用于接收数据的额外地址。
快闪最优化文件系统的一般操作
当新数据文件待编程到存储器中时,将数据写入到未占据的逻辑块中,以块中的第 一位置开始,且按次序循序地前进穿过块的位置。不管文件内的数据的偏移的次序如何, 均以从主机接收的次序在逻辑块内编程所述数据。继续编程直到文件的所有数据已写入 为止。如果文件中的数据量超过单个逻辑块的容量,那么接着在第一块变满时,编程在 第二空白(已擦除)块中继续。以与第一逻辑块相同的方式、依次从第一位置开始编程 第二逻辑块,直到文件的所有数据已被分配或第二块变满为止。可用文件的任何其余数 据编程第三或额外块。用于存储单个文件的数据的多个逻辑块或元块无需相连。为了易 于解释,除非另有说明,否则希望本文中使用的术语逻辑"块"指具有与存储器系统内 物理块最小擦除单位相同的容量的逻辑块或对应于通常一起擦除的多块式物理元块的多 块式逻辑"元块",此取决于特定系统中是否正使用元块。
图12的图说明快闪最优化文件系统的整体运作。个别逻辑块可视为处于三种状态中 的一者中。此二种状态为已擦除块641、存储有效文件数据而无可回收容量的块643及 可含有一些有效文件数据但也具有来自未编程(已擦除)页及/或存储于其中的过时(无 效)数据的可回收容量的块645。由功能647将数据写入到已擦除逻辑块,借此导致种 类643或645中的块,此取决于所得经编程块是否保持任何可回收容量。当删除文件时, 如由功能649所指示,含有文件的数据的块643转换为具有可回收容量的块645。在功 能650中将数据从可回收块复制到其它块之后,块645的未用存储容量由功能651回收,功能651导致使那些块返回到可将新数据写入到其的已擦除块641的状态。
参看图13A,其说明将数据文件写入到逻辑地址空间。在此实例中,数据文件181 大于一个块或元块183的存储容量,将所述块或元块183展示成在垂直实线之间延伸。 因此,也将数据文件181的一部分184写入到第二块185中。将这些逻辑块展示成具有 相连地址但其并非必需如此。将来自文件181的数据如同其从主机串流接收的一样写入, 直到已将文件的所冇数据写入到逻辑地址空间为止。在图13A的实例中,数据181是文 件的初始数据。
存储器系统管理且记录经存储数据的一种优选方法是使用可变大小的数据群组。亦 即,将文件的数据存储为多个数据群组,可将所述数据群组以一界定次序链接在一起以 形成完整文件。当正写入来自主机的数据流时,只要在文件数据的逻辑偏移地址中或在 数据分配到的逻辑地址空间中存在不连续性,即开始一新数据群组。此逻辑地址空间不 连续性的一实例是在文件的数据填满一个逻辑块且开始写入到另一块中时。这在图13A 中予以说明,其中第一数据群组填满第一块183,文件的其余部分184作为第二数据群 组存储于第二块185中。第一数据群组可由(FO,DO)表示,其中FO是数据文件开始处 的逻辑偏移,且D0是逻辑块183内文件开始处的位置。可将第二数据群组表示为(F1,D1), 其中Fl是存储于第二块185开始处的数据的文件偏移,且Dl是第二块开始处的对应逻 辑地址。
经由主机存储器接口而传递的数据量可以数据的字节的数目、数据的扇区的数目或 用某一其它粒度来表达。当通过当前逻辑地址接口与大容量存储器系统通信时,主机最 经常用字节粒度来界定其文件的数据,但接着将字节分组为每一者512个字节的扇区或 分组为每一者多个扇区的丛集。通常进行此动作以简化存储器系统的操作。尽管本文中 描述的基于文件的主机存储器接口可使用数据的某一其它单位,但原始主机文件字节粒 度通常是优选的。亦即,数据偏移、长度及其类似物优选以字节(数据的最小可分辨单 位)而非通过扇区、丛集或其类似物来表达。此允许用本文中描述的技术来更高效地使 用快闪存储器存储装置的容量。
接着将以图13A中说明的方式写入到逻辑地址空间的新文件在文件索引表(FIT)中 表示为按所述次序的数据群组的索引条目的序列(FO,DO)、 (F1,D1)。亦即,只要主机系 统想要存取特定文件,主机便产生其文件ID或其它标识,接着存取其FIT以识别构成所 述文件的数据群组。为了便于操作存储器系统,个别数据群组的长度〈engtl^也可包括于 其个别条目中。只要主机将图13A的文件维持于已打开状态,则优选也维持写入指针P以界定用于 写入针对所述文件从主机接收的任何其它数据的逻辑地址。不管新数据在文件内的逻辑 位置如何,均将所述文件的任何新数据写入在逻辑块中的文件的末端。存储器系统允许 多个文件(例如,4或5个所述文件)同时保持打开,且针对所述文件中的每一者维持 一写入指针p。用于不同文件的写入指针指向不同逻辑块中的位置。如果在关于打开文 件的数目的系统限制已存在时主机系统想要打开一新文件,则首先关闭己打开文件中的 一者且接着打开新文件。
图13B说明主机将数据附加到图13A的先前被写入但仍打开的文件的末端。将数据 187展示成由主机系统添加到文件的末端,也在第二块185中在所述文件的数据的末端 处写入所述数据187。经附加数据成为数据群组(F1,D1)的一部分,因此所述数据群组 现在含有更多数据,因为在现有数据群组184与经附加数据189之间既不存在文件不连 续性也不存在逻辑地址不连续性。因此,仍将完整文件表示为FIT中的索引条目序列 (F0,D0)、 (F1,D1)。也将指针P的地址改变为所存储的附加数据的末端的地址。
在图13C中展示将数据191的块插入到图13A的先前写入文件中的一实例。尽管主 机正将数据191插入到文件中,但快闪最优化文件系统在先前写入的文件数据的末端处 的位置193处附加经插入数据。不必在将数据插入到打开文件中时以其逻辑次序覆写文 件的数据,但可稍后在主机关闭文件之后在后台进行此操作。由于将经插入数据完全存 储在第二逻辑块185内,所以其形成单个新群组(F1,D3)。但进行此插入导致将图13A 的前一数据群组(F0,D0)划分为两个群组, 一个在插入之前的群组(F0,D0)及一个在 插入之后的群组(F2,D1)。这是因为,只要存在数据的文件不连续性(例如,在插入的 开始F1处及在插入的末端F2处出现不连续性),则需要形成新数据群组。群组(F3,D2) 是逻辑地址D2作为第二块185的开始的结果。即使群组(F1,D3)及群组(F3,D2)存 储在同一逻辑块中,仍将群组(F1,D3)及群组(F3,D2)维持为分离,因为在所述群组 中存储的数据的文件偏移中存在不连续性。接着在FIT中由按所述次序的数据群组索引 条目(F0,D0)、 (F1,D3)、 (F2,D1)、 (F3,D2)表示具有插入的原始文件。从图13A、图 13B及图13C的实例中应注意到,可在并不使由逻辑块地址表示的任何数据变得过时的 情况下写入新文件或现有文件的新数据。
作为在图13C中说明的将数据插入到现有文件中的替代方案,只要已插入数据,主 机便可将文件作为单独文件而覆写。存储器系统随后可将此单独文件视为新文件。接着 由主机删除旧文件,且系统可通过回收对经存储的旧文件(其数据现已过时)指派的逻辑地址空间而作出响应。
图13D说明另一实例,其中更新原先以图13A中展示的方式写入的数据的特定部分。 将数据文件的部分195展示成待更新。将文件的更新部分197附加到先前写入的数据, 而非用更新来覆写整个文件。先前写入的数据的部分199现已过时。在更新之后,文件 在系统FIT中由按所述次序的数据群组索引条目(F0,D0)、 (F1,D3)、 (F2,D1)、 (F3,D2) 表示。在图13D中,再次将图13A的单个数据群组(F0,D0)划分为几个片段在经更 新部分之前的一个片段、经更新部分及在经更新部分之后的一个片段。需要回收由过时 数据占据的地址空间199,但此操作优选稍后进行而不是作为写入文件数据的一部分而 进行。此回收通常将导致存储特定文件的更少数目的数据群组。
为了进一步说明可变长度数据群组的使用,由图14A到图14E按次序展示涉及相同 文件的若干写入操作的序列。首先如图14A中所示将原始文件数据Wl写入到连续地址 空间的两个逻辑块中。接着由两个数据群组界定文件,第一群组在逻辑块的开始处开始, 且在逻辑块边界之后需要第二群组。图14A的文件接着由数据群组的索引条目的以下序 列描述(F0,D0)、 (F1,D1)。
在图14B中,主机使在图14A中写入的文件数据更新。紧接在前一群组(F1,D1) 之后写入经更新文件数据U1,其中经更新数据的前一版本变为过时。图14A的前一群组 (F0,D0)縮短为图14B的经修改群组(F0,D0),且前一群组(F1,D1)縮短为群组(F4,D2)。 因为经更新数据与逻辑块的边界重叠,因此在两个群组(F2,D3)与(F3,D4)中写入经 更新数据。在第三逻辑块中存储一些数据。文件现由数据群组的索引条目的以下序列描 述(F0,D0)、 (F2,D3)、 (F3,D4)、 (F4,D2)。
在图I4C中,通过主机使新文件数据II插入来进一步修改图14B的文件。因为经插 入数据与逻辑块的边界重叠,所以将新数据II作为图14C的新群组(F5,D6)及(F6,D7) 而写入到紧接在图14B的前一群组(F4,D2)之后的逻辑块中。使用第四逻辑块。在图 14C中,因为新数据II的插入,所以将图14B的前一群组(F0,D0)分割为縮短的群组 (F0,D0)及(F7,D5)。所述文件现由数据群组的索引条目的以下序列描述(F0,D0)、 (F5,D6)、 (F6,D7)、 (F7,D5)、 (F8,D3)、 (F9,D4)、 (F10,D2)。
图14D展示对图14C的数据文件的进一步修改将新数据W2附加到所述文件的末 端。将新数据W2作为图14D的新群组(F11,D8)而紧接在图14C的前一群组(F10,D2) 之后写入。所述文件现由数据群组的索引条目的以下序列描述(F0,D0)、 (F5,D6)、 (F6,D7)、 (F7,D5)、 (F8,D3)、 (F9,D4)、 (F10,D2)、 (F11,D8)。在图14E中展示对打开文件的第二更新,其中将经更新文件数据U2写入到图14D 的文件。在图14E中,经更新数据U2紧接在图"D的前一群组(F11,D8)之后写入, 所述数据的前一版本变为过时。图14D的前一群组(F9,D4)縮短为图14E中的经修改 群组(F9,D4),前一群组(F10,D2)变得完全过时,且前一群组(F11,D8)经縮短以形 成新群组(F14,D9)。在图14E的新群组(F12,D10)及(F13,DU)中写入经更新数据, 其与逻辑块边界重叠。现在,文件需要第五逻辑块。所述文件现由数据群组的索引条目 的以下序列描述(F0,D0)、 (F5,D6)、 (F6,D7)、 (F7,D5)、 (F8,D3)、 (F9,D4)、 (F12,D10)、 (F13,D11)、 (F14,D9)。
在根据前文描述的文件产生或修改之后,优选以正确逻辑次序使每一文件的数据的 偏移维持连续。因此,举例而言,作为将数据插入到文件中的操作的一部分,由主机提 供的经插入数据的偏移与紧接在所述插入之前的偏移连续,且已在文件中在所述插入之 后的数据增加经插入数据的量。更新现有文件最通常导致现有文件的给定地址范围内的 数据由相同量的经更新数据替换,因此一般无需替换文件的其它数据的偏移。
可将如此存储的数据的粒度或分辨率维持为与主机的粒度或分辨率相同。举例而言, 如果主机应用程序用一个字节的粒度写入文件数据,则在逻辑块中也可用一个字节的粒 度来表示所述数据。接着以字节数目来测量个别数据群组内的数据的量及位置。亦即, 可在主机应用程序文件内单独寻址的数据的相同偏移单位也可在存储于快闪存储器中时 在所述文件内单独寻址。接着,在FIT中将一逻辑块内的同一文件的数据群组之间的任 何边界指定给最接近的字节或其它主机偏移单位。类似地,以主机偏移的单位界定一逻 辑块内的不同文件的数据群组之间的边界。
术语"扇区"在本文中结合大块存储器使用,以表示与ECC相关联的经存储数据的 单位。因此,扇区是在此误差校正码由存储器系统的控制器产生且随数据一起存储时, 传递到快闪存储器及从快闪存储器传递的数据的最小单位。当参考物理存储器时,"页" 用于表示一块内的存储器单元的单位。页是最小编程单位。逻辑块内的逻辑"页"是含 有与物理页相同的数据量的页。术语"元页"用于表示具有元块的完全并行度的页。元 页是最大编程单位。
从图14B及图14E中将注意到,经更新命令导致文件所占的逻辑地址空间大于文件 中的数据量。原因是用于已由更新替换的数据的逻辑地址留存。因此,非常需要通过消 除过时的无效数据而将文件的数据合并(垃圾收集)到较少的逻辑地址空间中。因此, 更多的逻辑地址空间变得可用于其它数据。也可注意,除了图14B及图14E的文件数据更新以外,图14C的数据插入也导致文 件数据的地址失序。亦即,虽然几乎始终在文件内某处定位更新及插入,但更新及插入 在其进行时被添加到文件的末端。这是图14B、图14C及图14E的实例的情况。因此, 可能会需要越过逻辑地址空间对文件的数据重排序以与文件内的偏移的次序匹配。因为 循序读取页及块将按文件的数据的偏移次序来给予文件的数据,所以此于是改进读取经 存储数据的速度。此也提供文件的最大可能的重组。但对文件数据重排序以使读取更高 效对于存储器系统的性能的重要性并不如文件数据合并,文件数据合并可能会释放一个 或一个以上逻辑块以用于其它数据的地址。因此,对文件中的数据重排序通常将并非由 其自身进行(其中的益处不值得添加的操作额外开销),但可作为许多垃圾收集操作的一 部分而进行,这样不会造成附加的操作额外开销或造成很少的附加操作额外开销。
因为已进行两个数据更新U1及U2,所以图14E的文件包括过时文件群组(灰色部 分)。结果,从图14E中显而易见,分配给文件的逻辑地址空间量实质性大于文件的大小。 因此,垃圾收集是合适的。图15提供对图14E的数据文件进行垃圾收集的结果的说明。 在垃圾收集之前,所述文件占据地址空间的接近五个逻辑块(图14E),而在垃圾收集之 后,同一文件配合在稍多于三个块(图15)内。作为垃圾收集操作的一部分,将数据从 其初始写入到的逻辑块复制到其它已擦除逻辑块中,且接着擦除原始块。如果整个文件 被垃圾收集,则可将其数据以与在所述文件内的数据逻辑偏移次序相同的逻辑次序复制 到新块中。举例而言,更新U1及U2以及插入Il在垃圾收集之后(图15)以与其在主 机文件中出现的相同次序存储。
基于文件的垃圾收集也通常导致在合并的文件内形成新的且不同的数据群组。在图 15的情况下,文件由新数据群组的索引条目的以下新序列描述(F0,D12)、 (F1,D13)、 (F2,D14)、 (F3,D15)。这比在图14E中展示的文件的状态下存在的数据群组的数目少得 多。现在针对文件的数据已复制到的块中的每一者存在一个数据群组。作为垃圾收集操 作的一部分,更新FIT以反映形成文件的新数据群组。
当在图14E的状态中时回收保持文件的数据的块是对块个别地操作而非对存储同一 文件的数据的多个块操作。举例而言,如果图14E的第二块002含有考虑在给定时间进 行回收操作的地址空间的任何块的最少量的有效数据,则接着将其单个数据群组复制到 另一已擦除块。新块接着含有单个数据群组(F8,D16),且所述块的其余部分为已擦除容 量,可将新数据写入到所述已擦除容量中。已从块(在图14E中,数据存储于所述块中) 回收所述已擦除容量。文件接着由构成所述文件的数据群组的索引条目的以下序列描述(F0,D0)、 (F5,D6)、 (F6,D7)、 (F7,D5)、 (F8,D16)、 (F9,D4)、 (F12,D10)、 (F13,D11)、 (F14,D9)。在图14E中展示的其它块保持不变,直到其各自符合回收操作的标准为止。 文件块管理
基于存储于逻辑块中的文件数据的结构来辨别逻辑块的特定类型。接着注意到具有 连续地址空间中的地址的每一文件处于若干状态中的一者,每一文件状态由存储文件的 数据的块的数目及类型界定。当针对一文件有数据待写入时,所述文件的当前状态及从 一状态到另一状态的准许转变优选经控制以约束含有特定文件的数据且也含有一个或一 个以上其它文件的数据的块的数目。这促进对逻辑块的高效利用,且降低维持用于接受 新数据或经复制数据的足够已擦除块所必需的稍后回收操作的频率。
在此实例中辨别的含有文件数据的逻辑块的核心类型如下
"文件块"已完全编程,且表示单个文件的有效数据。其也可含有一些过时数据的地址。
"编程块"已部分编程,且表示仅单个文件的有效数据。 一些己擦除容量仍留存在所 述块中。其也可含有一些过时数据的地址。
"共用块"已部分编程,且表示两个或两个以上文件的有效数据。仍留存一些己擦除 容量。其也可含有一些过时数据的地址。
"满的共用块"己完全编程,且表示两个或两个以上文件的有效数据。其也可表示一 些过时数据。
另一类型的块是"巳擦除块",其中在所述块中不存在数据地址,因此所述块的全部
容量可用于接受数据。当LBA接口的逻辑地址空间变满或几乎充满数据地址时,通常通 过连续地回收存在于正使用的逻辑块内的未用容量来维持指定最小数目的已擦除块的集 区。
"碎形块"是一统称的术语,指编程块、共用块或满的共用块。用于文件的碎形块含 有所述文件的有效数据,连同未经编程的存储容量、其它文件的有效数据或所述两者。 本文中描述的技术的主要目的是通过管理经指定以接收文件的数据的活动块的类型来最 小化地址空间中的碎形块的数目。此减少必须在逻辑地址空间中执行以维持指定最小数 目的已擦除逻辑块的垃圾收集及数据合并(块回收操作)的情况。因为花费更少时间来 内部复制数据以回收先前经编程块中的未用容量的分段,所以接着可使将数据写入到存 储器中的速率提高。
也在本文中使用额外的术语来总地描述其它类型的块"部分块"含有一些未经编程容量、 一个或一个以上文件的有效数据的地址,且可表 示一些过时数据。编程块及共用块是部分块的实例。
"过时块"是含有一些过时数据的地址的文件块或满的共用块。过时块不具有任何已 擦除容量,且表示有效数据及过时数据两者。
"无效块"不含有有效数据。无效块含有至少一些过时数据的地址,且可含有已擦除 容量但不表示任何有效数据。
图16A到图16D说明上文定义的类型的逻辑块的使用的一些实例。在图16A中,文 件A的数据已填满块661及663,且部分填充第三块665。在此实例的每一块中从左到右 地写入数据,首先填充块661,接着填充块663且随后写入到块665的一部分中。块665 的其余部分是可存储额外数据的未经编程的已擦除容量。通过上文列出的定义,块661 及663为文件块,且块665为编程块。在程序指针P处开始将任何新数据写入到块665 中。指针P在数据写入到块时从左到右地移动,以始终指向块中的下一可用存储位置。 为保持未经编程的已擦除容量的个别块(无论当前是否为活动的)维持所述指针,以便 始终知道待写入到块的任何其它数据的逻辑地址。
图16B的实例包括作为共用块的块669,因为所述块669含有另一文件B的数据以 及当前文件A的数据加上一些未经编程容量。在展示程序指针P之处开始,在文件A的 末端处将新数据写入到块669中。块669是文件A的活动块。所述块也可为文件B的活 动块,在此情况下,可在程序指针P处写入文件A或文件B的额外数据。或者, 一单独 块(未图示)可为文件B的活动块。
可将文件的数据直接写入到已含有另一文件的数据的部分块的已擦除容量中,而并 将其写入到已擦除块中,以便良好地利用此形式的未经编程容量。这在待写入小于一满 块容量的已知量的文件数据时特别有用。搜索现有部分块以找到适合待写入的已知数据 量的量的已擦除容量。数据的页(或在使用元块时的元页)的数目与部分块中的未经编 程容量的页的数目比较。当以此方式编程编程块的未用已擦除空间时,所述块转换为共 用块。
在图16C中,文件A存储于文件块661、块671的一部分及块673的一部分中。块 671是满的共用块,因为所述块671充满两个文件A及B的数据。块673类似于图16A 的块665是编程块。块673是文件的活动块,且指针P指向块673内将首先写入额外数 据处的未用容量的位置。
在图16D的实例中,将文件A写入到满的共用块671的一部分及共用块675中。块675含有第三文件C的数据。指针P指向活动块675的将写入额外数据处的未用部分中
的第一位置。
尽管图16A到图16D的实例展示存储于多个块中的文件A的数据以说明若干不同类 型的块,但在许多情况下,文件可足够小而可存储于更少数目的块(甚至单个块)中。 本文中描述的技术也可应用于这些小文件。又,较大文件可占据三个以上块中的页。
应注意,逻辑块665、 669、 671、 673及675是碎形块。需要最小化由任一文件的数 据占据的碎形块的数目,因为其存在增大了需要回收所述碎形块中的未用容量的可能性 且因此不利地影响系统性能。部分逻辑块665、 669、 673及675中存在未用已擦除容量, 但除非已知文件的未写入数据量且所述已知量与这些块中的一者的未用容量匹配,否则 将新数据从主机直接写入到此空间内可能并没有效率。最常见的是,特定数据的来自主 机的数据量未知,因此不易于填满这些位的容量。因此,可能需要在回收操作期间将数 据从另一块移动到未用空间内,以高效地使用存储器容量。块669、 671及675含有一个 以上文件的数据,这意味着,当删除所述文件中的一者或其存储于共用块中的数据变得 过时,则将很可能进行数据回收以回收由过时数据的地址占据的块的容量。
因此,为减少颇费时间的数据回收操作的数目,允许特定文件的数据在任一时间存 储于仅一个、两个或某另一数目的碎形块中。在确定准许的碎形块的数目时,权衡能够 使用所述碎形块的优点与具有所述碎形块的不良影响。在本文中描述的特定实例中,任 一文件的数据均可存储于两个或少于两个碎形块中,但不多于两个。因此,指定新活动 块以存储文件的数据的处理受此约束。对每一文件指派一组准许文件状态中的一者,所 述状态由存储文件的数据的块类型界定。当需要指派新活动块以接收特定文件的数据时, 例如当一现有块变满时,如此指定的块类型取决于文件的状态,且在许多情况下也取决 于其它因素。
在图17的表中给出在一特定实施方案中根据含有文件的数据的碎形块的组合的七 个准许文件状态00到20的定义。准许文件状态中的每一者允许在不超过两个碎形块中 存储文件。对可存储文件的数据的文件块的数目不存在约束。文件的状态为用于控制对 将用作文件的活动块的块的选择的特性。已选择为回收块的块不被视为碎形块,因为所 述回收块中存在的文件的任何数据并不有助于确定文件的状态,此是因为回收块是暂时 的。在FIT中监控且记录装置中存在的每个文件的状态以及文件数据索引信息。只要发 生任何状态转变,便更新针对文件记录的状态。
依据文件状态转变是与编程数据、与数据变过时还是与选择回收块相关联,将文件状态转变再划分为三类。在图18的状态图中说明由于待决或已完成的数据编程操作的文 件状态中的准许转变。通过圆圈来指示七个文件状态,圆圈中有来自图17的表中的文件 状态识别数字。
图18的状态转变上的标签具有以下含义
A-将已擦除块作为文件的活动块而分配;
B-部分块已填满;
C-将部分块作为文件的活动块而分配; D-将此文件的部分块作为另一文件的活动块而分配; E-对作为活动块而分配的已擦除块进行数据转变;及
F-对作为活动块而分配的部分块进行数据转变。
多数状态转变在分配一块或一块变满时自动发生。然而, 一些界定的状态转变也并 入有特定数据从一个块到另一块的重新定位。数据作为单个不间断操作而重新定位,且 将状态转变视为仅在完成数据重新定位之后发生。这些转变被称为"数据转变"。参看图
18的状态图,图19的表提供准许状态转变的细节。
当待写入的数据具有已知长度时,可将部分块作为活动块而分配。在此情况下,从 装置中的全体部分块中选择"最适合"的部分块。"最适合"定义为具有待写入的已知量 的数据可高效利用的量的已擦除容量的部分块。在一些情况下,如果不存在"最适合" 的部分块,则可作为替代方案而选择"最大"部分块。这是具有最高量的可用未用容量 的部分块。
图20是说明由于数据变过时而引起的文件状态转变的状态图。特定文件的这些状态 转变在存储于含有特定文件的数据的碎形块中的文件的所有数据变过时时发生。数据巳 变过时的文件无需为特定文件。可因四个事件中的任一者而使数据过时
1. 主机删除一文件;
2. 主机删除文件内的数据;
3. 主机更新先前对文件写入的数据;或
4. 在回收操作期间重新定位文件的数据。 图20的状态转变上的标签具有以下含义 G-部分块中的此文件的所有数据已变过时;
H-满的共用块中的此文件或所有其它文件的所有数据已变过时;及 I-部分块中的所有其它文件的所有数据已变过时。图21的表提供图20中说明的由于过时数据而引起的文件状态转变的细节。在这些 环境中的任一者下使数据过时会导致定位有过时数据的块的类型改变,从而导致文件的 状态改变。
当将一块选择为回收块时,不再将所述块视为文件的碎形块(文件的数据存在于所 述块中)。这导致由图22的状态图说明的文件状态转变。图22的状态转变上的标签具有 以下含义
J-将部分块选择为回收块;及
K-将满的共用块选择为回收块。
在图23的表中给出由于选择回收块而引起的文件状态转变的细节。 有两个用于将文件的数据与连续逻辑地址空间的逻辑块对准的替代方案。在物理存 储器单元块上操作的直接数据文件系统的情况下,如在上文交叉引用的专利申请案中所 描述,新文件的开始优选与已擦除存储器单元块的开始处对准。这也可在直接数据文件 系统使用逻辑块操作时进行,如图24中所说明。说明三个文件A、 B及C存储于逻辑块 l到7中。当已写入这些文件中的一者的所有数据时,从图24中将注意到,文件的最后 部分占据了部分块的一部分。
图25的表提供用于确定作为活动块而分配以存储文件的数据的逻辑块类型的标准。 如所指示,这取决于文件的现有状态(由图17的表定义)及待编程的数据的主导状况。 即使当在此基础上选择分配情况中的一者时,也必须依据可用性而从可能性的有限集合
中进一步选择块的类型,如图25的右列所指示。举例而言,对分配情况B而言,部分块 优先用于接收已知长度的数据。首先搜寻具有恰好足以存储此已知量数据的可用(已擦 除)容量的部分块。但如果所述部分块不可用,则确定是否存在具有最大未经编程空间 的部分块。否则,作为第三优先项,接着指定完全未分配(已擦除)块以接收数据,此 将导致部分块,因为待写入的数据的已知量(此实例中为分配情况B)小于将填满一满 块的量。
可删除与在首次写入一文件(例如,图24中的文件A、 B或C中的一者)时的状态 保持相同状态的文件,而无需随之重新定位任何不相关文件的数据。但如果回收操作已 将文件的部分块的数据与另一文件的数据合并,则可能会删除文件,且随之仅需从一个 块重新定位所述另一文件的数据。举例而言,如果来自块2的文件A的数据已与块7中 的文件C的数据合并,则接着可删除文件A或文件C,且随之仅需要从所述一个块7重 新定位数据。块回收是与写入文件数据的处理交错的处理,其中从正经历回收的块重新定位有效 数据,以便允许待擦除的块(其所有容量指定为未分配)回收所述块中的未用容量。可 出于两种原因中的一者选择要回收的块
1. 块因一文件已删除或更新而含有过时数据;或
2. 块为部分块,且含有未经编程容量。
分配给回收处理的时间比例优选恒定,以便可维持恒定的写入新文件数据的速度。 这难以实现,因为文件写入处理会产生必须由回收处理来处理的不可预测数目的部分块。
在图24中展示的文件到块的映射方案的益处在于,其允许含有最新近写入的文件数 据的部分块尽可能长久地保持,直到所述部分块被选择为用于回收操作的源块或目的地 块为止。这增大了文件能够在重新定位其数据中的任何数据或共用块中的不相关文件的 数据之前被删除的几率。这是因为所述文件的数据包含在专用于所述文件的块中。因为 无须回收操作,所以无须复制数据的时间,且因此存储器系统更高效地操作。
图24的映射方案的一缺点在于,通常对每一写入的文件产生一个部分块,且一般将 需要合并许多部分块的数据以便回收其可用的未经编程(已擦除)容量。另外,如果存 储器控制器以自动合并来自部分写入块的数据以回收新的已擦除块容量的方式管理物理 存储器,则可因图24的映射方案而导致大量消耗时间的数据复制。因此,可能会需要改 为实施图26的替代映射方案。此方案的主要特征在于新文件开始处的数据与先前占据部 分块的不相关文件的数据邻接。当巳写入文件的所有数据时,最后写入的数据将最通常 占据部分块的一部分,但只是暂时占据。随即在所述部分块中的未经编程空间中填充经 写入的新文件的数据以与已完成的文件邻接。
在图27的表中给出图26的方案的针对为写入数据而分配活动块的实施方案。图25 的表中的分配情况A在图27的表中由界定新文件及现有文件的单独情况的分配情况Al 及A2替代。
在图26中,文件的开始及文件的末端的数据通常与不相关文件的数据共享一块,且 在删除一文件时必须从两个块重新定位数据。举例而言,如果删除文件B,则从块2重 新定位文件A的数据,且从块3重新定位文件C的数据。这接着使块2及块3能够被擦 除且添加到已擦除(未分配)块的集区,稍后可将其它数据写入到所述块中。
图26的文件到块映射方案的一优点在于,其消除了经部分编程块的累积。因为在部 分块中待写入的新文件的数据的开始与不相关的现有文件的数据邻接,所以含有最新近 写入的文件数据的部分块无法长时期保持,且因此在装置中存在非常少的部分块。这约束了必须在回收操作期间合并来自部分块的数据的情形,且允许建立恒定的回收速率以 使新文件数据的恒定写入速度得以维持。
然而,图26的映射方案的一缺点在于,其增加了在删除文件时需要重新定位不相关 文件的数据的几率,且增加了每次必须重新定位的数据量。图26的方案中在删除文件时 增加了数据重新定位的此缺点否定了优于图24的方案的降低在回收操作期间来自部分 块的数据的合并的发生率的优点。
回收块容量
如上文所描述,块管理的一部分包括回收块中的未用容量以存储新数据。此在存储 于存储器系统中的数据量远小于存储器系统容量时并不特别重要,但优选将存储器系统 设计为就像其充满数据一样操作。这意味着,可以回收此未用容量的方式来处理仅含有 过时数据的块及含有有效数据但也具有一些过时数据及/或未写入页的其它块。目标是尽 可能完全地利用存储器系统的存储容量,而同时最小化对系统的性能的不利影响。
将指定用于回收操作的块(源块)中的任何有效数据复制到具有用以存储所述有效 数据的充足的未分配(已擦除)容量的一个或一个以上块(目的地块)中。根据上文描 述的块管理技术来选择目的地块。将存储于源块中的每一文件的数据复制到基于文件的 状态及其它因素(如上文所描述)而选择的类型的块。在图28A到图28D中给出作为回 收操作的一部分而在不同类型的文件之间复制数据的实例。
在图28A中,作为实例说明对两个部分块681及683的回收操作。块681是编程块, 其中存储文件A的有效数据,同时也含有未存储数据的已擦除容量。取决于文件A的状 态的一个可能回收操作为,将块681的文件A的数据复制到已包括不同文件B的数据的 另一部分块685的可用已擦除容量中,因此使所述部分块685成为共用块。接着在FIT 中不再参考在块681中的数据群组,且将所述块记录为过时。当存储于块681中时,文 件A具有包括编程块的状态(参看图17)中的一者。可接着将数据移动到另一碎形块, 同时使文件保持写入到最多两个碎形块中。在复制到块685之后,依据存储文件的其它 数据的块的类型,文件A已转变为包括存储于共用块中的文件的数据的状态(参看图17) 中的一者。
图28A的块683是共用块,所述块683是通过将其文件C及D的经存储数据复制到 含有文件E的数据的编程块687的已擦除容量中而回收,所述编程块687接着变为共用 块。块683中的文件C及D的数据接着就像所述块自身一样过时。文件C及D中的每一 者的状态并未改变,因为数据已从一个共用块移动到另一共用块。然而,文件E的状态己改变。或者,文件C及D中的每一者的数据可移动到彼此不同的块,且无需必须复制 到共用块的可用空间。文件的状态可接着可能地转变成其它状态。
在图28B中说明对实例块689及691的回收操作。这些块中的每一者是过时块,因 为其充满了有效数据及过时数据两种数据。块689是含有文件F的数据的文件块,所述 文件F的一部分是过时的且其余部分是有效的。举例而言,这可在更新文件F期间发生, 其中将新数据写入到在文件末端处的具有与文件的现有数据相同的逻辑偏移的地址,且 现有数据接着变为过时。在此实例中,将文件F的数据复制到含有文件G的数据的编程 块693的巳擦除容量中,从而导致块693的类型改变为共用块。可替代地将文件F的有 效数据写入到已擦除块,此接着将导致所述块成为编程块。
图28B的块691是含有文件H的无效数据及文件I的有效数据的满的共用块。在此 实例中,将文件I的有效数据从块691复制到己擦除块695中。块695接着变为编程块。 或者,如果可得到良好适合性,则可将文件I的数据写入到含有另一文件的数据的部分 块。目的地块将取决于文件I在回收操作时的状态。
由于在图28A及图28B中展示的回收操作的四个特定实例中的每一者,存储于两个 部分块中的数据组合为一个,从而使所述两个块中的另一者仅具有过时数据。所述块于 是成为无效块。接着如图28C中所说明通过擦除块而回收原始块681、 683、 689及691 中每一者的整个空间。已擦除块是回收无效块的结果。
图28D展示存储文件J的数据的文件块697的实例。当文件J由主机删除时,使在 块697中且可能也在其它块中的文件J的数据过时。块697于是变为无效。回收无效块 为系统已擦除块集区提供已擦除块。
从存储器中删除文件通常也导致一个或一个以上碎形块(例如,共用块或满的共用 块)中的文件的数据变过时。因为另一文件的其余有效数据将小于块的存储容量且可能 是较少的量,所以所述块接着经受回收操作。
由图29的流程图概括展示回收操作。依据特定实施例,为部分块、过时块及无效块 维持一个或一个以上列表,如由步骤701所指示。根据一技术,在启动存储器系统时(例 如,当首次施加电力时)建立块的此列表。此列表可包括使得能每次选择一个回收块的 块的其它信息,例如,每一块中的有效数据量及每一块中的已擦除空间量。这些量通常 根据块的页的数目或在使用元块时根据元页的数目来测量。 一种优选替代技术是在非易 失性存储器中维持这些列表,且只要一个块的状态改变便在列表中添加或更新所述块的 条目。利用此技术,当初始化存储器系统时,无须扫描块及建立列表。作为将所有部分块、过时块及无效块保持于列表上的替代方案,仅包括那些具有低于某一设定阈值量的 少量有效数据的块,因为选定的回收块的一个特征在于,所述块具有极少或不具有需要 复制的有效数据。在许多回收操作中必须将数据从一个块复制到另一块,这要花费显著 量的时间,因此一般首先对那些具有较少待复制数据量的块执行此操作。
这些块的列表随着数据被写入、更新、移动、删除等而不断改变。导致块的类型改 变为部分、过时及无效以及导致块的类型从部分、过时及无效改变的改变导致由图29的 步骤701维持的列表改变。有效数据量的改变各自存储于这些块中,且已擦除容量的量 的改变也记录于块列表中。
在步骤703中,优选从经更新列表上的块中识别单个回收块作为按次序的下一个块 来回收。在部分块或过时块的情况下,其是待复制到称为目的地块的另一块中的有效数 据的源。下文描述可用于选择源块的若干特定技术。
图29的下一步骤705接着考虑到需要响应于主机的命令而执行的存储器操作,来确 定在当前时间执行回收操作是否合适。如果主机已发出闲置命令或指示将存在主机不会 期望存储器系统执行特定操作的某段时间的类似命令,那么系统可在前台自由地进行额 外开销操作,其中包括回收操作。即使主机忙于将数据写入到存储器系统或从存储器系 统读取数据,回收操作(尤其是其数据复制)仍可与数据写入及读取操作交错进行。在 2005年10月25日申请的阿兰*辛克莱(Alan Sinclair)的第11/259,423号美国专利申请 案及2005年12月19日申请的阿兰 班纳特(Alan Bennett)等人的第11/312,985号美 国专利申请案中描述将此交错应用于物理存储器单元块。
如果由图29的步骤705确定可进行回收操作,则所述处理依据经识别的回收块是否 含有有效数据而有所不同,且如果含有有效数据,则所述处理依据是否含有一个以上文 件的有效数据而有所不同。在部分块或过时块的情况下,按定义所述块将含有有效数据, 且在共用块或满的共用块的情况下,所述块将含有两个或两个以上文件的有效数据。由 步骤707确定在回收块中是否存在有效数据。如果存在必须移动的有效数据,则在下一 步骤709中识别单个文件的数据且识别待接收所述数据的目的地块。通过上文参看图17 到图19而描述的处理来识别目的地块,以便维持文件(有效数据属于所述文件)的所有 数据存储于两个或两个以下碎形块中(在此实例中)。接着如步骤711所指示开始将一个 文件的有效数据从源回收块复制到目的地块。在复制了这些数据之后,处理返回到步骤 707以确定另一文件的数据是否留存。如果留存,则对额外数据重复步骤709及711的处 理。目的地块是独立于对不同文件的数据的较早选择而选择的。此操作继续进行,直到在步骤707中确定源块中不再存在待移动的数据为止,在此情况下,可按步骤713擦除 源块。接着可将此块放置到已擦除块集区中以用于存储新数据。
返回到图29的步骤707,如果源块不含有有效数据(这是无效块的情况),则不存 在待移动的有效数据。仅需要擦除源块。因此,在所述情况下,处理绕过如图29中展示 的步骤709及711。
在图29的处理的第一实施例中,由步骤701维持部分块、过时块及无效块的单个列 表。列表上的个别条目中包括块中的有效数据量。在步骤703中,从列表中选择为回收 块的块是具有最少有效数据的块。如果列表上存在一个无效块,则将首先选择所述块, 因为所述块不具有有效数据。如果列表上存在许多无效块,则选择在列表上存在时间最 长的无效块。如果列表上不存在无效块,那么将具有最少量有效数据的块选择为回收块。 通过选择列表上的所有块中具有最少量有效数据的块,回收操作花费的时间于是比当有 更多有效数据待从一个块复制到另一块时短。结果,存储器系统的其它操作(例如,将 数据写入到存储器及从存储器读取数据的速度)得以维持于高速率。以较少的存储器性 能代价获得新擦除的块。
图29的此基于碎形块中的有效数据量而在单个列表上选择源块的处理的第一实施 例具有实施起来相对简单的优点。然而,此处理可通过也考虑到部分块的值而改良。部 分块具有可写入数据的已擦除容量,而过时块及无效块均不含有任何已擦除容量。在可 将过时块用于存储新数据之前,必须将任何有效数据从所述过时块中移出且移动到另一 块中,从而使得所述过时块可接着被擦除且可用于存储新数据。但部分块具有可写入数 据的已擦除容量,而又无须承受回收操作的额外开销。举例而言,这可能会无益于回收 部分块,原因仅在于部分块含有最少量的有效数据,而同时其也含有可写入数据的大量 已擦除容量。
因此,在图29的处理的其它实施例中,基于存在于部分块中的有效数据量及已擦除 容量的量两者而将部分块选择为回收源块的候选者。在图30中展示部分块中的数据的成 份。块(可为元块)具有含有有效数据的特定数目的一个或一个以上页(可为元页)及 被擦除且可写入数据的一个或一个以上其它页。如图30的实例中所示,部分块也可含有 一个或一个以上含有过时数据的其它页。
在图29的处理的这些其它实施例中,优选由步骤701将部分块维持于与过时块及无 效块的列表分离的列表中。当部分块具有较少己擦除容量(这意味着所述部分块在其当 前状态下并不非常有用)及少量需要移动的有效数据时,使所述部分块朝其列表的顶部移动以进行回收操作。这些块将主要含有过时数据。相反,具有大量已擦除容量(这意 味着所述部分块可能对存储数据有用)及大量待移动的有效数据的部分块将最不可能被 识别为回收块的候选者。回收具有己擦除容量的部分块不会向逻辑地址空间添加与回收 过时块相同的量的存储容量。无效块显然是对回收而言最具吸引力的块,因为其并不具 有有益的已擦除容量且并不具有需要复制的有效数据。
在图29的回收块识别步骤703的第二实施例中,由步骤701维持三个单独列表,其 中对于部分块、过时块及无效块中的每一者各有一个列表。如果存在无效块,则从无效 块的列表中选择回收块,直到所述列表上不再存在块为止。除了可能按先进先出(FIFO) 次序以使在列表上存在时间最长的无效块得以首先选择之外,不存在列出无效块的特定 次序。接着,如果不存在无效块,则从过时块列表中选择所述列表上的所有块中具有最 少量有效数据的块。
如果在无效列表及过时列表中的任一者上均不存在块,则接着在步骤703中将部分 块列表上的块选择为回收块。尽管可将部分块选择为具有最少量有效数据的部分块,但 优选以认识到其已擦除容量的益处的方式来对部分块分等级。为此目的,可对每一部分 块计算"回收增益",如下
回收增益气S-kE)/V (1)
其中,S为根据块的数据存储页的总数目的块大小,E为可写入数据的已擦除容量的 页的数目,且V为含有需要移动到另一块的有效数据的页的数目。包括常数k以权衡块 的已擦除容量的有利效应,但可将其设为l。随着kE的值增大,所得回收增益降低。随 着V的值升高,回收增益也降低。在步骤703中将具有回收增益的最高值的部分块选择 为回收块。可替代地用其它数学表达式来定义根据E及V的回收增益,E及V权衡对含 有有效数据的系统操作的损失与具有已擦除容量的益处。也可每当块中发生改变时(例 如,每当将数据写入到其已擦除容量中时)计算回收增益,且将所述回收增益作为由文 件目录或FIT维持的信息的一部分而存储。
在图31中说明此第二实施例,其展示从单独的部分块列表、过时块列表及无效块列 表中选择(如由图29的步骤701所维持)选择回收块(图29的步骤703)的方法。步 骤721首先确定是否存在于无效块列表上列出的块。如果存在多个所述块,则由步骤723 将在列表上存在最长时间的块选择为回收块。如果在无效块列表上不存在块,那么由步 骤725确定过时块列表上是否存在条目。如果存在,则在过时块列表上有一个以上块的情况下,由步骤727将具有最少量有效数据的块选择为回收块。如果由步骤725确定过 时块列表上不存在条目,那么在步骤729中查阅部分块列表。当在部分块列表上存在一 个以上块时,将具有最高回收增益的块选择为回收块。回收增益例如通过使用上文方程 式(1)来考虑块中的有效数据量及已擦除容量。如果部分块列表上不存在内容,则通过 返回到步骤721来重复所述处理,直到在列表中的一者上出现块为止。在选择回收块之 后,所述处理前进到图29的步骤705。
由图32的流程图展示第三实施例。执行图29的步骤703也开始于在由图29的步骤 701维持的无效块列表上寻找条目的步骤741。如果在无效块列表上存在一个以上条目, 则由图32的步骤743将最旧者选择为回收块。如果在无效块列表上不存在条目,则下一 步骤745确定过时块列表上是否存在条目。如果存在,则随后步骤与图31的实施例的不 同之处在于,如果在部分块列表上也存在至少一个条目,则确定最好从过时块列表还是 部分块列表中选择回收块。
图32的步骤747识别过时块列表上的含有最少量有效数据的块。接着由步骤749确 定部分块列表上是否存在至少一个块,且如果存在,则在步骤751中识别具有最少量有 效数据的块。下一步骤753接着在从过时块列表中识别的一个块与在部分块列表上识别 的一个块之间进行选择。为此目的,对在步骤751中从部分块列表中识别的块计算量 (V+kE),项V、 E及k与上文使用的相同。将此量与在于步骤747中从过时块列表中识 别的块中的有效数据的量V进行比较。如果部分块的量(V+kE)大于过时块的V,那么 在步骤755中将所述过时块选择为回收块。但如果过时块的V大于经识别部分块的量 (V+kE),那么在步骤757中将所述部分块选择为回收块。
通过在与经识别过时块的仅有效数据V比较之前将经识别部分块的已擦除容量的量 kE添加到其有效数据V,所述处理倾向于赞同选择过时块。将保持具有与经识别过时块 相同的有效数据量的经识别部分块,因为所述部分块仍可能用于在其已擦除容量中存储 数据。实际上,将保持具有比过时块的有效数据量小一量kE的有效数据量的部分块。
返回到图32的步骤745,如果过时块列表上不存在条目,那么在步骤759中确定是 否存在于部分块列表上列出的块。如果不存在,则所述处理返回到步骤741以重复,直 到在三个列表中的一者上放置有一块为止。如果列出了多个部分块,那么在步骤761中, 将具有最少量有效数据的块选择为回收块。或者,可通过使用如参考第二实施例(图31)
的步骤731描述的回收增益来选择部分块。
第三实施例可替代地仅利用两个列表。第一列表为过时块列表,其含有用于含有过时数据且不含有已擦除容量的块的条目。将无效块及过时块两者放置在单个"过时"块 列表上,而非使用如图32中展示的单独无效块列表。块可任选地含有有效数据。列表中 的每一条目均具有一含有用于定义与所述条目有关的块中的有效数据量的值的字段。列 表中的条目根据这些字段中的值而排序。因此,将含有过时数据且不含有有效数据的块 (无效块)在此第一列表的顶部分组在一起。
对第三实施例的此替代方案中的第二列表是部分块列表,其含有用于含有一些已擦 除存储容量的块的条目。块可任选地含有有效数据。列表中的每一条目具有一含有用于 定义与所述条目有关的块中的有效数据量的值的字段。列表中的条目根据这些字段中的 值而排序。可通过图32的步骤753的技术从第一列表或第二列表的顶部(具有最少量无 效数据的块)选择一块。
图33的表阐述根据第三实施例的此修改放置于部分块列表及过时块列表上以用于 回收操作的块的类型的细节。为了放置于部分块列表上,块含有有效数据及已擦除容量 两者。块中是否存在任何过时数据无关紧要。为了放置于过时块列表上,块含有过时数 据以及有效数据或已擦除容量中的一者(但非其两者)。
结论
虽然已相对于本发明的示范性实施例描述了本发明的各种方面,但应了解,本发明 有权在随附权利要求书的整个范围内受到保护。
权利要求
1.一种识别系统内的文件对象的数据的方法,其包含维持划分为逻辑块的系统逻辑地址空间,对在所述逻辑块中的一者或一者以上内的所述文件对象中的个别文件对象指派唯一地址,其中所述逻辑块可各自含有一个以上文件对象的地址,及限制个别文件对象指派到的还含有第二文件对象的数据的逻辑块的数目。
2. 根据权利要求1所述的方法,其另外包含在主机系统中进行所述方法,所述主机系统另外提供所述文件对象的所述数据, 且在适于与存储器系统连接的外部接口处利用所述逻辑地址空间。
3. 根据权利要求1所述的方法,其另外包含在存储器系统中进行所述方法,所述存储器系统另外从外部源接收所述文件对象 的所述数据,且在所述存储器系统内利用所述逻辑接口地址空间作为与非易失性数 据存储媒体的接口。
4. 根据权利要求1所述的方法,其另外包含在处理争元中进行所述方法,所述处理单元适于与供应所述数据文件对象的主机 可移除地连接,且适于与在与所述处理单元的接口处利用所述逻辑地址空间的存储 器系统可移除地连接。
5. 根据权利要求1到4中任一权利要求所述的方法,其中限制逻辑块的数目包括将写 入个别数据文件对象的还含有第二文件对象的数据的逻辑块的数目限于预定最大数目。
6. 根据权利要求5所述的方法,其中所述预定最大数目为二。
7. —种主机系统通过接口传递文件对象的数据的方法,所述接口适于与具有可在再编程之前一起擦除的存储器单元块的类型的非易失性存储器系统连接,所述方法包含在所述接口处维持划分为逻辑块的逻辑地址空间,及以如下方式指定所述文件对象中的个别文件对象内的数据在所述逻辑块中的一 者或一者以上内的地址使所述逻辑块可各自含有一个以上文件对象,但将仅部分 填充有个别文件对象的数据的逻辑块的数目限于小于至少一个预设限值,以使一个 或一个以上其它文件对象的数据被写入或可被写入到所述部分填充的块中。
8. 根据权利要求7所述的方法,其另外包含将所述逻辑地址空间的所述逻辑块的大小配置成各自具有与存储器系统的存储 器单元的所述个别块相同的数据存储容量,所述主机系统适于与所述存储器系统连接。
9. 根据权利要求7所述的方法,其中在所述主机通过所述接口发送所述文件对象的数 据后指定所述个别文件对象的数据在所述逻辑块中的一者或一者以上内的所述地 址。
10. —种在具有存储器单元块的非易失性存储器系统中存储文件对象的数据的方法,所 述存储器单元块可在用所述数据再编程之前一起擦除,其中将逻辑地址空间划分为逻辑块,所述逻辑块各自具有对应于所述个别存储器单元 块的特征的至少一个特征,对个别文件对象的数据指派所述逻辑块中的一者或一者以上内的地址,其中所述 逻辑块可各自含有一个以上文件对象的数据的地址,但含有特定个别文件对象的数 据加上另一文件对象的数据的逻辑块的数目是有限的,且将所述逻辑块的地址在所述存储器系统内映射到存储器单元块的地址。
11. 根据权利要求10所述的方法,其中对所述特定文件对象的,数据指派地址包括将仅 部分填充有所述特定文件对象的数据的逻辑块的数目限于预定数目。
12. 根据权利要求11所述的方法,其中所述预定数目为二。
13. 根据权利要求10所述的方法,其中所述至少一个对应特征包括所述个别逻辑块的 数据存储容量与所述个别存储器单元块的数据存储容量相同。
14. 根据权利要求IO所述的方法,其中所述至少一个对应特征包括所述个别逻辑块的所述数据存储容量与所述个别存储器单元块的所述数据存储 容量相同,将所述个别逻辑块划分为用于在其中写入数据的多个页,所述页具有与所述存储 器单元块的个别多个页相同的数据存储容量,及将所述个别逻辑块的最低页地址映射到所述个别存储器单元块的最前页中。
15. —种主机系统通过接口传递文件对象的数据的方法,所述接口适于与具有可在再编 程之前一起擦除的存储器单元的单位的类型的非易失性存储器系统连接,所述方法 包含在所述接口处维持划分为逻辑块的逻辑地址空间,根据在如此指定的个别块内寻址的文件数据的结构指定一组多个逻辑块类型, 根据存储如此指定的个别文件的数据的一个或一个以上逻辑块的类型的组合指定一组多个准许的文件状态,维持在所述逻辑块内寻址的个别数据文件的所述文件状态的记录,及 对根据所述记录中的所述个别文件的当前状态选择的类型的逻辑块指定个别文件的数据的地址。
16. 根据权利要求15所述的方法,其中所述经指定的多个数据块类型包括第一多个类 型,其中仅一个文件的数据存储于单个逻辑块中;及第二多个类型,其中两个或两 个以上文件的数据存储于单个逻辑块中,且其中所述准许的文件状态限制可被指定 所述文件中的单个文件的地址的所述第二多个类型的块的最大数目。
17. —种计算机系统,其包含接口,其中使用划分为不同块的连续逻辑地址空间中的地址识别数据文件,及 处理器,其与所述接口可操作地连接以导致个别文件的数据通过所述逻辑块中的一者或一者以上的地址而识别,所述逻辑块经选择以将部分地含有所述文件中的任 一者的数据的块的数目维持为低于预设限值。
18. 根据权利要求17所述的系统,其中所述处理器进一步操作以依据部分填充有所述 文件的数据的地址的逻辑块的数目而对所述个别文件指派多个经指定状态中的一者。
19. 根据权利要求17所述的系统,其中所述处理器进一步操作以对具有在所述逻辑块 中寻址的数据的每一文件指派一状态,且基于给定文件的状态选择所述逻辑块中要 寻址给定文件的数据的一个逻辑块。
20. 根据权利要求19所述的系统,其中所述处理器进一步操作以对具有在所述逻辑块 中寻址的数据的每一文件指派一状态,所述状态至少部分地基于部分填充有所述文 件的数据的地址的逻辑块的数目。
21. 根据权利要求20所述的系统,其中所述处理器进一步操作以对具有在所述逻辑块 中寻址的数据的每一文件指派一状态,所述状态另外基于部分填充有所述文件的数 据的地址的还含有可被指定额外地址的未用容量的逻辑块的数目。
22. 根据权利要求20所述的系统,其中所述处理器进一步操作以对具有在所述逻辑块 中寻址的数据的每一文件指派一状态,所述状态另外基于部分填充有所述文件的数 据的地址的还含有一个或一个以上其它文件的数据的地址的块的数目。
23. 根据权利要求17所述的系统,其中所述接口包括外部接口。
全文摘要
对数据文件指派地址,所述地址在具有物理存储器单元块的平常类型的快闪存储器系统的连续逻辑地址空间接口(LBA接口)的一个或一个以上逻辑块内。此指派可由通常但并非必要产生所述数据文件的主机装置进行。以降低在所述物理存储器块内的文件数据的分段量的方式来控制含有任一文件的数据的逻辑块的数目,借此维持良好的存储器性能。所述主机可响应于了解与其连接的存储器的物理特征而配置所述地址空间的所述逻辑块。
文档编号G06F12/02GK101606133SQ200780048434
公开日2009年12月16日 申请日期2007年12月19日 优先权日2006年12月26日
发明者巴里·赖特, 艾伦·韦尔什·辛克莱 申请人:桑迪士克股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1