CN110830392A - 启用存储介质上的虚拟功能 - Google Patents

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

Info

Publication number
CN110830392A
CN110830392A CN201910727158.1A CN201910727158A CN110830392A CN 110830392 A CN110830392 A CN 110830392A CN 201910727158 A CN201910727158 A CN 201910727158A CN 110830392 A CN110830392 A CN 110830392A
Authority
CN
China
Prior art keywords
host
virtual
storage medium
command
interface
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.)
Granted
Application number
CN201910727158.1A
Other languages
English (en)
Other versions
CN110830392B (zh
Inventor
郭丽萍
李英东
S·富里
S·苏里
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.)
Kaiwei International Co
Marvell International Ltd
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 CN110830392A publication Critical patent/CN110830392A/zh
Application granted granted Critical
Publication of CN110830392B publication Critical patent/CN110830392B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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/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
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开的实施例涉及启用存储介质上的虚拟功能。本公开描述了用于将虚拟功能自动映射到存储介质以启用单根输入输出虚拟化的装置和方法。存储介质交换机管理对在由交换机管理的存储介质接口后面执行的虚拟功能的访问。交换机包括主机接口,交换机通过该主机接口接收主机命令。交换机确定与主机命令相关联的虚拟功能标识符,并且基于虚拟功能标识符自动选择存储介质的虚拟功能。交换机使用虚拟功能在存储介质接口上执行主机命令,并且在执行之后,经由主机接口响应主机命令中的每个主机命令。通过以这种方式自动地映射虚拟功能,交换机自动地启用存储介质的单根输入输出虚拟化,包括没有对于输入输出虚拟化的本地支持的存储介质。

Description

启用存储介质上的虚拟功能
相关申请的交叉引用
本公开要求于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的各种方面和/或特征。
尽管用结构特征和/或方法操作专用的语言描述了本主题内容,但应当理解的是,所附权利要求书中限定的主题内容不必限于本文所描述的具体示例、特征或操作,包括执行它们的顺序。

Claims (20)

1.一种由存储介质交换机执行的、用于支持存储介质上的虚拟功能的方法,所述方法包括:
经由所述存储介质交换机的主机接口接收来自主机的主机命令;
响应于接收到所述主机命令,确定与所述主机命令相关联的虚拟功能标识符;
基于所述虚拟功能标识符,选择所述存储介质的用于执行所述主机命令的虚拟功能;以及
响应于使用被分配给所述存储介质的所述虚拟功能来执行所述主机命令,经由所述主机接口来响应所述主机命令。
2.根据权利要求1所述的方法,其中与所述主机命令相关联的所述虚拟功能标识符是从所述主机命令内所包含的虚拟地址被确定的。
3.根据权利要求2所述的方法,其中包含在所述主机命令内的所述虚拟地址的未使用部分包括与所述主机相关联的所述虚拟功能标识符。
4.根据权利要求2所述的方法,其中包含在所述主机命令内的所述虚拟地址的符号扩展规范部分包括与所述主机命令相关联的所述虚拟功能标识符。
5.根据权利要求2所述的方法,还包括:
通过从包含在所述主机命令内的所述虚拟地址移除与所述主机命令相关联的所述虚拟功能标识符,来确定与所述主机命令相关联的原始地址;以及
通过经由所述主机接口并且向所述主机提供所述原始地址来响应所述主机命令。
6.根据权利要求1所述的方法,其中选择被分配给所述存储介质以用于执行所述主机命令的所述虚拟功能包括:
基于所述主机命令标识所述主机;以及
基于所述主机和所述虚拟功能标识符,选择被分配给所述存储介质交换机的存储介质接口的所述虚拟功能以用于执行所述主机命令。
7.根据权利要求6所述的方法,还包括:
通过修改包含在所述主机命令内的虚拟地址来生成路由地址,以将被分配给所述虚拟功能的接口选择值附加到包含在所述主机命令内的所述虚拟地址;以及
响应于生成所述路由地址,执行所述主机命令以在所述存储介质的映射到所述路由地址的区域处执行操作。
8.根据权利要求7所述的方法,还包括:
在存储器中维持所述路由地址;
响应于使用被分配给所述存储介质的所述虚拟功能来执行所述主机命令,通过从所述存储器中所维持的所述路由地址移除所述接口选择值来确定与所述主机相关联的原始地址;以及
作为响应所述主机命令的一部分,经由所述主机接口并且向所述主机提供所述原始地址。
9.一种装置,包括:
基于硬件的处理器;
存储器,被耦合到所述处理器并且被配置为维持处理器可执行指令,所述处理器可执行指令响应于执行而实现所述装置上的应用;
主机接口,被配置为使所述应用能充当主机以访问与所述装置相关联的存储介质中的数据;以及
存储介质交换机,被耦合到所述主机接口并且提供存储介质接口,所述存储介质交换机被配置为:
经由所述主机接口接收来自充当主机的所述应用的命令;
响应于接收到所述主机命令,确定与所述主机命令相关联的虚拟功能标识符;
基于所述虚拟功能标识符,选择所述存储介质的用于执行所述主机命令的虚拟功能;以及
响应于在所述存储介质接口上、并且使用被分配给所述存储介质的所述虚拟功能来执行所述主机命令,经由所述主机接口来响应所述主机命令。
10.根据权利要求9所述的装置,其中所述存储介质交换机还被配置为:从经由所述主机接口而被接收的所述主机命令中的相关联的提交队列确定与所述主机相关联的所述虚拟功能标识符。
11.根据权利要求10所述的装置,其中所述虚拟功能标识符被编码为包含在所述主机命令内的虚拟地址的一部分。
12.根据权利要求9所述的装置,其中所述存储介质交换机还被配置为:基于所述主机和所述虚拟功能标识符来选择被分配给所述存储介质以用于执行所述主机命令的所述虚拟功能。
13.根据权利要求12所述的装置,其中所述存储介质交换机还被配置为:
通过修改包含在所述主机命令内的虚拟地址来生成路由地址,以将被分配给所述虚拟功能的接口选择值附加到包含在所述主机命令内的所述虚拟地址;以及
响应于生成所述路由地址,执行所述主机命令以在所述存储介质的映射到所述路由地址的区域处执行操作。
14.根据权利要求13所述的装置,其中所述主机接口包括外围组件接口快速(PCIe)总线接口。
15.一种片上系统,包括:
到存储介质的存储介质接口;
到主机的主机接口;
基于硬件的处理器;
存储器,被配置为存储处理器可执行指令,所述处理器可执行指令响应于由所述基于硬件的处理器执行而将存储介质交换机实现为:
经由所述主机接口接收来自所述主机的主机命令;
响应于接收到所述主机命令,确定与所述主机命令相关联的虚拟功能标识符;
基于所述虚拟功能标识符,选择所述存储介质的用于执行所述主机命令的虚拟功能;以及
响应于在所述存储介质接口上、并且使用被分配给所述存储介质的所述虚拟功能来执行所述主机命令,经由所述主机接口来响应所述主机命令。
16.根据权利要求15所述的片上系统,其中所述存储介质交换机还被配置为:从经由所述主机接口而被接收的所述主机命令中的相关联的提交队列确定与所述主机相关联的所述虚拟功能标识符。
17.根据权利要求16所述的片上系统,其中所述虚拟功能标识符被编码为以下的一部分:包含在所述主机命令内的虚拟地址的符号扩展规范部分、或包含在所述主机命令内的所述虚拟地址的未使用部分。
18.根据权利要求15所述的片上系统,其中所述指令还响应于由所述基于硬件的处理器执行而进一步将所述存储介质交换机实现为:
通过修改包含在所述主机命令内的虚拟地址来生成路由地址,以将被分配给所述虚拟功能的接口选择值附加到包含在所述主机命令内的所述虚拟地址;以及
响应于生成所述路由地址,执行所述主机命令以在所述存储介质的映射到所述路由地址的区域处执行操作。
19.根据权利要求18所述的片上系统,其中所述指令还响应于由所述基于硬件的处理器执行而进一步将所述存储介质交换机实现为:
维持包含在所述主机命令内的所述路由地址;
响应于使用被分配给所述存储介质的所述虚拟功能来执行所述主机命令,通过从所述存储器中所维持的所述路由地址移除所述接口选择值来确定与所述主机相关联的原始地址;以及
作为响应所述主机命令的一部分,经由所述主机接口提供所述原始地址。
20.根据权利要求15所述的片上系统,其中所述片上系统被体现在以下各项的一部分上或者被实现为以下各项的一部分:主机设备、服务器、服务器刀片、存储刀片、存储背板、存储介质扩展设备、存储介质卡、存储介质适配器、网络附加存储装置、支持网络的存储目标或存储控制器。
CN201910727158.1A 2018-08-07 2019-08-07 启用存储介质上的虚拟功能 Active CN110830392B (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 (2)

Publication Number Publication Date
CN110830392A true CN110830392A (zh) 2020-02-21
CN110830392B CN110830392B (zh) 2023-08-08

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 Before (1)

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

Country Status (4)

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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651269A (zh) * 2020-05-18 2020-09-11 青岛镕铭半导体有限公司 实现设备虚拟化的方法、装置及计算机可读存储介质
CN111737176A (zh) * 2020-05-11 2020-10-02 福州瑞芯微电子股份有限公司 一种基于pcie数据的同步装置及驱动方法
CN113312143A (zh) * 2021-03-03 2021-08-27 阿里巴巴新加坡控股有限公司 云计算系统、命令处理方法及虚拟化仿真装置

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11372580B2 (en) 2018-08-07 2022-06-28 Marvell Asia Pte, Ltd. Enabling virtual functions on 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
US20240211418A9 (en) * 2019-06-24 2024-06-27 Samsung Electronics Co., Ltd. Multi-function flexible computational storage device
US11573708B2 (en) 2019-06-25 2023-02-07 Micron Technology, Inc. Fail-safe redundancy in aggregated and virtualized solid state drives
US11762798B2 (en) 2019-06-25 2023-09-19 Micron Technology, Inc. Aggregated and virtualized solid state drives with multiple host interfaces
US11055249B2 (en) 2019-06-25 2021-07-06 Micron Technology, Inc. Access optimization in aggregated and virtualized solid state drives
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
US11513923B2 (en) 2019-06-25 2022-11-29 Micron Technology, Inc. Dynamic fail-safe redundancy 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
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
US11416431B2 (en) 2020-04-06 2022-08-16 Samsung Electronics Co., Ltd. System with cache-coherent memory and server-linking switch
KR20210143611A (ko) * 2020-05-20 2021-11-29 삼성전자주식회사 멀티 테넌시를 지원하는 스토리지 장치 및 이의 동작 방법
US20220094434A1 (en) * 2020-09-24 2022-03-24 Intel Corporation Characterizing data transmitted over an optical link based on one or more wavelengths used in transmission
US11762680B2 (en) * 2020-10-20 2023-09-19 Alilbaba Group Holding Limited Method and system of host resource utilization reduction
CN114528032A (zh) * 2020-10-30 2022-05-24 华为云计算技术有限公司 一种服务器系统以及数据处理的方法
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控股有限责任公司 用于处理数据的方法、电子设备和计算机程序产品
KR102521902B1 (ko) 2021-03-23 2023-04-17 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
KR102496994B1 (ko) 2021-03-23 2023-02-09 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
KR102529761B1 (ko) 2021-03-18 2023-05-09 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
US20210232528A1 (en) * 2021-03-22 2021-07-29 Intel Corporation Configurable device interface
US12039357B2 (en) * 2021-04-23 2024-07-16 Samsung Electronics Co., Ltd. Mechanism for distributed resource-based I/O scheduling over storage device
CN113722248B (zh) * 2021-07-28 2023-08-22 湖南国科微电子股份有限公司 命令处理方法及命令处理装置
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
US20240103721A1 (en) * 2022-09-22 2024-03-28 Microsoft Technology Licensing, Llc Scalable controller for managing data storages
KR20240110440A (ko) * 2023-01-06 2024-07-15 삼성전자주식회사 스토리지 장치 및 그의 동작 방법
CN117519910B (zh) * 2023-12-29 2024-03-22 苏州元脑智能科技有限公司 用于虚拟机的计算快速链接内存确定方法和装置

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1708742A (zh) * 2002-01-23 2005-12-14 思科技术公司 在存储区域网中实现存储虚拟化的方法与装置
JP2009251751A (ja) * 2008-04-02 2009-10-29 Fujitsu Ltd データ管理方法及びスイッチ装置
US20110154318A1 (en) * 2009-12-17 2011-06-23 Microsoft Corporation Virtual storage target offload techniques
US20120166690A1 (en) * 2010-12-28 2012-06-28 Plx Technology, Inc. Multi-root sharing of single-root input/output virtualization
US20120254464A1 (en) * 2010-09-24 2012-10-04 Pravala Inc. Accessing local network resources in a multi-interface system
US20140169373A1 (en) * 2011-07-11 2014-06-19 Murata Machinery, Ltd. Relay server and relay communication system
CN105808167A (zh) * 2016-03-10 2016-07-27 深圳市杉岩数据技术有限公司 一种基于sr-iov的链接克隆的方法、存储设备及系统
US20160224248A1 (en) * 2015-02-04 2016-08-04 Samsung Electronics Co., Ltd. Storage device and user device supporting virtualization function
US20160292007A1 (en) * 2015-03-31 2016-10-06 Kabushiki Kaisha Toshiba Apparatus and method of managing shared resources in achieving io virtualization in a storage device
US20160306549A1 (en) * 2015-04-16 2016-10-20 Samsung Electronics Co., Ltd. Scalable and area optimized method to implement command queues in sriov based nvm devices
CN106487719A (zh) * 2015-08-25 2017-03-08 谷歌公司 经由分组中继使网络功能外部化的系统和方法
US20170134269A1 (en) * 2014-03-26 2017-05-11 Oracle International Corporation System and method for scalable multi-homed routing for vswitch based hca virtualization
US20180052701A1 (en) * 2016-08-17 2018-02-22 Red Hat Israel, Ltd. Hot-plugging of virtual functions in a virtualized environment

Family Cites Families (79)

* 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
US7406598B2 (en) 2004-02-17 2008-07-29 Vixs Systems Inc. Method and system for secure content distribution
CA2571207C (en) 2004-06-15 2014-08-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
US8806101B2 (en) * 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
JP5660053B2 (ja) * 2010-01-20 2015-01-28 日本電気株式会社 ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体
US8495274B2 (en) * 2010-12-08 2013-07-23 International Business Machines Corporation Address translation table to enable access to virtual functions
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
US9395920B2 (en) * 2011-11-17 2016-07-19 Mirosoft Technology Licensing, LLC Throttle disk I/O using disk drive simulation model
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
US20130254146A1 (en) 2012-03-06 2013-09-26 Koodbee, Llc Prediction processing system and method of use and method of doing business
US9098805B2 (en) 2012-03-06 2015-08-04 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
US20150378886A1 (en) 2013-04-08 2015-12-31 Avalanche Technology, Inc. Software-defined ssd and system using the same
CN104111800B (zh) * 2013-04-18 2018-02-23 阿里巴巴集团控股有限公司 一种虚拟磁盘的io口调度方法及其调度装置
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
US9501245B2 (en) 2014-05-02 2016-11-22 Cavium, Inc. Systems and methods for NVMe controller virtualization to support multiple virtual machines running on a host
CN104461958B (zh) * 2014-10-31 2018-08-21 华为技术有限公司 支持sr-iov的存储资源访问方法、存储控制器及存储设备
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 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
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
US9823849B2 (en) * 2015-06-26 2017-11-21 Intel Corporation Method and apparatus for dynamically allocating storage resources to compute nodes
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 삼성전자주식회사 스토리지 장치, 스토리지 장치를 포함하는 시스템 및 그것의 동작 방법
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
US10866910B2 (en) 2015-09-28 2020-12-15 Sandisk Technologies Llc Systems, methods, and computer-readable media for managing instruction fetch in virtual computing environments
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 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
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
US10318162B2 (en) 2016-09-28 2019-06-11 Amazon Technologies, Inc. Peripheral device providing virtualized non-volatile storage
CN107885456B (zh) * 2016-09-29 2022-09-16 北京忆恒创源科技股份有限公司 减少io命令访问nvm的冲突
CN107894913B (zh) * 2016-09-30 2022-05-13 超聚变数字技术有限公司 一种计算机系统和存储访问装置
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
US11256431B1 (en) 2017-01-13 2022-02-22 Lightbits Labs Ltd. Storage system having a field programmable gate array
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
US11055125B2 (en) 2017-11-10 2021-07-06 Microsoft Technology Licensing, Llc Virtual machine client-side virtual network change
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
US12093702B2 (en) 2021-08-03 2024-09-17 Samsung Electronics Co., Ltd. Method and electronic device for managing a boost time required for an application launch

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1708742A (zh) * 2002-01-23 2005-12-14 思科技术公司 在存储区域网中实现存储虚拟化的方法与装置
JP2009251751A (ja) * 2008-04-02 2009-10-29 Fujitsu Ltd データ管理方法及びスイッチ装置
US20110154318A1 (en) * 2009-12-17 2011-06-23 Microsoft Corporation Virtual storage target offload techniques
US20120254464A1 (en) * 2010-09-24 2012-10-04 Pravala Inc. Accessing local network resources in a multi-interface system
US20120166690A1 (en) * 2010-12-28 2012-06-28 Plx Technology, Inc. Multi-root sharing of single-root input/output virtualization
US20140169373A1 (en) * 2011-07-11 2014-06-19 Murata Machinery, Ltd. Relay server and relay communication system
US20170134269A1 (en) * 2014-03-26 2017-05-11 Oracle International Corporation System and method for scalable multi-homed routing for vswitch based hca virtualization
US20160224248A1 (en) * 2015-02-04 2016-08-04 Samsung Electronics Co., Ltd. Storage device and user device supporting virtualization function
US20160292007A1 (en) * 2015-03-31 2016-10-06 Kabushiki Kaisha Toshiba Apparatus and method of managing shared resources in achieving io virtualization in a storage device
US20160306549A1 (en) * 2015-04-16 2016-10-20 Samsung Electronics Co., Ltd. Scalable and area optimized method to implement command queues in sriov based nvm devices
CN106487719A (zh) * 2015-08-25 2017-03-08 谷歌公司 经由分组中继使网络功能外部化的系统和方法
CN105808167A (zh) * 2016-03-10 2016-07-27 深圳市杉岩数据技术有限公司 一种基于sr-iov的链接克隆的方法、存储设备及系统
US20180052701A1 (en) * 2016-08-17 2018-02-22 Red Hat Israel, Ltd. Hot-plugging of virtual functions in a virtualized environment

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JITHIN JOSE; MINGZHE LI; XIAOYI LU等: "SR-IOV Support for Virtualization on InfiniBand Clusters: Early Experience", 2013 13TH IEEE/ACM INTERNATIONAL SYMPOSIUM ON CLUSTER, CLOUD, AND GRID COMPUTING *
李超: "SR-IOV虚拟化技术的研究与优化", 中国优秀硕士论文电子期刊网 *
胡志凌;: "虚拟化存储技术的I/O调度研究", 科技信息, no. 35 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737176A (zh) * 2020-05-11 2020-10-02 福州瑞芯微电子股份有限公司 一种基于pcie数据的同步装置及驱动方法
CN111651269A (zh) * 2020-05-18 2020-09-11 青岛镕铭半导体有限公司 实现设备虚拟化的方法、装置及计算机可读存储介质
CN113312143A (zh) * 2021-03-03 2021-08-27 阿里巴巴新加坡控股有限公司 云计算系统、命令处理方法及虚拟化仿真装置
CN113312143B (zh) * 2021-03-03 2024-01-23 阿里巴巴新加坡控股有限公司 云计算系统、命令处理方法及虚拟化仿真装置

Also Published As

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

Similar Documents

Publication Publication Date Title
CN110830392B (zh) 启用存储介质上的虚拟功能
US11836380B2 (en) NVMe direct virtualization with configurable storage
US11656775B2 (en) Virtualizing isolation areas of solid-state storage media
CN108984465B (zh) 一种消息传输方法及设备
US7464191B2 (en) System and method for host initialization for an adapter that supports virtualization
US10606516B2 (en) Systems and methods for I/O prioritization in NVMe-compliant storage devices
US9092366B2 (en) Splitting direct memory access windows
JP2017016691A (ja) テーブル・オブ・コンテンツエントリを使用してデータを格納するためのシステムおよび方法
US11016817B2 (en) Multi root I/O virtualization system
US10216423B1 (en) Streams across multiple controllers to improve solid state drive performance
US9104601B2 (en) Merging direct memory access windows
US20210019276A1 (en) Link selection protocol in a replication setup
US10437495B1 (en) Storage system with binding of host non-volatile memory to one or more storage devices

Legal Events

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

Effective date of registration: 20201225

Address after: Singapore City

Applicant after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Applicant before: Kaiwei international Co.

Effective date of registration: 20201225

Address after: Hamilton, Bermuda Islands

Applicant after: Marvell International Ltd.

Address before: Saint Michael

Applicant before: MARVELL WORLD TRADE Ltd.

Effective date of registration: 20201225

Address after: Ford street, Grand Cayman, Cayman Islands

Applicant after: Kaiwei international Co.

Address before: Hamilton, Bermuda Islands

Applicant before: Marvell International Ltd.

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant