利用系统抽象层提供多协议存储设备转让专利

申请号 : CN201810220905.8

文献号 : CN110275757A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王树柯田冰

申请人 : 北京忆恒创源科技有限公司

摘要 :

提供了利用系统抽象层提供多协议存储设备。所提供的存储设备,包括控制部件与耦合到控制部件的NVM存储介质,控制部件包括CPU、主机接口与介质接口,CPU上运行操作系统与一个或多个任务,任务通过操作系统提供的系统抽象层接口来使用操作系统提供的服务,操作系统包括一个或多个驱动程序,操作系统调度一个或多个任务;CPU运行的一个或多个任务处理访问存储设备的IO命令。

权利要求 :

1.一种存储设备,包括控制部件与耦合到控制部件的NVM存储介质,控制部件包括CPU、主机接口与介质接口,CPU上运行操作系统与一个或多个任务,任务通过操作系统提供的系统抽象层接口来使用操作系统提供的服务,操作系统包括一个或多个驱动程序,操作系统调度一个或多个任务;CPU运行的一个或多个任务处理访问存储设备的IO命令。

2.根据权利要求1所述的存储设备,任务通过系统抽象层接口调用驱动程序从主机接口获取IO命令。

3.根据权利要求1或2所述的存储设备,其中任务调用介质接口驱动程序访问NVM存储介质,其中介质接口驱动程序包括虚拟介质层程序,虚拟介质层程序将遵循OCSSD协议的地址映射为NVM芯片的物理地址。

4.根据权利要求3所述的存储设备,其中任务从主机接口接收的IO命令指示逻辑地址,任务获取同逻辑地址对应的遵循OCSSD协议的地址并提供给介质接口驱动程序。

5.根据权利要求1-4之一所述的存储设备,其中任务识别从主机接口接收的IO命令所遵循的存储协议,并根据IO命令所遵循的存储协议将IO命令转发给对应的任务。

6.根据权利要求1-5之一所述的存储设备,其中一个或多个任务是应用程序,应用程序将遵循OCSSD协议的地址提供给介质接口驱动程序以访问存储设备的存储空间。

7.根据权利要求3或4所述的存储设备,其中虚拟介质层将遵循OCSSD协议的地址的组映射为耦合到控制部件的通道,将遵循OCSSD协议的地址的并行单元(PU)映射为耦合到控制部件的逻辑单元,将遵循OCSSD协议的地址的小块(block)映射为耦合到逻辑单元的物理块。

8.根据权利要求7所述的存储设备,其中虚拟介质层将遵循OCSSD协议的地址的一个并行单元(PU)映射为耦合到控制部件的多个逻辑单元,或者将遵循OCSSD协议的地址的多个并行单元(PU)映射为耦合到控制部件的一个逻辑单元。

9.根据权利要求1-8之一所述的存储设备,其中任务识别从主机接口接收的IO命令所遵循的存储协议,若IO命令遵循OCSSD协议,任务从IO命令获取遵循OCSSD的地址,并将遵循OCSSD协议的地址提供给介质接口驱动程序;若若IO命令遵循NVMe协议协议,任务从IO命令获取遵循NVMe协议的逻辑地址,获取同逻辑地址对应的遵循OCSSD协议的地址,并将遵循OCSSD协议的地址提供给介质接口驱动程序。

10.根据权利要求1-9之一所述的存储设备,其中一个任务是可靠虚拟介质管理任务,可靠虚拟介质管理任务将遵循OCSSD协议的多个PU和/或小块(chunk)组织为大块。

说明书 :

利用系统抽象层提供多协议存储设备

技术领域

[0001] 本申请涉及存储设备,具体地,涉及基于存储设备的系统抽象层来提供支持多种存储协议的存储设备。

背景技术

[0002] 图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(Integrated Drive Electr onics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Componen t Interconnect Express,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
[0003] NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(Magnetic Ran dom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)、XP oint存储器等是常见的NVM。
[0004] 接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
[0005] 控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate arr ay,现场可编程门阵列)、ASIC(Application Specific Integrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器(CPU)或者控制器,在处理器或控制器中执行软件来操纵控制部件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] 在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
[0012] 存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。FTL表包括多个FTL表条目(或称表项)。在一种情况下,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一种情况下,每个FTL表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一种情况下,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一种情况下,FTL表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。
[0013] 在处理来自主机的读命令时,固态存储设备利用读命令中携带的逻辑地址从FTL表中获得对应的物理地址,并依据物理地址向NVM芯片发出读请求,并接收NVM芯片响应于读请求输出的数据。在处理来自主机的写命令时,固态存储设备为写命令分配物理地址,在FTL表中记录写命令的逻辑地址与分配的物理地址的对应关系,并依据分配的物理地址向NVM芯片发出写请求。
[0014] 有多种存储协议(也称为存储接口协议),根据存储协议访问存储设备。例如,SCSI(Small Co mputer System Interface,小型计算机系统接口)协议、NVMe(NVM Express)协议。在SCSI协议与NVMe协议中,存储设备向同其耦合的电子设备(例如主机)暴露线性逻辑地址空间。主机使用逻辑地址访问存储设备。
[0015] 也出现了OCSSD(Open Channel Solid State Drive,开放通道固态驱动器)存储协议(”Open Channel Solid Drive Specification”Revision 2.0,2018年1月29日,从http://lightnvm.io/docs/OCSS D-2_0-20180129.pdf可获得),其向同存储设备耦合的电子设备暴露了更多与NVM存储介质相关的物理信息,从而主机使用OCSSD定义的寻址方式访问存储设备的存储介质。可以在NVMe协议中使用OCSSD协议定义的寻址方式。
[0016] OCSSD定义的寻址方式包括PU(Parallel Unit,并行单元)、组(Group)、小块(chunk)、逻辑块(Logical block)与写单元(Write Unit),其各自的含义可从OCSSD协议中获得。

发明内容

[0017] 有多种可用的控制部件、NVM芯片、存储器等用于构造存储设备。为适配控制部件、NVM芯片、存储器等的变更,需要变更或重新开发运行在控制部件的处理器中的软件(或固件),使得存储设备的开发周期边长,开发成本变高,在开发过程中也会引入更多的缺陷。希望提供系统抽象层来为运行在控制部件的处理器中的软件(或固件)提供统一的系统架构。统一的系统架构被用于多种具有不同控制部件、NVM芯片、存储器的存储设备,被运行在控制部件的处理器中的软件(或固件)使用或同运行在控制部件的处理器中的软件(或固件)交互。系统架构包括统一形态的NVM存储介质、统一的使用控制部件与存储器的接口等。
[0018] 希望提供统一形态的NVM存储介质解决NVM芯片的多样化引入的问题。NVM芯片来自不同厂家,以不同的接口命令被访问,具有不同的容量与存储单元的配置(物理块数量、物理页包括的物理页数量、物理页的大小等)。统一形态的NVM存储介质屏蔽上述差异性,使运行在控制部件的处理器中的软件(或固件)以统一的方式访问NVM芯片,而无须顾及NVM芯片的变化。
[0019] 存储协议也呈现多样化,例如,OCSSD协议、NVMe协议、SCSI协议等。存储设备支持的存储协议限制了存储设备的用途。希望存储设备支持多种存储协议,以使存储设备可应用于多种场景,搭配多种计算机/服务器,并且不显著增加控制部件的复杂度与获得存储设备的成本。
[0020] 根据本申请的第一方面,提供了第一存储设备,包括控制部件与耦合到控制部件的NVM存储介质,控制部件包括CPU、主机接口与介质接口,CPU上运行操作系统与一个或多个任务,任务通过操作系统提供的系统抽象层接口来使用操作系统提供的服务,操作系统包括一个或多个驱动程序,操作系统调度一个或多个任务;CPU运行的一个或多个任务处理访问存储设备的IO命令。
[0021] 根据本申请第一方面的第一存储设备,提供了根据本申请第一方面的第二存储设备,其中,任务通过系统抽象层接口调用驱动程序从主机接口获取IO命令。
[0022] 根据本申请第一方面的第二存储设备,提供了根据本申请第一方面的第三存储设备,其中,任务调用主机接口的驱动程序,从主机接口获取IO命令。
[0023] 根据本申请第一方面的第二存储设备,提供了根据本申请第一方面的第四存储设备,其中,任务调用队列驱动程序,从主机接口的队列获取IO命令。
[0024] 根据本申请第一方面的第一至第四存储设备之一,提供了根据本申请第一方面的第五存储设备,其中,一个或多个任务与操作系统运行在相同的特权级。
[0025] 根据本申请第一方面的第一至第四存储设备之一,提供了根据本申请第一方面的第六存储设备,其中,一个或多个任务与操作系统运行在不同的特权级。
[0026] 根据本申请第一方面的第六存储设备,提供了根据本申请第一方面的第七存储设备,其中,响应于任务调用系统抽象层接口,发生特权级切换。
[0027] 根据本申请第一方面的第一至第七存储设备之一,提供了根据本申请第一方面的第八存储设备,其中任务调用介质接口驱动程序访问NVM存储介质。
[0028] 根据本申请第一方面的第一至第八存储设备之一,提供了根据本申请第一方面的第九存储设备,其中介质接口驱动程序包括虚拟介质层程序,虚拟介质层程序将遵循OCSSD协议的地址映射为NVM芯片的物理地址。
[0029] 根据本申请第一方面的第九存储设备,提供了根据本申请第一方面的第十存储设备,其中一个或多个任务将遵循OCSSD协议的地址提供给介质接口驱动程序以访问NVM芯片。
[0030] 根据本申请第一方面的第十存储设备,提供了根据本申请第一方面的第十一存储设备,其中任务从主机接口接收的IO命令指示遵循OCSSD协议的地址,任务将遵循OCSSD协议的地址提供给介质接口驱动程序。
[0031] 根据本申请第一方面的第九至第十一存储设备之一,提供了根据本申请第一方面的第十二存储设备,其中任务从主机接口接收的IO命令指示逻辑地址,任务获取同逻辑地址对应的遵循OCSSD协议的地址并提供给介质接口驱动程序。
[0032] 根据本申请第一方面的第一至第十二存储设备之一,提供了根据本申请第一方面的第十三存储设备,其中任务识别从主机接口接收的IO命令所遵循的存储协议,并根据IO命令所遵循的存储协议将IO命令转发给对应的任务。
[0033] 根据本申请第一方面的第一至第十二存储设备之一,提供了根据本申请第一方面的第十四存储设备,其中主机接口识别所接收的IO命令所遵循的存储协议,并根据IO命令所遵循的存储协议通知对应的任务处理IO命令。
[0034] 根据本申请第一方面的第一至第十四存储设备之一,提供了根据本申请第一方面的第十五存储设备,其中一个或多个任务是应用程序,应用程序将遵循OCSSD协议的地址提供给介质接口驱动程序以访问存储设备的存储空间。
[0035] 根据本申请第一方面的第九至第十二存储设备之一,提供了根据本申请第一方面的第十六存储设备,其中虚拟介质层将遵循OCSSD协议的地址的组映射为耦合到控制部件的通道,将遵循OCSSD协议的地址的并行单元(PU)映射为耦合到控制部件的逻辑单元,将遵循OCSSD协议的地址的小块(block)映射为耦合到逻辑单元的物理块。
[0036] 根据本申请第一方面的第十六存储设备,提供了根据本申请第一方面的第十七存储设备,其中虚拟介质层还将遵循OCSSD协议的地址的逻辑块映射为物理块中的物理页,或者将遵循OCSSD协议的地址的写单元映射为物理块中的物理页。
[0037] 根据本申请第一方面的第九至第十二存储设备之一,提供了根据本申请第一方面的第十八存储设备,其中任务识别从主机接口接收的IO命令所遵循的存储协议,若IO命令遵循OCSSD协议,任务从IO命令获取遵循OCSSD的地址,并将遵循OCSSD协议的地址提供给介质接口驱动程序;若若IO命令遵循NVMe协议协议,任务从IO命令获取遵循NVMe协议的逻辑地址,获取同逻辑地址对应的遵循OCSSD协议的地址,并将遵循OCSSD协议的地址提供给介质接口驱动程序。
[0038] 根据本申请第一方面的第十六或第十七存储设备,提供了根据本申请第一方面的第十九存储设备,其中虚拟介质层将遵循OCSSD协议的地址的一个并行单元(PU)映射为耦合到控制部件的多个逻辑单元,或者将遵循OCSSD协议的地址的多个并行单元(PU)映射为耦合到控制部件的一个逻辑单元。
[0039] 根据本申请第一方面的第十九存储设备,提供了根据本申请第一方面的第二十存储设备,其中虚拟介质层将遵循OCSSD协议的地址的小块(chunk)映射到NVM存储介质的多个物理块。
[0040] 根据本申请第一方面的第二十存储设备,提供了根据本申请第一方面的第二十一存储设备,其中被映射到同一小块(chunk)的多个物理块被组织为大块。
[0041] 根据本申请第一方面的第一至第二十一存储设备之一,提供了根据本申请第一方面的第二十二存储设备,其中一个任务是可靠虚拟介质管理任务,可靠虚拟介质管理任务将遵循OCSSD协议的多个PU和/或小块(chunk)组织为大块。
[0042] 根据本申请第一方面的第二十二存储设备,提供了根据本申请第一方面的第二十三存储设备,其中从可靠虚拟介质管理任务提供的大块获取PU与逻辑块,用于承载写IO命令要写入的数据。
[0043] 根据本申请第一方面的第二十二或第二十三存储设备,提供了根据本申请第一方面的第二十四存储设备,其中响应于从第一逻辑块读出的数据存在不可纠正错误,从可靠虚拟介质管理任务获取第一逻辑块所属的第一大块,从第一大块的其他逻辑块读出数据以恢复第一逻辑块存储的数据。

附图说明

[0044] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0045] 图1是相关技术中固态存储设备的框图;
[0046] 图2展示了大块的示意图;
[0047] 图3是根据本申请实施例的存储设备的示意图;
[0048] 图4是根据本申请又一实施例的存储设备的示意图;
[0049] 图5是根据本申请依然又一实施例的存储设备的示意图;
[0050] 图6是根据本申请再一实施例的存储设备的示意图;以及
[0051] 图7是根据本申请又一实施例的存储设备的示意图。

