CN102203717A - 固态驱动器优化器 - Google Patents

固态驱动器优化器 Download PDF

Info

Publication number
CN102203717A
CN102203717A CN2008801104462A CN200880110446A CN102203717A CN 102203717 A CN102203717 A CN 102203717A CN 2008801104462 A CN2008801104462 A CN 2008801104462A CN 200880110446 A CN200880110446 A CN 200880110446A CN 102203717 A CN102203717 A CN 102203717A
Authority
CN
China
Prior art keywords
free space
ssd
threshold value
chip size
space fragment
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.)
Pending
Application number
CN2008801104462A
Other languages
English (en)
Inventor
巴希尔·托马斯
克雷格·詹森
安德鲁·斯塔弗
萨托什·瑞曼库缇
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.)
Diskeeper Corp
Original Assignee
Diskeeper 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 Diskeeper Corp filed Critical Diskeeper Corp
Publication of CN102203717A publication Critical patent/CN102203717A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0638Organizing or formatting or addressing of data
    • 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
    • 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/061Improving I/O performance
    • 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]
    • 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/1016Performance improvement

Abstract

描述了用于优化固态驱动器的方法。该方法涉及判断SSD上的自由空间碎片是否小于阈值碎片大小。如果SSD上的自由空间碎片小于阈值碎片大小,则消除自由空间碎片。如果SSD上的自由空间碎片不小于阈值碎片大小,则保留自由空间碎片以用于存储数据。对小于阈值碎片大小的自由空间碎片的消除导致了当写入到SSD时更少数目的自由空间碎片被使用,实现了改进的SSD性能。

Description

固态驱动器优化器
优先权的要求
本申请要求2007年10月5日递交的美国临时专利申请序列号No.60/978,086以及2008年10月3日递交的美国非临时专利申请序列号No.12/244,771的优先权。
通过引用的结合
本申请由此通过引用而结合2006年10月10日递交的美国专利申请序列号No.11/546,072、2006年10月10日递交的美国专利申请序列号No.11/546,514、以及2006年6月19日递交的美国专利申请序列号No.11/471,466。
技术领域
本发明一般地涉及固态驱动器。更具体地,本发明涉及优化固态驱动器。
背景技术
这部分中描述的途径是可被实行的途径,但未必是先前已被想到或实行的途径。因此,除非以另外的方式指示,否则不应当假设这部分中描述的任何途径仅仅由于在此部分中对它们的包括而适合作现有技术。
也可被称作固态盘的固态驱动器(SSD)是利用易失性或非易失性的固态存储器来存储数据的存储装置。固态存储器包括基于半导体的电子组件。固态驱动器可包括不同类型的存储元件,包括但不限于静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、参数随机存取存储器(Parameter Random Access Memory)(PRAM)、FLASH存储器(例如NOR FLASH存储器和NAND FLASH存储器)或者相变存储器(PCM)。
因为SSD没有任何移动部件,所以SSD显著降低了机械故障的风险。较少的机械故障产生了改进的系统可靠性。此外,由于缺少移动部件,SSD相比于标准的旋转介质硬驱动器提供了更低的读写寻找时间。因此,SSD允许更高的顺序和随机的数据读写速率。
虽然SSD上没有移动部件,但是由于装置限制以及可能的自由空间碎片(free space fragment)而仍然存在性能问题。例如,基于性能的限制可以是SSD在任何给定时间段中可执行的写操作的有限次数。当SSD正在向大量小的自由空间碎片写入时,文件必须被分段成很多不同的片(piece)以用于存储在SSD上。因为对每个自由空间碎片的写入可能需要擦除操作并且需要写入操作,以及SSD可执行的写操作的数目可能是有限的,所以大量的小的自由空间碎片可导致由于写操作的有限数目而不能使用SSD的最大顺序写速度。
在正常计算机使用中,诸如WindowsTM(WindowsTM是MicrosoftCorporation,Seattle,WA的商标)之类的现代操作系统创建了大量的自由空间碎片。例如,浏览因特网可能潜在地创建许多不想要的自由空间碎片。web浏览器在它被使用的时候创建很多临时文件。大多数临时文件是小的,具有短的寿命,并且例如在浏览器高速缓存清除等期间被频繁地删除。然而,所有的临时文件不是同时被删除或是以创建它们的顺序来删除。此现象加速了自由空间碎片的创建。
此外,当新创建的文件正被存储到盘中时,文件系统一般开始将新创建的文件写进(a)最新近释放的自由空间碎片或者(b)第一个被识别的自由空间碎片,而不考虑自由空间碎片的大小。如果要写入的文件大并且所识别的自由空间碎片小,则文件被拆分成与所识别的自由空间碎片相对应的很多片段,并且需要多个写操作以将文件存储到盘中。除了存储实际文件所需要的写操作以外,还可能需要多个写操作以便当文件被存储在多个片段中时更新文件系统结构。
附图说明
在附图的图中,本发明被例示作为示例而不作为限制,并且其中类似的标号指称类似的元素,并且其中:
图1是示出根据一个实施例的固态驱动器和固态驱动器优化器的框图。
图2是示出用于优化固态驱动器的实施例的流程图。
图3是示出可用在实现本发明的一个实施例中的计算机系统的框图。
具体实施方式
在下面的描述中,出于说明的目的,陈述了很多具体细节以提供对本发明的透彻理解。然而,将会显而易见的是可在没有这些具体细节的情况下实践本发明。在其他实例中,公知的结构和装置以框图的形式来示出,以避免不必要地遮掩了本发明。
此后描述了几个特征,每个特征都可彼此独立地被使用或者结合其他特征的任何组合来使用。然而,任何个别的特征可能不解决以上所讨论的任何问题,或者可能仅仅解决以上所讨论的问题之一。以上所讨论的一些问题可能不被这里所描述的任何特征充分地解决。虽然提供了标题,但是与特定标题有关的、但是未在具有此标题的部分中被找到的信息还可在说明书中的别处被找到。
概述
提供了用于优化固态驱动器(SSD)的方法。如果正被写入的自由空间碎片对于整个文件而言太小,则将文件写入SSD可需要多个擦除和写入操作。例如,如果文件正被写入其中的、SSD上的每个自由空间碎片比文件的大小小得多,则文件可被拆分成大量的片段,并且写入操作可被需要用于每个自由空间碎片直到整个文件被写入到SSD。因此,本发明通过消除小的自由空间碎片来优化SSD,其中通过利用数据填充自由空间碎片或者通过使得自由空间碎片更大来消除小的自由空间碎片,从而不影响写入性能。这使操作系统顺序地或至少在更少的自由空间碎片中写入文件,这样就给出了最佳写入性能。
根据一个实施例,阈值碎片大小被用作用于确定消除SSD上的自由空间碎片还是保留SSD上的自由空间碎片以用于数据存储的基础。自由空间碎片的大小与阈值碎片大小相比较。如果自由空间碎片小于阈值碎片大小,则自由空间碎片被消除,从而SSD不使用自由空间碎片来写入文件的片段。如果自由空间碎片至少像阈值碎片大小那样大,则自由空间碎片被保留用于SSD的数据存储。消除小于阈值碎片大小的自由空间碎片导致文件被写入进(一个或多个)更大的自由空间碎片,并且因此需要用于写入文件的更少数目的自由空间碎片以及更少数目的写操作。通过将每个时间段的写操作的数目减小至小于或等于SSD可实际执行的写操作的数目,SSD的性能被改进。因为经优化的SSD所需要的写操作的数目小于可执行的写操作的数目,所以SSD的经改进的性能不被可执行的写操作的数目所限制。在一个实施例中,至少基于SSD的顺序写入速度以及SSD上每个时间段所允许的输入/输出(I/O)操作的数目来确定阈值碎片大小。例如,可至少部分地通过将SSD的顺序写入速度除以SSD的每秒I/O数来确定阈值碎片大小。
在一个实施例中,当写入文件和对应于最佳性能的阈值碎片大小可被使用时,几个不同的阈值碎片大小可被测试。可周期性地或基于预定条件来执行对阈值碎片大小的优化,其中预定条件例如SSD的低性能水平的发生或者自由空间碎片的预定数目的发生。
虽然具体的组件在这里被陈述为执行方法步骤,但是在其他实施例中,代表所指定的组件而起作用的代理(agent)或机制可执行方法步骤。此外,虽然参考单个系统上的组件来讨论了本发明,但是可利用分布在多个系统上的组件来实现本发明。此外,虽然参考固态驱动器(SSD)来讨论了本发明,但是本发明的实施例可以适用于任何存储驱动器(例如旋转盘驱动器)。
本发明的实施例还包括如下的任何系统:该系统包括用于执行这里所描述的方法步骤的装置。本发明的实施例还包括具有指令的计算机可读介质,上述指令当被执行时使这里所描述的方法步骤被执行。
自由空间碎片的消除
在文件系统水平提及的自由空间碎片是未被指为包含数据的并且可用于分配的存储器或存储区域的块。当存储器中存储的对象例如通过去除对存储器空间的引用而被删除时,可生成自由空间碎片。因为对象可能不以创建它们的相同顺序来删除,所以与所删除的对象相对应的自由空间碎片被创建在数据被存储并被引用的存储器的块之间。对每个自由空间碎片的写入可能需要擦除操作并且需要写入操作。因此,如果自由空间碎片太小而不能容纳文件,则文件不得不被分段并被写进很多不同的自由空间碎片。自由空间碎片越小,写入文件所需的片段化便越大。因为每个时间段驱动器可执行的写操作的数目是有限的,所以大量的小的自由空间碎片可能需要高级别的文件分段,并且防止了对驱动器最大顺序写入速度的使用。因此,在本发明的一个实施例中,小于所指定的阈值碎片大小的自由空间碎片被消除。这些自由空间碎片的消除减小了文件系统对其进行写入的自由空间碎片的数目。
消除自由空间碎片可涉及利用另一文件的至少一部分来填充自由空间碎片。例如,朝向盘的末端的文件、很少使用的文件或者临时填充物文件可被用来填充自由空间碎片。通过存储另一文件的至少一部分来填充自由空间碎片消除了可潜在影响SSD性能的自由空间碎片。消除自由空间碎片还可涉及将自由空间碎片与一个或多个相邻自由空间碎片进行归并,以使得所归并的自由空间碎片至少像阈值碎片大小那样大。在一个实施例中,在消除自由空间碎片所需要的资源遵从空闲准则(idleness criteria)之后,自由空间碎片被消除。例如,如果资源的利用在预定百分比之下,则可满足空闲准则。在另一示例中,空闲准则可涉及资源使用的频率,其中预定的低的使用频率满足空闲准则。对空闲准则和基于资源的调度的更详细描述在2006年10月10日递交的美国专利申请序列号No.11/546,514中被描述,该美国专利申请通过引用而被结合。
系统体系结构
虽然在此描述了具体的计算机体系结构,但是本发明的其他实施例适用于可用来基于阈值碎片大小而优化固态驱动器(SSD)的任何体系结构。
图1示出根据本发明的一个或多个实施例的SSD(100)和SSD优化器(optimizer)(125)。如图1所示,SSD(100)包括接口(105)、存储器控制器(110)和固态存储器(115)。
接口
接(105)一般地表示可用来与SSD(100)交换数据(例如存储数据或检索数据)的任何连接。例如,接口(105)可以是SSD(100)与用于数据传送的母板之间的连接。接口(105)可以以并行形式或以比特串行形式来承载数据字。接口(105)的示例包括但不限于高级技术附件(ATA)(例如串行高级技术附件(SATA)和并行高级技术附件(PATA))或者智能驱动电子设备(Intelligent Drive Electronics)(IDE)或者小计算机系统接口(SCSI)。接口(105)可使外部组件能利用存储器控制器(110)通过命令来直接访问固态存储器(115)或间接访问固态存储器(115)。
存储器控制器
在一个或多个实施例中,存储器控制器(110)一般地表示包括管理去向固态存储器(115)的数据流和来自固态存储器(115)的数据流的逻辑的组件。虽然存储器控制器(110)被示为居于SSD(100)自身,但是存储器控制器(110)可居于根据一个实施例的另一组件。存储器控制器(110)可经由一组多路复用器和解复用器(demultiplexer)或者预定义的协议(ATA)来连接到固态存储器(115),以便减小将存储器控制器(110)连接至固态存储器(115)所需要的导线数目和/或复杂度。
在一个实施例中,存储器控制器(110)可具有对数据存储在固态存储器(115)上的地方的控制。例如,存储器控制器(110)可包括逻辑以确定固态存储器(115)的哪些部分可用于数据存储以及固态存储器(115)的哪些部分不可用于数据存储。
存储器控制器(110)可通过文件系统而从正在在连接至SSD的装置上运行的一个或多个应用接收写入、检索或删除数据块的命令。存储器控制器(110)还可通过文件系统或操作系统而从示为连接到SSD(100)的固态驱动器优化器(125)接收命令。
固态存储器
在一个或多个实施例中,固态存储器(115)一般地表示包括了保留数字数据的逻辑的数据存储组件。固态存储器(115)包括半导体装置,该半导体装置包括保留数字数据的逻辑和硬件。例如,固态存储器(115)可将比特存储在相变RAM、单层单元(single level cell)(SLC)或多层单元(multi-level cell)(MLC)中。可基于比特是否正存储在固态存储器(115)内的SLC或MLC中来差别地计算上述的阈值碎片大小(120)。此外,还可基于多层单元中层的数目来差别地计算阈值碎片大小(120)。固态存储器(115)可被实现为静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、参数随机存取存储器(PRAM)、FLASH存储器(例如NOR FLASH存储器和NAND FLASH存储器)、相变存储器(PCM)或者另一类型的合适存储器。
固态驱动器优化器
在一个或多个实施例中,固态驱动器优化器(125)一般地表示用于优化SSD(100)以便改进SSD性能的软件和/或硬件。例如,SSD优化器(125)可与在连接至SSD(100)的装置上运行的软件应用相对应。在计算机系统中,固态优化器(125)可以是与在SSD(100)上存储数据的其他应用并发地运行的应用。在另一示例中,SSD优化器(125)可与具有优化SSD(100)的嵌入逻辑的装置相对应。虽然在图1中被示为连接至SSD(100),但是根据本发明的一个实施例,SSD优化器(125)还可与SSD(100)自身上的软件和/或组件相对应。
如上所述,SSD优化器(125)包括通过消除小于阈值碎片大小(120)的自由空间碎片从而强制操作系统顺序地写入数据或文件来优化SSD(100)的逻辑。SSD优化器(125)可由用户激活,可周期性地被激活,或者可基于(一个或多个)预定条件(例如SSD(100)的预定分段水平或者SSD(100)的低性能水平)而被激活。SSD优化器(125)还可由低的资源使用率(resource usage)来激活。例如,如果在优化SSD(100)中由SSD优化器(125)使用的资源(例如处理器)具有低的当前利用水平,则SSD优化器(125)可被激活。在一个实施例中,多个条件可被要求组合起来以用于激活SSD优化器(125)(例如SSD(100)的低性能水平和资源的低的当前利用水平)。
在一个实施例中,SSD优化器(125)可包括调度被执行为计算机微作(micro-job)的任何任务的逻辑。在2006年6月19日递交的美国专利申请序列号No.11/471,466以及2006年10月10日递交的美国专利申请序列号No.11/546,072中描述了计算机微作业,上述美国专利申请通过引用而被结合。因此,由SSD优化器(125)执行以优化SSD(100)的任务可在时间上被执行为不同的计算机微作业。
阈值碎片大小
在一个或多个实施例中,示为存储在SSD优化器(125)上的阈值碎片大小(120)与在执行上述任务中由SSD优化器(125)使用的特定自由空间碎片大小相对应。具体地,小于阈值碎片大小(120)的自由空间碎片被SSD优化器(125)消除,并且大于或等于阈值碎片大小(120)的自由空间碎片被SSD优化器(125)保留用于数据存储。在消除小于阈值碎片大小(120)的自由空间碎片中对阈值碎片大小(120)的使用可强制文件系统在SSD的存储器写入每秒IO数(IO per second)(IOPS)的限制内、在单个自由空间碎片或多个自由空间碎片中顺序地写入文件,这没有影响基于SSD的写入每秒IO数的SSD性能。
虽然被示为存储在SSD优化器(125)上,但是阈值碎片大小(120)可由任何组件(例如SSD优化器(125)、SSD(100)或另一合适装置)保存。阈值碎片大小可由软件应用(例如SSD优化器)保存为变量,或者可被硬连线(hard wire)到装置上。例如,阈值碎片大小可被硬连线到SSD(100)上,如果SSD优化器被实现为装置则阈值碎片大小可被硬连线到SSD优化器(125)上,如果SSD优化器被实现为系统上运行的软件应用则阈值碎片大小可被硬连线到执行SSD优化器(125)的系统上,或者阈值碎片大小可被硬连线到另一合适装置上。阈值碎片大小(120)还可从可由用户控制的配置区域(configuration area)获得。
在一个实施例中,阈值碎片大小(120)是由SSD优化器(125)、存储器控制器(110)、用户或由另一合适实体计算的。在一个实施例中,可基于每个时间段SSD(100)可执行的顺序写入速度或写操作数目来计算阈值碎片大小(120)。计算阈值碎片大小的(一个或多个)步骤中的一个可涉及将顺序写入速度除以在给定时间段中SSD可执行的写操作的数目。例如,如果顺序写入速度是40MB/秒并且可由SSD(100)执行的写操作的数目是10/秒,则通过将40除以10等于4MB来计算阈值碎片大小。因此,阈值碎片大小可被设置为4MB。此外,计算阈值碎片大小还可涉及额外的计算(例如乘以常数3或4以产生12MB或16MB)以考虑到实际性能与理论性能或速度之间的差异。
用于SSD的阈值碎片大小(120)可动态地被确定,或者可以是SSD优化器(125)所使用的静态值。例如,硬连线的阈值碎片大小(120)可永久地用于优化SSD(100)。可替代地,每次SSD(100)被优化或者周期性地被优化时,阈值碎片大小(120)都可被重新计算或获得。
在一个实施例中,不同的阈值碎片大小可被用来确定最佳的性能。例如,阈值碎片大小的变化的值可用于通过消除SSD(100)上的自由空间碎片来优化SSD(100)。可在优化SSD(100)之后的时间段中测量此后的性能。在优化之后产生最佳性能的阈值碎片大小可被设置为阈值碎片大小(120)。
在一个实施例中,一旦阈值碎片大小(120)被设置,对阈值碎片大小(120)的重复测试(retest)就可被周期性地执行。在重复测试期间,高于阈值碎片大小(120)的值和低于阈值碎片大小(120)的值可临时地用于对SSD(100)的优化。在使用更高和/或更低的阈值碎片大小之后,SSD(100)的随后性能可被评价以确定阈值碎片大小(120)是否应当被增大、减小或无修改地保留。
优化固态驱动器
图2示出根据一个或多个实施例的、用于利用阈值碎片大小来优化固态驱动器(SSD)的流程图。下面描述的一个或多个步骤可被省略、重复和/或以不同顺序来执行。因此,图2所示的步骤的具体排列不应当被理解为限制了本发明的范围。
在一个实施例中,可由资源可用性检查领先于用于优化固态驱动器的下面描述的一个或多个步骤。可进行资源可用性检查以确保执行步骤所需的资源是可用的,满足如上所述的空闲准则。此外,下面描述的一个或多个步骤可被调度为如上所述的计算机微作业。
起初,判断是否优化SSD(步骤202)。优化SSD的决定可基于一个或多个条件。例如,优化SSD的决定可基于低的SSD性能的发生、预定分段水平的发生(例如自由空间碎片的数目,自由空间碎片的大小小于阈值碎片大小,等等)、资源可用性、基于时间的调度器(例如周期性的优化)、文件分段水平,或者基于任何其他的合适准则。如果文件变得太片段化了,则SSD优化器还可对文件进行碎片整理(defragment),这使得文件的访问更加高效和可靠。
接下来,搜索SSD以将自由空间碎片识别作用于消除的候选物(步骤204)。搜索自由空间碎片可涉及搜索文件系统或操作系统API,或者搜索未被文件系统引用的存储地址或被编入索引作为可用于分配的存储块位置的存储地址。可以以顺序的顺序、存储解除分配的顺序,或者以任何其他的合适顺序来搜索文件系统。在一个实施例中,自由空间碎片可以以从最小到最大的顺序被识别为用于消除的候选物,从而最小的自由空间碎片可被首先消除。
接下来,作出判断:被识别为用于删除的候选物的自由空间碎片是否小于阈值碎片大小(步骤206)。如果所识别的自由空间碎片不是小于阈值碎片大小的,则所识别的自由空间碎片适用于写入文件并且因此所识别的自由空间碎片被保留用于写入。然而,如果自由空间碎片是小于阈值碎片大小的,则所识别的自由空间碎片不适用于数据存储并且因此如上所述地被消除(步骤208)。还可通过将自由空间碎片与一个或多个相邻自由空间碎片进行归并以创建被归并的自由空间碎片,来消除所识别的自由空间碎片,其中所归并的自由空间碎片至少像阈值碎片大小那样大。
接下来,可判断是否继续对SSD的优化(步骤210)。可作出决定以继续优化直到所有的SSD都已被搜索了小于阈值碎片大小的自由空间碎片。在另一示例中,只要资源是高度可用的(例如在非高峰小时数期间),就可优化SSD。还可基于计时器来优化SSD,其中一块时间被专用于优化SSD。
虽然以上步骤以顺序的顺序被描述,以用于消除小于阈值碎片大小的每个自由空间碎片,但是本发明的实施例包括执行上述任务的任何合适方式。例如,所有的自由空间碎片都可首先被识别作用于消除的候选物。此后,所识别的自由空间碎片中的每一个可与阈值碎片大小相比较,并且如果小于阈值碎片大小则被消除。
硬件概述
图3是示出了其上可实现本发明的一个实施例的计算机系统300的框图。计算机系统300包括用于通信信息的总线302或其他通信机制、以及用于处理信息的与总线302耦合的处理器304。计算机系统300还包括诸如随机存取存储器(RAM)或其他动态存储装置之类的主存储器306,主存储器306耦合至总线302以用于存储信息以及要由处理器304执行的指令。主存储器306还可用于存储要由处理器304执行的指令的执行期间的临时变量或其他中间信息。计算机系统300还包括用于存储静态信息和用于处理器304的指令的、耦合至总线302的只读存储器(ROM)308或其他静态存储装置。诸如磁盘或光盘之类的存储装置310被设置并且被耦合至总线302以用于存储信息和指令。
计算机系统300可经由总线302耦合至用于向计算机用户显示信息的、诸如阴极射线管(CRT)之类的显示器312。包括字母数字和其他键的输入装置314耦合至总线302以用于向处理器304通信信息和命令选择。另一类型的用户输入装置是诸如鼠标、跟踪球或光标方向键之类的光标控制316,光标控制316用于向处理器304通信方向信息和命令选择并且用于控制显示器312上光标的移动。此输入装置通常具有两个轴——第一轴(例如x)和第二轴(例如y)中的两个自由度,这使装置能指定平面中的位置。
本发明与用于实现这里所描述的技术的计算机系统300的使用有关。根据本发明的一个实施例,响应于处理器304执行主存储器306中所包含的一个或多个指令的一个或多个序列,这些技术被计算机系统300执行。这样的指令可从诸如存储装置310之类的另一机器可读介质被读进主存储器306。主存储器306中包含的指令的序列的执行使处理器304执行这里所描述的处理步骤。在替代实施例中,硬连线的电路可代替实现本发明的软件指令而被使用或者可与实现本发明的软件指令组合使用。因此,本发明的实施例不限于硬件电路和软件的任何具体组合。
这里所用的术语“机器可读介质”是指参与提供使机器以具体方式操作的数据的任何介质。在利用计算机系统300实现的一个实施例中,各种机器可读介质例如被涉及在提供指令给处理器304以用于执行之中。这样的介质可采取很多形式,包括但不限于存储介质和传输介质。存储介质既包括非易失性介质又包括易失性介质。非易失性介质例如包括光盘或磁盘,诸如存储装置310。易失性介质包括动态存储器,诸如主存储器306。传输介质包括同轴线缆、铜导线和纤维光学,包括了包含总线302在内的导线。传输介质还可采取声波或光波的形式,例如在无线电波和红外数据通信期间所生成的声波或光波。所有这样的介质必须是现实的,以使得介质所承载的指令能够被将指令读进机器的物理机制所检测。
普通形式的机器可读介质例如包括软盘、柔性盘、硬盘、磁带、或任何其他的磁介质,CD-ROM、任何其他的光介质,穿孔卡、纸带、具有孔洞图案的任何其他的物理介质,RAM、PROM和EPROM、FLASH-EPROM、任何其他的存储器芯片或盒,如在下文中所描述的载波,或者计算机可从其读取的任何其他介质。
各种形式的机器可读介质可被涉及在将一个或多个指令的一个或多个序列携带至处理器304以用于执行之中。例如,指令起初可承载在远程计算机的磁盘上。远程计算机可将指令载入它的动态存储器并且利用调制解调器通过电话线发送指令。对计算机系统300而言本地的调制解调器可接收电话线上的数据并且使用红外发送器将数据转换为红外信号。红外检测器可接收红外信号中载有的数据,并且适当的电路可将数据置于总线302上。总线302将数据运载到主存储器306,处理器304从主存储器306检索和执行指令。由主存储器306接收的指令可以可选地存储在存储装置310上,或者在处理器304执行之前或者在处理器304执行之后。
计算机系统300还包括耦合至总线302的通信接口318。通信接口318提供了耦合至网络链路320的双路数据通信,其中网络链路320连接至本地网322。例如,通信接口318可以是综合业务数字网(ISDN)卡或者提供到相应类型的电话线的数据通信连接的调制解调器。作为另一示例,通信接口318可以是提供到兼容LAN的数据通信连接的局域网(LAN)卡。还可实现无线链路。在任何这样的实现方式中,通信接口318发送和接收电的、电磁的或光学的信号,这些信号载有表示各种类型的信息的数字数据流。
网络链路320通常提供通过一个或多个网络到其他数据装置的数据通信。例如,网络链路320可提供通过本地网322到主机324或到由因特网服务提供者(ISP)326操作的数据设备的连接。ISP 326转而通过现在通常被称为“因特网”328的世界范围的分组数据通信网络来提供数据通信服务。本地网322和因特网328都使用载有数字数据流的电的、电磁的或光学的信号。载有去往计算机系统300和来自计算机系统300的数字数据的、通过各种网络的信号以及网络链路320上并通过通信接口318的信号是输送信息的载波的示例性形式。
计算机系统300可通过(一个或多个)网络、网络链路320和通信接口318来发送消息和接收数据,该消息和该数据包括程序代码。在因特网示例中,服务器330可通过因特网328、ISP 326、本地网322和通信接口318来发送所请求的用于应用程序的代码。
所接收的代码可当它被接收到时由处理器304运行,并且/或者可被存储在存储装置310或其他非易失性存储装置中以用于以后的运行。以此方式,计算机系统300可获得处于载波形式的应用代码。
扩展和替换
在上述说明书中,已参考很多具体细节描述了本发明的实施例,上述很多具体细节可一个实现方式一个实现方式地变化。因此,作为本发明的并且申请人希望作为本发明的事物的唯一和排他的指示物是从本申请发布的权利要求组,该权利要求组处于这样的权利要求发布的具体形式,并且包括任何随后的修正。这里针对这样的权利要求中包含的术语而明白陈述的任何限定将会支配权利要求中所使用的这样的术语的意义。因此,未在权利要求中明白地列举的限制、元素、性质、特征、优点或属性无论如何都不应当限制这样的权利要求的范围。因此说明书和附图要以例示性的意义来看待而不是以限制性的意义来看待。

Claims (17)

1.一种方法,包括:
判断SSD上的自由空间碎片是否小于阈值碎片大小;
如果所述SSD上的所述自由空间碎片小于所述阈值碎片大小,则消除所述自由空间碎片;以及
如果所述SSD上的所述自由空间碎片不小于所述阈值碎片大小,则保留所述自由空间碎片以用于存储数据。
2.根据权利要求1所述的方法,其中所述阈值碎片大小是至少基于以下各项中的一个或多个来计算的:
所述SSD的顺序写入速度;或者
所述SSD的每秒输入/输出(I/O)数。
3.根据权利要求2所述的方法,其中所述阈值碎片大小是利用一个或多个步骤来计算的,所述一个或多个步骤包括将所述SSD的所述顺序写入速度除以所述SSD的所述每秒I/O数。
4.根据权利要求1所述的方法,其中消除所述自由空间碎片包括:
确定消除所述自由空间碎片所需要的一个或多个资源的使用何时遵从空闲准则;以及
响应于所述一个或多个资源的所述使用遵从所述空闲准则,而消除所述自由空间碎片。
5.根据权利要求1所述的方法,其中消除所述自由空间碎片包括:
利用一个文件的至少一部分来填充所述自由空间碎片。
6.根据权利要求5所述的方法,其中所述文件是以下各项中的一个或多个:
临时填充物文件;或者
很少使用的文件。
7.根据权利要求1所述的方法,其中消除所述自由空间碎片包括将所述自由空间碎片与相邻的自由空间碎片进行归并以获得被归并的自由空间碎片,其中所述被归并的自由空间碎片大于所述阈值碎片大小。
8.根据权利要求1所述的方法,其中所述阈值碎片大小是通过以下步骤而获得的:
从用户接收所述阈值碎片大小;
计算所述阈值碎片大小;
从所述SSD内的硬连线元件获得所述阈值碎片大小;
通过测试用于所述阈值碎片大小的各种值并且选择产生最佳性能的阈值碎片大小,来确定所述阈值碎片大小。
9.一种固态驱动器(SSD)优化器,包括:
用于判断所述SSD上的自由空间碎片是否小于阈值碎片大小的装置;
用于如果所述SSD上的所述自由空间碎片小于所述阈值碎片大小,则消除所述自由空间碎片的装置;以及
用于如果所述SSD上的所述自由空间碎片不小于所述阈值碎片大小,则保留所述自由空间碎片以用于存储数据的装置。
10.根据权利要求9所述的SSD优化器,还包括用于至少基于以下各项中的一个或多个来计算所述阈值碎片大小的装置:
所述SSD的顺序写入速度;或者
所述SSD的每秒输入/输出(I/O)数。
11.根据权利要求10所述的SSD优化器,其中所述用于计算所述阈值碎片大小的装置包括用于将所述SSD的所述顺序写入速度除以所述SSD的所述每秒I/O数以确定所述阈值碎片大小的装置。
12.根据权利要求9所述的SSD优化器,其中所述用于消除所述自由空间碎片的装置包括:
用于确定消除所述自由空间碎片所需要的一个或多个资源的使用何时遵从空闲准则的装置。
13.根据权利要求9所述的SSD优化器,其中所述用于消除所述自由空间碎片的装置包括:
用于利用一个文件的至少一部分来填充所述自由空间碎片的装置。
14.根据权利要求13所述的SSD优化器,其中所述文件是以下各项中的一个或多个:
临时填充物文件;或者
很少使用的文件。
15.根据权利要求9所述的SSD优化器,其中所述用于消除所述自由空间碎片的装置包括用于将所述自由空间碎片与相邻的自由空间碎片进行归并以获得被归并的自由空间碎片的装置,其中所述被归并的自由空间碎片大于所述阈值碎片大小。
16.根据权利要求9所述的SSD优化器,还包括:
用于从用户接收所述阈值碎片大小的装置;
用于计算所述阈值碎片大小的装置;
用于从所述SSD内的硬连线元件获得所述阈值碎片大小的装置;
用于通过测试用于所述阈值碎片大小的各种值并且选择产生最佳性能的阈值碎片大小,来确定所述阈值碎片大小的装置。
17.一种计算机可读存储介质,所述计算机可读存储介质包括一个或多个指令序列,所述一个或多个指令序列当被一个或多个处理器执行时使所述一个或多个处理器执行权利要求1-8中的任一个所述的方法。
CN2008801104462A 2007-10-05 2008-10-03 固态驱动器优化器 Pending CN102203717A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US97808607P 2007-10-05 2007-10-05
US60/978,086 2007-10-05
PCT/US2008/078823 WO2009046353A1 (en) 2007-10-05 2008-10-03 Solid state drive optimizer

Publications (1)

Publication Number Publication Date
CN102203717A true CN102203717A (zh) 2011-09-28

Family

ID=40097481

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008801104462A Pending CN102203717A (zh) 2007-10-05 2008-10-03 固态驱动器优化器

Country Status (10)

Country Link
US (1) US8086819B2 (zh)
EP (1) EP2195730A1 (zh)
JP (1) JP2010541107A (zh)
KR (1) KR20100071063A (zh)
CN (1) CN102203717A (zh)
AU (1) AU2008308549B9 (zh)
CA (1) CA2700872A1 (zh)
RU (1) RU2479013C2 (zh)
TW (1) TW200937276A (zh)
WO (1) WO2009046353A1 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875033B2 (en) * 2009-05-12 2018-01-23 International Business Machines Corporation Apparatus and method for minimizing data storage media fragmentation
US8285955B2 (en) * 2009-10-16 2012-10-09 Lenovo (Singapore) Pte. Ltd. Method and apparatus for automatic solid state drive performance recovery
KR101638061B1 (ko) * 2009-10-27 2016-07-08 삼성전자주식회사 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법
KR20110046243A (ko) * 2009-10-27 2011-05-04 삼성전자주식회사 사용자 장치 및 그것의 맵핑 데이터 관리 방법
US8638010B2 (en) * 2010-02-17 2014-01-28 Integrated Device Technology, Inc. Systems, devices, and methods for providing backup power to a load
US8380949B2 (en) 2010-05-20 2013-02-19 International Business Machines Corporation Managing write operations to an extent of tracks migrated between storage devices
US8615640B2 (en) 2011-03-17 2013-12-24 Lsi Corporation System and method to efficiently schedule and/or commit write data to flash based SSDs attached to an array controller
US8639900B2 (en) * 2011-05-25 2014-01-28 International Business Machines Corporation Defragmentation of data storage pools
JP5579135B2 (ja) * 2011-07-29 2014-08-27 株式会社東芝 データ記憶装置、メモリ制御装置及びメモリ制御方法
US9026503B2 (en) * 2012-02-29 2015-05-05 Netapp, Inc. Fragmentation control for performing deduplication operations
US8990477B2 (en) * 2012-04-19 2015-03-24 Sandisk Technologies Inc. System and method for limiting fragmentation
US9218281B2 (en) 2012-05-04 2015-12-22 Seagate Technology Llc Maintaining ordering via a multi-level map of a solid-state media
US9443591B2 (en) 2013-01-23 2016-09-13 Seagate Technology Llc Storage device out-of-space handling
US8918583B2 (en) * 2012-12-20 2014-12-23 Virtium Technology, Inc. Adapting behavior of solid-state drive using real usage model
US20140359196A1 (en) * 2013-05-31 2014-12-04 Daniel J. Ragland On-the-fly performance adjustment for solid state storage devices
CN103631940B (zh) * 2013-12-09 2017-02-08 中国联合网络通信集团有限公司 一种应用于hbase数据库的数据写入方法及系统
JP6289128B2 (ja) * 2014-01-30 2018-03-07 キヤノン株式会社 情報処理装置及びその制御方法、並びにプログラム
US10621041B2 (en) * 2016-03-25 2020-04-14 Intel Corporation Methods and apparatus to assign indices and relocate object fragments in distributed storage systems
US9747106B1 (en) * 2016-09-30 2017-08-29 International Business Machines Corporation Allocating multiple operand data areas of a computer instruction within a program buffer
US11029856B2 (en) * 2018-03-02 2021-06-08 Qualcomm Incorporated Flash memory device with data fragment function
TWI687921B (zh) * 2019-02-01 2020-03-11 宏碁股份有限公司 主機、疊瓦式磁記錄硬碟及其運作方法
US11520663B2 (en) * 2019-09-04 2022-12-06 Waters Technologies Ireland Limited Techniques for analytical application installation optimization

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5675790A (en) * 1993-04-23 1997-10-07 Walls; Keith G. Method for improving the performance of dynamic memory allocation by removing small memory fragments from the memory pool
US6330583B1 (en) 1994-09-09 2001-12-11 Martin Reiffin Computer network of interactive multitasking computers for parallel processing of network subtasks concurrently with local tasks
JP4110593B2 (ja) * 1997-05-19 2008-07-02 ソニー株式会社 信号記録方法及び信号記録装置
JP3588231B2 (ja) * 1997-08-04 2004-11-10 東京エレクトロンデバイス株式会社 データ処理システム及びブロック消去型記憶媒体
US5987479A (en) * 1997-09-24 1999-11-16 Sony Corporation, Inc. Large block allocation for disk-based file systems
US6226728B1 (en) * 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
US7268774B2 (en) * 1998-08-18 2007-09-11 Candledragon, Inc. Tracking motion of a writing instrument
US6591287B1 (en) 1999-09-08 2003-07-08 Lucent Technologies Inc. Method to increase the efficiency of job sequencing from sequential storage
US7096327B2 (en) * 2000-03-24 2006-08-22 Koninklijke Philips Electronics N.V. System for and method of accessing blocks on a storage medium
US7170891B2 (en) * 2001-08-30 2007-01-30 Messenger Terabit Networks, Inc. High speed data classification system
US7076781B2 (en) 2002-05-31 2006-07-11 International Business Machines Corporation Resource reservation for large-scale job scheduling
US7451704B1 (en) * 2003-03-20 2008-11-18 The United States Of America As Represented By The Secretary Of The Army Multifunctional explosive fragmentation airburst munition
RU2280273C2 (ru) * 2003-07-16 2006-07-20 Открытое акционерное общество "Научно-производственное объединение "Прибор" Способ структурирования и записи цифровой информации и устройство для его осуществления
JP2005050192A (ja) * 2003-07-30 2005-02-24 Matsushita Electric Ind Co Ltd 情報記録システム
US20050240934A1 (en) 2004-04-21 2005-10-27 Hewlett-Packard Development Company, L.P. Task management based on system utilization
JP2006113938A (ja) * 2004-10-18 2006-04-27 Ricoh Co Ltd データの再配置方法と追加記録方法およびプログラム
CN101268449B (zh) * 2005-09-22 2012-04-04 松下电器产业株式会社 数据记录装置以及数据记录方法
US20070143759A1 (en) 2005-12-15 2007-06-21 Aysel Ozgur Scheduling and partitioning tasks via architecture-aware feedback information
GB2439577B (en) * 2006-06-30 2011-12-14 Data Equation Ltd Data processing

Also Published As

Publication number Publication date
EP2195730A1 (en) 2010-06-16
RU2479013C2 (ru) 2013-04-10
US20090094433A1 (en) 2009-04-09
US8086819B2 (en) 2011-12-27
TW200937276A (en) 2009-09-01
AU2008308549A2 (en) 2010-06-24
JP2010541107A (ja) 2010-12-24
RU2010112956A (ru) 2011-10-10
AU2008308549A1 (en) 2009-04-09
AU2008308549B9 (en) 2012-10-18
KR20100071063A (ko) 2010-06-28
WO2009046353A1 (en) 2009-04-09
CA2700872A1 (en) 2009-04-09
AU2008308549B2 (en) 2012-08-09

Similar Documents

Publication Publication Date Title
CN102203717A (zh) 固态驱动器优化器
US8874826B2 (en) Programming method and device for a buffer cache in a solid-state disk system
KR101574207B1 (ko) 데이터 저장 장치 및 그것의 데이터 저장 방법
AU2003286967B2 (en) Dual journaling store method and storage medium thereof
CN103294604A (zh) 闪存器件和使用闪存器件的电子设备
CN101800071A (zh) 固态盘设备及其编程失败处理方法
KR102559549B1 (ko) 메모리 시스템에서의 블록 상태를 관리하는 방법 및 장치
US20220269609A1 (en) Apparatus and method for improving input/output throughput of memory system
KR20200087488A (ko) 메모리 시스템에서의 비휘발성 메모리 블록 내 데이터를 삭제하는 방법 및 장치
US11106390B1 (en) Combining in-process reads to reduce die collisions
KR101070511B1 (ko) Ssd 컨트롤러 및 ssd 컨트롤러의 동작 방법
US11681638B2 (en) Method of synchronizing time between host device and storage device and system performing the same
CN115543860A (zh) 数据处理系统及其操作方法
CN108572924B (zh) 一种3d mlc闪存设备的请求处理方法
CN1732516B (zh) 双日志存储方法及其存储介质
KR20090053164A (ko) 상태 정보를 관리하는 플래시 메모리 제어 장치 및 방법
KR101897370B1 (ko) 페이지 교체 방법 및 페이지 교체 장치
CN112650691A (zh) 基于改变频率的分层数据存储和垃圾回收系统
EP3842916B1 (en) Method of scheduling jobs in storage device using pre-defined time and method of operating storage system including the same
US20230289087A1 (en) Read-disturb-based read temperature determination system
US20220342611A1 (en) Method, electronic device, and computer product for raid reconstruction
US20230229336A1 (en) Read-disturb-based read temperature time-based attenuation system
CN115705880A (zh) 无需数据传输配置非易失性存储器设备的方法和装置
CN117251101A (zh) 应用于存储器的映射关系的写入方法以及存储器
CN103902226A (zh) 数据写入方法与系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: American California

Applicant after: Diskeeper Corp.

Address before: American California

Applicant before: Diskeeper Corp.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: DISKEEPER CORP. TO: KANGDA SIFU TECHNOLOGY CO.

C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20110928