CN117591005A - 存储器装置中的开放块管理 - Google Patents
存储器装置中的开放块管理 Download PDFInfo
- Publication number
- CN117591005A CN117591005A CN202311035258.0A CN202311035258A CN117591005A CN 117591005 A CN117591005 A CN 117591005A CN 202311035258 A CN202311035258 A CN 202311035258A CN 117591005 A CN117591005 A CN 117591005A
- Authority
- CN
- China
- Prior art keywords
- memory
- blocks
- open
- block
- memory device
- 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
- 230000015654 memory Effects 0.000 claims abstract description 245
- 238000003860 storage Methods 0.000 claims abstract description 84
- 238000000034 method Methods 0.000 claims abstract description 43
- 238000012545 processing Methods 0.000 claims description 29
- 238000005192 partition Methods 0.000 claims description 14
- 239000000872 buffer Substances 0.000 claims description 11
- 238000000638 solvent extraction Methods 0.000 claims description 7
- 239000007787 solid Substances 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 2
- 238000007726 management method Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 15
- 238000013507 mapping Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000003321 amplification Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 201000000760 cerebral cavernous malformation Diseases 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/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/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/0658—Controller construction 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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
- 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/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/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及存储器装置中的开放块管理。一种用于跟踪存储器装置中的开放块的方法包含由存储器子系统控制器将所述存储器装置中的存储区划分成多个通道,每一通道包含多个平面集,且每一平面集包括多个块集。所述方法进一步包含在所述多个通道之间均匀地分布准备用于写入操作的多个活动区。每一活动区包含一或多个开放块。所述方法进一步包含由所述存储器子系统控制器发送开放块消息到所述存储器装置中的控制器,所述开放块消息包含通道识别信息、平面集识别信息及块集识别信息。所述通道识别信息、所述平面集识别信息及所述块集识别信息共同识别所述存储器装置中准备用于写入操作的一或多个开放块。
Description
技术领域
本公开的实施例大体上涉及存储器子系统,且更特定来说,涉及跟踪存储器子系统中的存储器装置的分区命名空间中的开放块。
背景技术
存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置及易失性存储器装置。一般来说,主机系统可利用存储器子系统在存储器装置处存储数据及从所述存储器装置检索数据。
发明内容
一方面,本公开涉及一种跟踪存储器子系统中的存储器装置中的开放块,所述方法包括:由存储器子系统控制器将所述存储器装置中的存储区分区成多个通道,每一通道包括多个平面集,且每一平面集包括多个块集;在所述多个通道之间均匀地分布准备用于写入操作的多个活动区,其中每一活动区包括一或多个开放块;以及由所述存储器子系统控制器发送开放块消息到所述存储器装置中的本地媒体控制器,其中所述开放块消息包括通道识别信息、平面集识别信息及块集识别信息,其中所述通道识别信息、所述平面集识别信息及所述块集识别信息共同识别所述存储器装置中准备用于写入操作的一或多个开放块。
另一方面,本公开涉及一种系统,其包括:存储器子系统,其包括:存储器装置;及本地媒体控制器,其可操作地与所述存储器装置耦合;及控制器,其可操作地耦合到所述存储器子系统,以执行包括以下的操作:将所述存储器装置中的存储区分区成多个通道,每一通道包括多个平面集,且每一平面集包括多个块集;在所述多个通道之间均匀地分布准备用于写入操作的多个活动区,其中每一活动区包括一或多个开放块;以及发送开放块消息到所述存储器子系统中的控制器,其中所述开放块消息包括通道识别信息、平面集识别信息及块集识别信息,其中所述通道识别信息、所述平面集识别信息及所述块集识别信息共同识别所述存储器装置中准备用于写入操作的一或多个开放块。
另一方面,本公开涉及一种非暂时性计算机可读存储媒体,其包括当由处理装置执行时使所述处理装置执行包括以下的操作的指令:将存储器装置中的存储区分区成多个通道,每一通道包括多个平面集,且每一平面集包括多个块集;在所述多个通道之间分布准备用于写入操作的多个活动区,其中每一活动区包括一或多个开放块;以及发送开放块消息到存储器子系统中的控制器,其中所述开放块消息包括通道识别信息、平面集识别信息及块集识别信息。
附图说明
将从下面给出的详细描述及从本公开的各种实施例的附图中更充分地理解本公开。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
图2是根据本公开的一些实施例的图1的计算系统的详细框图。
图3说明根据本公开的实施例的分区命名空间存储器区中的开放块管理。
图4是用于跟踪存储器子系统中的存储器装置的分区命名空间中的开放块的实例方法的流程图。
图5是本公开的实施例可操作的实例计算机系统的框图。
具体实施方式
本公开的方面涉及用于跟踪存储器子系统中的存储器装置的分区命名空间中的开放块的系统及方法。存储器子系统可为存储装置、存储器模块或存储装置与存储器模块的混合。下文结合图1描述存储装置及存储器模块的实例。一般来说,主机系统可利用包含例如存储数据的存储器装置的一或多个组件的存储器子系统。主机系统可提供将存储在存储器子系统处的数据且可请求将从存储器子系统检索的数据。
存储器子系统可包含高密度非易失性存储器装置,其中希望在没有电力供应到存储器装置时保留数据。非易失性存储器装置的一个实例是三维交叉点(“3D交叉点”)存储器装置,其是可结合可堆叠的交叉网格数据存取阵列基于体电阻的变化来执行位存储的非易失性存储器的交叉点阵列。非易失性存储器装置的另一实例是与非(NAND)存储器装置。下文结合图1描述非易失性存储器装置的其它实例。存储器装置中的每一者可包含一或多个存储器单元阵列。存储器单元(“单元”)是存储信息的电子电路。取决于单元类型,单元可存储一或多个二进制信息位,且具有与被存储的位的数目相关的各种逻辑状态。所述逻辑状态可由例如“0”及“1”或此类值的组合的二进制值表示。例如,单级单元(SLC)可存储一位信息,且具有两个逻辑状态。类似地,多级单元(MLC)每单元可存储两个位,三级单元(TLC)每单元可存储三个位,四级单元(QLC)每单元可存储四个位,且五级单元(PLC)每单元可存储五个位。
存储器装置可由布置成二维网格的位组成。存储器单元以列(下文也称为位线)及行(下文也称为字线)的阵列被蚀刻在硅晶片上。字线可指代与一或多个位线一起用于产生存储器单元中的每一者的地址的存储器装置的存储器单元的一或多个行。位线与字线的相交点构成存储器单元的地址。块在下文指代用于存储数据的存储器装置的单元且可包含存储器单元群组、字线群组、字线或个别存储器单元。一或多个块可分组在一起以形成存储器装置的平面以便允许并行操作发生在每一平面上。存储器装置可包含执行两个或更多个存储器平面的并行存储器页面存取的电路系统。例如,存储器装置可包含用于存储器装置的每一平面的相应存取线驱动器电路及电源电路以促进两个或更多个存储器平面的页面(包含不同页面类型)的并行存取。
存储器子系统及存储器装置可将来自主机系统的数据存储在存储媒体中,例如,具有个别存储数据的可寻址存储器单元的集成电路(IC)裸片。如今,在某些存储器子系统中的处理通常以随机分配给存储器装置并以小的数据增量(例如4千字节(KB))来执行。页面或数据块的这些随机分配包含对存储器装置的非顺序及/或随机写入。这种做法导致用于存储跟踪IC裸片的逻辑块地址(LBA)空间与物理地址空间之间的逻辑到物理(LTP)地址映射的映射数据结构的存储器(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)或持久存储器)中的高成本。例如,映射开销大约是每太字节(TB)主机可寻址媒体1吉字节(GB),且因此,16TB固态驱动器(SSD)需要大量的16GB的存储器映射开销。另外,进行周期性快照及日志记录,以在关机及意外断电情况下持久化映射数据结构。这增加IC裸片的额外写入开销及性能损失。
正在修改存储堆叠以利用顺序输入输出(IO)存储器装置效率。例如,包含在文件系统中的存储堆叠按局部性(例如,根据线程、过程或应用)对数据进行分组,并将数据顺序写入存储装置。然后,文件系统可将不同位置的数据作为并行顺序流写入存储装置,每一流都有自己的局部性。对局部性的引用可引用时间局部性或空间局部性。具有时间局部性的数据是处理器倾向于在短时间段内在相同存储器位置重复存取的数据,例如,大约在同一时间写入、重写及修整的数据。具有空间局部性的数据捕获当存储器装置在特定时间引用特定存储位置时,存储器装置很可能在不久的将来引用附近的存储器位置的趋势。在这种情况下,处理器可尝试确定当前参考周围的区域的大小及形状,为后续参考的更快存取做准备是值得的。对顺序局部性的引用是空间局部性的特殊情况,当数据元素被线性布置及存取时,例如在遍历一维阵列中的元素时,会出现此情况。
当顺序地写入具有局部性的数据时,将数据写入存储器单元的群组,为了简单起见,所述存储器单元群组也被称为区,其中每一区可存储多个物理数据块。因此,可以更高的粒度(兆字节而不是千字节)记录映射,以便将特定数据群组映射为LBA空间中的区,这显著减少记录的元数据。与此粒度的LBA空间相关联的映射空间可被称为分区命名空间(ZNS),且以这种方式写入的存储器装置被称为ZNS存储器装置。在一个实例中,数据群组由具有时间及/或空间局部性的多个数据块组成,其中每一数据块对应于IC裸片的物理块(例如,擦除单元)。在一个实施例中,存储器装置的物理块的大小可为大约16兆字节(MB)。存储器单元的群组(或区)可为物理块大小的至少两到四倍(或更多)。因此,所述区可存储至少64MB的数据(例如,64MB、128MB、256MB、512MB或更多),其中每一者明显大于4千字节(KB)。
在ZNS存储器装置中,存储器装置(或存储器子系统)的地址空间(例如逻辑块地址空间)被划分成几个区,随着存储器装置的容量增加,这允许更有效地管理数据。例如,每一个别区可经指定以被由能存取存储器装置的主机系统或一些其它系统执行的特定客户端应用程序使用。在存储器装置或存储器子系统中,可实施一或多个分区命名空间,且每一分区命名空间可实施一或多个区。区可包含多个区存储器单元。每一区可使用存储器装置或存储器子系统的地址空间的一部分来寻址。数据可顺序地且独立于其它区而写入到特定区。
如本文中使用,存储器单元可指代平面、块、页面、单元、区或任何其它存储器区段或单元。开放块(本文也称为“开放块集”)是尚未完全写入的块。例如,如果在写入到块之后所述块的一或多个页面保持未写入,那么可部分写入存储器单元(例如块)。当完全写入存储器单元时,可关闭存储器单元。例如,在关闭的块中,已经写入包含最后页面的所有页面。当部分写入存储器单元时,存储器单元是打开的。
ZNS存储器系统与传统存储器系统相比是独特的,因为在存储器系统中必须跟踪相对大量的开放块。在传统存储器系统中,通常利用块条或超级块设计,其中跨多个NAND裸片及平面具有相同块编号的一组块被分组在一起,且数据跨块条以条形方式写入。通常,在传统的存储器系统中,只有几个开放的块条被写入,其中至少一个开放块条用于传入的主机数据,一个开放块条作为废弃项目收集的目标写入,及一个开放块条用于内部系统写入。因为使用块条(即,跨裸片/平面的相同块编号),所以在每一平面或每一裸片基础上只存在几个开放块,且任何开放块跟踪结构及逻辑具有对应小的存储器覆盖区及对代码复杂性的低影响。
与传统存储器系统的块条相反,ZNS存储器系统以“块集”操作,块集仅由分组在一起的几个块构成。例如,在四平面NAND装置上,每一块集具有两个块,平面0及1上的块编号A可被分组在一起作为块集,而平面2及3上的块编号A是另一单独的块集,对于跨用于主机数据存储的所有NAND裸片的每一有效块ID,以此类推。ZNS存储器系统中的主机接口允许主机写入一定数目的区,且每一区映射到NAND媒体上的个别块集。这可导致数千个开放块集,所述块集可分散在不同的裸片、平面及块编号上。开放块集的总数由系统中允许的最大活动区数限定,外加用于内部数据刷新(类似于废弃项目收集)及内部系统写入的一些额外开放块集。开放块集的大数目及分散性质对ZNS存储器系统中的开放块跟踪存储器覆盖区及代码复杂性提出挑战。
本公开的方面通过跟踪存储器子系统中的存储器装置的开放块来解决上述及其它缺陷。在一个实施例中,跟踪存储器装置中的开放块包含由存储器子系统控制器将存储器装置中的存储区划分成两个或更多个通道,每一通道包含两个或更多个平面集,且每一平面集包括两个或更多个块集。所述方法进一步包含在所述通道之间均匀地分布准备用于写入操作的多个活动区。每一活动区包含一或多个开放块。所述方法进一步包含由所述存储器子系统控制器发送开放块消息到存储器装置中的本地媒体控制器,所述开放块消息包含通道识别信息、平面集识别信息及块集识别信息。通道识别信息、平面集识别信息及块集识别信息共同识别存储器装置中准备用于写入操作的一或多个开放块。
此方法的优点包含但不限于通过对NAND通道本地的开放块集进行分区及跟踪来减少存储器覆盖区。其它优点包含使用单个全局级表来跟踪所有活动区及其对应的开放块集。其它优点包含简单的系统级设计,其中块集移入及移出活动状态,且归因于按区顺序分组写入具有相似数据类型的数据,显著最小化废弃项目收集且减少写入放大。此外,跨多个区对不同数据类型执行写入的负载平衡实现可预测的写入性能,其中写入通常是当前文件系统中的瓶颈。其它优点对于在下文中讨论的存储器分配及到存储器装置的映射领域的技术人员将是显而易见的。
图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如存储器装置140)、一或多个非易失性存储器装置(例如存储器装置130)或其组合。
存储器子系统110可为存储装置、存储器模块或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、分区命名空间(ZNS)SSD、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小形DIMM(SO-DIMM)、及各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可为例如桌上型计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如飞机、无人机、火车、汽车或其它运输工具)、物联网(IoT)启用装置、嵌入式计算机(例如包含于运载工具、工业设备或联网商用装置中的嵌入式计算机)或包含存储器及处理装置的此计算装置的计算装置。
计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中使用,“耦合到”或“与…耦合”一般指代组件之间的连接,其可为间接通信连接或直接通信连接(例如,没有中介组件),无论有线还是无线,包含例如电、光学、磁性等的连接。
主机系统120可包含处理器芯片组及由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如NVDIMM控制器)及存储协议控制器(例如PCIe控制器、SATA控制器)。主机系统120使用存储器子系统110(例如)将数据写入到存储器子系统110及从存储器子系统110读取数据。
主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含(但不限于)串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、双倍数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如支持双倍数据速率(DDR)的DIMM套接字接口)等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过物理主机接口(例如PCIe总线)与主机系统120耦合时,主机系统120可进一步利用NVM高速(NVMe)接口存取组件(例如存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据及其它信号的接口。图1将存储器子系统110说明为实例。一般来说,主机系统120可经由相同通信连接、多个单独通信连接及/或通信连接的组合存取多个存储器子系统。
存储器装置130、140可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如存储器装置140)可为(但不限于)随机存取存储器(RAM),例如动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM)。
非易失性存储器装置的一些实例(例如存储器装置130)包含与非(NAND)型快闪存储器及原位写入存储器,例如三维交叉点(“3D交叉点”)存储器装置,其是非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可基于体电阻变化连同可堆叠交叉栅格式数据存取阵列执行位存储。此外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行原位写入操作,其中可在先前未擦除非易失性存储器单元的情况下对所述非易失性存储器单元进行编程。NAND型快闪存储器包含(例如)二维NAND(2DNAND)及三维NAND(3DNAND)。
存储器装置130中的每一者可包含一或多个存储器单元阵列。一种类型的存储器单元(例如单级单元(SLC))可每单元存储一个位。其它类型的存储器单元(例如多级单元(MLC)、三级单元(TLC)、四级单元(QLC)及五级单元(PLC))可每单元存储多个位。在一些实施例中,存储器装置130中的每一者可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或此类的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分及MLC部分、TLC部分、QLC部分或PLC部分。存储器装置130的存储器单元可经分组为页面,其可指代用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如NAND),页面可经分组以形成块。
尽管描述例如非易失性存储器单元的3D交叉点阵列及NAND型快闪存储器(例如2DNAND、3D NAND)的非易失性存储器组件,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选择存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器及电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器115(或为了简单起见,控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据及其它此类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路及/或离散组件、缓冲器存储器或其组合。硬件可包含具有用于执行本文中描述的操作的专用(即,硬编码)逻辑的数字电路系统。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。
存储器子系统控制器115可为经配置以执行存储于本地存储器119中的指令的处理装置,其包含一或多个处理器(例如,处理器117)。在所说明实例中,存储器子系统控制器115的本地存储器119包含经配置以存储用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程及例程的指令的嵌入式存储器。
在一些实施例中,本地存储器119可包含存储存储器指针、提取的数据等的存储器寄存器。本地存储器119还可包含用于存储微代码的只读存储器(ROM)。虽然已将图1中的实例存储器子系统110说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,而是可依赖外部控制(例如,由外部主机提供、或由与存储器子系统分离的处理器或控制器提供)。
一般来说,存储器子系统控制器115可从主机系统120接收命令或操作且可将所述命令或操作转换成指令或适当命令以实现对存储器装置130的期望存取。存储器子系统控制器115可负责其它操作,例如损耗均衡操作、废弃项目收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作及与存储器装置130相关联的逻辑块地址(例如逻辑块地址(LBA)、命名空间)与物理地址(例如物理块地址)之间的地址转译。存储器子系统控制器115可进一步包含用于经由物理主机接口与主机系统120通信的主机接口电路系统。主机接口电路系统可将从主机系统接收的命令转换成用于存取存储器装置130的命令指令,且将与存储器装置130相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如DRAM)及地址电路系统(例如行解码器及列解码器),其可从存储器子系统控制器115接收地址且解码地址以存取存储器装置130。
在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其是与用于同一存储器装置封装内的媒体管理的本地控制器(例如本地控制器135)组合的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
在一个实施例中,存储器子系统控制器115包含开放块管理单元113,其跟踪一或多个存储器装置130上的开放块。在一些实施例中,存储器子系统控制器115与开放块管理单元113直接通信。存储器子系统控制器115可包含经配置以执行存储在本地存储器119中的指令以用于执行本文中描述的操作的处理器117(例如处理装置)。在其它实施例中,开放块管理单元113是存储器子系统110的部分,但与存储器子系统控制器115分离。在其它实施例中,本地媒体控制器135包含开放块管理单元113的至少一部分且经配置以执行本文中描述的功能性。
图2是计算系统100的详细框图,计算系统100包含使用存储器子系统的多个区来更有效地存储数据的文件系统。在所展示的实例中,主机系统120包含文件系统124、一或多个应用程序225,且存储器子系统110包含散布在一或多个存储器装置130A到Z上的多个区232A到Z。
文件系统124可管理来自存储器子系统110的数据的存储及检索。文件系统124可包含用于组织数据的数据结构及规则,且可涉及将数据分离成可被个别识别及存取的存储单元。文件系统124可集成到内核、装置驱动程序、应用程序、操作系统220的其它部分或其组合中。文件系统124可作为一或多个系统过程(例如,内核过程)、用户过程(例如,应用程序过程)或其组合来执行。
文件系统124可包含多个层,且多个层可包含逻辑文件系统(例如,逻辑层)、虚拟文件系统(例如,虚拟层)、物理文件系统(例如,物理层)或其它层。逻辑文件系统可管理与应用程序225的交互,且可提供向其它计算机程序公开文件系统操作(例如,打开、关闭、创建、删除、读取、写入、执行)的应用程序接口(例如,文件系统API 222)。文件系统124的逻辑层可管理安全性及许可,并维护打开的文件表条目及每一过程的文件描述符。逻辑文件系统可将所请求的操作(例如,写入请求)传递到一或多个其它层以进行处理。虚拟文件系统可使操作系统220能够支持物理文件系统的多个并发例子,其中的每一者可被称为文件系统实施方案。物理文件系统可管理存储装置(例如,存储器子系统110)的物理操作。物理文件系统可处置缓冲及管理主存储器,且可负责将存储单元物理放置在存储器装置130A到Z上的特定位置中。物理文件系统可包含装置映射逻辑228,且可与装置驱动程序或通道交互,以与存储器子系统110交互。文件系统层中的一或多者可明确分离,或者可组合在一起,以便存储文件系统数据224。
文件系统数据224可为与文件系统124相关联的任何数据,且可包含由文件系统124接收的数据或由文件系统124产生的数据。文件系统数据224可表示一或多个外部文件系统对象、内部文件系统对象或其组合的数据。外部文件系统对象可为可由计算机程序(例如,应用程序225)使用文件系统API 222从外部存取的文件系统对象。外部文件系统对象可包含文件(例如,文件数据及元数据)、目录(例如,文件夹)、链接(例如,软链接、硬链接)或其它对象。内部文件系统对象可为保持在文件系统内部且不能使用文件系统API 222存取的文件系统对象。内部文件系统对象可包含存储树对象(例如,盘区映射、盘区树、块树)、流对象(例如,流标识符)、文件群组数据(例如,相似文件群组)、存储单元、块群组、盘区或其它内部数据结构。
每一文件系统对象可与对象数据及对象元数据相关联。对象数据可为对象的内容(例如,文件数据),且对象元数据可为关于对象的信息(例如,文件元数据)。对象元数据可指示对象的属性,例如存储位置(例如,区、块群组、存储单元)、数据源(例如,流、应用程序、用户)、数据类型(例如,文本、图像、音频、视频)、大小(例如,文件大小、目录大小)、时间(例如,创建时间、修改时间、存取时间)、所有权(例如,用户ID、群组ID)、许可(例如,读取、写入、执行)、文件系统位置(例如,父目录、绝对路径、本地路径)、其它属性或其组合。在一个实例中,文件系统数据224可包含新文件的数据,且新文件可包含文件数据及文件元数据。文件数据可包含文件的内容(例如,图像内容、音频内容),且文件元数据可包含内容的一或多个属性(例如,对应于区z、流s及/或应用程序a的标识符)。
对象数据及对象元数据(例如,属性、树节点)可一起存储在相同存储位置的相同数据结构中,或者可单独存储在不同存储位置的不同数据结构中。例如,文件系统124可将对象元数据存储在索引节点(例如,inode)数据结构中,且索引节点数据结构可具有指向对象数据的一或多个指针。inode可为描述文件系统对象的Unix风格文件系统中的数据结构。每一inode可指示文件系统对象的数据的属性及存储位置(例如,块地址)。目录可表示为inode,且可含有其自身、其父(例如,父目录)及其每一子(例如,子目录或文件)的条目。文件系统124可将文件系统数据224存储为一或多个存储单元226。
存储单元226可为将存储在存储器装置中的文件系统数据的连续或非连续部分。存储单元可被称为文件系统存储单元,且可具有任何大小(例如,4KB、128KB、16MB、128MB、1GB),且所述大小可或可不基于一或多个存储器存储单元(例如,单元、块、页面、区、裸片、装置或子系统)的大小(例如其倍数)。文件系统124可对存储单元使用固定大小(例如,恒定大小或静态大小),其中所有存储单元可为相同的大小,或者可使用可变大小(例如,可调整大小、动态大小),其中文件系统124使用的存储单元可具有不同的大小。存储单元的大小可由存储分配器227、文件系统124、主机系统120、存储器子系统110、存储器装置130、其它实体或其组合来确定(例如,选择或检测)。存储单元226的大小可在设计、开发、制造、安装、初始化、配置、格式化、其它事件或其组合之前、期间或之后由实体确定。在一个实例中,每一存储单元226可与文件系统块群组相同或相似。
文件系统124可将分配的空间划分成块群组,块群组可为可变大小的分配区。分配区可用于存储对象元数据(例如,盘区树节点、inode)及对象数据(例如,文件内容、盘区)。块群组(BG)可理解为文件系统对象的连续部分(例如,一系列LBA),其分配给存储器装置的连续区域且保留用于文件系统124的文件系统数据。此连续区域可表示为一系列块编号(例如,物理地址)。较大的文件可分区成块群组,所述块群组经个别跟踪,以使文件的分配及管理在对存储器装置130A到Z的必要的一系列分配及写入上是可行的。对象数据与对象元数据的默认比可为1:2。它们希望使用奥洛夫(Orlov)块分配器的概念将相关的文件系统对象分配在一起,并通过在群组之间留出空闲空间来抵制碎片化。(然而,Ext3块群组具有根据文件系统大小计算的固定位置,而b树文件系统中的块群组是动态的,并根据需要创建。)每一块群组可与块群组标识符(例如,块群组项目)相关联。文件系统树中的inode可包含对对应块群组的引用(例如,指向存储单元的指针)。
盘区是为文件系统124的文件系统对象保留的连续存储区域。每一文件系统对象可由零个或更多个盘区构成,且每一盘区可存储文件系统对象的片段、段或部分。每一盘区可由一或多个数字(例如,数字对)来表示,且每一数字可为位置、定位、地址、其它数值或其组合。在一个实例中,每一盘区可由表示范围(例如,块范围的开始及结束)的一对数字来表示。将盘区表示为数字对可比规范地存储所述范围中的每一块编号更有效。使用盘区还可使文件系统能够减少大文件的元数据开销。通过实例,可在块群组(BG)内部分配盘区。例如,假设10吉字节(GB)的大文件被分块成128兆字节(MB)的片块。多个128MB分块可作为盘区分组到盘区映射中,所述盘区映射链接到更大的文件且包含元数据。文件系统124可构建并保留盘区映射以管理这些盘区或块群组。在一些实施例中,盘区树希望将存储器装置130的可用存储划分为多个灵活的分配策略。每一盘区树可拥有底层存储器装置的区段,且可被分配给树根、目录或索引节点(inode)的集合(或单个树根、目录或索引节点)。文件系统124分配及解除分配存储单元(例如,盘区、块群组)的方式可取决于所述文件系统是否是写入时复制文件系统。
写入时复制文件系统可为实施用于管理文件系统操作的写入时复制(COW)特征的文件系统。写入时复制特征可与实现原位写入文件系统数据的更传统的技术形成对比。写入时复制可被称为隐式共享或隐蔽,且可为对被修改的资源实施复制操作(例如,重复操作)的资源管理技术。这可涉及在修改对象数据之前制作对象数据(例如,文件数据)的副本。在一个实例中,写入时复制文件系统可检测传入资源是否是现有资源的副本,且通过共享对现有资源的存取来避免创建新资源。例如,文件系统124可接收存储与现有文件相同的新文件的请求,且代替存储新文件的数据的重复副本,文件系统可将新文件与现有文件的数据相关联。当接收到存取新文件的数据的请求时,文件系统可从现有文件传回数据。因此,可在数据的重复副本与原始副本之间共享存储资源。接收的对新文件或现有文件的任何写入请求可导致创建副本,且两个文件可不再共享单个副本。取决于实施方案,写入请求可包含应用于原始副本(例如,源存储)或应用于新副本(例如,目的地存储)的改变。
通过以这种方式共享资源,可显著减少未修改副本的资源消耗,同时给资源修改操作(例如,写入请求)增加较小开销。写入时复制文件系统可更适合顺序写入,因为一旦写入数据,就无法覆写数据。当文件系统顺序写入存储装置时,使用COW管理会更有效。例如,相似类型的数据可作为群组写入,且因此在变得陈旧并遭受废弃项目收集(包含擦除)之前最终也可作为群组在其它地方重写。因此,将相同数据类型的数据作为群组写入可最小化废弃项目收集并减少写入放大。此外,在一些实施例中,操作系统220的内核可包含装置映射逻辑228,其可直接致使文件系统数据写入个别区的物理地址,并因此将逻辑地址映射到顺序写入的区的物理地址,而不需要存储器子系统控制器来处置这个映射。
B树文件系统(BTRFS)可为使用B树处理数据更新的写入时复制文件系统的实例。B树可为自平衡树数据结构,其维持已排序的数据,并允许在对数时间内进行搜索、顺序存取、插入及删除。B树可类似于二叉搜索树(例如,二叉树),且可启用具有多于两个子节点的节点。b树文件系统可涉及可将块分组为块群组的块管理,且每一块群组(例如,存储单元226)可由一或多个装置盘区组成。块群组的盘区可属于相同的存储器装置或不同的存储器装置(例如,在条带化的情况下)。b树文件系统可支持将默认装置存储单元大小(例如,盘区大小)改变为区的大小,使得存储单元与区对准。块群组内的块的分配可涉及从块群组的开始分配顺序块,且可将分配指针作为分配提示添加到块群组。分配指针可使块能够在块群组内顺序分配(例如,在区内顺序分配)。b树文件系统可包含写入请求暂存列表,所述列表可考虑无序接收的IO。暂存列表可延迟块群组内的未对准写入请求的执行。仅当释放块群组时,即当块群组内的所有块都未被使用时,块群组的区才被重置以允许重写。
在图2所展示的实例中,文件系统124可包含存储分配器227及存储解除分配器229,以管理文件系统数据224的存储空间。存储分配器227可与存储器子系统110交互以在存储器装置130A到Z上分配存储空间。存储解除分配器229可与存储器子系统110交互以解除分配(例如,释放)存储器装置130A到Z上的存储空间。存储解除分配器229可执行可被擦除及再次写入的陈旧存储器块的废弃项目收集。存储分配器227及存储解除分配器229可被优化用于将数据存储在存储器子系统110的区232A到Z中。
存储器子系统110可包含高密度非易失性存储器装置,其中希望在没有电力供应到存储器装置时保留数据。非易失性存储器装置的一个实例是与非(NAND)存储器装置。上文结合图1的半导体装置130描述非易失性存储器装置的其它实例。非易失性存储器装置是具有块(例如,物理块)的组的一或多个裸片的封装,且每一块可包含一组页面。页面可包含一组单元(例如,存储器单元),且每一单元可为存储信息的电子电路。取决于单元类型,单元可存储一或多个二进制信息位且可具有与被存储的位的数目相关的各种逻辑状态。逻辑状态可由例如“0”及“1”或此类值的组合的二进制值表示。
存储器装置130A到Z可由布置成二维网格的位组成。存储器单元以列(下文也称为位线)及行(下文也称为字线)的阵列蚀刻在硅晶片上。字线可指代与一或多个位线一起用于产生存储器单元中的每一者的地址的存储器装置的存储器单元的一或多个行。位线与字线的相交点可构成存储器单元的地址。块234可指代用于存储数据的存储器装置(例如,130A)的单元且可包含一群组存储器单元、字线群组、字线或个别存储器单元。可将一或多个块分组在一起以形成存储器装置的区。
区232A到Z中的每一者可为作为单个单元被识别及管理的存储器装置的连续或非连续部分(例如,块的范围)。每一区可对应于可用于唯一识别所述区的区标识数据,且可与区标识符(区ID)、区描述符、区标签或其它术语相同或相似。区可为存储器存储单元,且可具有预定义的大小,所述大小可或可不基于另一存储器存储单元(例如,单元、块、页面、裸片、装置或子系统)的大小(例如,其倍数)。存储器子系统110可对区使用固定大小(例如,恒定大小或静态大小),其中所有区可为相同的大小,或者可使用可变大小(例如,可调整大小、动态大小),其中存储器子系统110使用的区可具有不同的大小。区的大小可由存储器子系统110、存储器装置130、文件系统124、主机系统120、存储分配器227、其它实体或其组合来确定(例如,选择或检测)。存储单元226的大小可在设计、开发、制造、安装、初始化、配置、格式化、其它事件或其组合之前、期间或之后由实体确定。
随着存储器装置的容量增加,区232A到Z可实现存储空间的更有效管理。例如,一组一或多个区可经指定以被由能存取存储器装置的主机系统或一些其它系统执行的特定应用程序(例如,应用程序、过程或线程)使用。通常顺序地执行对区的写入。顺序写入可从存储器装置的顶部(例如,IC裸片的较小地址)到存储器装置的底部(例如,IC裸片的较大地址)连续执行,这由已经写入到所说明区232A到Z的图案化数据块来说明。在这些实施例中,装置映射逻辑228可跟踪命名空间的块编号(例如,逻辑块地址)。
命名空间可包含存储器装置130A到Z中的一或多者的地址空间。命名空间是可格式化成块(例如,逻辑或物理块)的非易失性存储器的数量。用于存储器装置130A到Z的控制器(例如,控制器115或135)可支持使用命名空间标识数据(例如,命名空间ID)来引用的多个命名空间。命名空间可与使用命名空间管理及命名空间附件命令创建、更新或删除的命名空间数据结构相关联。命名空间数据结构可指示特定于特定命名空间的能力及设置。在一个实例中,名称数据结构及命名空间可对应于分区命名空间。
分区命名空间(ZNSTM)可为由NVM ExpressTM(NVMeTM)组织定义的顺序命名空间。配置有区命名空间的存储器装置可被称为分区命名空间存储器装置或ZNS存储器装置,且可实施如由NVMe定义的分区命名空间命令集。在区命名空间中,每一存储器装置130A到Z的地址空间可被划分为一或多个区232A到Z。当使用区命名空间时,写入从区的开头开始顺序执行,且可以更大的粒度(例如64千字节)执行,且在写入操作的持续时间内,所述区可为不可存取的。因此,如果在写入操作正在进行的同时接收到对存储在相同区或不同区中的数据的读取请求,那么存储器子系统将不得不暂停写入操作以便执行读取。在一个实例中,分区命名空间可由固态驱动器(SSD)的控制器实施,且包含区232A到Z,其中对于一或多个存储器装置130A到Z中的每一者可存在一或多个区。
区232A到Z中的每一者可对应于写入指针(WP),其识别区中先前顺序写入结束的位置。写入指针233可对应于区232A,且可指向块的开始(例如,第一可用块)、块的结束(例如,写入的最后块)、块内的位置或其它位置。写入指针233可存储并可由存储器装置130A的控制器(例如,控制器135)、存储器子系统110的控制器(例如,控制器115)、主机系统120的处理装置221(例如,在主存储器223中)、其它装置或位置或其组合存取。所述写入指针可用于确定IO写入请求是指向所述写入指针并因此是顺序的,还是不指向所述写入指针并因此是非顺序的。为了存储器装置130A内的存储空间分配,文件系统124可存取每一区的写入指针。例如,写入指针233可存储为文件系统对象的元数据(例如,文件系统块群组的元数据)并用于顺序写入,如下文更详细讨论。
文件系统124可包含使计算机程序(例如,应用程序225)能够存储或检索数据的文件系统API 222。文件系统API 222可使文件系统124能够从外部源接收数据,包含来自应用程序225的数据(也称为用户数据)、来自操作系统的数据(例如,数据的超级块、文件系统元数据及类似物)。通过存取关于不同数据类型的这些各种文件的此元数据,文件系统API222可使文件系统124能够执行组织及存储分配。
应用程序225可包含不同类型的计算机程序或架构,其相对于计算系统100的硬件及支持软件不同地运作。在一个实施例中,应用程序225可包含基于日志结构合并(LSM)的架构,例如数据库(例如Apache CassandraTM)、分阶段事件驱动架构(例如SEDA)、分布式存储及复制架构(例如的Dynamo)、数据及存储引擎模型(例如/>的Bigtable),或者设计成处理及组织结构化数据(例如包含大数据)的其它此类存储引擎。在一些实施例中,使用基于LSM的架构作为实例,应用程序225可处置含有不同数据类型的数据及/或元数据的各种文件。因此,每一应用程序225可产生、存取及/或管理一或多个数据类型的文件。
图3说明根据本公开的一个实施例的分区命名空间存储器区中的开放块管理。在此实施例中,ZNS固件维持存储器系统中的每一活动区的跟踪数据。如全局系统域510中所说明,可存在数千个活动区,且可为每一活动区分配索引以索引到表中,所述表可被称为活动及迁移区表(AMT)。在一个实施例中,每区表也用于跟踪存储器系统中的每一区的信息。通常,总区比活动区多一个数量级,且由区编号索引的表可称为ZMT。ZMT含有每一区的条目,且所有区的子集将是活动的,因此活动区的ZMT条目含有有效的AMT索引。每一活动区将映射到媒体上的至少一个开放块集。AMT条目含有每一活动区的块集编号。只要存在<65536个活动区,AMT索引就可为16位宽。AMT的总大小等于一个条目的大小乘以活动区的最大数目(数千),且因此大约是数千千字节。
ZNS固件在特定的SSD控制器内运行,且SSD控制器含有多个CPU。一些CPU具有系统中的区的全局视图(例如,全局系统域510),且知道每一区及每一活动区。具有全局系统视图的每一CPU具有附接到其的专用紧密耦合存储器(CCM),但所述存储器是大约数千千字节。因此,AMT要么不适合CCM,要么将消耗其的大部分,且必须移动到较大的共享存储器中,所述存储器可存储兆字节或吉字节的数据。
与区的全局系统视图(例如,全局系统域510)相比,NAND媒体可经由多个通道来存取,其中每一通道包含多个裸片及每一裸片的许多块集(例如,数百个)。在每通道域520中,每一NAND通道在SSD控制器中具有用于所述通道的专用CPU,且每一CPU管理在所述通道本地的媒体。因此,所有活动区的一些子集将驻留在每一通道上的块集上。如果全局AMT索引用于跟踪整个系统中的开放块集,那么需要在每一通道CPU上维持开放块表,所述表可容纳数千个条目,最多可容纳最大数目的活动区。通道CPU可比SSD控制器中的其它CPU具有更少的CCM,且因此不能存储具有数千个条目的表(例如,每一活动区一个)。
为了降低开放块跟踪的存储器要求,跨所有NAND裸片/通道布置对应于活动区的开放块集。如果允许开放块集变得不平衡,那么许多开放块集可驻留在仅几个裸片上,所述裸片全部在一个通道上,这意味着需要通道潜在地跟踪存储器系统中的所有活动区的所有开放块。代替地,活动区或开放块集可跨存储器系统中的所有逻辑单元号(LUN)均匀地分布,且因此均匀地分布在存储器系统中的所有通道中。最大活动区数除以存储系统中的平面集数将等于每一平面集的理想最大活动区数。然而,应注意,平面集由同一通道、裸片及平面分组上的所有块集构成。通过将每一平面集的活动区的最大数目设置为每一平面集的理想最大区加上一些额外缓冲区,可提供额外的存储器区。另外,每一平面集可具有用于刷新或内部系统写入的开放块集。每一平面集的刷新数目也被限定为均匀分布开放刷新块集,且每一平面集的内部系统块集的总数是有限的。因此,每一平面集要跟踪的开放块集的总数由以下公式限定:
每一平面集的最大开放块集=(活动区的最大数目/平面集的数目+额外区)x每一活动区的开放块集+每一平面集的最大刷新目标+每一平面集的内部系统块(其中“额外区”希望允许跨NAND通道的活动区分配具有一定的灵活性,使得活动区不必在所有通道之间完全分割)。
每一通道的最大开放块集=每一平面集的最大开放块集x每一通道的平面集数目。
刷新及内部系统块的数目可相对较小,因此每一通道的开放块集的总数有效地从等于活动区的最大数目减少到活动区的最大数目/通道的数目(例如,其中存储器系统中有10个通道,每一通道仅需要1/10的存储器)。
为了实现这一点,可将AMT分区为每一平面集的单独区段,使得某些索引只被一个平面集使用。例如,如果每一平面集允许20个活动区,其中每一活动区有2个开放块集,每一平面集最多2个刷新目标,且每一平面集有4个系统区域块集,那么我们需要每一平面集20x2+2+4=46个唯一的开放块集索引,且46x 1024个平面集=47,104个开放块索引。然而,索引0到45将用于平面集0,索引46到91将用于平面集1等,依此类推。因此,可实施每一平面集的本地索引,其始终在0到45之间,且可与平面集编号组合以转换回到0与47,103之间的唯一索引。
图4是根据本公开的一些实施例的跟踪存储器子系统中的存储器装置中的开放块的实例方法600的流程图。方法600可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法600由图1的开放块管理单元113执行。尽管以特定序列或顺序展示,除非另有指定,否则可修改过程的顺序。因此,所说明的实施例应仅被理解为实例,并且所说明的过程可以不同顺序执行,且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非在每一个实施例中都需要所有过程。其它过程流程是可能的。
在操作610,存储器子系统控制器(例如控制器115)的处理逻辑将存储器装置(例如存储器装置130)中的存储区分区为多个通道。每一通道可包含多个平面集,且每一平面集可包含多个块集。在操作620,存储器子系统控制器的处理逻辑在多个通道之间均匀地分布准备用于写入操作的多个活动区。每一活动区可包含一或多个开放块。在操作630,存储器子系统控制器的处理逻辑可发送开放块消息到存储器装置中的本地媒体控制器。开放块消息可包含通道识别信息、平面集识别信息及块集识别信息。通道识别信息、平面集识别信息及块集识别信息共同识别存储器装置中准备用于写入操作的一或多个开放块。在操作640,存储器子系统控制器的处理逻辑可在平面集之间均匀地分布开放刷新块集,且在操作650,在多个平面集之间均匀地分布内部系统块集。如上文描述,开放块是准备进行写入操作的部分满块或空块。开放块可包含指向存储器装置内的物理块的逻辑块。在多个通道之间均匀分布的操作可进一步包含将一或多个缓冲区添加到多个活动区,使得多个活动区及一或多个缓冲区一起形成多个通道的正整数倍。
图5说明用于致使机器执行本文论述的方法论中的任一或多者的指令集可在其内执行的计算机系统700的实例机器。在一些实施例中,计算机系统700可对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110),或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的开放块管理单元113、存储器子系统控制器115或本地媒体控制器135的操作)。在替代实施例中,所述机器可连接(例如,联网)到LAN、内联网、外联网及/或因特网中的其它机器。机器可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器操作,或在云计算基础设施或环境中作为服务器或客户端机器操作。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥或能够(顺序或以其它方式)执行指定由所述机器所采取的动作的指令集的任何机器。此外,虽然说明单个机器,但是术语“机器”也应被认为包含个别地或共同地执行一个(或多个)指令集以执行本文所论述的方法论中的任一者或多者的机器的任何集合。
实例计算机系统700包含处理装置702、主存储器707(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器706(例如,快闪存储器、静态随机存取存储器(SRAM)等)及数据存储器装置718,其经由总线730彼此通信。
处理装置702表示一或多个通用处理装置,例如微处理器、中央处理单元或类似物。更特定来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的一个处理器或实施指令集组合的多个处理器。处理装置702也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似物。处理装置702经配置以执行用于执行本文所论述的操作及步骤的指令726。计算机系统700可进一步包含网络接口装置708以通过网络720通信。
数据存储系统718可包含其上存储一或多个指令集726或体现本文中描述的方法论或功能中的任一或多者的软件的机器可读存储媒体727(也称为计算机可读媒体)。指令726在其由计算机系统700执行期间也可完全或至少部分驻留在主存储器707内及/或处理装置702内,主存储器707及处理装置702也构成机器可读存储媒体。机器可读存储媒体727、数据存储系统718及/或主存储器707可对应于图1的存储器子系统110。
在一个实施例中,指令726包含实施对应于图1的开放块管理单元113的功能性的指令。尽管在实例实施例中将机器可读存储媒体727展示为单个媒体,但是术语“机器可读存储媒体”应被认为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”也应被认为包含能够存储或编码指令集以供机器执行并且致使机器执行本公开的方法论中的任一者或多者的任何媒体。因此,术语“机器可读存储媒体”应被认为包含(但不限于)固态存储器、光学媒体及磁性媒体。
已经根据对计算机存储器内的数据位的操作的算法及符号表示来呈现前述详细描述的某些部分。这些算法描述及表示是数据处理领域的技术人员用来最有效地向所属领域的其它技术人员传达其工作实质的方式。此处,算法通常被视为导致所需结果的自洽操作序列。所述操作是需要对物理量进行物理操纵的操作。通常但不是必须的,这些量采用能够被存储、组合、比较及以其它方式操纵的电或磁信号的形式。已被证明是方便的是,有时出于习惯用法的原因,原则上将这些信号称为位、值、元素、符号、字符、项、数字或类似物。
然而,应牢记,所有这些及类似术语均应与适当物理量相关联且仅为应用于这些量的方便标签。本公开可涉及计算机系统或类似电子计算装置的动作及过程,其将表示为计算机系统的寄存器及存储器内的物理(电子)量的数据操纵及变换为类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量。
本公开还涉及用于执行本文中的操作的设备。此设备可出于预期目的而专门建构,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储在计算机可读存储媒体中,例如(但不限于)任何类型的磁盘,包含软盘、光盘、CD-ROM及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适用于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文中呈现的算法及显示器并不固有地与任何特定计算机或其它设备相关。各种通用系统可结合根据本文中的教示的程序使用,或可证明建构更专门的设备来执行方法是方便的。用于各种这些系统的结构将如下文描述中陈述那样出现。此外,本公开并非是参考任何特定编程语言进行描述。将了解,可使用各种编程语言来实施如本文所描述的本公开的教示。
本公开可被提供为计算机程序产品或软件,其可包含其上存储有指令的机器可读媒体,所述指令可用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读媒体包含用于以机器(例如计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
本文使用字词“实例”或“示范性”来意指“用作实例、例子或说明”。本文描述为“实例”或“示范性”的任何方面或设计不一定被解释为比其它方面或设计更优选或有利。确切来说,使用字词“实例”或“示范性”希望依具体方式来呈现。如在本申请案中使用,术语“或”希望意指包含性“或”而非排他性“或”。即,除非另外或从上下文明确指定,否则“X包含A或B”希望意指自然包含性排列的任何者。即,如果X包含A;X包含B;或X包含A及B两者,那么在前述例子的任何者下满足“X包含A或B”。另外,如在本申请案及所附权利要求书中使用,不定冠词“一(a/an)”通常可理解为意指“一或多者”将涉及单数形式,除非另外或从上下文明确指定。此外,贯穿全文的术语“实施例”或“一个实施例”或“实施方案”或“一个实施方案”或类似物的使用可意指或可不意指同一实施例或实施方案。本文中描述的一或多个实施例或实施方案可组合于特定实施例或实施方案中。如本文中使用,术语“第一”、“第二”、“第三”、“第四”等意指作为区别于不同元件当中的标记,且可能不一定具有根据其数值标示的顺序意义。
在前述说明书中,已经参考本公开的特定实例实施例描述本公开的实施例。将明显的是,在不背离所附权利要求书中所陈述的本公开的实施例的更宽精神及范围的情况下,可对其做出各种修改。因此,说明书及图式应以说明性意义而非限制性意义来看待。
Claims (20)
1.一种用于跟踪存储器子系统的存储器装置中的开放块的方法,所述方法包括:
由存储器子系统控制器将所述存储器装置中的存储区分区成多个通道,每一通道包括多个平面集,且每一平面集包括多个块集;
在所述多个通道之间均匀地分布准备用于写入操作的多个活动区,其中每一活动区包括一或多个开放块;以及
由所述存储器子系统控制器发送开放块消息到所述存储器装置中的本地媒体控制器,其中所述开放块消息包括通道识别信息、平面集识别信息及块集识别信息,其中所述通道识别信息、所述平面集识别信息及所述块集识别信息共同识别所述存储器装置中准备用于写入操作的一或多个开放块。
2.根据权利要求1所述的方法,其进一步包括:
由所述存储器子系统控制器在所述多个平面集之间均匀地分布开放刷新块集;以及
通过所述存储器子系统控制器在所述多个平面集之间均匀地分布内部系统块集。
3.根据权利要求1所述的方法,其中所述一或多个开放块是准备用于写入操作的部分满块或空块。
4.根据权利要求1所述的方法,其中所述一或多个开放块包括指向所述存储器装置内的物理块的逻辑块。
5.根据权利要求1所述的方法,其中在所述多个通道之间均匀分布的所述步骤进一步包括将一或多个缓冲区添加到所述多个活动区,使得所述多个活动区及所述一或多个缓冲区一起形成所述多个通道的正整数倍。
6.根据权利要求1所述的方法,其中所述存储器子系统包括固态驱动SSD,且其中所述多个活动区包括分区命名空间ZNS。
7.根据权利要求1所述的方法,其中所述活动区包括所述文件系统的盘区,其中所述盘区包括存储文件的一部分的所述存储器装置的连续块群组。
8.根据权利要求1所述的方法,其进一步包括:
由所述存储器子系统控制器确定所述存储器装置的所述区是否具有足够的空间用于存储单元,其中所述确定基于所述区的写入指针及所述区的结束位置;以及
响应于所述区具有足够的空间,在所述区中分配所述存储单元。
9.一种系统,其包括:
存储器子系统,其包括:
存储器装置;及
本地媒体控制器,其可操作地与所述存储器装置耦合;及
控制器,其可操作地耦合到所述存储器子系统,以执行包括以下的操作:
将所述存储器装置中的存储区分区成多个通道,每一通道包括多个平面集,且每一平面集包括多个块集;
在所述多个通道之间均匀地分布准备用于写入操作的多个活动区,其中每一活动区包括一或多个开放块;以及
发送开放块消息到所述存储器子系统中的控制器,其中所述开放块消息包括通道识别信息、平面集识别信息及块集识别信息,
其中所述通道识别信息、所述平面集识别信息及所述块集识别信息共同识别所述存储器装置中准备用于写入操作的一或多个开放块。
10.根据权利要求9所述的系统,其中所述操作进一步包括:
在所述多个平面集之间均匀地分布开放刷新块集;以及
在所述多个平面集之间均匀分布内部系统块集。
11.根据权利要求9所述的系统,其中所述一或多个开放块是准备用于写入操作的部分满块或空块。
12.根据权利要求9所述的系统,其中所述一或多个开放块包括指向所述存储器装置内的物理块的逻辑块。
13.根据权利要求9所述的系统,其中在所述多个通道之间均匀分布的所述操作进一步包括将一或多个缓冲区添加到所述多个活动区,使得所述多个活动区及所述一或多个缓冲区一起形成所述多个通道的正整数倍。
14.根据权利要求9所述的系统,其中所述系统包括固态驱动SSD,且其中所述多个活动区包括分区命名空间ZNS。
15.根据权利要求9所述的系统,其中所述活动区包括所述文件系统的盘区,其中所述盘区包括存储文件的一部分的所述存储器装置的连续块群组。
16.一种非暂时性计算机可读存储媒体,其包括当由处理装置执行时使所述处理装置执行包括以下的操作的指令:
将存储器装置中的存储区分区成多个通道,每一通道包括多个平面集,且每一平面集包括多个块集;
在所述多个通道之间分布准备用于写入操作的多个活动区,其中每一活动区包括一或多个开放块;以及
发送开放块消息到存储器子系统中的控制器,其中所述开放块消息包括通道识别信息、平面集识别信息及块集识别信息。
17.根据权利要求16所述的非暂时性计算机可读存储媒体,其中所述操作进一步包括:
在所述多个平面集之间均匀地分布开放刷新块集;以及
在所述多个平面集之间均匀分布内部系统块集。
18.根据权利要求16所述的非暂时性计算机可读存储媒体,其中所述一或多个开放块是准备用于写入操作的部分满块或空块。
19.根据权利要求16所述的非暂时性计算机可读存储媒体,其中所述通道识别信息、所述平面集识别信息及所述块集识别信息共同识别所述存储器装置中准备用于写入操作的一或多个开放块,且其中所述一或多个开放块包括指向所述存储器装置内的物理块的逻辑块。
20.根据权利要求16所述的非暂时性计算机可读存储媒体,其中在所述多个通道之间分布的所述操作进一步包括将一或多个缓冲区添加到所述多个活动区,使得所述多个活动区及所述一或多个缓冲区一起形成所述多个通道的正整数倍。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/889,179 US11934657B2 (en) | 2022-08-16 | 2022-08-16 | Open block management in memory devices |
US17/889,179 | 2022-08-16 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117591005A true CN117591005A (zh) | 2024-02-23 |
Family
ID=89906704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311035258.0A Pending CN117591005A (zh) | 2022-08-16 | 2023-08-16 | 存储器装置中的开放块管理 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11934657B2 (zh) |
CN (1) | CN117591005A (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11599304B2 (en) * | 2020-11-16 | 2023-03-07 | Western Digital Technologies, Inc. | Data aggregation in ZNS drive |
KR102545480B1 (ko) * | 2021-07-29 | 2023-06-20 | 단국대학교 산학협력단 | 존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법 |
KR20230019714A (ko) * | 2021-08-02 | 2023-02-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 컨트롤러 |
KR20230039127A (ko) * | 2021-09-13 | 2023-03-21 | 에스케이하이닉스 주식회사 | Ssd에 포함된 존의 병렬성을 탐지하는 장치 및 그 동작 방법 |
-
2022
- 2022-08-16 US US17/889,179 patent/US11934657B2/en active Active
-
2023
- 2023-08-16 CN CN202311035258.0A patent/CN117591005A/zh active Pending
-
2024
- 2024-03-01 US US18/593,165 patent/US20240201851A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240201851A1 (en) | 2024-06-20 |
US11934657B2 (en) | 2024-03-19 |
US20240061575A1 (en) | 2024-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220244869A1 (en) | File system storage allocation based on zones of a memory device | |
US10649657B2 (en) | Log-based storage for different data types in non-volatile memory | |
CN109117084B (zh) | 将逻辑储存块动态地重新调整尺寸 | |
US10956071B2 (en) | Container key value store for data storage devices | |
US10289340B2 (en) | Coalescing metadata and data writes via write serialization with device-level address remapping | |
US11755491B2 (en) | Mapping supporting non-sequential writes at sequentially-written memory devices | |
US11640354B2 (en) | Logical-to-physical mapping of data groups with data locality | |
KR20220085826A (ko) | 구역 명칭공간 메모리에 대한 향상된 파일 시스템 지원 | |
JP2023514307A (ja) | 順次的にプログラムするメモリサブシステムにおける順次読み出し最適化 | |
US20220398045A1 (en) | Addressing zone namespace and non-zoned memory based on data characteristics | |
CN115718564A (zh) | 保持存储器装置中的应用程序数据次序 | |
CN113961142B (zh) | 包含各种时延和容量的存储器装置的存储器子系统 | |
US20240069739A1 (en) | Effective storage allocation for sequentially-written memory devices | |
US20230244398A1 (en) | Associating data types with stream identifiers for mapping onto sequentially-written memory devices | |
CN113849424A (zh) | 依序编程的存储器子系统中的直接高速缓存命中和传递 | |
US20230350798A1 (en) | Namespace management for memory sub-systems | |
US12068052B2 (en) | Preserving blocks experiencing program failure in memory devices | |
US20240069806A1 (en) | Managing data compaction for zones in memory devices | |
US20230266898A1 (en) | Host Defined Zone Group Configuration At A Memory Sub-System | |
CN115145479A (zh) | 区条带化的区名字空间存储器 | |
US11934657B2 (en) | Open block management in memory devices | |
US20230266897A1 (en) | Dynamic zone group configuration at a memory sub-system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |