CN102754076A - 用于在虚拟化环境中处理i/o操作的方法和设备 - Google Patents

用于在虚拟化环境中处理i/o操作的方法和设备 Download PDF

Info

Publication number
CN102754076A
CN102754076A CN2009801631766A CN200980163176A CN102754076A CN 102754076 A CN102754076 A CN 102754076A CN 2009801631766 A CN2009801631766 A CN 2009801631766A CN 200980163176 A CN200980163176 A CN 200980163176A CN 102754076 A CN102754076 A CN 102754076A
Authority
CN
China
Prior art keywords
virtual machine
information
guest virtual
architecture
guest
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
CN2009801631766A
Other languages
English (en)
Other versions
CN102754076B (zh
Inventor
Y·董
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 CN102754076A publication Critical patent/CN102754076A/zh
Application granted granted Critical
Publication of CN102754076B publication Critical patent/CN102754076B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0058Bus-related hardware virtualisation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)

Abstract

用于在虚拟化环境中处理I/O操作的机器可读介质、方法、设备和系统。在一些实施例中,系统包括:包括输入/输出(I/O)装置的硬件机;以及用于将硬件机与多个虚拟机接口的虚拟机监视器。在一些实施例中,虚拟机包括:用于写入与输入/输出(I/O)操作有关的I/O信息的访客虚拟机;以及包括装置模型和装置驱动器的服务虚拟机,其中装置模型调用装置驱动器以控制I/O装置的一部分利用I/O信息来实现I/O操作,并且其中装置模型、装置驱动器和I/O装置的那部分指派给访客虚拟机。

Description

用于在虚拟化环境中处理I/O操作的方法和设备
背景技术
虚拟机体系结构可在逻辑上对物理机分区,以使得物理机的基本硬件可共享并且看起来就像是一个或多个独立操作的虚拟机。输入/输出(I/O)虚拟化(IOV)可实现一个I/O装置供多个虚拟机使用的能力。
软件全装置仿真可以是I/O虚拟化的一个实例。I/O装置的全仿真可使得虚拟机能够再利用现有的装置驱动器。单根I/O虚拟化(SR-IOV)或任何其它资源分区解决方案可以是I/O虚拟化的另一个实例。将I/O装置功能(例如,与数据移动有关的I/O装置功能)分区到多个虚拟接口(VI)中(其中每个功能指派给一个虚拟机)可减少软件仿真层中的I/O开销。
附图说明
附图中举例而不是限制性地示出本文描述的发明。为了简单且清楚地说明,图中示出的元件不一定按比例绘制。例如,为清楚起见,一些元件的尺寸可能相对于其它元件有所夸大。此外,在认为合适的情况下,图中重复使用附图标记以指示对应或类似的元件。
图1示出包括用于控制在访客虚拟机中发起的I/O操作的服务虚拟机的计算平台的实施例。
图2a示出用于存储I/O操作的I/O描述符的描述符环结构的实施例。
图2b示出用于存储I/O操作的I/O描述符的描述符环结构和影子描述符环结构的实施例。
图3示出供I/O装置进行直接存储器存取(DMA)的输入/输出存储器管理单元(1OMMU)表的实施例。
图4示出由访客虚拟机写入与I/O操作有关的I/O信息的方法的实施例。
图5示出通过服务虚拟机基于I/O信息处理I/O操作的方法的实施例。
图6a-6b示出通过服务虚拟机基于I/O信息处理I/O操作的方法的另一个实施例。
具体实施方式
以下描述叙述用于在虚拟化环境中处理I/O操作的技术。在以下描述中,阐述了众多具体细节,例如逻辑实现、伪代码、用于指定操作数的方式、资源分区/共享/复制实现、系统组件的类型和相互关系以及逻辑分区/集成选择,以便更加全面地了解本发明。然而,在没有这些具体细节的情况下,也可实现本发明。在其它情况下,没有详细示出控制结构、门级电路和全软件指令序列,以免使本发明晦涩难懂。本领域技术人员通过所包含的描述将能实现合适的功能性,而无需过多试验。
说明书中提到“一个实施例”、“实施例”、“实例实施例”等时表示,所描述的实施例可包括特定特征、结构或特性,但不是每个实施例都一定要包括该特定特征、结构或特性。而且,这些短语不一定指相同的实施例。此外,当结合一个实施例描述特定特征、结构或特性时,认为本领域技术人员知道结合其它实施例来实现该特征、结构或特性,而不管是否有明确描述。
本发明的实施例能以硬件、固件、软件或其任意组合来实现。本发明的实施例也可作为存储在机器可读介质上的指令来实现,这些指令可由一个或多个处理器读取和执行。机器可读介质可包括用于存储或传送可供机器(如计算装置)读取的形式的信息的任何机制。例如,机器可读介质可包括:只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪速存储器装置;电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)及其它。
图1中示出在虚拟化环境中处理I/O操作的计算平台100的实施例。计算平台100的非穷尽实例列表可包括分布式计算系统、超级计算机、计算群集、大型计算机、微型计算机、个人计算机、工作站、服务器、便携式计算机、膝上型计算机以及用于收发和处理数据的其它装置。
在该实施例中,计算平台100可包括底层硬件机101,其具有一个或多个处理器111、存储器系统121、芯片组131、I/O装置141和可能的其它组件。一个或多个处理器111可经由诸如处理器总线(图1中未示出)的一个或多个总线在通信上耦合到各个组件(例如,芯片组131)。处理器111可作为具有一个或多个处理核的集成电路(IC)来实现,这一个或多个处理核可在合适的体现结构下执行代码。
存储器系统121可存储要由处理器111执行的指令和数据。存储器121的实例可包括以下半导体装置中的一种或其任意组合:例如同步动态随机存取存储器(SDRAM)装置、RAMBUS动态随机存取存储器(RDRAM)装置、双倍数据速率(DDR)存储器装置、静态随机存取存储器(SRAM)及闪速存储器装置。
芯片组131可在一个或多个处理器111、存储器121和诸如I/O装置141的其它组件之间提供一个或多个通信路径。I/O装置141可包括但不限于经由外围组件互连(PCI)或PCI express(PCIe)总线与主机母板连接的PCI和/或PCIe装置。I/O装置141的实例可包括通用串行总线(USB)控制器、图形适配器、音频控制器、网络接口控制器(NIC)、存储装置等。
计算平台100还可包括虚拟机监视器(VMM)102,其负责将底层硬件机与上覆虚拟机(例如,服务虚拟机103、访客虚拟机1031-103n)接口,以利于和管理虚拟机的多个操作系统(OS)(例如,服务虚拟机103的主机操作系统113、访客虚拟机1031-103n的访客操作系统1131-113n)共享底层物理资源。虚拟机监视器的实例可包括Xen、ESX服务器、虚拟PC、虚拟服务器、Hper-V、Paralle、OpenVZ、Qemu等。
在一个实施例中,I/O装置141(例如,网络卡)可分区成数个功能部分,包括支持输入/输出虚拟化(IOV)体系结构(例如,单根IOV)的控制实体(CE)1410和具有用于专用存取的运行时资源(例如,网络装置中的队列对)的多个虚拟功能接口(VI)1411-141n。CE和VI的实例可包括单根I/O虚拟化体系结构或多根I/O虚拟化体系结构下的物理功能和虚拟功能。CE还可配置和管理VI功能性。在一个实施例中,多个访客虚拟机1031-103n可共享受CE 1410控制的物理资源,而每个访客虚拟机1031-103n可指派有一个或多个VI 1411-141n。例如,访客虚拟机1031可指派有VI 1411
将明白,其它实施例可对于I/O装置141的结构实现其它技术。在一个实施例中,I/O装置141可包括一个或多个VI,而没有CE。例如,不具有分区能力的传统NIC可包括在NULL CE条件下工作的单个VI。
服务虚拟机103可加载有装置模型114、CE驱动器115和VI驱动器116的代码。装置模型114可以是或者可以不是真实I/O装置141的软件仿真。CE驱动器115可管理CE 1410,CE 1410与计算平台100的初始化和运行时期间的I/O装置初始化和配置有关。取决于管理策略,VI驱动器116可以是用于管理一个或多个VI 1411-141n的装置驱动器。在一个实施例中,基于管理策略,VI驱动器可管理分配给VI驱动器可支持的访客VM的资源,而CE驱动器可管理全局活动。
每个访客虚拟机1031-103n可加载有用于管理由VMM 102呈现的虚拟装置的访客装置驱动器(例如,访客虚拟机1031的访客装置驱动器1161、或访客虚拟机103n的访客装置驱动器116n)的代码。访客装置驱动器能够或不能以与VI 141及其驱动器116兼容的模式工作。在一个实施例中,访客装置驱动器可以是传统驱动器。
在一个实施例中,响应于访客虚拟机的访客操作系统(例如,访客VM 1031的访客OS 1131)加载访客装置驱动器(例如,访客装置驱动器1161),服务VM 103可运行装置模型114和VI驱动器116的示例。例如,装置模型114的示例可为访客装置驱动器1161服务,而VI驱动器116的示例可控制指派给访客VM 1031的VI 1411。例如,如果访客装置驱动器1161是基于82571EB的NIC(由加利福尼亚圣克拉拉的英特尔公司制造的网络控制器)的传统驱动器,并且指派给访客VM 1031的VI 1411是基于82571EB的NIC或与基于82571EB的NIC兼容或不兼容的其它类型的NIC,那么服务VM 103可运行代表虚拟的基于82571EB的NIC的装置模型114的示例以及用于控制VI1411(即,基于82571EB的NIC或与基于82571EB的NIC兼容或不兼容的其它类型的NIC)的VI驱动器116的示例。
将明白,为了说明而提供图1中示出的实施例,并且其它技术可实现计算系统100的其它实施例。例如,装置模型114可与VI驱动器116或CE驱动器结合,或将它们并入在一个盒内等。它们可以按诸如OS内核的特权模式或诸如OS用户态(user land)的非特权模式运行。服务VM甚至可分成多个VM,一个VM运行CE,而另一个VM运行装置模型和VI驱动器,或任意其它组合,其中在多个VM之间具有足够通信。
在一个实施例中,如果在访客VM 1031上运行的应用(例如,应用1171)指示I/O操作,那么访客装置驱动器1161可以将与I/O操作有关的I/O信息写入到指派给访客VM 1031的缓冲器(图1中未示出)中。例如,访客装置驱动器1161可以将I/O描述符写入到如图2a所示的环结构中,其中环结构的一个条目对应于一个I/O描述符。在一个实施例中,I/O描述符可以指示与数据分组有关的I/O操作。例如,如果访客应用1171指示从访客存储器地址xxx-yyy读取100个分组或将100个分组写入到访客存储器地址xxx-yyy,那么访客装置驱动器1161可以将100个I/O描述符写入到图2a的描述符环中。访客装置驱动器1161可以从头指针201开始将描述符写入到描述符环中。在完成与I/O操作有关的描述符的写入之后,访客装置驱动器1161可以更新尾指针202。在一个实施例中,头指针201和尾指针202可存储在头寄存器和尾寄存器(图中未示出)中。
在一个实施例中,描述符可以包括数据、I/O操作类型(读取或写入)、用于VI 1411读取数据或写入数据的访客存储器地址、I/O操作状态的状态以及I/O操作所需的可能的其它信息。
在一个实施例中,如果访客装置驱动器1161不能以与指派给访客VM 1031的VI 1411兼容的模式工作,例如,如果由于VI 1411和访客装置驱动器1161支持不同的位格式和/或语义而导致VI 1411不能基于由访客装置驱动器1161写入的描述符来实现I/O操作,那么VI驱动器116可生成影子环(如图2b所示),并将遵照访客VM 1031的体系结构的描述符、头指针和尾指针转化为遵照VI 1411的体系结构的影子描述符(S-描述符)、影子头指针(S-头指针)和影子尾指针(S-尾指针),以使得VI 1411可基于影子描述符来实现I/O操作。
将明白,为了说明而提供图2a和图2b中示出的实施例,并且其它技术可实现I/O信息的其它实施例。例如,可在不同于图2a和图2b的环结构的其它数据结构(例如,哈希表、链接表等)中写入I/O信息。又如,可针对接收和传输二者使用单个环,或者可针对接收或传输使用单独的环。
IOMMU或类似的技术可允许I/O装置141通过将从描述符环或影子描述符环中的描述符检索的访客地址重新映射到主机地址而直接存取存储器系统121。图3示出IOMMU表的一个实施例。诸如访客VM 1031的访客虚拟机可具有至少一个IOMMU表,其指示遵照访客VM的体系结构的访客存储器地址与遵照主机计算系统的体系结构的主机存储器地址之间的对应的关系。VMM 102和服务VM 103可管理所有访客虚拟机的IOMMU表。此外,IOMMU页表可以用各种方法来建索引,例如用装置标识符(例如,PCIe系统中的总线:装置:功能编号)、访客VM编号或IOMMU实现中所指定的任何其它方法来建索引。
将明白,不同的实施例可以利用不同的技术来进行存储器存取。在一个实施例中,如果通过例如软件解决方案使访客地址等于主机地址,那么可以不使用IOMMU。在另一个实施例中,访客装置驱动器可以与VMM 102一起工作以通过利用类似于IOMMU表的映射表来将访客地址转化为主机地址。
图4示出通过访客虚拟机来写入与I/O操作有关的I/O信息的方法的实施例。以下描述通过将访客VM 1031作为实例来进行。应了解,相同或类似的技术可适用于其它访客VM。
在方框401,在访客VM 1031上运行的应用1171可指示I/O操作以例如将100个分组写入到访客存储器地址xxx-yyy。在方框402,访客装置驱动器1161可生成与I/O操作有关的I/O描述符并将其写入到访客VM 1031的描述符环(例如,如图2a或2b所示的描述符环)上,直到在方框403中将与I/O操作有关的所有描述符都写入到描述符环中。在一个实施例中,访客装置驱动器1161可以从头指针(例如,图2a中的头指针201或图2b中的头指针2201)开始写入I/O描述符。在方框404,在将与I/O操作有关的所有描述符都写入到缓冲器之后,访客装置驱动器1161可更新尾指针(例如,图2a中的尾指针202或图2b中的尾指针2202)。
图5示出通过服务VM 103来处理I/O操作的方法的实施例。该实施例可在访客虚拟机的访客装置驱动器能够以与VI和/或其指派给访客虚拟机的驱动器兼容的模式工作的状况下应用。例如,访客装置驱动器是基于82571EB的NIC的传统驱动器,而VI是基于82571EB的NIC或与基于82571EB的NIC兼容的其它类型的NIC,如基于82576EB的NIC的虚拟功能。以下描述通过将访客VM 1031作为示例来进行。应了解,相同或类似的技术可适用于其它访客VM。
在方框501,访客VM 1031更新尾指针(例如,图2a的尾指针202)可触发虚拟机退出(例如,VMExit),VMM 102可捕获虚拟机退出,以使得VMM 102可以将系统的控制权从访客VM 1031的访客OS 1131转移到服务VM 103的装置模型114。
在方框502,装置模型114可响应尾指针更新而调用VI驱动器116。在方框503-506,VI驱动器116可控制指派给访客VM 1031的VI 1141以基于由访客VM 1031写入的I/O描述符(例如,图2a的I/O描述符)来实现I/O操作。具体来说,在方框503,VI驱动器116可调用VI 1141以便为I/O描述符做好准备。在一个实施例中,VI驱动器116可通过更新尾寄存器(图中未示出)来调用VI 1141。在方框504,VI 1141可从访客VM 1031的描述符环(例如,图2a中示出的描述符环)中读取描述符并如I/O描述符中所描述地那样实现I/O操作,例如接收分组并将分组写入到访客存储器地址xxx。在一个实施例中,VI 1141可读取由描述符环的头指针(例如,图2a的头指针201)所指的I/O描述符。
在一个实施例中,VI 1141可利用IOMMU或类似技术来实现I/O操作的直接存储器存取(DMA)。例如,VI1 1141可从为访客VM 1031生成的IOMMU表中获得对应于访客存储器地址的主机存储器地址,并从存储器系统121直接读取分组或直接将分组写入到存储器系统121。在另一个实施例中,如果在访客地址与主机地址之间的固定映射下,访客地址等于主机地址,那么VI 1141可在没有IOMMU表的情况下实现直接存储器存取。在方框505,VI 1141还可更新I/O描述符,例如I/O描述符中所包含的I/O操作的状态,以便指示实现了I/O描述符。在一个实施例中,VI 1141可以或者可以不利用IOMMU表来进行I/O描述符更新。VI 1141还可更新头指针以便向前移动头指针并使其指向描述符环中的下一个I/O描述符。
在方框506,VI 1141可确定是否到达尾部所指的I/O描述符。响应于未到达,VI 1141可继续在方框504和505中从描述符环读取I/O描述符并实现由I/O描述符所指示的I/O操作。响应于到达,VI 1141可在方框507通过例如向VMM 102发送中断信号而告知VMM 102I/O操作已完成。在方框508,VMM 102可通过例如将中断注入到服务VM 103而告知VI驱动器106I/O操作已完成。
在方框509,VI驱动器116可保持VI 1141的状态并告知装置模型114I/O操作已完成。在方框510,装置模型114可向访客VM 1131发送虚拟中断信号,以使得访客装置驱动器1161可处理该事件并告知应用1171实现了I/O操作。例如,访客装置驱动器1161可告知应用1171接收到数据并准备好使用。在一个实施例中,装置模型14还可更新头寄存器(图中未示出)以指示将描述符环的控制权转移回到访客装置驱动器1161。将明白,告知访客装置驱动器1161可以按其它方式进行,这可由装置/驱动器策略(例如在访客装置驱动器禁用装置中断的情况下做出的装置/驱动器策略)确定。
将明白,为了说明而提供所描述的实施例,并且其它技术可实现其它实施例。例如,取决于不同的VMM机制,VI 1141可以用不同的方式来告知上覆机I/O操作已完成。在一个实施例中,VI 1411可直接告知服务VM 103而不是经由VMM 102。在另一个实施例中,VI 1141可告知上覆机何时完成描述符环中所列的一个或多个而不是所有I/O操作,以使得可以及时告知访客应用完成了I/O操作的一部分。
图6a-6b示出通过服务VM 103来处理I/O操作的方法的另一个实施例。该实施例可在访客虚拟机的访客装置驱动器不能以与VI和/或其指派给访客虚拟机的驱动器兼容的模式工作的状况下应用。以下描述通过将访客VM 1031作为实例来进行。应了解,相同或类似的技术可适用于其它访客VM。
在方框601,VMM可捕获在例如访客装置驱动器116访问虚拟装置(例如,装置模型114)时由访客VM 1031引起的虚拟机退出(例如,VMExit)。在方框602,VMM 102可将系统的控制权从访客VM1031的访客OS 1131转移到服务VM 103的装置模型114。在方框603,装置模型114可以确定访客装置驱动器1161完成将与I/O操作有关的I/O描述符写入到描述符环(例如,图2b的描述符环)的事实是否触发虚拟机退出。在一个实施例中,访客VM 1131可更新指示I/O描述符的末端的尾指针(例如,图2b的尾指针2202)。在该情况下,装置模型114可确定尾指针的更新是否触发虚拟机退出。
响应于访客装置驱动器1161完成I/O描述符的写入的事实没有触发虚拟机退出,图6a-6b的方法可回到方框601,即,VMM可捕获下一个VM退出。响应于访客装置驱动器1161完成I/O描述符的写入的事实触发虚拟机退出,在方框604,装置模型114可调用VI驱动器116以便将遵照访客VM 1031的体系结构的I/O描述符转化为遵照指派给访客VM 1031的VI 1411的体系结构的影子I/O描述符,并将影子I/O描述符存储到影子描述符环(例如,图2b中示出的影子描述符环)中。
在方框605,VI驱动器116可以将遵照访客VM 1031的体系结构的尾指针转化为遵照VI 1411的体系结构的影子尾指针。
在方框606-610,VI驱动器116可控制VI 1141以基于由访客VM1031写入的I/O描述符来实现I/O操作。具体来说,在方框606,VI驱动器116可调用VI 1141以便为影子描述符做好准备。在一个实施例中,VI驱动器116可通过更新影子尾指针(图中未示出)来调用VI 1141。在方框607,VI 1141可从影子描述符环读取影子I/O描述符,并如影子I/O描述符中所描述地那样实现I/O操作,例如接收分组并将分组写入到访客存储器地址xxx或从访客存储器地址xxx读取分组并传送分组。在一个实施例中,VI 1141可读取由影子描述符环的影子头指针(例如,图2b的影子头指针2201)所指的I/O描述符。
在一个实施例中,VI 1141可利用IOMMU或类似的技术来实现I/O操作的直接存储器存取。例如,VI1 1141可从为访客VM 1031生成的IOMMU表中获得对应于访客存储器地址的主机存储器地址,并将所接收的分组直接写入到存储器系统121。在另一个实施例中,如果在访客地址与主机地址之间的固定映射下,访客地址等于主机地址,那么VI 1141可在没有IOMMU表的情况下实现直接存储器存取。在方框608,VI 1141还可更新影子I/O描述符,例如在影子I/O描述符中所包含的I/O操作的状态,以便指示已经实现了I/O描述符。在一个实施例中,VI 1141可利用IOMMU表来进行I/O描述符更新。VI 1141还可更新影子头指针以便向前移动影子头指针并使其指向影子描述符环中的下一个影子I/O描述符。
在方框609,VI驱动器116可将更新后的影子I/O描述符和影子头指针转化回为I/O描述符和头指针,并用新的I/O描述符和头指针来更新描述符环。在方框610,VI 1141可确定是否到达影子尾指针所指的影子I/O描述符。响应于未到达,VI 1141可继续在方框607-609中从影子描述符环读取影子I/O描述符并实现由影子I/O描述符所描述的I/O操作。响应于到达,VI 1141可在方框611通过例如向VMM 102发送中断信号而告知VMM 102 I/O操作已完成。然后,VMM 102可通过例如将中断注入到服务VM 103而告知VI驱动器106I/O操作已完成。
在方框612,VI驱动器116可保持VI 1141的状态并告知装置模型114I/O操作已完成。在方框613,装置模型114可以向访客装置驱动器1161发送虚拟中断信号,以使得访客装置驱动器1161可以处理该事件并告知应用1171实现了I/O操作。例如,访客装置驱动器1161可告知应用1171接收到数据并准备好使用。在一个实施例中,装置模型14还可更新头寄存器(图中未示出)以指示将描述符环的控制权转移回到访客装置驱动器1161。将明白,告知访客装置驱动器1161可以用其它方式进行,这可由装置/驱动器策略(例如在访客装置驱动器禁用装置中断的情况下做出的装置/驱动器策略)确定。
将明白,为了说明而提供所描述的实施例,并且其它技术可实现其它实施例。例如,取决于不同的VMM机制,VI 1141可以用不同的方式来告知上覆机I/O操作已完成。在一个实施例中,VI 1411可直接告知服务VM 103而不是经由MM 102。在另一个实施例中,VI 1141可告知上覆机何时完成描述符环中所列的一个或多个而不是所有I/O操作,以使得可以及时告知访客应用完成了I/O操作的一部分。
尽管上文参考实例实施例描述了本发明的某些特征,但本描述不是要按限制意义来理解。对于本发明所属领域的技术人员来说显而易见的实例实施例的各种修改以及本发明的其它实施例视为落在本发明的精神和范围内。

Claims (26)

1.一种由服务虚拟机操作的方法,包括:
通过所述服务虚拟机的装置模型来调用所述服务虚拟机的装置驱动器以便控制输入/输出(I/O)装置的一部分通过利用I/O信息来实现I/O操作,所述I/O信息与所述I/O操作有关并由访客虚拟机写入;
其中所述装置模型、所述装置驱动器和所述I/O装置的所述部分指派给所述访客虚拟机。
2.如权利要求1所述的方法,还包括:如果所述I/O装置的所述部分不能与所述访客虚拟机的体系结构兼容地工作,那么:
通过所述装置驱动器将遵照所述访客虚拟机的体系结构的I/O信息转化为遵照所述I/O装置的所述部分的体系结构的影子I/O信息;以及
通过所述装置驱动器将遵照所述I/O装置的所述部分的体系结构的更新后的影子I/O信息转化为遵照所述访客虚拟机的体系结构的更新后的I/O信息,其中所述I/O装置的所述部分响应于所述I/O操作的实现而更新所述更新后的I/O信息。
3.如权利要求1所述的方法,还包括:
在实现所述I/O操作之后,由所述装置驱动器保持所述I/O装置的所述部分的状态。
4.如权利要求1所述的方法,还包括:
由所述装置模型告知所述访客虚拟机实现了所述I/O操作。
5.如权利要求1所述的方法,其中在数据结构中从可受所述I/O装置的所述部分控制的头指针开始写入所述I/O信息。
6.如权利要求1所述的方法,其中通过所述访客虚拟机来更新指示I/O信息的末端的尾指针。
7.一种设备,包括:
装置模型和装置驱动器,其中所述装置模型调用所述装置驱动器以控制输入/输出(I/O)装置的一部分通过利用I/O信息来实现I/O操作,所述I/O信息与所述I/O操作有关并由访客虚拟机写入,并且其中所述装置模型、所述装置驱动器和所述I/O装置的所述部分指派给所述访客虚拟机。
8.如权利要求7所述的设备,其中,如果所述I/O装置的所述部分不能与所述访客虚拟机的体系结构兼容地工作,那么所述装置驱动器:
将遵照所述访客虚拟机的体系结构的I/O信息转化为遵照所述I/O装置的所述部分的体系结构的影子I/O信息;以及
将遵照所述I/O装置的所述部分的体系结构的更新后的影子I/O信息转化为遵照所述访客虚拟机的体系结构的更新后的I/O信息,其中所述I/O装置的所述部分响应于所述I/O操作的实现而更新所述更新后的I/O信息。
9.如权利要求7所述的设备,其中在实现所述I/O操作之后,所述装置驱动器还保持所述I/O装置的所述部分的状态。
10.如权利要求7所述的设备,其中所述装置模型还告知所述访客虚拟机实现了所述I/O操作。
11.如权利要求7所述的设备,其中在数据结构中从可受所述I/O装置的所述部分控制的头指针开始写入所述I/O信息。
12.如权利要求7所述的设备,其中通过所述访客虚拟机来更新指示I/O信息的末端的尾指针。
13.一种包括多个指令的机器可读介质,所述多个指令在执行时导致系统:
通过服务虚拟机的装置模型来调用所述服务虚拟机的装置驱动器以控制输入/输出(I/O)装置的一部分通过利用I/O信息来实现I/O操作,所述I/O信息与所述I/O操作有关并由访客虚拟机写入,
其中所述装置模型、所述装置驱动器和所述I/O装置的所述部分指派给所述访客虚拟机。
14.如权利要求13所述的机器可读介质,其中,如果所述I/O装置的所述部分不能与所述访客虚拟机的体系结构兼容地工作,那么所述多个指令还导致所述系统:
通过所述装置驱动器将遵照所述访客虚拟机的体系结构的I/O信息转化为遵照所述I/O装置的所述部分的体系结构的影子I/O信息;以及
通过所述装置驱动器将遵照所述I/O装置的所述部分的体系结构的更新后的影子I/O信息转化为遵照所述访客虚拟机的体系结构的更新后的I/O信息,其中所述I/O装置的所述部分响应于所述I/O操作的实现而更新所述更新后的I/O信息。
15.如权利要求13所述的机器可读介质,其中所述多个指令还导致所述系统:
在实现所述I/O操作之后,通过所述装置驱动器保持所述I/O装置的所述部分的状态。
16.如权利要求13所述的机器可读介质,其中所述多个指令还导致所述系统:
通过所述装置模型告知所述访客虚拟机实现了所述I/O操作。
17.如权利要求13所述的机器可读介质,其中在数据结构中从可受所述I/O装置的所述部分控制的头指针开始写入所述I/O信息。
18.如权利要求13所述的机器可读介质,其中通过所述访客虚拟机来更新指示I/O信息的末端的尾指针。
19.一种系统,包括:
包括输入/输出(I/O)装置的硬件机;以及
用于将所述硬件机与多个虚拟机接口的虚拟机监视器,其中所述虚拟机包括:
用于写入与输入/输出(I/O)操作有关的I/O信息的访客虚拟机;以及
包括装置模型和装置驱动器的服务虚拟机,其中所述装置模型调用所述装置驱动器以控制所述I/O装置的一部分通过利用所述I/O信息来实现所述I/O操作,并且其中所述装置模型、所述装置驱动器和所述I/O装置的所述部分指派给所述访客虚拟机。
20.如权利要求19所述的系统,其中,如果所述I/O装置的所述部分不能与所述访客虚拟机的体系结构兼容地工作,那么所述服务虚拟机的装置驱动器还:
将遵照所述访客虚拟机的体系结构的I/O信息转化为遵照所述I/O装置的所述部分的体系结构的影子I/O信息;以及
将遵照所述I/O装置的至少部分的体系结构的更新后的影子I/O信息转化为遵照所述访客虚拟机的体系结构的更新后的I/O信息,其中所述I/O装置的所述部分响应于所述I/O操作的实现而更新所述更新后的I/O信息。
21.如权利要求20所述的系统,其中所述访客虚拟机从通过所述I/O装置的所述部分更新的头指针开始将所述I/O信息写入数据结构中。
22.如权利要求20所述的系统,其中所述访客虚拟机更新指示所述I/O信息的末端的尾指针。
23.如权利要求20所述的系统,其中,如果检测到更新了所述尾指针,那么所述虚拟机监视器将所述系统的控制权从所述访客虚拟机转移到所述服务虚拟机。
24.如权利要求20所述的系统,其中所述I/O装置的所述部分响应于实现了所述I/O操作而更新所述I/O信息。
25.如权利要求20所述的系统,其中在实现了所述I/O操作之后,所述装置驱动器保持所述I/O装置的所述部分的状态。
26.如权利要求20所述的系统,其中所述装置模型告知所述访客虚拟机实现了所述I/O操作。
CN200980163176.6A 2009-12-24 2009-12-24 用于在虚拟化环境中处理i/o操作的方法和设备 Expired - Fee Related CN102754076B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2009/001543 WO2011075870A1 (en) 2009-12-24 2009-12-24 Method and apparatus for handling an i/o operation in a virtualization environment

Publications (2)

Publication Number Publication Date
CN102754076A true CN102754076A (zh) 2012-10-24
CN102754076B CN102754076B (zh) 2016-09-07

Family

ID=44194887

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980163176.6A Expired - Fee Related CN102754076B (zh) 2009-12-24 2009-12-24 用于在虚拟化环境中处理i/o操作的方法和设备

Country Status (9)

Country Link
US (1) US20130055259A1 (zh)
EP (1) EP2517104A4 (zh)
JP (1) JP5608243B2 (zh)
KR (1) KR101521778B1 (zh)
CN (1) CN102754076B (zh)
AU (1) AU2009357325B2 (zh)
RU (1) RU2532708C2 (zh)
SG (1) SG181557A1 (zh)
WO (1) WO2011075870A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106201349A (zh) * 2015-12-31 2016-12-07 华为技术有限公司 一种在物理主机中处理读/写请求的方法和装置
CN106445628A (zh) * 2015-08-11 2017-02-22 华为技术有限公司 一种虚拟化方法、装置和系统
CN106844007A (zh) * 2016-12-29 2017-06-13 中国科学院计算技术研究所 一种基于空间复用的虚拟化方法与系统
CN109542831A (zh) * 2018-10-28 2019-03-29 西南电子技术研究所(中国电子科技集团公司第十研究所) 机载平台多核虚拟分区处理系统

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9021475B2 (en) * 2011-05-04 2015-04-28 Citrix Systems, Inc. Systems and methods for SR-IOV pass-thru via an intermediary device
US8578378B2 (en) * 2011-07-28 2013-11-05 Intel Corporation Facilitating compatible interaction, at least in part
US8549518B1 (en) 2011-08-10 2013-10-01 Nutanix, Inc. Method and system for implementing a maintenanece service for managing I/O and storage for virtualization environment
US8850130B1 (en) 2011-08-10 2014-09-30 Nutanix, Inc. Metadata for managing I/O and storage for a virtualization
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US9009106B1 (en) 2011-08-10 2015-04-14 Nutanix, Inc. Method and system for implementing writable snapshots in a virtualized storage environment
US8863124B1 (en) 2011-08-10 2014-10-14 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US9747287B1 (en) 2011-08-10 2017-08-29 Nutanix, Inc. Method and system for managing metadata for a virtualization environment
US9652265B1 (en) * 2011-08-10 2017-05-16 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment with multiple hypervisor types
US9396118B2 (en) 2011-12-28 2016-07-19 Intel Corporation Efficient dynamic randomizing address remapping for PCM caching to improve endurance and anti-attack
CN102591702B (zh) * 2011-12-31 2015-04-15 华为技术有限公司 虚拟化处理方法及相关装置和计算机系统
US9772866B1 (en) 2012-07-17 2017-09-26 Nutanix, Inc. Architecture for implementing a virtualization environment and appliance
US10055254B2 (en) * 2013-07-12 2018-08-21 Bluedata Software, Inc. Accelerated data operations in virtual environments
US9846592B2 (en) * 2015-12-23 2017-12-19 Intel Corporation Versatile protected input/output device access and isolated servicing for virtual machines
US10185679B2 (en) * 2016-02-24 2019-01-22 Red Hat Israel, Ltd. Multi-queue device assignment to virtual machine groups
US10467103B1 (en) 2016-03-25 2019-11-05 Nutanix, Inc. Efficient change block training
KR101716715B1 (ko) 2016-12-27 2017-03-15 주식회사 티맥스클라우드 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치
US10642603B2 (en) 2018-01-16 2020-05-05 Nutanix, Inc. Scheduling upgrades in distributed computing systems
US10628350B1 (en) * 2018-01-18 2020-04-21 Cavium, Llc Methods and systems for generating interrupts by a response direct memory access module
US10838754B2 (en) * 2018-04-27 2020-11-17 Nutanix, Inc. Virtualized systems having hardware interface services for controlling hardware
US11422959B1 (en) 2021-02-25 2022-08-23 Red Hat, Inc. System to use descriptor rings for I/O communication

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050210467A1 (en) * 2004-03-18 2005-09-22 Zimmer Vincent J Sharing trusted hardware across multiple operational environments
CN1936845A (zh) * 2005-09-19 2007-03-28 联想(北京)有限公司 一种虚拟机系统输入/输出设备动态分配的方法及其设备
US20080065854A1 (en) * 2006-09-07 2008-03-13 Sebastina Schoenberg Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7107267B2 (en) * 2002-01-31 2006-09-12 Sun Microsystems, Inc. Method, system, program, and data structure for implementing a locking mechanism for a shared resource
US7793287B2 (en) * 2003-10-01 2010-09-07 Hewlett-Packard Development Company, L.P. Runtime virtualization and devirtualization of I/O devices by a virtual machine monitor
US7464412B2 (en) * 2003-10-24 2008-12-09 Microsoft Corporation Providing secure input to a system with a high-assurance execution environment
US7721299B2 (en) * 2005-08-05 2010-05-18 Red Hat, Inc. Zero-copy network I/O for virtual hosts
US7360022B2 (en) * 2005-12-29 2008-04-15 Intel Corporation Synchronizing an instruction cache and a data cache on demand
US7613898B2 (en) * 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
WO2007115425A1 (en) 2006-03-30 2007-10-18 Intel Corporation Method and apparatus for supporting heterogeneous virtualization
US20070245074A1 (en) * 2006-03-30 2007-10-18 Rosenbluth Mark B Ring with on-chip buffer for efficient message passing
US7787303B2 (en) * 2007-09-20 2010-08-31 Cypress Semiconductor Corporation Programmable CSONOS logic element
US8464260B2 (en) * 2007-10-31 2013-06-11 Hewlett-Packard Development Company, L.P. Configuration and association of a supervisory virtual device function to a privileged entity
US20090319740A1 (en) * 2008-06-18 2009-12-24 Fujitsu Limited Virtual computer system, information processing device providing virtual computer system, and program thereof
US8667187B2 (en) * 2008-09-15 2014-03-04 Vmware, Inc. System and method for reducing communication overhead between network interface controllers and virtual machines
GB0823162D0 (en) * 2008-12-18 2009-01-28 Solarflare Communications Inc Virtualised Interface Functions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050210467A1 (en) * 2004-03-18 2005-09-22 Zimmer Vincent J Sharing trusted hardware across multiple operational environments
CN1936845A (zh) * 2005-09-19 2007-03-28 联想(北京)有限公司 一种虚拟机系统输入/输出设备动态分配的方法及其设备
US20080065854A1 (en) * 2006-09-07 2008-03-13 Sebastina Schoenberg Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445628A (zh) * 2015-08-11 2017-02-22 华为技术有限公司 一种虚拟化方法、装置和系统
CN106201349A (zh) * 2015-12-31 2016-12-07 华为技术有限公司 一种在物理主机中处理读/写请求的方法和装置
WO2017114283A1 (zh) * 2015-12-31 2017-07-06 华为技术有限公司 一种在物理主机中处理读/写请求的方法和装置
CN106201349B (zh) * 2015-12-31 2019-06-28 华为技术有限公司 一种在物理主机中处理读/写请求的方法和装置
US10579305B2 (en) 2015-12-31 2020-03-03 Huawei Technologies Co., Ltd. Method and apparatus for processing read/write request in physical machine
CN106844007A (zh) * 2016-12-29 2017-06-13 中国科学院计算技术研究所 一种基于空间复用的虚拟化方法与系统
CN106844007B (zh) * 2016-12-29 2020-01-07 中国科学院计算技术研究所 一种基于空间复用的虚拟化方法与系统
CN109542831A (zh) * 2018-10-28 2019-03-29 西南电子技术研究所(中国电子科技集团公司第十研究所) 机载平台多核虚拟分区处理系统

Also Published As

Publication number Publication date
RU2532708C2 (ru) 2014-11-10
WO2011075870A1 (en) 2011-06-30
US20130055259A1 (en) 2013-02-28
RU2012127415A (ru) 2014-01-10
KR20120098838A (ko) 2012-09-05
JP2013515983A (ja) 2013-05-09
EP2517104A4 (en) 2013-06-05
CN102754076B (zh) 2016-09-07
SG181557A1 (en) 2012-07-30
AU2009357325A1 (en) 2012-07-05
KR101521778B1 (ko) 2015-05-20
AU2009357325B2 (en) 2014-04-10
JP5608243B2 (ja) 2014-10-15
EP2517104A1 (en) 2012-10-31

Similar Documents

Publication Publication Date Title
CN102754076A (zh) 用于在虚拟化环境中处理i/o操作的方法和设备
KR101574403B1 (ko) 결합된 가상 그래픽 장치
CN101364189B (zh) 在操作系统协助下实现运行时间处理器迁移的方法和装置
US20120102491A1 (en) Virtual function boot in single-root and multi-root i/o virtualization environments
US10540294B2 (en) Secure zero-copy packet forwarding
CN103282881A (zh) 通过虚拟化直接共享智能设备
US11194735B2 (en) Technologies for flexible virtual function queue assignment
US11435958B2 (en) Shared memory mechanism to support fast transport of SQ/CQ pair communication between SSD device driver in virtualization environment and physical SSD
US20210149587A1 (en) Technologies to provide access to kernel and user space memory regions
WO2007024444A1 (en) Method and apparatus for supporting universal serial bus devices in a virtualized environment
CN106030558A (zh) 用于处理器的协同设计动态语言加速器
CN113312141A (zh) 用于虚拟机的虚拟串行端口
CN101833470A (zh) 注入事务以支持物理设备控制器的虚拟化
US10990436B2 (en) System and method to handle I/O page faults in an I/O memory management unit
US20140373006A1 (en) System And Method For Virtual Machine Management
EP3633507B1 (en) Technologies for secure and efficient native code invocation for firmware services
US11860792B2 (en) Memory access handling for peripheral component interconnect devices
US9766918B2 (en) Virtual system device identification using GPU to host bridge mapping
US20220137998A1 (en) Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same
US11900142B2 (en) Improving memory access handling for nested virtual machines
US20190227942A1 (en) System and Method to Handle I/O Page Faults in an I/O Memory Management Unit
CN112559120B (zh) 定制化pcie总线io虚拟化支撑方法
CN109582435B (zh) 用于灵活的虚拟功能队列分配的方法以及设备
US12050813B2 (en) Shared memory mechanism to support fast transport of SQ/CQ pair communication between SSD device driver in virtualization environment and physical SSD
US20220365729A1 (en) Shared memory mechanism to support fast transport of sq/cq pair communication between ssd device driver in virtualization environment and physical ssd

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1177801

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1177801

Country of ref document: HK

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160907

Termination date: 20201224

CF01 Termination of patent right due to non-payment of annual fee