Connect public, paid and private patent data with Google Patents Public Datasets

闪存控制器以及使用闪存介质来存储数据的处理设备

Info

Publication number
CN1303498C
CN1303498C CN 03106425 CN03106425A CN1303498C CN 1303498 C CN1303498 C CN 1303498C CN 03106425 CN03106425 CN 03106425 CN 03106425 A CN03106425 A CN 03106425A CN 1303498 C CN1303498 C CN 1303498C
Authority
CN
Grant status
Grant
Patent type
Prior art keywords
storage
flash
device
medium
control
Prior art date
Application number
CN 03106425
Other languages
English (en)
Other versions
CN1441338A (zh )
Inventor
杰雷德·多纳尔德·阿西姆
杨永奇
Original Assignee
微软公司
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
Grant date

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/30Information retrieval; Database structures therefor ; File system structures therefor
    • G06F17/30067File systems; File servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL 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; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from or digital output to record carriers, e.g. RAID, emulated record carriers, networked record carriers
    • G06F3/0601Dedicated interfaces to storage systems
    • G06F3/0602Dedicated interfaces to storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from or digital output to record carriers, e.g. RAID, emulated record carriers, networked record carriers
    • G06F3/0601Dedicated interfaces to storage systems
    • G06F3/0628Dedicated interfaces to storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from or digital output to record carriers, e.g. RAID, emulated record carriers, networked record carriers
    • G06F3/0601Dedicated interfaces to storage systems
    • G06F3/0668Dedicated interfaces to storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL 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/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL 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/7207Details relating to flash memory management management of metadata or control data
    • Y02D10/13
    • 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/99952Coherency, e.g. same view to multiple users
    • Y10S707/99955Archiving or backup

Abstract

本发明公开了一种开放式体系结构闪存驱动程序。闪存驱动程序体系结构可以作为大多数类型的文件系统和闪存介质之间的接口来运行,不管制造商是谁。闪存驱动程序包括闪存抽象逻辑模块,该逻辑模块充当一个管理器,用于操作许多不同类型的闪存介质通用的特征。闪存驱动程序还可以包括可编程的闪存介质逻辑模块,该逻辑模块执行与闪存介质的直接通信中的更具体的操作。计算机设备的用户/制造商可以最佳地选择与闪存介质逻辑关联的一组可编程的入口点,以确保在计算机的用户/制造商所选择的文件系统和闪存介质之间的均匀而无缝的操作。

Description

闪存控制器以及使用闪存介质来存储数据的处理设备

技术领域

本发明涉及闪存驱动程序,更具体来说,涉及开放式体系结构闪存驱动程序。

背景技术

闪存是非易失性存储介质,它可以在没有电源的情况下保留信息,并可以将信息删除和重新编程。许多便携式计算机设备,如膝上型计算机、便携数字助手(PDA)、便携通信/计算机设备,以及许多其他类型的相关的设备使用闪存作为用于进行信息存储的主要介质,因为闪存在计算机设备中占用的空间非常小,并且不要求连续的电源便能保留其存储内容。此外,闪存还可以抵抗许多便携式计算机设备时常发生的摇动和意外摔落。因此,闪存越来越成为大多数便携式计算机设备所选择的存储介质。

大多数闪存制造商与通常被称为闪存驱动程序的专用控制器一起销售闪存。通常,这些闪存驱动程序与其他制造商制造的闪存不兼容。这就降低了便携式计算机设备的制造商的灵活性,因为制造部署的操作系统和/或文件系统常常与特定的专用闪存驱动程序紧密联系。更改闪存介质常常要求对文件系统进行修改,以确保与那些与闪存介质关联的特定闪存驱动程序的兼容性。在某些情况下,某些操作系统以及文件系统与某些闪存介质不兼容,从而由于缺乏驱动程序兼容性可能会使便携式计算机设备的某些制造商在某些程度上被局限于特定的闪存。

发明内容

下面将描述开放式体系结构闪存驱动程序。闪存驱动程序可以作为大多数类型的文件系统和闪存介质之间的接口来运行,不管制造商是谁。在描述的一个实施例中,闪存驱动程序在由计算机执行时会在文件系统和一个或多个闪存介质之间提供一个接口。闪存驱动程序使用闪存抽象逻辑,该逻辑可以由文件系统调用,以管理闪存操作,而不考虑一个或多个闪存介质的类型如何。闪存驱动程序还使用被配置为与不同类型的闪存介质进行交互的闪存介质逻辑。闪存抽象逻辑调用闪存介质逻辑以执行潜在地取决于闪存介质的类型以不同的方式执行的存储器操作。

附图说明

下面将参考附图进行详细的说明。在图中,引用号码的最左边的数字标识引用号码在其中首次出现的图。

图1说明了NAND闪存介质的逻辑表示。

图2说明了NOR闪存介质的逻辑表示。

图3说明了使用一个或多个闪存设备来存储信息的计算机设备的相关组件。

图4说明了闪存抽象逻辑的方框图。

图5说明了闪存介质逻辑的示范方框图。

图6A显示了用于存储逻辑扇区地址和物理扇区地址之间的对应关系的数据结构。

图6B显示了与图6A中的数据结构相同的数据结构,只不过其内容已经更新。

图7说明了用于当文件系统向闪存驱动程序发出写入请求时跟踪闪存介质上的数据的过程。

图8说明了保护诸如如图6A和6B中所示的数据结构之类的易失性数据结构中存储的逻辑到物理扇区地址信息的映射的过程。

图9说明了逻辑扇区地址可以存储以便防止电源故障的闪存介质内的位置。

图10说明了用于跟踪闪存介质中存储的数据的动态查询数据结构。

图11说明了动态地分配用于跟踪闪存介质上的数据的查询数据结构的过程。

图12是被闪存驱动程序作为连续的圆周看待的闪存介质的示意图。

图13描述了作为连续圆周看待的介质的另一个图表。

图14说明了被扇区管理器用来确定闪存驱动程序在介质上存储数据的下一个可用的空闲扇区位置的过程。

图15说明了作为连续圆周看待的介质的另一个视图。

图16是说明了被压缩工具用来回收扇区的过程的流程图。

图17显示了图16中说明的过程的一个示范结果。

图18说明了为更好地支持闪存驱动程序实现的过程和技术划分的NOR闪存介质的逻辑表示。

具体实施方式

下面的讨论针对闪存驱动程序。下面将有针对性地对主题进行描述以满足法定的要求。然而,描述本身不仅限于本专利的范围。发明人认为权利要求书所述的主题还可以以其他方式实施,以与其他当前或未来的技术一起包括不同的元素或类似于本文档中描述的元素的元素的组合。

概述本讨论假设读者熟悉闪存介质的基本操作原理。虽然如此,还是提供了对两种常见的非易失性随机存取存储器—NAND和NOR闪存介质—的一般介绍,以便更好地理解此处描述的示范实施例。之所以选择这两个示例闪存介质,是因为它们当前比较流行,但对它们的描述不仅将所描述的实施例限于这些类型的闪存介质。其他以电的方式可擦除的和可编程的只读存储器(EEPROM)也行。为便于说明,在本详细描述中使用的大多数示例中,数据结构中显示的数字是十进制格式。

通用闪存介质操作特征图1和图2分别说明了示例NAND和NOR闪存介质100、200的逻辑表示。两种介质分别具有对每一种介质通用的操作特征,不管制造商是谁。例如,请参看图1,NAND闪存介质通常分为相邻的区块(0、1到N)。每一个区块0、1、2等等进一步细分为K个扇区102。标准商业性NAND闪存介质通常每个区块都包含8、16或32个扇区。然而,制造商不同,区块和扇区的数量也会不同。某些制造商将扇区”称为“页”。此处使用的两个术语是等效的,并可互换。

每一个扇区102进一步被分成两个不同的部分,用于存储信息的数据区域103,和用于存储诸如错误纠正代码(ECC)之类的多余信息的备用区域104。数据区域103的大小通常为512字节,但是随着制造商的不同,也可能多一些,也可能少一些。采用512个字节时,闪存介质可使大多数文件系统将该介质作为诸如固定磁盘(硬盘)之类的非易失性存储器设备对待。此处使用的RAM通常是指诸如DRAM、SRAM、VRAM、VDO等等之类的随机存取存储器系列。通常,备用区域104的大小为16字节,用于NAND闪存介质设备的多余信息存储。此外,也可以选择其他大小,可以稍大一些,也可以稍小一些。在大多数情况下,备用区域104用于存储错误纠正代码和状态信息。

NOR存储器介质200与NAND存储器介质不同的是,区块不细分为物理扇区。与RAM相似的是,NOR存储器介质的区块内存储的每一个字节是可分别寻址的。然而,在实际中,NOR存储器介质上的区块可以从逻辑上细分为物理扇区,并附带备用区域。

除总体布局和操作比较以外,闪存设备的某些通用电学特征(此处也被称为“存储器要求”或“规则”)可以概述如下:1.对扇区的写入操作可以将单个位从逻辑“1”更改为逻辑“0”,但不能将逻辑“0”更改为逻辑“1”(下面的第2种情况除外);2.擦除一个区块会将该区块中的所有位设置为逻辑“1”;3.在没有擦除一个区块内的所有扇区/字节的情况下要擦除同一区块中的单个扇区/字节/位通常是不可能的;4.区块的擦除生存期是有限的,大约在100,000到1,000,000周之间;5.NAND闪存设备使用ECC来防止由于漏泄电流造成的数据损坏;以及6.读取操作不计入写入/擦除生存期内。

闪存驱动程序的体系结构图3说明了使用一个或多个闪存设备来存储信息的计算机设备300的相关组件。通常,可以使用各种不同的一般用途或特殊用途计算系统配置来作为计算机设备300,包括但不仅限于个人计算机、服务器计算机、手提或膝上型设备、便携通信设备、多处理器系统、基于微处理器的系统、可编程的消费类电子产品、游戏系统、多媒体系统、上述示例设备和/或系统的任何一种组合等等。

计算机设备300通常包括处理器302、存储器304和闪存介质100/200。计算机设备300可以包括上述元素中的多个元素。诸如电源、键盘、触摸板、I/O接口、显示器、LED、音频生成器、振动设备等等之类的其他元素未显示,但它们也可以轻松地成为示范计算机设备300的组成部分。

存储器304通常包括易失性存储器(例如,RAM)和非易失性存储器(例如,ROM、PCMCIA卡等等)。在下面描述的大多数实施例中,存储器304被用作计算机设备302的缓存,使得应用程序数据被很快地访问到,而不必永久地将数据存储在诸如闪存介质100/200之类的非易失性存储器上。

操作系统309驻留在存储器304中并在处理器302上执行。一个示例操作系统实施例包括Microsoft Corportaion提供的WindowsCE操作系统,但也可以选择其他操作系统,如DOS、UNIX等。为便于说明,诸如操作系统之类的程序和其他可执行程序组件此处作为不连续的区块来显示,虽然这样的程序和组件在不同的时间驻留在计算机的不同的存储组件中,并由计算机设备300的处理器来执行。

一个或多个应用程序307被加载到存储器304中,并在操作系统309上运行。应用程序的示例包括,但不仅限于,电子邮件程序、文字处理程序、电子表格程序、因特网浏览器程序等等。

