CN101243396B - 用于在虚拟化环境中支持通用串行总线装置的方法和设备 - Google Patents
用于在虚拟化环境中支持通用串行总线装置的方法和设备 Download PDFInfo
- Publication number
- CN101243396B CN101243396B CN200680030070.5A CN200680030070A CN101243396B CN 101243396 B CN101243396 B CN 101243396B CN 200680030070 A CN200680030070 A CN 200680030070A CN 101243396 B CN101243396 B CN 101243396B
- Authority
- CN
- China
- Prior art keywords
- scheduling
- virtual machine
- bus
- usb
- frame
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
- G06F9/4413—Plug-and-play [PnP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Systems (AREA)
Abstract
一种用于管理虚拟机与总线控制器之间的数据的方法,包括将输入输出(IO)请求从虚拟机传送到拥有总线控制器的服务虚拟机。根据备选实施例,管理虚拟机与总线控制器之间的数据包括捕获虚拟机进行的寄存器访问。生成要由总线控制器实现的调度。经由虚拟总线控制器将状态返回给虚拟机。还描述了其他实施例并且对这些其他实施例要求权利。
Description
技术领域
本发明的实施例涉及虚拟化。更确切地来说,本发明的某些实施例涉及用于在虚拟化环境中支持通用串行总线(USB)装置的方法和设备。
背景技术
虚拟化是这样一种技术:将计算机系统分成多个隔离的虚拟机(VM),对于每个隔离的虚拟机(VM)中的软件来说,该隔离的虚拟机(VM)看上去像是一个完整的计算机系统。常规虚拟机管理器(VMM)可以运行在计算机上以便向其他软件呈示一个或多个VM或访客的抽象。每个VM起自包含平台的作用,该平台运行它自己的软件堆栈,包括操作系统(OS)和应用程序。这种软件堆栈统称为“访客软件”。
VM上运行的访客软件期望如同在专用计算机上运行那样操作。例如,访客软件期望控制多种计算机操作并在这些操作期间具有对物理(即硬件)资源的访问权。VMM控制将哪些物理装置分配到各VM,并且还实现对于VM可见的虚拟装置。如果完全将物理装置分配到单个VM,则该物理装置对于计算机系统中的其他VM是不可用的。如果多于一个VM共享物理装置,则VMM通常为每个VM实现虚拟装置并且裁定这些虚拟装置对物理装置的访问。
USB 2.0(通用串行总线修订版2.0规范,2002年发布)是一种支持最高480Mbps的数据速率的外部总线。USB 2.0是USB 1.1(通用串行总线修订版1.1规范,1996年发布)的扩充,并与USB 1.1完全兼容。目前的虚拟化软件解决方案提供对USB 2.0的有限支持。
附图说明
通过举例方式说明本发明实施例的特征和优点,并无意将本发明实施例的范围限制于所示的特定实施例。
图1说明根据本发明实施例的计算机系统的实施例。
图2是说明根据第一实施例、其中驻留本发明的实施例的虚拟化环境的框图。
图3是说明根据第二实施例、其中驻留本发明的实施例的虚拟化环境的框图。
图4是说明根据本发明实施例的USB模块的框图。
图5a说明从VM的异步调度的示例。
图5b说明根据本发明实施例、可以如何链接异步调度的示例。
图5c说明根据本发明实施例、可以如何复制和合并异步调度的示例。
图6a说明从VM的同步调度的示例。
图6b说明根据本发明实施例、可以如何链接同步调度的示例。
图6c说明根据本发明实施例、可以如何复制和合并同步调度的示例。
图7是说明根据本发明实施例、用于为主机控制器生成异步调度的方法的流程图。
图8是说明根据本发明实施例、用于为主机控制器生成同步调度的方法的流程图。
具体实施方式
在下文描述中,为了解释的目的,阐述了许多特定细节,以便提供对本发明实施例的透彻理解。对于本领域人员来说,显然在没有这些特定细节的情况下仍可以实施本发明的实施例。在其他情况中,以框图形式示出公知的电路、装置和程序,以避免不必要地妨碍了对本发明实施例的理解。
图1是根据本发明实施例的示范计算机系统100的框图。计算机系统100包括处理数据信号的处理器101。处理器101可以是复杂指令集计算机微处理器、精简指令集计算微处理器、非常长指令字微处理器、实现指令集的组合的处理器或其他处理器装置。图1示出具有单个处理器的计算机系统100。但是,要理解计算机系统100可以利用多个处理器来操作。此外,一个或多个处理器的每个处理器可以支持一个或多个硬件线程。处理器101耦合到CPU总线110,CPU总线110在处理器101与计算机系统100中的其他组件之间传送数据信号。
计算机系统100包括存储器113。存储器113可以是动态随机存取存储器装置、静态随机存取存储器装置、只读存储器和/或其他存储器装置。存储器113可以存储可以由处理器101执行的数据信号所表示的指令和代码。高速缓冲存储器102可以驻留在处理器101中,高速缓冲存储器102存储在存储器113中存储的数据信号。高速缓存102通过利用其访问的本地性来加速处理器101对存储器的访问。在计算机系统100的备选实施例中,高速缓存驻留在处理器101外部。桥储存器控制器111耦合到CPU总线110和存储器113。桥存储器控制器111在处理器101、存储器113和计算机系统100中的其他组件之间引导数据信号,并在CPU总线110、存储器113和IO总线120之间桥接数据信号。
IO总线120可以是单个总线或多个总线的组合。IO总线120在计算机系统100中的组件之间提供通信链路。网络控制器121耦合到IO总线120。网络控制器121可以将计算机系统100链接到计算机网络(未示出)并支持机器之间的通信。显示装置控制器122耦合到IO总线120。显示装置控制器122能够将显示装置(未示出)耦合到计算机系统100,并作为显示装置与计算机系统100之间的接口。或者,显示装置控制器122可以直接连接到桥111。
IO总线130可以是单个总线或多个总线的组合。IO总线130提供计算机系统100中的组件之间的通信链路。数据存储装置131耦合到IO总线130。数据存储装置131可以是硬盘驱动器、软磁盘驱动器、CD-ROM装置、闪速存储器装置或其他海量存储装置。输入接口132耦合到IO总线130。输入接口132可以是例如,键盘和/或鼠标控制器或其他输入接口。输入接口132可以是专用装置或可以驻留在例如总线控制器或其他控制器的另一个装置中。输入接口132能够将输入装置耦合到计算机系统100,并将数据信号从输入装置传送到计算机系统100。摄像机133耦合到IO总线130。摄像机133执行操作以捕获可以显示在显示装置或存储在存储器113中的图像。
总线桥123将IO总线120耦合到IO总线130。总线桥123执行操作来缓存并桥接IO总线120与IO总线130之间的数据信号。总线桥123包括总线控制器124。根据计算机系统100的实施例,IO总线130是USB 2.0总线,以及总线控制器124是主机控制器(USB主机控制器)。主机控制器124通过执行对所提供的任务的调度来控制IO总线130。主机控制器124还在IO总线130上发送分组、查询状态以及提供至软件的寄存器接口。
根据本发明的实施例,处理器101执行存储在包含虚拟化软件的存储器113中的指令。虚拟化软件支持计算机系统100上的虚拟化以及在虚拟化环境中对例如USB 2.0装置的输入输出装置的使用。在一个实施例中,在USB请求缓冲器级执行虚拟化,在此USB请求缓冲器级中,VM中的操作系统(访客操作系统)运行虚拟根集线器驱动程序而不是USB系统软件。虚拟根集线器驱动程序与运行USB系统软件的专用服务VM通信。在备选实施例中,在寄存器级执行虚拟化,在此寄存器级中,访客操作系统运行旧式USB系统软件。USB模块驻留在执行捕获和中断处理的VMM中。虚拟化软件可以在虚拟化环境中支持两个或两个以上USB 2.0装置并且可以支持同步数据传输。
图2是说明根据本发明的第一实施例的虚拟化环境200的框图。虚拟化环境200包括VMM 210。VMM 210实现物理机器的接口。物理机器可以包括计算机系统的组件,例如一个或多个处理器、存储器、总线、主机控制器和多种IO装置。根据本发明实施例,物理机器可以由图1所示的计算机系统100来实现或由具有与图1所示的那些组件相似的组件的计算机系统来实现。VMM 210使一个或多个VM 220易于运行。根据本发明的实施例,VMM 210可以是存储在计算机系统的存储器中的指令序列。MM 210在VM 220之间管理并调解物理机器中的计算机系统资源,并能够实现VM 220之间的隔离或数据共享。VMM 210通过将物理机器中的资源虚拟化并导出可以反映物理机器的底层体系结构、物理机器的变体或完全不同的物理机器的虚拟硬件接口(即VM)来实现这种隔离或共享。
虚拟化环境200包括一个或多个VM 221-223(统一地示出为220)。根据本发明实施例,可以将VM描述为机器的隔离的模型,包括但不限于物理机器的副本、物理机器的子集或完全不同的机器的模型。VM可以包括物理机器中的计算机系统的资源、物理机器中的计算机系统的资源的子集或物理机器中完全见不到的虚拟资源。
根据本发明实施例,VMM 210具有物理机器的控制权并创建VM220,每个VM 220如同能够运行自己的操作系统(OS)的物理机器一样动作。VM 221-223分别可以运行操作系统(访客操作系统)231-233,其中操作系统231-233可以彼此不同。为了将性能最大化,VMM 210在可能时使VM能够直接在物理机器中的计算机系统的资源上执行。但是,只要VM尝试执行可能影响其他VM的操作、VMM210的操作或物理机器中的资源的操作的操作时,VMM 210就会接管控制权。VMM 210可以模拟该操作,并可以在该操作完成时将控制权返回给VM。一个或多个应用程序(访客应用程序)可以运行在VM
221-223的每一个VM上。
VM 221和222分别包括客户端驱动程序241和242。客户端驱动程序241和242支持耦合到输入输出总线的输入输出装置。根据本发明实施例,客户端驱动程序241和242支持USB 2.0装置。VM 221和222还包括虚拟根集线器(Vhub)驱动程序251和252。客户端驱动程序241和242将IO请求提交到它们各自的VHub驱动程序251和252。VHub驱动程序251和252将IO请求传送到控制物理机器的主机控制器的实体。
虚拟化环境200包括作为专用服务VM操作的VM 223。根据虚拟化环境200的实施例,服务VM 223控制物理机器的主机控制器,并执行操作以将对例如USB 2.0的IO总线的支持虚拟化。服务VM223包括USB服务器243。USB服务器243与VHub驱动程序251和252接口,并从VHub驱动程序251和252接收IO请求。根据本发明实施例,VHub驱动程序251和252和USB服务器243包括用于存储要处理的未决IO请求的多个队列。可以使用消息传送机制和技术(例如消息传递、客户端服务器(套接字)、共享存储器缓冲器(VM间通信)、远程过程呼叫或其他过程)来实现VHub驱动程序251和252和USB服务器243之间的传输。
服务VM 223包括集线器驱动程序253。集线器驱动程序253检测USB 2.0装置与USB 2.0总线连接或从USB 2.0总线移除。当装置连接事件时,集线器驱动程序253可以查询装置以确定它的类型和特征。基于策略,集线器驱动程序253可以选择该装置应该连接到哪个VM。服务VM 223向与所选的VM对应的VHub驱动程序发送消息。VHub驱动程序可以触发导致适合的客户端驱动程序的加载的即插即用事件。
服务VM 223包括USB驱动程序263。USB驱动程序263管理USB 2.0总线。USB驱动程序263作出对USB 2.0总线的策略决策,并为USB 2.0总线上的装置分配带宽。
服务VM 223包括主机控制器(HC)驱动程序273。HC驱动程序273与主机控制器接口,并建立主机控制器执行的调度。该调度可以包括一个或多个传输描述符(TD)。TD是可以包含存储器中要开始传输的地址、要传输的存储器的大小和目的地USB装置和端点地址的IO请求。该调度还可以包括指向TD链的一个或多个队列头(QH)。根据本发明实施例,主机控制器驱动程序273生成包括同步(周期)数据和异步(块)数据的主机控制器的调度。可以将异步数据调度为仅在已经对帧执行同步数据之后才执行。根据本发明实施例,帧可以是其间可以传输零个或多个数据分组的时间的单元。
在IO请求完成时,USB服务器243向适合的VHub驱动程序返回状态值。VHub驱动程序则完成来自其对应的客户端驱动程序的IO请求。来自主机控制器的中断由服务VM 223处理。服务VM 223还处理装置连接事件。通过实现例如集线器驱动程序253、USB驱动程序263和专用服务VM 223上的HC驱动程序273的USB系统软件,只需在虚拟化环境200中运行USB系统软件的一个副本。这样能够由服务VM 223集中管理例如装置标识符、总线功率和同步带宽的USB2.0参数。
图3是说明根据本发明的第二实施例的虚拟化环境300的框图。虚拟化环境300包括VMM 310。根据本发明实施例,VMM 310可以包括与关于图2中的VMM 210描述的那些特性相似的特性并执行与关于图2中的VMM 210描述的那些过程相似的一些过程。VMM 310实现物理机器的接口。物理机器可以是与关于图2中描述的物理机器相似的物理机器。VMM 310包括多个虚拟总线控制器。根据采用USB的本发明的实施例,可以利用虚拟主机控制器(V主机控制器)381和382来实现虚拟总线控制器。将虚拟主机控制器381和382呈示给虚拟化环境300中的VM。虚拟化环境300中的VM如同虚拟主机控制器381和382是物理机器中的实际主机控制器那样与虚拟主机控制器381和382通信。
VMM 310包括总线模块。根据本发明实施例,可以利用USB模块390来实现该总线模块。USB模块390可以是指令的序列和关联的存储器。USB模块390控制物理机器中的主机控制器,并维护由主机控制器执行的称为活动调度的调度。根据虚拟化环境的实施例,USB模块390捕获由VM进行的对虚拟主机控制器381和382的访问。USB模块390可以实现寄存器的语义、更新虚拟主机控制器381和382的状态并返回虚拟主机控制器381和382的状态。USB模块390还可以捕获对包括调度的页的访问。例如可以作为页故障来实现这些捕获。这些页可以包括周期帧列表QH和/或TD。当VM更新QH或TD时,USB模块390更新活动调度。可以将来自USB模块390中的活动调度的状态信息复制回VM中的调度。USB模块390还可以按虚拟主机控制器的状态所要求的在VM中生成中断。
虚拟化环境300包括一个或多个VM 321-322(统一地示出为320)。根据本发明实施例,VMM 310具有物理机器的控制权并创建VM 320,每个VM 220如同能够运行自己的操作系统(OS)的物理机器一样动作。VM 321-322分别可以运行操作系统(访客操作系统)331-332,其中操作系统331-332可以彼此不同。一个或多个应用程序(访客应用程序)可以运行在VM 321-322的每一个VM上。
VM 321和322分别包括客户端驱动程序341和342。客户端驱动程序341和342支持耦合到输入输出总线的输入输出装置。根据本发明实施例,客户端驱动程序341和342支持USB 2.0装置。客户端驱动程序341和342生成访问USB 2.0装置的IO请求。
VM 321和322分别包括集线器驱动程序351和352。集线器驱动程序351和352检测USB 2.0装置与USB 2.0总线连接或从USB 2.0总线移除。当装置连接事件时,集线器驱动程序351和352可以查询装置以确定它的类型和特性。
VM 321和322分别包括USB驱动程序361和362。USB驱动程序361和362管理USB 2.0总线。USB驱动程序361和362作出对USB 2.0总线的策略决策,并为USB 2.0总线上的装置分配带宽。
VM 321和322分别包括主机控制器(HC)驱动程序371和372。HC驱动程序321和322分别与虚拟主机控制器381和382接口。每个主机控制器驱动程序为它的虚拟主机控制器建立要执行的调度。该调度可以包括描述与主机控制器关联的总线的每个帧上的活动TD和/或QH。根据本发明实施例,主机控制器驱动程序371和372生成包括同步数据和异步数据的主机控制器的调度。
应该认识到,并不使USB模块390捕获生成或修改同步数据传输的TD的每个VM访问,主机控制器驱动程序271和272而是可以在由它的对应VM生成或修改了一个或多个TD之后通知USB模块390。这样使USB模块390能够处理同步调度,无需捕获生成或修改TD的每个VM访问,这减少了开销并更有效率。根据本发明实施例,可以在端点被打开或关闭时或在建立同步传输时向USB模块390提供通知。该通知可以包括有关新端点的信息(例如装置和端点编号)或有关新传输的信息(例如,装置、端点编号和起始帧和结束帧)。
通过在VM 中实现虚拟主机控制器和USB模块,例如客户端驱动程序、集线器驱动程序、USB驱动程序和主机控制器驱动程序的旧式USB系统软件可以在虚拟化环境中的VM上运行。主机控制器寄存器虚拟化的一个优点在于:VMM可以维护二进制旧式兼容性并运行旧式访客二进制。
图4是说明根据本发明实施例的USB模块400的框图。USB模块400可以用于实现图3所示的USB模块390。USB模块400包括捕获处理程序410。捕获处理程序410管理VM进行的寄存器访问。捕获处理程序410包括调度捕获单元411。当虚拟主机控制器驱动程序建立虚拟主机控制器的调度时,调度捕获单元411捕获VM所进行的QH或TD写和读。根据本发明实施例,调度捕获单元411可以通过在VM中适当位置上修改QH和TD以生成物理机器中的主机控制器的调度来将虚拟主机控制器驱动程序生成的调度链接在一起。或者,调度捕获单元411可以将这些调度复制到USB模块400中,并修改(合并)这些调度的副本来生成物理机器中的主机控制器的调度。当VM更新它的调度时,调度捕获单元411可以执行这种链接或复制。当执行链接并且VM尝试读回调度时,调度捕获单元411返回该VM建立的期望的值。在本实施例中,调度捕获单元411可以管理和存储VM的期望的值。当执行复制并合并时,调度捕获单元411可以存储调度的复制和合并的副本。调度捕获单元411还执行地址转换和USB装置地址转换以支持物理机器中主机控制器的活动调度的生成。
捕获处理程序410包括寄存器读捕获单元412。寄存器读捕获单元412捕获VM进行的状态寄存器读。可以读状态寄存器来识别USB2.0总线的多种状态。状态寄存器指示的状态可以包括例如总线的健康、错误的存在、端口上IO装置的存在以及事务是否已经完成。寄存器读捕获单元412通过返回与状态寄存器读对应的VM的对应状态来执行状态虚拟化。
捕获处理程序410包括寄存器写捕获单元413。寄存器写捕获读单元413捕获VM进行的寄存器写。可以由VM写寄存器来完成要由主机控制器执行的动作。寄存器写捕获单元413管理寄存器写以使物理机器上的单个主机控制器能够被多个VM共享。根据本发明实施例,记录同步和异步列表地址,但是不将其写入到寄存器中。
USB模块400包括中断处理程序420。中断处理程序420管理由物理机器上的主机控制器对处理器进行的中断。中断处理程序420包括USB中断单元421。对于主机控制器生成用于指示对调度的工作已完成的中断,USB中断单元421识别哪个VM提交了工作并生成对所识别的VM的中断。
中断处理程序420包括状态中断单元422。对于主机控制器生成用于指示装置已连接到物理机器的中断,状态中断单元422确定要将装置指定到哪个VM。根据中断处理程序420的实施例,状态中断单元422基于端口号、装置类型、装置序列号或其他标准作出此确定。状态中断单元422生成对VM的中断。
中断处理程序420包括错误中断单元423。根据中断处理程序420的实施例,对于主机控制器生成用于指示发生了错误的中断,错误中断单元423确定该错误是全局错误还是局部错误。如果中断是响应全局错误生成的,则停止主机控制器。如果中断是响应TD导致的局部错误生成的,则错误中断单元423可以提示主机控制器重试该TD或引退该TD。
应该认识到,USB模块400可以包括其他组件,例如执行存储器分配和取消分配的组件和启动异步和同步调度的组件。
图5a说明VM中的主机控制器驱动程序生成的示范异步调度的图形表示。调度510表示来自第一VM的第一异步调度。调度510包括多个QH 512-513。每个队列头512-513具有TD链514-515,TD链514-515可以包括从其暂挂的一个或多个TD。调度510包括表示调度开始的伪QH(H)511。调度520表示来自第二VM的第二异步调度。调度520包括多个QH 522-524。每个QH 522-524具有分别从其悬挂的TD链525-527。调度520包括表示调度开始的伪QH(H)521。
图5b说明根据本发明实施例如何链接异步调度的示例。根据本发明实施例,通过将每个VM中的最后一个QH指向下一个VM的第一个QH并将最后一个VM的最后一个QH指向第一个VM的伪QH来实现链接异步调度。调度530表示链接的异步调度。如图所示,将第一个VM中的最后一个QH 513指向第二个VM的第一个QH 522。将第二个VM中的最后一个QH 524指向第一个VM的伪QH 511。异步列表地址寄存器(异步列表地址)可以是包括要执行的下一个异步队列头的地址的寄存器。可以由图4所示的调度捕获单元411来执行图示的链接。在本实施例中,通过修改与VM中存储的QH关联的指针来链接调度。应该认识到,虽然仅示出两个VM,但是可以将该示例推广到n个VM,其中n可以是任何数量。
图5c说明根据本发明实施例可以如何复制和合并异步调度的示例。根据本发明实施例,异步调度的复制和合并也包括将每个VM中的最后一个QH指向下一个VM的第一个QH并将最后一个VM的最后一个QH指向第一个VM的伪QH。但是,不是在VM中在适合的位置上链接调度,而是VMM制作这些调度的副本并合并副本。调度540表示合并的异步调度。如图所示,将第一个VM中的最后一个QH513指向第二个VM的第一个QH 522。将第二个VM中的最后一个QH 524指向第一个VM的伪QH 511。异步列表地址寄存器(异步列表地址)可以是包括要执行的下一个异步队列头的地址的寄存器。可以由图4所示的调度捕获单元411来执行图示的复制和合并。
图6a说明VM中的主机控制器驱动程序生成的示范同步调度的图形表示。调度610表示来自第一个VM的第一同步调度。调度610包括周期帧列表611,该周期帧列表611包括时隙或帧的列表。每个帧可以具有为执行而调度的零个或多个TD。TD 621-622对应于周期帧列表611中的第一帧620。TD 631-632对应于周期帧列表611中的第二帧630。中断树640包括与轮询速率对应的多个QH 641-643。TD621-622与具有4毫秒的轮询速率的QH 642关联,TD 631-632与具有8毫秒的轮询速率的QH 641关联,如图所示。调度650表示来自第二VM的第二同步调度。调度650包括周期帧列表651,该周期帧列表651包括时隙或帧的列表。每个帧可以具有为执行而调度的零个或多个TD。TD 661-662对应于周期帧列表651中的第一帧660。TD 671-672对应于周期帧列表651中的第二帧670。中断树680包括与轮询速率对应的多个QH 681-683。TD 661-662与具有4毫秒的轮询速率的QH682关联,TD 671-672与具有8毫秒的轮询速率的QH 681关联,如图所示。
图6b说明根据本发明实施例如何链接同步调度的示例。根据本发明实施例,通过构成每个帧中端到端的同步TD的链接列表来实现链接同步调度。例如可以通过假定主机控制器驱动程序仅约束于周期的选择集,可以分别将相同周期的QH合并来实现此目的。如图所示,TD 621指向TD 622,TD 622指向TD 661,以及TD 661指向TD 662。TD 631指向TD 632,TD 632指向TD 671,以及TD 671指向TD 672。QH 641指向QH 681。QH 681指向QH 642。QH 642指向QH 682。QH 682指向QH 643。QH 643指向QH 683。周期帧列表基地址寄存器(列表基址)包括周期帧列表在系统存储器中的开始地址。将周期帧列表基地址寄存器的内容与帧索引寄存器结合,以使主机控制器能够依次遍历周期帧列表。可以由图4所示的调度捕获单元411来执行图示的链接。在本实施例中,通过修改与VM中存储的TD关联的指针来链接调度。
图6c说明根据本发明实施例如何复制和合并同步调度的示例。根据本发明实施例,同步调度的复制和合并也包括构成每个帧中端到端的同步TD的链接列表并将相同周期的QH合并。但是,不是在VM中在适合的位置上链接调度,而是VMM制作这些调度的副本并合并副本。如图所示,TD 621指向TD 622,TD 622指向TD 661,以及TD 661指向TD 662。TD 631指向TD 632,TD 632指向TD 671,以及TD 671指向TD 672。QH 641指向QH 681。QH 681指向QH 642。QH 642指向QH 682。QH 682指向QH 643。QH 643指向QH 683。周期帧列表基地址寄存器(列表基址)包括周期帧列表在系统存储器中的开始地址。将周期帧列表基地址寄存器的内容与帧索引寄存器结合,以使主机控制器能够依次遍历周期帧列表。可以由图4所示的调度捕获单元411来执行图示的复制和合并。
图7是说明根据本发明实施例用于为主机控制器生成异步调度的方法的流程图。图示的该过程可以由USB模块(例如图3和图4中所示的USB模块)来执行。在701,将来自多个VM的虚拟主机控制器的异步调度(AS)分类,并依序布置。将来自第一个(初始)VM的要处理的异步调度指定为第一个(初始)异步调度。
在702,将来自前一个VM的异步调度中的最后一个QH指向来自下一个VM的异步调度中的第一个QH。
在703,确定是否存在来自附加VM的异步调度要处理。如果确定存在来自附加VM的异步调度要处理,则控制返回给702,并将下一个VM指定为前一个VM,以及将该附加VM指定为下一个VM。如果确定不存在来自附加VM的异步调度要处理,则控制转到704。
在704,将来自最后或最后一个VM的异步调度中的最后一个QH指向来自初始VM的异步调度中的伪QH。
图8是说明根据本发明实施例用于为主机控制器生成同步调度的方法的流程图。图示的该过程可以由USB模块(例如图3和图4中所示的USB模块)来执行。在801,将帧列表的每个帧中的TD连接到其他帧列表的对应帧中的TD。根据本发明实施例,来自第一个VM的帧列表的帧中的TD链中的最后一个TD指向第二个VM的帧列表的对应帧中的TD链中的第一个TD。
在802,合并来自VM的帧列表的相同周期或轮询速率的QH。
图7和8是说明根据本发明实施例的方法的流程图。这些附图中所示的一些技术可以顺序地、并行地或按与描述的顺序不同的顺序来执行。应该认识到,并非所描述的所有技术都需要执行,可以添加附加的技术,以及可以利用其他技术替代一些图示的技术。
本发明的实施例可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可以包括具有指令的机器可访问或机器可读媒体上的制造品。机器可访问或机器可读媒体上的这些指令可以用于对计算机系统或其他电子装置编程。该机器可读媒体可以包括但不限于软盘、光盘、CD-ROM和磁光盘或适于存储或传送电子指令的其他类型的媒介/机器可读媒体。本文描述的这些技术不限于任何特定的软件配置。它们可以在任何计算或处理环境中发现可应用性。本文所使用的术语“机器可访问媒体”或“机器可读媒体”应该包括能够存储、编码或传送由机器执行并使该机器执行本文描述的方法的任何一种方法的指令序列的任何媒体。而且,在本领域中常见是作为采取措施或促成结果以一种形式或另一种形式(例如,程序、过程、进程、应用程序等)来论及软件。此类表述仅是说明通过处理系统执行软件使该处理器执行动作以产生结果的便捷方式。
在前文描述中,本发明的实施例是参考其特定示范实施例来描述的。但是将显见到,在不背离本发明实施例的精神和范围的前提下可以对其多种修改和更改。因此,本说明书和附图应视为说明性意义的而非限定性意义的。
Claims (10)
1.一种用于管理虚拟机(320)与用于总线(130)的总线控制器(124)之间的数据的方法,包括:
捕获所述虚拟机(320)进行的、反映在总线(130)上执行任务的请求的寄存器访问;
生成何时根据捕获的请求来执行任务的、用于所述总线控制器(124)的调度(540);以及
经由与虚拟机(320)相对应的虚拟总线控制器(381,382)将与生成的调度相关的状态信息返回给所述虚拟机(320)。
2.如权利要求1所述的方法,其特征在于,还包括响应接收到传输描述符和队列头的其中之一已被修改或被添加的通知而更新所述调度(540)。
3.如权利要求1所述的方法,其特征在于,生成所述调度包括将来自虚拟机的帧中的传输描述符指向来自另一个虚拟机的对应帧中的传输描述符。
4.如权利要求3所述的方法,其特征在于,指向是在所述虚拟机中的帧列表上指示的。
5.如权利要求3所述的方法,其特征在于,指向是在虚拟机监视器中的帧列表的副本上指示的。
6.一种用于管理虚拟机(320)与用于总线(130)的总线控制器(124)之间的数据的装置,包括:
用于捕获所述虚拟机(320)进行的、反映在总线(130)上执行任务的请求的寄存器访问的部件;
用于生成何时根据捕获的请求来执行任务的、用于所述总线控制器(124)的调度(540)的部件;以及
用于经由与虚拟机(320)相对应的虚拟总线控制器(381,382)将与生成的调度相关的状态信息返回给所述虚拟机(320)的部件。
7.如权利要求6所述的装置,其特征在于,还包括响应接收到传输描述符和队列头的其中之一已被修改或被添加的通知而更新所述调度的部件。
8.如权利要求6所述的装置,其特征在于,生成所述调度包括将来自虚拟机的帧中的传输描述符指向来自另一个虚拟机的对应帧中的传输描述符。
9.如权利要求8所述的装置,其特征在于,指向是在所述虚拟机中的帧列表上指示的。
10.如权利要求8所述的装置,其特征在于,指向是在虚拟机监视器中的帧列表的副本上指示的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/207,288 | 2005-08-19 | ||
US11/207,288 US8065441B2 (en) | 2005-08-19 | 2005-08-19 | Method and apparatus for supporting universal serial bus devices in a virtualized environment |
PCT/US2006/030398 WO2007024444A1 (en) | 2005-08-19 | 2006-08-03 | Method and apparatus for supporting universal serial bus devices in a virtualized environment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101243396A CN101243396A (zh) | 2008-08-13 |
CN101243396B true CN101243396B (zh) | 2013-03-13 |
Family
ID=37460123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200680030070.5A Expired - Fee Related CN101243396B (zh) | 2005-08-19 | 2006-08-03 | 用于在虚拟化环境中支持通用串行总线装置的方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8065441B2 (zh) |
EP (1) | EP1915681A1 (zh) |
CN (1) | CN101243396B (zh) |
WO (1) | WO2007024444A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8065441B2 (en) | 2005-08-19 | 2011-11-22 | Intel Corporation | Method and apparatus for supporting universal serial bus devices in a virtualized environment |
US8365168B1 (en) * | 2007-07-09 | 2013-01-29 | Parallels IP Holdings GmbH | Method and system for processing isochronous data packets using virtual USB controller, and placing the isochronous data packets into a look-ahead queue having a plurality of blank packets |
CN103984587B (zh) * | 2008-06-12 | 2017-10-20 | 普安科技股份有限公司 | 储存虚拟化系统中更新实体储存装置的控制程序的方法 |
US8832345B2 (en) * | 2010-08-24 | 2014-09-09 | Belkin International, Inc. | System for communicating between two electrical devices and method therefore |
US8335875B1 (en) | 2011-06-24 | 2012-12-18 | Intel Corporation | System and method for performing isochronous data buffering |
US20130091197A1 (en) * | 2011-10-11 | 2013-04-11 | Microsoft Corporation | Mobile device as a local server |
CN104011680B (zh) * | 2011-12-26 | 2017-03-01 | 英特尔公司 | 在物理处理单元中调度虚拟机的虚拟中央处理单元 |
US9600351B2 (en) | 2012-12-14 | 2017-03-21 | Microsoft Technology Licensing, Llc | Inversion-of-control component service models for virtual environments |
JP6232604B2 (ja) * | 2014-02-10 | 2017-11-22 | サイレックス・テクノロジー株式会社 | デバイスサーバとその制御方法 |
US20160350247A1 (en) * | 2015-05-26 | 2016-12-01 | Intel Corporation | Latency improvements on a bus using modified transfers |
US20180143932A1 (en) * | 2016-11-21 | 2018-05-24 | Intel Corporation | Apparatuses and methods to spawn multiple virtual serial bus hub instances on a same physical serial bus hub |
US11263165B2 (en) | 2016-12-31 | 2022-03-01 | Intel Corporation | Apparatuses for periodic universal serial bus (USB) transaction scheduling at fractional bus intervals |
US10474606B2 (en) * | 2017-02-17 | 2019-11-12 | Hewlett Packard Enterprise Development Lp | Management controller including virtual USB host controller |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6742076B2 (en) * | 2000-01-03 | 2004-05-25 | Transdimension, Inc. | USB host controller for systems employing batched data transfer |
JP2001244599A (ja) * | 2000-02-28 | 2001-09-07 | Ando Electric Co Ltd | Icの実装構造及びbga形ic用位置固定シート |
US6708239B1 (en) * | 2000-12-08 | 2004-03-16 | The Boeing Company | Network device interface for digitally interfacing data channels to a controller via a network |
US7272831B2 (en) * | 2001-03-30 | 2007-09-18 | Intel Corporation | Method and apparatus for constructing host processor soft devices independent of the host processor operating system |
GB0129174D0 (en) * | 2001-12-06 | 2002-01-23 | Koninl Philips Electronics Nv | Havi-upnp bridging |
US7111086B1 (en) * | 2002-02-22 | 2006-09-19 | Vmware, Inc. | High-speed packet transfer in computer systems with multiple interfaces |
US6732242B2 (en) * | 2002-03-28 | 2004-05-04 | Intel Corporation | External bus transaction scheduling system |
US6725289B1 (en) * | 2002-04-17 | 2004-04-20 | Vmware, Inc. | Transparent address remapping for high-speed I/O |
US7069557B2 (en) * | 2002-05-23 | 2006-06-27 | International Business Machines Corporation | Network processor which defines virtual paths without using logical path descriptors |
JP2007510198A (ja) | 2003-10-08 | 2007-04-19 | ユニシス コーポレーション | ホストシステムのパーティション内に実装されているハイパーバイザを使用したコンピュータシステムの準仮想化 |
US20070067366A1 (en) * | 2003-10-08 | 2007-03-22 | Landis John A | Scalable partition memory mapping system |
US8127098B1 (en) * | 2004-05-11 | 2012-02-28 | Globalfoundries Inc. | Virtualization of real mode execution |
US7346792B2 (en) * | 2004-08-12 | 2008-03-18 | International Business Machines Corporation | Method and system for managing peripheral connection wakeup in a processing system supporting multiple virtual machines |
US7555596B2 (en) * | 2004-12-10 | 2009-06-30 | Microsoft Corporation | Systems and methods for attaching a virtual machine virtual hard disk to a host machine |
US7325163B2 (en) * | 2005-01-04 | 2008-01-29 | International Business Machines Corporation | Error monitoring of partitions in a computer system using supervisor partitions |
US7797707B2 (en) * | 2005-03-02 | 2010-09-14 | Hewlett-Packard Development Company, L.P. | System and method for attributing to a corresponding virtual machine CPU usage of a domain in which a shared resource's device driver resides |
US8065441B2 (en) | 2005-08-19 | 2011-11-22 | Intel Corporation | Method and apparatus for supporting universal serial bus devices in a virtualized environment |
-
2005
- 2005-08-19 US US11/207,288 patent/US8065441B2/en not_active Expired - Fee Related
-
2006
- 2006-08-03 EP EP06789376A patent/EP1915681A1/en not_active Withdrawn
- 2006-08-03 WO PCT/US2006/030398 patent/WO2007024444A1/en active Application Filing
- 2006-08-03 CN CN200680030070.5A patent/CN101243396B/zh not_active Expired - Fee Related
-
2011
- 2011-10-06 US US13/317,009 patent/US8671225B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2007024444A1 (en) | 2007-03-01 |
US20120030677A1 (en) | 2012-02-02 |
US8065441B2 (en) | 2011-11-22 |
US8671225B2 (en) | 2014-03-11 |
US20070040834A1 (en) | 2007-02-22 |
EP1915681A1 (en) | 2008-04-30 |
CN101243396A (zh) | 2008-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101243396B (zh) | 用于在虚拟化环境中支持通用串行总线装置的方法和设备 | |
CN101268445B (zh) | 用于向多核环境中的应用程序提供实时线程服务的方法、装置 | |
CN101233489B (zh) | 自适应进程分派的方法和系统 | |
US4920481A (en) | Emulation with display update trapping | |
CN101290593B (zh) | 追踪转移逻辑分区的存储器状态的系统和方法 | |
JP6893284B2 (ja) | リソーススケジューリング方法、スケジューリングサーバ、クラウドコンピューティングシステム、及び記憶媒体 | |
CN1831775B (zh) | 虚拟机环境中用于多级截取处理的系统和方法 | |
CN100392598C (zh) | 操作系统 | |
CN102612685B (zh) | 经由存储器高速缓存操纵的无阻碍数据传送 | |
CN110609730B (zh) | 一种实现虚拟处理器间中断透传的方法及设备 | |
US5062042A (en) | System for managing data which is accessible by file address or disk address via a disk track map | |
CN111901294A (zh) | 一种构建在线机器学习项目的方法及机器学习系统 | |
CN103197949B (zh) | 用于利用具有至少两个虚拟机的硬件平台的资源的方法和装置 | |
JP2002511161A (ja) | ビジュアル・ディスプレイ・オブジェクト・ファイル用エミュレータおよびその動作方法 | |
CN102207886A (zh) | 虚拟机快速仿真辅助 | |
CN101154202A (zh) | 管理多处理器计算机系统中的系统管理中断的系统和方法 | |
CN108958903A (zh) | 嵌入式多核中央处理器任务调度方法与装置 | |
US5712974A (en) | Method and apparatus for controlling the configuration definitions in a data processing system with a plurality of processors | |
CN1312583C (zh) | 仿真装置和仿真方法 | |
Shi et al. | Memory/disk operation aware lightweight VM live migration | |
US20200026875A1 (en) | Protected health information in distributed computing systems | |
CN103645865B (zh) | 一种命令超时的处理方法 | |
CN102457547A (zh) | 多控制器的储存区域网络设备的升级方法 | |
Ugah et al. | Relationship between Operating System, Computer Hardware, Application Software and Other Software | |
CN108958904A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130313 Termination date: 20180803 |
|
CF01 | Termination of patent right due to non-payment of annual fee |