專利名稱:多客戶機(jī)間共享物理設(shè)備的制作方法
背景技術(shù):
本發(fā)明的實(shí)施例一般涉及計(jì)算機(jī)系統(tǒng),具體地說涉及允許多個(gè)程序共享物理設(shè)備的虛擬化技術(shù)。
隨著不同計(jì)算機(jī)操作系統(tǒng)(OS)程序(如LINUX、MACINTOSH、微軟的WINDOWS)的盛行,消費(fèi)者們被提供了大量不同種類的應(yīng)用程序,遺憾的是這些應(yīng)用程序并未設(shè)計(jì)成可運(yùn)行于同一OS上。虛擬化技術(shù)使運(yùn)行虛擬機(jī)監(jiān)控程序(“VMM”)的單個(gè)主機(jī)可以提供主機(jī)的多個(gè)抽象體,使得主機(jī)的基本硬件看起來好像是一個(gè)或多個(gè)獨(dú)立操作的虛擬機(jī)(“VM”)。各個(gè)VM可用作自包含的平臺(tái),它運(yùn)行其自己的操作系統(tǒng)(“OS”)和/或一個(gè)或多個(gè)軟件應(yīng)用。VMM管理主機(jī)上的資源分配,并在需要時(shí)根據(jù)循環(huán)法或其他預(yù)定方案執(zhí)行任務(wù)轉(zhuǎn)換以在各種虛擬機(jī)之間進(jìn)行多路復(fù)用。例如,在VM環(huán)境中,每個(gè)OS均有在其自己的硬件平臺(tái)或“裸露金屬”上運(yùn)行的假相。每個(gè)OS可“看到”全套可用I/O設(shè)備,如鍵盤控制器、硬盤驅(qū)動(dòng)控制器、網(wǎng)絡(luò)接口控制器和圖形顯示適配器。
當(dāng)操作系統(tǒng)要與I/O設(shè)備進(jìn)行通信時(shí)會(huì)用到以下技術(shù)。如果OS實(shí)際正運(yùn)行于裸露金屬上,那么物理I/O設(shè)備的硬件客戶機(jī)接口便展現(xiàn)在總線上??蛻魴C(jī)接口可以是一組映射到存儲(chǔ)器的寄存器(映射到存儲(chǔ)器的I/O、MMIO)或I/O端口(IOP),并可分別通過映射到存儲(chǔ)器的I/O地址空間或通過計(jì)算機(jī)系統(tǒng)的I/O地址空間而被尋址。隨后處理器可通過在總線上發(fā)出OS事務(wù)處理來讀或?qū)懳锢碓O(shè)備中指向已分配的地址空間的單元。
另一方面,利用虛擬化技術(shù)可以有多個(gè)VM(用于運(yùn)行多客戶OS)。在此情況下,采用兩種基本技術(shù)來給客戶提供I/O能力。第一種技術(shù)是,VM只能訪問該設(shè)備。VMM安排VM對要直接發(fā)送到目標(biāo)I/O設(shè)備的MMIO或IOP的全部訪問。這樣,VM具有與設(shè)備通信的最大執(zhí)行路徑。此技術(shù)有時(shí)也稱為設(shè)備分配。其主要局限性在于I/O設(shè)備只能被指配給單個(gè)VM。
如果希望I/O設(shè)備以某種形式在多VM間共享,那么常規(guī)的技術(shù)便是VMM模擬物理I/O設(shè)備成為一個(gè)或多個(gè)“虛擬設(shè)備”。隨后由VMM截取來自特定OS的物理設(shè)備的事務(wù)處理。VMM然后可選擇模擬設(shè)備(例如通過采用網(wǎng)絡(luò)接口來模擬串行端口)或者它可以多路傳輸單個(gè)I/O設(shè)備上的各種客戶機(jī)VM的請求(例如把硬盤驅(qū)動(dòng)分成多個(gè)虛擬驅(qū)動(dòng))。
以下是虛擬化處理的另一種方法。VM需要訪問一組可包括虛擬和物理設(shè)備的I/O設(shè)備。如果物理設(shè)備被分配給單個(gè)VM,那么它對于其他虛擬機(jī)就是不可用的。因此,如果物理設(shè)備需要由超過一個(gè)VM共享,那么通常VMM為每個(gè)VM提供虛擬設(shè)備。然后,VMM通過虛擬設(shè)備來仲裁物理設(shè)備的相同硬件客戶機(jī)接口的訪問。
在附圖的幾個(gè)圖中通過舉例而不是限制的方式說明本發(fā)明實(shí)施例,附圖中類似的標(biāo)號指示類似的部件。應(yīng)當(dāng)注意本發(fā)明的實(shí)施例在本公開中并不一定指相同的實(shí)施例,它們意指至少一個(gè)實(shí)施例。
圖1說明“通過設(shè)計(jì)可共享”的物理設(shè)備的框圖。
圖2描述了含有可共享設(shè)備以及其正運(yùn)行虛擬化過程的計(jì)算機(jī)系統(tǒng)的框圖。
圖3顯示了涉及發(fā)現(xiàn)計(jì)算機(jī)系統(tǒng)中可共享I/O設(shè)備的虛擬化過程的流程圖。
具體實(shí)施例方式
圖1說明“通過設(shè)計(jì)可共享”的物理設(shè)備的框圖??晒蚕碓O(shè)備100具有執(zhí)行計(jì)算機(jī)系統(tǒng)的核心I/O功能(在本示例中)的核心功能電路104。核心I/O功能的例子包括在圖形適配器情況下的圖像再現(xiàn)、網(wǎng)絡(luò)接口控制器的傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(TCP/IP)分組卸載。核心I/O功能電路可實(shí)現(xiàn)為硬連線和/或可編程邏輯與已編程序的處理器或本領(lǐng)域技術(shù)人員公知的任何其他技術(shù)的組合。
在本系統(tǒng)中,軟件虛擬機(jī)(VM)客戶機(jī)108將經(jīng)由多個(gè)客戶機(jī)接口電路112(或簡單地說是客戶機(jī)接口112)中的任何一個(gè)訪問核心功能電路104。VM客戶機(jī)108可以是操作系統(tǒng),如包含設(shè)備驅(qū)動(dòng)的微軟的WINDOWS或LINUX??蛻魴C(jī)接口112經(jīng)由復(fù)用電路116耦合到核心功能電路104,以使得由VM客戶機(jī)經(jīng)由客戶機(jī)接口共享核心功能。復(fù)用電路116可包括需要在某個(gè)時(shí)刻把核心功能電路連接到任何一個(gè)客戶機(jī)接口112上的信號線和復(fù)用器邏輯。
每個(gè)客戶機(jī)接口112把其自身作為完整和單獨(dú)的設(shè)備提供給系統(tǒng)中的軟件客戶機(jī),如VM客戶機(jī)108。接口112可實(shí)現(xiàn)其駐留的總線所要求功能的各個(gè)方面??蛻魴C(jī)接口112可包括在設(shè)備中的邏輯信令和外部總線信令之間轉(zhuǎn)換的模擬電路。如果外部總線是串行點(diǎn)對點(diǎn)類型的話,那么可增加復(fù)用開關(guān)電路以便在任何時(shí)刻把寄存器組中的一個(gè)寄存器連接到總線的傳輸媒介上。
在本發(fā)明的一些實(shí)施例中,每個(gè)客戶機(jī)接口112可在(連接物理設(shè)備的)相同總線上支持相同外圍部件互連(PCI)兼容的配置機(jī)制和相同功能發(fā)現(xiàn)機(jī)制。然而在這種實(shí)施例中,每個(gè)客戶機(jī)接口將提供不同的PCI設(shè)備標(biāo)號(因?yàn)楦饔行У卮聿煌脑O(shè)備)。此外,每個(gè)客戶機(jī)接口將識別一組獨(dú)立的PCI兼容的功能。當(dāng)然客戶機(jī)接口也可設(shè)計(jì)成遵循其他類型的I/O或例如用于連接計(jì)算機(jī)系統(tǒng)的部件的總線通信協(xié)議。
每個(gè)客戶機(jī)接口可包括由軟件客戶機(jī)使用的獨(dú)立的寄存器組,以獲得有關(guān)接口的信息并配置接口。那么每寄存器組便可從它外部訪問,而不管它是串行或并行、多支路或點(diǎn)對點(diǎn)的。例如,即插即用子系統(tǒng)可采用PCI配置寄存器來定義MMIO區(qū)的基地址。PCI兼容的配置寄存器組可包括以下公知寄存器中的一些或全部供應(yīng)商ID、設(shè)備ID(確定配置寄存器地址的偏移量)、修訂ID、類碼、子系統(tǒng)供應(yīng)商ID和子系統(tǒng)ID。這些寄存器的組合通常由操作系統(tǒng)用來確定要為設(shè)備裝載哪個(gè)驅(qū)動(dòng)。[mag3]當(dāng)在可共享設(shè)備中實(shí)現(xiàn)時(shí),(給定客戶機(jī)接口的)每個(gè)寄存器組可具有相同的地址范圍,除了偏移量不同。[mag4]設(shè)置基地址寄存器(BAR)可用來指定設(shè)備所用的基地址。[mag5]當(dāng)客戶試圖設(shè)置BAR時(shí),VMM可設(shè)計(jì)成截取此請求并可修改它。這是出于幾種原因。第一,兩個(gè)VM中的每個(gè)VM可不知覺地試圖把接口中的BAR設(shè)定成相同的值。VMM可設(shè)計(jì)成保證這種情況不發(fā)生。其次,每個(gè)VM可相信它正運(yùn)行在基于零的地址空間(所謂的客戶物理地址或GPA)中。當(dāng)BAR由客戶設(shè)置時(shí),基零的GPA應(yīng)在載入到BAR之前被轉(zhuǎn)換成實(shí)際主機(jī)物理地址(HPA)。此外,VMM應(yīng)修改客戶VM的存儲(chǔ)器管理表,以反映這種轉(zhuǎn)換。
在核心功能電路104相當(dāng)復(fù)雜和/或大,使得復(fù)制這種電路將太昂貴(并且也不需要復(fù)制帶來的并行處理性能)的情況下,可共享設(shè)備100可以是更理想的解決方案。另一有利用處將在I/O虛擬實(shí)施例(如以下參照圖2所述)。在此情況下,可共享設(shè)備100允許虛擬機(jī)監(jiān)控程序(VMM)不參與每個(gè)事務(wù)處理,由此縮短了(對等待時(shí)間特別敏感的)圖形和網(wǎng)絡(luò)事務(wù)處理的等待時(shí)間。此外,在一些實(shí)施例中,VMM的設(shè)計(jì)和實(shí)現(xiàn)基本上可以不怎么復(fù)雜,使得軟件可以更穩(wěn)定的操作。這可能是因?yàn)榫哂卸嗫蛻魴C(jī)接口將不需要VMM來支持對應(yīng)的虛擬設(shè)備(如VMM不需要模擬設(shè)備本身,也不需要為每個(gè)虛擬設(shè)備提供PCI配置空間[mag7]。)軟件客戶機(jī)可利用任何一個(gè)客戶機(jī)接口112來調(diào)用可共享設(shè)備的同一主要功能。這種主要功能可以是I/O設(shè)備(如顯示圖形適配器)的功能,例如產(chǎn)生位圖顯示圖像的圖像再現(xiàn)。在此情況下,可共享設(shè)備可實(shí)現(xiàn)為計(jì)算機(jī)系統(tǒng)芯片組的圖形I/O區(qū)的一部分,或?qū)崿F(xiàn)為單個(gè)的圖形適配卡。后一種情況下的客戶機(jī)接口也可包括用于可拆卸式地把卡連接到計(jì)算機(jī)系統(tǒng)總線的電氣連接器。此情況下的所有接口可通過相同連接器來訪問。
另一主要功能可以是網(wǎng)絡(luò)接口控制器(NIC)的功能。在這種實(shí)施例中,每個(gè)軟件客戶機(jī)(如VM客戶機(jī)108)可以是網(wǎng)絡(luò)中單獨(dú)的端結(jié)點(diǎn)。VM客戶機(jī)108將通過基本功能(如傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(TCP/IP)分組卸載(產(chǎn)生輸出分組和譯碼輸入分組)和媒體接入控制(MAC)地址過濾)來與網(wǎng)絡(luò)進(jìn)行通信。在此情況下,可共享設(shè)備可以是單個(gè)網(wǎng)絡(luò)接口控制器卡。每個(gè)客戶機(jī)接口提供完整或完全功能的NIC的外部特征,包括每個(gè)客戶機(jī)接口的獨(dú)立MAC地址。輸入分組將自動(dòng)被路由到正確的客戶機(jī)接口,隨后路由到相應(yīng)的VM客戶機(jī)上。這可以在不必花費(fèi)CPU循環(huán)(VMM)的情況下完成,以評估每個(gè)輸入分組,并且也不需要把NIC放入到混雜模式中,在這種模式中CPU檢查每個(gè)輸入分組而不管該分組是否是系統(tǒng)中的VM想要的。[mag8]應(yīng)當(dāng)注意,雖然可共享設(shè)備100的客戶機(jī)接口可將它們自身作為完整獨(dú)立的設(shè)備提供給軟件客戶機(jī),但是它們不一定是同一設(shè)備。更一般的講,如果它的一個(gè)或多個(gè)客戶機(jī)接口112把不同組的設(shè)備能力(在核心功能104中實(shí)現(xiàn))提供給VM客戶機(jī),那么可共享設(shè)備100可具有不同種類的接口。例如,考慮可共享設(shè)備是顯示圖形適配器的情況。它的客戶機(jī)接口之一可作為較早版本的特定設(shè)備(如遺產(chǎn)設(shè)備)顯示給軟件客戶機(jī),而另一接口可作為較新版本顯示給軟件客戶機(jī)。作為另一例子,考慮其核心I/O功能實(shí)現(xiàn)為具有多個(gè)可編程計(jì)算單元的可調(diào)節(jié)計(jì)算結(jié)構(gòu)的圖形適配器。一個(gè)客戶機(jī)接口可被設(shè)計(jì)或編程來訪問比另一個(gè)更大的計(jì)算單元子集,以便提供相同類型但更強(qiáng)大的I/O功能。[mag9]
在另一示例中,可共享設(shè)備100可使它的一些客戶機(jī)接口更完整,例如展現(xiàn)較高性能能力(如核心功能中不同類型的圖形再現(xiàn)功能)。更復(fù)雜的接口將更有可能使得與它相關(guān)聯(lián)的設(shè)備驅(qū)動(dòng)器程序相應(yīng)更復(fù)雜。相應(yīng)地,由于更復(fù)雜的設(shè)備驅(qū)動(dòng)器更可能有缺陷或漏洞,而且經(jīng)不起安全分析,因此它注定將更容易受到攻擊。由此,此情況下的接口由于其復(fù)雜性被標(biāo)為不可信或不安全。同時(shí),可共享設(shè)備可具有展現(xiàn)主要I/O功能的較低性能版本(如只有基本圖像再現(xiàn)和顯示)的一個(gè)或多個(gè)其他客戶機(jī)接口。因此后面的接口被認(rèn)為是更可信或更安全的接口。
例如,接口(由于其復(fù)雜性或固有的設(shè)計(jì))可被認(rèn)為可被充分信任來被依靠以保護(hù)用戶的保密數(shù)據(jù)(如由系統(tǒng)用戶產(chǎn)生并“擁有的”數(shù)據(jù),例如用戶的社會(huì)保險(xiǎn)號和財(cái)政信息)。此接口(連接到圖形設(shè)備)可用來專門顯示某應(yīng)用程序的輸出,如個(gè)人帳目管理和稅金準(zhǔn)備軟件。這例如將會(huì)有助于阻礙已潛入系統(tǒng)并在尋求搜集用戶的私人機(jī)密信息的第三方詐取軟件部件的攻擊。
在另一方案中,可利用不太復(fù)雜的接口來增強(qiáng)內(nèi)容保護(hù),如防止系統(tǒng)用戶以免捕獲第三方的版權(quán)受保護(hù)數(shù)據(jù),這些數(shù)據(jù)也出現(xiàn)在核心功能的輸出上。例如,用戶可在只與內(nèi)容受保護(hù)的接口相關(guān)聯(lián)的特定VM客戶機(jī)上運(yùn)行DVD播放器應(yīng)用程序,以便電影數(shù)據(jù)流只由那一接口再現(xiàn)?;蛘撸瑑?nèi)容保護(hù)客戶機(jī)接口可設(shè)計(jì)成直接由應(yīng)用程序訪問,而不需要中間設(shè)備驅(qū)動(dòng)層。此類更簡單的接口通過在應(yīng)用程序與核心圖形再現(xiàn)和顯示功能之間提供更少的通路,將會(huì)使攻擊機(jī)會(huì)進(jìn)一步減少。
具有多客戶機(jī)接口的單個(gè)可共享設(shè)備100還可通過給其增加改變活動(dòng)接口數(shù)量的能力而被增強(qiáng)。此附加能力可設(shè)計(jì)成使運(yùn)行于系統(tǒng)的某軟件,如服務(wù)VM130或VMM224(以下結(jié)合圖2所述),可以訪問用于使能/禁用客戶機(jī)接口中的一些而不是另一些的配置寄存器。這有助于控制I/O設(shè)備內(nèi)的資源分配,以便例如更好匹配運(yùn)行于系統(tǒng)中的VM客戶機(jī)的需要。
圖1中顯示的可共享設(shè)備100也可具有一個(gè)或多個(gè)世界接口電路(或簡單地說世界接口)120。當(dāng)世界接口不只有一個(gè)時(shí),它們經(jīng)由附加復(fù)用電路122而耦合到核心功能電路104。每個(gè)世界接口120可具有用于在核心功能電路104中的信令和設(shè)備外部信令之間轉(zhuǎn)換的數(shù)字和/或模擬電路。世界接口可包括通過有線或無線鏈路與計(jì)算機(jī)系統(tǒng)外圍設(shè)備(如顯示監(jiān)視器或數(shù)字?jǐn)z像機(jī))進(jìn)行通信所需的連接器和/或其他硬件。如果是網(wǎng)絡(luò)接口控制器,則世界接口可稱為網(wǎng)絡(luò)端口,它連接到局域網(wǎng)(LAN)節(jié)點(diǎn)互連接媒介。此端口可具有與LAN電纜(如以太網(wǎng)電纜)連接或與例如無線接入點(diǎn)通信的電路或無線發(fā)射機(jī)和接收機(jī)。
在一些實(shí)施例中,可共享設(shè)備100可配備控制接口電路(或簡單地說是控制接口)126,其由系統(tǒng)中稱為服務(wù)VM 130的軟件使用??刂平涌?26可用于各種不同目的。例如,它可以是用于組合不同客戶機(jī)的數(shù)據(jù)的機(jī)制(如控制在相同顯示屏幕上的什么地方顯示每個(gè)VM的輸出)??刂平涌谝部捎糜诮鉀Q多個(gè)VM客戶機(jī)的沖突命令[mag10]。例如,它可提供另一種控制由VM客戶機(jī)108(經(jīng)由它們各自的客戶機(jī)接口112)訪問核心功能的方法。作為例子,可共享圖形適配器中的控制接口可設(shè)計(jì)成允許服務(wù)VM 130利用顯示多窗口的特定調(diào)度策略對設(shè)備進(jìn)行編程,如一種是在給定時(shí)間間隔期間不給所有的VM客戶機(jī)相等的優(yōu)先權(quán);一種是將核心功能中功能塊的一些而不是所有功能塊分配給特定VM客戶機(jī)。在這種實(shí)施例中,可共享設(shè)備還可配備工作量隊(duì)列(未示出),每個(gè)客戶機(jī)接口112一個(gè),并在客戶機(jī)接口112和核心功能電路104之間耦合。控制接口將允許服務(wù)VM選擇哪個(gè)隊(duì)列向核心功能電路饋送作為隊(duì)列狀況(如其深度、其有多滿或多空、其優(yōu)先級等)的函數(shù)的指令。[mag11]控制接口也可用來配置如何再現(xiàn)和顯示圖形,如其中每個(gè)VM被指配給獨(dú)立監(jiān)視器的多監(jiān)視器或相同監(jiān)視器中的多個(gè)窗口。圖形適配器的功耗也可通過控制接口管理。注意在一些情況下,可共享設(shè)備可不需要控制接口。例如可共享NIC可以利用仲裁策略僅僅編程一次(或者可能被硬連線),以在適當(dāng)?shù)臅r(shí)候公平地或不公平地服務(wù)其不同的客戶機(jī)接口。
如果是NIC,控制接口可允許服務(wù)VM改變基于每個(gè)VM客戶機(jī)分配或預(yù)留的帶寬。如果是聲卡,控制接口可允許服務(wù)VM控制不同VM客戶機(jī)源的音頻混合。另一種可能是利用控制接口來啟動(dòng)視頻和/或音頻捕獲流以被路由到特定VM客戶機(jī)。例如,控制接口可以處于軟件指示多個(gè)不同媒體接入控制器(MAC)的每個(gè)與它們各自VM客戶機(jī)的關(guān)聯(lián)的位置那里。
現(xiàn)在轉(zhuǎn)向圖2,其中描繪了具有可共享設(shè)備100并正運(yùn)行虛擬過程的計(jì)算機(jī)系統(tǒng)的框圖??晒蚕碓O(shè)備100是系統(tǒng)物理主機(jī)硬件204的部分,也稱為裸露金屬。主機(jī)硬件204可包括一組可用I/O設(shè)備(未示出),如鍵盤控制器、硬盤驅(qū)動(dòng)控制器和圖形顯示適配器。這些用于與諸如用戶輸入設(shè)備208(本示例中所描述的鍵盤/鼠標(biāo)組合)、非易失性大容量設(shè)備(這里描述為硬盤驅(qū)動(dòng)212)、顯示監(jiān)視器214和NIC適配器卡216之類的外圍進(jìn)行通信。
虛擬化在這里是采用稱為虛擬機(jī)監(jiān)控程序(VMM)224的程序來完成的。VMM 224把主機(jī)硬件平臺(tái)204“分成”多個(gè)孤立的虛擬機(jī)(VM)228。每個(gè)VM228對于運(yùn)行在其中的軟件而言看起來就好像是包括如圖所示的I/O設(shè)備和外圍部件的基本完整的計(jì)算機(jī)系統(tǒng)一樣。VMM 224負(fù)責(zé)提供每個(gè)VM228運(yùn)行的環(huán)境,并可用來維護(hù)VM之間的隔離(這里另一種備選將是采用硬件CPU增強(qiáng)來維護(hù)隔離)。[mag14]運(yùn)行于每個(gè)VM 228的軟件可包括不同客戶OS 232。在VM環(huán)境中,每個(gè)客戶OS 232均有它運(yùn)行在其自身的硬件平臺(tái)上這樣的假像。因此客戶OS 232不可能意識到另一操作系統(tǒng)也運(yùn)行在相同系統(tǒng)中或者基本的計(jì)算機(jī)系統(tǒng)已被分割這一事實(shí)。
虛擬化處理允許應(yīng)用程序236運(yùn)行于它們各自客戶操作系統(tǒng)232上的不同VM 228中。應(yīng)用程序236可在單個(gè)顯示監(jiān)視器214上利用單獨(dú)的窗口(例如每個(gè)VM一個(gè))同時(shí)顯示它們的信息。這可通過本示例中作為圖形適配器的可共享設(shè)備100來進(jìn)行。注意VMM 224被設(shè)計(jì)以便知道這種可共享設(shè)備100的出現(xiàn),并因此具有(如經(jīng)由服務(wù)VM 130,參見圖1)管理它的能力。然而,這避免了共享物理設(shè)備的純軟件技術(shù)的許多缺點(diǎn)。例如,沒有必要設(shè)計(jì)并實(shí)現(xiàn)相當(dāng)復(fù)雜的VMM,它必須詳細(xì)理解物理設(shè)備是如何工作的,以便能夠正確地共享。這可通過得到容易由每個(gè)客戶OS 232識別的多個(gè)硬件客戶機(jī)接口來避免。
可共享設(shè)備概念的一些其他好處可通過以下示例說明??紤]多處理器系統(tǒng)或具有超線程中央處理單元(CPU)的系統(tǒng),其中單個(gè)CPU充當(dāng)兩個(gè)或兩個(gè)以上CPU(不是僅僅調(diào)度意義上的,而是因?yàn)榫哂凶銐虻膱?zhí)行能力余留)。處理器1執(zhí)行VM0的代碼,而處理器2執(zhí)行VM1的代碼。接下來,假設(shè)每個(gè)VM希望同時(shí)訪問相同I/O設(shè)備。在任何一個(gè)時(shí)間點(diǎn)上非可共享I/O設(shè)備只可在一種上下文環(huán)境中操作。因此,只有一個(gè)VM可接入設(shè)備。其他VM要接入設(shè)備的嘗試將使得它在錯(cuò)誤的上下文環(huán)境中接入設(shè)備。
本發(fā)明的一個(gè)實(shí)施例允許退耦(VM和硬件客戶機(jī)接口之間的)“對話”和(正由核心功能電路進(jìn)行的)“工作”,使得可以不需要上述上下文轉(zhuǎn)換。那是因?yàn)槊總€(gè)VM被指配了它的獨(dú)立的硬件客戶機(jī)接口,以便VM可在不需要I/O設(shè)備的上下文轉(zhuǎn)換的情況下向它們各自的客戶機(jī)接口電路發(fā)送I/O請求。這為上述接入問題提供了解決方案。
作為另一示例,考慮運(yùn)行VM0和VM1二者的CPU。在VM0中,應(yīng)用軟件較重地使用CPU(如計(jì)算常數(shù)pi),但是很少詢問圖形適配器(如更新顯示窗口中的時(shí)鐘)。在其他VM窗口中,雖然很少使用CPU但圖形式樣要定期由圖形適配器更新。現(xiàn)在,假定CPU和圖形適配器被一起上下文轉(zhuǎn)換(在一部分時(shí)間里把圖形適配器和CPU給到VM0,而在其余的時(shí)間里把它們給到VM1)。在此情況下,VM0的較少的圖形要求導(dǎo)致部分時(shí)間的浪費(fèi)的/空閑圖形循環(huán),而VM1少量的CPU要求產(chǎn)生剩余時(shí)間的浪費(fèi)的/空閑CPU循環(huán)。那是因?yàn)镃PU和圖形適配器核心功能二者總在相同的上下文環(huán)境中。系統(tǒng)資源的這種無效率的使用可通過允許與圖形適配器工作量無關(guān)地調(diào)度CPU工作量的本發(fā)明實(shí)施例而避免。使用圖形適配器中可用的不同硬件客戶機(jī)接口,可調(diào)度CPU以花費(fèi)其大部分時(shí)間來執(zhí)行VM0,并且仍然可以偶爾訪問圖形適配器。另一方面,圖形適配器的核心功能可被調(diào)度以將其大部分時(shí)間花費(fèi)在VM1上,并且其可偶爾被中斷以服務(wù)VM0。
現(xiàn)轉(zhuǎn)向圖3,其中描繪了計(jì)算機(jī)系統(tǒng)中涉及可共享I/O設(shè)備的發(fā)現(xiàn)和共享的虛擬化過程的流程圖。該系統(tǒng)可以是圖2中所顯示的系統(tǒng)。該方法開始于操作304,其中在系統(tǒng)中執(zhí)行即插即用發(fā)現(xiàn)過程。作為例子,這可以是常規(guī)PCI設(shè)備和功能枚舉過程(也稱為PCI配置過程)的一部分。發(fā)現(xiàn)過程可檢測多個(gè)I/O設(shè)備,因此從單個(gè)圖形適配器卡的不同客戶機(jī)接口讀取每個(gè)設(shè)備的唯一PCI設(shè)備標(biāo)號。這可發(fā)生在系統(tǒng)上電之后通過基本I/O系統(tǒng)固件(BIOS)和/或由系統(tǒng)處理器執(zhí)行的VMM來進(jìn)行。適配器卡是可共享I/O設(shè)備的一個(gè)示例,其核心I/O功能將由它的多個(gè)硬件客戶機(jī)接口共享。發(fā)現(xiàn)過程也可檢測形式為控制接口126的另一設(shè)備(參見圖2)。
在備選實(shí)施例中,在初始化引導(dǎo)期間,BIOS可能僅發(fā)現(xiàn)控制接口。稍后一段時(shí)間,VMM可根據(jù)需要利用控制接口來創(chuàng)建一個(gè)或多個(gè)客戶機(jī)接口。這些接口可被即刻全部創(chuàng)建,或根據(jù)需要而創(chuàng)建。當(dāng)創(chuàng)建了每個(gè)接口時(shí),VMM將看見指示新創(chuàng)建接口“插入”的熱插事件。參見如由Lantz等人于2004年3月5日提交的并轉(zhuǎn)讓給本申請的同一個(gè)受讓人的題為“用于從一個(gè)虛擬機(jī)到另一虛擬機(jī)動(dòng)態(tài)重分配物理設(shè)備的方法、裝置和系統(tǒng)”的美國專利10/794469。
本方法繼續(xù)進(jìn)行操作308,其中VMM或服務(wù)VM產(chǎn)生一個(gè)或多個(gè)VM,并將一個(gè)或多個(gè)檢測到的I/O設(shè)備指配給它們。在此示例中,各個(gè)檢測到的設(shè)備是系統(tǒng)中相應(yīng)VM的圖形適配器。服務(wù)VM隨后可用來通過其控制接口配置適配器,使得其核心I/O功能根據(jù)例如給一個(gè)VM優(yōu)先于另一VM的優(yōu)先權(quán)的優(yōu)先權(quán)策略來共享(操作312)。此后,在VM運(yùn)行后,VMM可退回并基本上不讓其自身涉及I/O事務(wù),因?yàn)槊總€(gè)VM現(xiàn)在可容易地修改或截獲其指向顯示圖形的OS呼叫(如通過添加地址偏移量以指向其已指配的硬件客戶機(jī)接口。)本發(fā)明的一些實(shí)施例可提供為計(jì)算機(jī)程序產(chǎn)品或軟件,其可包括其上已存儲(chǔ)了指令的機(jī)器或計(jì)算機(jī)可讀媒介,它可用來對計(jì)算機(jī)(或其他電子設(shè)備)編程以根據(jù)本發(fā)明實(shí)施例執(zhí)行過程。在其他實(shí)施例中,操作可由含有微代碼、硬線邏輯特定硬件部件或由已編程的計(jì)算機(jī)部件和定制的硬件部件的任何組合來執(zhí)行。
機(jī)器可讀媒介可以是提供即存儲(chǔ)或傳輸可由機(jī)器(如一個(gè)或多個(gè)處理器組、桌上型計(jì)算機(jī)、便攜式計(jì)算機(jī)、制造工具或具有處理器的任何其他設(shè)備)訪問的信息的任何機(jī)構(gòu)。例如可記錄/不可記錄的媒介,諸如只讀存儲(chǔ)器(ROM)、隨機(jī)訪問存儲(chǔ)器(RAM)、磁旋轉(zhuǎn)盤存儲(chǔ)媒介、光盤存儲(chǔ)媒介以及電、光、聲或其他形式傳播的信號(如載波、紅外信號等)。
總之,本文已描述了在多客戶機(jī)間共享物理設(shè)備的技術(shù)的各種實(shí)施例。在前述說明書中,已參照其特定示范性實(shí)施例對本發(fā)明進(jìn)行了說明。然而在不背離所附權(quán)利要求中陳述的本發(fā)明的更廣泛的精神和范圍情況下,顯然可以進(jìn)行各種修改和變化。例如,VMM正運(yùn)行于其中的計(jì)算機(jī)系統(tǒng)可具有多個(gè)處理器(CPU),其中每個(gè)VM客戶機(jī)可例如運(yùn)行于不同處理器上。這種系統(tǒng)中的可共享設(shè)備的多客戶機(jī)接口允許不同VM客戶機(jī)訪問設(shè)備的相同核心功能,以在VM客戶機(jī)彼此不知道的情況下同時(shí)出現(xiàn)。根據(jù)它們各自的觀點(diǎn),這將在沒有VM客戶機(jī)彼此干預(yù)的情況下發(fā)生。本文中同時(shí)訪問意指例如事務(wù)請求正由I/O設(shè)備捕獲,而還沒完成,并且另一事務(wù)過程請求也正由I/O設(shè)備捕獲,也還沒完成。在非虛擬化系統(tǒng)中,OS通常保證不允許這樣的情形發(fā)生,如不允許兩個(gè)CPU在相同時(shí)間對相同設(shè)備編程。然而,在這里所述的VM系統(tǒng)實(shí)施例中,希望VMM不必負(fù)這種責(zé)任(由于每次訪問I/O設(shè)備時(shí)需要監(jiān)視或涉及的這種軟件的復(fù)雜性)。因此,在這種系統(tǒng)中,在VM客戶機(jī)或客戶之間不存在協(xié)調(diào),因?yàn)樗鼈冊L問相同I/O設(shè)備。然而由于上述多客戶機(jī)接口的特性,因此這種訪問可被正確地路由到I/O設(shè)備的核心功能,作出對多處理器VM系統(tǒng)特具吸引力的決定。相應(yīng)地,本說明書和附圖被看作為是說明性而非限制意義。
權(quán)利要求
1.一種物理設(shè)備,包括核心功能電路,用于執(zhí)行計(jì)算機(jī)系統(tǒng)的核心功能;多個(gè)客戶機(jī)接口電路,各將它自身作為完整的設(shè)備提供給所述系統(tǒng)中的軟件客戶機(jī)以訪問所述核心功能電路;以及復(fù)用電路,用于把所述多個(gè)客戶機(jī)接口電路耦合到所述核心功能電路。
2.如權(quán)利要求1所述的設(shè)備,其中,所述核心功能是顯示圖形適配器的主要功能。
3.如權(quán)利要求1所述的設(shè)備,其中,所述主要功能是圖像再現(xiàn)。
4.如權(quán)利要求1所述的設(shè)備,其中,所述核心功能是網(wǎng)絡(luò)接口控制器的主要功能。
5.如權(quán)利要求4所述的設(shè)備,其中,所述主要功能是TCP/IP分組卸載。
6.如權(quán)利要求1所述的設(shè)備,其中,所述客戶機(jī)接口把不同I/O設(shè)備能力展現(xiàn)給軟件客戶機(jī)。
7.如權(quán)利要求1所述的設(shè)備,其中,所述客戶機(jī)接口之一展現(xiàn)可信任圖形適配器,而另一接口展現(xiàn)不可信的圖形適配器。
8.如權(quán)利要求1所述的設(shè)備,其中,所述多個(gè)客戶機(jī)接口中的每一個(gè)具有單獨(dú)的寄存器組以配置核心功能電路的操作,并且其中一組對于軟件客戶機(jī)顯現(xiàn)為I/O設(shè)備的較舊版本,而另一組對于所述軟件客戶機(jī)顯現(xiàn)為所述I/O設(shè)備的較新版本。
9.如權(quán)利要求1所述的設(shè)備,還包括控制接口電路,它由所述系統(tǒng)中的服務(wù)虛擬機(jī)(VM)軟件用來控制所述系統(tǒng)中的多個(gè)VM對所述核心功能電路的訪問,其中所述多個(gè)VM將分別經(jīng)由所述多個(gè)客戶機(jī)接口電路訪問所述核心功能電路。
10.如權(quán)利要求9所述的設(shè)備,其中,所述核心功能是顯示圖形適配器的主要功能,并且所述控制接口允許所述服務(wù)VM軟件利用所述核心功能電路選擇如何為所述多個(gè)VM分別顯示多個(gè)窗口。
11.如權(quán)利要求1所述的設(shè)備,還包括多個(gè)世界接口電路,它們經(jīng)由附加的復(fù)用電路耦合到所述核心功能電路,以便在所述核心功能電路的信令和所述設(shè)備外部的信令之間進(jìn)行轉(zhuǎn)換。
12.如權(quán)利要求11所述的設(shè)備,其中,所述多個(gè)世界接口電路將在所述核心功能電路中的信令和計(jì)算機(jī)外圍總線中的信令之間進(jìn)行轉(zhuǎn)換。
13.如權(quán)利要求11所述的設(shè)備,其中,所述多個(gè)世界接口電路將在所述核心功能電路中的信令和LAN節(jié)點(diǎn)互連接媒介中的信令之間進(jìn)行轉(zhuǎn)換。
14.如權(quán)利要求9所述的設(shè)備,還包括多個(gè)工作量隊(duì)列,各耦合在所述多個(gè)客戶機(jī)接口電路的單獨(dú)一個(gè)電路和所述核心功能電路之間,其中所述控制接口電路允許所述服務(wù)VM選擇哪個(gè)隊(duì)列將作為隊(duì)列狀況的函數(shù)來饋送所述核心功能電路。
15.一種I/O設(shè)備,包括核心I/O功能電路,用以執(zhí)行計(jì)算機(jī)系統(tǒng)的核心I/O功能;以及多個(gè)客戶機(jī)接口電路,它們中任何一個(gè)可由所述系統(tǒng)中的虛擬機(jī)(VM)用來訪問所述核心I/O功能電路以調(diào)用相同的核心I/O功能。
16.如權(quán)利要求15所述的I/O設(shè)備,其中,所述客戶機(jī)接口電路中的每一個(gè)具有可從所述I/O設(shè)備外訪問的獨(dú)立的寄存器組,并且各組除偏移之外具有相同的地址范圍。
17.如權(quán)利要求15所述的I/O設(shè)備,其中,其中所述客戶機(jī)接口電路中的一個(gè)將內(nèi)容保護(hù)接口提供給圖形適配器功能以阻止由所述圖形適配器功能遞送的輸出數(shù)據(jù)的未授權(quán)拷貝,而所述客戶機(jī)接口電路中的另一個(gè)將不安全接口提供給所述圖形適配器功能。
18.如權(quán)利要求15所述的I/O設(shè)備,其中,所述I/O設(shè)備賦予軟件任意改變客戶機(jī)接口數(shù)量的能力,以使所述I/O設(shè)備的資源更好地匹配多個(gè)虛擬機(jī)客戶機(jī)的需要,其中所述虛擬機(jī)客戶機(jī)將分別通過所述多個(gè)客戶機(jī)接口電路訪問所述I/O設(shè)備。
19.一種具有虛擬機(jī)能力的計(jì)算機(jī)系統(tǒng),包括處理器;存儲(chǔ)器,具有存儲(chǔ)于其中的虛擬機(jī)監(jiān)控程序(VMM),其中所述VMM由所述處理器訪問,以分別管理所述系統(tǒng)中用于運(yùn)行多個(gè)客戶機(jī)程序的多個(gè)虛擬機(jī)(VM);以及I/O設(shè)備,具有多個(gè)硬件接口,其中各接口將它自身作為單獨(dú)的I/O設(shè)備提供給將運(yùn)行于所述多個(gè)VM中的所述多個(gè)客戶機(jī)程序的相應(yīng)一個(gè)。
20.如權(quán)利要求19所述的系統(tǒng),其中,所述存儲(chǔ)器還包括存儲(chǔ)于存儲(chǔ)器中以便由所述處理器訪問的服務(wù)VM,以及所述I/O設(shè)備還包括由所述服務(wù)VM用來配置所述核心I/O功能電路的硬件控制接口。
21.如權(quán)利要求20所述的系統(tǒng),其中,所述I/O設(shè)備還包括硬件世界接口,它在所述核心I/O功能電路的信令和所述I/O設(shè)備外部的信令之間進(jìn)行轉(zhuǎn)換。
22.一種虛擬化設(shè)備,其包括用于執(zhí)行計(jì)算機(jī)系統(tǒng)的核心I/O功能的裝置;用于把多個(gè)完整接口提供給多個(gè)虛擬機(jī)(VM)客戶機(jī)以訪問所述核心I/O功能的裝置,其中各接口是完整的,因?yàn)樗勺鳛閱为?dú)的I/O設(shè)備而被相同設(shè)備驅(qū)動(dòng)所訪問;以及用于在所述核心I/O功能執(zhí)行裝置和所述完整接口提供裝置之間傳遞消息的裝置。
23.如權(quán)利要求22所述的虛擬化設(shè)備,其中,所述完整接口中的每一個(gè)提供具有a)唯一設(shè)備標(biāo)號和b)展現(xiàn)在相同總線上的單獨(dú)的配置寄存器組的單獨(dú)的I/O設(shè)備。
24.如權(quán)利要求23所述的虛擬化設(shè)備,其中,每個(gè)配置寄存器組用于存儲(chǔ)單獨(dú)的PCI設(shè)備ID、供應(yīng)商ID、修訂ID和類代碼。
25.一種用于共享I/O設(shè)備的方法,包括在計(jì)算機(jī)系統(tǒng)中執(zhí)行即插即用發(fā)現(xiàn)過程;以及通過所述過程檢測多個(gè)I/O設(shè)備是否出現(xiàn)在所述系統(tǒng)中,這時(shí)實(shí)際上所檢測的I/O設(shè)備由于單個(gè)物理I/O設(shè)備而正連接到所述系統(tǒng)上并且其中它的核心I/O功能由所述物理I/O設(shè)備中的多個(gè)硬件客戶機(jī)接口共享。
26.如權(quán)利要求25所述的方法,其中,所述檢測步驟包括從包含所共享的核心I/O功能的單個(gè)圖形適配器卡讀取所檢測的I/O設(shè)備中的每一個(gè)的唯一PCI設(shè)備標(biāo)號。
27.如權(quán)利要求25所述的方法,還包括將所述多個(gè)檢測的I/O設(shè)備分別指配給所述系統(tǒng)中的多個(gè)虛擬機(jī)(VM)。
28.如權(quán)利要求27所述的方法,還包括當(dāng)服務(wù)所述多個(gè)VM時(shí),根據(jù)給所述VM中的一個(gè)高于另一個(gè)的優(yōu)先權(quán)的優(yōu)先權(quán)策略來配置要共享的所述核心I/O功能。
29.一種制造品,其具有存儲(chǔ)了數(shù)據(jù)的機(jī)器可讀媒介,當(dāng)它由計(jì)算機(jī)系統(tǒng)的處理器訪問時(shí),將寫入和讀取所述系統(tǒng)中的物理設(shè)備的控制接口,以控制由多個(gè)硬件客戶機(jī)接口對所述設(shè)備的相同核心功能的訪問,其中所述硬件客戶機(jī)接口各自將它自身作為完整設(shè)備提供給所述系統(tǒng)中的設(shè)備驅(qū)動(dòng)程序。
30.如權(quán)利要求29所述的制造品,其中,所述數(shù)據(jù)是所述系統(tǒng)的虛擬化軟件的一部分。
31.如權(quán)利要求30所述的制造品,其中,所述數(shù)據(jù)是這樣的以致于所述寫入和讀取利用核心功能的調(diào)度策略來編程物理設(shè)備以分別在多個(gè)顯示窗口中再現(xiàn)和顯示來自所述客戶機(jī)接口的圖像。
32.如權(quán)利要求30所述的制造品,其中,所述數(shù)據(jù)是這樣的以致于它們編程所述物理設(shè)備以選擇與所述多個(gè)客戶機(jī)接口中的一個(gè)相關(guān)聯(lián)的哪個(gè)隊(duì)列把指令饋送給所述核心功能。
33.如權(quán)利要求30所述的制造品,其中,,所述數(shù)據(jù)是這樣的以致于所述寫入和讀取執(zhí)行所述物理設(shè)備上的電源管理操作。
34.如權(quán)利要求30所述的制造品,其中,所述數(shù)據(jù)是這樣的以致于所述寫入和讀取致力于把外部捕獲流路由到所述客戶機(jī)接口中的一個(gè)。
35.一種具有虛擬機(jī)能力的多處理器計(jì)算機(jī)系統(tǒng),其包括多個(gè)處理器;具有其中存儲(chǔ)了虛擬機(jī)監(jiān)控程序(VMM)的存儲(chǔ)器,其中所述VMM由所述處理器中的一個(gè)運(yùn)行,以分別管理所述系統(tǒng)中的多個(gè)虛擬機(jī)(VM)運(yùn)行多個(gè)客戶機(jī)程序;以及具有核心功能和多個(gè)硬件接口的I/O設(shè)備,它們中的每一個(gè)將它自身作為單獨(dú)的I/O設(shè)備提供給將在所述多個(gè)VM內(nèi)運(yùn)行的所述多個(gè)客戶機(jī)程序的相應(yīng)一個(gè),其中在彼此不知道以及在所述VMM不必在所述多個(gè)VM之間仲裁的的情況下,所述多個(gè)VM可同時(shí)經(jīng)由所述多個(gè)接口訪問所述I/O設(shè)備的核心功能。
全文摘要
一種物理設(shè)備具有要執(zhí)行計(jì)算機(jī)系統(tǒng)的核心I/O功能的核心功能電路。本發(fā)明提供了多客戶機(jī)接口電路,它們每個(gè)將其自身作為完整的設(shè)備提供給所述系統(tǒng)中的軟件客戶機(jī),以訪問核心功能電路。復(fù)用電路把所述客戶機(jī)接口耦合到核心I/O功能。本文還描述了其他實(shí)施例并要求其權(quán)利。
文檔編號G06F13/38GK1973274SQ200580021117
公開日2007年5月30日 申請日期2005年6月22日 優(yōu)先權(quán)日2004年6月30日
發(fā)明者M·A·戈德史密斯 申請人:英特爾公司