使用虚设虚拟功能的NVMe简单复制命令支持的制作方法

文档序号:29205400发布日期:2022-03-11 23:59阅读:165来源:国知局
使用虚设虚拟功能的NVMe简单复制命令支持的制作方法
使用虚设虚拟功能的nvme简单复制命令支持
1.相关申请的交叉引用
2.本技术要求2020年9月10日提交的美国临时专利申请序列号63/076,780的权益,该美国临时专利申请以引用方式并入本文。


背景技术:
技术领域
3.本公开的实施方案整体涉及数据存储设备,诸如固态驱动器(ssd)。
4.相关领域的描述
5.数据存储设备诸如ssd可用于需要相对低延迟和高容量存储的应用中的计算机中。例如,ssd可表现出比硬盘驱动器(hdd)更低的延迟,尤其是对于随机读取和写入而言。通常,ssd的控制器接收将数据从主机设备读取或写入到存储器设备的命令。根据命令是读取还是写入命令,从存储器设备中的一个或多个块读取数据或将数据写入到存储器设备中的一个或多个块。
6.数据存储设备利用存储管理操作诸如垃圾回收来释放宝贵的空间。当更新的数据被写入到存储设备的该一个或多个块时,可能不再需要该更新的数据的先前版本。垃圾回收可以将一个或多个块、已擦除的块重新分配给空块的可用池。此外,可将先前存储在该一个或多个块上的相关数据顺序地重新写入到一个或多个块。可能由于主机设备命令或内部决策而发生的数据复制可利用一个或多个缓冲器和硬件引擎,这可引起完成从主机接收的读取/写入命令的延迟。
7.因此,需要一种改进的方法来同时完成主机命令和数据存储设备操作。


技术实现要素:

8.本公开整体涉及数据存储设备,诸如固态驱动器。该数据存储设备包括易失性存储器、非易失性存储单元以及控制器。该数据存储设备还包括多个虚拟功能,其中这些虚拟功能中的至少一个虚拟功能仅能够由该数据存储设备访问,并且这些虚拟功能中的其余虚拟功能能够由该数据存储设备和主机设备两者访问。这些虚拟功能中的至少一个虚拟功能可专用于完成数据存储设备存储管理操作。
9.在一个实施方案中,数据存储设备包括非易失性存储单元和易失性存储器单元,该易失性存储器单元包括一个或多个第一易失性存储器位置、一个或多个第二易失性存储器位置以及控制器存储器缓冲器(cmb)。数据存储设备还包括耦接到非易失性存储单元和易失性存储器单元的控制器。控制器被配置为从主机接收一个或多个主机命令,诸如包括作为主机命令的子部分的读取和写入命令两者的简单复制命令,以从非易失性存储单元读取数据或将数据写入非易失性存储单元,将所接收的一个或多个读取或写入命令路由到一个或多个第一虚拟功能位置,并且利用cmb将数据从非易失性存储单元的第一位置复制到非易失性存储单元的第二位置,其中将数据从第一位置复制到第二位置利用一个或多个第
二虚拟功能位置。控制器还被配置为发起垃圾回收命令。
10.在另一个实施方案中,数据存储设备包括非易失性存储单元和易失性存储器单元,该易失性存储器单元包括一个或多个第一易失性存储器位置、一个或多个第二易失性存储器位置以及控制器存储器缓冲器(cmb)。数据存储设备还包括入站多路复用器(mux),诸如高级可扩展接口(axi)mux,以及耦接到非易失性存储单元、易失性存储器单元和axi入站mux的控制器。数据存储设备还包括耦接到控制器的中央处理单元(cpu),其中cpu被配置为从控制器接收复制命令或自生垃圾回收决策、生成多个读取命令、将该多个读取命令写入到cmb、针对指向cmb的该多个读取命令生成物理区页面(prp)或分散收集列表(sgl)、针对该多个读取命令发出第一门铃、生成第一写入命令、针对指向cmb的第一写入命令生成prp、针对第一写入命令发出第二门铃,以及将与第一写入命令相关联的数据编程到非易失性存储装置。
11.在另一个实施方案中,数据存储设备包括非易失性存储单元、包括一个或多个第一易失性存储器位置和一个或多个第二易失性存储器位置的易失性存储器单元、用于将从主机接收的一个或多个读取或写入命令路由到一个或多个第一虚拟功能位置的装置,其中该一个或多个第一虚拟功能位置完成接收的该一个或多个读取或写入命令,以及用于将数据从易失性存储单元的第一位置复制到非易失性存储单元的第二位置的控制器存储器缓冲器(cmb),其中将数据从第一位置复制到第二位置利用一个或多个第二虚拟功能位置。
附图说明
12.因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
13.图1是示出根据所公开实施方案的存储系统的示意性框图,其中数据存储设备可用作主机设备的存储设备。
14.图2a是根据所公开实施方案的存储管理操作的图示。
15.图2b是示出根据所公开实施方案的数据存储设备中的存储管理操作的示意性框图。
16.图3a是根据所公开实施方案的写入命令流的示意图。
17.图3b是根据所公开实施方案的具有控制器存储缓冲器的写入命令流的示意图。
18.图4是根据所公开实施方案的虚拟化资源的主机设备视图和数据存储设备视图的示意图。
19.图5是示出根据所公开实施方案的包括本地虚拟功能协议的数据存储设备的示意性框图。
20.图6a至图6c示出了根据所公开实施方案的用于复制命令流的方法。
21.为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
22.在下文中,参考本公开的实施方案。然而,应当理解的是,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。
23.本公开整体涉及数据存储设备,诸如固态驱动器。该数据存储设备包括易失性存储器、非易失性存储单元以及控制器。该数据存储设备还包括多个虚拟功能,其中这些虚拟功能中的至少一个虚拟功能仅能够由该数据存储设备访问,并且这些虚拟功能中的其余虚拟功能能够由该数据存储设备和主机设备两者访问。这些虚拟功能中的至少一个虚拟功能可专用于完成数据存储设备存储管理操作。
24.应当理解,虽然本文的描述将参考写入命令和读取命令以支持复制命令,但本文的公开内容不限于此类命令。相反,本文的公开内容应理解为涵盖其他命令,诸如验证命令或比较命令。另外,还设想了需要从存储器设备诸如nand设备读取但不将任何数据传输到主机设备的命令。
25.图1是示出根据所公开实施方案的存储系统100的示意性框图,其中数据存储设备106可用作主机设备104的存储设备。例如,主机设备104可以利用包括在数据存储设备106中的非易失性存储器(nvm)110来存储和检索数据。主机设备104包括主机dram 138。在一些示例中,存储系统100可以包括可作为存储阵列工作的多个存储设备,诸如数据存储设备106。例如,存储系统100可以包括多个数据存储设备106,其被配置成共同用作主机设备104的大容量存储设备的廉价/独立磁盘(raid)冗余阵列。
26.主机设备104可以向一个或多个存储设备(诸如数据存储设备106)存储数据和/或从其检索数据。如图1所示,主机设备104可以经由接口114与数据存储设备106通信。主机设备104可以包括多种设备中的任何一种,包括计算机服务器、网络附接存储(nas)单元、台式计算机、笔记本(即膝上型)计算机、平板计算机、机顶盒、电话手机诸如所谓的“智能”电话、所谓的“智能”平板电脑、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备或能够从数据存储设备发送或接收数据的其他设备。
27.数据存储设备106包括控制器108、nvm 110、电源111、易失性存储器112、接口114和写入缓冲器116。在一些示例中,为了清楚起见,数据存储设备106可以包括图1中未示出的附加部件。例如,数据存储设备106可以包括印刷电路板(pcb),数据存储设备106的部件机械地附接到该印刷电路板,并且该印刷电路板包括电互连数据存储设备106的部件等的导电迹线。在一些示例中,数据存储设备106的物理尺寸和连接器配置可以符合一个或多个标准形状因数。一些示例性标准形状因子包括但不限于3.5”数据存储设备(例如,hdd或ssd)、2.5”数据存储设备、1.8”数据存储设备、外围部件互连(pci)、pci扩展(pci-x)、pci express(pcie)(例如,pcie x1、x4、x8、x16、pcie mini卡、minipci等)。在一些示例中,数据存储设备106可以直接耦接(例如,直接焊接)到主机设备104的母板。
28.数据存储设备106的接口114可以包括用于与主机设备104交换数据的数据总线和用于与主机设备104交换命令的控制总线中的一者或两者。接口114可以根据任何合适的协议操作。例如,接口114可以根据以下协议中的一个或多个协议来操作:高级技术附件(ata)(例如,串行ata(sata)和并行ata(pata))、光纤信道协议(fcp)、小型计算机系统接口(scsi)、串行附接scsi(sas)、pci和pcie、非易失性存储器express(nvme)、opencapi、genz、高速缓存相干接口加速器(ccix)、开放信道ssd(ocssd)等。接口114的电连接(例如,数据总线、控制总线或两者)电连接到控制器108,从而提供主机设备104与控制器108之间的电连接,允许在主机设备104与控制器108之间交换数据。在一些示例中,接口114的电连接还可以允许数据存储设备106从主机设备104接收电力。例如,如图1所示,电源111可以经由接口114从主机设备104接收电力。
29.nvm 110可包括多个存储器设备。nvm 110可以被配置成存储和/或检索数据。例如,nvm 110的存储器设备可以从控制器108接收数据和指示存储器设备存储数据的消息。类似地,nvm 110的存储器设备可以从控制器108接收指示存储器设备检索数据的消息。在一些示例中,存储器设备中的每个存储器设备可以被称为管芯。在一些示例中,单个物理芯片可以包括多个管芯(即,多个存储单元)。在一些示例中,每个存储器设备可以被配置为存储相对大量的数据(例如,128mb、256mb、512mb、1gb、2gb、4gb、8gb、16gb、32gb、64gb、128gb、256gb、512gb、1tb等)。
30.在一些示例中,nvm 110的每个存储器设备可以包括任何类型的非易失性存储器设备,诸如闪存存储器设备、相变存储器(pcm)设备、电阻随机存取存储器(reram)设备、磁阻随机存取存储器(mram)设备、铁电随机存取存储器(f-ram)、全息存储器设备、以及任何其他类型的非易失性存储器设备。
31.nvm 110可以包括多个闪存存储器设备。nvm闪存存储器设备可以包括基于nand或nor的闪存存储器设备,并且可以基于包含在用于每个闪存存储器单元的晶体管的浮栅中的电荷来存储数据。在nvm闪存存储器设备中,闪存存储器设备可被划分成多个管芯,其中该多个管芯中的每个管芯包括多个块,这些块可被进一步划分成多个页面。特定存储器设备内的该多个块中的每个块可以包括多个nvm单元。可以使用字线来电连接nvm单元的行以限定多个页面中的页面。多个页面中的每个页面中的相应单元可以电连接到相应位线。此外,nvm闪存存储器设备可以是2d或3d设备,并且可以是单级单元(slc)、多级单元(mlc)、三级单元(tlc)或四级单元(qlc)。控制器108可能以页面级向nvm闪存存储器设备写入数据以及从nvm闪存存储器设备读取数据,并且以块级从nvm闪存存储器设备擦除数据。
32.数据存储设备106包括电源111,其可以向数据存储设备106的一个或多个部件提供电力。当以标准模式操作时,电源111可以使用由外部设备诸如主机设备104提供的电力向一个或多个部件供电。例如,电源111可以使用经由接口114从主机设备104接收的电力向一个或多个部件供电。在一些示例中,电源111可以包括一个或多个电力存储部件,其被配置成当以关闭模式操作时向一个或多个部件供电,诸如在停止从外部设备接收电力的情况下。以这种方式,电源111可以用作机载备用电源。该一个或多个电力存储部件的一些示例包括但不限于电容器、超级电容器、电池等。在一些示例中,可由一个或多个电力存储部件存储的电量可以是一个或多个电力存储部件的成本和/或尺寸(例如,面积/体积)的函数。换句话说,随着由一个或多个电力存储部件存储的电量增加,一个或多个电力存储部件的
成本和/或尺寸也增加。
33.数据存储设备106还包括易失性存储器112,其可以由控制器108用来存储信息。易失性存储器112可以包括一个或多个易失性存储器设备。如图1所示,易失性存储器112可以消耗从电源111接收的电力。易失性存储器112的示例包括但不限于随机存取存储器(ram)、动态随机存取存储器(dram)、静态ram(sram)和同步动态ram(sdram(例如,ddr1、ddr2、ddr3、ddr3l、lpddr3、ddr4、lpddr4等))。
34.数据存储设备106包括控制器108,其可以管理数据存储设备106的一个或多个操作。例如,控制器108可以管理从nvm 110读取数据和/或将数据写入该nvm 110。在一些实施方案中,当数据存储设备106从主机设备104接收写入命令时,控制器108可以发起数据存储命令以将数据存储到该nvm 110并且监测数据存储命令的进度。控制器108可以确定存储系统100的至少一个操作特性,并且将至少一个操作特性存储到该nvm 110。在一些实施方案中,当数据存储设备106从主机设备104接收到写入命令时,控制器108在将数据发送到nvm 110之前将与写入命令相关联的数据暂时存储在内部存储器或写入缓冲器116中。
35.图2a是根据所公开实施方案的存储管理操作的图示。数据存储设备(诸如图1的数据存储设备106)的nvm(诸如图1的nvm 110)包括第一块202和第二块204。由于数据被顺序地写入块,因此在移动数据或垃圾回收之前,第一块202的lba1与lba2之间的空间以及lba4与lba3之间的空间可包含无效或旧数据。写入第一块202的任何附加数据在lba3之后写入。因此,lba1与lba2以及lba4与lba3之间的空间未被有效利用,因为有效数据不是顺序的,并且不能使用各lba之间的空间。
36.控制器(诸如图1的控制器108或图1的主机设备104)可以发送用于存储管理操作(诸如垃圾回收)的命令。将第一块202的lba复制到控制器,其中lba可存储在控制器的易失性存储器中。第一块被擦除并被分配给空闲块(即,尚未写入的块)的池。存储在控制器中的数据被顺序地写入第二块204。由于数据被顺序地写入第二块,因此数据利用的空间量随着数据在块上的合并程度越来越高而减少。例如,第一块202可具有64kib的可用容量。每个lba可具有约4kib的大小。lba的总大小为16kib。在将四个lba写入到第一块202之后,第一块202的剩余容量为约48kib。然而,由于四个lba不是顺序写入的,因此可用容量可小于约48kib。当将数据顺序地写入块诸如第二块204时,可用容量可等于或约等于块的剩余容量。
37.图2b是示出根据所公开实施方案的数据存储设备中的存储管理操作的示意性框图。主机设备104向数据存储设备106发出读取和/或写入命令252。pcie总线256接收命令252以及与命令252相关联的数据254。然后命令252被传输到控制路径258,其中处理器260包括用于处理和执行命令252的逻辑部件。在写入操作中,数据254被传输到数据路径212,其中来自处理器260的指令被执行,并且数据254通过数据路径212的各种元件。例如,数据254首先通过直接存储器访问(dma)264,其中数据保护被添加到数据254。然后在高级加密标准(aes)266处对数据254进行加密。在nvme元数据块268处,元数据被附加到数据254。在一个实施方案中,元数据可包括标头。可被称为ec引擎的纠错引擎270生成纠错码或奇偶校验数据并将其写入数据254。闪存接口模块(fim)272将数据254写入nvm 110的相关位置。
38.然而,当数据存储设备106执行存储管理操作诸如垃圾回收时,从nvm 110检索相关数据254并使其通过闪存接口模块(fim)272、纠错引擎270、nvme元数据块268、aes 266和dma 264。相关数据然后通过整个数据路径212并存储在nvm 110中的相关位置处。由于数据
路径212可被存储管理操作占用,因此由于当前利用了数据存储设备的资源,新命令252可被排队。
39.图3a是根据所公开实施方案的写入命令流300的示意图。主机设备(诸如图1的主机设备104)包括主机dram(诸如图1的主机dram138)。主机设备通过数据总线与数据存储设备通信。虽然写入命令流300描述了主机设备与数据存储设备之间的写入命令的数据流,但是命令流可以描述主机设备与数据存储设备之间的读取命令的数据流。
40.主机设备发出写入命令以将具有相关联的物理区页面(prp)或分散收集列表(sgl)的数据写入到主机dram。应当理解,术语prp和sgl可互换使用。还应当理解,出于本公开的目的,术语prp和sgl旨在另选地包括,诸如将在nvme中利用的。主机设备向数据存储设备发出提交队列(sq)门铃。数据存储设备响应并读取写入到主机dram的命令。数据存储设备接收写入命令并从主机dram读取相关prp。由数据存储设备接收来自主机dram的相关prp。然后,数据存储设备从主机dram读取和接收与写入命令相关联的数据。在从主机dram接收到数据之后,数据存储设备向主机dram的完成队列(cq)发出完成通知。数据存储设备还向主机设备发送中断作为完成通知已被发布到主机dram的指示。主机设备然后从主机dram读取相关完成通知并对其进行分析,并且向数据存储设备发出cq门铃,从而指示已读取完成通知。
41.图3b是根据所公开实施方案的具有控制器存储缓冲器350的写入命令流的示意图。尽管具有cmb 350的写入命令流描述了主机设备与数据存储设备之间的写入命令的数据流,但是命令流可以描述主机设备与数据存储设备之间的读取命令的数据流。主机设备发出写入命令以写入具有相关联的prp的数据。数据存储设备不向主机dram写入,而是包括控制器存储器缓冲器(cmb)功能,以向主机设备提供对数据存储设备的dram的一部分的访问。例如,在图3a的写入命令流300中,写入命令被写入到主机dram,其中数据存储设备从主机dram读取。
42.在具有cmb 350的写入命令流中,主机设备将写入命令和相关prp写入到数据存储设备的cmb。主机设备然后在提交队列中填充写入命令。主机设备向数据存储设备发出sq门铃。然后,数据存储设备从cmb读取具有相关联的prp和数据的写入命令。数据存储设备将完成通知写入到cmb的cq。向主机设备发送中断。当主机设备接收到中断时,主机设备从cmb的cq读取并接收完成通知。主机设备然后向数据存储设备发出cq门铃,从而指示已读取完成通知。由于数据被写入到数据存储设备的cmb,因此可减少事务数量以及与主机设备和数据存储设备之间的事务相关联的时间,从而加快读取或写入命令的过程。
43.图4是根据所公开实施方案的虚拟化资源的主机设备视图和数据存储设备视图的示意图。主机设备可为图1的主机设备104,并且数据存储设备可为图1的数据存储设备106。虚拟化功能允许多个虚拟功能来管理适合这些虚拟功能中的每个虚拟功能的数据存储设备的资源。如图4所示,主机的每个虚拟功能包括不同于其他虚拟功能的一组寄存器、门铃、cmb、sq和cq。因此,这些虚拟功能中的每个虚拟功能的资源彼此隔离。
44.图5是示出根据所公开实施方案的包括本地虚拟功能协议的数据存储设备106的示意性框图。主机设备104包括一组虚拟主机502a-502c,每个虚拟主机与虚拟功能相关联。此外,数据存储设备106可包括一个或多个第一虚拟功能以及一个或多个第二虚拟功能。该一个或多个第一虚拟功能能够由主机设备104访问,并且该一个或多个第二虚拟功能仅能
够由数据存储设备诸如控制该一个或多个第二虚拟功能的数据存储设备106的cpu 542访问。该一个或多个第二虚拟功能可模拟主机设备104的行为,诸如生成读取和写入命令。
45.例如,具有图3的cmb 350的写入命令流可利用该一个或多个第一虚拟功能。该一个或多个第二虚拟功能的行为可类似于该一个或多个第一虚拟功能。然而,该一个或多个第二虚拟功能可用于数据存储设备106发起的操作或存储管理操作,诸如垃圾回收。由于该一个或多个第二虚拟功能的资源不与主机设备104共享,所以该一个或多个第二虚拟功能的操作可与该一个或多个第一虚拟功能的操作同时发生。
46.在图5中,每个虚拟功能由唯一图案指示。例如,该一个或多个第一虚拟功能由对角条纹状图案指示,并且该一个或多个第二虚拟功能由水平和/或竖直图案指示。第一,第一虚拟功能与第一虚拟主机(vh)1 502a对应,第二,第一虚拟功能与第二vh 2 502b对应,并且第三,第一功能与第三vh 3 502c对应。所列出的虚拟主机和虚拟功能的数量并非旨在限制,而是提供可能的实施方案的示例。由校验式设计指示的一个或多个第二虚拟功能(即,本地虚拟功能)的资源对于主机设备104是隐藏的,而该一个或多个第一虚拟功能能够由主机设备104访问。
47.此外,流动路径1与主机设备104读取和写入命令相关联,并且流动路径2与数据存储设备106读取和写入命令相关联。流动路径1可访问该一个或多个第一虚拟功能中的任一个,并且流动路径2可访问该一个或多个第二虚拟功能中的任一个。
48.数据存储设备106包括pcie总线504、高级可扩展接口(axi)入站多路复用器(mux)模块506、控制器108、网关514、sq/cq 512、dram528和耦接到本地cpu邮箱526的cpu 542。axi入站mux模块506可负责从cpu 542命令中过滤主机设备104命令。控制器108包括出站地址转换(at)508a、入站at 508b和门铃发出器510。出站at 508a可被配置为向网关514发送和接收消息,其中这些消息可以是完成通知或中断。入站at 508b可被配置为从axi入站mux 506接收读取或写入命令。门铃发出器510向sq/cq 512发出针对完成通知或中断的门铃。网关514可被配置为将读取或写入事务引导至主机设备104或数据存储设备106dram 528的cmb 530a-530c、532。在另一个实施方案中,sram用作dram 528。
49.dram 528可包括多个cmb 530a-530c、532。此外,dram 528可包括一个或多个第一易失性存储器位置和一个或多个第二易失性存储器位置。例如,该一个或多个第一易失性存储器位置可存储与该一个或多个第一虚拟功能相关联的多个cmb 530a-530c,并且该一个或多个第二易失性存储器位置可存储与该一个或多个第二虚拟功能相关联的本地cmb 532。如图4所示,每个虚拟功能可与唯一的资源集相关联,诸如寄存器534a-534c、536和msix 538a-538c、540。本地资源诸如本地cmb 532、本地寄存器536和本地msix 540仅能够由数据存储设备106的cpu 542或固件访问。
50.数据存储设备106还包括中断逻辑(inl)516、直接存储器访问(dma)518、sq管理器(sqm)520、cq管理器(cqm)522和缓冲区指针管理器(bpm)524。当门铃运行时,sqm 520从主机设备104或cmb 530a-530c、532读取相关命令。bpm 524然后读取prp表,并且dma 518执行读取或写入命令。当数据传输完成时,cqm 522写入完成通知并且inl 516发送中断。
51.图6a至图6c是示出根据所公开实施方案的复制命令流程图的方法600。可参考图5的各方面来帮助举例说明方法600。此外,方法600可描述图5的流动路径2。在框602处,cpu 542接收复制命令。cpu 542在框604处生成对本地cmb 532的多个读取命令,并且在框606处
在本地cmb532中填充相关prp列表。在框608处,cpu 542针对读取命令发出与该一个或多个第二虚拟功能相关联的第一门铃。在框610处,cpu等待第一中断到达。
52.在框626处,在等待第一中断到达时,控制器108检测第一门铃并通知sqm 520。在框628处,sqm 520从本地cmb 532获取多个读取命令。在框630处,bpm 524从本地cmb 532读取相关prp列表。在框632处,dma从nvm读取与该多个读取命令相关联的数据,并将与这些读取命令相关联的数据编程到本地cmb 532。在框634处,cqm 522向本地cmb532发出第一完成通知,并且在框636处inl 516生成第一中断并将其发送到本地cpu邮箱526。
53.在cpu 542在本地cpu邮箱526处接收到第一中断之后,cpu 542在框612处确定与在框602处接收的复制命令相关联的所有生成的读取命令是否已被发送到本地cmb 532。如果并非所有读取命令都已被发送到本地cmb 532,则方法600返回到框606。然而,如果已将所有读取命令发送到本地cmb 532,则cpu 542确定来自cqm 522的第一完成通知是否已到达。如果第一完成通知尚未到达,则该方法返回到框610。然而,如果第一完成通知已到达,则cpu 542在框616处生成对本地cmb 432的写入命令,并且在框618处在本地cmb 432中填充相关prp列表。在框620处,cpu发出针对写入命令的第二门铃。在框622处,cpu 542等待第二中断到达。
54.在框652处,在等待第二中断到达时,控制器108检测第二门铃并通知sqm 520。在框654处,sqm 520从本地cmb 532获取写入命令。在框656处,bpm 524从本地cmb 532读取相关prp列表。在框658处,dma将与写入命令相关联的数据从本地cmb 532写入到nvm。在框660处,cqm 522向本地cmb 532发出第二完成通知,并且在框662处inl 516生成第二中断并将其发送到本地cpu邮箱526。
55.在框622处cpu 542接收到第二中断之后,在框624处完成复制命令。在方法600的过程中,可以同时完成其他读取或写入操作,诸如来自主机的读取或写入命令,因为该多个虚拟功能(即,该一个或多个第一虚拟功能和该一个或多个第二虚拟功能)中的每个虚拟功能的资源彼此隔离。在一个实施方案中,方法600描述了垃圾回收的方法。在其他实施方案中,方法600描述了数据存储设备可发起的存储管理操作。例如,方法600可指将数据从nvm 110中的第一位置复制到nvm 110中的第二位置。
56.通过包括仅能够由数据存储设备的固件或cpu访问的一个或多个第二虚拟功能,数据存储设备发起的操作流和由主机设备发起的数据存储设备的操作流可以交织,并且可以增强数据存储设备的性能。
57.在一个实施方案中,数据存储设备包括非易失性存储单元和易失性存储器单元,该易失性存储器单元包括一个或多个第一易失性存储器位置、一个或多个第二易失性存储器位置以及控制器存储器缓冲器(cmb)。数据存储设备还包括耦接到非易失性存储单元和易失性存储器单元的控制器。控制器被配置为从主机接收一个或多个读取、写入或复制命令,以从非易失性存储单元读取数据、向非易失性存储单元写入数据或两者、将所接收的一个或多个读取或写入命令路由到一个或多个第一虚拟功能位置,并且利用cmb将数据从非易失性存储单元的第一位置复制到非易失性存储单元的第二位置,其中将数据从第一位置复制到第二位置利用一个或多个第二虚拟功能位置。
58.数据存储设备还包括入站多路复用器(mux)模块,诸如高级可扩展接口(axi),其中入站mux模块被配置为过滤到控制器的一个或多个入站主机读取或写入命令。数据存储
设备还包括中央处理单元(cpu),其中该cpu被配置为利用axi入站mux模块来访问该一个或多个第二易失性存储器位置。该一个或多个第一虚拟功能位置能够由主机访问。该一个或多个第二虚拟功能位置对于主机是隐藏的。复制数据还包括针对存储在非易失性存储单元中的多个数据执行多个读取命令,以及执行第一写入命令以将与该多个读取命令相关联的多个数据写入到非易失性存储单元的连续区域中。
59.在另一个实施方案中,提供了一种数据存储设备,该数据存储设备包括非易失性存储单元和易失性存储器单元,该易失性存储器单元包括一个或多个第一易失性存储器位置、一个或多个第二易失性存储器位置以及控制器存储器缓冲器(cmb)。数据存储设备还包括入站多路复用器(mux),以及耦接到非易失性存储单元、易失性存储器单元和axi入站mux的控制器。数据存储设备还包括耦接到控制器的中央处理单元(cpu),其中cpu被配置为从控制器接收复制命令或自生垃圾回收决策、生成多个读取命令、将该多个读取命令写入到cmb、针对指向cmb的该多个读取命令生成物理区页面(prp)或分散收集列表(sgl)、针对该多个读取命令发出第一门铃、生成第一写入命令、针对指向cmb的第一写入命令生成prp、针对第一写入命令发出第二门铃,以及将与第一写入命令相关联的数据编程到非易失性存储装置。
60.cpu在发出第一门铃之后被进一步配置为等待来自控制器的第一中断到达。所述读取包括由控制器检测第一门铃并且通知提交队列管理器、由提交队列管理器从cmb获取该多个读取命令、由缓冲区指针管理器(bpm)从cmb读取相关prp、由直接存储器访问(dma)读取与从非易失性存储单元到cmb的该多个读取命令相关联的数据、由完成队列管理器(cqm)将第一完成通知编程到cmb,以及由中断逻辑(inl)将第一中断消息编程到cpu邮箱,其中该cpu包括该cpu邮箱。cpu等待接收第一中断消息,其中该cpu被配置为确定该多个读取命令是否已被写入到cmb。cpu进一步确定第一完成通知是否已到达。所述写入包括由控制器检测第二门铃并且通知提交队列管理器、由提交队列管理器从cmb获取第一写入命令、由缓冲区指针管理器(bpm)从cmb读取相关prp、由直接存储器访问(dma)将与第一写入命令相关联的数据写入非易失性存储单元到cmb、由完成队列管理器(cqm)将第二完成通知编程到cmb,以及由中断逻辑(inl)将第二中断消息编程到cpu邮箱,其中该cpu包括该cpu邮箱。cpu等待接收第二中断消息。所述接收第二中断消息对应于完成由控制器接收的复制命令。
61.在另一个实施方案中,数据存储设备包括非易失性存储单元、包括一个或多个第一易失性存储器位置和一个或多个第二易失性存储器位置的易失性存储器单元、用于将从主机接收的一个或多个读取或写入命令路由到一个或多个第一虚拟功能位置的装置,其中该一个或多个第一虚拟功能位置完成接收的该一个或多个读取或写入命令,以及用于将数据从易失性存储单元的第一位置复制到非易失性存储单元的第二位置的控制器存储器缓冲器(cmb),其中将数据从第一位置复制到第二位置利用一个或多个第二虚拟功能位置。
62.cmb是易失性存储器单元的一部分。易失性存储器单元包括多个cmb。该多个cmb中的至少一个cmb对于主机是隐藏的。数据存储设备还包括入站多路复用器(mux)。数据存储设备还包括耦接到入站mux的多个寄存器。
63.虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1