也在操作系统309上运行的文件系统305也加载到存储器304中。文件系统305通常负责管理数据向诸如硬盘驱动器和此示范实施例闪存介质100/200之类的存储器设备的存储和检索。大多数文件系统305根据文件系统305运行所在的操作系统的约定的逻辑级别访问和存储信息。文件系统305也可以成为操作系统309的组成部分或作为单独的逻辑模块以代码形式嵌入其中。

闪存驱动程序306作为文件系统305和闪存介质100/200之间的直接接口来运行。闪存驱动程序306能使计算机设备300通过文件系统305控制闪存介质100/200并最终发送/检索数据。然而,如下文更详细地描述的,闪存驱动程序306不仅负责读/写操作。闪存驱动程序306维护数据完整性,执行闪存介质的磨损调整,在计算机设备300的电源中断期间最大限度地降低数据丢失,并允许计算机设备300的OEM支持它们相应的闪存设备,不管制造商是谁。闪存驱动程序306不依赖于文件系统。这意味着闪存驱动程序306支持许多不同类型的文件系统,如文件分配数据结构文件系统(FAT16)、(FAT32)和其他文件系统。此外,闪存驱动程序306也不依赖于闪存介质,这同样意味着驱动程序306支持闪存设备,不管该闪存设备的制造商是谁。即,闪存驱动程序306具有在闪存介质上读取/写入/擦除数据的能力,并可以支持大多数闪存设备,如果不是全部的话。

在示范实施例中,闪存驱动程序306作为操作系统309内的组件,当它执行时,充当文件系统305和闪存介质100/200之间的逻辑接口模块。闪存驱动程序306以一个单独的框306的方式来显示,为便于演示闪存驱动程序充当接口的示例。虽然如此,闪存驱动程序306也可以驻留在其他应用程序中,作为文件系统305的组成部分或独立地作为与硬件/固件设备一起执行的计算机可读的介质上单独的代码。

在一个实施例中,闪存驱动程序306包括:闪存抽象逻辑308和可编程的闪存介质逻辑310。闪存抽象逻辑308和可编程的介质逻辑310是可以支持闪存驱动程序306执行的各种功能的编码指令。虽然显示的示范实施例包括这两个元素,但是可以选择闪存抽象逻辑308和闪存介质逻辑310中每一个逻辑中的各种功能,以执行下面描述的某些更具体的实施例。因此当描述的实施例显示了两个不同的逻辑层308/310时,可以实现下面描述的许多技术,而不一定要求这两层逻辑中的全部或部分功能。此外,实现技术时也可以不必有下面描述的准确的职责划分。

在一个实施例中,闪存抽象逻辑308管理对闪存介质普遍通用的那些操作特征。这些通用的存储器要求包括磨损调整、维护数据完整性,以及在发生电源故障之后处理数据恢复。此外,闪存抽象逻辑308负责将闪存介质100/200上的物理扇区域上存储的信息映射到与文件系统305关联的逻辑扇区域。即,闪存抽象逻辑308跟踪从逻辑到物理扇区地址和/或从物理到逻辑扇区地址发出的数据。驱动程序306在执行读/写操作时都使用逻辑到物理扇区地址。驱动程序306在驱动程序初始化过程中在创建查询表(下面将作介绍)时从物理到逻辑扇区地址出发。依赖于某些类型的闪存介质的文件系统发出的某些比较具体的命令被直接发送到闪存介质逻辑310以便执行和转换。如此,闪存抽象逻辑308充当那些通用操作的管理器,这些通用操作对闪存介质是通用的,不管介质的制造商是谁,如磨损调整、维护数据完整性、在发生电源故障之后处理数据恢复。

图4说明了闪存抽象逻辑的示范方框图。闪存抽象逻辑308包括扇区管理器402、逻辑到物理扇区映射模块404和压缩工具406。简而言之,扇区管理器402提供一个指针,指向可用的扇区,即,“空闲”并可用于接收新数据。逻辑到物理扇区映射模块404在数据从逻辑扇区寻址的文件系统域向物理扇区寻址的闪存介质域出发时对数据进行管理。压缩工具406提供一个机制,用于清除数据区块(在业界通常也称为“擦除”),以确保有足够多的空闲扇区可用于写入数据。此外,压缩工具406还帮助驱动程序306系统执行一致而均匀的磨损调整。下面将比较详细地介绍所有这些元素。

再回到图3,使用闪存介质逻辑310,将从闪存抽象逻辑308或文件系统305接收到的逻辑命令转换为物理扇区命令,以便发送到闪存介质100/200。例如,闪存介质逻辑310从闪存介质读取和擦除数据和/或向其中写入数据。闪存介质逻辑310在必要时也负责执行ECC。在一个实施例中,闪存介质逻辑310是可编程的,以允许用户满足特定制造商的特定闪存介质要求。因此,闪存介质逻辑310被配置为处理与控制闪存介质100/200的物理方面关联的特定细节、ECC、和特定的命令。

图5说明了闪存介质逻辑310的示范方框图。如图所示,闪存介质逻辑310包括可编程的入口点模块502、I/O模块504和ECC模块506。可编程的入口点模块502定义了一组编程接口,以便在闪存抽象逻辑308和闪存介质100/200之间通信。换句话说,可编程的入口点允许计算机设备300的制造商对闪存介质逻辑310进行编程,以便与计算机设备300中使用的实际闪存介质100/200连接。I/O模块504包含发送到闪存介质100/200的读取/写入/擦除命令所必需的特定代码。用户可以对ECC模块506进行编程,以便根据用户选择的任何特定的ECC算法运行。

跟踪数据文件系统305使用逻辑扇区寻址,以读取和存储闪存介质100/200上的信息。逻辑扇区地址是文件系统从中读取和向其中写入数据的地址位置。它们是“逻辑”,因为它们是相对于文件系统的。在现实中,数据可以存储在闪存介质100/200上的完全不同的物理位置。这些物理位置被称为物理扇区地址。

闪存驱动程序306负责将所有的逻辑扇区地址请求(即,读取&写入)链接到物理扇区地址请求。链接逻辑到物理扇区地址的过程此处也被称为“映射”。从逻辑到物理扇区地址的映射允许闪存驱动程序306在决定将数据存储在闪存介质100/200的什么位置时具有最大的灵活性。逻辑到物理扇区映射模块404允许数据灵活地分配到闪存介质上的任何物理位置,从而使诸如磨损调整和从电源故障中恢复之类的其他任务有较高的效率。它还允许文件系统305以所设计的方式存储数据,而不必知道数据实际上是以不同的方式存储在闪存介质上的。

图6A显示了闪存驱动程序306生成的数据结构(即,表)600A的示范实施例。数据结构600A存储在存储器304的易失性部分,例如,RAM。数据结构600A包括具有对应的逻辑扇区地604的物理扇区地址602。下面将参考图7介绍表600A是如何生成的。

图7说明了用于当文件系统305向闪存驱动程序306发出写入请求时跟踪闪存介质100/200上的数据的过程700。过程700包括步骤702-718。请参看图6A和7,在步骤702中,闪存抽象逻辑308接收到将数据写入到指定的逻辑扇区地址604的请求。

在步骤704中,扇区管理器402确定闪存介质100/200上可以接受与写入请求关联的数据的空闲物理扇区地址位置(下面将比较详细地讲述扇区管理器402如何选择物理扇区地址)。空闲的物理扇区是不必首先擦除就可以接受数据的任何扇区。一旦扇区管理器402接收与空闲物理扇区位置关联的物理扇区地址,逻辑到物理扇区映射模块404就将物理扇区地址分配到写入请求指定的逻辑扇区地址604,从而形成对应的关系。例如,物理扇区地址0到N可以分配到任何逻辑扇区地址0到N。

接下来,在步骤706中,逻辑到物理扇区映射模块404在诸如存储器305中的示范表600A之类的数据结构中存储物理扇区地址到逻辑扇区地址的对应关系。如图示范数据结构600A所示,三个逻辑扇区地址604被分配到对应的物理扇区地址602。

接下来,在步骤708中,与逻辑扇区地址写入请求关联的数据存储在步骤704中分配的物理扇区地址位置中的闪存介质100/200上。例如,数据将存储在介质100/200上的对应于逻辑扇区地址11的物理扇区地址位置0。

现在,在步骤710中,假设文件系统305发出了另一个写入请求,但在这种情况下,是为了修改与以前步骤702中发出的逻辑扇区地址关联的数据。然后,闪存驱动程序306分别执行步骤712到714,它们与上文描述的步骤704到708完全相同。

然而,在步骤718中,在与步骤710关联的更新的数据成功地存储在闪存介质100/200之后,逻辑到物理扇区映射模块404将在步骤704中分配的旧的物理扇区地址标记为“脏的”。在新数据被写入介质100/200之后旧数据被标记为脏的,如此,在写入操作的中间发生电源故障的情况下,逻辑到物理扇区映射模块404将不会丢失旧的数据。可能会丢失新的或从步骤702或710更新的数据,但由于没有必要执行擦除操作,因此在发生电源故障的情况下新的或被修改的数据中只有一项丢失。

图6B显示了与数据结构600A相同的数据结构600B,只不过其内容已经更新。在此示例中,文件系统305具有与逻辑扇区地址11关联的更新数据。相应地,闪存驱动程序306将逻辑扇区地址11重新分配到物理扇区地址3,并将这两个地址之间的重新分配的对应关系存储在数据结构600B中。如数据结构600B所示,逻辑扇区11的内容实际上被写入物理扇区地址3,数据内容被成功地写入到物理扇区地址3之后,扇区0的内容被标记为“脏的”,关于这一点,参考步骤710-718进行了描述。

当以前存储的数据被文件系统305更新时重新分配逻辑到物理扇区地址的此过程,允许写入操作不必等待移动全部数据区块便可以执行,并执行擦除操作。因此,过程700允许数据结构得到很快的更新,然后可以在实际物理介质100/200上执行物理写入操作。闪存抽象逻辑308使用诸如600A/600B之类的数据结构正确地维护逻辑到物理的映射关系。

当文件系统305发出了读取请求时,闪存抽象逻辑308,通过逻辑到物理映射模块404,检索数据结构600A/600B,以获得与关联于读取请求的逻辑扇区具有对应关系的地址物理扇区地址。然后,闪存介质逻辑310使用该物理扇区地址作为一个基础,以便将与读取请求关联的数据发送回文件系统305。文件系统305不必知道其对逻辑扇区地址的请求实际映射到物理扇区地址。

电源中断保护写入操作在与区块级别相对的扇区级别上执行,从而在发生电源故障的情况下最大限度地降低数据丢失的可能性。用于存储数据的扇区是相对于大多数文件系统305的最细微的粒度级别。因此,如果闪存驱动程序306每个扇区地运行,在发生电源故障的过程中数据丢失的可能性会降低。

如上文所述,数据结构600A、600B存储在存储器304中,该存储器在一个示范实施例中通常是一个易失性存储器设备,在发生电源故障的情况下将会被完全擦除。为保护闪存介质100/200上的数据完整性,数据结构600A/600B中存储的逻辑到物理映射信息被备份在闪存介质上。

在一个示范实施例中,为降低与在闪存介质100/200上存储整个数据结构关联的开销,逻辑扇区地址存储在介质的备用区域104,并带有逻辑扇区地址与其具有对应关系的每一个物理扇区。

图8说明了保护诸如示范数据结构600A和600B之类的易失性数据结构中存储的逻辑到物理扇区地址信息的映射的过程800。过程800包括步骤802-814。描述该过程的顺序不能解释为限制。此外,该过程可以以任何适当的硬件、软件、固件或它们的组合来实现。在步骤802中,与实际数据关联的逻辑扇区地址存储在分配到逻辑扇区地址的物理扇区地址上的闪存介质100/200的物理扇区中。在NAND闪存介质100的情况下,逻辑扇区地址存储在介质的备用区域104。使用此方案,逻辑到物理扇区映射信息以反向搜索格式来存储。因此,在发生电源故障之后,必须扫描介质上的每一个物理扇区的备用区域,确定对应的逻辑扇区地址,然后相应地更新存储器中的查询表。图9说明了介质100/200中的可以存储逻辑扇区地址的位置。正如前面所提到的,NOR闪存的区块可以从逻辑上细分为物理扇区,每一个物理扇区都带有一个备用区域(与NAND相似)使用此技术,逻辑扇区地址存储在每一个物理扇区的备用区域,与NAND闪存使用的过程相似(图15中显示为空间1504,下面将参考图15对其进行描述)。

在发生电源中断以及数据结构600A、600B丢失的情况下,正如图8的判断步骤804的“是”分支所指出的,然后,闪存抽象逻辑308使用闪存介质逻辑310扫描闪存介质,以定位与每一个物理地址中的数据一起存储的逻辑扇区地址(参见图9),正如步骤806所指出的。在步骤808中,包含了数据的物理扇区地址被重新分配到与介质上的数据在一起的逻辑扇区地址。由于物理和逻辑扇区地址被恢复,因此,它们被存储回数据结构600A、600B,闪存介质逻辑310进入包含数据的下一个扇区,正如步骤812所指出的。步骤806-812不断重复,直到包含数据的所有扇区都已经被扫描,数据结构被恢复。通常,这种情况将在初始化计算机设备300时发生。

相应地,当发生电源故障时,过程800能使闪存抽象逻辑308扫描介质100/200,并在诸如示范数据结构600之类的数据结构中重建逻辑到物理映射。过程800可以确保映射信息在发生电源故障期间不会丢失,并且可以保持数据的完整性。

用于跟踪数据的动态查询数据结构图10说明了用于跟踪闪存介质100/200中存储的数据的动态查询数据结构1000。数据结构1000包括主数据结构1002和一个或多个辅助数据结构1004、1006。数据结构将由闪存驱动程序306生成和维护。数据结构存储在存储器304的易失性部分。一个或多个辅助表1004、1006包含逻辑到物理扇区地址的映射。正如下文将讲述的,辅助数据结构1004、1006中每一个数据结构都具有预先确定的映射容量。主数据结构1002包括一个指针,指向一个或多个辅助数据结构1004、1006中的每一个数据结构。每一个辅助数据结构是按需要分配的,以便映射用于存储数据的那些逻辑到物理地址。一旦辅助数据结构1004、1006等等的容量被超过,然后将分配另一个辅助数据结构,然后再分配下一个,等等,直到最后闪存介质100/200上的所有可能的物理扇区地址都被映射到逻辑扇区地址。每次分配辅助表时,闪存驱动程序306将启用主数据结构1002中包含的指针,以指向它。

相应地,闪存驱动程序306将基于闪存介质本身中存储的永久数据量动态地分配一个或多个辅助数据结构1004、1006。在运行时将使用闪存介质100/200的特定属性计算辅助数据结构的大小特征。不分配辅助数据结构,除非以前分配的辅助数据结构已满或不足以处理文件系统305所需的逻辑地址空间量。因此,动态查询数据结构1000最大限度地降低存储器304的使用。动态查询数据结构1000适用于使用日历、收件箱、文档等等的计算机设备300,在此大多数逻辑扇区地址空间将不必映射到物理扇区地址。在这些应用程序中,只有有限的逻辑扇区范围被反复地访问,只有在该应用程序要求更多存储区域时才写入新逻辑扇区。

主数据结构1002包含一个指针阵列,0到N,它们指向已分配的那些辅助数据结构。在图10的示例中,位置0和1的指针分别指向辅助数据结构1004和1006。此外,在图10的示例图表中,指针2到N不指向任何辅助数据结构,并包含默认设置“NULL”,以使逻辑到物理扇区映射模块404知道没有进一步分配辅助数据结构。

每一个辅助数据结构1004、1006都类似于数据结构600,但只有全部可能的介质的一部分映射到辅助数据结构。辅助数据结构允许闪存抽象逻辑308将存储器304所需要空间量降低到只包括文件系统发出的逻辑扇区地址的那些部分。每一个辅助数据结构是(b*k)字节大小,其中k是数据结构中包含的物理扇区地址的数量,b是用于存储每一个物理扇区地址的字节的数量。

图11说明了动态地分配用于跟踪闪存介质100/200上的数据的查询数据结构的过程1100。过程1100包括步骤1102到1106。描述该过程的顺序不能解释为限制。此外,该过程可以以任何适当的硬件、软件、固件或它们的组合来实现。

在步骤1102中,生成了包含指向一个或多个辅助数据结构1004、1006的主数据结构1002。此示范实施例中的主数据结构1002的大小是固定的。在计算机设备300启动时,闪存介质逻辑310确定闪存介质100/200的大小,并将此信息中继到闪存抽象逻辑308。基于闪存介质的大小,闪存抽象逻辑308计算物理地址的范围。即,假设闪存介质的大小是16MB,那么,NAND闪存介质100通常将包含32768个扇区,每一个扇区的大小为512字节。这意味着,闪存抽象逻辑308可能必须将总数为0到最坏的情况下的32768个逻辑扇区,假设闪存介质上的所有存储器空间都已被使用。已知介质上有215个扇区,闪存抽象逻辑308可以使用2个字节存储每一个逻辑扇区地址的物理扇区地址。如此主数据结构以256个(N=256)DWORD的阵列的方式来实现,涵盖了将由文件系统发出的最大的逻辑扇区地址数量(例如,32768)。如此,共有256个潜在的辅助数据结构。

在步骤1104中,分配辅助数据结构。首先,闪存抽象逻辑确定每一个潜在的辅助数据结构的可能的最小大小。使用简单的除法,每一个数据结构支持32768/256=128个逻辑扇区地址。如上所述,整个物理空间都可以使用2个字节映射,b=2,因此,每一个辅助数据结构的大小为256个字节(b=2*k=128)。

现在,已知每个辅助数据结构的大小,假定文件系统305请求写入到逻辑扇区地址50-79,也被称为LS50-LS79。为满足来自文件系统305的写入请求,闪存抽象逻辑308计划将主数据结构1002中的第一个指针用于逻辑扇区地址LS0-LS127或数据结构1004。假设第一个指针是NULL,闪存抽象逻辑308分配存储器304中的数据结构1004,大小为256个字节。正如步骤1106所指出的,闪存抽象逻辑308能使主数据结构的位置0的指针指向数据结构1004。因此,在此示例中,使用数据结构1004存储逻辑扇区LS50-LS79的映射信息。

如果文件系统305写入到闪存介质100/200中的对应的区域,闪存抽象逻辑308分配辅助数据结构。通常,只有已被使用的逻辑扇区地址被闪存抽象逻辑308映射。因此,在最糟的情况下,当文件系统305访问整个逻辑地址空间时,那么对所有256辅助数据结构(在图10的示例中只显示将分配两个,1004、1006),每个将被分配256个字节,共要求存储器304中的64KB空间。

当分配的数据结构1004变得不足以存储文件系统305发出的逻辑扇区地址空间时,那么,闪存抽象逻辑308分配类似于数据结构1006的另一个数据结构。如果数据结构1004在稍后的时间再次足以处理文件系统作出的所有逻辑扇区地址请求,那么,这种动态地分配辅助数据结构的过程也适用。在此示例中,指向数据结构1006的指针将被闪存抽象逻辑308禁用;数据结构1006将成为存储器304中的空闲空间。

扇区的均匀磨损调整和回收图12是被闪存驱动程序306作为连续的圆周1200看待的闪存介质100/200的示意图。在物理上闪存介质与如图1和2所示的介质100/200相同,只是闪存抽象逻辑308组织闪存介质,好像它是包含0到N个区块的连续圆周1200。相应地,区块N内的最高的物理扇区地址(单个扇区未在图12中显示,以简化图表,但可以在图1和2中看到)和区块0内的最低的物理扇区地址被视为相邻的。

图13说明了作为连续圆周1200看待的介质100/200的另一个视图。在此示范图表中,扇区管理器402维护一个写入指针1302,该指针指出介质上的可用于接收数据的下一个空闲扇区。下一个可用的空闲扇区是不必按规定的顺序首先擦除就可以接受数据的扇区。写入指针1302作为两个计数器的组合:计数扇区的扇区计数器1306和计数区块的区块计数器1304。两种计数器组合起来可以指出用于接收数据的下一个可用的空闲扇区。

在另一个实施例中,写入指针1302可以作为单个计数器,并指出在写入操作期间可用于接受数据的下一个物理扇区。根据此实施例,扇区管理器402维护介质上可用于接收数据的所有物理扇区地址的列表。扇区管理器402存储介质上的第一个和最后一个物理扇区地址(相邻的地址),并减去两个地址以确定空闲扇区的完整列表。然后,写入指针1302循环并连续地在列表中向前移动。这就减少了需要由扇区管理器402存储的信息量。

图14说明了被扇区管理器402用来确定闪存驱动程序306在介质100/200上存储数据的下一个可用的空闲扇区位置的过程1400。过程1400还能使扇区管理器402提供每一个物理扇区地址(对于下一个空闲扇区),以便分配到文件系统305作出的每个逻辑扇区地址写入请求,如上文所述。过程1400包括步骤1402-1418。描述该过程的顺序不能解释为限制。此外,该过程可以以任何适当的硬件、软件、固件或它们的组合来实现。

在步骤1402中,X区块计数器1304和Y扇区计数器1306最初被设置为零。此时假设没有数据驻留在介质100/200上。

在步骤1404中,驱动程序306接收写入请求,将查询扇区管理器402,以将下一个可用的空闲物理扇区地址发送到逻辑到物理扇区映射模块404。写入请求可以来自文件系统305和/或来自用于回收扇区的压缩工具406内部,如下文所详述。

在步骤1406中,数据被写入到如写入指针1302所指出的扇区。由于在此示范图表中两种计数器最初被设置为零,假定写入指针1302指向扇区0、区块0。

在步骤1408中,扇区计数器1306向前移动一个有效的扇区。例如,在步骤1406的示例之后,写入指针向前移动到扇区1、区块0。

接下来,在判断步骤1410中,扇区管理器402检查扇区计数器1306是否超过一个区块中的扇区数量K。如果Y计数器未超过区块的最大扇区大小,那么,根据判断步骤1410的“否”分支,对下一个写入请求重复步骤1404-1410。

另一方面,如果Y计数器超过区块的最大扇区大小,那么,该区块的最高的物理扇区地址被写入到该区块,该区块已满。然后根据步骤1410的“是”分支,在步骤1412中,Y计数器被重置为零。接下来,在步骤1414中,X区块计数器1304增加1,从而将写入指针1302向前移动到该区块的最低的有效物理扇区地址0的下一个区块。

接下来,在判断步骤1416中,压缩工具406检查X区块计数器是否指向坏区块。如果是,那么,X区块计数器1304将增加1。在一个实施例中,压缩工具406负责检查此状况。如上文所提及的,扇区管理器存储可用于处理写入请求的所有物理扇区地址。物理扇区地址的整个区块始终在压缩或在初始化期间由压缩工具添加。因此,扇区管理器402不必检查区块是否为坏的,虽然扇区管理器可以这样做。还应注意,在其他实施例中,步骤1416可以在过程1400开始时执行。

在步骤1417中,X区块计数器1304增加,直到它指向好的区块。为避免连续循环,如果所有区块都是坏的,那么过程1400将在步骤1416处停止,并给用户提供一个指示,说明所有区块都是坏的。

接下来在判断步骤1418中,扇区管理器检查X区块计数器1304是否超过最大区块数量N。这将指出写入指针1302已经使圆周完整(在圆周1200的顶端)。如果是这种情况,那么根据步骤1418的“是”分支,过程1400重复,X和Y计数器被重置为零。否则,根据步骤1418的“否”分支,过程1400返回到步骤1404并继续向前移动。

在此示范过程1400中,写入指针1302最初以最低的地址区块的最低的物理扇区地址开始。写入指针1302一次将扇区向前移动到最高的地址区块的最高的物理扇区地址,然后回到最低的地址区块,等等。此连续和循环的过程1400确保数据被均衡地写入到介质100/200的每个扇区。没有特定的区块或扇区被写入多次,从而可确保在整个介质100/200中有均匀的磨损调整。相应地,过程1400允许数据被非常快地写入到下一个可用的空闲扇区,不必使用用于确定在哪里写入新数据的昂贵处理算法,同时又可维护均匀的磨损调整。此类传统的算法会影响计算机设备的写入速度。

在另一个实施例中,写入指针1302可以按逆时针方向移动,从最高的区块地址N的最高的物理扇区地址开始,并减少其计数器。在任何一种情况下,坏的区块都可以被扇区管理器完全忽略。此外,计数器可以被设置为任何值,不一定需要从计数器的最高的或最低的值开始。

图15说明了作为连续圆周1200看待的介质100/200的另一个视图。如图15所示,写入指针1302已经从区块0向前移动到7,大约为整个圆周1200的一半。相应地,区块0到7包含脏的、有效的数据,或坏的区块。即,区块0到7中的每个好的扇区都不空闲,因此,无法用于接收新的或修改的数据。箭头1504表示区块0到7包含已被使用的扇区。最后,写入指针1302将要么用完空闲扇区,无法写入,除非清除和回收被标记为脏的或无效的扇区。要清除扇区,就是说,扇区被重置为可写状态,或换句话说,被“擦除”。为了释放扇区,必须至少一次擦除一个区块。然而,在可以擦除区块之前,所有好的扇区的内容都被复制到介质的不同部分的空闲扇区。然后,将扇区标记为“脏的”,再将区块擦除。

压缩工具406负责监视介质100/200的状况,以确定何时应擦除区块,以便将空闲扇区回收到扇区管理器402。压缩工具406还负责执行清除操作。要完成清除操作,压缩工具406与扇区管理器402类似,维护了一个指针。在这种情况下,压缩工具406维护了一个清除指针1502,图15显示了该指针。清除指针1502指向物理区块,能使压缩工具406在区块被清除时跟踪介质100/200上的扇区,如下文所述。压缩工具406可以维护一个指向下一个要压缩的区块的指针,因为擦除操作影响整个区块。即,当压缩工具406不在压缩区块时,压缩工具406指向一个区块。

图16是说明了被压缩工具用来回收扇区的过程的流程图。过程1600包括步骤1602-1612。描述该过程的顺序不能解释为限制。此外,该过程可以以任何适当的硬件、软件、固件或它们的组合来实现。在步骤1602中,压缩工具406监视文件系统向闪存介质100/200写入或更新的频率。这是通过专门监视介质100/200上的空闲和脏的扇区的数量来完成的。空闲扇区和脏的扇区的数量可以通过计算上文描述的表600和/或1000中存储的空闲和脏的扇区来判断。

在判断步骤1604中,压缩工具406执行两个比较,以确定是否应该回收扇区。第一个比较涉及将空闲扇区的数量与脏的扇区的数量进行比较。如果脏的扇区的数量超过空闲扇区的数量,那么,压缩工具406就认为应该执行回收操作,该操作在这种情况下被称为“服务压缩”。因此,当脏的扇区的数量超过空闲扇区的数量时,将进行服务压缩。

如果应该进行服务压缩,那么在步骤1606中,压缩工具在控制介质以执行步骤1608-1612以清除脏数据的区块之前等待低优先级线程1606。服务压缩也可以在可以将脏的扇区回收到空闲扇区的其他方便的时间进行。例如,在另一个实施例中,当全部扇区的三分之一是脏扇区时,闪存抽象逻辑308可以执行服务压缩。在任何一个实施例中,压缩工具406通常等待优先级较高的线程,以放弃对处理器302和/或闪存介质100/200的控制。一旦已经有低优先级线程可用,过程将进入步骤1608。

回过头来参看步骤1604,第二个比较涉及比较介质上剩下的空闲扇区的数量,以确定写入指针1302是否即将或已经用完要指向的空闲扇区。如果果真是这种情况,那么,压缩工具406认为有必要预定一个“关键压缩”以回收扇区。压缩工具不等待低优先级线程并立即启动步骤1608。

在步骤1608中,压缩工具406根据步骤1604的情况将在高优先级线程或低优先级线程上操作。如果在高级别线程上操作(关键压缩),那么,压缩工具406仅限于将少量的,例如,16个脏扇区,回收到空闲扇区,并将对处理器的控制返回到计算机设备300,以避免在这样的中断期间对处理器302的独占。

对于闪存介质,通常每个区块制造三十二个扇区,但对于关键压缩,也可以其他数量的扇区,稍微大一些,或稍微小一些。不管这些大小特征如何,在关键压缩期间回收的扇区的数量都是任意的,但至少必须为1(为了满足当前的写入请求)。关键压缩妨碍文件系统305能够完成写入;因此,尽快地完成压缩非常重要。在关键压缩的情况下,压缩工具406至少必须将一个脏的扇区回收到空闲扇区中,以便在介质上有空间满足挂起的写入请求。如果一次回收多个扇区,如16个,就可以避免有多个挂起的写入请求以及多个关键压缩紧接着执行的情况,有效地防止无限期地控制处理器。因此,尽管为关键压缩选择的回收的扇区的数量可以不同,但在示范描述中选择了足以防止紧接着的关键压缩的数量。

因此,在步骤1608中,压缩工具406将使用清除指针1502扫描扇区中的有效数据,将数据重写到空闲扇区,并在成功地移动数据之后将扇区标记为脏的。相应地,当移动数据时,压缩工具使用参考过程700描述的相同过程,该过程的代码与文件系统305写入新的数据和/或更新数据时使用的代码相同。压缩工具406在移动数据时查询扇区管理器402是否有空闲扇区,其方式与参考过程1400描述的方式相同。

在步骤1610中,压缩工具406使用类似于图13中所示的写入计数器1306的扇区计数器一个扇区一个扇区地移动清除指针1502,只是此扇区计数器针对的是清除指针1502的位置。压缩工具406还通过计数器跟踪区块,其方式与参考写入指针1302描述的方式类似。然而,清除的区块的数量是由脏的扇区的数量确定的,关键压缩的情况除外。在关键压缩中,压缩工具只压缩足够的区块以回收少量的物理扇区(即,16个扇区)。

在步骤1612中,压缩工具擦除(清除)包含完全被标记为脏的的好的扇区的那些区块。图17显示了过程1600的示范结果。在此示例中,在有必要进行另一个压缩的情况下,区块0和1被清除,清除指针被移到区块2的第一个扇区。因此,压缩工具406从区块0和1回收两个区块的扇区,这就向扇区管理器402提供了更多的空闲扇区。已使用的扇区1504构成了在此实施例中按顺时针方向旋转的数据流(下文中将称之为“数据流”1504)。写入指针1302保持在数据流1504的首部,清除指针1502保持在数据流1504的“尾部”。数据流1504可以在数据被删除时收缩,或者随着新数据的添加而增长,但指针始终指向数据流1504的两个相对的尾部:头部和尾部。

对待闪存介质的方式为好像物理扇区地址构成一个连续的圆周1200,并且使用上文描述的过程,能使闪存抽象逻辑308在整个介质100/200中执行均匀的磨损调整。压缩工具406选择给定区块相同的次数,以便通过擦除回收扇区。由于闪存区块具有有限的写入/擦除周期,压缩工具以及扇区管理器在区块0-N内尽可能均衡地分布这些操作。在这点上,数据流1504在圆周1200(即,介质100/200)旋转,均衡地在闪存介质100/200上提供完美的磨损调整。

在发生电源故障的情况下,闪存抽象逻辑310包含简单的编码逻辑,该逻辑扫描闪存介质100/200,并确定哪些位置被标记为空闲和脏的。然后,该逻辑能够推断,数据流1504驻留在被标记为空闲和脏的位置之间,例如,图17中描述的圆周1200的数据流1504部分。数据流1504的头部和尾部可以通过定位包含首部数据的最高的物理扇区地址和通过定位包含尾部数据的最低的物理扇区地址来轻松地确定。

NOR闪存设备虽然此详细描述部分中的上述所有章节适用于NAND和NOR闪存设备,但是,如果使用了NOR闪存介质200,也需要某些额外的实施例,才能使闪存介质逻辑支持在介质200的每个物理扇区中存储数据。每个NOR区块0、1、2等都可以被闪存介质逻辑310当作NAND闪存介质100来对待。具体来说,每个NOR区块都细分为一些页,其中每一页都包括512字节的“数据区域”,用于存储扇区数据,和8字节“备用区域”,用于存储诸如逻辑扇区地址、状态位等等之类的东西(如上文所述)。

图18说明了为更好地支持闪存驱动程序实现的过程和技术划分的NOR闪存介质200的逻辑表示。在此实施例中,扇区1802包含512字节的数据区域1803,用于存储与扇区相关的数据,和8字节的数据区域,用于作为备用区域1804。区段1806表示NOR区块的未使用的部分,因为NOR闪存区块通常大小为2,它不是均衡可分的。例如,请看一个16MB的NOR闪存设备,该设备具有128个闪存区块,每一个区块的大小为128KB。使用520字节的页面大小,每一个NOR闪存区块都可以分成252个不同的扇区,32个字节是未使用的。不幸的是,在示范实施例中,这每个区块的32个字节被闪存介质逻辑310“浪费”,未被用来存储扇区数据。然而,折中是增强的写入吞吐量,均匀的磨损调整、将数据丢失减到最小限度等等,如上文所述的示范闪存驱动程序306的闪存抽象逻辑308提供的全部。另外一些实施例可以通过将介质200分成不同的扇区大小的方法来完成。

计算机可读的介质使用如上文所述的闪存驱动程序的示范主题的实施例可以存储在计算机可读的介质上或通过计算机可读的介质的某些形式进行传输。计算机可读的介质可以是计算机可以访问的任何可用的介质。作为示例,而不仅限于,计算机可读的介质可以包括“计算机存储介质”和“通信介质”。

“计算机存储介质”包括以任何方法或技术实现的易失性的和非易失性的、可移动的和非可移动的介质,以用于存储诸如计算机可读的指令、数据结构、程序模块或其他数据之类的信息。计算机存储介质包括,但不仅限于,RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字多功能磁盘(DVD)或其他光盘存储器、磁带机、磁带、磁盘存储器或其他磁存储设备,或者可用于存储所需要的信息并且计算机可以访问的任何其他介质。

“通信介质”通常在诸如载波之类的调制数据信号或其他传输机制中实施计算机可读的指令、数据结构、程序模块或者其他数据。通信介质还包括任何信息提供介质。

术语“调制的数据信号”是指具有一个或多个其特征集或以这样的方式以便对信号中的信息进行编码的信号。作为示例,而不仅限于,通信介质包括有线介质,如有线网络或者直接有线连接,以及无线介质,如声控、RF、红外和其他无线介质。上述任何几项的组合也应包括在计算机可读的介质的范围内。

结束语虽然本发明是以结构功能和/或方法操作所特有的语言描述的,可以理解,在所附的权利要求书中定义的本发明不一定仅限于描述的特定功能或操作。特定功能和操作可以作为实现权利要求所述的发明的示范形式来描述。

Claims (41)

1.在文件系统和一个或多个闪存介质之间形成接口的闪存控制器,包括:闪存抽象逻辑模块,该逻辑模块可以由文件系统调用,以管理闪存操作,而不考虑一个或多个闪存介质的类型如何;以及闪存介质逻辑模块,被配置为与不同类型的闪存介质进行交互;其特征在于,闪存抽象逻辑模块调用闪存介质逻辑模块以执行潜在地取决于闪存介质的类型以不同的方式执行的存储器操作。
2.根据权利要求1所述的闪存控制器,其特征在于,其中一个闪存操作包括执行与闪存介质关联的磨损调整操作。
3.根据权利要求1所述的闪存控制器,其特征在于,其中一个闪存操作包括维护闪存介质的数据完整性。
4.根据权利要求1所述的闪存控制器,其特征在于,其中一个闪存操作包括在发生电源故障之后处理与闪存介质关联的数据恢复。
5.根据权利要求1所述的闪存控制器,其特征在于,其中一个闪存操作包括映射与闪存介质的物理扇区关联的状态信息,以供文件系统使用。
6.根据权利要求1所述的闪存控制器,其特征在于,闪存介质逻辑模块被进一步配置为将从文件系统接收到的命令转换为物理扇区命令,以便发送到闪存介质。
7.根据权利要求1所述的闪存控制器,其特征在于,闪存介质逻辑模块是用户可编程的,以向闪存介质写入数据和从中读取和擦除数据。
8.根据权利要求1所述的闪存控制器,其特征在于,闪存介质逻辑模块被配置执行与闪存介质关联的错误代码纠正。
9.闪存控制器,包括:在文件系统和闪存介质之间插入的闪存抽象逻辑模块,被配置为:(a)将逻辑扇区状态从文件系统映射到闪存介质的物理扇区状态;以及(b)维护与操作闪存介质关联的存储器要求。
10.根据权利要求9所述的闪存控制器,其特征在于,进一步包括用户可编程的闪存介质逻辑模块,该逻辑模块被配置为向闪存介质写入数据和从中读取和擦除数据。
11.根据权利要求9所述的闪存控制器,进一步包括用户可编程的闪存介质逻辑模块,该逻辑模块被配置为从文件系统接收并转换与读取数据和将数据写入到闪存介质关联的特定操作命令。
12.根据权利要求9所述的闪存控制器,其特征在于,存储器要求包括管理与闪存介质关联的磨损调整操作。
13.根据权利要求9所述的闪存控制器,其特征在于,存储器要求包括维护闪存介质的数据完整性。
14.根据权利要求9所述的闪存控制器,其特征在于,存储器要求包括在发生电源故障之后处理与闪存介质关联的数据恢复。
15.根据权利要求9所述的闪存控制器,进一步包括闪存介质逻辑模块,该逻辑模块可由用户以编程方式配置为执行与闪存介质关联的错误代码纠正。
16.闪存控制器,包括:用户可编程的闪存介质逻辑模块,该逻辑模块被配置为向闪存介质写入数据和从中读取和擦除数据;以及在文件系统和闪存介质之间插入的闪存抽象逻辑模块,用于维护闪存介质的操作的通用要求。
17.根据权利要求16所述的闪存控制器,其特征在于,闪存抽象逻辑模块将与某些类型的闪存介质关联的特定命令直接传递到闪存介质逻辑模块,以便进行转换和执行。
18.根据权利要求16所述的闪存控制器,其特征在于,闪存抽象逻辑模块是闪存介质逻辑模块和文件系统之间的接口。
19.根据权利要求16所述的闪存控制器,其特征在于,通用要求包括维护闪存介质的数据完整性。
20.根据权利要求16所述的闪存控制器,其特征在于,通用要求包括管理与闪存介质关联的磨损调整操作。
21.根据权利要求16所述的闪存控制器,其特征在于,通用要求包括在发生电源故障之后处理恢复。
22.根据权利要求16所述的闪存控制器,其特征在于,闪存介质逻辑模块包括一组可编程的入口点,这些入口点可以由用户实现,以便与所选择的闪存介质的类型连接。
23.使用闪存介质来存储数据的处理设备,包括:一个文件系统,该系统被配置为控制该处理设备的数据存储;闪存介质逻辑模块,该逻辑模块被配置为基于物理扇区命令对闪存介质执行物理扇区操作,其特征在于,闪存介质逻辑模块包括一组可编程的入口点,这些入口点可以由用户实现,以便与所选择的闪存介质的类型连接;以及闪存抽象逻辑模块,被配置为维护运行闪存介质所必需的闪存要求。
24.根据权利要求23所述的处理设备,其特征在于,闪存抽象逻辑模块将与某些类型的闪存介质关联的物理逻辑命令直接传递到闪存介质逻辑模块,以便进行转换和执行。
25.根据权利要求23所述的处理设备,其特征在于,闪存抽象逻辑模块基于物理扇区地址成为闪存介质逻辑模块和文件系统之间的接口。
26.根据权利要求23所述的处理设备,其特征在于,闪存要求包括维护闪存介质的数据完整性。
27.根据权利要求23所述的处理设备,其特征在于,闪存要求包括管理与闪存介质关联的磨损调整操作。
28.根据权利要求23所述的处理设备,其特征在于,闪存要求包括在发生电源故障之后处理恢复。
29.根据权利要求23所述的处理设备,其特征在于,要求对于许多不同的闪存介质是通用的。
30.根据权利要求23所述的处理设备,其特征在于,闪存介质逻辑模块包括一组可编程的入口点,这些入口点可以由用户实现,以便执行与处理设备中使用的闪存介质的类型相关的错误代码纠正。
31.根据权利要求23所述的处理设备,其特征在于,闪存介质逻辑模块用于将从闪存抽象逻辑模块或文件系统接收到的逻辑命令转换为物理扇区命令。
32.根据权利要求23所述的处理设备,其特征在于,物理扇区操作包括读取、写入和执行与闪存介质关联的错误代码纠正命令。
33.在使用闪存介质来存储数据的处理设备中,用于驱动闪存介质的方法,包括:从文件系统读取和写入命令并将它们转换为物理扇区命令;在闪存抽象逻辑模块中管理与操作闪存介质关联的规则;发出一组可编程的入口点,这些入口点可以由用户可选地选择,以便与处理设备中使用的闪存介质的类型连接;以及将物理扇区命令从闪存介质逻辑模块直接发送到闪存介质。
34.根据权利要求33所述的方法,其特征在于,其中一个规则包括维护闪存介质的数据完整性。
35.根据权利要求33所述的方法,其特征在于,其中一个规则包括管理与闪存介质关联的磨损调整操作。
36.根据权利要求33所述的方法,其特征在于,其中一个规则包括在发生电源故障之后处理介质的恢复。
37.根据权利要求33所述的方法,进一步包括发出一组可编程的入口点,这些入口点可以由用户实现,以便执行与处理设备中使用的闪存介质的类型相关的错误代码纠正。
38.根据权利要求33所述的方法,进一步包括接收来自文件系统的读取和写入命令。
39.闪存控制器,包括一个模块,用于指示所述闪存控制器在从许多不同文件系统中选择的一个文件系统和从许多不同闪存介质中选择的一个闪存介质之间提供一个接口。
40.闪存控制器,包括下列模块,用于指示所述闪存控制器:在从许多不同文件系统中选择的一个文件系统和从许多不同闪存介质中选择的一个闪存介质之间提供一个接口;以及管理闪存抽象逻辑模块中的许多不同闪存介质通用的一组特征。
41.闪存控制器,包括下列模块,用于指示所述闪存控制器:在从许多不同文件系统中选择的一个文件系统和从许多不同闪存介质中选择的一个闪存介质之间提供一个接口;管理闪存抽象逻辑模块中的许多不同闪存介质通用的一组特征;提供可编程的入口点,这些入口点可以由用户可选地选择,以便与所选择的闪存介质的类型连接。
CN 03106425 2002-02-27 2003-02-25 闪存控制器以及使用闪存介质来存储数据的处理设备 CN1303498C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10087672 US7533214B2 (en) 2002-02-27 2002-02-27 Open architecture flash driver

Publications (2)

Publication Number Publication Date
CN1441338A true CN1441338A (zh) 2003-09-10
CN1303498C true CN1303498C (zh) 2007-03-07

Family

ID=27753947

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 03106425 CN1303498C (zh) 2002-02-27 2003-02-25 闪存控制器以及使用闪存介质来存储数据的处理设备

Country Status (4)

Country Link
US (7) US7533214B2 (zh)
JP (1) JP4658455B2 (zh)
CN (1) CN1303498C (zh)
EP (1) EP1351126B1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101452745B (zh) 2007-11-30 2011-08-31 无锡华润矽科微电子有限公司 一种编程器及其编程方法
CN103309751A (zh) * 2012-03-06 2013-09-18 三星电子株式会社 提供文件系统功能的终端的设备和方法

Families Citing this family (213)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9925227D0 (en) * 1999-10-25 1999-12-22 Internet Limited Data storage retrieval and access system
US7440980B2 (en) * 2001-04-03 2008-10-21 Qnx Software Systems Gmbh & Co. Kg Computer file management system
US7047257B2 (en) * 2001-04-03 2006-05-16 Qnx Software Systems Computer file management system
US7433900B2 (en) * 2001-04-03 2008-10-07 Qnx Software Systems Gmbh & Co. Kg Custom filesystem having file mappings to files of a real filesystem
US6901499B2 (en) * 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7689626B2 (en) * 2002-05-31 2010-03-30 Microsoft Corporation System and method for locating log records in multiplexed transactional logs
US6988163B2 (en) * 2002-10-21 2006-01-17 Microsoft Corporation Executing binary images from non-linear storage systems
EP1475704A2 (en) * 2003-05-08 2004-11-10 Matsushita Electric Industrial Co., Ltd. Information processing apparatus
US20080043366A1 (en) 2003-06-26 2008-02-21 Spectra Logic Corporation Tape cartridge auxiliary memeory based library
KR100522724B1 (ko) 2003-10-24 2005-10-18 주식회사 레인콤 이동식 멀티미디어 플레이어의 구동 시스템과 구동 방법,이동식 멀티미디어 플레이어 및 기록 매체
US7188225B1 (en) * 2003-12-05 2007-03-06 Applied Micro Circuits Corporation Storage system with disk drive power-on-reset detection
JP4534498B2 (ja) * 2004-01-28 2010-09-01 ソニー株式会社 半導体装置およびその起動処理方法
DE602004003583T2 (de) * 2004-10-04 2007-11-22 Research In Motion Ltd., Waterloo System und Verfahren zum Datensichern bei Stromausfall
JP2006107326A (ja) 2004-10-08 2006-04-20 Oki Electric Ind Co Ltd 半導体集積回路
US7480761B2 (en) * 2005-01-10 2009-01-20 Microsoft Corporation System and methods for an overlay disk and cache using portable flash memory
JP4681900B2 (ja) * 2005-02-04 2011-05-11 富士通株式会社 コンピュータの停止状況監視方法、情報処理装置及びプログラム
KR100684942B1 (ko) * 2005-02-07 2007-02-20 삼성전자주식회사 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템
CA2597551A1 (en) * 2005-02-11 2006-08-17 M-Systems Flash Disk Pioneers Ltd. Nand flash memory system architecture
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US8244958B2 (en) * 2005-05-09 2012-08-14 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US7512838B2 (en) * 2005-05-10 2009-03-31 Spectra Logic Corporation Data integrity analysis for a data storage system
JP4215746B2 (ja) * 2005-05-20 2009-01-28 Necインフロンティア株式会社 情報処理装置および寿命監視方法
US7644309B2 (en) * 2005-05-20 2010-01-05 Nokia Corporation Recovering a hardware module from a malfunction
US7797479B2 (en) * 2005-06-30 2010-09-14 Intel Corporation Technique to write to a non-volatile memory
US7873683B2 (en) 2005-07-01 2011-01-18 Qnx Software Systems Gmbh & Co. Kg File system having transaction record coalescing
US7970803B2 (en) * 2005-07-01 2011-06-28 Qnx Software Systems Gmbh & Co. Kg Optimized startup verification of file system integrity
US8959125B2 (en) 2005-07-01 2015-02-17 226008 Ontario Inc. File system having inverted hierarchical structure
US20070005874A1 (en) 2005-07-01 2007-01-04 Dan Dodge File system storing transaction records in flash-like media
US7809777B2 (en) * 2005-07-01 2010-10-05 Qnx Software Systems Gmbh & Co. Kg File system having deferred verification of data integrity
KR100739722B1 (ko) * 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US8429326B2 (en) 2005-09-12 2013-04-23 Mediatek Inc. Method and system for NAND-flash identification without reading device ID table
US20070089023A1 (en) * 2005-09-30 2007-04-19 Sigmatel, Inc. System and method for system resource access
US9047344B2 (en) * 2005-10-17 2015-06-02 International Business Machines Corporation Guaranteeing data and metadata referential integrity in content management archival solutions
WO2007056713A3 (en) * 2005-11-04 2007-11-22 Univ Columbia An optical network
WO2007072313A3 (en) * 2005-12-22 2008-01-24 Nxp Bv Memory with block-erasable locations and a linked chain of pointers to locate blocks with pointer information
US7747812B2 (en) * 2005-12-22 2010-06-29 Pitney Bowes Inc. Method for manipulating state machine storage in a small memory space
KR100755702B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작방법
US20070156974A1 (en) * 2006-01-03 2007-07-05 Haynes John E Jr Managing internet small computer systems interface communications
US7992128B2 (en) * 2006-01-27 2011-08-02 Sap Ag Computer software adaptation method and system
KR100781520B1 (ko) * 2006-02-24 2007-12-03 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 이를위한 맵핑 정보 복구 방법
US7552148B2 (en) * 2006-02-28 2009-06-23 Microsoft Corporation Shutdown recovery
KR100622113B1 (ko) * 2006-03-03 2006-09-01 주식회사 퓨전소프트 데이터베이스 시스템을 위한 플래쉬 메모리 저장 시스템 및그 방법
JP2007237693A (ja) * 2006-03-10 2007-09-20 Oki Data Corp 画像処理装置
US7779426B2 (en) * 2006-03-30 2010-08-17 Microsoft Corporation Describing and querying discrete regions of flash storage
FI20060427A (fi) * 2006-05-03 2007-11-04 Tellabs Oy Menetelmä ja laitteisto peräkkäistiedoston käsittelemiseksi
US7716411B2 (en) 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
FI120220B (fi) * 2006-06-08 2009-07-31 Tellabs Oy Menetelmä ja järjestely transaktioiden käsittelemiseksi flash-tyyppisessä muistivälineessä
US8307148B2 (en) * 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7650458B2 (en) * 2006-06-23 2010-01-19 Microsoft Corporation Flash memory driver
US7844878B2 (en) 2006-08-09 2010-11-30 Microsoft Corporation Dynamic electronic correction code feedback to extend memory device lifetime
US7908276B2 (en) 2006-08-25 2011-03-15 Qnx Software Systems Gmbh & Co. Kg Filesystem having a filename cache
US8566503B2 (en) * 2006-08-25 2013-10-22 Qnx Software Systems Limited Multimedia filesystem having unified representation of content on diverse multimedia devices
US20080059510A1 (en) * 2006-08-31 2008-03-06 Daniel Cardamore Multimedia system framework having layer consolidating access to multiple media devices
US20080077590A1 (en) * 2006-09-22 2008-03-27 Honeywell International Inc. Efficient journaling and recovery mechanism for embedded flash file systems
KR100855467B1 (ko) 2006-09-27 2008-09-01 삼성전자주식회사 이종 셀 타입을 지원하는 비휘발성 메모리를 위한 맵핑장치 및 방법
US7477535B2 (en) * 2006-10-05 2009-01-13 Nokia Corporation 3D chip arrangement including memory manager
US20080086603A1 (en) * 2006-10-05 2008-04-10 Vesa Lahtinen Memory management method and system
JP2008123473A (ja) * 2006-10-20 2008-05-29 Toshiba Corp 記憶装置及びその制御方法
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
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
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
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
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US8074011B2 (en) 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US8296337B2 (en) 2006-12-06 2012-10-23 Fusion-Io, Inc. Apparatus, system, and method for managing data from a requesting device with an empty data token directive
KR101442145B1 (ko) 2007-01-11 2014-09-23 삼성전자 주식회사 데이터 관리 장치 및 방법
US7966355B2 (en) * 2007-02-13 2011-06-21 Modu Ltd. Interface for extending functionality of memory cards
JP4372168B2 (ja) * 2007-02-19 2009-11-25 株式会社東芝 半導体メモリ情報蓄積装置とその蓄積データ処理方法
WO2008106686A1 (en) * 2007-03-01 2008-09-04 Douglas Dumitru Fast block device and methodology
US20080228992A1 (en) * 2007-03-01 2008-09-18 Douglas Dumitru System, method and apparatus for accelerating fast block devices
US20080250194A1 (en) * 2007-04-03 2008-10-09 Ming-Sheng Chen Two-dimensional writing data method for flash memory and corresponding storage device
US7870327B1 (en) * 2007-04-25 2011-01-11 Apple Inc. Controlling memory operations using a driver and flash memory type tables
US7840837B2 (en) * 2007-04-27 2010-11-23 Netapp, Inc. System and method for protecting memory during system initialization
US20080282024A1 (en) * 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
US7882301B2 (en) * 2007-05-09 2011-02-01 Stmicroelectronics S.R.L. Wear leveling in storage devices based on flash memories and related circuit, system, and method
US8041883B2 (en) * 2007-05-09 2011-10-18 Stmicroelectronics S.R.L. Restoring storage devices based on flash memories and related circuit, system, and method
US7991942B2 (en) 2007-05-09 2011-08-02 Stmicroelectronics S.R.L. Memory block compaction method, circuit, and system in storage devices based on flash memories
US7836331B1 (en) 2007-05-15 2010-11-16 Netapp, Inc. System and method for protecting the contents of memory during error conditions
US7882337B2 (en) * 2007-05-19 2011-02-01 International Business Machines Corporation Method and system for efficient tentative tracing of software in multiprocessors
US7676704B2 (en) 2007-06-29 2010-03-09 Symantec Corporation Resource management for scalable file system recovery
WO2009025683A1 (en) * 2007-08-21 2009-02-26 Thomson Licensing Method and system for repairing damaged hard disk file systems
US8214641B2 (en) * 2007-08-23 2012-07-03 Microsoft Corporation File access in multi-protocol environment
US7719890B2 (en) * 2007-09-12 2010-05-18 Sandisk Corporation Data protection for write abort
KR101345386B1 (ko) * 2007-09-19 2013-12-24 삼성전자주식회사 멀티미디어 데이터 편집 방법 및 장치
US7805632B1 (en) * 2007-09-24 2010-09-28 Net App, Inc. Storage system and method for rapidly recovering from a system failure
EP2043105A1 (de) 2007-09-26 2009-04-01 Siemens Aktiengesellschaft Kopierverfahren für NAND-Flash-Speicher
KR20090042039A (ko) * 2007-10-25 2009-04-29 삼성전자주식회사 불휘발성 메모리 장치의 데이터 관리 방법
US8533384B2 (en) 2007-12-27 2013-09-10 Sandisk Enterprise Ip Llc Flash memory controller garbage collection operations performed independently in multiple flash memory groups
GB0725327D0 (en) * 2007-12-28 2008-02-06 Symbian Software Ltd File storage method and system
CN101551779B (zh) * 2008-04-02 2014-11-05 深圳市朗科科技股份有限公司 计算机及数据存储方法
US9477587B2 (en) * 2008-04-11 2016-10-25 Micron Technology, Inc. Method and apparatus for a volume management system in a non-volatile memory device
US20090271563A1 (en) * 2008-04-28 2009-10-29 Microsoft Corporation Flash memory transactioning
US7979626B2 (en) * 2008-05-13 2011-07-12 Microsoft Corporation Flash recovery employing transaction log
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
JP5029513B2 (ja) * 2008-06-30 2012-09-19 ソニー株式会社 情報処理装置、情報処理装置の制御方法、およびプログラム
JP2010020586A (ja) * 2008-07-11 2010-01-28 Nec Electronics Corp データ処理装置
US8055846B2 (en) 2008-08-15 2011-11-08 International Business Machines Corporation Data vaulting in emergency shutdown
US9542431B2 (en) * 2008-10-24 2017-01-10 Microsoft Technology Licensing, Llc Cyclic commit transaction protocol
KR101555022B1 (ko) * 2008-12-02 2015-09-23 삼성전자주식회사 메모리 장치, 그것을 포함한 메모리 시스템 및 그것의 맵핑정보 복원 방법
JP5317690B2 (ja) * 2008-12-27 2013-10-16 株式会社東芝 メモリシステム
US8266370B2 (en) * 2009-01-13 2012-09-11 Innostor Technology Corporation Method for processing data of flash memory by separating levels and flash memory device thereof
CN101789259B (zh) 2009-01-22 2013-05-08 银灿科技股份有限公司 应用于快闪存储器的阶层化分层处理数据的方法及其装置
US8090899B1 (en) 2009-03-04 2012-01-03 Western Digital Technologies, Inc. Solid state drive power safe wear-leveling
US8452734B2 (en) * 2009-04-30 2013-05-28 Texas Instruments Incorporated FAT file in reserved cluster with ready entry state
US20100321811A1 (en) * 2009-06-19 2010-12-23 Spectra Logic Corporation Drive life cycle management
WO2011031796A3 (en) 2009-09-08 2011-06-30 Fusion-Io, Inc. Apparatus, system, and method for caching data on a solid-state storage device
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
JP5518197B2 (ja) 2009-09-09 2014-06-11 フュージョン−アイオー・インコーポレーテッド ストレージを割り当てるための装置、システム、および方法
WO2011031899A3 (en) 2009-09-09 2011-06-16 Fusion-Io, Inc. Apparatus, system, and method for power reduction in a storage device
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
FR2950464B1 (fr) * 2009-09-21 2012-03-16 St Microelectronics Rousset Procede de nivellement de l'usure dans une memoire non volatile
EP2302637B1 (fr) 2009-09-21 2014-09-03 STMicroelectronics (Rousset) SAS Méthode d'écriture de données dans une mémoire non volatile, protegée contre l'arrachement
US8171257B2 (en) * 2009-09-25 2012-05-01 International Business Machines Corporation Determining an end of valid log in a log of write records using a next pointer and a far ahead pointer
US8990476B2 (en) * 2009-10-01 2015-03-24 Micron Technology, Inc. Power interrupt management
US8271719B2 (en) * 2009-10-29 2012-09-18 Freescale Semiconductor, Inc. Non-volatile memory controller device and method therefor
KR101043238B1 (ko) * 2009-11-25 2011-06-30 주식회사 바우압텍 고전압용 정전기 방전 보호 소자
US8886870B2 (en) * 2010-05-25 2014-11-11 Marvell World Trade Ltd. Memory access table saving and restoring system and methods
US8959284B1 (en) 2010-06-28 2015-02-17 Western Digital Technologies, Inc. Disk drive steering write data to write cache based on workload
US9268499B1 (en) 2010-08-13 2016-02-23 Western Digital Technologies, Inc. Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory
US9058280B1 (en) 2010-08-13 2015-06-16 Western Digital Technologies, Inc. Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
US8782334B1 (en) 2010-09-10 2014-07-15 Western Digital Technologies, Inc. Hybrid drive copying disk cache to non-volatile semiconductor memory
US8527693B2 (en) 2010-12-13 2013-09-03 Fusion IO, Inc. Apparatus, system, and method for auto-commit memory
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
WO2012100087A3 (en) 2011-01-19 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for managing out-of-service conditions
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
WO2012116369A3 (en) 2011-02-25 2013-03-14 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
WO2012129191A3 (en) 2011-03-18 2012-12-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US20120246384A1 (en) * 2011-03-21 2012-09-27 Winbond Electronics Corp. Flash memory and flash memory accessing method
WO2012143944A3 (en) * 2011-04-18 2013-01-03 Ineda Systems Pvt. Ltd Multi-host nand flash controller
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
CN103164345B (zh) * 2011-12-08 2016-04-27 光宝科技股份有限公司 固态存储装置遭遇断电后的数据存储方法
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9141308B2 (en) 2011-12-30 2015-09-22 Sandisk Technologies Inc. Controller and method for using a transaction flag for page protection
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
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
CN102662878B (zh) * 2012-02-27 2015-01-21 深圳市硅格半导体有限公司 存储设备软件层的识别和驱动方法及装置
US9075758B2 (en) 2012-03-19 2015-07-07 Samsung Electronics Co., Ltd. Removable storage device with transactional operation support and system including same
US9135182B2 (en) * 2012-06-01 2015-09-15 Semiconductor Energy Laboratory Co., Ltd. Central processing unit and driving method thereof
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US20140068183A1 (en) 2012-08-31 2014-03-06 Fusion-Io, Inc. Systems, methods, and interfaces for adaptive persistence
US8959281B1 (en) 2012-11-09 2015-02-17 Western Digital Technologies, Inc. Data management for a storage device
US8954694B2 (en) 2012-11-15 2015-02-10 Western Digital Technologies, Inc. Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive
US9047172B2 (en) 2012-11-29 2015-06-02 Intel Corporation Adaptive power control of memory map storage devices
CN103049284A (zh) * 2012-12-06 2013-04-17 深圳市金立通信设备有限公司 一种电子装置、电子终端及电子终端存储卡的保护方法
US9690642B2 (en) * 2012-12-18 2017-06-27 Western Digital Technologies, Inc. Salvaging event trace information in power loss interruption scenarios
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
CN103092727B (zh) * 2013-01-18 2015-08-26 大唐移动通信设备有限公司 Flash存储介质上的数据纠错方法和装置
US9478271B2 (en) 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9218279B2 (en) 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US20140297688A1 (en) * 2013-04-02 2014-10-02 Western Digital Technologies, Inc. Methods and systems for privileged execution support for file system commands on a storage device
US20140310499A1 (en) * 2013-04-16 2014-10-16 Fusion-Io, Inc. Systems, methods and interfaces for data virtualization
US9170938B1 (en) 2013-05-17 2015-10-27 Western Digital Technologies, Inc. Method and system for atomically writing scattered information in a solid state storage device
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9141176B1 (en) 2013-07-29 2015-09-22 Western Digital Technologies, Inc. Power management for data storage device
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
KR20150018682A (ko) 2013-08-08 2015-02-24 삼성전자주식회사 스토리지 시스템 및 그것의 쓰기 방법
US9361221B1 (en) 2013-08-26 2016-06-07 Sandisk Technologies Inc. Write amplification reduction through reliable writes during garbage collection
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9070379B2 (en) 2013-08-28 2015-06-30 Western Digital Technologies, Inc. Data migration for data storage device
WO2015047284A1 (en) * 2013-09-27 2015-04-02 Empire Technology Development Llc Flexible storage block for a solid state drive (ssd)-based file system
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US8917471B1 (en) 2013-10-29 2014-12-23 Western Digital Technologies, Inc. Power management for data storage device
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9639646B2 (en) * 2014-07-22 2017-05-02 Xilinx, Inc. System-on-chip intellectual property block discovery
US20160070486A1 (en) * 2014-09-04 2016-03-10 HGST Netherlands B.V. Debug data saving in host memory on pcie solid state drive
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US9811456B2 (en) * 2014-11-26 2017-11-07 Advanced Micro Devices, Inc. Reliable wear-leveling for non-volatile memory and method therefor
KR20160111222A (ko) * 2015-03-16 2016-09-26 에스케이하이닉스 주식회사 반도체 메모리 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템, 그것을 포함하는 컴퓨팅 시스템
WO2017048228A1 (en) * 2015-09-14 2017-03-23 Hewlett Packard Enterprise Development Lp Memory location remapping and wear-levelling
US20170221582A1 (en) 2016-01-28 2017-08-03 International Business Machines Corporation Sorting non-volatile memories

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000231483A (ja) * 1999-02-08 2000-08-22 Digital Electronics Corp 半導体記録媒体を有するコンピュータ

