CN112346658A - 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率 - Google Patents
在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率 Download PDFInfo
- Publication number
- CN112346658A CN112346658A CN202010781196.8A CN202010781196A CN112346658A CN 112346658 A CN112346658 A CN 112346658A CN 202010781196 A CN202010781196 A CN 202010781196A CN 112346658 A CN112346658 A CN 112346658A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- write
- thermal information
- computer
- 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.)
- Granted
Links
- 238000003860 storage Methods 0.000 title claims description 89
- 238000000034 method Methods 0.000 claims abstract description 142
- 238000004590 computer program Methods 0.000 claims description 10
- 230000000153 supplemental effect Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 8
- 238000013500 data storage Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 31
- 238000013459 approach Methods 0.000 description 28
- 238000012545 processing Methods 0.000 description 23
- 238000000926 separation method Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 15
- 230000006870 function Effects 0.000 description 12
- 239000000872 buffer Substances 0.000 description 10
- 238000013507 mapping Methods 0.000 description 8
- 230000003321 amplification Effects 0.000 description 6
- 238000003199 nucleic acid amplification method Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000013403 standard screening design Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000005055 memory storage Effects 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- GVVPGTZRZFNKDS-JXMROGBWSA-N geranyl diphosphate Chemical compound CC(C)=CCC\C(C)=C\CO[P@](O)(=O)OP(O)(O)=O GVVPGTZRZFNKDS-JXMROGBWSA-N 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 101100029838 Mus musculus Pinx1 gene Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013021 overheating Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 229920001485 poly(butyl acrylate) polymer Polymers 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
- 238000005204 segregation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
-
- 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/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/0689—Disk arrays, e.g. RAID, JBOD
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
根据一个实施例,一种计算机实现的方法用于在数据位于高速缓存中时维持数据的热量信息。该计算机实现的方法包括:将数据从非易失性存储器转移到高速缓存,使得数据被存储在高速缓存的第一页中。通过在哈希表中保留与第一页中的数据相对应的一个或多个比特,维持与数据相关联的先前读取和/或写入热量信息。此外,数据从高速缓存中的第一页转出到非易失性存储器,并且哈希表中与该数据相对应的一个或多个比特被更新以反映与该数据相关联的当前读取和/或写入热量信息。
Description
技术领域
本发明涉及数据存储系统,并且更具体地,本发明涉及保存数据热量信息并增加数据热量跟踪分辨率。
背景技术
以闪存为例,传统的基于NAND闪存的固态驱动器(SSD)的性能特征与传统的硬盘驱动器(HDD)的本质上是不同的。传统SSD中的数据通常以4、8或16KB大小的页进行组织。此外,SSD中的页读取操作通常比写入操作快一个数量级,并且延迟既不取决于操作的当前位置也不取决于操作的先前位置。
然而,在基于闪存的SSD中,存储位置在被写入之前被逐块擦除。擦除块单元的大小通常为256个页,并且擦除操作比页编程操作要多花费大约一个数量级的时间。由于NAND闪存的固有属性,基于闪存的SSD会错位写入数据,因此映射表会将写入数据的逻辑地址映射到物理地址。该映射表通常被称为逻辑到物理表(LPT)。
由于基于闪存的存储器单元由于磨损或其他原因而表现出读取错误和/或故障,因此可以在存储器页内以及跨存储器芯片使用附加冗余(例如,类似于RAID-5和RAID-6的方案)。存储器页内的附加冗余可包括纠错码(ECC),其例如可包括BCH码。虽然在页中添加ECC相对简单,但将存储器块组织成类似RAID的条带则更为复杂。例如,随着时间的流逝,单个块将退役,这需要重组条带或减少条带的容量。由于条带的组织与LPT一起定义了数据的位置,因此SSD通常利用对数结构阵列(LSA)体系结构,该体系结构将这两种方法结合在一起。
LSA体系结构依赖于错位写入。在这种方法中,存储器页覆盖将导致将存储器页数据写入存储器中的新位置,将存储器页数据的旧副本标记为无效,然后更新映射信息。由于当前NAND存储器技术的局限性,无效的数据位置只有在其所属的整个块被擦除后才能重用。但是,在擦除之前,该块会进行垃圾回收,从而该块中的任何有效数据都将重定位到新的块中。通常,尽可能长时间地延迟块的垃圾回收,以最大化块中无效数据的数量,并因此减少重定位的有效页的数量,因为重定位数据会导致其他写入操作,从而增加写入放大。
发明内容
根据一个实施例的一种计算机实现的方法,用于在数据位于高速缓存中时维持数据的热量信息。所述计算机实现的方法包括:将数据从非易失性存储器转移到高速缓存,使得数据被存储在高速缓存的第一页中。通过在哈希表中保留与第一页中的数据相对应的一个或多个比特,维持与数据相关联的先前读取和/或写入热量信息。此外,数据从高速缓存中的第一页转出到非易失性存储器,并且哈希表中与该数据相对应的该一个或多个比特被更新以反映与该数据相关联的当前读取和/或写入热量信息。
根据另一实施例的计算机程序产品包括计算机可读存储介质,该计算机可读存储介质中体现有程序指令。程序指令是处理器可读和/或可执行的,以使处理器执行上述方法。
根据又一实施例的计算机实现的方法是用于在数据位于高速缓存中时维持数据的热量信息。该计算机实现的方法包括:更新哈希表中与数据相对应的一个或多个比特,以反映与该数据相对应的当前读取和/或写入热量信息。数据从非易失性存储器转移到高速缓存,使得数据被存储在高速缓存的第一页中。通过在哈希表中保留与该数据相对应的该一个或多个比特,进一步维持与该数据相对应的当前读取和/或写入热量信息。而且,数据从高速缓存中的第一页转出到非易失性存储器。
通过以下详细描述,本发明的其他方面和实施例将变得显而易见,当结合附图时,以下详细描述通过示例的方式示出了本发明的原理。
附图说明
图1是根据一个实施例的非易失性存储器卡的图。
图2是根据一个实施例的数据存储系统体系结构的图。
图3是根据一个实施例的系统图。
图4是根据一个实施例的包括块条带和页条带的概念图。
图5是根据一个实施例的存储系统的局部表示图。
图6A是根据一个实施例的示例性高速缓存条目的表示图。
图6B是根据一个实施例的示例性逻辑到物理表的表示图。
图7A是根据一个实施例的方法的流程图。
图7B是根据一个实施例的图7A的方法中的一个操作的子过程的流程图。
图7C是根据一个实施例的方法的流程图。
图7D是根据一个实施例的图7C的方法中的一个操作的子过程的流程图。
图8A是根据一个实施例的方法的流程图。
图8B是根据一个实施例的方法的流程图。
图9是根据一个实施例的网络体系结构。
图10是根据一个实施例的可以与图9的服务器和/或客户端相关联的代表性硬件环境。
图11是根据一个实施例的分层数据存储系统。
具体实施方式
以下描述是出于说明本发明的一般原理的目的而作出的,并且不意味着限制本文所要求保护的发明构思。此外,在此描述的特定特征可在各种可能的组合和排列的每一个中与其他描述的特征结合使用。
除非本文另外明确定义,否则应给所有术语最广泛的可能解释,包括在说明书中隐含的含义以及本领域技术人员理解的含义和/或如在字典、专着等中所定义。
还必须注意的是,如说明书和所附权利要求书中所使用的,单数形式“一”,“一个”和“该”包括复数指示物,除非另有说明。将进一步理解的是,当在本说明书中使用时术语“包括”和/或“包含”指定了所述特征,整数,步骤,操作,元件和/或组件的存在,但并不排除一个或多个其他特征,整数,步骤,操作,元件,组件和/或它们的组合的存在或附加。
以下描述公开了数据存储系统的几个优选实施例,以及其操作和/或组成部分。应当理解,本文的各种实施例可以用广泛的存储器介质来实现,包括例如非易失性随机存取存储器(NVRAM)技术,诸如NAND闪存,NOR闪存,相变存储器(PCM),磁阻RAM(MRAM)和电阻RAM(RRAM)。为了提供上下文并且仅用于帮助读者,各种实施例可参考非易失性存储器的类型来描述。这仅是通过示例的方式进行的,并且不应被视为对权利要求书中限定的发明的限制。
在一个一般实施例中,一种计算机实现的方法是用于在数据位于高速缓存中时维持数据的热量信息。所述计算机实现的方法包括:将数据从非易失性存储器转移到所述高速缓存,使得所述数据被存储在所述高速缓存的第一页中。通过在哈希表中保留与第一页中的数据相对应的一个或多个比特,维持与数据相关联的先前读取和/或写入热量信息。此外,数据从高速缓存中的第一页转出到非易失性存储器,并且哈希表中与该数据相对应的该一个或多个比特被更新以反映与该数据相关联的当前读取和/或写入热量信息。
在另一个一般实施例中,一种计算机程序产品包括计算机可读存储介质,该计算机可读存储介质中体现有程序指令。程序指令是处理器可读和/或可执行的,以使处理器执行上述方法。
在又一一般实施例中,一种计算机实现的方法是用于在数据位于高速缓存中时维持数据的热量信息。该计算机实现的方法包括:更新哈希表中与数据相对应的一个或多个比特,以反映与该数据相对应的当前读取和/或写入热量信息。数据从非易失性存储器转移到高速缓存,使得数据被存储在高速缓存的第一页中。通过在哈希表中保留与该数据相对应的该一个或多个比特,进一步维持与该数据相对应的当前读取和/或写入热量信息。而且,数据从高速缓存中的第一页转出到非易失性存储器。
图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还可包括一个或多个RAID控制器206,其被配置为控制在多个非易失性数据存储卡208中的数据存储。非易失性数据存储卡208可包括NVRAM,闪存卡,RAM,ROM和/或一些其他已知类型的非易失性存储器。
I/O互连204可包括任何已知的通信协议,例如光纤信道(FC),以太网上的FC(FCoE),无线带宽(Infiniband),互联网小型计算机系统接口(iSCSI),传输控制协议/互联网协议(TCP/IP),外围组件互连快速(PCIe)等和/或其任何组合。
数据存储系统220中的RAID控制器206可执行类似于RAID-5,RAID-10所采用的奇偶校验方案,或如本领域技术人员在阅读本说明书后所理解的某种其他合适的奇偶校验方案。
每个处理器系统201包括一个或多个处理器210(例如CPU,微处理器等)、本地数据存储设备211(例如,诸如图10中的RAM 1014,图10中的ROM 1016等),以及被配置为与数据存储系统220通信的I/O适配器218。
再次参考图1,取决于期望的实施例,本文描述的存储器控制器108和/或其他控制器(例如,图2的RAID控制器206)可能能够对存储的数据执行各种功能。具体地,存储器控制器可包括被配置为执行以下功能中的任何一个或多个的逻辑,这些功能绝不旨在成为排他性列表。换句话说,如本领域的技术人员在阅读本说明书时将理解的,取决于期望的实施例,存储系统的逻辑可被配置为执行附加的或替代的功能。
垃圾回收
在本说明书的SSD存储器控制器的上下文中的垃圾回收可包括以下过程:识别要回收以供将来使用的数据块,以及重定位所有在数据块中仍然有效的页。此外,取决于特定的控制器和/或相应的垃圾回收操作单元,可识别LEB以进行回收和/或重定位。通常,一个LEB对应一个块条带,但其他实现方式也可考虑构建LEB的固定数量的块条带。
物理“块”表示可在例如诸如NAND闪存的非易失性存储器上擦除并由此准备向其写入数据的最小单元。然而,典型的垃圾回收操作单元通常是非易失性存储器的多个物理块,并且在本文中也被称为LEB。这是由于通常在LEB中添加了类似RAID的奇偶校验信息这一事实。因此,在出现页或块故障的情况下,仅当LEB中的所有块仍保留数据时才能重建数据。因此,一旦来自LEB中所有块的所有仍然有效的数据已成功重定位到新位置,就只能单独地或以单个单元为单位来擦除来自垃圾回收单元的单个块。因此,全部垃圾回收单元被作为单个单元进行垃圾回收。而且,LEB的大小直接影响垃圾回收引起的写入放大。LEB越大,不相关的数据一起存储在LEB中的可能性就越大,因此在垃圾回收选择时更多的LEB数据可能必须被重定位。
通常,来自不同管芯和/或闪存信道的块被分组在一起,使得来自同一组的块可以被并行地读取或写入,从而增加了总带宽。还可结合前两种方法,并使用来自可并行访问的不同闪存信道的块来组成RAID条带。
还应当注意,LEB可包括作为物理擦除单位的任何倍数的物理存储器块。此外,将存储器块组织成LEB不仅允许在来自不同存储器芯片,存储器平面和/或信道的存储器块之间添加类似RAID的奇偶校验保护方案,而且还可通过更高的并行度显著增强性能。例如,多个非易失性存储器块可被分组成RAID条带。如本领域的技术人员在阅读本说明书后将理解的,RAID方案通常提高可靠性并降低数据丢失的可能性。
根据决不旨在限制本发明的示例性实施例,存储器控制器(例如,参见图1的108)可在内部执行垃圾回收。如前所述,垃圾回收可包括选择将要重定位的LEB,之后在所选择的LEB上仍然有效的所有数据可被重定位(例如,移动)。在仍然有效的数据已被重定位之后,可删除LEB,然后将其用于存储新数据。从经垃圾回收的LEB中重定位的数据量决定了写入放大。此外,减少写入放大的有效方法包括实现基于热量的数据分离。
基于热量的数据分离
在当前上下文中,数据的“写入热量”是指数据被更新(例如,用新数据重写)的速率(例如,频率)。被认为是“热”的存储器块往往具有更频繁的更新速率,而被认为是“冷”的存储器块的更新速率要比热块更慢。
跟踪逻辑页的写入热量可涉及例如针对该页在LPT映射条目中分配一定数量的比特,以跟踪该页在特定时间段或窗口中看到了多少次写入操作。通常,主机写入操作增加写入热量,而内部重定位写入降低写入热量。写入热量的实际增加和/或减少可以是确定性的或概率性的。
类似地,对于每个逻辑页,可用LPT中的一定数量的附加比特来跟踪“读取热量”。为了减少元数据,还可在物理块级别上跟踪读取热量,在该物理块级别上,每个块针对跨读和非跨读的独立计数器可被维持。然而,应注意,对于一些实施例,当确定存储器块的热量时,对存储器块的读取请求和/或对存储器块执行的读取操作的数量可能对于基于热量的数据分离不起作用。例如,如果频繁地从特定的存储器块中读取数据,则高读取频率并不一定意味着该存储器块也将具有高更新速率。反而,在给定存储器块上执行的高频读取操作可表示存储在该存储器块中的数据的重要性、值等。
通过对具有相同和/或相似写入热量值的存储器块进行分组,可实现基于热量的数据分离。具体地,基于热量的数据分离方法可将热存储器页一起分组在某些存储器块中,而将冷存储器页一起分组在另外的存储器块中。因此,在基于热量的数据分离方案下,LEB往往被热数据或者冷数据占据。
基于热量信息分离数据的优点是三方面的。首先,在热存储器块上执行垃圾回收过程也将防止触发写入冷(write-cold)数据的重定位。在没有基于热量的数据分离的情况下,频繁执行的对写入热(write-hot)数据的更新也会导致在与重定位热数据相同的LEB上共存的所有冷数据的不期望的重定位。因此,对于实现基于热量的数据分离的实施例,通过执行垃圾回收而引起的写入放大要低得多。
其次,可将数据的相对写入热量用于磨损平衡的目的。举例来说,可将写入热数据放置在更健康(例如,更年轻)的存储器块中,而可将写入冷数据放置在相对于更健康的存储器块来说更不健康(例如,更旧)的存储器块中。因此,相对更旧的块暴露于磨损的速率被有效地减慢,从而提高了实现基于热量的数据分离的给定数据存储系统的整体耐久性。
第三,数据的相对读取热量可用于将它们主动放置在多层闪存存储系统(例如,每单元一比特,每单元两比特,每单元三比特,每单元四比特NAND页)中的更快的介质中,从而提高系统性能(例如,减少读取延迟)。
写入分配
写入分配包括将写入操作的数据放置到开放(open)的LEB的空闲位置。一旦LEB中的所有页都已被写入,则LEB被关闭并被放置在容纳已被占用的LEB的池中。通常,占用池中的LEB变得有资格用于垃圾回收。开放的LEB的数量一般是有限的,并且任何被关闭的LEB都可立即或在某些延迟后被开放的新LEB替换。
在运行时间期间,垃圾回收可与用户写入操作并行地发生。例如,当用户(例如,主机)将数据写入设备时,设备控制器可对具有无效数据的LEB连续执行垃圾回收,从而为新进入的数据页腾出空间。如上所述,使垃圾回收在其上执行的LEB经常会有一些页在垃圾回收操作时仍然有效。因此,最好将这些页重定位(例如,写入)到新的LEB。
再次,前述功能绝不旨在限制本文描述和/或建议的任何存储系统的能力。相反,前述功能是通过示例的方式呈现的,并且,如本领域的技术人员在阅读本说明书后将理解的,取决于期望的实施例,存储系统的逻辑可被配置为执行附加的或替代的功能。
现在参考图3,示出了根据一个实施例的系统300。作为选项,可以结合来自本文列出的任何其他实施例的特征(诸如参考其他图描述的那些特征)来实现本系统300。然而,本文提出的这种系统300和其他可用于可以在本文列出的说明性实施例中具体描述或不具体描述的各种应用和/或排列中。此外,本文提出的系统300可在任何期望的环境中例如与控制器结合使用。
如图所示,系统300包括写入高速缓存302,该写入高速缓存302耦接到包括垃圾回收器304的多个其他组件。如前所述,垃圾回收器304可用于通过重定位有效数据并提供将要被擦除的非易失性存储器块来释放LEB单元,以备之后重新使用。因此,取决于期望的实施例,垃圾回收器304可回收连续物理空间的块。根据示例性实施例,块擦除单元可用于跟踪和/或完成由垃圾回收器304移交的非易失性存储器块的擦除。
写入高速缓存302也耦接到空闲块管理器306,该空闲块管理器306可在空闲非易失性存储器块被擦除之后保持跟踪该空闲非易失性存储器块。此外,如本领域的普通技术人员在阅读本说明书时将理解的,空闲块管理器306可使用已擦除的空闲非易失性存储器块来从不同通道(lane)(例如,块条带)构建非易失性存储器块的空闲条带。
仍然参考图3,写入高速缓存302耦接到LPT管理器308和存储器I/O单元310。LPT管理器308维持逻辑地址到存储器中的物理页的逻辑到物理映射。根据绝不旨在限制本发明的一个示例,LPT管理器308可维持4KiB逻辑地址的逻辑到物理映射。存储器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个页条带,并且因此每个块容纳N+1个标记为“页0”到“页N”的页。
高速缓存体系结构
仍然参考图4,当以高速缓存体系结构实现时,在聚合平面0的分解图中示出的每个页块可构成来自一个信道的唯一块。类似地,每个信道贡献单个单独的块,其形成块条带。例如,查看概念图400,来自信道0的块10包括在信道0中的所有页(页0到页N),而来自信道4的块41对应在信道4中的所有页,依此类推。
在例如能够在信道级别上实现RAID的存储器控制器的上下文中,块条带由多个块组成,这些块等于块的条带。仍然参考图4,聚合平面0的多个块构成块条带0。虽然块条带中的所有块通常都属于同一聚合平面,但是在一些实施例中,块条带中的一个或多个块可属于不同的物理平面。因此,每个聚合平面可包括一个或多个块条带。因此,根据说明性实施例,来自不同物理平面的块0至块10可构成块条带。
不管图4的概念图400是否用非易失性存储器和/或高速缓存体系结构来实现,在不同的实施例中,每个块中的页数和/或每个平面中的信道数可取决于期望的实施例而变化。根据决不旨在限制本发明的示例性实施例,一个块可包括256个页,但是在各种实施例中,一个块可包括更多或更少的页。类似地,每个平面的信道数量和/或平面数量可取决于期望的实施例而变化。
仍然参考图4,块条带中具有相同页索引的所有页表示页条带。例如,页条带0包括平面0的块条带0中每个信道的第一页(页0)。类似地,页条带N包括平面0的块条带0中每个信道的最后一页(页N)。
如前所述,写入和/或读取热量信息可用于通过在存储器中将写入热存储器页分组在一起,在存储器中将写入冷存储器页另外分组在一起,并将读取热存储器页放置在更快的介质上(例如,在基于QLC NAND闪存的系统中的每单元单比特页中),实现基于热量的数据分离。这种基于热量的数据分离通过减少性能延迟来提高总体存储系统的运行效率。考虑到存储技术已经经历的变化,这些改进是特别期望的。具体而言,数据存储容量不断增加,价格却成比例下降。产生这种趋势的关键因素之一是在存储器中每个单元可存储的比特数的稳定增加。增加每个单元的比特数可允许按比例增加容量,而无需从根本上改变存储技术,也不必减小单元本身的规模。
然而,对可存储在每个单元中的比特数的这些增加伴随有缺点。具体而言,常规实现方式经历了闪存块的耐久性下降,而性能指标也下降了。这些趋势使得设计高效的非易失性存储器控制器的过程越来越具有挑战性。常规的非易失性存储器控制器已经采用了多种技术来试图掩盖这些特质中的某些特质。这些技术中的一些技术包括高级纠错码和动态调整阈值电压电平以降低读取错误率,通过热量感知数据放置算法将内部垃圾回收的开销最小化,通过执行磨损平衡来提高设备耐用性等。然而,随着比特密度的不断提高,仅靠这些技术并不能保证可接受的设备寿命。
与这些常规缺点形成鲜明对比的是,本文包括的一些实施例提高了针对存储在非易失性存储器中的数据维持读取和/或写入热量信息的准确性。例如,即使当数据位于写入高速缓存(例如,转出缓冲器)中时,本文所包括的一些方法也能够维持数据的读取和/或写入热量信息。例如将在下面进一步详细描述的,一些方法还能够通过在数据存储操作之前用数据的位置来增加热量跟踪信息元数据,增加存储器设备的数据读取和/或写入热量跟踪能力的分辨率。
现在参考图5,示出了根据一个实施例的存储系统500。作为选项,本存储系统500可结合来自本文列出的任何其他实施例的特征来实现,例如参考其他附图描述的那些。然而,本文提出的这种存储系统500和其他可用于可以在本文列出的说明性实施例中具体描述或不具体描述的各种应用和/或排列中使用。此外,本文提出的存储系统500可在任何期望的环境中使用。因此图5(和其他图)可被认为包括任何可能的排列。
如图所示,存储系统包括耦接到用户502的存储器模块504。换句话说,可在存储器模块504和用户502之间发送信息,数据,请求,指令等。取决于该方法,用户502可以是管理员,正在运行的应用程序,另一个存储器模块等,或可能希望向存储器模块504中写入数据和/或访问存储器模块504中的数据的任何其他类型的用户。
存储器模块504本身包括控制器506,其耦接到高速缓存508以及非易失性存储器510。根据一些方法,控制器506是能够在不同模式之间在非易失性存储器中重新配置存储器块的混合控制器。如上所述,具体取决于首选配置,可由诸如图5中的控制器506的混合控制器来将存储器的块从单等级单元(SLC)模式转换到每单元多比特模式(TLC,QLC等)。
参考高速缓存508,高速缓存体系结构通常包括在一组缓冲器(例如,转出缓冲器)中维持的已高速缓存的数据(例如,最近写入的数据)。这些缓冲器通常被包括在与主存储器510不同的介质上,例如,如图5所示。用于形成高速缓存508缓冲器的介质优选地比主存储器510更快,并且因此通常具有更小的存储容量。对于数据保留在高速缓存508缓冲器中的持续时间,在该数据上执行的数据访问操作可直接从高速缓存508来服务。在一些方法中,通过维持将逻辑块地址(LBA)映射到高速缓存条目内的高速缓存页的高速缓存映射表,可使用高速缓存508执行数据访问操作。因此,根据本方法的访问LBA的过程涉及首先查找LBA的高速缓存表,并且如果高速缓存查找导致未命中,则退回到LPT表(例如,参见图8A中的方法800)。然而,在其他方法中,通过将高速缓存页位置直接包含到现有LPT中来实现使用高速缓存508执行数据访问操作(例如,参见图8B中的方法850)。可使用未利用的物理块地址(PBA)范围将高速缓存页位置包含到现有LPT中。因此,根据本方法的访问LBA的过程涉及使用LPT执行的单表查找。
在一些方法中,高速缓存508是写入高速缓存(例如,转出缓冲器),而在其他方法中,高速缓存508可用作读取高速缓存。因此,例如,取决于期望的方法,高速缓存508可用作写入和/或读取高速缓存,并且因此可用于临时存储在一个或多个数据访问请求中指定的数据。例如,在一些方法中,高速缓存508包括容纳最近写入的数据的一组写入缓冲器。根据说明性的方法,支持基于热量的数据分离的高速缓存体系结构可实现高速缓存条目,该高速缓存条目在每个页条带上包括“K”个页缓冲器(例如,每个信道一个),以及在每个开放的块条带上包括“L”个开放的页条带。根据绝不旨在限制本发明的示例,该实现方式在每个块条带上具有3个数据流,32个平面,11个闪存信道,16KiB闪存页和4个开放的页条带,总高速缓存容量可被计算为3个数据流×32个平面×高速缓存条目(11个信道×4个闪存页×16KiB)=66MiB。
作为参考,图6A包括如上所述的具有66MiB的大小的示例性高速缓存条目600。高速缓存条目600包括多个页,这些页以所示的页条带和信道组织。此外,图6B描绘了示例性LPT 650,其将多个LBA映射到PBA。因此,如本领域的技术人员在阅读本说明书之后将理解的,LPT 650在某些方法中用于维持逻辑地址到存储器中的物理页的逻辑到物理映射(例如,以4KiB的粒度)。
参考回图5的存储器模块504,在优选方法中,非易失性存储器510包括任何期望类型的非易失性随机存取存储器,例如,诸如NAND闪存,NOR闪存,PCM,MRAM,RRAM等。但是,非易失性存储器510可包括任何期望类型的存储器,例如,电子存储设备,磁性存储设备,光学存储设备,电磁存储设备,半导体存储设备等。
随着数据在主存储器510和高速缓存508之间传送,与数据相对应的写入和读取热量信息被理想地维持。如上所述,在确保例如垃圾回收效率上,写入热量信息是期望的。例如,对写入热存储器块执行的垃圾回收操作也将防止触发写入冷数据的重定位。相反,缺乏基于热量的数据分离不期望地导致频繁地更新热数据和冷数据,这些数据并置在同一LEB上,从而不必要地增加了写入放大。出于磨损平衡的目的,还期望写入和/或读取热量信息。例如,热数据可被放置在更健康(例如,更年轻)的存储器块中,而冷数据可被放置在相对于那些更健康的存储器块来说更不健康(例如,更旧)的存储器块中。因此,相对更旧的块暴露于磨损的速率被有效地减慢,从而提高了实现基于热量的数据分离的给定数据存储系统的整体耐久性。为了确保将读取热数据放置在例如多层闪存存储系统中的更快的介质(例如,QLC NAND闪存中的SLC或MLC页)上,读取热量信息是期望的,从而提高了系统性能。
因此,当数据存在存储器模块504中时,优选地为数据维持写入和/或读取热量信息。尽管在主存储器510中维持数据的写入和/或读取热量信息相对简单,但是当数据在高速缓存中时存储系统先前已经无法继续更新该数据的写入和/或读取热量信息。结果,先前的系统遭受热量信息可用性的显著下降。然而,与这些常规缺点形成鲜明对比的是,本文包括的各种实施例通过支持读取和/或写入基于热量的数据分离来增强高速缓存体系结构。因此,本文所述的一些实施例能够在高速缓存中的数据生命周期内有效地保留读取和写入热量信息,以及例如很快就会变得明显的,在不使用附加元数据的情况下增大跟踪读取和写入热量的粒度。
现在参考图7A,示出了根据一个实施例的用于在数据在高速缓存中时维持数据的热量信息的方法700的流程图。方法700可根据本发明在各个实施例中,尤其是在图1-6B中描绘的任何环境中执行。当然,如本领域的技术人员在阅读本说明书时将理解的,比在图7A中具体描述的更多或更少的操作可被包括在方法700中。
方法700的每个步骤可由操作环境中的任何合适的组件来执行。例如,在各种实施例中,方法700可由控制器、处理器、计算机等或其中具有一个或多个处理器的某些其他设备来部分地或全部地执行。因此,在一些实施例中,方法700可以是计算机实现的方法。此外,术语“计算机”,“处理器”和“控制器”可以相对于本文中的任何实施例互换使用,此类组件被认为等同于本发明的各种排列。
此外,对于具有处理器的那些实施例,该处理器(例如,以硬件和/或软件实现的处理电路、芯片和/或模块,并且优选地具有至少一个硬件组件)可在任何设备中使用以执行方法700的一个或多个步骤。说明性处理器包括但不限于中央处理器(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等,其组合,或本领域已知的任何其他合适的计算设备。
如图7A所示,方法700的操作702包括接收与存储在存储器中的数据的一部分相对应的写入命令。写入命令可以是更新,其涉及更新在该写入命令中指定的数据的该部分中的一些或全部。因此,操作704包括将数据的该部分定位在存储器中,并且操作706包括将数据的该部分从非易失性存储器(例如,NAND闪存)转移到高速缓存中的页。
因为在操作702中接收的写入命令涉及对数据的该部分执行写入操作,因此,结果是至少与之相关联的写入热量已经增加(或将增加)。类似地,随着时间的流逝接收的读取操作将增加数据中与它们相对应的部分相关联的读取热量。更新高速缓存中数据的特定部分的读取和/或写入热量的过程可能具体取决于期望的方法而有所不同。例如,在一些方法中,对应于数据的读取和/或写入热量在数据甚至被转移到高速缓存之前被更新,并且在数据保留在高速缓存中的同时被维持(例如,参见下面的图7C中的方法750)。
然而,在其他方法中,与数据的该部分相关联的读取和/或写入热量信息优选地被维持,直到数据已被转移到高速缓存之后。因此,操作708包括在将数据的该部分转移到高速缓存之前,维持与数据的该部分相关联的先前读取和/或写入热量信息。针对数据的给定部分的读取和/或写入热量信息可被维持在一个或多个比特中。这些一个或多个比特在哈希表中实现,该哈希表以某些方法集成在高速缓存体系结构中。在其他方法中,这些比特可在主表中实现。因此,例如,无论数据存储在存储器模块中的何处,都可在数据的生命周期中维持与数据的每个部分相对应的一个或多个比特。
换句话说,用针对高速缓存中的数据的每一页的元数据条目来增强高速缓存体系结构,每个元数据条目包括针对数据的相应页的读取和/或写入热量信息。根据绝不旨在限制本发明的示例,实现具有4个不同读取热量级别的基于读取热量的数据分离方案的存储器模块可针对高速缓存中的每个页使用2个比特。这2个比特将因此能够存储针对高速缓存中的相应页的读取热量级别信息。类似地,实现具有2个不同写入热量级别的基于写入热量的数据分离方案的存储器模块可针对高速缓存中的每个页使用1比特。因此,该1比特将能够存储针对高速缓存中的相应页的写入热量级别信息。在其中针对高速缓存中的每个页维持读取和写入热量信息的情况可实现2个读取热量比特和1个写入热量比特,从而导致针对高速缓存中的每个页维持3比特信息。
仍然参考图7A,方法700还包括在高速缓存中维持数据的该部分。参见操作710。在某些方法中,以先进先出的方式维持高速缓存中的数据。因此,转移到高速缓存的数据的一部分可保留在高速缓存中直到随时间流逝被添加到高速缓存中的数据的其他部分替换为止。但是,可根据任何其他替换策略(例如,诸如,后进先出策略,最近最少使用的策略等)来管理高速缓存。因此,当数据的一部分保留在高速缓存中时,接收到的并对应于数据的该部分的读取和写入请求最好使用高速缓存来执行。如上所述,用于形成高速缓存缓冲器的数据存储介质通常比用于形成主存储器的数据存储介质更快。在可能的情况下使用高速缓存满足读取和/或写入请求,从而通过减少性能延迟来期望地提高效率。
响应于确定数据的该部分应从高速缓存中删除并返回到主存储器(例如,根据任何替换策略),方法700进行至操作712。在那里,操作712包括将数据的该部分从高速缓存的第一页转出到非易失性存储器。取决于给定的方法,数据的该部分可被转出到非易失性存储器中的不同位置。例如,在一些方法中,数据的该部分被转出到非易失性存储器中的一页或多页,其以最适合于与数据的该部分相对应的当前读取和/或写入热量信息的模式来配置。
如上所述,在一些方法中,可根据需要以不同的模式来配置存储器的每个块。可配置存储器块的每种模式都能够实现不同的性能特征,这对于某些情况可能是有益的。例如,与以每单元多比特模式配置的存储器块中的页相比,以SLC模式配置的存储器块中的页能够实现更快的读取和/或写入性能。此外,以每单元多比特模式配置的块中的不同页(例如,首页,附加页,较低页等)也可能能够实现彼此不同的性能水平。因此,数据中具有与之相关联的相对高的读取和/或写入热量的部分可期望地被转出到以SLC模式配置的存储器块中的一页或多页。可替代地,数据中具有与其相关联的相对低的读取和/或写入热量的部分可期望地被转出到以每单元多比特模式配置的存储器块中的一页或多页。此外,以每单元多比特模式配置的块中的不同页(例如,首页,附加页,较低页等)也可能能够实现彼此不同的性能水平。因此,可基于对应于数据的一部分的当前(例如,更新的)读取和/或写入热量信息来选择将数据的该部分转出到的块和/或块中的页。但是,应注意,可按任何期望的方式转出数据的该部分。
响应于在操作712中转出数据的该部分,方法700还包括更新高速缓存体系结构中的哈希表中与数据的该部分相对应的该一个或多个比特,以反映与数据的该部分相关联的当前读取和/或写入热量信息。参见操作714。换句话说,操作714包括更新哈希表中的该一个或多个比特,以反映对数据的该部分位于高速缓存中时可能已经发生的针对数据的该部分的读取和/或写入热量信息的任何更新。然而,更新该一个或多个比特以反映当前读取和/或写入热量信息的过程也可受到数据的该部分被转出到何处的影响。
同样,以不同模式配置的存储器块具有与其相关联的不同性能特征。因此,一些方法可利用映射到数据的一部分的LBA的现有物理存储位置(PBA)来增加读取和/或写入热量跟踪粒度。换句话说,对于基于与其相关联的读取和/或写入热量信息将数据分离为不同页类型的多层闪存存储系统,可利用现有页类型来增加所述数据的读取和/或写入热量信息。根据绝不旨在限制本发明的示例,存储系统除了具有处于逻辑页级别的2比特读取热计数器之外,还具有4个不同的页类型。对于此示例,读取热量信息的分辨率实际上提高了一倍,因为总共有8个不同的读取热量级别,其中包括基于2比特计数器的4个读取热量级别,以及基于不同的可能页类型的另外4个读取热量级别。
因此,可通过执行多个子过程来实现更新哈希表中的该一个或多个比特以反映与在上述操作714中看到的与数据的该部分相关联的当前读取和/或写入热量信息的过程。例如,图7B包括根据一个实施例的用于更新哈希表中的该一个或多个比特以反映与数据的该部分相关联的当前读取和/或写入热量信息的多个示例性子过程。这些子过程中的任何一个或多个可用于执行图7A的操作714。然而,应当注意,图7B的子过程是根据决不旨在限制本发明的一个实施例示出的。
如图所示,子操作720包括确定数据的该部分已经被转出到的页类型。在一些方法中,子操作720可通过实际检查数据的该部分已经被转出到的页的物理配置来执行。在其他方法中,子操作720可通过访问在存储器中维持每个页的当前配置模式的查找表或者在阅读本说明书之后对于本领域技术人员显而易见的任何其他过程来执行。
子操作722进一步包括基于数据已经被转出到的页类型来推断与数据相关联的补充读取和/或写入热量信息。再次,以不同模式配置的存储器块具有与其相关的不同性能特征。因此,一些方法可利用映射到数据的一部分的LBA的现有物理存储位置(PBA)来增加读取和/或写入热量跟踪粒度。换句话说,对于基于与其相关联的读取和/或写入热量信息将数据分离为不同页类型的多层闪存存储系统,可利用现有页类型来增加所述数据的读取和/或写入热量信息。
因此,该补充读取和/或写入热量信息可用于更新哈希表中的该一个或多个比特以反映与数据的该部分相关联的当前读取和/或写入热量信息的过程。因此,子操作724包括通过将补充读取和/或写入热量信息与对被存储在高速缓存中的第一页中时的数据执行的数据访问操作相结合来确定当前的读取和/或写入热量信息。还应注意,其他页信息也可用在跟踪读取和/或写入热量信息的过程中。例如,如本领域技术人员在阅读本说明书之后将理解的,例如,其中数据的一部分被存储在其中的特定类型的存储器芯片、存储层等可提供附加的读取和/或写入热量信息。
如上所述,更新数据的读取和/或写入热量信息的方式可取决于给定的方法而变化。例如,虽然方法700包括一旦数据的该部分已经被转出回到主存储器,则更新读取和/或写入热量信息,但是图7C包括根据另一示例性实施例的用于在数据位于高速缓存中时维持数据的读取和/或写入热量信息的另一种方法750。方法750可根据本发明在各个实施例中,尤其是图1-6B中描绘的任何环境中执行。例如,图7C包括图7A的方法700中包括的一些过程的变型。因此,方法750中包括的一些过程可实现以上关于图7A描述的任何一种或多种方法。然而,如本领域的技术人员在阅读本说明书时将理解的,比图7C中具体描述的操作更多或更少的操作可被包括在方法750中。
方法750的每个步骤可由操作环境的任何合适的组件来执行。例如,在各种实施例中,方法750可由控制器、处理器、计算机等或其中具有一个或多个处理器的某些其他设备来部分地或全部地执行。因此,在一些实施例中,方法750可以是计算机实现的方法。此外,术语“计算机”,“处理器”和“控制器”可相对于本文中的任何实施例互换使用,此类组件被认为等同于本发明的各种排列。
此外,对于具有处理器的那些实施例,该处理器(例如,以硬件和/或软件实现的处理电路、芯片和/或模块,并且优选地具有至少一个硬件组件)可在任何设备中使用以执行方法750的一个或多个步骤。说明性处理器包括但不限于中央处理器(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等,其组合,或本领域已知的任何其他合适的计算设备。
如图7C所示,方法750的操作752包括接收与存储在存储器中的数据的一部分相对应的写入命令。写入命令可以是更新,其涉及更新在该写入命令中指定的数据的该部分中的一些或全部。因此,操作754包括将数据的该部分定位在存储器中,并且操作756还包括更新高速缓存体系结构中的哈希表中与数据的该部分相对应的一个或多个比特,以反映与数据的该部分相对应的当前读取和/或写入热量信息。
再次,由于在操作752中接收的写入命令涉及对数据的该部分执行写入操作,因此,结果是至少与其相关联的写入热量已增加(或将增加)。类似地,随着时间的流逝接收的读取操作将增加数据中与它们相对应的部分相关联的读取热量。在数据甚至被转移到高速缓存并在数据保留在高速缓存中时被维持之前,更新与数据的一部分相对应的读取和/或写入热量与上文在方法700中描述的过程不同,但是实现了保留读取和/或写入热量信息的准确表示的相同结果,这些信息对应于存储器中数据的各个部分。因此,可实现上述任何一种或多种方法以执行操作756。
因此,可通过执行多个子过程来实现更新哈希表中的该一个或多个比特以反映与在上述操作756中看到的与数据的该部分相关联的当前读取和/或写入热量信息的过程。例如,根据一个实施例,图7D包括用于更新哈希表中的该一个或多个比特以反映与数据的该部分相关联的当前读取和/或写入热量信息的多个示例性子过程。这些子过程中的任何一个或多个可用于执行图7C的操作756。然而,应当注意,图7D的子过程是根据决不旨在限制本发明的一个实施例示出的。
如图所示,子操作770包括确定非易失性存储器中存储数据的页的类型。再次,配置存储器块的模式影响给定块的性能特征。例如,与以每单元多比特模式配置的存储器块中的页相比,以SLC模式配置的存储器块中的页能够实现更快的读取和/或写入性能。此外,以每单元多比特模式配置的块中的不同页(例如,首页,附加页,较低页等)也可能能够实现彼此不同的性能水平。因此,数据中具有与其相关联的相对高的读取和/或写入热量的一部分可以期望地存储在以SLC模式配置的存储器块中的一页或多页中。可替代地,数据中具有与其相关联的相对低的读取和/或写入热量的一部分可以期望地存储在以每单元多比特模式配置的存储器块中的一页或多页中。
在一些方法中,可通过实际检查存储数据的该部分的页的物理配置来执行子操作770。在其他方法中,可通过访问维持存储器中每个页的当前配置模式的查找表,或者在阅读了本说明书之后对于本领域技术人员显而易见的任何其他过程,执行子操作770。还应注意,在跟踪读取和/或写入热量信息的过程中也可使用其他页信息。例如,如本领域技术人员在阅读本说明书之后将理解的,例如,其中数据的一部分被存储在其中的特定类型的存储器芯片、存储层等可提供附加的读取和/或写入热量信息。
子操作772还包括基于非易失性存储器中存储数据的页的类型来推断与数据相关联的补充读取和/或写入热量信息。该补充读取和/或写入热量信息因此可在更新哈希表中的该一个或多个比特的过程中使用,以反映与数据的该部分相关联的当前读取和/或写入热量信息。因此,子操作774包括通过将补充读取和/或写入热量信息与对存储在非易失性存储器中时的数据执行的数据访问操作相结合来确定当前读取和/或写入热量信息。
返回图7C,操作758包括将数据的一部分从非易失性存储器(例如,NAND闪存)转移到高速缓存中的页。此外,操作760包括通过在哈希表中保留与数据的该部分相对应的该一个或多个比特来维持与数据的该部分相对应的当前更新的读取和/或写入热量信息。结果,当数据的该部分仍保留在高速缓存中,甚至在数据从高速缓存转出的时间点时,对应于数据的该部分的更新的读取和/或写入热量信息是可用的。
因此,操作762包括将数据的该部分从高速缓存中的第一页转出到非易失性存储器。如上所述,数据可根据任何期望的替换策略从高速缓存中转出。相应地,在一些方法中,响应于被最近写入的其他数据替换,将数据的该部分从高速缓存转出。
因此,本文包括的各种实施例能够在实现高速缓存体系结构的存储器中执行热量跟踪。本文包括的一些实施例利用元数据来增大控制器体系结构,以跟踪读取和/或写入热量信息。例如,在一页数据进入高速缓存时,控制器可例如根据本文描述的任何方法来保存和/或更新与给定页相对应的读取和/或写入热量信息。此外,响应于转出从高速缓存逐出的给定页,控制器可例如根据本文所述的任何方法来保存和/或更新与给定页相对应的读取和/或写入热量信息。
本文包括的一些实施例还能够通过利用存储数据的物理位置来增加读取和/或写入热量信息的分辨率。该增加的热量信息分辨率显著提高总体系统的性能,而无需将任何附加元数据引入存储器。此外,尽管新写入的数据在存储在存储器中时可能没有与之对应的任何读取和/或写入热量信息,但是本文中包括的任何方法都可应用于在数据的整个生命周期内累积读取和/或写入热量信息,并帮助选择数据的首选存储位置,同时改善整个系统的性能。
如上所述,由具有写入高速缓存的存储器模块满足数据访问请求的方式根据特定方法而不同。例如,参考图8A-8B,根据两个不同的实施例示出了执行数据访问操作的两个不同的方法800、850。方法800、850中的任何一个可根据本发明在各个实施例中,尤其是在图1-7D中描绘的任何环境中执行。当然,如本领域的技术人员在阅读本说明书之后将理解的,比在图8A-8B中具体描述的操作更多或更少的操作可被包括在方法800、850中。
方法800、850中的任一个方法中的每个步骤可由操作环境的任何合适的组件执行。例如,在各种实施例中,方法800和/或方法850可由控制器、处理器等或其中具有一个或多个处理器的某些其他设备来部分地或全部地执行。可在任何设备中利用处理器(例如,以硬件和/或软件实现的处理电路、芯片和/或模块,并且优选地具有至少一个硬件组件)来执行方法800、850中的一个或多个步骤。说明性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等,其组合,或本领域已知的任何其他合适的计算设备。
具体地参考图8A,方法800对应于维持高速缓存映射表的方法,该高速缓存映射表将LBA映射到高速缓存条目内的高速缓存页。因此,操作802包括接收与数据的一部分相对应的数据访问操作。判定804包括确定数据的该部分是否被包括在高速缓存表中。同样,方法800对应于其中高速缓存表将LBA映射到高速缓存中的数据页的方法。因此,高速缓存表能够识别当前存储在高速缓存中的数据。
响应于确定数据的该部分被包括在高速缓存表中,方法800进行到操作806,其包括使用高速缓存中的数据的该部分来满足数据访问操作。但是,响应于确定数据的该部分没有被包括在高速缓存表中,方法800进行到操作808。在那里,操作808包括通过参考逻辑到物理表来定位数据的该部分。此外,操作810包括使用数据的该部分的位置来满足数据访问操作。
因此,如方法800中所述的访问LBA的过程涉及首先查找LBA的高速缓存表,如果高速缓存查找导致未命中,则退回到LPT表。然而,在其他方法中,例如如图8B的方法850所示,通过将高速缓存页位置直接包含到现有LPT中来实现使用高速缓存执行数据访问操作。
现在参考图8B,操作852包括接收与数据的一部分相对应的数据访问操作。此外,操作854包括通过引用逻辑到物理表来定位数据的该部分。如上所述,逻辑到物理表包含与高速缓存中包括的数据相对应的数据存储位置信息。因此,通过参考逻辑到物理表来定位数据的该部分,数据的该部分的位置可进一步用于满足数据访问操作。参见操作856。
此外,即使当数据在高速缓存中时,本文包括的一些实施例也能够在控制器体系结构中保留读取和/或写入热量信息。本文包括的一些实施例还能够通过利用存储数据的物理位置来增加读取和/或写入热量信息的分辨率。此外,与常规实现方式相比,本文包括的一些实施例能够实现读取和/或写入热量跟踪的更高分辨率(例如,粒度)。还可在元数据存储器方面不引入任何额外过热的情况下实现这种提高的分辨率,从而显著提高效率。
在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以部分或全部时间上重叠的方式在一步执行,并行地执行,基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
此外,根据各种实施例的系统可包括处理器和与处理器集成在一起和/或可由处理器执行的逻辑,该逻辑被配置为执行本文所述的一个或多个处理步骤。“集成”是指处理器具有作为硬件逻辑嵌入其中的逻辑,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)等。“处理器可执行的”是指逻辑是硬件逻辑;软件逻辑,例如固件、操作系统的一部分、应用程序的一部分;等,或者处理器可访问并被配置为在处理器执行时使处理器执行某些功能的硬件和软件逻辑的某种组合。如本领域中已知的,软件逻辑可被存储在具有任何存储器类型的本地和/或远程存储器上。可使用本领域已知的任何处理器,例如软件处理器模块和/或硬件处理器,例如ASIC、FPGA、中央处理单元(CPU)、集成电路(IC)、图形处理单元(GPU)等。
图9示出了根据一个实施例的网络体系结构900。如图9所示,提供了包括第一远程网络904和第二远程网络906的多个远程网络902。网关901可耦接在远程网络902和邻近网络908之间。在本网络体系结构900的上下文中,网络904、906的每一个可采用任何形式,包括但不限于:LAN、诸如互联网的WAN、公共交换电话网(PSTN)、内部电话网等。
在使用中,网关901充当从远程网络902到邻近网络908的入口点。这样,网关901可充当能够引导到达网关901的给定数据分组的路由器,以及为给定分组提供进出网关901的实际路径的交换机。
还包括至少一个数据服务器914,其耦接到邻近网络908,并且可通过网关901从远程网络902访问。应当注意,数据服务器914可包括任何类型的计算设备/群件。每个数据服务器914耦接有多个用户设备916。此类用户设备916可包括台式计算机、膝上型计算机、手持式计算机、打印机或任何其他类型的包含逻辑的设备。应当注意,在一些实施例中,用户设备911也可直接耦接到任何网络。
外围设备920或一系列外围设备920,例如传真机、打印机、扫描仪、硬盘驱动器、联网的和/或本地的数据存储单元或系统等,可耦接到网络904、906、908中的一个或多个。应注意,数据库和/或附加组件可与耦接到网络904、906、908的任何类型的网络元件一起使用或集成到其中。在本说明书的上下文中,网络元件可指代网络的任何组件。
根据一些实施例,本文描述的方法和系统可与虚拟系统和/或模拟一个或多个其他系统的系统一起实现和/或在其上实现,例如模拟MICROSOFT WINDOWS环境的UNIX系统等。在一些实施例中,这种虚拟化和/或仿真可通过使用VMware软件来增强。
在其它实施例中,一个或多个网络904、906、908可代表通常被称为“云”的系统集群。在云计算中,诸如处理能力,外围设备,软件,数据,服务器等的共享资源以按需关系被提供给云中的任何系统,从而允许跨多个计算系统的访问和服务分配。云计算通常涉及在云中运行的系统之间的互联网连接,但是如在本领域中已知的,连接系统的其他技术也可被使用。
图10示出了根据一个实施例的与图9的用户设备916和/或服务器914相关联的代表性硬件环境。图10示出了根据一个实施例的处理系统1000的典型硬件配置,该处理系统1000具有诸如微处理器的中央处理单元1010,以及经由系统总线1012互连的许多其他单元。在一些实施例中,中央处理单元1010可包括以上参考图2的该一个或多个处理器210描述的方法中的任何一个。
图10所示的处理系统1000包括:随机存取存储器(RAM)1014,只读存储器(ROM)1016,以及I/O适配器1018。根据决不旨在限制本发明的一些实施例,I/O适配器1018可包括以上参考图2的I/O适配器218描述的任何方法。仍然参考图10的处理器系统1000,前述组件1014、1016、1018可用于将外围设备(例如,存储子系统1020)连接到总线1012。在一些实施例中,存储子系统1020可包括与图2的数据存储系统220相似和/或相同的配置。根据绝不旨在限制本发明的一个示例,除了如图2所示的RAID控制器之外,存储子系统1020可包括非易失性数据存储卡,其例如具有NVRAM存储卡,RAM,ROM和/或一些其他已知类型的非易失性存储器。
仍然参考图10,用户接口适配器1022用于将键盘1024,鼠标1026,扬声器1028,麦克风1032和/或其他用户接口设备(例如触摸屏和数码相机(未显示))连接到总线1012。
处理器系统1000进一步包括将处理器系统1000连接到通信网络1035(例如,数据处理网络)的通信适配器1034和将总线1012连接到显示设备1038的显示适配器1036。
处理器系统1000上可驻留有操作系统,例如MICROSOFT WINDOWS操作系统(OS),MAC OS,UNIX OS等。应当理解,优选实施例也可在除了所提到的之外的平台和操作系统上实现。优选实施例可使用JAVA、XML、C和/或C++语言,或其他编程语言,以及面向对象的编程方法来编写。可使用面向对象编程(OOP),其已越来越多地用于开发复杂的应用程序。
此外,图11示出了根据一个实施例的存储系统1100,其结合低等级(例如,磁带)存储层来实现高等级(例如SSD)存储层。注意,根据各种实施例,图11中所示的元件中的一些元件可被实现为硬件和/或软件。存储系统1100可包括用于与在至少一个较高存储层1102和至少一个较低存储层1106上的多个介质进行通信的存储系统管理器1112。然而,在其他方法中,存储系统管理器1112可与至少一个较高存储层1102上的多个介质通信,但是不与较低存储层上的介质通信。较高存储层1102可优选地包括:一个或多个随机访问和/或直接访问介质1104,例如硬盘驱动器、非易失性存储器(NVM)、NVRAM、SSD中的固态存储器、闪存、SSD阵列、闪存阵列等,和/或本文所述或本领域已知的其他介质。根据说明性示例,图3-4示出了取决于期望的实施例的可用作较高存储层1102的SSD系统的示例性体系结构。
仍然参考图11,较低存储层1106优选地包括一个或多个较低级性能的存储介质1108,包括顺序访问介质(例如,磁带驱动器中的磁带和/或光学介质),访问速度较慢的HDD,访问速度较慢的SSD等,和/或本文所述或本领域已知的其他介质。一个或多个附加存储层1116可包括系统1100的设计者所期望的存储存储器介质的任何组合。因此,在一些方法中,该一个或多个附加存储层1116可包括与图1-2所示的那些相似或相同的SSD系统体系结构。同样地,较高存储层1102和/或较低存储层1106中的任何一个可包括存储设备和/或存储介质的任何组合。
存储系统管理器1112可通过网络1110(诸如如图11所示的存储区域网络(SAN)或一些其他合适的网络类型)与较高存储层1102和较低存储层1106上的存储介质1104、1108通信。存储系统管理器1112还可通过主机接口1114与一个或多个主机系统(未示出)通信,该主机接口可以是或可以不是存储系统管理器1112的一部分。存储系统管理器1112和/或存储系统1100的任何其他组件可用硬件和/或软件来实现,并且可利用处理器(未示出)来执行本领域中已知类型的命令,例如中央处理单元(CPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等。当然,如本领域技术人员在阅读本说明书后将显而易见的是,可使用存储系统的任何布置。
在更多实施例中,存储系统1100可包括任何数量的数据存储层,并且可在每个存储层内包括相同或不同的存储存储器介质。例如,每个数据存储层可包括相同类型的存储存储器介质,例如HDD,SSD,顺序访问介质(磁带驱动器中的磁带,光盘驱动器中的光盘等),直接访问介质(CD-ROM,DVD-ROM等),或媒体存储类型的任意组合。在一种此类配置中,较高存储层1102可包括用于在较高性能的存储环境中存储数据的大多数SSD存储介质,而包括较低存储层1106和附加存储层1116的其余存储层可包括用于在较低性能的存储环境中存储数据的SSD,HDD,磁带驱动器等的任何组合。这样,更频繁访问的数据、具有较高优先级的数据、需要更快速地访问的数据等可被存储到较高存储层1102,而不具有这些属性中的一个属性的数据可被存储到包括较低存储层1106的附加存储层1116。当然,本领域的技术人员在阅读了本说明书之后,可根据本文提出的实施例设计出存储介质类型的许多其他组合以实现为不同的存储方案。
根据一些实施例,存储系统(例如1100)可包括:被配置为接收打开数据集的请求的逻辑,被配置为确定所请求的数据集是否以多个相关联的部分被存储到分层数据存储系统1100的较低存储层1106的逻辑,被配置为将所请求的数据集的每个相关联的部分移动到分层数据存储系统1100的较高存储层1102的逻辑,以及被配置为将所请求的数据集从相关联的部分集成到分层数据存储系统1100的较高存储层1102上的逻辑。
当然,根据各种实施例,该逻辑可被实现为任何设备和/或系统上的方法或计算机程序产品。
将清楚的是,可以以任何方式来组合前述系统和/或方法的各种特征,从而从以上呈现的描述中创建多个组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (22)
1.一种用于在数据位于高速缓存中时维持数据的热量信息的计算机实现的方法,包括:
将数据从非易失性存储器转移到所述高速缓存,其中,所述数据被存储在所述高速缓存的第一页中;
通过在哈希表中保留与所述第一页中的所述数据相对应的一个或多个比特,维持与所述数据相关联的先前读取和/或写入热量信息;
将所述数据从所述高速缓存中的所述第一页转出到所述非易失性存储器;以及
更新所述哈希表中与所述数据相对应的所述一个或多个比特以反映与所述数据相关联的当前读取和/或写入热量信息。
2.根据权利要求1所述的计算机实现的方法,其中,更新所述哈希表中与所述数据相对应的所述一个或多个比特以反映与所述数据相关联的当前读取和/或写入热量信息包括:
确定所述数据已被转出到的页类型;
基于所述数据已被转出到的所述页类型推断与所述数据相关联的补充读取和/或写入热量信息;以及
通过将所述补充读取和/或写入热量信息与对被存储在所述高速缓存中的所述第一页中时的所述数据执行的数据访问操作相结合,确定所述当前读取和/或写入热量信息。
3.根据权利要求1所述的计算机实现的方法,还包括:
接收对应于数据的一部分的数据访问操作;
确定数据的所述部分是否被包括在高速缓存表中,其中,所述高速缓存表将逻辑块地址映射到所述高速缓存中的数据页;
响应于确定数据的所述部分未被包括在所述高速缓存表中,通过参考逻辑到物理表来定位数据的所述部分;以及
使用数据的所述部分的位置来满足所述数据访问操作。
4.根据权利要求1所述的计算机实现的方法,还包括:
接收对应于数据的一部分的数据访问操作;
通过参考逻辑到物理表来定位数据的所述部分,其中,所述逻辑到物理表包含与在所述高速缓存中包括的数据相对应的位置信息;以及
使用数据的所述部分的位置来满足所述数据访问操作。
5.根据权利要求1所述的计算机实现的方法,其中,所述热量信息包括读取热量信息。
6.根据权利要求1所述的计算机实现的方法,其中,所述热量信息包括写入热量信息。
7.根据权利要求1所述的计算机实现的方法,其中,所述热量信息包括读取热量信息和写入热量信息。
8.根据权利要求1所述的计算机实现的方法,其中,所述非易失性存储器是NAND闪存。
9.一种计算机程序产品,包括计算机可读存储介质,所述计算机可读存储介质中体现有程序指令,所述程序指令能够由处理器读取和/或执行以使所述处理器执行根据权利要求1至8中任一项所述的方法的步骤。
10.一种用于在数据位于高速缓存中时维持数据的热量信息的设备,包括执行根据权利要求1至8中任一项所述的方法的步骤的装置。
11.一种系统,包括:
处理器;
包括程序指令的存储器介质,当所述程序指令被执行时,使所述系统执行根据权利要求1至8中任一项所述的方法的步骤。
12.一种用于在数据位于高速缓存中时维持数据的热量信息的计算机实现的方法,包括:
更新哈希表中与数据相对应的一个或多个比特,以反映与所述数据相对应的当前读取和/或写入热量信息;
将所述数据从非易失性存储器转移到所述高速缓存,其中,所述数据被存储在所述高速缓存的第一页中;
通过在所述哈希表中保留与所述数据相对应的所述一个或多个比特,维持与所述数据相对应的所述当前读取和/或写入热量信息;以及
将所述数据从所述高速缓存中的所述第一页转出到所述非易失性存储器。
13.根据权利要求12所述的计算机实现的方法,其中,更新所述哈希表中与所述数据相对应的所述一个或多个比特以反映与所述数据相对应的所述当前读取和/或写入热量信息包括:
确定所述非易失性存储器中存储所述数据的页类型;
基于所述非易失性存储器中存储所述数据的页类型推断与所述数据相关联的补充读取和/或写入热量信息;以及
通过将所述补充读取和/或写入热量信息与对被存储在所述非易失性存储器中时的所述数据已执行的数据访问操作相结合,确定所述当前读取和/或写入热量信息。
14.根据权利要求12所述的计算机实现的方法,还包括:
接收对应于数据的一部分的数据访问操作;
确定数据的所述部分是否被包括在高速缓存表中,其中,所述高速缓存表将逻辑块地址映射到所述高速缓存中的数据页;
响应于确定数据的所述部分未被包括在所述高速缓存表中,通过参考逻辑到物理表来定位数据的所述部分;以及
使用数据的所述部分的位置来满足所述数据访问操作。
15.根据权利要求12所述的计算机实现的方法,包括:
接收对应于数据的一部分的数据访问操作;
通过参考逻辑到物理表来定位数据的所述部分,其中,所述逻辑到物理表包含与在所述高速缓存中包括的数据相对应的位置信息;以及
使用数据的所述部分的位置来满足所述数据访问操作。
16.根据权利要求12所述的计算机实现的方法,其中,所述热量信息包括读取热量信息。
17.根据权利要求12所述的计算机实现的方法,其中,所述热量信息包括写入热量信息。
18.根据权利要求12所述的计算机实现的方法,其中,所述热量信息包括读取热量信息和写入热量信息。
19.根据权利要求12所述的计算机实现的方法,其中,所述非易失性存储器是NAND闪存。
20.一种计算机程序产品,包括计算机可读存储介质,所述计算机可读存储介质中体现有程序指令,所述程序指令能够由处理器读取和/或执行以使所述处理器执行根据权利要求12至19中任一项所述的方法的步骤。
21.一种用于在数据位于高速缓存中时维持数据的热量信息的设备,包括执行根据权利要求12至19中任一项所述的方法的步骤的装置。
22.一种系统,包括:
处理器;
包括程序指令的存储器介质,当所述程序指令被执行时,使所述系统执行根据权利要求12至19中任一项所述的方法的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/534834 | 2019-08-07 | ||
US16/534,834 US11151053B2 (en) | 2019-08-07 | 2019-08-07 | Increasing data read and/or write heat tracking resolution in storage devices having cache architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112346658A true CN112346658A (zh) | 2021-02-09 |
CN112346658B CN112346658B (zh) | 2024-07-02 |
Family
ID=74358308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010781196.8A Active CN112346658B (zh) | 2019-08-07 | 2020-08-06 | 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11151053B2 (zh) |
CN (1) | CN112346658B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11513952B2 (en) * | 2020-07-01 | 2022-11-29 | Micron Technology, Inc. | Data separation for garbage collection |
CN117331514B (zh) * | 2023-12-01 | 2024-02-23 | 超越科技股份有限公司 | 一种基于区域划分的固态盘数据压缩系统及方法 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080114930A1 (en) * | 2006-11-13 | 2008-05-15 | Hitachi Global Storage Technologies Netherlands B.V. | Disk drive with cache having volatile and nonvolatile memory |
CN102317901A (zh) * | 2011-07-25 | 2012-01-11 | 华为技术有限公司 | 对象调整方法、迁移控制设备、节点设备及存储系统 |
CN102770848A (zh) * | 2010-02-01 | 2012-11-07 | 国际商业机器公司 | 存储控制器中的转出任务的动态管理 |
CN103106047A (zh) * | 2013-01-29 | 2013-05-15 | 浪潮(北京)电子信息产业有限公司 | 一种基于对象的存储系统及其存储方法 |
CN103186350A (zh) * | 2011-12-31 | 2013-07-03 | 北京快网科技有限公司 | 混合存储系统及热点数据块的迁移方法 |
CN104731523A (zh) * | 2013-12-24 | 2015-06-24 | 国际商业机器公司 | 非易失性分级存储系统中的协同管理的方法及其控制器 |
CN104915145A (zh) * | 2014-03-11 | 2015-09-16 | 华为技术有限公司 | 一种降低LSM Tree写放大的方法和装置 |
US20170075812A1 (en) * | 2015-09-16 | 2017-03-16 | Intel Corporation | Technologies for managing a dynamic read cache of a solid state drive |
CN106933516A (zh) * | 2017-03-16 | 2017-07-07 | 郑州云海信息技术有限公司 | 一种混合介质的存储系统的存储控制方法及装置 |
CN107645547A (zh) * | 2017-09-14 | 2018-01-30 | 郑州云海信息技术有限公司 | 基于存储设备的数据热度确定方法、设备以及系统 |
CN107844269A (zh) * | 2017-10-17 | 2018-03-27 | 华中科技大学 | 一种基于一致性哈希的分层混合存储系统及方法 |
CN109582233A (zh) * | 2018-11-21 | 2019-04-05 | 网宿科技股份有限公司 | 一种数据的缓存方法和装置 |
CN109783016A (zh) * | 2018-12-25 | 2019-05-21 | 西安交通大学 | 一种分布式存储系统中的弹性多维度冗余方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8972661B2 (en) * | 2011-10-31 | 2015-03-03 | International Business Machines Corporation | Dynamically adjusted threshold for population of secondary cache |
US9292228B2 (en) * | 2013-02-06 | 2016-03-22 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Selective raid protection for cache memory |
US9558107B2 (en) * | 2013-12-24 | 2017-01-31 | International Business Machines Corporation | Extending useful life of a non-volatile memory by health grading |
US9251909B1 (en) | 2014-09-29 | 2016-02-02 | International Business Machines Corporation | Background threshold voltage shifting using base and delta threshold voltage shift values in flash memory |
US10078582B2 (en) * | 2014-12-10 | 2018-09-18 | International Business Machines Corporation | Non-volatile memory system having an increased effective number of supported heat levels |
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 |
KR102258126B1 (ko) * | 2015-03-19 | 2021-05-28 | 삼성전자주식회사 | 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템 |
US10008250B2 (en) | 2015-03-27 | 2018-06-26 | Intel Corporation | Single level cell write buffering for multiple level cell non-volatile memory |
US9496043B1 (en) | 2015-06-24 | 2016-11-15 | International Business Machines Corporation | Dynamically optimizing flash data retention or endurance based on data write frequency |
-
2019
- 2019-08-07 US US16/534,834 patent/US11151053B2/en active Active
-
2020
- 2020-08-06 CN CN202010781196.8A patent/CN112346658B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080114930A1 (en) * | 2006-11-13 | 2008-05-15 | Hitachi Global Storage Technologies Netherlands B.V. | Disk drive with cache having volatile and nonvolatile memory |
CN102770848A (zh) * | 2010-02-01 | 2012-11-07 | 国际商业机器公司 | 存储控制器中的转出任务的动态管理 |
CN102317901A (zh) * | 2011-07-25 | 2012-01-11 | 华为技术有限公司 | 对象调整方法、迁移控制设备、节点设备及存储系统 |
CN103186350A (zh) * | 2011-12-31 | 2013-07-03 | 北京快网科技有限公司 | 混合存储系统及热点数据块的迁移方法 |
CN103106047A (zh) * | 2013-01-29 | 2013-05-15 | 浪潮(北京)电子信息产业有限公司 | 一种基于对象的存储系统及其存储方法 |
CN104731523A (zh) * | 2013-12-24 | 2015-06-24 | 国际商业机器公司 | 非易失性分级存储系统中的协同管理的方法及其控制器 |
CN104915145A (zh) * | 2014-03-11 | 2015-09-16 | 华为技术有限公司 | 一种降低LSM Tree写放大的方法和装置 |
US20170075812A1 (en) * | 2015-09-16 | 2017-03-16 | Intel Corporation | Technologies for managing a dynamic read cache of a solid state drive |
CN106933516A (zh) * | 2017-03-16 | 2017-07-07 | 郑州云海信息技术有限公司 | 一种混合介质的存储系统的存储控制方法及装置 |
CN107645547A (zh) * | 2017-09-14 | 2018-01-30 | 郑州云海信息技术有限公司 | 基于存储设备的数据热度确定方法、设备以及系统 |
CN107844269A (zh) * | 2017-10-17 | 2018-03-27 | 华中科技大学 | 一种基于一致性哈希的分层混合存储系统及方法 |
CN109582233A (zh) * | 2018-11-21 | 2019-04-05 | 网宿科技股份有限公司 | 一种数据的缓存方法和装置 |
CN109783016A (zh) * | 2018-12-25 | 2019-05-21 | 西安交通大学 | 一种分布式存储系统中的弹性多维度冗余方法 |
Non-Patent Citations (1)
Title |
---|
刘飞等: "异构存储感知的Ceph存储系统数据放置方法", 计算机科学, vol. 44, no. 6, pages 17 - 22 * |
Also Published As
Publication number | Publication date |
---|---|
CN112346658B (zh) | 2024-07-02 |
US20210042239A1 (en) | 2021-02-11 |
US11151053B2 (en) | 2021-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11036580B2 (en) | Metadata hardening and parity accumulation for log-structured arrays | |
CN114072774B (zh) | 数据存储系统中的块模式切换 | |
US10949108B2 (en) | Enhanced application performance in multi-tier storage environments | |
US11138124B2 (en) | Migrating data between block pools in a storage system | |
US11762569B2 (en) | Workload based relief valve activation for hybrid controller architectures | |
US10613784B2 (en) | Adaptive assignment of open logical erase blocks to data streams | |
US9870285B2 (en) | Selectively de-straddling data pages in non-volatile memory | |
US11360903B2 (en) | Data placement in write cache architecture supporting read heat data separation | |
US11086565B2 (en) | Reducing effects of read array operations of read apparent voltage | |
US11036427B2 (en) | Using content addressable memory to perform read-modify-write operations in non-volatile random access memory (NVRAM) | |
JP7486534B2 (ja) | ストレージ・システムにおけるブロック・プール・サイズの適合 | |
CN114556303A (zh) | 更新非易失性随机存取存储器中的校正读取电压偏移 | |
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 |