CN114072774B - 数据存储系统中的块模式切换 - Google Patents
数据存储系统中的块模式切换 Download PDFInfo
- Publication number
- CN114072774B CN114072774B CN202080048886.0A CN202080048886A CN114072774B CN 114072774 B CN114072774 B CN 114072774B CN 202080048886 A CN202080048886 A CN 202080048886A CN 114072774 B CN114072774 B CN 114072774B
- Authority
- CN
- China
- Prior art keywords
- block
- pool
- processor
- transferred
- blocks
- 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
- 238000013500 data storage Methods 0.000 title description 28
- 238000000034 method Methods 0.000 claims abstract description 123
- 230000004044 response Effects 0.000 claims abstract description 25
- 238000003860 storage Methods 0.000 claims description 102
- 238000012546 transfer Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 29
- 238000013459 approach Methods 0.000 description 27
- 239000010410 layer Substances 0.000 description 22
- 230000008569 process Effects 0.000 description 22
- 238000012545 processing Methods 0.000 description 17
- 230000008859 change Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 238000000926 separation method Methods 0.000 description 8
- 230000036541 health Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 238000013403 standard screening design Methods 0.000 description 6
- 230000003321 amplification Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 238000003199 nucleic acid amplification method Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 101100029838 Mus musculus Pinx1 gene Proteins 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000009849 deactivation Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000012512 characterization method Methods 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
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011066 ex-situ storage Methods 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012797 qualification Methods 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
- 239000002356 single layer Substances 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/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/0614—Improving the reliability of 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/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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to 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/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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/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
-
- 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
-
- 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/7211—Wear leveling
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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队列。
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队列。在第一池中的块被配置在单层单元(SLC)模式中,而在第二池中的块被配置在每单元多位模式中。
根据另一实施例,一种计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有体现在其中的程序指令。程序指令可由处理器读取和/或执行,以使处理器:执行上述方法。
根据又一实施例,一种系统包括:被配置为存储数据的多个非易失性随机存取存储器(NVRAM)块。在一些方法中,该系统还包括处理器和与该处理器集成和/或可由该处理器执行的逻辑。该逻辑被配置成:执行上述方法。
通过以下详细描述,本发明的其他方面和实施例将变得显而易见,当结合附图时,所述详细描述以举例方式说明本发明的原理。
附图说明
图1是根据一个实施例的非易失性存储卡的图。
图2是根据一个实施例的数据存储系统架构的图。
图3是根据一个实施例的系统图。
图4是根据一个实施例的包括块条和页条的概念图。
图5是根据一个实施例的非易失性存储器模块的局部示意图。
图6是根据一种实施方式的数据和流程框图概况的部分示意图。
图7是根据一种实施方式的方法的流程图。
图8是根据一个实施例的网络架构。
图9是根据一个实施例的可以与图8的服务器和/或客户端相关联的代表性硬件环境。
图10是根据一个实施例的分层数据存储系统。
具体实施方式
以下描述是为了说明本发明的一般原理而进行的,而不是为了限制在此要求保护的发明构思。进一步,本文中所描述的特定特征可以与不同可能的组合和排列中的每一者中的其他描述特征组合使用。
除非本文中另外特别限定,否则所有术语将被给予它们的最广泛的可能解释,包括从说明书中暗示的含义以及本领域技术人员所理解的含义和/或如在词典、论文等中限定的含义。
还必须注意的是,如在说明书和所附权利要求中使用的,单数形式“一个”、“一种”和“该”包括复数指示物,除非另外说明。还应当理解,当在本说明书中使用术语“包括(comprises)”和/或“包含(comprising)”时,其指定所述特征、整体、步骤、操作、元件和/或部件的存在,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、部件和/或它们的组合。
以下描述公开了数据存储系统及其操作和/或组成部分的若干优选实施例。应当理解,本文的不同实施例可以用宽范围的存储介质来实现,包括例如非易失性随机存取存储器(NVRAM)技术,诸如NAND闪存、NOR闪存、相变存储器(PCM)、磁阻RAM(MRAM)和电阻RAM(RRAM)。为了提供上下文并且仅为了帮助读者,可以参考非易失性存储器的类型来描述不同实施例。这仅是通过举例的方式完成的,并且不应当被认为是对在权利要求中定义的本发明的限制。
在一个总体实施例中,计算机实现的方法用于切换存储系统中的块模式。该计算机实现的方法包括:维护所述存储系统中的每个存储器块的块切换度量。根据对应于第一块的块切换度量来确定第一池中的第一块是否应当被转移到第二池。响应于根据对应于第一块的块切换度量确定第一池中的第一块应被转移到第二池,擦除第一块。然后将第一块从第一池转移到对应于第二池的第二准备使用(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方案通常提高可靠性并减少数据丢失的概率。
根据绝不旨在限制本发明的示例性实施例,存储器控制器(例如,参见108和/或图1的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业务或编程/擦除(P/E)周期的存储系统能够选择性地包括比具有每单元多位配置的存储器块更多数量的具有每单元一位配置的存储器块。相反,被预测用于存储大量冷数据的存储系统能够选择性地包括比具有每单元一位配置的存储器块更多数量的具有每单元多位配置的存储器块。然而,非易失性存储块会随着时间的推移而退化,最终变得容易出错并且最终无法使用。因此,实现存储器块到不同池的静态分配的常规存储系统已经无法执行损耗均衡和/或维持高效存储器性能。
与传统系统所经历的这些缺点形成鲜明对比的是,本文所包括的各个实施例实现了混合控制器,所述混合控制器能够在不同的块配置之间动态地切换以及基于利用率和工作负荷属性来适配块池大小,例如,如下文将进一步详细描述的。
现在参见图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等,和/或其组合。
混合控制器502可以在以SLC模式配置并因此包括在第一池504中的块中存储频繁访问(例如,读取、重写、附加等)的数据,而存储访问频率较低的数据在以每单元多比特模式配置并因此包括在第二池506中的块中。这种存储方案实现了存储器的不同块及其各自的性能特征的有效使用。然而,随着池504、506中的每一个中的存储器块随时间经历不同的磨损量以及不同数量的P/E周期,每个块的有效健康与其他块不同。即使不同块的磨损随着P/E周期增加而不同地增加,对于相同的P/E周期,在多位单元中经历的磨损平均比在SLC单元中经历的磨损增加更快。此外,由于存储在存储器模块500中的热和冷数据的比率随时间波动,相应池504、506中的每一个都可能未被充分利用和/或被过度利用。
因此,混合控制器502能够选择性地重新配置第一和/或第二池504、506中的任何块以基于实际使用和/或工作负荷特性来动态地适配存储器。这允许存储器模块500例如通过执行损耗均衡来调节每个存储器块的有效健康。不管存储在其中的热或冷数据量如何,也保持整体模块500的高效性能。
图6提供了图5中的第一池504和第二池506的详细视图,并且因此图6的不同部件与图5的那些部件具有共同的编号。如图所示,第一池504和第二池506各自从混合控制器502接收写入操作。由第一和第二池504、506中的每一个接收的写入操作中的数据用于填充已经累积在第一和第二准备使用(RTU)队列600、602中的存储器块。当第一和第二RTU队列600、602中的块被填充时,它们被返回到各自被占用的块池604、606,它们在那里保留直到它们被标识为准备好进行垃圾收集过程。
在达到RTU队列600、602之一中的擦除块的低级别时,垃圾收集器从对应的占用块池604、606中选择具有大量无效页面的块。如上所述,作为写入更新、删除操作等,包含在存储块中的数据会随时间推移而失效。一旦失效,给定存储块中的数据实际上无用且可被删除。然而,在将数据的剩余部分保持在块中的同时,不能从非易失性存储块中删除数据的选定部分。相反,在擦除整个块之前首先重新定位有效数据。因此,随着给定存储块中的无效数据的量增加,该块变得越来越低效地使用存储空间,由此增加了对该块执行垃圾收集操作的激励。相反,对其中具有少量无效数据的存储块执行垃圾收集操作是计算资源的低效使用并且实际上降低了效率。因此,可根据需要平衡计算资源利用和存储空间回收之间的这种权衡。然后,在将块识别为准备好擦除之前,垃圾收集器将所有仍然有效的数据重定位到新的位置。
被识别为准备好擦除的块分别转移到第一和第二池504、506中的每一个中的准备好擦除队列608、610。在进入准备好擦除队列608、610之后,块最终被擦除并返回到相应的RTU队列600、602。存储块还可以在第一池504和第二池506之间转换。然而,应当注意,与在每单元多位模式中配置的块相比,在SLC模式下配置的块执行擦除操作略有不同。因此,当块正被擦除时,优选地指定用于块的目标模式(例如,给定块旨在被配置的模式)。这使得块能够从准备擦除队列610移动至RTU队列602或600,并且类似地从准备擦除队列608移动至RTU队列600或602,例如,如图6中的不同箭头线所示。
根据本描述,在池之间“转移”的块保持在存储器的同一平面和通道中。换言之,虽然给定块的功能特性可能由于激活和/或去激活其中的每个单元中的某些位而改变,但是块本身不在存储器中物理地移动。相反,在逻辑意义上,块在池之间“转移”。擦除操作可以涉及指定块的目标模式。在一些方法中,在LPT、操作日志、块状态表等中指示这些转移。
某些块可被识别为适合第一和第二池504、506之间的转移。根据一些方法,这种资格可基于上次在池之间的转移以来块所经历的P/E周期的数量、块是否准备好被擦除、关联于池或每个池的信道且对应于可在池之间的每个方向上转移的块的数量的一个或多个信用等,例如,如下文将进一步详细描述的。
现在参见图7,示出了根据一个实施例的用于切换存储系统中的块模式的方法700。在各种实施方式中,除其他环境之外,方法700可根据本发明在图1-6中描述的任何环境中执行。当然,如本领域技术人员在阅读本说明书后将理解的,方法700可包括比图7中具体描述的操作更多或更少的操作。例如,在下面在评估在SLC模式中配置的第一池中的存储块的上下文中描述方法700中包括的不同过程。然而,方法700中包括的不同过程中的任何一个或多个可在评估第二池中的存储块的上下文中被应用,所述存储块以每单元多位模式被配置,例如,如以下将进一步详细描述的。
方法700的步骤中的每个步骤可由操作环境的任何合适的组件执行。例如,在不同实施例中,方法700可以部分地或完全由混合控制器、控制器、处理器、计算机等或其中具有一个或多个处理器的一些其他设备来执行。因此,在一些实施例中,方法700可以是计算机实施的方法。在这样的实施例中,用于实现该方法的计算机可包括存储器模块本身或其一部分,例如混合控制器。此外,术语“计算机”、“处理器”和“控制器”可以关于在此的任何实施例互换地使用,这样的部件在本发明的许多不同的置换中被认为是等效的。
此外,对于具有处理器的那些实施例,处理器(例如,以硬件和/或软件实现的处理电路、芯片和/或模块),并且优选地具有至少一个硬件组件,可以在任何设备中使用以执行方法700的一个或多个步骤。说明性的处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、它们的组合、或本领域已知的任何其他合适的计算设备。
如图7所示,方法700的操作702包括为存储系统中的每个存储块维护块切换度量。在一些方法中块切换度量用于确定给定的存储块是否可以和/或应当(例如,“必须”)被重新配置和切换到另一池。因此,为给定块维持的块切换度量优选地能够跟踪给定块所经历的使用量。应当注意,在一些方法中,块切换度量仅针对具有包括在其中的预定数量的编程页的块来维护。例如,对于在启动块切换操作之前已经对其中的至少一半页进行编程的块,维护块切换度量。
根据不同方法,可针对每个存储块维持不同类型的块切换度量。例如,在一些方法中,块切换度量包括相应块的P/E周期计数。此外,P/E周期计数可专用于相应块的特定配置。例如,在以每单元多位模式或SLC模式配置时,P/E周期计数可以仅跟踪相应块所经历的P/E周期的数量。然而,在每单元多位模式中配置的块的耐久性通常低于在SLC模式中配置的块的耐久性,因此,如果在仅一个模式中跟踪,则在多位模式中跟踪P/E周期是有利的。此外,在一个优选实施例中,切换度量中的P/E周期计数可以在切换块模式时被重置,使得仅使用自上次切换以来当前模式下的P/E周期。这合乎需要地减少了为每个存储块存储的元数据量,从而提高了整个系统的效率。该P/E周期计数可以用于外推相应块的P/E周期计数,同时以其他模式配置,例如,如本领域技术人员在阅读本说明书之后将理解的。
在其他方法中,块切换度量包括相应块的原始比特错误率(RBER)。RBER可进一步维持为给定块中的所有页的平均值、给定块中的页或码字的最高(例如,最差)值、给定块中的所有页的中值等。基于块的RBER的块切换度量优选地反映来自编程-擦除循环的基础阈值电压分布的永久改变对RBER的贡献。在更进一步的方法中,块切换度量包括相应块的数据访问时间,例如,诸如读取执行时间、写入执行时间、擦除时间等。甚至可以在一些方法中实现不同块切换度量的组合。尽管未在图7中描绘,方法700还可包括初始化一个或多个信用,该一个或多个信用对应于可在池之间的每个方向上被转移的块的数量。关于本描述,“信用”被用在一些方法中以确保存储器池在其相应大小方面保持相对相等,例如,如下面将进一步详细描述的。
方法700继续操作703,其中在继续到判定704之前选择要从第一池中的准备好擦除队列608擦除的块。在替代实施例中,操作703还可以从被占用的块池606中选择块。然而,因为在擦除块之前必须重定位所有仍有效的数据,所以从准备擦除队列608中选择块是有利的。判定704包括确定第一块中的被编程页的数量是否在预定范围内。一些方法指定至少一半页要被编程以便改变块的模式,而其他方法可能没有这种限制。
响应于确定第一块中已编程的页的数量不在预定范围中,方法700前进到下面描述的操作724。然而,响应于确定第一块中的已编程页的量足够并且因此在预定范围内,方法700前进到判定705。在那里,判定705包括根据与第一块相对应的块切换度量来确定第一池中的第一块是否必须被转移到第二池。如上所述,存储块可以被划分成两个不同的池,其中每个池包括以相同模式配置的存储块。例如,第一池中的块被配置在SLC模式中,而第二池中的块以每单元多位模式配置(例如,参见以上图5的池504、506)。然而,池的数量和其中包括的块配置的类型可以根据所需的方法而变化。
还应注意,“第一块”绝不旨在限于特定的存储块。相反,术语“第一块”已经被用于指代当前正由方法700评估的第一池中的任何一个块。方法700检查准备好擦除队列中的块(例如,参见608、610),但是在替代方法中,方法700还可以以清除方式检查每个池中的所有存储块,并且因此可以以迭代方式重复判定705和/或本文中包括的任何其他过程。显然,如由本领域技术人员在阅读本说明书之后将认识到的,方法700所选择的当前处于被占用的块池(例如,参见606、604)中的任何块优选地具有在其中通过垃圾收集过程在擦除该块之前首先重新定位的所有有效数据。
再次,与第一块对应的块切换度量用于确定第一块是否必须被转移到第二池中。因此,在一些方法中,判定705包括确定块切换度量是否在预定范围内。可为存储器的每个池或每个块维护不同类型的块切换度量,因此确定第一块是否应该转移到第二池的过程可以根据可用度量的类型而变化。例如,在一些方法中,块切换度量包括第一块的P/E周期计数,该P/E周期计数可以用于确定第一块自从切换到当前模式或者全局模式(即,任一模式中的P/E周期)是否已经经历了预定数量的P/E周期。在其他方法中,可以使用反映来自与第一块相关联的编程-擦除循环和/或数据访问时间的底层阈值电压分布的永久改变的RBER值来确定第一块是否不合期望地执行。因此,阈值的使用是实现块切换度量的期望方式,因为每个模式中的阈值可以不同。阈值还可基于工作负荷属性(例如,当池被重新调整大小时)被动态地适配。
响应于根据对应于第一块的块切换度量确定第一块必须被传送到第二池,方法700前进到操作708,操作708包括擦除第一块。
方法700进一步包括将第一块从第一池传输到对应于第二池的第二RTU队列。参见操作710。根据本描述,在RTU队列和/或池之间“转移”的块保持在存储器的相同平面和通道中(例如,参见图4)。换言之,虽然给定块的功能特性可能由于激活和/或去激活其中的每个单元中的某些位而改变,但是块本身不在存储器中物理地移动。相反,块在逻辑意义上在RTU队列和/或池之间“传输”。在一些方法中,在LPT、操作日志等中指示这些转移。
同样,根据本实施例,第一池(连同第一RTU队列)包括以SLC模式配置的存储块,而第二池(连同第二RTU队列)包括以每单元多位模式配置的存储块。根据该方法,第二池中以每单元多位模式配置的块可具有多个不同的配置。例如,在一些方法中,第二池中的被配置成每单元多位模式的块被配置成多级单元(MLC)模式,而在其他方法中,第二池中的被配置成每单元多位模式的块被配置成三级单元(TLC)模式。在又一些方法中,第二池中以每单元多位模式配置的块被以四级单元(QLC)模式配置,并且以QLC模式配置的块中的每一者包括较低页、较高页、额外页和顶页。
因此,由于第一和第二池中的每一个包括以不同模式配置的存储块,在操作710中实际传送第一块的过程涉及重新配置块。取决于所选择的块是从第一池转移到第二RTU队列还是从第二池转移到第一RTU队列,可以不同地执行重新配置存储块的过程。例如,从第一池转移到第二RTU队列的块优选地从SLC模式重新配置成每单元多位模式。然而,从第二池转移到第一RTU队列的块优选地从每单元多位模式重新配置到SLC模式。在SLC和每单元多位模式之间重新配置给定块的过程可以通过去激活和/或重新激活包括在块中的比特中的某些比特、逻辑上重新定义给定块等来执行,或者使用在阅读了本描述之后将对本领域技术人员显而易见的任何过程来执行。
块能够以不同的模式重新配置,以响应所使用容量的变化和/或所经历的工作负载属性的变化(例如,倾斜变化)。然而,某些方法可能无法跟踪工作负荷属性。此外,当利用率和工作负荷属性保持不变,但仍存在正在执行的写入操作(例如,主机和/或重新定位写入)时,将执行池之间的交换块。
通常,重新校准存储块对块本身的性能具有影响。例如,与访问给定块相关联的读取阈值电压偏移值在某些情况下可能由于其重新校准而改变。然而,由于方法700导致存储器块随着时间的推移被周期性地重新配置,而与利用率和工作负荷特性无关,所以补偿来自P/E循环的基础阈值电压分布的改变的先前读取阈值电压移位值(即,来自基础校准的读取阈值电压移位值)常常是准确的并且可以在这样的情况下被重用。这些先前读取的阈值电压偏移值可以存储在存储器(例如,查找表)中并且根据需要被访问,从而将基础校准与块模式切换过程解耦合。此外,本文所包括的工艺不依赖于写入热分离。这可理想地减少性能延迟和节省计算能力,从而提高系统的效率。然而,在一些情况下,可以使用本领域技术人员在阅读本说明书之后将显而易见的任何过程来针对给定块重新校准新的阈值电压偏移值。进一步,在池之间周期性地交换块对于磨损均衡是有利的。仅在池内执行磨损平衡会降低由首先磨损的池决定的整体耐用性。块的周期性交换允许在每个池中独立地执行磨损均衡(诸如健康分级),同时通过周期性块交换均衡池之间的磨损,使得整体耐久性增强到所有块的平均耐久性。
方法700从操作710行进至操作712,其包括从第二池选择第二块以被转移至第一池。再次,优选的是,第一和第二池随时间推移维持其相应的大小(例如,当利用和工作负荷属性不改变或仅略微改变时)。由此,将第二块传送到第一池确保第二池的大小不增加以及确保第一池的大小不会减小。
通常,根据过去的块切换指标,所选的第一个块先前有资格转移到第二个池,但没有足够的信用额来将块从第一个池转移到第二个池,这将在下面进一步解释。如图7中所示的方法700假定信用额不同时改变,因此在操作712中从第二池中选择第二框。然而,在替换实施例中,如本领域技术人员在阅读本说明书时将理解的,信用额可同时被补充(例如,由于另一块同时从第二池移动到第一池,或者由于利用和/或工作负荷属性的改变而需要缩小第一池并扩大第二池)。因此,方法700可以递减对应于切换方向的计数器,递增对应于相反的切换方向的计数器,并且直接返回(图7中未示出)至操作702(即,在此情况下跳过操作712、714、716和718)。
在操作712中选择的块可以是第二池中的任何块。然而,在一些方法中,从准备好擦除队列610中选择块。在其他方法中,选择具有最高正在进行的P/E周期计数的块转移到第一个池。在又一些方法中,被识别为具有最高健康度量的块被选择转移到第一池。在又一些方法中,可以在操作712中选择被标记(例如,被标记)以指示它们应该被转移到另一个池的某些块。
操作714包括当所选择的第二块来自占用的块池606而不是来自准备擦除队列610时,例如,根据本文中包括的任何方法从所选择的第二块重定位有效数据。如果第二选择的块来自准备擦除队列610,则所有有效数据已经被重定位并且操作714被跳过。取决于方法,可以以任何期望的方式执行从块重定位有效数据。例如,在一些方法中,有效数据在被存储在存储器的不同块中之前可被临时存储在高速缓存中(例如,参见图5中的高速缓存存储器510)。在其他方法中,有效数据可以被直接传送到存储器的另一块。
仍参考图7,操作716包括擦除第二块。此外,操作718包括实际上将第二块从第二池传输到对应于第一池的第一RTU队列。
虽然在第一池和第二池之间转移块的这一过程被执行以使得交换第一块和第二块基本上同时执行,但是在其他方法中,平衡第一池和第二池的大小的过程可能会有些延迟。例如,可能需要限制在系统正常操作中发生的并发块切换的数量。因此,使用基于信用的方案在任何时间点仅允许有限数量的块在每个方向上在池之间切换可以是有意义的。
例如,该基于信用的方案可涉及维护两个计数器,每个计数器对应于可沿方向之一(例如,第一到第二池和第二到第一池)在池之间转移的块的数量。最初,n1和n2块可在每一方向上切换,其中n1和n2的值可相同或不同。根据绝不旨在限制本发明的实例,[n1,n2]=[1,0]、[1,1]、[5,5]等。根据一些方法,如果对应方向的计数器非零,那么块可仅在池之间转移。在计数器非零的情况下,优选地,在沿对应方向在池之间传递块之后递减计数器,而对应于另一方向的计数器递增。在一些方法中,计数器中的一者或两者可以是饱和计数器。然而,在其他方法中,甚至可通过响应于第一块被传送而故意不传送第二块来调整池的大小。这些池的大小可以由此根据需要进行调整。
仍参考图7,方法700从操作718返回至操作702,例如,使得可以更新和/或继续监测块切换度量。因此,方法700能够成功地调节存储器中的各个块的磨损,同时还实时保持块池大小,由此确保存储器寿命和高效性能以及总存储系统。
然而,返回到判定705,方法700响应于根据对应于第一池中的第一块的块切换度量确定第一池中的第一块不必被转移到第二池而前进到判定720。换言之,方法700响应于确定块切换度量不指示给定块被转移到另一池是关键的而进入判定720。在那里,判定720包括确定第一块是否有资格被转移到第二池。
如前所述,随着给定存储块中的无效数据量增加,该块变得越来越低效地使用存储空间,由此增加了对该块执行垃圾收集操作的激励。相反,对其中具有少量无效数据的内存块执行垃圾收集操作是计算资源的低效使用并且实际上降低了低效。计算资源利用和存储空间收回之间的这种权衡可由此在执行判定720中实现。
因此,在优选方案中,决定720是根据对应于第一块的块切换度量以及根据对应于切换方向的饱和计数器来确定的。换言之,由于所选块优选地来自准备擦除队列并且准备擦除队列中的块数量与池中的块总数相比通常较低,因此所选块很有可能根据块切换指标尚不符合条件,而其他块可能已经符合条件。由于垃圾收集是在后台执行的,在某个时刻,选定的块最终将达到一个块切换指标,使它们有资格重新配置。在块切换度量指示必须重新配置块之前,达到指示块可被重新配置和交换到另一池的块切换度量。所以,块在其必须被切换之前切换模式的概率存在并且相对较高,从而降低执行强制交换的概率,该强制交换可能导致操作712从被占用的块池中选择第二块,其涉及重新定位仍然有效的数据的附加开销。例如,判定720可涉及块切换度量,所述块切换度量确定自切换到当前模式起的P/E周期计数是否在预定范围内和/或给定块的RBER是否在预定范围内,所述预定范围表示如果需要的话块可被转移,但就损耗均衡而言转移发生不是关键的。
判定720还可在确定块是否有资格被转移到第二池中时合并对应于可在池之间转移的块的量的一个或多个信用。换言之,信用和对应的计数器对应于其中块配置模式被切换的特定方向。例如,可以将饱和计数器分配给每个块,以便跟踪给定块已经从一个池转移到另一个池的次数。再次,在一些方法中,如果针对预期传送方向的计数器是非零的,则块可仅在池之间传送。在计数器非零的情况下,优选地,在给定方向上在池之间传递块之后递减计数器,而对应于另一方向的计数器递增。
响应于根据对应于其的块切换度量确定第一块没有资格被转移到第二池,方法700前进到操作724,其包括擦除第一块,而操作726包括将第一块返回到第一RTU队列。方法700从操作726返回到操作702,如所描绘的,例如使得块切换度量可被更新和/或继续被监视。
然而,响应于根据对应于其的块切换度量确定第一块有资格被转移到第二池,方法700前进到包括擦除第一块的操作730。操作732进一步包括根据在此描述的任何方法将第一块从第一池转移至第二RTU队列。对于用于每个切换方向实现计数器的方法,响应于从第一池向第二RTU队列最终传送第一块,对应于从第一池到第二池的切换方向的计数器也可以递减,并且对应于相反的切换方向的计数器可以递增。方法从操作732返回到操作702。
如前所述,方法700中包括的不同过程的一个或多个可应用于评估第二池中的存储块(其配置在每单元多位模式中)以及潜在地将其中的一个或多个转变到配置在SLC模式中的上下文。因此,方法700中所包括的任何一个或多个过程和/或与其结合描述的任何方法可以在评估第二池中所包括的存储块并确定它们是否应当被传送到第一池的上下文中实现。换言之,如本领域技术人员在阅读本说明书之后将理解的,方法700中包括的过程可用于监视存储系统中的任何存储块。
根据一个示例,这绝不是为了限制本发明,方法700中包括的过程可以用于根据对应于的块切换度量来确定是否必须将第二池中的块转移到第一池给定的块。响应于根据对应于其的块切换度量确定第二池中的块必须被转移到第一池,如果在块被擦除之前块不是来自准备擦除队列,则从块重定位有效数据。该块进一步从第二池转移到第一RTU队列。还选择第一池中的第二块来替换从第二池中转移的块。如果在所选择的第二块被擦除并且从第一池转移到第二RTU队列之前存在任何数据,则重新定位所选择的第二块中的有效数据。进一步,方法700中包括的过程可用于根据对应于给定块的块切换度量确定第二池中的块是否有资格被转移到第一池。响应于根据对应于其的块切换度量确定第二池中的块有资格被转移到第一池,如果在块被擦除之前块不是来自准备擦除队列,则从块重定位有效数据。该块进一步从第二池转移到第一RTU队列。
由此可见,本文描述的各种方法能够使用表征来确定以不同模式配置的块的平均块耐久性。每个模式中的平均块耐久性还可用于确定块打算在每个模式中经历的P/E循环的目标比率。例如,每个模式中1:9P/E周期的比率可被设置为目标,因为SLC模式中的块通常具有QLC模式中的块的平均耐久性的九倍。简单的阈值还用于控制在不同块模式之间的切换,以及减小块模式切换频率和/或相关联的计算开销。例如,第一阈值可以用于指示给定块何时变得有资格进行切换,而第二阈值可以用于确定给定块何时必须被切换。因此,存储块在池之间足够频繁地切换,以减少池之间的块磨损的方差,并且与磨损均衡组合,以减少所有块之间的块磨损的方差,使能任一模式中的阈值电压偏移值更新,以及块的准确健康跟踪。健康分级和/或写入流映射可以进一步用本文所包括的任何方法来实现,例如以便进一步改善损耗均衡性能。
应当注意,尽管本文中已经在两个存储块池的上下文中描述了这些方法中的不同方法,但是这些方法中的任一个可以扩展到具有多于两个块池的实施例。在这样的实施例中,目标池可以使用优先级、基于用户输入、通过比较每个相应池的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队列,
其中,所述第一池中的块被配置为单层单元(SLC)模式,
其中,所述第二池中的块是以每单元多位模式配置的。
2.根据权利要求1所述的计算机实现的方法,其中,所述块切换度量包括从由以下各项组成的组中选择的信息:相应块的编程/擦除(P/E)周期计数、从块的最后切换以来在当前模式中用于相应块的所述P/E周期计数、相应块的原始比特错误率(RBER)、以及相应块的数据访问时间。
3.根据权利要求2所述的计算机实现的方法,其中,所述块切换度量包括从所述块模式的最后一次切换以来当前模式中的相应块的P/E周期计数。
4.根据权利要求1所述的计算机实现的方法,其中,所述块切换度量仅包括当以每单元多位模式配置时相应块的P/E周期计数。
5.根据权利要求1所述的计算机实现的方法,其中,将所述第一块从所述第一池转移到所述第二RTU队列包括:将所述第一块从SLC模式重新配置成每单元多位模式。
6.根据权利要求5所述的计算机实现的方法,其中,将所述第二块从所述第二池转移到所述第一RTU队列包括:将所述第二块从每单元多位模式重新配置到SLC模式。
7.根据权利要求1所述的计算机实现的方法,包括:
确定所述第一块中的被编程页的数量是否在预定范围内;以及
响应于确定所述第一块中的被编程页的量在所述预定范围内,根据与所述第一块对应的所述块切换度量确定所述第一池中的所述第一块是否应当被转移到所述第二池。
8.根据权利要求1所述的计算机实现的方法,包括:
响应于根据与所述第一块对应的所述块切换度量确定所述第一池中的所述第一块不必被转移到所述第二池,根据与所述第一块对应的所述块切换度量并且根据与切换方向对应的饱和计数器确定所述第一块是否有资格被转移到所述第二池;
响应于根据与所述第一块对应的所述块切换度量和与所述切换方向对应的所述饱和计数器确定所述第一块有资格被转移到所述第二池,擦除所述第一块;
将所述第一块从所述第一池转移至所述第二RTU队列;以及
递减与切换方向对应的饱和计数器。
9.根据权利要求8所述的计算机实现的方法,包括:
响应于根据与所述第一块对应的所述块切换度量和与所述第一块对应的所述饱和计数器确定所述第一块没有资格被转移到所述第二池,擦除所述第一块;以及
将所述第一块放置在所述第一RTU队列中。
10.根据权利要求1所述的计算机实现的方法,其中,所述第二池中以每单元多位模式配置的所述块是以四级单元(QLC)模式配置的。
11.根据权利要求1所述的计算机实现的方法,包括:
根据第三块对应的块切换度量判断所述第二池中的第三块是否应转移到所述第一池;
响应于根据所述第三块对应的块切换度量确定所述第二池中的所述第三块应被转移到所述第一池,擦除所述第三块;
将第三块从第二池转移到与第一池相对应的第一RTU队列;
擦除第四块;以及
将第四块从第一池转移到与第二池相对应的第二RTU队列。
12.根据权利要求11所述的计算机实现的方法,其中将所述第三块从所述第二池转移到所述第一RTU队列包括:将所述第三块从每单元多位模式重新配置到SLC模式,其中将所述第四块从所述第一池转移到所述第二RTU队列包括:将所述第四块从SLC模式重新配置到每单元多位模式。
13.一种计算机程序产品,包括计算机可读存储介质,所述计算机可读存储介质具有随其包含的程序指令,所述程序指令可由处理器读取和/或执行以使所述处理器:
由所述处理器维护存储系统中的每个存储块的块切换度量;
所述处理器根据与第一块对应的块切换度量确定第一池中的第一块是否应转移到第二池;
响应于根据与所述第一块对应的所述块切换度量确定所述第一池中的所述第一块应被转移到所述第二池,由所述处理器擦除所述第一块;
由所述处理器将第一块从所述第一池转移到与所述第二池对应的第二准备使用(RTU)队列;
由所述处理器擦除第二块;以及
由所述处理器将第二块从所述第二池转移到与所述第一池对应的第一RTU队列,
其中,所述第一池中的块被配置为单层单元(SLC)模式,
其中,所述第二池中的块是以每单元多位模式配置的。
14.根据权利要求13所述的计算机程序产品,所述程序指令可由所述处理器读取和/或执行以使所述处理器:
响应于根据与所述第一块相对应的所述块切换度量确定所述第一池中的所述第一块不必被转移到所述第二池,由所述处理器根据与所述第一块相对应的所述块切换度量并且根据与切换方向对应的饱和计数器确定所述第一块是否有资格被转移到所述第二池;
响应于根据与所述第一块对应的所述块切换度量和与所述切换方向对应的所述饱和计数器确定所述第一块有资格被转移到所述第二池,由所述处理器擦除所述第一块;
由所述处理器将所述第一块从所述第一池转移至所述第二RTU队列;以及
所述处理器递减与所述切换方向对应的饱和计数器。
15.根据权利要求13所述的计算机程序产品,所述程序指令可由所述处理器读取和/或执行以使所述处理器:
所述处理器根据与第三块对应的块切换度量确定所述第二池中的第三块是否应被转移到所述第一池;
响应于根据与所述第三块对应的块切换度量确定所述第二池中的所述第三块应当被转移到所述第一池,由所述处理器擦除所述第三块;
所述处理器将所述第三块从所述第二池转移到所述第一池对应的第一RTU队列;
由所述处理器擦除第四块;以及
所述处理器将所述第四块从所述第一池转移到所述第二池对应的第二RTU队列。
16.根据权利要求15所述的计算机程序产品,其中将所述第三块从所述第二池转移到所述第一RTU队列包括:将所述第三块从每单元多位模式重新配置到SLC模式,其中将所述第四块从所述第一池转移到所述第二RTU队列包括:将所述第四块从SLC模式重新配置到每单元多位模式。
17.一种系统,包括:
多个非易失性随机存取存储器(NVRAM)块,被配置为存储数据;以及
处理器和与所述处理器集成和/或可由所述处理器执行的逻辑,所述逻辑被配置为:
由所述处理器维护存储系统中的每个存储块的块切换度量;
所述处理器根据与第一块对应的块切换度量判断第一池中的第一块是否应转移到第二池;
响应于根据与所述第一块对应的所述块切换度量确定所述第一池中的所述第一块应被转移到所述第二池,由所述处理器擦除所述第一块;
由所述处理器将第一块从所述第一池转移到与所述第二池对应的第二准备使用(RTU)队列;
由所述处理器擦除第二块;以及
由所述处理器将第二块从所述第二池转移到对应于所述第一池的第一RTU队列,
其中,所述第一池中的所述块被配置为单层单元(SLC)模式,
其中,所述第二池中的所述块是以每单元多位模式配置的。
18.根据权利要求17所述的系统,所述逻辑被配置为:
响应于根据与所述第一块对应的所述块切换度量确定所述第一池中的所述第一块不必被转移到所述第二池,由所述处理器根据与所述第一块对应的所述块切换度量和与切换方向对应的饱和计数器确定所述第一块是否有资格被转移到所述第二池;
响应于根据与所述第一块对应的所述块切换度量和与所述切换方向对应的所述饱和计数器确定所述第一块有资格被转移到所述第二池,由所述处理器擦除所述第一块;
由所述处理器将所述第一块从所述第一池转移至所述第二RTU队列;以及
所述处理器递减与所述切换方向对应的饱和计数器。
19.根据权利要求17所述的系统,所述逻辑被配置为:
所述处理器根据与第三块对应的块切换度量确定所述第二池中的第三块是否应被转移到所述第一池;
响应于根据与所述第三块对应的块切换度量确定所述第二池中的所述第三块应当被转移到所述第一池,由所述处理器擦除所述第三块;
所述处理器将所述第三块从所述第二池转移到与所述第一池对应的第一RTU队列;
由所述处理器擦除第四块;以及
所述处理器将所述第四块从所述第一池转移到所述第二池对应的第二RTU队列。
20.根据权利要求19所述的系统,其中将所述第三块从所述第二池转移到所述第一RTU队列包括:将所述第三块从每单元多位模式重新配置到SLC模式,其中将所述第四块从所述第一池转移到所述第二RTU队列包括:将所述第四块从SLC模式重新配置到每单元多位模式。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/459,408 US11023150B2 (en) | 2019-07-01 | 2019-07-01 | Block mode toggling using hybrid controllers |
US16/459,408 | 2019-07-01 | ||
PCT/IB2020/055914 WO2021001725A1 (en) | 2019-07-01 | 2020-06-23 | Block mode toggling in data storage system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114072774A CN114072774A (zh) | 2022-02-18 |
CN114072774B true CN114072774B (zh) | 2024-07-19 |
Family
ID=74065739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080048886.0A Active CN114072774B (zh) | 2019-07-01 | 2020-06-23 | 数据存储系统中的块模式切换 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11023150B2 (zh) |
JP (1) | JP7448569B2 (zh) |
CN (1) | CN114072774B (zh) |
DE (1) | DE112020002526B4 (zh) |
GB (1) | GB2599061B (zh) |
WO (1) | WO2021001725A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020000136A1 (en) | 2018-06-25 | 2020-01-02 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of i/o requests |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
JP2021033423A (ja) * | 2019-08-19 | 2021-03-01 | ソニーセミコンダクタソリューションズ株式会社 | コントローラ、半導体記憶装置、及び該装置における摩耗平準化処理方法 |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
US11762569B2 (en) * | 2019-10-29 | 2023-09-19 | International Business Machines Corporation | Workload based relief valve activation for hybrid controller architectures |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11422931B2 (en) * | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11907123B2 (en) | 2021-04-20 | 2024-02-20 | International Business Machines Corporation | Flash memory garbage collection |
US20220374216A1 (en) * | 2021-05-20 | 2022-11-24 | Lenovo (United States) Inc. | Method of manufacturing information processing apparatus and mobile computer |
US11797199B2 (en) | 2021-07-06 | 2023-10-24 | International Business Machines Corporation | Balancing utilization of memory pools of physical blocks of differing storage densities |
US20230229498A1 (en) * | 2022-01-18 | 2023-07-20 | Microsoft Technology Licensing, Llc | Systems and methods with integrated memory pooling and direct swap caching |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006244123A (ja) * | 2005-03-03 | 2006-09-14 | Fujitsu Ltd | データストレージシステム及びデータストレージ制御装置 |
CN100501702C (zh) * | 2007-01-17 | 2009-06-17 | 晶天电子(深圳)有限公司 | 一种闪存卡及其缓存、恢复数据的方法 |
US7865658B2 (en) | 2007-12-31 | 2011-01-04 | Sandisk Il Ltd. | Method and system for balancing host write operations and cache flushing |
CN101236530B (zh) * | 2008-01-30 | 2010-09-01 | 清华大学 | 高速缓存替换策略的动态选择方法 |
US9547589B2 (en) | 2008-06-18 | 2017-01-17 | Super Talent Technology, Corp. | Endurance translation layer (ETL) and diversion of temp files for reduced flash wear of a super-endurance solid-state drive |
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 |
US8285946B2 (en) * | 2009-12-15 | 2012-10-09 | International Business Machines Corporation | Reducing access contention in flash-based memory systems |
JP5066241B2 (ja) | 2010-09-24 | 2012-11-07 | 株式会社東芝 | メモリシステム |
KR20120132820A (ko) * | 2011-05-30 | 2012-12-10 | 삼성전자주식회사 | 스토리지 디바이스, 스토리지 시스템 및 스토리지 디바이스의 가상화 방법 |
US9514838B2 (en) * | 2011-05-31 | 2016-12-06 | Micron Technology, Inc. | Apparatus including memory system controllers and related methods for memory management using block tables |
US8806090B2 (en) * | 2011-05-31 | 2014-08-12 | Micron Technology, Inc. | Apparatus including buffer allocation management and related methods |
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 |
CN103488578B (zh) * | 2012-12-28 | 2016-05-25 | 晶天电子(深圳)有限公司 | 虚拟存储设备(vmd)应用/驱动器 |
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 |
US10133490B2 (en) | 2015-10-30 | 2018-11-20 | Sandisk Technologies Llc | System and method for managing extended maintenance scheduling in a non-volatile memory |
US10102119B2 (en) * | 2015-10-30 | 2018-10-16 | Sandisk Technologies Llc | Garbage collection based on queued and/or selected write commands |
US10545685B2 (en) | 2017-08-30 | 2020-01-28 | Micron Technology, Inc. | SLC cache management |
JP7030463B2 (ja) | 2017-09-22 | 2022-03-07 | キオクシア株式会社 | メモリシステム |
CN109725831B (zh) * | 2017-10-27 | 2022-06-10 | 伊姆西Ip控股有限责任公司 | 管理存储系统的方法、系统和计算机可读介质 |
JP6968016B2 (ja) | 2018-03-22 | 2021-11-17 | キオクシア株式会社 | ストレージデバイスおよびコンピュータシステム |
-
2019
- 2019-07-01 US US16/459,408 patent/US11023150B2/en active Active
-
2020
- 2020-06-23 GB GB2200312.3A patent/GB2599061B/en active Active
- 2020-06-23 WO PCT/IB2020/055914 patent/WO2021001725A1/en active Application Filing
- 2020-06-23 CN CN202080048886.0A patent/CN114072774B/zh active Active
- 2020-06-23 DE DE112020002526.8T patent/DE112020002526B4/de active Active
- 2020-06-23 JP JP2021577034A patent/JP7448569B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
GB2599061B (en) | 2022-07-27 |
WO2021001725A1 (en) | 2021-01-07 |
JP2022538587A (ja) | 2022-09-05 |
JP7448569B2 (ja) | 2024-03-12 |
US20210004159A1 (en) | 2021-01-07 |
GB2599061A (en) | 2022-03-23 |
CN114072774A (zh) | 2022-02-18 |
DE112020002526B4 (de) | 2023-11-02 |
DE112020002526T5 (de) | 2022-04-21 |
US11023150B2 (en) | 2021-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114072774B (zh) | 数据存储系统中的块模式切换 | |
US11138124B2 (en) | Migrating data between block pools in a storage system | |
CN112447245B (zh) | 非易失性随机存取存储器中的混合读取电压校准 | |
US11762569B2 (en) | Workload based relief valve activation for hybrid controller architectures | |
US11157379B2 (en) | Managing blocks of memory based on block health using hybrid controllers | |
CN114127677B (zh) | 用于写高速缓存架构中的数据放置的方法和系统 | |
JP7486534B2 (ja) | ストレージ・システムにおけるブロック・プール・サイズの適合 | |
US10613784B2 (en) | Adaptive assignment of open logical erase blocks to data streams | |
US11086565B2 (en) | Reducing effects of read array operations of read apparent voltage | |
CN113924546A (zh) | 非易失性存储器中的磨损感知块模式转换 | |
CN114556303A (zh) | 更新非易失性随机存取存储器中的校正读取电压偏移 | |
US11797448B2 (en) | Using multi-tiered cache to satisfy input/output requests | |
US11126360B2 (en) | Dynamically adjusting block mode pool sizes | |
CN112346658B (zh) | 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率 | |
US11119855B2 (en) | Selectively storing parity data in different types of memory |
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 |