客戶虛擬機(jī)內(nèi)的虛擬輸入/輸出存儲(chǔ)器管理單元的制作方法
【專利說明】
【背景技術(shù)】領(lǐng)域
[0001]所公開的實(shí)施方案一般涉及計(jì)算機(jī)系統(tǒng),并具體涉及輸入/輸出(I/O)設(shè)備的存儲(chǔ)器管理單元。
【背景技術(shù)】
[0002]在現(xiàn)代社會(huì)中,各種類型的計(jì)算機(jī)系統(tǒng)是十分普遍的,包括個(gè)人計(jì)算機(jī)(PC)、工作站、服務(wù)器、各種個(gè)人數(shù)字助理(PDA)設(shè)備等。這些計(jì)算機(jī)系統(tǒng)中的大多數(shù),如果不是所有的話,已經(jīng)實(shí)現(xiàn)了用于處理器訪問存儲(chǔ)器的存儲(chǔ)器管理功能。通常,存儲(chǔ)器管理功能包括從每個(gè)進(jìn)程使用的虛擬地址空間到跨越真實(shí)系統(tǒng)存儲(chǔ)器的物理地址空間的地址轉(zhuǎn)換,以及各種存儲(chǔ)器保護(hù)(例如,只讀、讀/寫、特權(quán)層次需求等等)。存儲(chǔ)器管理功能具有多種用途,諸如保護(hù)每個(gè)進(jìn)程所使用的存儲(chǔ)器不被其他進(jìn)程進(jìn)行未授權(quán)的訪問、即使物理存儲(chǔ)器系統(tǒng)沒有那么大也允許進(jìn)程使用大虛擬空間以及將虛擬地址再定位到可用物理存儲(chǔ)器而沒有進(jìn)程的參與等等。
[0003]如同被經(jīng)常轉(zhuǎn)換的處理器地址,還可轉(zhuǎn)換計(jì)算機(jī)系統(tǒng)中輸入/輸出(I/O)設(shè)備所使用的地址。即,I/o設(shè)備可使用虛擬地址而不是物理地址以訪問存儲(chǔ)器。由于使用虛擬地址改善系統(tǒng)的整體安全性,因此在現(xiàn)今系統(tǒng)中設(shè)備優(yōu)選地使用虛擬地址而不是物理地址。非法設(shè)備(或由惡意軟件代理編程的設(shè)備)對(duì)物理地址的使用將導(dǎo)致受阻的存儲(chǔ)器訪問。
[0004]在單個(gè)操作系統(tǒng)(OS)計(jì)算機(jī)系統(tǒng)中,諸如大多數(shù)PC,OS控制其它進(jìn)程(應(yīng)用和OS服務(wù))到I/O設(shè)備的訪問。因此,OS可控制哪一進(jìn)程在任何給定時(shí)間點(diǎn)訪問給定設(shè)備,并且可至少一定程度上控制設(shè)備訪問的地址。虛擬機(jī)器系統(tǒng)更加復(fù)雜,因?yàn)樗鼈兙哂性谔摂M機(jī)監(jiān)視器上運(yùn)行的多個(gè)客戶OS。在虛擬化系統(tǒng)中,許多應(yīng)用和I/O設(shè)備通過使用虛擬地址訪問物理存儲(chǔ)器。I/O存儲(chǔ)器單元耦合到I/O設(shè)備和系統(tǒng)存儲(chǔ)器,其中1MMU經(jīng)配置將設(shè)備存儲(chǔ)器請(qǐng)求中的虛擬地址轉(zhuǎn)換為物理地址,以訪問物理系統(tǒng)存儲(chǔ)器。
[0005]現(xiàn)代計(jì)算環(huán)境包括虛擬機(jī)(VM)環(huán)境,其中多個(gè)VM可作為分離的邏輯操作實(shí)體在單個(gè)處理器系統(tǒng)上執(zhí)行。通常,這些邏輯上分離的VM共享處理器系統(tǒng)的共同資源,諸如硬件設(shè)備和設(shè)備驅(qū)動(dòng)器。為了管理這些多個(gè)VM的共存并實(shí)現(xiàn)與共同資源以及在這些VM之間交換信息,VM環(huán)境通常使用虛擬機(jī)監(jiān)視器(VMM)或超級(jí)監(jiān)督者。
[0006]安全性和穩(wěn)定性為大多數(shù)計(jì)算機(jī)系統(tǒng)中的重要問題,并且特別是對(duì)于VM環(huán)境。在傳統(tǒng)計(jì)算機(jī)系統(tǒng)中,外圍設(shè)備以及它們所關(guān)聯(lián)的設(shè)備驅(qū)動(dòng)器具有到存儲(chǔ)器的自由及不受限制的訪問。該種不受限制的訪問意味著損壞或者發(fā)生故障的設(shè)備或設(shè)備驅(qū)動(dòng)器可在存儲(chǔ)器中的任何位置中寫入,無論該存儲(chǔ)器位置是否已被閑置出以被該外圍使用。如果被閑置用于操作系統(tǒng)使用的存儲(chǔ)器位置被發(fā)生故障的設(shè)備重寫,則將幾乎不可避免地導(dǎo)致系統(tǒng)崩潰。計(jì)算機(jī)系統(tǒng)使用者需要穩(wěn)定性,并且尋求使由于存儲(chǔ)器損壞而導(dǎo)致的系統(tǒng)崩潰最小化。
【發(fā)明內(nèi)容】
[0007]需要在分配到每個(gè)外圍設(shè)備及其關(guān)聯(lián)驅(qū)動(dòng)器的存儲(chǔ)器周圍構(gòu)造防火墻,以防止不正當(dāng)?shù)拇鎯?chǔ)器訪問。進(jìn)一步需要的是VM內(nèi)的虛擬1MMU,以防止VM環(huán)境中的不正當(dāng)存儲(chǔ)器訪問。進(jìn)一步需要的是實(shí)施該類防火墻,使得所得輸入/輸出響應(yīng)適當(dāng)?shù)乜焖佟?br>[0008]在一些實(shí)施方案中,提供了客戶VM內(nèi)的虛擬化1MMU。虛擬1MMU使用包括客戶頁(yè)表、主機(jī)頁(yè)表和一般控制寄存器(即,GCR3)表的數(shù)據(jù)結(jié)構(gòu)??蛻繇?yè)表在硬件中實(shí)施以便支持虛擬1MMU的速度需求。使用存儲(chǔ)在設(shè)備表中的虛擬設(shè)備ID參數(shù)對(duì)GCR3表索引??蛻繇?yè)表和主機(jī)頁(yè)表的格式完全相同,其中設(shè)備表中的控制位用于在不同的客戶頁(yè)表用途之間進(jìn)行區(qū)分。
[0009]下面參考隨附附圖詳細(xì)描述所公開實(shí)施方案的進(jìn)一步實(shí)施方案、特征和優(yōu)點(diǎn)以及各種實(shí)施方案的結(jié)構(gòu)和操作。
【附圖說明】
[0010]并入本文并組成說明書的部分的隨附附圖示出所公開的實(shí)施方案,并與描述一起進(jìn)一步用來解釋所公開實(shí)施方案的原理以及使相關(guān)領(lǐng)域技術(shù)人員作出并使用所公開的實(shí)施方案。
[0011]圖1根據(jù)一些實(shí)施方案示出計(jì)算機(jī)系統(tǒng)。
[0012]圖2根據(jù)一些實(shí)施方案示出1MMU體系結(jié)構(gòu)。
[0013]圖3根據(jù)一些實(shí)施方案提供示出輸入/輸出(I/O)設(shè)備使用虛擬1MMU訪問存儲(chǔ)器的方法的流程圖。
[0014]所公開實(shí)施方案的特征和優(yōu)點(diǎn)從下面結(jié)合附圖時(shí)闡明的詳細(xì)描述中變得更加明顯,其中貫穿全文的相同參考符號(hào)指示相應(yīng)的元件。在附圖中,相同的數(shù)字通常指示完全相同、功能上相似和/或結(jié)構(gòu)上相似的元件。通過相應(yīng)參考數(shù)字中的最左數(shù)位指示元件首次出現(xiàn)的附圖。
【具體實(shí)施方式】
[0015]通過背景的方式,諸如虛擬化和虛擬的術(shù)語根據(jù)它們?cè)谟?jì)算領(lǐng)域中的含義來使用。具體地,虛擬化是指用于隱藏底層資源的物理特性以便簡(jiǎn)化方法的技術(shù),其中系統(tǒng)、應(yīng)用和終端用戶可通過該方法與那些資源交互。例如,虛擬化允許單個(gè)物理資源(例如,存儲(chǔ)器)作為多個(gè)邏輯資源出現(xiàn)。因此,虛擬化技術(shù)允許單個(gè)計(jì)算機(jī)能夠運(yùn)行許多虛擬機(jī),其中每個(gè)虛擬機(jī)似乎具有對(duì)其可用的單個(gè)計(jì)算機(jī)的整套資源,并且沒有到其他虛擬機(jī)的任何明顯的資源重疊。
[0016]參考圖1,所示出的方框圖根據(jù)一些實(shí)施方案示出計(jì)算機(jī)系統(tǒng)10的簡(jiǎn)化的、高層次視圖。如圖1所示,系統(tǒng)10包括一個(gè)或多個(gè)處理器12、包括一個(gè)或多個(gè)轉(zhuǎn)換后備緩沖器(TLB) 16的存儲(chǔ)器管理單元14、存儲(chǔ)器控制器(MC) 18、存儲(chǔ)器20、可包括一個(gè)或多個(gè)I/OTLB (1TLB) 24的一個(gè)或多個(gè)I/O設(shè)備22以及可包括表遍歷器(walker) 28、高速緩存30、控制寄存器32和控制邏輯34的I/O MMU(1MMU) 26。處理器12耦合到MMU 14,其耦合到存儲(chǔ)器控制器18。I/O設(shè)備22耦合到1MMU 26,其耦合到存儲(chǔ)器控制器18。表遍歷器28、高速緩存30、控制寄存器32和控制邏輯34在1MMU 26內(nèi)耦合在一起。
[0017]如下面所進(jìn)一步描述,1MMU 26可包括各種特征以簡(jiǎn)化系統(tǒng)10中的虛擬化。下面的描述將參考虛擬機(jī)監(jiān)視器(VMM),其管理虛擬機(jī)(調(diào)度它們?cè)诘讓佑布系膱?zhí)行)、控制到各種系統(tǒng)資源的訪問等等。應(yīng)注意,VMM有時(shí)也被稱為超級(jí)監(jiān)督者。在所示出的實(shí)施方案中,處理器12正在虛擬化環(huán)境中執(zhí)行軟件。因此,示出了三個(gè)虛擬機(jī)100A、100B和100C (例如,VM 1-3)和VMM 106。在給定的實(shí)施方案中,虛擬機(jī)100的數(shù)目可變化,并且可隨著用戶啟動(dòng)和停止虛擬機(jī)在使用期間動(dòng)態(tài)地改變。在所示出的實(shí)施方案中,虛擬機(jī)100A包括一個(gè)或多個(gè)客戶應(yīng)用102和客戶操作系統(tǒng)(OS) 104。由于OS 104控制通過VMM 106為其創(chuàng)建的虛擬機(jī)100,而不是系統(tǒng)10的物理硬件,因此OS 104被稱為“客戶” OS。類似地,VM 100B和VM 100C還可每個(gè)包括一個(gè)或多個(gè)客戶應(yīng)用102和客戶OS 104。
[0018]通常,虛擬機(jī)100中的應(yīng)用102使用客戶虛擬地址空間,并因此使用客戶虛擬地址(GVA)。每個(gè)虛擬機(jī)100中的客戶OS 104可管理虛擬機(jī)100中GVA到客戶“物理”地址(GPA)的映射。如果客戶OS 104直接在系統(tǒng)10硬件上運(yùn)行,在沒有VMM的情況下,則客戶OS 104所生成的物理地址確實(shí)是系統(tǒng)10中存儲(chǔ)器位置的系統(tǒng)物理地址(SPA)。然而,在虛擬機(jī)環(huán)境中,VMM 106可管理從GPA到SPA的映射。因此,當(dāng)處理器12執(zhí)行存儲(chǔ)器請(qǐng)求時(shí),客戶OS 104可管理GVA到GPA(其可進(jìn)一步被VMM 106映射到SPA)的映射。
[0019]如圖1所示,從I/O設(shè)備22到存儲(chǔ)器20的路徑至少部分與處理器12到存儲(chǔ)器20的路徑分離。具體地,從I/o設(shè)備22到存儲(chǔ)器20的路徑不經(jīng)過MMU 14,而是相反地通過1MMU 26。因此,MMU 14對(duì)源自I/O設(shè)備22的存儲(chǔ)器請(qǐng)求可不提供存儲(chǔ)器管理。通常,存儲(chǔ)器管理可包括從一種類型的虛擬地址(即,可通過軟件使用的地址)到物理地址(即,可通過存儲(chǔ)器控制器使用的地址)的地址轉(zhuǎn)換以及存儲(chǔ)器保護(hù)。存儲(chǔ)器保護(hù)可控制在某些粒度層次的到存儲(chǔ)器的讀和/或?qū)懺L問(例如,頁(yè)面),以及各種其它屬性,諸如特權(quán)層次需求、高速緩存性和緩存控制(例如,直寫或回寫)、一致性等等??稍诟鞣N實(shí)施方案中實(shí)施任何組的存儲(chǔ)器保護(hù)。在一些實(shí)施方案中,通過1MMU 26實(shí)施的存儲(chǔ)器保護(hù)至少在某些方面可不同于通過MMU14實(shí)施的存儲(chǔ)器保護(hù)。在一個(gè)實(shí)施方案中,可定義通過1MMU 26實(shí)施的存儲(chǔ)器保護(hù),以便可共享存儲(chǔ)由1MMU 26和MMU 14所使用的轉(zhuǎn)換數(shù)據(jù)的轉(zhuǎn)換表(盡管為便于討論在圖1中被分離地示出)。如下面所進(jìn)一步描述,在共享轉(zhuǎn)換表信息的一些實(shí)施方案中,當(dāng)已經(jīng)推廣特定頁(yè)時(shí),諸如當(dāng)特權(quán)改變時(shí),表再遍歷可為必需的,以便更新此時(shí)可能不可靠的轉(zhuǎn)換頁(yè)表。根據(jù)需要,其他實(shí)施方案可不在1MMU 26和MMU 14之間共享轉(zhuǎn)換表。
[0020]通常,I/O設(shè)備22可經(jīng)配置發(fā)出存儲(chǔ)器請(qǐng)求,諸如存儲(chǔ)器讀和寫請(qǐng)求,以訪問存儲(chǔ)器20中的存儲(chǔ)器位置,以及在某些情況下發(fā)出轉(zhuǎn)換請(qǐng)求。例如,存儲(chǔ)器請(qǐng)求可為直接存儲(chǔ)器訪問(DMA)讀或?qū)懖僮鞯牟糠帧MA操作可由處理器12執(zhí)行的軟件啟動(dòng),從而直接或間接地對(duì)I/O設(shè)備22編程以執(zhí)行DMA操作。根據(jù)在處理器上執(zhí)行的軟件運(yùn)行的地址空間,I/O設(shè)備22可提供有對(duì)應(yīng)于