專利名稱:支持事務(wù)認證的硬件裝置接口的制作方法
支持事務(wù)認證的硬件裝置接口
背景技術(shù):
近年來,虛擬機技術(shù)的使用顯著增加。該技術(shù)在主機操作系統(tǒng)內(nèi)執(zhí)行模擬真實計 算機的軟件,真實計算機有時稱為“物理機”。物理機的該模擬有時稱為“虛擬機”??蜋C操 作系統(tǒng)能夠在虛擬機上運行,以及從客機操作系統(tǒng)的角度來看,虛擬機與物理機沒什么區(qū) 另|J。另外,虛擬機監(jiān)視軟件(有時稱為“超級監(jiān)視者(hypervisor)”)可以用作操作系統(tǒng)和 多個虛擬機之間的層,以允許多個操作系統(tǒng)并發(fā)地在多個虛擬機上運行,所有都由單個物 理機進行支持。超級監(jiān)視者用作每個虛擬機與物理機之間的協(xié)調(diào)和仲裁點,以確保各機之 間所需的隔離??赡芤驗楣δ茉?例如為了避免資源爭用)和因為安全性原因而需要這 種隔離。更快的機器以及更便宜的軟件使得虛擬機技術(shù)對于先前可能另外忽視了這種技 術(shù)的一群用戶富有吸引力且可行。但是隨著虛擬機的用戶數(shù)量的增加,這些用戶對于其性 能可處于與它們的物理對應物相當?shù)乃降奶摂M機的需求也隨之增加。滿足這些性能需求 已經(jīng)證明是挑戰(zhàn)性的,很大部分上歸因于虛擬機的很多低級功能使用軟件來實現(xiàn)的事實。 對于原應由對應的物理機以硬件執(zhí)行的操作,這種功能的軟件實現(xiàn)增加了顯著程度的等待 時間和開銷。由超級監(jiān)視者對單主機資源進行劃分、分派和管理也增加了開銷,所增加的開 銷進一步促成虛擬機和物理機之間的性能差異。
為了克服有時與超級監(jiān)視者相關(guān)聯(lián)的上述等待時間和開銷問題中的一些問題,已 經(jīng)開發(fā)出了一些計算機系統(tǒng)的互連結(jié)構(gòu)的基于硬件的擴展(例如對外圍部件互連或PCI的 擴展),其允許在超級監(jiān)視者下運行的客機操作系統(tǒng)在多個虛擬機之間共享的I/O裝置上 執(zhí)行直接的輸入和輸出(I/O)操作。但是,這些互連擴展缺乏當前在很多處理器上可用的 各類型的基于硬件的安全性和保護機制。這種基于硬件的處理器機制允許超級監(jiān)視者確保 在處理器上執(zhí)行操作的多個虛擬機之間的操作隔離,同時相較基于軟件的安全性和保護機 制減少了與實施這種隔離相關(guān)聯(lián)的開銷。
現(xiàn)在將參考附圖來對本發(fā)明的例示性實施例進行詳細描述。在這些附圖中圖1示出根據(jù)至少一些說明性實施例的計算機系統(tǒng)的功能圖,其中,該計算機系 統(tǒng)包括與多功能共享I/O裝置交互的多個虛擬機;圖2示出根據(jù)至少一些說明性實施例構(gòu)造的圖1的處理邏輯的詳細框圖;圖3示出根據(jù)至少一些說明性實施例構(gòu)造的圖1的多功能共享I/O裝置的詳細框 圖;以及圖4示出根據(jù)至少一些說明性實施例的在多個虛擬機使用的多功能共享I/O裝置 內(nèi)分派和隔離裝置功能的方法。符號和命名在下面的說明書和權(quán)利要求書各處使用某些術(shù)語來指代特定的系統(tǒng)部件。如本領(lǐng) 域技術(shù)人員將理解的,計算機公司可能用不同的名稱來指代部件。此文檔不打算區(qū)分名稱不同而功能相同的部件。在下面的討論中以及在權(quán)利要求書中,術(shù)語“包括”和“包含”以 開放的方式使用,并由此應該解釋為表示“包括,但是不局限于…”。此外,術(shù)語“耦合”意圖 表示間接的、直接的、光學或無線的電連接。因此,如果第一裝置耦合到第二裝置,則該連接 可以是通過直接電連接,通過經(jīng)由其他裝置和連接的間接電連接,通過光學電連接,或通過 無線電連接。另外,術(shù)語“系統(tǒng)”指的是兩個或更多個硬件和/或軟件部件的集合,以及可 以用于指代電子裝置,諸如計算機、計算機的一部分、計算機組合等。進一步地,術(shù)語“軟件” 包括能夠在處理器上運行的任何可執(zhí)行代碼,而不管用于存儲該軟件的介質(zhì)如何。因此,存 儲在非易失性存儲器中的并且有時稱為“嵌入固件”的代碼被包括在軟件的定義中。
具體實施例方式圖1示出了根據(jù)至少一些說明性實施例構(gòu)造的系統(tǒng)100的功能表示,該系統(tǒng)100 具有能夠支持多個虛擬機軟件程序的共享輸入/輸出(I/O)裝置250。多個虛擬機112、115 和118在虛擬化層120上執(zhí)行并與該虛擬化層120交互,所有這些都在處理邏輯200上執(zhí) 行。虛擬化層120可以是由處理邏輯200執(zhí)行的基本輸入輸出系統(tǒng)(Bi OS)軟件的部件, 與在操作系統(tǒng)上執(zhí)行的超級監(jiān)視者軟件交互的操作系統(tǒng)(OS)的部件,或者集成的超級監(jiān) 視者操作系統(tǒng)(例如圖1的主機超級監(jiān)視者操作系統(tǒng)(0S-0) 110)的部件。虛擬機112、115 和118的每一個以及主機超級監(jiān)視者操作系統(tǒng)110包括邏輯裝置驅(qū)動程序(Drvr 113、116、 119和122),所述邏輯裝置驅(qū)動程序由每個對應的虛擬機和主機OS用來提供經(jīng)由互連層級 結(jié)構(gòu)(interconnect hierarchy) 130對共享I/O裝置250的訪問??蜋C操作系統(tǒng)111、114 和117(0S-1、0S-2和0S-3)每一個分別在虛擬機112、115和118上執(zhí)行,并且每個經(jīng)由對 應的邏輯驅(qū)動程序(113、116和119)與互連層級結(jié)構(gòu)130交互。主機超級監(jiān)視者操作系統(tǒng) 110類似地經(jīng)由邏輯驅(qū)動程序122與共享I/O裝置250交互。
處理邏輯200包括根復合體(root complex) 230,其將處理邏輯200耦合到互連 層級結(jié)構(gòu)130 (例如擴展的外圍部件互連(PCI-X)總線或者PCI express (PCIe)總線),并 用作處理邏輯200內(nèi)的內(nèi)部部件與互連層級結(jié)構(gòu)130之間的互連接口。互連層級結(jié)構(gòu)130 進一步耦合到共享1/0裝置250的互連I/F 252,由此為處理邏輯200上執(zhí)行的操作系統(tǒng) 提供與由共享1/0裝置250暴露的各種功能交互的路徑。每種功能表示與其他功能獨立地 操作的共享1/0裝置250 (下面更詳細描述)的實例,每種功能包括該裝置的一些或全部能 力。圖1的虛線表示在每個操作系統(tǒng)與共享1/0裝置250的對應功能(F0到Fn)之間的邏 輯路徑。共享1/0裝置250進一步包括應用特定(application specific)邏輯254和裝 置特定(device specific)接口 256 (例如以太網(wǎng)接口),應用特定邏輯254耦合到互連I/ F 252,用于實現(xiàn)由該裝置執(zhí)行的功能(例如網(wǎng)絡(luò)接口功能),該裝置特定接口 256也耦合到 應用特定邏輯254。圖2示出了根據(jù)至少一些說明性實施例構(gòu)造的適于支持圖1的系統(tǒng)100的處理邏 輯200的詳細框圖。處理邏輯200包括處理器210,其能夠執(zhí)行加載到存儲器220上的軟件 程序。存儲器220經(jīng)由根復合體230耦合到處理器210,以及可以使用易失性存儲裝置(例 如隨機存取存儲器或RAM)或非易失性存儲裝置(例如硬盤)或易失性和非易失性存儲裝 置的組合來實現(xiàn)。虛擬機112是一種軟件程序,該軟件程序加載到存儲器220中,并在由主 機超級監(jiān)視者操作系統(tǒng)110提供的操作環(huán)境內(nèi)在處理器210上執(zhí)行。虛擬機經(jīng)由虛擬化層120與共享I/O裝置250交互,該虛擬化層120是主機超級監(jiān)視者操作系統(tǒng)110的部件。雖 然圖2中示出了僅僅一個虛擬機,但是可以在處理邏輯200內(nèi)并發(fā)執(zhí)行多個虛擬機,如圖1 所示。繼續(xù)參考圖2,主機超級監(jiān)視者操作系統(tǒng)(OS-O) 110也駐留在存儲器220內(nèi),并在 處理器210上執(zhí)行,經(jīng)由裝置驅(qū)動程序122和虛擬化層120與共享I/O裝置250交互。處 理器210耦合到根復合體230,該根復合體230用作處理器210和互連層級結(jié)構(gòu)130 (例 如PCI-X總線或PCI Express總線)之間的互連接口或橋,所述互連層級結(jié)構(gòu)130包括 一個或多個通信分組交換機(switch)(例如交換機135)。虛擬機112包括客機操作系統(tǒng) (OS-I) 111,其經(jīng)由裝置驅(qū)動程序(Drvr) 113、虛擬根復合體(vRC) 222、虛擬互連層級結(jié)構(gòu) 224和虛擬裝置(vDev) 226與共享I/O裝置250的一個或多個功能的虛擬化表示進行交互。 在圖2的說明性實施例中,虛擬根復合體222、虛擬互連層級結(jié)構(gòu)224和虛擬裝置226每一 個均以軟件實現(xiàn)為虛擬機112的部件。圖3示出根據(jù)至少一些說明性實施例構(gòu)造的共享I/O裝置250的詳細框圖。共享 I/O裝置250包括互連接口(I/F) 252,該互連接口 252將共享I/O裝置250耦合到互連層 級結(jié)構(gòu)130?;ミBI/F 252還耦合到應用特定邏輯254,該應用特定邏輯254包括處理邏輯 257和裝置特定硬件258。處理邏輯257實現(xiàn)共享I/O裝置250的至少一些功能。處理邏 輯257可以以硬件實現(xiàn)(例如實現(xiàn)為可編程邏輯陣列)、以軟件實現(xiàn)(例如實現(xiàn)為嵌入式固 件或處理器上執(zhí)行的微代碼),或使用硬件和軟件的組合來實現(xiàn)。處理邏輯257耦合到互連 I/F 252以及耦合到裝置特定硬件258,允許處理邏輯257經(jīng)由互連層級結(jié)構(gòu)130將共享I/ O裝置250的功能暴露給其他硬件和軟件(例如暴露給在圖1的處理器210上執(zhí)行的虛擬 機)。 通過暴露有時稱為共享I/O裝置250的“功能”的內(nèi)容,在多個虛擬機之中共享說 明性實施例的共享I/O裝置250。每個功能表示經(jīng)由互連層級結(jié)構(gòu)130暴露給其他硬件和 軟件的一組能力。這些能力對于每個功能可以相同或者不同。功能出現(xiàn)在互連層級結(jié)構(gòu) 130上,就像它是具有為該功能限定的能力的獨特裝置。在基于PC I的系統(tǒng)的上下文中,例 如,每個功能具有與之相關(guān)聯(lián)的PCI裝置地址。雖然所描述的說明性實施例包括基于硬件 的裝置功能,本領(lǐng)域普通技術(shù)人員將認識到,其他說明性實施例可以包括虛擬化的裝置功 能(例如在PCI特殊興趣組(PCI-SIG)輸入/輸出虛擬化(IOV)規(guī)范中描述的本地虛擬裝 置功能),以及所有這些裝置功能在本公開的范圍內(nèi)。在系統(tǒng)(例如圖2的系統(tǒng)200)的重置之后,在總線初始化期間,對基于PCI的裝 置分配地址,該過程有時稱為枚舉(enumeration)。在枚舉期間,PCI根復合體的主控器掃 描PCI總線來確定存在什么裝置,確定它們的能力是什么,以及對每個識別的裝置分配地 址。在圖2的說明性實施例中,處理器210掃描互連層級結(jié)構(gòu)130來尋找耦合到該互連的 裝置。當遇到共享I/O裝置250時,作為枚舉進程的一部分,在處理器210上執(zhí)行的枚舉軟 件(未示出)執(zhí)行PCI配置寫入,其向該裝置分配地址。在共享I/O裝置250內(nèi)的控制寄 存器的一個或多個控制位(未示出)可以在配置寫入期間設(shè)置,從而將共享I/O裝置250 置于“源鎖存”模式,所述“源鎖存”模式使得共享裝置鎖存寫入源的標識符,以及在重置后 的后續(xù)配置寫入,如下描述。當上述配置寫入在互連重置(例如在PCI總線上的總線級別硬件重置)之后發(fā)生,并且(作為當前配置寫入或先前配置寫入的結(jié)果)共享I/O裝置被配置處于源鎖存模 式時,由共享I/O裝置識別并保存該寫入的源或始發(fā)者。在至少一些說明性實施例中,寫入 的源或始發(fā)者包括在處理器210上執(zhí)行的特權(quán)軟件。這種特權(quán)軟件可以包括操作系統(tǒng)、超 級監(jiān)視者操作系統(tǒng)、或基本輸入輸出系統(tǒng)(BIOS)軟件。在基于PCI的系統(tǒng)的上下文中,例 如,說明性實施例的共享I/O裝置250保存PCI配置寫入事務(wù)(transaction)內(nèi)的識別字 段的內(nèi)容,該識別字段稱為請求ID(RID)字段。該RID字段包括在總線130的總線層級結(jié) 構(gòu)限定的地址空間內(nèi)唯一識別事務(wù)源(在此情況下為處理器210)的標識符。通過在系統(tǒng) 重置后將配置寫入的RID保存到共享I/O裝置250,該共享I/O裝置能夠使用后續(xù)事務(wù)的 RID字段來認證事務(wù)的源(例如總線控制器或特權(quán)軟件)。一旦在處理器(例如處理器210)上執(zhí)行并控制互連層級結(jié)構(gòu)(例如互連層級結(jié) 構(gòu)130)的特權(quán)軟件使得共享I/O裝置250鎖存與該處理器/特權(quán)軟件相關(guān)聯(lián)的RID,該特 權(quán)軟件然后就可以將共享I/O裝置的一個或多個功能與除了它自己的RID之外的附加特定 RID相關(guān)聯(lián)。該附加特定RID,一旦被如下所述地鎖存,就允許將每個功能作為獨特裝置而 對其進行非特權(quán)訪問,所述每個功能僅能夠由與特權(quán)軟件分配給該功能的特定RID相關(guān)聯(lián) 的源或由特權(quán)軟件自身(經(jīng)由特權(quán)軟件的鎖存RID)訪問。例如,如果共享I/O裝置250接 收請求訪問該裝置的功能的事務(wù),但是RID字段不匹配與該功能相關(guān)聯(lián)的RID (或者與特權(quán) 軟件相關(guān)聯(lián)的RID),則該事務(wù)被當作異常狀況且不予接受??梢院唵蔚夭辉试S并忽視該事 務(wù)(導致總線超時),或能夠生成異常,將所嘗試的訪問標記為安全性侵害。因為特權(quán)軟件是在圖2的處理器210上執(zhí)行的第一軟件,該特權(quán)軟件“擁有”系統(tǒng) 100的物理資源。該特權(quán)軟件可以被視為將系統(tǒng)的物理資源分派給其他軟件應用(例如分 配給圖1的虛擬機)的“可信”代理。特權(quán)軟件可以通過數(shù)種機制中的一種機制配置共享I/ 0裝置250的每個功能并對共享I/O裝置250的每個功能實施控制。在至少一個說明性實 施例中,每個功能將對于某些操作、寄存器或存儲區(qū)(例如與PCI裝置的功能相關(guān)聯(lián)的PCI 配置空間)的訪問限制到僅僅特權(quán)軟件(經(jīng)由鎖存的RID)。在其他說明性實施例(例如圖 1-3中所示的實施例)中,功能0被保留為僅能由特權(quán)軟件(經(jīng)由鎖存的RID)訪問的監(jiān)控 功能。雖然特權(quán)軟件仍可以訪問其他非零功能(例如以修護所有功能共有的異常狀況),但 是非特權(quán)軟件被阻止訪問功能0。功能0由此允許特權(quán)軟件執(zhí)行監(jiān)控操作,而無需直接訪問 其他功能。這些監(jiān)控操作能夠包括共享I/O裝置250的一般控制、配置和狀態(tài),以及該裝置 的非零功能的控制、配置和狀態(tài)。處理器210與共享I/O裝置的功能0的配對創(chuàng)建了有時所稱的“劃分”(在此情況 下為監(jiān)控劃分)。通過將總線的兩個端點(這里是處理器210和共享I/O裝置250的功能 0)配對,來創(chuàng)建劃分。在至少一些說明性實施例中,監(jiān)控劃分對于多功能裝置是唯一的,因 為其不僅包括功能0還包括所有其他非零功能。通過將其他端點(例如圖1的虛擬機112、 115和118)與共享I/O裝置250的其他非零功能配對,來創(chuàng)建其他非監(jiān)控劃分。當特權(quán)軟 件將非零功能與例如分配給圖1的其中一個虛擬機的RID相關(guān)聯(lián)時,該非零功能在該虛擬 機內(nèi)作為具有唯一(unique)的基本功能0的虛擬裝置而被暴露。因此,參考圖1和2,共享 I/O裝置250的功能1在虛擬機112內(nèi)表現(xiàn)為虛擬裝置226的功能0,以及經(jīng)由虛擬互連層 級結(jié)構(gòu)224耦合到虛擬根復合體222。系統(tǒng)100的多個虛擬機內(nèi)的虛擬根復合體的創(chuàng)建可 以被視為系統(tǒng)100的真實、物理根復合體230的共享。驅(qū)動程序113向客機操作系統(tǒng)111提供到虛擬裝置226的接口。以這種方式,共享I/O裝置250的功能1被作為真實、非共享 的裝置暴露給客機操作系統(tǒng)111,如從虛擬機112的角度所看到的。由特權(quán)軟件分配給虛擬 根復合體222的RID與共享I/O裝置250的功能1的配對定義了與虛擬機112唯一相關(guān)聯(lián) 的劃分。如已經(jīng)指出的,在處理器210上執(zhí)行的特權(quán)軟件向也在處理器210上執(zhí)行的每個 虛擬機分配RID。在至少一些說明性實施例中,當特權(quán)軟件最初將RID分配給每個裝置時 (例如在先前描述的PCI枚舉過程期間),該特權(quán)軟件保留一定范圍的RID。這些RID被 留出以供處理器210上執(zhí)行的虛擬機稍后使用??梢允褂脭?shù)種機制中的一種機制將源自 每個虛擬機(例如圖1的虛擬機112、115和118)的事務(wù)呈現(xiàn)在互連層級結(jié)構(gòu)130上,其 中RID對應于特定虛擬機(例如圖2的虛擬機112)。在至少一些說明性實施例中,處理 器210能夠?qū)⑻幚砥魃蠄?zhí)行的軟件應用與特定RID相關(guān)聯(lián),以及作為在應用之間的上下文 切換的一部分,能夠當在互連層級結(jié)構(gòu)130 (例如PCIe總線)上傳輸事務(wù)時設(shè)置真實根復 合體(例如圖2的根復合體230)使用的RID的值。這種處理器的示例包括來自Intel 的vPro 、Xeon :和Itaniumi 處理器族(利用Intel 虛擬化技術(shù)或IVT,以及有時稱為 “Vanderpool”擴展),以及來自AdvancedMicro Devices 的基于AMD64的處理器系列(利 用 AMD-Virtualization 或 AMD-V ,有時稱為 “Pacifica” 擴展)。在至少一些說明性實施例中,處理器210不具有當經(jīng)過互連層級結(jié)構(gòu)130傳輸事 務(wù)時改變真實根復合體使用的RID的能力。在至少一些這樣的實施例中,在互連層級結(jié)構(gòu) 130內(nèi)的至少一個通信分組交換機(例如PCI Express交換機)由特權(quán)軟件配置為將源自 根復合體230的事務(wù)的RID替換為另一 RID。替換后的RID根據(jù)事務(wù)的目標裝置地址或目 標ID(TID)來確定。如果TID對應于如之前描述的與虛擬機相關(guān)聯(lián)的裝置或裝置的功能, 事務(wù)的原始RID將被替換為分配給與該裝置或功能相關(guān)聯(lián)的虛擬機的RID。以這種方式,該 裝置或裝置功能將接收具有唯一識別事務(wù)的真實源(例如圖2的虛擬機112)的RID的事 務(wù)。在至少一些說明性實施例中,如所述的能夠進行RID替換的通信分組交換機(例如圖2 的交換機135)被耦合到根復合體230,在該通信分組交換機與該根復合體之間沒有其他中 間交換機。通過如圖2所示將根復合體230耦合到交換機135,在處理邏輯200和互連130 之間的事務(wù)通過兩個“可信”實體(也就是根復合體230和交換機135)進行交換,該兩個 “可信”實體中的每一個保護事務(wù)的完整性(例如PCIe事務(wù)的RID和TID字段的有效性)。如已經(jīng)指出的,每個虛擬機具有與之相關(guān)聯(lián)的虛擬裝置,該虛擬裝置提供對互連 層級結(jié)構(gòu)130的訪問。每個虛擬裝置表示互連層級結(jié)構(gòu)端點,以及具有與之相關(guān)聯(lián)的唯一 地址,并由此具有與之相關(guān)聯(lián)的唯一請求標識符。繼續(xù)參考圖1和圖2,在至少一些說明性 實施例中,當虛擬機首次在處理器210上執(zhí)行時,作為它自己的虛擬總線初始化序列的一 部分,虛擬機訪問共享1/0裝置250的其中一個功能代碼,所述功能代碼先前作為虛擬機的 配置定義的一部分與特權(quán)軟件分配給虛擬機的虛擬根復合體的RID相關(guān)聯(lián)。將配置寫入傳 輸給指定為虛擬機的配置的一部分的共享1/0裝置250的功能代碼,并且結(jié)果將該功能分 配給虛擬機。例如,當在處理器210上執(zhí)行虛擬機112時,虛擬總線初始化序列導致將配置寫入 事務(wù)發(fā)到共享1/0裝置250的功能代碼1。在此示例中,功能代碼1被指定為虛擬機112的 配置的一部分。所述配置寫入導致將互連層級結(jié)構(gòu)130的地址空間內(nèi)的地址分配給功能代碼1。此地址進一步由驅(qū)動程序113映射到虛擬機112的虛擬總線的地址空間中。因為對 功能1的配置寫入是自重置后的首次寫入,因此由虛擬機112發(fā)起的寫入事務(wù)的RID由共 享I/O裝置250進行保存,由此將功能1唯一地分配給虛擬機112的虛擬根復合體的RID。 當向功能1發(fā)送后續(xù)事務(wù)時,如果事務(wù)的RID字段不匹配所保存的用于功能1的根復合體 RID (也就是該事務(wù)不源自虛擬機112),則不允許該事務(wù)并生成異常(由特權(quán)軟件處理),如 之前描述的。類似地,附加的虛擬機能夠與共享I/O裝置250的附加功能相關(guān)聯(lián)。因為每個功能 表現(xiàn)為獨特的裝置,所以每個虛擬機進行操作如同它具有自己的獨特的I/O裝置,所述I/O 裝置具有為分配給對應虛擬機的共享I/O裝置250的功能而定義的功能。因此,能夠配置 為并發(fā)地使用共享I/O裝置250的虛擬機的數(shù)量等于在共享I/O裝置250上可用的功能的 總數(shù)量減1 (排除監(jiān)控功能0)。虛擬機與共享I/O裝置250的功能的每個關(guān)聯(lián)都定義了劃 分,其中劃分號反映了功能號(例如劃分3和虛擬機與共享I/O裝置250的功能3的配對 相關(guān)聯(lián))。如已經(jīng)指出的,在至少一些說明性實施例中,基于在重置后的首次配置寫入的 RID,將功能代碼與RID(并由此與虛擬機)相關(guān)聯(lián)。該重置可以是一般的系統(tǒng)重置,或僅與 一個功能相關(guān)聯(lián)的重置(有時稱為“功能級別重置”或FLR)。功能的關(guān)聯(lián)能夠以下述兩種 方式中的至少一種方式來改變1)系統(tǒng)重置,且所有關(guān)聯(lián)被清除;或2)發(fā)出對特定功能的 功能級別重置,以及清除用于該特定功能的RID-功能關(guān)聯(lián)。一旦清除了用于特定功能的關(guān) 聯(lián)(例如在關(guān)閉先前與該功能相關(guān)聯(lián)的虛擬機并發(fā)出該功能的功能級別重置之后),對該 功能的下一個配置寫入將基于在該FLR之后接收的配置寫入事務(wù)的RID字段來創(chuàng)建新的關(guān) 聯(lián)。通過將對共享I/O裝置250的給定功能的訪問限制到僅僅源自具有匹配為該功能 保存的RID的RID的虛擬機的事務(wù),每個功能保持虛擬機在虛擬機程序自身的界限外部的 資源之間的隔離,而無需超級監(jiān)視者來監(jiān)視并截獲從一個虛擬機到分派給另一虛擬機的資 源的未授權(quán)事務(wù)。利用支持鏈接到軟件棧(例如圖1的超級監(jiān)視者主機操作系統(tǒng)110內(nèi)的 特權(quán)軟件)的硬件劃分的協(xié)議,而跨互連層級結(jié)構(gòu)保持并實施隔離。資源(這里是共享1/ 0裝置250)有效地以硬件管理其自己接收的事務(wù),由此減少與在超級監(jiān)視者軟件內(nèi)實施事 務(wù)隔離和安全性相關(guān)聯(lián)的開銷。進一步地,在資源處基于硬件的隔離和安全性的實施還用于擴展合并了該資源的 系統(tǒng)(例如圖1的系統(tǒng)100)的總體能力,方式是通過即使相同系統(tǒng)內(nèi)的其他資源不安全也 允許該系統(tǒng)的至少一些資源的安全操作。因為自管理資源驗證所有接收的事務(wù),所以不需 要由超級監(jiān)視者或其他特權(quán)軟件來截獲和/或監(jiān)視事務(wù)。因此,在超級監(jiān)視者或其他特權(quán) 軟件的保護范圍之外的未授權(quán)事務(wù)(例如經(jīng)過超出圖1的根復合體230的邊界的中間通信 分組交換機和總線層級結(jié)構(gòu)段傳輸?shù)氖聞?wù))被不允許且不被充當總線層級結(jié)構(gòu)內(nèi)的端點 的自管理資源所接受。圖4示出根據(jù)至少一些說明性實施例的用于在共享多功能裝置內(nèi)分派和隔離功 能的方法300。虛擬機將事務(wù)傳輸?shù)焦蚕硌b置的功能(框302),并且檢查該事務(wù)以確定該 事務(wù)是否是配置寫入事務(wù)(框304)。如果該事務(wù)是配置寫入,并且進一步如果它是自系統(tǒng) 重置或功能級別重置后的首次配置寫入(框306),則保存該事務(wù)的RID并將該RID與該功能相關(guān)聯(lián)(框308),結(jié)束該方法(框316)。如果該事務(wù)是配置寫入(框304)但其不是自 重置后的首次配置寫入(框306),則該事務(wù)被不允許且被標記(框310),結(jié)束該方法(框 316)。如果由虛擬機傳輸?shù)氖聞?wù)不是配置寫入(框304),且該事務(wù)RID匹配先前為該功 能保存的RID(框312),則允許該事務(wù)(框314),結(jié)束該方法(框316)。如果由虛擬機傳 輸?shù)氖聞?wù)不是配置寫入(框304),但是該事務(wù)RID不匹配先前保存的與該功能相關(guān)聯(lián)的 RID (框312),則該事務(wù)被不允許且被標記(框310),完成該方法。上述討論意圖對本發(fā)明的原理和各個實施例進行說明。一旦完全理解了上面的公 開內(nèi)容,對于本領(lǐng)域技術(shù)人員來說,許多變化和修改是顯而易見的。例如,雖然所述實施例 包括單處理器系統(tǒng),但是所述系統(tǒng)和方法也可以在多處理器或甚至多主機系統(tǒng)(例如刀片 服務(wù)器)中實現(xiàn)。此外,雖然說明性實施例是在基于PCI的系統(tǒng)的上下文中描述的,但是所 述系統(tǒng)和方法也可以使用其他總線和/或利用具有唯一源標識符的事務(wù)的網(wǎng)絡(luò)交換結(jié)構(gòu) 體系架構(gòu)來實現(xiàn)。并且,雖然本公開的說明性實施例描述了將RID、裝置和裝置功能與虛擬 機軟件程序相關(guān)聯(lián),但是此種關(guān)聯(lián)不局限于虛擬機軟件程序,并且所述RID、裝置和裝置功 能可以與在諸如描述的說明性實施例中的那些之類的處理邏輯和處理器上執(zhí)行的任何軟 件程序相關(guān)聯(lián)。意圖將以下的權(quán)利要求書解釋為包括所有這樣的變化和修改。
權(quán)利要求
一種裝置(250),包括互連接口(252);以及耦合到所述互連接口的處理邏輯(257),其提供通過所述互連接口對于所述裝置的多個功能的訪問;其中,由所述裝置接收的并與所述多個功能中的功能相關(guān)聯(lián)的第一事務(wù)使得將所述第一事務(wù)內(nèi)的請求標識符分配給所述功能;以及其中,如果在所述第一事務(wù)之后的第二事務(wù)的請求標識符不匹配分配給所述功能的所述請求標識符,則拒絕對于所述功能的訪問。
2.根據(jù)權(quán)利要求1所述的裝置,其中,在所述裝置接收所述第一事務(wù)之前重置所述裝 置(250)的至少一部分。
3.根據(jù)權(quán)利要求1所述的裝置,其中,所述第一事務(wù)的請求標識符到所述功能的分配 在不首先執(zhí)行所述裝置(250)的至少一部分的重置的情況下不能被改變。
4.一種計算機系統(tǒng),包括處理器,其執(zhí)行多個軟件程序;包括處理邏輯(257)的裝置(250),其中,所述處理邏輯允許所述多個軟件程序訪問所 述裝置的多個功能中的一個或多個功能;以及 將所述處理器耦合到所述裝置的互連;其中,與所述裝置的功能相關(guān)聯(lián)并且源自所述多個軟件程序中的第一軟件程序的第一 事務(wù)被傳輸?shù)剿鲅b置,并使得將所述第一事務(wù)內(nèi)的第一請求標識符分配給所述功能;以 及其中,如果第二后續(xù)事務(wù)內(nèi)的第二請求標識符不匹配所述第一請求標識符,則拒絕對 于所述功能的訪問。
5.根據(jù)權(quán)利要求4所述的計算機系統(tǒng),其中,所述第二后續(xù)事務(wù)源自所述多個軟件程 序中的第二軟件程序。
6.根據(jù)權(quán)利要求4所述的計算機系統(tǒng),還包括耦合到所述處理器和所述互連的橋,其 中,所述橋?qū)⑺龅谝徽埱髽俗R符設(shè)置為與所述第一軟件程序相關(guān)聯(lián)的值。
7.根據(jù)權(quán)利要求4所述的計算機系統(tǒng),其中,所述互連包括通信分組交換機,以及其 中,所述通信分組交換機將所述第一請求標識符設(shè)置為與所述第一軟件程序相關(guān)聯(lián)的值。
8.一種方法,包括第一軟件程序向裝置(250)的功能傳輸?shù)谝皇聞?wù),所述第一事務(wù)包括第一請求標識符;所述裝置將所述第一請求標識符分配給所述功能;第二軟件程序向裝置的所述功能傳輸?shù)诙聞?wù),所述第二事務(wù)包括第二請求標識符;以及如果所述第二請求標識符不匹配所述第一請求標識符,則所述裝置不允許所述第二軟 件程序訪問所述裝置。
9.根據(jù)權(quán)利要求8所述的方法,還包括在執(zhí)行重置之后、在傳輸任何其他事務(wù)之前,傳輸所述第一事務(wù); 用為零的功能標識符指定監(jiān)控功能,所述功能包括所述監(jiān)控功能;以及用唯一的非零功能標識符指定所述裝置(250)的所有剩余功能。
10.根據(jù)權(quán)利要求8所述的方法,還包括防止向所述功能分配另一請求標識符,直到 執(zhí)行所述裝置(250)的至少一部分的重置之后。
全文摘要
本文描述了支持事務(wù)認證的硬件裝置接口。至少一些說明性實施例包括裝置(250),其包括互連接口(252)以及提供通過該互連接口對所述裝置的多個功能的訪問的處理邏輯(257)(耦合到總線接口(252))。由裝置(250)接收并與所述多個功能中的功能相關(guān)聯(lián)的第一事務(wù)使得將第一事務(wù)內(nèi)的請求標識符分配給該功能。如果在第一事務(wù)之后的第二事務(wù)的請求標識符不匹配分配給該功能的請求標識符,則拒絕對于該功能的訪問。
文檔編號G06F17/00GK101842784SQ200880113939
公開日2010年9月22日 申請日期2008年9月19日 優(yōu)先權(quán)日2007年10月31日
發(fā)明者D·D·賴利 申請人:惠普開發(fā)有限公司