CN101595461A - 延长闪存驱动器使用寿命 - Google Patents

延长闪存驱动器使用寿命 Download PDF

Info

Publication number
CN101595461A
CN101595461A CNA2008800035709A CN200880003570A CN101595461A CN 101595461 A CN101595461 A CN 101595461A CN A2008800035709 A CNA2008800035709 A CN A2008800035709A CN 200880003570 A CN200880003570 A CN 200880003570A CN 101595461 A CN101595461 A CN 101595461A
Authority
CN
China
Prior art keywords
flash drive
request
data
compression
management
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
CNA2008800035709A
Other languages
English (en)
Other versions
CN101595461B (zh
Inventor
D·多齐亚
M·卡尔基
M·R·福汀
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft 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
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101595461A publication Critical patent/CN101595461A/zh
Application granted granted Critical
Publication of CN101595461B publication Critical patent/CN101595461B/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/463File
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC 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 or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC 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 or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC 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 or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for 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]

Abstract

在用于过滤闪存驱动器的输入/输出操作的计算机实现的方法中,接收定向到闪存驱动器的输入/输出请求。确定该输入/输出请求是否与大容量写操作相关联。如果该输入/输出请求与大容量写操作相关联,则选择要执行的闪存驱动器输入/输出管理动作。如果该输入/输出请求不与大容量写操作相关联,则该该输入/输出请求被转发到闪存驱动器。

Description

