启用存储介质上的虚拟功能

文档序号:1470060 发布日期:2020-02-21 浏览:14次 >En<

阅读说明:本技术 启用存储介质上的虚拟功能 (Enabling virtual functions on a storage medium ) 是由 郭丽萍 李英东 S·富里 S·苏里 于 2019-08-07 设计创作,主要内容包括:本公开的实施例涉及启用存储介质上的虚拟功能。本公开描述了用于将虚拟功能自动映射到存储介质以启用单根输入输出虚拟化的装置和方法。存储介质交换机管理对在由交换机管理的存储介质接口后面执行的虚拟功能的访问。交换机包括主机接口,交换机通过该主机接口接收主机命令。交换机确定与主机命令相关联的虚拟功能标识符,并且基于虚拟功能标识符自动选择存储介质的虚拟功能。交换机使用虚拟功能在存储介质接口上执行主机命令,并且在执行之后,经由主机接口响应主机命令中的每个主机命令。通过以这种方式自动地映射虚拟功能,交换机自动地启用存储介质的单根输入输出虚拟化,包括没有对于输入输出虚拟化的本地支持的存储介质。(Embodiments of the present disclosure relate to enabling virtual functions on a storage medium. The present disclosure describes an apparatus and method for automatically mapping virtual functions to a storage medium to enable single root input output virtualization. The storage media switch manages access to virtual functions performed behind the storage media interfaces managed by the switch. The switch includes a host interface through which the switch receives host commands. The switch determines a virtual function identifier associated with the host command and automatically selects a virtual function of the storage medium based on the virtual function identifier. The switch executes the host commands on the storage medium interface using the virtual function, and after execution, responds to each of the host commands via the host interface. By automatically mapping the virtual functions in this manner, the switch automatically enables single root input output virtualization of storage media, including storage media without local support for input output virtualization.)

启用存储介质上的虚拟功能

相关申请的交叉引用

本公开要求于2018年8月7日提交的序列号为62/715,706的美国临时专利申请的优先权,以及于2018年8月8日提交的序列号为62/716,278的美国临时专利申请,其公开内容通过整体引用并入本文。

技术领域

本公开的实施例涉及启用存储介质上的虚拟功能。

背景技术

通常,大规模的数据计算系统利用硬盘设备、固态存储器设备以及其他类型的存储设备或他们的组合的阵列来实现。为了简化管理、降低成本以及提高性能,一些大规模的数据计算系统启用单根输入输出虚拟化(SR-IOV)。大规模的数据计算系统可以随时间增长到具有多代与多类型的存储设备,包括能够支持SR-IOV的存储设备和不支持本机SR-IOV的存储设备。结果,由于没有常见的可以被利用的启用硬件的存储虚拟化的实现,大规模的数据计算系统的一些部分可能效率较低。

发明内容

提供本发明内容以引入在

具体实施方式

和附图说明中进一步描述的主题内容。因此,本发明内容不应被视为用以描述必要特征也不被用来限制所要求保护的主题内容的范围。

在一些方面,存储介质交换机实现一种用于支持存储介质上的虚拟功能的方法。交换机通过经由主机接口接收来自主机的主机命令、以及响应于接收到主机命令而确定与主机命令相关联的虚拟功能标识符来实现该方法。交换机通过基于虚拟功能标识符选择用于执行主机命令的存储介质的虚拟功能来改进该方法。响应于使用被分配给存储介质的虚拟功能来执行主机命令,交换机通过经由主机接口来响应主机命令以继续该方法。通过以这种方式实现该方法以自动地启用对虚拟功能的支持,交换机可以自动地(即,无需主机介入)在各种存储介质类型(包括没有本机虚拟功能支持的存储设备)上启用对虚拟功能的支持。自动地支持虚拟功能为在主机处执行的应用或服务提供了更多隔离和分区功能性,而不需要主机计算资源的介入或使用。

在其他方面,一种装置包括基于硬件的处理器;被耦合到处理器并且被配置为维持处理器可执行指令的存储器,该处理器可执行指令响应于执行而实现装置上的应用;以及被配置为使得应用能够充当主机以访问与装置相关联的存储介质中的数据的主机接口。该装置的存储介质交换机被耦合到主机接口并且提供存储介质接口。该存储介质交换机被配置为:经由主机接口从充当主机的应用接收主机命令;响应于接收到主机命令,确定与主机命令相关联的虚拟功能标识符,并且基于虚拟功能标识符选择用于执行主机命令的存储介质的虚拟功能。响应于在存储介质接口上、并且使用被分配给存储介质的虚拟功能来执行主机命令,该存储介质交换机被配置为经由主机接口来响应主机命令。

在其他方面,片上系统(SoC)被描述为包括存储介质的存储介质接口、主机的主机接口、基于硬件的处理器、和被配置为存储处理器可执行指令的存储器。响应于通过基于硬件的处理器的执行,处理器可执行指令将存储介质交换机实现为:经由主机接口从主机接收主机命令,响应于接收到主机命令,确定与主机命令相关联的虚拟功能标识符,并且基于虚拟功能标识符选择用于执行主机命令的存储介质的虚拟功能。另外,响应于通过基于硬件的处理器的执行,处理器可执行指令将存储介质交换机实现为:响应于在存储介质接口上并且使用被分配到存储介质的虚拟功能来执行主机命令,经由主机接口来响应主机命令。

一个或多个实现的细节在附图和以下描述中被阐述。其他特征和优点根据描述和附图以及权利要求将变得明显。

附图说明

在附图和以下详细描述中阐述了启用存储介质上的虚拟功能支持的一个或多个实现的细节。在附图中,附图标记的最左边的数字标识附图标记首次出现的图。在说明书和附图中的不同的实例中相同的附图标记的使用指示相同的元素:

图1图示了根据本公开的一个或多个方面的示例操作环境,其具有启用存储介质上的虚拟功能支持的设备。

图2图示了图1中所示的存储介质交换机和固态驱动器的示例配置。

图3图示了根据一个或多个方面的存储介质交换机的示例配置,该存储介质交换机与主机和多个固态驱动器相关联。

图4图示了根据一个或多个方面的各种存储介质交换机队列的示例配置。

图5图示了根据一个或多个方面的有助于实现QoS的QoS参数的示例配置。

图6描绘了用于将主机命令自动地映射到存储介质上的虚拟功能的示例方法。

图7A描绘了用于选择存储介质的虚拟功能的示例方法。

图7B描绘了根据本公开的一个或多个方面的用于响应主机命令的示例方法。

图8是概念图,其图示了当主机命令被映射到存储介质上的虚拟功能时,主机命令的地址字段的操纵。

图9描绘了用于为通过命名空间访问的固态存储装置提供QoS的示例方法。

图10描绘了用于基于针对命名空间的带宽配额向固态存储设备提交I/O命令的示例方法。

图11描绘了用于通过固态存储装置的命名空间管理虚拟机的数据访问的示例方法。

图12图示了示例片上系统(SoC)环境,其用于实现在针对固态存储介质的虚拟接口上启用虚拟功能或者QoS的各个方面。

图13图示了示例存储介质交换机控制器,其被配置为实现在针对固态存储介质的虚拟接口上启用虚拟功能或者QoS的各个方面。

具体实施方式

在大规模数据计算系统中,SR-IOV可以被用来通过从物理连接中抽象出上层协议来将物理存储设备管理为一个或多个虚拟功能。通过SR-IOV,主机可以命令虚拟功能而不考虑如何实现虚拟功能。这样,SR-IOV可以使得单个存储设备被以许多不同的方式划分以显示为多个虚拟功能。SR-IOV可以以许多不同方式组合多个存储设备以显示为单个虚拟功能或者多个虚拟功能。

