一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于存储器子系统的命名空间管理的制作方法

2022-02-20 12:58:00 来源:中国专利 TAG:

用于存储器子系统的命名空间管理
1.交叉参考
2.本专利申请案主张由弗罗利科夫(frolikov)等人在2020年6月29日申请的标题为“用于存储器子系统的命名空间管理(namespace management for memory sub-systems)”的第16/914,939号美国专利申请案的优先权,所述美国专利申请案被转让给其受让人且以其全文引用方式明确并入本文中。
技术领域
3.技术领域涉及用于存储器子系统的命名空间管理。


背景技术:

4.存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置及易失性存储器装置。一般来说,主机系统可利用存储器子系统在存储器装置处存储数据及从所述存储器装置检索数据。


技术实现要素:

5.描述一种方法。所述方法可包含:产生具有与存储器子系统相关联的一组命名空间块的命名空间映射表,其中所述一组命名空间块中的命名空间块指示所述命名空间块及在所述命名空间块之后的每一命名空间块可用于根据所述命名空间映射表的排序进行映射,且其中每一命名空间块包括与所述存储器子系统相关联的一或多个逻辑块地址;接收使用所述命名空间映射表创建命名空间的请求;及响应于所述请求根据所述命名空间映射表的所述排序将一或多个可用命名空间块循序地映射到所述命名空间,其中所述一或多个可用命名空间块包括至少所述命名空间块。
6.描述一种系统。所述系统可包含:多个存储器组件;及处理装置,其与所述多个存储器组件可操作地耦合以进行以下操作:产生包含与所述多个存储器组件相关联的多个命名空间块的命名空间映射表,其中所述多个命名空间块中的命名空间块指示所述命名空间映射表内在所述命名空间块之后的每一命名空间块可用于基于所述命名空间映射表的排序进行命名空间映射;及基于所述命名空间映射表的所述排将所述多个命名空间块中的一或多个可用命名空间块序循序地映射到命名空间,其中所述一或多个可用命名空间块包括所述命名空间块、所述命名空间块之后的一或多个命名空间块或其组合。
7.描述一种非暂时性计算机可读存储媒体。所述非暂时性计算机可读存储媒体可包含指令,所述指令在由处理装置执行时致使所述处理装置进行以下操作:产生具有与存储器子系统相关联的一组命名空间块的命名空间映射表,其中所述一组命名空间块中的命名空间块指示所述命名空间块及在所述命名空间块之后的每一命名空间块可用于根据所述命名空间映射表的排序进行映射,且其中每一命名空间块包括与所述存储器子系统相关联的一或多个逻辑块地址;接收使用所述命名空间映射表创建命名空间的请求;及响应于所述请求根据所述命名空间映射表的所述排序将一或多个可用命名空间块循序地映射到所
述命名空间,其中所述一或多个可用命名空间块包括至少所述命名空间块。
附图说明
8.从下文给出的详细描述及从本公开的各种实施例的附图将更加完全地理解本公开。然而,图式不应理解为将本公开限于特定实施例,而仅是为了解释及理解。
9.图1是根据本公开的一些实施例的计算环境的实例。
10.图2a及2b是根据本公开的一些实施例的管理命名空间的实例方法的流程图。
11.图3说明根据本公开的一些实施例的实例命名空间管理操作。
12.图4说明根据本公开的一些实施例的实例命名空间管理操作。
13.图5是本公开的实施例可在其中操作的计算机系统的实例机器。
具体实施方式
14.本公开的方面涉及通过链接阵列进行循序预提取。存储器子系统可为存储装置、存储器模块或存储装置与存储器模块的混合。下文结合图1描述存储装置及存储器模块的实例。一般来说,主机系统可利用包含一或多个存储器组件(在下文也称为“存储器装置”)的存储器子系统。主机系统可提供将存储在存储器子系统处的数据且可请求将从存储器子系统检索的数据。
15.存储器装置可为非易失性存储器装置。非易失性存储器装置是一或多个裸片的封装。每一裸片可由一或多个平面组成。针对一些类型的非易失性存储器装置(例如“与非”(nand)装置),每一平面由一组物理块组成。每一块由一组页组成。每一页由存储数据位的一组存储器单元组成。针对例如nand装置的一些存储器装置,块是可擦除的最小的区,且块内的页无法被个别地擦除。针对此类装置,一次一块地执行擦除操作。
16.块的页可含有有效数据、无效数据或不含数据。无效数据是随着新版本的数据被存储在存储器装置上而被标记为过时的数据。无效数据包含先前被写入但不再与有效逻辑地址(例如由主机系统在物理到逻辑(p2l)映射表中引用的逻辑地址)相关联的数据。有效数据是存储在存储器装置上的最新版本的此类数据。存储器子系统可基于例如从操作系统接收到的信息将数据标记为无效。不含数据的页包含先前已经擦除且尚未被写入的页。
17.存储器子系统可含有多个存储器单元,且每一存储器单元可与存储器子系统的固件内的逻辑块地址(lba)相关联。lba可经存储于存储器子系统的固件中,且当实施存取操作(例如当读取、写入、擦除及重写数据到存储器单元)时lba可由固件使用。在一些情况中,lba可被组织成lba的群组。举例来说,lba可连续排序且组织成lba块的群组。在一些情况中,lba块可称为命名空间块。举例来说,存储器子系统可含有8太字节(tb)的存储器单元,且lba可被分组成2千兆字节(gb)命名空间块,其中每一命名空间块含有2gb的连续排序的lba。在此情况中,64,000个不同命名空间块用于组织固件内的lba(例如,8tb的存储器除以每块2gb产生64,000个lba块)。
18.存储器子系统可利用命名空间映射表来管理固件内的命名空间块。在一些情况中,命名空间映射表可被组织成不同区段。在非易失性存储器高速(nvme)协议的情况中,区段可称为命名空间。固件可将命名空间映射表划分成多个命名空间,且命名空间块可被分配到每一命名空间中。固件可将所有命名空间块分配到命名空间直到所有命名空间块完全
被分配,或固件仅可将一些命名空间块分配到命名空间。
19.当将不同命名空间块分配到命名空间中时,固件可利用自由列表。最初,所有命名空间块可经指派到自由列表使得所述自由列表含有可用于分配到命名空间的所有命名空间块。固件可通过将命名空间块从自由列表重新指派到给定命名空间(例如,从自由列表移动到命名空间)来将命名空间块分配到命名空间。在一些情况中,固件可继续将自由命名空间块分配到命名空间直到自由列表中的任何自由命名空间块都不再可用。
20.当利用自由列表时,自由列表的大小经配置为足够大以含有所有可用命名空间块(例如,当所有命名空间块都可用于命名空间分配时)。另外,命名空间映射表可经配置为足够大以含有所有命名空间块(例如,当所有命名空间块都已被分配到命名空间时)。在这些情况中,专用于管理命名空间的固件存储量可存在冗余,这是因为自由列表及命名空间映射表两者都大到足以含有所有命名空间块。举例来说,在其中8tb的存储器可用的且命名空间块大小是2gb的情况中,自由列表及命名空间映射表两者各自可含有足够的存储器来存储命名空间块的64,000个条目。此冗余可能占用固件原本可用来改进存储器子系统的功能方面的效率及延时的存储器。
21.本公开的方面通过提供一种不包含或利用单独自由列表来进行命名空间管理的存储器子系统解决了上述及其它缺点。固件可在不具有含有命名空间块的信息(例如给定命名空间块是否可用于映射)的单独自由列表的情况下利用指定此类信息的命名空间映射表,而非个别地利用及管理自由列表及命名空间映射表两者。举例来说,命名空间映射表内或存储为可由固件存取的私有变量的指示符可用于区分经分配(例如经映射)与未经分配(例如未经映射)命名空间,而非通过使用包含可用于命名空间映射的未映射lba的自由列表及仅具有映射到命名空间的lba的命名空间映射表。通过在不使用自由列表的情况下使用命名空间映射表,可避免命名空间映射表及自由列表的冗余,且固件可比使用自由列表的情况更高效地起作用。此类技术可释放被存储器子系统使用的存储器。
22.首先在参考图1所描述的计算环境的上下文中描述本公开的特征。本公开的特征在用于在不使用自由列表的情况下管理命名空间的实例方法及在不使用自由列表的情况下进行的实例命名空间管理操作的流程图的上下文中描述,如参考图2到4描述。本公开的这些及其它特征通过参考与参考图5所描述的用于存储器子系统的命名空间管理相关的计算机系统进一步说明及描述。
23.图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个非易失性存储器装置(例如存储器装置130)、一或多个易失性存储器装置(例如存储器装置140)或其组合。
24.存储器子系统110可为存储装置、存储器模块或存储装置与存储器模块的混合。存储装置的实例包含固态驱动(ssd)、快闪驱动、通用串行总线(usb)快闪驱动、嵌入式多媒体控制器(emmc)驱动、通用快闪存储(ufs)驱动、安全数字(sd)卡及硬盘驱动(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小形dimm(so-dimm)及非易失性dimm(nvdimm)。
25.计算系统100可为例如桌面计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如飞机、无人机、火车、汽车或其它运输工具)、物联网(iot)启用装置、嵌入式计算机(例如,包含于运载工具、工业设备或联网商用装置中的嵌入式计算机)或包含存储器及处
理装置的此计算装置的计算装置。
26.计算系统100可包含与一或多个存储器子系统110耦合的主机系统105。在一些实例中,主机系统105与不同类型的存储器子系统110耦合。图1说明与一个存储器子系统110耦合的主机系统105的一个实例。如本文中使用,“耦合到”或“与

耦合”一般指代组件之间的连接,其可为间接通信连接或直接通信连接(例如,不具有中介组件),无论是有线还是无线,包含例如电连接、光学连接、磁性连接等的连接。
27.主机系统105可包含处理器芯片组及由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如nvdimm控制器)及存储协议控制器(例如pcie控制器、sata控制器)。主机系统105使用存储器子系统110(例如)将数据写入到存储器子系统110及从存储器子系统110读取数据。
28.主机系统105可使用物理主机接口耦合到存储器子系统110。物理主机接口的实例包含(但不限于)串行高级技术附件(sata)接口、外围组件互连高速(pcie)接口、usb接口、光纤通道、小型计算机系统接口(scsi)、串行附接scsi(sas)、双倍数据速率(ddr)存储器总线、双列直插式存储器模块(dimm)接口(例如,支持双倍数据速率(ddr)的dimm套接字接口))、开放nand快闪接口(onfi)、双倍数据速率(ddr)、低功耗双倍数据速率(lpddr)或任何其它接口。物理主机接口可用于在主机系统105与存储器子系统110之间传输数据。当存储器子系统110通过pcie接口与主机系统105耦合时,主机系统105可进一步利用非易失性存储器高速(nvme)接口存取存储器组件(例如存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统105之间传递控制、地址、数据及其它信号的接口。
29.存储器装置130、140可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如存储器装置140)可为(但不限于)随机存取存储器(ram),例如动态ram(dram)及同步dram(sdram)。
30.非易失性存储器装置的一些实例(例如存储器装置130)包含nand型快闪存储器及原位写入存储器,例如三维交叉点(“3d交叉点”)存储器装置,其是非易失性存储器单元的交叉点阵列。交叉点非易失性存储器阵列可基于体电阻变化连同可堆叠交叉栅格式数据存取阵列执行位存储。另外,与许多基于快闪的存储器形成对比,交叉点非易失性存储器可执行原位写入操作,其中可在先前未擦除非易失性存储器单元的情况下对所述非易失性存储器单元进行编程。nand型快闪存储器包含例如二维nand(2d nand)及三维nand(3d nand)。
31.存储器装置130中的每一者可包含一或多个存储器单元阵列。例如单电平单元(slc)的一种类型的存储器单元每单元可存储一个位。例如多电平单元(mlc)、三电平单元(tlc)及四电平单元(qlc)的其它类型的存储器单元每单元可存储多个位。在一些实施例中,存储器装置130中的每一者可包含一或多个存储器单元阵列,例如slc、mlc、tlc、qlc或此类的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的slc部分及mlc部分、tlc部分或qlc部分。存储器装置130的存储器单元可经分组为页,其可指代用于存储数据的存储器装置的逻辑单位。对于一些类型的存储器(例如nand),页可经分组以形成块。
32.尽管描述了例如nand类型快闪存储器的非易失性存储器装置,但存储器装置130可为基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选择存储器、其它硫属化物基存储器、铁电晶体管随机存取存储器(fetram)、铁电ram(feram)、磁ram(mram)、“或非”(nor)快闪存储器、自旋力矩(stt)-mram、导电桥接ram
(cbram)、电阻性随机存取存储器(rram)、氧化物基rram(oxram)及电可擦除可编程rom(eeprom)。
33.存储器子系统控制器115(或为了简化起见,控制器115)可与存储器装置130通信以执行操作,操作例如在存储器装置130处读取数据、写入数据或擦除数据及其它此类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路及/或离散组件、缓冲器存储器或其组合。硬件可包含具有用于执行本文中描述的操作的专用(即,硬编码)逻辑的数字电路系统。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(fpga)、专用集成电路(asic)、数字信号处理器(dsp))或其它合适的处理器。
34.存储器子系统控制器115可包含经配置以执行存储于本地存储器125中的指令的处理器120(例如处理装置)。在说明的实例中,存储器子系统控制器115的本地存储器125包含经配置以存储用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流及例程的指令的嵌入式存储器,所述操作包含处置存储器子系统110与主机系统105之间的通信。
35.在一些实例中,本地存储器125可包含存储存储器指针、经提取数据等的存储器寄存器。本地存储器125还可包含用于存储微代码的只读存储器(rom)。虽然已将图1中的实例存储器子系统110说明为包含存储器子系统控制器115,但在本公开的另一实例中,存储器子系统110不包含存储器子系统控制器115,且可代替地依赖于外部控制(例如,由外部主机提供、或由与存储器子系统分离的处理器或控制器提供)。
36.一般来说,存储器子系统控制器115可从主机系统105接收命令或操作且可将所述命令或操作转换成指令或适当命令以实现对存储器装置130的所期望存取。存储器子系统控制器115可负责其它操作,例如磨损均衡操作、废料收集操作、错误检测及错误校正代码(ecc)操作、加密操作、高速缓存操作及与存储器装置130相关联的逻辑块地址(例如逻辑块地址(lba)、命名空间)与物理地址(例如物理块地址)之间的地址转译。存储器子系统控制器115可进一步包含用以经由物理主机接口与主机系统105通信的主机接口电路系统。所述主机接口电路系统可将从主机系统接收的命令转换成命令指令以存取存储器装置130,且还将与存储器装置130相关联的响应转换成用于主机系统105的信息。
37.存储器子系统110还可包含未说明的额外电路系统或组件。在一些实例中,存储器子系统110可包含高速缓存或缓冲器(例如dram)及地址电路系统(例如行解码器及列解码器),其可从存储器子系统控制器115接收地址且解码所述地址以存取存储器装置130。
38.在一些实例中,存储器装置130包含本地媒体控制器135,其连同存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其是与用于同一存储器装置封装内的媒体管理的本地控制器(例如本地控制器135)组合的原始存储器装置。受管理存储器装置的实例是受管理nand(mnand)装置。
39.存储器子系统110包含可管理命名空间及可用或映射到存储器子系统110的固件内的命名空间(可称为命名空间块)的lba块的命名空间管理器150。命名空间管理器150可含有与存储器子系统110相关联的所有命名空间块,且可通过命名空间块到命名空间管理器150内的命名空间的映射管理命名空间块。在一些情况中,指示符可用于确定哪些命名空间块被分派到命名空间,且指示符可允许在不使用自由列表的情况下将命名空间块映射到
命名空间。
40.在一些实例中,存储器子系统控制器115包含命名空间管理器150的至少一部分。举例来说,存储器子系统控制器115可包含经配置以执行存储于本地存储器125中的指令用于执行本文中描述的操作的处理器120(例如处理装置)。在一些实例中,命名空间管理器150是主机系统105、应用程序或操作系统的部分。
41.命名空间管理器150可在不使用独立于命名空间管理器150的自由列表的情况下将命名空间块映射到命名空间。在一些情况中,命名空间映射表可含有与命名空间内的命名空间块相关联的指示符。指示符可指示经映射命名空间块与可用于映射的命名空间块(例如未映射命名空间块)之间的划分。在此情况中,当新命名空间被固件映射时,固件可循序地使用可用命名空间块映射新命名空间,从与指示符相关联的命名空间块开始(例如,在其中指示符指定可用于映射的第一命名空间块的情况中)。在映射新命名空间之后,可取消指示符与先前第一可用命名空间块的关联且使指示符与可为用于命名空间映射的第一可用命名空间块的新可用命名空间块相关联。在一些情况中,指示符可为存储于可由固件存取的存储器中的私有变量且可为或可传达第一可用命名空间块的索引。在其中命名空间被删除的情况中,可取消指示符与先前第一可用命名空间块的关联,且在可用命名空间块的重新排序之后,使指示符与新(即,由于命名空间映射而更新)第一可用命名空间块相关联。在这些情况中,可在不使用自由列表的情况下管理命名空间管理器150(例如,可添加及删除命名空间)。下文描述关于命名空间管理器150的操作的另外细节。
42.图2a是根据本公开的一些实施例的用于管理存储器子系统的命名空间的实例方法200-a的流程图。方法200-a可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实例中,方法200-a由图1的命名空间管理器150执行。尽管以特定顺序或次序展示,但除非另外指定,否则过程的次序是可修改的。因此,说明的实例应被理解为仅作为实例,且说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实例中,可省略一或多个过程。因此,并非在每个实例中都需要所有过程。其它过程流是可能的。
43.在操作205,处理装置产生命名空间映射表。在一些实施例中,命名空间映射表在存储器子系统的寿命内产生一次。举例来说,一或多个默认命名空间映射表在制造存储器子系统时或在第一次启动时产生。在其它情况中,命名空间映射表在存储器子系统的寿命内产生一次以上。举例来说,如果存储器子系统在其寿命期间经历格式化(例如,用于将驱动复位到制造状态的低级格式)。命名空间映射表可含有足够的条目来组织命名空间映射表内的每一命名空间块。如上文论述,每一命名空间块可含有与存储器子系统内的存储器单元相关联的连续排序的lba(例如,循序排序的lba)的群组。在此情况中,命名空间映射表的大小可基于存储器子系统中命名空间块的数目且因此基于可被分组到每一命名空间块中的lba的数目。举例来说,固件可将lba组织到2gb命名空间块中。在此情况中,命名空间映射表可含有用于每一2gb命名空间块的足够的条目,且命名空间映射表大小为基于此条目量。在一些情况中,固件可改变命名空间块大小,且命名空间映射表的大小可适应所述变化。举例来说,固件可将命名空间块的大小减小到1gb。在此情况中,命名空间映射表的条目量可加倍以适应两倍之多的命名空间块。
44.在操作210,处理装置接收创建命名空间的请求。所述请求可为从主机系统(例如参考图1所论述的主机系统105)接收的用于命名空间管理的主机请求。在一些情况中,请求可在存储器子系统启动后就接收或在主机系统105请求新命名空间时接收。在一些实施例中,请求是操作码,例如命名空间管理操作码。在操作码内,选择指令指定处理装置识别且用于产生命名空间的命名空间创建。在一些情况中,请求可包含命名空间的大小。命名空间的大小可确定指派到命名空间的命名空间块的数目。举例来说,存储器子系统可接收创建24gb命名空间的请求。在其中命名空间块大小被设置在2gb的情况中,12个命名空间块可被分配到命名空间(例如,各自2gb的12个命名空间块产生24gb命名空间)。
45.在一些情况中,命名空间映射表可根据索引进行组织。举例来说,索引号可与命名空间块被分配到其的命名空间映射表中的每一条目相关联。在此情况中,每一命名空间可因此与一群组连续索引号相关联。接着,命名空间块可经分配到命名空间,且命名空间可与索引号相关联。在此情况中,索引号可用于管理命名空间块到命名空间的分配。在其它情况中,命名空间映射表可不根据索引排序,且代替地可为随机顺序。
46.在操作215,处理装置识别第一可用命名空间块。举例来说,指示符(例如变量的一组位)可与可用于命名空间分配的命名空间映射表的命名空间块相关联。在一些情况中,命名空间块可为用于命名空间分配的第一可用命名空间块(例如,未分配到命名空间的第一命名空间块(例如,根据升序的命名空间索引))。在一些实施例中,变量可为与命名空间映射表相关联且可被存储器子系统的固件存取的私有变量(例如,变量可经存储在可被固件存取的存储器子系统的存储器上)。接着,固件在确定将映射到命名空间的可用命名空间块时可引用此变量。指示符可用于指定命名空间映射表中可用命名空间块与不可用命名空间块之间的划分。举例来说,排在所述指示符之前(例如,具有小于所述指示符的索引号)的所有命名空间块可为不可用命名空间块,且排在所述指示符之后(例如,具有大于所述指示符的索引号)的所有命名空间块可为可用命名空间块。
47.在操作220,处理装置映射可用命名空间块。举例来说,可用命名空间块可被循序地映射(例如分配)到命名空间。如上文论述,第一可用命名空间块可经分配到命名空间。额外命名空间块可经分配到命名空间直到命名空间的大小被完全分配。举例来说,可请求24gb命名空间,且基于2gb的命名空间块大小,12个命名空间块可经分配到命名空间以填充命名空间。在此情况中,第一可用命名空间块以及11个额外命名空间块被映射到命名空间。映射到命名空间的额外命名空间块可根据命名空间块的索引循序地跟在第一可用命名空间块后面。举例来说,在其中第一可用命名空间的索引号是32的情况中,命名空间块33到43也被映射到命名空间。
48.在操作225,处理装置移除变量或指示符与操作215的第一可用命名空间块的关联(即,处理装置取消指示符与先前第一可用命名空间块的关联)。取消指示与命名空间块的关联,这是由于命名空间块既不再是第一可用命名空间块也不再是可用于命名空间分配的命名空间块。在此情况中,与块相关联的索引号也不再与用于命名空间分配的第一可用命名空间块相关联。
49.在操作230,处理装置对可用命名空间块重新排序。如操作220中论述,先前可用的命名空间块已被分配到命名空间。在此情况中,与可用及不可用命名空间块相关联的索引号可能不再对应于可用于命名空间分配的命名空间块。在此情况中,固件可通过将最新可
用命名空间块指派到对应于可用命名空间块的索引号来对可用命名空间块重新排序。在一些情况中,此可将所有可用命名空间块重新排序成命名空间映射表中的新索引号。举例来说,在其中新命名空间已被映射以占用索引号32到43的情况中,可对所有可用命名空间块(例如,与大于43的索引号相关联的命名空间块)重新排序。
50.在操作235,处理装置更新可用于命名空间映射的第一可用命名空间块。如先前论述,在操作225,可移除指示第一可用命名空间块的变量与先前第一可用命名空间的关联,及在操作230,可对可用命名空间块重新排序。在此情况中,变量或指示符可经写入到可由固件存取的存储器子系统的存储装置或存储器且可与对应于可用于命名空间分配的新(例如第二)命名空间块的索引的一组位相关联或使用所述一组位更新。新命名空间块可为用于命名空间分配的现第一可用命名空间块(例如,在命名空间已被分配之后未分配到命名空间的第一命名空间块)。接着,固件可将此第一可用命名空间块及额外可用命名空间块分配到另一命名空间。
51.在一些情况中,可迭代地执行操作210到235以在其中在存储器子系统处接收到用于创建命名空间的多个请求的情况中映射多个命名空间。举例来说,创建额外命名空间的请求可被存储器子系统接收(例如,类似于操作210)。接着,存储器子系统可基于指示用于映射的第一可用命名空间块的变量将多个可用命名空间块循序地分配到命名空间(例如,类似于操作220)、移除与现经映射命名空间块的关联(例如,类似于操作225)、对可用命名空间块重新排序(例如,类似于操作230)及使可用于命名空间映射(例如,类似于操作235)的另一命名空间块与指示符或变量相关联。可重复这些步骤以便映射命名空间映射表中的多个命名空间。
52.图2b是根据本公开的一些实施例的用于管理存储器子系统的命名空间的实例方法200-b的流程图。方法200-b可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实例中,方法200-b由图1的命名空间管理器150执行。尽管以特定顺序或次序展示,但除非另外指定,否则过程的次序是可修改的。因此,说明的实例应被理解为仅作为实例,且说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实例中,可省略一或多个过程。因此,并非在每个实例中都需要所有过程。其它过程流是可能的。
53.在一些情况中,可从命名空间映射表删除先前映射的命名空间。命名空间的删除可发生于已在命名空间映射表中分配一或多个命名空间之后。举例来说,在操作240,存储器子系统可接收删除已被映射到命名空间映射表的命名空间的请求。命名空间的映射可能已在操作210到235期间已经发生(例如,映射第一命名空间)或已在类似于如在图2a中描述的操作210到235的操作期间发生(例如,映射后一命名空间)。
54.所述请求可为从主机系统(例如参考图1所论述的主机系统105)接收的用于命名空间管理的主机请求。在一些实施例中,请求是操作码,例如命名空间管理操作码。在操作码内,选择指令指定处理装置识别且用于删除命名空间的命名空间删除。在一些情况中,请求可包含命名空间的大小。命名空间的大小可指示指派到命名空间的命名空间块的数目。举例来说,存储器子系统可接收删除24gb命名空间的请求。在其中命名空间块大小被设置在2gb的情况中,12个命名空间块被分配到命名空间(例如,各自2gb的12个命名空间块产生
24gb命名空间)。
55.在操作245,处理装置取消映射先前分配的命名空间。命名空间的取消映射可包含取消每一被映射命名空间块与命名空间的关联及使现在取消关联的命名空间块与可用于映射的命名空间块相关联。在此实例中,未映射命名空间块可与可用于映射的索引号相关联。举例来说,在其中命名空间包含与索引号32到43相关联的命名空间块(例如,命名空间块32到43被映射到命名空间)且命名空间被删除的情况中,先前与命名空间相关联的索引号(例如索引号32到43)接着可与可用于命名空间映射的自由命名空间块相关联。
56.在操作250,处理装置取消先前与第一可用命名空间块相关联的指示(例如变量)的关联。在一些情况中,移除指示与此命名空间块的关联,这是因为命名空间块不再是用于命名空间映射的第一可用命名空间块。举例来说,在曾经与索引号32到43相关联的命名空间被删除的情况中,与第一可用命名空间块相关联的索引号可从44(例如,在进行命名空间删除之前的第一可用命名空间块)变为索引号32(例如,在进行命名空间删除之后的新的第一可用命名空间块索引号)。在此情况中,可移除先前指示与索引44相关联的命名空间块的指示,这是由于与索引号32相关联的命名空间块现在是用于命名空间映射的第一可用命名空间块。然而,在一些情况中,在取消映射命名空间之后,用于映射的第一可用命名空间块与映射命名空间之前相同,且不执行移除指示符与第一可用命名空间块的关联。
57.在操作255,处理装置对命名空间映射表中的可用命名空间块重新排序。类似于操作235,先前映射的命名空间块可能已取消从命名空间映射。在此情况中,与可用命名空间块及不可用命名空间块相关联的索引号可能不再对应于可用于命名空间分配的命名空间块。在此情况中,固件可通过将未映射命名空间块指派到对应于可用命名空间块的索引号来对可用命名空间块重新排序。在一些情况中,此可将所有可用命名空间块重新排序成命名空间映射表中的新索引号。举例来说,在删除先前与索引号32到43相关联的命名空间之后,可对所有现在可用命名空间块(例如,与大于31的索引号相关联的命名空间块)重新排序。
58.在操作260,处理装置更新第一可用命名空间块。如先前论述,在操作250,可取消指示与先前第一可用命名空间块的关联,及在操作255,可对命名空间映射表重新排序。在删除命名空间及对可用命名空间块重新排序之后,指示可与不同命名空间块相关联。此命名空间块可为命名空间映射表中的新的第一可用命名空间块。举例来说,如先前论述,可删除与索引号32到43相关联的命名空间,且可对可用命名空间块重新排序,使得与索引号32相关联的命名空间现在是第一可用命名空间块。在此情况中,指示经更新以与和索引号32相关联的命名空间块相关联。
59.在一些情况中,可迭代地执行类似于操作240到260的操作以删除(例如取消映射)多个命名空间。举例来说,删除第二命名空间的请求可被存储器子系统接收(例如,类似于操作240)。接着,存储器子系统可取消命名空间块与命名空间的映射(例如,类似于操作245),移除指示符与先前第一可用命名空间块的关联(例如,类似于操作250),对可用命名空间块重新排序(例如,类似于操作255)及将第一可用命名空间块的指示更新为可用于命名空间映射的新命名空间块(例如,类似于操作260)。可重复这些步骤以便取消映射命名空间映射表中的多个命名空间。
60.图3说明其中已在未使用自由列表的情况下删除了命名空间的实例命名空间管理
操作300。在一些情况中,命名空间管理操作300可包含由图1中所说明的命名空间管理器150所执行的方法200-a的一些处理步骤。
61.命名空间管理操作300可包含将命名空间添加到命名空间映射表。命名空间映射表305-a及命名空间映射表305-b说明命名空间映射表的两个实例,其展示命名空间创建之前的命名空间映射表(如由命名空间映射表305-a指示)与命名空间创建之后的命名空间映射表(如由命名空间映射表305-b指示)的变化。
62.命名空间映射表305-a说明新命名空间的映射之前的实例命名空间映射表。命名空间映射表305-a可包含四个经映射命名空间。第一命名空间可包含在命名空间块310-a(例如索引号0)处开始且包含所有循序排序的命名空间块直到且包含命名空间块315-a(例如索引号4)的五个命名空间块。第二命名空间可包含在命名空间块320-a(例如索引号5)处开始且包含所有循序排序的命名空间块直到且包含命名空间块325-a(例如索引号19)的十五个命名空间块。第三命名空间可包含在命名空间块330-a(例如与索引号20相关联)处开始且包含所有循序排序的命名空间块直到且包含命名空间块335-a(例如与索引号29相关联)的10个命名空间块。第四命名空间可包含在命名空间块340-a(例如与索引号30相关联)处开始且包含所有循序排序的命名空间块直到且包含命名空间块345-a(例如与索引号31相关联)的两个命名空间块。在此情况中,命名空间块350可为第一可用未映射命名空间块(例如,与索引号32相关联),且在命名空间块350之后循序排序直到且包含命名空间块360-a(例如,与索引号59相关联)的所有命名空间块可为可用于命名空间映射的命名空间块。
63.在命名空间映射表305-a的情况中,指示355可为变量(例如,写入到可由固件存取的存储装置的私有变量)且可与命名空间块350相关联(例如,如参考方法200-a的操作215描述)。在一些情况中,指示355是表示与指示355相关联的命名空间块的索引的一组位。指示355指示命名空间块350是用于命名空间映射的第一可用命名空间块。指示355可指示与大于命名空间块350的索引号相关联的所有命名空间块可用于命名空间映射(例如,与大于或等于32的索引号相关联)。尽管在命名空间映射表305-a中按连续升序展示了具有在32与59之间的索引号的命名空间块,但此顺序不具限制性,且可在不背离本公开的范围的情况下考虑命名空间块的任何排序(例如,随机顺序)。
64.如关于方法200-a的操作205论述,存储器子系统可接收创建新命名空间的请求。请求可包含命名空间的大小,且存储器子系统可确定将分配到命名空间的命名空间块的数目。举例来说,可接收对24gb命名空间的请求。在其中每一命名空间块包含2gb的连续排序的lba的情况中,十二个命名空间块将被分配到所请求的命名空间。在此情况中,十二个可用命名空间块将被映射到所请求的命名空间。如参考方法200-a的操作220论述,十二个命名空间块可根据命名空间映射表305-a的排序被映射到新命名空间。
65.命名空间映射表305-b说明新命名空间的映射之后的实例命名空间映射表。如同命名空间映射表305-a,前四个命名空间可能已经被映射(例如,分别被映射到块310-b到315-b、命名空间块320-b到325-b、命名空间块330-b到335-b及命名空间块340-b到345-b)且包含与索引号0到31相关联的命名空间。最新映射的第五命名空间可包含在命名空间块365(例如与索引号32相关联)处开始且包含所有循序排序的命名空间块直到且包含命名空间块370(例如与索引号29相关联)的十二个命名空间块。如参考方法200-a的操作225论述,在将新命名空间映射到命名空间映射表305-b之后,可取消指示355与先前第一可用命名空
间块的关联。如在命名空间映射表305-a中说明,指示355先前可能已与命名空间块350相关联,从而指示命名空间块350曾经是第一可用命名空间块。在新命名空间(第五命名空间)映射后,命名空间块350现在就与新命名空间相关联且不再可用于命名空间映射。
66.响应于将可用命名空间块分配到新命名空间(例如,与索引号32到43相关联的命名空间块),且如参考方法200-a的操作230论述,可对可用命名空间块重新排序。如参考方法200-a的操作235论述,在可用命名空间块的重新排序之后,可将指示355更新为与新的第一可用命名空间块相关联。举例来说,在可用命名空间块的重新排序之后(例如,如与索引号44到59相关联),新的第一可用命名空间块可为命名空间块375(例如,与索引号44相关联)。在此情况中,指示355可与命名空间块375相关联。指示355可指示命名空间块375现在是用于命名空间映射的第一可用命名空间块,且在第二新命名空间被映射到存储器子系统的情况下,命名空间块375可用于指示可用于映射的命名空间块(例如,命名空间块375之后的直到且包含命名空间块360-b的所有命名空间块)。
67.图4说明其中已在未使用自由列表的情况下删除了命名空间的实例命名空间管理操作400。在一些情况中,命名空间管理操作400可包含由图1中所说明的命名空间管理器150所执行的方法200-b的一些处理步骤。
68.命名空间管理操作400可包含从命名空间映射表删除命名空间。命名空间映射表405-a及命名空间映射表405-b说明命名空间映射表的两个实例,其展示命名空间删除之前的命名空间映射表(如由命名空间映射表405-a指示)与命名空间删除之后的命名空间映射表(如由命名空间映射表405-b指示)的变化。
69.命名空间映射表405-a说明在从命名空间映射表删除命名空间之前的实例命名空间映射表。命名空间映射表405-a可包含五个先前映射的命名空间。第一命名空间可包含在命名空间块410-a(例如索引号0)处开始且包含所有循序排序的命名空间块直到且包含命名空间块415-a(例如索引号4)的五个命名空间块。第二命名空间可包含在命名空间块420-a(例如索引号5)处开始且包含所有循序排序的命名空间块直到且包含命名空间块425-a(例如索引号19)的十五个命名空间块。第三命名空间可包含在命名空间块430-a(例如与索引号20相关联)处开始且包含所有循序排序的命名空间块直到且包含命名空间块435-a(例如与索引号29相关联)的10个命名空间块。第四命名空间可包含在命名空间块440-a(例如与索引号30相关联)处开始且包含所有循序排序的命名空间块直到且包含命名空间块445-a(例如与索引号31相关联)的两个命名空间块。第五命名空间可包含在命名空间块450(例如与索引号32相关联)处开始且包含所有循序排序的命名空间块直到且包含命名空间块455(例如与索引号43相关联)的十二个命名空间块。在此情况中,命名空间块460可为第一可用未映射命名空间块(例如,与索引号44相关联),且在命名空间块460之后循序排序直到且包含命名空间块470-a(例如,与索引号59相关联)的所有命名空间块可为可用于命名空间映射的命名空间块。尽管在命名空间映射表405-a中按连续升序展示了具有在44与59之间的索引号的命名空间块,但此顺序不具限制性,且可在不背离本公开的范围的情况下考虑命名空间块的任何排序(例如,随机顺序)。
70.在命名空间映射表405-a的情况中,指示465可为变量(例如,写入到可由固件存取的存储装置的私有变量)且可与命名空间块460相关联(例如,如参考方法200-a的操作235描述)。在一些情况中,指示465是表示指示465与其相关联的命名空间块的索引的一组位。
指示465指示命名空间块460是用于命名空间映射的第一可用命名空间块。指示465可指示与大于命名空间块460的索引号相关联的所有命名空间块可用于命名空间映射(例如,与大于44的索引号相关联)。
71.如关于方法200-b的操作240论述,存储器子系统可接收删除(例如取消映射)命名空间的请求。举例来说,存储器子系统可接收删除第五命名空间(例如,包含在如与索引号32相关联的命名空间块450处开始且包含所有循序排序的命名空间块直到且包含与索引号43相关联的命名空间块455的第五命名空间)的请求。
72.如关于方法200-b的操作245论述,可取消映射命名空间。在此情况中,可在命名空间映射表中取消映射先前与新删除的命名空间相关联的命名空间块。举例来说,响应于第五命名空间的删除,可从第五命名空间取消映射与索引号32到43相关联的命名空间块(例如,取消与第五命名空间的关联),且使其与未映射(例如可用)命名空间块相关联。命名空间映射表405-b说明第五命名空间的删除之后的四个经映射命名空间(例如,分别映射到命名空间块410-b到415-b、命名空间块420-b到425-b、命名空间块430-b到435-b及命名空间块440-b到445-b的四个命名空间)。
73.如参考方法200-b的操作250论述,在从经删除命名空间取消映射命名空间块之后,可取消指示465与先前第一可用命名空间块的关联。如在命名空间映射表405-a中说明,指示465先前可能已被写入到命名空间块460,从而指示命名空间块460是第一可用命名空间块。在删除第五命名空间后,就可取消指示465与命名空间块460的关联,这是由于命名空间块460不再是可用于命名空间映射的第一命名空间块。响应于取消映射第五命名空间(例如,与索引号32到43相关联的命名空间块现在可用于命名空间映射),且如参考方法200-b的操作255论述,可对可用命名空间块重新排序。如参考方法200-b的操作260论述,在可用命名空间块的重新排序之后,可将指示465更新为与新的第一可用命名空间块相关联。举例来说,在可用命名空间块的重新排序之后(例如,如与索引号32到59相关联),新的第一可用命名空间块是命名空间块475(例如,与索引号32相关联)。在此情况中,指示465可与命名空间块475相关联。指示465指示命名空间块475现在是用于命名空间映射的第一可用命名空间块。
74.图5是本公开的实例可在其中操作的计算机系统500的实例机器。计算机系统500可包含用于致使机器执行本文中描述的技术中的任一者或多者的一组指令。在一些实例中,计算机系统500可对应于主机系统(例如,参考图1描述的主机系统105),所述主机系统包含存储器子系统(例如,参考图1描述的存储器子系统110)、与所述存储器子系统耦合或利用所述存储器子系统或可用于执行控制器的操作(例如,执行操作系统以执行对应于参考图1描述的命名空间管理器150的操作)。在一些实例中,机器可与lan、内部网络、外部网络及/或因特网中的其它机器连接(例如联网)。机器可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器操作,或在云端计算基础设施或环境中作为服务器或客户端机器操作。
75.机器可为个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥或能够(循序或以其它方式)执行指定将由所述机器所采取的动作的一组指令的任何机器。此外,虽然说明了单个机器,但术语“机器”还可包含个别或联合执行一(或多组)指令以执行本文中论述的方法论中的任一或多者的机
器的任何集合。
76.实例计算机系统500可包含处理装置505、主存储器510(例如,只读存储器(rom)、快闪存储器dram(例如sdram或rdram等)、静态存储器515(例如,快闪存储器、静态随机存取存储器(sram))等)及数据存储系统525,其经由总线545与彼此通信。
77.处理装置505表示一或多个通用处理装置,例如微处理器、中央处理单元或类似物。更特定来说,处理装置可为复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实施其它指令集的一处理器或实施指令集组合的多个处理器。处理装置505也可为一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器或类似物。处理装置505经配置以执行用于执行本文中论述的操作及步骤的指令535。计算机系统500可进一步包含网络接口装置520以通过网络540通信。
78.数据存储系统525可包含其上存储一或多组指令535或体现本文中描述的方法论或功能中的任一或多者的软件的机器可读存储媒体530(也称为计算机可读媒体)。指令535在其由计算机系统500执行期间也可完全或至少部分驻存于主存储器510内及/或处理装置505内,主存储器510及处理装置505也构成机器可读存储媒体。机器可读存储媒体530、数据存储系统525及/或主存储器510可对应于存储器子系统。
79.在一个实例中,指令535包含用以实施对应于命名空间管理器550(例如,参考图1描述的命名空间管理器150)的功能性的指令。虽然将机器可读存储媒体530展示为单个媒体,但术语“机器可读存储媒体”可包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还可包含能够存储或编码由机器执行且致使机器执行本公开的方法论中的任一或多者的一组指令的任何媒体。术语“机器可读存储媒体”可包含(但不限于)固态存储器、光学媒体及磁性媒体。
80.已依据对计算机存储器内的数据位的操作的算法及符号表示呈现前述详细描述的一些部分。这些算法描述及表示是由数据处理领域的技术人员用以向所属领域的其它技术人员最有效地传达其工作实质的方式。算法在本文且通常被设想为导致所期望结果的自相一致的操作序列。操作是需要对物理量的物理操纵的操作。通常,尽管不一定,这些量采用能够被存储、组合、比较及以其它方式操纵的电或磁信号的形式。已被证明是方便的是,有时出于习惯用法的原因,原则上将这些信号指代为位、值、元素、符号、字符、项、数字或类似物。
81.然而,应记住,所有这些及类似术语都应与适当物理量相关联,且仅仅是应用于这些量的方便标签。本公开可涉及计算机系统或类似电子计算装置的动作及过程,其操纵表示为计算机系统的寄存器及存储器内的物理(电子)量的数据并将所述数据转换成类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量的其它数据。
82.本公开还涉及用于执行本文中的操作的设备。此设备可出于预期目的经专门构造,或其可包含由存储于计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可经存储于计算机可读存储媒体中,例如(但不限于)任何类型的磁盘(包含软盘、光盘、cd-rom及磁光盘)、rom、ram、eprom、eeprom、磁或光卡或适于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
83.本文中呈现的算法及显示器并不固有地与任何特定计算机或其它设备相关。各种
通用系统可结合根据本文中的教示的程序使用,或可证明构造更专门的设备来执行方法是方便的。用于各种这些系统的结构将如下文描述中陈述那样出现。另外,本公开并非是参考任何特定编程语言进行描述。应了解,多种编程语言可用于实施本文中所描述的本公开的教示。
84.本公开可经提供作为计算机程序产品或软件,其可包含具有其上存储有指令的机器可读媒体,所述指令可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程。机器可读媒体包含用于存储呈可由机器(例如计算机)读取的形式的信息的任何机构。在一些实例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如rom、ram、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
85.在前述说明书中,已参考本公开的特定实例性实例描述了其实例。将明显的是,在不背离所附权利要求书中所陈述的本公开的实例的更宽范围的情况下,可对其做出各种修改。因此,说明书及图式应以说明性意义而非限制性意义来看待。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献