CN114096952A - 调整存储系统中的块池大小 - Google Patents
调整存储系统中的块池大小 Download PDFInfo
- Publication number
- CN114096952A CN114096952A CN202080048805.7A CN202080048805A CN114096952A CN 114096952 A CN114096952 A CN 114096952A CN 202080048805 A CN202080048805 A CN 202080048805A CN 114096952 A CN114096952 A CN 114096952A
- Authority
- CN
- China
- Prior art keywords
- pool
- blocks
- block
- rtu
- rtu queue
- 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
Links
- 238000003860 storage Methods 0.000 title claims description 124
- 238000000034 method Methods 0.000 claims abstract description 138
- 230000004044 response Effects 0.000 claims abstract description 45
- 238000012546 transfer Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 15
- 238000013459 approach Methods 0.000 description 36
- 238000010586 diagram Methods 0.000 description 34
- 230000008569 process Effects 0.000 description 30
- 238000012545 processing Methods 0.000 description 28
- 238000013500 data storage Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 12
- 230000008859 change Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 230000002829 reductive effect Effects 0.000 description 7
- 238000000926 separation method Methods 0.000 description 7
- 230000003321 amplification Effects 0.000 description 6
- 238000003199 nucleic acid amplification method Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000013403 standard screening design Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000007704 transition Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- GVVPGTZRZFNKDS-JXMROGBWSA-N geranyl diphosphate Chemical compound CC(C)=CCC\C(C)=C\CO[P@](O)(=O)OP(O)(O)=O GVVPGTZRZFNKDS-JXMROGBWSA-N 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 101100029838 Mus musculus Pinx1 gene Proteins 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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
-
- 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
- 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/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/0647—Migration mechanisms
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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
-
- 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
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
根据实施例,一种计算机实现的方法包括:确定包括在第一准备使用(RTU)队列中的块的数量是否在第一RTU队列的第一范围内。响应于确定包括在第一RTU队列中的块的数量在第一范围中,确定包括在第二RTU队列中的块的数量是否在第二RTU队列的第二范围中。此外,响应于确定包括在第二RTU队列中的块的数量不在第二范围中,从与第一RTU队列对应的第一池中的块之一重定位有效数据。第一池中的块被擦除,并且从第一池转移到对应于第二池的第二RTU队列。
Description
技术领域
本发明涉及数据存储系统,更具体地,本发明涉及调整存储系统中的存储块池大小。
背景技术
以闪存为例,传统的基于NAND闪存的固态驱动器(SSD)的性能特性与传统的硬盘驱动器(HDD)的性能特性有着根本的不同。传统SSD中的数据通常以4、8或16KB大小的页面组织。此外,SSD中的页面读取操作通常比写入操作快一个数量级,并且延迟既不取决于操作的当前位置也不取决于操作的先前位置。
然而,在基于闪存的SSD中,存储位置在写入之前以块为单位进行擦除。擦除块单位的大小是从256至512或甚至数千页,并且擦除操作比页编程操作花费的时间大约多一个数量级。由于NAND闪存的固有属性,基于闪存的SSD会异地写入数据,映射表将写入数据的逻辑地址映射到物理地址。该映射表通常称为逻辑到物理表(LPT)。
由于基于闪存的存储单元由于磨损或其他原因而表现出读取错误和/或故障,因此可以在内存页内以及跨存储芯片(例如,RAID-5和RAID-6类方案)使用附加冗余。存储器页内的附加冗余可以包括纠错码(ECC),其例如可以包括BCH、LDPC或其他码。虽然在页面中添加ECC相对简单,但是将存储块组织成类RAID条带更为复杂。例如,个别块会随时间的推移而退役,这需要重新组织条带或减少条带的容量。由于条带的组织与LPT一起定义了数据的放置,SSD通常利用日志结构阵列(LSA)架构,它结合了这两种方法。
LSA架构依赖于异地写入。在这种方法中,内存页重写将导致将内存页数据写入内存中的新位置,将内存页数据的旧副本标记为无效,然后更新映射信息。由于当前NAND存储器技术的限制,无效的数据位置在其所属的整个块被擦除之前无法重新使用。但是,在擦除之前,块会进行垃圾收集,从而将块中的任何有效数据重新定位到新块。一个块的垃圾收集通常被推迟尽可能长的时间,以最大化块中无效数据的数量,从而减少重新定位的有效页面的数量,因为重新定位数据会导致额外的写入操作,从而增加写入放大。
发明内容
根据实施例,一种计算机实现的方法用于调整存储系统中的块池大小。该计算机实现的方法包括:确定包括在第一准备使用(RTU)队列中的块的数量是否在第一RTU队列的第一范围内。响应于确定包括在第一RTU队列中的块的数目在第一RTU队列的第一范围中,确定包括在第二RTU队列中的块的数目是否在第二RTU队列的第二范围中。此外,响应于确定包括在第二RTU队列中的块的数量不在第二RTU队列的第二范围中,从与第一RTU队列对应的第一池中的块之一重定位有效数据。第一池中的块被擦除,并且从第一池转移到对应于第二池的第二RTU队列。在第一池中的块以单级单元(SLC)模式配置,而第二池中的块以每单元多位模式配置。
根据另一实施例,一种计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有体现在其中的程序指令。程序指令可由处理器读取和/或执行,以使处理器:执行上述方法。
根据又一实施例,一种系统包括:被配置为存储数据的多个非易失性随机存取存储器(NVRAM)块。该系统还包括处理器和与该处理器集成和/或可由该处理器执行的逻辑。该逻辑被配置成:执行上述方法。
通过以下详细描述,本发明的其他方面和实施例将变得显而易见,当结合附图时,所述详细描述以举例方式说明本发明的原理。
附图说明
图1是根据一个实施例的非易失性存储卡的图。
图2是根据一个实施例的数据存储系统架构的图。
图3是根据一个实施例的系统图。
图4是根据一个实施例的包括块条和页条的概念图。
图5是根据一个实施例的非易失性存储器模块的示意图。
图6A是根据一个实施例的方法的流程图。
图6B是根据一个实施例的方法的流程图。
图6C为根据一个实施例的用于图6A和/或图6B的方法中的操作之一的子过程的流程图。
图7是根据一种实施方式的数据和流程框图概况的部分示意图。
图8是根据一个实施例的网络架构。
图9是根据一个实施例的可以与图8的服务器和/或客户端相关联的代表性硬件环境。
图10是根据一个实施例的分层数据存储系统。
具体实施方式
以下描述是为了说明本发明的一般原理而进行的,而不是为了限制在此要求保护的发明构思。进一步,本文中所描述的特定特征可以与不同可能的组合和排列中的每一者中的其他描述特征组合使用。
除非本文中另外特别限定,否则所有术语将被给予它们的最广泛的可能解释,包括从说明书中暗示的含义以及本领域技术人员所理解的含义和/或如在词典、论文等中限定的含义。
还必须注意的是,如在说明书和所附权利要求中使用的,单数形式“一个”、“一种”和“该”包括复数指示物,除非另外说明。还应当理解,当在本说明书中使用术语“包括(comprises)”和/或“包含(comprising)”时,其指定所述特征、整体、步骤、操作、元件和/或部件的存在,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、部件和/或它们的组合。
以下描述公开了数据存储系统及其操作和/或组成部分的若干优选实施例。应当理解,本文的不同实施例可以用宽范围的存储介质来实现,包括例如非易失性随机存取存储器(NVRAM)技术,诸如NAND闪存、NOR闪存、相变存储器(PCM)、磁阻RAM(MRAM)和电阻RAM(RRAM)。为了提供上下文并且仅为了帮助读者,可以参考非易失性存储器的类型来描述不同实施例。这仅是通过举例的方式完成的,并且不应当被认为是对在权利要求中定义的本发明的限制。
在一个总体实施例中,计算机实施的方法用于调整存储系统中的块池大小。该计算机实现的方法包括:确定包括在第一准备使用(RTU)队列中的块的数量是否在第一RTU队列的第一范围内。响应于确定包括在第一RTU队列中的块的数目在第一RTU队列的第一范围中,确定包括在第二RTU队列中的块的数目是否在第二RTU队列的第二范围中。此外,响应于确定包括在第二RTU队列中的块的数量不在第二RTU队列的第二范围中,从第一池中与第一RTU队列对应的块中的一个块中重定位有效数据。第一池中的块被擦除,并且从第一池转移到对应于第二池的第二RTU队列。第一池中的块以单级单元(SLC)模式配置中,而第二池中的块以每单元多位模式配置。
在另一总体实施例中,一种计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有与其体现的程序指令。程序指令可由处理器读取和/或执行,以使处理器:执行上述方法。
在又一总体实施例中,一种系统包括:被配置为存储数据的多个非易失性随机存取存储器(NVRAM)块。该系统还包括处理器和与该处理器集成和/或可由该处理器执行的逻辑。该逻辑被配置成:执行上述方法。
图1示出了根据一个实施方式的存储卡100。应当注意,尽管在本实施例中将存储卡100描述为示范性非易失性数据存储卡,但是根据替代实施例,可以在数据存储系统中使用各种其他类型的非易失性数据存储卡。因此,存储卡100的架构和/或组件绝不旨在限制本发明,而是作为非限制示例来呈现。
此外,作为选择,本存储卡100可以结合来自本文列出的任何其他实施例的特征实现,例如参考其他附图描述的那些。然而,这种存储卡100和在此呈现的其他存储卡可以用在各种应用和/或排列中,这些应用和/或排列可能会或可能不会在此处列出的说明性实施例中具体描述。。此外,本文呈现的存储卡100可以在任何期望的环境中使用。
继续参考图1,存储卡100包括网关102、连接到GPP存储器114(其可以包括RAM、ROM、电池支持的DRAM、相变存储器PC-RAM、MRAM、STT-MRAM等、或其组合)的通用处理器(GPP)112(诸如,ASIC、FPGA、CPU等)、以及多个存储器控制器108(在本示例中包括闪存控制器)。每个存储器控制器108经由通道106连接到多个NVRAM存储器模块104(其可以包括NAND闪存或其他非易失性存储器类型,诸如以上列出的那些)。
根据不同实施例,一个或多个控制器108可以是或包括一个或多个处理器,和/或用于控制存储卡100的任何子系统的任何逻辑。例如,控制器108通常控制NVRAM存储器模块104的功能,诸如数据写入、数据再循环、数据读取等。在不同实施例中,控制器108可使用本领域已知的逻辑以及本文所公开的任何逻辑来操作,因此可被视为用于本文所包括的非易失性存储器的任何描述的处理器。
此外,控制器108可被配置和/或可编程以执行或控制本文所提出的方法中的一些或全部。因此,控制器108可被视为被配置为通过编程到一个或多个芯片、模块和/或块中的逻辑、软件、固件和/或一个或多个处理器可用的其他指令来执行各种操作;等等以及它们的组合。
仍然参考图1,每个存储器控制器108还连接到控制器存储器110,控制器存储器110优选地包括复制根据本文描述的各种实施方式的非易失性存储器结构的高速缓存。然而,取决于期望的实施例,控制器存储器110可以是电池供电的的DRAM、相变存储器PC-RAM、MRAM、STT-MRAM等,或其组合。
如前所述,根据所期望的实施例,存储卡100可以在不同类型的数据存储系统中实现。图2示出了根据示例性实施例的数据存储系统架构200,其绝不旨在限制本发明。此外,应注意,图2的数据存储系统220可以包括在图1的实施方式中发现的各种组件。
参见图2,数据存储系统220包括多个接口卡202,配置为通过I/O互连204与一个或多个处理器系统201通信。数据存储系统220还可以包括被配置为控制多个非易失性数据存储卡208中的数据存储的一个或多个RAID控制器206。非易失性数据存储卡208可包括NVRAM、闪存卡、RAM、ROM和/或一些其他已知类型的非易失性存储器。
I/O互连204可包括任何已知的通信协议,诸如光纤信道(FC)、以太网上的FC(FCoE)、无限带宽、互联网小型计算机系统接口(iSCSI)、传输控制协议/互联网协议(TCP/IP)、高速外围组件互连(PCIe)等和/或其任何组合。
数据存储系统220中的RAID控制器206可以执行类似于RAID-5、RAID-10所采用的奇偶方案或一些其他合适的奇偶方案,如本领域技术人员在阅读本说明书时将理解的。
每个处理器系统201包括一个或多个处理器210(诸如CPU、微处理器等)、本地数据存储器211(例如,诸如图9的RAM914、图9的ROM916等)、以及被配置成用于与数据存储系统220通信的I/O调整器218。
再次参考图1,存储器控制器108、GPP 112和/或本文描述的其他控制器(例如,图2的RAID控制器206)可能能够根据期望的实施方式对存储的数据执行各种功能。具体地,存储器控制器或者GPP 112可以包括被配置为执行以下功能中的任何一个或多个的逻辑,这些功能决不旨在作为排他性列表。换言之,如本领域技术人员在阅读本说明书后所认识到的,根据期望的实施例,存储系统的逻辑可以被配置成用于执行附加或替代功能。
垃圾收集
在本说明书的SSD存储器控制器的上下文中的垃圾收集可以包括识别待收回以供未来使用的数据块和重定位其中仍然有效的所有页面的过程。此外,取决于操作的特定控制器和/或相应的垃圾收集单元,可以识别逻辑擦除块(LEB)以进行收回和/或重新定位。通常,一个LEB对应于一个块条带,但是可替换的实现方式也可以考虑固定数量的块条带或者构建LEB的单个块。
物理“块”表示可以在非易失性存储器(例如,诸如NAND闪存)上擦除并由此准备向其写入数据的最小单元。然而,典型垃圾收集操作单元经常是非易失性存储器的物理块的倍数,并且在此也被称为LEB。这是由于通常在LEB中添加类似RAID的奇偶校验信息。因此,在页或块故障的情况下,只有当LEB中的所有块仍在保存数据时,才能重建数据。。因而,一旦来自LEB中的所有块的所有仍有效数据已经成功地重定位到新位置,则来自垃圾收集单元的各个块只能单独地或在单个单元中被擦除。所以,全部垃圾收集单元被作为单个单元进行垃圾收集。此外,LEB的大小直接影响垃圾收集引起的写入放大。LEB越大,不相关数据一起存储在LEB中的可能性就越大,因此在垃圾收集选择时可能需要重新定位更多的LEB数据。
通常,来自不同管芯和/或闪存通道的块被分组在一起,使得来自同一组的块可以被并行读取或写入,由此增加总带宽。还有可能组合先前的两种方法,并且使用来自可以并行访问的不同闪存信道的块来组成RAID条带。
还应当注意,LEB可以包括物理存储块的任何倍数,这是一个物理擦除的单位。此外,将存储块组织成LEB不仅允许在来自不同存储器芯片、存储器平面和/或通道的存储块之间添加类RAID的奇偶校验保护方案,而且还允许通过更高的并行性来显著地增强性能。例如,多个非易失性存储块可以一起组合在一个RAID条带中。本领域技术人员在阅读本说明书后将理解,RAID方案通常提高可靠性并减少数据丢失的概率。
根据绝不旨在限制本发明的示例性实施例,存储器控制器(例如,参见图1的108)和/或GPP112可以在内部执行垃圾收集。如前所述,垃圾收集可以包括选择要重定位的LEB,之后可以重新定位(例如,移动)在所选LEB上仍然有效的所有数据。在重新定位仍然有效的数据后,LEB可以被擦除,然后用于存储新数据。从垃圾收集的LEB重定位的数据量确定写入放大。此外,减少写入放大的有效方法包括实现写入热分离。
写入热分离
在本上下文中,数据的“写入热”是指数据被更新(例如,用新数据重写)的速率(例如,频率)。被视为“热”的存储块往往具有频繁的更新速率,而被视为“冷”的存储块具有比热块更慢的更新速率。
跟踪逻辑页的写入热可涉及例如在LPT映射条目中为该页分配特定数量的位,以跟踪在某个时间段或窗口中该页已经看到多少写入操作。通常,主机写入操作增加写入热,而内部重定位写入降低写入热。写入热的实际增量和/或减小可为确定性的或概率性的。
类似地,对于每个逻辑页,可利用LPT中的特定数量的附加位来跟踪读取热。为了减少元数据,还可以在物理块级跟踪读取热,其中可以维持用于跨接和非跨接读取的每个块的单独计数器。然而,应注意,对于一些实施例,当确定存储块的写入热时,对存储块的读取请求和/或对存储块执行的读取操作的数目对于写入热分离可能不起作用。例如,如果频繁地从特定存储块读取数据,那么高读取频率不一定意味着存储块也将具有高更新速率。相反,对给定存储块执行的高频读取操作可表示存储在存储块中的数据的重要性、值等。
通过对具有相同和/或相似写入热值的存储块进行分组,可以实现写入热分离。具体地,热隔离方法可以将热内存页面一起分组在某些存储块中,而将冷内存页面一起分组在单独的存储块中。因此,热隔离LEB往往被热或冷数据占据。
写入热分离的优点是双重的。首先,在热存储块上执行垃圾收集处理也将防止触发冷数据的重定位。在没有写入热分离的情况下,频繁执行的热数据更新还会导致与被重定位的热数据并置在同一LEB上的所有冷数据发生不希望的重定位。因此,对于实现写入热分离的实施例,通过执行垃圾收集引起的写入放大要低得多。
其次,数据的相对热可以用于磨损均衡目的。例如,热数据可以被放置在更健康(例如,更年轻)的存储块中,而冷数据可以被放置在相对于那些更健康的存储块不太健康(例如,更年长)的存储块上。因此,相对较旧的块暴露于磨损的速率被有效地减缓,从而改善实现写入热分离的给定数据存储系统的总体耐久性。
写入分配
写入分配包括将写入操作的数据放置到开放LEB的空闲位置中。一旦LEB中的所有页面被写入,LEB就被关闭并被放置在一个包含已占用LEB的池中。通常,被占用池中的LEB有资格进行垃圾收集。开放的LEB的数量通常是有限的,并且任何被关闭的LEB可以立即或者在一些延迟之后用一个新的LEB替换,该新LEB通过将一个或多个擦除块关联到LEB来打开。
在执行期间,垃圾收集可以与用户写入操作同时发生。例如,当用户(例如,主机)向设备写入数据时,设备控制器可以对无效数据的LEB连续执行垃圾收集以为新的传入数据页面腾出空间。如上所述,对其执行垃圾收集的LEB通常将具有在垃圾收集操作时仍然有效的一些页面;因此,这些页面优选地被重定位(例如,写入)到新的LEB。
再次,前述功能绝不旨在限制本文描述和/或建议的任何存储系统的能力。相反,如本领域技术人员在阅读本说明书时将理解的,前述功能通过示例的方式呈现,并且根据期望的实施例,存储系统的逻辑可以被配置为执行附加或替代功能。
现在参考图3,示出了根据一个实施例的系统300。作为选择,本系统300可以结合来自本文列出的任何其他实施方式的特征实现,诸如参考其他附图描述的那些。然而,这种系统300和在此呈现的其他系统可以用于不同应用和/或组合,这些应用和/或排列可以或可以不在这里列出的说明性实施例中具体描述。此外,这里呈现的系统300可以用于任何期望的环境,例如,与控制器结合使用。
如图所示,系统300包括耦合到若干其他组件(包括垃圾收集器304)的写入高速缓存302。如前所述,垃圾收集器304可以用于通过重定位有效数据和提供要被擦除的非易失性存储块以供以后再使用而释放LEB单元。因此,取决于期望的实施例,垃圾收集器304可以回收连续物理空间的块。根据示例性实施例,块擦除单元可以用于跟踪和/或完成由垃圾收集器304移交的非易失性存储块的擦除。
写入高速缓存302还耦合到空闲块管理器306,空闲块管理器306可以在空闲非易失性存储块已经被擦除之后跟踪存储块它们。此外,如本领域普通技术人员在阅读本说明书后将理解,空闲块管理器306可以使用被擦除的空闲非易失性存储块来构建来自不同通道的非易失性存储块的空闲条(例如,块条带)。
仍参照图3,写入高速缓存302耦接至LPT管理器308和存储器I/O单元310。LPT管理器308维护逻辑地址到存储器中的物理页的逻辑到物理映射。根据绝不旨在限制本发明的示例,LPT管理器308可以维持4KiB或16KiB逻辑地址的逻辑到物理映射。存储器I/O单元310与存储器芯片通信以便执行低级操作,例如读取一个或多个非易失性存储页面、写入非易失性存储页面、擦除非易失性存储块等。
为了更好地理解如本文中使用的块条和页条之间的区别,图4是根据一个实施例的概念图400。LEB由块条带构建,并且通常使用单个块条带构建LEB。然而,替代实施例可以使用多个块条带来形成LEB。作为一种选择,本概念图400可结合来自本文列出的任何其他实施方式的特征来实现,诸如参考其他附图描述的那些。然而,这种概念图400和在此呈现的其他概念图可以用于不同应用和/或在此处列出的说明性实施例中可能具体描述或可能未具体描述的排列中。进一步,本文呈现的控制器概念图400可在任何期望的环境中使用。因此,图4的示例性非易失性存储器控制器概念图400可以在高速缓存架构中实现。然而,根据期望的实施方式,在定义存储在非易失性存储器中的数据的组织时可以实现图4的概念图400。因此,下面依次描述这两个实现方式。
非易失性存储器
现在参见图4,概念图400包括标记为“平面0”至“平面M”的一组M+1个聚合平面。聚合平面由在不同信道上具有相同平面索引的所有物理平面组成。应当注意,聚合平面在本文中也被简称为平面。
当用存储在非易失性存储器中的数据实现时,通道上的每个物理平面可以包括大块集合,例如,通常为1024、2048或更多。此外,一个或多个物理平面还可以包括若干附加块,其可以用作坏块(例如,性能较差的块、具有不期望的特性的块等)的替换块。
在非易失性存储器的每个平面中,来自每个通道的单个块可以形成相应的块条带。因此,非易失性存储器的给定实施例所支持的块条的数量可以由每个平面的块数量和平面的数量来确定。
在平面0的分解视图中,概念图400进一步示出了平面的其余部分所支持的一组块条带之中的单个块条带(块条0)。平面0的块条0被示出为包括11个块,每个通道的一个块标记为“通道0”至“通道10”。应注意,块与块条带的关联可随时间而改变,因为块条通常在它们垃圾收集之后被溶解。擦除的块可以放置在空闲块池中,由此当写入分配请求新的块条带时,新的块条带从空闲块池中的块组装。例如,查看概念图400,来自信道0的块10和来自信道4的块41当前与示出的平面0的块条0相关联。此外,所示出的块条0保持N+1个页条带,并且每个块因此保持标记为“页0”至“页N”的N+1个页。
高速缓存架构
仍参照图4,当在高速缓存架构中实施时,在聚合平面0的分解图中示出的页面的每个块可构成一个通道的唯一块。类似地,每个通道贡献一个单独的块,形成块条带。例如,查看概念图400,来自信道0的块10包括其中的所有页(页0到页N),而来自信道4的块41对应于其中的所有页,等等。
在内存控制器的上下文中,例如,它可能能够在通道级别实现RAID,块条带由多个块组成,这些块相当于一个块条带。仍参见图4,聚合平面0的多个块构成块条0。虽然块条中的所有块通常属于同一的聚合平面,但是在一些实施例中,块条的一个或多个块可以属于不同的物理平面。由此得出,每个聚合平面可以包括一个或多个块条带。因此,根据说明性实施例,来自不同物理平面的块0到块10可以构成块条带。
不管图4的概念图400是否利用非易失性存储器和/或高速缓存架构来实现,在不同的实施例中,每个块中的页数和/或每个平面中的通道数可取决于期望的实施例而变化。根据绝不旨在限制本发明的示例性实施例,块可以包括256页,但是在不同实施例中可以包括更多或更少页。类似地,每个平面的通道数量和/或平面数量可以根据所期望的实施例而变化。
仍参照图4,具有相同页索引的块条带中的所有页表示页条。例如,页条0包括平面0的块条带0中的每个通道的第一页(页0)。类似地,页条N包括平面0的块条带0中的每个通道的最后一页(页N)。
如上所述,非易失性存储器中的存储块的物理配置随时间而改变。例如,在过去,闪存块具有每单元一位的配置,但是在数据存储方面的改进已经引入了实现每单元多位配置的闪存块。虽然具有每单元多位配置的块能够存储比具有每单元一位配置的块更多的信息,但这种存储容量的增加是以性能延迟为代价的。例如,具有每单元一位的配置的存储块经历写入延迟,其比具有每单元多位配置的存储块经历的写入延迟低大约2.5倍到大约10倍。类似地,与每单元具有多位配置的存储块相比,与每单元具有一位配置的存储块经历较低的读取延迟。
存储容量和性能延迟之间的这种折衷允许存储系统在某种程度上定制存储器的性能能力。例如,被预测具有大量I/O流量的存储系统能够选择性地包括比具有每单元多位配置的存储块更多数量的具有每单元一位配置的存储块。相反,被预测用于存储大量冷数据的存储系统能够选择性地包括比具有每单元一位配置的存储块更多数量的具有每单元多位配置的存储块。然而,实时使用通常会与设计这些存储系统时可能已经考虑的预测有所不同。因此,传统存储系统已经不能保持高效性能。
与传统系统所经历的前述缺点形成鲜明对比的是,本文所包括的各实施例实现混合控制器,所述混合控制器能够基于当前利用率和工作负荷属性来动态地调整块池大小,例如,如以下将进一步详细描述的。
现在参见图5,示出了根据一个实施例的具有混合控制器502的非易失性存储器模块500。作为选择,本存储器模块500可以结合来自本文列出的任何其他实施方式的特征实现,诸如参考其它附图描述的那些。然而,这样的存储器模块500和在此呈现的其他可以用于各种应用和/或在此处列出的说明性实施例中可能具体描述或可能未具体描述的排列中。进一步,本文呈现的存储器模块500可以在任何期望的环境中使用。因此,图5(和其他图)可被认为包括任何可能的置换。
如上所述,存储器模块500包括混合控制器502,其能够管理和/或调整以每单元一位模式(在本文中也称为“单层单元模式”或“SLC模式”)以及每单元多位模式配置的块。根据一些方法,混合控制器502通过将不同的块配置拆分成两个不同的池504、506来管理这些不同的块配置。这些池504之一被指定为包括在SLC模式中配置的那些块,而另一池506包括在每单元多位模式中配置的块。
池504、506中的每一个都跨越多个多个数据存储部件(例如,NVRAM存储器模块,诸如NAND闪存器件),它们一起用作存储器阵列508。因此,图5中示出的各种组件用作存储卡,并且可以实现以上关于图1的存储卡100描述的任何方法。
仍参考图5,混合控制器502还耦接至缓存存储器510以及从一个或多个主机、存储系统、运行应用等接收数据命令的网关512。网关512又耦合到GPP514和3GPP存储器516。如上所述,GPP514可以是任何期望的类型,例如,ASIC、FPGA、CPU等。类似地,GPP存储器516可为任何期望的类型,例如,RAM、ROM、电池支持的DRAM、相变存储器PC-RAM、MRAM、STT-MRAM等,和/或其组合。
因此,混合控制器能够将被频繁访问(例如,读取、重写、附加到等)的数据存储在以SLC模式配置并因此包括在第一池504中的块中,而被访问的数据不太频繁地存储在以每单元多位模式配置的块中,因此包括在第二池506中的块中。由于混合控制器可用于首先将用户写入首先配置位SLC模式的块,而只有仍然有效的数据稍后在后台被降级到每单元多位的块,,由此显著减少对第二池中的块执行的写入操作的数量,使得整体耐久性增加。这种存储方案实现了存储器的不同存储块及其相应的性能特性的有效使用。然而,随着存储在存储器模块500中的热数据和冷数据的比率随时间波动,相应池504、506中的每一个都可能未被充分利用和/或被过度利用。
因此,混合控制器502能够选择性地重新配置第一和/或第二池504、506中的任何块以基于实际使用和/或工作负荷属性来动态地调整。这允许存储器模块500保持高效性能,而不管存储在其中的热数据或冷数据的量。现在参见图6A,示出了根据一个实施例的用于调整存储系统中的块池大小的方法600。在不同实施例中,除其他环境之外,方法600可根据本发明在图1-5中描绘的任何环境中执行。当然,如本领域技术人员在阅读本说明书后将理解的,方法600中可包括比图6A中具体描述的操作更多或更少的操作。例如,方法600中包括的各种过程在以下将在SLC模式下配置的存储块转变为在每单元多位模式下配置的上下文中描述。存储块然而,方法600中所包括的不同过程中的任何一个或多个可以在将以每单元多位模式配置的存储块转变到以SLC模式配置的上下文中应用(例如,参见下面的图6B)。
方法600的每一步骤可由操作环境的任何合适组件执行。例如,在不同实施例中,方法600可以部分地或完全由混合控制器、控制器、处理器、计算机等或其中具有一个或多个处理器的一些其他设备来执行。因此,在一些实施例中,方法600可以是计算机实施的方法。在这样的实施例中,用于实现该方法的计算机可包括存储器模块本身或其一部分,例如混合控制器。此外,术语“计算机”、“处理器”和“控制器”关于本文的任何实施例可以互换使用,这样的组件在本发明的许多不同排列中被认为是等效的。
此外,对于具有处理器的那些实施例,处理器(例如,以硬件和/或软件实现的处理电路、芯片和/或模块),并且优选地具有至少一个硬件组件,可以被用在任何设备中来执行方法600的一个或多个步骤。说明性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合、或本领域已知的任何其他合适的计算设备。
如图6A所示,方法600的操作602包括评估第一准备使用(RTU)队列的大小和第二RTU队列的大小。第一和第二RTU队列中的每一个包括分别合并在第一和第二存储块池中的存储块。此外,第一和第二池中的每一个包括以不同模式配置的存储块。如上所述,第一池包括在SLC模式中配置的存储块,而第二池包括在每单元多位模式中配置的存储块。因此,第一RTU队列包括以SLC模式配置的存储块,而第二RTU队列包括以多位模式配置的存储块。根据该方法,第二池中以每单元多比特模式配置的块可具有多个不同的配置。例如,在一些方法中,第二池中的每单元多位模式配置的块被配置成多级单元(MLC)模式,而在其他方法中,第二池中的被配置成每单元多位模式的块被配置成三级单元(TLC)模式。在又一些方法中,第二池中以每单元多位模式配置的块被以四级单元(QLC)模式配置,并且以QLC模式配置的块中的每一者包括较低页、较高页、额外页和顶页。
关于本描述,给定RTU队列的“大小”旨在表示包括在其中的已擦除的存储块的量。最初,当没有数据写入设备时,RTU队列的大小表示总存储容量,因为所有块根据其模式被擦除和放置在RTU队列中。随着时间的推移,当数据被写到非易失性存储器模块时,通过从相应RTU中取出块来打开用于数据放置的新LEB,从而减小了它们的大小。在某些时候,LEB的打开和关闭导致任何RTU中的低队列级,此时必须执行垃圾收集。RTU的大小可以表示为(例如,量化使用)包括在RTU队列中的块的数量、包括在RTU队列中的块的组合存储容量、包括在总体中的块总数的百分比包含在RTU队列中的系统等。根据一些方法,第一和/或第二RTU队列的大小通过实际检查队列本身、从计数器、查找表中检索信息、查看操作日志等来评估。
此外,判定604包括确定包括在第一RTU队列中的块的数目是否在第一RTU队列的第一范围内。因此,在优选方案中,该第一范围专用于第一RTU队列。然而,在一些方法中,第一范围对于第一RTU队列以及第二RTU队列可以相同或相似。第一RTU队列还优选地对应于第一RTU队列的垃圾收集阈值,使得响应于确定包括在第一RTU队列中的块的数量过低而执行垃圾收集操作。垃圾收集处理将重新定位来自第一池中的一个或多个块的有效数据,使得一个或多个块可以被放置在第一RTU队列中,由此增加包括在其中的块的数量,例如,不久将变得明显。然而,应注意,“在第一范围内”绝不旨在限制本发明。不是确定值是否在给定范围内,而是可以做出等效的确定,例如,关于值是否高于预定阈值、值是否在预定范围之外、绝对值是否高于阈值、是否值低于阈值等,取决于所需的方法。
如前所述,方法600响应于确定包括在第一RTU队列中的块的数量不在第一RTU队列的第一范围内而前进到操作606。在那里,操作606包括选择第一池中的块之一,而操作608包括从所选的块中重定位所有有效数据。在操作606中选择的块将经历在操作608中启动的垃圾收集处理。由此,在一些方法中,选择第一池中所有块中无效数据最多的块。然而,在选择第一池中的一个块进行垃圾收集过程的过程中可以考虑任何其他期望的因素。例如,在选择第一池中的块时,可以考虑每个块的年龄、每个块中包括的有效数据量等。
从所选择的块重定位有效数据可以进一步以任何期望的方式执行。例如,在一些方法中,有效数据在被存储在存储器的不同块中之前可被临时存储在高速缓存中(例如,参见图5中的高速缓存存储器510)。在其他方法中,有效数据可以被直接传输到另一个存储块。响应于从所选块中重定位有效数据,操作610包括擦除所选块。
继续到操作612,方法600包括将选择的(现在被擦除的)块放置在对应于第一池的第一RTU队列中。如上所述,第一和第二RTU队列中的每一个都包括分别并入第一和第二存储块池中的存储块。因而,通过对所选择的块执行垃圾收集操作并且将其放置在第一RTU队列中,所选择的块被有效地用于帮助填充第一RTU队列。这通过确保预定数量的可用(例如,空)块被包括在第一RTU队列中来理想地避免延迟问题。
还应注意,在一些方法中,当数据存储在页中且块尚未被擦除时,块会经历读取阈值电压偏移值重新校准。因此,在一些方法中,将所选择的(并且现在已擦除的)块放置在第一RTU队列中的过程涉及标记该块用于重新校准读取阈值电压偏移值。在阅读本说明书之后,可以使用本领域技术人员显而易见的任何过程来重新校准读取阈值电压偏移值。例如,校准读取阈值电压偏移值可以在块中的页被实际编程时执行。因此,在已经擦除块之后,实际上可能不直接重新校准读取阈值电压偏移值。相反,已被标记用于读取阈值电压偏移值校准的擦除块将等到该块再次被重新编程以执行校准。
仍参考图6A,方法600从操作612返回至操作602,例如,使得可以继续监测第一和/或第二RTU队列的大小。跳回判定604,响应于确定包括在第一RTU队列中的块数量在第一RTU队列的第一范围中,流程图前进到判定614。换言之,响应于确定第一RTU队列在其中包括期望数量的存储块,方法600从判定604前进到判定614。同样,该第一范围对应于第一RTU队列并且可以由用户基于行业标准预先确定、基于系统性能调整等。
判定614包括确定第一池的大小是否应减小。换言之,判定614确定包括在第一池中的存储块的数量是不期望地还是至少不必要地高。该确定可通过将第一池的目标大小与第一池的当前(例如,实际)大小进行比较来作出。第一池中的存储块的数目包括处于与第一池相关联的对应模式中的所有块,而不管该块是在开放式还是封闭式LEB中,还是在第一RTU中。第一池的目标大小可由用户预先确定,基于总架构系统的预测工作负载等来指定。
响应于确定不应减小第一池的大小,方法600返回到操作602,例如,使得可以继续监测第一和/或第二RTU队列的大小。然而,响应于确定第一池的大小应当被减小,方法600从判定614前进到判定616。在此,判定616包括确定包括在第二RTU队列中的块数量是否在第二RTU队列的第二范围内。因此,该第二范围优选地特定于第二RTU队列。然而,还应当注意,在一些方法中,对于第一RTU队列以及第二RTU队列,第二范围可以相同或相似。第二RTU队列的该第二范围还可以对应于优选方法中的“提升阈值”,从而在确定是否将块从一个池转移到另一个池中时评估目标位置的RTU队列。即使在目标池已达到其容量之前,这也可通过防止池之间的块转换来确保目标位置不会溢出。换言之,即使第一RTU队列和第一池(例如,“源位置”)充分地填充有存储块,第二RTU队列的状态(例如,“目标位置”)也在决定从第一池中卸载存储块之前被考虑在内。此外,可以基于当前工作负荷属性所涉及的块传输的当前量在实时期间动态调整提升阈值。在优选实施例中,提升阈值高于在同一池中停止垃圾收集的阈值。对于一些涉及重新调整块池的大小的方法,目标(例如,“接收”)池的提升阈值可以与预期添加的块的数量成比例地降低。当源池的提升阈值增加时,或者在已从源池中提取块之后,可执行这种减小。
评估源位置以及目标位置是特别可取的,因为它避免了不必要的处理开销。具体而言,重新调整块池的大小可影响整个系统的I/O延迟和吞吐量。这至少部分是因为块传输可以耗尽RTU队列之一中的块,由此潜在地导致处理延迟。即使RTU队列未被耗尽,块传输也可以将给定池中的空闲块计数降低至期望水平以下,从而使得更积极地执行垃圾收集操作。额外的垃圾收集操作产生的开销会导致不期望地主机操作的节流。此外,改变给定块的配置或“模式”导致开销。例如,当在块配置模式之间切换时,会更新附加的控制器元数据。此外,从正在重新配置的块中重新定位有效数据和/或重新校准块的阈值电压偏移值的过程引入了额外的处理开销。
由此,通过在执行源位置与目标位置之间的存储块传送之前评估源位置以及目标位置,系统能够限制这样的传送,从而合乎需要地避免不必要的处理开销。还应该注意的是,“在第二范围内”绝不旨在限制本发明。如上所述,不是确定值是否在给定范围内,而是可以做出等效确定,例如,关于值是否高于预定阈值(例如,提升阈值),值是否在预定范围之外,绝对值是否高于阈值,值是否低于阈值等,取决于所需的方法。
通过将重新调整大小的速度限制到目标池中块被消耗的速度,可以进一步智能地启用池的重新调整大小来。换言之,由于对源和目标位置的评估有助于块的垃圾收集的推迟,即使必须调整池大小,也使总开销进一步最小化,从而最大化被选择用于垃圾的块中的无效数据量在调整大小期间收集,减少要重新定位的有效页面的数量,有效地降低写入放大。
仍参考图6A,方法600响应于确定包括在第二RTU队列中的块的数量在第二RTU队列的第二范围内而从判定616返回至操作602。如上所述,这允许方法600继续监测第一和/或第二RTU队列的大小。方法600可替代地响应于确定包括在第二RTU队列中的块数量不在第二RTU队列的第二范围中前进到判定618。
继续到判定618,方法600包括确定存储系统经历的当前输入/输出(I/O)工作负载是否在第三范围内。如上文所暗示的,在池之间转移存储块的过程是工作负荷密集的过程,从而可能对总体系统的性能产生影响。因此,通过在确定是否和/或何时在池之间传输存储块时评估存储系统的当前I/O工作负载,方法600能够将低I/O工作负载作为目标并减少所产生的处理影响。再次,“在第三范围内”绝不旨在限制本发明。如上所述,不是确定值是否在给定范围内,而是可以做出等效确定,例如,关于值是否高于预定阈值、值是否在预定范围之外、绝对值是否高于阈值、值是否低于阈值等,取决于所需的方法。还应注意,决定618的结果可确定性地或概率性地决定。因此,确定值是否在给定范围内还可包括值是否在给定范围内具有一定概率,并且所作出的决定可基于该概率。
方法600响应于确定存储系统经历的当前I/O工作负载在第三范围中而返回到操作602。换言之,方法600响应于确定存储系统的当前I/O工作负载不合希望地高而进入操作620。然而,方法600响应于确定存储系统经历的当前I/O工作负载不在第三范围内而前进到操作620。在那里,操作620包括选择第一池中的块之一。在操作620中选择的块将经历垃圾收集处理。由此,在一些方法中,选择第一池中的所有块中具有无效数据最多的块。然而,在选择第一池中的块之一以进行垃圾收集处理的过程中可以考虑任何其他期望的因素。例如,当在第一池中的块上选择时,可以考虑每个块的年龄、包括在每个块中的有效数据的量、给定块是否有资格被传输等。
操作622还包括从第一池中的所选块重定位有效数据。取决于所述方法,可以任何所要方式执行来自所选块的有效数据的重定位。例如,在一些方法中,有效数据在被存储在存储器的不同块中之前可被临时存储在高速缓存中(例如,参见图5中的高速缓存存储器510)。在其他方法中,有效数据可以被直接传送到存储器的另一块。响应于从所选择的块中重定位有效数据,操作624包括擦除所选块。
此外,操作626包括将块从第一池转移到对应于第二池的第二RTU队列。根据本描述,在RTU队列和/或池之间“转移”的块保持在存储器的相同平面和通道中(例如,参见图4)。换言之,虽然给定块的功能特性可能由于激活和/或去激活其中的每个单元中的某些位的结果而改变,但是块本身不在存储器中物理地移动。相反,在逻辑意义上,在RTU队列和/或池之间“转移”块。在一些方法中,在LPT、块状态表、操作日志等中指示这些转移。
再次,第一池(连同第一RTU队列)包括在SLC模式中配置的存储块,而第二池(连同第二RTU队列)包括以每单元多位模式配置的存储块。因此,由于第一和第二池中的每一个包括以不同模式配置的存储块,在操作626中实际转移所选择的块的过程包括重新配置块。暂时参考图6C,展示了根据一个实施例的在第一池与第二RTU队列之间转移给定块的示例性子过程,其中的一个或多个可以用于执行以下图6A的操作626和/或图6B的操作656。然而,应注意的是,图6C的子过程根据一个实施例示出,该实施例绝不旨在限制本发明。
如图所示,图6C中的流程图包括重新配置所选块。参见子操作670。取决于所选块是从第一池转移到第二RTU队列还是从第二池转移到第一RTU队列,可以不同地执行重新配置存储块的过程。例如,从第一池转移到第二RTU队列的块优选地从SLC模式重新配置成每单元多比特模式。然而,从第二池转移到第一RTU队列的块优选地从每单元多位模式重新配置到SLC模式。在SLC和每单元多位模式之间重新配置给定块的过程可以通过去激活和/或重新激活包括在块中的某些位、逻辑上重新定义给定块等来执行,或者使用在阅读了本描述之后将对本领域技术人员显而易见的任何过程来执行。
重新校准块会影响块的性能。例如,与访问第二池中的给定块相关联的读取阈值电压偏移值可能由于块在第一池中被使用而改变。因此,该流程图还包括一旦块被再次编程,则标记该块以重新校准目标模式中的读取阈值电压偏移值。参见子操作672。在阅读本说明书之后,可以使用本领域技术人员显而易见的任何过程来重新校准读取阈值电压偏移值。然而,在一些方法中,可从存储器(例如,查找表)存取读取阈值电压偏移值、预定义读取阈值电压偏移值、在运行中动态调整读取阈值电压偏移值等。此外,子操作672包括在一些方法中为给定块中的每个有效位重新校准一个或多个读取阈值电压偏移值。
返回参考图6A,方法600从操作626返回至操作602,例如,使得可以继续监测第一和/或第二RTU队列的大小。因此,方法600能够实时地成功地调整块池大小,同时还保持总体存储系统的高效性能。
如前所述,方法600中包括的不同过程中的一个或多个可以在将以每单元多位模式配置的存储块转变到以SLC模式配置的上下文中应用。因此,现在参见图6B,示出了根据另一个实施例的用于调整存储系统中的块池大小的方法630。在各种实施方式之中,方法630可根据本发明在图1-6A中描述的任何环境中执行。当然,如本领域技术人员在阅读本说明书后将理解的,方法630中可以包括比图6B中具体描述的操作更多或更少的操作。例如,在以下将在每单元多位模式中配置的存储块转变到在SLC模式中配置的上下文中描述方法630中所包括的不同过程。因此,上面参照图6A的方法600描述的方法中的任意一个或多个可以根据需要在方法630中实现。
方法630的步骤中的每一者也可由操作环境的任何合适组件执行。例如,在不同实施例中,方法630可以部分地或完全由混合控制器、控制器、处理器、计算机等或其中具有一个或多个处理器的一些其他设备来执行。因此,在一些实施例中,方法630可以是计算机实施的方法。在这样的实施例中,用于实现该方法的计算机可包括存储器模块本身或其一部分,例如混合控制器。此外,术语“计算机”、“处理器”和“控制器”可以关于在此的任何实施例互换地使用,这样的组件在本发明的许多不同排列中被认为是等效的。
此外,对于具有处理器的那些实施例,处理器(例如,以硬件和/或软件实现的处理电路、芯片、和/或模块)并且优选地具有至少一个硬件部件可以用于任何设备中以执行方法630的一个或多个步骤。说明性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合、或本领域已知的任何其他合适的计算设备。
如图6B所示,方法630的操作632包括评估第一准备使用(RTU)队列的大小和第二RTU队列的大小。第一和第二RTU队列中的每一个包括分别合并在第一和第二存储块池中的存储块。此外,第一和第二池中的每一个包括以不同模式配置的存储块。如上所述,第一池包括在SLC模式中配置的存储块,而第二池包括在每单元多位模式中配置的存储块。因此,第一RTU队列包括以SLC模式配置的存储块,而第二RTU队列包括以多位/单元模式配置的存储块。
再次,关于本描述,给定RTU队列的“大小”旨在表示包括在其中的擦除的存储块的量。RTU队列的大小由此表示给定RTU队列的总存储容量,并且可以通过RTU队列中所包括的块的数量、RTU队列中所包括的块的组合存储容量、RTU队列中所包括的总系统中所包括的块的总数的百分比等来表示(例如,量化)。根据一些方法,第一和/或第二RTU队列的大小通过实际检查队列本身、从查找表中检索信息、查看操作日志等来评估。
此外,决定634包括确定包括在第二RTU队列中的块的数目是否在第二RTU队列的第一范围内。如上所述,在优选方法中该第一范围对应于垃圾收集阈值,使得响应于确定包括在第二RTU队列中的块的数量不期望地低而执行垃圾收集操作。注意,该第一范围与第二RTU相关联并且可以与方法600中引入的与第一RTU相关联的第一范围相同或不同,例如,本领域技术人员在阅读本说明书后将理解。。
响应于确定包括在第二RTU队列中的块的数量不在第二RTU队列的第一范围中,方法600进行到操作636。在那里,操作636包括选择第二池中的块之一,而操作638包括从所选的块中重定位所有有效数据。在操作636中选择的块将经历在操作638中启动的垃圾收集过程。由此,在一些方法中,选择第二池中的所有块中具有最多无效数据的块。然而,在选择第二池中的块之一以经历垃圾收集过程的过程中可以考虑任何其他期望的因素。
响应于从所选择的块中重定位有效数据,操作640包括擦除所选择的块。继续到操作642,方法630包括将所选择的(并且现在被擦除的)块放置在对应于第二池的第二RTU队列中。还应注意,在一些方法中,当数据存储在页中且块尚未被擦除时,块经历读取阈值电压偏移值重新校准。因此,在一些方法中,将所选择的(并且现在被擦除的)块放置在第二RTU队列中的过程涉及标记该块用于重新校准读取阈值电压偏移值,例如,使用在读取本说明书之后对于本领域技术人员来说显而易见的任何过程。
仍参考图6B,方法630从操作642返回至操作632,例如,使得可以继续监测第一和/或第二RTU队列的大小。跳回判定634,响应于确定包括在第二RTU队列中的块数量在第二RTU队列的第一范围中,流程图前进到判定644。在那里,判定644包括确定第二池的大小是否应被减小。换言之,判定644确定包括在第二池中的存储块的数量是否是不合需要的,或者至少是不必要地高。该确定可通过将第二池的目标大小与第二池的当前(例如,实际)大小进行比较来作出。
响应于确定第二池的大小不应当减小,方法630返回到操作632,例如,使得可以继续监测第一和/或第二RTU队列的大小。然而,方法630响应于确定第二池的大小应当被减小而从判定644前进到判定646。在此,判定646包括确定包括在第一RTU队列中的块的数目是否在第一RTU队列的第二范围内。第一RTU队列的这个第二范围与第一RTU队列本身相关联并且在优选方式中对应于“提升阈值”,使得在确定是否将块从一个池转移到另一个池中时评估目标位置的RTU队列。换言之,即使第二RTU队列和第二池(例如,“源位置”)存储块被充分地填充,在决定从第二池中卸载存储块之前还考虑第一RTU队列的状态(例如,“目标位置”),出于以上讨论的那些原因,这是特别希望的。注意,该第二范围与第一RTU相关联并且可以与方法600中引入的与第二RTU相关联的第二范围相同或不同,例如,如本领域技术人员在阅读本说明书后将理解的。
仍然参考图6B,方法630响应于确定包括在第一RTU队列中的块的数目在第一RTU队列的第二范围中而从判定646返回到操作632。如上所述,这允许方法630继续监控第一和/或第二RTU队列的大小。方法630可替代地响应于确定包括在第一RTU队列中的块数目不在第一RTU队列的第二范围中前进到判定648。在那里,判定648包括确定存储系统经历的当前I/O工作负载是否在第三范围内。如上所述,在池之间转移存储块的过程是工作负荷密集的过程,从而可能对总体系统的性能产生影响。因此,通过评估当前的I/O存储系统在确定是否和/或何时在池之间传输存储块时的工作负载存储块,方法630能够将低I/O工作负载作为目标并减少所产生的处理影响。
响应于确定存储系统经历的当前I/O工作负载在第三范围内,方法630返回到操作632。或者,响应于确定存储系统经历的当前I/O工作负载不在第三范围内,方法630前进到操作650。在那里,操作650包括选择第二池中的块之一。在操作650中选择的块将经历垃圾收集处理。由此,在一些方法中,选择第一池中的所有块中具有无效数据最多的块。然而,在选择第一池中的一个块进行垃圾收集处理的过程中可以考虑任何其他期望的因素。
操作652进一步包括从第二池中的选定块重定位有效数据。响应于从所选定块中重定位有效数据,操作654包括擦除选定块。继续到判定656,方法630包括将块从第二池传输到对应于第一池的第一RTU队列。再次,在RTU队列和/或池之间“转移”的块保持在存储器的相同平面和通道中(例如,参见图4)。换言之,虽然给定块的功能特性可能由于激活和/或去激活其中的每个单元中的某些位而改变,但是块本身不在存储器中物理地移动。相反,在逻辑意义上,在RTU队列和/或池之间“转移”块。在一些方法中,在LPT、块状态表、操作日志等中指示这些转移。
再次,第二池(连同第二RTU队列)包括以每单元多位模式配置的存储块,而第一池(连同第一RTU队列)包括以SLC模式配置的存储块。因此,由于第一和第二池中的每一个包括以不同模式配置的存储块,在操作656中实际传输所选块的过程包括重新配置块。再次暂时参考图6C,所描述的用于在池与RTU队列之间传输给定块的任何子过程和/或特定方法可以用于执行图6B的操作656。
返回参考图6B,方法630从操作656返回至操作632,例如,使得可以继续监测第一和/或第二RTU队列的大小。因此,方法630还能够实时地成功地调整块池大小,同时还保持总体存储系统的高效性能。
现在参考图7,示出了根据一个实施例的数据和方框流程概述700。作为选择,本发明的数据和方框流程概述700可以结合来自本文列出的任何其他实施方式的特征来实现,诸如参考其他附图描述的那些,诸如图6A-6C。然而,这样的数据和方框流程概述700和本文所呈现的其他数据和方框流程概述700可以在不同应用中使用和/或在可以或可以不在本文列出的说明性实施例中具体描述的置换中使用。进一步,本文呈现的数据和方框流程概述700可以用于任何期望的环境。因此,图7(和其他图)可被认为包括任何可能的排列。
如图所示,主机写入由数据放置模块702接收,数据放置模块702包括LEB 704和LEB706,LEB 704由被配置在SLC模式中的一个或多个存储块组成,LEB 706由被配置在每单元多位模式中一个或多个的存储块组成。在一些方法中,新数据首先被写到SLC模式中配置有块的LEB,从而允许新数据受益于SLC模式中与块相关联的较低延迟和较高吞吐量(例如,与每单元多位模式中配置的块相比)。然而,在涉及高主机和内部写入负载的情况下,新数据可以直接存储在以每单元多位模式配置的块中。SLC模式中配置的块被从第一组RTU队列708接收,而每单元多位模式中配置的块被从第二组RTU队列710接收。第一组RTU队列708和第二组RTU队列710中的每一个包括多个存储块712,每个存储块712累积在用于不同平面和通道714的RTU队列中,例如,如本领域技术人员在阅读本说明书之后将理解的。
与平面和通道相关联并且被包括在第一组RTU队列708和第二组RTU队列710中的RTU队列714中的每个被描绘为具有多个不同的阈值,该多个不同的阈值对应于包括在相应的RTU队列714中的存储块的数量。这些阈值之一是提升阈值,该提升阈值对应于如上所述的第二范围中的任一者(例如,参见判定616和646)。因此,在一些方法中使用该“提升”阈值以确定相应的RTU队列和/或特定信道是否具有有不合需要的低数量的存储器块包括在其中。在本实施方式中,还实现“高”、“低”以及“临界”阈值,每个阈值表示第一组RTU队列708和第二组RTU队列710中的相应信道的不同填充水平。
响应于在数据放置模块702处用数据填充给定的块或存储器,LEB被传送到被占用的块队列中的相应的一个。具体地,在SLC模式中配置的LEB被传送到SLC占用的块队列716,而在每单元多位模式中配置的LEB被传送到每单元多位占用的块队列718。队列716、718中的每一个中包括的LEB的数量随时间而改变。因此,存储在每个队列716、718中的信息量(例如,其有效大小)也随时间而变化。
随着时间的推移,LEB最终从队列716、718转移到垃圾收集器和损耗均衡器模块720。在一些方法中,LEB根据标准垃圾收集规程前进到垃圾收集器和磨损平整器模块720。例如,由于LEB的块中的数据随时间的推移而失效(例如,由于重写操作、删除等),可以指定LEB进行垃圾收集。然而,在其他方法中,LEB可以由垃圾收集器和磨损水平剂模块720根据以上关于图6A-6C描述的任何过程来选择和处理。在一些实施例中,垃圾收集器或磨损水平器可以基于LEB中已经看到的块的保留时间或读取次数、或所测量的RBER来进一步选择LEB。
LEB从垃圾收集器和损耗均衡器模块720前进到数据重定位模块722,数据重定位模块722将从LEB中的块中提取的任何有效数据发送回数据放置模块702(如虚线箭头线表示的)。因此,数据可以被存储在存储器的另一可用LEB中。此后,块擦除模块724擦除LEB中的块。擦除操作可以涉及指定块的目标模式。
根据指定的目标块模式,擦除的块要么返回到与块配置的当前模式相对应的RTU队列,要么重新配置块。例如,在SLC模式中配置的空块或者被返回到第一组RTU队列708中的RTU714,或者在被置于第二组RTU队列710中的RTU714中之前被以多位/单元模式重新配置。类似地,配置在每单元多位模式中的空块或者被返回到第二组RTU队列710中的RTU714,或者在被放置在第一组RTU队列708中的RTU714中之前在SLC模式中被重新配置。因此,每个块擦除模块724被描绘为具有从其延伸的两条带箭头的线,这些线中的每条线表示在其中被擦除的块的可能路径。可以基于如上所述的图6A-6C中包括的任何过程做出是否将存储块返回至匹配RTU队列还是在将其添加至不同RTU队列之前重新配置块的确定。进一步,块的重新配置可以包括块状态表的更新。
由此可见,本文所包括的各个实施例能够成功地实时地调整块池大小,同时还保持总体存储系统的高效性能。通过确保正被缩小的池不会由于重新调整大小而经历存储块的缺乏、确保正被放大的池不会在RTU中保持太多被擦除的块、确保源池中的写入放大不会显著增加、以及确保正被传送的块有资格进行传送来维持系统的效率。这些池重新调整大小操作进一步在后台执行,由此对主机I/O延迟和吞吐量没有任何影响,如本领域技术人员在阅读本说明书之后将理解的。
本文所包括的一些实施例还能够避免当给定池处于针对干净(例如,空)块的压力下时将该池切换为字段数据写入和/或重新定位的情况。通过利用涉及低I/O负载的周期进一步改善性能。因此,当系统未被充分利用时,可在后台执行池之间的块转移而不影响系统的标称性能。更进一步,当确定是否在池之间传送块时,特别期望评估源位置以及目标位置两者,因为它避免了不必要的处理开销。这还确保在块被转换到另一池之前充分地补充源池。
还应注意,尽管本文中已经在两个存储块池的上下文中描述了这些方法中的不同方法,但这些方法中的任一者可扩展到具有两个以上块池的实施例。在这样的实施例中,目标池可以使用优先级、基于用户输入、通过比较每个相应池的RTU块级别并选择具有最低数量的RTU块的池等来确定。
本发明可以是任何可能的技术细节集成度的系统、方法和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或介质)。
计算机可读存储介质可为可保留和存储供指令执行装置使用的指令的有形装置。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输媒体传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
本文中所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)和过程程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可被提供给计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的或多个方框中规定的功能/动作。
附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,连续示出的两个方框实际上可以作为一个步骤完成,同时、基本上同时、以部分或完全时间上重叠的方式执行,或者方框有时可以以相反的顺序执行,这取决于所涉及的功能。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
此外,根据不同实施例的系统可包括处理器和与处理器集成和/或可由处理器执行的逻辑,逻辑被配置成执行本文所述的处理步骤中的一个或多个。通过与其集成,意味着处理器具有嵌入在其中的作为硬件逻辑的逻辑,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)等。处理器可执行的意思是逻辑是硬件逻辑;软件逻辑,诸如固件、操作系统的一部分、应用程序的一部分;等等,或硬件和软件逻辑的一些组合,所述硬件和软件逻辑可由处理器访问并且被配置为使处理器在由处理器执行时执行一些功能。软件逻辑可以存储在任何存储器类型的本地和/或远程存储器上,如本领域中已知的。可以使用本领域已知的任何处理器,诸如软件处理器模块和/或硬件处理器,诸如ASIC、FPGA、中央处理单元(CPU)、集成电路(IC)、图形处理单元(GPU)等。
图8示出了根据一个实施方式的网络架构800。如图8所示,提供包括第一远程网络804和第二远程网络806的多个远程网络802。网关801可耦合在远程网络802与接近网络808之间。在本网络体系结构800的上下文中,网络804、806可各自采取任何形式,包括但不限于LAN、WAN(诸如互联网)、公共交换电话网(PSTN)、内部电话网等。
在使用中,网关801充当从远程网络802到邻近网络808的入口点。这样,网关801可以充当路由器和交换机,路由器能够定向到达网关801的给定数据分组,交换机为给定分组提供进出网关801的实际路径。
还包括至少一个数据服务器814,其耦合到邻近网络808,并且可经由网关801从远程网络802访问。应当注意,(一个或多个)数据服务器814可包括任何类型的计算设备/群件。耦合到每个数据服务器814的是多个用户设备816。此类用户装置816可包括台式计算机、膝上型计算机、手持式计算机、打印机和/或任何其他类型的包含逻辑的装置。应注意,在一些实施例中,用户装置811也可直接耦接至任何网络。
外围设备820或一系列外围设备820(例如,传真机、打印机、扫描仪、硬盘驱动器、联网的和/或本地数据存储单元或系统等)可以耦合到网络804、806、808中的一个或多个。应注意,数据库和/或附加组件可与耦合到网络804、806、808的任何类型的网络元件一起使用或集成到耦合到网络804、806、808的任何类型的网络元件中。在本说明书的上下文中,网络元件可以指网络的任何部件。
根据一些实施例,本文描述的方法和系统可以利用和/或在虚拟系统和/或模拟一个或多个其他系统的系统上实现,例如虚拟托管MICROSOFT WINDOWS环境的UNIX系统等。在一些实施例中,可以通过使用VMWARE软件来增强这种虚拟化和/或仿真。
在其他实施例中,一个或多个网络804、806、808可表示通常称为“云”的系统集群。在云计算中,共享资源(诸如处理能力、外围设备、软件、数据、服务器等)以按需关系被提供给云中的任何系统,从而允许跨许多计算系统访问和分布服务。云计算通常涉及在云中操作的系统之间的互联网连接,但是也可以使用连接系统的其他技术,如本领域中已知的。
图9示出了根据一个实施例的与图8的用户装置816和/或服务器814相关联的代表性硬件环境。图9示出根据一个实施例的具有中央处理单元910(诸如微处理器)和经由系统总线912互连的多个其他单元的处理器系统900的典型硬件配置。在一些实施方式中,中央处理单元910可以包括以上参照图2的一个或多个处理器210描述的任何方法。
图9所示的处理器系统900包括随机存取存储器(RAM)914、只读存储器(ROM)916和I/O适配器918。根据决不旨在限制本发明的一些实施例,I/O适配器918可以包括以上参考图2的I/O适配器218描述的任何方法。仍参考图9的处理器系统900,前述组件914、916、918可用于将外围设备(诸如存储子系统920)连接到总线912。在一些实施例中,存储子系统920可以包括与图2的数据存储系统220类似和/或相同的配置。根据决不旨在限制本发明,存储子系统920可以包括非易失性数据存储卡,例如,除了图2中所示的RAID控制器之外,具有NVRAM存储卡、RAM、ROM、和/或一些其他已知类型的非易失性存储器。
继续参考图9,用户接口适配器922用于将键盘924、鼠标926、扬声器928、麦克风932和/或诸如触摸屏、数码相机(未示出)等的其他用户接口设备连接至总线912。
处理器系统900进一步包含将处理器系统900连接到通信网络935(例如,数据处理网络)的通信适配器934和将总线912连接到显示装置938的显示适配器936。
处理器系统900可以具有驻留在其上的操作系统,诸如MICROSOFT WINDOWS操作系统(OS)、MACOS、UNIXOS等。应当理解,优选实施例也可以在除所提及的那些之外的平台和操作系统上实现。优选实施例可以使用JAVA、XML、C和/或C++语言或其他编程语言以及面向对象的编程方法来编写。可以使用越来越多地用于开发复杂应用程序的面向对象编程(OOP)。
此外,图10示出了根据一个实施方式结合低级(例如,磁带)存储层实现高级(例如,SSD)存储层的存储系统1000。要注意的是,根据各种实施方式,图10中所示的一些元件可实施为硬件和/或软件。存储系统1000可以包括用于与至少一个较高存储层1002和至少一个较低存储层1006上的多个介质通信的存储系统管理器1012。然而,在其他方法中,存储系统管理器1012可与至少一个较高存储层1002上的多个介质通信,但不能与较低存储层通信。较高存储层1002优选地可以包括一个或多个随机存取和/或直接存取介质1004,如硬盘、非易失性存储器(NVM)、NVRAM、SSD中的固态存储器、闪存、SSD阵列、闪存阵列等,和/或本文指出的或本领域已知的其他。图3-4示出了SSD系统的示例性架构,其可以根据期望的实施例用作更高的存储层1002。
仍参考图10,较低存储层1006优选地包括一个或多个较低性能存储介质1008,包括顺序访问介质(诸如,磁带驱动器中的磁带和/或光学介质)、较慢访问的HDD、较慢访问的SSD等、和/或本文中指出或本领域已知的其他存储介质。一个或多个额外存储层1016可包含系统1000的设计者所期望的存储存储媒体的任何组合。因此,在一些方法中,一个或多个附加存储层1016可包括与图1至图2中示出的那些类似或相同的SSD系统架构。而且,较高存储层1002和/或较低存储层1006中的任一者可包含存储装置和/或存储介质的任何组合。
存储系统管理器1012可通过网络1010(诸如图10所示的存储区域网络(SAN)或一些其他合适的网络类型)与较高存储层1002和较低存储层1006上的存储介质1004、1008通信。存储系统管理器1012也可以通过主机接口1014与一个或多个主机系统(未示出)通信,该主机接口1014可以是或可以不是存储系统管理器1012的一部分。存储系统管理器1012和/或存储系统1000的任何其他组件可在硬件和/或软件中实现,并且可利用用于执行本领域中已知类型的命令的处理器(未示出),诸如中央处理单元(CPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等。当然,可以使用存储系统的任何布置,如本领域技术人员在阅读本说明书时将显而易见的。
在更多实施例中,存储系统1000可以包括任意数量的数据存储层,并且可以在每个存储层内包括相同或不同的存储存储器介质。例如,每个数据存储层可以包括相同类型的存储存储器介质,诸如HDD、SSD、顺序访问介质(磁带驱动器中的磁带、光盘驱动器中的光盘等)、直接访问介质(CD-ROM、DVD-ROM等)或任何媒体存储类型的组合。在一个这样的配置中,较高存储层1002可以包括用于在较高性能存储环境中存储数据的大部分SSD存储介质,并且包括较低存储层1006和附加存储层1016的剩余存储层可以包括用于在较低性能存储环境中存储数据的SSD、HDD、磁带驱动器等的任何组合。以此方式,可将更频繁存取的数据、具有较高优先级的数据、需要更快速存取的数据等存储到较高存储层1002,而可将不具有这些属性中的之一的数据存储到额外存储层1016(包含较低存储层1006)。当然,本领域技术人员在阅读本描述后,根据本文提出的实施例,可以设计存储介质类型的许多其他组合以实现成不同的存储方案。
根据一些实施例,存储系统(例如1000)可以包括配置成接收打开数据集的请求的逻辑,配置成确定所请求的数据集是否在多个相关联部分中存储到分层数据存储系统1000的较低存储层1006的逻辑,被配置为将所请求的数据集合的每个关联部分移动到分层数据存储系统1000的较高存储层1002的逻辑,以及被配置为在分层数据存储系统1000的较高存储层1002上从关联部分组装所请求的数据集合的逻辑。
当然,根据不同实施例,该逻辑可以被实现为任何设备和/或系统上的方法或计算机程序产品。
很明显,前述系统和/或方法的不同特征可以以任何方式进行组合,从而从以上呈现的描述中创建多个组合。
本发明的各种实施例的描述是出于说明的目的而呈现的,但并非旨在穷举或限于所公开的实施例。在不脱离所描述的实施例的范围的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。这里使用的术语被选择来最好地解释实施例的原理、实际应用或对在市场中发现的技术的技术改进,或者使得本领域普通技术人员能够理解这里公开的实施例。
Claims (20)
1.一种用于调整存储系统中的块池大小的计算机实现的方法,包括:
确定包括在第一准备使用(RTU)队列中的块的数量是否在所述第一RTU队列的第一范围内;
响应于确定包括在第一RTU队列中的块的数量在第一RTU队列的第一范围中,确定包括在第二RTU队列中的块的数量是否在第二RTU队列的第二范围中;
响应于确定包括在第二RTU队列中的块的数量不在第二RTU队列的第二范围中,从与第一RTU队列对应的第一池中的块之一重定位有效数据;
擦除所述第一池中的所述块;以及
将块从第一池转移到对应于第二池的第二RTU队列,
其中,所述第一池中的所述块被配置为单层单元(SLC)模式,
其中,所述第二池中的所述块是以每单元多位模式配置的。
2.如权利要求1所述的计算机实现的方法,其中将所述块从所述第一池传送到对应于所述第二池的所述第二RTU队列包括:
将所述块从SLC模式重新配置成每单元多位模式;以及
标记该重新配置的块以用于对其读取阈值电压移位值进行重新校准。
3.如权利要求1所述的计算机实现的方法,包括:
确定所述存储系统经历的当前输入/输出(I/O)工作负荷是否在第三范围内;以及
响应于确定所述存储系统经历的当前I/O工作负荷不在所述第三范围内,将所述块从所述第一池转移到对应于所述第二池的所述第二RTU队列。
4.如权利要求1所述的计算机实现的方法,其中,所述第二池中以每单元多位模式配置的所述块是以四级单元(QLC)模式配置的。
5.如权利要求1所述的计算机实现的方法,包括:
响应于确定包括在所述第一RTU队列中的块的数量不在所述第一范围内,选择所述第一池中的所述块中的一个;
从选择的块中重定位有效数据;
擦除所选择的块;以及
将所选择的块放置于所述第一池对应的第一RTU队列中。
6.如权利要求5所述的计算机实现的方法,其中将所述选择的块放置于对应于所述第一池的所述第一RTU队列中包括:
对选择的块进行标记以用于对其读取阈值电压移位值进行重新校准。
7.如权利要求1所述的计算机实现的方法,包括:
确定包括在所述第二RTU队列中的块的数量是否在所述第二RTU队列的第一范围内;
响应于确定包括在第二RTU队列中的块的数量在第二RTU队列的第一范围中,确定包括在第一RTU队列中的块的数量是否在第一RTU队列的第二范围中;
响应于确定包括在第一RTU队列中的块的数量不在第一RTU队列的第二范围中,从第二池中的块之一重定位有效数据;
擦除所述第二池中的所述块;以及
将块从第二池转移到对应于第一池的第一RTU队列。
8.如权利要求7所述的计算机实现的方法,其中将所述块从所述第二池传送到对应于所述第一池的所述第一RTU队列包括:
将所述块从每单元多位模式重新配置到SLC模式;以及
标记重新配置的块以用于对其阈值电压移位值进行重新校准。
9.一种计算机程序产品,包括计算机可读存储介质,其中包含程序指令,该程序指令可由处理器读取和/或执行以使得处理器:
所述处理器确定在第一准备使用(RTU)队列中包括的块的数量是否在所述第一RTU队列的第一范围内;
响应于确定包括在第一RTU队列中的块的数量在第一RTU队列的第一范围中,处理器确定包括在第二RTU队列中的块的数量是否在第二RTU队列的第二范围中;
响应于确定包括在第二RTU队列中的块的数量不在第二RTU队列的第二范围内,处理器重定位第一池中的与第一RTU队列对应的多个块中的一个的有效数据;
所述处理器擦除所述第一池中的所述块;以及
所述处理器将所述块从所述第一池转移至对应于第二池的所述第二RTU队列,
其中,所述第一池中的所述块被配置为单层单元(SLC)模式,
其中,所述第二池中的所述块是以每单元多位模式配置的。
10.如权利要求9所述的计算机程序产品,其中将所述块从所述第一池传送到对应于所述第二池的所述第二RTU队列包括:
将所述块从SLC模式重新配置成每单元多位模式;以及
标记重新配置的块以用于对其阈值电压移位值进行重新校准。
11.如权利要求9所述的计算机程序产品,所述程序指令可由所述处理器读取和/或执行以使所述处理器:
所述处理器确定存储系统经历的当前输入/输出(I/O)工作负荷是否在第三范围内;以及
响应于确定所述存储系统经历的所述当前I/O工作负荷不在所述第三范围内,由所述处理器将所述块从所述第一池转移到对应于所述第二池的所述第二RTU队列。
12.如权利要求9所述的计算机程序产品,其中,以每单元多位模式配置的第二池中的所述块是以四级单元(QLC)模式配置的。
13.如权利要求9所述的计算机程序产品,所述程序指令可由所述处理器读取和/或执行以使所述处理器:
响应于确定包括在第一RTU队列中的块的数量不在第一RTU队列的第一范围中,处理器选择第一池中的多个块中的一个;
由所述处理器重定位来自选择的块的有效数据;
由所述处理器擦除所述选择的块;以及
由所述处理器将所选择的块放置在与所述第一池相对应的所述第一RTU队列中。
14.如权利要求13所述的计算机程序产品,其中将所述选择的块放置于对应于所述第一池的所述第一RTU队列中包括:
对经重新配置的选择的块进行标记以用于对其阈值电压移位值进行重新校准。
15.如权利要求9所述的计算机程序产品,所述程序指令可由所述处理器读取和/或执行以使所述处理器:
所述处理器确定包括在所述第二RTU队列中的块的数量是否在所述第二RTU队列的第一范围内;
响应于确定包括在第二RTU队列中的块的数量在第二RTU队列的第一范围内,处理器确定包括在第一RTU队列中的块的数量是否在第一RTU队列的第二范围内;
响应于确定包括在第一RTU队列中的块的数量不在第一RTU队列的第二范围中,处理器从第二池中的多个块中的一个重定位有效数据;
所述处理器擦除所述第二池中的所述块;以及
所述处理器将所述块从所述第二池转移到所述第一池对应的第一RTU队列。
16.如权利要求15所述的计算机程序产品,其中将所述块从所述第二池传送到对应于所述第一池的所述第一RTU队列包括:
所述处理器将所述块从每单元多位模式重新配置到SLC模式;以及
所述处理器标记所述重新配置的块以用于对其阈值电压偏移值进行重新校准。
17.一种系统,包括:
多个非易失性随机存取存储器(NVRAM)块,被配置为存储数据;以及
处理器和与所述处理器集成和/或可由所述处理器执行的逻辑,所述逻辑被配置为:
所述处理器确定包括在第一准备使用(RTU)队列中的块的数量是否在所述第一RTU队列的第一范围内;
响应于确定包括在第一RTU队列中的块的数量在第一RTU队列的第一范围中,处理器确定包括在第二RTU队列中的块的数量是否在第二RTU队列的第二范围中;
响应于确定包括在第二RTU队列中的块的数量不在第二RTU队列的第二范围内,处理器在对应于第一RTU队列的第一池中重定位来自块中的一个的有效数据;
所述处理器擦除所述第一池中的所述块;以及
所述处理器将所述块从所述第一池转移至对应于第二池的所述第二RTU队列,
其中,所述第一池中的所述块被配置为单层单元(SLC)模式,
其中,所述第二池中的所述块是以每单元多位模式配置的。
18.如权利要求17所述的系统,其中将所述块从所述第一池传送到对应于所述第二池的所述第二RTU队列包括:
将所述块从SLC模式重新配置成每单元多位模式;以及
标记经重新配置的块以用于重新校准经重新配置的块的阈值电压移位值。
19.如权利要求17所述的系统,所述逻辑被配置为:
所述处理器确定所述存储系统经历的当前输入/输出(I/O)工作负荷是否在第三范围内;以及
响应于确定所述存储系统经历的所述当前I/O工作负荷不在所述第三范围内,所述处理器将所述块从所述第一池转移到对应于所述第二池的所述第二RTU队列。
20.如权利要求17所述的系统,所述逻辑被配置为:
所述处理器确定包括在所述第二RTU队列中的块的数量是否在所述第二RTU队列的第一范围内;
响应于确定包括在第二RTU队列中的块的数量在第二RTU队列的第一范围内,处理器确定包括在第一RTU队列中的块的数量是否在第一RTU队列的第二范围内;
响应于确定包括在第一RTU队列中的块的数量不在第一RTU队列的第二范围中,处理器从第二池中的多个块中的一个重定位有效数据;
由所述处理器擦除所述第二池中的所述块;以及
所述处理器将所述块从所述第二池转移到所述第一池对应的第一RTU队列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/459,393 | 2019-07-01 | ||
US16/459,393 US11182089B2 (en) | 2019-07-01 | 2019-07-01 | Adapting memory block pool sizes using hybrid controllers |
PCT/IB2020/055904 WO2021001724A1 (en) | 2019-07-01 | 2020-06-23 | Adapting block pool sizes in a storage system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114096952A true CN114096952A (zh) | 2022-02-25 |
Family
ID=74065734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080048805.7A Pending CN114096952A (zh) | 2019-07-01 | 2020-06-23 | 调整存储系统中的块池大小 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11182089B2 (zh) |
JP (1) | JP7486534B2 (zh) |
CN (1) | CN114096952A (zh) |
DE (1) | DE112020003185T5 (zh) |
GB (1) | GB2598878B (zh) |
WO (1) | WO2021001724A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11442809B1 (en) * | 2019-07-17 | 2022-09-13 | Marvell Asia Pte, Ltd. | Double-parity raid enabling recovery of two failed data units |
US11119672B2 (en) * | 2019-08-06 | 2021-09-14 | Intel Corporation | Dynamic single level cell memory controller |
US11656792B2 (en) * | 2021-06-29 | 2023-05-23 | International Business Machines Corporation | Mirroring data in write caches of a controller of a non-volatile memory |
US11797199B2 (en) * | 2021-07-06 | 2023-10-24 | International Business Machines Corporation | Balancing utilization of memory pools of physical blocks of differing storage densities |
US12093171B2 (en) | 2023-01-27 | 2024-09-17 | International Business Machines Corporation | Proactive data placement in high density storage by a hybrid non-volatile storage controller |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8694754B2 (en) * | 2011-09-09 | 2014-04-08 | Ocz Technology Group, Inc. | Non-volatile memory-based mass storage devices and methods for writing data thereto |
US20150058530A1 (en) * | 2013-08-22 | 2015-02-26 | Gautham Reddy | Smart dynamic wear balancing between memory pools |
US20160098213A1 (en) * | 2014-10-03 | 2016-04-07 | International Business Machines Corporation | Hybrid storage system employing reconfigurable memory |
US20160188211A1 (en) * | 2014-12-30 | 2016-06-30 | International Business Machines Corporation | Optimizing thin provisioning in a data storage system through selective use of multiple grain sizes |
CN106208367A (zh) * | 2015-05-26 | 2016-12-07 | Aes有限公司 | 模块化储能方法及系统 |
US20190171381A1 (en) * | 2017-12-06 | 2019-06-06 | International Business Machines Corporation | Reducing unnecessary calibration of a memory unit for which the error count margin has been exceeded |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7330956B1 (en) * | 2002-04-16 | 2008-02-12 | Emc Corporation | Bucket based memory allocation |
US7610468B2 (en) * | 2006-10-26 | 2009-10-27 | Hewlett-Packard Development Company, L.P. | Modified buddy system memory allocation |
JP4746598B2 (ja) | 2007-09-28 | 2011-08-10 | 株式会社東芝 | 半導体記憶装置 |
US7865658B2 (en) | 2007-12-31 | 2011-01-04 | Sandisk Il Ltd. | Method and system for balancing host write operations and cache flushing |
US8407400B2 (en) | 2008-11-12 | 2013-03-26 | Micron Technology, Inc. | Dynamic SLC/MLC blocks allocations for non-volatile memory |
US8040744B2 (en) | 2009-01-05 | 2011-10-18 | Sandisk Technologies Inc. | Spare block management of non-volatile memories |
US8312219B2 (en) | 2009-03-02 | 2012-11-13 | International Business Machines Corporation | Hybrid caching techniques and garbage collection using hybrid caching techniques |
US7948798B1 (en) | 2009-07-22 | 2011-05-24 | Marvell International Ltd. | Mixed multi-level cell and single level cell storage device |
US9021177B2 (en) * | 2010-04-29 | 2015-04-28 | Densbits Technologies Ltd. | System and method for allocating and using spare blocks in a flash memory |
EP2549482B1 (en) | 2011-07-22 | 2018-05-23 | SanDisk Technologies LLC | Apparatus, system and method for determining a configuration parameter for solid-state storage media |
US8943261B2 (en) | 2011-10-28 | 2015-01-27 | International Business Machines Corporation | Efficient memory management in software caches |
US9176862B2 (en) | 2011-12-29 | 2015-11-03 | Sandisk Technologies Inc. | SLC-MLC wear balancing |
JP6139381B2 (ja) | 2013-11-01 | 2017-05-31 | 株式会社東芝 | メモリシステムおよび方法 |
US9558107B2 (en) | 2013-12-24 | 2017-01-31 | International Business Machines Corporation | Extending useful life of a non-volatile memory by health grading |
WO2016069031A1 (en) | 2014-11-01 | 2016-05-06 | Hewlett Packard Enterprise Development Lp | Managing a storage pool |
US9857986B2 (en) | 2015-06-30 | 2018-01-02 | International Business Machines Corporation | Wear leveling of a memory array |
US10254981B2 (en) * | 2016-12-12 | 2019-04-09 | International Business Machines Corporation | Adaptive health grading for a non-volatile memory |
JP2018120439A (ja) * | 2017-01-25 | 2018-08-02 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US10545685B2 (en) | 2017-08-30 | 2020-01-28 | Micron Technology, Inc. | SLC cache management |
JP7030463B2 (ja) | 2017-09-22 | 2022-03-07 | キオクシア株式会社 | メモリシステム |
US20200042223A1 (en) * | 2018-08-02 | 2020-02-06 | Alibaba Group Holding Limited | System and method for facilitating a high-density storage device with improved performance and endurance |
-
2019
- 2019-07-01 US US16/459,393 patent/US11182089B2/en active Active
-
2020
- 2020-06-23 JP JP2021577198A patent/JP7486534B2/ja active Active
- 2020-06-23 CN CN202080048805.7A patent/CN114096952A/zh active Pending
- 2020-06-23 GB GB2200305.7A patent/GB2598878B/en active Active
- 2020-06-23 WO PCT/IB2020/055904 patent/WO2021001724A1/en active Application Filing
- 2020-06-23 DE DE112020003185.3T patent/DE112020003185T5/de active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8694754B2 (en) * | 2011-09-09 | 2014-04-08 | Ocz Technology Group, Inc. | Non-volatile memory-based mass storage devices and methods for writing data thereto |
US20150058530A1 (en) * | 2013-08-22 | 2015-02-26 | Gautham Reddy | Smart dynamic wear balancing between memory pools |
US20160098213A1 (en) * | 2014-10-03 | 2016-04-07 | International Business Machines Corporation | Hybrid storage system employing reconfigurable memory |
US20160188211A1 (en) * | 2014-12-30 | 2016-06-30 | International Business Machines Corporation | Optimizing thin provisioning in a data storage system through selective use of multiple grain sizes |
CN106208367A (zh) * | 2015-05-26 | 2016-12-07 | Aes有限公司 | 模块化储能方法及系统 |
US20190171381A1 (en) * | 2017-12-06 | 2019-06-06 | International Business Machines Corporation | Reducing unnecessary calibration of a memory unit for which the error count margin has been exceeded |
Also Published As
Publication number | Publication date |
---|---|
WO2021001724A1 (en) | 2021-01-07 |
US20210004158A1 (en) | 2021-01-07 |
GB2598878A (en) | 2022-03-16 |
JP2022539133A (ja) | 2022-09-07 |
GB2598878B (en) | 2022-08-03 |
DE112020003185T5 (de) | 2022-05-19 |
US11182089B2 (en) | 2021-11-23 |
JP7486534B2 (ja) | 2024-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114072774B (zh) | 数据存储系统中的块模式切换 | |
US11138124B2 (en) | Migrating data between block pools in a storage system | |
US10275162B2 (en) | Methods and systems for managing data migration in solid state non-volatile memory | |
US11762569B2 (en) | Workload based relief valve activation for hybrid controller architectures | |
US11182089B2 (en) | Adapting memory block pool sizes using hybrid controllers | |
US10613784B2 (en) | Adaptive assignment of open logical erase blocks to data streams | |
US11157379B2 (en) | Managing blocks of memory based on block health using hybrid controllers | |
US11086565B2 (en) | Reducing effects of read array operations of read apparent voltage | |
CN113924546A (zh) | 非易失性存储器中的磨损感知块模式转换 | |
CN114127677B (zh) | 用于写高速缓存架构中的数据放置的方法和系统 | |
US11620218B2 (en) | Using multi-tiered cache to satisfy input/output requests | |
CN114556303A (zh) | 更新非易失性随机存取存储器中的校正读取电压偏移 | |
US11797448B2 (en) | Using multi-tiered cache to satisfy input/output requests | |
US11126360B2 (en) | Dynamically adjusting block mode pool sizes | |
CN112346658B (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 |