首页 / 具有NID池的存储设备

具有NID池的存储设备有效专利 实用

技术领域

[0001] 本申请涉及存储技术领域,尤其涉及具有NID池的存储设备。

相关背景技术

[0002] 图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片(Non-volatile Memory,非易失性存储器)105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
[0003] NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(Magnetic Random Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。
[0004] 接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
[0005] 控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application Specific Integrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
[0006] 控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
[0007] 存储器目标(Target)是NAND闪存封装内的共享CE(,Chip Enable,芯片使能)信号的一个或多个逻辑单元(LUN,Logic UNit)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。
[0008] 存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
[0009] 大块包括来自多个逻辑单元(LUN),也称为逻辑单元组的每个的物理块。每个逻辑单元可以为大块提供一个物理块。例如,在图2所示出的大块的示意图中,在每16个逻辑单元(LUN)上构造大块。每个大块包括16个分别来自16个逻辑单元(LUN)的物理块。在图2的例子中,大块0包括来自16个逻辑单元(LUN)中的每个逻辑单元的物理块0,而大块1包括来自每个逻辑单元(LUN)的物理块1。也可以以多种其他方式来构造大块。
[0010] 例如,在大块中构造页条带,每个逻辑单元(LUN)内相同物理地址的物理页构成了“页条带”。图2中,物理页P0-0、物理页P0-1……与物理页P0-x构成了页条带0,其中,物理页P0-0、物理页P0-1……物理页P0-14用于存储用户数据,而物理页P0-x用于存储根据条带内的所有用户数据计算得到的校验数据。类似地,图2中,物理页P2-0、物理页P2-1……与物理页P2-x构成了页条带2。用于存储校验数据的物理页可以位于页条带中的任意位置。作为又一个例子,在申请号为201710752321.0的中国专利申请的图3A及其说明书中对图3A的相关描述中,提供了大块的又一种构造方式。
[0011] NVMe协议中还定义了命名空间(namespace,NS)。大小为n的命名空间是具有从0到n-1的逻辑块地址的逻辑块集合。通过命名空间ID(Namespace ID,NSID)能够标识命名空间。命名空间可以在主机/NVMe控制器之间共享。主机通过单一NVMe控制器能够访问不同命名空间。不同主机也可通过多个NVMe控制器访问相同的命名空间。实用新型内容
[0012] 支持NVMe协议的存储设备需要实现NVMe协议的命名空间,并支持命名空间的创建、删除与按命名空间访问固态存储设备。根据NVMe协议,每个命名空间具有是全球唯一的NID。存储设备供应商需要为所生产的每个存储设备的各个命名空间提供全球唯一的NID。进一步地,用户可在存储设备中动态创建、删除命名空间,在创建命名空间时要为其分配NID。可选地,在删除命名空间以及再次创建该命名空间时,要将之前分配给该命名空间的NID再次分配给该命名空间,并且该NID不应分配给其它命名空间使用。
[0013] 根据本申请的第一方面,提供了根据本申请第一方面的第一NID分配方法,其中,包括如下步骤:获取待生产的存储设备的序列号、最大命名空间数量以及命名空间ID;根据存储设备的标识信息以及命名空间ID,生成的同存储设备的最大命名空间数量相对应数量的多个NID;将多个NID发送给制造存储设备的制造工厂;制造存储设备的制造工厂将多个NID记录在存储设备的非易失性存储器中或非易失性存储器指定的位置;根据待创建命名空间的命名空间ID从非易失性存储器获取同命名空间ID对应的NID。
[0014] 根据本申请第一方面的第一NID分配方法,提供了本申请第一方面的第二NID分配方法,其中,为待制造的存储设备生成不少于最大命名空间数量的NID。
[0015] 根据本申请第一方面的第一或第二NID分配方法,提供了本申请第一方面的第三NID分配方法,其中,用存储设备的序列号与命名空间ID作为名字,根据名字生成通用唯一识别码作为NID。
[0016] 根据本申请第一方面的第一或第二NID分配方法,提供了本申请第一方面的第四NID分配方法,其中,用生成通用唯一识别码的信息处理设备的网卡MAC地址与当前时间生成NID。
[0017] 根据本申请第一方面的第一至四任一项的NID分配方法,提供了本申请第一方面的第五NID分配方法,其中,非易失存储器中的多个NID形成NID池,NID池中以命名空间ID为索引维护命名空间ID到NID的唯一映射关系。
[0018] 根据本申请第一方面的第五NID分配方法,提供了本申请第一方面的第六NID分配方法,其中,NID池中的NID数量不少于存储设备的最大命名空间数量。
[0019] 根据本申请第一方面的第一或第二NID分配方法,提供了本申请第一方面的第七NID分配方法,其中,根据待制造的存储设备的最大命名空间数量,从指定机构获取不少于存储设备的最大命名空间数量的EUI或NGUID作为多个NID。
[0020] 根据本申请第一方面的第一至七任一项的NID分配方法,提供了本申请第一方面的第八NID分配方法,其中,为待生产的各存储设备的NID池提供不少于存储设备的最大命名空间数量的NID,而不区分各待生产的存储设备实际的最大命名空间数量。
[0021] 根据本申请第一方面的第一至八任一项的NID分配方法,提供了本申请第一方面的第九NID分配方法,其中,制造工厂在制造存储设备时,根据正在制造的存储设备的序列号获取存储设备的多个NID,并将多个NID记录在该正在制造的存储设备的非易失性存储器中。
[0022] 根据本申请第一方面的第一至九任一项的NID分配方法,提供了本申请第一方面的第十NID分配方法,其中,多个NID被集成在待制造的存储设备的固件镜像中,集成了多个NID的固件镜像被发送给制造存储设备的工厂。
[0023] 根据本申请第一方面的第一至十任一项的NID分配方法,提供了本申请第一方面的第十一NID分配方法,其中,将固件镜像和多个NID一起存储在非易失性存储器中。
[0024] 根据本申请第一方面的第一至十一任一项的NID分配方法,提供了本申请第一方面的第十二NID分配方法,其中,在制造存储设备过程中,为制造的各个存储设备设置其配置,并且相应地在制造的各存储设备中记录同其可提供的命名空间数量对应的多个NID。
[0025] 根据本申请的第二方面,提供了根据本申请第二方面的第一存储设备,其中,包括控制部件与非易失存储器,控制部件包括主机接口、CPU与介质接口,非易失存储器中存储NID池;主机接口用于同主机交换命令与数据;CPU与主机接口耦合,用于接收并处理主机发送给存储设备的IO命令;介质接口与CPU耦合,用于将从CPU接收的数据发送给非易失性存储器芯片,和/或从非易失性存储器芯片中读出数据。CPU还将NID池的副本加载到存储器中,CPU访问NID池的副本从而获取NID。
[0026] 根据本申请的第二方面的第一具有NID池的存储设备,提供了本申请第二方面的第二具有NID池的存储设备,其中,NID池由存储设备之外的信息处理设备生成。
[0027] 根据本申请的第二方面的第一或第二具有NID池的存储设备,提供了本申请第二方面的第三具有NID池的存储设备,其中,在制造存储设备的过程中,将多个NID记录在所制造的存储设备的非易失性存储器中,多个NID形成NID池。
[0028] 根据本申请的第二方面的第一至第三任一项具有NID池的存储设备,提供了本申请第二方面的第四具有NID池的存储设备,其中,NID池中的NID的数量不少于待制造的存储设备中可能被创建的命名空间的最大数量。
[0029] 根据本申请的第二方面的第一至第四任一项具有NID池的存储设备,提供了本申请第二方面的第五具有NID池的存储设备,其中,NID池中的多个NID按照指定的规则创建。
[0030] 根据本申请的第二方面的第五具有NID池的存储设备,提供了本申请第二方面的第六具有NID池的存储设备,其中,采用根据RFC4122定义的通用唯一识别码作为多个NID。
[0031] 根据本申请的第二方面的第五具有NID池的存储设备,提供了本申请第二方面的第七具有NID池的存储设备,其中,依据RFC4122中定义的通用唯一识别码的版本3与版本5,通过由在存储设备中可被创建的命名空间ID与存储设备的标识信息所形成的名字生成全球唯一的通用唯一识别码。
[0032] 根据本申请的第二方面的第五具有NID池的存储设备,提供了本申请第二方面的第八具有NID池的存储设备,其中,用生成的随机数来作为多个NID。
[0033] 根据本申请的第二方面的第一至第八具有NID池的存储设备,提供了本申请第二方面的第九具有NID池的存储设备,其中,NID池中记录的多个NID不再被修改。
[0034] 根据本申请的第二方面的第一至第九具有NID池的存储设备,提供了本申请第二方面的第十具有NID池的存储设备,其中,响应于创建命名空间的请求,根据待创建命名空间的命名空间ID作为索引访问存储设备的NID池,从NID池中获取同命名空间ID对应的NID分配给待创建的命名空间。
[0035] 根据本申请的第二方面的第一至第十具有NID池的存储设备,提供了本申请第二方面的第十一具有NID池的存储设备,其中,在存储设备的整个生命周期内,具有相同命名空间ID的命名空间使用且仅使用同一个NID。

具体实施方式

[0044] 下面结合本实用新型实施例中的附图,对本实用新型实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本实用新型一部分实施例,而不是全部的实施例。基于本实用新型中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本实用新型保护的范围。
[0045] 图3为根据本申请实施例的存储设备的框图。本申请的存储设备包括控制部件104和NVM芯片105。图3中示出的控制部件104包括主机接口310、CPU320、介质接口340,NVM芯片105中存储由多个NID构成的NID池。
[0046] 主机接口310用于同主机交换命令与数据。在一个例子中,主机与存储设备通过NVMe/PCIe协议通信,主机接口310处理PCIe协议数据包,提取出NVMe协议命令,并向主机返回NVMe协议命令的处理结果。
[0047] CPU 320耦合到主机接口310,用于接收主机发送给存储设备的IO命令与其它NVMe协议命令,并对命令进行处理。可选地,控制部件104包括一个或多个CPU,以及可选地硬件加速器来处理IO命令。
[0048] CPU 320通过运行固件来处理NVMe协议命令。固件被存储在NVM芯片105或者另外的非易失存储器中。为了清楚的目的,将CPU 320运行的固件形态称为固件,将在NVM芯片105中或其它在存储设备外部的地方存储的固件形态称为固件镜像(Image)。存储固件镜像的NVM芯片可以是NVM芯片105,或者其它NVM芯片(例如,NOR闪存)。
[0049] 在存储设备被制造的过程中,将固件镜像存储在NVM芯片105中,从而交付客户的存储设备被上电后,控制部件105加载NVM芯片中的固件镜像并运行来提供存储设备的功能。
[0050] 根据本申请的实施例,在存储设备被制造的过程中,还将存储设备要用到的多个NID存储在NVM芯片105中。例如,连同固件镜像一起存储多个NID,或者将多个NID存储在NVM芯片105的指定位置。从而运行中的固件可访问存储的多个NID。
[0051] 将在NVM芯片105中存储的多个NID称为NID池。NID池中记录了多个可被索引和访问的NID。例如,NID的数量等于存储设备中可能被创建的命名空间的最大数量。作为举例,存储设备中可被创建128个存储空间,相应地在NID池中记录128个NID。依然作为举例,存储设备的命名空间同NID一一对应,例如,使用命名空间ID(NSID)索引NID池以得到同NSID对应的NID。NID池使用表、数组、树等多种数据结构存储多个NID。
[0052] 图3中,存储设备运行时,将NID池的副本(NID池副本350)加载到控制部件的存储器中,以便于CPU 320访问NID池的副本(NID池副本350)从而获取NID。
[0053] 制造出的各个存储设备可具有不同的配置。例如,存储设备S1可被创建最多128个命名空间,存储设备S2可被创建最多64个命名空间。在制造存储设备过程中,为制造的各个存储设备设置其配置,并且相应地在制造的各存储设备中记录同其可提供的命名空间数量对应的NID池。例如,在存储设备S1的NID池中记录128个NID,而在存储设备S2的NID池中记录64个NID。在提供给存储设备制造工厂的生产计划中描述了各个待制造的存储设备的配置。制造工厂在制造存储设备过程中,获得各个存储设备的配置,根据配置在制造的存储设备的NVM芯片105中记录固件及其NID池。
[0054] NID池由所述存储设备之外的信息处理设备生成,NID池中的NID按照指定的规则创建。例如根据NVMe协议所要求的,采用根据RFC4122(https://tools.ietf.org/html/rfc4122)定义的UUID(Universally Unique Identifier,通用唯一识别吗)作为多个NID。依据RFC4122中定义的UUID的版本3(Version3)与版本5(Version 5),通过不同的名字生成全球唯一的UUID作为多个NID。根据本申请的实施例,将各存储设备的序列号(SN)与存储设备的命名空间ID(NSID)组合,得到命名空间的名字,并根据RFC4122定义的计算规则,从名字计算得到UUID作为多个NID。
[0055] 作为又一个例子,依据RFC4122定义的UUID的版本1生成UUID,其中根据用于生成UUID的信息处理设备(不是使用该UUID的存储设备)的网卡MAC地址与当前时间来生成UUID作为多个NID。
[0056] 作为再一个例子,生成随机数来进一步生成UUID作为多个NID。在依然可选的实施方式中,根据NVMe协议所允许的其它方式来得到多个NID,例如,从指定的NID发行机构获取或购买EUI(IEEE Extended Unique Identifier)或NGUID(Namespace Globally Unique Identifier)来作为多个NID。
[0057] 根据本申请的实施例,生成或获取NID的步骤由使用所生成的NID的存储设备之外的信息处理设备来实施,将生成的多个NID组合为NID池,并连同存储设备的配置提供给制造存储设备的工厂。存储设备的制造工厂识别出每个待生成的存储设备的配置信息及其要使用的NID池,并在制造存储设备的过程中,将各NID池记录在所制造的存储设备的NVM芯片105中。可选地或进一步地,在存储设备的整个声明周期内,NID池中记录的多个NID不再被修改,即使存储设备被格式化或恢复出厂设置,NID池的内容依然可被访问,并为存储设备的各命名空间提供NID。
[0058] 通过在存储设备之外生成存储设备要使用的NID,无需在存储设备中实现复杂的NID生成功能,减轻了存储设备的工作负担,降低了存储设备的成本,降低了存储设备的固件开发的复杂度。也消除了各个存储设备自己生成NID时产生了彼此相同的NID的风险。
[0059] 根据本申请的实施例,存储设备在运行时,响应于创建命名空间的请求,根据待创建命名空间的NSID作为索引访问存储设备上的NID池(或NID池副本350),从NID池中获取同NSID对应的NID,作为待创建命名空间的NID。NID池维护了NSID到NID的唯一映射,从而确保具有指定的NSID(例如,NSID 1)的命名空间,在该存储设备的整个生命周期内,具有相同NSID的命名空间使用且仅使用同一个NID(例如,NID 1),NID池维护了从NSID 1到NID1的唯一映射。NID池确保仅为索引NSID 1提供NID 1,而不会为其他索引提供NID 1,该NID池也确保在该存储设备的生命周期内,每次为NSID 1所请求的NID都提供NID 1,而不会为NSID 1的NID请求提供其它NID。从而,即使NSID 1被用户销毁,并重新创建了命名空间NSID 1时,从NID池中依然为其获得NID 1。
[0060] 以及存储设备确保不会创建出两个具有相同命名空间ID(NSID)的命名空间。
[0061] 图4展示了根据本申请实施例为存储设备分配NID的流程图。
[0062] 作为举例,要制造一批存储设备,记为SSD1-SSDn。在生产计划中,为待制造的各个存储设备生成序列号,用于存储设备SSD1-SSDn的各自的序列号记为SN1-SNn。
[0063] 在待制造的存储设备之外的其它信息处理设备上,例如存储设备的研发方的计算机上,根据生产计划,获取各待生产的存储设备的序列号,用于为待制造的存储设备生成NID(410)。
[0064] 依然根据生产计划,获得待制造的各存储设备要提供的最大命名空间数量。为待制造的各存储设备生成不少于其最大命名空间数量的多个NID(420),以得到NID池。
[0065] 具体地,上述存储设备的最大命名空间数量和序列号为存储设备的标识信息。
[0066] 示例性地,根据UUID版本3,用存储设备的序列号与命名空间ID作为名字,根据名字利用RFC4122中定义的算法生成UUID作为NID。对于最大命名空间数量为4的存储设备(例如,存储设备SN 4),其命名空间ID可以为NSID0、NSID 1、NSID 2与NSID 3,将例如序列号SN4与各命名空间ID组合得到用于生成UUID的名字。
[0067] 作为又一个例子,根据UUID版本1,用生成UUID的信息处理设备的网卡MAC地址与当前时间生成指定数量的NID,以得到待制造存储设备(例如,存储设备SSD 5)的NID池。NID池中的NID数量不少于存储设备SSD 5的最大命名空间数量。
[0068] 作为另一个例子,根据待制造的存储设备(例如,存储设备SSD 6)的最大命名空间数量,从指定机构获取不少于存储设备SSD 6的最大命名空间数量的EUI或NGUID作为多个NID以得到存储设备SSD 6的NID池。
[0069] 依然可选地,为待生产的各存储设备的NID池提供不少于存储设备可能的最大命名空间数量的NID,而不区分待生产的各存储设备实际的最大命名空间数量。例如,存储设备SSD1-SSDn中,具有最大命名空间数量的存储设备的命名空间数量为M,则在各个存储设备的NID池中都提供M个NID,即使一些存储设备提供的用户的命名空间数量远少于M。这样进一步简化了NID分发过程的复杂度。
[0070] 综上所述,根据存储设备的序列号、最大空间数量以及命名空间ID,生成的同存储设备的最大命名空间数量相对应数量的多个NID。
[0071] 将NID发送给制造存储设备SSD1-SSDn的制造工厂(430)。制造工厂在制造存储设备时,例如,根据正在制造的存储设备的序列号获取多个NID,并将多个NID以及形成的NID池记录在该正在制造的存储设备的NVM芯片105中(440)。
[0072] 可选地,固件镜像的提供方将多个NID集成在待制造的存储设备的固件镜像中,并将集成了多个NID的固件镜像发送给制造存储设备的工厂。制造存储设备的工厂在制造存储设备过程中,根据生产计划获取各待制造的存储设备的固件镜像,将固件镜像写入对应的存储设备。从而在工厂无需感知NID池,也无需修改生产系统与生产流程来处理NID池。
[0073] 尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页 第1页 第2页 第3页
相关技术
存储设备相关技术
池存储相关技术
李跃鹏发明人的其他相关专利技术