大规模数据计算系统可以利用支持SR-IOV的存储设备和不支持SR-IOV的存储设备的阵列来实现。不支持SR-IOV的存储介质的各部分可能对于需要虚拟功能的数据计算系统的主机是不可用的。

存储介质交换机被描述,其使得主机能够使用数据计算系统的任何部分(包括使用不固有SR-IOV能力的存储设备)来充分地利用虚拟功能和SR-IOV能力。存储介质交换机代表数据计算系统响应通过标准的高速串行计算机扩展总线接口(诸如***组件互连快速

Figure BDA0002159301920000041

被发送到数据计算系统的主机命令。通过管理在数据计算系统和主机之间发送的通信,存储介质交换机可以指示数据计算系统以提供SR-IOV功能性,包括在本机不支持SR-IOV的存储设备上。

当在不固有SR-IOV能力的存储设备上启用虚拟功能性时,存储介质交换机通过内置于存储介质交换机的虚拟地址窗口化方案自动地映射虚拟功能。将虚拟地址窗口化方案应用于主机命令使得存储介质交换机能够通过处理管道来跟踪主机命令,以使交换机随后能够响应适当的主机。

方案要求交换机用对应的虚拟功能标识符跟踪每个主机命令。每个唯一的虚拟功能标识符对应于不同的虚拟功能。主机可以通过将虚拟功能标识符包括在主机命令的虚拟地址字段中来针对主机命令指定虚拟功能。对于从主机接收的未标记的命令,交换机可以通过用虚拟功能标识符自动地编码主机命令的虚拟地址字段来标记或者编码主机命令。

用以保存虚拟功能标识符的虚拟地址字段的部分(例如,位)可以从符号扩展的规范地址部分或者虚拟地址的任何未使用部分中被任意地选择。在内部,响应于原始主机命令,交换机利用这些标记的地址部分或者位来路由传送主机发起的读/写事务,并且在完成时将这些事务路由传送回主机。

主机命令的虚拟地址字段可以包括超出指定虚拟功能地址所需的附加的容量(例如,字节、位)。通常可以不使用该附加容量。例如,主机命令的虚拟地址字段可以包括未被主机或存储介质交换机检查或使用的信息位。虚拟地址字段的未使用的地址部分可以替换地包括冗余的信息位,例如,包含在主机命令内的虚拟地址的符号扩展的规范部分,其如果被省略或不正确,可以不影响主机或存储介质交换机。交换机可以要求虚拟地址字段的未使用部分包括虚拟功能标识符的指示。

主机或交换机可以将虚拟功能标识符添加到每个主机命令。在将主机命令输出到存储介质交换机的主机接口之前,主机可以将包括命令嵌入式物理区域页面(PRP)列表的虚拟功能标识符标记或编码到每个主机命令的虚拟地址中。备选地,在交换机的主机接口处接收到主机命令之后,存储介质交换机可以用包括命令PRP列表的虚拟功能标识符来标记或编码每个主机命令的虚拟地址。

在主机命令的执行期间,交换机确定被编码在主机命令中的虚拟功能标识符,并且使用与所确定的虚拟功能标识符相对应的虚拟功能向或者从主机存储器发起读或者写事务。当响应主机命令时,交换机可以移除被标记到主机命令的虚拟地址的虚拟功能标识符。在确认主机命令已经被完成之前,交换机可以将主机命令的虚拟地址的正常未使用部分(例如,虚拟地址的符号扩展规范部分)恢复到预定义状态。例如,交换机可以通过从包含在主机命令内的虚拟地址中移除虚拟功能标识符并且通过包括原始地址而不包括功能标识符(例如,用于主机存储器访问)来响应主机命令,来确定与主机命令相关联的“未标记的”原始地址。

当启用已经固有SR-IOV能力的存储设备上的虚拟功能时,存储介质交换机可以选择将前端虚拟功能绑定到后端存储介质设备的虚拟功能。例如,交换机可以通过匹配连接到交换机的存储介质接口的存储介质的驱动器请求标识符,来自动地将虚拟功能映射到对应的存储介质设备,并且还映射到主机命令中指定的虚拟功能。以这种方式,虚拟功能标识符不需要在主机命令中被标记或编码以从/向主机存储器发起读/写事务。相反,虚拟功能可以用主机来被自动地映射,该主机使用内置驱动器请求标识符来指定虚拟功能。

在自动地将虚拟功能映射到存储介质以启用单根输入输出虚拟化的各个方面中,存储介质交换机管理对在交换机的存储介质接口后面执行的虚拟功能的访问。交换机还包括主机接口,交换机从该主机接口与主机交换包括主机命令的信息。交换机确定与主机命令相关联的虚拟功能标识符,并基于虚拟功能标识符自动选择存储介质的虚拟功能。备选地,交换机基于主机命令中指定的虚拟功能来选择存储介质的虚拟功能,例如,通过将虚拟功能与连接到交换机的存储介质接口的存储介质的驱动器请求标识符相匹配。

交换机使用虚拟功能来在存储介质接口上执行主机命令,并且在执行之后,经由主机接口响应主机命令中的每条主机命令。通过以这种方式自动地映射虚拟功能,交换机启用任何存储介质上的单根输入输出虚拟化,包括不具有针对虚拟功能的本机支持的存储介质。

以下讨论描述了操作环境、在操作环境中可以被采用的技术,以及在其中操作环境的组件可以被体现的片上系统(SoC)。在本公开的上下文中,仅通过示例参考操作环境。

操作环境

图1图示出具有主机设备102(简称为单个“主机102”)的示例操作环境100,其中虚拟接口上的虚拟功能支持或者QoS可以根据一个或多个方面被实现。操作环境100的主机设备102能够存储或访问各种形式的数据、文件、对象或信息。主机设备102的示例可以包括计算集群104(例如,云106的计算集群)、数据中心110的服务器108或者服务器硬件、或者服务器112(例如,独立的),主机设备102的示例的任何一个示例可以被配置为存储网络、存储服务或者云系统的一部分。主机设备102(未示出)的其他示例可以包括平板计算机、机顶盒、数据存储设备、可穿戴智能设备、电视、内容流设备、高清多媒体接口(HDMI)媒体棒、智能家电、家庭自动化控制器、智能恒温器、物联网(IoT)设备、移动互联网设备(MID)、网络附加存储(NAS)驱动器、聚合存储系统、服务器刀片、游戏控制台、汽车娱乐设备、汽车计算系统、汽车控制模块(例如,引擎或动力控制模块)等。通常,主机设备102可以出于任何合适的目的通信或存储数据,诸如以启用特定类型的设备的功能性、提供用户界面、启用网络访问、实现游戏应用、回放媒体、提供导航、编辑内容、提供数据存储等。

主机设备102包括处理器114和计算机可读存储介质116。处理器114可以被实现为任何合适类型或数目的处理器(例如,x86或者ARM),可以为单核或多核,以用于执行操作系统的指令或命令或者主机设备102的其他程序。计算机可读介质116(CRM 116)包括系统存储器118,主机的虚拟机120可以从该系统存储器118被执行或实现。主机设备102的系统存储器118可以包括易失性存储器或非易失性存储器的任何合适类型或组合。例如,主机设备102的易失性存储器可以包括各种类型的随机存取存储器(RAM)、动态RAM(DRAM)、静态RAM(SRAM)等。非易失性存储器可以包括只读存储器(ROM)、电可擦除可编程ROM(EEPROM)或闪存(例如,NOR闪存或NAND闪存)。这些存储器单独地或组合地可以存储与主机设备102的应用、租户、工作负载、启动器、虚拟机和/或操作系统相关联的数据。

在该示例中,主机设备102包括存储介质交换机122和存储介质124,存储介质124可以通过存储介质交换机122被访问。尽管示出为与主机设备102组合,但是存储介质交换机122和/或者存储介质124可以与主机设备102分开或远程地被实现。主机设备102的存储介质124可以被配置为任何合适类型的数据存储介质,诸如存储设备、存储驱动器、存储阵列、存储卷等。尽管参考主机设备102被描述,但是存储介质124也可以分离地被实现为独立的设备,或者被实现为更大的存储集合的一部分,诸如数据中心、服务器群或虚拟化存储系统(例如,用于基于云的存储或服务)。存储介质124的示例包括硬盘驱动器(HDD,未示出)、光盘驱动器(未示出)、固态驱动器126(SSD 126)或m+1SSD的阵列126-0到126-m。

SSD 126中的每个SSD包括非易失性存储器设备或由非易失性存储器设备形成,在非易失性存储器设备上主机设备102或其他源的数据或信息被存储。非易失性存储器设备可以用任何类型或组合的固态存储器介质来实现,诸如闪存、NAND闪存、NAND存储器、RAM、DRAM(例如,用于高速缓存)、SRAM等。在一些情况下,被存储到非易失性存储器设备的数据可以被组织成数据(例如,内容)的文件或者被存储到SSD 126并且由主机设备102或者主机设备的租户、工作负载或者启动器访问的数据对象。文件的类型、大小或格式可以根据与文件相关联的相应的来源、用途或应用而变化。例如,被存储到SSD 126的文件可以包括音频文件、视频文件、文本文件、图像文件、多媒体文件、电子表格等。

在该示例中,主机设备102的存储介质交换机122(交换机122)能够支持虚拟化,在虚拟接口上提供QoS,以及实现与存储介质124相关联的虚拟功能。在一些方面,存储介质交换机122包括虚拟功能(VF)地址引擎128、VF映射130、服务质量(QoS)管理器132和QoS参数134,其中的每一项可以被实现为执行用于支持虚拟化、提供QoS以及启用与存储介质124相关联的虚拟功能的相应的操作或功能。这些实体的实现和使用各不相同,并且贯穿本公开被描述。

通常,VF地址引擎128可以启用虚拟功能支持,用于不固有SR-IOV能力的存储介质以及用于已经支持虚拟功能的存储介质。VF地址引擎128处理主机命令以自动将主机命令映射到适当的虚拟功能。在一些示例中,VF地址引擎128可以从主机命令提取虚拟功能标识符。在存储介质124固有地支持SR-IOV的其他示例中,VF地址引擎128可以通过从VF映射130内查找与存储介质124相关联的路由标识符来确定虚拟功能标识符。使用VF映射130,VF地址引擎128可以确定与虚拟功能标识符相关联的虚拟功能。利用虚拟功能标识符,VF地址引擎128可以选择存储介质124的虚拟功能以用于执行主机命令。响应于指示存储介质124执行用于实现主机命令的事务,VF地址引擎128可以经由主机接口来响应主机命令。

在各种方面,QoS管理器132可以确保主机命令的执行被管理到与特定应用、客户端、主机、主机的虚拟机、主机的租户等相关联的服务质量等级。例如,QoS管理器132可以确定针对在主机设备102上执行的虚拟机的QoS,并且确保I/O命令和主机设备102和存储介质124之间的数据访问事务达到所确定的QoS等级。可替换地或附加地,QoS管理器132可以测量和保留QoS管理器132在响应主机命令时使用的QoS参数134的值。

主机设备102还可以包括I/O端口136、图形处理单元138(GPU)和数据接口140。通常,I/O端口136允许主机设备102与其他设备、***设备或者用户交互。例如,I/O端口136可以包括通用串行总线、人机接口设备、音频输入、音频输出等或者与其耦合。GPU 138处理并呈现针对主机设备102的图形相关的数据,诸如操作系统的用户界面元素、应用等。在一些情况下,GPU 138访问本地存储器的一部分以呈现图形,或者包括用于呈现主机设备102的图形(例如,视频RAM)的专用存储器。

主机设备102的数据接口140提供与一个或多个网络以及被连接到那些网络的其他设备的连接性。数据接口140可以包括有线接口,诸如用于在本地网络、内联网或互联网上通信的以太网或光纤接口。可替换地或附加地,数据接口140可以包括便于在诸如无线LAN、广域无线网络(例如,蜂窝网络)和/或无线个人区域网络(WPAN)的无线网络上通信的无线接口。根据本公开的一个或多个方面,通过I/O端口136或数据接口140通信的数据中的任何数据可以被写入主机设备102的存储介质124或中从主机设备102的存储介质124被读取。

数据接口140可以支持存储介质交换机122的主机接口和存储介质交换机122的存储介质接口。例如,存储介质交换机122可以接收主机命令并且响应来自主机接口的主机命令。存储介质交换机122可以在存储介质接口上指示事务以使得存储介质124执行主机命令。

图2图示了图1中所示的存储介质交换机122和SSD 126的示例配置。在该示例中,存储介质交换机122被可操作地耦合在主机202与SSD 126-0至126-n(统称为“SSD 126”)之间,从其中存储虚拟化区域、存储分区或存储段(例如,隔离的存储区域)被提供。存储介质交换机可以通过一个或多个相应的PCIe接口(未示出)被耦合到主机202和/或SSD,该PCIe接口可以遵循NVMe协议(例如,NVMe rev 1.3)进行通信。在该示例中,主机202(例如,主机设备102)包括在主机的计算资源204上执行的多个虚拟机120。通常,主机202的计算资源204可以包括主机202的处理资源和系统存储器的组合,其被用来实现访问与主机202相关联的存储装置的应用、虚拟机、租户或启动器。

根据一个或多个方面,存储介质交换机122可以启用存储介质上的虚拟功能和/或在虚拟功能上提供QoS以用于固态存储。在该示例中,存储介质交换机122或其控制器(未示出)启用通过VF 206-0至206-w(统称为“虚拟功能206”)对与交换机相关联的存储介质的访问。通常,虚拟功能206主要关注于主机202的虚拟机(VM)120和由SSD 126提供的存储装置之间的数据移动,并且每个虚拟功能206与物理功能208相关联。尽管物理功能208的一个实例被示出,但是存储介质交换机122可以用任何数目和/或组合的物理和虚拟功能来实现。图2的物理功能208可以等同于典型PCIe物理功能设备的PCI一个或多个功能。在一些情况下,物理功能208负责与策略决策相关的仲裁,诸如在联网的情况下由VM 120使用的链路速度或网络地址,以及用于处理存储介质交换机122与VM 120和SSD 126之间的各种输入和输出事务。

通常,VM 120或主机202的租户或启动器访问被存储在SSD 126中的数据。在一些实现中,存储介质交换机122向主机202或主机的VM 120将聚合的存储介质(诸如SSD 126)呈现为虚拟磁盘或存储卷。在NVMe的上下文中,该虚拟磁盘可以被分段或者被分区为通过命名空间访问的不同区域。换言之,对虚拟磁盘或SSD 126的数据访问可以通过与虚拟磁盘或者存储介质的段或者条带相对应的一个或多个命名空间而被消费。如图2所示,SSD 126中的每个SSD126可以用SSD控制器210-0到210-n来实现,NAND通道212-1到212-4通过SSD控制器210-0到210-n可访问。NAND的每个通道212(例如,通道A或者NAND通道212)包括多个NAND设备,其可以被实现为SSD 126的分离的NAND设备或者NAND管芯,该NAND设备或者NAND管芯通过相应的NAND通道可访问或可寻址。

在一些方面,存储介质交换机122管理对虚拟功能206的访问。例如,存储介质交换机122可以与主机202交换包括主机命令的信息,诸如便于在SSDS 126和主机存储器之间的数据访问。在一些情况下,存储介质交换机122确定与主机命令相关联的虚拟功能标识符,并且基于虚拟功能标识符来自动地选择虚拟功能206。备选地,交换机基于主机命令中指定的虚拟功能206来选择虚拟功能206,例如,通过匹配虚拟功能206与SSDS 126的驱动器请求标识符。

存储介质交换机122或者交换机122的处理器(未示出)也可以执行虚拟功能206的主机命令,并且在执行之后,响应主机命令中的每条主机命令。通过以这种方式自动地映射虚拟功能206,存储介质交换机122启用针对SSD 126中的任何SSD126的SR-IOV或者SSD126中的任何SSD126上的SR-IOV,包括缺少针对虚拟功能或者基于SR-IOV的特征的本机支持的SSD 126中的任何SSD126。

图3图示了通常在300处与主机和多个固态驱动器相关联的存储介质交换机122(交换机122)的示例配置,其根据在针对固态存储装置的虚拟接口上提供QoS的一个或多个方面来实现。在该示例中,交换机122可操作地被耦合在主机202(未示出)和SSD 126的阵列之间,每个SSD126被分段为八个水平条带命名空间(NS0到NS31)。SSD 126中的每个SSD可以经由NVMe接口被连接到交换机122,诸如在x4、x8或者x16PCIe接口上被实现的NVMe接口。可替换地或附加地,主机202可以由NVMe接口被连接到交换机,以启用通过交换机122到SSD126者其他存储装置的数据事务。

通常,在该示例中,NVMe规范或协议支持存储介质或者SSD的基于命名空间的访问。在提供QoS的各方面,交换机122的虚拟功能被映射到针对虚拟磁盘的段或者分区的命名空间。通过这样做,QoS可以使用命名空间来被启用和管理,使得VM或者租户可以订阅用于存储访问的服务等级,其通过基于命名空间的存储介质访问而被管理。换言之,客户端或者客户订阅预定义带宽量并且被连接到主机上或者通过主机的虚拟功能。被映射到交换机122内的命名空间的该虚拟功能基于被分配给命名空间的阈值或配额来被分派带宽或者对存储介质的访问,诸如根据用于在特定服务等级的数据访问的订阅。在交换机122的NVMe子系统内,多个隔离域可以通过虚拟功能的使用被支持,该虚拟功能通过PCIe上的SR-IOV被提供。通过这样做,主机上的管理员可以将租户***到不同的地址字段中,诸如VM,并且提供对存储装置的隔离的和不同的访问,并且该存储装置的访问和消费通过命名空间的形式被执行。

返回到图3,主机202可以被实现为多租户主机,其具有可以访问相应的NVMe命令队列的任何合适数目的虚拟机或租户。在该示例中,主机202包括32个VM(未示出),每个VM具有交换机122的NVMe队列302-0到302-31的集合,该NVMe队列被映射到相应的虚拟功能304(VF0到VF31,被分组为VF 304-0到VF 304-31)。这些NVMe队列302-0到302-31可以在主机存储器中被实现,并且由主机配置为任何合适数目的管理队列(管理队列)或I/O命令队列。这里,每个VM被分派四个队列,其中一个队列被配置为管理队列并且三个队列被配置为I/O命令队列。

在一些方面,交换机122的硬件层的入站和出站队列引擎可以支持多达128个NVMe主机提交队列(SQ)和主机完成(CQ)队列对。这些队列中的每个队列可以被单独映射到由存储介质交换机122提供的任何PCIe物理功能或虚拟功能。实现VM的主机设备或者服务器可以将每个主机VM与交换机122内的相应的VF 304相关联。VM可以将与VM相关联的NVMe队列映射到交换机122内的相应的VF 304和/或进一步将NVMe队列绑定到由交换机122提供的SQ或者CQ队列中的任何SQ或者CQ队列。换言之,在主机上运行的VM管理器(例如,服务器)可以将每个主机VM与相应的VF相关联。此后,VM本身可以将其空间中的NVMe队列映射到该VF,从而有效地使得NVMe队列被绑定到由交换机122提供的SQ或者CQ中的任何SQ或者CQ。

在优先级方面,VM内的提交队列可以通过基于NVMe的仲裁策略(固定或加权循环)而被分配相等、更高或更低的优先级,该仲裁策略是基于每个队列可用或可配置的。当一个或多个VM使用多个提交队列中的不同提交队列来优先化与特定应用或工作负载相关联的某些命令时,这可能是有用的。该配置中针对VF操作的错误和例外也是基于每个VF而被隔离和检测。因此,源自交换机122的一个VF的错误不会干扰交换机的其他VF的I/O命令流。可替换地或附加地,针对特定VF的状态的选择性重置被启用,诸如功能等级重置等。

参考命令流,在用于交换机122的本示例实现中,每个VF 304映射四个通用命令递送(UCD)入站队列。备选地,交换机122的架构具有为每个VF分配更多或者更少数目的队列的灵活性,只要VF的总的队列分发不超过交换机122所支持的队列总的数目(例如,128个队列)。通常,主机VM将向相应的提交队列(SQ)提交管理命令或者I/O命令,并且使得用于该队列的对应的UCD门铃响铃。响应于门铃,通用命令递送块(UCD块306)可以基于交换机122的预配置的仲裁方案取回(fetch)SQ单元。例如,如果所有的I/O SQ被设立为相等的优先级,则UCD块306将以循环方式服务这些入站队列。从UCD块306或者UCD入站队列,交换机122向命令分类器处理器(CCP或者命令处理器308)提交已取回的元素(例如,管理命令或者I/O命令)。已取回的元素可以使用命令处理子系统312(子系统312)的I/O队列块310的目的地空闲列表(DFL)来提交,命令处理子系统312包括命令处理器308或者与命令处理器308相关联。通常,UCD块306将整理并且向子系统312的对应的队列或者块分发I/O命令314和管理命令316,在本示例中,子系统312的块也包括管理队列块318和物理区域页面(PRP)列表工作队列块320。

通过示例,考虑图4,其中命令处理子系统312的示例配置整体在400处示出。在此,UCD块306可以使用被分配给正在被取回的队列的目的地空闲列表(FDL)向命令处理器308提交命令。基于被分配给队列的仲裁优先级,DFL生成到命令处理器308的入站完成队列单元(IB_CQ)。通常,命令处理器308或者QoS管理器132为新的元素监测入站完成队列,并且一旦接收到一个入站完成队列,就启动命令处理操作。

在一些方面,PRP列表工作队列启用通过交换机122的VF 304的访问。例如,VF可以在高位地址内使用包括虚拟功能(VF)标识符的PRP数据-指针,以用于在交换机122内适当路由传送,VF标识符由处理器或者VF地址引擎***。相对于命令路由传送,不包括或者不依赖物理区域页面(PRP)列表取回的I/O命令(例如,小于8Kb大小的I/O命令)将由命令处理器308解决,以便在I/O命令中嵌入的PRP数据指针可以在向SSD设备队列提交之前被处理。可替换地,通过PRP列表工作队列,包括或者依赖于PRP列表取回的I/O命令(例如,小于8Kb大小的I/O命令)被路由传送至管理和执行处理器322(MEP或者管理处理器322),以便PRP列表可以在向SSD设备队列提交命令之前被处理。

在提供QoS的一些方面,命令处理器308的固件或者QoS管理器132追踪在预定义的持续时间上每个命名空间所使用的带宽。在一些情况下,QoS管理器132在命令处理器308处理命令时在每个命名空间每个I/O添加逻辑块地址(LBA)计数。一旦LBA计数超过用于特定命名空间的预定义的阈值或者配额,用于该命名空间的任何附加的命令将在用于每个命名空间的相应的分级队列(NSm_STAGE_Q)中被延迟或者阻止。

当被延迟至少一段时间后,被存储在分级队列中的命令将被重新评估,以用于向SSD设备提交队列(DEVn_SQ)的提交。在一些情况下,一旦新的定时窗口启动用于服务命名空间队列或者取回入站命令元素,命令就被重新评估。可替换地,重新评估可以被发起以响应于到命令处理器的入站完成队列(IBn_CQ)或者到达空状态的设备提交队列(DEVn_SQ)。在一些情况下,前者是在当前定时窗口期间没有需要评估的由UCD块306取回的新的元素的指示。

为了发布或者提交进入存储设备的提交队列的I/O命令或者元素,命令处理器308应以如下顺序评估各种工作队列:对应于设备提交队列(DEVn_SQ)的命名空间分级队列(NSm_STAGE_Q),随后是管理处理器322的完成队列(MEP_CQ),并且最后是I/O队列块的入站完成队列(IBn_CQ)或者DFL队列。队列优先级的该顺序可以根据需要由命令处理器308重新配置,或者为了支持通过交换机122提供QoS的替换实现。

图5图示了在500处的根据一个或多个方面的对实现QoS有用的QoS参数134的示例配置。在该示例中,QoS参数134参考命名空间502-0到502-31被组织,命名空间可以对应于用于在图3中引用的SSD126的条带化的命名空间。通常,QoS参数134包括对定义或者量化被提供给命名空间的访问带宽有用的值,诸如数据量和持续时间。在该示例中,QoS参数134包括LBA计数504、时间戳506、和主机提交队列消费索引508。可替换地或者附加地,QoS参数可以包括或者引用I/O命令的物理区域页面(PRP)列表(例如,对于多个LBA或者IOP),I/O命令的分散聚集列表(例如,对于多个LBA或者IOP),与I/O命令相关联的多个I/O操作,或者I/O命令的逻辑块地址(LBA)计数。

用于在虚拟接口上提供QoS的技术

以下讨论描述用于在针对固态存储装置的虚拟接口上提供QoS的技术,该技术可以向主机、租户或者在主机上执行的VM提供存储隔离,带宽控制,和分区功能性。这些技术可以使用本文描述的任何环境和实体来实现,诸如VF地址引擎128、VF映射130、QoS管理器132或者QoS参数134。这些技术包括在图6、图7a和图7b、和/或图9-图11中图示的方法,每个图被示出为由一个或多个实体执行的一组操作。

这些方法并不必然限制于在相关联的图中所示出的操作的顺序。相反,这些操作中的任何操作可以被重复、跳过、取代或者重新排序,以实现本文描述的各种方面。进一步,这些方法可以全部或者部分地彼此结合使用,不论由相同的实体、分离的实体或者其组合来执行。例如,在无主机交互或者参与的情况下明显提供损耗程度、负载均衡或者数据迁移的同时,这些方法可以被组合以显露存储介质的虚拟化的隔离区域。在以下讨论的部分中,通过示例,将参考图1的操作环境100和图2、图3、图4和/或图5的实体。该参考将不作为将所描述的方面限制于操作环境100、实体或者配置,而是作为各种示例的一个示例的图示。可替换地或者附加地,这些方法的操作也可以由或者用参考图12的片上系统和/或图13的存储介质交换机控制器来实现。

图6描绘了用于自动地将主机命令映射至存储介质上的虚拟功能的示例方法600。方法600的操作可以由或者用存储介质交换机122来实现,存储介质交换机122包括VF地址引擎128并且使用VF映射130。

在602处,存储介质交换机122经由存储介质交换机122的主机接口接收来自主机的主机命令。例如,存储介质交换机122的VF地址引擎128可以接收从主机软件应用获得的新的主机命令的指示,主机软件应用在虚拟机VM-0处执行。

在604处,响应于接收到主机命令,存储介质交换机122确定与主机命令相关联的虚拟功能标识符。例如,主机命令的虚拟地址字段的未使用的部分可以用包含在虚拟地址字段内的地址的符号扩展的规范部分来填充。相对于将地址字段的整体未使用部分用作地址的符号扩展的规范部分,存储介质交换机122可以从虚拟地址字段的未使用的部分推断虚拟功能标识符,并且使用虚拟功能标识符来路由传送主机命令,该主机命令将满足合适的虚拟功能。

作为一个示例,主机命令可以包括64位虚拟地址字段,例如,位[63:0],即使只有该虚拟地址字段的一部分(例如,位[48:0])可以被用作主机命令的虚拟地址。由于一些虚拟地址字段可能不被存储介质交换机122用于寻址主机命令,因此虚拟地址字段的未使用的部分,例如,位[63:49],可以包括与主机命令相关联的其他信息,诸如虚拟功能标识符,存储介质交换机122可以使用这些其他信息来执行主机命令。

虚拟地址字段的未使用部分中的一些可以包括虚拟功能标识符。存储介质交换机122可以从包含在主机命令内的虚拟地址字段的第一未使用部分提取与主机命令相关联的虚拟功能标识符。例如,位[62:58]可以包括虚拟功能标识符,存储介质交换机122使用该虚拟功能标识符来标识与该命令相关联的特定虚拟功能。

在606处,存储介质交换机122基于虚拟功能标识符选择存储介质124的虚拟功能,以用于执行主机命令。例如,VF地址引擎128可以进一步隔离主机命令的地址字段的标记部分,以确定主机标识符。即,虚拟地址字段的未使用部分中的一些可以包括主机标识符,并且存储介质交换机122可以从包含在主机命令内的虚拟地址字段的第二未使用部分提取与主机命令相关联的主机标识符。例如,位[63]可以包括主机标识符,存储介质交换机122使用主机标识符来标识与命令相关联的特定主机。

VF映射130维持在虚拟功能标识符和相应的虚拟功能和相应的主机之间的关联或者映射。例如,VF映射130可以维持到主机和虚拟功能的、在主机标识符和虚拟功能标识符之间的映射。在从包含在主机命令内的虚拟地址的未使用部分、或者从包含在主机命令内的虚拟地址的符号扩展的规范部分已经确定虚拟功能标识符和主机标识符的情况下,使用VF映射130,VF地址引擎128使用虚拟功能标识符和主机标识符来查找对应的虚拟功能。

VF地址引擎128可以从VF映射130查找特定主机标识符(例如,位[63]),以确定哪个主机与特定的主机标识符相关联,并且因此,确定哪个主机是主机命令的发起者。VF地址引擎128可以搜索VF映射130以确定用于主机命令的虚拟功能,该虚拟功能匹配特定的虚拟功能标识符(例如,位[62:58])。

在608处,存储介质交换机122使用被分配给存储介质124的虚拟功能来执行主机命令。例如,使用主机标识符和虚拟功能标识符,VF地址引擎128生成内部接口选择值,以将主机命令路由传送到存储介质交换机1212的存储介质接口处的预期的虚拟功能。存储介质交换机122可以使用接口选择值来最终路由传送并且使得存储介质124执行读/写事务以满足主机命令。

在610处,响应于执行用于满足主机命令的事务,使用被分配给存储介质124的虚拟功能,存储介质交换机122经由主机接口来响应主机命令。例如,响应于指示存储介质124执行事务以满足主机命令,存储介质交换机122通过确定用于主机命令的原始地址来准备对主机命令的响应。VF地址引擎128可以只使用内部路由地址的一部分(例如,没有接口选择值)来确定用于主机命令的原始地址。VF地址引擎128可以从路由地址移除包含接口选择值的位,并且使用剩余的位作为原始地址。例如,原始地址可以包括位[63:0],其中位[48:0]对应于原始的虚拟地址的位[48:0],并且位[63:49]对应于主机优选的预定义值或者原始虚拟地址的规范的符号扩展的值。

在没有任何虚拟功能标记的情况下,存储介质交换机122使用原始地址使得主机命令退出主机接口。换言之,以上操作示出了存储介质交换机122可以确定与主机命令相关联的原始地址,以响应于主机。存储介质交换机122通过移除标记到包含在主机命令内的虚拟地址的虚拟功能标识符,用主机优选的预定义值、或者虚拟地址的剩余部分的符号扩展的规范部分替换虚拟功能标识符,来确定原始地址。

图7A描绘了用于基于虚拟功能标识符来选择存储介质的虚拟功能以用于执行主机命令的示例方法700A,该虚拟功能标识符由主机命令在其中被接收的相关联的提交队列确定。方法700A是当从方法600执行步骤606以用于将主机命令自动映射至存储介质的虚拟功能时,由存储介质交换机122执行的操作的示例。方法700A的操作可以由或者用存储介质交换机122来执行,存储介质交换机122包括VF地址引擎128并且使用VF映射130。

回想在606处,存储介质交换机122基于虚拟功能标识符选择存储介质124的虚拟功能,以用于执行主机命令。例如,VF地址引擎128可以隔离主机命令的地址字段的标记部分,以确定主机标识符和虚拟功能标识符。

在702处,存储介质交换机122基于与主机命令相关联的虚拟功能标识符标识主机。VF映射130维持在虚拟功能标识符和相应的虚拟功能和相应的主机之间的关联或者映射。例如,VF映射130可以维持到主机和虚拟功能的、在主机标识符和虚拟功能标识符之间的映射。VF地址引擎128可以从包含在主机命令内的虚拟地址的未使用部分确定虚拟功能标识符和主机标识符。VF地址引擎128可以从包含在主机命令内的虚拟地址的符号扩展的规范部分确定虚拟功能标识符和主机标识符。

例如,VF地址引擎128可以从VF映射130查找特定主机标识符(例如,主机命令的地址字段的位[63]),以确定在虚拟机VM-0处执行的软件应用是与特定主机标识符相关联的主机,并且因此,该软件应用是主机命令的发起者。VF地址引擎128可以搜索VF映射130以确定用于主机命令的虚拟功能,该虚拟功能匹配特定的虚拟功能标识符(例如,主机命令的地址字段的位[62:58])。

在704处,存储介质交换机122基于主机和虚拟功能标识符选择被分配给存储介质交换机122的存储介质接口的虚拟功能,以用于执行主机命令。例如,通过将主机标识符和虚拟功能标识符输入到VF映射130中,VF地址引擎128可以获得预定义的内部接口路由值,以用于接合适当的虚拟功能。

在706处,存储介质交换机122通过修改包含在主机命令内的数据-位置地址来确定路由地址。例如,VF地址引擎128可以修改包含在主机命令内的虚拟地址,以将被分配给虚拟功能的接口选择值附加到包含在主机命令内的虚拟地址。VF地址引擎128可以将接口路由值附加到包含在主机命令的虚拟地址字段内的虚拟地址的前面,以形成路由地址(也称为“修改后的虚拟地址”)。路由地址可以与从主机命令的地址字段提取的原始虚拟地址大小不同。例如,路由地址可以是72位值,其中位[71:64]是路由值,并且位[63:0]是包含在主机命令的地址字段内的原始虚拟地址。

在一些情况下,VF地址引擎128用预定义值或者符号扩展的规范格式来替换路由地址的任何标记的部分或者已编码的部分。例如,路由地址可以是72位值,其中位[71:64]是路由值,并且位[63:0]是包含在主机命令的地址字段内的虚拟地址,没有任何未使用的位的标记或者编码指定虚拟功能或者主机标识符。VF地址引擎128可以将路由值与原始包含于虚拟地址中的没有标记或者编码的虚拟地址的一部分交换,以得到用于执行与主机命令相关联的读/写事务的路由地址。例如,路由地址可以是72位值,其中[71:63]是没有任何标记的包含在主机命令的地址字段中的虚拟地址的前八位,接下来的八位[62:55]是接口选择值,并且位[54:0]是没有任何标记的包含在主机命令的地址字段中的虚拟地址的剩余部分。存储介质交换机122使用内部路由地址来命令存储介质124执行用于满足主机命令的事务。

在710处,存储介质交换机122可以在存储器中维持路由地址,以在执行用于满足主机命令的事务之后进行后续取回和使用。

从操作710,存储介质交换机122可以前进至操作608,以基于路由地址执行主机命令,以有效使用所选择的虚拟功能。例如,存储介质交换机可以在映射至上面已确定的路由地址的存储介质124的区域处执行操作或者事务。

图7B描绘了用于响应主机命令的示例方法700B。方法700B是当从方法600执行步骤610以用于将主机命令自动地映射至存储介质上的虚拟功能时,由存储介质交换机122执行的操作的示例。方法700B的操作可以由或者用存储介质交换机122来执行,存储介质交换机122包括VF地址引擎128并且使用VF映射130。响应于指示存储介质124执行满足主机命令的事务,存储介质交换机122通过确定用于主机命令的原始地址来准备对主机命令的响应。在712处,存储介质交换机122从存储器中维持的路由地址移除接口选择值。例如,VF地址引擎128可以只使用72位内部路由地址的一部分(例如,没有接口选择值)作为用于对主机命令的响应的原始地址。VF地址引擎128可以从存储器中维持的路由地址移除包含接口选择值的位(例如,位[62:55])。

在714处,在接口选择值被移除的情况下,存储介质交换机122连接路由地址的剩余部分以确定原始地址。例如,存储介质交换机122可以使用与路由地址的第二剩余部分(例如,位[54:0])连接的路由地址的第一剩余部分(例如,位[71:63])来生成64位的原始地址。通过从路由地址移除接口选择值(例如,位[62:55]),原始地址(例如,64位)地址维持位,其中位[63:56]对应于路由地址的位[71:63],并且位[55:0]对应于路由地址的位[54:0]。

在716处,存储介质交换机122用原始地址输出主机命令,并且没有任何虚拟功能标记。存储介质交换机122可以经由主机接口提供原始地址,并且提供至主机作为对应于主机命令的部分。

通过执行方法700B,存储介质交换机122可以确定与主机命令相关联的原始地址,以用于在响应于主机命令时使用。存储介质交换机122通过从包含在主机命令内的虚拟地址移除任何虚拟功能标记,并且用主机优选的预定义值、或者虚拟地址的剩余部分的符号扩展的规范部分替换虚拟功能标记,来确定原始地址。

图8是图示当主机命令被映射至存储介质上的虚拟功能时的主机命令的地址字段的操纵的概念示意图。图8包括示例地址字段800A至800E。地址字段800A至800E的每个与主机命令802相关联。

图8示出了存储介质交换机122可以接收包括地址字段800A的主机命令802。地址字段800A包括未使用的地址部分804A(例如,位[63:49])和已使用的地址部分806(例如,位[48:0])。

存储介质交换机122可以修改主机命令802来创建地址字段800B,通过将接口选择值808附加至地址字段800A的前面来修改主机命令802。地址字段800B包括接口选择值808(例如,位[71:64])、未使用的地址部分804A(例如,位[63:49])和已使用的地址部分806(例如,位[48:0])。由于接口选择值808的添加,所以地址字段800B被示出具有相较于地址字段800A(例如,64位)更大的大小(例如,72位)。

存储介质交换机122可以修改地址字段800B的未使用的地址部分804A来移除任何编码或者标记,以创建地址字段800C。例如,地址字段800C对应于地址字段800B,除了未使用的地址部分804A包括与未使用的地址部分804B不同的信息。例如,存储介质交换机122可以移除任何编码或者标记,并且用预定义的、主机指定的值替换编码或者标记,或者可以符号扩展与已使用的地址部分806相关联的规范值(例如,通过复制位[48]的值到位[63:49]中的每个)。

存储介质交换机122可以通过将接口选择值808的位置与未使用的地址部分804B的位置交换来生成地址字段800D,地址字段800D被称为路由地址800D。例如,地址字段800D对应于地址字段800C,除了未使用的地址部分804B是在位[71:64]处,并且接口选择值808是在位[63:49]处。

存储介质交换机122可以使用路由地址800D来指示存储介质124执行用于满足主机命令的事务。一旦事务完成,存储介质交换机122就可以通过输出包括包含于地址字段800E中的原始地址的响应来响应主机命令。

存储介质交换机122可以通过从地址字段800D中移除接口选择值808,并且将未标记的和未使用的地址部分804B与未使用的地址部分806连接以形成新的原始地址,来生成地址字段800E。地址字段800E包括64位,其中位[63:49]对应于未标记的、未使用的地址部分804B,并且位[48:0]对应于地址部分806。

在图6-图8的示例中,存储介质124可以是SR-IOV不兼容的。换言之,如上所述,存储介质124可以依赖于存储介质交换机122来映射存储介质124上的虚拟功能。然而,在一些示例中,存储介质124可以自然地支持SR-IOV,并且可以已被配置为支持虚拟功能。在存储介质124已支持SR-IOV的情况下,存储介质交换机122可以依赖于本机的SR-IOV支持来自动地映射至虚拟功能。

例如,存储介质交换机122可以确定与主机命令相关联的路由标识符(RID)。RID可以是总线数目,设备数目或者被分配给存储介质124的功能数目值。VF地址引擎128可以在VF映射130处查找RID,以确定主机标识符和相关联的虚拟功能标识符。

然后,存储介质交换机122可以执行步骤606至步骤610,以执行任何必要的读或者写事务来执行主机命令,并且然后响应于主机命令。例如,利用主机标识符和虚拟功能标识符,存储介质交换机122可以从VF映射130确定接口选择值。VF地址引擎128可以将接口选择值附加至从未编码的或者未标记的主机命令得到的地址,以形成路由地址。VF地址引擎128可以将接口选择位(例如,位[71:64])与地址的一部分(例如,位[63:56])交换,以生成路由地址,存储介质交换机122使用路由地址来执行主机命令事务。在主机命令事务结束时,存储介质交换机122通过输出原始地址来响应主机命令,原始地址是通过从路由地址中省略接口选择位(例如,位[63:56])以生成与主机命令一起进入的原始的(例如,64位)地址来确定的。

图9描绘了用于提供针对固态存储装置的QoS的示例方法900,该固态存储通过命名空间被访问。方法900的操作可以由或者用存储介质交换机122来执行,存储介质交换机122包括QoS管理器132或者使用QoS参数134。

在902处,存储介质交换机经由主机接口从主机设备接收用于数据访问的I/O命令。I/O命令包括与命名空间相关联的针对虚拟接口的标识符,通过该命名空间固态存储装置的数据是可访问的。在一些情况下,通过从主机设备接收的入站命令元素的第一队列接收I/O命令,诸如I/O命令的VM提交队列。与命名空间相关联的虚拟接口可以包括SR-IOVPCIe接口或通过SR-IOV PCIe接口提供的虚拟功能(VF)。在这样的情况下,与命名空间相关联的第一队列集合可以被映射到VF。可替换地或附加地,与由主机执行的VM相关联的第二队列集合可以被映射到VF,该VF有效地将第一队列集合绑定到第二队列集合。

在904处,QoS管理器基于I/O命令来确定I/O命令将通过命名空间访问的固态存储装置的数据量。在一些情况下,基于I/O命令的PRP列表、I/O命令的分散聚集列表、与I/O命令相关联的I/O操作的数目、或I/O命令的LBA计数中的一项来确定数据量。

在906处,QoS管理器确定I/O命令将通过命名空间访问的数据量是否超过针对在一段时间内通过命名空间的数据访问的预定义阈值。例如,QoS管理器可以将通过命名空间访问的LBA的数目与针对该命名空间的LBA配额进行比较。

可选地,在908处,QoS管理器响应于确定数据量不超过预定义阈值而将I/O命令发布到固态存储装置。可替换地,在910处,QoS管理器响应于确定数据量达到或超过预定义阈值而延迟I/O命令到固态存储装置的发布。通过这样做,交换机可以基于命名空间的访问参数为虚拟访问的固态存储装置提供QoS。

图10描绘了用于基于针对命名空间的带宽配额将I/O命令提交给固态存储设备的示例方法1000。方法1000的操作可以由或者用存储介质交换机122来执行,该存储介质交换机122包括QoS管理器132或使用QoS参数134来执行。

在1002处,存储介质交换机从被映射到存储介质交换机的虚拟功能的虚拟机的提交队列中取回I/O命令。存储介质交换机可以是基于NVMe的存储介质交换机,其启用与基于NVMe的存储介质交换机可操作地耦合的固态存储装置的虚拟功能和命名空间之间的映射。与命名空间相关联的虚拟接口可以包括SR-IOV PCIe接口或通过SR-IOV PCIe接口提供的虚拟功能(VF)。

在1004处,QoS管理器基于I/O命令来确定I/O命令将访问的数据量以及虚拟功能被映射到的存储命名空间。可以基于I/O命令的PRP列表、I/O命令的分散聚集列表、与I/O命令相关联的I/O操作的数目或I/O命令的LBA计数中的一项来确定数据量。

在1006处,QoS管理器将I/O命令将访问的数据量与针对存储命名空间的预配置带宽配额进行比较。例如,QoS管理器可以将LBA计数与在特定时间量内针对命名空间定义的LBA阈值进行比较,诸如以实现带宽计量。

可选地,在1008处,QoS管理器将I/O命令提交给对应于存储命名空间的固态存储设备的队列。可替换地,在1010处,QoS管理器将I/O命令存储到分级队列,该分级队列有效地延迟I/O命令到固态存储装置的发布。

方法1000可以从操作1010进行到操作1012、1014和/或操作1016。在1012处,QoS管理器延迟I/O命令的发布,直到新的定时窗口为止。通常,每当新的定时窗口开始时,被存储在分级队列中的任何I/O命令可以被重新评估以用于提交到存储设备中的一个存储设备的提交队列。在1014处,QoS管理器延迟I/O命令的发布,直到向QoS管理器的入站队列到达空状态为止。在一些情况下,入站队列在当前定时窗口期间达到空状态,这指示不存在由入站引擎取回的需要被评估以用于发布的新元素。在1016处,QoS管理器延迟I/O命令的发布,直到固态存储设备的队列达到空状态。方法1000可以从操作中的任何操作返回到操作1006以重新评估I/O命令以用于发布到固态存储设备。

图11描绘了用于管理虚拟机通过固态存储装置的命名空间的数据访问的示例方法1100。方法1100的操作可以由或者用主机设备102、存储介质交换机122来执行,存储介质交换机122包括QoS管理器132或使用QoS参数134。

在1102处,主机将虚拟机的NVMe队列关联到被映射到命名空间的虚拟功能,通过该命名空间可访问固态存储段。

在1104处,QoS管理器从虚拟机在其上执行的主机接收针对要被提供给虚拟机的数据访问的QoS的参数。在一些情况下,QoS管理器接收参数,通过该参数来计量或管理通过命名空间对固态存储装置的数据访问。在这样的情况下,QoS管理器可以基于参数来确定用于在持续时间内通过命名空间的数据访问的预定义阈值。

在1106处,QoS针对名称空间并且基于用于QoS的参数来定义包括数据量和持续时间的针对名称空间的带宽配额。在1108处,QoS管理器基于带宽配额,通过虚拟功能被映射到的命名空间,由虚拟机对固态存储装置进行数据访问。

片上系统

图12图示了示例性片上系统(SOC)1200,该SoC 1200可以实现在用于固态介质(诸如在NVMe接口上可访问的介质)的虚拟接口上或通过提供有SR-IOV的虚拟功能来提供QoS的各个方面。SoC 1200可以在任何合适的设备中被实现,诸如计算设备、主机设备、存储介质交换机、网络附加存储装置、智能家电、打印机、机顶盒、服务器、数据中心、固态驱动器(SSD)、存储驱动器阵列、存储器模块、汽车计算系统、服务器、服务器刀片、存储刀片、存储背板、存储介质扩展设备、存储介质卡、存储介质适配器、网络附加存储装置、支持网络的(Fabric-enabled)存储目标、基于NVMe的存储控制器或任何其它合适类型的设备(例如,本文中所描述的其它设备)。尽管参考SoC进行描述,但是图12的实体还可以被实现为其他类型的集成电路或嵌入式系统,诸如专用集成电路(ASIC)、存储控制器卡、存储背板、存储控制器、通信控制器、专用标准产品(ASSP),数字信号处理器(DSP)、可编程SoC(PSOC)、系统级封装(SiP)或现场可编程门阵列(FPGA)。

SoC 1200可以与电子电路、微处理器、存储器、输入-输出(I/O)控制逻辑、通信接口、固件和/或有助于提供主机设备或存储系统(诸如本文所述的任何设备或部件(例如,存储驱动器或存储阵列))的功能性的软件集成。SoC 1200还可以包括集成数据总线或互连结构(未示出),该集成数据总线或互连结构耦合SoC的各种组件以用于组件之间的数据通信或路由。可以通过外部端口、并行数据接口、串行数据接口、***组件接口或任何其它合适的数据接口来暴露或访问集成数据总线、互连结构或SoC 1200的其它组件。例如,SoC 1200的组件可以通过外部接口或片外数据接口访问或控制外部存储介质。

在该示例中,SoC 1200包括各种组件,诸如输入-输出(I/O)控制逻辑1202和基于硬件的处理器1204(处理器1204),诸如微处理器、处理器核、应用处理器、DSP等(例如,与主机x86处理器分离的处理资源)。SoC 1200还包括存储器1206,该存储器1206可以包括RAM、SRAM、DRAM、非易失性存储器、ROM、一次性可编程(OTP)存储器、多次可编程(MTP)存储器、闪存和/或其他合适的电子数据存储装置的任何类型和/或组合。在一些方面,处理器1204和存储在存储器1206上的代码被实现为存储介质交换机或启用交换机的存储聚合器,以提供与在用于固态存储装置的虚拟接口上提供QoS相关联的各种功能性。在本公开的上下文中,存储器1206经由非瞬态信号存储数据、代码、指令或其它信息,并且不包括载波或瞬态信号。可替换地或附加地,SoC 1200可以包括用于访问附加的或可扩展的片外存储介质(诸如磁存储器或固态存储器(例如,闪存或NAND存储器))的数据接口(未示出)。

SoC 1200还可以包括固件1208、应用、程序、软件和/或操作系统,这可以被体现为在存储器1206上维持的用于由处理器1204执行以实现SoC 1200的功能性的处理器可执行指令。SoC 1200还可以包括其它通信接口,诸如用于控制本地片上(未图示)或片外通信收发器的组件或与本地片上或片外通信收发器的组件通信的收发器接口。可替换地或附加地,收发器接口还可以包括或实现信号接口以在片外传送射频(RF)、中频(IF)或基带频率信号以便于通过被耦合到SoC 1200的收发器、物理层收发器(PHY)或介质存取控制器(MAC)的有线或无线通信。例如,SoC 1200可以包括被配置为使得能够通过有线或无线网络进行存储的收发器接口,诸如以提供具有虚拟化存储隔离特征的网络附加存储(NAS)卷。

SoC 1200还包括具有VF地址引擎128、VF映射130、QoS管理器132和QoS参数134的存储介质交换机126(交换机126)的实例,该交换机126可以分离地被实现或者与存储组件或数据接口组合。根据在用于固态存储的虚拟接口上提供QoS的各种方面,交换机126可以将命名空间的带宽计量或分派给主机的租户或发起者。可替换地或附加地,VF映射130或QoS参数134可以被存储在SoC 1200的存储器1206上或可操作地与SoC 1200耦合并且由交换机126可访问的存储器上。

如参考本文中所呈现的各种方面所描述的,这些实体中的任何实体可以体现为相异或组合的部件。参考图1的环境100的相应组件或实体或图2、图3、图4和/或图5中所图示的相应配置来描述这些组件和/或实体或对应功能性的示例。交换机126可以被整体或部分地实现为由存储器1206维持并由处理器1204执行的处理器可执行指令,以实现在用于固态存储装置的虚拟接口上提供QoS的各种方面和/或特征。

交换机126、VF地址引擎128和/或QoS管理器132可以独立地或与用以实现本文描述的各方面的任何合适的组件或电路组合地实现。例如,VF地址引擎128和/或QoS管理器132可以被实现为DSP、处理器/存储桥、I/O桥、图形处理单元、存储器控制器、存储控制器、算术逻辑单元(ALU)等的一部分。VF地址引擎128和/或QoS管理器132还可以与SoC 1200的其他实体(诸如与SoC 1200的处理器1204、存储器1206、主机接口、存储介质接口或固件1208集成)集成地提供。可替换地或附加地,交换机126、VF地址引擎128、VF映射130、QoS管理器132和/或QoS参数134、和/或SoC 1200的其他组件可被实现为硬件、固件、固定逻辑电路、或它们的任何组合。

作为另一示例,考虑图13,图13图示了根据在用于固态存储装置的虚拟接口上提供QoS的一个或多个方面的示例存储介质交换机控制器1300(交换机控制器1300)。在各种方面,交换机控制器1300或它的组件的任何组合可以被实现为用于固态存储装置的存储驱动器控制器、存储介质交换机、存储介质控制器、NAS控制器、NVMe启动器、NVMe目标或存储聚合控制器。在一些情况下,交换机控制器1300类似于参考图12描述的SoC 1200的组件被实现或用SoC 1200的组件来实现。换言之,SoC 1200的实例可以被配置为存储介质交换机控制器,诸如用以在用于固态存储装置的虚拟接口上提供和管理QoS的交换机控制器1300。

在该示例中,交换机控制器1300包括输入-输出(I/O)控制逻辑1302和处理器1304,诸如微处理器、处理器核、应用处理器、DSP等。在一些方面,存储介质交换机1300的处理器1304和固件可以被实现为提供与在用于固态存储装置的虚拟接口上提供QoS相关联的各种功能性,诸如参照方法600、700A、700B、900、1000和/或1100描述的那些功能性。交换机控制器还包括分别启用对存储介质和主机系统的访问的存储介质接口1306和主机接口1308。存储介质接口1306可以包括物理页面寻址(PPA)接口、***组件互连快速(PCIe)接口、非易失性存储器快速(NVMe)接口、结构上NVM(NVM-OF)接口、NVM主机控制器接口规范(NVMHCI)兼容接口等。可替换地或附加地,主机接口可以包括PCIe接口、基于SATA的接口、NVMe接口、NVM-OF接口、兼容NVMHCI接口、支持网络的存储接口等。

交换机控制器1300还包括VF地址引擎128、VF映射130、QoS管理器132和QoS参数134的实例。可以如在交换机控制器中所示分离地实现或者与处理器1304、存储介质接口1306、主机接口1308或闪存转换层(未示出)组合地实现这些实例中的任何实例或全部。参考图1的环境100的相应组件或实体或图2、图3、图4和/或图5中所图示的相应配置来描述这些组件和/或实体或对应功能性的示例。交换机控制器1300整体或部分地可以被实现为由交换机的存储器(未示出)维持并由处理器1304执行的处理器可执行指令,以实现在用于固态存储装置的虚拟接口上提供QoS的各种方面和/或特征。

尽管用结构特征和/或方法操作专用的语言描述了本主题内容,但应当理解的是,所附权利要求书中限定的主题内容不必限于本文所描述的具体示例、特征或操作,包括执行它们的顺序。

35页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:芯片堆叠模式下MACsec的实现方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!