CN110851075A - 在固态存储装置的虚拟接口上提供服务质量的装置和方法 - Google Patents

在固态存储装置的虚拟接口上提供服务质量的装置和方法 Download PDF

Info

Publication number
CN110851075A
CN110851075A CN201910733609.2A CN201910733609A CN110851075A CN 110851075 A CN110851075 A CN 110851075A CN 201910733609 A CN201910733609 A CN 201910733609A CN 110851075 A CN110851075 A CN 110851075A
Authority
CN
China
Prior art keywords
command
interface
host
data
namespace
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910733609.2A
Other languages
English (en)
Inventor
S·苏里
R·基肖尔
K·P·戈纳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Marvell Asia Pte Ltd
Original Assignee
Marvell World Trade Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Marvell World Trade Ltd filed Critical Marvell World Trade Ltd
Publication of CN110851075A publication Critical patent/CN110851075A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/205Quality of Service based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开的实施例涉及在固态存储装置的虚拟接口上提供服务质量的装置和方法。本公开描述了通过固态存储的虚拟接口提供服务质量(QoS)的几个方面。在一些方面,存储介质交换机从主机设备接收用于数据访问的输入/输出(I/O)命令,包括与可访问的固态存储的命名空间相关联的虚拟接口的标识符。交换机确定了一定数量的数据,I/O命令将通过命名空间访问这些数据。确定I/O命令将通过命名空间访问数据的数量是否超过通过该命名空间访问数据的预定的阈值。当确定数据的数量没有超过预定的阈值,I/O命令被发布到固态存储中使数据可以访问。通过这种做法,交换机可以为基于命名空间的访问参数的虚拟访问的固态存储提供QoS。

Description

在固态存储装置的虚拟接口上提供服务质量的装置和方法
相关申请的交叉引用
本公开要求于2018年8月7日提交的序列号为62/715,706的美国临时专利申请的优先权,以及于2018年8月8日提交的序列号为62/716,278的美国临时专利申请,其公开内容通过整体引用并入本文。
技术领域
本公开的实施例涉及用于在针对固态存储装置的虚拟接口上提供服务质量的装置和方法。
背景技术
大规模的软件开发和云服务经常通过单个租户或多个租户架构实现,其可以通过在共享资源上运行的公共系统提供可扩展性、成本和安全性优势。通常在多租户架构中,软件应用和关联的硬件基础结构的单个实例可以服务共享软件应用、相关数据资源和底层硬件基础结构的多个租户或客户端。如此,数据中心或云的多个租户可以通过管理程序同时访问各种计算资源(诸如,处理器和存储器)、网络资源和存储资源,该管理程序显露这些资源以供数据中心或云的软件租户使用。
然而,通过管理程序或其他软件层的资源访问可能很复杂并且在某种程度上难以实现以确保所提供的访问满足每个租户的不同的服务等级要求。例如,一些企业级租户可能要求对存储资源的高优先级和高带宽访问,而其它消费级租户对于存储资源访问的优先级、带宽或延迟有非常宽松的要求。随着在存储的聚合与扩展方面的发展(诸如非专用存储设备),管理程序可能在隔离或优先化租户对聚合的存储资源相应访问的方面有困难。在这样的情况下,活跃的租户可能通过多次数据访问请求使聚合的存储资源饱和,这能够延迟或阻止其他租户对该聚合的存储资源的访问。相应地,管理程序或其他主机软件经常不能遵循数据中心或云系统的每个租户的不同服务等级要求提供对聚合的存储资源的相应访问。
发明内容
提供本发明内容以引入在具体实施方式和附图说明中进一步描述的主题内容。因此,本发明内容不应被视为用以描述必要特征也不被用来限制所要求保护的主题内容的范围。
在一些方面,存储介质交换机实现一种方法,该方法经由主机接口并且从主机设备接收用于数据访问的输入输出(I/O)命令,该I/O命令与标识符相关联或者被链接到该标识符。I/O命令的标识符是针对与命名空间相关联的虚拟接口或虚拟功能的标识符,固态存储装置的数据通过该命名空间可访问。基于I/O命令,确定I/O命令将通过命名空间访问的、固态存储装置的数据的量。该方法然后确定I/O命令将访问的数据的量是否超过在一段时间内用于通过命名空间进行的数据访问的预定义的阈值(即,每段时间的字节数)。响应于确定I/O命令将访问的数据量没有超过预定义的阈值,该方法经由存储介质接口将I/O命令发布到固态存储装置中。通过这样做,由存储介质交换机实现的方法可以提供服务质量(QoS)功能性来对固态存储装置中通过命名空间进行的数据访问进行管理、测量或分派。
在其他方面,一种装置包括基于硬件的处理器、被配置为维持处理器可执行指令以实现装置上的应用的存储器、以及被配置为使得应用能够访问可操作地耦合到该装置的固态存储装置中的数据的主机接口。该装置还包括为固态存储装置提供存储介质接口的存储介质交换机和被实现为经由主机接口并且从应用接收用于数据访问的I/O命令的QoS管理器。I/O命令具有虚拟接口的标识符(即,虚拟功能),该标识符与固态存储装置的数据通过其可访问的命名空间相关联。QoS管理器基于I/O命令确定I/O命令将通过命名空间访问的固态存储装置的数据量。该QoS管理器然后确定I/O命令将通过命名空间访问的数据量是否超过在一段时间内用于通过命名空间进行的数据访问的预定义的阈值。响应于确定I/O命令将访问的数据量没有超过预定义的阈值,该QoS管理器经由交换机的存储介质接口将I/O命令发布到固态存储装置中。
在其他方面,片上系统(SoC)被描述为包括被配置为启用对固态存储装置的访问的存储介质接口和被配置为启用与主机设备通信的主机接口。该SoC还包括基于硬件的处理器和被配置为存储处理器可执行指令的存储器,该处理器可执行指令将QoS管理器实现为经由主机接口并且从主机接收用于数据访问的I/O命令。该I/O命令包括虚拟接口的标识符(即,虚拟功能),该标识符与固态存储装置的数据通过其可访问的命名空间相关联。QoS管理器基于I/O命令确定I/O命令将通过命名空间访问的固态存储装置的数据量。该QoS管理器然后确定I/O命令将访问的数据量是否超过在一段时间内用于通过命名空间进行的数据访问的预定义的阈值(即,每段时间的I/O的操作)。响应于确定I/O命令将访问的数据量没有超过预定义的阈值,该QoS管理器将I/O命令发布到固态存储装置中。可替换地,响应于确定I/O命令将访问的数据量到达或超过预定义的阈值,该QoS管理器将延迟I/O命令到固态存储装置的发布。
一个或多个实现的细节在附图和以下描述中被阐述。其他特征和优点根据描述和附图以及权利要求将变得明显。
附图说明
在附图和以下详细描述中阐述了在针对固态存储装置的虚拟接口上提供QoS的一个或多个实现的细节。在附图中,附图标记的最左边的数字标识附图标记首次出现的图。在说明书和附图中的不同的实例中相同的附图标记的使用指示相同的元素:
图1图示了根据本公开的一个或多个方面的示例操作环境,其具有针对固态存储装置的虚拟接口在其中被实现的设备。
图2图示了图1中所示的存储介质交换机和固态驱动器的示例配置。
图3图示了根据一个或多个方面的存储介质交换机的示例配置,该存储介质交换机与主机和多个固态驱动器相关联。
图4图示了根据一个或多个方面的各种存储介质交换机队列的示例配置。
图5图示了根据一个或多个方面的有助于实现QoS的QoS参数的示例配置。
图6描绘了用于将主机命令自动地映射到存储介质上的虚拟功能的示例方法。
图7A描绘了用于选择存储介质的虚拟功能的示例方法。
图7B描绘了根据本公开的一个或多个方面的用于响应主机命令的示例方法。
图8是概念图,其图示了当主机命令被映射到存储介质上的虚拟功能时,主机命令的地址字段的操纵。
图9描绘了用于为通过命名空间访问的固态存储装置提供QoS的示例方法。
图10描绘了用于基于针对命名空间的带宽配额向固态存储设备提交I/O命令的示例方法。
图11描绘了用于通过固态存储装置的命名空间管理虚拟机的数据访问的示例方法。
图12图示了示例片上系统(SoC)环境,其用于实现在针对固态存储介质的虚拟接口上的QoS的各个方面。
图13图示了示例存储介质交换机控制器,其被配置为实现在针对固态存储介质的虚拟接口上的QoS的各个方面。
具体实施方式
用于提供对存储资源的访问的常规技术经常依赖于接口标准,该接口标准被设计用于旧有存储装置类型(即,旋转或光学介质)、存储区域网络、或单独存储驱动器。然而,随着固态存储架构的发展,当扩展到固态介质的聚合或虚拟化存储卷时,这些常规技术经常受到限制或效率较低。例如,前几代服务器会通过与服务器客户端软件接口连接的管理程序或其他软件层提供存储访问,以管理离开主机的每个存储请求的各种参数。这样的软件层经常不能直接与下游或设备侧的固态存储介质控制器通信,固态存储装置通过下游或设备侧的固态存储介质控制器可以被访问或寻址。附加地,这些旧有软件层在对启用相应租户访问固态存储装置的隔离或优先级排序的虚拟化方面可能具有进一步的困难。相应地,管理程序或其他主机软件层经常不能根据一个数据中心或云端的每个租户的不同服务等级要求提供对存储资源的分别访问。
本公开描述了用于在针对固态存储装置的虚拟接口上提供QoS的装置和技术。与主机软件尝试管理存储访问的常规访问技术相比,所描述的装置和技术可以将存储介质交换机实现为高效地分派虚拟固态存储装置的带宽或者对虚拟固态存储装置的访问。通常,由存储介质交换机管理的存储装置中的聚合带宽的分派或分发可以如由存储介质交换机提供的存储访问的服务质量(QoS)或管理的性能一样被提供。换言之,存储介质交换机可以基于预定义的参数控制由主机、主机的虚拟机、或通过与存储介质交换机耦合的存储装置的命名空间消费的数据量。因此,本文描述的方面使得主机或系统的管理员能够确保存储访问被提供给客户端和租户满足他们所要求或期望的服务等级。
在各种方面,QoS由存储介质交换机通过交换机的外围组件互连快速(PCIe)接口的单根I/O虚拟化(SR-IOV)实现来提供,诸如,非易失性存储器快速(NVMe)。在基本等级上,SR-IOV上的SoC可以基于将跨其后端固态存储装置(诸如,NVMe固态驱动器(SSD))的存储介质交换机的可用总带宽分发到被映射到存储介质交换机的虚拟功能(诸如,通过SR-IOV显露的34PCIe物理/虚拟功能)的主机虚拟机(VM)。
在示例实现中,存储介质交换机的控制器将被耦合到存储接口的物理SSD作为单个虚拟磁盘(VD)呈现给与交换机的主机接口耦合的主机。控制器可以将虚拟磁盘分段成多个可配置的命名空间,诸如大小相同或不同的水平条带的命名空间。与主机的VM相关联的每个NVMe提交和完成队列被提供仅对这些命名空间或虚拟磁盘段中的一项的访问。基于此,主机的每个VM可以基于订阅策略(诸如,数据访问参数)被指派总带宽的某个部分,该订阅策略由存储介质交换机的QoS管理器调节。
通过示例,考虑QoS管理器,该QoS管理器被实现为存储介质交换机的命令分类器的一部分。存储介质交换机的入站引擎将所取回(fetch)的元素提交给命令分类器。命令分类器,或QoS管理器,在预定义的一段时间内(即,一段时间或时间间隔)持续跟踪每个命名空间所使用的带宽。在接收到命令时,命令分类器开始命令处理操作,并确定是否超出了目的地命名空间的带宽配额,或者对象命令是否将导致超出带宽配额。如果已经超过了针对该命名空间的配额,则该命令和针对该命名空间的任何附加命令将被保留在分级队列中,否则将该命令和其他命令提交到与该命名空间相对应的固态设备的提交队列中。这只是贯穿本公开所描述的存储介质交换机可以根据一个或多个方面提供的QoS的许多示例之一。
在针对固态存储装置的虚拟接口上提供QoS的各个方面,存储介质交换机从主机设备接收用于数据访问的输入/输出(I/O)命令。用于数据访问的该I/O命令与针对虚拟接口的标识符相关联,该虚拟接口与命名空间相关联,通过该命名空间可访问固态存储装置。存储介质交换机确定I/O命令将通过命名空间访问的数据量。然后确定I/O命令通过命名空间访问的数据量是否超过了用于通过该命名空间进行的数据访问的预定义的阈值。响应于确定数据量没有超过预定义的阈值,将I/O命令发布到固态存储装置中以启用数据访问。可替换地,响应于确定数据量到达或超过预定义的阈值,该存储介质交换机将延迟I/O命令的发布,诸如直到另一定时窗口开始,入站队列达到空的状态,或者针对固态存储装置的队列到达空的状态。通过这样做,交换机可以基于固态存储装置的命名空间的访问参数为虚拟访问的固态存储装置提供QoS。
以下讨论描述了操作环境、在操作环境中可以被采用的技术,以及在其中操作环境的组件能够被体现的片上系统(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或者SSD 126中的任何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内的相应的VF304和/或进一步将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的预配置的仲裁方案取回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的各个方面。SoC1200可以在任何合适的设备中被实现,诸如计算设备、主机设备、存储介质交换机、网络附加存储装置、智能家电、打印机、机顶盒、服务器、数据中心、固态驱动器(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的各种方面和/或特征。
尽管用结构特征和/或方法操作专用的语言描述了本主题内容,但应当理解的是,所附权利要求书中限定的主题内容不必限于本文所描述的具体示例、特征或操作,包括执行它们的顺序。

Claims (20)

1.一种用于在针对固态存储装置的虚拟接口上提供服务质量(QoS)的方法,包括:
经由主机接口并且从主机设备接收用于数据访问的输入/输出(I/O)命令,所述I/O命令与关联于命名空间的、针对虚拟接口的标识符相关联,所述固态存储装置的数据通过所述命名空间可访问;
基于所述I/O命令,确定所述I/O命令将通过所述命名空间访问的、所述固态存储装置的所述数据的量;
确定所述I/O命令将通过所述命名空间访问的数据量是否超过在一段时间内用于通过所述命名空间进行数据访问的预定义的阈值;以及
响应于确定所述I/O命令将访问的所述数据量不超过用于通过所述命名空间进行数据访问的所述预定义的阈值,经由存储介质接口并且基于所述命名空间将所述I/O命令发布到所述固态存储装置。
2.根据权利要求1所述的方法,还包括:
响应于确定所述I/O命令将访问的所述数据量达到或超过用于通过所述命名空间进行数据访问的所述预定义的阈值,延迟所述I/O命令向所述固态存储装置的所述发布。
3.根据权利要求1所述的方法,其中:
所述I/O命令通过从所述主机设备接收的入站命令元素的第一队列而被接收;并且
延迟所述I/O命令的所述发布包括:将所述I/O命令存储到针对命令元素的第二队列,所述命令元素被分级进行重新评估,以用于发布到所述固态存储装置。
4.根据权利要求1所述的方法,其中确定所述I/O命令将访问的所述数据量包括:基于所述I/O命令的物理区域页面(PRP)列表、所述I/O命令的分散收集列表、与所述I/O命令相关联的多个I/O操作、或者所述I/O命令的逻辑块地址(LBA)计数中的一项来确定所述数据量。
5.根据权利要求1所述的方法,还包括:
从所述主机设备接收参数,通过所述参数来计量或管理通过所述命名空间进行的、对所述固态存储装置的所述数据访问;以及
基于所述参数,确定在所述一段时间内用于通过所述命名空间进行的数据访问的所述预定义的阈值。
6.根据权利要求1所述的方法,其中与所述命名空间相关联的所述虚拟接口包括单根I/O虚拟化(SR-IOV)外围组件互连快速(PCIe)接口或者通过SR-IOV PCIe接口提供的虚拟功能(VF)。
7.根据权利要求6所述的方法,其中:
所述I/O命令从由所述主机设备执行的虚拟机(VM)接收;并且
在所述主机设备上执行的所述VM被映射到通过所述SR-IOV PCIe接口提供的所述VF。
8.根据权利要求7所述的方法,其中:
与所述命名空间相关联的第一组队列被映射到所述VF;并且
与由所述主机执行的所述VM相关联的第二组队列被映射到所述VF,所述VF有效地将所述第一组队列绑定到所述第二组队列。
9.根据权利要求1所述的方法,其中:
所述主机设备的所述主机接口包括第一PCIe接口,在所述第一PCIe接口上,非易失性存储器快速(NVMe)协议被实现;或者
所述固态存储装置的所述存储介质接口包括第二PCIe接口,在所述第二PCIe接口上,NVMe协议被实现。
10.一种装置,包括:
基于硬件的处理器;
存储器,被耦合到所述处理器并且被配置为维持处理器可执行指令,所述处理器可执行指令响应于执行而实现所述装置上的应用;
主机接口,被配置为使得所述应用能够访问固态存储装置中的数据,所述固态存储装置被可操作地耦合到所述装置;以及
存储介质交换机,所述存储介质交换机提供存储介质接口和服务质量(QoS)管理器,所述服务质量管理器被实现为:
经由所述主机接口并且从所述应用接收用于数据访问的输入/输出(I/O)命令,所述I/O命令与关联于命名空间的、虚拟接口的标识符相关联,所述固态存储装置的数据通过所述命名空间可访问;
基于所述I/O命令,确定所述I/O命令将通过所述命名空间访问的、所述固态存储装置的所述数据的量;
确定所述I/O命令将通过所述命名空间访问的数据量是否超过在一段时间内用于通过所述命名空间进行数据访问的预定义的阈值;以及
响应于确定所述I/O命令将访问的所述数据量不超过所述预定义的阈值,经由所述存储介质接口将所述I/O命令发布到所述固态存储装置。
11.根据权利要求10所述的装置,其中所述QoS管理器还被实现为:响应于确定所述I/O命令将访问的所述数据量达到或超过所述预定义的阈值,延迟所述I/O命令向所述固态存储装置的所述发布。
12.根据权利要求10所述的装置,其中所述QoS管理器还被实现为:基于所述I/O命令的物理区域页面(PRP)列表、所述I/O命令的分散收集列表、与所述I/O命令相关联的多个I/O操作、或者所述I/O命令的逻辑块地址(LBA)计数中的一项来确定所述数据量。
13.根据权利要求10所述的装置,其中与所述命名空间相关联的所述虚拟接口包括单根I/O虚拟化(SR-IOV)外围组件互连快速(PCIe)接口或者通过SR-IOV PCIe接口提供的虚拟功能(VF)。
14.根据权利要求10所述的装置,其中所述装置还包括所述固态存储装置,所述固态存储装置可操作地耦合到所述存储介质交换机的所述存储介质接口。
15.一种片上系统,包括:
存储介质接口,被配置为支持对固态存储装置的访问;
主机接口,被配置为支持与主机设备的通信;
基于硬件的处理器;
存储器,被配置为存储处理器可执行指令,所述处理器可执行指令响应于所述基于硬件的处理器的执行将服务质量(QoS)管理器实现为:
经由所述主机接口并且从所述主机设备接收用于数据访问的输入/输出(I/O)命令,所述I/O命令与关联于命名空间的、虚拟接口的标识符相关联,所述固态存储装置的数据通过所述命名空间可访问;
基于所述I/O命令,确定所述I/O命令将通过所述命名空间访问的、所述固态存储装置的所述数据的量;
确定所述I/O命令将通过所述命名空间访问的数据量是否超过在一段时间内用于通过所述命名空间进行数据访问的预定义的阈值;以及
响应于确定所述I/O命令将访问的所述数据量不超过所述预定义的阈值,经由存储介质接口将所述I/O命令发布到所述固态存储装置;
响应于确定所述I/O命令将访问的所述数据量达到或超过所述预定义的阈值,延迟所述I/O命令向所述固态存储装置的所述发布。
16.根据权利要求15所述的SoC,其中所述QoS管理器还被实现为:通过将所述I/O命令存储到针对命令元素的队列中,延迟所述I/O命令的所述发布,所述命令元素被分阶段进行重新评估,以用于发布到所述固态存储装置。
17.根据权利要求15所述的SoC,其中所述QoS管理器还被实现为:基于所述I/O命令的物理区域页面(PRP)列表、所述I/O命令的分散收集列表、与所述I/O命令相关联的多个I/O操作、或者所述I/O命令的逻辑块地址(LBA)计数中的一项来确定所述数据量。
18.根据权利要求15所述的SoC,其中与所述命名空间相关联的所述虚拟接口包括单根I/O虚拟化(SR-IOV)外围组件互连快速(PCIe)接口或者通过SR-IOV PCIe接口提供的虚拟功能(VF)。
19.根据权利要求15所述的SoC,其中:
所述SoC的所述主机接口被配置为第一PCIe接口,在所述第一PCIe接口上,非易失性存储器快速(NVMe)协议被实现;或者
所述SoC的所述存储介质接口被配置为第二PCIe接口,在所述第二PCIe接口上,NVMe协议被实现。
20.根据权利要求15所述的SoC,其中所述SoC被实施在以下各项的一部分上或者被实现为以下各项的一部分:主机设备、存储介质交换机、服务器、服务器刀片、存储刀片、存储背板、存储介质扩展设备、存储介质卡、存储介质适配器、网络附接存储装置、或基于NVMe的存储控制器。
CN201910733609.2A 2018-08-07 2019-08-07 在固态存储装置的虚拟接口上提供服务质量的装置和方法 Pending CN110851075A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862715706P 2018-08-07 2018-08-07
US62/715,706 2018-08-07
US201862716278P 2018-08-08 2018-08-08
US62/716,278 2018-08-08

Publications (1)

Publication Number Publication Date
CN110851075A true CN110851075A (zh) 2020-02-28

Family

ID=67658533

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201910733609.2A Pending CN110851075A (zh) 2018-08-07 2019-08-07 在固态存储装置的虚拟接口上提供服务质量的装置和方法
CN201910727158.1A Active CN110830392B (zh) 2018-08-07 2019-08-07 启用存储介质上的虚拟功能

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201910727158.1A Active CN110830392B (zh) 2018-08-07 2019-08-07 启用存储介质上的虚拟功能

Country Status (4)

Country Link
US (3) US11372580B2 (zh)
EP (2) EP3608770A1 (zh)
KR (2) KR20200016811A (zh)
CN (2) CN110851075A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113722248A (zh) * 2021-07-28 2021-11-30 湖南国科微电子股份有限公司 命令处理方法及命令处理装置
CN114528032A (zh) * 2020-10-30 2022-05-24 华为云计算技术有限公司 一种服务器系统以及数据处理的方法

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11372580B2 (en) 2018-08-07 2022-06-28 Marvell Asia Pte, Ltd. Enabling virtual functions on storage media
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
US11481118B2 (en) 2019-01-11 2022-10-25 Marvell Asia Pte, Ltd. Storage media programming with adaptive write buffer release
US10963284B2 (en) 2019-01-31 2021-03-30 EMC IP Holding Company LLC Associating storage system performance objectives with virtual machines
US10963165B2 (en) * 2019-01-31 2021-03-30 EMC IP Holding Company LLC Applying virtual machine performance objectives on a storage system
US11762798B2 (en) 2019-06-25 2023-09-19 Micron Technology, Inc. Aggregated and virtualized solid state drives with multiple host interfaces
US10942881B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Parallel operations in aggregated and virtualized solid state drives
US11768613B2 (en) 2019-06-25 2023-09-26 Micron Technology, Inc. Aggregation and virtualization of solid state drives
US11055249B2 (en) 2019-06-25 2021-07-06 Micron Technology, Inc. Access optimization in aggregated and virtualized solid state drives
US10942846B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Aggregated and virtualized solid state drives accessed via multiple logical address spaces
US11513923B2 (en) 2019-06-25 2022-11-29 Micron Technology, Inc. Dynamic fail-safe redundancy in aggregated and virtualized solid state drives
US11573708B2 (en) 2019-06-25 2023-02-07 Micron Technology, Inc. Fail-safe redundancy in aggregated and virtualized solid state drives
US11579910B2 (en) * 2019-09-20 2023-02-14 Netapp, Inc. Policy enforcement and performance monitoring at sub-LUN granularity
US10901930B1 (en) * 2019-10-21 2021-01-26 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Shared virtual media in a composed system
US11262945B2 (en) * 2019-10-30 2022-03-01 EMC IP Holding Company, LLC Quality of service (QOS) system and method for non-volatile memory express devices
US11704059B2 (en) 2020-02-07 2023-07-18 Samsung Electronics Co., Ltd. Remote direct attached multiple storage function storage device
US11765235B2 (en) * 2020-03-12 2023-09-19 Samsung Electronics Co., Ltd. System and method of disk sharing for cloud content storage
US11782833B2 (en) 2020-03-12 2023-10-10 Samsung Electronics Co., Ltd. System and method of determining available bandwidth in disaggregated tiered cache for cloud content storage
US20210311897A1 (en) 2020-04-06 2021-10-07 Samsung Electronics Co., Ltd. Memory with cache-coherent interconnect
CN111737176B (zh) * 2020-05-11 2022-07-15 瑞芯微电子股份有限公司 一种基于pcie数据的同步装置及驱动方法
CN111651269A (zh) * 2020-05-18 2020-09-11 青岛镕铭半导体有限公司 实现设备虚拟化的方法、装置及计算机可读存储介质
KR20210143611A (ko) * 2020-05-20 2021-11-29 삼성전자주식회사 멀티 테넌시를 지원하는 스토리지 장치 및 이의 동작 방법
US11762680B2 (en) * 2020-10-20 2023-09-19 Alilbaba Group Holding Limited Method and system of host resource utilization reduction
US11409439B2 (en) 2020-11-10 2022-08-09 Samsung Electronics Co., Ltd. Binding application to namespace (NS) to set to submission queue (SQ) and assigning performance service level agreement (SLA) and passing it to a storage device
CN114817121A (zh) * 2021-01-22 2022-07-29 伊姆西Ip控股有限责任公司 用于处理数据的方法、电子设备和计算机程序产品
CN113312143B (zh) * 2021-03-03 2024-01-23 阿里巴巴新加坡控股有限公司 云计算系统、命令处理方法及虚拟化仿真装置
KR102496994B1 (ko) 2021-03-23 2023-02-09 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
KR102529761B1 (ko) 2021-03-18 2023-05-09 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
US20220342689A1 (en) * 2021-04-23 2022-10-27 Samsung Electronics Co., Ltd. Mechanism for distributed resource-based i/o scheduling over storage device
US20230051553A1 (en) * 2021-08-12 2023-02-16 Samsung Electronics Co., Ltd. Multi-function flexible computational storage device
US11972125B2 (en) * 2021-09-03 2024-04-30 Micron Technology, Inc. Memory sub-system dynamic QOS pool
US20230153031A1 (en) * 2021-11-16 2023-05-18 Samsung Electronics Co., Ltd. Storage device supporting multi-host and operation method thereof
US11928336B2 (en) 2022-03-03 2024-03-12 Samsung Electronics Co., Ltd. Systems and methods for heterogeneous storage systems
US11899984B1 (en) 2022-07-26 2024-02-13 Beijing Tenafe Electronic Technology Co., Ltd. Virtual queue for messages
US11907147B1 (en) 2022-07-28 2024-02-20 Beijing Tenafe Electronic Technology Co., Ltd. Programmable message inspection engine implemented in hardware that generates an output message using a content modification plan and a destination control plan
CN117519910B (zh) * 2023-12-29 2024-03-22 苏州元脑智能科技有限公司 用于虚拟机的计算快速链接内存确定方法和装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103116473A (zh) * 2011-11-17 2013-05-22 微软公司 使用盘驱动器模拟模型来对盘i/o扼流
CN104111800A (zh) * 2013-04-18 2014-10-22 阿里巴巴集团控股有限公司 一种虚拟磁盘的io口调度方法及其调度装置
US20150317088A1 (en) * 2014-05-02 2015-11-05 Cavium, Inc. Systems and methods for nvme controller virtualization to support multiple virtual machines running on a host
CN107667341A (zh) * 2015-06-26 2018-02-06 英特尔公司 用于向计算节点动态地分配存储资源的方法和装置
CN107885456A (zh) * 2016-09-29 2018-04-06 北京忆恒创源科技有限公司 减少io命令访问nvm的冲突
CN107894913A (zh) * 2016-09-30 2018-04-10 华为技术有限公司 一种计算机系统和存储访问装置
US20180217951A1 (en) * 2015-09-28 2018-08-02 Sandisk Technologies Llc Systems, Methods, and Computer-Readable Media for Managing Instruction Fetch in Virtual Computing Environments

Family Cites Families (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6671791B1 (en) * 2001-06-15 2003-12-30 Advanced Micro Devices, Inc. Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
US7433948B2 (en) * 2002-01-23 2008-10-07 Cisco Technology, Inc. Methods and apparatus for implementing virtualization of storage within a storage area network
US7406598B2 (en) 2004-02-17 2008-07-29 Vixs Systems Inc. Method and system for secure content distribution
WO2006002086A1 (en) 2004-06-15 2006-01-05 Dentsply International Inc. Low shrinkage and low stress dental compositions
US7502908B2 (en) 2006-05-04 2009-03-10 International Business Machines Corporation Method for providing an address format compatible with different addressing formats used for addressing different sized address spaces
US20080100636A1 (en) 2006-10-31 2008-05-01 Jiin Lai Systems and Methods for Low-Power Computer Operation
US7783858B2 (en) * 2007-01-20 2010-08-24 International Business Machines Corporation Reducing memory overhead of a page table in a dynamic logical partitioning environment
US7861036B2 (en) 2007-09-18 2010-12-28 Agere Systems Inc. Double degraded array protection in an integrated network attached storage device
US8571745B2 (en) 2008-04-10 2013-10-29 Robert Todd Pack Advanced behavior engine
JP5186982B2 (ja) * 2008-04-02 2013-04-24 富士通株式会社 データ管理方法及びスイッチ装置
US8806101B2 (en) * 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US9389895B2 (en) 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
JP5660053B2 (ja) * 2010-01-20 2015-01-28 日本電気株式会社 ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体
WO2012037666A1 (en) * 2010-09-24 2012-03-29 Pravala Inc. Accessing local network resources in a multi-interface system
US8495274B2 (en) * 2010-12-08 2013-07-23 International Business Machines Corporation Address translation table to enable access to virtual functions
US8521941B2 (en) * 2010-12-28 2013-08-27 Plx Technology, Inc. Multi-root sharing of single-root input/output virtualization
US8726276B2 (en) * 2011-01-26 2014-05-13 International Business Machines Corporation Resetting a virtual function that is hosted by an input/output adapter
US8504780B2 (en) * 2011-04-08 2013-08-06 Hitachi, Ltd. Computer, computer system, and data communication method
US8751713B2 (en) * 2011-05-06 2014-06-10 International Business Machines Corporation Executing virtual functions using memory-based data in a PCI express SR-IOV and MR-IOV environment
JP5682782B2 (ja) * 2011-07-11 2015-03-11 村田機械株式会社 中継サーバ及び中継通信システム
US8954822B2 (en) 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
US8713562B2 (en) 2012-01-06 2014-04-29 International Business Machines Corporation Intelligent and automated code deployment
US9015351B1 (en) * 2012-03-02 2015-04-21 Marvell International Ltd. Address translation for SR-IOV virtual function apertures
US9098805B2 (en) 2012-03-06 2015-08-04 Koodbee, Llc Prediction processing system and method of use and method of doing business
WO2013134433A2 (en) 2012-03-06 2013-09-12 Koodbee, Llc Prediction processing system and method of use and method of doing business
US9836316B2 (en) 2012-09-28 2017-12-05 Intel Corporation Flexible acceleration of code execution
US9134779B2 (en) 2012-11-21 2015-09-15 International Business Machines Corporation Power distribution management in a system on a chip
US9424219B2 (en) 2013-03-12 2016-08-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Direct routing between address spaces through a nontransparent peripheral component interconnect express bridge
US9720717B2 (en) * 2013-03-14 2017-08-01 Sandisk Technologies Llc Virtualization support for storage devices
US20150378884A1 (en) 2013-04-08 2015-12-31 Avalanche Technology, Inc. Storage system controlling addressing of solid storage disks (ssd)
US9734096B2 (en) * 2013-05-06 2017-08-15 Industrial Technology Research Institute Method and system for single root input/output virtualization virtual functions sharing on multi-hosts
US10635316B2 (en) * 2014-03-08 2020-04-28 Diamanti, Inc. Methods and systems for data storage using solid state drives
US10397105B2 (en) * 2014-03-26 2019-08-27 Oracle International Corporation System and method for scalable multi-homed routing for vSwitch based HCA virtualization
CN104461958B (zh) * 2014-10-31 2018-08-21 华为技术有限公司 支持sr-iov的存储资源访问方法、存储控制器及存储设备
KR102336443B1 (ko) * 2015-02-04 2021-12-08 삼성전자주식회사 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치
US9378049B1 (en) * 2015-02-12 2016-06-28 Amazon Technologies, Inc. Servicing I/O requests in an I/O adapter device
KR102398213B1 (ko) * 2015-03-09 2022-05-17 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
US10114675B2 (en) * 2015-03-31 2018-10-30 Toshiba Memory Corporation Apparatus and method of managing shared resources in achieving IO virtualization in a storage device
KR102309798B1 (ko) * 2015-04-16 2021-10-06 삼성전자주식회사 Sr-iov 기반 비휘발성 메모리 컨트롤러 및 그 비휘발성 메모리 컨트롤러에 의해 큐에 리소스를 동적 할당하는 방법
US10025747B2 (en) 2015-05-07 2018-07-17 Samsung Electronics Co., Ltd. I/O channel scrambling/ECC disassociated communication protocol
US9639280B2 (en) 2015-06-18 2017-05-02 Advanced Micro Devices, Inc. Ordering memory commands in a computer system
US20170032245A1 (en) 2015-07-01 2017-02-02 The Board Of Trustees Of The Leland Stanford Junior University Systems and Methods for Providing Reinforcement Learning in a Deep Learning System
KR102371916B1 (ko) * 2015-07-22 2022-03-07 삼성전자주식회사 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법
KR102519663B1 (ko) 2015-07-31 2023-04-07 삼성전자주식회사 스토리지 장치, 스토리지 장치를 포함하는 시스템 및 그것의 동작 방법
US9948556B2 (en) * 2015-08-25 2018-04-17 Google Llc Systems and methods for externalizing network functions via packet trunking
US9929750B2 (en) 2015-09-08 2018-03-27 Toshiba Memory Corporation Memory system
US9959138B1 (en) 2015-09-11 2018-05-01 Cohesity, Inc. Adaptive self-maintenance scheduler
US10586158B2 (en) 2015-10-28 2020-03-10 The Climate Corporation Computer-implemented calculation of corn harvest recommendations
US10204006B2 (en) 2015-10-28 2019-02-12 Avago Technologies International Sales Pte. Limited Systems and methods for side data based soft data flash memory access
US10764242B2 (en) * 2015-11-24 2020-09-01 At&T Intellectual Property I, L.P. Providing network address translation in a software defined networking environment
KR102572357B1 (ko) 2016-02-03 2023-08-29 삼성전자주식회사 Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
CN105808167B (zh) * 2016-03-10 2018-12-21 深圳市杉岩数据技术有限公司 一种基于sr-iov的链接克隆的方法、存储设备及系统
US10216575B2 (en) 2016-03-17 2019-02-26 Sandisk Technologies Llc Data coding
US10635499B2 (en) * 2016-03-23 2020-04-28 Unisys Corporation Multifunction option virtualization for single root I/O virtualization
US20180032249A1 (en) 2016-07-26 2018-02-01 Microsoft Technology Licensing, Llc Hardware to make remote storage access appear as local in a virtualized environment
US10423437B2 (en) * 2016-08-17 2019-09-24 Red Hat Israel, Ltd. Hot-plugging of virtual functions in a virtualized environment
US10318162B2 (en) 2016-09-28 2019-06-11 Amazon Technologies, Inc. Peripheral device providing virtualized non-volatile storage
US9747039B1 (en) * 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10254966B2 (en) 2016-12-28 2019-04-09 Western Digital Technologies, Inc. Data management based on I/O traffic profiling
US10228874B2 (en) * 2016-12-29 2019-03-12 Intel Corporation Persistent storage device with a virtual function controller
US10956346B1 (en) 2017-01-13 2021-03-23 Lightbits Labs Ltd. Storage system having an in-line hardware accelerator
US10339068B2 (en) * 2017-04-24 2019-07-02 Advanced Micro Devices, Inc. Fully virtualized TLBs
US10379765B2 (en) 2017-06-27 2019-08-13 Western Digital Technologies, Inc. Geometry-aware command scheduling
US10908998B2 (en) * 2017-08-08 2021-02-02 Toshiba Memory Corporation Managing function level reset in an IO virtualization-enabled storage device
US10996888B2 (en) 2017-10-31 2021-05-04 Qualcomm Incorporated Write credits management for non-volatile memory
US10866825B2 (en) 2017-11-10 2020-12-15 Microsoft Technology Licensing, Llc Deployment of partially provisioned virtual machines
US10509753B2 (en) * 2018-02-26 2019-12-17 Micron Technology, Inc. Dynamic allocation of resources of a storage system utilizing single root input/output virtualization
US10698709B2 (en) 2018-03-07 2020-06-30 Microsoft Technology Licensing, Llc Prediction of virtual machine demand
US10901910B2 (en) * 2018-04-05 2021-01-26 International Business Machines Corporation Memory access based I/O operations
US20190354599A1 (en) 2018-05-21 2019-11-21 Microsoft Technology Licensing, Llc Ai model canvas
CN108959127B (zh) * 2018-05-31 2021-02-09 华为技术有限公司 地址转换方法、装置及系统
US11630920B2 (en) * 2018-06-29 2023-04-18 Intel Corporation Memory tagging for side-channel defense, memory safety, and sandboxing
US10725941B2 (en) 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
JP7384900B2 (ja) * 2018-08-03 2023-11-21 エヌビディア コーポレーション 仮想マシン・メモリの安全なアクセス
US11372580B2 (en) 2018-08-07 2022-06-28 Marvell Asia Pte, Ltd. Enabling virtual functions on storage media
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US10866740B2 (en) * 2018-10-01 2020-12-15 Western Digital Technologies, Inc. System and method for performance-based multiple namespace resource allocation in a memory
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
US11481118B2 (en) 2019-01-11 2022-10-25 Marvell Asia Pte, Ltd. Storage media programming with adaptive write buffer release
US11132131B2 (en) * 2019-02-28 2021-09-28 Oracle International Corporation Consistently enforcing I/O resource constraints for workloads on parallel-access storage devices
US11133067B2 (en) 2019-03-08 2021-09-28 Western Digital Technologies, Inc. Multi-phased programming with balanced gray coding
US11023397B2 (en) * 2019-03-25 2021-06-01 Alibaba Group Holding Limited System and method for monitoring per virtual machine I/O
US11055232B2 (en) * 2019-03-29 2021-07-06 Intel Corporation Valid bits of a translation lookaside buffer (TLB) for checking multiple page sizes in one probe cycle and reconfigurable sub-TLBS
US11372586B2 (en) * 2020-05-19 2022-06-28 Hewlett Packard Enterprise Development Lp System and method for regulating NVMe-oF command requests and data flow across a network with mismatched rates
US20230045617A1 (en) 2021-08-03 2023-02-09 Samsung Electronics Co., Ltd. Method and electronic device for managing a boost time required for an application launch

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103116473A (zh) * 2011-11-17 2013-05-22 微软公司 使用盘驱动器模拟模型来对盘i/o扼流
CN104111800A (zh) * 2013-04-18 2014-10-22 阿里巴巴集团控股有限公司 一种虚拟磁盘的io口调度方法及其调度装置
US20150317088A1 (en) * 2014-05-02 2015-11-05 Cavium, Inc. Systems and methods for nvme controller virtualization to support multiple virtual machines running on a host
CN107667341A (zh) * 2015-06-26 2018-02-06 英特尔公司 用于向计算节点动态地分配存储资源的方法和装置
US20180217951A1 (en) * 2015-09-28 2018-08-02 Sandisk Technologies Llc Systems, Methods, and Computer-Readable Media for Managing Instruction Fetch in Virtual Computing Environments
CN107885456A (zh) * 2016-09-29 2018-04-06 北京忆恒创源科技有限公司 减少io命令访问nvm的冲突
CN107894913A (zh) * 2016-09-30 2018-04-10 华为技术有限公司 一种计算机系统和存储访问装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114528032A (zh) * 2020-10-30 2022-05-24 华为云计算技术有限公司 一种服务器系统以及数据处理的方法
CN113722248A (zh) * 2021-07-28 2021-11-30 湖南国科微电子股份有限公司 命令处理方法及命令处理装置
CN113722248B (zh) * 2021-07-28 2023-08-22 湖南国科微电子股份有限公司 命令处理方法及命令处理装置

Also Published As

Publication number Publication date
US11372580B2 (en) 2022-06-28
KR20200016810A (ko) 2020-02-17
US20200050470A1 (en) 2020-02-13
EP3608770A1 (en) 2020-02-12
KR20200016811A (ko) 2020-02-17
EP3608769B1 (en) 2024-02-21
EP3608769A1 (en) 2020-02-12
US11693601B2 (en) 2023-07-04
US11074013B2 (en) 2021-07-27
CN110830392A (zh) 2020-02-21
CN110830392B (zh) 2023-08-08
US20220334770A1 (en) 2022-10-20
US20200050403A1 (en) 2020-02-13

Similar Documents

Publication Publication Date Title
EP3608769B1 (en) Apparatus and method for providing quality of service over a virtual interface for solid-state storage
US11768698B2 (en) Mechanism to dynamically allocate physical storage device resources in virtualized environments
US11088949B2 (en) Multicast message filtering in virtual environments
US11656775B2 (en) Virtualizing isolation areas of solid-state storage media
CN112673341B (zh) 具有可配置存储的NVMe直接虚拟化
US11481316B2 (en) System and method to extend NVMe queues to user space
US9092366B2 (en) Splitting direct memory access windows
US11354147B2 (en) Class of service for multi-function devices
US11016817B2 (en) Multi root I/O virtualization system
US9104601B2 (en) Merging direct memory access windows
US10437495B1 (en) Storage system with binding of host non-volatile memory to one or more storage devices
US20240168788A1 (en) Service Level Objective Based Priority Processing of Control Path Operations

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
TA01 Transfer of patent application right

Effective date of registration: 20201228

Address after: Hamilton, Bermuda Islands

Applicant after: Marvell International Ltd.

Address before: Saint Michael

Applicant before: MARVELL WORLD TRADE Ltd.

Effective date of registration: 20201228

Address after: Ford street, Grand Cayman, Cayman Islands

Applicant after: Kaiwei international Co.

Address before: Hamilton, Bermuda Islands

Applicant before: Marvell International Ltd.

Effective date of registration: 20201228

Address after: Singapore City

Applicant after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Applicant before: Kaiwei international Co.

TA01 Transfer of patent application right
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination