欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于在虛擬化環(huán)境中支持通用串行總線裝置的方法和設(shè)備的制作方法

文檔序號(hào):6568619閱讀:348來源:國知局
專利名稱:用于在虛擬化環(huán)境中支持通用串行總線裝置的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明的實(shí)施例涉及虛擬化。更確切地來說,本發(fā)明的某些實(shí)施例涉及用于在虛擬化環(huán)境中支持通用串行總線(USB)裝置的方法和 設(shè)備。
背景技術(shù)
虛擬化是這樣一種技術(shù)將計(jì)算機(jī)系統(tǒng)分成多個(gè)隔離的虛擬機(jī) (VM),對(duì)于每個(gè)隔離的虛擬機(jī)(VM)中的軟件來說,該隔離的虛擬機(jī)(VM)看上去像是一個(gè)完整的計(jì)算機(jī)系統(tǒng)。常規(guī)虛擬機(jī)管理器 (VMM)可以運(yùn)行在計(jì)算機(jī)上以便向其他軟件呈示一個(gè)或多個(gè)VM或訪客的抽象。每個(gè)VM起自包含平臺(tái)的作用,該平臺(tái)運(yùn)行它自己的軟件堆棧,包括操作系統(tǒng)(OS)和應(yīng)用程序。這種軟件堆棧統(tǒng)稱為"訪客軟件"。VM上運(yùn)行的訪客軟件期望如同在專用計(jì)算機(jī)上運(yùn)行那樣操作。 例如,訪客軟件期望控制多種計(jì)算機(jī)操作并在這些操作期間具有對(duì)物 理(即硬件)資源的訪問4又。VMM控制將哪些物理裝置分配到各VM, 并且還實(shí)現(xiàn)對(duì)于VM可見的虛擬裝置。如果完全將物理裝置分配到單 個(gè)VM,則該物理裝置對(duì)于計(jì)算機(jī)系統(tǒng)中的其他VM是不可用的。如 果多于一個(gè)VM共享物理裝置,則VMM通常為每個(gè)VM實(shí)現(xiàn)虛擬裝 置并且裁定這些虛擬裝置對(duì)物理裝置的訪問。USB 2.0 (通用串行總線修訂版2.0規(guī)范,2002年發(fā)布)是一種 支持最高480 Mbps的數(shù)據(jù)速率的外部總線。USB2.0是USB 1.1 (通 用串行總線修訂版1.1規(guī)范,1996年發(fā)布)的擴(kuò)充,并與USB 1.1完 全兼容。目前的虛擬化軟件解決方案提供對(duì)USB 2.0的有限支持。明實(shí)施例的特征和優(yōu)點(diǎn),并無意將本發(fā)明 實(shí)施例的范圍限制于所示的特定實(shí)施例。

圖1說明根據(jù)本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)的實(shí)施例。圖2是說明根據(jù)第一實(shí)施例、其中駐留本發(fā)明的實(shí)施例的虛擬化 環(huán)境的框圖。圖3是說明根據(jù)第二實(shí)施例、其中駐留本發(fā)明的實(shí)施例的虛擬化 環(huán)境的框圖。圖4是說明根據(jù)本發(fā)明實(shí)施例的USB模塊的框圖。 圖5a說明從VM的異步調(diào)度的示例。圖5b說明根據(jù)本發(fā)明實(shí)施例、可以如何鏈接異步調(diào)度的示例。 圖5c說明根據(jù)本發(fā)明實(shí)施例、可以如何復(fù)制和合并異步調(diào)度的示例。圖6a說明從VM的同步調(diào)度的示例。圖6b說明根據(jù)本發(fā)明實(shí)施例、可以如何鏈接同步調(diào)度的示例。 圖6c說明根據(jù)本發(fā)明實(shí)施例、可以如何復(fù)制和合并同步調(diào)度的 示例。圖7是說明根據(jù)本發(fā)明實(shí)施例、用于為主機(jī)控制器生成異步調(diào)度 的方法的流程圖。圖8是說明根據(jù)本發(fā)明實(shí)施例、用于為主機(jī)控制器生成同步調(diào)度 的方法的流程圖。
具體實(shí)施方式
在下文描述中,為了解釋的目的,闡述了許多特定細(xì)節(jié),以便提 供對(duì)本發(fā)明實(shí)施例的透徹理解。對(duì)于本領(lǐng)域人員來說,顯然在沒有這 些特定細(xì)節(jié)的情況下仍可以實(shí)施本發(fā)明的實(shí)施例。在其他情況中,以 框圖形式示出公知的電路、裝置和程序,以避免不必要地妨礙了對(duì)本 發(fā)明實(shí)施例的理解。圖1是根據(jù)本發(fā)明實(shí)施例的示范計(jì)算機(jī)系統(tǒng)100的框圖。計(jì)算機(jī)系統(tǒng)100包括處理數(shù)據(jù)信號(hào)的處理器101。處理器101可以是復(fù)雜指令集計(jì)算機(jī)微處理器、精簡指令集計(jì)算微處理器、非常長指令字微處 理器、實(shí)現(xiàn)指令集的組合的處理器或其他處理器裝置。圖l示出具有單個(gè)處理器的計(jì)算機(jī)系統(tǒng)100。但是,要理解計(jì)算機(jī)系統(tǒng)100可以利用多個(gè)處理器來操作。此外, 一個(gè)或多個(gè)處理器的每個(gè)處理器可以支持一個(gè)或多個(gè)硬件線程。處理器101耦合到CPU總線110, CPU總線 110在處理器101與計(jì)算機(jī)系統(tǒng)100中的其他組件之間傳送數(shù)據(jù)信號(hào)。 計(jì)算機(jī)系統(tǒng)100包括存儲(chǔ)器113。存儲(chǔ)器113可以是動(dòng)態(tài)隨機(jī)存 取存儲(chǔ)器裝置、靜態(tài)隨機(jī)存取存儲(chǔ)器裝置、只讀存儲(chǔ)器和/或其他存儲(chǔ) 器裝置。存儲(chǔ)器113可以存儲(chǔ)可以由處理器101執(zhí)行的數(shù)據(jù)信號(hào)所表 示的指令和代碼。高速緩沖存儲(chǔ)器102可以駐留在處理器101中,高 速緩沖存儲(chǔ)器102存儲(chǔ)在存儲(chǔ)器113中存儲(chǔ)的數(shù)據(jù)信號(hào)。高速緩存102 通過利用其訪問的本地性來加速處理器101對(duì)存儲(chǔ)器的訪問。在計(jì)算 機(jī)系統(tǒng)100的備選實(shí)施例中,高速緩存駐留在處理器101外部。橋儲(chǔ) 存器控制器111耦合到CPU總線110和存儲(chǔ)器113。橋存儲(chǔ)器控制器 111在處理器101、存儲(chǔ)器113和計(jì)算機(jī)系統(tǒng)100中的其他組件之間引 導(dǎo)數(shù)據(jù)信號(hào),并在CPU總線llO、存儲(chǔ)器113和IO總線120之間橋 接數(shù)據(jù)信號(hào)。10總線120可以是單個(gè)總線或多個(gè)總線的組合。10總線120在 計(jì)算機(jī)系統(tǒng)100中的組件之間提供通信鏈路。網(wǎng)絡(luò)控制器121耦合到 10總線120。網(wǎng)落控制器121可以將計(jì)算機(jī)系統(tǒng)100鏈接到計(jì)算機(jī)網(wǎng) 絡(luò)(未示出)并支持機(jī)器之間的通信。顯示裝置控制器122耦合到10 總線120。顯示裝置4空制器122能夠?qū)@示裝置(未,示出)耦合到計(jì) 算機(jī)系統(tǒng)IOO,并作為顯示裝置與計(jì)算機(jī)系統(tǒng)IOO之間的接口。或者, 顯示裝置控制器122可以直接連接到橋111。10總線130可以是單個(gè)總線或多個(gè)總線的組合。10總線130提 供計(jì)算機(jī)系統(tǒng)100中的組件之間的通信鏈路。數(shù)據(jù)存儲(chǔ)裝置131耦合 到10總線130。數(shù)據(jù)存儲(chǔ)裝置131可以是硬盤驅(qū)動(dòng)器、軟磁盤驅(qū)動(dòng)器、CD-ROM裝置、閃速存儲(chǔ)器裝置或其他海量存儲(chǔ)裝置。輸入接口 132 耦合到10總線130。輸入接口 132可以是例如,鍵盤和/或鼠標(biāo)控制 器或其他輸入接口。輸入接口 132可以是專用裝置或可以駐留在例如 總線控制器或其他控制器的另一個(gè)裝置中。輸入接口 132能夠?qū)⑤斎?裝置耦合到計(jì)算機(jī)系統(tǒng)100,并將數(shù)據(jù)信號(hào)從輸入裝置傳送到計(jì)算機(jī) 系統(tǒng)100。攝像機(jī)133耦合到10總線130。攝像機(jī)133執(zhí)行操作以捕 獲可以顯示在顯示裝置或存儲(chǔ)在存儲(chǔ)器113中的圖像??偩€橋123將10總線120耦合到10總線130。總線橋123執(zhí)行 操作來緩存并橋接10總線120與10總線130之間的數(shù)據(jù)信號(hào)??偩€ 橋123包括總線控制器124。根據(jù)計(jì)算機(jī)系統(tǒng)100的實(shí)施例,10總線 130是USB 2.0總線,以及總線控制器124是主機(jī)控制器(USB主機(jī) 控制器)。主機(jī)控制器124通過執(zhí)行對(duì)所提供的任務(wù)的調(diào)度來控制10 總線130。主機(jī)控制器124還在10 ,落線130上發(fā)送分組、查詢狀態(tài)以 及提供至軟件的寄存器接口 。根據(jù)本發(fā)明的實(shí)施例,處理器101執(zhí)行存儲(chǔ)在包含虛擬化軟件的 存儲(chǔ)器113中的指令。虛擬化軟件支持計(jì)算機(jī)系統(tǒng)100上的虛擬化以 及在虛擬化環(huán)境中對(duì)例如USB 2.0裝置的輸入輸出裝置的使用。在一 個(gè)實(shí)施例中,在USB請(qǐng)求緩沖器級(jí)執(zhí)行虛擬化,在此USB請(qǐng)求緩沖 器級(jí)中,VM中的操作系統(tǒng)(訪客操作系統(tǒng))運(yùn)行虛擬根集線器驅(qū)動(dòng) 程序而不是USB系統(tǒng)軟件。虛擬根集線器驅(qū)動(dòng)程序與運(yùn)行USB系統(tǒng) 軟件的專用服務(wù)VM通信。在備選實(shí)施例中,在寄存器級(jí)執(zhí)行虛擬化, 在此寄存器級(jí)中,訪客操作系統(tǒng)運(yùn)行舊式USB系統(tǒng)軟件。USB模塊 駐留在執(zhí)行捕獲和中斷處理的VMM中。虛擬化軟件可以在虛擬化環(huán) 境中支持兩個(gè)或兩個(gè)以上USB2.0裝置并且可以支持同步數(shù)據(jù)傳輸。圖2是說明根據(jù)本發(fā)明的第一實(shí)施例的虛擬化環(huán)境200的框圖。 虛擬化環(huán)境200包括VMM210。 VMM210實(shí)現(xiàn)物理機(jī)器的接口。物 理機(jī)器可以包括計(jì)算機(jī)系統(tǒng)的組件,例如一個(gè)或多個(gè)處理器、存儲(chǔ)器、 總線、主機(jī)控制器和多種10裝置。根據(jù)本發(fā)明實(shí)施例,物理機(jī)器可以由圖1所示的計(jì)算機(jī)系統(tǒng)100來實(shí)現(xiàn)或由具有與圖l所示的那些組 件相似的組件的計(jì)算機(jī)系'統(tǒng)來實(shí)現(xiàn)。VMM 210使一個(gè)或多個(gè)VM 220 易于運(yùn)行。根據(jù)本發(fā)明的實(shí)施例,VMM 210可以是存儲(chǔ)在計(jì)算機(jī)系 統(tǒng)的存儲(chǔ)器中的指令序列。VMM210在VM 220之間管理并調(diào)解物理 機(jī)器中的計(jì)算機(jī)系統(tǒng)資源,并能夠?qū)崿F(xiàn)VM 220之間的隔離或數(shù)據(jù)共 享。VMM 210通過將物理機(jī)器中的資源虛擬化并導(dǎo)出可以反映物理 機(jī)器的底層體系結(jié)構(gòu)、物理機(jī)器的變體或完全不同的物理機(jī)器的虛擬 硬件接口 (即VM)來實(shí)現(xiàn)這種隔離或共享。虛擬化環(huán)境200包括一個(gè)或多個(gè)VM 221-223 (統(tǒng)一地示出為 220)。根據(jù)本發(fā)明實(shí)施例,可以將VM描述為機(jī)器的隔離的模型,包 括但不限于物理機(jī)器的副本、物理機(jī)器的子集或完全不同的機(jī)器的才莫 型。VM可以包括物理機(jī)器中的計(jì)算機(jī)系統(tǒng)的資源、物理機(jī)器中的計(jì) 算機(jī)系統(tǒng)的資源的子集或物理機(jī)器中完全見不到的虛擬資源。根據(jù)本發(fā)明實(shí)施例,VMM 210具有物理才幾器的控制權(quán)并創(chuàng)建VM 220,每個(gè)VM 220如同能夠運(yùn)行自己的操作系統(tǒng)(OS)的物理機(jī)器 一樣動(dòng)作。VM 221-223分別可以運(yùn)行操作系統(tǒng)(訪客操作系統(tǒng)) 231-233,其中操作系統(tǒng)231-233可以彼此不同。為了將性能最大化, VMM 210在可能時(shí)使VM能夠直接在物理機(jī)器中的計(jì)算機(jī)系統(tǒng)的資 源上執(zhí)行。但是,只要VM嘗試執(zhí)行可能影響其他VM的操作、VMM 210的操作或物理機(jī)器中的資源的操作的操作時(shí),VMM 210就會(huì)接管 控制權(quán)。VMM 210可以才莫擬該操作,并可以在該操作完成時(shí)將控制 權(quán)返回給VM。 一個(gè)或多個(gè)應(yīng)用程序(訪客應(yīng)用程序)可以運(yùn)行在VM 221-223的每一個(gè)VM上。VM 221和222分別包括客戶端驅(qū)動(dòng)程序241和242??蛻舳蓑?qū) 動(dòng)程序241和242支持耦合到輸入輸出總線的輸入輸出裝置。根據(jù)本 發(fā)明實(shí)施例,客盧端驅(qū)動(dòng)程序241和242支持USB 2.0裝置。VM 221 和222還包括虛擬根集線器(Vhub)驅(qū)動(dòng)程序251和252??蛻舳蓑?qū) 動(dòng)程序241和242將10請(qǐng)求提交到它們各自的VHub驅(qū)動(dòng)程序251和252。 VHub驅(qū)動(dòng)程序251和252將10請(qǐng)求傳送到控制物理機(jī)器的 主機(jī)控制器的實(shí)體。虛擬化環(huán)境200包括作為專用服務(wù)VM操作的VM 223。根據(jù)虛 擬化環(huán)境200的實(shí)施例,服務(wù)VM 223控制物理機(jī)器的主機(jī)控制器, 并執(zhí)行操作以將對(duì)例如USB 2.0的10總線的支持虛擬化。服務(wù)VM 223包括USB服務(wù)器243。 USB服務(wù)器243與VHub驅(qū)動(dòng)程序251和 252接口 ,并從VHub驅(qū)動(dòng)程序251和252接收10請(qǐng)求。根據(jù)本發(fā)明 實(shí)施例,VHub驅(qū)動(dòng)程序251和252和USB服務(wù)器243包括用于存儲(chǔ) 要處理的未決10請(qǐng)求的多個(gè)隊(duì)列??梢允褂孟魉蜋C(jī)制和技術(shù)(例 如消息傳遞、客戶端服務(wù)器(套接字)、共享存儲(chǔ)器緩沖器(VM間通 信)、遠(yuǎn)程過程呼叫或其他過程)來實(shí)現(xiàn)VHub驅(qū)動(dòng)程序251和252 和USB服務(wù)器243之間的傳輸。服務(wù)VM 223包括集線器驅(qū)動(dòng)程序253。集線器驅(qū)動(dòng)程序253檢 測(cè)USB 2.0裝置與USB 2.0總線連接或從USB 2.0總線移除。當(dāng)裝置 連接事件時(shí),集線器驅(qū)動(dòng)程序253可以查詢裝置以確定它的類型和特 征。基于策略,集線器驅(qū)動(dòng)程序253可以選擇該裝置應(yīng)該連接到哪個(gè) VM。服務(wù)VM 223向與所選的對(duì)應(yīng)的VHub驅(qū)動(dòng)程序發(fā)送消息。 VHub驅(qū)動(dòng)程序可以觸發(fā)導(dǎo)致適合的客戶端驅(qū)動(dòng)程序的加載的即插即 用事件。服務(wù)VM 223包括USB驅(qū)動(dòng)程序263。 USB驅(qū)動(dòng)程序263管理 USB 2.0總線。USB驅(qū)動(dòng)程序263作出對(duì)USB 2.0總線的策略決策, 并為USB 2.0總線上的裝置分配帶寬。服務(wù)VM 223包括主機(jī)控制器(HC)驅(qū)動(dòng)程序273。 HC驅(qū)動(dòng)程 序273與主機(jī)控制器接口,并建立主機(jī)控制器執(zhí)行的調(diào)度。該調(diào)度可 以包括一個(gè)或多個(gè)傳輸描述符(TD )。 TD是可以包i存儲(chǔ)器中要開始 傳輸?shù)牡刂?、要傳輸?shù)拇鎯?chǔ)器的大小和目的地USB裝置和端點(diǎn)地址的 IO請(qǐng)求。該調(diào)度還可以包括指向TD鏈的一個(gè)或多個(gè)隊(duì)列頭(QH)。 根據(jù)本發(fā)明實(shí)施例,主機(jī)控制器驅(qū)動(dòng)程序273生成包括同步(周期)數(shù)據(jù)和異步(塊)數(shù)據(jù)的主機(jī)控制器的調(diào)度??梢詫惒綌?shù)據(jù)調(diào)度為 僅在已經(jīng)對(duì)幀執(zhí)行同步數(shù)據(jù)之后才執(zhí)行。根據(jù)本發(fā)明實(shí)施例,幀可以 是其間可以傳輸零個(gè)或多個(gè)數(shù)據(jù)分組的時(shí)間的單元。在10請(qǐng)求完成時(shí),USB服務(wù)器243向適合的VHub驅(qū)動(dòng)程序返 回狀態(tài)值。VHub驅(qū)動(dòng)程序則完成來自其對(duì)應(yīng)的客戶端驅(qū)動(dòng)程序的10 請(qǐng)求。來自主機(jī)控制器的中斷由服務(wù)VM 223處理。服務(wù)VM 223還 處理裝置連接事件。通過實(shí)現(xiàn)例如集線器驅(qū)動(dòng)程序253、 USB驅(qū)動(dòng)程 序263和專用服務(wù)VM223上的HC驅(qū)動(dòng)程序273的USB系統(tǒng)軟件, 只需在虛擬化環(huán)境200中運(yùn)行USB系統(tǒng)軟件的一個(gè)副本。這樣能夠由 服務(wù)VM223集中管理例如裝置標(biāo)識(shí)符、總線功率和同步帶寬的USB 2.0參數(shù)。 '圖3是說明根據(jù)本發(fā)明的第二實(shí)施例的虛擬化環(huán)境300的框圖。 虛擬化環(huán)境300包括VMM310。根據(jù)本發(fā)明實(shí)施例,VMM310可以 包括與關(guān)于圖2中的VMM 210描述的那些特性相似的特性并執(zhí)行與 關(guān)于圖2中的VMM210描述的那些過程相似的一些過程。VMM 310 實(shí)現(xiàn)物理機(jī)器的接口。物理機(jī)器可以是與關(guān)于圖2中描述的物理機(jī)器 相似的物理機(jī)器。VMM310包括多個(gè)虛擬總線控制器。根據(jù)采用USB 的本發(fā)明的實(shí)施例,可以利用虛擬主機(jī)控制器(V主機(jī)控制器)381 和382來實(shí)現(xiàn)虛擬總線控制器。特虛擬主機(jī)控制器381和382呈示給 虛擬化環(huán)境300中的VM。虛擬化壞境300中的VM如同虛擬主機(jī)控 制器381和382是物瑪機(jī)器中的實(shí)際主機(jī)控制器那樣與虛擬主機(jī)控制 器381和382通信。VMM310包括總線模塊。根據(jù)本發(fā)明實(shí)施例,可以利用USB模 塊390來實(shí)現(xiàn)該總線模塊。USB模塊390可以是指令的序列和關(guān)聯(lián)的 存儲(chǔ)器。USB模塊390控制物理機(jī)器中的主機(jī)控制器,并維護(hù)由主機(jī)' 控制器執(zhí)行的稱為活動(dòng)調(diào)度的調(diào)度。根據(jù)虛擬化環(huán)境的實(shí)施例,USB 模塊390捕獲由VM進(jìn)行的對(duì)虛擬主機(jī)控制器381和382的訪問。USB 模塊390可以實(shí)現(xiàn)寄存器的語義、.更新虛擬主機(jī)控制器381和382的狀態(tài)并返回虛擬主機(jī)控制器381和382的狀態(tài)。USB才莫塊390還可以 捕獲對(duì)包括調(diào)度的頁的訪問。例如可以作為頁故障來實(shí)現(xiàn)這些捕獲。 這些頁可以包括周期幀列表QH和/或TD。當(dāng)VM更新QH或TD時(shí), USB才莫塊390更新活動(dòng)調(diào)度??梢詫碜訳SB才莫塊390中的活動(dòng)調(diào) 度的狀態(tài)信息復(fù)制回VM中的調(diào)度。USB模塊390還可以按虛擬主機(jī) 控制器的狀態(tài)所要求的在VM中生成中斷。虛擬化環(huán)境300包括一個(gè)或多個(gè)VM 321-322 (統(tǒng)一地示出為 320)。根據(jù)本發(fā)明實(shí)施例,VMM 310具有物理機(jī)器的控制權(quán)并創(chuàng)建 VM 320,每個(gè)VM 220如同能夠運(yùn)行自己的操作系統(tǒng)(OS)的物理 機(jī)器一樣動(dòng)作。VM321-322分別可以運(yùn)行操作系統(tǒng)(訪客操作系統(tǒng)) 331-332,其中操作系統(tǒng)331-332可以彼此不同。 一個(gè)或多個(gè)應(yīng)用程序 (訪客應(yīng)用程序)可以運(yùn)行在VM 321-322的每一個(gè)VM上。VM 321和322分別包括客戶端驅(qū)動(dòng)程序341和342??蛻舳蓑?qū) 動(dòng)程序341和342支持耦合到輸入輸出總線的輸入輸出裝置。根據(jù)本 發(fā)明實(shí)施例,客戶端驅(qū)動(dòng)程序341和342支持USB2.0裝置??蛻舳?驅(qū)動(dòng)程序341和342生成訪問USB 2.0裝置的10請(qǐng)求。VM 321和322分別包括集線器驅(qū)動(dòng)程序351和352。集線器驅(qū) 動(dòng)程序351和352檢測(cè)USB 2.0裝置與USB 2.0總線連接或從USB 2.0 總線移除。當(dāng)裝置連接事件時(shí),集線器驅(qū)動(dòng)程序351和352可以查詢 裝置以確定它的類型和特性。VM 321和322分別包括USB驅(qū)動(dòng)程序361和362。 USB驅(qū)動(dòng)程 序361和362管理USB 2.0總線:USB驅(qū)動(dòng)程序361和362作出對(duì) USB 2.0總線的策略決策,并為US'B 2.0總線上的裝置分配帶寬。VM 321和322分別包括主機(jī)控制器(HC )驅(qū)動(dòng)程序371和372。 HC驅(qū)動(dòng)程序321和322分別與虛擬主機(jī)控制器381和382接口 。每 個(gè)主機(jī)控制器驅(qū)動(dòng)程序?yàn)樗奶摂M主機(jī)控制器建立要執(zhí)行的調(diào)度。該 調(diào)度可以包括描述與主機(jī)控制器關(guān)聯(lián)的總線的每個(gè)幀上的活動(dòng)TD和/ 或QH。根據(jù)本發(fā)明實(shí)施例,主機(jī)控制器驅(qū)動(dòng)程序371和372生成包括同步數(shù)據(jù)和異步數(shù)據(jù)的主機(jī)控制器的調(diào)度。應(yīng)該認(rèn)識(shí)到,并不使USB模塊390捕獲生成或修改同步數(shù)據(jù)傳 輸?shù)腡D的每個(gè)VM訪問,主機(jī)控制器驅(qū)動(dòng)程序271和272而是可以 在由它的對(duì)應(yīng)VM生成或修改了 一個(gè)或多個(gè)TD之后通知USB才莫塊 390。這樣使USB才莫塊390能夠處理同步調(diào)度,無需捕獲生成或修改 TD的每個(gè)VM訪問,這減少了開銷并更有效率。根據(jù)本發(fā)明實(shí)施例, 可以在端點(diǎn)被打開或關(guān)閉時(shí)或在建立同步傳輸時(shí)向USB模塊390提供 通知。該通知可以包括有關(guān)新端點(diǎn)的信息(例如裝置和端點(diǎn)編號(hào))或 有關(guān)新傳輸?shù)男畔?例如,裝置、端點(diǎn)編號(hào)和起始幀和結(jié)束幀)。通過在VMM中實(shí)現(xiàn)虛擬主機(jī)控制器和USB模塊,例如客戶端 驅(qū)動(dòng)程序、集線器驅(qū)動(dòng)程序、USB驅(qū)動(dòng)程序和主機(jī)控制器驅(qū)動(dòng)程序的 舊式USB系統(tǒng)軟件可以在虛擬化環(huán)境中的VM上運(yùn)行。主機(jī)控制器 寄存器虛擬化的一個(gè)優(yōu)點(diǎn)在于VMM可以維護(hù)二進(jìn)制舊式兼容性并 運(yùn)行舊式訪客二進(jìn)制。圖4是說明根據(jù)本發(fā)明實(shí)施例的USB模塊400的框圖。USB模 塊400可以用于實(shí)現(xiàn)圖3所示的USB模塊390。USB模塊400包括捕 獲處理程序410。捕獲處理程序410管理VM進(jìn)行的寄存器訪問。捕 獲處理程序410包括調(diào)度捕獲單元411。當(dāng)虛擬主機(jī)控制器驅(qū)動(dòng)程序 建立虛擬主機(jī)控制器的調(diào)度時(shí),調(diào)度捕獲單元411捕獲VM所進(jìn)行的 QH或TD寫和讀。根據(jù)本發(fā)明實(shí)施例,調(diào)度捕獲單元411可以通過 在VM中適當(dāng)位置上修改QH和TD以生成物理機(jī)器中的主機(jī)控制器 的調(diào)度來將虛擬主機(jī)控制器驅(qū)動(dòng)程序生成的調(diào)度鏈接在一起?;蛘撸?調(diào)度捕獲單元411可以將這些調(diào)度復(fù)制到USB模塊400中,并修改(合 并)這些調(diào)度的副本來生成物理機(jī)器中的主機(jī)控制器的調(diào)度。當(dāng)VM 更新它的調(diào)度時(shí),調(diào)度捕獲單元"l可以執(zhí)行這種鏈接或復(fù)制。當(dāng)執(zhí) 行鏈接并且VM嘗試讀回調(diào)度時(shí),調(diào)度捕獲單元411返回該VM建立 的期望的值。在本實(shí)施例中,調(diào)度捕獲單元411可以管理和存儲(chǔ)VM 的期望的值。當(dāng)執(zhí)行復(fù)制并合并時(shí),調(diào)度捕獲單元411可以存儲(chǔ)調(diào)度的復(fù)制和合并的副本。調(diào)度捕獲單元411還執(zhí)行地址轉(zhuǎn)換和USB裝置 地址轉(zhuǎn)換以支持物理機(jī)器中主機(jī)控制器的活動(dòng)調(diào)度的生成。捕獲處理程序410包括寄存器讀捕獲單元412。寄存器讀捕獲單 元412捕獲VM進(jìn)行的狀態(tài)寄存器讀。可以讀狀態(tài)寄存器來識(shí)別USB 2.0總線的多種狀態(tài)。狀態(tài)寄存器指示的狀態(tài)可以包括例如總線的健 康、錯(cuò)誤的存在、端口上10裝置的存在以及事務(wù)是否已經(jīng)完成。寄來執(zhí)行狀態(tài)虛擬化。捕獲處理程序410包括寄存器寫捕獲單元413。寄存器寫捕獲讀 單元413捕獲VM進(jìn)行的寄存器寫。可以由VM寫寄存器來完成要由 主機(jī)控制器執(zhí)行的動(dòng)作。寄存器寫A獲單元413管理寄存器寫以使物 理機(jī)器上的單個(gè)主機(jī)控制器能夠^皮多個(gè)VM共享。根據(jù)本發(fā)明實(shí)施例, 記錄同步和異步列表地址,但是不將其寫入到寄存器中。USB模塊400包括中斷處理程序420。中斷處理程序420管理由 物理機(jī)器上的主機(jī)控制器對(duì)處理器進(jìn)行的中斷。中斷處理程序420包 括USB中斷單元421。對(duì)于主機(jī)控制器生成用于指示對(duì)調(diào)度的工作已 完成的中斷,USB中斷單元421識(shí)別哪個(gè)VM提交了工作并生成對(duì)所 識(shí)別的VM的中斷。中斷處理程序420包括狀態(tài)中斷單元422。對(duì)于主機(jī)控制器生成 用于指示裝置已連接到物理機(jī)器的中斷,狀態(tài)中斷單元422確定要將 裝置指定到哪個(gè)VM。根據(jù)中斷處理程序420的實(shí)施例,狀態(tài)中斷單 元422基于端口號(hào)、'裝置類型、裝置序列號(hào)或其他標(biāo)準(zhǔn)作出此確定。 狀態(tài)中斷單元422生成對(duì)VM的中斷。中斷處理程序420包括錯(cuò)誤中斷單元423。根據(jù)'中斷處理程序420 的實(shí)施例,對(duì)于主機(jī)控制器生成用于指示發(fā)生了錯(cuò)誤的中斷,錯(cuò)誤中 斷單元423確定該錯(cuò)誤是全局錯(cuò)誤還是局^錯(cuò)誤。如果中斷是響應(yīng)全 局錯(cuò)誤生成的,則停止主機(jī)控制器。如果中斷是響應(yīng)TD導(dǎo)致的局部 錯(cuò)誤生成的,則錯(cuò)誤中斷單元423可以提示主機(jī)控制器重試該TD或引退該TD。應(yīng)該認(rèn)識(shí)到,USB模塊400可以包括其他組件,例如執(zhí)行存儲(chǔ)器 分配和取消分配的組件和啟動(dòng)異步和同步調(diào)度的組件。圖5a說明VM中的主機(jī)控制器驅(qū)動(dòng)程序生成的示范異步調(diào)度的 圖形表示。調(diào)度510表示來自第一 VM的第一異步調(diào)度。調(diào)度510包 括多個(gè)QH 512-513。每個(gè)隊(duì)列頭512-513具有TD鏈514-515, TD鏈 514-515可以包括從其暫掛的一個(gè)或多個(gè)TD。調(diào)度510包括表示調(diào)度 開始的偽QH ( H) 511。調(diào)度520表示來自第二 VM的第二異步調(diào)度。 調(diào)度520包括多個(gè)QH 522-524。每個(gè)QH 522-524具有分別從其懸掛 的TD鏈525-527。調(diào)度520包括表示調(diào)度開始的偽QH (H) 521。圖5b說明根據(jù)本發(fā)明實(shí)施例如何鏈接異步調(diào)度的示例。根據(jù)本 發(fā)明實(shí)施例,通過將每個(gè)VM中的最后一個(gè)QH指向下一個(gè)VM的第 一個(gè)QH并將最后一個(gè)VM的最后;一個(gè)QH指向第一個(gè)VM的偽QH 來實(shí)現(xiàn)鏈接異步調(diào)度。調(diào)度530表示鏈接的異步調(diào)度。如圖所示,將 第一個(gè)VM中的最后一個(gè)QH 513指向笫二個(gè)VM的第一個(gè)QH 522。 將第二個(gè)VM中的最后一個(gè)QH 524指向第一個(gè)VM的偽QH 511 。異 步列表地址寄存器(異步列表地址)可以是包括要執(zhí)行的下一個(gè)異步 隊(duì)列頭的地址的寄存器??梢杂蓤D4所示的調(diào)度捕獲單元411來執(zhí)行 圖示的鏈接。在本實(shí)施例中,通過修改與VM中存儲(chǔ)的QH關(guān)聯(lián)的指 針來鏈接調(diào)度。應(yīng)該認(rèn)識(shí)到,雖然僅示出兩個(gè)VM,但是可以將該示 例推廣到n個(gè)VM,其中n可以是任何數(shù)量。圖5c說明根據(jù)本發(fā)明實(shí)施例可以如何復(fù)制和合并異步調(diào)度的示 例。根據(jù)本發(fā)明實(shí)施例,異步調(diào)度的復(fù)制和合并也包括將每個(gè)VM中 的最后一個(gè)QH指向下一個(gè)VM的第 一個(gè)QH并將最后一個(gè)VM的最 后一個(gè)QH指向第一個(gè)VM的偽QH。但是,不是在VM中在適合的 位置上鏈接調(diào)度,而是VMM制作這些調(diào)度的副本并合并副本。調(diào)度 540表示合并的異步調(diào)度。如圖所示,將笫一個(gè)VM中的最后一個(gè)QH 513指向第二個(gè)VM的第一個(gè)QH 522。將第二個(gè)VM中的最后一個(gè)QH524指向第一個(gè)VM的偽QH511。異步列表地址寄存器(異步列 表地址)可以是包括要執(zhí)行的下一個(gè)異步隊(duì)列頭的地址的寄存器???以由圖4所示的調(diào)度捕獲單元411來執(zhí)行圖示的復(fù)制和合并。圖6a說明VM中的主機(jī)控制器驅(qū)動(dòng)程序生成的示范同步調(diào)度的 圖形表示。調(diào)度610表示來自第一個(gè)VM的第一同步調(diào)度。調(diào)度610 包括周期幀列表611,該周期幀列表611包括時(shí)隙或幀的列表。每個(gè) 幀可以具有為執(zhí)行而調(diào)度的零個(gè)或多個(gè)TD。 TD 621-622對(duì)應(yīng)于周期 幀列表611中的第一幀620。 TD 631-632對(duì)應(yīng)于周期幀列表611中的 第二幀630。中斷樹640包括與輪詢速率對(duì)應(yīng)的多個(gè)QH641-643。 TD 621-622與具有4毫秒的輪詢速率的QH642關(guān)聯(lián),TD 631-632與具有 8毫秒的輪詢速率的QH641關(guān)聯(lián),如圖所示。調(diào)度650表示來自第二 VM的第二同步調(diào)度。調(diào)度650包括周期幀列表651,該周期幀列表 651包括時(shí)隙或幀的列表。每個(gè)幀可以具有為執(zhí)行而調(diào)度的零個(gè)或多 個(gè)TD。TD661-662對(duì)應(yīng)于周期幀列表651中的第一幀660。TD 671-672 對(duì)應(yīng)于周期幀列表651中的第二幀.670。中斷樹680包括與輪詢速率 對(duì)應(yīng)的多個(gè)QH 681-683。 TD 661-662與具有4毫秒的輪詢速率的QH 682關(guān)聯(lián),TD 671-672與具有8毫秒的輪詢速率的QH 681關(guān)聯(lián),如 圖所示。圖6b說明根據(jù)本發(fā)明實(shí)施例如何鏈接同步調(diào)度的示例。根據(jù)本 發(fā)明實(shí)施例,通過構(gòu)成每個(gè)幀中端到端的同步TD的鏈接列表來實(shí)現(xiàn) 鏈接同步調(diào)度。例如可以通過假定主機(jī)控制器驅(qū)動(dòng)程序僅約束于周期 的選擇集,可以分別將相同周期的QH合并來實(shí)現(xiàn)此目的。如圖所示, TD 621指向TD 622, TD 622指向TD 661,以及.TD 661指向TD 662。 TD 631指向TD 632, TD 632指向TD671,以及TD671指向TD 672。 QH641指向QH681。 QH 681指向QH 642。 QH 642指向QH 682。 QH 682指向QH 643。 QH 643指向QH 683。周期幀列表基地址寄存 器(列表基址)包括周期幀列表在系統(tǒng)存儲(chǔ)器中的開始地址。將周期 幀列表基地址寄存器的內(nèi)容與幀索引寄存器結(jié)合,以使主機(jī)控制器能夠依次遍歷周期幀列表??梢杂蓤D4所示的調(diào)度捕獲單元411來執(zhí)行 圖示的鏈接。在本實(shí)施例中,通過修改與VM中存儲(chǔ)的TD關(guān)聯(lián)的指 針來鏈接調(diào)度。圖6c說明根據(jù)本發(fā)明實(shí)施例如何復(fù)制和合并同步調(diào)度的示例。 根據(jù)本發(fā)明實(shí)施例,同步調(diào)度的復(fù)制和合并也包括構(gòu)成每個(gè)幀中端到 端的同步TD的鏈接列表并將相同周期的QH合并。但是,不是在VM 中在適合的位置上鏈接調(diào)度,而是VMM制作這些調(diào)度的副本并合 并副本。如圖所示,TD621指向TD622, TD 622指向TD 661,以及 TD661指向TD662。 TD 631指向、TD 632, TD 632指向TD 671 ,以 及TD671指向TD672。 QH 641指向QH 681 。 QH 681指向QH 642。 QH 642指向QH 682。 QH 682指向QH 643。 QH 643指向QH 683。 周期幀列表基地址寄存器(列表基址)包括周期幀列表在系統(tǒng)存儲(chǔ)器 中的開始地址。將周期幀列表基地址寄存器的內(nèi)容與幀索引寄存器結(jié) 合,以使主機(jī)控制器能夠依次遍歷周期幀列表。可以由圖4所示的調(diào) 度捕獲單元411來執(zhí)行圖示的復(fù)制和合并。圖7是說明根據(jù)本發(fā)明實(shí)施例用于為主機(jī)控制器生成異步調(diào)度的 方法的流程圖。圖示的該過程可以由USB^^莫塊(例如圖3和圖4中所 示的USB模塊)來執(zhí)行。在701,將來自多個(gè)VM的虛擬主機(jī)控制器 的異步調(diào)度(AS)分類,并依序布皇。將來自第一個(gè)(初始)VM的 要處理的異步調(diào)度指定為第一個(gè)(初始)異步調(diào)度。在702,將來自前一個(gè)VM的異步調(diào)度中的最后一個(gè)QH指向來 自下一個(gè)VM的異步i周度中的第一個(gè)QH。在703,確定是否存在來自附加VM的異步調(diào)度要處理。如果確 定存在來自附加VM的異步調(diào)度要處理,則控制返回給702,并將下 一個(gè)VM指定為前一個(gè)VM,以及將該附加VM指定為下一個(gè)VM。 如果確定不存在來自附加VM的異步調(diào)度要處理,則控制轉(zhuǎn)到704。在704,將來自最后或最后一個(gè)VM的異步調(diào)度中的最后一個(gè) QH指向來自初始VM的異步調(diào)度中的偽QH。圖8是說明根據(jù)本發(fā)明實(shí)施例用于為主機(jī)控制器生成同步調(diào)度的方法的流程圖。圖示的該過程可以由USB才莫塊(例如圖3和圖4中所 示的USB模塊)來執(zhí)行。在801,將幀列表的每個(gè)幀中的TD連接到 其他幀列表的對(duì)應(yīng)幀中的TD。根據(jù)本發(fā)明實(shí)施例,來自第一個(gè)VM 的幀列表的幀中的TD鏈中的最后一個(gè)TD指向第二個(gè)VM的幀列表 的對(duì)應(yīng)幀中的TD鏈中的第一個(gè)TD。在802,合并來自VM的幀列表的相同周期或輪詢速率的QH。 圖7和8是說明根據(jù)本發(fā)明實(shí)施例的方法的流程圖。這些附圖中 所示的 一些技術(shù)可以順序地、并行地或按與描述的順序不同的順序來 執(zhí)行。應(yīng)該認(rèn)識(shí)到,并非所描述的所有技術(shù)都需要執(zhí)行,可以添加附 加的技術(shù),以及可以利用其他技術(shù)替代一些圖示的技術(shù)。本發(fā)明的實(shí)施例可以作為計(jì)算機(jī)程序產(chǎn)品或軟件來提供,該計(jì)算 機(jī)程序產(chǎn)品或軟件可以包括具有指令的機(jī)器可訪問或機(jī)器可讀^i某體上的制造品。機(jī)器可訪問或機(jī)器可讀々某體上的這些指令可以用于對(duì)計(jì) 算機(jī)系統(tǒng)或其他電子裝置編程。該機(jī)器可讀媒體可以包括但不限于軟 盤、光盤、CD-ROM和磁光盤或適于存儲(chǔ)或傳送電子指令的其他類型 的媒介/機(jī)器可讀媒體。本丈描述的這些技術(shù)不限于任何特定的軟件 配置。它們可以在任何計(jì)算或處理環(huán)境中發(fā)現(xiàn)可應(yīng)用性。本文所使用 的術(shù)語"機(jī)器可訪問々某體"或"機(jī)器可讀i某體"應(yīng)該包括能夠存儲(chǔ)、 編碼或傳送由機(jī)器執(zhí)行并使該機(jī)容執(zhí)行本文描迷的方法的任何一種 方法的指令序列的任何々某體。而且,;在本領(lǐng)域中常見是作為采取措施 或促成結(jié)果以一種形式或另一種形式(例如,程序、過程、進(jìn)程、應(yīng) 用程序等)來論及軟件。此類表述僅是說明通過處理系統(tǒng)執(zhí)行軟件使 該處理器執(zhí)行動(dòng)作以產(chǎn)生結(jié)果的便捷方式。在前文描述中,本發(fā)明的實(shí)施例是參考其特定示范實(shí)施例來描述 的。但是將顯見到,在不背離本發(fā)明實(shí)施例的精神和范圍的前提下可 以對(duì)其多種修改和更改。因此,本說明書和附圖應(yīng)視為說明性意義的 而非限定性意義的。
權(quán)利要求
1.一種用于管理虛擬機(jī)與總線控制器之間的數(shù)據(jù)的方法,包括捕獲所述虛擬機(jī)進(jìn)行的寄存器訪問;生成要由所述總線控制器實(shí)現(xiàn)的調(diào)度;以及經(jīng)由虛擬總線控制器將狀態(tài)返回給所述虛擬機(jī)。
2. 如權(quán)利要求l所述的方法,其特征在于,響應(yīng)接收到有關(guān)已修 改或添加傳輸描述符和隊(duì)列頭的其中之一 的通知,執(zhí)行生成所述調(diào) 度。
3. 如權(quán)利要求1所述的方法,其特征在于,生成所述調(diào)度包括將 來自虛擬機(jī)的幀中的傳輸描述符指向來自另 一個(gè)虛擬機(jī)的對(duì)應(yīng)幀中 的傳輸描述符。
4. 如權(quán)利要求3所述的方法,其特征在于,指向是在所述虛擬機(jī) 中的幀列表上指示的。
5. 如權(quán)利要求3所述的方法,其特征在于,指向是在虛擬機(jī)監(jiān)視 器中的幀列表的副本上指示的。
6. —種用于管理虛擬機(jī)與總線控制器之間的數(shù)據(jù)的方法,包括 將輸入輸出(10)請(qǐng)求從所述虛擬機(jī)傳送到擁有所述總線控制器的服務(wù)虛擬機(jī)。
7. 如權(quán)利要求6所述的方法,其特征在于,還包括 在所述服務(wù)虛擬機(jī)處處理所述IO請(qǐng)求;以及 將狀態(tài)從所述服務(wù)虛擬機(jī)傳送到所述虛擬機(jī)。
8. 如權(quán)利要求6所述的方法,其特征在于,所述數(shù)據(jù)是異步數(shù)椐。
9. 如權(quán)利要求6所述的方法,其特征在于,所述數(shù)據(jù)是同步數(shù)據(jù)。
10. 如權(quán)利要求6所述的方法,其特征在亍,傳送所述IO請(qǐng)求包 括使用遠(yuǎn)程過程調(diào)用。
11. 如權(quán)利要求6所述的方法,其特征在于,傳送所述IO請(qǐng)求包括使用共享的存儲(chǔ)器通信。
12. —種包括^^有指令序列的機(jī)器可訪問媒體的制造品,所述指令序列包括在被執(zhí)行時(shí)使機(jī)器執(zhí)行如下操作的指令 捕獲虛擬機(jī)進(jìn)行^寄存器訪問; 生成要由總線控制器實(shí)現(xiàn)的調(diào)度;以及 經(jīng)由虛擬總線控制器將狀態(tài)返回給所述虛擬機(jī)。
13. 如權(quán)利要求12所述的制造品,其特征在于,響應(yīng)接收到有關(guān) 已修改或添加傳輸描述符和隊(duì)列頭的其中之一的通知,執(zhí)行生成所述 調(diào)度。
14. 如權(quán)利要求12所述的制造品,其特征在于,生成所述調(diào)度包 括將來自虛擬機(jī)的幀中的傳輸描述符指向來自另 一個(gè)虛擬機(jī)的對(duì)應(yīng) 幀中的傳輸描述符。
15. 如權(quán)利要求14所述的制造品,其特征在于,指向是在所述虛 擬機(jī)中的幀列表上指示的。
16. 如權(quán)利要求14所述的制造品,其特征在于,指向是在虛擬機(jī) 監(jiān)^L器中的幀列表的副本上指示的。
17. —種計(jì)算機(jī)系統(tǒng),包括-總線;控制所述總線的總線控制器; 存儲(chǔ)器;以及處理器,所述處理器使總線模塊能捕獲虛擬機(jī)進(jìn)行的寄存器訪問 并生成要由所述總線控制器實(shí)現(xiàn)的調(diào)度。
18. 如權(quán)利要求17所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述總線沖莫 塊包括捕獲處理程序。
19. 如權(quán)利要求17所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述總線才莫 塊包括中斷處理程序。
20. 如權(quán)利要求18所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述捕獲處 理程序包括調(diào)度捕獲單元,所述調(diào)度捕獲單元將來自所述虛擬機(jī)的幀中的傳輸描述符指向來自另 一個(gè)虛擬機(jī)的對(duì)應(yīng)幀中的傳輸描述符。
全文摘要
一種用于管理虛擬機(jī)與總線控制器之間的數(shù)據(jù)的方法,包括將輸入輸出(IO)請(qǐng)求從虛擬機(jī)傳送到擁有總線控制器的服務(wù)虛擬機(jī)。根據(jù)備選實(shí)施例,管理虛擬機(jī)與總線控制器之間的數(shù)據(jù)包括捕獲虛擬機(jī)進(jìn)行的寄存器訪問。生成要由總線控制器實(shí)現(xiàn)的調(diào)度。經(jīng)由虛擬總線控制器將狀態(tài)返回給虛擬機(jī)。還描述了其他實(shí)施例并且對(duì)這些其他實(shí)施例要求權(quán)利。
文檔編號(hào)G06F9/455GK101243396SQ200680030070
公開日2008年8月13日 申請(qǐng)日期2006年8月3日 優(yōu)先權(quán)日2005年8月19日
發(fā)明者A·伊斯梅爾, K·潘薩, P·蘭茨, S·庫馬 申請(qǐng)人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
昌平区| 青龙| 永安市| 镇巴县| 上犹县| 双柏县| 房产| 乌鲁木齐县| 津南区| 平南县| 丰顺县| 平果县| 宜兰市| 沅江市| 威海市| 辉南县| 丰都县| 长海县| 措美县| 苍南县| 中西区| 怀仁县| 江城| 安陆市| 惠州市| 大名县| 开化县| 界首市| 大田县| 永宁县| 乐至县| 高密市| 兴业县| 张掖市| 双辽市| 敖汉旗| 尚义县| 临泽县| 长岛县| 定边县| 怀集县|