CN104714893B - 用于缩放垃圾收集的方法和系统 - Google Patents
用于缩放垃圾收集的方法和系统 Download PDFInfo
- Publication number
- CN104714893B CN104714893B CN201410680111.1A CN201410680111A CN104714893B CN 104714893 B CN104714893 B CN 104714893B CN 201410680111 A CN201410680111 A CN 201410680111A CN 104714893 B CN104714893 B CN 104714893B
- Authority
- CN
- China
- Prior art keywords
- oldness
- write
- block
- threshold value
- page
- 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.)
- Expired - Fee Related
Links
- 239000010813 municipal solid waste Substances 0.000 title claims abstract description 37
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000003321 amplification Effects 0.000 claims abstract description 30
- 238000003199 nucleic acid amplification method Methods 0.000 claims abstract description 30
- 238000003860 storage Methods 0.000 claims description 73
- 230000015654 memory Effects 0.000 claims description 40
- 230000004044 response Effects 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 claims description 4
- 230000008859 change Effects 0.000 claims description 3
- 230000003111 delayed effect Effects 0.000 claims 1
- 238000001514 detection method Methods 0.000 abstract description 4
- 230000005055 memory storage Effects 0.000 description 25
- 238000004891 communication Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 10
- 230000002085 persistent effect Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 210000003813 thumb Anatomy 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011017 operating method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000003205 muscle Anatomy 0.000 description 1
- 210000003733 optic disk Anatomy 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- 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/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
本公开涉及用于缩放垃圾收集的方法和系统。计算机处理器确定过度供应比和主机写入图案。计算机处理器基于主机写入图案和过度供应比确定写入放大目标。计算机处理器确定陈旧性阈值,其中,陈旧性阈值与块的有效页与该块的总页之比对应。计算机处理器擦除具有超过陈旧性阈值的陈旧性的第一块。
Description
技术领域
本发明一般涉及闪存存储器的领域,更特别地涉及垃圾收集缩放(garbagecollection scaling)。
背景技术
固态驱动器(“SSD”)是使用集成电路组件作为存储器以永久(persistently)存储数据的数据存储器件。SSD中的主要存储部件可以是NAND非易失性闪存存储器或NOR非易失性闪存存储器。NAND闪存和NOR闪存利用浮动栅极晶体管。NAND闪存和NOR闪存按照它们各自的组件所类似的逻辑门被命名。
SSD存储器的访问非常类似于块器件(block device),诸如硬盘或存储卡。各块由许多页构成。页的尺寸可以例如为512、2048或4096字节。数据以称为页的单位被写入到闪存存储器。在可将新数据写入到页之前,该页必须被擦除。但是,为了擦除页,包含该页的块被擦除。垃圾收集是如下处理:其中,第一块被清空了包含被重写到第二块的有效数据的页,并且第一块被擦除以使第一块准备写入新的有效数据。垃圾收集可有助于写入放大(amplification)。写入放大指的是与闪存存储器和SSD相关的情形,其中写入的物理信息的实际量是想要写入的逻辑量的倍数。
发明内容
本发明的实施例提供用于缩放垃圾收集的方法、系统和计算机程序产品。计算机处理器确定过度供应比(over-provisioning ratio)和主机写入图案(host writepattern)。计算机处理器基于主机写入图案和过度供应比确定写入放大目标。计算机处理器确定陈旧性(staleness)阈值,其中,陈旧性阈值与块的有效页与该块的总页之比对应。计算机处理器擦除具有超过陈旧性阈值的陈旧性的第一块。
附图说明
图1是示出实现本发明实施例的存储环境的功能框图。
图2是根据本发明实施例的示出用于确定阈值的垃圾收集程序的操作的流程图。
图3是根据本发明实施例的示出用于响应于阈值执行垃圾收集的垃圾收集程序的操作的流程图。
图4示出根据本发明实施例的执行垃圾收集程序的主机计算系统的部件的框图。
具体实施方式
本发明的实施例认识到,延迟垃圾收集直到通常需要空页来容纳写入操作导致了“写入陡壁(cliff)”,这是由于增大写入放大而导致降低写入速度的时点(point)。本发明的实施例规定主动(proactive)的垃圾收集,以便提供更一致水平的写入放大。本发明的实施例还规定了确定指示无效页与块的总页之比的陈旧性阈值,并且基于陈旧性阈值执行垃圾收集,以便提供更一致的写入速度。本发明的实施例规定基于主机写入图案和写入放大目标来缩放陈旧性阈值。
本领域技术人员将知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以采取以下形式,即:完全的硬件实施方式,完全的软件实施方式(包括固件、驻留软件、微代码等),或软件和硬件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面可以采取在一个或更多个计算机可读介质中实现的计算机程序产品的形式,该计算机可读介质上实现有计算机可读程序代码/指令。
可以利用计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是、但不限于电、磁、光或半导体的系统、装置或器件,或者前述的任何适当组合。计算机可读存储介质的更具体的例子(非穷举的列表)将包括以下项目:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存存储器)、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者前述的任何适当组合。在本文献的背景中,计算机可读存储介质可以是能包含或存储程序的任何有形介质,该程序供指令执行系统、装置或者器件使用或者与其结合使用。术语“计算机可读存储介质”不包括计算机可读信号介质。
计算机可读信号介质可以包括例如在基带中或者作为载波一部分的传播的数据信号,在该数据信号中实现有计算机可读程序代码。这种传播的信号可以采取多种形式中的任一种,包括但不限于电磁的、光的、或其任何适当组合。计算机可读信号介质还可以是任何的不是计算机可读存储介质并且可以传送、传播或传输用于供指令执行系统、装置或者器件使用或者与其结合使用的程序的计算机可读介质。
计算机可读介质上实现的程序代码可以用任何适当的介质来传输,包括但不限于无线、有线(wireline)、光纤线缆、RF等等,或者前述的任何适当组合。
可以以一种或更多种编程语言的任何组合来编写用于执行本发明的各个方面的操作的计算机程序代码,所述编程语言包括面向对象的编程语言,诸如(Java是Oracle在美国、其它国家或者二者的注册商标)、Smalltalk、C++等,并且包括常规的过程式编程语言,诸如“C”编程语言或类似的编程语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为独立的软件包执行、部分在用户计算机上且部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后者的场景中,远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型的网络连接到用户计算机,或者可以(例如利用因特网服务提供商通过因特网)连接到外部计算机。
下面参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各个方面。将理解,流程图和/或框图的每个方框以及流程图和/或框图中方框的组合可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的所述指令创建了用于实现流程图和/或框图的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,所述指令指挥计算机、其它可编程数据处理装置、或其它器件以特定方式工作,从而,存储在计算机可读介质中的指令产生出包括实现流程图和/或框图的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
计算机程序指令也可被加载到计算机、其它可编程数据处理装置或其它器件上,以导致在计算机、其它可编程装置或其它器件上执行一系列的操作步骤,从而产生计算机实现的处理,使得在计算机或其它可编程装置上执行的指令提供用于实现在流程图和/或框图的一个或多个方框中规定的功能/动作的处理。
现在将参照附图详细描述本发明。
图1是示出实现本发明实施例的一般指定为100的存储环境的功能框图。
存储环境100包括主机计算系统102。主机计算系统102可以是膝上型计算机、平板计算机、上网本计算机、个人计算机(PC)、台式计算机、个人数字助理(PDA)、智能电话、或能够与存储系统104通信的任何可编程电子器件。在其它的实施例中,主机计算系统102可代表利用多个计算机作为计算系统的计算系统,诸如在云计算环境中。在另一实施例中,主机计算系统102代表利用群集(clustered)计算机和部件以用作单个无缝资源池的计算系统。
主机计算系统102与存储系统104通信。在一个实施例中,可经由控制器、总线或器件的一范围的层中的一个或更多个通信地耦接主机102和存储系统104。在一个实施例中,存储系统104是主机计算系统102的存储系统或存储子系统。在各种实施例中,存储系统104是固态驱动器(“SSD”)、硬盘驱动器、或包含固态及硬驱动器部件两者的混合驱动器。
主机计算系统102与存储系统104通信。在一个实施例中,存储系统104驻留于主机计算系统102内。在另一实施例中,存储系统104是与主机计算系统102分离的存储系统。主机计算系统102可使用任何已知的通信协议与存储系统104通信,所述通信协议的几个例子包括SATA、SCSI、SAS、USB和FibreChannel。在一个实施例中,主机计算系统102和存储系统104可经由控制器、总线或器件的一范围的层中的一个或更多个被通信地耦接。
存储系统104利用闪存存储阵列110存储数据。应理解,可用宽范围的存储介质实现这里的发明,所述存储介质包括例如非易失性随机存取存储器(NVRAM)技术,诸如NAND闪存存储器、NOR闪存存储器、相变存储器(PCM)、磁阻RAM(MRAM)和电阻RAM(RRAM)。
闪存存储阵列110包括含有页122a-122n的块120。闪存存储阵列110可包含与图1所示不同数量的块。闪存存储阵列110的每个块可包含与图1所示不同数量的页。在一个实施例中,页122a-122n中的每个页存储多个字节的数据。例如,存储系统104可包含几千个块,每个块可包含几千个页,每个页可存储几千字节的数据。
闪存存储阵列110的物理存储容量是闪存存储阵列110的所有存储容量的容量和。在一个实施例中,物理存储容量是闪存存储阵列110的所有页122a-122n的容量和。存储系统104可保留闪存存储阵列110的物理存储容量的一些部分作为过度供应容量。逻辑存储容量是逻辑块地址(下面更详细讨论)映射到的物理存储容量的量。过度供应容量是物理存储容量与逻辑存储容量之间的差。存储系统104可响应于询问(例如来自主机计算系统102的询问)来报告逻辑存储容量。
页122a-122n中的每个页存储数据。在一个实施例中,页122a-122n中的每个页被初始化为空白状态。响应写入命令,用户数据可被写入到空白页,该空白页变为有效页并且存储用户数据。当有效页的用户数据被删除时,该有效页变为无效页。当页驻留的块被擦除时,页(有效或无效)变为空白。有效数据是驻留于有效页中的数据,诸如用户数据。在一个实施例中,有效页响应于识别页的逻辑块地址的修整(trim)命令而变为无效。修整命令是识别包含已被删除的数据的页的地址的命令。
存储系统104包含控制器106。在一个实施例中,控制器106包含至少一个计算机处理器或至少一个处理节点。控制器106管理闪存存储阵列110。在一个实施例中,控制器106可对闪存存储阵列110执行读取和写入命令。控制器106与主机计算系统102接口(interface)。在一个实施例中,控制器106与主机计算系统102的操作系统或其它的应用(未示出)通信。例如,控制器106可从主机计算系统102接收读取和写入命令。控制器106使用称为逻辑块寻址的逻辑到物理映射系统,该系统是其中控制器106将逻辑块地址(“LBA”)映射到物理存储地址的系统。映射可随时间改变,使得同一LBA可在两个不同的时间点指向不同的物理存储地址。在一个实施例中,控制器106调整映射,以便将把随机逻辑地址作为目标的写入命令映射到非随机(例如,依次)物理地址。当用新数据重写存储于给定LBA处的旧数据时,控制器106在新的物理位置中写入新数据,并且将LBA映射更新为指向新的物理地址。由此,映射使逻辑地址与新的物理地址相关联。旧的物理位置中的数据不再有效,并且在该位置可被再次写入之前,包含无效数据的页必须被擦除,这是在擦除包含该页的块时实现的。
控制器106包含垃圾收集程序(“GC程序”)108。在示出的实施例中,GC程序108驻留于控制器106中。在其它实施例中,GC程序108可驻留于存储系统104内的别处。在又一些其它的实施例中,GC程序108可驻留于主机计算系统102内的别处。在又一些其它的实施例中,倘若GC程序108与控制器106和闪存存储阵列110通信,则GC程序108可驻留于另一计算系统中。
控制器106通过GC程序108进行操作,以通过监视由控制器106接收的写入操作的LBA来监视主机写入图案。主机写入图案是由写入操作识别的LBA的分布。写入操作的LBA可在可测量的程度上是随机的。在一个实施例中,主机写入图案是写入命令的LBA的随机性的度量。例如,控制器106可监视写入命令的LBA,并且确定LBA是依次的,在这种情况下,控制器106可确定写入操作是0%随机。在替代性例子中,控制器106可确定LBA不遵循图案,在这种情况下,控制器106可确定写入操作是100%随机。在一个实施例中,主机写入图案基于多个写入命令,诸如预定量的最近写入命令。在另一实施例中,主机写入图案例如作为LBA的随机性的流水(running)计算被连续确定。在另一实施例中,利用群集算法确定主机写入图案。
写入群集是逻辑地址空间的经受高程度(high level)写入活动的部分。存储于驱动器上的不同逻辑地址处的不同数据可以按不同频率被重写。例如,与操作系统文件对应的逻辑地址可被频繁读取,但被不频繁地重写。相反,例如,与数据库对应的逻辑地址可被不频繁地读取,但被频繁重写。
在一些实施例中,GC程序108基于总群集尺寸和闪存存储阵列110的过度供应容量确定过度供应比。在一个实施例中,总群集尺寸是指示闪存存储阵列110的所有识别写入群集的容量和的值。写入群集是闪存存储阵列110的逻辑地址空间的具有高写入活动的部分。在简化的例子中,存储系统104可具有包含100千兆字节的逻辑存储容量和20千兆字节的过度供应容量的120千兆字节的物理存储容量。但是,群集识别算法可确定15千兆字节的总群集尺寸。在一个实施例中,过度供应比等于物理过度供应容量除以物理过度供应容量与总群集尺寸之和。由此,在前面的例子中,过度供应比为约57%,它是20除以20与15之和。
GC程序108进行操作以确定陈旧性阈值,并基于陈旧性阈值对闪存存储阵列110执行垃圾收集。在一个实施例中,GC程序108确定写入放大目标和过度供应比,并然后基于写入放大目标和过度供应比来确定陈旧性阈值。在一个实施例中,GC程序108存储过度供应比与写入放大目标之间的至少一个相互关系,其中,每个相互关系与主机写入图案相关联。
陈旧性阈值指示无效页与块的总页之比,该总页包含无效页和有效页。对块执行垃圾收集所需要的写入放大成本与该块的有效页的数量成比例,原因是,在经历垃圾收集的块可被擦除之前,每个有效页必须被重写到另一块。在一个实施例中,陈旧性阈值是无效页与总页的最高比(意味着无效页的最大数量相对于总页的数量之比),其当与主机写入图案的预期写入放大组合时导致不超过写入放大目标的总写入放大。总写入放大可等于写入放大目标。具有超过陈旧性阈值的陈旧性的块对垃圾收集具有足够低的写入放大成本,以避免使总写入放大升高到写入放大目标之上。在一个实施例中,GC程序108识别超过垃圾收集阈值的闪存存储阵列110的块,并且对识别的块执行垃圾收集。结合图2至4更详细地讨论GC程序108。
图2是示出根据本发明实施例的用于确定垃圾收集阈值的GC程序108的操作步骤的流程图。
在方框202中,GC程序108确定过度供应比。过度供应比与闪存存储阵列110对应。在另一实施例中,GC程序108通过基于闪存存储阵列110的逻辑存储容量和闪存存储阵列110的物理存储容量计算过度供应比,来确定闪存存储阵列110的过度供应比。例如,GC程序108可接收指示物理存储容量和逻辑存储容量的值作为输入。在另一实施例中,GC程序108询问控制器106,并且作为响应,接收指示物理存储容量和逻辑存储容量的值。在一个实施例中,GC程序108通过确定物理存储容量与逻辑存储容量之间的差来确定物理过度供应容量。
在一些实施例中,GC程序108通过接收过度供应比来确定该过度供应比。例如,GC程序108可作为用户输入或者作为来自控制器106的预定值接收过度供应比。
在方框204中,GC程序108监视主机写入图案。在一个实施例中,GC程序108监视由控制器106接收的写入命令,以便确定主机写入图案并且检测主机写入图案的变化。在一个实施例中,主机写入图案与由控制器106执行的写入命令对应。在一个实施例中,主机写入图案与闪存存储阵列110对应。在一些实施例中,GC程序108通过确定由写入操作识别的LBA的分布的随机性来监视主机写入图案。在其它的实施例中,GC程序108作为用户输入接收主机写入图案。例如,GC程序108可作为用户输入接收其中写入操作是依次的主机写入图案,诸如在被不频繁地写入但被频繁地读取的视频媒体数据库中。在一个实施例中,GC程序108通过连续确定主机写入图案来监视主机写入图案。
在一些实施例中,GC程序108通过监视闪存存储阵列110的总群集尺寸来监视主机写入图案。在各种实施例中,GC程序108可利用许多群集识别算法中的任一种来识别写入群集并且确定总群集尺寸。这样的算法可能需要用户输入或者可能未被监督,意味着该算法不需要关于数据本性或者关于群集特性的预先信息。在一个实施例中,GC程序108通过确定每个群集的尺寸之和来确定总群集尺寸。
在一些实施例中,GC程序108利用总群集尺寸代替逻辑存储容量来确定存储系统104的过度供应比(方框202)。在一个实施例中,GC程序108通过确定过度供应容量除以过度供应容量与总群集尺寸之和来确定过度供应比。
在方框206中,GC程序108确定写入放大目标。在一些实施例中,GC程序108识别与主机写入图案相关联的相互关系。在一个这种实施例中,与主机写入图案相关联的相互关系使确定的过度供应比与写入放大目标相关。在一个实施例中,GC程序108通过确定与过度供应比相关的相互关系的值来确定写入放大目标,其中,该相互关系与主机写入图案相关联。例如,与随机主机写入图案相关联的相互关系可使高过度供应比值(例如,大于0.8)与低写入放大目标值(例如,小于1.5)相关,以及相反地,使低过度供应比值(例如,小于0.05)与高写入放大目标值(例如,大于4)相关。在各种实施例中,不同的主机写入图案与过度供应比和写入放大目标值的不同的相互关系相关联。
在方框208中,GC程序108确定陈旧性阈值。在一个实施例中,GC程序108基于主机写入图案和写入放大目标确定陈旧性阈值。在一些实施例中,GC程序108存储陈旧性阈值作为参考。
图3示出根据本发明实施例的用于响应于阈值执行垃圾收集的GC程序108的操作。
在方框302中,GC程序108识别闪存存储阵列110的块。在一个实施例中,GC程序108通过在方框302至308中示出的操作的多次迭代来按顺序识别闪存存储阵列110的每个块。在另一实施例中,识别的块是闪存存储阵列110的随机块。
在方框304中,GC程序108确定识别的块的陈旧性。在一个实施例中,GC程序108基于各自与识别的块对应的有效页量和无效页量来确定识别的块的陈旧性。例如,GC程序108可通过计算无效页量除以总页量(即,有效页量与无效页量之和)来作为百分比确定识别的块的陈旧性。在一个实施例中,GC程序108检索有效和无效页量。在另一实施例中,GC程序108接收有效和无效页量。例如,GC程序108可从控制器106接收有效页量和无效页量。
在决定306中,GC程序108确定识别的块的陈旧性是否超过陈旧性阈值。例如,GC程序108比较识别的块的陈旧性与陈旧性阈值,以确定识别的块的陈旧性是否超过陈旧性阈值。如果GC程序108确定识别的块的陈旧性超过陈旧性阈值(决定306,“是”分支),那么GC程序108对识别的块执行垃圾收集(308)。如果GC程序108确定识别的块的陈旧性不超过陈旧性阈值(决定306,“否”分支),那么GC程序108返回到方框302。在一些实施例中,陈旧性阈值可减小(decrement),使得否则将等于陈旧性阈值的识别的块的陈旧性改为超过陈旧性阈值。作为替代方案,GC程序108可确定识别的块的陈旧性是等于还是超过陈旧性阈值。
在一些实施例中,GC程序108可至少部分地基于识别的块的陈旧性的变化率来延迟识别的块的垃圾收集。在其它实施例中,GC程序108可至少部分地基于自GC程序108确定识别的块的陈旧性超过陈旧性阈值的时间量来延迟识别的块的垃圾收集。例如,如果GC程序108确定识别的块的陈旧性超过陈旧性阈值(决定306,“是”分支),那么GC程序108可确定自对识别的块的最后写入操作的时间是否超过时间阈值,或者,替代性地,识别的块的陈旧性是否在预定时间量内已改变了多于预定量。
在一些实施例中,GC程序108与盘活动无关地操作。在其它的实施例中,GC程序108依赖于盘活动暂停一些或所有的操作。例如,GC程序108可在高的盘活动的时段期间暂停垃圾收集操作。作为替代方案,GC程序108可与盘活动的强度相反地缩放垃圾收集操作。
图4示出根据本发明的说明性实施例的主机计算系统102的部件的框图。应理解,图4仅提供了对一种实现的说明,并且并不暗示关于其中可实现不同实施例的环境的任何限制。可作出对示出的环境的许多修改。
主机计算系统102包含提供计算机处理器404、存储器406、永久储存器408、通信单元410和输入/输出(I/O)接口412之间的通信的通信组构(fabric)402。可用被设计为用于在处理器(诸如微处理器、通信和网络处理器等)、系统存储器、外设和系统内的任何其它硬件部件之间转送(passing)数据和/或控制信息的任何架构实现通信组构402。例如,可用一个或更多个总线实现通信组构402。
存储器406和永久储存器408是计算机可读存储介质。在本实施例中,存储器406包含随机存取存储器(RAM)414和高速缓存存储器416。一般地,存储器406可包含任何适当的易失性或非易失性计算机可读存储介质。
GC程序108存储于永久储存器408中,以供各计算机处理器404中的一个或更多个经由存储器406中的一个或更多个存储器来执行。在本实施例中,永久储存器408包含固态盘驱动器。作为替代方案,或者,除了固态盘驱动器以外,永久储存器408可包含磁硬盘驱动器、半导体存储器件、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、闪存存储器、或能够存储程序指令或数字信息的任何其它计算机可读存储介质。
永久储存器408使用的介质也可以是可去除的。例如,可对永久储存器408使用可去除的硬驱。其它例子包括光盘和磁盘、拇指驱动器(thumb drive)、以及被插入到驱动器中以供转移到也是永久储存器408的一部分的另一计算机可读存储介质上的智能卡。
在这些例子中,通信单元410提供与其它数据处理系统或器件的通信。在这些例子中,通信单元410包含一个或更多个网络接口卡。通信单元410可通过使用物理和无线通信链路中的任一者或者两者来提供通信。GC程序108可通过通信单元410被下载到永久储存器408。
I/O接口412允许与可与主机计算系统102连接的其它器件输入和输出数据。例如,I/O接口412可提供与诸如键盘、键区、触摸屏和/或某一其它适当的输入器件的外部器件418的连接。外部器件418也可包含诸如例如拇指驱动器、便携式光盘或磁盘、以及存储卡的便携式计算机可读存储介质。用于实施本发明实施例的软件和数据,例如GC程序108,可存储于这种便携式计算机可读存储介质上,并且可经由I/O接口412被加载到永久储存器408上。I/O接口412也与显示器420连接。
显示器420提供向用户显示数据的机构,并且可例如是计算机监视器。
这里描述的程序基于它们在本发明的具体实施例中被实现的应用而被识别。但应理解,这里的任何特定的程序术语仅是为了方便而被使用,由此,本发明不应限于仅在由这种术语所识别和/或暗示的任何具体应用中使用。
附图中的流程图和框图示出了根据本发明各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能性和操作。在这点上,流程图或框图中的每个方框可以代表模块、区段(segment)或代码的一部分,其包含一个或更多个用于实现所规定的逻辑功能的可执行指令。还应注意,在一些替代性的实现中,方框中标注的功能可以不按照附图中标注的顺序发生。例如,依赖于所涉及的功能性,相继示出的两个方框实际上可以基本同时被执行,或者有时可以按相反的顺序执行方框。还将注意的是,框图和/或流程图的每个方框、以及框图和/或流程图中的方框的组合可以通过执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
Claims (10)
1.一种用于缩放垃圾收集的方法,所述方法包括:
通过第一计算机处理器确定存储器件的过度供应比,其中,存储器件包含多个块;
监视存储器件的写入图案以检测主机写入图案的变化;
基于写入图案和过度供应比确定写入放大目标;
基于写入放大目标确定陈旧性阈值,其中,所述陈旧性阈值与块的有效页的量对应,并且所述陈旧性阈值指示无效页与块的总页之比,该总页包含无效页和有效页;以及
对具有超过陈旧性阈值的陈旧性的一个或多个块执行垃圾收集,所执行的垃圾收集具有足够低的写入放大成本以避免使总写入放大高于写入放大目标,并且所述垃圾收集可至少部分地基于下列之一因素而被延迟:
所述一个或多个块的陈旧性的变化率;以及
自所述一个或多个块的陈旧性被确定为超过所述陈旧性阈值起的时间量。
2.根据权利要求1的方法,其中,确定过度供应比包括:
确定物理存储容量;
基于逻辑寻址空间确定逻辑存储容量;以及
基于物理存储容量和逻辑存储容量确定过度供应比。
3.根据权利要求1的方法,其中,监视主机写入图案包括:
确定过度供应容量;
确定逻辑地址空间的至少一个写入群集,所述至少一个写入群集中的每个写入群集具有尺寸;
基于所述至少一个写入群集的尺寸确定总群集尺寸;以及
基于物理存储容量和总群集尺寸确定过度供应比。
4.根据权利要求1的方法,其中,监视主机写入图案包括确定多个写入命令的随机性,每个写入命令识别逻辑块地址。
5.根据权利要求1的方法,还包括:
识别第一块,其中,第一块是多个块中的一个块,其中,所述多个块中的每个块包含多个页;
基于包含有效数据的块的页的量确定第一块的陈旧性;以及
确定第一块的陈旧性是否超过陈旧性阈值。
6.根据权利要求5的方法,还包括:
响应于确定第一块的陈旧性不超过陈旧性阈值,识别第二块。
7.根据权利要求5的方法,还包括:
响应于确定第一块的陈旧性超过陈旧性阈值,将第一块的有效块写入到第二块并且擦除第一块。
8.根据权利要求1的方法,还包括:
接收与主机写入图案相关联的相互关系,其中,所述相互关系使过度供应比与写入放大目标相关联。
9.一种用于缩放垃圾收集的系统,所述系统包含用于执行权利要求1-8的任一方法的所有步骤的装置。
10.一种用于缩放垃圾收集的计算机系统,所述计算机系统包含:
一个或更多个计算机处理器;
一个或更多个计算机可读存储介质;
存储于计算机可读存储介质上供所述一个或更多个处理器中的至少一个执行的程序指令,所述程序指令包含用于执行权利要求1-8的任一方法的所有步骤的程序指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/106,909 | 2013-12-16 | ||
US14/106,909 US9645924B2 (en) | 2013-12-16 | 2013-12-16 | Garbage collection scaling |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104714893A CN104714893A (zh) | 2015-06-17 |
CN104714893B true CN104714893B (zh) | 2018-05-22 |
Family
ID=53368594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410680111.1A Expired - Fee Related CN104714893B (zh) | 2013-12-16 | 2014-11-24 | 用于缩放垃圾收集的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9645924B2 (zh) |
CN (1) | CN104714893B (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
US10078452B2 (en) * | 2014-06-12 | 2018-09-18 | Hitachi Ltd. | Performance information management system, management computer, and performance information management method |
KR20160068108A (ko) * | 2014-12-04 | 2016-06-15 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 관리 방법 |
KR20160075229A (ko) * | 2014-12-19 | 2016-06-29 | 삼성전자주식회사 | 가비지 컬렉션 동작 방법 및 이를 적용하는 레이드 스토리지 시스템 |
US9940234B2 (en) * | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US9811462B2 (en) * | 2015-04-30 | 2017-11-07 | Toshiba Memory Corporation | Memory system executing garbage collection |
US9639282B2 (en) | 2015-05-20 | 2017-05-02 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices |
US9606737B2 (en) | 2015-05-20 | 2017-03-28 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning |
TWI554884B (zh) * | 2015-07-21 | 2016-10-21 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 |
CN106445397B (zh) * | 2015-07-28 | 2019-07-09 | 群联电子股份有限公司 | 存储器管理方法、存储器控制电路单元及存储器存储装置 |
US10055168B2 (en) * | 2015-08-31 | 2018-08-21 | SK Hynix Inc. | Delaying hot block garbage collection with adaptation |
US9946483B2 (en) * | 2015-12-03 | 2018-04-17 | Sandisk Technologies Llc | Efficiently managing unmapped blocks to extend life of solid state drive with low over-provisioning |
US9946473B2 (en) | 2015-12-03 | 2018-04-17 | Sandisk Technologies Llc | Efficiently managing unmapped blocks to extend life of solid state drive |
CN106897022B (zh) * | 2015-12-17 | 2019-05-31 | 腾讯科技(深圳)有限公司 | 一种管理存储设备的方法及装置 |
TWI584289B (zh) * | 2016-01-20 | 2017-05-21 | 大心電子(英屬維京群島)股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
US10649681B2 (en) | 2016-01-25 | 2020-05-12 | Samsung Electronics Co., Ltd. | Dynamic garbage collection P/E policies for redundant storage blocks and distributed software stacks |
US10248327B2 (en) * | 2016-04-01 | 2019-04-02 | SK Hynix Inc. | Throttling for a memory system using a GC/HOST ratio and operating method thereof |
US10248562B2 (en) | 2017-06-30 | 2019-04-02 | Microsoft Technology Licensing, Llc | Cost-based garbage collection scheduling in a distributed storage environment |
US10241716B2 (en) | 2017-06-30 | 2019-03-26 | Microsoft Technology Licensing, Llc | Global occupancy aggregator for global garbage collection scheduling |
TWI681295B (zh) * | 2017-07-07 | 2020-01-01 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 |
CN109491588B (zh) * | 2017-09-13 | 2022-05-31 | 群联电子股份有限公司 | 存储器管理方法、存储器控制电路单元与存储器存储装置 |
US10564886B2 (en) * | 2018-02-20 | 2020-02-18 | Western Digital Technologies, Inc. | Methods and apparatus for controlling flash translation layer recycle from host |
US10635494B2 (en) * | 2018-05-08 | 2020-04-28 | Microchip Technology Incorporated | Memory pool allocation for a multi-core system |
KR102634631B1 (ko) * | 2018-07-11 | 2024-02-08 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US10915444B2 (en) * | 2018-12-27 | 2021-02-09 | Micron Technology, Inc. | Garbage collection candidate selection using block overwrite rate |
CN110308876B (zh) * | 2019-07-01 | 2024-05-17 | 合肥兆芯电子有限公司 | 存储器管理方法、存储器存储装置及存储器控制电路单元 |
CN112306896B (zh) * | 2019-07-31 | 2022-12-27 | 华为技术有限公司 | 一种垃圾回收方法及装置 |
US11016880B1 (en) | 2020-04-28 | 2021-05-25 | Seagate Technology Llc | Data storage system with read disturb control strategy whereby disturb condition can be predicted |
US11580018B2 (en) * | 2021-04-25 | 2023-02-14 | Silicon Motion, Inc. | Method and apparatus for page validity management and related storage system |
CN113703664B (zh) * | 2021-06-24 | 2024-05-03 | 杭州电子科技大学 | 一种eMMC芯片随机写入速率优化实现方法 |
US20230096276A1 (en) * | 2021-09-24 | 2023-03-30 | International Business Machines Corporation | Garbage collection of redundant partitions |
US11740792B2 (en) * | 2022-01-04 | 2023-08-29 | Dell Products L.P. | Techniques for data storage management |
CN117369712A (zh) * | 2022-10-28 | 2024-01-09 | 华为技术有限公司 | 垃圾回收的方法、页面存储的方法和电子设备 |
CN116644001B (zh) * | 2023-07-20 | 2023-10-17 | 合肥康芯威存储技术有限公司 | 一种存储器件及其垃圾回收的控制方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103329103A (zh) * | 2010-10-27 | 2013-09-25 | Lsi公司 | 用于基于闪存的数据存储的自适应ecc技术 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7526599B2 (en) | 2002-10-28 | 2009-04-28 | Sandisk Corporation | Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system |
WO2005124530A2 (en) | 2004-06-21 | 2005-12-29 | Kabushiki Kaisha Toshiba | Method for controlling memory card and method for controlling nonvolatile semiconductor memory |
US8612718B2 (en) | 2009-08-19 | 2013-12-17 | Seagate Technology Llc | Mapping alignment |
US8285918B2 (en) * | 2009-12-11 | 2012-10-09 | Nimble Storage, Inc. | Flash memory cache for data storage device |
US9183134B2 (en) | 2010-04-22 | 2015-11-10 | Seagate Technology Llc | Data segregation in a storage device |
US20120173795A1 (en) * | 2010-05-25 | 2012-07-05 | Ocz Technology Group, Inc. | Solid state drive with low write amplification |
US9684590B2 (en) * | 2010-10-25 | 2017-06-20 | Seagate Technology Llc | Storing corresponding data units in a common storage unit |
KR101774496B1 (ko) | 2010-12-08 | 2017-09-05 | 삼성전자주식회사 | 비휘발성 메모리 장치, 이를 포함하는 장치들, 및 이의 동작 방법 |
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 |
US8892811B2 (en) * | 2012-03-01 | 2014-11-18 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Reducing write amplification in a flash memory |
US8788778B1 (en) * | 2012-06-04 | 2014-07-22 | Western Digital Technologies, Inc. | Garbage collection based on the inactivity level of stored data |
-
2013
- 2013-12-16 US US14/106,909 patent/US9645924B2/en not_active Expired - Fee Related
-
2014
- 2014-11-24 CN CN201410680111.1A patent/CN104714893B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103329103A (zh) * | 2010-10-27 | 2013-09-25 | Lsi公司 | 用于基于闪存的数据存储的自适应ecc技术 |
Also Published As
Publication number | Publication date |
---|---|
US20150169442A1 (en) | 2015-06-18 |
US9645924B2 (en) | 2017-05-09 |
CN104714893A (zh) | 2015-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104714893B (zh) | 用于缩放垃圾收集的方法和系统 | |
US10713161B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10185656B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10360156B2 (en) | Data storage device using host memory and method of operating same | |
US9817581B2 (en) | Maintaining versions of data in solid state memory | |
US8239618B2 (en) | System and method for emulating preconditioning of solid-state device | |
US8966160B2 (en) | Storage device trimming | |
US20180089074A1 (en) | Techniques to Manage Key-Value Storage at a Memory or Storage Device | |
CN111026326B (zh) | 存储器控制器、存储装置及管理元数据的方法 | |
TWI746510B (zh) | 用於在資料儲存裝置上管理不可變資料之技術 | |
CN109800180A (zh) | 用于地址映射的方法和存储器系统 | |
JPWO2017013758A1 (ja) | データベース検索システム及びデータベース検索方法 | |
CN104346290A (zh) | 存储装置、计算机系统及其操作方法 | |
CN107025071A (zh) | 非易失性存储器装置及其垃圾收集方法 | |
CN110674056B (zh) | 一种垃圾回收方法及装置 | |
CN110442529A (zh) | 可配置的存储器系统及配置和使用该存储器系统的方法 | |
KR20210019577A (ko) | 비-휘발성 메모리에서 데이터 유효성 추적 | |
KR20220022318A (ko) | 컨트롤러 및 메모리 시스템 | |
KR101626218B1 (ko) | 블록 기반의 페이지 매핑 방법 | |
US20240069771A1 (en) | Read operations for mixed data | |
CN108920293A (zh) | 固态硬盘写失败的处理方法和固态硬盘 | |
KR20200014175A (ko) | 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치 | |
US10108339B2 (en) | Reduction of intermingling of input and output operations in solid state drives | |
US8949553B2 (en) | System and method for retention of historical data in storage resources | |
KR102497130B1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180522 |