CN1973274A - 多客户机间共享物理设备 - Google Patents

多客户机间共享物理设备 Download PDF

Info

Publication number
CN1973274A
CN1973274A CNA2005800211177A CN200580021117A CN1973274A CN 1973274 A CN1973274 A CN 1973274A CN A2005800211177 A CNA2005800211177 A CN A2005800211177A CN 200580021117 A CN200580021117 A CN 200580021117A CN 1973274 A CN1973274 A CN 1973274A
Authority
CN
China
Prior art keywords
equipment
client
interface
core
function
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
CNA2005800211177A
Other languages
English (en)
Other versions
CN100517287C (zh
Inventor
M·A·戈德史密斯
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 CN1973274A publication Critical patent/CN1973274A/zh
Application granted granted Critical
Publication of CN100517287C publication Critical patent/CN100517287C/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
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Systems (AREA)
  • Hardware Redundancy (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

一种物理设备具有要执行计算机系统的核心I/O功能的核心功能电路。本发明提供了多客户机接口电路,它们每个将其自身作为完整的设备提供给所述系统中的软件客户机,以访问核心功能电路。复用电路把所述客户机接口耦合到核心I/O功能。本文还描述了其他实施例并要求其权利。

Description

多客户机间共享物理设备
背景技术
本发明的实施例一般涉及计算机系统,具体地说涉及允许多个程序共享物理设备的虚拟化技术。
随着不同计算机操作系统(OS)程序(如LINUX、MACINTOSH、微软的WINDOWS)的盛行,消费者们被提供了大量不同种类的应用程序,遗憾的是这些应用程序并未设计成可运行于同一OS上。虚拟化技术使运行虚拟机监控程序(“VMM”)的单个主机可以提供主机的多个抽象体,使得主机的基本硬件看起来好像是一个或多个独立操作的虚拟机(“VM”)。各个VM可用作自包含的平台,它运行其自己的操作系统(“OS”)和/或一个或多个软件应用。VMM管理主机上的资源分配,并在需要时根据循环法或其他预定方案执行任务转换以在各种虚拟机之间进行多路复用。例如,在VM环境中,每个OS均有在其自己的硬件平台或“裸露金属”上运行的假相。每个OS可“看到”全套可用I/O设备,如键盘控制器、硬盘驱动控制器、网络接口控制器和图形显示适配器。
当操作系统要与I/O设备进行通信时会用到以下技术。如果OS实际正运行于裸露金属上,那么物理I/O设备的硬件客户机接口便展现在总线上。客户机接口可以是一组映射到存储器的寄存器(映射到存储器的I/O、MMIO)或I/O端口(IOP),并可分别通过映射到存储器的I/O地址空间或通过计算机系统的I/O地址空间而被寻址。随后处理器可通过在总线上发出OS事务处理来读或写物理设备中指向已分配的地址空间的单元。
另一方面,利用虚拟化技术可以有多个VM(用于运行多客户OS)。在此情况下,采用两种基本技术来给客户提供I/O能力。第一种技术是,VM只能访问该设备。VMM安排VM对要直接发送到目标I/O设备的MMIO或IOP的全部访问。这样,VM具有与设备通信的最大执行路径。此技术有时也称为设备分配。其主要局限性在于I/O设备只能被指配给单个VM。
如果希望I/O设备以某种形式在多VM间共享,那么常规的技术便是VMM模拟物理I/O设备成为一个或多个“虚拟设备”。随后由VMM截取来自特定OS的物理设备的事务处理。VMM然后可选择模拟设备(例如通过采用网络接口来模拟串行端口)或者它可以多路传输单个I/O设备上的各种客户机VM的请求(例如把硬盘驱动分成多个虚拟驱动)。
以下是虚拟化处理的另一种方法。VM需要访问一组可包括虚拟和物理设备的I/O设备。如果物理设备被分配给单个VM,那么它对于其他虚拟机就是不可用的。因此,如果物理设备需要由超过一个VM共享,那么通常VMM为每个VM提供虚拟设备。然后,VMM通过虚拟设备来仲裁物理设备的相同硬件客户机接口的访问。
附图说明
在附图的几个图中通过举例而不是限制的方式说明本发明实施例,附图中类似的标号指示类似的部件。应当注意本发明的实施例在本公开中并不一定指相同的实施例,它们意指至少一个实施例。
图1说明“通过设计可共享”的物理设备的框图。
图2描述了含有可共享设备以及其正运行虚拟化过程的计算机系统的框图。
图3显示了涉及发现计算机系统中可共享I/O设备的虚拟化过程的流程图。
具体实施方式
图1说明“通过设计可共享”的物理设备的框图。可共享设备100具有执行计算机系统的核心I/O功能(在本示例中)的核心功能电路104。核心I/O功能的例子包括在图形适配器情况下的图像再现、网络接口控制器的传输控制协议/互联网协议(TCP/IP)分组卸载。核心I/O功能电路可实现为硬连线和/或可编程逻辑与已编程序的处理器或本领域技术人员公知的任何其他技术的组合。
在本系统中,软件虚拟机(VM)客户机108将经由多个客户机接口电路112(或简单地说是客户机接口112)中的任何一个访问核心功能电路104。VM客户机108可以是操作系统,如包含设备驱动的微软的WINDOWS或LINUX。客户机接口112经由复用电路116耦合到核心功能电路104,以使得由VM客户机经由客户机接口共享核心功能。复用电路116可包括需要在某个时刻把核心功能电路连接到任何一个客户机接口112上的信号线和复用器逻辑。
每个客户机接口112把其自身作为完整和单独的设备提供给系统中的软件客户机,如VM客户机108。接口112可实现其驻留的总线所要求功能的各个方面。客户机接口112可包括在设备中的逻辑信令和外部总线信令之间转换的模拟电路。如果外部总线是串行点对点类型的话,那么可增加复用开关电路以便在任何时刻把寄存器组中的一个寄存器连接到总线的传输媒介上。
在本发明的一些实施例中,每个客户机接口112可在(连接物理设备的)相同总线上支持相同外围部件互连(PCI)兼容的配置机制和相同功能发现机制。然而在这种实施例中,每个客户机接口将提供不同的PCI设备标号(因为各有效地代表不同的设备)。此外,每个客户机接口将识别一组独立的PCI兼容的功能。当然客户机接口也可设计成遵循其他类型的I/O或例如用于连接计算机系统的部件的总线通信协议。
[mag2]
每个客户机接口可包括由软件客户机使用的独立的寄存器组,以获得有关接口的信息并配置接口。那么每寄存器组便可从它外部访问,而不管它是串行或并行、多支路或点对点的。例如,即插即用子系统可采用PCI配置寄存器来定义MMIO区的基地址。PCI兼容的配置寄存器组可包括以下公知寄存器中的一些或全部:供应商ID、设备ID(确定配置寄存器地址的偏移量)、修订ID、类码、子系统供应商ID和子系统ID。这些寄存器的组合通常由操作系统用来确定要为设备装载哪个驱动。[mag3]当在可共享设备中实现时,(给定客户机接口的)每个寄存器组可具有相同的地址范围,除了偏移量不同。[mag4]
设置基地址寄存器(BAR)可用来指定设备所用的基地址。[mag5]当客户试图设置BAR时,VMM可设计成截取此请求并可修改它。这是出于几种原因。第一,两个VM中的每个VM可不知觉地试图把接口中的BAR设定成相同的值。VMM可设计成保证这种情况不发生。其次,每个VM可相信它正运行在基于零的地址空间(所谓的客户物理地址或GPA)中。当BAR由客户设置时,基零的GPA应在载入到BAR之前被转换成实际主机物理地址(HPA)。此外,VMM应修改客户VM的存储器管理表,以反映这种转换。
[mag6]在核心功能电路104相当复杂和/或大,使得复制这种电路将太昂贵(并且也不需要复制带来的并行处理性能)的情况下,可共享设备100可以是更理想的解决方案。另一有利用处将在I/O虚拟实施例(如以下参照图2所述)。在此情况下,可共享设备100允许虚拟机监控程序(VMM)不参与每个事务处理,由此缩短了(对等待时间特别敏感的)图形和网络事务处理的等待时间。此外,在一些实施例中,VMM的设计和实现基本上可以不怎么复杂,使得软件可以更稳定的操作。这可能是因为具有多客户机接口将不需要VMM来支持对应的虚拟设备(如VMM不需要模拟设备本身,也不需要为每个虚拟设备提供PCI配置空间[mag7]。)
软件客户机可利用任何一个客户机接口112来调用可共享设备的同一主要功能。这种主要功能可以是I/O设备(如显示图形适配器)的功能,例如产生位图显示图像的图像再现。在此情况下,可共享设备可实现为计算机系统芯片组的图形I/O区的一部分,或实现为单个的图形适配卡。后一种情况下的客户机接口也可包括用于可拆卸式地把卡连接到计算机系统总线的电气连接器。此情况下的所有接口可通过相同连接器来访问。
另一主要功能可以是网络接口控制器(NIC)的功能。在这种实施例中,每个软件客户机(如VM客户机108)可以是网络中单独的端结点。VM客户机108将通过基本功能(如传输控制协议/互联网协议(TCP/IP)分组卸载(产生输出分组和译码输入分组)和媒体接入控制(MAC)地址过滤)来与网络进行通信。在此情况下,可共享设备可以是单个网络接口控制器卡。每个客户机接口提供完整或完全功能的NIC的外部特征,包括每个客户机接口的独立MAC地址。输入分组将自动被路由到正确的客户机接口,随后路由到相应的VM客户机上。这可以在不必花费CPU循环(VMM)的情况下完成,以评估每个输入分组,并且也不需要把NIC放入到混杂模式中,在这种模式中CPU检查每个输入分组而不管该分组是否是系统中的VM想要的。[mag8]
应当注意,虽然可共享设备100的客户机接口可将它们自身作为完整独立的设备提供给软件客户机,但是它们不一定是同一设备。更一般的讲,如果它的一个或多个客户机接口112把不同组的设备能力(在核心功能104中实现)提供给VM客户机,那么可共享设备100可具有不同种类的接口。例如,考虑可共享设备是显示图形适配器的情况。它的客户机接口之一可作为较早版本的特定设备(如遗产设备)显示给软件客户机,而另一接口可作为较新版本显示给软件客户机。作为另一例子,考虑其核心I/O功能实现为具有多个可编程计算单元的可调节计算结构的图形适配器。一个客户机接口可被设计或编程来访问比另一个更大的计算单元子集,以便提供相同类型但更强大的I/O功能。[mag9]
在另一示例中,可共享设备100可使它的一些客户机接口更完整,例如展现较高性能能力(如核心功能中不同类型的图形再现功能)。更复杂的接口将更有可能使得与它相关联的设备驱动器程序相应更复杂。相应地,由于更复杂的设备驱动器更可能有缺陷或漏洞,而且经不起安全分析,因此它注定将更容易受到攻击。由此,此情况下的接口由于其复杂性被标为不可信或不安全。同时,可共享设备可具有展现主要I/O功能的较低性能版本(如只有基本图像再现和显示)的一个或多个其他客户机接口。因此后面的接口被认为是更可信或更安全的接口。
例如,接口(由于其复杂性或固有的设计)可被认为可被充分信任来被依靠以保护用户的保密数据(如由系统用户产生并“拥有的”数据,例如用户的社会保险号和财政信息)。此接口(连接到图形设备)可用来专门显示某应用程序的输出,如个人帐目管理和税金准备软件。这例如将会有助于阻碍已潜入系统并在寻求搜集用户的私人机密信息的第三方诈取软件部件的攻击。
在另一方案中,可利用不太复杂的接口来增强内容保护,如防止系统用户以免捕获第三方的版权受保护数据,这些数据也出现在核心功能的输出上。例如,用户可在只与内容受保护的接口相关联的特定VM客户机上运行DVD播放器应用程序,以便电影数据流只由那一接口再现。或者,内容保护客户机接口可设计成直接由应用程序访问,而不需要中间设备驱动层。此类更简单的接口通过在应用程序与核心图形再现和显示功能之间提供更少的通路,将会使攻击机会进一步减少。
具有多客户机接口的单个可共享设备100还可通过给其增加改变活动接口数量的能力而被增强。此附加能力可设计成使运行于系统的某软件,如服务VM130或VMM224(以下结合图2所述),可以访问用于使能/禁用客户机接口中的一些而不是另一些的配置寄存器。这有助于控制I/O设备内的资源分配,以便例如更好匹配运行于系统中的VM客户机的需要。
图1中显示的可共享设备100也可具有一个或多个世界接口电路(或简单地说世界接口)120。当世界接口不只有一个时,它们经由附加复用电路122而耦合到核心功能电路104。每个世界接口120可具有用于在核心功能电路104中的信令和设备外部信令之间转换的数字和/或模拟电路。世界接口可包括通过有线或无线链路与计算机系统外围设备(如显示监视器或数字摄像机)进行通信所需的连接器和/或其他硬件。如果是网络接口控制器,则世界接口可称为网络端口,它连接到局域网(LAN)节点互连接媒介。此端口可具有与LAN电缆(如以太网电缆)连接或与例如无线接入点通信的电路或无线发射机和接收机。
在一些实施例中,可共享设备100可配备控制接口电路(或简单地说是控制接口)126,其由系统中称为服务VM 130的软件使用。控制接口126可用于各种不同目的。例如,它可以是用于组合不同客户机的数据的机制(如控制在相同显示屏幕上的什么地方显示每个VM的输出)。控制接口也可用于解决多个VM客户机的冲突命令[mag10]。例如,它可提供另一种控制由VM客户机108(经由它们各自的客户机接口112)访问核心功能的方法。作为例子,可共享图形适配器中的控制接口可设计成允许服务VM 130利用显示多窗口的特定调度策略对设备进行编程,如一种是在给定时间间隔期间不给所有的VM客户机相等的优先权;一种是将核心功能中功能块的一些而不是所有功能块分配给特定VM客户机。在这种实施例中,可共享设备还可配备工作量队列(未示出),每个客户机接口112一个,并在客户机接口112和核心功能电路104之间耦合。控制接口将允许服务VM选择哪个队列向核心功能电路馈送作为队列状况(如其深度、其有多满或多空、其优先级等)的函数的指令。[mag11]控制接口也可用来配置如何再现和显示图形,如其中每个VM被指配给独立监视器的多监视器或相同监视器中的多个窗口。图形适配器的功耗也可通过控制接口管理。注意在一些情况下,可共享设备可不需要控制接口。例如可共享NIC可以利用仲裁策略仅仅编程一次(或者可能被硬连线),以在适当的时候公平地或不公平地服务其不同的客户机接口。
如果是NIC,控制接口可允许服务VM改变基于每个VM客户机分配或预留的带宽。如果是声卡,控制接口可允许服务VM控制不同VM客户机源的音频混合。另一种可能是利用控制接口来启动视频和/或音频捕获流以被路由到特定VM客户机。例如,控制接口可以处于软件指示多个不同媒体接入控制器(MAC)的每个与它们各自VM客户机的关联的位置那里。
现在转向图2,其中描绘了具有可共享设备100并正运行虚拟过程的计算机系统的框图。可共享设备100是系统物理主机硬件204的部分,也称为裸露金属。主机硬件204可包括一组可用I/O设备(未示出),如键盘控制器、硬盘驱动控制器和图形显示适配器。这些用于与诸如用户输入设备208(本示例中所描述的键盘/鼠标组合)、非易失性大容量设备(这里描述为硬盘驱动212)、显示监视器214和NIC适配器卡216之类的外围进行通信。
虚拟化在这里是采用称为虚拟机监控程序(VMM)224的程序来完成的。VMM 224把主机硬件平台204“分成”多个孤立的虚拟机(VM)228。每个VM228对于运行在其中的软件而言看起来就好像是包括如图所示的I/O设备和外围部件的基本完整的计算机系统一样。VMM 224负责提供每个VM228运行的环境,并可用来维护VM之间的隔离(这里另一种备选将是采用硬件CPU增强来维护隔离)。[mag14]运行于每个VM 228的软件可包括不同客户OS 232。在VM环境中,每个客户OS 232均有它运行在其自身的硬件平台上这样的假像。因此客户OS 232不可能意识到另一操作系统也运行在相同系统中或者基本的计算机系统已被分割这一事实。
虚拟化处理允许应用程序236运行于它们各自客户操作系统232上的不同VM 228中。应用程序236可在单个显示监视器214上利用单独的窗口(例如每个VM一个)同时显示它们的信息。这可通过本示例中作为图形适配器的可共享设备100来进行。注意VMM 224被设计以便知道这种可共享设备100的出现,并因此具有(如经由服务VM 130,参见图1)管理它的能力。然而,这避免了共享物理设备的纯软件技术的许多缺点。例如,没有必要设计并实现相当复杂的VMM,它必须详细理解物理设备是如何工作的,以便能够正确地共享。这可通过得到容易由每个客户OS 232识别的多个硬件客户机接口来避免。
可共享设备概念的一些其他好处可通过以下示例说明。考虑多处理器系统或具有超线程中央处理单元(CPU)的系统,其中单个CPU充当两个或两个以上CPU(不是仅仅调度意义上的,而是因为具有足够的执行能力余留)。处理器1执行VM0的代码,而处理器2执行VM1的代码。接下来,假设每个VM希望同时访问相同I/O设备。在任何一个时间点上非可共享I/O设备只可在一种上下文环境中操作。因此,只有一个VM可接入设备。其他VM要接入设备的尝试将使得它在错误的上下文环境中接入设备。
本发明的一个实施例允许退耦(VM和硬件客户机接口之间的)“对话”和(正由核心功能电路进行的)“工作”,使得可以不需要上述上下文转换。那是因为每个VM被指配了它的独立的硬件客户机接口,以便VM可在不需要I/O设备的上下文转换的情况下向它们各自的客户机接口电路发送I/O请求。这为上述接入问题提供了解决方案。
作为另一示例,考虑运行VM0和VM1二者的CPU。在VM0中,应用软件较重地使用CPU(如计算常数pi),但是很少询问图形适配器(如更新显示窗口中的时钟)。在其他VM窗口中,虽然很少使用CPU但图形式样要定期由图形适配器更新。现在,假定CPU和图形适配器被一起上下文转换(在一部分时间里把图形适配器和CPU给到VM0,而在其余的时间里把它们给到VM1)。在此情况下,VM0的较少的图形要求导致部分时间的浪费的/空闲图形循环,而VM1少量的CPU要求产生剩余时间的浪费的/空闲CPU循环。那是因为CPU和图形适配器核心功能二者总在相同的上下文环境中。系统资源的这种无效率的使用可通过允许与图形适配器工作量无关地调度CPU工作量的本发明实施例而避免。使用图形适配器中可用的不同硬件客户机接口,可调度CPU以花费其大部分时间来执行VM0,并且仍然可以偶尔访问图形适配器。另一方面,图形适配器的核心功能可被调度以将其大部分时间花费在VM1上,并且其可偶尔被中断以服务VM0。
现转向图3,其中描绘了计算机系统中涉及可共享I/O设备的发现和共享的虚拟化过程的流程图。该系统可以是图2中所显示的系统。该方法开始于操作304,其中在系统中执行即插即用发现过程。作为例子,这可以是常规PCI设备和功能枚举过程(也称为PCI配置过程)的一部分。发现过程可检测多个I/O设备,因此从单个图形适配器卡的不同客户机接口读取每个设备的唯一PCI设备标号。这可发生在系统上电之后通过基本I/O系统固件(BIOS)和/或由系统处理器执行的VMM来进行。适配器卡是可共享I/O设备的一个示例,其核心I/O功能将由它的多个硬件客户机接口共享。发现过程也可检测形式为控制接口126的另一设备(参见图2)。
在备选实施例中,在初始化引导期间,BIOS可能仅发现控制接口。稍后一段时间,VMM可根据需要利用控制接口来创建一个或多个客户机接口。这些接口可被即刻全部创建,或根据需要而创建。当创建了每个接口时,VMM将看见指示新创建接口“插入”的热插事件。参见如由Lantz等人于2004年3月5日提交的并转让给本申请的同一个受让人的题为“用于从一个虚拟机到另一虚拟机动态重分配物理设备的方法、装置和系统”的美国专利10/794469。
本方法继续进行操作308,其中VMM或服务VM产生一个或多个VM,并将一个或多个检测到的I/O设备指配给它们。在此示例中,各个检测到的设备是系统中相应VM的图形适配器。服务VM随后可用来通过其控制接口配置适配器,使得其核心I/O功能根据例如给一个VM优先于另一VM的优先权的优先权策略来共享(操作312)。此后,在VM运行后,VMM可退回并基本上不让其自身涉及I/O事务,因为每个VM现在可容易地修改或截获其指向显示图形的OS呼叫(如通过添加地址偏移量以指向其已指配的硬件客户机接口。)
本发明的一些实施例可提供为计算机程序产品或软件,其可包括其上已存储了指令的机器或计算机可读媒介,它可用来对计算机(或其他电子设备)编程以根据本发明实施例执行过程。在其他实施例中,操作可由含有微代码、硬线逻辑特定硬件部件或由已编程的计算机部件和定制的硬件部件的任何组合来执行。
机器可读媒介可以是提供即存储或传输可由机器(如一个或多个处理器组、桌上型计算机、便携式计算机、制造工具或具有处理器的任何其他设备)访问的信息的任何机构。例如可记录/不可记录的媒介,诸如只读存储器(ROM)、随机访问存储器(RAM)、磁旋转盘存储媒介、光盘存储媒介以及电、光、声或其他形式传播的信号(如载波、红外信号等)。
总之,本文已描述了在多客户机间共享物理设备的技术的各种实施例。在前述说明书中,已参照其特定示范性实施例对本发明进行了说明。然而在不背离所附权利要求中陈述的本发明的更广泛的精神和范围情况下,显然可以进行各种修改和变化。例如,VMM正运行于其中的计算机系统可具有多个处理器(CPU),其中每个VM客户机可例如运行于不同处理器上。这种系统中的可共享设备的多客户机接口允许不同VM客户机访问设备的相同核心功能,以在VM客户机彼此不知道的情况下同时出现。根据它们各自的观点,这将在没有VM客户机彼此干预的情况下发生。本文中同时访问意指例如事务请求正由I/O设备捕获,而还没完成,并且另一事务过程请求也正由I/O设备捕获,也还没完成。在非虚拟化系统中,OS通常保证不允许这样的情形发生,如不允许两个CPU在相同时间对相同设备编程。然而,在这里所述的VM系统实施例中,希望VMM不必负这种责任(由于每次访问I/O设备时需要监视或涉及的这种软件的复杂性)。因此,在这种系统中,在VM客户机或客户之间不存在协调,因为它们访问相同I/O设备。然而由于上述多客户机接口的特性,因此这种访问可被正确地路由到I/O设备的核心功能,作出对多处理器VM系统特具吸引力的决定。相应地,本说明书和附图被看作为是说明性而非限制意义。

Claims (35)

1.一种物理设备,包括:
核心功能电路,用于执行计算机系统的核心功能;
多个客户机接口电路,各将它自身作为完整的设备提供给所述系统中的软件客户机以访问所述核心功能电路;以及
复用电路,用于把所述多个客户机接口电路耦合到所述核心功能电路。
2.如权利要求1所述的设备,其中,所述核心功能是显示图形适配器的主要功能。
3.如权利要求1所述的设备,其中,所述主要功能是图像再现。
4.如权利要求1所述的设备,其中,所述核心功能是网络接口控制器的主要功能。
5.如权利要求4所述的设备,其中,所述主要功能是TCP/IP分组卸载。
6.如权利要求1所述的设备,其中,所述客户机接口把不同I/O设备能力展现给软件客户机。
7.如权利要求1所述的设备,其中,所述客户机接口之一展现可信任图形适配器,而另一接口展现不可信的图形适配器。
8.如权利要求1所述的设备,其中,所述多个客户机接口中的每一个具有单独的寄存器组以配置核心功能电路的操作,
并且其中一组对于软件客户机显现为I/O设备的较旧版本,而另一组对于所述软件客户机显现为所述I/O设备的较新版本。
9.如权利要求1所述的设备,还包括:
控制接口电路,它由所述系统中的服务虚拟机(VM)软件用来控制所述系统中的多个VM对所述核心功能电路的访问,其中所述多个VM将分别经由所述多个客户机接口电路访问所述核心功能电路。
10.如权利要求9所述的设备,其中,所述核心功能是显示图形适配器的主要功能,并且所述控制接口允许所述服务VM软件利用所述核心功能电路选择如何为所述多个VM分别显示多个窗口。
11.如权利要求1所述的设备,还包括:
多个世界接口电路,它们经由附加的复用电路耦合到所述核心功能电路,以便在所述核心功能电路的信令和所述设备外部的信令之间进行转换。
12.如权利要求11所述的设备,其中,所述多个世界接口电路将在所述核心功能电路中的信令和计算机外围总线中的信令之间进行转换。
13.如权利要求11所述的设备,其中,所述多个世界接口电路将在所述核心功能电路中的信令和LAN节点互连接媒介中的信令之间进行转换。
14.如权利要求9所述的设备,还包括多个工作量队列,各耦合在所述多个客户机接口电路的单独一个电路和所述核心功能电路之间,其中所述控制接口电路允许所述服务VM选择哪个队列将作为队列状况的函数来馈送所述核心功能电路。
15.一种I/O设备,包括:
核心I/O功能电路,用以执行计算机系统的核心I/O功能;以及
多个客户机接口电路,它们中任何一个可由所述系统中的虚拟机(VM)用来访问所述核心I/O功能电路以调用相同的核心I/O功能。
16.如权利要求15所述的I/O设备,其中,所述客户机接口电路中的每一个具有可从所述I/O设备外访问的独立的寄存器组,并且各组除偏移之外具有相同的地址范围。
17.如权利要求15所述的I/O设备,其中,其中所述客户机接口电路中的一个将内容保护接口提供给图形适配器功能以阻止由所述图形适配器功能递送的输出数据的未授权拷贝,而所述客户机接口电路中的另一个将不安全接口提供给所述图形适配器功能。
18.如权利要求15所述的I/O设备,其中,所述I/O设备赋予软件任意改变客户机接口数量的能力,以使所述I/O设备的资源更好地匹配多个虚拟机客户机的需要,其中所述虚拟机客户机将分别通过所述多个客户机接口电路访问所述I/O设备。
19.一种具有虚拟机能力的计算机系统,包括:
处理器;
存储器,具有存储于其中的虚拟机监控程序(VMM),其中所述VMM由所述处理器访问,以分别管理所述系统中用于运行多个客户机程序的多个虚拟机(VM);以及
I/O设备,具有多个硬件接口,其中各接口将它自身作为单独的I/O设备提供给将运行于所述多个VM中的所述多个客户机程序的相应一个。
20.如权利要求19所述的系统,其中,所述存储器还包括存储于存储器中以便由所述处理器访问的服务VM,
以及所述I/O设备还包括由所述服务VM用来配置所述核心I/O功能电路的硬件控制接口。
21.如权利要求20所述的系统,其中,所述I/O设备还包括:
硬件世界接口,它在所述核心I/O功能电路的信令和所述I/O设备外部的信令之间进行转换。
22.一种虚拟化设备,其包括:
用于执行计算机系统的核心I/O功能的装置;
用于把多个完整接口提供给多个虚拟机(VM)客户机以访问所述核心I/O功能的装置,其中各接口是完整的,因为它可作为单独的I/O设备而被相同设备驱动所访问;以及
用于在所述核心I/O功能执行装置和所述完整接口提供装置之间传递消息的装置。
23.如权利要求22所述的虚拟化设备,其中,所述完整接口中的每一个提供具有a)唯一设备标号和b)展现在相同总线上的单独的配置寄存器组的单独的I/O设备。
24.如权利要求23所述的虚拟化设备,其中,每个配置寄存器组用于存储单独的PCI设备ID、供应商ID、修订ID和类代码。
25.一种用于共享I/O设备的方法,包括:
在计算机系统中执行即插即用发现过程;以及
通过所述过程检测多个I/O设备是否出现在所述系统中,这时实际上所检测的I/O设备由于单个物理I/O设备而正连接到所述系统上并且其中它的核心I/O功能由所述物理I/O设备中的多个硬件客户机接口共享。
26.如权利要求25所述的方法,其中,所述检测步骤包括从包含所共享的核心I/O功能的单个图形适配器卡读取所检测的I/O设备中的每一个的唯一PCI设备标号。
27.如权利要求25所述的方法,还包括:
将所述多个检测的I/O设备分别指配给所述系统中的多个虚拟机(VM)。
28.如权利要求27所述的方法,还包括:
当服务所述多个VM时,根据给所述VM中的一个高于另一个的优先权的优先权策略来配置要共享的所述核心I/O功能。
29.一种制造品,其具有存储了数据的机器可读媒介,当它由计算机系统的处理器访问时,将写入和读取所述系统中的物理设备的控制接口,以控制由多个硬件客户机接口对所述设备的相同核心功能的访问,其中所述硬件客户机接口各自将它自身作为完整设备提供给所述系统中的设备驱动程序。
30.如权利要求29所述的制造品,其中,所述数据是所述系统的虚拟化软件的一部分。
31.如权利要求30所述的制造品,其中,所述数据是这样的以致于所述写入和读取利用核心功能的调度策略来编程物理设备以分别在多个显示窗口中再现和显示来自所述客户机接口的图像。
32.如权利要求30所述的制造品,其中,所述数据是这样的以致于它们编程所述物理设备以选择与所述多个客户机接口中的一个相关联的哪个队列把指令馈送给所述核心功能。
33.如权利要求30所述的制造品,其中,,所述数据是这样的以致于所述写入和读取执行所述物理设备上的电源管理操作。
34.如权利要求30所述的制造品,其中,所述数据是这样的以致于所述写入和读取致力于把外部捕获流路由到所述客户机接口中的一个。
35.一种具有虚拟机能力的多处理器计算机系统,其包括:
多个处理器;
具有其中存储了虚拟机监控程序(VMM)的存储器,其中所述VMM由所述处理器中的一个运行,以分别管理所述系统中的多个虚拟机(VM)运行多个客户机程序;以及
具有核心功能和多个硬件接口的I/O设备,它们中的每一个将它自身作为单独的I/O设备提供给将在所述多个VM内运行的所述多个客户机程序的相应一个,其中在彼此不知道以及在所述VMM不必在所述多个VM之间仲裁的的情况下,所述多个VM可同时经由所述多个接口访问所述I/O设备的核心功能。
CNB2005800211177A 2004-06-30 2005-06-22 多客户机间共享物理设备 Expired - Fee Related CN100517287C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/882,458 2004-06-30
US10/882,458 US20060069828A1 (en) 2004-06-30 2004-06-30 Sharing a physical device among multiple clients

Publications (2)

Publication Number Publication Date
CN1973274A true CN1973274A (zh) 2007-05-30
CN100517287C CN100517287C (zh) 2009-07-22

Family

ID=34972763

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005800211177A Expired - Fee Related CN100517287C (zh) 2004-06-30 2005-06-22 多客户机间共享物理设备

Country Status (7)

Country Link
US (1) US20060069828A1 (zh)
JP (1) JP2008503015A (zh)
KR (1) KR100893541B1 (zh)
CN (1) CN100517287C (zh)
DE (1) DE112005001502T5 (zh)
TW (1) TWI303025B (zh)
WO (1) WO2006012291A2 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102480410A (zh) * 2010-11-22 2012-05-30 杭州华三通信技术有限公司 一种集中式业务处理单板及虚拟化资源划分方法
CN103778018A (zh) * 2014-01-16 2014-05-07 江苏华丽网络工程有限公司 一种用于pcie虚拟化管理的方法
CN109542581A (zh) * 2017-09-22 2019-03-29 深圳市中兴微电子技术有限公司 一种设备共享方法、装置及存储介质
CN110618843A (zh) * 2018-06-20 2019-12-27 成都香巴拉科技有限责任公司 单电脑主机多用户桌面虚拟化系统

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060184296A1 (en) * 2005-02-17 2006-08-17 Hunter Engineering Company Machine vision vehicle wheel alignment systems
US7685335B2 (en) * 2005-02-25 2010-03-23 International Business Machines Corporation Virtualized fibre channel adapter for a multi-processor data processing system
US20060193327A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation System and method for providing quality of service in a virtual adapter
US7546386B2 (en) * 2005-02-25 2009-06-09 International Business Machines Corporation Method for virtual resource initialization on a physical adapter that supports virtual resources
US7496790B2 (en) * 2005-02-25 2009-02-24 International Business Machines Corporation Method, apparatus, and computer program product for coordinating error reporting and reset utilizing an I/O adapter that supports virtualization
US7386637B2 (en) * 2005-02-25 2008-06-10 International Business Machines Corporation System, method, and computer program product for a fully trusted adapter validation of incoming memory mapped I/O operations on a physical adapter that supports virtual adapters or virtual resources
US20060212870A1 (en) * 2005-02-25 2006-09-21 International Business Machines Corporation Association of memory access through protection attributes that are associated to an access control level on a PCI adapter that supports virtualization
US20060195617A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation Method and system for native virtualization on a partially trusted adapter using adapter bus, device and function number for identification
US20060195848A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation System and method of virtual resource modification on a physical adapter that supports virtual resources
US7398328B2 (en) * 2005-02-25 2008-07-08 International Business Machines Corporation Native virtualization on a partially trusted adapter using PCI host bus, device, and function number for identification
US7308551B2 (en) * 2005-02-25 2007-12-11 International Business Machines Corporation System and method for managing metrics table per virtual port in a logically partitioned data processing system
US7543084B2 (en) * 2005-02-25 2009-06-02 International Business Machines Corporation Method for destroying virtual resources in a logically partitioned data processing system
US7398337B2 (en) * 2005-02-25 2008-07-08 International Business Machines Corporation Association of host translations that are associated to an access control level on a PCI bridge that supports virtualization
US20060195618A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation Data processing system, method, and computer program product for creation and initialization of a virtual adapter on a physical adapter that supports virtual adapter level virtualization
US7464191B2 (en) * 2005-02-25 2008-12-09 International Business Machines Corporation System and method for host initialization for an adapter that supports virtualization
US7493425B2 (en) * 2005-02-25 2009-02-17 International Business Machines Corporation Method, system and program product for differentiating between virtual hosts on bus transactions and associating allowable memory access for an input/output adapter that supports virtualization
US7870301B2 (en) * 2005-02-25 2011-01-11 International Business Machines Corporation System and method for modification of virtual adapter resources in a logically partitioned data processing system
US7376770B2 (en) * 2005-02-25 2008-05-20 International Business Machines Corporation System and method for virtual adapter resource allocation matrix that defines the amount of resources of a physical I/O adapter
US7480742B2 (en) * 2005-02-25 2009-01-20 International Business Machines Corporation Method for virtual adapter destruction on a physical adapter that supports virtual adapters
US20060195623A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation Native virtualization on a partially trusted adapter using PCI host memory mapped input/output memory address for identification
US7475166B2 (en) * 2005-02-28 2009-01-06 International Business Machines Corporation Method and system for fully trusted adapter validation of addresses referenced in a virtual host transfer request
US20070136554A1 (en) * 2005-12-12 2007-06-14 Giora Biran Memory operations in a virtualized system
US20070168872A1 (en) * 2006-01-19 2007-07-19 Raytheon Company Multi-monitor, multi-JVM java GUI infrastructure with layout via XML
US20070192518A1 (en) * 2006-02-14 2007-08-16 Aarohi Communications, Inc., A California Corporation Apparatus for performing I/O sharing & virtualization
US8539137B1 (en) * 2006-06-09 2013-09-17 Parallels IP Holdings GmbH System and method for management of virtual execution environment disk storage
US8407699B2 (en) 2008-03-10 2013-03-26 Citrix Systems, Inc. System and method for managing code isolation
US9317309B2 (en) * 2006-12-28 2016-04-19 Hewlett-Packard Development Company, L.P. Virtualized environment allocation system and method
US8190778B2 (en) 2007-03-06 2012-05-29 Intel Corporation Method and apparatus for network filtering and firewall protection on a secure partition
CN101272295B (zh) * 2007-03-21 2012-01-25 联想(北京)有限公司 支持多投影源的虚拟网络投影系统及方法
US20090083630A1 (en) * 2007-09-20 2009-03-26 C & S Operations, Inc. Computer system with tunneling
KR101007279B1 (ko) * 2007-12-17 2011-01-13 한국전자통신연구원 가상 머신 디스크 풀을 이용한 가상 머신 프로비저닝 방법 및 시스템
TWI356301B (en) 2007-12-27 2012-01-11 Ind Tech Res Inst Memory management system and method for open platf
US8646052B2 (en) * 2008-03-31 2014-02-04 Intel Corporation Method and apparatus for providing a secure display window inside the primary display
US20100169884A1 (en) * 2008-12-31 2010-07-01 Zohar Bogin Injecting transactions to support the virtualization of a physical device controller
JP5081847B2 (ja) * 2009-02-20 2012-11-28 株式会社日立製作所 マルチプロセッサによるパケット処理装置およびパケット処理方法
SG177152A1 (en) * 2009-06-16 2012-01-30 Intel Corp Camera applications in a handheld device
US9021556B2 (en) * 2009-11-23 2015-04-28 Symantec Corporation System and method for virtual device communication filtering
US8572610B2 (en) * 2009-12-09 2013-10-29 General Electric Company Patient monitoring system and method of safe operation with third party parameter applications
JP5423404B2 (ja) * 2010-01-08 2014-02-19 日本電気株式会社 オフロード処理装置、および、通信システム
US8739177B2 (en) * 2010-06-21 2014-05-27 Intel Corporation Method for network interface sharing among multiple virtual machines
US20120054740A1 (en) * 2010-08-31 2012-03-01 Microsoft Corporation Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
KR20120035493A (ko) * 2010-10-05 2012-04-16 엘지전자 주식회사 네트워크 모니터 시스템 및 그 제어 방법
KR101502895B1 (ko) 2010-12-22 2015-03-17 주식회사 케이티 복수의 오류 복제본으로부터 오류를 복구하는 방법 및 상기 방법을 이용하는 스토리지 시스템
KR101707545B1 (ko) 2010-12-23 2017-02-16 주식회사 케이티 솔루션 공유 방법 및 그 장치
KR101544480B1 (ko) 2010-12-24 2015-08-13 주식회사 케이티 복수 개의 프락시 서버를 포함하는 분산 저장 시스템 및 그 오브젝트 관리 방법 및 컴퓨터에 의하여 독출가능한 저장 매체
KR101585146B1 (ko) * 2010-12-24 2016-01-14 주식회사 케이티 오브젝트를 복수 개의 데이터 노드들의 위치에 기반하여 분산 저장하는 분산 저장 시스템 및 그 위치 기반 분산 저장 방법 및 컴퓨터에 의하여 독출 가능한 저장 매체
KR101483127B1 (ko) 2011-03-31 2015-01-22 주식회사 케이티 클라우드 스토리지 시스템에서 리소스를 고려한 자료분배방법 및 장치
KR101544483B1 (ko) 2011-04-13 2015-08-17 주식회사 케이티 분산 저장 시스템의 복제 서버 장치 및 복제본 생성 방법
KR101544485B1 (ko) 2011-04-25 2015-08-17 주식회사 케이티 클라우드 스토리지 시스템에서 복수개의 복제본을 분산 저장하는 방법 및 장치
US8972984B2 (en) * 2011-05-20 2015-03-03 Citrix Systems, Inc. Methods and systems for virtualizing audio hardware for one or more virtual machines
US9390294B2 (en) * 2011-09-30 2016-07-12 Hewlett-Packard Development Company, L.P. Virtualized device control in computer systems
DE102011116407A1 (de) * 2011-10-19 2013-04-25 embedded projects GmbH Mobile Recheneinheit
US9164789B2 (en) * 2012-02-29 2015-10-20 Red Hat Israel, Ltd. Multiple queue management and adaptive CPU matching in a virtual computing system
US20140012704A1 (en) 2012-07-05 2014-01-09 Google Inc. Selecting a preferred payment instrument based on a merchant category
US9092767B1 (en) 2013-03-04 2015-07-28 Google Inc. Selecting a preferred payment instrument
WO2014137008A1 (ko) * 2013-03-06 2014-09-12 팬터로그 주식회사 그래픽 자원 공유 시스템 및 방법
US9858572B2 (en) 2014-02-06 2018-01-02 Google Llc Dynamic alteration of track data
US9632953B2 (en) * 2014-06-03 2017-04-25 Qualcomm Incorporated Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
TWI592874B (zh) 2015-06-17 2017-07-21 康齊科技股份有限公司 網路伺服系統
JP6545022B2 (ja) * 2015-07-10 2019-07-17 日本電産サンキョー株式会社 カード搬送システム及びカード搬送制御方法
US10185679B2 (en) 2016-02-24 2019-01-22 Red Hat Israel, Ltd. Multi-queue device assignment to virtual machine groups

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0664536B2 (ja) * 1986-01-17 1994-08-22 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 仮想端末サブシステムの制御方法
US5414851A (en) * 1992-06-15 1995-05-09 International Business Machines Corporation Method and means for sharing I/O resources by a plurality of operating systems
WO1995004322A1 (en) * 1993-07-28 1995-02-09 3Com Corporation Network station with multiple network addresses
JPH09167429A (ja) * 1995-12-15 1997-06-24 Fujitsu Ltd 光ディスク装置
US5758099A (en) * 1996-05-29 1998-05-26 International Business Machines Corporation Plug and play protocol for bus adapter card
JP2866376B2 (ja) * 1998-05-20 1999-03-08 株式会社日立製作所 ディスクアレイ装置
JP3659062B2 (ja) * 1999-05-21 2005-06-15 株式会社日立製作所 計算機システム
JP4395223B2 (ja) * 1999-09-24 2010-01-06 株式会社日立製作所 表示装置、表示方法、および、ナビゲーション装置
US6823404B2 (en) * 2000-06-08 2004-11-23 International Business Machines Corporation DMA windowing in an LPAR environment using device arbitration level to allow multiple IOAs per terminal bridge
JP2002351621A (ja) * 2001-05-30 2002-12-06 Toshiba Corp 複数デバイスとして認識されるドライブ装置と光ディスクドライブ装置及びこれらの方法
US7174550B2 (en) * 2003-05-12 2007-02-06 International Business Machines Corporation Sharing communications adapters across a plurality of input/output subsystem images
JP2005301513A (ja) * 2004-04-08 2005-10-27 Fujitsu Ltd プログラム内蔵デバイス

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102480410A (zh) * 2010-11-22 2012-05-30 杭州华三通信技术有限公司 一种集中式业务处理单板及虚拟化资源划分方法
CN102480410B (zh) * 2010-11-22 2015-06-10 杭州华三通信技术有限公司 一种集中式业务处理单板及虚拟化资源划分方法
CN103778018A (zh) * 2014-01-16 2014-05-07 江苏华丽网络工程有限公司 一种用于pcie虚拟化管理的方法
CN103778018B (zh) * 2014-01-16 2018-05-04 深圳艾迪宝智能系统有限公司 一种用于pcie虚拟化管理的方法
CN109542581A (zh) * 2017-09-22 2019-03-29 深圳市中兴微电子技术有限公司 一种设备共享方法、装置及存储介质
CN110618843A (zh) * 2018-06-20 2019-12-27 成都香巴拉科技有限责任公司 单电脑主机多用户桌面虚拟化系统

Also Published As

Publication number Publication date
TW200606648A (en) 2006-02-16
CN100517287C (zh) 2009-07-22
WO2006012291A3 (en) 2006-08-03
US20060069828A1 (en) 2006-03-30
KR100893541B1 (ko) 2009-04-17
DE112005001502T5 (de) 2007-11-29
KR20070032734A (ko) 2007-03-22
WO2006012291A2 (en) 2006-02-02
JP2008503015A (ja) 2008-01-31
TWI303025B (en) 2008-11-11

Similar Documents

Publication Publication Date Title
CN100517287C (zh) 多客户机间共享物理设备
US7581229B2 (en) Systems and methods for supporting device access from multiple operating systems
CN100382069C (zh) 在逻辑分区之间共享网络i/o适配器的装置与方法
EP1722301B1 (en) Partition bus
US7730205B2 (en) OS agnostic resource sharing across multiple computing platforms
US11030025B2 (en) Managing inter-process communications in a containerized application environment
US9417996B2 (en) Shared physical memory protocol
US20120054740A1 (en) Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
CN1892586B (zh) 集中式可热插拔的视频控制器与改向逻辑单元
US20140358848A1 (en) Interconnect partition binding api, allocation and management of application-specific partitions
US20050125537A1 (en) Method, apparatus and system for resource sharing in grid computing networks
US20020095479A1 (en) Method and apparatus for virtual namespaces for active computing environments
US20030200354A1 (en) Computer system and method that eliminates the need for an operating system
US20060184938A1 (en) Method, apparatus and system for dynamically reassigning memory from one virtual machine to another
MXPA01005779A (es) Virtualizacion de hipervisor de sistema operativo y panel de operador.
JP7373578B2 (ja) セキュア仮想マシン環境におけるストレージ保護ハードウェアのテスト方法、システム、プログラム
CN102567052A (zh) 启用配置有图形处理器的服务器的远程管理的技术
CN101436165A (zh) 用于iov适配器管理的系统和方法
JP7379517B2 (ja) セキュア・インターフェース制御セキュア・ストレージ・ハードウェアのタグ付け方法、システム、プログラム
KR101498965B1 (ko) 가상화 기술을 이용한 내외부망 격리 시스템 및 방법
CN110442389B (zh) 一种多桌面环境共享使用gpu的方法
JP2002287996A (ja) 構成可能なデータ処理システムで端末のプロファイルを保守する方法および装置
US7996631B1 (en) System and method for accessing storage devices attached to a stateless client
US11360824B2 (en) Customized partitioning of compute instances
CN113312141A (zh) 用于虚拟机的虚拟串行端口

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090722

Termination date: 20110622