CN114127677B - 用于写高速缓存架构中的数据放置的方法和系统 - Google Patents

用于写高速缓存架构中的数据放置的方法和系统 Download PDF

Info

Publication number
CN114127677B
CN114127677B CN202080049872.0A CN202080049872A CN114127677B CN 114127677 B CN114127677 B CN 114127677B CN 202080049872 A CN202080049872 A CN 202080049872A CN 114127677 B CN114127677 B CN 114127677B
Authority
CN
China
Prior art keywords
write
data
page
write request
processor
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
Application number
CN202080049872.0A
Other languages
English (en)
Other versions
CN114127677A (zh
Inventor
R·A·普莱特卡
T·费希尔
A·D·弗莱
N·帕潘德罗
N·伊安努
S·托米克
R·I·斯托伊卡
C·波兹蒂斯
A·瓦尔斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN114127677A publication Critical patent/CN114127677A/zh
Application granted granted Critical
Publication of CN114127677B publication Critical patent/CN114127677B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple 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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

按照一种方案的计算机实现的方法包括:接收写入请求,在转储缓冲区中累积写入请求,以及确定对应于写入请求的每个逻辑页的当前读热值。基于对应于写入请求的每个逻辑页的当前读热值,将写入请求中的每个分配给相应写入队列。此外,写入队列的每个对应于包括物理页的不同页条,写入队列的每个对应于包括物理页的不同页条。此外,将写入请求中的数据从写入队列转储到它们的相应页条。在另外的方案中描述了其他系统、方法和计算机程序产品。

Description

用于写高速缓存架构中的数据放置的方法和系统
技术领域
本发明涉及数据存储系统,更具体来说,本发明涉及支持读热数据分离的写高速缓存架构中的选择性数据放置。
背景技术
使用闪存作为示例,传统的基于NAND闪存的固态驱动器(SSD)的性能特性根本上不同于传统的硬盘驱动器(HDD)的性能特性。常规SSD中的数据通常以4、8或16KB大小的页来组织。此外,SSD中的页读取操作通常比写入操作快一个数量级,并且延迟既不取决于操作的当前位置也不取决于操作的先前位置。
然而,在基于闪存的SSD中,存储器位置在被写入之前被成块地擦除。擦除块单元的大小为从256到512页,甚至数千页,并且擦除操作比页编程操花费的时间大约多一个数量级。由于NAND闪存的固有属性,基于闪存的SSD异地写入数据,由此映射表将写入数据的逻辑地址映射到物理地址。该映射表通常被称为逻辑到物理表(LPT)。
由于基于闪存的存储单元由于磨损或其他原因而表现出读取错误和/或故障,可以在存储器页内以及跨存储芯片使用附加冗余(例如,RAID-5和RAID-6类方案)。存储器页内的附加冗余可以包括纠错码(ECC),ECC例如可以包括BCH、LDPC或其他码。虽然ECC在页中的添加相对简单,但是将存储器块组织成类似RAID条带更复杂。例如,个别块随时间而退出,其需要条带的重新组织或条带的容量减少。由于条带的组织与LPT一起定义数据的放置,SSD通常利用综合了这两种方法的日志结构化阵列(LSA)架构。
随着诸如NAND闪存的存储器持续进步,读取延迟特性持续增加。每单元存储的位数增加时尤其如此,这是因为,读取延迟随着在读取页时必须施加的读取阈值电压的数目成比例地增加。因此,一些常规NAND闪存架构取决于页类型而表现出显著的延迟差异。
这一趋势使以低延迟为目标的大型存储系统面临重大挑战。例如,具有较低延迟的现有NAND闪存代最终将被能够存储更多数据但延迟特性也较差的新一代所取代。用于管理存储在这种存储器上的数据的传统控制器也面临类似的挑战。
发明内容
根据本发明的一个方面,一种计算机实现的方法包括:接收写入请求,在转储缓冲区中累积写入请求,以及确定对应于写入请求的每个逻辑页的当前读热值。基于对应于写入请求的每个逻辑页的当前读热值,将写入请求中的每个分配给相应的写入队列。此外,写入队列的每个对应于包括物理页的不同页条,在相应页条的每个中包括的物理页是相同类型的。此外,将写入请求中的数据从写入队列转储到它们相应的页条。
不同类型的物理页由于它们各自的物理构造和从它们中的每一个实际读取数据所涉及的不同结果过程而经历不同量的读取延迟。因而,通过建立写入队列中的每个与打开的页条中的相应页条之间的关系,系统能够通过利用被识别为存在于读取延迟与读热之间的关系来提高操作效率。换言之,可以用与给定页面类型的页面相关联的读取延迟,来基于对应的读热选择向其分配的写入队列。在这样做时,本文所包括的方案能够理想地减少系统整体经历的处理延迟的总量。
关于将数据从写入队列转储到它们的相应页条的过程,在一些方案中,该计算机实现的方法还包括:确定给定写入队列是否在相应写入请求中包括足以填充与其对应的下一页条的数据。响应于确定给定写入队列在相应写入请求中不包括足以填充与其对应的下一页条的数据,确定相邻写入队列是否在相应写入请求中包括足以完成填充与给定写入队列对应的下一页条的数据。响应于确定相邻写入队列在相应写入请求中包括足以完成填充与给定写入队列对应的下一页条的数据,将写入请求中的数据从给定写入队列和相邻写入队列转储到对应于给定写入队列的下一页条。
尽管优选的是将写入请求从其相应写入队列转储至与其对应的分页条,但在某些情况下可以不同地利用写入请求。例如,不是部分填充给定页条,而是用来自相邻写入队列的写入请求来补充填充给定页条的过程。这确保了存储器的有效使用,同时还保持了在存储器中可接受的数据放置。
更进一步,在一些方案中,该计算机实现的方法包括:接收对应于在一个或多个逻辑页中存储的数据的读取请求,以及递增与所述一个或多个逻辑页的每个相关联的读热值。读取请求也被满足。
本文所包含的方案中的各种方案能够实现支持读热数据分离的写高速缓存架构中的选择性数据放置。结果,显著减少了各种类型和各世代的存储器的读取延迟。这些方案能够利用每单元多位存储器(例如,诸如TLC和QLC NAND闪存)中的不同类型的物理页的不同延迟属性来显著地减少由总体数据存储系统整体经历的读取延迟。在一些方案中,通过跟踪在存储器中存储的数据的读热并且根据读热选择性地组织存储器中的数据来实现这些改进,例如如下文将进一步详细描述的那样。
根据本发明的另一个方面,一种计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有随其体现的程序指令。程序指令可由处理器读取和/或执行,以使处理器执行前述方法。
根据又一方面,一种系统包括:被配置用于存储数据的多个非易失性随机存取存储器(NVRAM)块。该系统还包括处理器和与处理器集成和/或可由处理器执行的逻辑。此外,该逻辑被配置用于执行上述方法。
根据本发明的另一方面,一种计算机实现的方法包括:接收写入请求,在转储缓冲区中累积写入请求,以及确定写入请求中的每个是否是主机写入请求。响应于确定写入请求不是主机写入请求,确定与写入请求相对应的每个逻辑页的当前读热值。也基于与写入请求相对应的每个逻辑页的当前读热值,将写入请求分配给写入队列。写入队列的每个对应于包括物理页的不同页条,相应页条中的每个包括的物理页为相同类型。然而,响应于确定写入请求是主机写入请求,将写入请求分配给补充写入队列。
再次,不同类型的物理页由于它们各自的物理构造和从它们中的每一个实际读取数据所涉及的不同结果过程而经历不同量的读取延迟。因而,通过建立写入队列中的每个与打开的页条中的相应页条之间的关系,系统能够通过利用被识别为存在于读取延迟与读热之间的关系来提高操作效率。换言之,可以用与给定页面类型的页面相关联的读取延迟,来基于对应的读热选择向其分配的写入队列。在这样做时,本文所包括的方案能够理想地减少系统整体经历的处理延迟的总量。
所述计算机实现的方法还包括:将所述主机写入请求中的数据从补充写入队列转储至包括在单级单元(SLC)存储器中实现的物理页的页条中的物理页。在一些方案中,用主机写入请求中包括的数据来填充其他写入队列可能尚无法达到的任何间隙。再次,尽管优选的是将写入请求从其相应写入队列转储到与其对应的分页条,但在某些情况下可以不同地利用写入请求。这确保了存储器的有效使用,同时还保持了在存储器中可接受的数据放置。因此,例如不是响应于确定队列已被充分填充,而是可以根据需要将主机写入请求中的数据从补充写入队列转储。
根据另一方面,一种计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有随其体现的程序指令。程序指令可由处理器读取和/或执行,以使处理器执行上述方法。
通过以下详细描述,本发明的其他方面和实施例将变得显而易见,所述详细描述结合附图以举例方式说明本发明的原理。
附图说明
图1是按照一种方案的非易失性存储器卡的图。
图2是按照一种方案的数据存储系统架构的示图。
图3是按照一种方案的系统图。
图4是按照一种方案的包括块条和页条的概念图。
图5A是按照一种方案的数据存储系统的局部示意图。
图5B是按照一种方案的方法的流程图。
图5C是按照一种方案的方法的流程图。
图6A是按照一种方案的数据存储系统的局部示意图。
图6B是按照一种方案的方法的流程图。
图7A是按照一种方案的数据存储系统的局部示意图。
图7B是按照一种方案的方法的流程图。
图8是按照一种方案的网络架构。
图9是按照一种方案的可与图8的服务器和/或客户端相关联的代表性硬件环境。
图10是按照一种方案的分层数据存储系统。
具体实施方式
以下描述是为了说明本发明的一般原理而进行的,并不意味着限制在此要求保护的发明概念。进一步,本文中所描述的特定特征可以与各种可能的组合和置换中的每一个中的其他所描述的特征组合使用。
除非本文中另外特别限定,否则所有术语将被给予它们的最宽泛的可能解释,包括说明书中暗示的含义以及本领域技术人员所理解的含义和/或如在词典、论文等中限定的含义。
还必须注意的是,如在说明书和所附权利要求中使用的,单数形式“一个”、“一种”和“该”包括复数指示物,除非另外说明。还应当理解,当在本说明书中使用术语“包括”和/或“包含”时,其指定所述特征、整体、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整体、步骤、操作、元件、组件和/或其组合的存在或添加。
以下描述公开了数据存储系统及其操作和/或组成部分的若干优选方法。应当理解,本文中的不同方法可以用各种各样的存储介质来实现,包括例如NVRAM技术,诸如NAND闪存、NOR闪存、相变存储器(PCM)、磁阻RAM(MRAM)和电阻RAM(RRAM)。为了提供上下文并且仅为了帮助读者,可能参考某种非易失性存储器来描述各种方式。这仅是通过举例的方式完成的,不应当视为是对在权利要求中限定的本发明的限制。
在一个一般性方案中,一种计算机实现的方法包括:接收写入请求,在转储缓冲区中累积写入请求,以及确定与写入请求相对应的每个逻辑页的当前读热值。基于与写入请求相对应的每个逻辑页的当前读热值,将写入请求中的每个分配给相应的写入队列。此外,写入队列的每个对应于包括物理页的不同页条,在相应页条的每个中包括的物理页是相同类型的。此外,将写入请求中的数据从写入队列转储到它们的相应的页条。
在另一个一般性方案中,一种计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有随其体现的程序指令。程序指令可由处理器读取和/或执行,以使处理器执行上述方法。
在又一个一般性方案中,一种系统包括:被配置用于存储数据的多个非易失性随机存取存储器(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包括被配置为经由I/O互连204与一个或多个处理器系统201通信的多个接口卡202。数据存储系统220还可以包括被配置为控制多个非易失性数据存储器卡208中的数据存储的一个或多个RAID控制器206。非易失性数据存储器卡208可包括NVRAM、闪存卡、RAM、ROM和/或一些其他已知类型的非易失性存储器。
I/O互连204可以包括任何已知的通信协议,诸如光纤通道(FC)、以太网上的FC(FCoE)、Infiniband、互联网小型计算机系统接口(iSCSI)、传输控制协议/英特网协议(TCP/IP)、高速外围组件互连(PCIe)等和/或其任何组合。
数据存储系统220中的RAID控制器206可以执行与由RAID-5、RAID-6、RAID-10所采用的类似的奇偶校验方案或一些其他合适的奇偶校验方案,如本领域技术人员在阅读本说明书时将理解的那样。
每个处理器系统201包括一个或多个处理器210(诸如CPU、微处理器等)、本地数据存储器211(例如,诸如图9的RAM 914、图9的ROM 916等)、以及被配置用于与数据存储系统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)和/或GPP 112可以在内部执行垃圾收集。如前所述,垃圾收集可以包括选择要重定位的LEB,在此之后,可以对在所选择的LEB上仍然有效的所有数据进行重定位(例如,移动)。在重新定位仍然有效的数据之后,LEB可以被擦除,然后被用于存储新数据。从垃圾收集的LEB重定位的数据量确定了写放大。此外,减少写放大的有效方式包括实现写热隔离。
写热隔离
在本上下文中,数据的“写热”是指数据被更新(例如,被用新数据重写)的速率(例如频率)。被视为“热”的存储器块往往具有频繁的更新速率,而被视为“冷”的存储器块的更新速率低于热块。
跟踪逻辑页的写热可涉及例如在该页的LPT映射条目中分配特定数量的位,以跟踪该页在某个时间段或窗口看到了多少写入请求。通常,主机写入请求增加写热,而内部重定位写入则减少写热。写热的实际增量和/或减小可为确定性的或概率性的。
类似地,可以利用每个逻辑页的LPT中的特定数量的附加位来跟踪读热。为了减少元数据,还可以在物理块级跟踪读热,其中,可以维护用于跨接和非跨接读取的每个块的单独计数器,例如如以下关于图5A-7B进一步详细描述的那样。然而,应当注意,对于某些方案来说,在确定存储块的写热时,对存储块的读取请求和/或对存储块执行的读取操作的数目可能不会对写热隔离起作用。例如,如果频繁地从特定存储块读取数据,那么高读取频率不一定意味着存储块也将具有高更新率。相反,对给定存储器块执行的高频读取操作可能表示存储在存储器块中的数据的重要性、价值等。
通过对具有相同和/或相似写热值的存储器块进行分组,可以实现写热隔离。具体地,写热隔离方法可以将热存储器页一起分组在某些存储块中,而将冷存储器页一起分组在单独的存储块中。因此,写热隔离的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移交的非易失性存储器块和/或完成对由垃圾收集器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)。
如前所述,随着诸如NAND闪存的存储器持续进步,读取延迟特性持续增加。每单元存储的位数增加时尤其如此,这是因为,读取延迟与读取页时必须施加的读取阈值电压的数目成比例地增加。因此,一些常规NAND闪存架构取决于页类型而表现出显著的延迟差异。例如,二维(2D)多级单元(MLC)存储器的平均读取延迟在50至100微秒(μs)范围内,而三维(3D)三级单元(TLC)存储器的平均读取延迟比MLC存储器的增加约1.4倍。此外,3D四级单元(QLC)存储器的平均读取延迟比MLC存储器的增加约2.5倍。
因此,作为此趋势的结果,以低延迟为目标的较大存储系统经历了重大挑战。例如,具有较低延迟的现有NAND闪存世代最终将被可以存储更多数据但也具有较差延迟特性的较新世代取代。用于管理存储在这种存储器上的数据的传统控制器也面临类似的挑战。
与这些传统缺点形成鲜明对比的是,本文所包含的方案中的各种方案能够实现支持读热数据分离的写高速缓存架构中的选择性数据放置。因此,对于不同类型和世代的存储器,读取延迟显著减少。这些改进至少部分地由于识别出现实世界的工作负载通常是有偏斜的。换句话说,虽然存储在存储器中的一部分数据被相对频繁地读取,但是其他部分的数据很少被读取。写操作也以类似的方式偏斜。进一步,频繁更新的数据部分通常不与频繁读取的数据部分重叠。换言之,很大一部分数据被写入存储器一次并且随后经常被读取,而其他部分的数据经常被重写但很少被读取,例如,诸如日志。
因此,本文所包含的方案中的各种方案能够利用每单元多位存储器(例如,诸如TLC和QLC NAND闪存)中的不同类型的物理页的不同延迟属性,以显著地减少由总体数据存储系统经历的读取延迟。在一些方案中通过跟踪在存储器中存储的数据的读热并且根据读热选择性地组织存储器中的数据来实现这些改进,例如,如下文将进一步详细描述的那样。
读取延迟的这些改进可以通过支持读热分离的多个不同存储器配置和/或控制器架构来实现。例如,本文描述的方案中的一些方案在管理仅以每单元多位模式配置的存储器的控制器架构中实现。本文所提出的方案中的又一些方案在管理以SLC模式配置的存储器以及以每单元多位模式配置的存储器的混合控制器架构中实现。在一些方案中,这两种存储器配置也在同一存储设备中实现。
根据一个这样的、绝非意在限制本发明的方案,图5A描述了实施管理仅以每单元多位模式配置的存储器的控制器架构的数据存储系统500。作为选项,本数据存储系统500可以结合本文列举的任何其他方案(诸如参考其他附图(诸如图1-4)描述的那些方案)中的特征来实现。然而,这样的数据存储系统500和本文提出的其他数据存储系统,可以用于各种应用和/或可能在也可能不在本文所列举的示例性方案中具体描述的置换。进一步,本文提出的数据存储系统500可以在任何期望的环境中使用。因此,图5A(和其他图)可被视为包括任何可能的置换。
如图所示,数据存储系统500包括耦合到读热计数器模块504以及转储缓冲区506的读热隔离单元502。读热隔离单元502还耦合到在存储器模块516中包括的多个写入队列508、510、512、514。此外,已经在写入队列508、510、512、514中累积的写入请求中的每一个对应于转储缓冲区506中的条目位置中的带阴影的条目位置。
数据存储系统500中的上述组件被描述为在根据本方案的控制器518中实现。然而,这绝非是要限制本发明。例如,在其他方案中,控制器可简单地耦合到读热隔离单元502、读热计数器模块504、转储缓冲区506和/或存储器模块516,例如使得命令、请求、指令等可在它们之间传递。
随着时间的过去,读热隔离单元502从一个或多个主机、运行的应用程序、其他存储系统等接收写入请求。这些写入请求通常是新的写入请求(本文中也称为“主机写入请求”)或重定位写入请求。新写入请求涉及将新数据首次写入存储器,而重定位写入请求则涉及重写已存储在存储器中的数据。这些写入请求被读热隔离单元502接收并筛选,优选地使得可以基于已经接收到什么类型的写入请求而采取适当的动作(例如,参见下文图5B的方法550)。
继续参照图5A,每个写入队列508、510、512、514被示出为对应于由物理存储器532中的示例性页条520、522、524、526组成的相应的打开的块条528。这些打开的页条520、522、524、526中的每个跨非易失性存储器(例如,诸如NAND闪存)的多个块530延伸,并且页条520、522、524、526内的页是相同的页类型。按照绝非意在限制本发明的示例,存储器532是3D QLC存储器,由于其中的存储器单元的物理构造,其包括四种不同类型的页。这些页类型包括下部页、上部页、额外页和顶部页,每种页具有不同的性能特性。块内的页类型及其相应的序列布置与非易失性存储器(例如,NAND闪存)设备结构有关,该结构可能因设备世代和制造商而异。但是块内具有相同页索引的页通常具有相同类型。例如,不同类型的物理页由于它们各自的物理构造和从它们中的每一个实际读取数据所涉及的不同结果过程而经历不同量的读取延迟,例如如本领域技术人员在阅读本说明书之后将理解的那样。然而,按照另一示例,存储器532是3D TLC存储器,由于其中的存储器单元的物理构造,其包括三种不同类型的页。
通过建立写入队列508、510、512、514中的每一个与打开的页条520、522、524、526中的相应一个之间的关系,系统500能够通过利用识别为存在于读取延迟与读热之间的关系来改进操作效率。换言之,与给定页类型的页相关联的读取延迟可以用于基于对应的读热选择向其分配的写入队列。在这样做时,本文所包括的方案能够理想地减少系统500整体所经历的处理延迟的总量。因此,通常所实现的读热相关写入队列的数量优选地与NAND闪存块中存在的页类型的数量相匹配。
按照绝非是要限制本发明的示例,打开的页条520跨多个块530延伸,其中,在打开的页条520中包括的所有页是QLC存储器中的下部页。因为下部页的特征在于与QLC存储器中存在的其他类型的页相比,具有最低平均读取延迟,所以优选地将打开的页条520分配给指定用于涉及具有较高(例如,较热)读热的数据写入请求的写入队列。因此,在打开的页条520中写入的数据可能会经历大量的读取操作,但对应于在其上存储数据的页的类型的较低平均读取延迟将抵消该大量的读取操作。
在同样绝非是要限制本发明的另一实例中,打开的页条524跨多个块延伸,其中在打开的页条524中包括的所有页是QLC存储器中的额外页。因为额外页的特征在于与QLC存储器中存在的其他类型的页相比具有第二高的平均读取延迟,所以优选地将打开的页条524分配给指定用于涉及具有第二低(例如,第二冷)读热的数据的写入请求的写入队列。因此,在打开的页条524中写入的数据可能会经历相对较少数量的读取操作,这将抵消在这样的页上实际进行读取操作所涉及的相对更高的读取延迟。
由此可见,本文所包括的方案中的各种方案能够减少所经历的读取延迟的总量。同样,这是通过(至少部分地)将存储器中物理页的选择的类型与具有与其相关联的选择读热的数据相关联来实现的。结果,这允许系统通过将具有较低读热的数据存储在存储器中来补偿具有较高读取延迟的存储器中的物理页,以及通过将具有较高读热的数据存储在存储器中来利用具有较低读取延迟的存储器中的物理页。
此外,现在参见图5B,按照一种方案示出了根据前述数据存储方案的用于在存储器中存储数据的方法550的流程图。应注意,已经关于图5A的数据存储系统500中介绍的控制器架构描述了方法550中包括的过程。换言之,例如很快将变得明显的是,方法550中包括的各种过程可由图5A中的控制器518响应于接收写入请求来执行。然而,在其它方案中,方法550可以在包括图1-4中所示的任何环境中根据本发明来执行。当然,如本领域技术人员在阅读本说明书时将理解的那样,方法550中可以包括比图5B中具体描述的操作更多或更少的操作。
方法550的每个步骤可由操作环境的任何合适的组件执行。例如,在各种方案中,方法550可以部分地或全部地由控制器、处理器、计算机等或其中具有一个或多个处理器的一些其他设备来执行。因此,在一些方案中,方法550可以是计算机实施的方法。在此类方法中,用于实现该方法的计算机可包括非易失性存储器卡本身或其一部分,诸如控制器、非易失性存储器、外部主机、服务器等。此外,术语“计算机”、“处理器”和“控制器”可以关于本文中的任何方案互换地使用,这样的组件在本发明的许多不同的置换中被认为是等效的。
此外,对于那些具有处理器的方案来说,可以在任何设备中用处理器(例如以硬件和/或软件实现的处理电路、芯片和/或模块、并且最好是具有至少一个硬件组件)来执行方法550的一个或多个步骤。示例性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合、或本领域已知的任何其他合适的计算设备。
如图5B所示,方法550的操作552包括接收写入请求。在一些方案中,新的写入请求和重定位写入请求由读热隔离单元(例如,参见图5A的502)接收。此外,取决于方案,写入请求可通过网络从一个或多个主机、运行应用程序、其他数据存储系统等接收。此外,接收的写入请求通常是新的写入请求(本文中也称为“主机写入请求”)或内部重定位写入请求。如上所述,新写入请求涉及将新数据首次写入存储器,而重定位写入请求涉及重写已存储在存储器中的数据。
根据图5A的数据存储系统的上下文中的示例,重定位写入请求涉及将存储在QLC存储器532的一个或多个物理页中的数据重定位到QLC存储器532的一个或多个不同物理页。然而,在另一示例中重定位写入请求涉及将存储在SLC存储器的一个或多个物理页中的数据重新定位到SLC存储器的一个或多个不同物理页(例如,参见下面的方法750),或者在另一示例中在SLC存储器的一个或多个物理页与QLC存储器的一个或多个物理页之间重定位数据(例如,参见下面的方法750)。
返回参考方法550,流程图进行到操作554,其包括在转储缓冲区中积累接收的写入请求。取决于方案,转储缓冲区可使用MRAM、电池供电的DRAM等或任何其他所需类型的存储器来实现。此外,在操作556中确认每个写入请求。取决于方案,可通过将消息返回到写入请求的源、指示写入请求已被添加到转储缓冲区、更新LPT等来确认写入请求。
操作558还包括确定对应于由写入请求引用的数据的每个逻辑页的当前读热值。换言之,每个写入请求包括和/或对应于数据的特定部分。在涉及重定位写入请求的方案中,写入请求中指定的数据对应于已存储在存储器中的数据。此外,写入请求中指定的数据在其中存储的逻辑页具有与其相关联的读热(例如,参见图5A中的读热计数器模块504)。因此,操作558包括确定与写入请求中指定的数据相关联的当前读热值。
继续参考图5B的方法550,操作560包括基于对应于写入请求的每个逻辑页的当前读热值将写入请求的每个分配给相应的写入队列。如上所述,每个写入队列对应于包括物理页的不同页面类型,并且每个相应页条中包括的物理页是相同的类型。因此,每个写入队列与存储器中的相应类型的物理页配对。优选地基于读热与读取延迟之间的关系来建立这种相关性。同样,与给定页条中的物理页的类型相关联的读取延迟可以用于基于对应的读热来选择向其分配的写入队列。这样做时,本文所包括的一些方案能够通过在其中存储具有较低读热的数据来补偿具有较高读取延迟的存储器中的物理页,以及通过在其中存储具有较高读热的数据来利用具有较低读取延迟的存储器中的物理页。因此,这些方案整体上能够理想地减少所经历的处理延迟的总量。
此外,判定562包括确定写入队列中的任何写入队列是否包括足够数量的写入请求以填充与其对应的存储器中的相应页条。在向存储器进行写入时,期望填充整个页条以便有效地利用存储容量。然而,填充给定页条的过程可因具体方案而异。在一些方案中,判定562可涉及确定写入队列中的任一个是否包含足够数目的写入请求,使得其中包含的数据能够填充存储器中预定量的对应页条。
例如,判定562可涉及确定写入队列中的任何写入队列是否包括足够数量的写入请求,使得其中包括的数据在存储器中的对应页条中存储时将利用其中的存储容量的95%。虽然最好是每个页条在被写入时被完全填充,但是可以用来自一个或多个其他写入队列的写入请求来填充给定页条的剩余部分。按照以上的示例,存储器中的对应页条的剩余5%可由在相邻写入队列中累积的写入请求来填充,从而增加利用存储容量的效率。
因此,在判定562中做出的特定确定可因具体方案而异。例如,写入队列508、510、512、514可以不同的比率填充。然而,在块中,页应该以特定顺序被编程而不跳过任何页,以便实现高效的性能和可靠性。此外,对于给定的打开的块条,每个页类型的页数由存储器设备的物理架构预先确定。因而,不是等待新的写入请求在给定写入队列中累积,而是可以使用其它转储数据的选项。例如,操作560可包括将写入请求置于次优写入队列中以更好地平衡写入请求队列。
在另一个示例中,操作564可以包括在直接关联的写队列中剩余的写请求数量不足时,重新调整来自相邻写队列的写请求的用途。按照一些方案,响应于确定给定写入队列在相应写入请求中没有包括足以填充与其对应的下一页条的数据,确定相邻写入队列在相应写入请求中是否包括足以完成填充与给定写入队列对应的下一页条的数据。此外,响应于确定相邻写入队列在相应写入请求中包括足以完成填充与给定写入队列对应的下一页条的数据,将写入请求中的数据从给定写入队列以及相邻写入队列转储到对应于给定写入队列的下一页条。
仍然参考图5B,响应于确定写入队列在写入请求中没有包括足以填充存储器中的下一页条的数据量,方法550返回到操作552,使得可以如本文所述地接收和处理额外的写入请求。然而,响应于确定写入队列在写入请求中包括足以填充存储器中的下一页条的数据量,方法550前进到操作564,其包括将来自写入队列的写入请求中的数据转储到相应页条。
暂时返回参考图5A,在一些方案中,对于给定的打开的块条528,每个页类型的页数由非易失性存储器设备的物理架构给出。因此,有可能在某个时刻,写入队列508、510、512、514之一中的剩余写入请求的数量不足以写与其相关联的下一页条,但总体而言,有足够数量的写入请求来写单个页条。在这种情况下,当没有写入请求留在直接相关联的写入队列中时,图5B的操作564可以从相邻的写入队列或任何其他写入队列获取写入请求以填充相应的页条。为了进一步降低经历这种情况的风险,操作560甚至可以次优地放置写入请求以更好地平衡队列水平(例如,在当前写入队列超过阈值时,通过将写入请求放置在相邻的写入队列或任何其他写入队列中)。还应注意,将来自写入队列的写入请求中的数据进行转储的过程涉及实际执行写入操作。换言之,例如如本领域技术人员在阅读本说明书之后将理解的那样,将来自写入队列的写入请求中的数据进行转储的动作涉及(或至少触发)将数据实际写入存储器中的物理页。
方法550还从操作564返回到操作552,使得可以如本文所述地接收和处理额外的写入请求。自然,可能会在成功地执行当前的转储操作之前接收到执行写入请求的后续请求,这些请求最好是例如按照方法550进行接收和处理。
类似地,可以例如在写入请求正被处理和/或写入操作本身正被执行的同时的任何时间接收读取操作请求。图5C示出了按照一种方案的用于评估已接收的读取请求的方法570。应当注意,已经关于图5A的数据存储系统500中介绍的控制器架构对方法750进行了描述。换言之,例如很快将变得明显的是,方法750中包括的各种过程可由图5A中的控制器518响应于接收写入请求来执行。然而,在各种方案中,方法750可以在包括图1-4中所示的任何环境中根据本发明来执行。当然,如本领域技术人员在阅读本说明书时将理解的那样,方法750中可以包括比图5C中具体描述的操作更多或更少的操作。
方法570的每个步骤可由操作环境的任何合适的组件执行。例如,在各种方案中,方法570可以部分地或全部地由控制器、处理器等或其中具有一个或多个处理器的一些其他设备来执行。处理器(例如,以硬件和/或软件实现并且优选地具有至少一个硬件组件的处理电路、芯片、和/或模块)可以在任何设备中用于执行方法570的一个或多个步骤。说明性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合、或本领域已知的任何其他合适的计算设备。
如图5C所示,方法570的操作572包括接收对应于在一个或多个逻辑页中存储的数据的读取请求。取决于方案,可以从主机(例如,用户)、运行的应用、另一存储系统等接收读取请求。此外,操作574包括递增与对应于所接收的读取请求的一个或多个逻辑页中的每个相关联的读热值。如上所述,每个逻辑页优选地具有与其对应的读热值。暂时返回参考图5A,读热计数器模块504在一些方案中负责维护存储器中的每个逻辑页的当前读热值。在替代方案中,计数器模块504可以为连续范围的逻辑页维护单个计数器。
取决于方案,可在逻辑层级和/或物理层级管理读热值。例如,LPT可以包括其中指示的每个逻辑页的一个或多个位,其中所述位维护相应逻辑页的当前读热值。按照绝非意在限制本发明的示例,为每个逻辑块地址实施一个2位计数器。响应于接收到对应于存储在其中的数据的读取请求,2位计数器中的每个从值0递增到值1。此外,2位计数器中的每个还根据预定概率从值1递增到值2。例如,给定的2位计数器具有1/10(10%)的概率会响应于接收与存储在其中的数据相对应的读取请求而从值1增加到值2。类似地,2位计数器中的每个根据另一预定概率从值2递增到值3。例如,给定的2位计数器具有1/100(1%)的概率会响应于接收与存储在其中的数据相对应的读取请求而从值2增加到值3。因此,每个2位计数器能够维护与其对应的数据的准确读热,而不显著增加由系统存储的元数据的量。
还可以得出,在一些方案中,读热计数器模块504可以访问LPT,以便基于在与其对应的物理页中实际包括的数据来维护逻辑页的读热值。在一些方案中甚至可以聚合一系列相邻的逻辑块地址以增加计数器分辨率。然而,应注意,在这种情况下,每个计数器的值不应在经历相应页的重写时被重置。相反,计数器值可以在后台中周期性地进行递减,例如根据预定的计数器管理方案进行递减。在确定在执行主机写入请求之后是否应重置读热值时还可考虑其他因素。这些额外因素包括但决不限于:检测到的工作负荷优先级、存储系统架构(例如,知道实现了日志结构化阵列)、定期老化所读取的热信息是否是可行的选项等。
关于实现在物理层级管理的读热值的方案,可以以许多不同的方式来应用计数器。例如,可为物理存储器中的每一页类型和块维护高分辨率计数器。换言之,为每个QLC存储块实现4个计数器。在其他情况下,为每个页类型、层和块维护一个高分辨率计数器。在另一些情况下,可以为每个块的每个细粒度页组实现一个低分辨率计数器。由此可见,由在物理层级的计数器管理的读热值可以被用来改进对数据错位的检测。可以在操作560处利用数据错位的检测,其中,写入请求被分配给写入队列或者被垃圾收集器(例如,参见图3的304)用于新定位这种错位的数据。
在又一些方案中,用于维护当前读热值的任何计数器可以是任何期望类型的饱和计数器。例如如本领域技术人员在阅读本说明书之后将理解的那样,读热计数器还可用于过滤顺序扫描(例如,诸如内部缓解读取操作、阵列级清理等)和/或校准读取。通过过滤顺序扫描和/或校准读取,读热计数器能够避免读取计数器值意外增加。更进一步,在一些方案中,计数器可在逻辑和物理页层级两者上实现,并且甚至可例如根据需要进行组合。
再次参考图5C,方法570还包括响应于最初接收的读取请求而通过读取数据并提供数据来满足读取请求。例如,可能已经从主机接收到初始读取请求,由此将从存储器读取的数据提供(例如,发送)到发出读取请求的主机。
因此,方法550和570中包括的各种过程能够利用每单元多位存储器(例如,MLC、TLC和QLC NAND闪存)中的不同类型的物理页的不同延迟属性,以显著地减少由总体数据存储系统经历的读取延迟。在一些方案中通过跟踪在存储器中存储的数据的读热并根据读热(例如,根据以上方案中的任一个)选择性地组织存储器中的数据来实现这些改进。
现在参见图6A,按照一种方案描述了实现与上述图5A中示出的控制器架构类似的控制器架构的数据存储系统600。具体地,图6A例示了图5A的方案的变体,示出了数据存储系统600内的若干示例性配置。因此,图6A的各种组件与图5A的组件具有相同的编号。
作为选项,本数据存储系统600可以结合本文列举的任何其他方案(诸如参考其他图(诸如图1-5A)描述的那些方案)的特征来实现。然而,这种数据存储系统600和本文所提出的其他数据存储系统可以用于各种应用和/或用于可能在也可能不在本文列举的示例性方案中具体描述的置换。进一步,本文提出的数据存储系统600可以在任何期望的环境中使用。因此,图6A(和其他图)可被认为包括任何可能的置换。
如图所示,由数据存储系统600接收的主机写入请求被直接路由到转储缓冲区506中,而不是由如图5A所示的读热隔离单元502接收。控制器604在这个方案中处理主机写入请求的方式的这种差异,源自主机写入请求涉及在存储器中尚不存在的数据(例如,新数据或被覆写的数据)、因此没有与其相关联的读热的事实。虽然可以在读热计数器模块504中为所接收的每个主机写入请求建立读热计数器,但是读热在确定主机写入请求中的数据最终存储在存储器中的位置中不起作用。相反,主机写入请求被累积在补充写入队列602中。因此,补充写入队列602被指定为仅存储主机写入请求,所述主机写入请求然后被用于填充其他写入队列可能无法填充的块条中的任何间隙,例如,如图6A中的箭头所示并且将很快变得显而易见那样。
现在参见图6B,按照一种方案示出了根据前述数据存储方案的在存储器中存储数据的方法650的流程图。应注意,已经关于图6A的数据存储系统600中介绍的控制器架构描述了方法650中包括的过程。换言之,例如很快将变得明显的是,包括在方法650中的各种过程可由图6A中的控制器604响应于接收写入请求来执行。然而,除其他之外,方法650可以根据本发明包括在图1-5A中描绘的任何环境中以各种方式执行。当然,如本领域技术人员在阅读本说明书时将理解的那样,方法650中可以包括比图6B中具体描述的操作更多或更少的操作。
方法650的步骤中的每一个可由操作环境的任何合适组件执行。例如,在各种方案中,方法650可以部分地或全部地由控制器、处理器、计算机等或其中具有一个或多个处理器的一些其他设备来执行。因此,在一些方案中,方法650可以是计算机实施的方法。在此类方法中,用于实现该方法的计算机可包括非易失性存储器驱动器本身或其一部分,诸如控制器、非易失性存储器、外部主机、服务器等。此外,术语“计算机”、“处理器”和“控制器”可以关于在此的任何方法互换地使用,这样的组件在本发明的许多不同的置换中被认为是等效的。
此外,对于那些具有处理器的方案来说,可以在任何设备中用处理器(例如以硬件和/或软件实现的处理电路、芯片和/或模块、并且最好是具有至少一个硬件组件)来执行方法650的一个或多个步骤。示例性处理器包括但不限于中央处理单元(CPU)、现场可编程门阵列(FPGA)等、其组合、或本领域已知的任何其他合适的计算设备。
如图6B所示,方法650的操作652包括接收写入请求。在一些方案中,接收新写入请求和重定位写入请求。因此,判定654包含确定每个写入请求为主机写入请求还是重定位写入请求。如上所述,新写入请求涉及将新数据首次写入存储器,而重定位写入请求涉及重写已存储在存储器中的数据。
响应于确定给定写入请求是主机写入请求,方法650进行到操作656,其包括例如根据上述任何方法将主机写入请求存储在转储缓冲区中。此外,操作658包括将转储缓冲区中的主机写入请求分配给补充写入队列。如上所述,在优选方案中,补充写入队列(例如,参见图6A中的602)仅用于累积主机写入请求。
此外,操作660包括将主机写入请求中的数据从补充写入队列转储至任何块条中的物理页。如上所述,主机写入请求中包括的数据优选地被用于填充其他写入队列可能无法填充的任何间隙。因此,例如不是响应于确定队列已被充分填充,而是可以根据需要将主机写入请求中的数据从补充写入队列转储。
更进一步,方法650包括重置映射到主机写入请求中的数据被转储到的物理页的逻辑页的当前读热值。参见操作662。如上所述,主机写入请求包括尚未在存储器中存储、因此不具有与其相关联的读热的数据。由此可见,当主机写入请求中的数据被存储在存储器的一个或多个页中时,与已被覆写的一个或多个页相关联的任何先前读热值现在不再准确地表示存储在其中的数据的读热。通过重置映射到主机写入请求中的数据被转储的物理页的逻辑页的当前读热值,主机写入请求能够开始跟踪准确的读热值,例如如本领域技术人员在阅读本说明书之后将理解的。当读热数据集和写热数据集基本上不同(它们之间没有多少重叠)和/或实现日志结构化阵列时,通常就是这样,例如如本领域技术人员在阅读本说明书之后将理解的。然而,应当注意,如果读热数据集和写热数据集确实有大量重叠,则可以不响应于执行主机写入而重置读热值。相反,所读取的热值可以例如根据任何类型的预定方案而随时间递减。
方法650从操作662继续进行至操作663,其中确定补充写入队列是否足够充满。如果确定补充写入队列足够充满,则方法650跳到操作674,否则方法650返回到操作652,使得可以如本文所述地接收和处理额外的写入请求。自然,可能会在成功地执行当前的转储操作之前接收到执行写入请求的后续请求,这些请求最好是例如按照方法650进行接收和处理。
返回到判定654,方法650响应于确定给定写入请求为重定位写入请求而前进到操作664。在那里,操作664包括将重定位写入请求存储在转储缓冲区中。换句话说,将重定位写入请求分配给转储缓冲区。如上所述,取决于方案,转储缓冲区可使用MRAM、电池供电的DRAM等或任何其他所需类型的存储器来实现。此外,在操作666中确认写入请求中的每个。取决于方案,可通过将消息返回到写入请求的源、指示写入请求已被添加到转储缓冲区、更新LPT等来确认写入请求。
操作668包括确定对应于由写入请求引用的数据的每个逻辑页的当前读热值。此外,操作670包括基于对应于写入请求的每个逻辑页的当前读热值将写入请求的每个分配到相应的写入队列。这可以根据以上关于方法550的操作560描述的任何方案来实现。例如,可以在逻辑层级(例如,在LPT中)和/或物理层级管理读热值。
仍然参考图6B,判定672包括确定任何写入队列在写入请求中是否包括足以填充与其对应的存储器中的相应页条的数据量。在向存储器进行写入时,期望填充整个页条以便有效地利用存储容量。尽管最好是每个页条在被写入时被完全填充,但在一些方案中,判定672可以包括确定任何写入队列是否在写入请求中包括足够量的数据以填充存储器中对应页条的预定量。例如,判定672可以包括确定任何写入队列是否包括足够数量的写入请求,使得其中包括的数据能够利用存储器中对应块条的存储容量的95%。在此示例中,在补充写入队列中已经积累的主机写入请求中的数据可用于填充存储器中的对应块条的剩余5%,从而增加利用存储容量的效率。替代地,也可以例如如上所述地用来自相邻写入队列或任何其他写入队列的写入请求来填充剩余的存储器。
响应于确定写入队列在来自写入队列的写入请求中不包含足以填充存储器中的下一页条的数据量,方法650可以决定在直接关联的写入队列中没有剩下的写入请求用来填充相应页条、但在仍然有足够的写入请求来填充页条时从相邻写入队列或任何其他写入队列取得写入请求,然后返回到操作652,使得可以如本文所述地接收和处理额外的写入请求。然而,响应于确定写入队列在写入请求中包括足以填充存储器中的相应页条的数据量,方法650进行到操作674,其包括将写入请求中的数据从写入队列转储到相应页条。方法650也从操作674返回到操作652,使得可如本文所述地接收和处理额外的写入请求。自然,可能会在成功地执行当前的转储操作之前接收到执行写入请求的后续请求,这些请求最好是例如按照方法650进行接收和处理。
因此,包括在方法650中的各种过程能够利用每单元多位存储器(例如,诸如TLC和QLC NAND闪存)中的不同类型的物理页的不同延迟属性,以显著地减少由总体数据存储系统经历的读取延迟。在一些方案中通过跟踪在存储器中存储的数据的读热并且根据读热(例如,根据以上方案中的任一个)选择性地组织存储器中的数据来实现这些改进。
现在参见图7A,根据另一方案示出了实现与上述图5A和6A中示出的控制器架构类似的控制器架构的数据存储系统700。具体地,图7A示出了图5A和6A的方法的变型,其示出了数据存储系统700内的若干示例性配置。因此,图7A的各种组件与图5A和图6A的组件具有相同的编号。
作为选项,本数据存储系统700可以结合来自本文列举的任何其他方案的特征来实现,诸如参考其他图(诸如图1-4)描述的那些的特征来实现。然而,这种数据存储系统700和本文所提出的其他数据存储系统可以用于各种应用和/或用于可能在也可能不在本文列举的示例性方案中具体描述的置换。进一步,本文提出的数据存储系统700可以用于任何期望的环境中。因此,图7A(和其他图)可被视为包括任何可能的置换。
如图所示,由数据存储系统700接收的主机写入请求被直接路由到转储缓冲区506中,而不是由读热隔离单元502接收。在此方案中主机写入请求由混合控制器704架构处置的方式上的此差异,源自主机写入请求涉及尚未存在于存储器中、因此不具有与其相关联的读热的数据的事实。虽然可以在读热计数器模块504中为所接收的每个主机写入请求建立读热计数器,但是读热在确定主机写入请求中的数据最终存储在存储器中的位置中不起作用。相反,主机写入请求被累积在补充写入队列702中。因此,补充写入队列702被指定为仅存储主机写入请求,所述主机写入请求然后被用于填充在SLC存储器712中的存储器块708上延伸的打开的块条710中的页条706,例如,如图7A中的箭头所示并且将很快变得明显的那样。还应该注意的是,请求在SLC存储器712中存储的数据的读取操作与对每单元多位存储器528(例如,QLC存储器)执行的读取操作相比具有最低延迟。
现在参见图7B,按照一种方案示出了根据前述数据存储方案的用于将数据存储在存储器中的方法750的流程图。应当注意,已经关于图7A的数据存储系统700中介绍的混合控制器架构描述了方法750中包括的过程。换言之,例如很快将变得明显的是,方法750中包括的各种过程可由图7A中的控制器704响应于接收写入请求来执行。然而,方法750可根据本发明包括在图1-5A中描绘的任何环境中以各种方式执行。当然,如本领域技术人员在阅读本说明书时将理解的那样,方法750中可包括比图7B中具体描述的操作更多或更少的操作。
方法750的每个步骤可由操作环境的任何合适组件执行。例如,在各种方案中,方法750可以部分地或全部地由控制器、处理器、计算机等或其中具有一个或多个处理器的一些其他设备来执行。因此,在一些方案中,方法750可以是计算机实施的方法。在此类方法中,用于实施所述方法的计算机可包含磁带驱动器自身或其部分,例如控制器、磁带、外部主机、服务器等。此外,术语“计算机”、“处理器”和“控制器”可以关于本文中的任何方案互换地使用,这样的组件在本发明的许多不同的置换中被认为是等效的。
此外,对于那些具有处理器的方案来说,可以在任何设备中用处理器(例如以硬件和/或软件实现的处理电路、芯片和/或模块、并且最好是具有至少一个硬件组件)来执行方法750的一个或多个步骤。示例性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合、或本领域已知的任何其他合适的计算设备。
如图7B所示,方法750的操作752包括接收写入请求,而操作754包括在转储缓冲区中累积写入请求。还应注意,在转储缓冲区中累积写入请求可以包括与上面关于在转储缓冲区中存储写入请求所描述的相同或类似方案中的任一种,因为术语“累积”和“存储”绝非意在限制本发明。
取决于方案,可以接收新写入请求和/或重定位写入请求。更进一步,重定位写入请求可以涉及在SLC存储器中的块之间、在每单元多位存储器中的块之间和/或在SLC与每单元多位存储器之间重定位数据。因而,判定756包含确定每个写入请求为何种类型。
响应于确定给定写入请求是主机写入请求或涉及在SLC存储器中的不同块之间重定位数据的重定位写入请求,方法750前进到操作758,其包括将转储缓冲区中的写入请求分配给补充写入队列。如上所述,在优选方案中,补充写入队列(例如,参见图7A中的702)仅用于累积主机写入请求和涉及在SLC存储器中的块之间重新定位数据的重定位写入请求。
判定760包括确定补充写入队列在写入请求中是否包括足以填充SLC存储器中至少一个打开的页条的数据量。在向存储器进行写入时,期望填充整个页条以便有效地利用存储容量。尽管最好是每个页条在被写入时被完全填充,但是在一些方案中,判定760可以涉及确定补充写入队列在写入请求中是否包括足以填充SLC存储器中的打开的页条的预定量的数据量,例如如在上面的方案中所述的那样。
响应于确定补充写入队列在写入请求中不包括足以填充SLC存储器中的打开的页条的数据量,方法750返回到操作752,以使得可以如本文所述地接收并处理额外的写入请求。然而,响应于确定补充写入队列确实在写入请求中包括足以填充SLC存储器中的打开的页条的数据量,方法750前进到操作762。在那里,操作762包括将写入请求中的数据从补充写入队列转储到SLC存储器中的打开的块条中的物理页。更进一步,最好是如上所述地将映射到主机写入请求中的数据被转储到的物理页的逻辑页的当前读热值进行重置。
方法750从操作762返回到操作752,使得可如本文所述地接收和处理额外的写入请求。自然,可能会在成功地执行当前的转储操作之前接收到执行写入请求的后续请求,这些请求最好是例如按照方法750进行接收和处理。
返回到判定756,方法750响应于确定给定写入请求是涉及在每单元多位存储器中的块之间重定位数据和/或将数据从SLC中的块重定位到每单元多位存储器中的块的重定位写入请求而前进到操作766。虽然在一些方案中每单元多位存储器可以为3D QLC存储器,但在本文所述的任何方案中可以实施任何类型的每单元多位存储器。如图所示,操作766包括确认写入请求的每个。取决于方案,可通过将消息返回到写入请求的源、指示写入请求已被添加到转储缓冲区、更新LPT等来确认写入请求。
操作768进一步包括确定对应于由写入请求引用的数据的每个逻辑页的当前读热值。此外,操作770包括基于对应于写入请求的每个逻辑页的当前读热值将写入请求的每个分配给相应的写入队列。这可以按照以上关于方法550的操作560描述的任何方案来实现。例如,可以在逻辑层级(例如,在LPT中)和/或物理层级管理读热值。可选地,操作770可以进一步考虑写入队列的队列层级(例如,参见图7A的508、510、512、514)以更好地平衡写入队列层级。例如,操作770可以包括在当前写入队列超过预定阈值时,将写入请求置于相邻写入队列或任何其他写入队列中。
仍然参考图7B,判定772包括确定写入队列在写入请求中是否包括足以填充与其对应的存储器中的下一页条的数据量。在向存储器进行写入时,期望填充整个页条以便有效地利用存储容量。尽管最好是每个页条在被写入时被完全填充,但在一些方案中,判定772可涉及确定任何写入队列是否在写入请求中包括足填充存储器中对应页条的预定量的数据量。例如,判定772可涉及确定任何写入队列在写入请求中是否包含足以利用存储器中对应块条的存储容量的95%的数据量。在此示例中,在补充写入队列中已经累积的主机写入请求中的数据可用于填充存储器中的对应页条的剩余5%,从而提高利用存储容量的效率。或者,相邻写入队列或任何其他写入队列中的写入请求也可用于填充剩余的存储器。
响应于确定写入队列在写入请求中不包含足以填充存储器中的下一页条的数据量,方法750返回到操作752,使得可如本文所述地接收和处理额外的写入请求。然而,响应于确定写入队列在写入请求中包括足以填充存储器中的相应页条的数据量,方法750前进到操作774,其包括将写入请求中的数据从写入队列转储到相应页条。方法750还从操作774返回到操作752,使得可如本文所述地接收和处理额外的写入请求。自然,可能会在成功地执行当前的转储操作之前接收到执行写入请求的后续请求,这些请求最好是例如按照方法750进行接收和处理。
因此,包括在方法750中的各种过程还能够利用每单元多位存储器(例如,诸如TLC和QLC NAND闪存)中的不同类型的物理页的不同延迟属性,以显著地减少总体数据存储系统所经历的读取延迟。在一些方案中通过跟踪在存储器中存储的数据的读热并根据读热(例如,按照上述任何方案)选择性地组织存储器中的数据来实现这些改进。
此外,本文所包含的方案中的各种方案能够利用每单元多位存储器(例如,诸如TLC和QLC NAND闪存)中的不同类型的物理页的不同延迟属性,以显著地减少由总体数据存储系统经历的读取延迟。在一些方案中通过跟踪在存储器中存储的数据的读热并根据读热(例如,按照上述任何方案)选择性地组织存储器中的数据来实现这些改进。例如,将频繁读取的数据选择性地存储在固有读取延迟较低的物理页上,而将不频繁读取的数据选择性地存储在固有读取延迟较高的物理页上。结果,数据存储系统经历的总读取延迟显著减少,由此提高了效率。
此外,实施具有在相同设备中在SLC和每单元多位模式下操作的存储器块的混合控制器架构的系统能够从操作的开始实现改进的读取延迟。这是因为在SLC模式下操作的存储器块具有与其相关联的显著低的读取延迟,并且被用于字段主机写入请求和不具有可用的读热信息的其他类型的写入请求。此外,在本文所述的不同方案中可以检测到在存储系统中放错位置的数据。响应于做出这样的检测,可以通过重定位放错位置的页面本身,在一些情况下,甚至重定位整个块或LEB,来主动地重定位所述数据(例如,重置或者不重置相应的读热值)。
还应当注意,尽管本文中包括的各种方案能够显著地减少给定存储系统经历的读取延迟,还可以采取额外的步骤以进一步减少读取延迟。例如,可以在本文中的任何方案中,以本领域技术人员在阅读本说明书之后将显而易见的任何方式,实施诸如数据压缩、水平通道跨越、快照读取(例如,读取部分物理页)之类的正交技术以进一步减少读取延迟。
此外,虽然在本文中将各种方案描述为将每个页条与特定写入队列相关,但是这绝非意在限制本发明。例如,可以用包括对应于具有给定读热的数据的写入请求的写入队列来填充与包括对应于具有类似读热的数据的写入请求的写入队列相关的页条。按照示例,可以用包含对应于具有热(hot)读热的数据的写入请求的写入队列来填充与包含对应于具有暖(warm)读热的数据的写入请求的写入队列相关的页条。可以实施该操作方案以便释放转储缓冲区中的空间、刷新接近变满的写入队列等。
本发明可以是任何可能的技术细节集成度的系统、方法和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质。
计算机可读存储介质可以为可保留和存储供指令执行设备使用的指令的有形设备。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(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类似和/或相同的配置。按照绝非意在限制本发明的一些方案,除了图2中所示的RAID控制器之外,存储子系统920还可以包括例如具有NVRAM存储器卡的非易失性数据存储器卡、RAM、ROM、和/或一些其他已知类型的非易失性存储器。
继续参考图9,用户接口适配器922用于将键盘924、鼠标926、扬声器928、麦克风932和/或诸如触摸屏、数码相机(未示出)等的其他用户接口设备连接至总线912。
处理器系统900进一步包含将处理器系统900连接到通信网络935(例如,数据处理网络)的通信适配器934和将总线912连接到显示装置938的显示适配器936。
处理器系统900可以具有驻留在其上的操作系统,诸如MICROSOFT WINDOWS操作系统(OS)、MAC OS、UNIX OS等。将了解,还可在所提及的以外的平台和操作系统上实施优选方案。可以使用JAVA、XML、C和/或C++语言或其他编程语言以及面向对象的编程方法来编写优选方案。可以使用已经越来越多地用于开发复杂应用的面向对象编程(OOP)。
此外,图10示出了按照一种方案实现高级(例如,SSD)存储层与低级(例如,磁带)存储层的组合的存储系统1000。要注意的是,按照各种方案,图10中所示的一些元件可以硬件和/来实现。存储系统1000可以包括用于与至少一个较高存储层1002和至少一个较低存储层1006上的多个介质通信的存储系统管理器1012。然而,在其他方案中,存储系统管理器1012可与至少一个较高存储层1002而非较低存储层上的多个介质通信。较高存储层1002优选地可以包括一个或多个随机存取和/或直接存取介质1004,如硬盘、非易失性存储器(NVM)、NVRAM、SSD中的固态存储器、闪存、SSD阵列、闪存阵列等,和/或本文指出的或本领域已知的其他介质。根据说明性示例,图3-4示出了取决于期望的方案可以用作较高存储层1002的SSD系统的示例性架构。
仍然参考图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 (25)

1.一种用于支持读热数据分离的写高速缓存架构中的选择性数据放置的计算机实现的方法,包括:
接收写入请求;
在转储缓冲区中累积写入请求;
确定对应于写入请求的每个逻辑页的当前读热值;
基于对应于写入请求的每个逻辑页的当前读热值,将写入请求中的每个分配给相应写入队列,其中,写入队列的每个对应于包括物理页的不同页条,其中,相应页条的每个中包括的物理页是相同类型的;和
将写入请求中的数据从写入队列转储到它们的相应页条。
2.根据权利要求1所述的计算机实现的方法,包括:
确定给定写入队列是否在相应写入请求中包括足以填充与其对应的下一页条的数据量;
响应于确定给定写入队列在相应写入请求中不包括足以填充与其对应的下一页条的数据量,确定相邻写入队列是否在相应写入请求中包括足以完成填充与给定写入队列对应的下一页条的数据量;和
响应于确定相邻写入队列在相应写入请求中包括足以完成填充与给定写入队列对应的下一页条的数据量,将写入请求中的数据从给定写入队列和相邻写入队列转储到与给定写入队列对应的下一页条。
3.根据权利要求1所述的计算机实现的方法,包括:
接收对应于在一个或多个逻辑页中存储的数据的读取请求;
递增与所述一个或多个逻辑页的每个相关联的读热值;和
满足读取请求。
4.根据权利要求1所述的计算机实现的方法,包括:
接收主机写入请求;
将主机写入请求存储在转储缓冲区中;
将转储缓冲区中的主机写入请求中的每个分配给补充写入队列;
将主机写入请求中的数据从补充写入队列转储到页条中的任一个中的物理页;和
重置映射到主机写入请求中的数据被转储到的物理页的逻辑页的当前读热值。
5.根据权利要求1所述的计算机实现的方法,其中,物理页在四级单元QLC存储器中实现,其中,物理页的类型包括:下部页、上部页、额外页和顶部页。
6.根据权利要求1所述的计算机实现的方法,其中,使用2位饱和计数器来维护当前读热值中的每个。
7.一种用于支持读热数据分离的写高速缓存架构中的选择性数据放置的计算机可读存储介质,计算机可读存储介质具有随其包含的程序指令,程序指令可由处理器读取和/或执行以使处理器:
由处理器接收写入请求;
由处理器在转储缓冲区中累积写入请求;
由处理器确定对应于写入请求的每个逻辑页的当前读热值;
由处理器基于对应于写入请求的每个逻辑页的当前读热值,将写入请求中的每个分配给相应写入队列,其中,写入队列的每个对应于包括物理页的不同页条,其中,相应页条的每个中包括的物理页是相同类型的;和
由处理器将写入请求中的数据从写入队列转储到它们的相应页条。
8.根据权利要求7所述的计算机可读存储介质,其中,程序指令可由处理器读取和/或执行以使处理器:
由处理器确定给定写入队列是否在相应写入请求中包括足以填充与其对应的下一页条的数据量;
由处理器响应于确定给定写入队列在相应写入请求中不包括足以填充与其对应的下一页条的数据量,确定相邻写入队列是否在相应写入请求中包括足以完成填充与给定写入队列对应的下一页条的数据量;和
由处理器响应于确定相邻写入队列在相应写入请求中包括足以完成填充与给定写入队列对应的下一页条的数据量,将写入请求中的数据从给定写入队列和相邻写入队列转储到与给定写入队列对应的下一页条。
9.根据权利要求7所述的计算机可读存储介质,其中,程序指令可由处理器读取和/或执行以使处理器:
由处理器接收对应于在一个或多个逻辑页中存储的数据的读取请求;
由处理器递增与所述一个或多个逻辑页的每个相关联的读热值;和
由处理器满足读取请求。
10.根据权利要求7所述的计算机可读存储介质,其中,程序指令可由处理器读取和/或执行以使处理器:
由处理器接收主机写入请求;
由处理器将主机写入请求存储在转储缓冲区中;
由处理器将转储缓冲区中的主机写入请求中的每个分配给补充写入队列;
由处理器将主机写入请求中的数据从补充写入队列转储到页条中的任一个中的物理页;和
由处理器重置映射到主机写入请求中的数据被转储到的物理页的逻辑页的当前读热值。
11.根据权利要求7所述的计算机可读存储介质,其中,物理页在四级单元QLC存储器中实现,其中,物理页的类型包括:下部页、上部页、额外页和顶部页。
12.根据权利要求7所述的计算机可读存储介质,其中,使用2位饱和计数器来维护当前读热值中的每个。
13.一种用于支持读热数据分离的写高速缓存架构中的选择性数据放置的系统,包括:
多个非易失性随机存取存储器NVRAM块,被配置用于存储数据;和
处理器以及与处理器集成和/或可由处理器执行的逻辑,所述逻辑被配置为:
由处理器接收写入请求;
由处理器在转储缓冲区中累积写入请求;
由处理器确定对应于写入请求的每个逻辑页的当前读热值;
由处理器基于对应于写入请求的每个逻辑页的当前读热值,将写入请求中的每个分配给相应写入队列,其中,写入队列的每个对应于包括物理页的不同页条,其中,相应页条的每个中包括的物理页是相同类型的;和
由处理器将写入请求中的数据从写入队列转储到它们的相应页条。
14.根据权利要求13所述的系统,所述逻辑被配置为:
由处理器确定给定写入队列是否在相应写入请求中包括足以填充与其对应的下一页条的数据量;
由处理器响应于确定给定写入队列在相应写入请求中不包括足以填充与其对应的下一页条的数据量,确定相邻写入队列是否在相应写入请求中包括足以完成填充与给定写入队列对应的下一页条的数据量;和
由处理器响应于确定相邻写入队列在相应写入请求中包括足以完成填充与给定写入队列对应的下一页条的数据量,将写入请求中的数据从给定写入队列和相邻写入队列转储到与给定写入队列对应的下一页条。
15.根据权利要求13所述的系统,所述逻辑被配置为:
由处理器接收对应于在一个或多个逻辑页中存储的数据的读取请求;
由处理器递增与所述一个或多个逻辑页的每个相关联的读热值;和
由处理器满足读取请求。
16.根据权利要求13所述的系统,所述逻辑被配置为:
由处理器接收主机写入请求;
由处理器将主机写入请求存储在转储缓冲区中;
由处理器将转储缓冲区中的主机写入请求中的每个分配给补充写入队列;
由处理器将主机写入请求中的数据从补充写入队列转储到页条中的任一个中的物理页;和
由处理器重置映射到主机写入请求中的数据被转储到的物理页的逻辑页的当前读热值。
17.根据权利要求13所述的系统,其中,物理页在四级单元QLC存储器中实现,其中,物理页的类型包括:下部页、上部页、额外页和顶部页。
18.根据权利要求13所述的系统,其中,使用2位饱和计数器来维护当前读热值中的每个。
19.一种用于支持读热数据分离的写高速缓存架构中的选择性数据放置的计算机实现的方法,包括:
接收写入请求;
在转储缓冲区中累积写入请求;
确定写入请求的每个是否是主机写入请求;
响应于确定写入请求不是主机写入请求:
确定对应于该写入请求的每个逻辑页的当前读热值,和
基于对应于该写入请求的每个逻辑页的当前读热值,将该写入请求分配给写入队列,其中,写入队列的每个对应于包括物理页的不同页条,其中,在每个相应页条的每个中包括的物理页是相同类型的;和
响应于确定写入请求是主机写入请求,将写入请求分配给补充写入队列。
20.根据权利要求19所述的计算机实现的方法,包括:
将主机写入请求中的数据从补充写入队列转储至包括在单级单元SLC存储器中实现的物理页的页条中的物理页。
21.根据权利要求19所述的计算机实现的方法,包括:
通过以下方式将写入请求中的数据从写入队列转储到它们的相应页条:
确定给定写入队列是否在相应写入请求中包括足以填充与其对应的下一页条的数据量;
响应于确定给定写入队列在相应写入请求中不包括足以填充与其对应的下一页条的数据量,确定相邻写入队列是否在相应写入请求中包括足以完成填充与给定写入队列对应的下一页条的数据量;和
响应于确定相邻写入队列在相应写入请求中包括足以完成填充与给定写入队列对应的下一页条的数据量,将写入请求中的数据从给定写入队列和相邻写入队列转储到与给定写入队列对应的下一页条。
22.根据权利要求21所述的计算机实现的方法,其中,每单元多位存储器是四级单元QLC存储器,物理页的类型包括:下部页、上部页、额外页和顶部页。
23.根据权利要求19所述的计算机实现的方法,包括:
接收对应于在一个或多个逻辑页中存储的数据的读取请求;
递增与所述一个或多个逻辑页的每个相关联的读热值;和
满足读取请求。
24.根据权利要求19所述的计算机实现的方法,其中,使用2位饱和计数器来维护当前读热值中的每个。
25.一种用于支持读热数据分离的写高速缓存架构中的选择性数据放置的可读存储介质,计算机可读存储介质具有随其包含的程序指令,程序指令可由处理器读取和/或执行以使处理器:
由处理器接收写入请求;
由处理器在转储缓冲区中累积写入请求;
由处理器确定写入请求的每个是否是主机写入请求;
响应于确定写入请求不是主机写入请求:
由处理器确定对应于该写入请求的每个逻辑页的当前读热值,和
由处理器基于对应于该写入请求的每个逻辑页的当前读热值,将该写入请求分配给写入队列,其中,写入队列的每个对应于包括物理页的不同页条,其中,在每个相应页条的每个中包括的物理页是相同类型的;和
响应于确定写入请求是主机写入请求,将写入请求分配给补充写入队列。
CN202080049872.0A 2019-07-10 2020-06-25 用于写高速缓存架构中的数据放置的方法和系统 Active CN114127677B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/508,140 2019-07-10
US16/508,140 US10977181B2 (en) 2019-07-10 2019-07-10 Data placement in write cache architecture supporting read heat data separation
PCT/IB2020/056017 WO2021005445A1 (en) 2019-07-10 2020-06-25 Data placement in write cache architecture supporting read heat data separation

Publications (2)

Publication Number Publication Date
CN114127677A CN114127677A (zh) 2022-03-01
CN114127677B true CN114127677B (zh) 2024-02-09

Family

ID=74102302

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080049872.0A Active CN114127677B (zh) 2019-07-10 2020-06-25 用于写高速缓存架构中的数据放置的方法和系统

Country Status (5)

Country Link
US (2) US10977181B2 (zh)
CN (1) CN114127677B (zh)
DE (1) DE112020003290T5 (zh)
GB (1) GB2600310B (zh)
WO (1) WO2021005445A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10977181B2 (en) 2019-07-10 2021-04-13 International Business Machines Corporation Data placement in write cache architecture supporting read heat data separation
US11442809B1 (en) * 2019-07-17 2022-09-13 Marvell Asia Pte, Ltd. Double-parity raid enabling recovery of two failed data units
WO2021036329A1 (zh) * 2019-08-28 2021-03-04 华为技术有限公司 一种数据存储方法及装置
US11119855B2 (en) * 2019-10-24 2021-09-14 International Business Machines Corporation Selectively storing parity data in different types of memory
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

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101526923A (zh) * 2009-04-02 2009-09-09 成都市华为赛门铁克科技有限公司 一种数据处理方法、装置和闪存存储系统
CN104699424A (zh) * 2015-03-26 2015-06-10 华中科技大学 一种基于页面热度的异构内存管理方法
CN107808686A (zh) * 2016-09-09 2018-03-16 北京忆恒创源科技有限公司 读出错测试方法与装置
CN108762664A (zh) * 2018-02-05 2018-11-06 杭州电子科技大学 一种固态硬盘页级缓存区管理方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7255272B2 (en) * 2003-06-09 2007-08-14 Brush Industries, Inc. Card reader/writer devices and methods
US8010337B2 (en) * 2004-09-22 2011-08-30 Microsoft Corporation Predicting database system performance
US8555019B2 (en) * 2010-09-08 2013-10-08 International Business Machines Corporation Using a migration cache to cache tracks during migration
US8661196B2 (en) 2011-08-15 2014-02-25 International Business Machines Corporation Optimizing locations of data accessed by client applications interacting with a storage system
US9645917B2 (en) 2012-05-22 2017-05-09 Netapp, Inc. Specializing I/O access patterns for flash storage
US9779021B2 (en) 2014-12-19 2017-10-03 International Business Machines Corporation Non-volatile memory controller cache architecture with support for separation of data streams
US9870285B2 (en) 2015-11-18 2018-01-16 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory
US10126971B1 (en) 2017-06-21 2018-11-13 International Business Machines Corporation Enhanced application performance in multi-tier storage environments
US10275162B2 (en) * 2017-06-23 2019-04-30 Dell Products L.P. Methods and systems for managing data migration in solid state non-volatile memory
US10977181B2 (en) 2019-07-10 2021-04-13 International Business Machines Corporation Data placement in write cache architecture supporting read heat data separation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101526923A (zh) * 2009-04-02 2009-09-09 成都市华为赛门铁克科技有限公司 一种数据处理方法、装置和闪存存储系统
CN104699424A (zh) * 2015-03-26 2015-06-10 华中科技大学 一种基于页面热度的异构内存管理方法
CN107808686A (zh) * 2016-09-09 2018-03-16 北京忆恒创源科技有限公司 读出错测试方法与装置
CN108762664A (zh) * 2018-02-05 2018-11-06 杭州电子科技大学 一种固态硬盘页级缓存区管理方法

Also Published As

Publication number Publication date
WO2021005445A1 (en) 2021-01-14
GB2600310A (en) 2022-04-27
US10977181B2 (en) 2021-04-13
CN114127677A (zh) 2022-03-01
US11360903B2 (en) 2022-06-14
JP2022539788A (ja) 2022-09-13
DE112020003290T5 (de) 2022-04-28
US20210157735A1 (en) 2021-05-27
US20210011852A1 (en) 2021-01-14
GB2600310B (en) 2023-02-15
GB202200757D0 (en) 2022-03-09

Similar Documents

Publication Publication Date Title
US11036580B2 (en) Metadata hardening and parity accumulation for log-structured arrays
US11023150B2 (en) Block mode toggling using hybrid controllers
US11138124B2 (en) Migrating data between block pools in a storage system
CN114127677B (zh) 用于写高速缓存架构中的数据放置的方法和系统
US10949108B2 (en) Enhanced application performance in multi-tier storage environments
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
US11086565B2 (en) Reducing effects of read array operations of read apparent voltage
US9886208B2 (en) Adaptive assignment of open logical erase blocks to data streams
JP7486534B2 (ja) ストレージ・システムにおけるブロック・プール・サイズの適合
CN114556303A (zh) 更新非易失性随机存取存储器中的校正读取电压偏移
KR20220053019A (ko) 비-휘발성 랜덤 액세스 메모리의 수정 읽기 전압 오프셋들의 계산
CN112346658A (zh) 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率
US11119855B2 (en) Selectively storing parity data in different types of memory
JP7496841B2 (ja) 読出しヒート・データ分離をサポートしている書込みキャッシュ・アーキテクチャ内でのデータ配置

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