專利名稱:將用于虛擬化引擎的指令分頁調(diào)度到本地存儲設(shè)備的制作方法
技術(shù)領(lǐng)域:
本公開涉及信息處理領(lǐng)域,并且更具體地,涉及信息處理系統(tǒng)中的虛擬化領(lǐng)域。
背景技術(shù):
一般來說,信息處理系統(tǒng)中的虛擬化的概念允許一個或多個操作系統(tǒng)(每一個均 稱為“OS”)的多個實例在單個信息處理系統(tǒng)上運行,即便是每個OS都被設(shè)計為具有對該系 統(tǒng)及其資源的完全、直接的控制。通常通過以下方式來實現(xiàn)虛擬化使用軟件(例如,虛擬 機監(jiān)視器,或“VMM”)向每個OS呈現(xiàn)一個“虛擬機”(“VM”),該VM具有該OS可以完全且 直接控制的虛擬資源(包括一個或多個虛擬處理器),同時該VMM維護(hù)用于實現(xiàn)虛擬化策略 (例如,在各VM間共享和/或分配物理資源)的系統(tǒng)環(huán)境(“虛擬化環(huán)境”)。在VM上運行 的每個OS和任何其他軟件被稱為“客戶(guest)”或“客戶軟件”,而“宿主(host)”或“宿 主軟件”是諸如VMM這樣的運行在虛擬化環(huán)境外部的軟件。信息處理系統(tǒng)中的物理處理器可以例如通過支持指令進(jìn)入虛擬化環(huán)境來在VM中 的虛擬處理器(即,處于VMM施加的限制下的物理處理器)上運行客戶,來支持虛擬化。在 虛擬化環(huán)境中,特定事件、操作和情形(例如,外部中斷、或嘗試訪問特權(quán)寄存器或資源)可 以被截取(interc印t),S卩,使得處理器退出虛擬化環(huán)境,以便VMM可以例如進(jìn)行操作來實 現(xiàn)虛擬化策略。系統(tǒng)中諸如輸入/輸出設(shè)備控制器這樣的物理資源可以基于專門的目的而被指 派或分配給VM。可替代地,通過截取涉及物理資源的所有事務(wù)以使得VMM可以執(zhí)行、重定向 或限制每個事務(wù),該物理資源可以被多個VM共享。第三種方式可以是設(shè)計物理資源來為其 提供用作多個虛擬資源的能力。
在附圖中通過示例而非限制的方式說明了本發(fā)明。圖1說明了根據(jù)本發(fā)明實施例的將用于虛擬化引擎的指令分頁調(diào)度到本地存儲 設(shè)備的裝置。圖2說明了根據(jù)本發(fā)明實施例的將用于虛擬化引擎的指令分頁調(diào)度到本地存儲 設(shè)備的方法。
具體實施例方式如下面所描述的,可以在將用于虛擬化引擎的指令分頁調(diào)度(paging)到本地存 儲設(shè)備的裝置或方法中實施本發(fā)明。在說明書中,為了提供對本發(fā)明更透徹的理解,可能闡 述了許多具體細(xì)節(jié),例如組件和系統(tǒng)配置。然而,本領(lǐng)域技術(shù)人員將意識到,可以在沒有這 些具體細(xì)節(jié)的情況下實踐本發(fā)明。另外,一些公知的結(jié)構(gòu)、電路等并未詳細(xì)示出,以免不必 要地模糊了本發(fā)明的描述??赡芷谕麊蝹€物理設(shè)備控制器被多個虛擬機所共享,而無需VMM截取涉及該設(shè)備
3控制器的所有事務(wù)、或者重新設(shè)計該設(shè)備控制器以支持虛擬化。因此,本發(fā)明的實施例可以 用來支持通過虛擬化引擎進(jìn)行物理設(shè)備控制器的虛擬化。本發(fā)明的實施例的部件可以用硬件、軟件、固件或者硬件、軟件或固件的任意組合 來實現(xiàn)。術(shù)語硬件一般是指具有物理結(jié)構(gòu)的部件,例如,電、電磁、光學(xué)、電光、機械、機電部 件等。術(shù)語軟件一般是指邏輯結(jié)構(gòu)、方法、過程、程序、例程、處理、算法、公式、表達(dá)式等。術(shù) 語固件一般是指在硬件結(jié)構(gòu)(例如,閃速存儲器或只讀存儲器)中實現(xiàn)或?qū)嵤┑倪壿嫿Y(jié)構(gòu)、 方法、過程、程序、例程、處理、算法、公式、或表達(dá)式。固件的示例包括微碼、可寫控制存儲單 元和微編程結(jié)構(gòu)。圖1說明了根據(jù)本發(fā)明實施例的其中可以加入事務(wù)的信息處理系統(tǒng)100。信息處 理系統(tǒng)100包括裸平臺硬件110,其可以是能夠執(zhí)行任何OS、VMM或其他軟件的任何裝置。 例如,裸平臺硬件110可以是個人計算機、大型計算機、便攜式計算機、手持設(shè)備、機頂盒、 服務(wù)器或任何其他計算系統(tǒng)的硬件。在該實施例中,裸平臺硬件110包括處理器120、芯片 組130、系統(tǒng)存儲器140和設(shè)備控制器150。處理器120可以是具有一個或多個執(zhí)行核心的任何組件,其中每個執(zhí)行核心可以 基于多種不同類型的處理器中的任意一種,包括通用微處理器(例如,英特爾 奔騰⑧處 理器系列、安騰 處理器系列、或英特爾 公司的其他處理器系列中的處理器,或者其他公 司的其他處理器),數(shù)字信號處理器或微控制器。盡管圖1僅示出一個這樣的處理器120, 但是裸平臺硬件110可以包括任意數(shù)量的處理器,包括任意數(shù)量的多核處理器(每個都具 有任意數(shù)量的執(zhí)行核心),和任意數(shù)量的多線程處理器(每個都具有任意數(shù)量的線程)。芯片組130可以是電路和邏輯構(gòu)成的任意組,其支持存儲器操作、輸入/輸出操 作、配置、控制、內(nèi)部或外部接口、連接,或通信功能(例如,“膠合(glue)”邏輯和總線橋), 和/或用于處理器120和/或系統(tǒng)100的任何類似功能。芯片組130的單獨部件可以被一 同分組在單個芯片上、分組在一對芯片上、分散在多個芯片間,和/或被部分地、全部地、冗 余地、或者根據(jù)分布式方式而被集成到包括處理器120在內(nèi)的一個或多個處理器中。在該 實施例中,芯片組130包括虛擬化引擎132,用于如下面所描述的那樣根據(jù)本發(fā)明的實施例 對物理設(shè)備控制器進(jìn)行虛擬化。在其他實施例中,虛擬化引擎132可以被包括在系統(tǒng)100 中的其他位置中。系統(tǒng)存儲器140可以包括其上可以存儲諸如數(shù)據(jù)和/或指令這樣的信息的任何介 質(zhì),例如,靜態(tài)或動態(tài)隨機存取存儲器、基于半導(dǎo)體的只讀或閃速存儲器、磁盤或光盤存儲 器、或處理器120可讀的任何其他類型的介質(zhì)、或者這些介質(zhì)的任意組合。設(shè)備控制器150可以表示用于任何類型的I/O、外圍設(shè)備或可以被VM中運行的客 戶軟件使用的其他設(shè)備的控制器,例如,硬盤控制器、音頻控制器、網(wǎng)絡(luò)接口控制器、外圍總 線控制器等。設(shè)備控制器150可以用分立的組件來實施,或者可以與任何其他設(shè)備控制器 一起被包括在一個集成組件中。在一個實施例中,設(shè)備控制器150可以表示多功能I/O、外 圍設(shè)備或其他設(shè)備控制器中的功能。設(shè)備控制器150可以包括配置存儲設(shè)備152,其用于存 儲配置信息。在一個實施例中,設(shè)備控制器150可以是連接到硬盤驅(qū)動器154或者集成在 其中的硬盤控制器。處理器120、芯片組130、系統(tǒng)存儲器140和設(shè)備控制器150可以根據(jù)任何已知的 方式,例如通過一個或多個并行的、順序的、流水線化的、異步、同步的、有線的、無線的或其他的總線或點對點連接或通信手段,來直接或間接地相互耦合或通信。例如,在該實施例 中,處理器120和芯片組130可以通過接口 170耦合到系統(tǒng)存儲器140,并且芯片組130可 以通過接口 180耦合到設(shè)備控制器150。系統(tǒng)100還可以包括任意數(shù)量的額外的代理、組件 或連接。系統(tǒng)100還包括VMM 160和VM 162與164。VMM 160可以是所安裝的任何軟件、 固件或硬件宿主,用來在裸平臺硬件110上運行或者可被裸平臺硬件110訪問,以向客戶呈 現(xiàn)VM(即,裸平臺硬件110的抽象),或者用其他方式創(chuàng)建VM、管理VM、并在系統(tǒng)100內(nèi)實現(xiàn) 虛擬化策略。在其他實施例中,宿主可以是任何VMM、管理程序、0S,或者是能夠控制裸平臺 硬件110的其他軟件、固件或硬件??蛻艨梢允侨魏蜲S、任何VMM(包括VMM 160的其他實 例)、任何管理程序、或者任何應(yīng)用程序或其他軟件。每個客戶期望根據(jù)VM中呈現(xiàn)的處理器和平臺的架構(gòu)來訪問裸平臺硬件110或VMM 160所虛擬化的平臺的資源,例如,處理器和平臺寄存器、存儲器、以及輸入/輸出設(shè)備。圖 1示出了兩個VM 162和164,在每個VM上都可以安裝客戶OS和任意數(shù)量的客戶應(yīng)用程序。 盡管圖1示出了兩個VM,但是在本發(fā)明的范圍內(nèi),可以創(chuàng)建任意數(shù)量的VM,并且可以在每個 VM上安裝任意數(shù)量的客戶OS和客戶應(yīng)用程序來運行?;氐叫酒M130,虛擬化引擎132可以包括任何電路、邏輯或諸如固件這樣的其他 結(jié)構(gòu),以將物理設(shè)備控制器150表現(xiàn)為多個虛擬設(shè)備控制器,每一個虛擬設(shè)備控制器可以 被VMM 160分配給不同的VM。芯片組130還包括配置存儲設(shè)備134和本地存儲設(shè)備136。 配置存儲設(shè)備134和本地存儲設(shè)備136可以包括其上可以存儲信息的任何介質(zhì);例如,配置 存儲設(shè)備134可以包括可編程寄存器,而本地存儲設(shè)備136可以包括靜態(tài)隨機存取存儲器 (“SRAM”)。虛擬化引擎132可以從配置存儲設(shè)備134和/或本地存儲設(shè)備136讀取信息 和將信息寫入其中,以確定并維護(hù)與對物理設(shè)備控制器150進(jìn)行虛擬化相關(guān)的信息。另外,虛擬化引擎132可以執(zhí)行來自本地存儲設(shè)備136的指令。在一個實施例中, 本地存儲設(shè)備136可以是SRAM。為了節(jié)約成本,本地存儲設(shè)備136的大小可以小于虛擬化 引擎132要運行的代碼的總大小。虛擬化引擎132要運行的指令可以被存儲在諸如硬盤 154這樣的大容量存儲設(shè)備上,并且例如在來自設(shè)備控制器150的一個或多個直接存儲器 存取(“DMA”)事務(wù)中被拷貝到系統(tǒng)存儲器140。然后,這些指令的子集(例如,頁(page)) 可以按照需要被拷貝(例如,在DMA事務(wù)中)到本地存儲設(shè)備136,以供虛擬化引擎132執(zhí) 行。在執(zhí)行之后,這些子集可以在本地存儲設(shè)備136中被其他指令或數(shù)據(jù)替換。對于分頁 調(diào)度的控制可以被包括在位于虛擬化引擎132內(nèi)或者可被虛擬化引擎132訪問的固件中, 并且維護(hù)分頁調(diào)度處理所需的狀態(tài)信息可以被存儲在本地存儲設(shè)備136的不同區(qū)域內(nèi)??梢云谕麑⒈景l(fā)明的實施例用于虛擬化引擎132執(zhí)行指令,以支持不經(jīng)常進(jìn)行的 操作,例如,NAND閃速存儲器控制器進(jìn)行的塊擦除,或者硬盤控制器進(jìn)行的加密或解密。圖2說明了根據(jù)本發(fā)明的實施例的方法200,其中可以將虛擬化引擎要執(zhí)行的指 令分頁調(diào)度到本地存儲設(shè)備。在圖2的方法實施例的描述中,可以參照圖1的系統(tǒng)實施例 的部件;然而,本發(fā)明的方法實施例并不受此限制。在框210中,虛擬化引擎132被配置來對物理設(shè)備控制器150進(jìn)行虛擬化。在框 212中,虛擬化引擎132要執(zhí)行的指令被從硬盤154拷貝到系統(tǒng)存儲器140。在框214中,虛 擬化引擎132要執(zhí)行的指令的子集被從系統(tǒng)存儲器140拷貝到本地存儲器136。在框216中,該指令子集被虛擬化引擎132執(zhí)行。在框218中,從本地存儲器136中替換該指令子集。在本發(fā)明的范圍內(nèi),可以在以下情況下執(zhí)行方法200 省略了所示出的框、添加了 額外的框,或者對重排序的框、省略的框或額外的框進(jìn)行了組合。根據(jù)本發(fā)明的實施例設(shè)計的任何組件或組件的一部分都可以在從創(chuàng)建到仿真再 到制造的不同階段中被設(shè)計。表示一設(shè)計的數(shù)據(jù)可以以多種方式來表示該設(shè)計。首先,如 在仿真中很有幫助的,可以使用硬件描述語言或其他功能描述語言來表示硬件。附加地或 可替代地,可以在設(shè)計過程的一些階段生成具有邏輯和/或晶體管門的電路級模型。此外, 大多數(shù)設(shè)計在特定階段達(dá)到了可以用表示各種設(shè)備的物理布局的數(shù)據(jù)來對這些設(shè)計進(jìn)行 建模的級別。在使用常規(guī)半導(dǎo)體制造技術(shù)的情況下,表示設(shè)備布局模型的數(shù)據(jù)可以是這樣 的數(shù)據(jù),其規(guī)定了在用來生產(chǎn)集成電路的掩模的不同掩模層上各種特征的存在與否。在設(shè)計的任何表示方式中,數(shù)據(jù)可以被存儲在任何形式的機器可讀介質(zhì)中。被調(diào) 制或以其他方式產(chǎn)生的用來傳輸這樣的信息的光或電波、存儲器、或者諸如盤這樣的磁或 光存儲介質(zhì),都可以是所述機器可讀介質(zhì)。這些介質(zhì)中的任何一個都可以“承載”或“指示” 該設(shè)計、或者本發(fā)明的實施例中使用的其他信息。當(dāng)指示或承載信息的電載波被傳輸時,就 執(zhí)行電信號的拷貝、緩沖或重傳而言,是生成了新的拷貝。因此,通信提供商或網(wǎng)絡(luò)提供商 的動作可以構(gòu)成對實施本發(fā)明技術(shù)的諸如載波這樣的制品進(jìn)行了拷貝。由此公開了將用于虛擬化引擎的指令分頁調(diào)度到本地存儲設(shè)備的裝置、方法和系 統(tǒng)。盡管已經(jīng)描述了某些實施例并在附圖中對其進(jìn)行了示出,但是應(yīng)該理解,這些實施例僅 僅是說明性的,而非對本發(fā)明的廣泛范圍進(jìn)行限制,并且本發(fā)明并不限于所示出和描述的 特定構(gòu)造和布置,這是因為在學(xué)習(xí)了本公開內(nèi)容之后,本領(lǐng)域技術(shù)人員可以對它們進(jìn)行各 種其他修改。在諸如此類快速發(fā)展并且難以預(yù)測進(jìn)一步的進(jìn)步的技術(shù)領(lǐng)域,隨著不斷實現(xiàn) 的技術(shù)進(jìn)步的推動,所公開的實施例在布置和細(xì)節(jié)上可以容易被進(jìn)行修改,而不偏離本公 開的原理或所附權(quán)利要求的范圍。
權(quán)利要求
一種裝置,包括處理器;物理設(shè)備控制器,其被由所述處理器上安裝的虛擬機監(jiān)視器創(chuàng)建的多個虛擬機所共享;虛擬化引擎,用于將所述物理設(shè)備控制器表現(xiàn)為可用來分配給所述多個虛擬機的多個虛擬設(shè)備控制器;系統(tǒng)存儲器;以及本地存儲設(shè)備,其與所述物理存儲器分離,用于存儲從所述系統(tǒng)存儲器拷貝的指令,以供所述虛擬化引擎執(zhí)行。
全文摘要
本發(fā)明公開了將用于虛擬化引擎的指令分頁調(diào)度到本地存儲設(shè)備的裝置、方法和系統(tǒng)的實施例。在一個實施例中,一種裝置包括處理器、物理設(shè)備控制器、虛擬化引擎、系統(tǒng)存儲器和本地存儲設(shè)備。所述物理設(shè)備控制器被由處理器上安裝的虛擬機監(jiān)視器創(chuàng)建的多個虛擬機所共享。所述虛擬化引擎用于將所述物理設(shè)備控制器表現(xiàn)為可用來分配給所述多個虛擬機的多個虛擬設(shè)備控制器。所述本地存儲設(shè)備與物理存儲器分離,用于存儲從所述系統(tǒng)存儲器傳送來的指令,以供所述虛擬化引擎執(zhí)行。
文檔編號G06F9/50GK101982814SQ20091100019
公開日2011年3月2日 申請日期2009年12月25日 優(yōu)先權(quán)日2008年12月31日
發(fā)明者C·D·克拉爾, R·K·納拉瓦蒂, S·卡雷納哈里, Z·博金 申請人:英特爾公司