CN101027651A - 最佳顺序性簇管理的fat分析 - Google Patents

最佳顺序性簇管理的fat分析 Download PDF

Info

Publication number
CN101027651A
CN101027651A CNA2005800301633A CN200580030163A CN101027651A CN 101027651 A CN101027651 A CN 101027651A CN A2005800301633 A CNA2005800301633 A CN A2005800301633A CN 200580030163 A CN200580030163 A CN 200580030163A CN 101027651 A CN101027651 A CN 101027651A
Authority
CN
China
Prior art keywords
data
logical address
storage
main frame
addressing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2005800301633A
Other languages
English (en)
Other versions
CN101027651B (zh
Inventor
凯文·M·康利
艾伦·韦尔什·辛克莱
彼得·约翰·史密斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Delphi International Operations Luxembourg SARL
Original Assignee
SanDisk Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/022,369 external-priority patent/US8607016B2/en
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of CN101027651A publication Critical patent/CN101027651A/zh
Application granted granted Critical
Publication of CN101027651B publication Critical patent/CN101027651B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

本发明揭示用于管理一非易失性存储器系统(例如,闪存存储器)中的数据的技术。一控制器可使用由一主机存储在非易失性存储器上的与所述主机有关的文件系统的信息来确定一个或一个以上簇(或具有簇的扇区)当前是否被分配。所述控制器可使用所述与所述主机的文件系统有关的信息来识别所述主机何时向下一空闲簇发送数据并通过从所述非易失性存储器中的其它位置拷贝数据来以一顺序格式存储所述数据。

Description

最佳顺序性簇管理的FAT分析
技术领域
本发明大体上涉及用于与计算系统一起使用的数据存储系统,且更确切地说,涉及用于在非易失性存储器存储装置上保存数据的技术。
背景技术
如今,有许多商业上成功的非易失性存储器产品正被使用,特别是具有小型卡形式的存储器产品,这类产品使用形成在一个或一个以上集成电路小片上的闪存EEPROM(电可擦除可编程只读存储器)单元阵列。通常提供单独集成电路小片上的存储器控制器来作为对主机的接口。主机可使用控制器来对非易失性存储器执行多种操作(例如,读、写)。控制器通常包含微处理器、某种非易失性只读存储器(ROM)、易失性随机存取存储器(RAM)和一个或一个以上专用电路,例如在编程和读取数据期间在数据穿过控制器时从数据中计算出误差校正码(ECC)的专用电路。一些可在市面上买到的卡是压缩闪存TM(CF)卡、多媒体卡(MMC)、安全数字(SD)卡、智能媒体卡、人事标签(P-Tag)和存储器存储卡。主机包含个人计算机、笔记本计算机、个人数字助理(PDA)、各种数据通信装置、数码相机、蜂窝式电话、便携式音频播放机、汽车音响系统和类似类型的设备。除了存储卡实施方案之外,非易失性存储器可替代性地嵌入到各种类型的主机系统中。
如在大多数集成电路应用中,闪存EEPROM存储单元阵列也存在缩小实施某种集成电路功能所需的硅衬底面积的压力。始终需要增加可存储在给定硅衬底面积中的数字数据的数量,以便增加给定尺寸的存储卡及其它类型的封装的存储容量,或者既增加容量同时又减小尺寸。增加数据存储密度的一种方法是在每个存储单元和/或每个存储单位或元件中存储一位以上的数据。通过将存储元件电荷电平电压范围窗口划分成两种以上状态来完成这种做法。使用四种此类状态允许每个单元存储两位数据,每种状态在每个存储元件中存储三位数据,等等。第5,043,940号和第5,172,338号美国专利中描述了使用浮栅的多状态闪存EEPROM结构及其操作,且前述第2003/0109093号美国专利申请公开案中描述了使用介电浮栅的结构。出于多种原因,也可用第5,930,167号和第6,456,528号美国专利中描述的方式以两种状态(二进制)来操作多状态存储单元阵列的选定部分。
典型的闪存EEPROM阵列的存储单元被划分为离散的单元“区块”,所述区块可被一起擦除。每个擦除区块通常存储一个或一个以上页面的数据,页面是编程和读取的最小单位,虽然也可在不同子阵列或平面中并行编程或读取一个以上页面。每个页面通常存储一个或一个以上扇区的数据,扇区大小是由主机系统定义的。实例性扇区根据由磁盘驱动器建立的标准而包含512个字节的用户数据,加上若干字节的与用户数据和/或存储所述用户数据的擦除区块有关的额外开销信息。此类存储器通常在每个擦除区块内配置有32、128或更多的页面,且每个页面存储一个或仅若干个主机扇区的数据。还应注意,为了将数据重新写入区块,应首先擦除所述区块。
为了在将用户数据编程到存储器阵列中和从存储器阵列中读取用户数据期间增加并行度,通常将所述阵列划分成子阵列(一般称为平面),所述子阵列中含有其各自的数据寄存器和其它电路以实现并行操作,从而使得可同时将若干扇区的数据编程到若干平面或所有平面中的每一者中或从若干平面或所有平面中的每一者中读取若干扇区的数据。可将单个集成电路上的阵列以物理形式划分成多个平面,或可由单独的一个或一个以上集成电路小片形成每个平面。第5,798,968号和第5,890,192号美国专利中描述了此类存储器实施方案的实例。
为了进一步高效地管理存储器,可将擦除区块以逻辑形式链接在一起,以形成虚拟区块或元区块。也就是说,可将每个元区块定义为包含来自每个平面的一个擦除区块。第WO 02/058074号国际专利申请公开案中描述了所述元区块的使用。元区块由主机逻辑区块地址识别为用于编程和读取数据的目的地。同样,元区块的所有擦除区块被一起擦除。与此类大型区块和/或元区块一起操作的存储器系统中的控制器执行若干功能,包含从主机接收的逻辑区块地址(LBA)与存储单元阵列内的物理区块编号(PBN)之间的转译。通常由区块地址内的偏移量来识别区块内的个别页面。地址转译通常涉及使用逻辑区块编号(LBN)和逻辑页面的中间项。因此,存储器阵列中的区块可由单个擦除区块组成或可由以逻辑形式链接起来以形成元区块的两个或两个以上擦除区块组成。
从主机应用程序的角度看,可将闪存存储器划分成从逻辑地址零(0)开始且以逻辑地址N结束的逻辑地址空间。图1说明主机的逻辑地址空间102,其被分割成多个“逻辑扇区”。主机将若干(例如,四到六十四(4-64)个)逻辑扇区分组成一簇。如图1所示,主机可将逻辑地址空间102划分成多个簇,包含簇A、B、C、D、E、F、G和H。由此,这些簇中的每一者可代表预定数目的扇区(例如,每个簇四到六十四(4-64)个逻辑扇区)。在任何情况下,主机均以数据的逻辑单位来分配数据,所述逻辑单位可称为“簇”。举例来说,簇A、B和C可用来分配文件1,而簇D用来分配文件2。应注意,主机以簇分配文件。然而,并非簇中的所有逻辑扇区均需要含有一文件的数据。举例而言,簇C中只有一部分(例如,只有一个逻辑扇区)可具有数据。然而,主机通常将整个簇分配给文件,即使并非需要所述簇中的所有逻辑扇区。
主机可使用文件分配表(FAT)104来跟踪文件。文件分配表(FAT)104有效地代表逻辑文件结构,且也指示已为逻辑文件结构中的每个文件分配了哪个簇。主机通过更新文件分配表(FAT)104来维护逻辑文件结构。举例而言,当分配了新文件时,对文件分配表(FAT)104进行更新,以尤其指示已为新文件分配了哪个(些)簇。同样,当删除文件或目录时,主机更新文件分配表(FAT)104。应注意,由于更新的原因,主机可能会对簇解除分配。举例而言,当主机删除文件1时,可能会得到经过更新的文件分配表(FAT)106,其中主机有效地对被分配用于存储文件1的簇A、B和C解除分配。
与主机的逻辑地址空间相反,闪存存储器控制器的逻辑地址空间被划分成多个“逻辑区块”。换句话说,可将同一逻辑地址空间102表示为控制器的逻辑地址空间103。在此实例中,逻辑地址空间102和逻辑地址空间103的基础单位均为扇区。如图1所示,可将逻辑地址空间103划分成多个逻辑区块,包含逻辑区块1和逻辑区块2,每个逻辑区块包括多个扇区的数据,所述扇区的数据被映射到存储器阵列的单个区块。这些逻辑区块被映射到可作为擦除单位的存储器区块(例如,单个擦除区块或元区块)中。因此,逻辑区块与存储器阵列的区块之间存在一一对应,其中逻辑区块中的所有扇区均存储在单个区块中。举例来说,逻辑区块1可被映射到区块2中,等等。总而言之,主机和控制器使用不同的存储器逻辑单位。主机将逻辑地址空间划分成多个簇,而控制器将逻辑地址空间划分成多个逻辑区块。还应注意,通常仅将主机簇施加到分配给应用数据和子目录条目的逻辑地址空间。此外,主机可能不会将分配给其它系统数据的逻辑地址空间作为簇来管理。还应注意,第一簇一般并不位于逻辑地址空间的开始处。因此,簇和逻辑区块可能并不彼此对准。
然而,常规控制器并不知道主机所使用的逻辑结构。常规上,控制器仅将主机所使用的逻辑地址102映射成逻辑地址103,然后再将其映射成物理地址110。这意味着常规控制器不会考虑主机的数据逻辑结构或主机操作可能对数据造成的结果。举例而言,当分配了新文件时,更新逻辑文件系统104以尤其指示已为所述新文件分配了哪个(些)簇。同样,当删除了文件或目录时,主机会更新逻辑文件系统104。此外,主机可能会将一个或一个以上簇解除分配。举例而言,当主机删除了文件1时,经过更新的文件分配表106指示主机已对先前分配用于存储文件1的簇A、B和C有效地解除分配(即,在更新的文件分配表106中已不再表示文件1)。虽然簇A、B和C已被主机解除分配且可被擦除,但常规控制器不会对对应于已解除分配的簇A、B和C的数据进行“垃圾收集”。这意味着数据将继续在存储器上。垃圾收集是将有效扇区的数据从含有废弃扇区的数据的初始区块拷贝到更新区块的操作。当已经拷贝了所有有效扇区的数据时,可对初始区块进行标记以供擦除。通常以此方式将数据从两个或两个以上区块合并到单个区块中,因而更有效率地存储数据且释放存储器阵列中的空间。垃圾收集期间不必要的数据拷贝会降低此类操作的效率。此外,在可将两个区块中的数据合并到一个区块中时,在垃圾收集期间会在更新区块时将解除分配的数据拷贝若干次。
为了进一步说明,图1中描绘初始区块120。为简单起见,假设初始区块120包含对应于主机用来分配文件1和2的逻辑簇A、B、C和D的数据。此外,进一步假设主机后来对文件1(簇A、B和C)解除分配,初始区块120仍然含有所有逻辑簇A、B、C和D,因为控制器无法知道文件1已被主机解除分配。然而,主机已要求控制器更新初始区块120的数据部分D。换句话说,在某一点处,主机可能想改变文件2,因此其使用其知道的对应于一个或一个以上应被更新的逻辑扇区的数据的逻辑地址来发送写入请求。控制器确定主机所定址的这些逻辑扇区对应于已由主机写入的扇区(例如,簇D),因此更新区块122是被部分地使用,因为初始区块120中的数据无法被覆写。这意味着可在一段时间内使用两个区块来代表逻辑区块,直到更新区块122被“关闭”(即,初始区块120中的所有数据均被拷贝到区块122)为止。(例如)在垃圾收集循环期间,可将初始区块120与更新区块122组合,以使得更新区块122成为“初始”区块122,且先前初始区块120被擦除并被返回到可用存储器区块的集区。在任何情况下,应注意,迟早会将对应于被解除分配的簇(A、B和C)的数据拷贝到更新区块122,以使得更新区块122可被关闭且初始区块120可被擦除。控制器可在易失性存储器或非易失性存储器内保存映射表,所述映射表定义存储器区块对于数据的逻辑区块的分配。拷贝存储在非易失性存储器中的数据会花费大量时间和资源。然而,拷贝已被解除分配的数据(例如,已被解除分配的簇A、B和C)并不是必须的。因此,如果不拷贝已被解除分配的数据,可进一步增强系统性能。一般来说,需要在遵守普遍使用的定址惯例的同时尽可能地增强系统性能。
因此,替代性非易失性存储器管理技术将是有用的。
发明内容
概括地说,本发明涉及用于管理非易失性存储器系统(例如,闪存存储器)中的数据的技术。根据本发明的一个方面,控制器可使用与主机的文件系统有关的信息来确定一个或一个以上簇(或一个或一个以上簇内的一个或一个以上扇区)当前是否被分配,所述与主机的文件系统有关的信息由主机存储在非易失性存储器上。将了解到,控制器可(尤其)使用与主机的文件系统有关的信息来确保(例如)在垃圾收集循环期间没有将一个或一个以上簇(或一个或一个以上扇区)从存储器中的一个位置拷贝到另一位置。因此,可避免某些常规上执行的不必要操作(例如拷贝数据),且增强系统性能。
还将了解到,控制器可直接使用一般由主机写入在文件分配表(FAT)中的信息来确定是否已将一个或一个以上先前分配的簇解除分配。或者,控制器可使用写入在根目录、子目录和文件分配表(FAT)中的信息来(例如)在数据分配表(DAT)中产生和/或维护其自身关于簇分配的信息。然而,应明了,可将本发明实施为利用一般存储在文件分配表(FAT)中的信息。因此,控制器不必维护其自身的信息或产生任何额外数据结构(例如,数据分配表)。然而,如下文将要描述的,维护数据分配表(DAT)带来的益处可能会多于仅仅依赖于从文件分配表(FAT)获得的信息。因此,还将进一步说明(例如)实施为数据分配表(DAT)的数据属性存储(DAS)。
一般来说,控制器可在非易失性存储器中维护数据属性存储(DAS),所述数据属性存储(DAS)包含一个或一个以上数据属性。数据属性可提供关于数据的有用信息(例如分配或解除分配状态、大小、优先权)。由此,可使用数据属性存储(DAS)来更智能地管理数据。本发明的另一方面涉及用于使用数据属性存储(DAS)来管理数据的技术。
在一个实施例中,将数据属性存储(DAS)实施为分配存储(AS)。所述分配存储(AS)可(例如)实施为表或提供每个数据簇(主机的逻辑单位)的分配状态的数据分配表(DAT)。簇代表主机用来以逻辑形式组织数据的逻辑单位。为了实现更好的存储器管理,非易失性存储器系统的控制器可存取数据分配表(DAT)。由此,数据分配表(DAT)有效地提供主机所使用的逻辑结构与控制器之间的桥接。这允许控制器可有效地了解主机的逻辑结构。此外,控制器还监视主机活动以确定(例如)主机是否已将一簇解除分配。举例而言,可监视DOS顺应系统的根目录、文件分配表(FAT)和子目录以检测主机对数据簇的解除分配。根目录、文件分配表(FAT)或子目录中的变化可能是(例如)因为主机删除了文件或文件中的一部分而导致的。在任何情况下,当已检测到对一个或一个以上数据簇的解除分配时,控制器更新数据分配表(DAT)。因此,数据分配表(DAT)可提供关于数据的更新的信息。此信息可用来更智能地管理数据。举例而言,可使用解除分配状态来确定在垃圾收集期间是否应当拷贝数据。无需拷贝已被解除分配的数据。因此,可避免常规上执行的某些不必要的操作且可增强系统性能。
在另一实施例中,可使用由主机存储在FAT中或在DAS中的信息来确定应当怎样存储主机发送的一部分数据。以非顺序性方式接收的数据可被以非顺序性方式存储,或者,可通过从其它地方拷贝数据以填充接收到的数据中的任何间隙来以顺序性方式存储。这种顺序性存储是有利的一种情况是主机向逻辑地址空间(例如簇)的可用(空闲的或被解除分配的)部分进行写入。此类数据写入指示主机正在存储新数据,且并不指示任何以非顺序性方式存储数据的理由。通过将主机发送的数据扇区的逻辑地址与空闲簇的逻辑地址范围进行比较,控制器可确定主机是否正写入下一空闲簇。根据这一确定,控制器可选择一种针对所述扇区的存储方案。
在一个实施例中,确定从主机接收的扇区是否指示主机正在写入下一空闲簇。如果是的话,将数据以顺序性形式写入在区块中,用从存储器阵列的其它地方拷贝的数据来填充数据中的任何间隙。如果不是的话,可考虑额外标准以确定以顺序性方式还是以非顺序性方式存储数据。举例来说,如果从主机接收到若干扇区且扇区之间存在逻辑地址的跳跃,那么跳跃的大小可确定存储方案。如果跳跃较小,那么可用拷贝的数据来填充所得的间隙,且更新的数据可以用顺序性格式来保存。在另一实例中,在更新区块是顺序性的且接近完整的情况下,更新区块可由数据充满以将其保持为顺序性的,而并非写入以非顺序性方式接收的扇区。可基于从非易失性存储器中的FAT的拷贝中直接获得的信息或可基于从FAT导出的DAS或类似结构中的信息来选择存储方案。
可以多种方式来实施本发明,包含作为方法、系统、装置、设备或计算机可读媒体。将从以下详细描述中容易了解本发明的其它方面和优点,所述详细描述结合附图举例说明了本发明的原则。
附图说明
附图各图中以实例而并非限制的方式说明本发明,在附图中相似的参考元件符号指代类似的元件,且其中:
图1说明逻辑地址空间,其可被分割为若干逻辑扇区。
图2A描绘根据本发明一个实施例的拷贝管理方法。
图2B描绘根据本发明一个实施例的计算环境。
图3A描绘根据本发明一个实施例的数据分配表(DAT)。
图3B描绘根据本发明一个实施例的数据分配表(DAT)的条目。
图3C描绘根据本发明一个实施例的可由控制器使用的主机的逻辑数据结构。
图4描绘根据本发明一个实施例的用于向闪存存储器控制器提供关于存储在闪存存储器上的数据的信息的方法。
图5说明根据本发明一个实施例的闪存存储器维护方法。
图6说明根据本发明一个实施例的监视方法。
图7描绘根据本发明一个实施例的示范性垃圾收集方法。
图8描绘根据本发明一个实施例的数据分配表(DAT)。
图9A展示文件分配表(FAT)的实例。
图9B展示从图9A的FAT导出的DAT。
图9C展示针对一部分主机数据的簇与扇区之间的对应的实例。
图9D展示将非顺序性数据存储在混乱区块中且之后将其拷贝到顺序性区块。
图9E展示将非顺序性数据直接存储在顺序性区块中。
图10展示根据本发明一实施例的用于为一部分主机数据选择存储方案的流程图。
图11展示根据本发明另一实施例的用于为一部分主机数据选择存储方案的流程图。
图12A展示以顺序性方式存储的非顺序性数据的实例。
图12B展示以非顺序性方式存储的非顺序性数据的第一实例。
图12C展示以非顺序性方式存储的非顺序性数据的第二实例。
图12D展示以非顺序性方式存储的非顺序性数据的第三实例。
具体实施方式
本发明涉及用于管理非易失性存储器系统(例如闪存存储器)中的数据的技术。根据本发明的一个方面,控制器可使用与主机的文件系统有关的信息来确定一个或一个以上簇(一个或一个以上簇内的一个或一个以上扇区)当前是否被分配,所述与主机的文件系统有关的信息由主机存储在非易失性存储器上。将了解到,控制器可(尤其)使用与主机的文件系统有关的信息来确保(例如)在垃圾收集循环期间没有将一个或一个以上簇(或所述簇内的一个或一个以上扇区)从存储器中的一个位置拷贝到另一位置。因此,可避免某些常规上执行的不必要操作(例如拷贝数据),且可增强系统性能。
还应了解到,控制器可直接使用一般由主机写入在文件分配表(FAT)中的信息来确定是否已将一个或一个以上先前被分配的簇解除分配。或者,控制器可使用写入在根目录、子目录和文件分配表(FAT)中的信息来(例如)在数据分配表(DAT)中产生和/或维护其自身关于簇分配的信息。然而,应明了,本发明可被实施成利用一般存储在文件分配表(FAT)中的信息。因此,控制器不必维护其自身的信息或产生任何额外数据结构(例如,数据分配表(DAT))。然而,如以下将要描述的,维护数据分配表(DAT)带来的益处可能会多于仅仅依赖于从文件分配表(FAT)获得的信息。因此,也将进一步说明可(例如)实施为数据分配表(DAT)的数据属性存储(DAS)。
一般来说,包含一个或一个以上数据属性的数据属性存储(DAS)可由控制器维持在非易失性存储器中。数据属性可提供关于数据的有用信息(例如分配或解除分配状态、大小、优先权)。由此,可使用数据属性存储(DAS)来更智能地管理数据。本发明的另一方面涉及用于使用数据属性存储(DAS)来管理数据的技术。
在一个实施例中,将数据属性存储(DAS)构建为分配存储(AS)。可将分配存储(AS)(例如)构建为表或提供每个数据簇(主机的逻辑单位)的分配状态的数据分配表(DAT)。簇代表主机用来以逻辑形式组织数据的逻辑单位。为了实现更好的存储器管理,非易失性存储器系统的控制器可存取数据分配表(DAT)。由此,数据分配表(DAT)有效地提供主机所使用的逻辑结构与控制器之间的桥接。这允许控制器可有效地了解主机的逻辑结构。此外,控制器还监视主机活动以确定(例如)主机是否已将一簇解除分配。举例而言,可监视DOS顺应系统的根目录、文件分配表(FAT)和子目录以检测主机对数据簇的解除分配。根目录、文件分配表(FAT)或子目录中的变化可能是因为(例如)主机删除了文件或文件中的一部分而导致的。在任何情况下,当检测到对一个或一个以上数据簇的解除分配时,控制器更新数据分配表(DAT)。因此,数据分配表(DAT)可提供关于数据的更新的信息。可使用此信息来更智能地管理数据。举例而言,可使用解除分配状态来确定在垃圾收集期间是否应当拷贝数据。无需拷贝已被解除分配的数据。因此可避免常规上执行的某些不必要的操作且可增强系统性能。
以下参照图2A到图8来论述本发明的实施例。然而,所属领域的技术人员将容易了解,此处关于这些附图给出的详细说明出于解释性目的,因为本发明超出这些有限实施例。举例来说,虽然描述参考了闪存存储器,但可使用其它类型的非易失性存储器。其它类型的非易失性存储器包含磁阻RAM(MRAM)、铁电RAM和相变存储器(也称为奥弗辛斯基电效应统一存储器或OUM)。
如上所述,根据本发明的一个方面,控制器可使用与主机的文件系统有关的信息来确定一个或一个以上簇(或簇内的扇区)当前是否被分配,所述与主机的文件系统有关的信息由主机存储在非易失性存储器上。控制器可(尤其)使用与主机的文件系统有关的信息来确保在垃圾收集循环期间没有将一个或一个以上簇(或簇内的扇区)从存储器中的一个位置拷贝到另一位置。为了进一步说明,图2A描绘根据本发明一个方面的拷贝管理250。首先,主机使用非易失性存储器装置来存储(252)供文件系统使用的信息。接下来,控制器使用由主机存储(252)的信息来确定(254)一个或一个以上簇(或一个或一个以上簇内的一个或一个以上扇区)当前是否被分配给任何有效文件。如所属领域的技术人员将了解,控制器可直接使用一般由主机写入在文件分配表(FAT)中的信息,以便确定(254)一个或一个以上簇(或一个或一个以上簇内的一个或一个以上扇区)当前是否被分配给任何有效文件。或者,控制器可使用根目录、子目录和FAT中写入的信息连同由主机写入到装置的逻辑扇区序列,以便产生和维护其自身的关于簇分配的信息。举例来说,控制器可产生和/或维护其自身的数据分配表(DAT)。在任何情况下,控制器确保(256)在存储器内在垃圾收集操作期间没有将被确定(254)为当前未被分配的任何簇(或簇内的扇区)从一个位置拷贝到另一位置。换句话说,只在确定(254)了簇(或簇内的扇区)当前被分配的情况下才拷贝所述簇(或簇内的扇区)。操作256之后结束拷贝管理方法250。
如上所述,维护数据分配表(DAT)带来的益处可能会多于仅仅依赖于从文件分配表(FAT)获得的信息。如所属领域的技术人员将了解,FAT可能不会总是指示簇已被解除分配。举例来说,FAT中可能存在没有链接到目录中的任何文件参考的簇条目链。
当文件被删除时,其目录条目被主机中的文件系统修改(文件名的首字符被改为0xE5)以表示文件已被删除。然而,FAT中的簇条目可能会保持其链接信息,就好像其仍被分配给一文件。用于重新使用簇和用于将FAT簇条目更新为“0x0000”以表示未使用的算法通常是主机中的特定文件系统实施方案的功能。DAT可使用目录或子目录信息中的变化来允许簇属性反映所述簇对一文件的当前分配状态,而无需依赖于主机文件系统。对于某些环境,DAT的实施甚至可能会比仅仅依赖于FAT更安全。当仅使用FAT来确定簇的分配状态时,存储器系统可能直到主机在文件结尾处更新FAT时才会知道簇对于文件的分配情况。因此,如果主机在写入FAT前修改了已经写入的文件的一部分,那么控制器可能会丢弃某些仍然具有已解除分配状态的有效数据。DAT的实施可有效地解决这一问题。
此外,根据本发明的原理而提供的数据分配表(DAT)也可提供FAT通常不会提供的特征。举例来说,FAT为簇定义单一的分配状态。然而,DAT可被实施成(例如)允许记录多位状态,从而允许将分配状态分解成在一簇内的一扇区或扇区群组。这允许控制器避免在文件之间拷贝未被分配的扇区,其中仅部分地使用第一文件的最后簇。鉴于DAT可提供的优点和额外特征,以下描述的实施例进一步说明在数据属性存储(DAS)(例如,DAT)中保存其自身的信息的控制器。然而,显而易见,控制器可在不偏离本发明范围和精神的情况下,仅依赖于FAT来确定与主机所使用的各种文件相关联的分配状态。
图2B描绘根据本发明一个实施例的计算环境200。在计算环境200中,闪存存储器控制器202允许主机应用程序204存取非易失性存储器(例如,闪存存储器206)。换句话说,主机应用程序204将闪存存储器控制器202用作到闪存存储器206的接口。因此,主机应用程序204可要求闪存存储器控制器202对闪存存储器206执行各种存取操作(例如,读取、写入)。主机应用程序204可使用逻辑地址空间来定址数据。闪存存储器控制器将主机的逻辑地址空间映射成控制器逻辑地址空间,后者又被映射成闪存存储器206上的物理地址空间。
此外,闪存存储器可建立并维护数据属性存储(DAS)208。所述DAS 208包含关于与存储在闪存存储器206中的数据相关联的各种属性的信息。举例而言,存储在数据属性存储(DAS)208中的数据属性可包含数据的分配状态、所分配的数据的大小、优先权。一般来说,数据属性存储(DAS)208可存储任何需要的数据属性,且用一个或一个以上位的信息来代表所述属性。应注意到,闪存存储器控制器204提供数据属性监视器208以监视主机应用程序204的活动。数据属性监视器208可解译主机应用程序204关于存储在闪存存储器206上的数据的活动。这意味着数据属性监视器208可确定应在何处改变数据属性并相应地在DAS 208中更新数据属性。
为了进一步说明,图3A描绘根据本发明一个实施例的数据属性存储(DAS)208。在此实施例中,将数据属性208实施为数据分配表(DAT)308。由此,DAT 308提供关于非易失性存储器系统的不同数据部分的分配/解除分配状态的信息。将了解,可根据逻辑数据结构(即主机应用程序204使用的逻辑数据结构)来组织这些各种数据部分。如上所述,主机应用程序可将数据组织成主机逻辑单位,所述主机逻辑单位可称为簇。可将DAT 308分割成代表这些簇的单位。
这意味着可将主机应用程序使用的每个逻辑簇表示为DAT 308中的条目。举例来说,簇1可由第一(第1)条目来表示,簇10可由第十(第10)条目来表示,等等。此外,DAT 308的每一条目可指示簇的分配/解除分配状态。举例来说,可针对DAT 308的每一条目使用一个位来指示一逻辑簇当前是被分配还是被解除分配。应注意到,可使用若干位来提供关于一属性的更多信息和/或关于若干属性的信息。在任何情况下,DAT308实现对数据的更好管理。举例而言,基于数据部分的分配/解除分配状态,闪存存储器控制器可避免拷贝已被主机应用程序解除分配的数据。
为了进一步说明,图3B描绘根据本发明一个实施例的DAT 208的条目302。表条目302包含4个位,其中第一位(位0)可提供分配/解除分配状态,且其它三(3)个位(位1-3)可一起指示已分配了多少数据(例如,“100”指示半满,“111”指示满,等)。同样,可使用更多的位来提供关于簇的另一属性的信息。举例而言,每个簇可由四(4)个位来表示,其中一(1)个位代表解除分配状态,且三(3)个位指示簇的哪个部分已被解除分配。如所属领域的技术人员将了解,可以其它若干方式来定义簇的多个位。举例来说,可利用极性(或次序)或可使用更多的位(例如,6、8、12)。或者,可分配所有的位来指示被完全解除分配的扇区的“子簇”的数目,且可(例如)由将所有位设定为零(0)来标记被完全分配的簇。
如上所述,数据属性监视器210监视主机应用程序204的活动。基于这种监视,数据属性监视器259可更新数据属性存储(DAS)208。如图2所示,为了解译主机应用程序204的活动,数据属性监视器210需要实现主机了解和使用的数据的逻辑结构。为了进一步说明,图3C描绘主机的逻辑数据结构,其可由根据本发明一个实施例的控制器使用。如图3C所示,主机可将逻辑地址空间划分成系统310和用户空间312。系统数据310可包含:文件分配表1(FAT1)、FAT2(FAT1的拷贝)和根目录信息,其均可存储为系统数据310。用户空间可包含关于子目录的信息。数据属性监视器210可监视FAT1、FAT2、根目录和子目录,以确定主机应用程序202是否对任何数据解除分配(例如,移除文件、使文件变短等)。下文也将参照图6来描述对数据的监视。
然而,现在参看图4,图中描绘了根据本发明一个实施例的用于向闪存存储器控制器提供关于存储在闪存存储器上的数据的信息的方法400。闪存存储器控制器可使用所述关于数据的信息(例如)来在数据维护(例如垃圾收集)期间作出关于数据的可靠决定。方法400可(例如)由图2中的闪存存储器控制器202使用。
首先,为闪存存储器存储装置的控制器产生(402)数据属性存储(DAS)。所述数据属性存储(DAS)提供闪存存储器存储装置中的复数个数据部分中的每一者的一个或一个以上属性。对使用控制器来存取数据的主机的活动进行监视(404)。接下来,基于所述监视(404),确定(406)是否应当更新与闪存存储器存储装置的数据部分有关的属性。相应地,如果确定(406)应当对闪存存储器存储装置的至少一个数据部分执行更新,那么更新(408)与至少一个数据部分有关的至少一个属性。更新(408)之后,监视404主机的活动。此后,可以与上述相似的方式来继续进行方法400,直到不再想要或需要监视数据为止。
如上所述,可提供数据属性存储(DAS)并由闪存存储器控制器使用来执行维护操作(例如垃圾收集)。图5描绘根据本发明一个实施例的闪存存储器维护方法500。首先,确定502闪存存储器控制器是否需要对存储在闪存存储器存储装置上的一部分数据执行维护操作。如果确定502控制器需要执行维护操作,那么确定504数据属性存储(DAS)的哪个部分提供关于待维护的数据部分的信息。相应地,从数据属性存储(DAS)读取506与数据部分有关的至少一个属性。最后,基于至少一个数据属性来执行508操作。应了解,基于由所述至少一个数据属性提供的信息可更智能地执行维护操作。
图6描绘根据本发明一个实施例的监视方法600。所述监视方法600说明可在图4中说明的监视和更新操作(即,图4中的操作404、406和408)期间执行的某些示范性操作。监视方法600可(例如)由闪存存储器控制器来执行。首先,确定(602)接收到对写入操作的请求。接下来,确定所述写入操作是否定址指定的地址空间。举例而言,指定的地址空间可包含由在DOS环境中操作的主机定址的逻辑地址空间的FAT1、FAT2、根目录和子目录。可根据根目录中和其它子目录中的信息来确定子目录的指定地址空间。一般来说,指定的地址空间代表主机活动可能指示数据已被进行解除分配操作(例如,移除或修改文件目录、编辑文件等)的地址空间。在任何情况下,如果在操作604处确定写入操作是针对指定的地址空间,那么读取(606)当前存储在指定地址空间中的数据。接下来,执行(608)写入操作。在执行(608)了写入操作之后,将先前读取(606)的旧数据与写入(608)的数据进行比较(610)。相应地,确定(612)数据中是否存在变化。如果确定(612)数据中没有变化,那么确定(602)是否接收到对写入操作的请求。
或者,在更新的数据与旧数据写入在不同的位置中的闪存存储器系统中,可直接在旧位置与新位置处的数据之间进行比较(610)而不执行先前的读取(606)。
然而,如果确定(612)已检测到数据的改变,那么对所述变化进行解译(614)以确定(616)是否已将一个或一个以上簇解除分配。如果确定没有将任何簇解除分配,那么确定(602)是否接收到对写入操作的请求。然而,应注意到,如果确定(616)已将一个或一个以上簇解除分配,那么将数据分配表(DAT)中的所述一个或一个以上簇的状态改变成指示“被解除分配”状态。相应地,当察觉(616)指定地址空间中的数据变化已导致了对数据的解除分配时,监视方法600有效地更新(618)数据分配表(DAT)。
另一方面,如果确定(604)写入操作不是针对指定的地址空间,那么执行(620)写入操作。此外,识别(622)已被写入的簇,以使得可将一个或一个以上所识别的簇的状态设定为“分配”。将了解,这一操作确保当写入操作在非指定的地址空间中执行时,将代表所识别的簇的DAT的条目设定为“分配”。在将DAT中代表的簇的状态设定(624)为“分配”时,可确定(602)是否接收到了对写入操作的请求。
如上所述,数据属性存储(DAS)可(例如)用来执行维护操作。为了进一步说明,图7描绘根据本发明一个实施例的示范性垃圾收集方法700。将了解,所述垃圾收集方法700利用数据分配表(DAT),以便在更新操作期间实现更好的区块更新。首先,当起初确定(702)将关闭一更新区块时,确定是否所述更新区块的所有扇区均已被写入。如果所述更新区块的所有逻辑区块均已被写入,那么更新区块便可有效地替换初始区块。相应地,将更新区块标记(706)为初始区块,且将先前的初始区块擦除(708)以使得其以后可被使用。
另一方面,如果确定(702)所述更新区块的所有扇区均未被写入,那么识别(710)对应于未写入扇区的逻辑扇区。随后,将所识别(710)的逻辑扇区映射(712)到簇。在数据分配表(DAT)中查找(714)簇。相应地,确定716是否DAT指示所有识别(710)的簇均已解除分配。如果DAT指示所有簇均已被解除分配,那么将更新区块标记(706)为初始的,且将旧区块擦除(708)。
应注意,当DAT指示(716)所有簇均已被解除分配时,不拷贝一个或一个以上簇。只有当DAT表指示一个或一个以上簇仍被分配时,才将保持被分配的数据拷贝(718)到更新区块。在任何情况下,应注意到,可立即关闭更新区块,或者以后在所述区块装满时关闭。可将更新区块作标记706且擦除708先前的初始区块(旧区块),但避免了对未分配的数据的不必要拷贝。擦除(708)之后,垃圾收集方法700结束。
将了解,可使用闪存存储器来实施根据本发明一个实施例的数据属性存储(DAS)。为了进一步说明,图8描绘根据本发明一个实施例的数据分配表(DAT)800。使用存储器部分801来实施数据分配表(DAT)800。存储器部分801可以是可作为擦除单位的区块。存储器部分801大于表示数据分配表(DAT)800所需的存储器。每个区段可位于一个或一个以上页面中,其中页面是编程存储器的最小单位。
如图8所示,可将数据属性存储(DAS)800分成复数个区段,即初始区段DAS1(802)、DAS2(804)、DAS3(806)和DAS4(808),其最初写入在存储器部分801的开始处。这些初始区段中的每一者可代表复数个由主机用来以逻辑形式组织数据的簇。当需要更新与一簇相关联的数据属性时,可通过为数据属性存储(DAS)800的合适初始区段写入更新区段来更新数据属性存储(DAS)800的相应区段。在最后的初始区段(即DAS4(808))之后写入此更新区段。举例而言,通过写入新区段816来更新初始DAS3(806)。同样,当需要更新初始DAS1(802)时,可写入新区段812。写入新区段818以代表初始DAS4(818),等等。
此外,可使用索引方案来维护数据分配表(DAT)800。如图8所示,存储器的每个区段包含索引部分(Ii-U)。最后条目(806)的此索引部分参考数据属性存储(DAS)800的当前区段。这意味着,索引820、830、840和850分别指向数据属性存储(DAS)800的第一、第二、第三和第四当前区段(DAS1、DAS2、DAS3、DAS4)。(例如)当存储器801基本上装满以使得当前区段(DAS1、DAS2、DAS3、DAS4)被重新产生为初始区段时,可对存储器部分801进行垃圾收集。
还应注意到,可实施本发明以使得数据属性存储(DAS)的使用是任意的。数据属性存储(DAS)的使用可(例如)依赖于系统顺应性,系统顺应性由验证过程确定以确保主机的实际数据逻辑结构遵守特定操作环境(例如DOS)的既定数据结构。或者,可通过由主机传输一命令来启用数据属性存储(DAS)的使用,所述命令传输指示其顺应特定操作环境的数据结构。应注意到,数据分配表(DAT)不必在被分配的簇刚被解除分配时就立刻改变簇(或簇内的扇区)的状态。换句话说,当簇已解除分配时认为其仍是被分配的,这并不会造成严重问题。由此,可等待一段时间再将分配状态设定为被解除分配的。将了解,同时针对一簇群组将分配状态设定为被解除分配的,而不是在不同时间一个接一个地设定,可进一步增强系统性能。另一方面,所属领域的技术人员将了解,有效的、被分配的簇的状态信息应当一直是极为准确的且现时的(即,被分配的簇应当一直被标记为被分配的)。为了确保被分配的簇被正确标记,每当主机向簇写入数据时,可自动地将簇的分配状态设定为被分配的。此外,将了解到,数据分配表(DAT)中的信息可与映射表中的信息同时更新以记录最近写入的扇区或簇,所述映射表定义物理存储器区块对于数据逻辑区块的分配。
此外,将了解到,数据属性存储(DAS)可用于其它许多维护操作。举例而言,当数据属性存储(DAS)指示对应于一区块的所有簇均已被解除分配时,可擦除所述区块。这一擦除可(例如)作为背景来执行以进一步增强性能。
在另一实施例中,可使用由主机存储在非易失性存储器中的信息来确定应当怎样存储从主机接收到的数据。在一个实例中,可使用由主机存储在FAT和目录中的信息来确定应当以顺序性方式还是以非顺序性(混乱)方式来存储数据。
某些存储器系统根据从主机接收到的数据是顺序性的还是非顺序性的而使用不同的存储方案来存储所述数据。举例来说,2003年12月30日申请的标题为“Non-volatilememory and method with block management system”的且全文以引用的方式并入本文中的第10/750,155号美国专利申请案描述了某些用于处理由主机以非顺序性方式发送的数据的技术。确切地说,可向顺序性更新区块指派顺序性更新,而可向可能以任意次序存储数据的混乱更新区块指派非顺序性更新。虽然将数据存储在混乱的更新区块中对某些类型的数据更新提供了优势,但其可能会对其它类型的数据更新造成无效。出于这一原因,第10/750,155号申请案描述了用于以满足预定标准的顺序性方式存储某些以非顺序性方式接收的数据的技术。在本发明一实施例中,可通过分析由主机存储在非易失性存储器中的信息来确定用于确定在以非顺序性方式接收数据时将数据以顺序性方式还是非顺序性方式写入非易失性存储器中的标准。2003年12月30日申请的标题为“Managementof non-volatile memory systems having large erase blocks”的且全文以引用的方式并入本文中的第10/749,831号美国专利申请案描述了管理由主机发送以供存储在非易失性存储器阵列中的数据的额外方法。确切地说,描述了用于管理由主机以非顺序性方式更新的数据的方法。可根据预定标准而对数据使用不同的指定区块。
在本发明一实施例中,可将主机正写入的数据部分(例如扇区)的逻辑地址与FAT、根目录或子目录(或存储在非易失性存储器中的类似主机数据)进行比较,或可将其与例如存储在DAS中的信息的导出信息进行比较,以确定正被写入的数据部分是否在下一空闲簇中具有逻辑地址。如果数据部分在下一空闲簇中具有地址,那么这表明主机正在下一可用位置处存储新数据。在诸如此类的存储形式中,以顺序性方式存储数据并通过拷贝已存储在非易失性存储器中的数据来填充更新区块中的任何间隙,而不是以非顺序性次序存储数据且稍后再将其拷贝到其顺序性存储的位置,这可能是有利的。
图9A展示FAT表900的实例。每个簇0-8均在FAT表中具有指示文件中下一簇的条目。因此,簇0的条目为“1”,这指示这一文件的下一簇在簇1中。簇1中的条目为“5”,这指示下一簇为簇5。簇5中的条目为“6”,这指示下一簇为簇6。簇6中的条目为“EOF”,这指示“文件结尾(End of File)”,或指示不再有任何簇含有这一文件的数据。另一文件以类似方式存储在簇3和4中。簇4、7和8被指示为“空闲”或未被分配的。这可能是主机进行解除分配的结果,例如在使文件废弃的情况下。应注意,主机解除分配并不一定意味着数据在非易失性存储器中被擦除,而只是使得用来存储文件的逻辑地址范围可用于存储新数据。废弃数据可保持物理性存储在非易失性存储器中,直到稍后某一时间为止。也可将含有废弃控制信息的簇解除分配。也由主机存储在非易失性存储器中的根目录或子目录可指示文件的第一簇。
图9B展示从FAT 900导出的DAT 910,连同包含在根目录和子目录中的信息。DAT910含有针对每个簇的条目,其指示所述簇是被分配的还是空闲的。也可如先前所述那样将额外数据存储在DAT 910中。可维护一DAT,以使得存储在DAT中的信息比FAT和子目录中的信息更现时。一旦主机发送新的数据以供存储便可更新DAT,然后主机才写入更新的FAT或目录信息。同样,可对DAS中的其它信息进行维护以使得其是现时的。
图9C展示针对FAT 900的一部分逻辑地址范围的扇区与簇之间的对应。在此实例中,簇具有四个数据扇区。也可使用具有不同数目的扇区的簇。簇通常含有4个到64个扇区。簇4具有扇区X、扇区X+1、扇区X+2和扇区X+3。虽然主机对一系列逻辑地址的分配大体上是在逐个簇的基础上进行的,但存储器控制器大体上在扇区中处理数据。一般来说,将簇分配为单个单位,以使得即便簇的整个逻辑地址范围均未用于存储数据,仍使得簇的整个逻辑地址范围不可用于稍后存储其它数据。图9C将来自被分配的簇5和6的扇区展示为阴影的,以指示这些逻辑地址不可被主机用来存储数据。
图9D和9E展示用于存储以非顺序性方式从主机接收的数据的两种替代方案。这两张图均展示正从主机接收扇区X到X+3和X+12到X+15以存储在非易失性存储器中。这些扇区对应于图9C中的簇4和7。在图9D中,所接收到的数据被写入混乱的更新区块920。这一区块之所以是混乱的,是因为扇区X+12直接写在扇区X+3后面,以使得从扇区X+3到扇区X+12的逻辑地址范围中存在跳跃。起初,当混乱区块920含有扇区X到X+3时,其可能是顺序性更新区块,随后,当存储了扇区X+12时,其转换为混乱的更新区块。一般来说,在主机以非顺序性方式发送数据的情况下,将使用混乱(非顺序性)区块。图9D的混乱区块920中的有效数据最终被重新定位到顺序性区块922,在所述区块922中其与扇区X+4到X+11一起存储,所述扇区X+4到X+11可能是从另一位置拷贝来的。这大体上作为合并操作的一部分来进行。对于长期存储而言顺序性区块一般是优选的,因为扇区是以预定方式配置的,且因此可能不需要在区块内索引扇区。在混乱区块920中的所有有效数据均被拷贝到另一位置之后,可将混乱区块920标记为废弃的,且可将其擦除。
图9E展示在顺序性区块930中正以顺序性方式更新非顺序性数据——扇区X到X+3和X+12到X+15。可首先写入扇区X到X+3,以使得区块930在此点处为顺序性区块。当接收到扇区X+12时,可作出以顺序性方式存储数据的确定,即使所述数据是以非顺序性方式接收到的。可通过从初始区块拷贝扇区X+4到X+11(对应于簇5和6)来填充从主机接收的扇区之间的逻辑地址范围来实现顺序性存储。可将扇区X+4到X+11视为填补扇区,因为其是用来填充或“填补”主机发送的扇区中的间隙的。扇区X+4到X+11是从另一位置拷贝的有效数据扇区。以此方式,所接收到的扇区被存储在顺序性区块930中,而不经过混乱区块中的中间存储阶段。因此,这两种技术之间的主要区别在于,在图9E的实例中,不必先将扇区X到X+3和X+12到X+15写入混乱区块920且稍后再擦除混乱区块920。在此实例中,写入扇区X到X+3和X+12到X+15一次,且仍然拷贝扇区X+4到X+12。这需要的扇区写入少了八次,且擦除操作少了一次,因而改进了数据存储的效率。
可基于多种标准来确定是以顺序性方式还是以非顺序性方式来存储以非顺序性方式接收的数据。某些数据更适合非顺序性存储,特别是很可能很快要再次更新的数据。举例来说,可在混乱区块中更加高效地存储控制数据或主机数据中的频繁更新的部分。某些数据更适合顺序性存储,特别是在数据不太可能很快被再次更新的情况下。虽然以非顺序性方式接收的数据可能一般会以非顺序性方式来存储,但在某些情况下将其以顺序性方式写入是有利的。因为避免了在混乱区块中的中间存储,所以无需对混乱区块进行垃圾收集以使数据具有顺序性格式。这避免了图9D中所示的合并操作,且因此减少了额外开销并改进了性能。当主机写入下一空闲簇时,指示主机只是在下一可用位置处写入新数据,且一般并不指示将很快再次更新逻辑地址范围。因此,选择例如图9E中所展示的顺序性更新方案比选择例如图9D中所展示的混乱更新方案更有效率。因此,可根据数据是否来自下一空闲簇来确定使用的存储方案。当数据来自下一空闲簇(如在图9E中)时,可选择顺序性存储。因此,在此实例中,将不会为此数据选择图9D的存储方案。
图10是展示根据本发明一实施例的存储方案的选择的流程图。当从主机接收到非顺序性数据时,控制器确定所述数据是否来自下一空闲簇10。可通过直接查看由主机存储在非易失性存储器中的FAT和目录信息或者通过查看从FAT和目录信息导出的信息(例如,存储在DAS或DAT中的信息)来进行这一确定。如果当前定址的簇并不是下一空闲簇,那么根据默认方案12以普通方式来存储数据。这可能意味着以非顺序性方式来存储数据,或在某些实例中,可能存在其它使得数据被以顺序性方式写入的标准。如果当前定址的簇是下一空闲簇,那么选择顺序性写入。在此实例中,将有效的数据簇从初始元区块拷贝到当前顺序性元区块14以填补最后写入的簇与当前定址的簇之间的逻辑地址间隙。接着,将来自当前定址的簇的接收到的数据写入当前顺序性元区块。因此,当前元区块16保持顺序性。
图11是展示在一个实施例中为从主机接收到的扇区选择存储方案的流程图。第10/750,155号申请案中展示了类似的存储方案选择流程图。如果存在开放的更新区块20,更新区块是顺序性的22,且扇区与更新区块中的最后扇区成顺序性的24,那么将所述扇区写入26所述更新区块。如果扇区不是与更新区块中的最后扇区成顺序性的,那么确定是否应当执行强制性顺序性写入27。如果从更新区块中的最后扇区到所接收到的扇区的地址跳跃不大于预定量(CB)28,那么可用拷贝的扇区来填补最后扇区与接收到的扇区之间的间隙30,以将更新区块维持为顺序性区块(如先前所述)。如果更新区块中的未填充的物理区块的数目不大于预定量(CC)32,那么可将所述更新区块关闭34,以将其维持为顺序性区块且可分配新的更新区块36(如先前描述)。导致强制性顺序性写入的第三种情形是在主机正写入到下一可用簇时40。当发生此类写入时,用从非易失性存储器中的其它地方拷贝来的扇区填补接收到的扇区与更新区块中最后扇区之间的间隙30,以使得更新区块可被维持为顺序性区块。如果没有满足这些用于以顺序性形式写入数据的标准中的任何一者,那么可将更新区块转换成混乱更新区块42。因此,用于选择存储方案的选择标准可包含从由主机存储在非易失性存储器中的数据导出的属性。
图12A展示存储器系统以非顺序性方式从主机接收数据的实例,所述存储器系统将所述数据以顺序性方式存储在更新区块50中。接收到簇2的扇区A,且随后接收到簇7的扇区B。当接收到扇区A时,其可能是更新区块50的最初几个扇区,且如果更新区块50只含有扇区A的话,其被认为是顺序性的。或者,如图12A所示,更新区块50可能是顺序性的,因为扇区A是与先前存储在更新区块50中的扇区成顺序性地存储的。假设更新区块50在接收扇区B之前是顺序性的,那么在接收到扇区B时确定是将更新区块50维持为顺序性更新区块还是将扇区B直接存储在写入到更新区块50的最后扇区(扇区A)后面且从而将更新区块50转换成混乱区块。在此实例中,簇7是扇区A之后的下一空闲簇。因此,当接收到来自簇7的扇区B时,发生强制性顺序性写入,且若干扇区被拷贝到更新区块50以填充扇区A与扇区B之间的间隙。因此,在图12A的更新区块50中,数据是以顺序性方式存储的。
图12B展示存储器系统以非顺序性方式从主机接收数据的实例,所述存储器系统将所述数据以非顺序性方式存储在更新区块52中。首先如图12A一样接收到扇区A。扇区A是以顺序性方式存储的,以使得当编程扇区A时,更新区块52是顺序性的。接着,接收到扇区X。扇区X并未被写入下一空闲簇。扇区X被写入被分配的簇,且因此不导致执行强制性的顺序性写入。可以非顺序性方式写入扇区X,或如果存在其它某一顺序性写入的原因(例如扇区X与扇区S之间的逻辑间隙小于阈值),那么可以顺序性方式写入扇区X。此处,扇区X被展示为写入到更新区块52中的下一可用空间。因此,更新区块52变成混乱的。在图12C中的第二实例中,扇区Y是在扇区A之后接收到的。在接收到扇区Y之前,更新区块54是顺序性的。扇区Y不是来自下一空闲簇,因为在更新区块中最后写入的扇区(扇区A)与扇区Y之间存在空闲簇(簇7)。因此,扇区Y并不导致强制性的顺序性写入,且其可被写入到更新区块54而不进行填补,从而导致更新区块54变成混乱的。在图12D所示的第三实例中,扇区Z是在扇区A之后接收到的。更新区块56在接收到扇区Z之前是顺序性的。扇区Z来自簇0且因此其并非来自下一空闲簇,因为簇0在簇2前面,且因而,按照图中所示的次序,簇0不是下一空闲簇。因此,扇区Z可直接写入在簇A后面,从而导致更新区块56变成混乱的。
本发明有多种优点。不同的实施例或实施方案可能会产生以下优点中的一种或一种以上。应注意到,这并不是详尽的列举,而可能会存在本文中未描述的其它优点。本发明的一个优点在于可改进非易失性存储器系统的性能。本发明的另一优点在于可使用广泛使用的常规做法来实施本发明。本发明的又一优点在于其可在闪存存储器中实施为相对较小的属性表。在其它实施方案中,没有一个表是必需的。再一优点在于本发明可实施成适于任意用途和/或适于在后台维护操作期间使用。
可单独使用或以各种组合形式使用本发明的上述各方面或特征。本发明还可通过硬件或硬件与软件的组合来实施。本发明还可作为计算机可读代码而在计算机可读媒体上实施。所述计算机可读媒体是任何可存储数据的数据存储装置,所述数据之后可被计算机系统读取。计算机可读媒体的实例包含只读存储器、随机存取存储器、CD-ROM、DVD、磁带、光学数据存储装置和载波。计算机可读媒体也可分布在网络耦合的计算机系统上,以使得以分布方式来存储和执行计算机可读代码。
从所述书面描述中容易了解本发明的许多特征和优点,且因此希望所附权利要求书覆盖本发明的所有这些特征和优点。此外,由于所属领域的技术人员容易了解多种修改和变化,因而不希望将本发明限制于所说明和描述的确切构造和操作。因此,所有适合的修改和均等物均可归入本发明的范围内。

Claims (21)

1.一种以一适应性方式将若干部分的数据存储在一存储器系统中的方法,所述存储器系统包含一控制器和一非易失性存储器阵列,所述方法包括:
所述控制器从一主机存储在所述非易失性存储器阵列中的一文件分配表或目录中的信息中获得一逻辑地址范围的一属性;
所述控制器根据所述逻辑地址范围的所述属性从复数个存储方案中为具有所述逻辑地址范围内的一逻辑地址的一部分数据选择一存储方案;和
所述控制器根据所述选择的存储方案来存储所述部分的数据。
2.根据权利要求1所述的方法,其中所述逻辑地址范围的所述属性在于所述逻辑地址范围是用于存储主机数据的下一空闲逻辑地址范围。
3.根据权利要求2所述的方法,其中所述选择的存储方案包含将所述部分的数据存储在一顺序性更新区块中。
4.根据权利要求1所述的方法,其中所述逻辑地址范围的所述属性在于所述逻辑地址范围不是用于存储主机数据的下一空闲逻辑地址范围。
5.根据权利要求4所述的方法,其中所述选择的存储方案包含将所述部分的数据存储在一混乱更新区块中。
6.根据权利要求1所述的方法,其中所述部分的数据先前存储在所述非易失性存储器阵列中的一第一位置处,所述逻辑地址范围的所述属性在于所述逻辑地址范围由所述主机分配,且所述选择的存储方案包含将所述部分的数据从所述非易失性存储器阵列中的所述第一位置拷贝到一第二位置。
7.根据权利要求6所述的方法,其中所述部分的数据先前存储在所述非易失性存储器阵列中的一第一位置处,所述逻辑地址范围的所述属性在于所述逻辑地址范围由所述主机解除分配,且所述选择的存储方案将所述部分的数据维持在所述第一位置处,而不将所述部分的数据从所述第一位置拷贝到一第二位置。
8.根据权利要求1所述的方法,其中从一数据属性存储中获得所述属性,而所述数据属性存储是从所述文件分配表或目录中导出的。
9.一种将从一主机接收的数据存储在一非易失性存储器阵列中的方法,其包括:
从所述主机接收一个或一个以上可定址的数据单位,
分析由所述主机存储在所述非易失性存储器阵列中的信息,以识别复数个可由所述主机用来存储数据的逻辑地址范围;
将所述复数个所述主机可使用的逻辑地址范围与所述一个或一个以上可定址的数据单位的逻辑地址进行比较,以确定所述一个或一个以上可定址的数据单位是否被分配给所述主机可使用的下一逻辑地址范围;和
以一依赖于所述确定的方式来存储所述一个或一个以上可定址的数据单位。
10.根据权利要求9所述的方法,其中如果所述一个或一个以上可定址的单位被指派给接下来的可用顺序性位置,那么所述存储所述一个或一个以上可定址单位的方式为一顺序性方式,且如果所述一个或一个以上可定址的单位不被指派给接下来的可用顺序性位置,那么所述存储方式是一非顺序性方式。
11.根据权利要求9所述的方法,其中存储所述一个或一个以上可定址的数据单位是以一依赖于额外因素的方式进行,所述额外因素包含所述一个或一个以上可定址的数据单位的所述逻辑地址与所述最后写入的可定址数据单位的所述逻辑地址之间的一逻辑地址间隙是否超出一预定量。
12.根据权利要求11所述的方法,其中一额外因素是用于存储所述一个或一个以上可定址数据单位的一更新区块是否含有超过一预定量的一顺序性形式的数据。
13.一种用于在非易失性存储器中存储数据的存储器装置,所述数据是以可定址的数据单位从一主机接收的,所述存储器装置包括:
一非易失性存储器阵列,其含有一主机文件分配表的一拷贝;和
一存储器控制器,其与所述非易失性存储器阵列通信,所述存储器控制器监视所述主机文件分配表的所述拷贝的内容,所述存储器控制器根据所述主机文件分配表的所述拷贝确定一部分逻辑地址空间的一分配状态,且所述存储器控制器响应于所述分配状态为具有所述部分的逻辑地址空间内的一逻辑地址的一可定址数据单位选择一数据管理方案。
14.根据权利要求13所述的存储器装置,其中所述存储器装置形成一可移除地连接到
一控制器的可移除存储卡的一部分。
15.根据权利要求13所述的存储器装置,其中所述存储器控制器在一数据属性存储中记录所述部分的逻辑地址空间的所述分配状态。
16.根据权利要求13所述的存储器装置,其中从一主机处接收所述可定址的数据单位以供存储在所述非易失性存储器阵列中,所述数据管理方案包括在所述部分的逻辑地址空间是下一空闲部分时在一顺序性区块中存储,且所述数据管理方案包括在所述部分的逻辑地址空间不是下一空闲部分时在一混乱区块中存储。
17.根据权利要求13所述的存储器装置,其中当所述存储器装置进行一垃圾收集操作时,所述可定址的数据单位被存储在所述非易失性存储器阵列中的一第一位置中,所述数据管理方案是在所述部分的逻辑地址空间被分配时将所述可定址的数据单位拷贝到所述非易失性存储器阵列中的一第二位置,且所述数据管理方案是在所述部分的逻辑地址空间未被分配时将所述可定址的数据单位维持在所述第一位置中而不进行拷贝。
18.一种包含程序代码的计算机可读媒体,所述程序代码用于在一存储器控制器可用来在一非易失性存储器中存储主机数据的多个替代性存储方案之间进行选择,所述计算机可读媒体包括:
用于识别的计算机程序代码,其根据一主机存储在所述非易失性存储器中的信息来识别复数个部分的逻辑地址空间的一分配状态,并将所述分配状态提供给所述存储器控制器;和
用于选择的计算机程序代码,其根据包含所述部分的数据的逻辑地址的一部分逻辑地址空间的一分配状态为一部分主机数据选择一数据管理方案。
19.根据权利要求18所述的计算机可读媒体,其进一步包括计算机程序代码,所述计算机程序代码根据所述选择的管理方案对所述部分的主机数据进行操作,以在所述部分的逻辑地址空间是未被分配的下一部分的逻辑地址空间时将所述部分的数据存储在一顺序性区块中,且否则将所述部分的数据存储在一混乱区块中。
20.根据权利要求18所述的计算机可读媒体,其进一步包括计算机程序代码,所述计算机程序代码根据所述选择的管理方案对所述部分的主机数据进行操作,以在所述部分的逻辑地址空间被分配时将所述部分的数据从一旧位置拷贝到一新位置,且在所述部分的逻辑地址空间未被分配时将所述部分的数据保留在所述旧位置中而不拷贝到一新位置。
21.根据权利要求18所述的计算机可读媒体,其进一步包括计算机程序代码,所述计算机程序代码提供一含有所述复数个部分的逻辑地址空间的所述分配状态的数据属性存储。
CN2005800301633A 2004-07-21 2005-06-17 最佳顺序性簇管理的fat分析 Active CN101027651B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US10/897,049 US7395384B2 (en) 2004-07-21 2004-07-21 Method and apparatus for maintaining data on non-volatile memory systems
US10/897,049 2004-07-21
US11/022,369 US8607016B2 (en) 2004-07-21 2004-12-23 FAT analysis for optimized sequential cluster management
US11/022,369 2004-12-23
PCT/US2005/021846 WO2006019496A1 (en) 2004-07-21 2005-06-17 Fat analysis for optimized sequential cluster management

Publications (2)

Publication Number Publication Date
CN101027651A true CN101027651A (zh) 2007-08-29
CN101027651B CN101027651B (zh) 2010-06-09

Family

ID=35658595

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800301633A Active CN101027651B (zh) 2004-07-21 2005-06-17 最佳顺序性簇管理的fat分析

Country Status (3)

Country Link
US (1) US7395384B2 (zh)
EP (1) EP2254053B1 (zh)
CN (1) CN101027651B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101303667B (zh) * 2008-06-25 2010-06-09 炬力集成电路设计有限公司 建立磁盘空簇表及查找磁盘空簇的方法和装置
CN102549551A (zh) * 2009-09-29 2012-07-04 飞思卡尔半导体公司 操作仿真电可擦除(eee)存储器
US8230160B2 (en) 2009-10-28 2012-07-24 Phison Electronics Corp. Flash memory storage system and flash memory controller and data processing method thereof
CN102707898A (zh) * 2011-01-27 2012-10-03 美光科技公司 事务存储器
CN102981968A (zh) * 2012-11-13 2013-03-20 浪潮电子信息产业股份有限公司 一种nor flash fat文件系统空闲簇的分配方法
CN104636079A (zh) * 2013-11-08 2015-05-20 德州仪器公司 文件存取方法及其系统
CN109308267A (zh) * 2017-07-28 2019-02-05 聚星电子股份有限公司 行车记录器的储存装置的控制方法与储存装置控制系统
CN112286871A (zh) * 2020-12-31 2021-01-29 湖南源科创新科技有限公司 面向多主机fat文件系统的簇分配方法及系统

Families Citing this family (148)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7886108B2 (en) * 2000-01-06 2011-02-08 Super Talent Electronics, Inc. Methods and systems of managing memory addresses in a large capacity multi-level cell (MLC) based flash memory device
US20080209114A1 (en) * 1999-08-04 2008-08-28 Super Talent Electronics, Inc. Reliability High Endurance Non-Volatile Memory Device with Zone-Based Non-Volatile Memory File System
US7827348B2 (en) * 2000-01-06 2010-11-02 Super Talent Electronics, Inc. High performance flash memory devices (FMD)
US20080320209A1 (en) * 2000-01-06 2008-12-25 Super Talent Electronics, Inc. High Performance and Endurance Non-volatile Memory Based Storage Systems
US8607016B2 (en) * 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
TWI244087B (en) * 2004-08-12 2005-11-21 Via Tech Inc Method and device for memory space allocation
US7590918B2 (en) * 2004-09-10 2009-09-15 Ovonyx, Inc. Using a phase change memory as a high volume memory
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US20060107014A1 (en) * 2004-11-17 2006-05-18 Fandrich Mickey L Managing reclamation for removable data devices
JP2006146460A (ja) * 2004-11-18 2006-06-08 Sony Corp 通信システム、記憶装置、並びに制御装置
KR101404083B1 (ko) 2007-11-06 2014-06-09 삼성전자주식회사 반도체 디스크 및 그것의 동작 방법
US9104315B2 (en) * 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US7877539B2 (en) * 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US7558906B2 (en) 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7627733B2 (en) * 2005-08-03 2009-12-01 Sandisk Corporation Method and system for dual mode access for storage devices
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7480766B2 (en) * 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7669003B2 (en) * 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7949845B2 (en) * 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US20070084375A1 (en) * 2005-08-10 2007-04-19 Smith Kyle S High density cartridge and method for reloading
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7814262B2 (en) 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US20070143566A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US7769978B2 (en) * 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7747837B2 (en) * 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7793068B2 (en) * 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US20070156998A1 (en) * 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US20070143561A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Methods for adaptive file data handling in non-volatile memories with a directly mapped file storage system
US20070143378A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with adaptive file handling in a directly mapped file storage system
JP2008092249A (ja) * 2006-10-02 2008-04-17 Sony Corp 無線通信システム並びに無線通信装置
US7818489B2 (en) * 2006-11-04 2010-10-19 Virident Systems Inc. Integrating data from symmetric and asymmetric memory
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
KR101490327B1 (ko) * 2006-12-06 2015-02-05 퓨전-아이오, 인크. 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법
US7917686B2 (en) 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US20080155175A1 (en) * 2006-12-26 2008-06-26 Sinclair Alan W Host System That Manages a LBA Interface With Flash Memory
US8209461B2 (en) 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
US7739444B2 (en) 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
US8166267B2 (en) * 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
US8046522B2 (en) * 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
US8341375B2 (en) * 2007-03-19 2012-12-25 Sandisk Technologies Inc. Methods for conversion of update blocks based on association with host file management data structures
US8275953B2 (en) * 2007-03-19 2012-09-25 Sandisk Technologies Inc. Methods for forcing an update block to remain sequential
US7904670B2 (en) * 2007-03-19 2011-03-08 Sandisk Corporation Methods for conversion of update blocks based on comparison with a threshold size
KR20080085574A (ko) * 2007-03-20 2008-09-24 삼성전자주식회사 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법
JP4483891B2 (ja) * 2007-04-02 2010-06-16 フェリカネットワークス株式会社 情報処理端末、データ移動方法、およびプログラム
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
US20080307156A1 (en) * 2007-06-08 2008-12-11 Sinclair Alan W System For Interfacing A Host Operating Through A Logical Address Space With A Direct File Storage Medium
US8713283B2 (en) * 2007-06-08 2014-04-29 Sandisk Technologies Inc. Method of interfacing a host operating through a logical address space with a direct file storage medium
US8239639B2 (en) * 2007-06-08 2012-08-07 Sandisk Technologies Inc. Method and apparatus for providing data type and host file information to a mass storage system
JP2009003784A (ja) * 2007-06-22 2009-01-08 Toshiba Corp 不揮発性メモリの制御装置及び制御方法及び記憶装置
JP2009003783A (ja) * 2007-06-22 2009-01-08 Toshiba Corp 不揮発性メモリの制御装置及び制御方法及び記憶装置
US20090006720A1 (en) * 2007-06-27 2009-01-01 Shai Traister Scheduling phased garbage collection and house keeping operations in a flash memory system
US8504784B2 (en) * 2007-06-27 2013-08-06 Sandisk Technologies Inc. Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system
US7944702B2 (en) 2007-08-27 2011-05-17 Super Talent Electronics, Inc. Press-push flash drive apparatus with metal tubular casing and snap-coupled plastic sleeve
US9183133B2 (en) 2007-11-28 2015-11-10 Seagate Technology Llc System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
US8116083B2 (en) * 2007-12-04 2012-02-14 Super Talent Electronics, Inc. Lipstick-type USB device with tubular housing
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US8880483B2 (en) * 2007-12-21 2014-11-04 Sandisk Technologies Inc. System and method for implementing extensions to intelligently manage resources of a mass storage system
US20090164745A1 (en) * 2007-12-21 2009-06-25 Alan Sinclair System and Method for Controlling an Amount of Unprogrammed Capacity in Memory Blocks of a Mass Storage System
JP4164118B1 (ja) * 2008-03-26 2008-10-08 眞澄 鈴木 フラッシュメモリを用いた記憶装置
US20090271562A1 (en) * 2008-04-25 2009-10-29 Sinclair Alan W Method and system for storage address re-mapping for a multi-bank memory device
US20090327622A1 (en) * 2008-06-30 2009-12-31 Nokia Corporation Method and Apparatus for Computer Memory Traversal
US8452940B2 (en) * 2008-12-30 2013-05-28 Sandisk Technologies Inc. Optimized memory management for random and sequential data writing
US7653797B1 (en) 2008-12-31 2010-01-26 International Business Machines Corporation Optimizing a marking phase in mark-sweep garbage collectors by reducing paging activity
US8230159B2 (en) * 2009-03-27 2012-07-24 Lsi Corporation System, method, and computer program product for sending logical block address de-allocation status information
US20100250830A1 (en) * 2009-03-27 2010-09-30 Ross John Stenfort System, method, and computer program product for hardening data stored on a solid state disk
US8090905B2 (en) * 2009-03-27 2012-01-03 Sandforce, Inc. System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format
US8671258B2 (en) 2009-03-27 2014-03-11 Lsi Corporation Storage system logical block address de-allocation management
TWI405214B (zh) * 2009-05-06 2013-08-11 A Data Technology Co Ltd 快閃記憶體儲存系統之資料燒錄方法
US9792074B2 (en) * 2009-07-06 2017-10-17 Seagate Technology Llc System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips
JP5999645B2 (ja) 2009-09-08 2016-10-05 ロンギチュード エンタープライズ フラッシュ エスエイアールエル ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
EP2476039B1 (en) 2009-09-09 2016-10-26 SanDisk Technologies LLC Apparatus, system, and method for power reduction management in a storage device
EP2476079A4 (en) 2009-09-09 2013-07-03 Fusion Io Inc APPARATUS, SYSTEM, AND METHOD FOR STORAGE ALLOCATION
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
US8473669B2 (en) * 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
US20110145477A1 (en) * 2009-12-15 2011-06-16 Rudelic John C Flash translation layer using phase change memory
WO2011095516A1 (en) * 2010-02-05 2011-08-11 St-Ericsson Sa Method and system for mass storage on flash memory
US10013354B2 (en) 2010-07-28 2018-07-03 Sandisk Technologies Llc Apparatus, system, and method for atomic storage operations
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
CN103262054B (zh) 2010-12-13 2015-11-25 桑迪士克科技股份有限公司 用于自动提交存储器的装置、系统和方法
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US9213594B2 (en) 2011-01-19 2015-12-15 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing out-of-service conditions
US9092337B2 (en) 2011-01-31 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing eviction of data
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
JP5595965B2 (ja) * 2011-04-08 2014-09-24 株式会社東芝 記憶装置、保護方法及び電子機器
US9146766B2 (en) * 2011-06-22 2015-09-29 Vmware, Inc. Consistent unmapping of application data in presence of concurrent, unquiesced writers and readers
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US10133662B2 (en) 2012-06-29 2018-11-20 Sandisk Technologies Llc Systems, methods, and interfaces for managing persistent data of atomic storage operations
WO2013098463A1 (en) * 2011-12-29 2013-07-04 Nokia Corporation Method for erasing data entity in memory module
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US9069806B2 (en) 2012-03-27 2015-06-30 Google Inc. Virtual block devices
US9122581B2 (en) * 2012-06-12 2015-09-01 International Business Machines Corporation Data versioning in solid state memory
US9135161B2 (en) 2012-06-12 2015-09-15 International Business Machines Corporation Flash translation layer system for maintaining data versions in solid state memory
US9122582B2 (en) * 2012-06-12 2015-09-01 International Business Machines Corporation File system for maintaining data versions in solid state memory
US9116793B2 (en) 2012-06-12 2015-08-25 International Business Machines Corporation Maintaining versions of data in solid state memory
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US9734057B2 (en) * 2012-12-05 2017-08-15 Samsung Electronics Co., Ltd. Semiconductor storage device and buffer operation method thereof
KR102002921B1 (ko) * 2012-12-05 2019-07-23 삼성전자주식회사 버퍼 운영 방법 및 그에 따른 반도체 저장 장치
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling in a multi-layer memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9348746B2 (en) * 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10482009B1 (en) 2013-03-15 2019-11-19 Google Llc Use of a logical-to-logical translation map and a logical-to-physical translation map to access a data storage device
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US10019352B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US9921753B2 (en) * 2015-03-23 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Data replication across host systems via storage controller
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US10496607B2 (en) * 2016-04-01 2019-12-03 Tuxera Inc. Systems and methods for enabling modifications of multiple data objects within a file system volume
CN107741811A (zh) * 2017-09-20 2018-02-27 努比亚技术有限公司 移动终端维护方法、装置及计算机可读存储介质
US11372812B2 (en) * 2018-10-08 2022-06-28 Silicon Motion, Inc. Mobile device and method capable of earlier determining that a number of files in a directory of an external connected storage device is about to full

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043940A (en) * 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5172338B1 (en) * 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
US6347051B2 (en) * 1991-11-26 2002-02-12 Hitachi, Ltd. Storage device employing a flash memory
US5357475A (en) * 1992-10-30 1994-10-18 Intel Corporation Method for detaching sectors in a flash EEPROM memory array
US5337275A (en) * 1992-10-30 1994-08-09 Intel Corporation Method for releasing space in flash EEPROM memory array to allow the storage of compressed data
JP3078946B2 (ja) * 1993-03-11 2000-08-21 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 一括消去型不揮発性メモリの管理方法及び半導体ディスク装置
US5682497A (en) * 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
JPH09319645A (ja) * 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
US5798968A (en) * 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
US5890192A (en) * 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US5930167A (en) * 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
CN1249585C (zh) * 1997-12-16 2006-04-05 Tdk株式会社 闪速存储器系统
GB9903490D0 (en) * 1999-02-17 1999-04-07 Memory Corp Plc Memory system
CN1300982A (zh) * 2000-12-13 2001-06-27 深圳市海尔信息科技有限公司 随机改变存储器根目录区和文件分配表储存位置的方法
JP3495709B2 (ja) * 2001-01-12 2004-02-09 三洋電機株式会社 データ記録装置
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6456528B1 (en) * 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6925007B2 (en) * 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
CN1447242A (zh) * 2002-03-25 2003-10-08 太和科技股份有限公司 可适用于快闪存储卡的控制装置及其建构方法
GB2400927A (en) * 2003-04-22 2004-10-27 Hewlett Packard Development Co Method of managing memory by checking that none of the sectors in a block is needed before erasing the block.
KR100608602B1 (ko) * 2003-12-10 2006-08-03 삼성전자주식회사 플래시 메모리, 이를 위한 사상 제어 장치 및 방법

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101303667B (zh) * 2008-06-25 2010-06-09 炬力集成电路设计有限公司 建立磁盘空簇表及查找磁盘空簇的方法和装置
CN102549551A (zh) * 2009-09-29 2012-07-04 飞思卡尔半导体公司 操作仿真电可擦除(eee)存储器
US8230160B2 (en) 2009-10-28 2012-07-24 Phison Electronics Corp. Flash memory storage system and flash memory controller and data processing method thereof
US9104690B2 (en) 2011-01-27 2015-08-11 Micron Technology, Inc. Transactional memory
CN102707898A (zh) * 2011-01-27 2012-10-03 美光科技公司 事务存储器
US10083122B2 (en) 2011-01-27 2018-09-25 Micron Technology, Inc. Transactional memory
CN102981968A (zh) * 2012-11-13 2013-03-20 浪潮电子信息产业股份有限公司 一种nor flash fat文件系统空闲簇的分配方法
CN102981968B (zh) * 2012-11-13 2016-05-25 浪潮电子信息产业股份有限公司 一种nor-flash-fat文件系统空闲簇的分配方法
CN104636079A (zh) * 2013-11-08 2015-05-20 德州仪器公司 文件存取方法及其系统
CN104636079B (zh) * 2013-11-08 2019-07-19 德州仪器公司 文件存取方法及其系统
CN109308267A (zh) * 2017-07-28 2019-02-05 聚星电子股份有限公司 行车记录器的储存装置的控制方法与储存装置控制系统
CN109308267B (zh) * 2017-07-28 2021-12-03 星宸科技股份有限公司 行车记录器的储存装置的控制方法与储存装置控制系统
CN112286871A (zh) * 2020-12-31 2021-01-29 湖南源科创新科技有限公司 面向多主机fat文件系统的簇分配方法及系统
CN112286871B (zh) * 2020-12-31 2021-03-16 湖南源科创新科技有限公司 面向多主机fat文件系统的簇分配方法及系统

Also Published As

Publication number Publication date
EP2254053A3 (en) 2010-12-08
US20060020744A1 (en) 2006-01-26
US7395384B2 (en) 2008-07-01
EP2254053B1 (en) 2013-04-10
CN101027651B (zh) 2010-06-09
EP2254053A2 (en) 2010-11-24

Similar Documents

Publication Publication Date Title
CN101027651B (zh) 最佳顺序性簇管理的fat分析
US8214583B2 (en) Direct file data programming and deletion in flash memories
CN101147119B (zh) 快闪存储器中的直接数据文件存储实施技术
US7610434B2 (en) File recording apparatus
US7450420B2 (en) Reclaiming data storage capacity in flash memories
EP1851638B1 (en) Direct data file storage in flash memories
US7769978B2 (en) Method and system for accessing non-volatile storage devices
US7793068B2 (en) Dual mode access for non-volatile storage devices
US7747837B2 (en) Method and system for accessing non-volatile storage devices
KR20070060070A (ko) 최적화된 순차적인 클러스터 관리용 에프에이티 분석
WO2007019155A1 (en) Reclaiming data storage capacity in flash memory systems
WO2007019197A2 (en) Management of memory blocks that directly store data files
KR20090108695A (ko) 다이렉트 데이터 파일 메모리 시스템에서 lba 인터페이스를 관리하는 방법

Legal Events

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

Owner name: SANDISK TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: SANDISK CORP.

Effective date: 20120329

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

Effective date of registration: 20120329

Address after: American Texas

Patentee after: Sandisk Corp.

Address before: American California

Patentee before: Sandisk Corp.

C56 Change in the name or address of the patentee

Owner name: SANDISK TECHNOLOGY CO., LTD.

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

CP01 Change in the name or title of a patent holder

Address after: American Texas

Patentee after: Sandisk Corp.

Address before: American Texas

Patentee before: Sandisk Corp.

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

Address after: American Texas

Patentee after: DELPHI INT OPERATIONS LUX SRL

Address before: American Texas

Patentee before: Sandisk Corp.