延长闪存驱动器使用寿命
背景
在读写机械硬盘驱动器上的各个位置时,由于硬盘驱动器头在盘上从一个位置到另一位置移动所需要的寻道时间,通常涉及等待时间。然而,闪存是没有移动部分的固态记录机构,并且因而具有比机械硬盘更快的读访问时间。这是因为从闪存驱动器读不遭受由于头寻道时间而引起的等待时间,而这通常是机械硬盘驱动器的情况。为此,从闪存驱动器读可比从机械驱动器读快10倍。这一改进的读速度是闪存驱动器在许多计算使用中替换机械硬盘驱动器的一个原因。
典型的闪存驱动器中的存储器空间以区域或被称为单元的阵列来组织。闪存的限制是尽管它可被随机读写,但它只可被块擦除或清除。在闪存驱动器中的单元上执行有限次数的作为写/重写过程的一部分的清除操作之后,该单元可能随时间在物理上磨损。通常,磨损一单元所需的清除操作循环的数量范围大约在100,000到1,000,000次清除操作。
通常,在单元中的数据需要被重写时,旧数据被标记为无效的,并且替换数据被写到该单元中的可用区域。在该单元中没有空间可用时,该单元被块清除,并且新数据连同在该单元被清除之前从中复制出来的有效数据一起随后被写到该经清除的单元。该清除释放了该单元的先前无效的部分,以使之可被再次写入。这一用于将数据写入闪存驱动器的过程仅仅是闪存驱动器中所采用的、致力于限制对单元执行的清除操作的数量的一种“磨损均衡(wear leveling)”技术。
随着闪存驱动器正变得更大并且更常见,它们越来越多地用作补充存储并且还代替机械盘驱动器用作主存储介质。因为对闪存驱动器的这一增加的依赖,与特定程序和/或应用程序一起使用将使得闪存驱动器中的各单元压力过大。尽管采用了当前的磨损-均衡技术,但这仍将导致闪存驱动器的缩短的使用寿命。缩短的使用寿命是不合需要的,尤其是在闪存用作主存储时。
因此,解决闪存驱动器的以上缺点和缺陷中的某一些的技术将是有利的。
概述
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。该概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
在用于过滤闪存驱动器的输入/输出操作的计算机实现的方法中,接收定向到闪存驱动器的输入/输出请求。确定该输入/输出请求是否与大容量写操作相关联。如果该输入/输出请求与大容量写操作相关联,则选择要执行的闪存驱动器输入/输出管理动作。所选闪存驱动器输入/输出管理动作可包括诸如但不限于以下动作的管理动作:管理作为该输入/输出请求的结果来写入的数据的压缩;管理作为该输入/输出请求的结果来读出的压缩数据的解压;管理该输入/输出请求的缓冲;或管理该输入/输出请求到外围固态存储驱动器的重定向。如果该输入/输出请求不与大容量写操作相关联,则该输入/输出请求被转发到闪存驱动器。
闪存驱动器输入/输出操作的过滤和定向到闪存驱动器的大容量写操作的管理一起运作,以减少否则将在正常操作的过程中被写到闪存驱动器的写操作。对闪存驱动器的写操作的这一降低减少了对闪存驱动器中的各单元所执行的清除操作,从而延长了该闪存驱动器的使用寿命。
附图描述
合并在本说明书中并形成其一部分的附图示出了用于延长闪存驱动器使用寿命的技术的各个实施例,并且与本说明书一起用于解释以下讨论的原理:
图1是可结合本发明的用于延长闪存驱动器使用寿命的技术的各实施例来使用的示例计算机系统的图。
图2示出根据本发明的技术的一个实施例的示例闪存驱动器过滤器。
图3是根据本发明的技术的闪存驱动器过滤器的一个实施例来执行的操作的流程图。
图4示出根据本发明的技术的一个实施例来执行的缓冲管理动作的一个示例。
图5示出根据本发明的技术的一个实施例来执行的缓冲管理动作的另一个示例。
图6是根据本发明技术的一个实施例来执行的操作的流程图。
图7是根据本发明的技术的一个实施例来执行的操作的流程图。
除非具体注明,否则本说明书中所引用的附图应被理解为不是按比例绘制的。
详细描述
现将详细参考本发明的用于延长闪存驱动器使用寿命的技术的各实施例,其示例在附图中示出。尽管将结合各种实施例来描述用于延长闪存驱动器使用寿命的技术,但可以理解,并不旨在将本发明的用于延长闪存驱动器使用寿命的技术限于这些实施例。相反,本发明的用于延长闪存驱动器使用寿命的技术的各实施例旨在涵盖可被包括在所附权利要求书所定义的各实施例的精神和范围内的替换、修改和等效技术方案。此外,在以下详细描述中,阐明了众多具体细节以提供对本发明的用于延长闪存驱动器使用寿命的技术的各实施例的全面理解。然而,本发明的用于延长闪存驱动器使用寿命的技术的各实施例可以在没有这些具体细节的情况下实施。在其它情况下,未详细描述公知的方法、过程、组件和电路以免不必要地使所呈现的各实施例的各方面显得晦涩难懂。
如从以下讨论中清楚的,除非具体地另外指明,否则可以理解,贯穿本详细描述,利用诸如“接收”、“确定”、“选择”、“转发”、“管理”、“压缩”、“解压”、“写”、“读”、“解析”、“执行”、“截取”等术语的讨论涉及计算机系统(如图1的计算机系统100)或类似的电子计算设备的动作和处理。计算机系统或类似的电子计算设备操纵计算机系统的寄存器和存储器内被表示为物理(电子)量的数据并将其变换成计算机系统存储器或寄存器或其它此类信息存储、传输或显示设备内类似地被表示为物理量的其它数据。本发明的用于延长闪存驱动器使用寿命的技术的各实施例也适用于其它计算机系统,如光学和虚拟计算机。此外,可以理解,用于延长闪存驱动器使用寿命的技术的各实施例还可用于延长具有与闪存驱动器的硬件特征相类似的硬件特征的其它固态存储设备的使用寿命。另外,应当理解,在本发明的用于延长闪存驱动器使用寿命的技术的某些实施例中,可以手动地执行各步骤中的一个或多个。
讨论概览
讨论将以对本发明技术的各实施例可以用其或在其中操作的示例计算机系统环境的描述开始。讨论将前进到对闪存驱动器过滤器形式的用于延长闪存驱动器的寿命的示例模块的描述。将简要描述闪存驱动器过滤器的各组件。闪存驱动器过滤器的操作及其各组件随后将结合用于过滤闪存驱动器的输入/输出操作的示例方法的描述,并还结合用于延长用作操作系统的主存储的闪存驱动器的使用寿命的示例方法来详细描述。
示例计算机系统环境
现在参考图1,用于延长闪存驱动器使用寿命的技术的各实施例的全部或部分包括驻留在例如计算机系统的计算机可使用介质中的计算机可读和计算机可执行指令。即,图1示出可用于实现以下讨论的本发明的用于延长闪存驱动器使用寿命的技术的各实施例的一类计算机的一个示例。图1示出根据本发明的用于延长闪存驱动器使用寿命的技术的各实施例来使用的示例计算机系统100。可以理解,图1的系统100仅是示例,并且本发明的用于延长闪存驱动器使用寿命的技术的各实施例可以在多个不同的计算机系统上或内部操作,包括通用网络化计算机系统、嵌入式计算机系统、路由器、交换机、服务器设备、客户机设备、各种中间设备/节点、独立计算机系统、媒体中心、便携式计算机系统、手持式设备等。如图1所示,图1的计算机系统100很好地适用于具有诸如,例如软盘、压缩盘等耦合到其上的外围计算机可读介质102。
图1的系统100包括用于传送信息的地址/数据总线104,以及耦合到总线104来处理信息和指令的处理器106A。如图1所示,系统100还很好地适用于其中存在多个处理器106A、106B和106C的多处理器环境。相反,系统100也适用于具有诸如,例如处理器106A等单个处理器。处理器106A、106B和106C可以是各种类型的微处理器中的任一个。系统100还包括诸如计算机可使用易失性存储器108等耦合到总线104来为处理器106A、106B和106C储存信息和指令的数据存储功能部件,例如随机存取存储器(RAM)。系统100还包括耦合到总线104来为处理器106A、106B和106C储存静态信息和指令的计算机可使用非易失性存储器110,例如只读存储器(ROM)。系统100中还具有闪存驱动器112,其是用作主存储的固态闪存设备。如图1所示,闪存驱动器112经由闪存驱动器过滤器210耦合到总线104。闪存驱动器112用于为计算机系统100存储信息和指令。在某些实施例中,系统100可以另外地或另选地配置有可以结合作为主存储的闪存驱动器112来使用的附加存储设备(如磁盘或光盘或盘驱动器)。
系统100还包括耦合到总线104来向处理器106A或处理器106A、106B和106C传送信息和命令选择的可任选字母数字输入设备114,其包括字母数字和功能键。系统100还包括耦合到总线104来向处理器106A或处理器106A、106B和106C传送用户输入信息和命令选择的可任选光标控制设备116。本实施例的系统100还包括耦合到总线104来显示信息的可任选显示设备118。
仍参考图1,图1的可任选显示设备118可以是液晶设备、阴极射线管、等离子显示设备、或适用于创建用户可识别的图形图像和字母数字字符的其它显示设备。可任选光标控制设备116允许计算机用户动态地用信号表示可见符号(光标)在显示设备118的显示屏上的移动,并指示对显示在显示设备118上的可选择项的用户选择。光标控制设备116的许多实现在本领域中是已知的,包括跟踪球、鼠标、触摸垫、操纵杆、或字母数字输入设备114上能够用信号表示给定方向或位移方式的移动的特殊键。另选地,可以理解,光标可以经由来自字母数字输入设备114的使用特殊键和键序列命令的输入来定向和/或激活。系统100还很好地适用于具有由诸如,例如语音命令等其它手段定向的光标。系统100还包括用于将系统100与外部实体相耦合的I/O设备120。例如,在一个实施例中,I/O设备120是用于启用系统100和诸如但不限于因特网等外部网络之间的有线或无线通信的调制解调器。在另一实施例中,例如I/O设备120是通用串行总线(USB)端口。在I/O设备120是USB端口的实施例中,外围存储(例如固态存储或机械盘驱动器)可以耦合到其上以用于本发明的技术的各实施例。固态存储的一些示例包括存储器卡或便携式闪存驱动器。
仍参考图1,描绘了系统100的各种其它组件。具体地,当存在时,操作系统122、应用程序124、模块126和数据128被示为通常驻留在例如随机存取存储器(RAM)等计算机可使用易失性存储器108和数据存储单元112的一个或多个组合中。
在某些实施例中,本发明的用于延长闪存驱动器使用寿命的技术被实现为诸如设备驱动程序等应用程序124或模块126,其可以位于RAM 108中的存储器位置中、存储在外围计算机可读介质102上、或存储在闪存驱动器112的介质上。在各实施例中,如此处所描述的,本发明的用于延长闪存驱动器使用寿命的技术作为闪存驱动器过滤器210来操作,其包括接收并过滤定向到闪存驱动器112的输入/输出请求的模块的全部或一部分。在这样的实施例中,如图1所示,计算机系统100(和/或闪存驱动器112)很好地适于具有闪存驱动器过滤器210或与其相耦合。
闪存驱动器过滤器
现在参考图2,图2示出根据本发明的技术的一个实施例的示例闪存驱动器过滤器210。闪存驱动器过滤器210是用于减少对诸如闪存驱动器112等闪存驱动器的写操作的模块。例如,在一个实施例中,闪存驱动器过滤器210被实现为软件层或模块,如操作系统的一部分。在另一实施例中,闪存驱动器过滤器210被实现为固件模块的全部或部分。在又一实施例中,闪存驱动器过滤器210以硬件模块来实现。如图2的示例实施例所示,闪存驱动器过滤器210包括输入/输出(I/O)性质确定器220、闪存驱动器I/O管理选择器230、压缩管理器241、解压管理器242、缓冲区管理器243、和重定向管理器244。闪存驱动器过滤器210与闪存驱动器相耦合或被配置成与其相耦合,以减少对闪存驱动器的写和清除操作。作为闪存驱动器过滤器210所执行的过滤的结果,闪存驱动器的介质的使用寿命(其只能够经受得住有限次清除操作)因而增加。
出于示例而非限制的目的,闪存驱动器过滤器210被示为与数据压缩/解压模块250、缓冲区260和外围存储270相耦合。然而,可以理解,在各实施例中,如果特定实施例不需要数据压缩/解压模块250、缓冲区260或外围存储270所提供的功能,则这些耦合中的一个或多个可以是任选的。同样,可以理解,在各实施例中,数据压缩/解压模块250、缓冲区260和外围存储270中的一个或多个的功能可以合并到闪存驱动器过滤器210中,而非经由如图所示的到外部实体的耦合来访问。
数据压缩/解压模块250在闪存驱动器过滤器210的管理之下操作,以结合所选的截取的I/O请求来执行数据压缩或解压。例如,在一个实施例中,数据压缩/解压模块250压缩所选的、最初定向到闪存驱动器但被闪存驱动器过滤器210重新定向到数据压缩/解压模块250的写操作。类似地,在闪存驱动器过滤器210的管理之下,数据压缩/解压模块250解压从闪存驱动器读取的压缩数据。在某些实施例中,数据压缩/解压模块250还在数据压缩期间执行数据加密并在数据解压期间执行数据解密。
缓冲区260被用于在闪存驱动器过滤器210的管理之下,在闪存驱动器过滤器210缓冲I/O请求时接收所选的截取的I/O请求。在一个实施例中,诸如RAM 108(图1)的一部分等随机存取存储器被用作缓冲区260的一部分。
外围存储270被用于在闪存驱动器过滤器210的管理之下,在闪存驱动器过滤器210将所选输入/输出请求从闪存驱动器重定向时接收该输入/输出请求。外围存储270可以是机械硬盘驱动器或固态存储。固态存储的一些示例是存储卡和诸如便携式闪存驱动器等外部USB闪存驱动器。
闪存驱动器过滤器的操作
如图2所示,闪存驱动器过滤器210操作来截取被过滤的、定向到闪存驱动器的I/O请求。该I/O请求是从例如在计算机系统100上运行的操作系统或应用程序来接收的。如图1和图2所示,闪存驱动器112是闪存驱动器过滤器210可以与其相耦合的闪存驱动器的一个示例。出于示例而非限制的目的,此处的各示例示出使用闪存驱动器过滤器210来过滤定向到闪存驱动器112的I/O请求,其中闪存驱动器112作为计算机系统100的主存储来操作。可以理解,此处所描述的技术的各实施例可类似地用来延长其它闪存设备的寿命,如可移动地与计算机系统100的I/O设备120相耦合的便携式闪存驱动器。
输入/输出性质确定器220确定I/O请求的性质。在截取到对闪存驱动器112的I/O请求后,闪存驱动器过滤器210的I/O性质确定器220分析该I/O请求来确定其性质。例如,在一个实施例中,I/O性质确定器220操作来确定该I/O请求是否是大容量写请求。类似地,在一个实施例中,I/O性质确定器220还操作来确定所截取的I/O请求所属的特定类别的大容量写请求。在一个实施例中,如果I/O性质确定器220确定所截取的I/O请求不与大容量写请求相关联,则该I/O请求被转发到闪存驱动器112。
闪存驱动器输入/输出管理选择器230基于输入/输出请求的性质来选择闪存驱动器输入/输出管理动作。接着以上示例,闪存驱动器I/O管理选择器230从I/O性质确定器220接收所截取的I/O请求的性质。基于所截取的I/O请求的性质,闪存驱动器I/O管理选择器230选择管理该I/O请求的方式。闪存驱动器I/O管理选择器230通过从闪存驱动器过滤器210配置有的可用I/O管理器(241、242、243和244)中选择一I/O管理器,并且因而选择要在该I/O请求上执行的管理动作来做到这一点。在某些实施例中,如在闪存驱动器过滤器210只配置有一个I/O管理器的情况下,可能不需要闪存驱动器I/O管理选择器230。
闪存驱动器输入/输出管理器(241、242、243、244)被配置成管理有助于减少对闪存驱动器的写操作的闪存驱动器输入/输出管理动作的执行。接着以上示例,一旦作出选择,则闪存驱动器输入/输出管理器(241、242、243、244)以确保减少对闪存驱动器112所执行的写操作的总数的方式来管理所截取的I/O请求。写操作的减少降低对在闪存驱动器112的单元上执行清除操作的需求,从而延长了闪存驱动器122的使用寿命。闪存驱动器过滤器210被示为配置有4个闪存驱动器I/O管理器(241、242、243、244)。可以理解,在各实施例中,闪存驱动器过滤器210中可以包括比图2所示的更多或更少数量的闪存驱动器I/O管理器。同样,可以理解,在某些实施例中,一个或多个闪存驱动器I/O管理器的功能可以由另一闪存驱动器I/O管理器来访问或包括在其中。
压缩管理器241管理定向到闪存驱动器112的所选的所截取的I/O请求的压缩。在一个实施例中,压缩管理器241被用来选择性地压缩被确定为与大容量写操作相关联的I/O请求的所有或某一子集。例如,关于所选写操作的数据被定向到数据压缩/解压模块250,其在此被压缩成压缩数据。在某些实施例中,在压缩之后,压缩管理器241随后指引该压缩数据写入闪存驱动器112中。另选地,在某些实施例中,在压缩之后,压缩管理器241随后指引该压缩数据写入缓冲区260或外围存储270中。在某些实施例中,在达到缓冲区阈值后,所缓冲的压缩数据随后可被写入闪存驱动器112。通过对数据进行压缩,减少了对闪存驱动器112的写操作的数量,从而减少了在闪存驱动器112的单元上执行的清除操作的数量。
解压管理器242管理压缩数据的解压,根据一截取的I/O请求,该压缩数据被请求从闪存驱动器112、缓冲区260或外围设备270读出。在一个实施例中,被读的压缩数据先前是在截取了与大容量写操作相关联的I/O请求之后被压缩的。解压管理器242管理压缩数据从其被存储的位置的读出,并随后将该压缩数据定向到数据压缩/解压模块250,该压缩数据在此被解压。解压管理器242随后将经解压的数据定向到所截取的I/O请求所指定的、该数据的最终接收者。
缓冲区管理器243管理对至少临时地存储在缓冲区260中的所接收到的I/O请求的缓冲。缓冲区管理器243的另一功能是作为一系列I/O请求的结果而被写入缓冲区260中的数据的重复、冗余、或重叠的写入。在一个实施例中,该归结是在数据单元的第一版本被写入缓冲区260并且随后在该数据的第一版本仍然存在的同时,同一数据单元的后续经更改的或相同的版本被写入缓冲区260的情况下执行的。在一个实施例中,缓冲区管理器243通过用经更改的信息来更新第一版本或丢弃第一版本并只保持第二版本来归结这种情况下的同一数据单元的这两个版本。
该数据单元的归结版本被认为是经更新的数据。在归结的数据单元是压缩数据的情况下,归结版本被认为是经更新的压缩数据。缓冲区管理器243通过归结被写入缓冲区260的数据单元的多个版本,来减少所缓冲的数据对闪存驱动器112或外围存储270的后续写入。这消除了数据单元的冗余写入和/或数据单元的重新写入,否则这些将是必须的。操作系统对注册表文件的写入是可以临时地在缓冲区260中存储并归结以减少对闪存驱动器112的写入的大容量写操作的一个示例。
重定向管理器244重定向接收到的I/O请求以使之被写入另一位置而非闪存驱动器112。例如,在一个实施例中,重定向管理器244重定向所选I/O请求以使之被写入外围存储270而非闪存驱动器112。在这样的实施例中,这可以包括将I/O请求的写重定向到缓冲区260并随后在超过缓冲区阈值之后将其重定向到外围存储270的中间步骤。这种重定向减少了否则将被写入闪存驱动器112的写操作的数量。在一个实施例中,例如,外围存储270是用作牺牲来接收大容量操作的写以使闪存驱动器112的使用寿命可以延长的不昂贵的便携式闪存驱动器。在这样的实施例中,执行I/O请求的重定向的决定可以基于该I/O请求可被重定向到的外围存储270或缓冲区260的存在。
执行重定向的决定还将基于I/O请求的性质。在许多情况下,外围存储270可容易地(并可能突然地)移动,因为这一点,所以在一个实施例中,只有低重要性但大容量写操作的数据将被重定向。这将防止丢失重要的数据,其例如可能在移除外围存储270的情况下禁用操作系统或应用程序。
大容量写操作的一个示例是向操作系统的页文件写入。大容量写操作的其它示例是计算机系统上正在使用的预取应用程序或搜索索引应用程序所执行的写操作。
对于页文件,其一般用于帮助操作系统创建超过计算机系统中存在的限量随机存取存储器的附加可用存储器。附加存储器可以通过虚拟存储器技术来创建和使用。为利用这些技术,一些操作系统将存储器分成被称为页的块。页的大小可以随操作系统而变化,但页的概念保持相同。虚拟存储器的“页”可在存储器(例如RAM)中获得,但也将在存储到诸如闪存驱动器112等主存储的页文件中备份。
在操作系统的正常操作中,存在不同类型的页。存储器的某些页是只读的。可执行文件是只读页的示例。存储器的某些页是既可读又可写的。读写页的示例是用户数据,如分配给文字处理程序的用户数据存储器页。在用该文字处理程序写作或编辑文档期间,随着做出改变,可以从该用户数据存储器页读出或向其写入。如果该文字处理程序文档被最小化以使得可以使用另一程序,则先前在存储器中的页都被写入主存储中,以使其它页可以替换它们来在可用RAM中活动使用。
如可看到的,在诸如计算机系统100等计算机的正常操作期间,虚拟存储器的页文件中通常发生相当多的读和写。虽然存储器被称为虚拟的,但相当多的读和写是真实的,并且被执行到真实的存储位置,如闪存驱动器112中的存储器单元。
图3是根据本发明的技术的闪存驱动器过滤器210的一个实施例来执行的操作的流程图300。流程图300示出对定向到诸如闪存112等闪存驱动器的对象I/O请求所执行的操作。对象I/O请求是由被配置成利用数据压缩和解压来减少与操作系统的分页请求相关联的写的闪存驱动器过滤器210的实施例所截取的请求。
在步骤310,在一个实施例中,I/O性质确定器220接收定向到闪存驱动器112的I/O请求。I/O性质确定器220确定该I/O请求是否与大容量写操作相关联。在闪存驱动器过滤器210的本实例化中,这包括确定该I/O请求是否是分页I/O请求。如果否,则在步骤320,将该I/O请求转发到例如闪存驱动器112。在转发了该I/O请求之后,流程图300的这一分支随后在步骤390处结束。
如步骤330所示,在一个实施例中,如果该I/O请求与分页请求相关联,则使用闪存驱动器I/O管理选择器230来确定该I/O请求是读操作还是写操作。如果该I/O请求是读操作,则该流程图前进至步骤340,如果否,则该流程图前进至步骤370。
在步骤340,在一个实施例中,利用解压管理器242来管理对按该I/O请求读出的数据所执行的解压动作。例如,解压管理器250指引该压缩数据从其被存储的位置读出。该压缩数据可被存储在例如闪存驱动器112上、在缓冲区260中、或在外围存储270中。在步骤350,解压管理器242随后将该压缩数据定向到数据压缩/解压模块250,其中其在此被解压成经解压的数据。在步骤360,解压管理器240随后指引该经解压的数据按所截取的I/O请求所要求的来转发。流程图300的这一分支随后在步骤390处结束。
在步骤370,在一个实施例中,利用压缩管理器241来管理对按该I/O请求写入的数据所执行的压缩动作。按该I/O请求所写入的数据被压缩管理器241定向到数据压缩/解压模块250,其中其在此被压缩成压缩数据。
在步骤380,压缩管理器241指引该压缩数据来写入。这可以包括将该压缩数据直接写入闪存驱动器112。这还可以包括将与I/O请求相关联的压缩数据写入缓冲区260或外围存储270。这还可以包括将与I/O请求相关联的压缩数据写入缓冲区260,并随后在超过缓冲区阈值后,将该压缩数据写入闪存驱动器112或外围存储270。如上所述,这还可以包括归结被写入缓冲区260的压缩数据的冗余、重复、或重叠的版本。流程图300的这一分支随后在步骤390处结束。
诸如预取和搜索索引(先前在此提到)等应用程序通常用于使计算机对用户而言运行更快。这些应用程序通常增加从闪存驱动器112的读的数量,也可以增加由于更新被写入其相关联的索引或数据库文件而产生的对闪存驱动器112的写的数量。这在闪存驱动器112在不使用这些技术的情况下将经历的传统水平上增加了写操作。在一个实施例中,与预取和/或搜索索引应用程序的文件相关联的大容量写操作的数据以与图3的流程图300所示的、分页I/O请求的压缩和解压相类似的方式来管理。
图4示出根据本发明的技术的一个实施例来执行的缓冲管理动作的一个示例。图4示出缓冲区管理器243将缓冲区260作为FIFO(先进先出)类缓冲区来管理。如图4所示,对缓冲区260的连续写被从左到右排队。在缓冲区260变满或在超过指定缓冲区阈值时,缓冲区260被清空并写入闪存驱动器112。缓冲区阈值的一个示例是与缓冲区260相关联的定时器的期满时间。缓冲区阈值的另一示例是超过缓冲区260的充满度的预指定水平。随后以接收的次序将被排队的写410写入闪存驱动器112的各单元(421、422、423、424、425、426、427)。如可看到的,这导致对单元421的两次写、对单元422的一次写、对单元424的一次写和对单元426的一次写。在一个实施例中,通过归结数据的冗余、重复、或重叠的版本(如上所述),通过允许以单个写操作代替以多个写操作来将数据单元提交给闪存驱动器112,减少了对闪存驱动器112的写的总数。在这样一实施例中,FIFO操作被稍微修改来允许归结缓冲区260内的数据。
图5示出根据本发明的技术的一个实施例来执行的缓冲管理动作的另一个示例。图5示出将缓冲区260作为桶类缓冲区来管理的缓冲区管理器243。如图5所示,缓冲区260被分成存储闪存驱动器112中的特定偏移量之间的(例如,对特定单元或对可在一个单元内或分散在闪存驱动器112的多个单元的特定地址范围的)写的各个桶(521、522、523、524、525、526、527)。
在接收到对闪存驱动器112的写时,缓冲区管理器243将该写置于所分配的存储器偏移量范围的适当的桶中。如果不存在关于该写的桶,则缓冲区管理器243以类似的偏移量开始用于写的新桶,并且该写操作随后被缓冲在该新桶中。指定该桶的范围内的其它写操作的所截取的I/O请求将被一起分组在同一个桶中。尽管正在执行缓冲,但缓冲区管理器243也如上所述地归结每一桶内的重复和冗余数据。
一旦桶变满或超过了缓冲区阈值容量,则桶中所累积的写被批量地写入到包含分配给特定桶的偏移量的一个或多个适当的单元(421-427)。超过缓冲区阈值的一个示例是特定桶或缓冲区260整体达到充满度的预指定水平。超过缓冲区阈值的另一示例是与缓冲区260或缓冲区260中的特定桶或桶集合相关联的定时器的期满时间。在图5中,清空缓冲区260造成从桶521对单元421的三次写、从桶522对单元422的两次写、从桶523对单元423的一次写、从桶524对单元424的一次写、以及从桶526对单元426的一次写。如图4和图5的比较所示,桶缓冲方法比FIFO缓冲方法粒度更细,因为其存储对特定单元或单元的一部分的更多写,并允许比FIFO缓冲方法所允许的更大量的提交之前对写的解决。
示例操作方法
以下讨论详细阐明本发明的用于延长闪存驱动器使用寿命的技术的各实施例的某些示例操作方法的操作。参考图6和图7,流程图600和700各自示出本发明的用于延长闪存驱动器使用寿命的技术的各实施例所使用的示例步骤。流程图600和700包括在各实施例中由处理器在计算机可读和计算机可执行指令的控制下实现的各种过程。计算机可读和计算机可执行指令驻留在例如诸如图1的计算机可使用易失性存储器108、计算机可使用非易失性存储器110、外围计算机可读介质102和/或闪存驱动器112等数据存储功能部件中。计算机可读和计算机可执行指令用于控制例如图1的处理器106A和/或处理器106A、106B和106C或结合其来操作。虽然在流程图600和700中公开了各具体步骤,但这些步骤是示例。即,各实施例很好地适于执行各种其它步骤或流程图600和700中所描述的步骤的变型。可以理解,流程图600和700中的步骤可以用与所呈现的不同的次序来执行,并且并非要执行流程图600和700中的全部步骤。
过滤闪存驱动器的输入/输出操作
图6是根据本发明的用于延长闪存驱动器使用寿命的技术的一个实施例来执行的操作的流程图600。更具体地,图6示出用于过滤诸如闪存驱动器112等闪存驱动器的I/O操作的计算机实现的方法的示例实施例的流程图600。参考图1、图2和图3的各元素,在以下解释流程图600的各元素。
在一个实施例中,流程图600的步骤610包括接收定向到闪存驱动器的输入/输出请求。如此处的各示例所述,在一个实施例中,这包括闪存驱动器过滤器210接收定向到诸如闪存驱动器112等闪存驱动器的I/O请求。
在一个实施例中,流程图600的步骤620包括确定在步骤610处接收到的输入/输出请求是否与大容量写操作相关联。I/O性质确定器220做出该判定。在此已经描述了大容量写操作的若干具体示例。这些示例包括与分页文件、预取、索引和注册表写相关的I/O请求。可以理解,这些仅是与大容量写操作相关联的、并可由I/O性质确定器220以此处所描述的方式来标识的多个I/O请求中的一些。与I/O性质确定器220判定一I/O请求相关联于分页I/O请求相关的操作的示例由流程图300的步骤310的示例示出。可以理解,在评估接收到的对多个可能的大容量写操作的任一个的I/O请求时,I/O性质确定器220类似地操作。
在一个实施例中,响应于确定该输入/输出请求与大容量写操作相关联,流程图600的步骤630包括选择要执行的闪存驱动器输入/输出管理动作。在一个实施例中,该选择由闪存驱动器I/O管理选择器230以上述方式来执行。例如,闪存驱动器I/O管理选择器230部分地基于I/O请求的性质并部分地基于闪存驱动器过滤器210配置有的可用I/O管理器(241、242、243、244)来选择要执行的管理动作。
因此,如流程图300中所表示的闪存驱动器过滤器210的实施例所述,闪存驱动器I/O管理选择器230从一组管理动作中选择闪存驱动器管理动作,该组管理动作包括管理作为I/O请求的结果来写入的数据的压缩,和管理作为I/O请求的结果来读出的压缩数据的解压。
类似地,在图2所示的闪存驱动器过滤器210的实施例中,闪存驱动器I/O管理选择器230从包括以下各项的管理动作的组中选择闪存驱动器管理动作:管理作为I/O请求的结果来写入的数据的压缩、管理作为I/O请求的结果来读出的压缩数据的解压、管理I/O请求的缓冲、以及管理I/O请求到外围固态存储驱动器的重定向。
可以理解,在某些实施例中,如此处所描述的,管理作为I/O请求的结果来写入的数据的压缩的所选I/O管理动作包括将该I/O请求的压缩数据写入缓冲区。这可以通过压缩管理器241将压缩数据写入缓冲区260来实现,或通过压缩管理器241访问并利用缓冲区管理器243来将压缩数据写入缓冲区260来实现。此外,在将压缩数据写入缓冲区260之后,压缩管理器241还可以管理压缩数据从缓冲区260到闪存驱动器112的写。
还可以理解,在某些实施例中,如此处所描述的,所选的管理I/O请求的缓冲的I/O管理动作还包括与该I/O请求相关联的数据从缓冲区到外围存储的写。这可以通过缓冲区管理器243管理数据从缓冲区260到外围存储270的写来实现。还可以理解,在这样一实施例中,外围存储270可以是诸如存储卡或USB闪存驱动器等固态存储驱动器。
在有多个并且可能重叠的管理动作可供选择时,闪存驱动器I/O管理选择器230基于I/O请求的性质和该性质与预定义的规则集的比较来做出选择。例如,在一个这样的实施例中,所有分页I/O写请求被发送到压缩管理器241,以使与操作系统相关联的分页文件的数据可被压缩,同时所有分页I/O读请求被发送到解压管理器242,以使分页文件的数据可被读出并解压。类似地,在这种基于规则的实施例中,与索引操作相关联的I/O写请求被发送到压缩管理器241,以使与索引操作的文件相关联的数据可以在被写之前压缩。同样,在这种基于规则的实施例中,与预取操作相关联的I/O写请求被发送到压缩管理器241,以使与索引操作相关联的文件的数据可以在被写之前压缩。此外,在一个这种基于规则的实施例中,所有注册表文件I/O请求都被发送到缓冲区管理器243,而如果外围存储270可用则所有其它大容量写操作都被发送到重定向管理器244以进行重定向。
在一个实施例中,响应于确定该输入/输出请求不与大容量写操作相关联,流程图600的步骤640包括将该输入/输出请求转发到闪存驱动器。接着以上示例,在确定该I/O请求不与大容量写操作相关联时,闪存驱动器过滤器210的I/O性质确定器220将该I/O请求转发到闪存驱动器112。
延长用作操作系统的主存储的闪存驱动器的使用寿命
图7是根据本发明的用于延长闪存驱动器使用寿命的技术的一个实施例来执行的操作的流程图700。更具体地,图7示出延长用作操作系统的主存储的闪存驱动器的使用寿命的示例方法的流程图700。参考图1、图2和图3的各元素,在以下解释流程图700的各元素。
在一个实施例中,流程图700的步骤710包括从操作系统接收定向到闪存驱动器的输入/输出请求。如此处的各示例所述,在一个实施例中,这包括闪存驱动器过滤器210接收定向到诸如闪存驱动器112等闪存驱动器的I/O请求。在一个实施例中,操作系统将闪存驱动器112用作用于结合运行操作系统所执行的活动的主存储装置。
在一个实施例中,流程图700的步骤720包括确定接收到的I/O请求的性质。例如,在一个实施例中,这包括确定该I/O请求是否包括与大容量写操作相关联的数据,诸如但不限于:与操作系统的页文件相关的数据、与操作系统所执行的预取操作相关的数据、与操作系统的注册表文件相关的数据、和/或与操作系统所执行的索引操作相关的数据。在一个实施例中,如此处所描述的,I/O性质确定器220确定该I/O请求是否包括与这种大容量写操作相关联的数据。
在一个实施例中,流程图700的步骤730包括基于该I/O请求的性质来执行闪存驱动器I/O管理动作,以便减少操作系统对闪存驱动器所执行的写操作的数量,而同时维持操作系统的完整性。如此处所描述的,在一个实施例中,这包括压缩与大容量写操作相关联的数据。操作系统的完整性是通过精确地管理数据的压缩以便不丢失数据来维持的。在一个实施例中,操作系统的完整性还通过确保对操作系统的运作至关重要的数据只被存储在闪存驱动器112上,并且不被重定向到其中其可能随外围存储270从计算机系统移除(如通过移除便携式闪存驱动器)而容易地丢失的外围存储270来保护。另外,在一个实施例中,操作系统的完整性是通过加密压缩数据来保护的,尤其是在其被重定向来存储在容易地从计算机系统移除的外围存储270的情况下。
在一个实施例中,闪存驱动器I/O管理选择器230选择压缩管理器241。压缩管理器241通过将与大容量写操作相关联的数据定向到该数据被压缩成压缩数据的数据压缩/解压模块250,来执行与该大容量写操作相关联的数据的这一压缩。在一个实施例中,这还可以包括加密压缩数据。流程图300描述了这样的实施例的一个实例化。
在一个实施例中,步骤730的压缩数据被写入外围存储而非闪存驱动器。例如,在一个实施例中,在压缩了数据之后,压缩管理器241管理压缩数据的重定向,以使该压缩数据被写入外围存储270而非闪存驱动器112。压缩管理器241可以通过访问并利用重定向管理器244来实现这一重定向。在一个实施例中,如此处所描述的,外围存储270可以是固态存储驱动器,如存储卡或便携式闪存驱动器。
在一个实施例中,步骤730的压缩数据被写入缓冲区而非闪存驱动器。例如,在一个实施例中,在压缩了与I/O请求相关联的数据之后,压缩管理器241管理压缩数据的重定向和/或缓冲,以使该压缩数据被写入缓冲区260而非闪存驱动器112。压缩管理器241可以通过访问并利用缓冲区管理器243和/或重定向管理器244或通过合并类似功能来实现这一重定向和/或缓冲。
在一个实施例中,压缩数据到缓冲区的写入还包括将该数据的重复、冗余、或重叠的版本归结成经更新的压缩数据,随后,响应于超过缓冲区阈值,将经更新的压缩数据从缓冲区写入闪存驱动器。在一个实施例中,如此处所描述的,压缩管理器241访问或合并缓冲区管理器243的功能,以归结存储在缓冲区260中的压缩数据并将经归结的数据从缓冲区260写到闪存驱动器112。在一个实施例中,并非将归结的数据写到闪存驱动器112,而是如果外围存储270可用并且归结的数据对操作系统的运作不是至关重要的,则归结的数据可被重定向到外围存储270。
因此描述了用于延长闪存驱动器使用寿命的技术的各示例实施例。尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。

Claims (20)

1.一种用于过滤闪存驱动器的输入/输出操作的计算机实现的方法,所述方法包括:
接收输入/输出请求,所述输入/输出请求定向到所述闪存驱动器;
确定所述输入/输出请求是否与大容量写操作相关联;
响应于确定所述输入/输出请求与大容量写操作相关联,选择要执行的闪存驱动器输入/输出管理动作;以及
响应于确定所述输入/输出请求不与所述大容量写操作相关联,将所述输入/输出请求转发到所述闪存驱动器。
2.如权利要求1所述的计算机实现的方法,其特征在于,所述选择要执行的闪存驱动器输入/输出管理动作包括:
从包括以下各项的闪存驱动器管理动作的组中选择所述闪存驱动器输入输出管理动作:管理作为所述输入/输出请求的结果来写入的数据的压缩、管理作为所述输入/输出请求的结果来读出的压缩数据的解压、管理所述输入/输出请求的缓冲、以及管理所述输入/输出请求到外围固态存储驱动器的重定向。
3.如权利要求2所述的计算机实现的方法,其特征在于,管理作为所述输入/输出请求的结果来写入的数据的压缩的所述闪存驱动器输入/输出管理动作包括:
压缩与操作系统相关联的分页文件的数据。
4.如权利要求2所述的计算机实现的方法,其特征在于,管理作为所述输入/输出请求的结果来写入的数据的压缩的所述闪存驱动器输入/输出管理动作包括:
压缩与预取操作相关联的文件的数据。
5.如权利要求2所述的计算机实现的方法,其特征在于,管理作为所述输入/输出请求的结果来写入的数据的压缩的所述闪存驱动器输入/输出管理动作包括:
压缩与搜索索引操作相关联的文件的数据。
6.如权利要求2所述的计算机实现的方法,其特征在于,管理作为所述输入/输出请求的结果来写入的数据的压缩的所述闪存驱动器输入/输出管理动作包括:
将所述输入/输出请求的压缩数据写到缓冲区。
7.如权利要求6所述的计算机实现的方法,其特征在于,压缩作为所述输入/输出请求的结果来写入的数据的所述闪存驱动器输入/输出管理动作还包括:
将所述压缩数据从所述缓冲区写到所述闪存驱动器。
8.如权利要求2所述的计算机实现的方法,其特征在于,管理所述输入/输出请求的缓冲的所述闪存驱动器输入/输出管理动作还包括:
将数据从缓冲区写到外围固态存储驱动器。
9.一种具有用于执行以下步骤的计算机可执行指令的计算机可读介质,所述步骤包括:
接收输入/输出请求,所述输入/输出请求来自操作系统并定向到所述闪存驱动器;
确定所述输入/输出请求的性质;以及
基于所述输入/输出请求的所述性质来执行闪存驱动器输入/输出管理动作,以便在维持所述操作系统的完整性的同时减少所述操作系统对所述闪存驱动器所执行的写操作的数量。
10.如权利要求9所述的计算机可读介质,其特征在于,用于执行确定所述输入/输出请求的性质的步骤的所述计算机可执行指令包括用于执行以下步骤的计算机可执行指令:
确定所述输入/输出请求是否包括与大容量写操作相关联的数据。
11.如权利要求10所述的计算机可读介质,其特征在于,用于执行确定所述输入/输出请求是否包括与大容量写操作相关联的数据的步骤的所述计算机可执行指令包括用于执行以下步骤的计算机可执行指令:
确定所述输入/输出请求是否包括与所述操作系统的页文件相关的数据。
12.如权利要求9所述的计算机可读介质,其特征在于,用于执行基于所述输入/输出请求的所述性质来执行闪存驱动器管理动作的步骤的所述计算机可执行指令包括用于执行以下步骤的计算机可执行指令:
压缩与大容量写操作相关联的数据,所述数据被压缩成压缩数据。
13.如权利要求12所述的计算机可读介质,其特征在于,还具有用于执行以下步骤的计算机可执行指令:
将所述压缩数据写到外围固态存储而非所述闪存驱动器。
14.如权利要求12所述的计算机可读介质,其特征在于,还具有用于执行以下步骤的计算机可执行指令:
将所述压缩数据写到缓冲区而非所述闪存驱动器。
15.如权利要求14所述的计算机可读介质,其特征在于,还具有用于执行以下步骤的计算机可执行指令:
将所述压缩数据的重复版本归结成经更新的压缩数据,以及
响应于超过缓冲区阈值,将所述经更新的压缩数据从所述缓冲区写到所述闪存驱动器。
16.一种用于减少对闪存驱动器的写操作的模块,所述模块包括:
被配置成与所述闪存驱动器相耦合的闪存驱动器过滤器,所述闪存驱动器过滤器被配置成截取定向到所述闪存驱动器的输入/输出请求,所述闪存驱动器过滤器还包括:
用于确定所述输入/输出请求的性质的输入/输出性质确定器;
用于基于所述输入/输出请求的所述性质来选择闪存驱动器输入/输出管理动作的闪存驱动器输入/输出管理选择器;以及
闪存驱动器输入/输出管理器,所述输入/输出管理器被配置成管理有助于减少对所述闪存驱动器的写操作的闪存驱动器输入/输出管理动作的执行。
17.如权利要求16所述的模块,其特征在于,所述闪存驱动器过滤器还包括:
到压缩/解压模块的耦合,所述压缩/解压模块用于压缩定向到所述闪存驱动器的所选写操作并解压从所述闪存驱动器读出的压缩数据。
18.如权利要求16所述的模块,其特征在于,所述闪存驱动器过滤器还包括:
到外围存储的耦合,所述外围存储用于在所述输入/输出请求由所述闪存驱动器过滤器从所述闪存驱动器重定向时接收所述输入/输出请求。
19.如权利要求16所述的模块,其特征在于,所述闪存驱动器过滤器还包括:
到缓冲区的耦合,所述缓冲区被配置成在所述输入/输出请求由所述闪存驱动器过滤器缓冲时接收所述输入/输出请求
20.如权利要求16所述的模块,其特征在于,所述闪存驱动器输入/输出管理器是从包括以下各管理器的组中选择的:压缩管理器、解压管理器、缓冲区管理器、以及重定向管理器。
CN2008800035709A 2007-01-31 2008-01-31 延长闪存驱动器使用寿命 Active CN101595461B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/700,443 2007-01-31
US11/700,443 US8560760B2 (en) 2007-01-31 2007-01-31 Extending flash drive lifespan
PCT/US2008/052709 WO2008095134A1 (en) 2007-01-31 2008-01-31 Extending flash drive lifespan

Publications (2)

Publication Number Publication Date
CN101595461A true CN101595461A (zh) 2009-12-02
CN101595461B CN101595461B (zh) 2012-07-04

Family

ID=39669223

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008800035709A Active CN101595461B (zh) 2007-01-31 2008-01-31 延长闪存驱动器使用寿命

Country Status (9)

Country Link
US (1) US8560760B2 (zh)
EP (1) EP2108151B1 (zh)
JP (1) JP5452233B2 (zh)
KR (1) KR101465816B1 (zh)
CN (1) CN101595461B (zh)
BR (1) BRPI0806587A2 (zh)
RU (1) RU2451993C2 (zh)
TW (1) TWI528378B (zh)
WO (1) WO2008095134A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106527959A (zh) * 2015-09-10 2017-03-22 阿里巴巴集团控股有限公司 刷新磁盘输入输出请求的处理方法及设备
CN109074269A (zh) * 2016-07-08 2018-12-21 惠普发展公司,有限责任合伙企业 确定设备磨损率
CN115658625A (zh) * 2022-12-12 2023-01-31 北京象帝先计算技术有限公司 数据解压系统、图形处理系统、装置、设备及解压方法

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8111707B2 (en) * 2007-12-20 2012-02-07 Packeteer, Inc. Compression mechanisms for control plane—data plane processing architectures
JP2009087509A (ja) * 2007-10-03 2009-04-23 Toshiba Corp 半導体記憶装置
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
US8473946B2 (en) 2008-07-03 2013-06-25 Vmware, Inc. Efficient recording and replaying of non-deterministic instructions in a virtual machine and CPU therefor
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
JP2011128792A (ja) 2009-12-16 2011-06-30 Toshiba Corp メモリ管理装置
US8909851B2 (en) 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
US8935466B2 (en) 2011-03-28 2015-01-13 SMART Storage Systems, Inc. Data storage system with non-volatile memory and method of operation thereof
TWI451425B (zh) * 2011-04-25 2014-09-01 Silicon Motion Inc 快閃記憶裝置及其資料保護方法
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US9298252B2 (en) 2012-04-17 2016-03-29 SMART Storage Systems, Inc. Storage control system with power down mechanism and method of operation thereof
US8949689B2 (en) 2012-06-11 2015-02-03 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US10565099B2 (en) * 2012-12-28 2020-02-18 Apple Inc. Methods and apparatus for compressed and compacted virtual memory
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
JP6069031B2 (ja) 2013-03-04 2017-01-25 株式会社日立製作所 計算機及びメモリ管理方法
US9470720B2 (en) 2013-03-08 2016-10-18 Sandisk Technologies Llc Test system with localized heating and method of manufacture thereof
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9313874B2 (en) 2013-06-19 2016-04-12 SMART Storage Systems, Inc. Electronic system with heat extraction and method of manufacture thereof
US9898056B2 (en) 2013-06-19 2018-02-20 Sandisk Technologies Llc Electronic assembly with thermal channel and method of manufacture thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9317211B2 (en) 2014-05-02 2016-04-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method of life management for low endurance SSD NAND devices used as secondary cache
US9811459B1 (en) * 2014-06-16 2017-11-07 Amazon Technologies, Inc. Data storage optimization for non-volatile memory
US10223000B2 (en) * 2015-05-21 2019-03-05 International Business Machines Corporation Data compression for grid-oriented storage systems
US10282324B2 (en) 2015-07-13 2019-05-07 Samsung Electronics Co., Ltd. Smart I/O stream detection based on multiple attributes
US11461010B2 (en) 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US10268386B2 (en) * 2016-12-28 2019-04-23 Western Digital Technologies, Inc. Data storage device including temporary storage locations

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5490260A (en) 1990-12-14 1996-02-06 Ceram, Inc. Solid-state RAM data storage for virtual memory computer using fixed-sized swap pages with selective compressed/uncompressed data store according to each data size
DE19540915A1 (de) * 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US5568423A (en) * 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
JPH0944381A (ja) * 1995-07-31 1997-02-14 Toshiba Corp データ格納方法およびデータ格納装置
US5835935A (en) * 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US6711666B1 (en) * 1995-11-29 2004-03-23 Zf Micro Solutions, Inc. IBM PC compatible multi-chip module
US5787484A (en) 1996-08-08 1998-07-28 Micron Technology, Inc. System and method which compares data preread from memory cells to data to be written to the cells
US5905757A (en) 1996-10-04 1999-05-18 Motorola, Inc. Filter co-processor
US6418506B1 (en) * 1996-12-31 2002-07-09 Intel Corporation Integrated circuit memory and method for transferring data using a volatile memory to buffer data for a nonvolatile memory array
IL131935A0 (en) 1997-03-21 2001-03-19 Canal Plus Sa Computer memory organization
US6154788A (en) * 1997-04-25 2000-11-28 Simple Technology, Inc. Multi-function module incorporating flash memory having additional controller adapted to configure the data from the memory that is to be provided to the external source
CN1281560A (zh) 1997-10-08 2001-01-24 西加特技术有限责任公司 混合数据存储和重建系统以及用于数据存储装置的方法
US6189069B1 (en) 1998-02-17 2001-02-13 Microsoft Corporation Optimized logging of data elements to a data storage device
JP2000036947A (ja) 1998-07-17 2000-02-02 Mitsubishi Electric Corp 映像蓄積配信表示装置
JP2000201333A (ja) 1999-01-05 2000-07-18 Matsushita Electric Ind Co Ltd 多重化通信装置
US6145069A (en) 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US8078794B2 (en) * 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
US20050160218A1 (en) * 2004-01-20 2005-07-21 Sun-Teck See Highly integrated mass storage device with an intelligent flash controller
US7509420B2 (en) * 2000-02-18 2009-03-24 Emc Corporation System and method for intelligent, globally distributed network storage
US20030046396A1 (en) * 2000-03-03 2003-03-06 Richter Roger K. Systems and methods for managing resource utilization in information management environments
US20020174227A1 (en) * 2000-03-03 2002-11-21 Hartsell Neal D. Systems and methods for prioritization in information management environments
US6883044B1 (en) * 2000-07-28 2005-04-19 Micron Technology, Inc. Synchronous flash memory with simultaneous access to one or more banks
US7689510B2 (en) * 2000-09-07 2010-03-30 Sonic Solutions Methods and system for use in network management of content
JP2002132454A (ja) 2000-10-19 2002-05-10 Xaxon R & D Corp 圧縮伸張装置を備えた半導体ディスク装置
US6681506B2 (en) * 2000-10-27 2004-01-27 The Procter & Gamble Company Process for the ironing of fabrics, and refill cartridge for irons
EP1205838A3 (en) 2000-11-07 2007-10-10 Matsushita Electric Industrial Co., Ltd. Carryable memory media, portable information terminal using the same and method for managing files therein
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
US7454446B2 (en) * 2001-08-31 2008-11-18 Rocket Software, Inc. Techniques for storing data based upon storage policies
KR100393619B1 (ko) * 2001-09-07 2003-08-02 삼성전자주식회사 휴대 단말기의 메모리 장치 및 그 제어방법
KR100454119B1 (ko) * 2001-10-24 2004-10-26 삼성전자주식회사 캐쉬 기능을 갖는 불 휘발성 반도체 메모리 장치 및 그것의 프로그램, 읽기, 그리고 페이지 카피백 방법들
US7127550B1 (en) * 2001-10-31 2006-10-24 Sandisk Corporation Multi-module simultaneous program, erase test, and performance method for flash memory
RU2189630C1 (ru) 2001-11-21 2002-09-20 Бабаян Борис Арташесович Способ фильтрации межпроцессорных запросов в многопроцессорных вычислительных системах и устройство для его осуществления
US6681309B2 (en) * 2002-01-25 2004-01-20 Hewlett-Packard Development Company, L.P. Method and apparatus for measuring and optimizing spatial segmentation of electronic storage workloads
US20050036387A1 (en) * 2002-04-24 2005-02-17 Seal Brian K. Method of using flash memory for storing metering data
JP4063615B2 (ja) * 2002-08-30 2008-03-19 Necエレクトロニクス株式会社 不揮発性メモリおよびその書き込み処理方法
US7020758B2 (en) * 2002-09-18 2006-03-28 Ortera Inc. Context sensitive storage management
US6993603B2 (en) * 2002-12-09 2006-01-31 Microsoft Corporation Managed file system filter model and architecture
US7814128B2 (en) * 2003-05-30 2010-10-12 Symantec Operating Corporation Multi-volume file support
TWI220959B (en) 2003-06-05 2004-09-11 Carry Computer Eng Co Ltd Storage device with optimized compression management mechanism
ITVA20030025A1 (it) 2003-07-17 2005-01-18 Lamberti Spa Depolimerizzazione enzimatica di carbossimetilcellulosa e relativi prodotti.
KR100546348B1 (ko) * 2003-07-23 2006-01-26 삼성전자주식회사 플래시 메모리 시스템 및 그 데이터 저장 방법
US6876579B2 (en) * 2003-08-04 2005-04-05 Phison Electronics Corp. Method writing data to a large block of a flash memory cell
EP1686482B1 (en) 2003-11-18 2013-03-06 Panasonic Corporation File recording device
US20090193184A1 (en) * 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
CN100538900C (zh) * 2003-12-31 2009-09-09 深圳市朗科科技股份有限公司 闪存介质中的数据操作方法
JP4568502B2 (ja) * 2004-01-09 2010-10-27 株式会社日立製作所 情報処理システムおよび管理装置
EP1720119A4 (en) 2004-03-31 2008-01-23 Matsushita Electric Ind Co Ltd MEMORY CARD AND MEMORY CARD SYSTEM
US8352697B2 (en) * 2004-05-17 2013-01-08 Sandisk Il Ltd. Method of managing files for optimal performance
US7702848B2 (en) * 2004-06-10 2010-04-20 Marvell World Trade Ltd. Adaptive storage system including hard disk drive with flash interface
JP2008502988A (ja) * 2004-06-15 2008-01-31 ティー1 テクノロジーズ リミテッド コンピュータシステムのブート方法および装置
US20060069896A1 (en) * 2004-09-27 2006-03-30 Sigmatel, Inc. System and method for storing data
US20060117018A1 (en) 2004-11-30 2006-06-01 Microsoft Corporation Method and system for caching remote files locally
US7087953B2 (en) * 2004-12-03 2006-08-08 Aplus Flash Technology, Inc. Unified non-volatile memory device and method for integrating NOR and NAND-type flash memory and EEPROM device on a single substrate
KR100684942B1 (ko) * 2005-02-07 2007-02-20 삼성전자주식회사 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템
KR100590388B1 (ko) * 2005-03-10 2006-06-19 주식회사 하이닉스반도체 멀티-플레인 타입 플래쉬 메모리 장치와, 그 프로그램 동작및 리드 동작 제어 방법
KR100626392B1 (ko) * 2005-04-01 2006-09-20 삼성전자주식회사 읽기 속도를 향상시킬 수 있는 플래시 메모리 장치
KR100704037B1 (ko) * 2005-04-15 2007-04-04 삼성전자주식회사 이종의 비휘발성 메모리를 가지는 데이터 저장장치와 그의구동 방법
JP2007004710A (ja) 2005-06-27 2007-01-11 Nec Corp ストレージアクセス方式、データ転送装置、ストレージアクセス方法、及びプログラム
US7712094B2 (en) * 2005-12-22 2010-05-04 Alan Joshua Shapiro Method and apparatus for replicating a panoplex onto a storage medium from a master
US7747812B2 (en) * 2005-12-22 2010-06-29 Pitney Bowes Inc. Method for manipulating state machine storage in a small memory space
US7555575B2 (en) * 2006-07-27 2009-06-30 Hitachi, Ltd. Method and apparatus for migrating data between storage volumes of different data pattern
US20080228998A1 (en) * 2007-03-16 2008-09-18 Spansion Llc Memory storage via an internal compression algorithm

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106527959A (zh) * 2015-09-10 2017-03-22 阿里巴巴集团控股有限公司 刷新磁盘输入输出请求的处理方法及设备
CN106527959B (zh) * 2015-09-10 2019-07-26 阿里巴巴集团控股有限公司 刷新磁盘输入输出请求的处理方法及设备
CN109074269A (zh) * 2016-07-08 2018-12-21 惠普发展公司,有限责任合伙企业 确定设备磨损率
US11429283B2 (en) 2016-07-08 2022-08-30 Hewlett-Packard Development Company, L.P. Determining a device wear-rate
CN115658625A (zh) * 2022-12-12 2023-01-31 北京象帝先计算技术有限公司 数据解压系统、图形处理系统、装置、设备及解压方法

Also Published As

Publication number Publication date
TW200841353A (en) 2008-10-16
RU2451993C2 (ru) 2012-05-27
KR101465816B1 (ko) 2014-11-26
JP2010518491A (ja) 2010-05-27
TWI528378B (zh) 2016-04-01
WO2008095134A1 (en) 2008-08-07
EP2108151A4 (en) 2012-12-26
JP5452233B2 (ja) 2014-03-26
CN101595461B (zh) 2012-07-04
RU2009129412A (ru) 2011-02-10
KR20090117919A (ko) 2009-11-16
EP2108151B1 (en) 2014-09-24
US20080183918A1 (en) 2008-07-31
EP2108151A1 (en) 2009-10-14
US8560760B2 (en) 2013-10-15
BRPI0806587A2 (pt) 2014-05-13

Similar Documents

Publication Publication Date Title
CN101595461B (zh) 延长闪存驱动器使用寿命
CN1329841C (zh) 建立和恢复图像文件的方法和系统
US9081691B1 (en) Techniques for caching data using a volatile memory cache and solid state drive
CN101799742B (zh) 用于在存储系统之间转移精简配置卷的方法和装置
US7840536B1 (en) Methods and apparatus for dynamic journal expansion
US8990588B2 (en) Storage system, storage control apparatus, and storage control method
US20080016121A1 (en) Method, an apparatus and a system for managing a snapshot storage pool
CN104395904A (zh) 高效的数据对象存储和检索
CN104285214A (zh) 混合储存集合块跟踪
CN102741820A (zh) 虚拟存储器的后台迁移
EP2711841A1 (en) Data processing method, device and system based on block storage
WO2014007249A1 (ja) I/oノード及び複数の計算ノードに備えられたキャッシュメモリの制御方法
CN101878471A (zh) 数据存储空间恢复系统和方法
CN111124255B (zh) 数据存储方法、电子设备和计算机程序产品
US11263080B2 (en) Method, apparatus and computer program product for managing cache
US8850161B2 (en) Method of improving performance of a data storage device
JPWO2014199493A1 (ja) ストレージシステム及びストレージ制御方法
CN101566929B (zh) 虚拟磁盘驱动系统和方法
US20150134875A1 (en) Maintaining at least one journal and/or at least one data structure by circuitry
US11397530B2 (en) Techniques for prolonging lifespan of storage drives
US11288006B2 (en) Storage system and volume copying method where changes to address conversion table is rolled back
CN103003805A (zh) 总线适配器卡的定制
CN112764662A (zh) 用于存储管理的方法、设备和计算机程序产品
CN111752475B (zh) 在存储服务器中进行数据存取管理的方法与装置
KR100472207B1 (ko) 다중 레이드 제어기를 통한 데이터 분산 공유 레이드 제어시스템

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: 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
TR01 Transfer of patent right

Effective date of registration: 20150507

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.