CN111381776A - 用于存储器装置的方法、系统和计算机可读媒体 - Google Patents
用于存储器装置的方法、系统和计算机可读媒体 Download PDFInfo
- Publication number
- CN111381776A CN111381776A CN201911397721.XA CN201911397721A CN111381776A CN 111381776 A CN111381776 A CN 111381776A CN 201911397721 A CN201911397721 A CN 201911397721A CN 111381776 A CN111381776 A CN 111381776A
- Authority
- CN
- China
- Prior art keywords
- blocks
- allocated
- garbage collection
- data structure
- system data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000004044 response Effects 0.000 claims abstract description 39
- 238000012545 processing Methods 0.000 claims description 93
- 230000015654 memory Effects 0.000 description 175
- 238000007726 management method Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 15
- 238000013507 mapping Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000009977 dual effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- 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/70—Details relating to dynamic memory management
-
- 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/7202—Allocation control and policies
-
- 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
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)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请案涉及用于存储器装置的方法、系统和计算机可读媒体。可接收对添加内容到系统数据结构的请求。块的共用池的第一组块分配给所述系统数据结构,且块的所述共用池的第二组块分配给用户数据。可确定与所述共用池的分配给所述系统数据结构的所述第一组块相关联的无用单元收集操作是否满足无用单元收集性能条件。响应于确定所述无用单元收集操作满足所述无用单元收集性能条件,可将块从所述共用池分配到分配给所述系统数据结构的所述第一组块。
Description
技术领域
本公开的实施例大体上涉及存储器子系统,且更具体地说,涉及将块的共用池用于用户数据和系统数据结构。
背景技术
存储器子系统可以是存储系统,如固态驱动器(solid-state drive;SSD)或硬盘驱动器(hard disk drive;HDD)。存储器子系统可以是存储器模块,如双列直插式存储器模块(dual in-line memory module;DIMM)、小型DIMM(small outline DIMM;SO-DIMM)或非易失性双列直插式存储器模块(non-volatile dual in-line memory module;NVDIMM)。存储器子系统可包含存储数据的一或多个存储器组件。存储器组件可以是例如非易失性存储器组件和易失性存储器组件。一般来说,主机系统可利用存储器子系统来将数据存储在存储器组件处且从存储器组件检索数据。
发明内容
在一个方面中,本申请案提供一种方法,其包括:接收对添加内容到系统数据结构的请求,其中块的共用池的第一多个块分配给系统数据结构且块的共用池的第二多个块分配给用户数据;确定与共用池的分配给系统数据结构的第一多个块相关联的无用单元收集操作是否满足无用单元收集性能条件;以及响应于确定无用单元收集操作满足无用单元收集性能条件而通过处理装置将块从共用池分配到分配给系统数据结构的第一多个块。
在另一方面中,本申请案提供一种系统,其包括:存储器装置;处理装置,其以操作方式耦合到存储器装置,处理装置用以:接收对添加内容到系统数据结构的请求,其中块的共用池的第一多个块分配给系统数据结构且块的共用池的第二多个块分配给用户数据;确定与共用池的分配给系统数据结构的第一多个块相关联的无用单元收集操作是否满足无用单元收集性能条件;以及响应于确定无用单元收集操作满足无用单元收集性能条件而将块从共用池分配到分配给系统数据结构的第一多个块。
在另一方面中,本申请案提供一种有形的非暂时性计算机可读媒体,其存储在执行时使得处理装置进行以下操作的指令:接收对添加内容到系统数据结构的请求,其中块的共用池的第一多个块分配给系统数据结构且块的共用池的第二多个块分配给用户数据;基于用户数据是否已在阈值时间量内写入到块的共用池的分配给用户数据的第二多个块而确定共用池中的分配用于内容的特定块;以及响应于确定用户数据尚未在阈值时间量内写入到块的共用池的分配给用户数据的第二多个块而将块从分配给用户数据的第二多个块分配到分配给系统数据结构的第一多个块。
附图说明
根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算环境。
图2是根据本公开的一些实施例的将块的共用池用于用户数据和系统表的实例方法的流程图。
图3A到3E说明根据本公开的一些实施例的将块的共用池用于用户数据和系统表的实例。
图4是根据本公开的一些实施例的将块的共用池用于用户数据和系统表的另一实例方法的流程图。
图5是本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
本公开的方面是关于将块的共用池用于用户数据和系统数据结构。存储器子系统在下文也称为“存储器装置”。存储器子系统的实例是经由外围互连件(例如,输入/输出总线、存储区域网络)耦合到中央处理单元(central processing unit;CPU)的存储装置。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(universal serial bus;USB)快闪驱动器和硬盘驱动器(HDD)。存储器子系统的另一实例是经由存储器总线耦合到CPU的存储器模块。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)、非易失性双列直插式存储器模块(NVDIMM)等。在一些实施例中,存储器子系统可以是混合式存储器/存储装置子系统。一般来说,主机系统可利用包含一或多个存储器组件的存储器子系统。主机系统可提供数据以存储于存储器子系统处且可请求从存储器子系统检索数据。
存储器组件可包含存储器单元的一或多个阵列,所述存储器单元如单层级单元(single level cell;SLC)或多层级单元(multi-level cell;MLC)(例如,三层级单元(triple level cell;TLC)或四层级单元(quad-level cell;QLC))。在一些实施例中,特定存储器组件可包含存储器单元的SLC部分和MLC部分两者。SLC部分可包含用于不同目的的保留块。举例来说,块的一部分可保留以用于系统数据结构(例如,逻辑到物理(logical tophysical;“L2P”)地址映射的表),且块的另一部分可保留以用于用户数据。直到将保留块分配用于其指定目的为止,块可以是未使用的且不含有有效数据。在常规存储器子系统中,在分配后,所述部分中的每一个不用于不同目的。举例来说,在常规存储器子系统中,分配用于系统表的块稍后并不重新分配用于用户数据。
在一些主机系统中,在主机系统上执行的应用程序的性能可高度取决于可在存储器子系统中存取数据的速度。为了加速数据存取,常规存储器子系统使用存储器存取模式的空间和时间局部性来最佳化性能。这些存储器子系统可使用高性能、较低容量媒体(称作高速缓存)来存储频繁存取的数据(时间局部性)或位于近来存取过的存储器区中的数据(空间局部性)。可使用保留用于用户数据的存储器组件的块的部分(例如,SLC)来实施高速缓存。
在主机系统上执行应用程序期间,存储器子系统可对分配用于系统数据结构的块进行添加、去除或修改。在一些情况下,分配用于系统数据结构的块的数目可达到限制,且无用单元收集操作可用于释放块中的一个。无用单元收集可指代将块的数据重写到另一块。举例来说,具有一种存储器类型(例如,SLC)的块的数据可重写到具有相同或不同存储器类型(例如,多层级单元(MLC)、三层级单元(TLC)、四层级单元(QLC))的块。
进行无用单元收集操作可妨碍存储器子系统的性能且降低数据正重写到其的存储器组件的耐久性。举例来说,将数据重写到需要精确电压施加来编程数据的具有一种存储器单元类型(例如,MLC)的存储器组件可慢于将数据写入到并不需要精确电压施加的具有一种存储器单元类型(例如,SLC)的存储器组件。另外,无用单元收集也涉及通过将数据重写到存储器的另一位置的额外写入。进行额外写入可因消耗资源(例如,处理和/或存储器)而降低存储器子系统的带宽。此外,在存储器组件上进行(例如,写入放大)的写入越多,存储器组件的衰减越快。
因此,在一些常规存储器子系统中,额外块分配给系统数据结构。添加额外块可减小无用单元收集操作造成的影响,这是因为存储器子系统可使用分配用于系统数据结构的额外块而不是较频繁地进行释放所使用块(例如,分配的和存储有效数据的块)的无用单元收集操作。然而,用于系统数据结构的块的这一过度供给可消耗可能用于其它目的的非所要数目个块。
举例来说,当主机系统正操作依序工作负载时,用于系统表的块的数目低以满足目标性能。当主机系统操作随机工作负载时,用于系统表的块的数目高以满足目标性能。在常规系统中,分配给系统表的块的数目配置成处置随机工作负载以满足目标性能,而不考虑工作负载在随机与依序之间改变的情况。在主机系统操作依序工作负载时,分配用于系统表的过剩块在常规系统中可变为未使用。
本公开的方面通过将块的共用池用于用户数据和系统数据结构(例如,L2P映射的表)来解决以上和其它缺陷。分配用于用户数据和系统数据结构的块的数目可在使用期间动态地改变以最大化性能、耐久性和块的过度供给。初始地,共用池可创建为具有分配给系统数据结构的一组块和分配给用户数据的另一组块。共用池也可初始地包含直到下文描述的某些条件出现为止不分配给系统数据结构或用户数据的未使用块。共用池的块可保留以用于共用池且可以是SLC存储器类型。
当不同组块中的块重新分配用于不同目的时可存在若干情境。举例来说,当不满足无用单元收集性能条件时或当满足稳定状态条件时,与用户数据相关联的所述组块中的块可重新分配到与系统数据结构相关联的所述组块。在一些实施例中,当用户数据在超过阈值时间量中尚未写入到分配用于用户数据的块时,满足稳定状态条件。此外,当确定与系统数据结构相关联的所述组块的块未使用或用于满足目标性能的与系统数据结构相关联的所述组块的块数目满足阈值(例如,最小数目个块)时,与系统数据结构相关联的所述组块的块可重新分配到与用户数据相关联的所述组块。当接收到对写入用户数据到由共用池中的分配用于用户数据的所述组块实施的高速缓存的请求时,与系统数据结构相关联的所述组块的块也可重新分配到与用户数据相关联的所述组块。
在一些实施例中,可接收对添加内容到系统数据结构的请求。内容可以是L2P映射。可确定与共用池的分配给系统数据结构的所述组块相关联的无用单元收集操作是否满足无用单元收集性能条件。无用单元收集性能条件可与将存储在分配给系统数据结构的块处的数据重写到另一块所需的工作量相关。为了进行确定,可识别存储在分配给系统数据结构的块中的每一个处的有效数据量。有效数据可指代成功地写入到数据块的数据以及尚未擦除、指示待擦除、更新或通过主机系统再编程的数据。如果有效数据量低于阈值量,那么可满足无用单元收集性能条件,因为无用单元收集性能条件可在并不妨碍性能的工作量的情况下进行。如果有效数据量高于阈值量,那么不满足无用单元收集性能条件,因为无用单元收集性能条件不能在不妨碍性能的情况下进行。
响应于确定无用单元收集操作满足无用单元收集性能条件,可将块从共用池分配到用于系统数据结构的所述组块。在一些实施例中,从共用池分配的块可以是共用池中的未使用块(例如,未分配和/或未存储有效数据)。在一些实施例中,当共用池中的每一个块分配给系统数据结构或用户数据时,由共用池中选出的块可以是已分配给系统数据结构的块。举例来说,可选择包含用于系统数据结构的最少有效数据的块、对所述块进行无用单元收集且将所述块重新分配到用于系统数据结构的所述组块以存储内容。以这种方式,分配给系统数据结构的所述组块可自维持,且分配给用户数据的所述组块中的块不重新分配给系统表。当满足无用单元收集性能条件时,分配给系统表的所述组块中的块数目可小于上限。另外,当分配给系统数据结构的所述组块满足无用单元收集性能条件时,共用池中的其余未使用块可分配到分配给用户数据的所述组块。在此类实施例中,分配给用户数据的块数目可以是最大量。
如果共用池中的未使用块分配到分配给系统数据结构的所述组块,那么可对分配给系统数据结构的所述组块的另一块进行无用单元收集操作。内容可存储于分配到分配给系统数据结构的所述组块的块中。进行无用单元收集的块可以是包含分配给系统数据结构的块的最少有效数据量的块。在一些实施例中,进行无用单元收集的块可从共用池的分配给系统数据结构的所述组块分配到共用池的分配给用户数据的所述组块。在一些实施例中,进行无用单元收集的块可返回到共用池作为未使用块。分配用于系统数据结构的块的总数目可通过分配一个块和对另一块进行无用单元收集来保持相同。
响应于确定无用单元收集操作并不满足无用单元收集性能条件,可确定是否满足与分配给系统数据结构的所述组块的数目相关的阈值条件。如果满足阈值条件(例如,共用池的小于上限数目个块分配给系统数据结构),那么可将来自共用池的块分配到用于系统数据结构的所述组块而不对分配给系统数据结构的所述组块进行无用单元收集操作。在一些实施例中,如果满足阈值条件且共用池中的每一个块分配给系统数据结构或用户数据,那么将来自分配给用户数据的第二组块的块分配给用于系统数据结构的所述组块而不对分配给系统数据结构的所述组块进行无用单元收集操作。如果不满足阈值条件(例如,达到对共用池的分配给系统数据结构的块的数目的上限),那么可对共用池的分配给系统数据结构的所述组块的块进行无用单元收集操作。块可保持分配用于共用池的用于系统数据结构的所述组块。内容可存储于针对分配用于系统数据结构的所述组块而分配的块中。
在称作稳定状态条件的一些情况下,主机系统可连续地将数据写入到具有存储器类型(例如,MLC、TLC、QLC)的存储器子系统的后备存储,所述存储器类型不同于提供分配用于用户数据和系统数据结构的块的共用池的存储器组件。后备存储可包含于与提供块的共用池的存储器组件相同或不同的存储器组件中。可通过确定用户数据是否已在阈值时间量内写入到块的共用池的分配给用户数据的所述组块来检测稳定状态条件。如果数据尚未在阈值时间量内写入到块的共用池的分配给用户数据的所述组块,那么可将一或多个块从块的共用池的分配给用户数据的所述组块分配到块的共用池的用于系统数据结构的所述组块。与系统数据结构相关联的内容可存储于分配的块中。在此类实施例中,分配给系统数据结构的所述组块中的块数目可超出上限数目,且分配给用户数据的所述组块中的块数目可处于最小值(例如,零)。
在一些实施例中,在稳定状态条件下操作一段时间之后,主机系统可再次请求将用户数据写入到存储器子系统。在此类情况中,可(例如,基于最少量的有效数据)选择分配给系统数据结构的所述组块中的一或多个块,且可对所选块进行无用单元收集操作以将分配给系统数据结构的所述组块的数目减小到上限数目。在其上进行无用单元收集操作的块可分配到分配给用户数据的所述组块。
由于无用单元收集操作的性能限于某些情境,本公开的优点包含但不限于存储器子系统和/或主机系统的改进性能。举例来说,当将块的共用池的一组块中的块分配用于系统数据结构时,可确定与共用池的分配给系统数据结构的所述组块相关联的无用单元收集操作是否满足无用单元收集性能条件。将无用单元收集操作的性能限于某些情境可改进存储器组件的耐久性。另外,由于可基于满足无用单元收集性能条件和/或识别出存储器使用模式(例如,稳定状态条件和/或某些块是否现未使用)而动态地分配共用池中的块,可增强块的过度供给。如果块现未使用,那么共用池中的分配用于系统数据结构或用户数据的块可重新分配用于其它目的(例如,系统数据结构或用户数据)。因此,浪费存储器子系统的较少存储器资源。
图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算环境100。存储器子系统110可包含媒体,如存储器组件112A到112N。存储器组件112A到112N可以是易失性存储器组件、非易失性存储器组件或此类组件的组合。在一些实施例中,存储器子系统是存储系统。存储系统的实例是SSD。在一些实施例中,存储器子系统110是混合式存储器/存储装置子系统。一般来说,计算环境100可包含使用存储器子系统110的主机系统120。举例来说,主机系统120可将数据写入到存储器子系统110且从存储器子系统110读取数据。
主机系统120可以是计算装置,如台式计算机、膝上型计算机、网络服务器、移动装置或包含存储器和处理装置的此类计算装置。主机系统120可包含或耦合到存储器子系统110,使得主机系统120可从存储器子系统110读取数据或将数据写入到存储器子系统110。主机系统120可经由物理主机接口耦合到存储器子系统110。如本文中所使用,“耦合到”通常指代组件之间的连接,其可以是间接通信连接或直接通信连接(例如不具有介入组件),无论有线或无线,包含如电性连接、光学连接、磁性连接等的连接。物理主机接口的实例包含但不限于串行高级技术附件(serial advanced technology attachment;SATA)接口、外围组件互连高速(peripheral component interconnect express;PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接的SCSI(Serial Attached SCSI;SAS)等。物理主机接口可用于在主机系统120与存储器子系统110之间发射数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可进一步利用NVM高速(NVM Express;NVMe)接口来存取存储器组件112A到112N。物理主机接口可提供接口以用于在存储器子系统110与主机系统120之间传送控制、地址、数据以及其它信号。
存储器组件112A到112N可包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含与非(negative-and;NAND)类型快闪存储器。存储器组件112A到112N中的每一个可包含存储器单元的一或多个阵列,所述存储器单元如单层级单元(SLC)或多层级单元(MLC)(例如三层级单元(TLC)或四层级单元(QLC))。在一些实施例中,特定存储器组件可包含存储器单元的SLC部分和MLC部分两者。存储器单元中的每一个可存储由主机系统120使用的一或多个数据位(例如,数据块)。尽管描述如NAND类型快闪存储器的非易失性存储器组件,但存储器组件112A到112N可基于任何其它类型的存储器,如易失性存储器。在一些实施例中,存储器组件112A到112N可以是(但不限于)随机存取存储器(random access memory;RAM)、只读存储器(read-only memory;ROM)、动态随机存取存储器(dynamic random access memory;DRAM)、同步动态随机存取存储器(synchronous dynamic random access memory;SDRAM)、相变存储器(phase changememory;PCM)、磁随机存取存储器(magneto random access memory;MRAM)、或非(negative-or;NOR)快闪存储器、电可擦除可编程只读存储器(electrically erasableprogrammable read-only memory;EEPROM)以及非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列而基于体电阻的改变来进行位存储。另外,与许多基于闪存的存储器对比,交叉点非易失性存储器可进行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。此外,存储器组件112A到112N的存储器单元可分组为存储器页或数据块,其可指代用于存储数据的存储器组件的单元。
存储器系统控制器115(下文称为“控制器”)可与存储器组件112A到112N通信以进行操作,如在存储器组件112A到112N处读取数据、写入数据或擦除数据,以及其它这类操作。控制器115可包含硬件,如一或多个集成电路和/或离散组件、缓冲存储器或其组合。控制器115可以是微控制器、专用逻辑电路(例如,现场可编程门阵列(field programmablegate array;FPGA)、专用集成电路(application specific integrated circuit;ASIC)等)或其它合适的处理器。控制器115可包含配置成执行存储在本地存储器119中的指令的处理器(处理装置)117。在所说明的实例中,控制器115的本地存储器119包含配置成存储指令的嵌入式存储器,所述指令用于进行控制存储器子系统110的操作(包含操控存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程以及例程。在一些实施例中,本地存储器119可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。尽管图1中的实例存储器子系统110已说明为包含控制器115,但在本公开的另一实施例中,存储器子系统110可不包含控制器115,且可改为依靠(例如由外部主机或由与存储器子系统分离的处理器或控制器提供的)外部控制。
一般来说,控制器115可从主机系统120接收命令或操作且可将命令或操作转换成指令或适当的命令,以实现对存储器组件112A到112N的所需存取。控制器115可负责其它操作,如耗损均衡操作、无用单元收集操作、错误检测和错误校正码(error-correctingcode;ECC)操作、加密操作、高速缓存操作以及在与存储器组件112A到112N相关联的逻辑块地址与物理块地址之间的地址转换(translation)。控制器115还可包含主机接口电路以经由物理主机接口与主机系统120通信。主机接口电路可将从主机系统接收到的命令转换成命令指令以存取存储器组件112A到112N,以及将与存储器组件112A到112N相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未说明的额外电路或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲(例如DRAM)和地址电路(例如行解码器和列解码器),其可从控制器115接收地址且对地址进行解码以存取存储器组件112A到112N。
存储器子系统110包含共用池管理组件113,其可用于管理共用池中的用于用户数据和系统数据结构的块的分配。在一些实施例中,控制器115包含共用池管理组件113的至少一部分。举例来说,控制器115可包含处理器117(处理装置),其配置成执行存储在本地存储器119中的指令以用于进行本文中所描述的操作。在一些实施例中,共用池管理组件113是主机系统110的部分、应用程序或操作系统。
共用池管理组件113可管理块的共用池中的用于用户数据和系统数据结构(例如,L2P映射表)的块的分配。举例来说,共用池管理组件113可确定何时不利用分配用于用户数据或系统数据结构的块,且可将块重新分配用于其它目的(例如,用户数据或系统数据结构)。另外,考虑到何时在共用池的分配给系统数据结构的第一组块与共用池的分配给用户数据的第二组块之间分配块,共用池管理组件113可试图进行无用单元收集操作。举例来说,共用池管理组件113可追踪存储于共用池的分配给系统数据结构的第一组块中的每一个中的有效数据的大小,且确定是否满足无用单元收集性能条件。如果满足无用单元收集性能条件,那么共用池管理组件113将块从共用池分配到分配给系统数据结构的第一组块。分配给系统数据结构的块可以是共用池中的未使用块或先前分配给系统数据结构的块。共用池管理组件113还对分配给系统数据结构的第一组块的块进行无用单元收集操作。在其上进行无用单元收集操作的块可分配到分配给用户数据的所述组块或分配给系统数据结构的所述组块,或块可返回到共用池。在一些实施例中,共用池管理组件113还确定用户数据何时尚未在阈值时间量中写入到共用池的分配给用户数据的第二组块,且将块中的一或多个从分配给用户数据的第二组块分配到分配给系统数据结构的第一组块。下文描述关于共用池管理组件113的操作的其它细节。
图2是根据本公开的一些实施例的将块的共用池用于用户数据和系统数据结构的实例方法200的流程图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法200由图1的共用池管理组件113进行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,所说明实施例应仅作为实例理解,且所说明过程可以不同次序进行,且一些过程可并行进行。另外,可在各种实施例中省略一或多个过程。因此,在每一个实施例中并不需要所有过程。其它过程流也是可能的。
在操作210处,处理装置接收对添加内容到系统数据结构(例如,表)的请求。可响应于正创建和/或更新的L2P地址映射而从主机系统接收请求。内容包含逻辑到物理(L2P)地址映射。L2P映射可映射存储器子系统的逻辑块地址到物理块地址。举例来说,待添加的内容可以是逻辑块地址与物理块地址之间的新映射。在应用程序在主机系统上执行且从一或多个存储器组件读取数据并将数据写入到一或多个存储器组件时,可接收到内容。另外,当数据在一或多个存储器组件上的物理位置之间移动时,可接收到内容。块的共用池可分配用于用户数据和系统数据结构。共用池的第一组块分配给系统数据结构,且块的共用池的第二组块分配给用户数据。存储器组件中的所保留SLC块可用于块的共用池。在存储器组件的操作期间也可存在保留在块的共用池中的第三组未使用块,其可分配到分配给系统数据结构的第一组块或分配给用户数据的第二组块。
在操作220处,处理装置确定与分配给系统数据结构的第一组块相关联的无用单元收集操作是否满足无用单元收集性能条件。无用单元收集性能条件可与用于进行无用单元收集操作的工作量相关联。所述工作可指代用于进行无用单元收集操作的时间量和/或资源(例如,处理和/或存储器)。可基于共用池的分配给系统表的第一组块中所存储的有效数据量而确定与进行无用单元收集操作相关联的工作。如果存储于块中的有效数据量满足(例如,低于)阈值有效数据量,那么满足无用单元收集性能条件,因为用以进行无用单元收集操作的工作在阈值限制内。如果存储于块中的有效数据量并不满足(例如,等于或高于)阈值有效数据量,那么不满足无用单元收集性能条件,因为用以进行无用单元收集操作的工作超出阈值限制。可通过追踪在分配给系统数据结构的第一组块中的每一个中所存储的有效数据的大小来确定可能在哪一块上进行无用单元收集操作。处理装置可基于第一组块中的每一个处存储的有效数据量而评估对分配给系统数据结构的第一组块中的每一个进行无用单元收集操作的工作。如果存在由于在阈值限制内进行无用单元收集操作的工作而确定满足无用单元收集性能条件的超过一个块,那么处理装置可选择存储最少有效数据量的块以用于无用单元收集操作。
在操作230处,响应于确定无用单元收集操作满足无用单元收集性能条件,处理装置将块从共用池分配到分配给系统数据结构的第一组块。选择的块可以是共用池中的未使用块。在一些实施例中,如果共用池中的每一个块分配给第一组块或第二组块,那么可从分配给系统数据结构的第一组块中选择用于无用单元收集的块且用以存储内容。与系统数据结构相关联的内容可存储于分配到用于系统数据结构的第一组块的块中。
另外,响应于确定无用单元收集操作满足无用单元收集性能条件,处理装置可对分配给系统数据结构的第一组块的块进行无用单元收集操作。在其上进行无用单元收集操作的块相对于分配给系统数据结构的第一组块中的其它块可包含最少量的有效数据。进行无用单元收集操作可包含将存储在块处的数据写入到另一块(例如,在相同或不同存储器组件中)或擦除所述数据。在一些实施例中,处理装置可将进行无用单元收集的块分配回到分配用于系统数据结构的第一组块以存储内容。当共用池中的每一个块分配到第一组块或第二组块(例如,不存在可用的未使用块)时,这一情境可出现。在一些实施例中,处理装置可将进行无用单元收集的块分配到分配给用户数据的第二组块。在一些实施例中,处理装置可将进行无用单元收集的块返回到共用池作为未使用块。
在一些实施例中,响应于确定无用单元收集操作并不满足无用单元收集性能条件,处理装置确定是否满足与分配给系统数据结构的第一组块的数目相关的阈值条件。举例来说,当分配给系统数据结构的每一个块存储超过阈值有效数据量时,不能满足无用单元收集性能条件。当第一组块的总数目小于阈值(例如,上限数目)时,可满足与分配给系统数据结构的第一组块的数目相关的阈值条件。使用与分配给系统数据结构的第一组块的数目相关的阈值条件可约束分配用于系统数据结构的块的数目。当将用于共用池的第二组块的块分配用于用户数据时,可使用类似阈值条件。
响应于确定满足与分配给系统数据结构的第一组块的数目相关的阈值条件,处理装置可将块从共用池分配到分配给系统数据结构的第一组块而不对分配给系统数据结构的第一组块进行无用单元收集操作。处理装置可继续针对后续请求将块从共用池分配到分配给系统数据结构的第一组块,直到达到用于分配给系统数据结构的第一组块的块的上限数目为止(例如,不满足与分配给系统数据结构的第一组块的数目相关的阈值条件)。
响应于确定不满足与分配给系统数据结构的第一组块的数目相关的阈值条件(例如,达到上限数目),处理装置可对分配给用户数据的第二组块的块进行无用单元收集操作。当分配给系统数据结构的第一组块的总数目大于或等于阈值(例如,上限数目)时,不能满足与分配给系统数据结构的第一组块的数目相关的阈值条件。在其上进行无用单元收集操作的块相对于分配给用户数据的第二组块中的其它块可包含最少量的有效数据。内容可存储于分配给系统数据结构的第一组块的块中。
在一些实施例中,处理装置通过确定用户数据是否已在阈值时间量(例如,稳定状态条件)内写入到块的共用池的分配给用户数据的第二组块来确定将哪一块分配在共用池中以用于与系统数据结构相关联的内容。可在确定与共用池的分配给系统数据结构的第一组块相关联的无用单元收集操作是否满足无用单元收集性能条件之前进行这一确定。响应于确定用户数据尚未在阈值时间量内写入到块的共用池的分配给用户数据的第二组块,处理装置可将一或多个块从块的共用池的分配给用户数据的第二组块分配到块的共用池的分配用于系统数据结构的第一组块。在一些实施例中,不存储任何有效用户数据或存储最少量的有效用户数据的块可从块的共用池的分配给用户数据的第二组块分配到块的共用池的分配用于系统的第一组块。在一些实施例中,分配给用户数据的第二组块中的块中的每一个可在稳定状态条件期间重新分配到分配给系统数据结构的第一组块。因此,不用于用户数据的块可改换目的用于与系统数据结构相关联的内容。在此类实施例中,分配给系统数据结构的第一组块中的块的数目可超出上限数目,且分配给用户数据的第二组块中的块的数目可处于最小值。
在稳定状态条件下操作一段时间且共用池中的大部分块分配到分配给系统数据结构的第一组块之后,主机系统可再次请求将用户数据写入到存储器组件。如此,处理装置可基于待在其上进行无用单元收集操作的块处存储的有效数据量而选择分配给系统数据结构的第一组块的块。处理装置可对所选块进行无用单元收集操作以将分配给第一组块的块的数目减小到上限数目。在其上进行无用单元收集操作的块可分配到分配用于用户数据的第二组块且可存储用户数据。
图3A到3E说明根据本公开的一些实施例的将块的共用池300用于用户数据和系统数据结构的实例。共用池300可由链表或任何适合的数据结构表示。如所描绘,共用池包含:第一组块,其分配用于系统数据结构,表示为“L2P(值)”(例如,在图3A中分配“L2P 1”和“L2P 2”);第二组块,其分配用于用户数据,表示为“高速缓存(值)”(例如,在图3A中分配“高速缓存1”、“高速缓存2”、“高速缓存3”和“高速缓存4”);以及第三组未使用的块,其保留在共用池中。在共用池300中分配用于用户数据的块可用作高速缓存以提供对最近使用和/或频繁使用的数据的更快存取。执行共用池管理组件113的处理装置可用于管理在共用池300中用于用户数据和系统数据结构的块的分配。
可使用存储器组件中的所保留SLC块来分配共用池300的块。所保留SLC块的一部分可分配到用于系统数据结构的第一组块直到配置成用于系统数据结构的第一组块的上限。此外,所保留SLC块的一部分可分配到用于用户数据的第二组块直到配置成用于用户数据的第二组块的上限。举例来说,所保留SLC块的一半可分配到第一组块,且所保留SLC块的一半可分配到第二组块。
在某些情境中,可超出上限所述分配给用户数据和/或系统数据结构的块的数目。此类情境是检测到稳定状态条件的情况(例如,主机系统尚未在超过阈值时间量中将用户数据写入到共用池中的分配用于用户数据的第二组块),且处理装置可将分配给用户数据的第二组块中的一些或全部分配到分配给系统数据结构的第一组块,因为块在稳定状态条件期间不用于用户数据。由于用户数据和系统数据结构共享共用池中的块的总数目,将超过上限的块分配用于一个目的(例如,系统数据结构)可消耗分配用于其它目的(例如,用户数据)的块。在一些实施例中,存在配置成用于分配给系统数据结构的第一组块和分配给用户数据的第二组块中的每一个的下限,使得最小数目个块在任何给定时间保持分配用于用户数据和系统数据结构。在一些实施例中,下限可以是用于第一组块和/或第二组块的零值。
可接收对添加与系统数据结构相关联的内容的请求。处理装置可确定与共用池300的分配给系统数据结构的第一组块相关联的无用单元收集操作是否满足无用单元收集性能条件。为了进行这一确定,处理装置识别出分配用于系统数据结构的第一组块中的每一个中的有效数据量。图3A中的所描绘实例中的存储“L2P 1”的块302包含最少量的有效数据,且如果在块302上进行无用单元收集操作,那么处理装置可确定满足无用单元收集性能条件。
响应于确定无用单元收集操作满足无用单元收集性能条件,处理装置可将块从共用池300分配到分配给系统数据结构的第一组块。当满足无用单元收集性能条件时,分配到分配给系统数据结构的第一组块的块数目可限于最小值。在此类实施例中,共用池300中的其余未使用块可分配到分配用于用户数据的第二组块。通过增大分配给用户数据的第二组块中的块数目增大高速缓存的大小可减少共用池块的耗损且改进存储器子系统的性能。
处理装置将未使用块304从共用池分配到分配给系统数据结构的第一组块。如图3B中所描绘,分配给系统数据结构的第一组块中的块306由共用池300中的块“L2P 3”表示。另外,处理装置对分配给系统数据结构的第一组块的块“L2P 1”进行无用单元收集操作。处理装置可将无用单元收集的块308返回到共用池300。因此,分配到用于系统数据结构的第一组块的块数目并不改变(保持为两个)且保持为最小值。此外,分配到分配给用户数据的第二组块的块数目并不改变(保持为四个)。
在图3C中,可接收对添加与系统数据结构相关联的内容的四个额外请求。处理装置可确定与共用池300的分配给系统数据结构的第一组块相关联的无用单元收集操作是否满足无用单元收集性能条件。在图3C中的所描绘实例中,分配给系统数据结构的第一组块中的每一个存储超过阈值有效数据量,这使得第一组块中的并无一个满足无用单元收集性能条件。
在一些实施例中,处理装置也可确定是否满足与分配给系统数据结构的第一组块的数目相关的阈值条件。当分配给系统数据结构的第一组块的数目小于阈值时,可满足阈值条件。出于解释性目的,阈值在图3A到3E中描绘的实例中是六。在图3B中,满足阈值条件,因为两个块(“L2P 2”和“L2P 3”)分配用于共用池300中的系统数据结构,这小于上限数目六个。因此,在图3C中,处理装置将四个块310(“L2P 4”、“L2P 5”、“L2P 6”、“L2P 7”)分配用于与共用池300中的系统数据结构相关联的内容。
在一些实施例中,当满足无用单元收集性能条件时,可存在分配到分配给系统数据结构的第一组块的最小数目个块,且在共用池300中不分配到分配给系统数据结构的第一组块的其余块可分配到分配给用户数据的第二组块。当不再满足无用单元收集性能条件时,处理装置可将块分配到分配给系统数据结构的第一组块直到达到上限为止。可从分配给用户数据的第二组块分配分配给第一组系统数据结构的块。
在图3D中,可接收对添加与系统数据结构相关联的内容的另一请求。处理装置可确定与共用池300的分配给系统数据结构的第一组块相关联的无用单元收集操作是否满足无用单元收集性能条件。在图3D中的所描绘实例中,分配给系统数据结构的第一组块中的每一个存储超过阈值有效数据量,这使得第一组块中的并无一个满足无用单元收集性能条件。处理装置可确定是否满足与分配给系统数据结构的第一组块的数目相关的阈值条件。在图3C中,不满足阈值条件,因为六个块(“L2P 2”、“L2P 3”、“L2P 4”、“L2P 5”、“L2P 6”)分配用于共用池300中的系统数据结构,这等于上限六个。
因此,处理装置从分配给系统数据结构的第一组块中选择用于无用单元收集的块,所述块相对于分配给系统数据结构的第一组块中的其它块包含最少量的有效数据。由于包含最少量的有效数据,处理装置选择图3C中的由“L2P 3”表示的块312。处理装置对图3C中的块312中存储的内容进行无用单元收集操作,且将图3D中的块314分配到分配给系统数据结构的第一组块以存储与请求相关联的内容。分配给系统数据结构的第一组块中的块314在图3D中由“L2P 8”表示。
在图3E中,处理装置检测稳定状态条件。举例来说,处理装置确定主机系统尚未在超过阈值时间量中将数据写入到共用池300中的分配给用户数据的第二组块。因此,处理装置将分配给用户数据的第二组块的一部分分配到分配给系统数据结构的第一组块。处理装置选择图3D中的块316和318以从分配给用户数据的第二组块重新分配到分配给系统数据结构的第一组块。处理装置通过重新分配块316和318来确定保持分配到用于用户数据的第二组块的块数目是否并不降低到用于第二组块的下限。在图3D中的所描绘实例中,用于用户数据的第二组块的下限是两个,且因此,不违反下限,因为重新分配块316和318留下分配到用于用户数据的第二组块的两个块(由“高速缓存1”和“高速缓存2”表示)。在一些实施例中,下限可以是零。如果存在存储于块318和316中的任何有效数据,那么有效数据可进行无用单元收集且重写到与共用池300分离的另一块。在图3E中,处理装置将块320和322从用于用户数据的第二组块分配到共用池300中的用于系统数据结构的第一组块。分配给系统数据结构的第一组块中的块320和322分别由“L2P 9”和“L2P 10”表示。如此,超出用于分配给系统数据结构的第一组块的上限以将额外块提供到系统数据结构,这可防止对分配给系统数据结构的第一组块进行无用单元收集操作。上文所描述的动态重新分配技术可增强性能,更好地利用过度供给且改进存储器组件的耐久性。
在一些实施例中,主机系统可再次请求将用户数据写入到存储器组件。如果不存在共用池300中可用的未使用块,那么处理装置可在分配给系统数据结构的第二组块中选择块中的一或多个以进行无用单元收集,由此将分配用于系统数据结构的第二组块的块数目减小到上限。进行无用单元收集操作的块可分配到分配给用户数据的第二组块。
图4是根据本公开的一些实施例的将块的共用池用于用户数据和系统数据结构的另一实例方法400的流程图。方法400可由处理逻辑进行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法400由图1的共用池管理组件113进行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,所说明实施例应仅作为实例理解,且所说明过程可以不同次序进行,且一些过程可并行进行。另外,可在各种实施例中省略一或多个过程。因此,在每一个实施例中并不需要所有过程。其它过程流也是可能的。
在操作410处,处理装置接收对添加内容到系统数据结构的请求。内容可以是逻辑到物理(L2P)映射。共用池的第一组块分配给系统数据结构,且块的共用池的第二组块分配给用户数据。可存在块的共用池的未使用的第三组块。
在操作420处,处理装置基于用户数据是否已在阈值时间量内写入到第二组块而确定待将共用池中的哪一块分配用于与系统数据结构相关联的内容。不在阈值时间量内将用户数据写入到块的共用池的分配给用户数据的第二组块的主机系统可指示稳定状态条件。在稳定状态条件期间,分配给用户数据的第二组块可能未充分利用。在一些实施例中,处理装置可追踪存储于分配给用户数据的第二组块中的每一个中的有效数据的大小。响应于确定尚未在阈值时间量内写入到第二组块,处理装置可选择不包含有效用户数据或包含最少量的有效用户数据的一或多个块。在一些实施例中,处理装置可选择分配给用户数据的第二组块的每一个块。
因此,在操作430处,响应于确定用户数据尚未在阈值时间量内写入到第二组块,处理装置将一或多个块从分配给用户数据的第二组块分配到分配给系统数据结构的第一组块。在一些实施例中,响应于确定分配给用户数据的第二组块中的每一个块包含有效数据,处理装置可对分配给用户数据的第二组块的相对于分配给用户数据的第二组块的其它块包含最少有效数据的块进行无用单元收集操作。与请求相关联的内容可存储于分配到分配给系统数据结构的第一组块的块中。
在一些实施例中,响应于确定用户数据已在阈值时间量内写入到块的共用池的分配给用户数据的第二组块,处理装置确定与共用池的分配给系统数据结构的第一组块相关联的无用单元收集操作是否满足无用单元收集性能条件。响应于确定无用单元收集操作满足无用单元收集性能条件,处理装置将块从共用池分配到分配给系统数据结构的第一组块。处理装置将与系统数据结构相关联的内容存储在分配到分配给系统数据结构的第一组块的块中。另外,处理装置对分配给系统数据结构的第一组块的块进行无用单元收集操作。进行无用单元收集的块可返回到共用池,分配到分配给系统数据结构的第一组块,或分配到分配给用户数据的第二组块。
图5说明计算机系统500的实例机器,在所述实例机器内可执行用于使得机器进行本文中所论述的方法中的任何一或多种的指令集。在一些实施例中,计算机系统500可对应于主机系统(例如,图1的主机系统120),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于进行控制器的操作(例如,用以执行操作系统以进行对应于图1的共用池管理组件113的操作)。在替代性实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为点对点(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
机器可以是个人计算机(personal computer;PC)、平板PC、机顶盒(set-top box;STB)、个人数字助理(Personal Digital Assistant;PDA)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器或能够(依序或以其它方式)执行指定将由所述机器采取的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多个)指令集以进行本文中所论述的方法中的任何一或多种。
实例计算机系统500包含处理装置502、主存储器504(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器506(例如,快闪存储器、静态随机存取存储器(SRAM)等)以及数据存储系统518,它们经由总线530彼此通信。
处理装置502表示一或多个通用处理装置,如微处理器、中央处理单元或类似物。更确切地说,处理装置可以是复杂指令集计算(complex instruction set computing;CISC)微处理器、精简指令集计算(reduced instruction set computing;RISC)微处理器、超长指令字(very long instruction word;VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置502也可以是一或多个专用处理装置,如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(digital signal processor;DSP)、网络处理器或类似物。处理装置502配置成执行用于进行本文中所论述的操作和步骤的指令526。计算机系统500可进一步包含网络接口装置508以经由网络520通信。
数据存储系统518可包含机器可读存储媒体524(也称为计算机可读媒体),其上存储有一或多个指令集526或体现本文中所描述的任何一或多种方法或功能的软件。指令526还可在其由计算机系统500执行期间完全或至少部分地驻存在主存储器504内和/或处理装置502内,主存储器504和处理装置502也构成机器可读存储媒体。机器可读存储媒体524、数据存储系统518和/或主存储器504可与图1的存储器子系统110相对应。
在一个实施例中,指令526包含用以实施对应于数据块管理组件(例如,图1的数据块管理组件113)的功能性的指令。尽管在实例实施例中机器可读存储媒体524展示为单个媒体,但是术语“机器可读存储媒体”应认为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应认为包含能够存储或编码供机器执行的指令集且使得机器进行本公开的方法中的任何一或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体以及磁性媒体。
已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其它技术人员的方式。算法在这里且通常认为是导致所期望结果的操作的自洽序列。操作是要求对物理量进行物理操控的操作。通常(但未必),这些量采用能够存储、组合、比较和以其它方式操纵的电信号或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为位、值、元件、符号、字符、术语、数目或类似物是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便标签。本公开可涉及将计算机系统的寄存器和存储器内的表示为物理(电子)量的数据操控和变换为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于进行本文中的操作的设备。这一设备可出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,如但不限于任何类型的盘(包含软盘、光盘、CD-ROM和磁性光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适合于存储电子指令的任何类型的媒体,它们各自耦合到计算机系统总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造用以进行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,不参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,已参考其特定实例实施例描述了本公开的实施例。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。
Claims (20)
1.一种方法,其包括:
接收对添加内容到系统数据结构的请求,其中块的共用池的第一多个块分配给所述系统数据结构且块的所述共用池的第二多个块分配给用户数据;
确定与所述共用池的分配给所述系统数据结构的所述第一多个块相关联的无用单元收集操作是否满足无用单元收集性能条件;以及
响应于确定所述无用单元收集操作满足所述无用单元收集性能条件而通过处理装置将块从所述共用池分配到分配给所述系统数据结构的所述第一多个块。
2.根据权利要求1所述的方法,其进一步包括:
响应于确定所述无用单元收集操作满足所述无用单元收集性能条件而对分配给所述系统数据结构的所述第一多个块的块进行所述无用单元收集操作。
3.根据权利要求2所述的方法,其进一步包括将在其上进行所述无用单元收集操作的所述块分配到所述第二多个块。
4.根据权利要求1所述的方法,其进一步包括:
基于用户数据是否已在阈值时间量内写入到块的所述共用池的所述第二多个块而确定所述共用池中的待分配用于与所述系统数据结构相关联的所述内容的块。
5.根据权利要求4所述的方法,其进一步包括:
响应于确定所述用户数据尚未在所述阈值时间量内写入到所述第二多个块而将块从块的所述共用池的分配给用户数据的所述第二多个块分配到块的所述共用池的分配用于所述系统数据结构的所述第一多个块以使得所述第一多个块的数目超出上限。
6.根据权利要求5所述的方法,其进一步包括:
确定用户数据是否已在所述阈值时间量内写入到块的所述共用池的分配给用户数据的所述第二多个块;
响应于确定所述用户数据已在所述阈值时间量内写入到所述第二多个块而对来自块的所述共用池的分配用于所述系统数据结构的所述第一多个块的块进行无用单元收集操作以将所述第一多个块的大小减小到所述上限;以及
将在其上进行所述无用单元收集操作的所述块分配到块的所述共用池的分配给用户数据的所述第二多个块。
7.根据权利要求1所述的方法,其中确定与所述共用池的分配给所述系统数据结构的所述第一多个块相关联的所述无用单元收集操作是否满足所述无用单元收集性能条件包括:
确定待在其上进行所述无用单元收集操作的块中存储的有效数据的大小,其中所述块包含于所述共用池的分配给所述系统数据结构的所述第一多个块中。
8.根据权利要求1所述的方法,其进一步包括:
响应于确定所述无用单元收集操作并不满足所述无用单元收集性能条件而确定是否满足与分配给所述系统数据结构的所述第一多个块的数目相关的阈值条件;以及
响应于确定满足与分配给所述系统数据结构的所述第一多个块的所述数目相关的所述阈值条件而将所述块从所述共用池分配到分配给所述系统数据结构的所述第一多个块而不对分配给所述系统数据结构的所述第一多个块进行所述无用单元收集操作。
9.根据权利要求1所述的方法,其进一步包括:
接收对添加另一内容到所述系统数据结构的另一请求;
确定与所述共用池的分配给所述系统数据结构的所述第一多个块相关联的所述无用单元收集操作是否满足所述无用单元收集性能条件;
响应于确定所述无用单元收集操作并不满足所述无用单元收集性能条件而确定是否满足与分配给所述系统数据结构的所述第一多个块的数目相关的阈值条件;以及
响应于确定不满足与分配给所述系统数据结构的所述第一多个块的所述数目相关的所述阈值条件而将块从所述共用池的分配给用户数据的所述第二多个块分配到分配给所述系统数据结构的所述第一多个块。
10.一种系统,其包括:
存储器装置;
处理装置,其以操作方式耦合到所述存储器装置,所述处理装置用以:
接收对添加内容到系统数据结构的请求,其中块的共用池的第一多个块分配给所述系统数据结构且块的所述共用池的第二多个块分配给用户数据;
确定与所述共用池的分配给所述系统数据结构的所述第一多个块相关联的无用单元收集操作是否满足无用单元收集性能条件;以及
响应于确定所述无用单元收集操作满足所述无用单元收集性能条件而将块从所述共用池分配到分配给所述系统数据结构的所述第一多个块。
11.根据权利要求10所述的系统,其中所述处理装置用以:
响应于确定所述无用单元收集操作满足所述无用单元收集性能条件而对分配给所述系统数据结构的所述第一多个块的块进行所述无用单元收集操作。
12.根据权利要求11所述的系统,其中所述处理装置用以将在其上进行所述无用单元收集操作的所述块返回到所述共用池。
13.根据权利要求10所述的系统,其中所述处理装置用以:
基于用户数据是否已在阈值时间量内写入到块的所述共用池的分配给用户数据的所述第二多个块而确定所述共用池中的待分配用于与所述系统数据结构相关联的所述内容的块。
14.根据权利要求13所述的系统,其中所述处理装置用以:
响应于确定所述用户数据尚未在所述阈值时间量内写入到所述第二多个块而将块从块的所述共用池的分配给用户数据的所述第二多个块分配到块的所述共用池的分配用于所述系统数据结构的所述第一多个块以使得所述第一多个块的数目超出上限。
15.根据权利要求14所述的系统,其中所述处理装置进一步用以:
确定用户数据是否已在所述阈值时间量内写入到块的所述共用池的分配给用户数据的所述第二多个块;
响应于确定所述用户数据已在所述阈值时间量内写入到所述第二多个块而对来自块的所述共用池的分配用于所述系统数据结构的所述第一多个块的块进行无用单元收集操作以将所述第一多个块的大小减小到上限;以及
将在其上进行所述无用单元收集操作的所述块分配到块的所述共用池的分配给用户数据的所述第二多个块。
16.根据权利要求10所述的系统,其中所述处理装置进一步用以:
接收对添加另一内容到所述系统数据结构的另一请求,其中块的所述共用池的第二多个块分配给用户数据;
确定与所述共用池的分配给所述系统数据结构的所述第一多个块相关联的所述无用单元收集操作是否满足所述无用单元收集性能条件;
响应于确定所述无用单元收集操作并不满足所述无用单元收集性能条件而确定是否满足与分配给所述系统数据结构的所述第一多个块的数目相关的阈值条件;以及
响应于确定不满足与分配给所述系统数据结构的所述第一多个块的所述数目相关的所述阈值条件而将块从所述共用池的分配给用户数据的所述第二多个块分配到分配给所述系统数据结构的所述第一多个块。
17.一种有形的非暂时性计算机可读媒体,其存储在执行时使得处理装置进行以下操作的指令:
接收对添加内容到系统数据结构的请求,其中块的共用池的第一多个块分配给所述系统数据结构且块的所述共用池的第二多个块分配给用户数据;
基于用户数据是否已在阈值时间量内写入到块的所述共用池的分配给用户数据的所述第二多个块而确定所述共用池中的分配用于所述内容的特定块;以及
响应于确定所述用户数据尚未在所述阈值时间量内写入到块的所述共用池的分配给用户数据的所述第二多个块而将块从分配给所述用户数据的所述第二多个块分配到分配给所述系统数据结构的所述第一多个块。
18.根据权利要求17所述的计算机可读媒体,其中所述处理装置进一步用以响应于确定分配给所述用户数据的所述第二多个块中的每一块包含有效数据而对相对于分配给所述用户数据的所述第二多个块的其它块包含更少有效数据的分配给所述用户数据的所述第二多个块的块进行无用单元收集操作。
19.根据权利要求17所述的计算机可读媒体,其中所述处理装置进一步用以:
响应于确定所述用户数据已在所述阈值时间量内写入到块的所述共用池的分配给用户数据的所述第二多个块而确定与所述共用池的分配给所述系统数据结构的所述第一多个块相关联的无用单元收集操作是否满足无用单元收集性能条件;
响应于确定所述无用单元收集操作满足所述无用单元收集性能条件而将块从所述共用池分配到分配给所述系统数据结构的所述第一多个块;以及
对分配给所述系统数据结构的所述第一多个块的块进行所述无用单元收集操作。
20.根据权利要求17所述的计算机可读媒体,其中所述处理装置进一步用以:
响应于确定所述无用单元收集操作满足所述无用单元收集性能条件而对分配给系统表的所述第一多个块的块进行所述无用单元收集操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/237,250 | 2018-12-31 | ||
US16/237,250 US10977174B2 (en) | 2018-12-31 | 2018-12-31 | Using a common pool of blocks for user data and a system data structure |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111381776A true CN111381776A (zh) | 2020-07-07 |
Family
ID=71122788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911397721.XA Pending CN111381776A (zh) | 2018-12-31 | 2019-12-30 | 用于存储器装置的方法、系统和计算机可读媒体 |
Country Status (2)
Country | Link |
---|---|
US (3) | US10977174B2 (zh) |
CN (1) | CN111381776A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11287995B2 (en) * | 2020-05-18 | 2022-03-29 | Oracle International Corporation | Heap, garbage collection, and empty-sensitive object pools |
US20240020037A1 (en) * | 2022-07-14 | 2024-01-18 | Micron Technology, Inc. | Apparatus with memory block management and methods for operating the same |
CN116540950B (zh) * | 2023-07-05 | 2023-09-29 | 合肥康芯威存储技术有限公司 | 一种存储器件及其写入数据的控制方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101213510A (zh) * | 2005-06-29 | 2008-07-02 | 桑迪士克股份有限公司 | 用于管理存储装置中的分区的方法和系统 |
US20090168525A1 (en) * | 2007-12-27 | 2009-07-02 | Pliant Technology, Inc. | Flash memory controller having reduced pinout |
CN107526533A (zh) * | 2016-06-21 | 2017-12-29 | 伊姆西公司 | 存储管理方法及设备 |
CN108733309A (zh) * | 2017-04-17 | 2018-11-02 | 伊姆西Ip控股有限责任公司 | 存储管理方法、设备和计算机可读介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8204931B2 (en) * | 2004-12-28 | 2012-06-19 | Sap Ag | Session management within a multi-tiered enterprise network |
US20110185129A1 (en) * | 2010-01-22 | 2011-07-28 | Sun Microsystems, Inc. | Secondary java heaps in shared memory |
US10048885B1 (en) * | 2014-09-30 | 2018-08-14 | EMC IP Holding Company LLC | Managing reclaiming storage space in file systems |
CN105722219A (zh) * | 2014-12-01 | 2016-06-29 | 财团法人资讯工业策进会 | 长期演进技术基地台及其无线资源排程方法 |
KR102365269B1 (ko) * | 2015-04-13 | 2022-02-22 | 삼성전자주식회사 | 데이터 스토리지 및 그것의 동작 방법 |
US20180365079A1 (en) * | 2017-06-14 | 2018-12-20 | Burlywood, LLC | Cooperative data migration for storage media |
JP2019053415A (ja) * | 2017-09-13 | 2019-04-04 | 東芝メモリ株式会社 | メモリシステム、その制御方法及びプログラム |
KR102596964B1 (ko) * | 2018-07-31 | 2023-11-03 | 에스케이하이닉스 주식회사 | 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치 |
-
2018
- 2018-12-31 US US16/237,250 patent/US10977174B2/en active Active
-
2019
- 2019-12-30 CN CN201911397721.XA patent/CN111381776A/zh active Pending
-
2021
- 2021-03-24 US US17/211,544 patent/US11520699B2/en active Active
-
2022
- 2022-11-29 US US18/070,844 patent/US20230088790A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101213510A (zh) * | 2005-06-29 | 2008-07-02 | 桑迪士克股份有限公司 | 用于管理存储装置中的分区的方法和系统 |
US20090168525A1 (en) * | 2007-12-27 | 2009-07-02 | Pliant Technology, Inc. | Flash memory controller having reduced pinout |
CN107526533A (zh) * | 2016-06-21 | 2017-12-29 | 伊姆西公司 | 存储管理方法及设备 |
CN108733309A (zh) * | 2017-04-17 | 2018-11-02 | 伊姆西Ip控股有限责任公司 | 存储管理方法、设备和计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
US20200210331A1 (en) | 2020-07-02 |
US10977174B2 (en) | 2021-04-13 |
US20230088790A1 (en) | 2023-03-23 |
US20210209017A1 (en) | 2021-07-08 |
US11520699B2 (en) | 2022-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11520699B2 (en) | Using a common pool of blocks for user data and a system data structure | |
US11543980B2 (en) | Allocating variable media types of memory devices in a memory system | |
US11609848B2 (en) | Media management based on data access metrics | |
US11144448B2 (en) | Memory sub-system for managing flash translation layers table updates in response to unmap commands | |
CN115699185A (zh) | 在存储装置上每单元实施可变数目的位 | |
CN111538675A (zh) | 使用块盖写率进行无用单元收集候选对象选择 | |
CN115080458A (zh) | 在存储器子系统中高速缓存逻辑到物理映射信息 | |
US11693767B2 (en) | Performing a media management operation based on changing a write mode of a data block in a cache | |
CN113093990A (zh) | 存储器子系统处的数据块切换 | |
US20230195350A1 (en) | Resequencing data programmed to multiple level memory cells at a memory sub-system | |
WO2023201462A1 (en) | Namespace level valid translation unit count | |
CN112805692A (zh) | 混合式双列直插式存储器模块中的高速缓存操作 | |
US20220171713A1 (en) | Temperature-aware data management in memory sub-systems | |
CN115639951A (zh) | 在存储器子系统中实施自动速率控制 | |
CN115705155A (zh) | 存储器子系统数据迁移 | |
CN115145480A (zh) | 具有经分区名字空间的存储器子系统的分区块暂存组件 | |
CN112912834B (zh) | 存取单元和管理片段存储器操作 | |
US20210042236A1 (en) | Wear leveling across block pools | |
CN114391139A (zh) | 存储器组件中的使用经调整参数的垃圾收集 | |
CN113918479B (zh) | 用于并行独立线程的低位密度存储器高速缓存的方法及系统 | |
US20240176527A1 (en) | Memory device region allocation using lifetime hints | |
WO2022027578A1 (en) | Memory overlay using host memory buffer | |
CN114647377A (zh) | 基于有效存储器单元计数的数据操作 | |
CN114077404A (zh) | 使存储器单元与主机系统解除关联 | |
CN113253917A (zh) | 用于存储器子系统的媒体管理的多状态炼狱 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20240517 |
|
AD01 | Patent right deemed abandoned |