具体实施方式

[0052] 下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0053] 图3是根据本申请实施例的存储设备的示意图。
[0054] 存储设备包括耦合到NVM存储介质与存储器(例如,DRAM)的控制部件。可选地,使用SRAM来部分或全部替代DRAM。SRAM可集成在控制部件内部。控制包括一个或多个CPU、介质接口、主机接口、用于访问存储器的存储控制器、错误校验单元(ECC),以及可选地一种或多种加速器。介质接口用于访问NVM存储介质。
[0055] 主机接口用于同主机交换命令与数据。例如,主机与存储设备通过NVMe/PCIe协议通信,主机接口处理PCIe协议数据包,提取出NVMe协议命令,并向主机返回NVMe协议命令的处理结果。作为又一个例子,主机接口将存储设备耦合到网络,例如通过以太网、无线以太网、光纤通道耦合到网络。错误校验单元是例如BCH、LDPC编解码器,用于对写入NVM存储介质的数据进行错误校验编码,以及对从NVM存储介质读出的数据进行错误校验解码。加速器包括一种或多种硬件加速器,例如,AI(人工智能)加速器、多媒体加速器、链表/树结构访问加速器等。
[0056] 在控制部件的CPU上运行软件,软件与控制部件的其他硬件协同来处理从主机接口接收的IO命令,以提供存储设备的存储功能,以及可选地其他功能。软件包括操作系统与一个或多个任务。操作系统提供系统抽象层接口,一个或多个任务通过使用系统抽象层接口来使用操作系统提供的服务。一个或多个任务用于独自或协同处理IO请求。例如,一个任务是FTL任务,用于根据接收的逻辑地址访问FTL表并输出物理地址;一个任务是GC(垃圾回收)任务,用于回收NVM存储介质中的有效数据并擦除NVM存储介质中的物理存储单元;一个任务是存储协议(例如NVMe)任务,用于识别接收的遵循存储协议的IO命令或其他命令,请求其他任务协助处理命令,并将命令处理结果以遵循存储协议的方式提供给命令的发出方。依然可选地,CPU上运行的一个或多个任务是应用程序。应用程序提供例如数值计算、关键词检索、图像特征提取等多种能力。作为举例,主机与应用程序通过私有命令或者NVMe协议的扩展命令通信。应用程序的处理结果通过主机接口提供给主机。
[0057] 操作系统提供内存分配、任务管理(创建、删除、调度等)、任务间通信、中断管理、临界资源管理等服务(或功能),并通过系统抽象层接口向任务提供服务。操作系统是例如现有技术中存在的,或将来产生的操作系统。在一种实施方式中,操作系统不区分用户态任务与内核态任务,操作系统与任务运行在CPU的相同特权级,任务使用系统抽象层接口而不引起用户态与内核态的切换,从而提高任务被处理的效率。在又一种实施方式中,操作系统区分用户态任务与内核态任务,操作系统与任务运行在CPU的不同特权级,以及将处理IO请求的一个或多个任务运行在内核态,而将应用程序(任务)运行在用户态,从而既保障处理IO请求的任务的执行效率,也避免应用程序(任务)危害操作系统的安全。运行在内核态的任务使用系统抽象层接口时不引起系统状态(内核态与用户态)的切换,而应用程序(任务)使用系统抽象层接口时引起系统状态的切换(由用户态进入内核态,在操作系统处理完成后,再由内核态回到用户态)。
[0058] 操作系统还包括一个或多个驱动程序,例如,主机接口驱动、介质接口驱动、队列驱动、存储器驱动等。驱动程序为硬件提供简化的使用方式,以促进任务与操作系统使用硬件。一个或多个系统抽象层接口用于访问硬件(主机接口、介质接口、存储器控制器、加速器、错误校验单元等),系统抽象层接口根据接收的硬件访问请求使用驱动程序来完成对硬件的访问,并获取访问结果。
[0059] 可选地,系统抽象层接口还提供例如POSIX(可移植操作系统接口)的标准操作系统接口,和/或诸如STL(标准模板库)的面向高级程序设计语言的标准接口。
[0060] 图4是根据本申请又一实施例的存储设备的示意图。
[0061] 根据图4的实施例,同图3展示的实施例相比,存储部件运行的软件还包括虚拟介质层。作为举例,介质接口驱动使用虚拟介质层,以通过系统抽象层接口向一个或多个任务暴露统一的符合OCSSD协议的寻址方式。可以理解地,虚拟介质层是运行在CPU上的程序。
[0062] 作为举例,虚拟介质层展现的寻址方式,将耦合到控制部件的NVM存储介质的物理地址暴露为包括OCSSD协议定义的组(group)、PU(并行单元)、小块(chunk)与逻辑块(logical block)等部分。从而,对于遵循OCSSD协议的IO请求,任务可使用从IO请求中获取的物理地址直接访问介质接口驱动,而无须查询FTL表。
[0063] 可选地,虚拟介质层展现的寻址方式,将耦合到控制部件的NVM存储介质的物理地址暴露为虚拟NVM芯片。使用通道(channel)、逻辑单元(LUN)、物理块(physical block)与物理页(physical page)等部分寻址虚拟NVM芯片。
[0064] 图5是根据本申请依然又一实施例的存储设备的示意图。
[0065] 为了清楚地目的,图5展示了根据本申请实施例的存储设备的控制部件的主机接口与介质接口,运行在控制部件的CPU上的软件的主机接口驱动、介质接口驱动以及处理OCSSD协议的任务。可选地,在控制部件的CPU上运行的软件还包括应用程序。
[0066] 主机接口通过例如PCIe链路(未示出)将存储设备耦合到主机,介质接口将控制部件耦合到存储设备的NVM芯片。NVM芯片通过多个通道耦合到控制部件。NVM芯片是例如NAND闪存。图5中展示了4个通道。每个通道上耦合了4个逻辑单元。
[0067] 虚拟介质层将物理地址的组(group)映射到用于耦合NVM芯片的通道,将物理地址的PU映射到NVM芯片的逻辑单元(LUN),将小块(chunk)映射到NVM芯片的物理块,将逻辑块(logical block)映射到NVM芯片的物理页。可选地,虚拟介质层将逻辑块(logical block)映射到物理页的部分(称为数据帧),而将写单元(Write Unit)映射到物理页。从而虚拟介质层根据遵循OCSSD协议的物理地址得到要访问的NVM芯片的存储单元。在一个例子中,虚拟介质层获取存储设备中耦合到控制部件的NVM芯片的通道的数量,为每个通道编号,并将组(group)映射到通道编号,以根据组(group)寻址一个通道。类似地,虚拟介质层获取通道中的逻辑单元数量,为每个逻辑单元编号,并将PU映射到逻辑单元编号,以根据组(group)与PU寻址指定通道上的指定逻辑单元。可选地,耦合到控制部件的各个通道具有相同的配置(例如,各自包含相同数量的逻辑单元,各逻辑单元也相同)。依然可选地,耦合到控制部件的各通道具有不同的配置(例如,各自包含不同数量的逻辑单元,和/或各逻辑单元不同)。依然可选地,各通道耦合不同的NVM芯片,例如,一个通道耦合的NVM芯片的3D NAND闪存,而又一个通道耦合的NVM芯片是3D XPoint芯片或MRAM芯片。
[0068] 在一个实施方式中,虚拟介质层将接收的物理地址直接提供介质接口,以访问NVM芯片。在有一个例子中,虚拟介质层从接收的物理地址中获取对应于组(group)、PU(并行单元)、小块(chunk)与逻辑块(logical block)等的各部分,将各部分分别映射到通道、逻辑单元、物理块与物理页。映射是例如通过解析式转换的映射,或通过查找表映射。
[0069] 在又一个实施方式中,从组(group)、PU(并行单元)、小块(chunk)与逻辑块(logical block)的各部分,到通道、逻辑单元、物理块与物理页的映射是一对多或多对一的映射。例如,将多个组映射到同一个通道,将一个PU映射到多个逻辑单元。可选地,在中国专利申请(201710915806.7)中提供了将虚拟LUN映射到逻辑单元的多个实施例,将其全文通过引用并入本申请,以及通过将PU作为虚拟LUN的替代,以将虚拟LUN映射到逻辑单元的方式将PU映射到逻辑单元。从而多个PU可映射到相同逻辑单元,或者一个PU映射到多个逻辑单元。
[0070] 在又一个例子中,虚拟介质层展现的虚拟NVM存储介质中,组内包括例如8个PU,而PU包括例如1024个小块(chunk)。而耦合到控制部件的每个通道上耦合了2颗NVM芯片,每个NVM芯片包括逻辑单元,每个逻辑单元包括512个物理块。虚拟介质层,根据表1展示的映射关系,将根据OCSSD协议的物理地址(组、PU、小块)映射到NVM芯片的物理地址(通道、逻辑单元、物理块),而将OCSSD协议的逻辑块(Logical block)地址直接作为NVM芯片的物理页地址。
[0071] 从而,所属领域技术人员将意识到,通过虚拟介质层的地址映射,将遵循OCSSD协议的物理地址所展现的存储介质,由具有相同或不同配置(例如,每芯片中不同的逻辑单元数量,每LUN中不同的物理块数量,每物理块中不同的物理页数量,物理页的大小等)的NVM芯片提供。可选地,虚拟介质层将不同配置的NVM芯片映射为相同的由遵循OCSSD协议的物理地址所展现的存储介质。从而在存储设备的NVM芯片发生变化时,使用存储设备的应用程序/主机无须修改,固态存储设备中通过虚拟介质层访问NVM芯片的各个任务也无须修改。例如,一种NVM芯片(A)中每个LUN包括512个物理块,而另一NVM芯片(B)中每个LUN包括384个物理块,虚拟介质层将这两种NVM芯片都映射为每PU具有512个小块的由遵循OCSSD协议的物理地址所展现的存储介质,将1个PU映射到NVM芯片A的1个逻辑单元,而将1个PU映射到NVM芯片B的2个逻辑单元,以及NVM芯片B的2个逻辑单元中多个512个物理块的部分舍弃不用,或共其他用途而不提供给用户。以及通过配置改变虚拟介质层的映射方式。
[0072] 可选地,虚拟介质层将遵循OCSSD协议的物理地址的逻辑块(logical block)映射为NVM芯片的物理页内的数据单元,物理页包括一个或多个数据单元。以及虚拟介质层将遵循OCSSD协议的物理地址的写单元(write unit)映射为NVM芯片的物理页。
[0073]
[0074] 表1
[0075] 继续参看图5,主机根据OCSSD协议向存储设备发出IO命令。主机接口接收主机提供的IO命令。处理OCSSD协议的任务基于对主机接口状态的轮询或中断识别有命令出现在主机接口,调用主机接口驱动访问主机接口(①),主机接口驱动将从主机接口获取的IO命令提供给处理OCSSD协议的任务(②)。以读命令为例,处理OCSSD的任务分析IO命令,提取其中的遵循OCSSD协议的物理地址,将物理地址提供给介质接口驱动(③)。介质接口控制接收物理地址,由虚拟介质层对物理地址进行必要的映射,在访问介质接口以访问NVM芯片(④)。
[0076] 图6是根据本申请再一实施例的存储设备的示意图。
[0077] 根据图6的实施例的存储设备,同时支持遵循OCSSD协议的IO命令与遵循NVMe协议的IO命令。在存储部件的CPU上运行主机命令获取任务、处理OCSSD协议的任务与处理NVMe协议的任务,后两者分别处理遵循OCSSD协议的IO命令与遵循NVMe协议的IO命令。可选地,由同一任务既处理主机命令的获取、处理遵循OCSSD协议的命令,也处理遵循NVMe协议的IO命令。
[0078] 根据图6的实施例,主机命令获取任务对接收到的IO命令所遵循的存储协议(OCSSD协议、NVMe协议,以及可选地其他存储协议)进行区分,以及可选地,根据根据所别出来的存储协议种类,在IO命令中添加指示所使用的存储协议的标志,和/或将IO命令分发给处理OCSSD协议的任务或处理NVMe协议的任务。
[0079] 主机根据存储协议向存储设备发出IO命令。主机接口接收主机提供的IO命令。主机命令获取任务基于对主机接口状态的轮询或中断识别有命令出现在主机接口,调用主机接口驱动访问主机接口(5),主机接口驱动将从主机接口获取的IO命令提供给主机命令获取任务(6)。
[0080] 以读命令为例,主机命令获取任务分析IO命令,识别出其遵循的存储协议。若IO命令遵循OCSSD协议,主机命令获取任务将该IO命令转交给处理OCSSD协议的任务(7)。处理OCSSD协议的任务提取接收的IO命令中的遵循OCSSD协议的物理地址,将物理地址提供给介质接口驱动(8)。介质接口控制接收物理地址,由虚拟介质层对物理地址进行必要的映射,在访问介质接口以访问NVM芯片(9)。
[0081] 若IO命令遵循NVMe协议,主机命令获取任务识别有命令出现在主机接口,调用主机接口驱动访问主机接口(10),主机接口驱动将从主机接口获取的IO命令提供给主机命令获取任务(11)。主机命令获取任务分析IO命令,识别出其遵循NVMe存储协议,并将该IO命令转交给处理NVMe协议的任务(12)。处理NVMe协议的任务提取接收的IO命令中的遵循NVMe协议的逻辑地址,将逻辑地址提供给FTL任务(13)。FTL任务根据接收的逻辑地址输出同逻辑地址对应的物理地址并返回给处理NVMe协议的任务(13)。可选地,FTL任务提供的物理地址,具有同遵循OCSSD协议的物理地址相同的格式与含义,换句话说,FTL任务提供的物理地址,是由虚拟介质层所暴露的遵循OCSSD协议的物理地址。处理NVMe协议的任务根据接收的物理地址,访问介质接口驱动(14)。介质接口控制接收物理地址,由虚拟介质层对物理地址进行必要的映射,在访问介质接口以访问NVM芯片(15)。
[0082] 在可选的实施方式中,存储设备被动态或静态地配置以知晓IO命令所遵循的存储协议。从而省去主机命令获取任务,而将对主机接口出现待处理的IO命令的状态绑定给OCSSD协议处理任务或NVMe协议处理任务。由OCSSD协议处理任务或NVMe协议处理任务响应于主机接口有待处理的IO命令而访问主机接口驱动获取IO命令并进行处理。虽然未对IO命令所遵循的存储协议加以识别,依赖于绑定关系,OCSSD协议处理任务获取的IO命令总是遵循OCSSD协议的IO命令,而NVMe协议处理模块获取的IO命令总是遵循NVMe协议的IO命令。主机接口同OCSSD协议处理任务或NVMe协议处理任务的绑定关系在固态存储设备工作时可被改变。
[0083] 在又一个可选的实施方式中,由同一任务(称为组合任务)既处理主机命令的获取、处理遵循OCSSD协议的命令,也处理遵循NVMe协议的IO命令。以及在存储设备的控制部件中运行多个组合任务,每个组合任务各自处理IO命令,从而同时处理多个IO命令,提升存储设备IO命令处理的吞吐量并降低因任务切换带来的IO命令处理延迟。
[0084] 在依然又一个可选的实施方式中,主机接口识别接收的IO命令所遵循的存储协议,并根据识别结果,指示OCSSD协议处理任务或NVMe协议处理任务有待处理的IO命令。例如,主机接口为遵循OCSSD协议的IO命令与遵循NVMe协议的IO命令分别维护命令队列,根据IO命令所遵循的协议将IO命令填入各自的命令队列。用于OCSSD协议的命令队列同处理OCSSD协议的任务绑定,用于NVMe协议的命令队列同处理NVMe协议的任务绑定。响应于命令队列出现待处理的IO命令,处理OCSSD的任务与处理NVMe协议的任务基于对命令队列状态的轮询或中断识别有命令出现在同各自绑定的命令队列中。
[0085] 遵循NVMe协议的IO命令使用逻辑地址访问存储设备,需要通过FTL任务获取同逻辑地址对应的物理地址。而遵循OCSSD协议的IO命令使用遵循OCSSD协议的物理地址访问存储设备,从而无须经过FTL任务进行地址转换。而根据本申请的实施例,虚拟介质层接受遵循OCSSD协议的物理地址用于访问NVM芯片,从而处理NVMe协议的任务与处理OCSSD协议的任务使用相同格式的遵循OCSSD协议的物理地址访问介质接口驱动。以此方式,在单一存储设备中,既支持OCSSD存储协议,也支持NVMe存储协议。可选地,或进一步地,存储设备还运行处理SCSI协议的任务,和/或处理其他存储协议的任务。这些处理不同存储协议的任务,如果需要,将接收的IO命令中携带的地址转换为遵循OCSSD协议的物理地址,并访问介质接口驱动。因而根据本申请实施例的存储设备能容易地支持多种存储协议,并且在支持单一存储协议时,不因能支持其他存储协议而丧失性能或效率。处理不同存储协议的任务共用相同的介质接口驱动。
[0086] 图7是根据本申请又一实施例的存储设备的示意图。
[0087] 根据图7的实施例的存储设备,同根据图6的实施例的存储设备相比,在存储部件的CPU上还运行可靠虚拟介质管理任务。可靠虚拟介质管理任务将遵循OCSSD协议的多个PU和/或小块(chunk)组织为大块,以为存储设备提供增强的数据保护。可选地,可靠虚拟介质管理任务的功能被合并入诸如FTL任务的其他任务,从而在使用大块相关功能时,无须发生任务切换。依然可选地,可靠虚拟介质管理任务的功能被合并入虚拟介质层,并且将遵循OCSSD协议小块(chunk)映射到NVM芯片的多个物理块,并将被映射到同一小块(chunk)的多个物理块组织为大块,从而使遵循OCSSD的小块被映射为大块,且具有增强的数据可靠性。
[0088] 继续参看图7,虚拟介质层将遵循OCSSD的物理地址的PU0映射到逻辑单元710,将PU1映射到逻辑单元712,将PU2映射到逻辑单元714,以及将PU3映射到逻辑单元716。可靠虚拟介质管理任务用PU0、PU1、PU2与PU3构建PU组(记为PUG0),并在PU组(PUG0)中构造大块。例如,按图2展示的方式构造大块,或者按在申请号为201710752321.0的中国专利申请的图
3A及其说明书中对图3A的相关描述的方式构造大块,或者按现有技术提供的方式构造大块。
[0089] 以写IO命令(也称为写命令)为例,可靠虚拟介质管理任务提供的大块用于承载写命令的数据。FTL任务从可靠虚拟介质管理任务提供的大块(以及大块上的页条带(或根据OCSSD协议将其称为逻辑块(Logical block)条带,逻辑块条带包括多个逻辑块,其上存储了按RAID配置的用户数据与校验数据))中分配可用的物理地址,可用的物理地址的形式遵循OCSSD协议。例如,可靠虚拟介质管理任务将PU组(PUG0)以及其中可用的页条带提供给FTL任务。FTL任务为写命令分配物理地址时,从PU组(PUG0)的可用页条带中获取物理地址,并将分配的物理地址同逻辑地址相关联地记录在FTL表中。响应于PU组(PUG0)的可用页条带被用尽,可靠虚拟介质管理任务还提供另一可用PU组。
[0090] 对于读命令,在根据读命令从NVM芯片获取的数据出现错误校验单元无法校正的错误时,请求可靠虚拟介质管理任务提供读命令所读取数据所在的页条带中各个逻辑块(Logical block)地址,并从页条带的各个逻辑块中存储的数据对读命令要读取的数据进行恢复。
[0091] 可靠虚拟介质管理任务还在大块的各个小块或逻辑块中记录与大块和/或页条带相关的元数据。在申请号为201710752321.0的中国专利申请的图3B及其说明书中对图3B的相关描述中提供了元数据的含义与使用方式。
[0092] 根据本申请的实施例还提供了一种固态存储设备,该设备包括控制器与非易失存储器芯片,其中,控制器执行本申请实施例提供的任意一种处理方法。
[0093] 根据本申请的实施例还提供了一种存储在可读介质上的程序,当被固态存储设备的控制器运行时,使得固态存储设备执行根据本申请实施例提供的任意一种处理方法。
[0094] 尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。