Family Cites Families (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4635254A (en) 1984-12-13 1987-01-06 United Technologies Corporation Coherent interface with wraparound receive memory
JPH0682336B2 (ja) * 1986-04-28 1994-10-19 日本電気株式会社 ブロック閉塞を用いたロールバックリカバリシステム
US5123104A (en) * 1988-04-08 1992-06-16 International Business Machines Corporation Method and apparatus for concurrent modification of an index tree in a transaction processing system utilizing selective indication of structural modification operations
US5124987A (en) 1990-04-16 1992-06-23 Storage Technology Corporation Logical track write scheduling system for a parallel disk drive array data storage subsystem
WO1991016775A1 (en) * 1990-04-25 1991-10-31 Telxon Corporation Communication system with adaptive media access control
US5276344A (en) * 1990-04-27 1994-01-04 Mitsubishi Denki Kabushiki Kaisha Field effect transistor having impurity regions of different depths and manufacturing method thereof
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
EP0506236A1 (en) * 1991-03-13 1992-09-30 International Business Machines Corporation Address translation mechanism
US5663901A (en) * 1991-04-11 1997-09-02 Sandisk Corporation Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems
US6347051B2 (en) * 1991-11-26 2002-02-12 Hitachi, Ltd. Storage device employing a flash memory
US6256642B1 (en) * 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5530626A (en) * 1992-01-31 1996-06-25 Leonard Bloom Athletic shoe and articles of clothing with replaceable unitary assembly for generating and broadcasting an audible signal
JPH05233426A (ja) * 1992-02-20 1993-09-10 Fujitsu Ltd フラッシュ・メモリ使用方法
US5448719A (en) 1992-06-05 1995-09-05 Compaq Computer Corp. Method and apparatus for maintaining and retrieving live data in a posted write cache in case of power failure
JP3328321B2 (ja) * 1992-06-22 2002-09-24 株式会社日立製作所 半導体記憶装置
US5822781A (en) * 1992-10-30 1998-10-13 Intel Corporation Sector-based storage device emulator having variable-sized sector
JP2856621B2 (ja) * 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5415350A (en) * 1993-03-06 1995-05-16 Goldstar Co., Ltd. Water spraying device for tableware washer
JP3078946B2 (ja) * 1993-03-11 2000-08-21 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 一括消去型不揮発性メモリの管理方法及び半導体ディスク装置
KR970008188B1 (ko) * 1993-04-08 1997-05-21 가나이 쯔또무 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5680618A (en) * 1993-05-26 1997-10-21 Borland International, Inc. Driver query and substitution for format independent native data access
US5509134A (en) * 1993-06-30 1996-04-16 Intel Corporation Method and apparatus for execution of operations in a flash memory array
US5682497A (en) * 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5696917A (en) * 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US5627533A (en) 1994-08-05 1997-05-06 Hayes Microcomputer Products, Inc. Adjusting encoding table size and memory allocation for data compression in response to input data
US5634060A (en) * 1994-08-09 1997-05-27 Unisys Corporation Method and apparatus for high-speed efficient bi-directional communication between multiple processor over a common bus
JP3332619B2 (ja) * 1994-11-29 2002-10-07 キヤノン株式会社 復号装置およびその方法
US5812775A (en) 1995-07-12 1998-09-22 3Com Corporation Method and apparatus for internetworking buffer management
US5870757A (en) * 1995-09-11 1999-02-09 Sun Microsystems, Inc. Single transaction technique for a journaling file system of a computer operating system
JP3604466B2 (ja) 1995-09-13 2004-12-22 株式会社ルネサステクノロジ フラッシュディスクカード
GB9519670D0 (en) 1995-09-27 1995-11-29 Memory Corp Plc Algorithm for an improved flash memory storage system
US5933847A (en) * 1995-09-28 1999-08-03 Canon Kabushiki Kaisha Selecting erase method based on type of power supply for flash EEPROM
US6014724A (en) * 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US5867641A (en) * 1995-10-27 1999-02-02 Scm Microsystems (U.S.) Inc. Flash translation layer cleanup system and method
US5987478A (en) * 1995-10-31 1999-11-16 Intel Corporation Virtual small block file manager for flash memory array
US5799305A (en) * 1995-11-02 1998-08-25 Informix Software, Inc. Method of commitment in a distributed database transaction
US5742818A (en) 1995-12-15 1998-04-21 Microsoft Corporation Method and system of converting data from a source file system to a target file system
US5799168A (en) * 1996-01-05 1998-08-25 M-Systems Flash Disk Pioneers Ltd. Standardized flash controller
GB9606928D0 (en) 1996-04-02 1996-06-05 Memory Corp Plc Memory devices
US5696961A (en) * 1996-05-22 1997-12-09 Wang Laboratories, Inc. Multiple database access server for application programs
US5832513A (en) * 1996-06-04 1998-11-03 Symantec Corporation Detecting significant file system alterations during execution of a storage media software utility
JP3976839B2 (ja) * 1996-07-09 2007-09-19 株式会社ルネサステクノロジ 不揮発性メモリシステムおよび不揮発性半導体メモリ
KR100260028B1 (ko) * 1996-08-13 2000-06-15 윤종용 화일시스템의 정보 복구방법
GB2317721B (en) * 1996-09-30 2001-09-12 Nokia Mobile Phones Ltd Memory device
US6047280A (en) * 1996-10-25 2000-04-04 Navigation Technologies Corporation Interface layer for navigation system
US5956473A (en) * 1996-11-25 1999-09-21 Macronix International Co., Ltd. Method and system for managing a flash memory mass storage system
US5745418A (en) * 1996-11-25 1998-04-28 Macronix International Co., Ltd. Flash memory mass storage system
US5875478A (en) * 1996-12-03 1999-02-23 Emc Corporation Computer backup using a file system, network, disk, tape and remote archiving repository media system
US6279069B1 (en) * 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US6035379A (en) * 1997-01-09 2000-03-07 Microsoft Corporation Transaction processing for user data employing both logging and shadow copying
US5887198A (en) * 1997-04-07 1999-03-23 The United States Of America As Represented By The Secretary Of The Navy Programmable stand-alone drive apparatus for interfacing a host computer with PCMCIA memory cards having multiple formats
US5974546A (en) * 1997-05-08 1999-10-26 Micron Electronics, Inc. Apparatus and method to determine cause of failed boot sequence to improve likelihood of successful subsequent boot attempt
JPH117505A (ja) * 1997-06-17 1999-01-12 Fujitsu Ltd カード型記憶媒体
GB9713094D0 (en) * 1997-06-21 1997-08-27 Philips Electronics Nv Optical disc drive
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US6233584B1 (en) * 1997-09-09 2001-05-15 International Business Machines Corporation Technique for providing a universal query for multiple different databases
US5967425A (en) * 1997-09-22 1999-10-19 Wang; Shoei-Yuan Air blast apparatus for yarn drawing machines
US5960434A (en) * 1997-09-26 1999-09-28 Silicon Graphics, Inc. System method and computer program product for dynamically sizing hash tables
US5991778A (en) * 1997-09-30 1999-11-23 Stratfor Systems, Inc. Method and apparatus for real-time secure file deletion
US6070174A (en) * 1997-09-30 2000-05-30 Infraworks Corporation Method and apparatus for real-time secure file deletion
US6061788A (en) * 1997-10-02 2000-05-09 Siemens Information And Communication Networks, Inc. System and method for intelligent and reliable booting
US5937425A (en) * 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
JP3503448B2 (ja) * 1997-11-04 2004-03-08 日本ビクター株式会社 フラッシュ型メモリ及びその管理装置
US6009520A (en) 1997-12-10 1999-12-28 Phoenix Technologies, Ltd Method and apparatus standardizing use of non-volatile memory within a BIOS-ROM
US6148349A (en) * 1998-02-06 2000-11-14 Ncr Corporation Dynamic and consistent naming of fabric attached storage by a file system on a compute node storing information mapping API system I/O calls for data objects with a globally unique identification
US6295577B1 (en) 1998-02-24 2001-09-25 Seagate Technology Llc Disc storage system having a non-volatile cache to store write data in the event of a power failure
US6067628A (en) * 1998-04-09 2000-05-23 Intel Corporation Method to monitor universal serial bus hub overcurrent
US6226728B1 (en) * 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
US6223284B1 (en) * 1998-04-30 2001-04-24 Compaq Computer Corporation Method and apparatus for remote ROM flashing and security management for a computer system
US6009620A (en) * 1998-07-15 2000-01-04 International Business Machines Corporation Method of making a printed circuit board having filled holes
JP3519954B2 (ja) * 1998-07-30 2004-04-19 富士通株式会社 チップイネーブル信号生成回路及びメモリ装置
US6230285B1 (en) * 1998-09-08 2001-05-08 Symantec Corporation Boot failure recovery
US6336158B1 (en) * 1998-10-30 2002-01-01 Intel Corporation Memory based I/O decode arrangement, and system and method using the same
JP3311305B2 (ja) * 1998-11-19 2002-08-05 沖電気工業株式会社 同期式バースト不揮発性半導体記憶装置
US6421792B1 (en) 1998-12-03 2002-07-16 International Business Machines Corporation Data processing system and method for automatic recovery from an unsuccessful boot
GB9903490D0 (en) * 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6427186B1 (en) 1999-03-30 2002-07-30 Frank (Fong-Long) Lin Memory, interface system and method for mapping logical block numbers to physical sector numbers in a flash memory, using a master index table and a table of physical sector numbers
JP3389186B2 (ja) * 1999-04-27 2003-03-24 松下電器産業株式会社 半導体メモリカード及び読み出し装置
EP1058269B1 (en) * 1999-05-31 2006-03-29 SGS-THOMSON MICROELECTRONICS S.r.l. Synchronous multilevel non-volatile memory and related reading method
US6493807B1 (en) * 1999-07-01 2002-12-10 Intel Corporation Updating flash blocks
JP2001033846A (ja) 1999-07-26 2001-02-09 Nidec Copal Corp カメラ用シャッタ
JP2001101071A (ja) * 1999-09-29 2001-04-13 Victor Co Of Japan Ltd フラッシュ型メモリを用いたデータ記憶装置及びフラッシュ型メモリのデータ管理方法
US6377500B1 (en) * 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
JP2001142774A (ja) 1999-11-11 2001-05-25 Toshiba Corp メモリカード及び同カードに適用されるアドレス変換方法
US6839623B1 (en) * 2000-02-16 2005-01-04 Telefonaktiebolaget Lm Ericsson (Publ) Positioning applications for an electronic reading device
US6601073B1 (en) * 2000-03-22 2003-07-29 Navigation Technologies Corp. Deductive database architecture for geographic data
US6633956B1 (en) * 2000-04-14 2003-10-14 Mitsubishi Denki Kabushiki Kaisha Memory card with task registers storing physical addresses
JP2001325127A (ja) * 2000-05-15 2001-11-22 Sony Corp アクセス方法、記録又は再生装置
JP2001338468A (ja) * 2000-05-26 2001-12-07 Hitachi Ltd 記憶装置の制御方法および記憶装置
JP2001356998A (ja) * 2000-06-14 2001-12-26 Denso Corp デバイスドライバの作成方法
US6438638B1 (en) * 2000-07-06 2002-08-20 Onspec Electronic, Inc. Flashtoaster for reading several types of flash-memory cards with or without a PC
US6510488B2 (en) * 2001-02-05 2003-01-21 M-Systems Flash Disk Pioneers Ltd. Method for fast wake-up of a flash memory system
US6741603B2 (en) 2001-07-09 2004-05-25 Overture Networks, Inc. Use of a circular buffer to assure in-order delivery of packets
JP2003036204A (ja) 2001-07-23 2003-02-07 Matsushita Electric Ind Co Ltd フラッシュ型メモリの更新方法
GB0123415D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US6621746B1 (en) * 2002-02-27 2003-09-16 Microsoft Corporation Monitoring entropic conditions of a flash memory device as an indicator for invoking erasure operations
US6901499B2 (en) * 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US20050036387A1 (en) * 2002-04-24 2005-02-17 Seal Brian K. Method of using flash memory for storing metering data
US7181611B2 (en) * 2002-10-28 2007-02-20 Sandisk Corporation Power management block for use in a non-volatile memory system
US7174432B2 (en) 2003-08-19 2007-02-06 Nvidia Corporation Asynchronous, independent and multiple process shared memory system in an adaptive computing architecture
US7480760B2 (en) * 2003-12-17 2009-01-20 Wegener Communications, Inc. Rotational use of memory to minimize write cycles
US8032787B2 (en) 2004-09-02 2011-10-04 Intel Corporation Volatile storage based power loss recovery mechanism
US7716464B2 (en) 2005-06-23 2010-05-11 Intel Corporation Method to have fault resilient booting

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000231483A (ja) * 1999-02-08 2000-08-22 Digital Electronics Corp 半導体記録媒体を有するコンピュータ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101452745B (zh) 2007-11-30 2011-08-31 无锡华润矽科微电子有限公司 一种编程器及其编程方法
CN103309751A (zh) * 2012-03-06 2013-09-18 三星电子株式会社 提供文件系统功能的终端的设备和方法

Also Published As

Publication number Publication date Type
EP1351126A3 (en) 2003-10-22 application
JP2003271444A (ja) 2003-09-26 application
US7340647B2 (en) 2008-03-04 grant
US20060168474A1 (en) 2006-07-27 application
US7533214B2 (en) 2009-05-12 grant
US20050216653A1 (en) 2005-09-29 application
US20040078666A1 (en) 2004-04-22 application
US7350105B2 (en) 2008-03-25 grant
US20030163632A1 (en) 2003-08-28 application
US7076599B2 (en) 2006-07-11 grant
US7139883B2 (en) 2006-11-21 grant
JP4658455B2 (ja) 2011-03-23 grant
US7620961B2 (en) 2009-11-17 grant
US20030163594A1 (en) 2003-08-28 application
EP1351126B1 (en) 2017-05-03 grant
CN1441338A (zh) 2003-09-10 application
US20030163635A1 (en) 2003-08-28 application
US20060179211A1 (en) 2006-08-10 application
US7178061B2 (en) 2007-02-13 grant
EP1351126A2 (en) 2003-10-08 application

Similar Documents

Publication Publication Date Title
US5717886A (en) Semiconductor disk device and memory management method
US5956745A (en) System and method for automatically resizing a disk drive volume
US6327639B1 (en) Method and apparatus for storing location identification information within non-volatile memory devices
US5745418A (en) Flash memory mass storage system
US6243789B1 (en) Method and apparatus for executing a program stored in nonvolatile memory
US7295479B2 (en) Apparatus and method for managing bad blocks in a flash memory
US5953737A (en) Method and apparatus for performing erase operations transparent to a solid state storage system
US7340581B2 (en) Method of writing data to non-volatile memory
US7761655B2 (en) Storage system and method of preventing deterioration of write performance in storage system
US20060020745A1 (en) Fat analysis for optimized sequential cluster management
US20050138271A1 (en) Rotational use of memory to minimize write cycles
US7426623B2 (en) System and method for configuring flash memory partitions as super-units
US20050144363A1 (en) Data boundary management
US20050144367A1 (en) Data run programming
US20100325351A1 (en) Memory system having persistent garbage collection
US7254668B1 (en) Method and apparatus for grouping pages within a block
US20100023672A1 (en) Method And System For Virtual Fast Access Non-Volatile RAM
US20070005894A1 (en) Computer system having logically ordered cache management
US20110060887A1 (en) Apparatus, system, and method for allocating storage
US9229854B1 (en) Multi-array operation support and related devices, systems and software
US20060184720A1 (en) Direct data file storage in flash memories
US20070186065A1 (en) Data storage apparatus with block reclaim for nonvolatile buffer
US20110296133A1 (en) Apparatus, system, and method for conditional and atomic storage operations
US20060184719A1 (en) Direct data file storage implementation techniques in flash memories
US20050172068A1 (en) Memory card and semiconductor device

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination
C14 Grant of patent or utility model
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150507

C41 Transfer of patent application or patent right or utility model