CN106814970B - 增强的多流操作 - Google Patents
增强的多流操作 Download PDFInfo
- Publication number
- CN106814970B CN106814970B CN201611033466.7A CN201611033466A CN106814970B CN 106814970 B CN106814970 B CN 106814970B CN 201611033466 A CN201611033466 A CN 201611033466A CN 106814970 B CN106814970 B CN 106814970B
- Authority
- CN
- China
- Prior art keywords
- stream
- ttl
- block
- write
- data
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
本发明公开一种增强的多流操作。一种固态驱动器(SSD)可包括从流接收数据的电路。各个流可具有生存时间(TTL)。选择逻辑可选择流以写入块。写入逻辑然后可将来自选择的流的数据写入块。SSD可随时间改变哪一流被写入块。结果,存储在块中的数据将总体更快到期,使得块的垃圾回收更有效。
Description
本申请要求2015年11月30日提交的第62/261,303号美国临时专利申请的权益,其通过出于所有目的的引用并入本文。
技术领域
本发明构思涉及固态驱动器(SSD),更具体地讲,涉及改进在SSD上执行垃圾回收。
背景技术
如今的存储装置包含许多技术。一个重要技术是NAND闪速存储器。在诸如固态驱动器(SSD)的存储装置中使用闪速存储器涉及众多设计考虑。这些重要的考虑涉及用于有效地使用存储容量的策略。
当在闪速存储器中更新先前存储的数据值时,存储这些数据值的现有页被内部标记为无效,更新的数据值被存储在新的页中。当删除数据时,存储该数据的页被相似地标记为无效。无效的页最终在称为垃圾回收的处理中被恢复。但是垃圾回收是在块层面(包含若干页的块)操作的。如果垃圾回收将要等待直至块完全为空(即,块中的所有页均被标记为无效),则SSD可能最终没有自由页可写入数据。因此,执行垃圾回收可能需要将有效页从以擦除为目标的块移至其它块。
SSD可按照数据到达的顺序将数据写入页。这意味着来自完全不相关的文件的数据(甚至如果SSD用在多客户端系统中,由完全不相关的客户端使用的数据)可能在SSD上相邻。由于不存在与在SSD中四处移动读取头关联的延迟(与传统硬盘驱动器相比),所以SSD的读和写访问时间不受这种数据写入策略影响。
仍需要一种方式来使垃圾回收操作对SSD的其它操作的影响最小化。
发明内容
根据示例性实施方式的一方面,提供一种固态驱动器(SSD),包括:接收电路,从包括第一生存时间(TTL)的第一流接收数据,并且从包括第二TTL的第二流接收数据,第二TTL不同于第一TTL;选择逻辑,基于第一TTL和第二TTL选择哪一流以写入SSD上的块;以及写入逻辑,将来自第一流和第二流二者的数据写入SSD上的块。
根据示例性实施方式的一方面,提供一种方法,包括:识别固态驱动器(SSD)上的块;接收第一流,该第一流包括第一生存时间(TTL);接收第二流,该第二流包括第二TTL,第二TTL不同于第一TTL;基于第一TTL和第二TTL选择是将第一流还是第二流写入块;以及将来自第一流和第二流二者的数据写入块。
附图说明
图1示出接收与具有关联的存活时间(TTL)的流关联的数据的块。
图2A至图2D示出根据本发明构思的实施例的图1的块的第一示例,其接收与具有不同TTL的多个流关联的数据。
图3A至图3D示出图1的块的第二示例,其接收与具有不同TTL的多个流关联的数据。
图4示出根据本发明构思的实施例的图1的块,其接收与具有TTL的二阶流关联的数据。
图5示出根据本发明构思的实施例的将来自不同的流的数据写入图1的块的固态驱动器(SSD)。
图6示出图5的选择逻辑的细节。
图7示出图6的平均写入大小计算器的细节。
图8示出图6的平均写到达率计算器的细节。
图9示出图6的流选择逻辑的细节。
图10示出图5的TTL计算器的细节。
图11示出可包括图5的SSD的机器的细节。
图12示出根据本发明构思的实施例的图5的SSD将来自不同的流的数据写入图1的块的过程的流程图。
图13示出根据本发明构思的实施例的图5的SSD利用二阶流将来自不同的流的数据写入图1的块的过程的流程图。
具体实施方式
现在将详细参照本发明构思的实施方式,其示例示出于附图中。在以下详细描述中,阐述了众多具体细节以使得能够彻底理解本发明构思。然而,应该理解,本领域普通技术人员可在没有这些具体细节的情况下实践本发明构思。在其它示例中,公知方法、过程、组件、电路和网络没有详细描述,以避免不必要地模糊实施方式的方面。
将理解,尽管本文中可使用术语第一、第二等来描述各种元件,这些元件不应受这些术语限制。这些术语仅用于将一个元件与另一元件相区分。例如,在不脱离本发明构思的范围的情况下,第一模块可被称为第二模块,类似地,第二模块可被称为第一模块。
本文的本发明构思的描述中所使用的术语仅用于描述特定实施方式,并非意在限制本发明构思。如本发明构思和所附权利要求书的描述中所用,单数形式意在也包括复数形式,除非上下文清楚地另外指示。还将理解,如本文所用,术语“和/或”表示并且涵盖一个或更多个相关所列项的任何及所有可能的组合。还将理解,术语“包括”当用在本说明书中时指明存在所提及的特征、整数、步骤、操作、元件和/或组件,但是不排除一个或更多个其它特征、整数、步骤、操作、元件、组件和/或其组合的存在或添加。附图的组件和特征未必按比例绘制。
如上所述,固态驱动器(SSD)将数据写入页,所述页继而被组织成块。当将要更新数据时,存储旧的数据的页被复制到RAM中,被修改,然后被写入SSD上的自由页。然后,原始页被标记为无效,新的页被标记为有效。
随着时间过去,无效页的数量增加。最终,SSD将不再有自由页,除非通过执行垃圾回收来恢复无效的页。垃圾回收涉及取目标块(或超块),将该块中的所有有效页复制到新的块中,然后擦除原始目标块。这种有效数据复制需要时间和能量。另外,由于闪速存储器仅可承受有限数量的写,所以垃圾回收对SSD寿命有负面影响。
由于闪速垃圾回收显著影响存储装置性能、响应性和寿命,所以存在各种方法来帮助优化垃圾回收效率。它们中的一个方法被称作多流(multi-stream),一种允许计算系统尝试对数据写活动进行分类的技术。
多流为SSD提供一种方法来将数据写操作合并成流。基于与流关联的所有数据具有相似的生存时间(TTL)的预期,数据写操作与多个流中的一个关联。这允许存储装置将数据一起布置在闪速媒介中,希望所述数据在窄的可预测的时间帧内共同地变为无效。当成功时,这种布置策略显著降低了垃圾回收的操作密集度,因为无需将来自垃圾回收块的有效数据保存在别处。
图1示出在典型系统中接收与具有关联的TTL的流关联的数据的块。在图1中,存储装置为针对一个特定流的多个写请求提供服务。在实践中,装置将通过以下方法为流请求提供服务:首先将可用的未用存储块指派给(随后专用于)流,然后将所呈现的数据值写入块内的第一可用区域(即,页)(在最低位置地址处开始并且向更高位置地址前进)。当满了时,另一块被指派并专用于该流。当稍后通过垃圾回收来完全回收块时,它返回到可用块池,以便于随后指派给另一流或同一流。
在图1中,一些最早写入的数据值已被删除或更新,使得它们的存储位置无效。例如,块103已专用于流。流写106、109、112被写入页115、118和121。最终,页115、118和121全部变为无效。此外,最近的流写124和127已被写入页130和133,其它页136、139、142和145保持自由。如果来自页115、118或121中的一个的数据值被更新,则新的更新的值如今可驻留于块内的更高的地址处,诸如页148、151、130和133。另选地,新的值可驻留于随后指派并专用于流的另一块中。
在图1中,有效页148、151、130和133被示出为具有剩余TTL值154、157、160和163。这些值实际上未存储在SSD上,而是表示页中的数据预期将到期(过期,终止)的时间。该值可被计算为流中的数据的TTL与数据已驻留于SSD上多长时间之差。例如,TTL值154、157、160和163指示页148中的数据预期将在一分钟内到期,页151中的数据预期将在两分钟内到期,页130中的数据预期将在59分钟内到期,页133中的数据预期将在60分钟内到期。例如,如果流具有60分钟的TTL并且在块103中占据一页的数据每分钟到达流,则可能发生这种情况。
如果块103以页133结束,则具有TTL值163的页133将是数据将到期的最后页,需要60分钟到期。因此,当SSD准备对块103执行垃圾回收时,SSD将不得不等待直至页133中的数据到期(它被写入之后60分钟),或者SSD将不得不将有效数据从块103复制到另一块以擦除块103。
在传统多流存储中,如图1所示,单个块与单个流关联。被写入块103的数据可具有可预测的TTL。但是由于填充块所需的时间,块103中的页可成“波浪”变无效:即,块103中的页可随时间顺序地到期。这可将SSD置于“困难的”境地:或者SSD必须等待直至所有数据均已到期,导致无法使用原本的“自由空间”的时间损失,或者SSD必须将一些有效页复制到另一块以对块103执行垃圾回收,导致已知的垃圾回收损失。
图1还可表示在没有多流存储的情况下SSD如何填充块。当SSD在没有多流存储的情况下操作时,各个页具有基本上随机的TTL,无法预测块103中的任何数据将何时到期。将顺序的TTL值154、157、160和163与随机值交换并且通过混合块103内的无效页和有效页,图1可反映传统的非多流存储。
但是当传统多流系统将特定流指派给存储块时,存储块不需要被指派给特定流。相反,总寿命可被指派给块,来自具有变化的TTL的流的数据可被写入块,目的在于块中的数据应该在单个定义的时间到期。利用存储装置智能和历史数据,SSD可确定是继续将来自当前流的数据写入块,还是将来自不同流的数据写入块中的剩余页更有效。当然,相同的逻辑也可应用于块的稍后指派的流。具体地讲,存储装置可随后确定,将来自第三流而非来自第二流的数据写入块更有效。当然,来自已从块转移(switched away)的流的数据可使其数据被写入其它块。
另一解决方案是使用“二阶流”。上述流可被视为一阶流:即,各个流可包含具有相似的TTL特性的数据。但是代替将来自一阶流的数据写入块,来自一阶流的数据被写入二阶流。二阶流可具有自己的TTL,发送至二阶流的数据被写入块。根据在二阶流的寿命中剩余多少时间,不同的一阶流可向二阶流提供数据。在本发明构思的这样的实施方式中,可维持二阶流与SSD上的块之间的关联,同时仍实现块内的数据的更一致的到期。
图2A至图2D示出根据本发明构思的实施例的图1的块的示例,块接收与具有不同TTL的多个流关联的数据。图2A至图2D还示出将来自多个流的数据写入单个块的益处。在图2A至图2D中,假设SSD上的块的大小为1MB,并且SSD接收两个流。流205具有60分钟的预期TTL,一次写入平均24KB的数据,并且平均每分钟写入一次文件。流210具有45分钟的预期TTL,一次写入平均256KB的数据,并且平均每五分钟写入一次文件。
图2A再次示出写入块103的所有数据与单个流关联的情况。针对流205假定24KB数据的平均文件大小以及每分钟一个文件的平均写到达率,将花费大致45分钟来填充块103的1MB容量。因此,在块103已被填充之后,写入块103的第一数据具有15分钟的剩余TTL值215,而写入块103的最后数据具有60分钟的剩余TTL值220,在总共一小时45分钟(直至最后数据被写入的45分钟,加上数据的TTL的一小时)内块103将具有有效数据。
如果在最后的数据被增加到块之后的一小时之前的任何时间强迫目标块进行垃圾回收,则块中将仍存在有效数据,将需要在垃圾回收期间将其转移至另一块。另外,SSD越早对块执行垃圾回收,越多有效数据留下必须被迁移至SSD上的另一块。
相反,考虑图2B,其中流205仅在22分钟内将数据写入块103(此时块103将被半填充)。在时间0:22,写入的第一数据将具有38分钟的剩余TTL值215,写入的最后数据将具有60分钟的剩余TTL值225。
在时间0:22之后,块103切换为流210,如图2C所示。在时间0:27,流210将数据写入块103,增加具有45分钟的TTL值230的数据。需要注意的是,为了等待流210写入其第一数据,TTL值215和225也减小了五分钟。
最后,在时间0:32,流210将第二文件写入块103。为流210假定平均写入大小和写到达率,该第二文件完成块103。此时,从流205写入的数据具有从28分钟的TTL值215至50分钟的TTL值225变化的剩余TTL,从流210写入的数据分别具有40和45分钟的TTL值230和235。由于块103在时间0:32完全填充,并且具有最长剩余TTL(TTL值225)的数据预期将在50分钟内到期,所以块103可在时间1:22经受垃圾回收,这比图2A中将发生的情况快23分钟。另外,由于更多数据在相同的时间左右经受到期,所以在所有数据到期之前块103将是垃圾回收的不佳候选。
需要注意的是,即使有更多流,利用填充率、TTL和数据大小的更多数量的选项,按照它们的页同时全部“变无效”的方式切换流以填充块的能力增强。可存在任何数量的流,各个流可具有任何TTL、平均写入大小和平均写到达率。
图3A至图3D示出图1的块103可如何接收与具有不同TTL的多个流关联的数据的第二示例。在图3A至图3D中,假设仅有四个流,其具有相同的数据填充率(data fill rate)和平均写入大小,以使得流之间的主要差异在于其TTL。图3A至图3D中所描述的四个流分别具有60、45、30和15分钟的TTL值。
在图3A中,流305写入块103,其具有60分钟的TTL 240。流305具有60分钟的TTL310,并且在15分钟时间内足够的数据被写入以将块103填充至四分之一满,其中数据具有最长60分钟的剩余TTL 315。此时,SSD从流305切换至流320,如图3B所示。流320具有45分钟的TTL 325。同样,在15分钟内足够的数据从流320被写入以填充块103的另一四分之一。此时,块103为半满,其中数据315和330预期在45分钟内到期。
现在SSD可切换至流335,如图3C所示。流335具有30分钟的TTL 340。再次,在15分钟内,流335可将足够的数据写入以填充块103的另一四分之一,现在块103为四分之三满,其中数据具有30分钟的剩余TTL 315、330和345。此时,SSD可切换至流350,如图3D所示。流350具有15分钟的TTL 355。在另一15分钟之后,流350写入了足够的数据以将块103完全填充,并且块103中的数据315、330、345和360预期在15分钟内到期。因此,在来自图3A的流305的第一数据被写入块103之后的时间1:15,块103中的所有数据预期将到期,整个块可被垃圾回收。
与传统系统相比,图2B至图2D以及图3A至图3D的示例提供了改进的垃圾回收性能。利用多流存储,用具有减小的TTL值的数据顺序地填充块。块中的数据可整体更快地到期,并且更多数据可趋于在相同的时间左右到期。结果,当执行垃圾回收时块更有可能使所有数据到期,从而不再需要在对块执行垃圾回收之前将任何有效数据复制到另一块。另外,由于更多数据趋于在相同的时间到期,在块中的所有数据到期之前块不太可能被选择进行垃圾回收。
通过将图2B至图2D与图3A至图3D进行比较可以看出,当存在待选择的更多流时,直至块中的所有数据到期的时间可更少。例如,在图2B至图2D中,块中的所有数据预期将在时间1:32到期;在图3A至图3D,块中的所有数据预期将在时间1:15到期。块中的数据也更可能使数据在大致相同的时间到期,使得在块仍包含有效数据的同时块不太可能被选择进行垃圾回收。
在图2A至图2D中,两个流被描述并用于将数据写入块103。在图3A至图3D中,四个流被描述并用于将数据写入块103。但是尽管这些示例示出所有流用于将数据写入块103,本发明构思的其它实施例可仅使用可用流的子集。例如,在图2A至图3D中,可存在待写入SSD的20个流,但是仅那些流中的几个被写入块103。并且各种流可具有不同的TTL、写入大小和写到达率(非限制)。
对块将多早准备好进行最佳垃圾回收存在下限。写入块103的各个页根据它源自的流而具有自己的TTL。在最差情况下,在填充块所花费的时间加上写入块的任何数据的最大TTL那么长的时间内块可具有有效数据。更准确地讲,直至块103将包含一些有效数据。需要注意的是,可能发生较早写入的页可具有较长的TTL,并且该页的到期时间可能晚于具有较短TTL的较晚写入的页的到期时间。但是经常地,块中的所有数据的到期时间将是写入块的最后数据的到期时间。因此,如果花费一个小时来完全填充块,并且写入的最后数据具有15分钟TTL,则块中的所有数据可预期将在时间1:15左右到期。
在本发明构思的其它实施例中,所有一阶流将如上文所示分析。但是代替直接写入块,一阶流将基于那些流中剩余的时间写入时间受限的二阶流。
图4示出二阶流的示例。
作为简单情况,假设图3A至图3D中所示的相同一阶流:
流305,具有1小时的TTL 310。
流320,具有45分钟的TTL 325。
流335,具有30分钟的TTL 340。
流350,具有15分钟的TTL 355。
还假设单个二阶流405,具有1小时的TTL 410。
当创建二阶流405时,它首先被指派来自流305的数据。随着二阶流405长大并且其寿命接近45分钟,它停止从流305接收数据并且开始从流320接收数据。同样,随着二阶流405的寿命接近30分钟,它从流335接收数据,并且随后当仅15分钟剩余时从流350接收数据。
在此方法下,指派给二阶流405的块103将使所有数据彼此在约15分钟内变无效(需要注意的是这是一阶流的粒度),并且整个块的最大候命将为约1:15。需要注意的是在此示例中,行为类似于图3A至图3D所示的实施例,但是这并非必须如此。在与数据的寿命或者块的剩余大小相比数据填充率较高的情况下,二阶流实施例可提供更多灵活性。如果二阶流在其到期之前填充块,则它可移至新的块(利用其剩余TTL);同时,旧的块仍将使所有其数据在大约相同的时间到期(在一阶流的粒度内)。换言之,利用二阶流机制,系统没有在接近其寿命结束时寻找寿命低或者填充率快的流来填充块的压力。还需要注意的是,未通过到期二阶流填充的任何块可通过具有与已经存储在块中的数据的剩余TTL相似的寿命的新的流来填充。
需要注意的是,对于任一解决方案,一阶流越多,可获得越小的时间粒度(意味着页将具有在彼此更接近的时间内变无效的趋势)。
如早前呈现的一阶实施例一样,许多二阶流可同时操作。不同的二阶流可根据一阶流的属性被创建为具有不同的寿命。
在任一解决方案中,当SSD决定切换至不同的流(是写入块的不同一阶流或者指派给二阶流的不同一阶流)时,SSD可使用任何期望的算法来选择新的流。选择新的一阶流的一个算法是选择具有大于块或二阶流的剩余TTL的最小TTL的流(或者如果没有流具有大于块或二阶流的剩余TTL的TTL,则最大TTL)。因此,返回图3A,由于块103具有60分钟的TTL240,所以具有60分钟的TTL 310的流305是最佳选择。当在图3B中TTL 240下降至45分钟时,利用该算法,具有45分钟的TTL 325的流320变为最佳选择。然后,当在图3C中TTL 240下降至30分钟时,利用该算法,具有30分钟的TTL 340的流335变为最佳选择,依此类推。当选择一阶流以与图4的二阶流405关联时可应用相同的选择策略。
作为替代,SSD可选择TTL最接近于块的剩余TTL的一阶流。因此,返回图3A,具有60分钟的TTL 310的流305最接近于60分钟的块TTL 240,并且保持使用该流直至时间0:07.5。在该时间之后,具有45分钟的TTL 325的流320最接近于521/2分钟的剩余块TTL 240,并且保持如此直至时间0:22.5。在时间0:22.5,具有30分钟的TTL 340的流335最接近于371/2分钟的剩余块TTL 240,依此类推。
图5示出根据本发明构思的实施例的将来自不同流的数据写入图1的块的固态驱动器(SSD)。在图5中,示出SSD 505。SSD 505可包括电路510,其可用于发送和接收信息(诸如操作或数据)。SSD 505还可包括SSD控制器515和闪速存储器520。SSD控制器515可控制SSD 505的操作。闪速存储器520可存储数据(即,闪速存储器520可存储图1的块103以及其它块)。
SSD控制器515可包括选择逻辑525、写入逻辑530和TTL计算器535以及其它组件。选择逻辑525可选择将要使用的流,以用于写入图1的块103或者指派给图4的二阶流405(如果使用图4的二阶流405的话)。写入逻辑530可将数据写入闪速存储器520(可能在图4的二阶流405的命令下)。更具体地讲,写入逻辑530可将数据写入闪速存储器520中的页(诸如图1的块103中的页)。TTL计算器535可为流(诸如图2A至图2D的TTL 245和250、图3A至图3D的TTL 310、325、340和355、图4的TTL 410)或者块(诸如图2A至图3D的块TTL 240)计算TTL。
在本发明构思的使用二阶流的实施例中,SSD控制器515还可包括二阶流创建器540。二阶流创建器540可创建图4的二阶流405,其可与图4的块103关联。
图6示出图5的选择逻辑525的细节。在图6中,选择逻辑525可包括比较器605、平均写入大小计算器610、平均写到达率计算器615、流选择逻辑620和存储器625。存储器625可存储块TTL 240和/或二阶流TTL 410(尽管块TTL 240和二阶流TTL 410可被存储到选择逻辑525的外部)。根据本发明构思的实施例,比较器605可将图2A至图2D的TTL 245和250(对于图2A至图2D的流205和210)以及图3A至图3D的TTL 310、325、340和355(对于图3A至图3D的流305、320、335和350)与块TTL 240或二阶流TTL 410进行比较。基于该比较,根据本发明构思的实施例,流选择逻辑620可选择什么流应该写入图1的块103或者被指派给图4的二阶流405。
选择逻辑525可在任何期望的时间操作。例如,选择逻辑525可周期性地(诸如每5分钟)使用。或者,每当新的写操作被发送至图5的SSD 505时可使用选择逻辑525。或者,每当块TTL 240或二阶流TTL 410变得低于当前写入图1的块103的流或者图4的二阶流405的图2A至图2D的TTL 245或250或者图3A至图3D的TTL 310、325、340或355时可使用选择逻辑525。选择逻辑525也可在选择流时考虑其它信息,诸如各个流的平均写入大小和平均写到达率。例如,再次考虑图2A至图3D的具有图2A至图3D的60分钟的TTL 240的块103,并且假设图2A至图3D的块103包括60个页。具有60分钟的TTL且每分钟写入一页的流将意味着在120分钟(直至最后页被写入的60分钟与直至该页到期的60分钟)内块103将包含有效数据。但是如果可用的仅有另一流以15分钟的TTL每五分钟写一页并且选择逻辑525在时间0:45切换至该流,则将花费120分钟来填充块103,加上块103中的最后数据到期之前的又15分钟。因此,平均写入大小和平均写到达率可影响改变流的最佳时间。使用选择逻辑525的其它安排也可使用(非限制)。
图7示出图6的平均写入大小计算器610的细节。在图7中,平均写入大小计算器610可接收关于给定流的写操作106、109、112、124和127的信息,并且计算那些写的平均写入大小705(即,所写入的数据量之和除以所执行的写操作的数量)。如上所述,平均写入大小计算器610可使用流的所有可用信息、或者流的最近n次写操作、或者流的最后n次写操作中的最早k次写操作、或者在最后t分钟发生的流的写操作、或者任何其它期望的方法来选择流的写操作。
图8示出图6的平均写到达率计算器615的细节。在图8中,平均写到达率计算器615可接收关于给定流的写操作106、109、112、124和127的信息,并且计算那些写的平均写到达率805(即,第一写操作与最后写操作之间的时间量除以在该区间内执行的写操作的数量)。如上所述,平均写到达率计算器615可使用流的所有可用信息、或者流的最近n次写操作、或者流的最后n次写操作中的最早k次写操作、或者在最后t分钟内发生的流的写操作、或者任何其它期望的方法来选择流的写操作。
图9示出图6的流选择逻辑620的细节。在图9中,流选择逻辑620可接收各种信息,诸如图2A至图3D的块TTL 240、来自图2A至图2D的流205和210的图2A至图2D的TTL 245和250、来自图3A至图3D的流305、320、335和350的图3A至图3D的TTL 310、325、340和355、各个流的平均写入大小705以及各个流的平均写到达率805。流选择逻辑620可使用该信息来选择流905以写入图2B至图3D的块103。流选择逻辑620可使用任何期望的策略来选择流905以写入图2B至图3D的块103或者图4的二阶流405。例如,流选择逻辑620可选择具有小于图2A至图3D的块240的剩余TTL的最高TTL的流。或者,流选择逻辑620可计算何时切换流以优化数据到期,如上面参照图2A至图2D举例说明的。流选择逻辑620还可使用其它选择策略。如上所述,流选择逻辑620可使用所有提供的信息或者仅使用它们中的一些来选择流905。如果在本发明构思的实施例中,流选择逻辑620没有使用图9所示的所有信息,则流选择逻辑620无需被提供图9中示出的所有信息。
图10示出图5的TTL计算器535的细节。在图10中,TTL计算器535可接收关于给定流的写操作106、109、112、124和127的信息,并且计算那些流的TTL 310、325、340和355(即,通过测量数据被写入时与该数据被修改或者删除时之间的持续时间,然后对那些持续时间求和并除以受影响的页的数量)。如上所述,TTL计算器535可使用流的所有可用信息、或者流的最近n次写操作、或者流的最后n次写操作中的最早k次写操作、或者在最后t分钟内发生的流的写操作、或者任何其它可取的方法来选择流的写操作。
图11示出可包括图5的SSD的机器的细节。参照图11,通常,机器1105包括一个或更多个处理器1110,其可包括内存控制器1115和时钟1120(可用于协调机器1105的组件的操作)。处理器1110还可耦合至内存1125,作为示例,内存1125可包括随机存取存储器(RAM)、只读存储器(ROM)或者其它状态保存介质。处理器1110还可耦合至存储装置505和网络连接器1130(可以是例如以太网连接器)。处理器1110还可连接至总线1135,除了其他组件以外,用户接口1140和可利用输入/输出引擎1145管理的输入/输出接口端口可附接至总线1135。
图12示出根据本发明构思的实施例的图5的SSD将来自不同流的数据写入图1的块的过程的流程图。在图12,在方框1205,图5的SSD 505可识别的图1的块103。在方框1210,图5的SSD 505可使图2A至图3D的TTL 240与图1的块103关联。在方框1215,图5的SSD 505可接收图2A至图2D的流205和210以及图3A至图3D的流305、320、335和350。在方框1220,图5的SSD 505可选择流905以写入图1的块103。在方框1225,图5的SSD 505可将来自选择的流905的数据写入图1的块103。如虚线1230所示,可选地,控制可返回到方框1220以使得图5的SSD505能够选择不同的流以在稍后的时间写入图1的块103。
图13示出根据本发明构思的实施例的图5的SSD利用二阶流将来自不同流的数据写入图1的块的过程的流程图。在图13中,在方框1305,图5的SSD 505可识别图1的块103。在方框1310,图5的SSD 505可创建图4的二阶流405。在方框1315,图5的SSD 505可将图4的TTL410指派给图4的二阶流405。在方框1320,图5的SSD 505可接收图2A至图2D的流205和210或者图3A至图3D的流305、320、335和350。在方框1320,图5的SSD 505可选择流905以写入图4的二阶流405。在方框1325,图5的SSD 505可将来自选择的流905的数据写入图4的二阶流405。在方框1325,图5的SSD 505可将来自图4的二阶流405的数据写入图1的块103。如虚线1330所示,可选地,控制可返回到方框1325以使得图5的SSD 505能够选择不同的流以在稍后的时间写入图4的二阶流405。
在图12至图13中,示出了本发明构思的一些实施例。但是本领域技术人员将认识到,通过改变方框的顺序,通过省略方框,或者通过包括图中未示出的链路,本发明构思的其它实施例也是可能的。流程图的所有这样的变化无论是否被明确地描述,均被视为本发明构思的实施例。
以下讨论意在提供可实现本发明构思的特定方面的合适的机器的简要的一般描述。所述机器可至少部分地通过来自传统输入装置(诸如键盘、麦克风等)的输入以及通过从另一机器接收的指令、与虚拟现实(VR)环境的交互、生物反馈或其它输入信号来控制。如本文所用,术语“机器”意在广义地涵盖单个机器、虚拟机或者在通信上耦合的机器、虚拟机或一起操作的装置的系统。示例性机器包括诸如个人计算机、工作站、服务器、便携式计算机、手持装置、电话、平板等的计算装置以及诸如私人或公共交通工具(例如,汽车、火车、出租车等)的运输装置。
所述机器可包括嵌入式控制器,诸如可编程或不可编程逻辑器件或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等。所述机器可使用到一个或更多个远程机器的一个或更多个连接(诸如通过网络接口、调制解调器或者其它通信耦合)。机器可通过物理和/或逻辑网络来互连,诸如内联网、互联网、局域网、广域网等。本领域技术人员将理解,网络通信可使用各种有线和/或无线短距离或长距离载波和协议,包括射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)802.11、光学、红外、线缆、激光等。
本发明构思的实施例可通过参考或结合关联的数据(包括功能、过程、数据结构、应用程序等)来描述,所述数据在被机器访问时导致所述机器执行任务或者定义抽象数据类型或低级硬件上下文。关联的数据可被存储在例如易失性和/或非易失性存储器(例如,RAM、ROM等)中或者其它存储装置机器关联的存储介质(包括硬盘驱动器、软盘、光学存储装置、磁带、闪速存储器、记忆棒、数字视频盘、生物存储装置等)中。关联的数据可经传输环境(包括物理和/或逻辑网络)以分组、串行数据、并行数据、传播信号等的形式传送,并且可按照压缩或加密格式来使用。关联的数据可用在分布式环境中,并且被本地地和/或远程地存储以便于机器访问。
本发明构思的实施例可包括有形的非暂时性机器可读介质,其包括可由一个或更多个处理器执行的指令,所述指令包括执行如本文所述的本发明构思的元件的指令。
已参照所示的实施例描述并示出了本发明构思的原理,将认识到,在不脱离这样的原理的情况下所示的实施例可在布置方式和细节上修改,并且可按照任何期望的方式组合。并且,尽管以上讨论聚焦于特定实施例,可以想到其它配置。具体地讲,即使本文中使用诸如“根据本发明构思的实施例”等的表达,这些短语意在总体上引用实施例可能性,而非意在将本发明构思限制为特定实施例配置。如本文所用,这些术语可引用可组合成其它实施例的相同或不同的实施例。
上述示意性实施方式不应被解释为限制其发明构思。尽管描述了几个实施方式,本领域技术人员将容易理解,在不本质上脱离本公开的新颖教导和优点的情况下,可对那些实施方式进行许多修改。因此,所有这些修改旨在被包括在如权利要求书中定义的本发明构思的范围内。
本发明构思的实施方式可扩展至以下声明(无限制):
声明1.本发明构思的实施例包括一种固态驱动器(SSD),包括:
接收电路,从包括第一生存时间(TTL)的第一流接收数据,并且从包括第二TTL的第二流接收数据,第二TTL不同于第一TTL;
选择逻辑,基于第一TTL和第二TTL来选择哪一流写入SSD上的块;以及
写入逻辑,将来自第一流和第二流二者的数据写入SSD上的块。
声明2.本发明构思的实施例包括根据声明1所述的SSD,其中,存储在块中的所有数据预期将比仅来自第一流和第二流中的一个的数据被写入块的情况更快到期。
声明3.本发明构思的实施例包括根据声明1所述的SSD,其中,选择逻辑操作以在第一时间基于第一TTL和第二TTL选择第一流写入块,在第二时间基于第一TTL和第二TTL选择第二流写入块。
声明4.本发明构思的实施例包括根据声明1所述的SSD,其中,选择逻辑操作以周期性地基于第一TTL和第二TTL选择哪一流写入SSD上的块。
声明5.本发明构思的实施例包括根据声明1所述的SSD,其中,当接收电路从第一流或第二流接收数据时,选择逻辑操作以基于第一TTL和第二TTL选择哪一流写入SSD上的块。
声明6.本发明构思的实施例包括根据声明1所述的SSD,其中,选择逻辑包括比较器以将第一TTL和第二TTL与块所关联的块TTL进行比较。
声明7.本发明构思的实施例包括根据声明1所述的SSD,其中,选择逻辑包括:
平均写入大小计算器,计算与第一流关联的写操作的第一平均写入大小以及与第二流关联的写操作的第二平均写入大小;以及
平均写到达率计算器,计算第一流的第一平均写到达率以及第二流的第二平均写到达率。
声明8.本发明构思的实施例包括根据声明7所述的SSD,其中,选择逻辑操作以基于第一TTL、第二TTL、第一平均写入大小、第一平均写到达率、第二平均写入大小和第二平均写到达率中的至少两个来选择哪一流写入SSD上的块。
声明9.本发明构思的实施例包括根据声明1所述的SSD,还包括TTL计算器以计算第一流的第一TTL和第二流的第二TTL。
声明10.本发明构思的实施例包括根据声明1所述的SSD,其中:
SSD还包括二阶流创建器以创建二阶流;
选择逻辑包括流选择逻辑以选择第一流和第二流中的哪一个写入二阶流;并且
写入逻辑操作以将二阶流写入块。
声明11.本发明构思的实施例包括根据声明1所述的SSD,其中:
接收电路操作以从第一流、第二流以及包括第三TTL的第三流接收数据,第三TTL不同于第一TTL和第二TTL;
选择逻辑操作以基于第一TTL、第二TTL和第三TTL选择哪一流写入SSD上的块;并且
写入逻辑操作以将来自第一流、第二流和第三流的数据写入SSD上的块。
声明12.本发明构思的实施例包括一种用于固态驱动器(SSD)的逻辑,包括:
用于SSD上的块的块生存时间(TTL)的存储器;以及
选择逻辑,在具有第一TTL的第一流和具有第二TTL的第二流之间基于块TTL、第一TTL和第二TTL进行选择以写入块。
声明13.本发明构思的实施例包括根据声明12所述的逻辑,其中,存储在块中的所有数据预期将比仅来自第一流和第二流中的一个的数据被写入块的情况更快到期。
声明14.本发明构思的实施例包括根据声明12所述的逻辑,其中,选择逻辑操作以在第一时间基于块TTL、第一TTL和第二TTL选择第一流写入块,在第二时间基于块TTL、第一TTL和第二TTL选择第二流写入块。
声明15.本发明构思的实施例包括根据声明12所述的逻辑,其中,选择逻辑操作以周期性地基于块TTL、第一TTL和第二TTL选择哪一流写入SSD上的块。
声明16.本发明构思的实施例包括根据声明12所述的逻辑,其中,当SSD从第一流或第二流接收数据时,选择逻辑操作以基于块TTL、第一TTL和第二TTL选择哪一流写入SSD上的块。
声明17.本发明构思的实施例包括根据声明12所述的逻辑,其中,选择逻辑包括比较器以将第一TTL和第二TTL与块TTL进行比较。
声明18.本发明构思的实施例包括根据声明12所述的逻辑,其中,选择逻辑包括:
平均写入大小计算器,计算与第一流关联的写操作的第一平均写入大小以及与第二流关联的写操作的第二平均写入大小;以及
平均写到达率计算器,计算第一流的第一平均写到达率以及第二流的第二平均写到达率。
声明19.本发明构思的实施例包括根据声明18所述的逻辑,其中,选择逻辑操作以基于块TTL、第一TTL、第二TTL、第一平均写入大小、第一平均写到达率、第二平均写入大小和第二平均写到达率中的至少两个来选择哪一流写入SSD上的块。
声明20.本发明构思的实施例包括根据声明12所述的逻辑,还包括TTL计算器以计算第一流的第一TTL和第二流的第二TTL。
声明21.本发明构思的实施例包括根据声明12所述的逻辑,其中:
该逻辑还包括二阶流创建器以创建二阶流;并且
选择逻辑包括流选择逻辑以选择第一流和第二流中的哪一个写入二阶流,
其中,二阶流可被写入块。
声明22.本发明构思的实施例包括根据声明12所述的逻辑,其中,选择逻辑操作以基于块TTL、第一TTL、第二TTL和第三TTL在具有第一TTL的第一流、具有第二TTL的第二流和具有第三TTL的第三流之间进行选择以写入块。
声明23.本发明构思的实施例包括一种方法,该方法包括:
识别固态驱动器(SSD)上的块;
接收第一流,该第一流包括第一生存时间(TTL);
接收第二流,该第二流包括第二TTL,第二TTL不同于第一TTL;
基于第一TTL和第二TTL选择是将第一流还是将第二流写入块;以及
将来自第一流和第二流二者的数据写入块。
声明24.本发明构思的实施例包括根据声明23所述的方法,其中,存储在块中的所有数据预期将比仅来自第一流和第二流中的一个的数据被写入块的情况更快到期。
声明25.本发明构思的实施例包括根据声明23所述的方法,其中,选择是将第一流还是第二流写入块的步骤包括:
在第一时间基于第一TTL和第二TTL选择将第一流写入块;以及
在第二时间基于第一TTL和第二TTL选择将第二流写入块。
声明26.本发明构思的实施例包括根据声明23所述的方法,其中,选择是将第一流还是第二流写入块的步骤包括周期性地基于第一TTL和第二TTL选择是将第一流还是第二流写入块。
声明27.本发明构思的实施例包括根据声明23所述的方法,其中,选择是将第一流还是第二流写入块的步骤包括每当来自第一流或第二流的数据被写入SSD时基于第一TTL和第二TTL选择是将第一流还是第二流写入块。
声明28.本发明构思的实施例包括根据声明23所述的方法,其中:
选择是将第一流还是第二流写入块的步骤包括基于第一TTL、第二TTL、第一流的第一平均写入大小、第二流的第二平均写入大小、第一流的第一平均写到达率和第二流的第二平均写到达率中的至少两个来选择是将第一流还是第二流写入块。
声明29.本发明构思的实施例包括根据声明23所述的方法,其中,识别固态驱动器(SSD)上的块的步骤包括使块TTL与块关联。
声明30.本发明构思的实施例包括根据声明29所述的方法,其中,选择是将第一流还是第二流写入块的步骤包括基于第一TTL、第二TTL和块TTL来选择是将第一流还是第二流写入块。
声明31.本发明构思的实施例包括根据声明30所述的方法,其中,选择是将第一流还是第二流写入块的步骤还包括基于是第一TTL还是第二TTL更接近块TTL来选择是写入第一流还是第二流。
声明32.本发明构思的实施例包括根据声明23所述的方法,其中:
该方法还包括:
建立二阶流;
使二阶流与块关联;并且
选择是将第一流还是第二流写入块的步骤包括选择是将来自第一流还是第二流的数据指派给二阶流。
声明33.本发明构思的实施例包括根据声明23所述的方法,其中:
该方法还包括接收第三流,该第三流包括第三TTL,第三TTL不同于第一TTL和第二TTL;
选择是将第一流还是第二流写入块的步骤包括基于第一TTL、第二TTL和第三TTL来选择是将第一流、第二流还是第三流写入块;并且
将来自第一流和第二流二者的数据写入块的步骤包括将来自第一流、第二流和第三流的数据写入块。
因此,鉴于对本文所述的实施例的各种各样的排列,此详细描述和附图旨在仅为示意性的,不应被视为限制本发明构思的范围。因此,作为本发明构思要求保护的是可能落入所附权利要求及其等同物的范围和精神内的所有这样的修改。
Claims (18)
1.一种固态驱动器SSD,包括:
接收电路,从包括第一生存时间TTL的第一流接收数据,并且从包括第二TTL的第二流接收数据,第二TTL不同于第一TTL;
选择逻辑,基于第一TTL在第一时间选择将来自第一流的数据写入所述SSD上的块并基于第二TTL在第二时间选择将来自第二流的数据写入所述SSD上的块;以及
写入逻辑,将来自第一流的数据写入所述SSD上的块中的第一页并将来自第二流的数据写入所述SSD上的块中的第二页,
其中,来自第一流和第二流的数据在块经受垃圾回收之前均被写入块,
其中,预期存储在块中的所有数据将比仅来自第一流和第二流中的一个流的数据被写入块的情况更快到期。
2.根据权利要求1所述的SSD,其中,选择逻辑包括:
平均写入大小计算器,计算与第一流关联的写操作的第一平均写入大小以及与第二流关联的写操作的第二平均写入大小;以及
平均写到达率计算器,计算第一流的第一平均写到达率以及第二流的第二平均写到达率。
3.根据权利要求2所述的SSD,其中,选择逻辑操作以基于第一TTL、第二TTL、第一平均写入大小、第一平均写到达率、第二平均写入大小和第二平均写到达率中的至少两个来选择哪一流写入所述SSD上的块。
4.根据权利要求1所述的SSD,其中:
所述SSD还包括二阶流创建器以创建二阶流;
选择逻辑包括流选择逻辑以选择第一流和第二流中的哪一个写入二阶流;并且
写入逻辑操作以将二阶流写入块。
5.一种用于固态驱动器SSD的SSD控制器,包括:
用于SSD上的块的块生存时间TTL的存储;以及
选择逻辑,基于块TTL、第一TTL和第二TTL在具有第一TTL的第一流和具有第二TTL的第二流之间进行选择以写入块,
其中,来自第一流和第二流的数据在块经受垃圾回收之前均被写入块,
其中,预期存储在块中的所有数据将比仅来自第一流和第二流中的一个流的数据被写入块的情况更快到期。
6.根据权利要求5所述的SSD控制器,其中,选择逻辑操作以基于块TTL、第一TTL和第二TTL在第一时间选择第一流写入块,基于块TTL、第一TTL和第二TTL在第二时间选择第二流写入块。
7.根据权利要求5所述的SSD控制器,其中,选择逻辑包括:
平均写入大小计算器,计算与第一流关联的写操作的第一平均写入大小以及与第二流关联的写操作的第二平均写入大小;以及
平均写到达率计算器,计算第一流的第一平均写到达率以及第二流的第二平均写到达率。
8.根据权利要求7所述的SSD控制器,其中,选择逻辑操作以基于块TTL、第一TTL、第二TTL、第一平均写入大小、第一平均写到达率、第二平均写入大小和第二平均写到达率中的至少两个来选择哪一流写入SSD上的块。
9.根据权利要求5所述的SSD控制器,其中,选择逻辑操作以基于块TTL、第一TTL、第二TTL和第三TTL在具有第一TTL的第一流、具有第二TTL的第二流和具有第三TTL的第三流之间进行选择以写入块。
10.根据权利要求5所述的SSD控制器,其中:
所述SSD控制器还包括二阶流创建器以创建二阶流;并且
选择逻辑包括流选择逻辑以选择第一流和第二流中的哪一个写入二阶流,其中,二阶流能够被写入块。
11.一种写入数据的方法,包括:
识别固态驱动器SSD上的块;
接收第一流,该第一流包括第一生存时间TTL;
接收第二流,该第二流包括第二TTL,第二TTL不同于第一TTL;
基于第一TTL在第一时间选择将第一流写入块;
基于第二TTL在第二时间选择将第二流写入块;以及
将来自第一流的数据写入块中的第一页并将来自第二流的数据写入块中的第二页,
其中,来自第一流和第二流的数据在块经受垃圾回收之前均被写入块,
其中,预期存储在块中的所有数据将比仅来自第一流和第二流中的一个流的数据被写入块的情况更快到期。
12.根据权利要求11所述的方法,其中:
基于第一TTL、第二TTL、第一流的第一平均写入大小、第二流的第二平均写入大小、第一流的第一平均写到达率和第二流的第二平均写到达率中的至少两个来选择是将第一流还是第二流写入块。
13.根据权利要求11所述的方法,其中,识别固态驱动器SSD上的块的步骤包括使块TTL与块关联。
14.根据权利要求13所述的方法,其中,基于第一TTL、第二TTL和块TTL来选择是将第一流还是第二流写入块。
15.根据权利要求14所述的方法,其中,基于是第一TTL还是第二TTL更接近块TTL来选择是将第一流还是第二流写入。
16.根据权利要求11所述的方法,还包括:
建立二阶流;
使二阶流与块关联;并且
选择是将来自第一流还是第二流的数据指派给二阶流。
17.根据权利要求11所述的方法,还包括:
接收第三流,该第三流包括第三TTL,第三TTL不同于第一TTL和第二TTL;
基于第一TTL、第二TTL和第三TTL来选择是将第一流、第二流还是第三流写入块;并且
将来自第一流、第二流和第三流的数据写入块。
18.根据权利要求15所述的方法,其中:
将块TTL改变为更新的块TTL以反映块的当前状态;
基于是第一TTL还是第二TTL更接近块TTL来选择是将第一流还是第二流写入的步骤包括基于是第一TTL还是第二TTL更接近更新的块TTL来选择是将第一流还是第二流写入。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562261303P | 2015-11-30 | 2015-11-30 | |
US62/261,303 | 2015-11-30 | ||
US15/046,439 | 2016-02-17 | ||
US15/046,439 US9880780B2 (en) | 2015-11-30 | 2016-02-17 | Enhanced multi-stream operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106814970A CN106814970A (zh) | 2017-06-09 |
CN106814970B true CN106814970B (zh) | 2021-01-12 |
Family
ID=58777631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611033466.7A Active CN106814970B (zh) | 2015-11-30 | 2016-11-15 | 增强的多流操作 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9880780B2 (zh) |
JP (1) | JP6713906B2 (zh) |
KR (1) | KR102363519B1 (zh) |
CN (1) | CN106814970B (zh) |
TW (1) | TWI729988B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10031689B2 (en) * | 2016-09-15 | 2018-07-24 | Western Digital Technologies, Inc. | Stream management for storage devices |
US10216417B2 (en) | 2016-10-26 | 2019-02-26 | Samsung Electronics Co., Ltd. | Method of consolidate data streams for multi-stream enabled SSDs |
US10108345B2 (en) * | 2016-11-02 | 2018-10-23 | Samsung Electronics Co., Ltd. | Victim stream selection algorithms in the multi-stream scheme |
US11048624B2 (en) | 2017-04-25 | 2021-06-29 | Samsung Electronics Co., Ltd. | Methods for multi-stream garbage collection |
US10698808B2 (en) | 2017-04-25 | 2020-06-30 | Samsung Electronics Co., Ltd. | Garbage collection—automatic data placement |
JP6867228B2 (ja) | 2017-05-24 | 2021-04-28 | 株式会社小糸製作所 | 発光駆動装置、車両用灯具 |
US10915441B2 (en) | 2017-08-23 | 2021-02-09 | Hitachi, Ltd. | Storage system having non-volatile memory device |
KR102387935B1 (ko) * | 2017-10-23 | 2022-04-15 | 삼성전자주식회사 | 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치 |
KR102457400B1 (ko) | 2017-11-16 | 2022-10-21 | 삼성전자주식회사 | 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템 |
KR102656172B1 (ko) | 2018-03-28 | 2024-04-12 | 삼성전자주식회사 | 가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법 |
KR102314784B1 (ko) * | 2018-04-17 | 2021-10-19 | 한국과학기술원 | Ftl 관리 장치 및 방법 |
US11074173B1 (en) | 2018-04-26 | 2021-07-27 | Lightbits Labs Ltd. | Method and system to determine an optimal over-provisioning ratio |
US11093408B1 (en) * | 2018-04-26 | 2021-08-17 | Lightbits Labs Ltd. | System and method for optimizing write amplification of non-volatile memory storage media |
CN108874309B (zh) * | 2018-05-25 | 2021-07-23 | 新华三技术有限公司 | 一种管理固态硬盘中物理块的方法和装置 |
KR20200053204A (ko) | 2018-11-08 | 2020-05-18 | 삼성전자주식회사 | 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법 |
KR102686924B1 (ko) * | 2018-11-12 | 2024-07-19 | 삼성전자주식회사 | 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템 |
KR20210056520A (ko) | 2019-11-11 | 2021-05-20 | 삼성전자주식회사 | 저장 장치 및 저장 장치 시스템과 그 동작 방법 |
KR20210156190A (ko) | 2020-06-17 | 2021-12-24 | 삼성전자주식회사 | 스토리지 장치 지원 실시간 가상 머신 마이그레이션 |
CN112631952A (zh) * | 2020-12-25 | 2021-04-09 | 上海威固信息技术股份有限公司 | 一种固态硬盘冷热数据分离方法 |
US11385798B1 (en) | 2020-12-28 | 2022-07-12 | Lightbits Labs Ltd. | Method and system for application aware, management of write operations on non-volatile storage |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006235960A (ja) * | 2005-02-24 | 2006-09-07 | Fujitsu Ltd | ガーベッジコレクション高速化方法 |
CN101663652A (zh) * | 2007-04-19 | 2010-03-03 | 微软公司 | 用于固态驱动器优化的删除时移除技术 |
US8738882B2 (en) * | 2011-06-03 | 2014-05-27 | Apple Inc. | Pre-organization of data |
CN103827972A (zh) * | 2011-08-26 | 2014-05-28 | 惠普发展公司,有限责任合伙企业 | 用于读取阵列中的电阻开关器件的电路和方法 |
US20140208001A1 (en) * | 2013-01-23 | 2014-07-24 | Vmware, Inc. | Techniques for Achieving Crash Consistency when Performing Write-Behind Caching Using a Flash Storage-Based Cache |
Family Cites Families (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000505983A (ja) | 1996-12-23 | 2000-05-16 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | データ流を供給するための方法および系 |
JP3726663B2 (ja) | 2000-09-07 | 2005-12-14 | 日産自動車株式会社 | 電子制御装置の制御データ記憶装置 |
US6946715B2 (en) | 2003-02-19 | 2005-09-20 | Micron Technology, Inc. | CMOS image sensor and method of fabrication |
JPWO2004034282A1 (ja) | 2002-10-10 | 2006-02-09 | 富士通株式会社 | コンテンツ再利用管理装置およびコンテンツ再利用支援装置 |
US7254668B1 (en) | 2002-10-28 | 2007-08-07 | Sandisk Corporation | Method and apparatus for grouping pages within a block |
AU2003302731A1 (en) | 2002-11-27 | 2004-07-09 | Rgb Media, Inc. | Method and apparatus for time-multiplexed processing of multiple digital video programs |
US20040139042A1 (en) | 2002-12-31 | 2004-07-15 | Schirmer Andrew L. | System and method for improving data analysis through data grouping |
US7356651B2 (en) | 2004-01-30 | 2008-04-08 | Piurata Technologies, Llc | Data-aware cache state machine |
JP2006215954A (ja) | 2005-02-07 | 2006-08-17 | Hitachi Ltd | ストレージシステム及びストレージ装置のアーカイブ管理方法 |
JP2006350599A (ja) | 2005-06-15 | 2006-12-28 | Hitachi Ltd | ストレージシステム及びストレージシステムのデータマイグレーション方法 |
US7660264B1 (en) | 2005-12-19 | 2010-02-09 | Chelsio Communications, Inc. | Method for traffic schedulign in intelligent network interface circuitry |
US8812637B2 (en) * | 2006-11-28 | 2014-08-19 | International Business Machines Corporation | Aggregation of multiple media streams to a user |
US8122220B1 (en) | 2006-12-20 | 2012-02-21 | Marvell International Ltd. | Memory usage in imaging devices |
US8321579B2 (en) | 2007-07-26 | 2012-11-27 | International Business Machines Corporation | System and method for analyzing streams and counting stream items on multi-core processors |
US20090119352A1 (en) * | 2007-11-05 | 2009-05-07 | Steven Joseph Branda | Method for Optimizing Generational Garbage Collection Through Object Life Heuristics |
US8612668B2 (en) | 2008-11-24 | 2013-12-17 | Juniper Networks, Inc. | Storage optimization system based on object size |
US20100161687A1 (en) * | 2008-12-24 | 2010-06-24 | International Business Machines Corporation | System and method for optimizing garbage collection with allocation modifiers |
US8144515B2 (en) | 2009-07-23 | 2012-03-27 | Stec, Inc. | Interleaved flash storage system and method |
US9076543B2 (en) | 2009-07-27 | 2015-07-07 | Micron Technology, Inc. | Techniques for providing a direct injection semiconductor memory device |
US9063886B2 (en) | 2009-09-18 | 2015-06-23 | Apple Inc. | Metadata redundancy schemes for non-volatile memories |
US20110096828A1 (en) | 2009-09-22 | 2011-04-28 | Qualcomm Incorporated | Enhanced block-request streaming using scalable encoding |
WO2012020544A1 (ja) * | 2010-08-11 | 2012-02-16 | 日本電気株式会社 | データ処理システム、データ処理方法、およびプログラム |
JP2012084127A (ja) | 2010-09-15 | 2012-04-26 | Toshiba Corp | 半導体装置 |
US10089017B2 (en) | 2011-07-20 | 2018-10-02 | Futurewei Technologies, Inc. | Method and apparatus for SSD storage access |
US9158540B1 (en) | 2011-11-14 | 2015-10-13 | Emc Corporation | Method and apparatus for offloading compute resources to a flash co-processing appliance |
US10203881B2 (en) | 2011-12-19 | 2019-02-12 | Apple Inc. | Optimized execution of interleaved write operations in solid state drives |
KR101907059B1 (ko) | 2011-12-21 | 2018-10-12 | 삼성전자 주식회사 | 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템 |
US8762627B2 (en) | 2011-12-21 | 2014-06-24 | Sandisk Technologies Inc. | Memory logical defragmentation during garbage collection |
US9146855B2 (en) * | 2012-01-09 | 2015-09-29 | Dell Products Lp | Systems and methods for tracking and managing non-volatile memory wear |
US20130290601A1 (en) | 2012-04-26 | 2013-10-31 | Lsi Corporation | Linux i/o scheduler for solid-state drives |
US8799561B2 (en) | 2012-07-27 | 2014-08-05 | International Business Machines Corporation | Valid page threshold based garbage collection for solid state drive |
US20140122774A1 (en) * | 2012-10-31 | 2014-05-01 | Hong Kong Applied Science and Technology Research Institute Company Limited | Method for Managing Data of Solid State Storage with Data Attributes |
JP2014130387A (ja) | 2012-12-27 | 2014-07-10 | Fujitsu Ltd | ストレージコントローラ選択システム、ストレージコントローラ選択方法、およびストレージコントローラ選択プログラム |
US9195396B2 (en) | 2013-03-14 | 2015-11-24 | SanDisk Technologies, Inc. | Estimating access frequency statistics for storage device |
US9335950B2 (en) | 2013-03-15 | 2016-05-10 | Western Digital Technologies, Inc. | Multiple stream compression and formatting of data for data storage systems |
US9042181B2 (en) | 2013-03-15 | 2015-05-26 | SanDisk Technologies, Inc. | Periodic erase operation for a non-volatile medium |
US9213633B2 (en) | 2013-04-30 | 2015-12-15 | Seagate Technology Llc | Flash translation layer with lower write amplification |
KR102210961B1 (ko) * | 2013-06-12 | 2021-02-03 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 동적 접근 방법 |
TWI527037B (zh) * | 2014-04-10 | 2016-03-21 | 群聯電子股份有限公司 | 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置 |
KR102289919B1 (ko) * | 2014-04-15 | 2021-08-12 | 삼성전자주식회사 | 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법 |
US9632927B2 (en) * | 2014-09-25 | 2017-04-25 | International Business Machines Corporation | Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes |
US9519429B2 (en) * | 2014-12-09 | 2016-12-13 | Intel Corporation | Techniques to manage multiple sequential write streams to a solid state drive |
JP2016170583A (ja) * | 2015-03-12 | 2016-09-23 | 株式会社東芝 | メモリシステムおよび情報処理システム |
US20160283124A1 (en) | 2015-03-25 | 2016-09-29 | Kabushiki Kaisha Toshiba | Multi-streamed solid state drive |
US9696935B2 (en) | 2015-04-24 | 2017-07-04 | Kabushiki Kaisha Toshiba | Storage device that secures a block for a stream or namespace and system having the storage device |
US11461010B2 (en) * | 2015-07-13 | 2022-10-04 | Samsung Electronics Co., Ltd. | Data property-based data placement in a nonvolatile memory device |
US10048876B2 (en) | 2015-09-10 | 2018-08-14 | Western Digital Technologies, Inc. | Method for providing nonvolatile storage write bandwidth using a caching namespace |
US20170131948A1 (en) | 2015-11-06 | 2017-05-11 | Virtium Llc | Visualization of usage impacts on solid state drive life acceleration |
-
2016
- 2016-02-17 US US15/046,439 patent/US9880780B2/en active Active
- 2016-07-05 TW TW105121141A patent/TWI729988B/zh active
- 2016-07-21 KR KR1020160092495A patent/KR102363519B1/ko active IP Right Grant
- 2016-10-20 JP JP2016206191A patent/JP6713906B2/ja active Active
- 2016-11-15 CN CN201611033466.7A patent/CN106814970B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006235960A (ja) * | 2005-02-24 | 2006-09-07 | Fujitsu Ltd | ガーベッジコレクション高速化方法 |
CN101663652A (zh) * | 2007-04-19 | 2010-03-03 | 微软公司 | 用于固态驱动器优化的删除时移除技术 |
US8738882B2 (en) * | 2011-06-03 | 2014-05-27 | Apple Inc. | Pre-organization of data |
CN103827972A (zh) * | 2011-08-26 | 2014-05-28 | 惠普发展公司,有限责任合伙企业 | 用于读取阵列中的电阻开关器件的电路和方法 |
US20140208001A1 (en) * | 2013-01-23 | 2014-07-24 | Vmware, Inc. | Techniques for Achieving Crash Consistency when Performing Write-Behind Caching Using a Flash Storage-Based Cache |
Also Published As
Publication number | Publication date |
---|---|
US20170153848A1 (en) | 2017-06-01 |
US9880780B2 (en) | 2018-01-30 |
CN106814970A (zh) | 2017-06-09 |
KR20170063332A (ko) | 2017-06-08 |
JP2017102908A (ja) | 2017-06-08 |
TW201721440A (zh) | 2017-06-16 |
KR102363519B1 (ko) | 2022-02-16 |
JP6713906B2 (ja) | 2020-06-24 |
TWI729988B (zh) | 2021-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106814970B (zh) | 增强的多流操作 | |
US9898202B2 (en) | Enhanced multi-streaming though statistical analysis | |
US9430321B2 (en) | Reconstructing data stored across archival data storage devices | |
KR102352257B1 (ko) | 분산 스토리지 시스템 노드 및 그것의 동작 방법 | |
US9075712B2 (en) | Scheduling requests in a solid state memory device | |
JP6319607B2 (ja) | データを書き込むようにソリッドステートディスクを制御するためのアレイコントローラ、ソリッドステートディスクおよび方法 | |
US10649667B2 (en) | Mitigating GC effect in a RAID configuration | |
US9436571B2 (en) | Estimating data storage device lifespan | |
RU2479013C2 (ru) | Способ оптимизации твердотельного накопителя и оптимизатор | |
CN101763437B (zh) | 高速缓冲存储实现方法及装置 | |
US10007587B2 (en) | Systems and methods for pre-generation and pre-storage of repair fragments in storage systems | |
US20090077327A1 (en) | Method and apparatus for enabling a NAS system to utilize thin provisioning | |
CN107615261B (zh) | 多个云环境之间的共享存储的方法和装置 | |
CN102298547A (zh) | 一种数据备份方法及其装置 | |
TW201723857A (zh) | 使用多串流的系統、方法以及製品 | |
US20150331632A1 (en) | Managing archival storage | |
CN109445687A (zh) | 一种数据存储方法以及协议服务器 | |
CN105653209A (zh) | 一种对象存储数据传输方法及装置 | |
CN103914410B (zh) | 存储装置、电子设备和数据存取方法 | |
US20130246702A1 (en) | Storage control device, storage control method, and recording medium | |
CN106383667B (zh) | 业务运行中lun迁移的方法和装置 | |
US9753803B2 (en) | Storage system and information processing apparatus | |
US20150331617A1 (en) | Pipeline planning for low latency storage system | |
US10671307B2 (en) | Storage system and operating method thereof | |
CN107077420B9 (zh) | 覆盖擦除块映射 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |