CN111133416A - 处理来自虚拟机命令的方法和装置 - Google Patents

处理来自虚拟机命令的方法和装置 Download PDF

Info

Publication number
CN111133416A
CN111133416A CN201780094794.4A CN201780094794A CN111133416A CN 111133416 A CN111133416 A CN 111133416A CN 201780094794 A CN201780094794 A CN 201780094794A CN 111133416 A CN111133416 A CN 111133416A
Authority
CN
China
Prior art keywords
command
physical
queue
virtual
volatile memory
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
CN201780094794.4A
Other languages
English (en)
Inventor
董耀祖
Y·郭
H·张
田坤
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN111133416A publication Critical patent/CN111133416A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/1668Details of memory controller
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

用于处理来自虚拟机的命令的方法和装置,所述方法包括:由在一个或多个处理器上执行的虚拟机监测器中的虚拟非易失性存储器设备访问由在客户机虚拟机中执行的原生非易失性存储器驱动器提交给客户机队列的第一命令;基于第一命令通过将第一命令的虚拟参数转换成与物理非易失性存储器设备相关联的物理参数来由虚拟非易失性存储器设备生成经转换的命令;由虚拟非易失性存储器设备将经转换的命令提交给将由物理非易失性存储器设备基于物理参数来处理的影子队列;并且由虚拟非易失性存储器设备将完成状态条目提交给客户机队列,该完成状态条目指示在物理非易失性存储器设备和与客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。

Description

处理来自虚拟机命令的方法和装置
技术领域
本公开总体上涉及处理器系统中的存储器,并且更具体地,涉及处理来自虚拟机的命令的方法和装置。
背景技术
在虚拟化处理环境中,单个物理平台跨多个虚拟机(VM)和/或虚拟操作系统(OS)被共享。此类虚拟化采用大量的物理资源作为虚拟资源分配给不同的VM。例如,这些资源包括中央处理器(CPU)、存储(例如,非易失性数据存储设备)、存储器(例如,易失性随机存取存储器(RAM))、图形处理单元(GPU)、网络接口卡(NIC)等。对于存储设备,现有的存储输入-输出(I/O)虚拟化解决方案基于旧的硬件技术(诸如基于磁的硬盘驱动器(HDD)存储和/或旧的慢速NAND固态驱动器(NAND-SSD)存储)设计。
附图说明
图1图示了用于向VM提供对被实现为非易失性存储器快速(NVMe)设备的物理非易失性(NV)存储器的访问的示例现有半虚拟化(PV)块I/O服务。
图2图示了实现示例零复制块虚拟化–介导直通(ZCBV-MPT)技术以向VM提供对物理NV存储器的访问的主机机器。
图3是可用于实现结合图2描述的示例ZCBV-MPT技术的外围组件互连快速(PCIe)总线上的非易失性存储器快速(NVMe)协议的示例视图。
图4示出了基于结合图2所述的示例ZCBV-MPT技术来促进执行零复制操作的图2的示例调解器和示例虚拟NVMe设备。
图5示出了仿真PCI配置并管理图2的示例客户机VM的客户机队列226a以实现示例ZCBV-MPT技术的图2的示例虚拟NVMe设备。
图6示出了基于提交给图2的示例客户机队列的I/O命令来管理图2的示例影子队列,以实现结合图2所述的示例ZCBV-MPT技术的图2的示例虚拟NVMe设备。
图7示出了基于完成的I/O命令来管理图2的示例影子队列和示例客户机队列,以实现结合图2描述的示例ZCBV-MPT技术的图2的示例虚拟NVMe设备。
图8示出了可执行以定义图2和图4-图6的虚拟NVMe设备的接口以实现结合图2描述的示例ZCBV-MPT技术的示例机器可读指令。
图9示出了可执行以定义图2和图4-图6的虚拟NVMe设备的功能以实现结合图2描述的示例ZCBV-MPT技术的示例机器可读指令。
图10图示了实现示例零复制块虚拟化–半虚拟化I/O(ZCBV-PVIO)技术以向VM提供对物理NV存储器的访问的主机机器。
图11是表示可以执行以实现结合图2-9所述的示例ZCBV-MPT技术的示例机器可读指令的流程图。
图12是表示可以执行以实现结合图10所述的示例ZCBV-PVIO技术的示例机器可读指令的流程图。
图13是能够执行由图6、图7、图8、图9和/或图11表示的示例机器可读指令以实现本文公开的示例ZCBV-MPT技术和/或能够执行图12表示的示例机器可读指令以实现本文公开的示例ZCBV-PVIO技术的示例处理器平台。
这些图并未按比例绘制。只要有可能,贯穿(多个)附图和所附书面说明书,相同的附图标记将用于表示相同或相似的部分。
具体实施方式
本文公开的示例可以用于使用改善与访问虚拟化存储和存储器空间相关联的虚拟化性能的技术来处理来自虚拟机的命令。结合非易失性存储器快速(NVMe)设备的虚拟化来描述本文公开的示例。NVMe设备是经由NVMe协议与主机通信的数据存储设备,并使用非易失性存储器(例如,使用硫属化物玻璃的存储器设备、单阈值或多阈值级别NAND闪存、NOR闪存、3D闪存,三维(3D)交叉点存储器、铁电晶体管随机存取存储器(FeTRAM或FeRAM)、多级相变存储器(PRAM、PCM)、反铁电存储器、包含忆阻器技术的磁阻随机存取存储器(MRAM)、包括金属氧化物基底、氧空位基底和导电桥随机存取存储器(CB-RAM)的电阻式存储器、或自旋转移力矩(STT)-MRAM、基于自旋电子磁结存储器的设备、基于磁隧穿结(MTJ)的设备、基于DW(畴壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备、非易失性RAM(NVRAM)、电阻式随机存取存储器(ReRAM)、电阻式存储器、纳米线存储器,或者任何上述或其他存储器的组合)来实现。NVMe协议是由NVM快速有限公司开发的高性能可扩展的主机控制器接口,以供使用基于PCI
Figure BDA0002407345250000032
固态存储的企业和/或客户端系统使用。NVMe接口通常用于快速存储I/O。利用NVMe,操作系统(OS)可以通过将DMA请求放置在I/O队列中来发布I/O请求,并且NVMe驱动器可以利用多个I/O队列(例如,
Figure BDA0002407345250000031
OptaneTM设备支持16个I/O队列)以使用并行I/O处理来服务多个I/O请求。然而,本文公开的示例可以结合使用任何其他类型的主机控制器接口、总线接口、和/或传输协议的任何其他类型的NV存储器设备来实现。例如,本文公开的示例技术可以适于与由串行ATA国际组织定义的串行高级技术附件(SATA)快速(SATAe)总线接口协议和/或迷你-SATA(mSATA)总线接口协议一起使用。附加地或可替代地,本文公开的示例技术可适于与串行附连的小型计算机系统接口(SCSI)协议一起使用,该协议又称为SAS总线接口协议,并由国际信息技术标准委员会(INCITS)定义。在又另一示例中,本文公开的示例技术可适于与由英特尔公司定义的高级主机控制器接口(AHCI)总线接口协议一起使用。附加地或可替代地,本文中公开的技术可适于与当前可用的任何其他合适总线接口标准和/或源自将来发展的合适总线接口标准一起使用。
虚拟化技术涉及主管多个客户虚拟机(VM)的单个物理平台。为了分配硬件资源(如中央处理器(CPU)、网络接口卡(NIC)、存储、存储器、图形处理单元(GPU)等)的使用,开发了数个虚拟化技术,使得能够将此类物理硬件资源虚拟化为可分配虚拟资源。例如,单个物理CPU可以作为多个虚拟CPU分配给不同的VM。每个VM都将对应的(多个)虚拟CPU标识为其自己的(多个)CPU,但实际上每个VM只使用也由其他VM使用的同一底层物理CPU的一部分。类似地,单个物理存储设备可以作为多个虚拟数据存储分配给不同的VM。每个VM都可以独立地访问其分配的虚拟数据存储空间,而不依赖于其他VM,但是所有VM都通过使用与物理存储设备其他部分隔离或分区的物理存储设备的各个部分来访问同一底层物理存储设备。
现有的数据存储虚拟化技术基于旧的硬件技术(诸如基于磁的硬盘驱动器(HDD)存储和/或旧的慢速NAND固态驱动器(NAND-SSD)存储)。由此,现有的数据存储虚拟化技术基于现有的存储设备的能力,这些现有的存储设备的操作比近来开发的存储设备慢。由此,当较新的存储设备与较旧的虚拟系统一起使用时,数据访问性能受到基于现有的、较慢的存储设备开发的现有的数据存储虚拟化技术的限制。
图1图示了用于向客户机VM 102提供对被实现为NVMe设备的物理NV存储器104的访问的现有的PV块I/O服务。图1的现有的PV块I/O服务是存储/块I/O虚拟化解决方案。在图1中,客户机VM 102运行被表示为前端(FE)块驱动器106的半虚拟化驱动器。半虚拟化驱动器是能够经由原生设备驱动器直接访问硬件的驱动器,而无需中间主机操作系统(OS)来仿真半虚拟化驱动器的硬件。与半虚拟化不同,完全虚拟化使用在客户机VM中执行的完全虚拟化的驱动器。此类完全虚拟化的驱动器调用由主机OS仿真的虚拟硬件。主机OS仿真硬件、经由原生设备驱动器将调用转发到底层物理设备、从物理设备接收响应并经由仿真的硬件将响应转发到客户机VM的虚拟化驱动器。
在图1中,客户机VM 102可以使用基于内核的虚拟机(KVM)来实现,以及FE块驱动器106可以使用virtio块驱动器来实现,该virtio块驱动器106与在图1所示的主机OS(或服务OS)上作为虚拟机监视器(VMM)112(例如,管理程序)执行的输入/输出虚拟机(IOVM)110中运行的后端(BE)块服务108通信。Virtio是在半虚拟化管理程序(例如,VMM 112)中使用的网络和磁盘设备驱动器的虚拟化标准,在该半虚拟化管理程序(例如,VMM 112)中,只有客户机VM的设备驱动器(例如,图1的FE块驱动器106)“知道”它正在虚拟环境中运行。FE块驱动器106依赖于IOVM 110的主机侧文件系统114和/或原生块系统驱动器116从由物理NV存储器104实现的存储读取和/或写入/读取和/或写入到由物理NV存储器104实现的存储。
图1的现有的PV块I/O服务的示例处理流程涉及FE块驱动器106将读取请求放置在共享环形缓冲器120中以供BE块服务108访问和处理。基于由BE块服务108访问的读取请求,IOVM 110分配主机存储器缓冲器,并且原生块系统驱动器116将请求发送到物理NV存储器104以将所请求的数据读取到主机存储器缓冲器。物理NV存储器104执行直接存储器访问(DMA)以将所请求的数据写入主机存储器缓冲器。然后,如附图标记124所示,BE块服务108经由共享环形缓冲器120将数据从IOVM 110中的主机存储器缓冲器复制到客户机存储器缓冲器。然后,FE块驱动器106可以从客户机存储器缓冲器访问所请求的数据。然而,数据复制124由VMM 112在其上运行的主机机器126的CPU执行。由此,在存储器密集型复制操作期间,主机机器126的CPU资源可以变得过载,使得主机机器126的其他进程的性能降低。
针对诸如NV存储器之类的块设备的图1的此类数据复制124的资源和延迟成本对于传统硬件通常是可接受的,在传统硬件中,硬盘驱动器(HDD)和/或慢速NAND固态驱动器(SSD)的带宽最大为100s MB/s。对于此类传统硬件,客户机VM仍然能够通过权衡用于执行数据请求和复制所需的CPU周期,来实现接近原生物理存储设备的最大吞吐量。然而,当使用主机中的更新的、更快的存储设备(诸如可以实现2GB/s的数据传输速度的基于快速NAND-SSD和/或基于相变存储器(PCM)的
Figure BDA0002407345250000051
OptaneTM设备)时,此类处理和时间资源成为一个大问题。使用具有此类更新的、更快的存储设备的图1的现有技术,会导致处理器资源饱和,从而限制虚拟系统的虚拟化性能(客户机吞吐量相对于物理吞吐量)。另外,当与此类更新的、更快的存储设备一起使用时,与图1的现有的技术相关联的虚拟化开销的等待时间影响将负面地影响性能。
本文所公开的示例改善了与访问存储和/或存储器空间相关联的虚拟化性能。本文所公开的示例包括零复制块虚拟化-介导直通(ZCBV-MPT)技术和零复制块虚拟化-半虚拟化I/O(ZCBV-PVIO)技术。在示例ZCBV-MPT技术中,客户机VM运行原生NVMe设备驱动器,以通过将数据访问请求放置在客户机队列中来访问物理NVMe存储器。示例ZCBV-MPT技术还涉及VMM管理与客户机队列相对应的影子队列。为了改善数据访问性能,可以直接在硬件NVMe存储器控制器中执行影子队列,以便NVMe设备可以执行DMA操作以在NVMe存储器空间和此时可由在客户机VM中运行的原生NVMe设备驱动器访问的客户机存储器空间之间直接复制所请求的数据,而无需在批量数据路径中由VMM拦截。下文结合图2-图9和图11描述了ZCBV-MPT示例的进一步的细节。
示例ZCBV-PV IO涉及使用PV块IO(PV-IO)驱动器在NVMe存储器设备和可由客户机VM访问的客户机块缓冲器之间直接执行DMA操作。在示例ZCBV-PV IO技术中,客户机VM执行PV-IO驱动器。在一些示例中,PV-IO驱动器可以使用KVM virtio驱动器实现。在本文所公开的示例中,PV-IO驱动器利用优化的I/O接口以用于虚拟化,该PV-IO驱动器在IOVM(或主机)侧扩展NVMe驱动器。PV-IO驱动器使用客户机存储器缓冲器直接管理影子队列,并在物理NVMe设备中执行影子队列以执行DMA操作来在NVMe设备和客户机存储器缓冲器之间直接复制数据,而无需使用IOVM执行数据复制操作。下文结合图10和图12描述了ZCBV-PVIO示例的进一步的细节。
本文所公开的示例ZCBV技术消除了在虚拟化系统的VMM后端侧上执行数据复制操作的需要。结果,本文所公开的示例ZCBV技术改善了块设备I/O虚拟化的效率。除了减少CPU周期的使用(例如,用于在NVMe存储器与客户机VM存储器空间之间执行批量数据的复制操作)之外,本文所公开的示例ZCBV技术还改善了虚拟资源(例如,基于底层物理NVMe数据存储资源的虚拟数据存储资源)的响应性(例如,减少等待时间)。
图2图示了实现示例ZCBV-MPT技术以向VM 202a、202b提供对示例物理NV存储器206的访问的示例客户机VM(示出为客户机VM-A 202a和客户机VM-B 202b)和示例主机机器204。本文所公开的示例可以利用任何数量的客户机VM来执行。结合使用NVMe设备206实现的物理NV存储器206描述了图2的示例。然而,示例ZCBV-MPT技术可以替代地结合其它类型的NV存储器来实现。示例ZCBV-MPT技术在不牺牲使多个客户机VM能够使用单个物理NVMe设备的共享能力的情况下改善了数据访问性能。示例ZCBV-MPT技术涉及在客户机VM中执行原生NVMe设备驱动器,并针对性能关键的I/O命令(例如,数据访问请求)发起直接存储器访问(DMA)复制操作。示例ZCBV-MPT技术还拦截可能影响跨多个客户机VM的全局行为的管理命令、不需要由底层物理硬件处理的管理命令、和/或不需要与性能关键I/O命令相同的高性能处理的管理命令。示例ZCBV-MPT技术通过使用如下文所述的客户机队列和对应的影子队列来改善块I/O虚拟化的性能。对ZCBV-MPT技术的示例实现的实验室测试表明,与现有的I/O半虚拟化技术相比,性能改善了100+%。
在图2的所图示示例中,示例VMM 208在主机机器204上执行。示例VMM 208可以使用任何合适的主机OS和/或管理程序来实现。例如,VMM 208可以使用主机Linux/KVM OS来实现。示例主机机器204可以是任何物理计算机或服务器。在所图示的示例中,主机机器204包括NVMe设备206和示例易失性存储器210或与NVMe设备206和示例易失性存储器210电路连接。示例易失性存储器210可以使用任何合适的随机存取存储器(诸如,动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、双倍数据速率(DDR)SDRAM)、静态RAM(SRAM)等)来实现。
在所图示的示例中,每个客户机VM 202a、202b执行对应的客户机原生NVMe驱动器214a、214b。同样,在所图示示例中,VMM 208执行示例客户机队列管理器216、示例调解器218、示例影子队列管理器220、和示例主机原生NVMe驱动器222。在所图示示例中,NVMe驱动器214a、214b、222被标识为原生,因为在其中编程的I/O功能调用被构造成直接与诸如NVMe设备206之类的物理硬件设备对接(例如,直接与NVMe设备206的固件对接)。在所图示的示例中,客户机原生NVMe驱动器214a、214b与主机原生NVMe驱动器222相同。由此,原生NVMe驱动器214a、214b、222中的每一个都像其直接与物理NVMe设备进行对接一样来操作,即使只有主机原生NVMe驱动器222直接与物理NVMe设备206对接。
在所图示的示例中,客户机队列管理器216、调解器218、和影子队列管理器220实现虚拟NVMe设备224。NVMe设备224被标识为虚拟的,因为它看起来如同它是物理硬件一样与客户机原生NVMe驱动器214a、214b对接。由此,当客户机原生NVMe驱动器214a、214b与NVMe设备224通信时,客户机原生NVMe驱动器214a、214b表现得如同它们正在与物理硬件进行通信一样。然而,NVMe设备224在“知道”它不是物理硬件并且它不直接访问物理硬件(例如,NVMe设备206)的上下文中操作。在一些示例中,虚拟NVMe设备224可以使用快速仿真器(QEMU)主管的管理程序来实现以执行硬件虚拟化。示例虚拟NVMe设备224将来自客户机VM202a、202b的数据访问请求转换为适于由NVMe设备206服务的数据访问请求,以向客户机VM202a、202b提供从NVMe设备206所请求的数据。
在其他示例中,替代地,客户机原生NVMe驱动器214a、214b和主机原生NVMe驱动器222可以是与其中数据正在被访问的物理资源相对应的任何其他合适的原生非易失性存储器驱动器、任何其他合适的原生存储器驱动器和/或任何其他合适的原生硬件驱动器。同样,在其他示例中,替代地,虚拟NVMe设备224可以是与其中数据正在被访问的物理资源相对应的任何其他合适的虚拟非易失性存储器、任何其他合适的虚拟存储器、和/或任何其他合适的虚拟硬件。例如,尽管图2所图示示例的对应物理资源是NVMe设备206,但在其他示例中,对应物理资源可以是适合与本文所公开的示例一起使用的任何其他类型的非易失性存储器、任何其他类型的存储器和/或任何其他类型的物理硬件资源。除了NVMe接口标准之外或替代NVMe接口标准,本文中公开的示例也可以结合其它合适的接口标准来实现。例如,本文所公开的技术可与不同类型的总线接口标准(例如,SATAe总线接口协议、mSATA总线接口协议、SAS总线接口协议、AHCI总线接口协议等)一起使用,以增加与来自客户机VM的数据访问请求相关联的数据传输速度。例如,本文所公开的示例的实验室测试表明,将本文所公开的示例和(例如,在
Figure BDA0002407345250000081
OptaneTM存储器中实现的)3D交叉点存储器一起使用可以实现等于或大于2000兆字节/秒(MB/s)的数据传输速度。由此,相比于以较低的数据传输速度(例如,1350MB/s)从
Figure BDA0002407345250000082
Figure BDA0002407345250000083
OptaneTM存储器读取数据的现有技术,本文所公开的示例进行了改善。在其他实现方式中,本文中公开的示例技术可用于改善访问其他类型存储器中的数据和/或经由其他类型接口标准访问数据的客户机VM的数据传输速度。
使用虚拟NVMe设备224仿真一个或多个物理资源的优点在于,客户机VM 202a、202b中的客户机原生NVMe驱动器214a、214b不需要被修改成与主机原生NVMe驱动器222不同或与主机原生NVMe驱动器222操作不同。也就是说,客户机原生NVMe驱动器214a、214b可以与主机原生NVMe驱动器222相同,因为客户机原生NVMe驱动器214a、214b如同它们直接与正由虚拟NVMe设备224仿真的物理NVMe设备(例如,NVMe设备206)进行对接一样操作。由此,通过在此类附加的客户机VM中使用原生NVMe驱动器(例如,客户机原生NVMe驱动器214a、214b和/或主机原生NVMe驱动器222的副本),可以跨附加的客户机VM有效地缩放本文所公开的示例,而无需附加的软件和/或硬件开发来为此类附加的客户机VM定制NVMe驱动器。
示例客户机队列管理器216管理与客户机VM 202a、202b相对应的客户机队列226a、226b。例如,为了访问NVMe设备206中的数据,客户机VM202a、202b使用其客户机原生NVMe驱动器214a、214b来生成包括数据访问请求(例如,读取和/或写入请求)的I/O命令。在所图示示例中,客户机队列226a、226b使用环形队列或循环队列来实现。在其他示例中,可以使用任何其他合适的类型的队列。在所图示的示例中,数据访问请求基于客户机物理存储器地址。也就是说,因为客户机原生NVMe驱动器214a、214b如同它们直接与NVMe设备206对接一样操作,所以客户机原生NVMe驱动器214a、214b基于物理存储器地址的客户机版本(例如,客户机物理存储器地址)访问数据,客户机原生NVMe驱动器214a、214b将该物理存储器地址的客户机版本解释为NVMe设备206的物理存储器地址,即使客户机物理存储器地址不是NVMe设备206的实际物理存储器地址。
在所图示示例中,客户机队列管理器216从客户机VM 202a、202b的客户机原生NVMe驱动器214a、214b接收命令,并将这些命令提交给客户机队列226a、226b中对应的客户机队列。所图示示例的客户机队列226a、226b在VMM 208的存储器映射输入/输出(MMIO)寄存器中实现。然而,可以使用任何其他寄存器和/或存储器空间。所图示的示例的客户机队列管理器216还作为调度器来操作以在客户机队列226a、226b中的多个命令中的某些命令将由示例调解器218来服务时进行调度。示例调解器218同步客户机队列226a、226b和影子队列230a、230b,以使得主机原生NVMe驱动器222可以将来自影子队列230a、230b的命令提供给NVMe设备206。在所图示的示例中,为了将命令提供给NVMe设备206,主机原生NVMe驱动器222将影子队列230a、230b与NVMe设备206中的对应的物理队列231进行同步。在本文所公开的示例中,调解器218可以使用捕获技术和/或轮询技术来执行此类同步。在所图示的示例中,影子队列230a、230b和物理队列231使用环形队列或循环队列来实现。在其他示例中,可以使用任何其他合适的类型的队列。
在示例捕获技术中,调解器218通过捕获从客户机原生NVMe驱动器214a、214b到客户机队列226a、226b的提交来同步客户机队列226a、226b和影子队列230a、230b。在客户机队列226a、226b由MIMO寄存器来实现的示例中,通过捕获从客户机原生NVMe驱动器214a、214b提交给MMIO寄存器的命令来捕获到客户机队列226a、226b的提交。
在示例轮询技术中,调解器218使用专用CPU核/线程来轮询客户机队列226a、226b以用于更新。在此类示例中,提交给客户机队列226a、226b(例如,MIMO寄存器)的命令不被捕获。相反,示例调解器218使用RAM页来备份实现客户机队列226a、226b的客户机MMIO寄存器页。RAM页可以在易失性存储器210中实现和/或使用NVMe设备206中的寄存器空间来实现RAM页。以此方式,当客户机原生NVMe驱动器214a、214b写入(例如,提交命令给)客户机队列226a、226b或从客户机队列226a、226b中读取(例如,从客户机队列226a、226b中读取完成状态条目),直接利用RAM页来执行与客户机队列226a、226b的此类交互。示例调解器218使用检测线程来监测RAM页中的改变,并且响应于检测到由客户机原生NVMe驱动器214a、214b中任一者做出的改变而采取动作。
当示例调解器218捕获客户机队列226a、226b中提交的命令或基于轮询来获得所提交的命令时,它通过将客户机队列226a、226b中的命令的客户机物理存储器地址转换为基于主机物理存储器地址的命令来仿真对由示例NVMe设备206实现的物理硬件的对应的访问。在所图示的示例中,主机物理存储器地址是NVMe设备206的实际物理存储器地址。在所图示的示例中,为了执行客户机物理存储器地址与主机物理存储器地址之间的地址转换,调解器218包括和/或访问地址转换表(ATT)228。示例ATT 228包括主机物理存储器地址到对应的客户机物理存储器地址的映射。示例影子队列管理器220从示例调解器218接收经转换的命令,并将经转换的命令放置在对应的影子队列230a、230b中。所图示的示例的影子队列管理器220还作为调度器来操作以在影子队列230a、226b中的多个经转换的命令中的某些命令将由主机原生NVMe驱动器222来服务时进行调度。在一些示例中,影子队列230a、230b可以直接在NVMe设备106中生成。
示例主机原生NVMe驱动器222访问来自影子队列230a、230b的多个经转换的命令中的某些经转换的命令,并请求NVMe设备206对命令进行服务。在所图示的示例中,NVMe设备206包括位于单独主机存储器地址范围的物理数据存储232a、232b。每个物理数据存储232a、232b作为虚拟数据存储资源分配给客户机VM 202a、202b中对应的一个客户机VM。由此,包括与客户机VM-A 202a相对应的数据访问请求的经转换的I/O命令由主机原生NVMe驱动器222通过请求对数据存储A 232a中的数据的访问来处理。类似地,包括与客户机VM-A202a相对应的数据访问请求的经转换的I/O命令由主机原生NVMe驱动器222通过请求对数据存储B 232b中的数据的访问来处理。
在所图示的示例中,为了改善数据访问性能,NVMe设备206通过执行DMA操作233来服务来自主机原生NVMe驱动器222的数据访问请求,以在物理数据存储器232a、232b中的对应的物理数据存储器与对应的示例客户机存储器缓冲器234a、234b之间复制所请求的数据。以此方式,从主机机器204的(多个)CPU卸载批量数据传输操作。例如,包括此类数据访问请求的I/O命令还包括客户机存储器缓冲器234a、234b的物理存储器地址,DMA操作233应当将所请求的数据从NVMe设备206复制到客户机存储器缓冲器234a、234b/将所请求的数据从客户机存储器缓冲器234a、234b复制到NVMe设备206。例如,如果I/O命令是从NVMe设备206读取数据的数据访问请求,则DMA操作233将数据从NVMe设备206复制到客户机存储器缓冲器234a、234b中的对应的一个客户机存储器缓冲器。替代地,如果I/O命令是将数据写入NVMe设备206的数据访问请求,则DMA操作233将数据从客户机存储器缓冲器234a、234b中的对应的一个客户机存储器缓冲器复制到NVMe设备206。
在所图示的示例中,DMA操作233导致零CPU周期复制(零复制)操作,因为NVMe设备206与客户机存储器缓冲器234a、234b之间的批量数据传输不由主机机器204的CPU处理,并且因此,不将CPU周期负载放置在主机机器204上。另外,由DMA操作233执行的批量数据复制操作可以比由主机机器204的CPU处理复制操作快得多。
在所图示的示例中,客户机存储器缓冲器234a、234b中的每一个作为虚拟存储器资源分配给客户机VM 202a、202b中的对应的一个客户机VM。以此方式,客户机VM 202a、202b可以从客户机存储器缓冲器234a、234b访问所请求的数据。在一些示例中,来自客户机VM 202a、202b的、请求读取和/或写入NVMe设备206中的先前已复制到客户机存储器缓冲器234a、234b的数据的后续I/O命令被虚拟NVMe设备224拦截,而不被转发到影子队列230a、230b,并且虚拟NVMe设备224提供对客户机存储器缓冲器234a、234b中的数据的请求访问,而不是从NVMe设备206重新请求数据。以这种方式,因为对易失性存储器的读取/写入速度通常比对NV存储器的读取/写入速度快,所以对已经驻留在客户机存储器缓冲器234a、234b中的数据的访问将比从NVMe设备206重新请求数据相对快。另外,通过拦截请求访问已经位于客户机存储器缓冲器234a、234b中的数据的此类后续I/O命令,虚拟NVMe设备224节省了NMVe设备206的资源以服务其它性能关键的数据访问请求。因此,虚拟NVMe设备224在此类I/O命令从NVMe设备206请求客户机存储器缓冲器234a、234b中不可用的数据时通过转换客户机I/O命令并将经转换的I/O命令提交给影子队列230a、230b来改善数据访问请求的性能,并截取请求客户机存储器缓冲器234a、234b中可用的数据的客户机I/O命令而无需从NVMe设备206对其进行请求。
在所图示的示例中,调解器218使用ATT 228在主机物理存储器地址和与客户机存储器缓冲器234a,234b相对应的客户机物理存储器地址之间进行转换,使得虚拟NVMe设备224可以向客户机原生NVMe驱动器214a、214b提供对客户机存储器缓冲器234a、234b中的对应的客户机存储器缓冲器中的数据的访问。附图标记242所指示的虚线示出了影子队列230a、230b对应于NVMe设备206中的各个物理数据存储232a、232b。另外,附图标记244所指示的虚线示出了客户机队列226a、226b对应于易失性存储器210中的相应的物理数据存储234a、234b。
图3是可用于实现结合图2描述的示例ZCBV-MPT技术的PCIe总线上的NVMe协议的示例视图。示例视图显示示例PCI配置寄存器302、示例命令寄存器304、示例管理队列306、和示例I/O队列307。示例PCI配置寄存器302、示例命令寄存器304、示例管理队列306、和示例I/O队列307可由图2的虚拟NVMe设备224访问,以与图2的主机原生NVMe驱动器222通信。所图示示例的PCI配置寄存器302存储与图2的NVMe设备206中的物理数据存储相对应的基址寄存器(BAR)。例如,BAR0寄存器308a存储命令寄存器304的基本存储器地址的下半部分(例如,64位长存储器地址的低32位),以及BAR1寄存器308b存储命令寄存器304的基本存储器地址的上半部分(例如,64位长的存储器地址的高32位)。
使用环形队列或循环队列来实现示例管理队列306和示例I/O队列307。然而,可以替代地使用任何其他类型的队列。图2的客户机队列226a、226b,影子队列230a、230b以及物理队列231包括结构上与示例管理队列306相似的管理队列,并且包括结构上与示例I/O相似的I/O队列。所图示的示例的管理队列306包括管理提交队列(ASQ)的提交队列0(SQ0)(即,ASQ/SQ0312)和管理完成队列(ACQ)的完成队列(CQ0)(即,ACQ/CQ0 314)。示例I/O队列307可以实现图2的影子队列230a、230b,并且在结构上与客户机队列226a、226b相似。所图示示例的I/O队列307包括I/O提交队列316和I/O完成队列318。
示例命令寄存器304、管理队列306、和I/O队列307使用MMIO寄存器实现。然而,可以替代地使用任何其他类型的寄存器和/或存储器空间。所图示示例的命令寄存器304包括用于将命令提交给管理队列306和/或I/O队列307以实现示例ZCBV-MPT技术的地址和/或门铃(DBL)。例如,命令寄存器304存储ASQ存储器地址322(ASQ/SQ0 312在该处开始)和ACQ存储器地址324(ASQ/CQ0 314在该处开始)。对于在客户机队列226a、226b中实现的管理队列,ASQ存储器地址322和ACQ存储器地址324是虚拟存储器地址。对于在影子队列230a、230b和物理队列231中实现的管理队列,ASQ存储器地址322和ACQ存储器地址324是物理存储器地址。尽管未示出,命令寄存器304还存储其它信息以促进其它设备功能。
在所图示示例中,控制寄存器304中的SQ0门铃(DBL)尾部(SQ0TDBL)326存储ASQ/SQ0 312的尾部索引值。在本文所公开的示例中,DBL作为队列改变通知操作,以通知已对队列作出了改变。虚拟NVMe设备224可以基于SQ0TDBL 326来将管理命令写入ASQ/SQ0 312的尾部。写入ASQ/SQ0 312的尾部将管理命令提交给主机原生NVMe驱动器222。在所图示示例中,控制寄存器304中的CQ0门铃(DBL)头部(CQ0HDBL)328存储ASQ/CQ0 314的头部索引值。虚拟NVMe设备224可以基于CQ0HDBL 328从ASQ/CQ0 314的头部读取管理命令的完成状态。另外,虚拟NVMe设备224写入ASQ/CQ0 314的头部,以通知主机原生NVMe驱动器222虚拟NVMe设备224已读取完成状态。当在客户机队列226a、226b中实现时,SQ0TDBL 326是类似于ASQ/SQ0 312的客户机管理提交队列的虚拟尾部索引值,并且CQ0HDBL 328是类似于ASQ/CQ0314的客户机管理完成队列的虚拟头部索引值。当在影子队列230a、230b和物理队列231中实现时,SQ0TDBL 326是类似于ASQ/SQ0 312的影子或物理管理提交队列的物理尾部索引值,并且CQ0HDBL 328是类似于ASQ/CQ0 314的影子或物理管理完成队列的物理头部索引值。
在所图示示例中,控制寄存器304中的SQ1门铃(DBL)尾部(SQ1TDBL)330存储I/O提交队列316的尾部索引值。虚拟NVMe设备224可以基于SQ1TDBL 330将I/O命令(例如,数据访问请求)写入I/O提交队列316的尾部。写入I/O提交队列316的尾部将I/O命令提交给主机原生NVMe驱动器222。在所图示示例中,控制寄存器304中的CQ1门铃(DBL)头部(CQ1HDBL)索引值332存储I/O完成队列318的头部存储器地址。虚拟NVMe设备224可以基于CQ1HDBL存储器地址332来从I/O完成队列318的头部读取I/O命令的完成状态。另外,虚拟NVMe设备224写入I/O完成队列318的头部,以通知主机原生NVMe驱动器222虚拟NVMe设备224已读取完成状态。当在客户机队列226a、226b中实现时,SQ1TDBL 330是类似于I/O提交队列316的客户机I/O提交队列的虚拟尾部索引值,并且CQ1HDBL 332是类似于I/O完成队列318的客户机I/O完成队列的虚拟头部索引值。当在影子队列230a、230b和物理队列231中实现时,SQ1TDBL330是类似于I/O提交队列316的影子或物理I/O提交队列的物理尾部索引值,而且CQ1HDBL332是类似于I/O完成队列318的影子或物理I/O完成队列的物理头部索引值。
图4示出了基于上文结合图2所述的示例ZCBV-MPT技术来促进执行DMA数据传输(例如,零复制操作)的图2的示例调解器218和示例虚拟NVMe设备224。在图4所图示的示例中,利用客户机原生NVMe驱动器214a和由客户机原生NVMe驱动器214a访问的对应的客户机队列226a的代表性视图来示出客户机VM-A 202a。图4的所图示的示例还示出了对应的影子队列230a。所图示的示例的影子队列230a被映射到位于NVMe设备206(图2)中的物理队列231。例如,当影子队列管理器220对影子队列230a作出改变时,主机原生NVMe驱动器222(图2)将改变传播或同步到物理队列231。
在所图示的示例中,客户机队列226a、影子队列230a、和物理队列231包括管理队列(例如,ASQ,ACQ)和I/O队列(IOSQ,IOCQ)。管理队列用于管理虚拟NVMe设备224、管理队列、获取/设置驱动器配置信息等的管理命令。I/O队列用于I/0命令(诸如,访问NVMe设备206(图2)中的数据的数据访问请求)。管理队列由主机机器204(图2)上主管的所有VM共享。物理管理队列的大小可以不同于其对应的客户机管理队列的大小。I/O队列静态地被划分成多个组,并且每个组被分配给对应的VM独占使用。另外,物理队列231的一个I/O队列以一对一的方式唯一地对应于影子队列230a的一个影子I/O队列和客户机队列226a的一个客户机I/O队列。另外,物理I/O队列及其对应的影子队列和客户机I/O队列的大小相同。
管理队列用于管理NVMe设备206。例如,如果客户机VM 202a想要使用虚拟NVMe设备224,则客户机VM 202a将消息发送到管理队列(例如,客户机队列226a的ASQ)以获得虚拟NVMe设备224的能力。在本文所公开的示例中,为了节省底层物理硬件(例如NVMe设备206)的资源以更好地处理性能关键的I/O命令,客户机队列管理器216(图2)处理客户机队列226a中的管理命令,以确定哪些管理命令需要被转发到影子队列230a(并且,因此物理队列231)以及哪些管理命令可以被虚拟NVMe设备224拦截和处理而无需被转发到影子队列230a。此确定基于管理命令的类型。例如,两种类型的管理命令是强制性命令和可选的命令(例如,虚拟异步事件)。可选的命令或虚拟异步事件对物理设备没有影响(例如,它们不旨在由NVMe设备206完成),并且因此,不会从客户机队列226a被转发到影子队列230a和物理队列231。可选的命令的示例是“标识”命令,客户机VM 202a可以使用该“标识”命令来请求虚拟NVMe设备224的标识。对于确实影响物理设备操作的命令(例如,访问(改变/请求)虚拟NVMe设备224不知道的物理设备的配置),客户机队列管理器216将这些命令转发到影子队列230a和物理队列231的管理队列(例如,ASQ)。然而,在转发管理命令之前,调解器218执行如下文结合图5和图6所描述的转换,以确保管理命令是安全的(例如,确保管理命令在物理队列231的管理队列中不会干扰来自另一个VM(诸如图2的客户机VM 202b)的另一个客户机队列的命令。例如,如果管理命令是“删除I/O队列”,则调解器218确认要被删除的I/O队列是否属于发送删除命令的客户机队列226a。如果否,则另一个客户机VM的I/O队列被删除是可能的。由此,调解器218拦截“删除I/O队列”管理命令,而无需将其转发到影子队列230a和物理队列231。
在所图示的示例中,调解器218转换来自客户机队列226a的命令并将经转换的命令复制到影子队列230a。为了将来自客户机队列226a的命令转换到影子队列230a,调解器218将虚拟参数(例如,要被访问的数据的虚拟存储器地址、由虚拟化资源(诸如客户机VM202a、202b)使用的客户机队列226a、226b等的虚拟队列标识符)转换为物理参数(例如,要被访问的数据的物理存储器地址、由物理资源(诸如NVMe设备206)使用的影子队列230a、230b和/或物理队列231等的物理队列标识符)。在所图示的示例中,调解器218将客户机物理存储器地址(GPA)转换为主机物理存储器地址(HPA)。示例GPA是与虚拟NVMe设备224相对应的仿真的物理存储器地址,使得虚拟NVMe设备224如同其是实际物理设备一样操作。当客户机原生NVMe驱动器214a指定要在NVMe设备206中被访问的数据时,示例GPA用作要被访问的数据的仿真的物理存储器地址。示例HPA由主机原生NVMe驱动器222使用来指定NVMe设备206中数据的实际物理位置。例如,调解器218可以通过执行示例虚拟物理存储器地址到客户机物理存储器地址转换和示例客户机物理存储器地址到主机物理存储器地址转换来转换来自客户队列226a的命令。该示例虚拟物理存储器地址到客户机物理存储器地址转换涉及调解器218将要被访问的数据的虚拟存储器地址转换到与虚拟NVMe设备224相对应的对应GPA。示例客户机物理存储器地址到主机物理存储器地址转换涉及调解器218将GPA转换为供NVMe设备206使用的对应的HPA。示例调解器218还将客户机逻辑块地址(GLBA)转换为主机逻辑块地址(HLBA)。客户机原生NVMe驱动器214a使用GLBA来指定数据的逻辑地址。主机原生NVMe驱动器222使用HLBA来指定数据的逻辑地址。示例调解器218还将客户机队列标识符(GQID)(例如,客户机队列226a、226b的虚拟队列标识符)转换为主机队列标识符(HQID)(例如,影子队列230a、230b和/或物理队列231的物理队列标识符)。客户机原生NVMe驱动器214a使用GQID来指定客户机队列226a。主机原生NVMe驱动器222使用HLBA来指定影子队列232a。调解器218还可以执行一个或多个附加的或替代的参数的转换。在所图示的示例中,调解器218和影子队列管理器220一起工作以创建影子队列230a,以将新的经转换的命令提交给NVMe设备206。在图4所图示的示例中,如上文结合图2所述,由主机原生NVMe驱动器222处理影子队列230a中的经转换的I/O命令(例如,经转换的数据请求),使得图2的NVMe设备206执行DMA操作233(例如,零复制操作)以在NVMe设备206和请求客户机VM 202a的客户机存储器缓冲器234a之间复制数据。
图5示出了仿真PCI配置并管理图2的示例客户机VM-A 202a的客户机队列226a以实现示例ZCBV-MPT技术的图2的示例虚拟NVMe设备224。在图5所图示的示例中,虚拟NVMe设备224管理客户机PCI配置502和客户机命令寄存器504。所图示的示例的客户PCI配置502在结构和操作上与图3的PCI配置302相似。然而,在图5所图示的示例中,客户机PCI配置502由虚拟NVMe设备224仿真,以用作客户机VM 202a的客户机原生NVMe驱动器214a的虚拟PCI接口。例如,客户机PCI配置502包括由客户机原生NVMe驱动器214a解释为命令寄存器304的基址寄存器的BAR。以此方式,客户机原生NVMe驱动器214a对访问PCI总线作出的请求被虚拟NVMe设备224捕获,该虚拟NVMe设备224使用客户机PCI配置502来仿真客户机原生NVMe驱动器214a对PCI总线的访问。
客户机命令寄存器504在结构和操作上与上文结合图3所述的命令寄存器304相似。然而,由虚拟NVMe设备224仿真客户机命令寄存器504,以供客户机队列管理器216和客户机原生NVMe驱动器214a使用以访问客户机队列226a。以此方式,写入客户机队列226a的命令被虚拟NVMe设备224捕获,以仿真对底层物理资源(诸如图2的NVMe设备206)的访问。在所图示的示例中,调解器218将经转换的命令从客户机队列226a分派给影子队列230a。这在图5所示的示例中被显示为调解器218将微操作(Qop)通知508发送到影子队列管理器220。以此方式,主机原生NVMe驱动器222可以服务来自影子队列230a的命令。在所图示的示例中,主机原生NVMe驱动器222使用主机命令寄存器510来标识物理队列231的存储器映射的位置,使得NVMe驱动器222和NVMe设备206可以服务同步到物理队列231的命令。
当主机原生NVMe驱动器222完成命令时,主机原生NVMe驱动器222将完成写入影子队列230a。以此方式,影子队列管理器220响应于完成被写入影子队列230a而将DBL通知514发送到调解器218。示例调解器218转换来自影子队列230a的完成队列条目,并将经转换的完成队列条目写入客户机队列226a。然后,示例客户机原生NVMe驱动器214a从客户机队列226a访问经转换的完成队列条目。例如,完成队列条目可以向客户机原生NVMe驱动器214a指示从NVMe设备206请求的数据被存储在与客户机VM 202a相对应的图2的存储器缓冲器234a中。
图6示出了基于提交给图2的示例客户机队列226a的I/O命令(例如,数据访问请求)来管理图2的示例影子队列230a和示例客户机队列226a,以实现本文所公开的示例ZCBV-MPT技术的图2的示例虚拟NVMe设备224。尽管结合处理I/O命令描述了图6的示例,但是可以使用类似的操作来处理管理命令。图6的示例可以用于服务由客户机VM 202a写入客户机队列226a的I/O命令(例如,请求访问图2的NVMe设备206中的数据)。图6的示例示出表示由虚拟NVMe设备224执行的操作的多个块。示例块表示可由一个或多个处理器(例如,图13的(多个)处理器1312)执行以实现对应的操作的机器可读指令。在所图示的示例中,客户机队列管理器216(图2)捕获对提交队列DBL(SQDBL)条目的改变(框602)。例如,SQDBL条目用作客户机原生NVMe驱动器214a将I/O命令已添加到客户机队列226a的通知。
示例客户机队列管理器216从客户机队列226a(框604)的I/O提交队列(IOSQ)中复制I/O命令。示例调解器218(图2)解析I/O命令(框606)。例如,调解器218标识包括GPA、GLBA、GQID等的I/O命令的地址部分。示例调解器218转换I/O命令(框608)。例如,调解器218将GPA转换为HPA、将GLBA转换为HLBA、将GQID转换为HQID等。影子队列管理器220(图2)将经转换的I/O命令写入影子队列230a(框610)。例如,影子队列管理器220将经转换的I/O命令写入由影子队列230a的HQID标识的对应的IOSQ。客户机队列管理器216修改多个客户机队列226a中的对应的一个客户机队列的DBL寄存器值(框612)。例如,客户机队列管理器216修改与客户机队列226a的IOSQ相对应的DBL寄存器值,以确认位于其中的I/O命令已与影子队列230a进行同步。影子队列管理器220修改多个物理队列231中的对应的一个物理队列的DBL寄存器值(框614)。例如,影子队列管理器220修改与物理队列231的IOSQ相对应的DBL寄存器值,以确认位于其中的I/O命令已与客户机队列230a进行同步。
图7示出了基于提交给影子队列230a的、指示完成的I/O命令(例如,数据访问请求)的完成状态条目来管理图2的示例影子队列230a和示例客户机队列226a,以实现本文所公开的示例ZCBV-MPT技术的图2的示例虚拟NVMe设备224。尽管结合处理I/O命令描述了图7的示例,但是可以使用类似的操作来处理管理命令。在上文结合图6描述的示例过程处理I/O命令之后,可以使用图7的示例。例如,如果I/O命令是对访问图2的NVMe设备206中的数据(例如,读取/写入数据)的请求,则图7的示例用于在I/O命令完成时通知客户机VM 202a。例如,如果I/O命令是从NVMe设备206读取数据的数据访问请求,则在I/O命令完成时,客户机VM 202a可以访问其客户机存储器缓冲器234a中所请求的数据(图2)。替代地,如果I/O命令是将数据写入NVMe设备206的数据访问请求,则该I/O命令的完成通知客户机VM 202a其I/O命令使得成功地写入NVMe设备206。图7的示例示出表示由虚拟NVMe设备224执行的操作的多个块。示例块表示可由一个或多个处理器(例如,图13的(多个)处理器1312)执行以实现对应的操作的机器可读指令。
在所图示的示例中,在完成示例DMA操作233(图2和图4)之后,影子队列管理器220(图2)响应于主机原生NVMe驱动器222将完成状态提交给影子队列230a的IOCQ来检测中断(框702)。例如,完成状态由主机原生NVMe驱动器222生成,以指示已经服务并完成I/O命令。示例调解器218(图2)解析完成状态条目(框704)。例如,调解器218标识完成状态条目的包括GPA、GLBA、GQID等的地址部分。示例调解器218转换完成状态条目(框706)。例如,调解器218将HPA转换为GPA、将HLBA转换为GLBA、将HQID转换为GQID等。客户机队列管理器216(图2)将经转换的完成状态条目写入客户机队列226a的IOCQ(框708)。例如,客户机队列管理器216将经转换的完成状态条目写入由客户机队列226a的GQID标识的对应的IOCQ。客户机队列管理器216修改多个客户机队列226a中的对应的一个客户机队列的DBL寄存器值(框710)。例如,客户机队列管理器216修改与客户机队列226a的IOCQ相对应的DBL寄存器值,以确认位于其中的完成状态条目已与影子队列230a进行同步。影子队列管理器220修改多个物理队列231中的对应的一个物理队列的DBL寄存器值(框712)。例如,影子队列管理器220修改与物理队列231的IOCQ相对应的DBL寄存器值,以确认位于其中的完成状态条目已与客户机队列226a进行同步。在所图示的示例中,客户机队列管理器216断言客户机中断(框714)。例如,如果为客户机VM 202a启用中断,则客户机队列管理器216使用此类客户机中断来通知客户机原生NVMe驱动器214a I/O命令已经完成。
图8示出了可执行以定义图2和图4-图6的虚拟NVMe设备224的接口以实现本文所公开的示例ZCBV-MPT技术的示例机器可读指令。在图8所图示的示例中,物理资源定义部分802定义要分配给虚拟NVMe设备224的NVMe设备206(图2)的物理参数。例如,物理资源定义部分802定义物理LBA的开始(例如,HLBA的开始)、扇区的数量、和扇区大小。同样在图8的示例中,队列映射部分804定义影子队列230a、230b与物理队列231的对应的物理队列之间的映射(图2和图4-图7)。
图9示出了可执行以定义图2和图4-图6的虚拟NVMe设备224的功能以实现本文所公开的示例ZCBV-MPT技术的示例机器可读指令。例如,这些功能包括影子完成队列创建功能902以供虚拟NVMe设备224在物理队列231(图2和图4-图7)中的NVMe设备206(图2)生成完成状态条目时使用以创建影子完成队列(例如IOCQ或ACQ)。示例功能还包括影子提交队列创建功能904以供虚拟NVMe设备224在客户机原生NVMe驱动器214a、214b(图2)将命令(例如I/O命令或管理命令)提交给影子队列226a、226b(图2)时使用以创建影子提交队列(例如IOSQ或ASQ)。示例功能还包括影子完成队列删除功能906以供虚拟NVMe设备224在虚拟NVMe设备224从影子队列226a、226b检索完成状态条目时使用以删除影子完成队列(例如IOCQ或ACQ)。示例功能还包括影子提交队列删除功能908以供虚拟NVMe设备224在NVMe设备206已经处理/完成命令(例如I/O命令或管理命令)时使用以删除影子提交队列(例如IOSQ或ASQ)。示例功能还包括影子完成队列提交功能910以供虚拟NVMe设备224使用以将完成队列条目从影子队列226a、226b转换和复制到客户机队列226a、226b。
图10图示了实现向VM(例如,客户机VM 1004)提供对物理NV存储器的访问的示例ZCBV-PVIO技术的主机机器1002。在所图示的示例中,主机机器1002执行示例VMM 1006,该示例VMM 1006可以使用主机Linux/KVM OS或任何其他合适的主机OS或管理程序来实现。然而,本文所公开的示例ZCBV-PVIO技术绕过VMM 1006以提供比使用访问NV存储的现有的虚拟化技术来实现的对NVMe设备106访问的更快的对NVMe设备106访问。图10的示例ZCBV-PVIO技术涉及在客户机VM 1002中执行PVIO FE块驱动器1008以及在IOVM 1014中执行BE块服务驱动器1012,以使用NVMe设备206和位于易失性存储器1024中的客户机存储器1022之间的DMA操作1018来实现零复制数据传输。
在图10所图示的示例中,PVIO FE块驱动器1008可以使用具有利用虚拟化优化的接口的任何合适的PVIO FE块驱动器来实现。示例PVIO FE块驱动器1008使用共享环形缓冲器1026(或循环形缓冲器)在客户机VM 1002与IOVM 1014之间通信。然而,可以替代地使用任何其他类型的缓冲器。在所图示的示例中,在系统存储器(例如,主机机器1002的系统存储器)中创建共享环形缓冲器1026。然而,在其他示例中,可以在任何其他存储器中创建共享环形缓冲器。所图示的示例的共享环形缓冲器1026包括I/O操作描述符,该I/O操作描述符DMA操作1018要将来自NVMe设备206的数据复制(例如,执行批量数据传输)到的客户机存储器缓冲器1022中的对应的一个客户机存储器缓冲器的存储器地址空间/将来自客户机存储器缓冲器1022中的对应的一个客户机存储器缓冲器的数据复制(例如,执行批量数据传输)到的NVMe设备206的存储器地址空间。
在图10所图示的示例中,BE块服务驱动器1012从共享环形缓冲器1026接收指示PVIO FE块驱动器1008已将I/O请求提交给共享环形缓冲器1026的虚拟中断请求(IRQ)通知。在其它示例中,替代地,PVIO FE块驱动器1008可以轮询共享环形缓冲器1026以获取新的I/O请求而不是使用虚拟IRQ通知。在所图示的示例中,示例BE块服务驱动器1012的示例缓冲器接口1042访问共享环形缓冲器1026中的I/O请求,以及BE块服务驱动器1012的示例队列接口1044与由IOVM 1014执行的示例原生NVMe驱动器1032一起工作,来为I/O请求创建I/O队列1034。在一些示例中,队列接口1044可以同时创建多个I/O队列1034以服务来自客户机VM 1002的多个I/O请求。示例I/O队列1034可以使用环形队列或循环队列来实现。然而,可以替代地使用任何其他类型的队列。示例I/O队列1034可以在主机机器1002的系统存储器和/或任何其它合适的存储器中创建。在所图示的示例中,BE块服务驱动器1012的示例转换器1046将I/O请求的虚拟参数(例如,客户机参数)转换为物理参数(例如,主机参数)。例如,示例转换器1046可以将映射到NVMe设备206中的物理位置的虚拟存储器地址转换为NVMe设备206中那些物理位置的物理存储器地址。在所图示的示例中,I/O请求包括在I/O队列1034中提交的DMA描述符,以标识对应的客户机存储器缓冲器1022的主机物理地址。以此方式,I/O队列1034将I/O请求及其DMA描述符提交给NVMe设备206,使得NVMe设备206可以通过直接访问相应的客户机存储器缓冲器1022的主机物理地址来使用DMA描述符来执行DMA操作1018以用于请求数据的批量数据传输。在DMA操作1018之后,BE块服务驱动器1012的示例通知器1048通知客户机VM 1002I/O请求的完成。
通过执行DMA操作1018,NVMe设备206直接访问客户机存储器缓冲器1022,绕过由VMM 1006对NVMe设备206与客户机存储器缓冲器1022之间的批量数据传输的截取。这在图10所图示的示例中通过表示VMM绕过I/O队列1034与客户机存储器缓冲器1022之间以及共享环形缓冲器1026与客户机存储器缓冲器1022之间的通信1038的虚线来示出。例如,从客户机VM 1002和共享环形缓冲器1026的角度来看,图10的示例ZCBV-PVIO技术导致虚拟DMA操作1042,因为可以使用客户机存储器缓冲器1022快速地访问数据,而不需要经由VMM1006使用冗长的数据传输过程。
虽然结合图2-图9公开了实现ZCBV-MPT技术的示例,以及结合图10公开了实现BV-PVIO技术的示例方式,但是图2-图10中所图示的元件、过程和/或设备中的一个或多个可以以任何其他的方式被组合、划分、重新布置、省略、消除和/或实现。进一步地,示例客户机原生驱动器214a、214b(图2)、示例虚拟NVMe设备224(图2)、示例客户机队列管理器216(图2)、示例调解器218(图2)、示例阴影队列管理器220(图2)、示例主机原生NVMe驱动器222(图2)、示例ATT 228(图2)、示例PVIO FE块驱动器1008(图10)、示例BE块服务驱动器1012(图10)、示例缓冲器接口1042(图10)、示例队列接口1044(图10)、示例转换器1046(图10)、示例通知器1048(图10)、和/或示例原生NVMe驱动器1032(图10)可以通过硬件、软件、固件和/或硬件、软件、和/或固件的任何组合来实现。因此,例如,示例客户机原生驱动器214a、214b(图2)、示例虚拟NVMe设备224(图2)、示例客户机队列管理器216(图2)、示例调解器218(图2)、示例阴影队列管理器220(图2)、示例主机原生NVMe驱动器222(图2)、示例ATT 228(图2)、示例PVIO FE块驱动器1008(图10)、示例BE块服务驱动器1012(图10)、示例缓冲器接口1042(图10)、示例队列接口1044(图10)、示例转换器1046(图10)、示例通知器1048(图10)、和/或示例原生NVMe驱动器1032(图10)中的任何一个可以由一个或多个模拟或数字电路、逻辑电路、(多个)可编程处理器、(多个)专用集成电路(ASIC)、(多个)可编程逻辑器件(PLD)和/或(多个)现场可编程逻辑器件(FPLD)来实现。当阅读到涵盖纯软件和/或固件实现的本专利的装置或系统权利要求中的任一项时,示例客户机原生驱动器214a、214b(图2)、示例虚拟NVMe设备224(图2)、示例客户机队列管理器216(图2)、示例调解器218(图2)、示例阴影队列管理器220(图2)、示例主机原生NVMe驱动器222(图2)、示例ATT 228(图2)、示例PVIO FE块驱动器1008(图10)、示例BE块服务驱动器1012(图10)、示例缓冲器接口1042(图10)、示例队列接口1044(图10)、示例转换器1046(图10)、示例通知器1048(图10)、和/或示例原生NVMe驱动器1032(图10)中的至少一个由此被明确地限定为包括包含该软件和/或固件的非暂态计算机可读存储设备或存储盘(诸如存储器、数字多功能盘(DVD)、紧凑盘(CD)、蓝光盘等等)。又进一步地,示例ZCBV-MPT技术和/或ZCBV-PVIO技术可包括除了在图2-图10中所示的这些元件、过程和/或设备之外或代替在图2-图10中所示的这些元件、过程和/或设备的一个或多个元件、过程和/或设备,和/或可包括所示的元件、过程和设备中的任何或所有中的超过一个。
在本文公开的示例中,用于访问被提交给图2的客户机队列226a、226b的命令的命令访问装置可以由图2的客户机队列管理器216来实现。另外,用于访问被提交给图10的共享环形缓冲器1026的命令的示例命令访问装置可以由图10的缓冲器接口1042来实现。在本文所公开的示例中,用于生成经转换的命令的转换装置可以由图2的调解器218和/或图10的转换器1046来实现。在本文所公开的示例中,用于将经转换的命令提交给图2的影子队列230a、230b的命令提交装置可以由调解器218来实现。另外,用于将经转换的命令提交给图10的I/O队列1034的示例命令提交装置可以通过图10的队列接口1044来实现。在本文所公开的示例中,用于将完成状态条目提交给图2的客户机队列226a、226b的完成提交装置可以由客户机队列管理器216来实现。另外,用于将完成状态条目提交到图10的共享环形缓冲器1026的示例完成提交装置可以由图10的缓冲器接口1042来实现。在本文所公开的示例中,队列创建装置可以由图2的客户机队列管理器216来实现以用于创建客户机队列226a、226b、可以由图2的影子队列管理器220和/或调解器218来实现以用于创建影子队列230a、230b、和/或可以由图10的队列接口1042和/或图10的原生NVMe驱动器1032来实现以创建I/O队列1034。在本文所公开的示例中,用于确定命令是否要由物理资源处理的命令拦截装置(例如,图2的NVMe设备206)可以由客户机队列管理器216来实现。在所图示的示例中,用于将由客户机VM提交的命令的完成通知给客户机VM的完成状态通知装置可以由图10的通知器1048来实现。
图11示出了表示用于实现图2-图9的ZCBV-MPT技术的示例机器可读指令的流程图,以及图12示出了表示用于实现图10的ZCBV-PVIO技术的示例机器可读指令的流程图。在这些示例中,机器可读指令实现用于由一个或多个处理器执行的程序,所述一个或多个处理器例如下面结合图13讨论的示例处理器平台1300中示出的(多个)处理器1312。程序能以存储于诸如CD-ROM、软盘、硬驱动器、数字多功能盘(DVD)、蓝光盘或与处理器1312相关联的存储器之类的非暂态计算机可读存储介质上的软件来具体化,但是整个程序和/或其部分可替代地由除了(多个)处理器1312之外的设备执行,和/或以固件或专用硬件来具体化。此外,尽管参考图11和图12中所图示的流程图描述了示例程序,但可以替代地使用实现示例ZCBV-MPT技术和/或示例ZCBV-PVIO技术的许多其他方法。例如,可改变框的执行次序,和/或可改变、消除或组合所描述的框中的一些框。附加地或替代地,可由被结构化为执行对应的操作而不执行软件或固件的一个或多个硬件电路(例如,分立和/或集成模拟和/或数字电路、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路等)来实现框中的任何框或所有框。
如上文所提及,可以使用存储于非暂态计算机和/或机器可读介质上的经编码的指令(例如,计算机和/或机器可读指令)实现图11和图12的示例过程,该非暂态计算机和/或机器可读介质例如:硬盘驱动器、闪存、只读存储器、紧凑盘、数字多功能盘、高速缓存、随机存取存储器和/或在其中信息被存储达任何持续时间(例如,在扩展时间段内、永久地、达简短的实例、用于临时缓冲和/或用于对信息的高速缓存)任何其他存储设备或存储盘。如本文中所使用,术语非暂态计算机可读介质被明确地限定为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号并排除传输介质。如本文所使用的,“包括(including)”和“包含(comprising)”(及其所有形式和时态)用作开放式术语。因此,每当权利要求列出跟随任何形式的“包含”或“包括”(例如,包括、包含等)的任何内容时,要理解的是,附加的要素、项等可以存在而不超出对应权利要求的范围。如本文所使用,当短语“至少”被用作权利要求的前序部分中的过渡术语时,其与术语“包含”和“包括”方式相同是开放式的。
结合图2的客户机VM-A 202a描述了图11的示例。然而,图11的示例可以使用客户机VM-B 202b、任何其他客户机VM和/或多个客户机VM同时实现。图11的程序从框1100处开始,在框1100处虚拟NVMe设备224(图2)的示例客户机队列管理器216确定是否已经提交命令。例如,客户机队列管理器216基于例如来自客户机队列226a的队列改变通知来确定是否已将I/O命令或管理命令提交给客户机队列226a(图2)。在所图示的示例中,如果命令尚未提交,则控制保持在框1102处等待命令的提交。
如果已将命令提交给客户机队列226a(框1104),则示例客户机队列管理器216访问客户机队列226a中的命令(框1104)。例如,客户机队列管理器216可以访问客户机队列226a的IOSQ中的I/O命令,或者可以访问客户机队列226a的ASQ中的管理命令。示例客户机队列管理器216确定是否将命令提交给影子队列230a(图2)(框1106)。例如,客户机队列管理器216可以基于该命令是否由NVMe设备206处理来确定是否将该命令提交给影子队列230a。客户机队列管理器216可以基于(例如)该命令是否是请求访问NVMe设备206中的数据(例如,读取/写入数据)的I/O命令(例如,在图2的对应客户机存储器缓冲器234a中不可用的数据),或者该命令是否是用于访问NVMe设备206的配置的管理命令(例如,在虚拟NVMe设备224中不可用于访问的NVMe设备206的读取/设置配置信息)来作出此类判定。如果客户机队列管理器216确定不应将该命令提交给影子队列230a,则控制前进到框1108,在框1108处虚拟NVMe设备224服务该命令。例如,虚拟NVMe设备224可以将所请求的配置信息提供给客户机VM 202a和/或将客户机VM 202a引导至客户机存储器缓冲器234a中存储由客户机VM202a请求的数据的位置。
如果客户机队列管理器216在框1106处确定不应将命令提交给影子队列230a,则示例调解器218(图2)生成经转换的命令(框1110)。例如,调解器218通过将与客户机VM202a相关联的命令的一个或多个虚拟参数转换为与NVMe设备206相关联的一个或多个物理参数来生成经转换的命令。示例虚拟参数可以包括由虚拟化资源(诸如客户机VM 202a)使用的要被访问的数据的虚拟存储器地址、客户机队列226a、226b的虚拟队列标识符等。物理参数可以包括由物理资源(诸如NVMe设备206)使用的要被访问的数据的物理存储器地址、影子队列230a、230b和/或物理队列231的物理队列标识符等。在所图示的示例中,如果该命令是I/O命令,则用于执行DMA操作233(图2和图4)的客户机存储器缓冲器234a(图2和图4)的地址在由客户机原生NVMe驱动器214a提交给客户机队列226a的原始命令和经转换的命令两者中是相同的。以此方式,与I/O命令相对应的数据可在同一客户机存储器缓冲器234a对客户机VM 202a和NVMe设备206而言可访问。
示例调解器218和/或影子队列管理器220将经转换的命令提交给影子队列230a(框1112)。例如,调解器218和/或影子队列管理器220可以将经转换的I/O命令提交给影子队列230a的IOSQ,或将经转换的管理命令提交给影子队列230a的ASQ。在一些示例中,调解器218和/或影子队列管理器220(图2)在将经转换的命令提交给影子队列230a之前创建影子队列230a。
示例影子队列管理器220确定经转换的命令是否已被服务(框1114)。例如,影子队列管理器220可以响应于主机原生NVMe驱动器222(图2)将完成状态条目提交给影子队列230a的IOCQ或ACQ而检测到由影子队列230a断言的中断。在所图示的示例中,如果经转换的命令尚未被服务,则影子队列管理器220等待经转换的命令的服务完成。当经转换的命令已被服务时,则控制前进到框1116,在该框1116处,示例调解器218转换完成状态条目(框1116)。例如,调解器218从影子队列230a的IOCQ或ACQ访问完成状态条目,并且它通过将一个或多个物理参数转换成一个或多个对应的虚拟参数来转换完成状态条目以供客户机VM202a使用。在一些示例中,完成状态条目指示将数据从NVMe设备206复制到与客户机VM202a相对应的客户机存储器缓冲器234a/将数据从与客户机VM 202a相对应的客户机存储器缓冲器234a复制到NVMe设备206的DMA操作(例如,图2和图4的DMA操作233)的完成。示例客户机队列管理器216将经转换的完成状态条目提交给客户机队列226a(框1118)。例如,客户机队列管理器216将经转换的完成状态条目写入客户机队列226a的IOCQ或ACQ。图11的示例过程结束。
图12是表示可被执行以实现本文所公开的示例ZCBV-PVIO技术的示例机器可读指令的流程图。尽管结合I/O命令描述了图12的示例程序,但图12的示例程序可以类似地用于使用本文所公开的示例ZCBV-PVIO技术来处理管理命令。此外,尽管结合单个客户机VM(例如,图10的客户机VM 1002)描述了图12的示例程序,但是可以实现该示例程序以同时服务多个客户机VM的命令。图12的程序从框1202处开始,在框1202处,示例BE块服务驱动器1012(图10)确定命令是否已被提交。例如,BE块服务驱动器1012基于例如来自共享环形缓冲器1026的缓冲器改变通知和/或来自所提交的命令的PVIOFE块驱动器1008的通知来确定客户机VM 1002的PVIO FE块驱动器1008是否已经经由共享环形缓冲器1026(图10)提交了命令。在所图示的示例中,如果命令尚未提交,则控制保持在框1202处等待命令的提交。
如果命令已被提交给共享环形缓冲器1026(框1202),则示例BE块服务驱动器1012的示例缓冲器接口1042(图10)访问共享环形缓冲器1026中的命令(框1204)。示例BE块服务驱动器1012的示例队列接口1044(图10)确定I/O队列1034(图10)是否已被创建(框1206)以将命令提交给原生NVMe驱动器1032(图10)。如果示例队列接口1044在框1206处确定I/O队列1034尚未被创建,则控制前进到框1208,在框1208处队列接口1044和/或原生NVMe驱动器1032创建I/O队列1034。例如,示例队列接口1044可以将创建I/O队列1034的请求发送给原生NVMe驱动器1032。
如果示例队列接口1044在框1206处确定I/O队列1034已被创建,则示例转换器1046(图10)生成经转换的命令(框1210)。例如,转换器1046通过将与客户机VM 1002相关联的命令的一个或多个虚拟参数转换为与NVMe设备206相关联的一个或多个物理参数来生成经转换的命令。示例虚拟参数可以包括由虚拟化资源(诸如客户机VM 1002)使用的映射到要在其中访问数据的NVMe设备206中的物理位置的虚拟存储器地址、虚拟队列标识符、共享环形缓冲器标识符等。物理参数可以包括数据位于其中的NVMe设备206中的物理位置的物理存储器地址、物理队列标识符等。例如,物理参数由物理资源(诸如NVMe设备)使用以服务经转换的命令。在所图示的示例中,用于执行DMA操作1018(图10)的客户机存储器缓冲器1022(图10)的地址在由客户机VM 1002提交的原始命令和经转换的命令两者中是相同的。以此方式,与I/O命令相对应的数据可在同一客户机存储器缓冲器1022中对客户机VM 1002和NVMe设备206而言是可访问的。
示例队列接口1044将经转换的命令提交给I/O队列1034(框1212)。例如,队列接口1044可以将经转换的I/O命令提交给I/O队列1034的IOSQ。
示例BE块服务驱动器1012确定经转换的命令是否已被服务(框1214)。例如,BE块服务驱动器1012可以检测由原生NVMe驱动器1032响应于NVMe设备206发出经转换的命令完成的信号和/或响应于由NVMe设备206和/或原生NVMe驱动器1032提交到I/O队列1034的完成状态条目而断言的中断。在所图示的示例中,如果经转换的命令尚未被服务,则BE块服务驱动器1012等待经转换的命令的服务完成。当经转换的命令已被服务时,则控制前进到框1216,在该框1216处,示例转换器1046转换来自I/O队列1034的完成状态条目(框1216)。例如,队列接口1044从I/O队列1034的IOCQ访问完成状态条目,并且转换器1046通过将一个或多个物理参数转换为一个或多个对应的虚拟参数以供客户机VM1002使用来转换完成状态条目。在一些示例中,完成状态条目指示将数据从NVMe设备206复制到与客户机VM 1002相对应的客户机存储器缓冲器1022/将数据从与客户机VM 1002相对应的客户机存储器缓冲器1022复制到NVMe设备206的DMA操作(例如,图10的DMA操作1018)的完成。示例缓冲器接口1042将经转换的完成状态条目提交给共享环形缓冲器1026(框1218)。示例通知器1048(图10)通知客户机VM 1002该完成(框1220)。例如,通知器1048经由共享环形缓冲器1026将命令完成通知发送到客户机VM 1002的PVIO FE块驱动器1008和/或断言到PVIO FE块驱动器1008的虚拟中断。图12的示例过程结束。
图13是能够执行图6-图9和图11的指令以实现本文公开的示例ZCBV-MPT技术和/或能够执行图12的指令以实现本文公开的示例ZCBV-PVIO技术的示例处理器平台1300的框图。处理器平台1300可以是例如服务器、个人计算机、移动设备(例如,蜂窝电话、智能电话、诸如
Figure BDA0002407345250000291
平板之类的平板设备)、个人数字助理(PDA)、互联网设备、游戏控制台、机顶盒或任何其他类型的计算设备。
所图示示例的处理器平台1300包括一个或多个处理器1312。所图示示例的(多个)处理器1312是硬件。例如,(多个)处理器1312可以由来自任何所期望的家族或制造商的一个或多个集成电路、逻辑电路、微处理器或控制器实现。(多个)硬件处理器可以是基于半导体的(例如,硅基)器件。为了实现本文公开的ZCBV-MPT技术,所图示示例的(多个)处理器1012实现示例客户机原生驱动器214a、214b(图2)、示例虚拟NVMe设备224(图2)、示例客户机队列管理器216(图2)、示例调解器218(图2)、示例影子队列管理器220(图2)、示例主机原生NVMe驱动器222(图2)和/或示例ATT 228(图2)中的一个或多个。为了实现本文公开的ZCBV-PVIO技术,所图示示例的(多个)处理器1012实现示例PVIO FE块驱动器1008(图10)、示例BE块服务驱动器1012(图10)、示例缓冲接口1042(图10)、示例队列接口1044(图10)、示例转换器1046(图10)、示例通知器1048(图10)、和/或示例原生NVMe驱动器1032(图10)中的一个或多个。
所图示示例的(多个)处理器1312包括本地存储器1313(例如,高速缓存)。所图示示例的(多个)处理器1312经由总线1318与包括易失性存储器1314和非易失性存储器1316的主存储器进行通信。易失性存储器1314可由同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM)和/或任何其他类型的随机存取存储器设备实现。非易失性存储器1316可由闪存和/或任何其他所期望类型的存储器设备实现。由存储器控制器控制对主存储器1314、主存储器1316的访问。
所图示示例的处理器平台1300还包括接口电路1320。接口电路1320可由任何类型的接口标准实现,诸如,以太网接口、通用串行总线(USB)和/或PCI快速接口。
在所图示示例中,一个或多个输入设备1322被连接至接口电路1320。(多个)输入设备1322准许用户将数据和/或命令输入至处理器1312中。(多个)输入设备可以由例如音频传感器、麦克风、相机(静止的或视频)、键盘、按钮、鼠标、触摸屏、轨迹板、轨迹球、等点鼠标和/或语音识别系统实现。
一个或多个输出设备1324也被连接至所图示示例的接口电路1320。输出设备1324可例如由显示设备(例如,发光二极管(LED)、有机发光二极管(OLED)、液晶显示器、阴极射线管显示器(CRT)、触屏、触觉输出设备、打印机和/或扬声器)实现。因此,所图示示例的接口电路1320典型地包括图形驱动器卡、图形驱动器芯片和/或图形驱动器处理器。
所图示示例的接口电路1320还包括诸如发射机、接收机、收发机、调制解调器和/或网络接口卡之类的通信设备,以促进经由网络1326(例如,以太网连接、数字订户线(DSL)、电话线、同轴电缆、蜂窝电话系统等)与外部机器(例如,任何种类的计算设备)交换数据。
所图示示例的处理器平台1300还包括用于存储软件和/或数据的一个或多个大容量存储设备1328。此类大容量存储设备1328的示例包括软盘驱动器、硬盘驱动器、紧凑盘驱动器、蓝光盘驱动器、RAID系统和数字多功能盘(DVD)驱动器。
实现图6-图9、图11和/或图12的示例性机器可读指令的编码指令1332可被存储在大容量存储设备1328中、存储在易失性存储器1314中、存储在非易失性存储器1316中、和/或存储在诸如CD或DVD之类的可移除有形计算机可读存储介质上。
从前述内容可以理解,本文公开的示例方法、装置和制品使用改善与访问虚拟化存储和/或存储空间相关联的虚拟化性能的技术来处理来自虚拟机的命令。现有的I/O虚拟化技术包括直接直通连接(pass-thru)技术、单根输入/输出虚拟化(SR-IOV)和半虚拟化。现有的直接直通技术不能用于跨多个客户机VM共享单个物理设备,并且因此其使用仅限于虚拟化配置,其中整个硬件资源独占地分配给单个客户机VM。SR-IOV可以跨若干客户机VM共享单个物理设备。然而,SR-IOV技术需要定制的硬件扩展。因此,SR-IOV技术仅限于基于硬件的实现方式。基于例如在SR-IOV硬件中要支持多少个虚拟功能,此类基于硬件的实现方式可能会成本显著地高。由于硬件实现方式,由于在添加新的虚拟功能时需要设计/制造新的硬件,因此可扩展性很差。半虚拟化I/O技术将硬件中立的接口提供给客户机VM。然而,半虚拟化需要主机机器的CPU来处理存储器位置之间的批量数据传输。由此,在存储器密集型进程期间,半虚拟化可能使主机机器的CPU资源过载。
本文所公开的示例ZCBV技术改善了与从客户机VM访问物理资源中的数据相关联的虚拟化性能。例如,本文所公开的ZCBV技术消除了在虚拟化系统的VMM后端侧上执行数据复制操作的需要。以此方式,主机机器的CPU就不需要处理批量数据传输。相反,本文所公开的示例响应于来自客户机VM的数据访问请求而采用DMA数据传输在存储器位置之间复制数据。结果,本文公开的示例ZCBV技术改善了块设备I/O虚拟化的效率。除了减少CPU周期的使用(例如,用于在NVMe存储器与客户机VM存储器空间之间执行批量数据的复制操作)之外,本文公开的示例ZCBV技术还改善了虚拟资源(例如,基于底层物理NVMe数据存储资源的虚拟数据存储资源)的响应性(例如,减少等待时间)和/或增加数据传输速度。例如,使用本文所公开的具有3D交叉点存储器(例如,在
Figure BDA0002407345250000321
OptaneTM存储器中实现)的示例,可以实现等于或大于每秒2000兆字节(MB/s)的数据传输速度。在其他实现方式中,诸如当与其他类型的NV存储器设备一起使用时,此处公开的示例可用于实现其他数据传输速度。
以下涉及本文公开的其他示例。
示例1是一种用于处理来自虚拟机的命令的装置。示例1的装置包括客户机队列管理器,该客户机队列管理器用于位于在一个或多个处理器上执行的虚拟机监测器的虚拟非易失性存储器设备中,该客户机队列管理器用于访问由在客户机虚拟机中执行的原生非易失性存储器驱动器提交给客户机队列的第一命令;调解器,该调解器用于基于第一命令通过将第一命令的虚拟参数转换为与物理非易失性存储器设备相关联的物理参数来生成经转换的命令;影子队列管理器,该影子队列管理器用于将经转换的命令提交给将由物理非易失性存储器设备基于物理参数来处理的影子队列;以及该客户机队列管理器用于将完成状态条目提交给客户机队列,该完成状态条目指示在物理非易失性存储器设备和与客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
在示例2中,示例1的主题可以任选地包括:经转换的命令在将经转换的命令从虚拟机监测器中的影子队列同步到物理非易失性存储器设备中的物理队列之后由物理非易失性存储器设备处理。
在示例3中,示例1-2中任何一项的主题可以任选地包括:第一命令是管理命令或输入/输出命令中的至少一者,该管理命令用于以下各项中的至少一者:管理队列、获得驱动器配置信息、或设置驱动器配置信息,以及输入/输出命令用于访问存储器中的数据。
在示例4中,示例1-3中任一项的主题可以任选地包括:虚拟参数包括数据的虚拟存储器地址,以及物理参数包括数据的物理存储器地址。
在示例5中,示例1-4中任一项的主题可以任选地包括:虚拟参数包括客户机队列的客户机队列标识符,以及物理参数包括影子队列的主机队列标识符。
在示例6中,示例1-5中任一项的主题可以任选地包括:影子队列管理器用于在将经转换的命令提交给影子队列之前创建影子队列。
在示例7中,示例1-6中任一项的主题可以任选地包括:客户机队列管理器进一步用于在转换第一命令之前确定第一命令将由物理非易失性存储器设备处理,确定基于第一命令是从物理非易失性存储器设备请求数据的I/O命令,或第一命令是用于访问物理非易失性存储器设备的配置的管理命令。
在示例8中,示例1-7中任一项的主题可以任选地包括:虚拟非易失性存储器设备是虚拟非易失性存储器快速(NVMe)设备,以及物理非易失性存储器设备是物理NVMe设备。
在示例9中,示例1-8中任一项的主题可以任选地包括:存储器;与存储器一起在电路中的一个或多个处理器;以及与一个或多个处理器一起在电路中的网络接口,一个或多个处理器用于执行客户机队列管理器、调解器、和影子队列管理器。
示例10是一种包括指令的非暂态计算机可读存储介质,当该指令被执行时,使一个或多个处理器至少用于:由虚拟机监测器中的虚拟非易失性存储器设备访问由在客户机虚拟机中执行的原生非易失性存储器驱动器提交给客户机队列的第一命令;基于第一命令通过将第一命令的虚拟参数转换成与物理非易失性存储器设备相关联的物理参数来由虚拟非易失性存储器设备生成经转换的命令;由虚拟非易失性存储器设备将经转换的命令提交给将由物理非易失性存储器设备基于物理参数来处理的影子队列;并且由虚拟非易失性存储器设备将完成状态条目提交给客户机队列,该完成状态条目指示在物理非易失性存储器设备和与客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
在示例11中,示例10的主题可以任选地包括:经转换的命令在将经转换的命令从虚拟机监测器中的影子队列同步到物理非易失性存储器设备中的物理队列之后由物理非易失性存储器设备处理。
在示例12中,示例10-11中任何一项的主题可以任选地包括:第一命令是管理命令或输入/输出命令中的至少一者,该管理命令用于以下各项中的至少一者:管理队列、获得驱动器配置信息、或设置驱动器配置信息,以及输入/输出命令用于访问存储器中的数据。
在示例13中,示例10-12中任一项的主题可以任选地包括:虚拟参数包括数据的虚拟存储器地址,以及物理参数包括数据的物理存储器地址。
在示例14中,示例10-13中任一项的主题可以任选地包括:虚拟参数包括客户机队列的客户机队列标识符,以及物理参数包括影子队列的主机队列标识符。
在示例15中,示例10-14中的任一项的主题可以任选地包括:指令进一步使一个或多个处理器用于在将经转换的命令提交给影子队列之前通过虚拟非易失性存储器设备创建影子队列。
在示例16中,示例10-15中任一项的主题可以任选地包括:指令进一步使一个或多个处理器用于在转换第一命令之前确定第一命令将由物理非易失性存储器设备处理,确定基于第一命令是从物理非易失性存储器设备请求数据的I/O命令,或第一命令是用于访问物理非易失性存储器设备的配置的管理命令。
在示例17中,示例10-16中任一项的主题可以任选地包括:虚拟非易失性存储器设备是虚拟非易失性存储器快速(NVMe)设备,以及物理非易失性存储器设备是物理NVMe设备。
示例18是一种用于处理来自虚拟机的命令的方法。示例18的方法包括:由在一个或多个处理器上执行的虚拟机监测器中的虚拟非易失性存储器设备访问由在客户机虚拟机中执行的原生非易失性存储器驱动器提交给客户机队列的第一命令;基于第一命令通过将第一命令的虚拟参数转换成与物理非易失性存储器设备相关联的物理参数来由虚拟非易失性存储器设备生成经转换的命令;由虚拟非易失性存储器设备将经转换的命令提交给将由物理非易失性存储器设备基于物理参数来处理的影子队列;并且由虚拟非易失性存储器设备将完成状态条目提交给客户机队列,该完成状态条目指示在物理非易失性存储器设备和与客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
在示例19中,示例18的主题可以任选地包括:经转换的命令在将经转换的命令从虚拟机监测器中的影子队列同步到物理非易失性存储器设备中的物理队列之后由物理非易失性存储器设备处理。
在示例20中,示例18-19中任何一项的主题可以任选地包括:第一命令是管理命令或输入/输出命令中的至少一者,该管理命令用于以下各项中的至少一者:管理队列、获得驱动器配置信息、或设置驱动器配置信息、以及输入/输出命令用于访问存储器中的数据。
在示例21中,示例18-20中任一项的主题可以任选地包括:虚拟参数包括数据的虚拟存储器地址,以及物理参数包括数据的物理存储器地址。
在示例22中,示例18-21中任一项的主题可以任选地包括:虚拟参数包括客户机队列的客户机队列标识符,以及物理参数包括影子队列的主机队列标识符。
在示例23中,示例18-22中任一项的主题可以任选地包括:在将经转换的命令提交给影子队列之前,由虚拟非易失性存储器设备创建影子队列。
在示例24中,示例18-23中任一项的主题可以任选地包括:在转换第一命令之前确定第一命令将由物理非易失性存储器设备处理,确定基于第一命令是从物理非易失性存储器设备请求数据的I/O命令,或第一命令是用于访问物理非易失性存储器设备的配置的管理命令。
在示例25中,示例18-24中任一项的主题可以任选地包括:虚拟非易失性存储器设备是虚拟非易失性存储器快速(NVMe)设备,以及物理非易失性存储器设备是物理NVMe设备。
示例26是一种用于处理来自虚拟机的命令的装置。示例26的装置包括命令访问装置,该命令访问装置用于位于在一个或多个处理器上执行的虚拟机监测器的虚拟非易失性存储器设备中,该命令访问装置用于访问由在客户机虚拟机中执行的原生非易失性存储器驱动器提交给客户机队列的第一命令;转换装置,该转换装置用于基于第一命令通过将第一命令的虚拟参数转换为与物理非易失性存储器设备相关联的物理参数来生成经转换的命令;命令提交装置,该命令提交装置用于将经转换的命令提交给将由物理非易失性存储器设备基于物理参数来处理的影子队列;以及完成提交装置,该完成提交装置用于将完成状态条目提交给客户机队列,该完成状态条目指示在物理非易失性存储器设备和与客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
在示例27中,权利要求26的主题可以任选地包括:经转换的命令在将经转换的命令从虚拟机监测器中的影子队列同步到物理非易失性存储器设备中的物理队列之后由物理非易失性存储器设备处理。
在示例28中,权利要求26-27中任何一项的主题可以任选地包括:第一命令是管理命令或输入/输出命令中的至少一者,该管理命令用于以下各项中的至少一者:管理队列、获得驱动器配置信息、或设置驱动器配置信息、以及输入/输出命令用于访问存储器中的数据。
在示例29中,权利要求26-28中任一项的主题可以任选地包括:虚拟参数包括数据的虚拟存储器地址,以及物理参数包括数据的物理存储器地址。
在示例30中,权利要求26-29中任一项的主题可以任选地包括:虚拟参数包括客户机队列的客户机队列标识符,以及物理参数包括影子队列的主机队列标识符。
在示例31中,权利要求26-30中任一项的主题可以任选地包括:队列创建装置,该队列创建装置用于在将经转换的命令提交给影子队列之前创建影子队列。
在示例32中,权利要求26-31中任一项的主题可以任选地包括:命令拦截装置,该命令拦截装置用于在转换第一命令之前确定第一命令将由物理非易失性存储器设备处理,确定基于第一命令是从物理非易失性存储器设备请求数据的I/O命令,或第一命令是用于访问物理非易失性存储器设备的配置的管理命令。
在示例33中,权利要求26-32中任一项的主题可以任选地包括:存储器;与存储器一起在电路中的一个或多个处理器;以及与一个或多个处理器一起在电路中的网络接口,一个或多个处理器用于执行命令访问装置、转换装置、命令提交装置、以及完成提交装置。
示例34是一种用于处理来自虚拟机的命令的装置。示例34的装置包括:在一个或多个处理器上执行的输入/输出虚拟机中的缓冲器接口,该缓冲器接口用于访问由在客户机虚拟机中执行的半虚拟化输入/输出前端块驱动器提交给缓冲器的第一命令;转换器,该转换器用于基于第一命令通过将第一命令的虚拟参数转换为与物理资源相关联的物理参数来生成经转换的命令;队列接口,该队列接口用于基于物理参数来将经转换的命令提交给将由物理资源处理的输入/输出队列;以及缓冲器接口,该缓冲器接口用于将完成状态条目提交给缓冲器,该完成状态条目指示在物理资源和与客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
在示例35中,权利要求34的主题可以任选地包括:队列接口进一步用于在将经转换的命令提交给输入/输出队列之前创建输入/输出队列。
在示例36中,权利要求34-35中的任一项的主题可以任选地包括:物理资源是非易失性存储器快速设备。
在示例37中,权利要求34-36中的任一项的主题可以任选地包括:虚拟参数包括虚拟存储器地址或共享环形缓冲器标识符中的至少一者,并且物理参数包括物理存储器地址或物理队列标识符中的至少一者。
在示例38中,权利要求34-37中的任一项的主题可以任选地包括:物理资源是非易失性存储器快速设备。
在示例39中,权利要求34-38中任一项的主题可以可选地包括通知器,该通知器用于通知客户机虚拟机第一命令的完成。
在示例40中,示例34-39中任一项的主题可以任选地包括:存储器;与存储器一起在电路中的一个或多个处理器;以及与一个或多个处理器一起在电路中的网络接口;一个或多个处理器用于执行缓冲器接口、转换器、和队列接口。
示例41是一种包括指令的非暂态计算机可读存储介质,当该指令被执行时,使一个或多个处理器至少用于:访问在客户虚拟机中执行的半虚拟化输入/输出前端块驱动器提交给缓冲器的第一命令;基于第一命令通过将第一命令的虚拟参数转换为与物理资源相关联的物理参数来生成经转换的命令;基于物理参数来将经转换的命令提交给将由物理资源处理的输入/输出队列;并且将完成状态条目提交给缓冲器,该完成状态条目指示在物理资源和与客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
在示例42中,权利要求41的主题可以任选地包括:指令进一步使一个或多个处理器用于在将经转换的命令提交给输入/输出队列之前创建输入/输出队列。
在示例43中,权利要求41-42中的任一项的主题可以任选地包括:物理资源是非易失性存储器快速设备。
在示例44中,权利要求41-43中的任一项的主题可以任选地包括:虚拟参数包括虚拟存储器地址或共享环形缓冲器标识符中的至少一者,并且物理参数包括物理存储器地址或物理队列标识符中的至少一者。
在示例45中,权利要求41-44中的任一项的主题可以任选地包括:物理资源是非易失性存储器快速设备。
在示例46中,权利要求41-45中任一项的主题可以可选地包括:指令进一步使一个或多个处理器用于通知客户机虚拟机第一命令的完成。
示例47是一种用于处理来自虚拟机的命令的方法。示例47的方法包括:由在一个或多个处理器上执行的输入/输出虚拟机中的后端块服务驱动器访问由在客户虚拟机中执行的半虚拟化输入/输出前端块驱动器提交给缓冲器的第一命令;由后端块服务驱动器基于第一命令通过将第一命令的虚拟参数转换为与物理资源相关联的物理参数来生成经转换的命令;由后端块服务驱动器基于物理参数来将经转换的命令提交给将由物理资源处理的输入/输出队列;以及由后端块服务驱动器将完成状态条目提交给缓冲器,该完成状态条目指示在物理资源和与客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
在示例48中,权利要求47的主题可以任选地包括:在将经转换的命令提交给输入/输出队列之前,由后端块服务驱动器或原生设备驱动器中的至少一者创建输入/输出队列。
在示例49中,权利要求47-48中的任一项的主题可以任选地包括:物理资源是非易失性存储器快速设备。
在示例50中,权利要求47-49中的任一项的主题可以任选地包括:虚拟参数包括虚拟存储器地址或共享环形缓冲器标识符中的至少一者,并且物理参数包括物理存储器地址或物理队列标识符中的至少一者。
在示例51中,权利要求47-50中的任一项的主题可以任选地包括:物理资源是非易失性存储器快速设备。
在示例52中,权利要求47-51中任一项的主题可以可选地包括:由后端块服务驱动器通知客户机虚拟机第一命令的完成。
示例53是一种用于处理来自虚拟机的命令的装置。示例53的装置包括:在一个或多个处理器上执行的输入/输出虚拟机中的命令访问装置,该命令访问装置用于访问由在客户机虚拟机中执行的半虚拟化输入/输出前端块驱动器提交给缓冲器的第一命令;转换装置,该转换装置用于基于第一命令通过将第一命令的虚拟参数转换为与物理资源相关联的物理参数来生成经转换的命令;命令提交装置,该命令提交装置用于基于物理参数来将经转换的命令提交给将由物理资源处理的输入/输出队列;以及完成提交装置,该完成提交装置用于将完成状态条目提交给缓冲器,该完成状态条目指示在物理资源和与客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
在示例54中,权利要求53的主题可以任选地包括:队列创建装置,该队列创建装置用于在将经转换的命令提交给输入/输出队列之前创建输入/输出队列。
在示例55中,权利要求53-54中的任一项的主题可以任选地包括:物理资源是非易失性存储器快速设备。
在示例56中,权利要求53-55中的任一项的主题可以任选地包括:虚拟参数包括虚拟存储器地址或共享环形缓冲器标识符中的至少一者,并且物理参数包括物理存储器地址或物理队列标识符中的至少一者。
在示例57中,权利要求53-56中的任一项的主题可以任选地包括:物理资源是非易失性存储器快速设备。
在示例58中,权利要求53-57中任一项的主题可以可选地包括完成状态通知装置,该完成状态通知装置用于通知客户机虚拟机第一命令的完成。
在示例59中,权利要求53-58中任一项的主题可以任选地包括:存储器;与存储器一起在电路中的一个或多个处理器;以及与一个或多个处理器一起在电路中的网络接口,一个或多个处理器用于执行命令访问装置、转换装置、命令提交装置、以及完成提交装置。
尽管本文中已公开了某些示例方法、装置和制品,但本专利涵盖的范围并不限于此。相反,本专利涵盖落入本专利权利要求范围内的全部方法、装置和制品。

Claims (59)

1.一种用于处理来自虚拟机的命令的装置,所述装置包括:
客户机队列管理器,所述客户机队列管理器用于位于在一个或多个处理器上执行的虚拟机监测器的虚拟非易失性存储器设备中,所述客户机队列管理器用于访问由在客户机虚拟机中执行的原生非易失性存储器驱动器提交给客户机队列的第一命令;
调解器,所述调解器用于基于所述第一命令通过将所述第一命令的虚拟参数转换为与物理非易失性存储器设备相关联的物理参数来生成经转换的命令;
影子队列管理器,所述影子队列管理器用于将所述经转换的命令提交给将由所述物理非易失性存储器设备基于所述物理参数来处理的影子队列;以及
所述客户机队列管理器用于将完成状态条目提交给所述客户机队列,所述完成状态条目指示在所述物理非易失性存储器设备和与所述客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
2.如权利要求1所述的装置,其特征在于,所述经转换的命令在将所述经转换的命令从所述虚拟机监测器中的所述影子队列同步到所述物理非易失性存储器设备中的物理队列之后由所述物理非易失性存储器设备处理。
3.如权利要求1所述的装置,其特征在于,所述第一命令是管理命令或输入/输出命令中的至少一者,所述管理命令用于以下各项中的至少一者:管理队列、获得驱动器配置信息、或设置驱动器配置信息,以及所述输入/输出命令用于访问存储器中的数据。
4.如权利要求1所述的装置,其特征在于,所述虚拟参数包括所述数据的虚拟存储器地址,以及所述物理参数包括所述数据的物理存储器地址。
5.如权利要求1所述的装置,其特征在于,所述虚拟参数包括所述客户机队列的客户机队列标识符,以及所述物理参数包括所述影子队列的主机队列标识符。
6.如权利要求1所述的装置,其特征在于,所述影子队列管理器用于在将所述经转换的命令提交给所述影子队列之前创所述建影子队列。
7.如权利要求1所述的装置,其特征在于,所述客户机队列管理器进一步用于在转换所述第一命令之前确定所述第一命令将由所述物理非易失性存储器设备处理,所述确定基于所述第一命令是从所述物理非易失性存储器设备请求数据的I/O命令,或所述第一命令是用于访问所述物理非易失性存储器设备的配置的管理命令。
8.如权利要求1所述的装置,其特征在于,所述虚拟非易失性存储器设备是虚拟非易失性存储器快速(NVMe)设备,以及所述物理非易失性存储器设备是物理NVMe设备。
9.如权利要求1所述的装置,进一步包括:
存储器;
与所述存储器一起在电路中的一个或多个处理器;以及
与所述一个或多个处理器一起在电路中的网络接口,所述一个或多个处理器用于执行所述客户机队列管理器、所述调解器、和所述影子队列管理器。
10.一种包括指令的非暂态计算机可读存储介质,当所述指令被执行时,使一个或多个处理器至少用于:
由虚拟机监测器中的虚拟非易失性存储器设备访问由在客户机虚拟机中执行的原生非易失性存储器驱动器提交给客户机队列的第一命令;
基于所述第一命令通过将所述第一命令的虚拟参数转换成与物理非易失性存储器设备相关联的物理参数来由所述虚拟非易失性存储器设备生成经转换的命令;
由所述虚拟非易失性存储器设备将所述经转换的命令提交给将由所述物理非易失性存储器设备基于所述物理参数来处理的影子队列;并且
由所述虚拟非易失性存储器设备将完成状态条目提交给所述客户机队列,所述完成状态条目指示在所述物理非易失性存储器设备和与所述客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
11.如权利要求10所述的非暂态计算机可读存储介质,其特征在于,所述经转换的命令在将所述经转换的命令从所述虚拟机监测器中的所述影子队列同步到所述物理非易失性存储器设备中的物理队列之后由所述物理非易失性存储器设备处理。
12.如权利要求10所述的非暂态计算机可读存储介质,其特征在于,所述第一命令是管理命令或输入/输出命令中的至少一者,所述管理命令用于以下各项中的至少一者:管理队列、获得驱动器配置信息、或设置驱动器配置信息,以及所述输入/输出命令用于访问存储器中的数据。
13.如权利要求10所述的非暂态计算机可读存储介质,其特征在于,所述虚拟参数包括所述数据的虚拟存储器地址,以及所述物理参数包括所述数据的物理存储器地址。
14.如权利要求10所述的非暂态计算机可读存储介质,其特征在于,所述虚拟参数包括所述客户机队列的客户机队列标识符,以及所述物理参数包括所述影子队列的主机队列标识符。
15.如权利要求10所述的非暂态计算机可读存储介质,其特征在于,所述指令进一步使所述一个或多个处理器用于在将所述经转换的命令提交给所述影子队列之前通过所述虚拟非易失性存储器设备创建所述影子队列。
16.如权利要求10所述的非暂态计算机可读存储介质,其特征在于,所述指令进一步使所述一个或多个处理器用于在转换所述第一命令之前确定所述第一命令将由所述物理非易失性存储器设备处理,所述确定基于所述第一命令是从所述物理非易失性存储器设备请求数据的I/O命令,或所述第一命令是用于访问所述物理非易失性存储器设备的配置的管理命令。
17.如权利要求10所述的的非暂态计算机可读存储介质,其特征在于,所述虚拟非易失性存储器设备是虚拟非易失性存储器快速(NVMe)设备,以及所述物理非易失性存储器设备是物理NVMe设备。
18.一种用于处理来自虚拟机的命令的方法,所述方法包括:
由在一个或多个处理器上执行的虚拟机监测器中的虚拟非易失性存储器设备访问由在客户机虚拟机中执行的原生非易失性存储器驱动器提交给客户机队列的第一命令;
基于所述第一命令通过将所述第一命令的虚拟参数转换成与物理非易失性存储器设备相关联的物理参数来由所述虚拟非易失性存储器设备生成经转换的命令;
由所述虚拟非易失性存储器设备将所述经转换的命令提交给将由所述物理非易失性存储器设备基于所述物理参数来处理的影子队列;并且
由所述虚拟非易失性存储器设备将完成状态条目提交给所述客户机队列,所述完成状态条目指示在所述物理非易失性存储器设备和与所述客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
19.如权利要求18所述的方法,其特征在于,所述经转换的命令在将所述经转换的命令从所述虚拟机监测器中的所述影子队列同步到所述物理非易失性存储器设备中的物理队列之后由所述物理非易失性存储器设备处理。
20.如权利要求18所述的方法,其特征在于,所述第一命令是管理命令或输入/输出命令中的至少一者,所述管理命令用于以下各项中的至少一者:管理队列、获得驱动器配置信息、或设置驱动器配置信息,以及所述输入/输出命令用于访问存储器中的数据。
21.如权利要求18所述的方法,其特征在于,所述虚拟参数包括所述数据的虚拟存储器地址,以及所述物理参数包括所述数据的物理存储器地址。
22.如权利要求18所述的方法,其特征在于,所述虚拟参数包括所述客户机队列的客户机队列标识符,以及所述物理参数包括所述影子队列的主机队列标识符。
23.如权利要求18所述的方法,进一步包括在将所述经转换的命令提交给所述影子队列之前,由所述虚拟非易失性存储器设备创建所述影子队列。
24.如权利要求18所述的方法,进一步包括在转换所述第一命令之前确定所述第一命令将由所述物理非易失性存储器设备处理,所述确定基于所述第一命令是从所述物理非易失性存储器设备请求数据的I/O命令,或所述第一命令是用于访问所述物理非易失性存储器设备的配置的管理命令。
25.如权利要求18所述的方法,其特征在于,所述虚拟非易失性存储器设备是虚拟非易失性存储器快速(NVMe)设备,以及所述物理非易失性存储器设备是物理NVMe设备。
26.一种用于处理来自虚拟机的命令的装置,所述装置包括:
命令访问装置,所述命令访问装置用于位于在一个或多个处理器上执行的虚拟机监测器的虚拟非易失性存储器设备中,所述命令访问装置用于访问由在客户机虚拟机中执行的原生非易失性存储器驱动器提交给客户机队列的第一命令;
转换装置,所述转换装置用于基于所述第一命令通过将所述第一命令的虚拟参数转换为与物理非易失性存储器设备相关联的物理参数来生成经转换的命令;
命令提交装置,所述命令提交装置用于将所述经转换的命令提交给将由所述物理非易失性存储器设备基于所述物理参数来处理的影子队列;以及
完成提交装置,所述完成提交装置用于将完成状态条目提交给所述客户机队列,所述完成状态条目指示在所述物理非易失性存储器设备和与所述客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
27.如权利要求26所述的装置,其特征在于,所述经转换的命令在将所述经转换的命令从所述虚拟机监测器中的所述影子队列同步到所述物理非易失性存储器设备中的物理队列之后由所述物理非易失性存储器设备处理。
28.如权利要求26所述的装置,其特征在于,所述第一命令是管理命令或输入/输出命令中的至少一者,所述管理命令用于以下各项中的至少一者:管理队列、获得驱动器配置信息、或设置驱动器配置信息,以及所述输入/输出命令用于访问存储器中的数据。
29.如权利要求26所述的装置,其特征在于,所述虚拟参数包括所述数据的虚拟存储器地址,以及所述物理参数包括所述数据的物理存储器地址。
30.如权利要求26所述的装置,其特征在于,所述虚拟参数包括所述客户机队列的客户机队列标识符,以及所述物理参数包括所述影子队列的主机队列标识符。
31.如权利要求26所述的装置,进一步包括队列创建装置,所述队列创建装置用于在将所述经转换的命令提交给所述影子队列之前创建所述影子队列。
32.如权利要求26所述的装置,进一步包括命令拦截装置,所述命令拦截装置用于在转换所述第一命令之前确定所述第一命令将由所述物理非易失性存储器设备处理,所述确定基于所述第一命令是从所述物理非易失性存储器设备请求数据的I/O命令,或所述第一命令是用于访问所述物理非易失性存储器设备的配置的管理命令。
33.如权利要求26所述的装置,进一步包括:
存储器;
与所述存储器一起在电路中的一个或多个处理器;以及
与所述一个或多个处理器一起在电路中的网络接口,所述一个或多个处理器用于执行所述命令访问装置、所述转换装置、所述命令提交装置、以及所述完成提交装置。
34.一种用于处理来自虚拟机的命令的装置,所述装置包括:
在一个或多个处理器上执行的输入/输出虚拟机中的缓冲器接口,所述缓冲器接口用于访问由在客户机虚拟机中执行的半虚拟化输入/输出前端块驱动器提交给缓冲器的第一命令;
转换器,所述转换器用于基于所述第一命令通过将所述第一命令的虚拟参数转换为与物理资源相关联的物理参数来生成经转换的命令;
队列接口,所述队列接口用于基于所述物理参数来将所述经转换的命令提交给将由物理资源处理的输入/输出队列;以及
缓冲器接口,所述缓冲器接口用于将完成状态条目提交给所述缓冲器,所述完成状态条目指示在所述物理资源和与所述客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
35.如权利要求34所述的装置,其特征在于,所述队列接口进一步用于在将所述经转换的命令提交给所述输入/输出队列之前创建所述输入/输出队列。
36.如权利要求34所述的装置,其特征在于,所述物理资源是非易失性存储器快速设备。
37.如权利要求34所述的装置,其特征在于,所述虚拟参数包括虚拟存储器地址或共享环形缓冲器标识符中的至少一者,并且所述物理参数包括物理存储器地址或物理队列标识符中的至少一者。
38.如权利要求34所述的装置,其特征在于,所述物理资源是非易失性存储器快速设备。
39.如权利要求34所述的装置,进一步包括通知器,所述通知器用于通知所述客户机虚拟机所述第一命令的完成。
40.如权利要求34所述的装置,进一步包括:
存储器;
与所述存储器一起在电路中的一个或多个处理器;以及
与所述一个或多个处理器一起在电路中的网络接口;所述一个或多个处理器用于执行所述缓冲器接口、所述转换器、和所述队列接口。
41.一种包括指令的非暂态计算机可读存储介质,当所述指令被执行时,使一个或多个处理器至少用于:
访问在客户虚拟机中执行的半虚拟化输入/输出前端块驱动器提交给缓冲器的第一命令;
基于所述第一命令通过将所述第一命令的虚拟参数转换为与物理资源相关联的物理参数来生成经转换的命令;
基于所述物理参数来将所述经转换的命令提交给将由物理资源处理的输入/输出队列;并且
将完成状态条目提交给所述缓冲器,所述完成状态条目指示在所述物理资源和与所述客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
42.如权利要求41所述的非暂态计算机可读存储介质,其特征在于,所述指令进一步使所述一个或多个处理器用于在将所述经转换的命令提交给所述输入/输出队列之前创建所述输入/输出队列。
43.如权利要求41所述的非暂态计算机可读存储介质,其特征在于,所述物理资源是非易失性存储器快速设备。
44.如权利要求41所述的非暂态计算机可读存储介质,其特征在于,所述虚拟参数包括虚拟存储器地址或共享环形缓冲器标识符中的至少一者,并且所述物理参数包括物理存储器地址或物理队列标识符中的至少一者。
45.如权利要求41所述的非暂态计算机可读存储介质,其特征在于,所述物理资源是非易失性存储器快速设备。
46.如权利要求41所述的非暂态计算机可读存储介质,其特征在于,所述指令进一步使所述一个或多个处理器用于通知所述客户机虚拟机所述第一命令的完成。
47.一种用于处理来自虚拟机的命令的方法,所述方法包括:
由在一个或多个处理器上执行的输入/输出虚拟机中的后端块服务驱动器访问由在客户虚拟机中执行的半虚拟化输入/输出前端块驱动器提交给缓冲器的第一命令;
由所述后端块服务驱动器基于所述第一命令通过将所述第一命令的虚拟参数转换为与物理资源相关联的物理参数来生成经转换的命令;
由所述后端块服务驱动器基于所述物理参数来将所述经转换的命令提交给将由物理资源处理的输入/输出队列;以及
由所述后端块服务驱动器将完成状态条目提交给所述缓冲器,所述完成状态条目指示在所述物理资源和与所述客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
48.如权利要求47所述的方法,进一步包括在将所述经转换的命令提交给所述输入/输出队列之前,由所述后端块服务驱动器或原生设备驱动器中的至少一者创建所述输入/输出队列。
49.如权利要求47所述的方法,其特征在于,所述物理资源是非易失性存储器快速设备。
50.如权利要求47所述的方法,其特征在于,所述虚拟参数包括虚拟存储器地址或共享环形缓冲器标识符中的至少一者,并且所述物理参数包括物理存储器地址或物理队列标识符中的至少一者。
51.如权利要求47所述的方法,其特征在于,所述物理资源是非易失性存储器快速设备。
52.如权利要求47所述的方法,进一步包括由所述后端块服务驱动器通知所述客户机虚拟机所述第一命令的完成。
53.一种用于处理来自虚拟机的命令的装置,所述装置包括:
在一个或多个处理器上执行的输入/输出虚拟机中的命令访问装置,所述命令访问装置用于访问由在客户机虚拟机中执行的半虚拟化输入/输出前端块驱动器提交给缓冲器的第一命令;
转换装置,所述转换装置用于基于所述第一命令通过将所述第一命令的虚拟参数转换为与物理资源相关联的物理参数来生成经转换的命令;
命令提交装置,所述命令提交装置用于基于所述物理参数来将所述经转换的命令提交给将由物理资源处理的输入/输出队列;以及
完成提交装置,所述完成提交装置用于将完成状态条目提交给所述缓冲器,所述完成状态条目指示在所述物理资源和与所述客户机虚拟机相对应的客户机存储器缓冲器之间复制数据的直接存储器访问操作的完成。
54.如权利要求53所述的装置,进一步包括队列创建装置,所述队列创建装置用于在将所述经转换的命令提交给所述输入/输出队列之前创建所述输入/输出队列。
55.如权利要求53所述的装置,其特征在于,所述物理资源是非易失性存储器快速设备。
56.如权利要求53所述的装置,其特征在于,所述虚拟参数包括虚拟存储器地址或共享环形缓冲器标识符中的至少一者,并且所述物理参数包括物理存储器地址或物理队列标识符中的至少一者。
57.如权利要求53所述的装置,其特征在于,所述物理资源是非易失性存储器快速设备。
58.如权利要求53所述的装置,进一步包括完成状态通知装置,所述完成状态通知装置用于通知所述客户机虚拟机所述第一命令的完成。
59.如权利要求53所述的装置,进一步包括:
存储器;
与所述存储器一起在电路中的一个或多个处理器;以及
与所述一个或多个处理器一起在电路中的网络接口,所述一个或多个处理器用于执行所述命令访问装置、所述转换装置、所述命令提交装置、以及所述完成提交装置。
CN201780094794.4A 2017-09-26 2017-09-26 处理来自虚拟机命令的方法和装置 Pending CN111133416A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/103385 WO2019061014A1 (en) 2017-09-26 2017-09-26 METHODS AND APPARATUS FOR PROCESSING CONTROLS FROM VIRTUAL MACHINES

Publications (1)

Publication Number Publication Date
CN111133416A true CN111133416A (zh) 2020-05-08

Family

ID=65900367

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780094794.4A Pending CN111133416A (zh) 2017-09-26 2017-09-26 处理来自虚拟机命令的方法和装置

Country Status (4)

Country Link
US (2) US11403129B2 (zh)
EP (1) EP3688583A1 (zh)
CN (1) CN111133416A (zh)
WO (1) WO2019061014A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112230865A (zh) * 2020-12-15 2021-01-15 广东睿江云计算股份有限公司 一种数据缓冲方法及其系统
CN113312143A (zh) * 2021-03-03 2021-08-27 阿里巴巴新加坡控股有限公司 云计算系统、命令处理方法及虚拟化仿真装置
CN114168067A (zh) * 2020-09-10 2022-03-11 西部数据技术公司 使用虚设虚拟功能的NVMe简单复制命令支持
CN114281252A (zh) * 2021-12-10 2022-04-05 阿里巴巴(中国)有限公司 非易失性高速传输总线NVMe设备的虚拟化方法及设备
WO2023155698A1 (zh) * 2022-02-18 2023-08-24 阿里巴巴(中国)有限公司 基于半虚拟化设备的数据处理方法、装置和系统

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111133416A (zh) 2017-09-26 2020-05-08 英特尔公司 处理来自虚拟机命令的方法和装置
CN107807843B (zh) * 2017-10-26 2019-05-24 北京百度网讯科技有限公司 虚拟机中的i/o请求处理方法、设备及计算机可读介质
JP6920001B2 (ja) * 2018-12-04 2021-08-18 株式会社日立製作所 マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法
US11055022B2 (en) * 2019-03-25 2021-07-06 Western Digital Technologies, Inc. Storage system and method for early host command fetching in a low queue depth environment
CN112148422A (zh) * 2019-06-29 2020-12-29 华为技术有限公司 一种io处理的方法和装置
US11106595B2 (en) 2019-08-22 2021-08-31 Micron Technology, Inc. Hierarchical memory systems
CN112749111A (zh) * 2019-10-31 2021-05-04 华为技术有限公司 访问数据的方法、计算设备和计算机系统
US11079968B1 (en) * 2020-02-21 2021-08-03 International Business Machines Corporation Queue management in multi-site storage systems
KR20220118004A (ko) * 2021-02-18 2022-08-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11630601B2 (en) * 2021-03-02 2023-04-18 Silicon Motion, Inc. Memory and apparatus for performing access control with aid of multi-phase memory-mapped queue
US11755251B2 (en) * 2021-06-02 2023-09-12 Samsung Electronics Co., Ltd. Virtual computational storage devices
US20230033583A1 (en) * 2021-07-30 2023-02-02 Advanced Micro Devices, Inc. Primary input-output queue serving host and guest operating systems concurrently
US11941290B2 (en) * 2021-09-01 2024-03-26 Micron Technology, Inc. Managing distribution of page addresses and partition numbers in a memory sub-system
US11977785B2 (en) 2022-02-08 2024-05-07 Microsoft Technology Licensing, Llc Non-volatile memory device-assisted live migration of virtual machine data
CN118034615A (zh) * 2024-04-12 2024-05-14 阿里云计算有限公司 数据访问方法以及装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8214622B2 (en) * 2004-05-27 2012-07-03 International Business Machines Corporation Facilitating management of storage of a pageable mode virtual environment absent intervention of a host of the environment
US7941799B2 (en) * 2004-05-27 2011-05-10 International Business Machines Corporation Interpreting I/O operation requests from pageable guests without host intervention
US7395405B2 (en) * 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US7613898B2 (en) * 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
US7613847B2 (en) * 2006-05-16 2009-11-03 Hewlett-Packard Development Company, L.P. Partially virtualizing an I/O device for use by virtual machines
US8443156B2 (en) * 2009-03-27 2013-05-14 Vmware, Inc. Virtualization system using hardware assistance for shadow page table coherence
US8060722B2 (en) * 2009-03-27 2011-11-15 Vmware, Inc. Hardware assistance for shadow page table coherence with guest page mappings
US8799879B2 (en) * 2009-06-30 2014-08-05 Oracle America, Inc. Method and apparatus for protecting translated code in a virtual machine
US9535732B2 (en) 2009-11-24 2017-01-03 Red Hat Israel, Ltd. Zero copy transmission in virtualization environment
US8463980B2 (en) * 2010-09-30 2013-06-11 Microsoft Corporation Shared memory between child and parent partitions
JP5891900B2 (ja) 2012-03-29 2016-03-23 富士通株式会社 アクセス制御方法、サーバ装置およびストレージ装置
US8938571B1 (en) * 2012-06-13 2015-01-20 Amazon Technologies, Inc. Managing I/O operations in a virtualized environment
US9460024B2 (en) * 2013-03-15 2016-10-04 Vmware, Inc. Latency reduction for direct memory access operations involving address translation
US20140359612A1 (en) * 2013-06-03 2014-12-04 Microsoft Corporation Sharing a Virtual Hard Disk Across Multiple Virtual Machines
KR102123422B1 (ko) 2014-09-12 2020-06-16 인텔 코포레이션 가상 컴퓨팅 환경에서의 메모리 및 자원 관리
JP6472881B2 (ja) 2014-11-12 2019-02-20 インテル コーポレイション グラフィックス仮想化を用いたホストコンピュータからの/ホストコンピュータへの仮想マシンのライブマイグレーション
US9824026B2 (en) 2014-12-23 2017-11-21 Intel Corporation Apparatus and method for managing a virtual graphics processor unit (VGPU)
WO2016101172A1 (en) 2014-12-24 2016-06-30 Intel Corporation Hybrid on-demand graphics translation table shadowing
WO2017107058A1 (en) * 2015-12-22 2017-06-29 Intel Corporation Apparatus and method for intelligent resource provisioning for shadow structures
US10241931B2 (en) * 2016-07-29 2019-03-26 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
US10891237B2 (en) * 2016-09-26 2021-01-12 Intel Corporation Apparatus and method for mediate pass through and shared memory page merge
US20180335956A1 (en) * 2017-05-17 2018-11-22 Dell Products L.P. Systems and methods for reducing data copies associated with input/output communications in a virtualized storage environment
CN111133416A (zh) 2017-09-26 2020-05-08 英特尔公司 处理来自虚拟机命令的方法和装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114168067A (zh) * 2020-09-10 2022-03-11 西部数据技术公司 使用虚设虚拟功能的NVMe简单复制命令支持
CN112230865A (zh) * 2020-12-15 2021-01-15 广东睿江云计算股份有限公司 一种数据缓冲方法及其系统
CN113312143A (zh) * 2021-03-03 2021-08-27 阿里巴巴新加坡控股有限公司 云计算系统、命令处理方法及虚拟化仿真装置
CN113312143B (zh) * 2021-03-03 2024-01-23 阿里巴巴新加坡控股有限公司 云计算系统、命令处理方法及虚拟化仿真装置
CN114281252A (zh) * 2021-12-10 2022-04-05 阿里巴巴(中国)有限公司 非易失性高速传输总线NVMe设备的虚拟化方法及设备
WO2023155698A1 (zh) * 2022-02-18 2023-08-24 阿里巴巴(中国)有限公司 基于半虚拟化设备的数据处理方法、装置和系统

Also Published As

Publication number Publication date
US11947991B2 (en) 2024-04-02
US20220326979A1 (en) 2022-10-13
US20200174819A1 (en) 2020-06-04
WO2019061014A1 (en) 2019-04-04
US11403129B2 (en) 2022-08-02
EP3688583A1 (en) 2020-08-05

Similar Documents

Publication Publication Date Title
US11947991B2 (en) Methods and apparatus to process commands from virtual machines
US10061724B2 (en) Latency reduction for direct memory access operations involving address translation
US9294567B2 (en) Systems and methods for enabling access to extensible storage devices over a network as local storage via NVME controller
US9727503B2 (en) Storage system and server
US10387182B2 (en) Direct memory access (DMA) based synchronized access to remote device
US9696942B2 (en) Accessing remote storage devices using a local bus protocol
US8086765B2 (en) Direct I/O device access by a virtual machine with memory managed using memory disaggregation
Peng et al. {MDev-NVMe}: A {NVMe} Storage Virtualization Solution with Mediated {Pass-Through}
US20130055259A1 (en) Method and apparatus for handling an i/o operation in a virtualization environment
US11635902B2 (en) Storage device processing stream data, system including the same, and operation method
US11397697B2 (en) Core-to-core communication
US20190102317A1 (en) Technologies for flexible virtual function queue assignment
JP7227907B2 (ja) バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法及び装置
US20220269621A1 (en) Providing Copies of Input-Output Memory Management Unit Registers to Guest Operating Systems
CN114080587A (zh) 输入-输出存储器管理单元对访客操作系统缓冲区和日志的访问
CN114207596A (zh) 将中断从输入-输出存储器管理单元提供到访客操作系统
US20220358049A1 (en) Memory access handling for peripheral component interconnect devices
JP7403478B2 (ja) データバッファリング方法、データ処理方法、コンピュータデバイス、および記憶媒体
KR102532099B1 (ko) 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법
JP2011203937A (ja) Dmaセキュリティチェック回路及びdmaセキュリティチェック方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination