技术简介:
本专利针对传统存储系统中数据写入效率低、存储分配混乱的问题,提出通过复合数据对象与文件计数器协同管理的解决方案。该方法将多个顺序写入的数据集合并为复合对象,结合逻辑到物理映射结构,动态分配存储单元群组并实时更新计数器,实现高效写入与精准擦除,显著提升存储性能与资源利用率。
关键词:复合数据对象,存储分配优化
1.本公开的实施例总体上涉及存储器子系统,且更具体地说,涉及顺序写入存储器装 置的有效存储分配。
背景技术:2.存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可例如为非易失 性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以在存储 器装置处存储数据以及从存储器装置检索数据。
技术实现要素:3.本技术的一方面涉及一种系统,其包括多个存储器装置以及耦合到所述多个存储器 装置的处理装置,所述处理装置执行包括以下各项的操作:接收指向所述多个存储器装 置的输入/输出(i/o)写入请求,其中所述i/o写入请求包括数据集;将所述数据集附加到 复合数据对象,其中所述复合数据对象包括一或多个顺序写入的数据对象;使所述复合 数据对象与所述多个存储器装置的一或多个存储器单元群组相关联;以及使所述复合数 据对象被写入到所述多个存储器装置的所述一或多个存储器单元群组。
4.本技术的另一方面涉及一种方法,其包括:由执行操作系统的文件系统的处理装置 接收指向包括存储器装置的存储器子系统的输入/输出(i/o)写入请求,其中所述存储器装 置包括多个区,且其中所述i/o写入请求包括文件的至少部分;将所述文件的所述至少 部分附加到复合文件,其中所述复合文件包括一或多个顺序写入的文件;将所述复合文 件分配到所述多个区中的一或多个区;以及使所述复合文件写入到所述多个区中的所述 一或多个区。
5.本技术的又一方面涉及一种包括指令的非暂时性计算机可读存储媒体,所述指令在 由处理装置执行时使所述处理装置执行包括以下各项的操作:接收指向多个存储器装置 的输入/输出(i/o)写入请求,其中所述i/o写入请求包括数据集;将所述数据集附加到复 合数据对象,其中所述复合数据对象包括一或多个顺序写入的数据对象;使所述复合数 据对象与所述多个存储器装置的一或多个存储器单元群组相关联;以及使所述复合数据 对象被写入到所述多个存储器装置的所述一或多个存储器单元群组。
附图说明
6.根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。 然而,各图不应视为将本公开限于特定实施例,而是仅用于解释和理解。
7.图1a说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
8.图1b为根据一些实施例的图1a的计算系统的详细框图。
9.图2为根据一些实施例的说明区映射数据结构的实例的框图。
10.图3为根据一些实施例的说明附加到复合数据对象的数据对象的示意图。
11.图4为根据一些实施例的说明分配到存储器单元群组的数据对象的示意图。
12.图5为根据本公开的一些实施例的将数据对象高效地分配到存储器装置的存储器单 元群组的实例方法的流程图。
13.图6为根据本公开的一些实施例的实施区复位的实例方法的流程图。
14.图7为根据本公开的一些实施例的将顺序写入的文件高效地分配到存储器装置的区 的实例方法的流程图。
15.图8为本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
16.本公开的各方面涉及顺序写入存储器装置的有效存储分配。存储器子系统可以是存 储装置、存储器模块,或存储装置和存储器模块的组合。下文结合图1a描述存储装置 和存储器模块的实例。通常,主机系统可利用存储器子系统,所述存储器子系统包含一 或多个组件,例如存储数据的存储器装置。主机系统可提供数据以存储在存储器子系统 处,且可请求从存储器子系统检索数据。
17.存储器子系统可包含高密度非易失性存储器装置,其中当没有电力供应到存储器装 置时期望保持数据。非易失性存储器装置的一个实例是与非(nand)存储器装置。结合 图1a描述非易失性存储器装置的其它实例。非易失性存储器装置是一或多个裸片的封 装。每个裸片可由一或多个平面组成。对于一些类型的非易失性存储器装置(例如,nand 装置),每一平面由一组物理块组成。每个块由一组页组成。每一页由一组存储器单元(“单 元”)组成。单元是存储信息的电子电路。取决于单元类型,单元可存储二进制信息的一 或多个位,且具有与存储的位数目相关的各种逻辑状态。逻辑状态可表示为二进制值, 例如“0”和“1”,或此类值的组合。
18.存储器子系统可包含多个组件,例如可将来自主机系统的数据存储在存储媒体(例 如,具有个别地存储数据的可寻址存储器单元的集成电路(ic)裸片)中的存储器装置。当 今的某些存储器子系统中的处理通常通过对ic裸片的随机分配且以较小数据递增量(例 如,四个千字节(kb))执行。页或数据块的这些随机分配包含对ic裸片的非顺序和/或随 机写入。这种实践导致例如动态随机存取存储器(dram)、静态随机存取存储器(sram) 或持久存储器等用于存储映射数据结构的存储器方面的高成本,所述映射数据结构跟踪 ic裸片的逻辑块地址(lba)空间与物理地址空间之间的逻辑到物理(l2p)地址映射。举例 来说,映射开销为每太字节(tb)的主机可寻址媒体约千兆字节(gb),且因此,16tb固 态驱动器(ssd)需要相当大的16gb的存储器映射开销。另外,进行周期性快照和记录 以在关断和意外电力故障情形中存留映射数据结构。这增加了对ic裸片的额外写入开 销和性能损失。
19.可将物理块装置映射到较高层级虚拟块装置上的存储堆叠可利用顺序输入/输出 (i/o)存储器装置效率。存储堆叠可用于将i/o从用户空间应用导引到物理存储器装置。 举例来说,存储堆叠按局部性(例如,根据线程、过程、使用期限或应用)包含于文件系 统群组数据中且将数据顺序写入到存储装置。文件系统可接着将不同局部性的数据作为 并行顺序流写入到存储装置,每一流具有其自身的局部性。对局部性的提及可指时间局 部性或空间局部性。具有时间局部性的数据是处理器趋于在短时间段内反复在同一存储 器位置处
存取的数据,例如,大约同时被写入、覆写和微调的数据。具有空间局部性的 数据呈以下趋势:当存储器装置在特定时间参考特定存储位置时,则所述存储器装置近 期很可能参考附近的存储器位置。在此情况下,处理器可尝试确定当前参考的周围值得 为后续访问准备更快存取的区域的大小和形状。对顺序局部性的提及是当数据元素被线 性地布置和存取时(例如,在遍历一维阵列中的元素时)发生的空间局部性的特殊情况。
20.当顺序写入具有局部性的数据时,将数据写入到存储器单元群组,所述存储器单元 群组也简称为区,其中每个区可存储数据的多个物理块。因此,可以较高粒度(兆字节而 不是千字节)记录映射,以便将特定数据群组映射为lba空间中的区,这会显著减少所 记录的元数据。在此粒度下与lba空间相关联的映射空间可称作分区名字空间(zns), 且以此方式写入的存储器装置称作zns存储器装置。在一个实例中,数据群组由具有局 部性的多个数据块构成,其中每一数据块对应于ic裸片的物理块(例如,擦除单元)。在 一个实施例中,存储器装置的物理块(或擦除单元)的大小为约16兆字节(mb)。存储器 单元群组(或区)可为物理块的大小的至少两倍到四倍(或更多)。因此,区可存储至少64 mb的数据(例如,64mb、128mb、256mb、512mb或更多),所述数据中的每一者显 著大于四千字节(kb)。
21.在某些主机操作系统中,文件系统对来自操作系统的文件、来自在操作系统上运行 的应用程序的文件和由文件系统出于组织文件和分配ic裸片中的空间的目的而生成的 元数据进行管理,所述空间是写入所述文件和元数据生成时写入所述元数据所必要的。 某些主机操作系统(例如,linux、unix等)的文件系统将块群组(例如,文件的连续部分, 例如一系列lba)分配到ic裸片中存储块群组的一系列物理地址。文件可以是例如数据 文件、包含索引节点(inodes)的元数据、目录结构、自由空间管理器等,以及能够封装数 据/元数据和被写入到ic的其它数据结构(或对象)。这些文件系统通常基于块群组是否 含有数据或元数据而将某些类型的块群组分配到存储器装置的特定系列的物理地址,且 尝试不对这些特定系列的物理地址内的数据和元数据进行互混。在一些主机操作系统 中,为了组织数据对象和分配存储器装置中的空间,在内核层级操作的装置映射器对来 自操作系统的数据对象进行管理。举例来说,主机系统可包含经设计以接收(或拦截)引 导到存储器装置的写入请求的软件框架。写入请求可包含有效负载,其包含要写入的数 据。有效负载可具有某些特性,举例来说,例如要写入的数据是否表示文件系统中的元 数据或数据,或键值存储中的键或值。
22.在某些主机操作系统中,文件系统驱动器和/或存储驱动器可经配置以将存储器单元 群组(或区)分配到特定数据集。举例来说,主机操作系统(例如,主机操作系统的文件系 统)可将一或多个存储器单元群组(或区)分配到每一流。流可含有共享一或多个特性(例 如,创建或删除时间、存取频率等)的数据集(例如,文件、文件群组、数据对象、数据 对象群组或另一类似构造)。
23.每个存储器单元群组可具有特定大小。在一些主机系统中,将每个数据集分配到一 或多个存储器单元群组,使得两个或更多个数据集(流)之间不会共享存储器单元群组。 然而,数据集的大小可能不匹配存储器单元群组的大小。当发生这种情况时,数据集并 不完全填满存储器单元群组,从而产生空的且不可用的存储器单元。举例来说,占存储 器单元群组大小的四分之一的数据集将存储在一个存储器单元群组中,从而使存储器单 元群组的另外四分之三为空。作为另一实例,作为存储器单元群组大小的3.5倍的数据 集将存
储在4个存储器单元群组中,从而使存储器单元群组的二分之一为空。这种空的 空间可导致存储器装置的低效利用。
24.本公开的各方面通过增强主机系统(例如,主机操作系统的文件系统和/或与主机系 统相关联的装置映射器)将一或多个数据集分配到每个存储器单元群组(例如,分配到zns中的每个区)的能力来解决上文指出的缺陷和其它缺陷。在一些实施例中,本公开 的各方面可由存储器子系统控制器实施。胜于将每个数据集分配到一或多个存储器单元 群组,根据本公开的各方面操作的主机系统可将一或多个数据集附加到复合数据对象, 例如驻存在易失性存储器上的临时文件。复合数据对象包含两个或更多个顺序写入的数 据集(数据对象)。主机系统使复合数据对象与存储器装置的一或多个存储器单元群组相 关联,且使复合数据对象被写入到所述一或多个存储器单元群组。因此,每个存储器单 元群组(例如,zns中的每个区)可在一或多个数据集当中共享,且可充分利用每个存储 器单元群组。
25.本公开的优点包含但不限于利用zns改进各区的利用效率。用于顺序写入存储器装 置(例如,使用zns)的一些存储分配系统(其中在数据集当中不共享区)可能产生等同于 浪费的存储容量的部分填充区。相反地,本公开的各方面通过使区能够在多个数据集当 中共享而实现完全填充各区,因此避免了浪费的存储容量。此外,本公开的各方面使写 入放大减少。区复位涉及擦除整个区。在其中区被部分填充的一些系统中的区复位期间, 擦除整个区将导致不必要地擦除空块,因此导致写入放大增大,这不利地影响了存储器 装置的磨损。因此,本公开的优点包含减少的写入放大,这会使存储器装置寿命更久。 存储器分配和到存储器装置的映射领域的技术人员将清楚下文论述的其它优点。
26.图1a说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。 存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、 一或多个非易失性存储器装置(例如,存储器装置130),或此类装置的组合。
27.存储器子系统110可以是存储装置、存储器模块,或存储装置和存储器模块的组合。 存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、 嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡以及 硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小型dimm (so-dimm)以及各种类型的非易失性双列直插式存储器模块(nvdimm)。
28.计算系统100可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移 动装置、载具(例如,飞机、无人机、火车、汽车或其它运输工具)、具有物联网(iot)功 能的装置、嵌入式计算机(例如,包含在载具、工业设备或联网商用装置中的嵌入式计算 机),或包含存储器和处理装置的此类计算装置。
29.计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实 施例中,主机系统120耦合到不同类型的多个存储器子系统110。图1a说明耦合到一 个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”或“与... 耦合”通常是指组件之间的连接,所述连接可以是间接通信连接或直接通信连接(例如不 具有居间组件),无论有线或无线,包含例如电连接、光学连接、磁连接等连接。
30.主机系统120可包含处理器芯片组和由所述处理器芯片组执行的软件栈。处理器芯 片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如,nvdimm控制器), 和存储协议控制器(例如,pcie控制器、sata控制器)。主机系统120使用存储器子系 统110,
以例如将数据写入到存储器子系统110和从存储器子系统110读取数据。
31.主机系统120可通过物理主机接口耦合到存储器子系统110。物理主机接口的实例 包含但不限于串行高级技术附件(sata)接口、外围组件互连高速(pcie)接口、通用串行 总线(usb)接口、光纤通道、串行连接的scsi(sas)、双数据速率(ddr)存储器总线、 小型计算机系统接口(scsi)、双列直插式存储器模块(dimm)接口(例如,支持双数据速 率(ddr)的dimm套接接口)等。物理主机接口可用于在主机系统120与存储器子系统 110之间传输数据。在存储器子系统110通过物理主机接口(例如,pcie总线)与主机系 统120耦合时,主机系统120可进一步利用nvm高速(nvme)接口来存取组件(例如, 存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传 送控制、地址、数据以及其它信号的接口。图1a说明存储器子系统110以作为实例。 总的来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合 存取多个存储器子系统。
32.存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装 置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存 储器(ram),例如动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
33.非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(nand)型快闪存 储器和就地写入存储器,如三维交叉点(“3d交叉点”)存储器装置,其为非易失性存储 器单元的交叉点阵列。非易失性存储器单元的交叉点阵列可结合可堆叠交叉网格化数据 存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器相比,交叉 点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情 况下对非易失性存储器单元进行编程。nand型快闪存储器包含例如二维nand(2dnand)和三维nand(3d nand)。
34.存储器装置130中的每一者可包含一或多个存储器单元阵列。一个类型的存储器单 元,例如单层级单元(slc),可每单元存储一个位。其它类型的存储器单元,例如,多 层级单元(mlc)、三层级单元(tlc)、四层级单元(qlc)和五层级单元(plc),可每单元 存储多个位。在一些实施例中,存储器装置130中的每一者可包含一或多个存储器单元 阵列,例如slc、mlc、tlc、qlc、plc或这些的任何组合。在一些实施例中,特定 存储器装置可包含存储器单元的slc部分以及mlc部分、tlc部分、qlc部分或plc 部分。存储器装置130的存储器单元可分组为页,所述页可指用于存储数据的存储器装 置的逻辑单元。对于一些类型的存储器(例如,nand),页可经分组以形成块。
35.虽然描述了例如非易失性存储器单元的3d交叉点阵列以及nand型快闪存储器 (例如,2d nand、3d nand)的非易失性存储器组件,但存储器装置130可基于任何其 它类型的非易失性存储器,例如,只读存储器(rom)、相变存储器(pcm)、自选存储器、 其它基于硫族化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存 储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram (cbram)、电阻式随机存取存储器(rram)、基于氧化物的rram(oxram)、或非(nor) 快闪存储器,或电可擦除可编程只读存储器(eeprom)。
36.存储器子系统控制器115(或简单起见,控制器115)可与存储器装置130通信以执行 操作,例如,在存储器装置130处读取数据、写入数据或擦除数据,以及其它此类操作。 存储器子系统控制器115可包含硬件,例如一或多个集成电路和/或离散组件、缓冲器存 储
器,或其组合。硬件可包含具有执行本文中所描述的操作的专用(即,硬译码)逻辑的 数字电路系统。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例如,现 场可编程门阵列(fpga)、专用集成电路(asic)等),或其它合适的处理器。
37.存储器子系统控制器115可包含处理装置,所述处理装置包含经配置以执行存储在 本地存储器119中的指令的一或多个处理器(例如,处理器117)。在所说明的实例中,存 储器子系统控制器115的本地存储器119包含经配置以存储指令的嵌入式存储器,所述 指令用于执行各种过程、操作、逻辑流以及例程以控制存储器子系统110的操作,包含 处理存储器子系统110与主机系统120之间的通信。
38.在一些实施例中,本地存储器119可包含存储存储器指针、所提取数据等的存储器 寄存器。本地存储器119还可包含用于存储微码的只读存储器(rom)。尽管将图1a中 的实例存储器子系统110说明为包含存储器子系统控制器115,但在本公开的另一实施 例中,存储器子系统110不包含存储器子系统控制器115,且可能改为依靠(例如由外部 主机或由与存储器子系统分开的处理器或控制器提供的)外部控制。
39.总的来说,存储器子系统控制器115可从主机系统120接收命令或操作,且可将所 述命令或操作转换成指令或合适的命令,以实现对存储器装置130的所要存取。存储器 子系统控制器115可负责其它操作,例如耗损均衡操作、无用单元收集操作、错误检测 和错误校正码(ecc)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的 逻辑地址(例如,逻辑块地址(lba)、名称空间)和物理地址(例如,物理块地址)之间的地 址转译。存储器子系统控制器115还可包含主机接口电路系统以经由物理主机接口与主 机系统120通信。主机接口电路系统可将从主机系统接收的命令转换成命令指令以存取 存储器装置130,以及将与存储器装置130相关联的响应转换成用于主机系统120的信 息。
40.存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储 器子系统110可包含高速缓存或缓冲器(例如,dram)和地址电路系统(例如,行解码器 和列解码器),所述地址电路系统可从存储器子系统控制器115接收地址且解码所述地址 以对存储器装置130进行存取。
41.在一些实施例中,存储器装置130包含结合存储器子系统控制器115操作以在存储 器装置130的一或多个存储器单元上执行操作的本地媒体控制器135。外部控制器(例如, 存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行 媒体管理操作)。在一些实施例中,存储器子系统110为受管理存储器装置,其为具有裸 片上的控制逻辑(例如,本地媒体控制器135)的原始存储器装置130和用于相同存储器 装置封装内的媒体管理的控制器(例如,存储器子系统控制器115)。受管理存储器装置 的实例是受管理nand(mnand)装置。
42.计算系统100在主机系统120中包含存储驱动器133,所述存储驱动器配置有本文 中贯穿各图所论述的存储分配和装置映射功能。在一些实施例中,存储分配和装置映射 功能可由用户空间驱动器实施。在一些实施例中,主机系统120包含存储分配和装置映 射功能的至少一部分。在其它实施例中,存储器子系统控制器115包含存储分配和装置 映射功能的至少一部分。举例来说,存储器子系统控制器115和主机系统120的处理装 置(处理器)可经配置以执行存储于存储器中的指令,以用于执行本文中所描述的映射和 存储分配功能的操作。
43.图1b是根据一些实施例的图1a的计算系统100的详细框图。在各种实施例中, 主机系统120包含处理装置122、高速缓存123、文件系统驱动器124、一或多个应用程 序126a到126b和存储驱动器133。在实施例中,处理装置122可执行指令以例如通过 执行主机系统120的操作系统的内核而执行存储驱动器133和/或文件系统驱动器124。 主机系统120可执行一或多个应用程序126a到126b。在说明性实例中,应用程序126a 可与文件系统驱动器124通信。文件系统驱动器124可在主机系统120的内核空间中运 行,且可用于处理由运行主机系统120的用户空间的一或多个应用程序126(包含应用程 序126a)发起的i/o请求(例如,作为读取、写入和擦除操作)。在实施例中,文件系统驱 动器124可将由应用程序126a发布的读取、写入、擦除和其它请求转译到存储驱动器 133。存储驱动器133可传送到存储器子系统控制器115。存储驱动器133可在主机系统 120的内核空间中运行,且可处理从文件系统驱动器124接收和/或从应用程序126b接 收的请求。存储驱动器133可将所述请求处理成待由存储器子系统控制器115处理的命 令。在一些实施例中,充分描述的存储分配和装置映射功能可由用户空间驱动器实施。 也就是说,相对于存储驱动器133描述的功能可由用户空间驱动器(未说明)实施。
44.在各种实施例中,计算系统100包含与顺序名字空间(例如,zns)相关联的存储器 装置130。在一个实施例中,存储器装置130是实施由nvm express
tm
(nvme
tm
)组织 定义的分区名字空间命令集的分区名字空间(zns)固态装置。zns中的区可以是顺序编 号的lba的块群组,所述lba映射到物理地址空间内顺序排序的物理地址。存储器装 置130可以是先前所提及的包含多个ic裸片的存储装置。顺序地写入到还被称作存储 器单元群组的区(例如,区0、区1、...区n-1)一般是从ic裸片的顶部(或最小地址)到ic 裸片的底部(或最大地址)顺序地执行,这通过已写入到说明的区的经图案化数据块来说 明。存储器装置130还可包含复合数据对象160以及区映射数据结构158。结合图2描 述实例区映射数据结构。在实施例中,区映射数据结构158和/或复合数据对象160可存 储在易失性存储器装置中。在实施例中,区映射数据结构158可以是用以针对名字空间 中的每个区提供存储器装置布局信息的数据结构。在实施例中,区映射数据结构158可 包括逻辑到物理(l2p)映射数据结构,以将lba空间的逻辑块编号(或地址)映射到被分 配到区或存储器群组的存储器块。在这些实施例中,存储驱动器133可通过顺序关系, 例如通过经编程以存取存储器装置130的多个ic裸片内的区(或存储器单元群组)的顺序 物理地址,来跟踪lba空间的逻辑块编号(或地址)到存储器装置130的zns。到存储器 装置130的区的写入指针(wp)可存储在高速缓存123中。
45.在实施例中,主机系统120的存储驱动器133可从应用程序126a和/或从文件系统 驱动器124接收写入请求。写入请求可指向存储器装置130的多个ic裸片。写入请求 可包含要存储在存储器装置130处的流的至少一部分。流可含有共享一或多个特性(例 如,创建或删除时间、存取频率等)的数据集(例如,文件、文件群组、数据对象、数据 对象群组或其它类似构造)。存储驱动器133可标识来自写入请求的数据集,且将所述数 据集附加到复合数据对象160。复合数据对象160包含顺序写入的数据对象。复合数据 对象160可存储为驻存在存储器子系统的易失性存储器装置上的临时文件。另外或替代 地,复合数据对象160可存储在非易失性存储器装置130中。附加到复合数据对象160 的数据集的实例在下文图3中说明。存储驱动器133可通过更新区映射数据结构158而 使复合数据对象与存储器装置130的存储器单元群组相关联且写入到所述存储器单元群 组。举例来说,存储驱动器133可使
复合数据对象160中的每个数据集与一或多个区相 关联。存储驱动器133可更新区映射数据结构158以包含哪个(哪些)数据集被指派到每 个区,且递增数据集计数器。结合图2进一步描述区映射数据结构158。
46.在实施例中,存储驱动器133可维持每个存储器单元群组的数据集计数器(所述存储 器单元群组在图1b中说明为区)。在实施例中,计数器可存储在高速缓存123中和/或存 储在区映射数据结构158中。每个数据集计数器表示分配到所述区的流(或数据集)的数 目。当存储驱动器133使复合数据对象160与存储器装置130中的区相关联时,存储驱 动器133可基于与每个相应区相关联的数据集的数目来递增与每个区相关联的计数器。 举例来说,区0可在三个数据集当中共享,且因此存储驱动器133可递增(例如,递增一) 与区0相关联的计数器三次。作为另一实例,区1可在两个数据集当中共享,且因此存 储驱动器133可递增与区1相关联的计数器两次。
47.在实施例中,主机系统120的存储驱动器133可接收指向存储器装置130的多个ic 裸片的擦除或删除请求。擦除请求可指定将删除哪个流(或数据集)。使用区映射数据结 构158,存储驱动器133可标识存储数据集的存储器单元群组(例如,区)。在实施例中, 擦除请求可包含要擦除的数据集所位于的lba。存储驱动器133可使用区映射数据结构 158将lba转译到存储要擦除的数据集的存储器装置130的块的物理地址。存储驱动器 133可标记存储要擦除的数据集的块以供擦除。此外,存储驱动器133可递减与存储经 标记以供擦除的数据集的存储器单元群组相关联的计数器。举例来说,如果存储驱动器 133接收针对与区0相关联的数据集的擦除请求,则存储驱动器133可标记存储数据集 的块以供擦除且可递减(例如,递减1)与区0相关联的计数器。作为另一实例,如果存 储驱动器133接收针对与区0和区1两者相关联的数据集的擦除请求,则存储驱动器133 可标记存储数据集的块以供擦除且可递减与区0和区1相关联的计数器。在实施例中, 标记用于擦除的数据集可包含更新l2p映射数据结构以指示存储所述数据集的块含有 无效数据。
48.为了实施区复位,存储驱动器133可使用数据集计数器标识空区。在实施例中,区 映射数据结构158可维持空闲区池,存储驱动器133可使用所述空闲区池来分配新写入 的数据集。一旦区为空(例如,存储在区中的数据集已被标记用于擦除),所述区就可复 位且返回到空闲区池。存储驱动器133可通过标识具有满足阈值条件的计数器的区而标 识符合区复位条件的区。在实施例中,所述阈值条件可为阈值,例如为零的值。因此, 存储驱动器133可标识符合区复位条件的具有计数器值零的区。存储驱动器133可针对 具有满足阈值条件的数据集计数器值的区执行区复位,这可涉及标记与用于擦除的区相 关联的多个存储器装置以及将所述区返回到空闲池。在实施例中,与区相关联的存储器 单元直到即将被重写之前才擦除以避免阈值电压偏移。
49.图2为根据各种实施例的说明区映射数据结构158的实例的框图。控制器115可将 区映射数据结构158存储在图1b的非易失性存储器装置130中。替代地或另外,控制 器115可将区映射数据结构158存储在易失性存储器装置(例如,图1a的存储器装置140) 中。替代地或另外,主机系统120可将区映射数据结构158的至少一部分存储在本地存 储器中。控制器115可使用区映射数据结构158本身或结合未描画的其它数据结构来配 置或实施媒体布局(例如,区的数据群组将位于物理地址空间内何处的布局)。
50.在图2中,区映射数据结构158经配置以针对名字空间(例如用于zns操作的lba 空
间)中的区提供存储器装置布局信息。区映射数据结构158可具有多个条目。区映射数 据结构158中的每个区映射条目标识关于区的信息,例如,区的起始lba 260、区的块 集标识符262、区光标值264、区的状态266、数据集标识符268、区的计数器270等。
51.主机系统120可使复合数据对象160与在第一空闲区的起始lba 260处开始的一或 多个区相关联。主机系统120可在lba空间中将复合数据对象160顺序地写入区中。 在一定量的数据已写入到区中之后,由区光标值264标识用于写入后续数据的当前起始 lba地址。状态266可具有指示区为空、满、隐式地开放、显式地开放、关闭等的值, 以跟踪写入所述区的进程。
52.复合数据对象160包含一或多个数据集。在实施例中,区映射数据结构158可包含 数据集标识符268。数据集标识符268可存储对存储在所述区中的数据集的参考。举例 来说,数据集标识符268可包含存储在所述区中的每个数据集的特定数据集id。此外, 对于存储在所述区中的每个数据集,计数器270可递增预定值(例如,递增一)。对于所 述区中标记用于擦除的每个数据集,计数器270可递减预定值(例如,递减一)。因此, 计数器270表示与每个区相关联的数据集的数目。因此,计数器270可用于标识空区。 举例来说,对于以零值开始的计数器270,主机系统120和/或控制器115可确定具有计 数器270值零的区为空。空区是其中存储在所述区中的所有数据已被标记用于擦除的区。 控制器115可将空区指派到空闲区池。
53.图3说明根据本公开的一些实施例实施的附加到复合数据对象300的数据对象。在 一些实施例中,复合数据对象300可与图1b的复合数据对象160相同。此实例说明将 数据集附加到复合数据对象。然而,如贯穿本公开所描述,本公开的实施例可应用于数 据对象、数据对象群组、文件、文件群组或其它类似构造。在实施例中,复合数据对象 300可存储在图1b的区映射数据结构158中,或可本地存储在图1b的主机系统120上。
54.在实施例中,主机系统的处理逻辑(例如,内核的装置映射逻辑)接收指向多个存储 器装置的写入请求。在图3中说明的实例中,写入请求包含数据集(ds)a-d 310a到 310d。举例来说,第一写入请求包含数据集a 310a,第二写入请求包含ds b 310b, 第三写入请求包含ds c 310c,且第四写入请求包含ds d 310d。在常规主机操作系统 中,主机系统的处理逻辑将使每个数据集与整数数目的存储器单元群组(例如,区)相关 联。举例来说,如果数据集a 310a是区大小的3.5倍,则常规主机操作系统会将4个 区分配给数据集a 310a,从而使区的一半为空。作为另一实例,如果ds c 310c是区 大小的十分之一,则常规主机操作系统会将1个区分配给ds c 310c,从而使区的十分 之九为空。
55.如图3中所说明,数据集a-d 310a到310d被顺序附加到复合数据对象300。在实 施例中,内核可将条目存储到逻辑到物理(l2p)映射数据结构,所述条目将数据集映射到 复合数据对象300。此外,内核可存储将复合数据对象映射到特定存储器单元群组的额 外条目,如下文图4中所说明。
56.图4说明来自图3的数据集,所述数据集被分配到存储器装置130中的存储器单元 群组(说明为区)。如图4中所说明,数据集a 310a完全填充区0、区1、区2和区3, 且填充区4的一部分。区4在数据集a 310a与数据集b 310b之间共享。数据集b 310b 进一步完全填充区5到7,且填充区8的部分。将数据集c 310c分配到区8的一部分。 区8的其余部分被分配给数据集d 310d。数据集d 310d进一步填充区9到12,以及区 13的部分。如图4中所说明,每个
区可被分配给多于一个数据集。
57.响应于将区(或区的部分)分配给数据集,存储驱动器递增与所述区相关联的计数器 (例如,递增1)。举例来说,每个数据集计数器可以0开始,且每当将数据集写入到所 述区时可递增1。因此,在图4中的实例中,与区0相关联的计数器将为1,因为仅数 据集a 310a与区0相关联。与区4相关联的计数器将递增两次,因为区4与数据集a 310a 和数据集b 310b相关联。与区8相关联的计数器将递增三次,因为区8与数据集b 310b、 数据集c 310c和数据集d 310d相关联。
58.根据此说明性实例,区映射数据结构158中用于区0的ds标识符268条目参考数 据集a,且区映射数据结构158中用于区0的计数器270条目递增预定值(例如,递增 1)。区映射数据结构158中用于区4的ds标识符268条目参考数据集a和b,且区映 射数据结构158中用于区4的计数器270条目两次递增预定值。区映射数据结构158中 用于区8的ds标识符268条目参考数据集a、b和c,且区映射数据结构158中用于 区8的计数器270条目三次递增预定值。最后,区映射数据结构158中用于区13的ds 标识符268条目均参考数据集d,区映射数据结构158中用于区13的计数器270条目 递增预定值,而区映射数据结构158中用于区13的状态266条目可指示所述区未满, 且由主机系统写入的下一复合数据对象将从该区开始。
59.在实施例中,内核接收删除或擦除请求。存储驱动器标识删除请求中包含哪个数据 集,且标记所述数据集以用于擦除。具体地说,存储驱动器可标识删除请求中的数据集 被分配到的区,且可标记与所述数据集相关联的块以供擦除。存储驱动器还递减与数据 集所关联的区相关联的计数器。作为说明性实例,如果内核接收到针对数据集c 310c 的删除请求,则存储驱动器可标识数据集c 310c分配于其中的区8中的块且标记那些 块以供擦除。此外,存储驱动器可递减与区8相关联的计数器(例如,递减一)。存储驱 动器可使用与每个区相关联的计数器来标识空区。如果与特定区相关联的数据集计数器 满足阈值,则存储驱动器可确定所述特定区为空且可执行区复位,如在下文相对于图6 进一步描述。
60.图5是根据本公开的一些实施例的将数据对象从写入请求高效地分配到存储器装置 的存储器单元群组的实例方法500的流程图。方法500可由处理逻辑执行,所述处理逻 辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、 集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例 中,方法500由图1a和1b的主机系统120(例如,经由通过处理装置122执行存储驱 动器133)执行。尽管以特定顺序或次序来展示,但除非另有指定,否则可修改过程的次 序。因此,所说明实施例仅应理解为实例,且所说明过程可以不同次序执行,且一些过 程可并行地执行。另外,在各种实施例中可省去一或多个过程。因此,并非每个实施例 中都需要所有过程。其它过程流也是可能的。
61.在操作510处,处理逻辑接收指向例如图1a的存储器装置130的多个存储器装置 的输入/输出(i/o)写入请求。所述写入请求可以是将数据集写入到存储器装置130的请 求。数据集可包含共享一或多个特性(例如,创建或删除时间、存取频率等)的一或多个 数据对象。在实施例中,从主机系统上执行的文件系统接收所述写入请求。
62.在操作520处,处理逻辑将数据集附加到复合数据对象。所述复合数据对象可以是 包含一或多个顺序写入的数据对象的数据对象。因此,在操作520处,处理逻辑将包含 在数据集中的一或多个数据对象顺序地添加到复合数据对象的末尾。在实施例中,处理 逻辑将
以供擦除的存储器单元群组实施复位,且将所述存储器单元群组返回到空闲池。分配到 空闲池的存储器单元群组可被擦除且分配给新接收到的写入请求。
73.图7是根据本公开的一些实施例的将顺序写入的文件高效地分配到存储器装置的区 的实例方法700的流程图。方法700可由处理逻辑执行,所述处理逻辑可包含硬件(例如, 处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件 (例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法700由图 1a和1b的主机系统120(例如,经由通过处理装置122执行文件系统驱动器124和/或 存储驱动器133)执行。尽管以特定顺序或次序来展示,但除非另有指定,否则可修改过 程的次序。因此,所说明实施例仅应理解为实例,且所说明过程可以不同次序执行,且 一些过程可并行地执行。另外,在各种实施例中可省去一或多个过程。因此,并非在每 个实施例中都需要所有过程。其它过程流也是可能的。
74.在操作710处,处理逻辑接收指向包括存储器装置的存储器子系统的输入/输出(i/o) 写入请求,其中存储器装置包括多个区,且其中i/o写入请求包括文件的至少一部分。 在实施例中,所述存储器子系统包括固态驱动器(ssd),且所述多个区包括分区名字空 间。
75.在操作720处,处理逻辑将文件的至少部分附加到复合文件,其中所述复合文件包 括一或多个顺序写入的文件。在实施例中,复合文件可以是驻存在易失性存储器装置上 的临时文件。
76.在操作730处,处理逻辑将复合文件分配到多个区中的一或多个区。处理逻辑将条 目存储到逻辑到物理(l2p)映射数据结构,所述条目将顺序写入的文件从逻辑块地址映射 到分配到所述区的非易失性存储器中的存储器块。
77.在操作740处,处理逻辑使复合文件被顺序地写入到所述多个区中的一或多区。处 理逻辑可递增与所述一或多个区中的每一者相关联的文件计数器。每个文件计数器可表 示与相应区相关联的文件的数目。
78.在实施例中,处理逻辑可接收指向存储器子系统的擦除请求。擦除请求可指定要擦 除的文件。处理逻辑可使用l2p映射数据结构来标识要擦除的文件所分配的区,且递减 与标识的区相关联的文件计数器。使用文件计数器,处理逻辑可标识符合区复位条件的 空区。区复位可包含擦除存储在所述区处的数据且将所述区分配到空闲区池。处理逻辑 可通过标识具有满足阈值条件的文件计数器的区而标识符合区复位条件的空区。在实施 方案中,所述阈值条件可以是例如零的阈值。因此,处理逻辑将具有等于零的文件计数 器的区标识为符合区复位条件的区。处理逻辑可例如通过更新lpt映射数据结构以将存 储在空区中的数据标记为无效来标记所标识的空区以供擦除。处理逻辑可进一步将所标 识的空区与空闲区池相关联。
79.图8说明计算机系统800的实例机器,在其内可执行指令集,以用于使所述机器执 行本文中所论述的任何一或多个方法。在一些实施例中,计算机系统800可对应于主机 系统(例如,图1a和1b的主机系统120),其包含、耦合到或利用存储器子系统(例如, 图1a的存储器子系统110)。在替代实施例中,机器可连接(例如联网)到lan、内联网、 外联网和/或互联网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或 作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的 服务器或客户
端机器的能力进行操作。
80.所述机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、 蜂窝电话、网络设备、服务器、网络路由器、交换机或桥接器,或能够(顺序或以其它方 式)执行指定待由所述机器采取的动作的指令集的任何机器。此外,尽管说明了单个机器, 但还应认为术语“机器”包含分别或共同地执行一组(或多组)指令以执行本文所论述的 任何一或多个方法的任何机器集合。
81.实例计算机系统800包含处理装置802、主存储器804(例如,只读存储器(rom)、 快闪存储器、动态随机存取存储器(dram),例如同步dram(sdram)或rdram等)、 静态存储器806(例如,快闪存储器、静态随机存取存储器(sram)等)以及数据存储系统 818,它们经由总线830彼此通信。
82.处理装置802表示一或多个通用处理装置,例如微处理器、中央处理单元等。更具 体地说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处 理器、超长指令字(vliw)微处理器,或实施其它指令集的处理器,或实施指令集的组合 的处理器。处理装置802还可以是一或多个专用处理装置,例如专用集成电路(asic)、 现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理装置802经配 置以执行用于执行本文所论述的操作和步骤的指令826。计算机系统800还可包含网络 接口装置808以在网络820上通信。
83.数据存储系统818可包含机器可读存储媒体824(也称为计算机可读媒体),其上存 储有体现本文所描述的任何一或多个方法或功能的一或多组指令826或软件。指令826 还可在其由计算机系统800执行的期间完全或至少部分地驻存在主存储器804内和/或处 理装置802内,主存储器804和处理装置802也构成机器可读存储媒体。机器可读存储 媒体824、数据存储系统818和/或主存储器804可对应于图1a的存储器子系统110。
84.在一个实施例中,指令826包含实施对应于图1a和1b的存储驱动器133的功能的 指令。尽管在实例实施例中将机器可读存储媒体824展示为单个媒体,但术语“机器可 读存储媒体”应被认为包含存储一组或多组指令的单个媒体或多个媒体。术语“机器可 读存储媒体”还应被认为包含能够存储或编码供机器执行且使机器执行本公开的任何一 或多个方法的指令集的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限 于固态存储器、光学媒体以及磁性媒体。
85.已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细 描述的一些部分。这些算法描述和表示是数据处理领域中的技术人员用以将其工作的主 旨最有效地传达给所属领域的其他技术人员的方式。算法在此处以及通常被认为是产生 所要结果的操作的自洽序列。所述操作是要求对物理量进行物理操控的操作。这些量通 常但未必呈能够被存储、组合、比较和以其它方式操控的电或磁信号的形式。有时,已 证明主要出于通用的原因将这些信号称为位、值、元件、符号、字符、项、数字等是方 便的。
86.然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅仅是应用于这些 量的方便标签。本公开可指计算机系统或类似电子计算装置的动作和过程,其操控且将 计算机系统的寄存器和存储器内表示为物理(电子)量的数据变换成计算机系统存储器或 寄存器或其它此类信息储存系统内类似地表示为物理量的其它数据。
87.本公开还涉及用于执行本文中的操作的设备。此设备可出于既定目的而专门构
造, 或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此 类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘(包含软盘、 光盘、cd-rom和磁性光盘)、只读存储器(rom)、随机存取存储器(ram)、eprom、 eeprom、磁卡或光卡或适合存储电子指令的任何类型的媒体,各个媒体耦合到计算机 系统总线。
88.本文中呈现的算法和显示在本质上不与任何特定计算机或其它设备相关。各种通用 系统可与根据本文中的教示的程序一起使用,或可证明构建更专用设备以执行所述方法 是方便的。将如下文描述中所阐述的那样来呈现多种这些系统的结构。另外,未参考任 何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施本文中所描述的本 公开的教示。
89.本公开可提供为计算机程序产品或软件,其可包含机器可读媒体,所述机器可读媒 体上存储有指令,所述指令可用于编程计算机系统(或其它电子装置)以执行根据本公开 的过程。机器可读媒体包含用于以机器(例如,计算机)可读形式存储信息的任何机构。 在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体, 例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒 体、快闪存储器组件等。
90.在前述说明书中,已参考其特定实例实施例描述了本公开的实施例。应显而易见的 是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下 对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和附图。