多命名空间的制作方法

文档序号:15615322发布日期:2018-10-09 21:13阅读:121来源:国知局

本发明涉及固态存储设备,具体地,涉及在固态存储设备中提供多个命名空间。



背景技术:

以固态存储设备(solidstoragedevice,ssd)为例,如图1所示,展示了存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如sata(serialadvancedtechnologyattachment,串行高级技术附件)、scsi(smallcomputersysteminterface,小型计算机系统接口)、sas(serialattachedscsi,串行连接scsi)、ide(integrateddriveelectronics,集成驱动器电子)、usb(universalserialbus,通用串行总线)、pcie(peripheralcomponentinterconnectexpress,pcie,高速外围组件互联)、nvme(nvmexpress,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个nvm(非易失存储器,non-volatilememory)芯片105以及dram(dynamicrandomaccessmemory,动态随机访问存储器)110。nand闪存、相变存储器、feram、mram等是常见的nvm。接口103可适配于通过例如sata、ide、usb、pcie、nvme、sas、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、nvm芯片105以及dram110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。可通过软件、硬件、固件或其组合的多种方式实现控制部件104。控制部件104可以是fpga(field-programmablegatearray,现场可编程门阵列)、asic(applicationspecificintegratedcircuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理io命令。控制部件104还耦合到dram110,并可访问dram110的数据。在dram可存储ftl表和/或缓存的io命令的数据。

控制部件104包括闪存接口控制器(或称为闪存通道控制器)。闪存接口控制器耦合到nvm芯片105,并以遵循nvm芯片105的接口协议的方式向nvm芯片105发出命令,以操作nvm芯片105,并接收从nvm芯片105输出的命令执行结果。nvm芯片105的接口协议包括“toggle”、“onfi”等公知的接口协议或标准。

存储器目标(target)是nand闪存封装内的共享芯片使能(ce,chipenable)信号的一个或多个逻辑单元(logicunit)。每个逻辑单元具有逻辑单元号(lun,logicunitnumber)。nand闪存封装内可包括一个或多个管芯(die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(plane)。逻辑单元内的多个平面可以并行存取,而nand闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/documents/products/other%20documents/onfi3_0gold.ashx获得的“opennandflashinterfacespecification(revision3.0)”中,提供了关于目标(target)、逻辑单元、lun、平面(plane)的含义,其为现有技术的一部分。

存储介质上通常按页来存储和读取数据。而按块来擦除数据。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。

在固态存储设备中,利用ftl(flashtranslationlayer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。

存储了从逻辑地址到物理地址的映射信息的表结构被称为ftl表。ftl表是固态存储设备中的重要元数据。通常ftl表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。

ftl表包括多个ftl表条目(或称表项)。在一个实施例中,每个ftl表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一个例子中,每个ftl表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一个实施例中,每个ftl表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一个实施例中,ftl表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。

nvme协议中还定义了命名空间(namespace,ns)。大小为n的命名空间是具有从0到n-1的逻辑块地址的逻辑块集合。通过命名空间id(namespaceid,nsid)能够唯一标识命名空间。命名空间可以在主机/nvme控制器之间共享。主机通过单一nvme控制器能够访问不同命名空间。不同主机也可通过多个nvme控制器访问相同的命名空间。逻辑块可以被寻址和访问。每个ftl表条目可对应一个或多个逻辑块,或者多个ftl表条目共同对应一个逻辑块。



技术实现要素:

固态存储设备需要实现nvme协议的命名空间,并支持命名空间的创建、删除与按命名空间访问固态存储设备。

根据本申请的第一方面,提供了根据本申请第一方面的第一处理io命令的方法,所述io命令中指示命名空间标识符与命名空间逻辑地址,所述方法包括:将所述命名空间标识符与命名空间逻辑地址映射到物理地址;访问所述物理地址以响应所述io命令。

根据本申请第一方面的第一处理io命令的方法,提供了根据本申请第一方面的第二处理io命令的方法,还包括:获取与所述命名空间标识符对应的一个或多个命名空间单元,其中命名空间单元指示连续的全局逻辑地址空间;依据所述命名空间逻辑地址,从所述一个或多个命名空间单元中选出第一命名空间单元,其中所述第一命名空间单元指示的全局逻辑地址空间提供了所述io命令所访问的全局逻辑地址;依据所述命名空间逻辑地址在所述第一命名空间单元指示的全局逻辑地址空间内的偏移,得到所述io命令所访问的全局逻辑地址;以及将所述io命令所访问的全局逻辑地址转换为所述物理地址。

根据本申请第一方面的第二处理io命令的方法,提供了根据本申请第一方面的第三处理io命令的方法,还包括:依据所述io命令的命名空间逻辑地址长度,从所述一个或多个命名空间单元中选出第二命名空间单元,其中所述第二命名空间单元指示的全局逻辑地址空间提供了所述io命令所访问的全局逻辑地址;以及依据所述io命令的命名空间逻辑地址长度在所述第二命名空间单元指示的全局逻辑地址空间内的部分,得到所述io命令所访问的第二全局逻辑地址。

根据本申请第一方面的第一处理io命令的方法,提供了根据本申请第一方面的第四处理io命令的方法,还包括:依据所述命名空间标识符获取ns单元映射表条目的基地址,其中ns单元映射表条目以命名空间标识符为索引,以命名空间标识符对应的一个或多个命名空间单元所指示的全局逻辑地址空间的ftl表条目的首地址为内容;依据所述命名空间逻辑地址计算在所获取的ns单元映射表条目内的偏移值,并在所获取的ns单元映射表条目内的偏移值处取得ftl表条目的首地址;依据所述ftl表条目的首地址与依据所述命名空间逻辑地址计算的ftl表条目偏移值,得到ftl表条目;以及从所述ftl表条目获得所述物理地址。

根据本申请第一方面的第四处理io命令的方法,提供了根据本申请第一方面的第五处理io命令的方法,还包括:依据所述io命令的命名空间逻辑地址以及命名空间逻辑地址长度,依据所获取的ns单元映射表条目内的偏移值,获取在所获取的ns单元映射表条目内的所取得的ftl表条目的首地址之后的下一个ftl表条目的首地址;依据所述下一个ftl表条目的首地址与依据所述命名空间逻辑地址长度计算的ftl表条目偏移值,得到第二ftl表条目;以及从所述第二ftl表条目获得所述物理地址。

根据本申请第二方面,提供了根据本申请第二方面的第一处理io命令的装置,所述io命令中指示命名空间标识符与命名空间逻辑地址,所述装置包括:地址映射模块,用于将所述命名空间标识符与命名空间逻辑地址映射到物理地址;访问模块,用于访问所述物理地址以响应所述io命令。

根据本申请第三方面,提供了根据本申请第三方面的第一命名空间创建方法,包括:接收创建命名空间的命令,所述命令指示了待创建的命名空间的大小;依据待创建的命名空间的大小,分配一个或多个命名空间单元,其中命名空间单元指示连续的全局逻辑地址空间;为待创建的命名空间分配命名空间标识符;在ns单元映射表中添加条目,以记录所述命名空间标识符与所分配的一个或多个命名空间单元。

根据本申请第三方面的第一命名空间创建方法,提供了根据本申请第三方面的第二命名空间创建方法,其中从ns单元分配表中获取可用的命名空间单元,并分配给待创建的命名空间,其中ns单元分配表的条目记录了命名空间单元是否被分配给命名空间。

根据本申请第三方面的第一或第二命名空间创建方法,提供了根据本申请第三方面的第三命名空间创建方法,还包括:将ns单元映射表或ns单元映射表的更新记录到nvm芯片。

根据本申请第三方面的第二命名空间创建方法,提供了根据本申请第三方面的第四命名空间创建方法,还包括:将ns单元分配表或ns单元分配表的更新记录到nvm芯片。

根据本申请第三方面的第一至第四处理命名空间创建方法之一,提供了根据本申请第三方面的第五命名空间创建方法,其中ns单元映射表条目中的一个或多个命名空间单元是排序的,ns单元在ns单元映射表条目中的位置指示了ns单元在全局逻辑地址空间中的位置。

根据本申请第四方面,提供了根据本申请第四方面的第一命名空间创建装置,包括:命令接收模块,用于接收创建命名空间的命令,所述命令指示了待创建的命名空间的大小;命名空间单元分配模块,用于依据待创建的命名空间的大小,分配一个或多个命名空间单元,其中命名空间单元指示连续的全局逻辑地址空间;标识符分配模块,用于为待创建的命名空间分配命名空间标识符;ns单元映射表模块,用于在ns单元映射表中添加条目,以记录所述命名空间标识符与所分配的一个或多个命名空间单元。

根据本申请第五方面,提供了根据本申请第五方面的第一命名空间删除方法,包括:接收删除命名空间的命令,所述命令指示了待删除的命名空间的命名空间标识符;从ns单元映射表中删除以所述命名空间标识符为索引的条目,其中ns单元映射表条目以命名空间标识符为索引,以命名空间标识符对应的命名空间单元所指示的连续全局逻辑地址空间的ftl表条目的首地址为内容;以及回收所述命名空间标识符。

根据本申请第五方面的第一命名空间删除方法,提供了根据本申请第五方面的第二命名空间删除方法,还包括:在ns单元分配表中标记ns单元映射表被删除的条目中记录的命名空间单元为未分配,其中ns单元分配表的条目记录了命名空间单元是否被分配给命名空间。

根据本申请第五方面的第一或第二命名空间删除方法,提供了根据本申请第五方面的第三命名空间删除方法,还包括:移动ns单元映射表中被删除的条目之后的所有条目,以填充被删除的条目所占据的存储空间。

根据本申请第五方面的第一至第三命名空间删除方法之一,提供了根据本申请第五方面的第四命名空间删除方法,还包括:将ns单元映射表或ns单元映射表的更新记录到nvm芯片。

根据本申请第五方面的第二命名空间删除方法,提供了根据本申请第五方面的第五命名空间删除方法,还包括:将ns单元分配表或ns单元分配表的更新记录到nvm芯片。

根据本申请第五方面的第一至第五命名空间删除方法之一,提供了根据本申请第五方面的第六命名空间删除方法,其中经回收的所述命名空间标识符可被分配给新的命名空间。

根据本申请第六方面,提供了根据本申请第六方面的第一命名空间删除装置,包括:命令接收模块,用于接收删除命名空间的命令,所述命令指示了待删除的命名空间的命名空间标识符;ns单元映射表模块,用于从ns单元映射表中删除以所述命名空间标识符为索引的条目,其中ns单元映射表条目以命名空间标识符为索引,以命名空间标识符对应的命名空间单元所指示的连续全局逻辑地址空间的ftl表条目的首地址为内容;以及标识符回收模块,用于回收所述命名空间标识符。

根据本申请第七方面,提供了根据本申请第七方面的第一命名空间创建方法,包括:接收创建命名空间的命令,所述命令指示了待创建的命名空间的大小;为待创建的命名空间分配命名空间标识符;在ns单元映射表中添加条目,以记录所述命名空间标识符。

根据本申请第七方面的第一命名空间创建方法,提供了根据本申请第七方面的第二命名空间创建方法,还包括:接收io命令,其中所述io命令中指示命名空间标识符与命名空间逻辑地址;为所述命名空间逻辑地址分配命名空间单元,其中命名空间单元指示连续的全局逻辑地址空间;在ns单元映射表中以所述命名空间标识符索引的条目中记录所分配的命名空间单元;依据所分配的命名空间单元与io命令指示的命名空间逻辑地址映射得到物理地址;访问所述物理地址以响应所述io命令。

根据本申请第七方面的第一或第二命名空间创建方法,提供了根据本申请第七方面的第三命名空间创建方法,还包括:若已为所述命名空间逻辑地址分配了命名空间单元,则依据所分配的命名空间单元与io命令指示的命名空间逻辑地址映射得到物理地址,而无须再次分配命名空间单元,其中命名空间单元指示连续的全局逻辑地址空间。

根据本申请第七方面的第一至第三命名空间创建方法之一,提供了根据本申请第七方面的第四命名空间创建方法,其中依据所述io命令的命名空间逻辑地址以及命名空间逻辑地址长度,分配一个或多个命名空间单元。

根据本申请第七方面的第二至第四命名空间创建方法之一,提供了根据本申请第七方面的第五命名空间创建方法,还包括:依据所述命名空间逻辑地址在所述命名空间单元指示的全局逻辑地址空间内的偏移,得到所述io命令所访问的全局逻辑地址;以及将所述io命令所访问的全局逻辑地址转换为所述物理地址。

根据本申请第七方面的第二至第四命名空间创建方法之一,提供了根据本申请第七方面的第六命名空间创建方法,还包括:依据所述命名空间单元取得ftl表条目的首地址;依据所述ftl表条目的首地址与依据所述命名空间逻辑地址在所述命名空间单元指示的全局逻辑地址空间内的偏移,得到ftl表条目;以及从所述ftl表条目获得所述物理地址。

根据本申请第七方面的第二至第六命名空间创建方法之一,提供了根据本申请第七方面的第七命名空间创建方法,其中:在ns单元映射表中以所述命名空间标识符索引的条目中的第一位置记录所分配的命名空间单元,其中所述第一位置对应于所述io命令的命名空间逻辑地址在所述io命令访问的命名空间逻辑地址空间中的位置。

根据本申请第七方面的第二至第七命名空间创建方法之一,提供了根据本申请第七方面的第八命名空间创建方法,其中所述分配命名空间单元是从ns单元分配表中获取可用的命名空间单元,其中ns单元分配表的条目记录了命名空间单元是否被分配给命名空间。

根据本申请第七方面的第二至第八命名空间创建方法之一,提供了根据本申请第七方面的第九命名空间创建方法,还包括:将ns单元映射表或ns单元映射表的更新记录到nvm芯片。

根据本申请第七方面的第九命名空间创建方法,提供了根据本申请第七方面的第十命名空间创建方法,还包括:将ns单元分配表或ns单元分配表的更新记录到nvm芯片。

根据本申请第八方面,提供了根据本申请第八方面的第一命名空间创建装置,包括:命令接收模块,用于接收创建命名空间的命令,所述命令指示了待创建的命名空间的大小;标识符分配模块,用于为待创建的命名空间分配命名空间标识符;ns单元映射表模块,用于在ns单元映射表中添加条目,以记录所述命名空间标识符。

根据本申请第九方面,提供了根据本申请第九方面的第一io命令处理方法,包括:接收io命令,其中所述io命令中指示命名空间标识符与命名空间逻辑地址;为所述命名空间逻辑地址分配命名空间单元,其中命名空间单元指示连续的全局逻辑地址空间;在ns单元映射表中以所述命名空间标识符索引的条目中记录所分配的命名空间单元;依据所分配的命名空间单元与io命令指示的命名空间逻辑地址映射得到物理地址;访问所述物理地址以响应所述io命令。

根据本申请第九方面的第一io命令处理方法,提供了根据本申请第九方面的第二io命令处理方法,还包括:若已为所述命名空间逻辑地址分配了命名空间单元,则依据所分配的命名空间单元与io命令指示的命名空间逻辑地址映射得到物理地址,而无须再次分配命名空间单元,其中命名空间单元指示连续的全局逻辑地址空间。

根据本申请第九方面的第一或第二io命令处理方法,提供了根据本申请第九方面的第三io命令处理方法,其中依据所述io命令的命名空间逻辑地址以及命名空间逻辑地址长度,分配一个或多个命名空间单元。

根据本申请第九方面的第一至第三io命令处理方法之一,提供了根据本申请第九方面的第四io命令处理方法,其中依据所述命名空间逻辑地址在所述命名空间单元指示的全局逻辑地址空间内的偏移,得到所述io命令所访问的全局逻辑地址;以及将所述io命令所访问的全局逻辑地址转换为所述物理地址。

根据本申请第九方面的第一至第四io命令处理方法之一,提供了根据本申请第九方面的第五io命令处理方法,其中依据所述命名空间单元取得ftl表条目的首地址;依据所述ftl表条目的首地址与依据所述命名空间逻辑地址在所述命名空间单元指示的全局逻辑地址空间内的偏移,得到ftl表条目;以及从所述ftl表条目获得所述物理地址。

根据本申请第九方面的第一至第五io命令处理方法之一,提供了根据本申请第九方面的第六io命令处理方法,其中在ns单元映射表中以所述命名空间标识符索引的条目中的第一位置记录所分配的命名空间单元,其中所述第一位置对应于所述io命令的命名空间逻辑地址在所述io命令访问的命名空间逻辑地址空间中的位置。

根据本申请第九方面的第一至第六io命令处理方法之一,提供了根据本申请第九方面的第七io命令处理方法,其中所述分配命名空间单元是从ns单元分配表中获取可用的命名空间单元,其中ns单元分配表的条目记录了命名空间单元是否被分配给命名空间。

根据本申请第十方面,提供了根据本申请第十方面的第一io命令处理装置,包括:命令接收模块,用于接收io命令,其中所述io命令中指示命名空间标识符与命名空间逻辑地址;命名空间单元分配模块,用于为所述命名空间逻辑地址分配命名空间单元,其中命名空间单元指示连续的全局逻辑地址空间;ns单元映射表模块,用于在ns单元映射表中以所述命名空间标识符索引的条目中记录所分配的命名空间单元;地址映射模块,用于依据所分配的命名空间单元与io命令指示的命名空间逻辑地址映射得到物理地址;访问模块,用于访问所述物理地址以响应所述io命令。

根据本申请第十一方面,提供了根据本申请第十一方面的第一固态存储设备,包括,控制器与非易失存储器;所述控制器中的处理器通过运行程序来执行如根据本申请第一方面、第三方面、第五方面、第七方面与第九方面中任一项技术方案所述的方法。

附图说明

当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:

图1展示了固态存储设备的框图;

图2是根据本申请实施例的ftl表与ns单元的示意图;

图3a是根据本申请实施例的ns单元映射表;

图3b是根据本申请实施例的ns单元分配表;

图4展示了将命名空间逻辑地址映射到全局逻辑地址的流程图;

图5是根据本申请实施例的创建命名空间的流程图;

图6a是根据本申请实施例的创建命名空间之前的ns单元映射表;

图6b是根据本申请实施例的创建命名空间之前的ns单元分配表;

图7a是根据本申请实施例的创建命名空间之后的ns单元映射表;

图7b是根据本申请实施例的创建命名空间之后的ns单元分配表;

图8是根据本申请实施例的删除命名空间的流程图;

图9a是根据本申请实施例的删除命名空间之前的ns单元映射表;

图9b是根据本申请实施例的删除命名空间之前的ns单元分配表;

图10a是根据本申请实施例的删除命名空间之后的ns单元映射表;

图10b是根据本申请实施例的删除命名空间之后的ns单元分配表;以及

图11a与图11b是根据本申请又一实施例的创建命名空间以及处理io命令的流程图。

具体实施方式

图2是根据本申请实施例的ftl表与ns单元(命名空间单元)的示意图。

ftl表21包括ftl表条目(例如,ftl表条目210、212)。ftl表条目记录了逻辑地址与物理地址的映射关系。在存储器中保存ftl表21。可以理解地,存储器中无须存储ftl表条目的逻辑地址,而是用存储器的地址来指示逻辑地址,而用存储所存储的值来指示物理地址。也可使用其他所属领域技术人员知晓的方式记录ftl表。

根据本申请的实施例,提供用于为命名空间提供存储能力的ns单元(图2中,由nsun1、nsun2、nsun3的每个指示ns单元)。每个ns单元指示连续的逻辑地址空间。例如,nsun1指示逻辑地址空间0~m-1,而nsun2指示逻辑地址空间m~2m-1,nsun3指示逻辑地址空间2m-1~3m,nsunk指示逻辑地址空间(k-1)m~(km-1)。每个ns单元的逻辑地址空间远大于ftl表条目指示的逻辑地址空间。例如,由1000个逻辑地址连续的ftl表条目指示一个ns单元的逻辑地址空间。

将ftl表21所指示的逻辑地址空间称为全局逻辑地址空间,其中的逻辑地址称为全局逻辑地址。ns单元是排序的,ns单元的序号k指示了ns单元在全局逻辑地址空间中的位置。可选地,用ns单元对应的ftl表条目的首地址来指示ns单元。例如,参看图2,用ftl表条目210的首地址标识nsun1。

图3a是根据本申请实施例的ns单元映射表,图3b是根据本申请实施例的ns单元分配表。

参看图3a,ns单元映射表的每个条目,记录了由nsid标识的命名空间之一,与分配给该命名空间的一个或多个ns单元。nsid也被称为命名空间标识符,用于识别命名空间。图3a中,ns单元映射表的条目310记录了nsid为1的命名空间(简记为ns1)分配了3个ns单元(nsun1、nsun9与nsun12)。ns单元映射表的条目中记录的一个或多个ns单元是排序的。分配给ns1的3个ns单元按顺序为ns1提供了逻辑地址空间。例如,ns1的逻辑地址空间是0~(3m-1),其中nsun1提供了ns1的逻辑地址空间0~m-1,而nsun9提供了ns1的逻辑地址空间m~2m-1,nsun12提供了ns1的逻辑地址空间2m~3m-1。

作为又一个例子,ns1的逻辑地址空间是0~(3m-n)(其中,m是整数,n是小于m的整数),其中nsun1提供了ns1的逻辑地址空间0~m-1,而nsun9提供了ns1的逻辑地址空间m~2m-1,nsun12提供了ns1的逻辑地址空间2m~3m-n。在此例子中,nsun12提供给ns1的逻辑地址空间仅是nsun12的部分逻辑地址空间。即使命名空间ns1仅需要1个逻辑块,也为其分配1个完整的n是单元。

为了清楚的目的,将属于一个命名空间的逻辑地址空间,称为命名空间逻辑地址空间,其中的逻辑地址称为命名空间逻辑地址。可以理解地,在ns1的逻辑地址空间中,nsun9提供了命名空间逻辑地址空间的m~2m-1范围,而在固态存储设备中,nsun9提供了全局逻辑地址空间的8m~9m-1范围。依然可以理解的,通过ns单元(其序号或ftl表条目的首地址),可在全局逻辑地址空间与命名空间逻辑地址空间之间转换。从而,ns单元映射表的条目中记录的多个ns单元,提供了用于各个命名空间的连续地址空间(命名空间逻辑地址空间),并且,对于命名空间逻辑地址空间的任意地址,通过提供该地址的ns单元,可被映射到全局逻辑地址空间中。

参看图3b,ns单元分配表记录了固态存储设备的ns单元是否被分配给命名空间。由于图3a中,nsun1、nsun9与nsun12被分配给ns1。相应地,图3b中,同nsun1、nsun9与nsun12对应的ns单元分配表的条目记录了这些ns单元已被分配。图3b中还记录了其他ns单元未被分配给命名空间。可选地,在ns单元分配表中仅记录未被分配给命名空间的ns单元,从而ns单元分配表成为提供了所有可使用的ns单元的ns单元资源池。

在图3b的例子中,ns单元分配表的条目中记录了ns单元的序号(例如,nsun1、nsun2)以及ns单元的分配情况。在另一个实施方式中,由于ns单元分配表的各个条目分别记录了序号连续的ns单元的分配情况,可在ns单元分配表中省略ns单元的序号,而依据ns单元分配表条目的地址确定对应的ns单元的序号。作为另一个例子,用对应于ns单元所指示的全局逻辑地址空间的ftl表条目的首地代替ns单元的序号来识别ns单元。

图4展示了将命名空间逻辑地址映射到全局逻辑地址的流程图。

固态存储设备接收的io命令指示了nsid与命名空间逻辑地址。为根据io命令访问固态存储设备,需将io命令的命名空间逻辑地址转换为固态存储设备的全局逻辑地址。

响应于接收了io命令,获取其指示的nsid,依据nsid访问ns单元映射表(参看图3a),得到分配给具有该nsid的命名空间的ns单元(410)。以及用io命令指示的命名空间逻辑地址除以ns单元的大小,得到商和余数(420)。用商作为序数从分配给具有该nsid的命名空间的ns单元中获取ns单元,以及用余数作为获取的ns单元内的偏移值。依据获取的ns单元的序号,获得该ns单元在全局逻辑地址空间中的位置,并加上偏移值,得到io命令所访问的全局逻辑地址(430)。依据通过ftl表将全局逻辑地址转换为物理地址,访问物理地址以响应io命令。

例如,io命令指示访问命名空间ns1的逻辑地址2358开始的连续4个逻辑块。依据ns1查询ns单元映射表(图3a)得到ns单元nsun1、nsun9与nsun12。以及用命名空间逻辑地址2358除以ns单元的逻辑地址空间的大小m(例如,m等于2000),得到商(q)和余数(r)。利用商(q)作为序数,选择从ns单元映射表中得到的属于ns1的第q+1个(从1开始编号)ns单元(例如,nsun9),以及通过nsun9的序号“9”得到nsun9的全局逻辑地址m*(9-1),再加上余数(r)作为偏移值。则ns1的逻辑地址2358的全局逻辑地址为m*(9-1)+r。以及该io命令要访问的是全局逻辑地址空间中从逻辑地址m*(9-1)+r开始的4个逻辑块。

作为另一个例子,若io命令指示访问命名空间ns1的逻辑地址2358开始的连续4个逻辑块,nsun9的逻辑地址空间中,从偏移值(r)处开始到该逻辑地址空间的结尾的长度不足4个逻辑块,意味着该io命令访问的逻辑地址空间由两个ns单元共同提供。则从nsun9的逻辑地址空间从偏移值(r)处开始到该逻辑地址空间的结尾提供该io命令访问的逻辑地址空间的第一部分(记为r1),而从属于ns1的第q+2个ns单元(nsun12)的逻辑地址空间起始位置开始提供该io命令访问的逻辑地址空间的第二部分(记为r2),以及r1+r2=4(该io命令访问的逻辑地址长度)。

作为依然另一个例子,io命令指示访问命名空间ns1的逻辑地址2358开始的连续4个逻辑块。以及用命名空间逻辑地址2358除以ns单元的逻辑地址空间的大小m,得到商(q)和余数(r)。在ns单元映射表的条目中,顺序记录指示每个ns单元所对应的全局逻辑地址空间的首个ftl表条目的地址。依据ns1得到ns单元映射表的条目,以及在映射表条目的偏移值为商(q)的位置得到同属于ns1的第q+1个ns单元(例如,nsun9)的全局逻辑地址空间对应的起始ftl表条目的地址。依据该起始ftl表条目的地址,加上余数(r)作为偏移值(可选地,依据逻辑块大小与ftl表条目对应的逻辑地址空间大小做适当调整,例如,每个ftl表条目指示的逻辑地址空间容纳4个逻辑块),得到对应ns1的逻辑地址2358的全局逻辑地址的ftl表条目地址。

可采用其他方式获得ns单元的全局逻辑地址。例如,提供ns单元地址映射表,记录每个ns单元在全局逻辑地址空间中的起始地址。以此方式,每个ns单元可具有不同大小的逻辑地址空间,从而提升ns单元的利用率。作为又一个例子,用余数(r)作为序数选择ns单元,而用商(q)作为ns单元对应的逻辑地址空间内的偏移值。

为处理io命令,通过io命令指示了nsid与命名空间逻辑地址得到全局逻辑地址,并用全局逻辑地址ftl表得到物理地址,以及访问物理地址得到io命令要访问的数据。

图5是根据本申请实施例的创建命名空间的流程图。

为创建在固态存储设备中的命名空间,主机向固态存储设备发送创建命名空间的命令,命令中指示希望创建的命名空间的大小。

响应于收到创建命名空间的命令(510),依据要创建的命名空间的大小,分配ns单元(520)。对要创建的命名空间大小除以ns单元大小的结果向上取整,得到要分配的ns单元的数量。例如,要创建大小为100gb的命名空间,每个ns单元大小为10gb,则分配10个ns单元。若要创建101gb的命名空间,每个ns单元大小为10gb,则要需要分配11个ns单元来容纳所创建的命名空间。

为新创建的命名空间分配尚未被使用的nsid(530)。例如,固态存储设备中已经存在ns1与ns2两个命名空间,可为新创建的命名空间分配ns3作为其nsid。

在ns单元映射表中记录新分配的nsid与ns单元的映射(550)。以及还在ns单元分配表中记录ns单元已被分配。

可选地,还为命名空间创建由nsid索引的元数据(570),在元数据中记录命名空间的大小、逻辑块大小、和/或同nsid对应的ns单元映射表条目的起始地址。从而在收到访问具有该nsid的命名空间的io命令时,以nsid作为索引获得元数据,并从同nsid对应的ns单元映射表条目的起始地址处,在以io命令的命名空间逻辑地址除以ns单元的大小得到的偏移值位置,获得用于响应io命令的ns单元(ns单元的序号,或者指示同ns单元对应的全局逻辑地址空间的ftl表的首地址)。

依然可选地,还将ns单元映射表、ns单元分配表和/或命名空间元数据或其更新记录到固态存储设备的nvm芯片。为记录ns单元映射表与ns单元分配表的更新,可成对的记录每个被分配的ns单元序号与对应的nsid。从而根据ns单元映射表与ns单元分配表的初始值与所有更新,可重建出更新后的单元映射表与ns单元分配表。在固态存储设备上电时,重建单元映射表与ns单元分配表。

以及固态存储向主机提供响应以指示命名空间创建完成。在响应中还指示所创建命名空间的nsid。

图6a是根据本申请实施例的创建命名空间之前的ns单元映射表,而图6b是根据本申请实施例的创建命名空间之前的ns单元分配表,图7a是根据本申请实施例的创建命名空间之后的ns单元映射表,而图7b是根据本申请实施例的创建命名空间之后的ns单元分配表。

参看图6a,ns单元映射表的每个条目,记录了由nsid标识的命名空间之一,与分配给该命名空间的一个或多个ns单元。图6a中,ns单元映射表的条目610记录了nsid为ns1的命名空间(简记为ns1)分配了3个ns单元(nsun1、nsun9与nsun12)。ns单元映射表的条目620记录了nsid为ns2的命名空间(简记为ns2)分配了4个ns单元(nsun4-7)。

参看图6b,ns单元分配表记录了固态存储设备的ns单元是否被分配给命名空间。由于图6a中,nsun1、nsun4-7、nsun9与nsun12被分配给命名空间。相应地,图6b中,同nsun1、nsun4-7、nsun9与nsun12对应的ns单元分配表的条目记录了这些ns单元已被分配。图6b中还记录了其他ns单元未被分配给命名空间。

作为举例,收到来自主机的创建15gb大小的命名空间的命令。所分配的ns单元的总大小应不小于要创建的命名空间的大小。作为举例,每个ns单元的大小为10gb,需要分配两个ns单元。从图6b所示的ns单元分配表中获取两个尚未被分配的ns单元(例如,编号为2和8的ns单元,分别记为nsun2与nsun8)。为要创建的命名空间分配nsid为ns3。在ns单元映射表中添加条目,并记录ns3对应于nsun2与nsun8(参看图7a)。在ns单元分配表中记录nsun2与nsun8已被分配(参看图7b)。可选地,还为ns3创建元数据,记录命名空间ns3的大小为15gb和/或ns3对应的ns单元映射表条目的起始地址。

将创建的命名空间ns3附着(attach)于nvme控制器后,ns3可响应主机的io命令。在接收到访问ns3的io命令后,依据io命令的nsid(ns3),从ns单元映射表或者(如果存在)以ns3索引的命名空间元数据中获取属于ns3的ns单元,并将io命令访问的命名空间逻辑地址转换为全局逻辑地址,以及访问全局逻辑地址来响应io命令。

图8是根据本申请实施例的删除命名空间的流程图。

为删除固态存储设备中的命名空间,主机向固态存储设备发送删除命名空间的命令,命令中指示希望删除的命名空间的nsid。

响应于收到删除命名空间的命令(810),获取要删除的命名空间的nsid。访问ns单元映射表,删除同nsid对应的条目(820)。可选地,还移动ns单元映射表中,在同nsid对应的条目之后的所有条目,以填充删除的条目占用的空间,从而ns单元映射表的尺寸不会因表中出现空洞而变得过大。以及依据移动后的条目的地址,更新以nsid索引的命名空间的元数据中同nsid对应的ns单元映射表条目的起始地址。当ns单元映射表中删除了同nsid对应的条目,或者在以nsid索引的命名空间的元数据(如果存在)中删除了同nsid对应的ns单元映射表条目的起始地址,由于无法完成命名空间逻辑地址到全局逻辑地址的映射,使得该命名空间无法再被访问。

还将被删除的ns单元映射表条目中指示的ns单元归还给ns单元分配表,在ns单元分配表中记录这些ns单元处于未分配状态(830)。处于未分配状态的ns单元可再次被分配给其他命名空间。

可选地,还将ns单元映射表、ns单元分配表和/或命名空间元数据的更新记录到固态存储设备的nvm芯片。

以及固态存储向主机提供响应以指示命名空间删除完成。

图9a是根据本申请实施例的删除命名空间之前的ns单元映射表,而图9b是根据本申请实施例的删除命名空间之前的ns单元分配表,图10a是根据本申请实施例的删除命名空间之后的ns单元映射表,而图10b是根据本申请实施例的删除命名空间之后的ns单元分配表。

参看图9a,ns单元映射表的每个条目,记录了由nsid标识的命名空间之一,与分配给该命名空间的一个或多个ns单元。图9a中,ns单元映射表的条目910记录了nsid为ns1的命名空间(简记为ns1)分配了3个ns单元(nsun1、nsun9与nsun12)。ns单元映射表的条目920记录了nsid为ns2的命名空间(简记为ns2)分配了4个ns单元(nsun4-7)。ns单元映射表的条目930记录了nsid为ns3的命名空间(简记为ns2)分配了2个ns单元(nsun2与nsun8)。

参看图9b,ns单元分配表记录了固态存储设备的ns单元是否被分配给命名空间。由于图9a中,nsun1、nsun2、nsun4-9与nsun12被分配给命名空间。相应地,图9b中,同nsun1、nsun2、nsun4-9与nsun12对应的ns单元分配表的条目记录了这些ns单元已被分配。图9b中还记录了其他ns单元未被分配给命名空间。

作为举例,收到来自主机的删除nsid为ns2的命名空间的命令。依据nsid访问ns单元映射表,删除nsid为ns2的条目。可选地,还移动ns单元映射表中nsid为ns2的条目之后的所有条目以填充nsid为ns2的条目删除后遗留的存储空间。参看图10a,nsid为ns3的条目前移。可以理解的,由于命名空间占用的ns单元的数量不同,ns单元映射表的每个条目的尺寸可以不同。可选地,固态存储设备中还维护了以nsid索引的命名空间的元数据,在删除nsid为ns2的命名空间时,将其元数据一并删除。还将ns单元映射表中记录的原被分配给nsid为ns2的命名空间的ns单元(nsun4-7)在ns单元分配表(图10b)标记为未分配。从而这些ns单元(nsun4-7)可再被分配给其他命名空间,以及nsid“ns2”也可再被分配给其他命名空间。可选地,还将ns单元映射表、ns单元分配表和/或命名空间元数据的更新记录到固态存储设备的nvm芯片。以及固态存储向主机提供响应以指示命名空间删除完成。

图11a与图11b是根据本申请又一实施例的创建命名空间的流程图。

响应于收到创建命名空间的命令(1110),为新创建的命名空间分配尚未被使用的nsid(1130)。例如,固态存储设备中已经存在ns1与ns2两个命名空间,可为新创建的命名空间分配ns3作为其nsid。

在ns单元映射表条目中记录新分配的nsid(1150)。此时,尚未为命名空间ns3分配ns单元,因而在ns单元的映射表条目中仅记录了新分配的nsid而不包括ns单元。以及无须更新ns单元分配表。在ns单元映射表条目中保留足够的空间容纳该命名空间所需的一个或多个ns单元。例如,该命名空间需要3个ns单元,则在ns单元分配表中预留容纳3个nsid或对应的3个ftl表项首地址的存储空间。

可选地,还为命名空间创建由nsid索引的元数据,在元数据中记录命名空间的大小、逻辑块大小、和/或同nsid对应的ns单元映射表条目的起始地址(并标记尚未分配ns单元)。可选地,还将ns单元映射表、ns单元分配表和/或命名空间元数据的更新记录到固态存储设备的nvm芯片。依然可选地,记录已创建的命名空间所需要的ns单元,虽然这些ns单元可能尚未分配给命名空间。在一个实施方式中,固态存储设备的总的ns单元数量与已创建的命名空间所需要的ns单元的差,是可用于创建其他命名空间的ns单元数量。在另一个实施方式中,由于主机(用户)大多数情况下不会使用命名空间的所有存储容量,因而固态存储设备中的尚未被分配的ns单元都可用于创建其他命名空间,从而已创建的命名空间所需要的ns单元数量可能大于固态存储设备的所有ns单元数量,以提高ns单元的使用率。

以及固态存储向主机提供响应以指示命名空间创建完成。在响应中还指示所创建命名空间的nsid。

在根据图11b的实施例中,当接收了访问命名空间的io命令,才为命名空间实际分配ns单元。参看图11b,响应于接收io命令(1160),io命令指示了访问的命名空间的nsid以及命名空间逻辑地址。通过ns单元映射表或命名空间元数据检查是否已为要访问的命名空间逻辑地址分配了ns单元(1170)。若已为io命令要访问的命名空间逻辑地址分配了ns单元,依据该ns单元得到全局逻辑地址和/或对应的物理地址,并访问物理地址以响应io命令(1175)。若尚未为io命令要访问的命名空间逻辑地址分配ns单元,获取未分配的ns单元(例如,通过访问ns单元分配表),将获取的ns单元序号或ns单元所对应的ftl表项的起始地址(该起始地址同ns单元序号是线性关系)填入ns单元映射表同io命令访问的nsid对应的条目(1180)。

以及,还依据io命令的命名空间逻辑地址确定所分配的ns单元在ns单元映射表条目中的位置。例如,命名空间占用3个ns单元,而io命令的命名空间逻辑地址指示访问第2个ns单元,则将步骤1180所分配的ns单元放入ns单元映射表条目的第2个存储位置。作为另一个例子,而io命令的命名空间逻辑地址指示访问第2与第3个ns单元,则将步骤1180所分配的2个ns单元放入ns单元映射表条目的第2与第3个存储位置。以及对于被分配的ns单元,还更新ns单元分配表,以记录被分配的ns单元。

依据所分配的ns单元获取同命名空间逻辑地址对应的全局逻辑地址和/或物理地址,并访问物理地址以响应io命令(1190)。

在图11a与11b所示的实施例中,仅在被使用的时候才为命名空间分配ns单元,从而提升了ns单元的利用率。

作为举例,要创建大小为100gb的命名空间,每个ns单元大小为10gb,记录固态存储设备分配给命名空间的ns单元数量增加10个,但并未实际将ns单元分配给所创建的命名空间。分配nsid(ns4)给该命名空间。在ns单元映射表的条目中记录有该ns4,但该命名空间尚无ns单元,以及在由ns4索引的ns单元映射表条目中预留10个存储位置以容纳ns单元的序号或ns单元对应的ftl表项起始地址。并向主机指示命名空间创建成功。

响应于收到主机发出的io命令,例如,访问ns4的命名空间逻辑地址a。检查是否已为ns4的命名空间逻辑地址a分配了ns单元。例如,若分配了ns单元,所访问的ns单元应当为分配给属于ns4的第a/m+1个ns单元,其中m是ns单元的逻辑地址空间的大小。通过以ns4为索引访问ns单元映射表条目,可知其第a/m+1个ns单元是否已被分配。若已分配ns单元,则依据ns单元的序号或对应的ftl表条目的起始地址得到同ns4的命名空间逻辑地址a对应的全局逻辑地址(或对应该全局逻辑地址的ftl表条目地址,或对应该全局逻辑地址的物理地址)。若尚未分配ns单元,访问ns单元分配表获取未分配的ns单元,填入ns4索引的ns单元映射表条目的第a/m+1个位置,在ns单元分配表中记录该ns单元已被分配。以及依据该ns单元的序号或对应的ftl表条目的起始地址得到同ns4的命名空间逻辑地址a对应的全局逻辑地址(或对应该全局逻辑地址的ftl表条目地址,或对应该全局逻辑地址的物理地址)。并以访问物理地址以响应io命令。

本发明实施例还提供一种包含程序代码的程序,当被载入主机cpu并在cpu中执行时,所述程序代码使所述cpu执行上面的由主机执行的方法。

本发明实施例还提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述程序使所述存储设备的处理器执行上面由设备执行的方法之一。

应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。

这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作操作,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的操作。

因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的操作的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或操作的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。

虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。

这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1