用于使用跟蹤數(shù)據(jù)消除處理器間中斷來支持多處理器虛擬機(jī)環(huán)境中的地址轉(zhuǎn)換的方法和設(shè)備的制作方法
【專利摘要】在一個(gè)實(shí)施例中,一種方法包含:創(chuàng)建用于多個(gè)處理器的第一處理器的陰影頁(yè)面表層級(jí)的第一工作組;創(chuàng)建用于多個(gè)處理器的第二處理器的陰影頁(yè)面表層級(jí)的第二工作組;保持修改的客戶頁(yè)面表的記錄;以及將每個(gè)修改的客戶頁(yè)面表與第一工作組中的對(duì)應(yīng)陰影頁(yè)面表同步。對(duì)于修改的客戶頁(yè)面表記錄中的每個(gè)修改的客戶頁(yè)面表,條目包含多個(gè)處理器中的哪些處理器具有含有到修改的客戶頁(yè)面表的可寫參考的硬件轉(zhuǎn)換后備緩沖器的指示。
【專利說明】用于使用跟蹤數(shù)據(jù)消除處理器間中斷來支持多處理器虛擬機(jī)環(huán)境中的地址轉(zhuǎn)換的方法和設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實(shí)施例一般涉及虛擬機(jī),并且更確切地說,涉及支持虛擬機(jī)環(huán)境中的地址轉(zhuǎn)換。
【背景技術(shù)】
[0002]常規(guī)虛擬機(jī)監(jiān)視器(VMM)通常運(yùn)行在計(jì)算機(jī)上,并向其它軟件呈現(xiàn)一個(gè)或多個(gè)虛擬機(jī)的抽象。每個(gè)虛擬機(jī)可充當(dāng)自含有平臺(tái),運(yùn)行它自己的“客戶操作系統(tǒng)”(即,由VMM托管的操作系統(tǒng)(OS))以及其它軟件,統(tǒng)稱為客戶軟件??蛻糗浖谕僮鳛楹孟袼\(yùn)行在專用計(jì)算機(jī)上而不是虛擬機(jī)上。也就是說,客戶軟件期望控制各種事件,并存取硬件資源(諸如物理存儲(chǔ)器和存儲(chǔ)器映射的輸入/輸出(I/O)裝置)。例如,客戶軟件期望維持對(duì)地址轉(zhuǎn)換操作的控制權(quán),并具有分配物理存儲(chǔ)器、提供來自客戶應(yīng)用以及客戶應(yīng)用之間的保護(hù)、使用各種分頁(yè)技術(shù)等能力。然而,在虛擬機(jī)環(huán)境中,VMM應(yīng)該能夠具有對(duì)計(jì)算機(jī)的資源的最終控制權(quán),以提供來自虛擬機(jī)以及虛擬機(jī)之間的保護(hù)。
【專利附圖】
【附圖說明】
[0003]本發(fā)明在附圖的視圖中通過示例而非通過限制進(jìn)行了圖示,并且其中相似的附圖標(biāo)記指的是類似元素,并且附圖中:
圖1圖示了本發(fā)明可操作的虛擬機(jī)環(huán)境的一個(gè)實(shí)施例; 圖2圖示了根據(jù)本發(fā)明一個(gè)實(shí)施例的虛擬TLB的操作;
圖3A和3B圖示了根據(jù)本發(fā)明的兩個(gè)備選實(shí)施例創(chuàng)建和維持陰影PT層級(jí)的元數(shù)據(jù)的過程;
圖4是用于同步客戶轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)與陰影轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的過程的一個(gè)實(shí)施例的流程圖;
圖5是用于維持陰影轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的元數(shù)據(jù)的過程的一個(gè)實(shí)施例的流程圖;
圖6是用于便于地址空間改變的過程的一個(gè)實(shí)施例的流程圖;
圖7是用于同步規(guī)定地址的兩個(gè)轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的條目的過程的一個(gè)實(shí)施例的流程圖;圖8是用于從由VMM維持的陰影PT層級(jí)的工作組中移除陰影PT層級(jí)的過程的一個(gè)實(shí)施例的流程圖;
圖9是用于向陰影PT層級(jí)的ro添加條目的過程的一個(gè)實(shí)施例的流程圖;
圖?ο是用于從陰影PT層級(jí)的ro移除條目的過程的一個(gè)實(shí)施例的流程圖;
圖11是用于向陰影PT層級(jí)的PT添加條目的過程的一個(gè)實(shí)施例的流程圖;
圖12是用于從陰影PT層級(jí)的PT移除條目的過程的一個(gè)實(shí)施例的流程圖;
圖13是用于監(jiān)視陰影PT層級(jí)的PTE的過程的一個(gè)實(shí)施例的流程圖;
圖14是用于從陰影PT層級(jí)的PTE移除監(jiān)視的過程的一個(gè)實(shí)施例的流程圖;以及圖15是用于維持多處理器系統(tǒng)中陰影PT層級(jí)的過程的一個(gè)實(shí)施例的流程圖; 圖16是用于同步修改的客戶頁(yè)面表記錄中的客戶頁(yè)面表與多處理器系統(tǒng)中的對(duì)應(yīng)陰影頁(yè)面表的過程的一個(gè)實(shí)施例的流程圖。
【具體實(shí)施方式】
[0004]描述了一種用于支持多處理器虛擬機(jī)環(huán)境中地址轉(zhuǎn)換的方法和設(shè)備。在如下描述中,為了說明目的,闡述了眾多特定細(xì)節(jié)以便提供本發(fā)明的透徹理解。然而,本領(lǐng)域技術(shù)人員要明白,在沒有這些特定細(xì)節(jié)的情況下也可實(shí)行本發(fā)明。
[0005]如下詳細(xì)描述的某些部分在對(duì)計(jì)算機(jī)系統(tǒng)的寄存器或存儲(chǔ)器內(nèi)的數(shù)據(jù)位的操作的算法和符號(hào)表示方面呈現(xiàn)了。這些算法描述和表示是數(shù)據(jù)處理領(lǐng)域的技術(shù)人員最有效地將它們工作的實(shí)質(zhì)傳達(dá)給本領(lǐng)域技術(shù)人員所使用的手段。算法在此并且一般地被視為得到預(yù)期結(jié)果的操作的自身一致序列。這些操作是需要物理量的物理操控的那些操作。通常,不過不是必需的,這些量采取能夠被存儲(chǔ)、轉(zhuǎn)移、組合、比較以及以其它方式操控的電信號(hào)或磁信號(hào)的形式。已經(jīng)證明方便的是,有時(shí)主要是出于常見用法的原因,把這些信號(hào)稱為位、值、元素、符號(hào)、字符、項(xiàng)、數(shù)字等。
[0006]然而,應(yīng)該牢記的是,所有這些以及類似的術(shù)語都與適當(dāng)?shù)奈锢砹筷P(guān)聯(lián),并且僅僅是應(yīng)用于這些量的方便標(biāo)簽。除非特別聲明,否則根據(jù)如下討論顯然的是,要認(rèn)識(shí)到,在說明書通篇利用諸如“處理”或“計(jì)算”或“算出”或“確定”等術(shù)語的討論可指的是計(jì)算機(jī)系統(tǒng)或類似電子計(jì)算裝置的作用和過程,其將計(jì)算機(jī)系統(tǒng)的寄存器和存儲(chǔ)器內(nèi)表示為物理(電子)量的數(shù)據(jù)操控并變換成在計(jì)算機(jī)系統(tǒng)存儲(chǔ)器或寄存器或其它此類信息存儲(chǔ)、傳送或顯示裝置內(nèi)類似地表示為物理量的其它數(shù)據(jù)。
[0007]在實(shí)施例的如下詳細(xì)描述中,參考附圖,附圖通過圖示示出了可實(shí)行本發(fā)明的特定實(shí)施例。在附圖中,相似的附圖標(biāo)記描述幾個(gè)視圖上的基本類似的組件。充分詳細(xì)地描述了這些實(shí)施例以使本領(lǐng)域技術(shù)人員能夠?qū)嵭斜景l(fā)明??衫闷渌鼘?shí)施例,并且可進(jìn)行結(jié)構(gòu)、邏輯和電氣改變,而不脫離本發(fā)明的范圍。而且,要理解到,本發(fā)明的各種實(shí)施例盡管不同但不一定相互排斥。例如,在一個(gè)實(shí)施例中包含的具體特征、結(jié)構(gòu)或特性可包含在其它實(shí)施例內(nèi)。因此,如下詳細(xì)描述不要被視為限制意義,并且本發(fā)明的范圍僅由所附權(quán)利要求書連同賦予此類權(quán)利要求書權(quán)利的等同物的全部范圍定義。
[0008]盡管以下示例可描述在執(zhí)行單元和邏輯電路的上下文中提供對(duì)于虛擬機(jī)環(huán)境中地址轉(zhuǎn)換的支持,但本發(fā)明的其它實(shí)施例可通過軟件實(shí)現(xiàn)。例如,在一些實(shí)施例中,本發(fā)明可提供為計(jì)算機(jī)程序產(chǎn)品或軟件,其可包含機(jī)器或計(jì)算機(jī)可讀介質(zhì),其上存儲(chǔ)有可用于對(duì)計(jì)算機(jī)(或其它電子裝置)編程以執(zhí)行根據(jù)本發(fā)明的過程的指令。在其它實(shí)施例中,本發(fā)明的過程可由含有用于執(zhí)行過程的硬連線邏輯的特定硬件組件執(zhí)行,或由已編程計(jì)算機(jī)組件和定制硬件組件的任何組合執(zhí)行。
[0009]從而,機(jī)器可讀介質(zhì)可包含用于存儲(chǔ)或傳送機(jī)器(例如計(jì)算機(jī))可讀形式的信息的任何機(jī)構(gòu),但不限于軟盤、光盤、壓縮盤只讀存儲(chǔ)器(CD-ROM)和磁光盤、只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、磁卡或光卡、閃存、通過因特網(wǎng)的傳送、電、光、聲或其它形式的傳播信號(hào)(例如載波、紅外信號(hào)、數(shù)字信號(hào)等)等。
[0010]進(jìn)一步說,設(shè)計(jì)從創(chuàng)建到模擬到制造可經(jīng)過各種階段。表示設(shè)計(jì)的數(shù)據(jù)可用若干方式表示該設(shè)計(jì)。首先,這在模擬上是有用的,硬件可使用硬件描述語言或另一功能描述語言表示。附加地,在設(shè)計(jì)過程的某些階段,可產(chǎn)生具有邏輯和/或晶體管門的電路級(jí)模型。而且,大多數(shù)設(shè)計(jì)在某一階段達(dá)到用硬件模型表示各種器件物理布局的數(shù)據(jù)級(jí)。在使用常規(guī)半導(dǎo)體制造技術(shù)的情況下,表示硬件模型的數(shù)據(jù)可以是規(guī)定在用于產(chǎn)生集成電路的掩膜的不同掩膜層上各種特征的存在或缺乏的數(shù)據(jù)。在設(shè)計(jì)的任何表示中,數(shù)據(jù)可存儲(chǔ)在任何形式的機(jī)器可讀介質(zhì)中。調(diào)制的或以其它方式生成的以傳送此類信息的光波或電波、存儲(chǔ)器或者磁或光存儲(chǔ)裝置(諸如盤)可以是機(jī)器可讀介質(zhì)。這些介質(zhì)中的任何介質(zhì)都可“攜帶”或“指示”設(shè)計(jì)或軟件信息。當(dāng)指示或攜帶代碼或設(shè)計(jì)的電載波被傳送到執(zhí)行電信號(hào)的拷貝、緩沖、重傳的程度時(shí),做出新拷貝。從而,通信提供商或網(wǎng)絡(luò)提供商可做出實(shí)施本發(fā)明技術(shù)的制品(載波)的拷貝。
[0011]圖1圖示了本發(fā)明可操作的虛擬機(jī)環(huán)境100的一個(gè)實(shí)施例。在此實(shí)施例中,裸平臺(tái)硬件116包括計(jì)算平臺(tái),計(jì)算平臺(tái)例如可能能夠執(zhí)行標(biāo)準(zhǔn)操作系統(tǒng)(OS)或虛擬機(jī)監(jiān)視器(VMM),諸如 VMM 112。
[0012]通常用軟件實(shí)現(xiàn)的VMM 112可仿真裸機(jī)接口并向更高級(jí)軟件導(dǎo)出。此類更高級(jí)軟件可包括標(biāo)準(zhǔn)或?qū)崟r(shí)OS,可以是具有有限操作系統(tǒng)功能性的高度精簡(jiǎn)的操作環(huán)境,可以不包含傳統(tǒng)OS設(shè)施等。備選地,例如,VMM 112可在另一 VMM內(nèi)或上運(yùn)行。VMM例如可以用硬件、軟件、固件或各種技術(shù)的組合實(shí)現(xiàn)。
[0013]平臺(tái)硬件116可以是個(gè)人計(jì)算機(jī)(PC)、主機(jī)、手持裝置、便攜式計(jì)算機(jī)、機(jī)頂盒或任何其它計(jì)算系統(tǒng)。平臺(tái)硬件116包含處理器118、處理器119和存儲(chǔ)器120。
[0014]處理器118和119可以是能夠執(zhí)行軟件的任何類型處理器,諸如微處理器、數(shù)字信號(hào)處理器、微控制器等。處理器118和119可以是同一類型或兩種不同類型的單獨(dú)處理器,或者各自可以是多核處理器的單獨(dú)執(zhí)行核。處理器118和119可包含用于執(zhí)行本發(fā)明方法實(shí)施例的執(zhí)行的微代碼、可編程邏輯或硬編碼邏輯。盡管圖1僅示出兩個(gè)此類處理器118和119,但在系統(tǒng)中可能存在多于兩個(gè)的處理器。
[0015]存儲(chǔ)器120可以是硬盤、軟盤、隨機(jī)存取存儲(chǔ)器(RAM)(例如動(dòng)態(tài)RAM (DRAM)或靜態(tài)RAM (SRAM))、只讀存儲(chǔ)器(ROM)、閃存、以上器件的組合、或者由處理器118和119可讀的任何其它類型機(jī)器介質(zhì)。存儲(chǔ)器120可存儲(chǔ)用于執(zhí)行本發(fā)明方法實(shí)施例的執(zhí)行的指令和
/或數(shù)據(jù)。
[0016]VMM 112向其它軟件(即“客戶”軟件)呈現(xiàn)一個(gè)或多個(gè)虛擬機(jī)(VM)的抽象,其可向各種客戶軟件提供相同或不同的抽象。圖1示出了兩個(gè)VM 102和114。在每個(gè)VM上運(yùn)行的客戶軟件可包含客戶OS (諸如客戶OS 104或106)以及各種客戶軟件應(yīng)用108和110。每一個(gè)客戶OS 104和106期望存取客戶OS 104或106運(yùn)行在其上的VM 102和114內(nèi)的物理資源(例如處理器寄存器、存儲(chǔ)器和I/O裝置),并執(zhí)行其它功能。例如,客戶OS 104或106期望根據(jù)在VM 102和114中呈現(xiàn)的處理器和平臺(tái)的架構(gòu)存取所有寄存器、高速緩存、結(jié)構(gòu)、I/O裝置、存儲(chǔ)器等。由客戶軟件可存取的資源可被歸類為“有特權(quán)的”或“無特權(quán)的”。對(duì)于有特權(quán)的資源,VMM 112實(shí)現(xiàn)由客戶軟件預(yù)期的功能性,同時(shí)保留對(duì)這些有特權(quán)資源的最終控制權(quán)。無特權(quán)的資源不需要受VMM 112控制,并且可由客戶軟件直接存取。
[0017]進(jìn)一步說,每個(gè)客戶OS期望處置各種故障事件,諸如異常(例如頁(yè)面故障、通用保護(hù)故障等)、中斷(例如硬件中斷、軟件中斷)以及平臺(tái)事件(例如初始化(INIT)和系統(tǒng)管理中斷(SMI))。這些故障事件中的一些是“有特權(quán)的”,因?yàn)樗鼈儽仨氂蒝MM 112處置以確保VM 102和114的恰當(dāng)操作,以及來自客戶軟件和客戶軟件之間的保護(hù)。
[0018]當(dāng)有特權(quán)的故障事件發(fā)生或客戶軟件嘗試存取有特權(quán)的資源時(shí),控制權(quán)可被轉(zhuǎn)移到VMM 112。控制權(quán)從客戶軟件轉(zhuǎn)移到VMM 112在本文被稱為VM退出。在實(shí)現(xiàn)資源存取或適當(dāng)處置事件之后,VMM 112可將控制權(quán)返回到客戶軟件??刂茩?quán)從VMM 112轉(zhuǎn)移到客戶軟件被稱為VM進(jìn)入。
[0019]在一個(gè)實(shí)施例中,處理器118和/或119根據(jù)存儲(chǔ)在虛擬機(jī)控制結(jié)構(gòu)(VMCS) 125中的數(shù)據(jù)控制VM 102和114的操作。VMCS 125是可含有客戶軟件的狀態(tài)、VMM 112的狀態(tài)、指示VMM 112希望如何控制客戶軟件操作的執(zhí)行控制信息、控制在VMM 112與VM之間轉(zhuǎn)變的信息的結(jié)構(gòu)。處理器118和/或119從VMCS 125讀取信息以確定VM的執(zhí)行環(huán)境并約束其行為。在一個(gè)實(shí)施例中,VMCS存儲(chǔ)在存儲(chǔ)器120中。在一些實(shí)施例中,使用多個(gè)VMCS結(jié)構(gòu)支持多個(gè)VM。
[0020]在地址轉(zhuǎn)換操作期間,VM 102或104期望分配物理存儲(chǔ)器,提供來自客戶軟件應(yīng)用(例如應(yīng)用108或110)以及客戶軟件應(yīng)用之間的保護(hù),使用各種各樣的分頁(yè)技術(shù)等。在非虛擬機(jī)環(huán)境中,由OS期望的地址轉(zhuǎn)換機(jī)制可基于由處理器控制的轉(zhuǎn)換后備緩沖器(TLB)以及由OS控制并用于當(dāng)啟用分頁(yè)時(shí)將虛擬存儲(chǔ)器地址轉(zhuǎn)換成物理存儲(chǔ)器地址的轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)(諸如頁(yè)面表(PT)層級(jí))。處理器118和119分別包含用于存儲(chǔ)虛擬到物理存儲(chǔ)器地址轉(zhuǎn)換的TLB 122和123。Intel? Pentium?4處理器的架構(gòu)支持若干分頁(yè)模式。最常用的分頁(yè)模式支持使用兩級(jí)層級(jí)分頁(yè)結(jié)構(gòu)(在本文中稱為兩級(jí)層級(jí)分頁(yè)模式)的32位線性地址空間。
[0021]本發(fā)明的實(shí)施例不限于此分頁(yè)模式,但反而可由本領(lǐng)域技術(shù)人員用于虛擬化其它分頁(yè)模式(例如物理地址擴(kuò)展(PAE)模式、Intel?擴(kuò)展的存儲(chǔ)器64技術(shù)(EM64T)模式等)和實(shí)現(xiàn)(例如散列的頁(yè)面表)。在基于TLB的一個(gè)實(shí)施例中,將虛擬存儲(chǔ)器地址轉(zhuǎn)換成物理存儲(chǔ)器地址開始于使用虛擬地址的上面20位(對(duì)于4KB頁(yè)面幀)或上面10位(對(duì)于4MB頁(yè)面幀)搜索TLB。如果發(fā)現(xiàn)匹配(TLB命中),則在TLB中含有的物理頁(yè)面幀的上面位與虛擬地址的較低位結(jié)合以形成物理地址。TLB還含有與映射關(guān)聯(lián)的存取和準(zhǔn)許屬性。如果沒發(fā)現(xiàn)匹配(TLB未中),則處理器查閱PT層級(jí)以確定虛擬到物理轉(zhuǎn)換,其然后在TLB中高速緩存。PT層級(jí)中的條目可包含由處理器對(duì)某些存取自動(dòng)設(shè)置的一些屬性。
[0022]如果修改PT層級(jí),則TLB可變得與PT層級(jí)不一致,如果在TLB中存在對(duì)應(yīng)地址轉(zhuǎn)換的話。OS可期望能夠通過向處理器發(fā)出指令來解決此類不一致。例如,在Intel? 64指令級(jí)架構(gòu)(ISA)中,處理器允許軟件通過發(fā)出INVLPG指令使在TLB中高速緩存的轉(zhuǎn)換無效。此外,OS可能期望請(qǐng)求處理器完全改變地址空間,這應(yīng)該導(dǎo)致從TLB中移除所有轉(zhuǎn)換。例如,在Intel? 64 ISA中,OS可使用MOV指令或任務(wù)開關(guān)請(qǐng)求處理器加載CR3 (其含有PT層級(jí)的基地址),由此從TLB中移除所有轉(zhuǎn)換。頁(yè)面表層級(jí)的不同級(jí)基于模式和實(shí)現(xiàn)可具有不同名稱。在兩級(jí)層級(jí)分頁(yè)模式中,存在兩級(jí)分頁(yè)結(jié)構(gòu)。CR3寄存器指向頁(yè)面目錄頁(yè)面底部。頁(yè)面目錄中的條目可規(guī)定到大尺寸頁(yè)面(例如4MB超頁(yè)面、2MB超頁(yè)面、IGB超頁(yè)面等)的映射或到頁(yè)面表的參考。頁(yè)面表又可含有到小尺寸頁(yè)面的映射。
[0023]如上面所討論的,在虛擬機(jī)環(huán)境中,VMM 112應(yīng)該能夠具有對(duì)物理資源(包含TLB)的最終控制權(quán)。本發(fā)明的實(shí)施例通過使用仿真處理器的物理TLB的功能性的虛擬TLB解決了運(yùn)行在VM 102和114中的客戶軟件的期望與VMM 112的角色之間的沖突。
[0024]虛擬TLB包含由VMM 112控制的物理TLB和一組陰影PT層級(jí)。該組陰影PT層級(jí)從VM 102或114當(dāng)前可使用或不適用的客戶PT層級(jí)中導(dǎo)出其格式和內(nèi)容。如果VM 102或114修改客戶PT層級(jí)的內(nèi)容,則此內(nèi)容變得與陰影PT層級(jí)的內(nèi)容不一致??蛻鬚T層級(jí)與陰影PT層級(jí)之間的不一致性使用類似于在管理其物理TLB中處理器所采用技術(shù)的技術(shù)來解決。這些技術(shù)中的一些技術(shù)迫使VM 102或114發(fā)出指示嘗試操控TLB的事件(例如TNVLPG、頁(yè)面故障和加載CR3)。此類事件是有特權(quán)的,并且因此導(dǎo)致VM退出VMM 112。VMM然后評(píng)估該事件,并將所有維持的陰影PT層級(jí)與當(dāng)前客戶狀態(tài)同步(如果需要的話)。我們會(huì)將該組維持的陰影PT層級(jí)稱為工作組。因?yàn)槎鄠€(gè)過程可使用相同客戶頁(yè)面表,因此有可能同一陰影PT是多個(gè)客戶PT層級(jí)的一部分。對(duì)應(yīng)的陰影PT又將是多個(gè)陰影PT層級(jí)的成員。
[0025]要注意的是,由VMM執(zhí)行的同步可更新當(dāng)前不在使用的陰影PT層級(jí)的陰影頁(yè)面表或頁(yè)面目錄條目。同樣,可能需要與不是在使用的客戶PT層級(jí)的一部分的客戶頁(yè)面同步。
[0026]在一個(gè)實(shí)施例中,VMM 112包含負(fù)責(zé)創(chuàng)建并維持虛擬TLB(VTLB)數(shù)據(jù)存儲(chǔ)器124中每一個(gè)VM 102和114的陰影PT層級(jí)的工作組的地址轉(zhuǎn)換模塊126。對(duì)于VM 102或114的對(duì)應(yīng)活動(dòng)過程(即有可能在不久的將來由VM 102或114激活的過程),維持陰影PT層級(jí)的工作組。用Intel? 64 ISA,僅明確定義的客戶層級(jí)是由當(dāng)前使用的分頁(yè)結(jié)構(gòu)定義的層級(jí)。實(shí)際上,存在客戶過程以及它們地址空間的高度時(shí)間局部性。VMM可采用啟發(fā)信息或明確信息來確定一組活動(dòng)過程。
[0027]當(dāng)VM 102或114實(shí)現(xiàn)了 VM 102或114的其中一個(gè)活動(dòng)過程的客戶PT層級(jí)時(shí),地址轉(zhuǎn)換模塊126標(biāo)識(shí)工作組中的對(duì)應(yīng)陰影PT層級(jí),并請(qǐng)求處理器加載其基地址。當(dāng)可應(yīng)用時(shí),地址轉(zhuǎn)換模塊126然后可再用存儲(chǔ)在陰影PT層級(jí)中的之前計(jì)算的映射。
[0028]如果VM 102或114激活新過程,則地址轉(zhuǎn)換模塊126從對(duì)應(yīng)的客戶PT層級(jí)中導(dǎo)出新陰影PT層級(jí),并將它加到工作組。備選地,如果VM 102或114去激活現(xiàn)有過程,則地址轉(zhuǎn)換模塊126從工作組中移除對(duì)應(yīng)于客戶PT層級(jí)的信息。
[0029]在一個(gè)實(shí)施例中,地址轉(zhuǎn)換模塊126負(fù)責(zé)從每個(gè)新陰影PT層級(jí)提取元數(shù)據(jù),將元數(shù)據(jù)存儲(chǔ)在VTLB數(shù)據(jù)存儲(chǔ)器124中,并且當(dāng)修改陰影PT層級(jí)時(shí)更新元數(shù)據(jù)。在一個(gè)實(shí)施例中,元數(shù)據(jù)包含PT向量(PTV)、ro向量(rov)、活動(dòng)pte列表和活動(dòng)pde列表。
[0030]PTV和PDV跟蹤被用作PT和H)的客戶幀。在一個(gè)實(shí)施例中,此信息被編碼在位向量中。PTV可由頁(yè)面幀號(hào)(PFN)索引,其中如果對(duì)應(yīng)的PFN是PT,則設(shè)置每個(gè)條目。PDV可由頁(yè)面幀號(hào)(PFN)索引,其中如果對(duì)應(yīng)的PFN是H),則設(shè)置每個(gè)條目。
[0031]活動(dòng)PTE列表是陰影PT層級(jí)中指向裝有PT和ro的幀的PT條目(PTE)的列表?;顒?dòng)PDE列表標(biāo)識(shí)陰影PT層級(jí)中指向含有在活動(dòng)PTE列表中標(biāo)識(shí)的PT條目的PT的H)條目(PDE)。在一個(gè)實(shí)施例中,活動(dòng)PDE和PTE列表含有描述映射到H)幀還是PT幀的附加元數(shù)據(jù)。
[0032]本領(lǐng)域技術(shù)人員將理解,此發(fā)明的實(shí)施例可使用可能比本文描述的更多或更少空間或時(shí)間有效的各種數(shù)據(jù)結(jié)構(gòu)。本領(lǐng)域技術(shù)人員還將認(rèn)識(shí)到支持附加分頁(yè)模式的跟蹤結(jié)構(gòu)的擴(kuò)展。例如,EM64T分頁(yè)模式通過四級(jí)層級(jí)分頁(yè)結(jié)構(gòu)將64位虛擬地址映射到物理地址。在虛擬或物理地址空間中支持的實(shí)際位數(shù)可以是實(shí)現(xiàn)相關(guān)的,并且在具體實(shí)現(xiàn)中可小于64位。這將在下面更詳細(xì)討論,EM64T實(shí)現(xiàn)可能需要添加頁(yè)面映射級(jí)4(PML4)頁(yè)面向量和頁(yè)面目錄指針(TOP)頁(yè)面向量,以跟蹤在EM64T分頁(yè)結(jié)構(gòu)中使用的附加頁(yè)面表。同樣,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,活動(dòng)PTE列表將被擴(kuò)展成包含映射在分頁(yè)結(jié)構(gòu)內(nèi)使用的任何頁(yè)面(例如用于EM64T的PML4或PDP頁(yè)面)的條目。
[0033]在一個(gè)實(shí)施例中,維持活動(dòng)PTE/PDE列表元數(shù)據(jù),以跟蹤通過頁(yè)面表映射的H)和PT幀號(hào)。當(dāng)每頁(yè)面的映射數(shù)量從O遞增時(shí),則映射PT的PDE必須被添加到活動(dòng)PDE列表,而當(dāng)映射數(shù)量遞減到O時(shí),則映射此PT的PDE必須從活動(dòng)PDE列表中移除。
[0034]在一個(gè)實(shí)施例中,當(dāng)需要此類同步時(shí),地址轉(zhuǎn)換模塊126負(fù)責(zé)同步當(dāng)前陰影PT層級(jí)與當(dāng)前客戶PT層級(jí)。地址轉(zhuǎn)換模塊126通過確定客戶PT層級(jí)中的哪些條目當(dāng)前已經(jīng)被修改了并且然后相應(yīng)地更新陰影PT層級(jí)中的對(duì)應(yīng)條目來執(zhí)行同步。地址轉(zhuǎn)換模塊126基于從陰影PT層級(jí)中提取的元數(shù)據(jù)和與陰影PT層級(jí)條目關(guān)聯(lián)的屬性來確定客戶PT層級(jí)中的哪些條目當(dāng)前已經(jīng)被修改了。在一個(gè)實(shí)施例中,屬性包含與陰影PT層級(jí)中的ro條目關(guān)聯(lián)的存取屬性和與陰影PT層級(jí)中的PT條目關(guān)聯(lián)的更新條目。
[0035]圖2圖示了根據(jù)本發(fā)明一個(gè)實(shí)施例的虛擬TLB 204的操作。虛擬TLB 204包含由陰影PT層級(jí)206和物理TLB 208表示的陰影轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)。陰影PT層級(jí)206從由客戶PT層級(jí)202表示的客戶轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)導(dǎo)出其結(jié)構(gòu)和內(nèi)容。在一個(gè)實(shí)施例中,VMM維持用于VM活動(dòng)過程的陰影PT層級(jí)的工作組。在一個(gè)實(shí)施例中,當(dāng)VM請(qǐng)求處理器實(shí)現(xiàn)不同客戶PT層級(jí)(例如通過向Intel? 64 ISA中的CR3或任務(wù)開關(guān)發(fā)出MOV)時(shí),控制權(quán)轉(zhuǎn)變到VMM,VMM指令處理器加載對(duì)應(yīng)于所請(qǐng)求的客戶PT層級(jí)202的陰影PT層級(jí)206的基地址214。
[0036]在一些實(shí)施例中,使用相關(guān)元數(shù)據(jù)和屬性,將此陰影PT層級(jí)206與客戶PT層級(jí)202同步,這將在下面更詳細(xì)討論。
[0037]在一個(gè)實(shí)施例中,虛擬TLB在陰影H)和PT條目中維持存取和更新屬性。這些屬性也被稱為存取的(A)位和臟(D)位。在一個(gè)實(shí)施例中,當(dāng)客戶軟件第一次存取頁(yè)面幀時(shí),處理器在陰影PT層級(jí)206中的對(duì)應(yīng)PT條目或H)條目中設(shè)置存取的(A)屬性。如果客戶軟件嘗試寫頁(yè)面幀,則處理器在對(duì)應(yīng)的陰影PT條目中設(shè)置臟(D)屬性。
[0038]允許客戶軟件自由地修改客戶PT層級(jí)202,包含改變虛擬到物理映射準(zhǔn)許等。相應(yīng)地,陰影PT層級(jí)206可以不總是與客戶PT層級(jí)202 —致。當(dāng)問題起因于層級(jí)202與206之間的不一致時(shí),將虛擬TLB 204視為物理TLB的客戶OS嘗試通過請(qǐng)求處理器執(zhí)行由相關(guān)ISA定義的操作來改變虛擬TLB 204。例如,在Intel? 64 ISA中,此類操作包含INVLPG指令、CR3加載、分頁(yè)激活(修改CR0.PG)、修改全局分頁(yè)(切換CR4.PGE位)等。迫使客戶頁(yè)面表與虛擬TLB 204之間一致的操作由VMM配置為有特權(quán)的(例如使用存儲(chǔ)在VMCS中的對(duì)應(yīng)執(zhí)行控制權(quán)),并且因此導(dǎo)致VM退出VMM。VMM然后確定VM退出的原因,并修改陰影PT層級(jí)206的內(nèi)容(如果必要的話)。例如,如果VM退出由于應(yīng)該由客戶OS處置的頁(yè)面故障(例如由客戶PT層級(jí)202不準(zhǔn)許的存取所引起的頁(yè)面故障)而發(fā)生,則頁(yè)面故障被注入到客戶OS進(jìn)行處置。備選地,如果VM退出由于源自于層級(jí)202與206條目之間的不一致的頁(yè)面故障(或任何其它操作諸如INVLPG)而發(fā)生,則VMM可能需要移除過期條目,添加新條目,或修改現(xiàn)有條目,這將在下面更詳細(xì)討論。由客戶PT層級(jí)引起的頁(yè)面故障在本文被稱為“真實(shí)”頁(yè)面故障,而直接使用客戶頁(yè)面表本不該發(fā)生的頁(yè)面故障在本文稱為“引發(fā)的”頁(yè)面故障。
[0039]圖3A圖示了根據(jù)本發(fā)明一個(gè)實(shí)施例創(chuàng)建和維持用于兩級(jí)層級(jí)分頁(yè)模式中的陰影PT層級(jí)的元數(shù)據(jù)的過程。
[0040]參考圖3A,圖示了由不同字母(字母A至W)標(biāo)識(shí)的若干物理頁(yè)面幀。一些客戶頁(yè)面幀可含有ro(例如幀A)。其它客戶頁(yè)面幀可含有PT (例如幀A、B、C和L)。層級(jí)302是客戶PT層級(jí)。
[0041]圖3A示出了基于客戶PT層級(jí)302創(chuàng)建的陰影PT層級(jí)304。客戶PT層級(jí)302中的每個(gè)ro或PT包含陰影PT層級(jí)304中的對(duì)應(yīng)ro或PT。要注意的是,一般而言,不是對(duì)于客戶PT中的每個(gè)頁(yè)面都需要陰影頁(yè)面。一些實(shí)施例可選擇成根據(jù)使用情況統(tǒng)計(jì)(例如僅生成已經(jīng)使用的客戶PT頁(yè)面的陰影頁(yè)面)或根據(jù)資源約束(例如基于可用存儲(chǔ)器僅維持一組陰影頁(yè)面)來限制陰影頁(yè)面。對(duì)于從同一物理幀導(dǎo)出的ro和PT表,維持單獨(dú)的陰影表。例如,對(duì)于從同一物理幀314中導(dǎo)出的PD 306和PT 308維持單獨(dú)的表330和332。陰影PT層級(jí)304中的H)和PT條目含有用于客戶幀314至324的變換的映射。
[0042]在客戶PT層級(jí)302中,幀316和318被用作PT 310和312,并且?guī)?14被用作H)306和PT 308。這種用法被圖示為在陰影PT層級(jí)304下面示出的頁(yè)面幀314至316中的“PT” 和 “PD/PT”。
[0043]陰影PT層級(jí)304與活動(dòng)PTE列表342和活動(dòng)PDE列表344關(guān)聯(lián)。在一個(gè)實(shí)施例中,活動(dòng)PTE列表342標(biāo)識(shí)陰影PT層級(jí)304中映射來自客戶PT層級(jí)302的PT和H)頁(yè)面幀的PT條目。具體地說,活動(dòng)PTE列表342標(biāo)識(shí)PT 332中映射頁(yè)面幀314至318的條目。在一個(gè)實(shí)施例中,活動(dòng)PDE列表344標(biāo)識(shí)陰影PT層級(jí)中指向具有在活動(dòng)PTE列表342中標(biāo)識(shí)的條目的PT的H)條目。具體地說,活動(dòng)PDE列表344包含H) 330中指向PT 332的條目?;顒?dòng)PTE列表342和活動(dòng)PDE列表344是陰影PT層級(jí)304的元數(shù)據(jù)的成分。
[0044]陰影PT層級(jí)304與PT位向量(PTV) 362和H)位向量(TOV) 364關(guān)聯(lián)。在一個(gè)實(shí)施例中,PTV 362跟蹤用作PT的客戶頁(yè)面幀。具體地說,PTV 362包含用作客戶PT層級(jí)302中的PT的頁(yè)面幀314至318。在一個(gè)實(shí)施例中,PDV 364跟蹤用作H)的客戶頁(yè)面幀。具體地說,PDV 364包含用作客戶PT層級(jí)302中的H)的頁(yè)面幀314。在一個(gè)實(shí)施例中,PTV 362和rov 364表示工作組中的所有陰影PT層級(jí),并且跟蹤在工作組中采用的陰影頁(yè)面的容量(例如,如果陰影頁(yè)面尚未被分配用于客戶PT,則PTV不會(huì)反應(yīng)客戶PT頁(yè)面,即便它出現(xiàn)在客戶分頁(yè)結(jié)構(gòu)中)。
[0045]在一個(gè)實(shí)施例中,如果客戶OS向客戶PT層級(jí)302添加新PT,則VMM可檢測(cè)此添加(例如關(guān)于與TLB操控相關(guān)的下一或隨后VM退出)并向陰影PT層級(jí)304添加對(duì)應(yīng)PT。例如,如果從幀319中導(dǎo)出的新PT 352與新幀354的映射一起被添加到客戶PT層級(jí)302,則VMM可將對(duì)應(yīng)的PT 360與變換的映射一起添加到陰影PT層級(jí)304,并更新元數(shù)據(jù)以反映此改變。具體地說,VMM將映射PT 332中幀319的條目添加到活動(dòng)PTE列表342,并將指向H)330中PT 360的條目添加到活動(dòng)PDE列表344。還有,VMM將幀319添加到PTV 362,其跟蹤用作PT的客戶幀(即這里是幀319)。
[0046]圖3B圖示了根據(jù)本發(fā)明一個(gè)實(shí)施例創(chuàng)建和維持用于EM64T分頁(yè)模式中陰影PT層級(jí)的元數(shù)據(jù)的過程。
[0047]參考圖3B,分頁(yè)結(jié)構(gòu)的底部是PML4頁(yè)面(例如幀A)。PML4頁(yè)面中的每個(gè)條目可參考PDP頁(yè)面(例如幀B和C)。PDP頁(yè)面中的每個(gè)條目可參考頁(yè)面目錄(PD)頁(yè)面(例如幀D或E),它的每個(gè)條目又可參考頁(yè)面表(PT)頁(yè)面(例如幀F(xiàn)、G、H或I)中的頁(yè)面。
[0048]每個(gè)PML4、roP、ro或PT頁(yè)面在尺寸上可以是4KB。為了支持大于32位的物理地址空間,條目尺寸可相對(duì)于32位分頁(yè)模式增大。確切地說,每頁(yè)面可能存在512個(gè)條目,要求在每級(jí)使用虛擬地址的9位來選擇適當(dāng)條目。此選擇器尺寸可得到2MB的大頁(yè)面尺寸,代替之前所描述的4MB。在此類層級(jí)中,在層級(jí)的其它級(jí)可支持各種大頁(yè)面尺寸(例如在PDP條目中可規(guī)定IGB頁(yè)面)。
[0049]在一個(gè)實(shí)施例中,在EM64T分頁(yè)模式中創(chuàng)建元數(shù)據(jù)包含生成幾個(gè)向量、活動(dòng)條目列表和幾個(gè)活動(dòng)目錄列表。向量包含標(biāo)識(shí)用作PML4頁(yè)面的幀的PML4V向量、標(biāo)識(shí)用作I3DP頁(yè)面的幀的I3DPV向量、標(biāo)識(shí)用作ro頁(yè)面的幀的rov向量以及標(biāo)識(shí)用作PT頁(yè)面的幀的ptv向量?;顒?dòng)條目列表是包含映射PML4、PDP, PD或PT頁(yè)面的所有映射的活動(dòng)PTE列表?;顒?dòng)目錄列表包含標(biāo)識(shí)參考通過其可存取對(duì)應(yīng)于陰影結(jié)構(gòu)的客戶頁(yè)面的較低級(jí)結(jié)構(gòu)的較高級(jí)映射結(jié)構(gòu)的列表。具體地說,活動(dòng)目錄列表由包含參考含有活動(dòng)PTE列表?xiàng)l目的頁(yè)面的那些PDE的活動(dòng)PDE列表、包含參考含有活動(dòng)PDE列表?xiàng)l目的H)的活動(dòng)TOPE條目的活動(dòng)PDPE列表以及包含映射含有活動(dòng)I3DPE列表中元素的PDP的條目的活動(dòng)PML4E列表組成。
[0050]在一個(gè)實(shí)施例中,同步陰影頁(yè)面表開始于檢查與使用的陰影PT層級(jí)關(guān)聯(lián)的活動(dòng)PML4E列表中的每個(gè)條目。如果條目已經(jīng)被存取,則檢查對(duì)應(yīng)于存取的PML4條目的活動(dòng)PDPE列表中的每個(gè)元素,并且然后處理繼續(xù)之前所描述的。
[0051]在備選實(shí)施例中,對(duì)于層級(jí)的其中一個(gè)或多個(gè)上面級(jí),不維持和/或處理活動(dòng)列表。例如,在最上面的分頁(yè)結(jié)構(gòu)中僅填充單個(gè)條目的系統(tǒng)中,對(duì)于層級(jí)的每級(jí)都使用活動(dòng)列表將引起總是存取此單個(gè)條目,由此允許在對(duì)于層級(jí)中的較低級(jí)所需的處理量上不減少。為了適應(yīng)這個(gè)使用模型,同步相反可開始于處理層級(jí)中較低的活動(dòng)列表。例如,在一個(gè)實(shí)施例中,活動(dòng)roPE列表元素可首先被處理,跟著是活動(dòng)PDE列表元素或與使用的陰影PT層級(jí)關(guān)聯(lián)的活動(dòng)PTE列表元素。在一個(gè)實(shí)施例中,在同步時(shí)處理的初始層可被預(yù)先確定。在另一實(shí)施例中,要處理的初始層可通過客戶頁(yè)面表使用情況的動(dòng)態(tài)仿形來確定。
[0052]各種其它分頁(yè)模式可與本發(fā)明的實(shí)施例一起使用。例如,Intel? 64 ISA支持32位虛擬地址被映射到更大物理地址的附加分頁(yè)模式。在此附加操作模式中,頁(yè)面表基地址寄存器配置成指向含有4個(gè)元素的PDP頁(yè)面。此附加操作模式中的條目尺寸和行為類似于上面對(duì)于64位虛擬地址模式描述的尺寸和行為。因?yàn)榇烁郊幽J讲焕肞ML4頁(yè)面,因此不需要PML4V和活動(dòng)PML4E列表。
[0053]圖4是用于同步客戶轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)與陰影轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的過程400的一個(gè)實(shí)施例的流程圖。該過程可由處理邏輯執(zhí)行,處理邏輯可包括硬件(例如專用邏輯、可編程邏輯、微代碼等)、軟件(諸如在通用計(jì)算機(jī)系統(tǒng)或?qū)S脵C(jī)器上運(yùn)行的軟件)或二者的組合。在一個(gè)實(shí)施例中,該過程由圖1的地址轉(zhuǎn)換模塊126執(zhí)行。
[0054]參考圖4,過程400開始于處理邏輯接收由于有關(guān)TLB操控的事件而引起的從VM轉(zhuǎn)變的控制權(quán)(處理塊402)。此類事件的示例可包含改變當(dāng)前地址空間的請(qǐng)求(例如CR3加載)、調(diào)整TLB中規(guī)定的虛擬地址的不一致轉(zhuǎn)換的請(qǐng)求(例如INVLPG)、頁(yè)面故障等。
[0055]在處理塊404,處理邏輯確定有關(guān)TLB操控的事件是否應(yīng)該由VM處置。如果是(例如,該事件是由客戶轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)中的有問題映射引起的頁(yè)面故障),則控制權(quán)返回到VM以便處置該事件(處理塊406)。如果否,則處理邏輯確定該事件是否與規(guī)定的有問題地址關(guān)聯(lián)(處理塊408)。
[0056]如果該事件不需要由VM處置,則它可與規(guī)定的有問題地址關(guān)聯(lián)。此類事件的示例可包含由采取有問題的地址作為操作數(shù)的INVLPG指令引起的事件、由引發(fā)的頁(yè)面故障(例如,源自于相對(duì)于特定映射在兩個(gè)轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)之間的不一致的頁(yè)面故障、由需要虛擬化客戶轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)中的A/D位而引起的頁(yè)面故障等)引起的事件等。如果該事件與規(guī)定的有問題地址關(guān)聯(lián),則處理邏輯校正用于規(guī)定的地址的陰影轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)(例如,移除用于規(guī)定的地址的過期映射或添加用于規(guī)定的地址的新映射)以符合客戶轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)(處理塊410)。下面結(jié)合圖7更詳細(xì)地討論用于同步規(guī)定的地址的兩個(gè)轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的條目的過程的一個(gè)實(shí)施例。
[0057]如果該事件不與任何特定地址關(guān)聯(lián)(例如,該事件由改變地址空間的VM請(qǐng)求引起,其刷新了 Intel? 64 ISA中的所有TLB條目),則處理邏輯確定客戶轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的哪些條目已經(jīng)被修改(處理塊412)。
[0058]使用從陰影轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)提取的元數(shù)據(jù)和與陰影轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的條目關(guān)聯(lián)的屬性進(jìn)行確定(處理塊412)。元數(shù)據(jù)包含用于陰影轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的各種級(jí)的向量和活動(dòng)列表。用于陰影轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的特定級(jí)的向量標(biāo)識(shí)在客戶轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的此級(jí)用作頁(yè)面的幀。活動(dòng)列表包含活動(dòng)條目列表和一個(gè)或多個(gè)活動(dòng)目錄列表。活動(dòng)條目列表包含在形成客戶轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)時(shí)由客戶使用的頁(yè)面的映射?;顒?dòng)目錄列表標(biāo)識(shí)參考通過其可存取對(duì)應(yīng)于加陰影的分頁(yè)結(jié)構(gòu)的客戶頁(yè)面的較低級(jí)結(jié)構(gòu)的較高級(jí)映射結(jié)構(gòu)。如上面所討論的,在兩級(jí)層級(jí)分頁(yè)模式中,在一個(gè)實(shí)施例中,元數(shù)據(jù)包含向量PTV和rov、活動(dòng)條目列表(PTE列表)和活動(dòng)目錄列表(PDE列表)。在EM64T分頁(yè)模式中,在一個(gè)實(shí)施例中,元數(shù)據(jù)包含向量PTV, rov、PDPV和PML4V、活動(dòng)條目列表(PTE列表)以及活動(dòng)目錄列表(活動(dòng)PDE列表、活動(dòng)F1DPE列表和活動(dòng)PML4E列表)。
[0059]下面結(jié)合圖6更詳細(xì)地討論用于使用元數(shù)據(jù)標(biāo)識(shí)客戶轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的當(dāng)前修改的條目的過程的一個(gè)實(shí)施例。
[0060]在處理塊414,處理邏輯同步陰影轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)中的對(duì)應(yīng)條目與客戶轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)中的修改條目。相應(yīng)地,處理邏輯僅需要同步被修改的條目,而不用重新填充陰影轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的整個(gè)內(nèi)容。
[0061]在一個(gè)實(shí)施例中,額外存儲(chǔ)裝置用于維持一些客戶ro和/或PT內(nèi)容,因?yàn)樗鼈冏詈笸?。這準(zhǔn)許VMM確定已經(jīng)在哪里進(jìn)行了修改,而無需算出或查找附加重新定位或準(zhǔn)許信息。
[0062]要注意的是,對(duì)客戶頁(yè)面表的某些修改不需要對(duì)陰影頁(yè)面表的修改。例如,如果客戶PT含有隨后修改的不存在映射,則不需要改變對(duì)應(yīng)的陰影PT。在實(shí)施例中,同步可包含已經(jīng)不存在、被修改成存在的條目的急切填充映射。
[0063]圖5-14圖示了根據(jù)本發(fā)明的不同實(shí)施例執(zhí)行以支持使用兩級(jí)層級(jí)分頁(yè)模式的虛擬機(jī)環(huán)境中地址轉(zhuǎn)換的各種過程。這些過程可由處理邏輯執(zhí)行,處理邏輯可包括硬件(例如專用邏輯、可編程邏輯、微代碼等)、軟件(諸如在通用計(jì)算機(jī)系統(tǒng)或?qū)S脵C(jī)器上運(yùn)行的軟件)或二者的組合。在一個(gè)實(shí)施例中,這些過程中的每個(gè)過程都由圖1的地址轉(zhuǎn)換模塊126執(zhí)行。
[0064]圖5是用于維持陰影轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)(諸如陰影PT層級(jí))的元數(shù)據(jù)的過程500的一個(gè)實(shí)施例的流程圖。
[0065]參考圖5,過程500開始于處理邏輯根據(jù)客戶PT層級(jí)創(chuàng)建每個(gè)H)或PT頁(yè)面的陰影頁(yè)面(處理塊502)。
[0066]在處理塊504,處理邏輯跟蹤在客戶PT層級(jí)中用作H)或PT的頁(yè)面幀。在一個(gè)實(shí)施例中,如果對(duì)應(yīng)的PFN是客戶PT層級(jí)中的H),則處理邏輯在PDV中設(shè)置條目。類似地,如果對(duì)應(yīng)的PFN是客戶PT層級(jí)中的PT,則處理邏輯在PTV中設(shè)置條目。
[0067]在處理塊506,處理邏輯跟蹤到任何動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)支持的頁(yè)面的映射(以標(biāo)識(shí)潛在地可能是ro或PT的頁(yè)面)。在一個(gè)實(shí)施例中,處理邏輯使用反向頁(yè)面表(IPT)和反向頁(yè)面目錄(IPD)跟蹤到基于DRAM的頁(yè)面的映射。IPT由數(shù)據(jù)頁(yè)面幀的PFN索弓丨,其中每個(gè)條目含有映射數(shù)據(jù)頁(yè)面幀的PTE地址列表。Iro由頁(yè)面表的PFN索引,其中每個(gè)條目含有作為頁(yè)面表參考PFN的PDE地址列表。
[0068]在一個(gè)實(shí)施例中,在處理塊508,處理邏輯標(biāo)識(shí)客戶PT層級(jí)中的4MB頁(yè)面,并創(chuàng)建陰影PT層級(jí)中用于每個(gè)4MB頁(yè)面的頁(yè)面表,以避免大頁(yè)面映射,并由此減少將來的同步時(shí)間。否則,4MB頁(yè)面的更新將引起4MB內(nèi)每一個(gè)H)和PT頁(yè)面的同步。在一個(gè)實(shí)施例中,反向擴(kuò)展表(IET)用于跟蹤客戶PT層級(jí)中的哪些PDE指向4MB頁(yè)面。IET由PFN和屬性位索弓I,其中每一個(gè)條目列出了指向分解的4MB頁(yè)面的TOE。進(jìn)行類似的處理以支持其它尺寸的大頁(yè)面。在實(shí)施例中,僅當(dāng)大頁(yè)面將映射至少一個(gè)分頁(yè)結(jié)構(gòu)頁(yè)面時(shí),才用對(duì)應(yīng)映射替換大頁(yè)面。
[0069]在本發(fā)明的實(shí)施例中,Iro可由陰影PFN的地址索引,以最小化所需的地址轉(zhuǎn)換步驟。
[0070]在Intel? 64 ISA中,存儲(chǔ)器類型信息(例如高速緩存能力信息)可被存儲(chǔ)在映射頁(yè)面的roE/PTE內(nèi)的PAT位中。此類型信息未在是頁(yè)面表指針的TOE中捕獲到。因此,如果兩個(gè)4MB頁(yè)面要映射具有不同PAT屬性的相同區(qū)域,則將需要單獨(dú)的頁(yè)面表來傳達(dá)正確的PAT屬性。對(duì)于每組屬性使用單獨(dú)的擴(kuò)展表來解決這個(gè)問題。
[0071]在處理塊510,處理邏輯標(biāo)識(shí)陰影PT層級(jí)中映射用作客戶PT層級(jí)中ro或PT的頁(yè)面的PTE,并創(chuàng)建活動(dòng)PTE列表。
[0072]在處理塊512,處理邏輯標(biāo)識(shí)陰影PT層級(jí)中指向具有在活動(dòng)PTE列表中標(biāo)識(shí)的PTE的PT的TOE,并創(chuàng)建活動(dòng)PDE列表。
[0073]隨后,在處理塊514,如果客戶OS修改客戶PT層級(jí)的結(jié)構(gòu)(例如添加或移除H)或PT),則處理邏輯相應(yīng)地改變上面的活動(dòng)PTE和PDE列表。
[0074]圖6是用于便于地址空間改變的過程600的一個(gè)實(shí)施例的流程圖。要注意的是,在Intel? 64 ISA中,也可重新加載相同的CR3值以迫使刷新過期的TLB映射。對(duì)于CR3的改變或?qū)τ贑R3重新加載,可采取類似處理步驟。
[0075]參考圖6,過程600開始于處理邏輯確定VM退出由于VM實(shí)現(xiàn)不同客戶PT層級(jí)的請(qǐng)求(例如通過發(fā)出CR3加載請(qǐng)求)而發(fā)生(處理塊602)。
[0076]作為響應(yīng),處理邏輯掃描對(duì)應(yīng)于在元數(shù)據(jù)的活動(dòng)PDE列表中標(biāo)識(shí)的當(dāng)前在使用的陰影PT層級(jí)的所有活動(dòng)PDE以發(fā)現(xiàn)這些PDE中的哪些已經(jīng)被存取(具有設(shè)置成存取值的存取屬性)(處理塊604),并且然后初始化存取的TOE的存取屬性(處理塊606)。在Intel?64 ISA中,非葉分頁(yè)面表不支持臟位。如果存取的位被清除,則4MB區(qū)域內(nèi)的頁(yè)面沒有被讀或?qū)?,因此不能修改任何客戶?yè)面表或頁(yè)面目錄。然而,存取的位在讀與寫之間沒有區(qū)分,因此已經(jīng)被存取的4MB區(qū)域應(yīng)該被進(jìn)一步處理,即便有可能什么也沒被修改。在支持非葉頁(yè)面表的臟位的架構(gòu)中,替代地檢查臟位,并且僅已經(jīng)被寫的區(qū)域需要進(jìn)一步處理。在其它實(shí)施例中,使用代替A/D位去特權(quán)的監(jiān)視方法,要同步的結(jié)構(gòu)可通過客戶存取上的故障來標(biāo)識(shí)。
[0077]接下來,對(duì)于每個(gè)存取的TOE,處理邏輯掃描與元數(shù)據(jù)的活動(dòng)PTE列表中的存取的活動(dòng)PDE對(duì)應(yīng)的所有陰影PTE,以發(fā)現(xiàn)這些PTE中的哪些包含對(duì)于更新的頁(yè)面的映射(具有設(shè)置成更新值的更新屬性)(處理塊608)。
[0078]進(jìn)一步說,對(duì)于每個(gè)更新的頁(yè)面,處理邏輯比較客戶PT層級(jí)中的ro/ρτ條目與陰影PT層級(jí)中的對(duì)應(yīng)條目(處理塊610),并改變陰影PT層級(jí)的對(duì)應(yīng)條目以符合客戶PT層級(jí)的修改條目(例如,通過從陰影PT層級(jí)中移除客戶PT層級(jí)中缺少的PTE/roE,通過向陰影PT層級(jí)添加最近添加到客戶PT層級(jí)的新PTE/PDE等)(處理塊612)。要注意的是,添加PDE可能需要分配和初始化附加陰影PT。這又可能需要更新由地址轉(zhuǎn)換模塊126維持的各種元數(shù)據(jù)結(jié)構(gòu)。
[0079]在處理塊614,處理邏輯初始化被設(shè)置成更新值的更新屬性。更新的映射標(biāo)識(shí)由客戶OS修改的頁(yè)面。
[0080]在處理塊616,處理邏輯基于修改的客戶頁(yè)面同步陰影映射,并且由于以上修改而更新元數(shù)據(jù)(如果需要的話)。
[0081]在處理邏輯618,處理邏輯確定由VMM維持的工作組是否包含對(duì)應(yīng)于由VM請(qǐng)求的新客戶ro的陰影ro。如果是,則處理邏輯請(qǐng)求處理器加載此陰影PT層級(jí)的基地址(處理塊620)。如果否,則處理邏輯分配對(duì)應(yīng)于所請(qǐng)求的客戶PT層級(jí)的新陰影PT層級(jí)(處理塊622),向PDV添加新陰影PT層級(jí)的ro (處理塊624),向新陰影PT層級(jí)的H)添加每個(gè)有效PDE (處理塊626),配置活動(dòng)PDE和PTE以對(duì)于H)覆蓋監(jiān)視映射此H)的PTE (處理塊628),并且然后請(qǐng)求處理器加載此陰影PT層級(jí)的基地址(處理塊620)。下面結(jié)合圖13更詳細(xì)討論用于監(jiān)視PTE的過程的一個(gè)實(shí)施例。
[0082]圖7是用于同步規(guī)定地址的兩個(gè)轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的條目的過程700的一個(gè)實(shí)施例的流程圖。可執(zhí)行過程700,例如作為由VM發(fā)出的INVLPG指令的結(jié)果或作為引發(fā)的頁(yè)面故障的結(jié)果。
[0083]參考圖7,過程700開始于處理邏輯確定陰影PT層級(jí)中對(duì)于規(guī)定地址的映射是否過期(即,存在不對(duì)應(yīng)于客戶頁(yè)面表當(dāng)前內(nèi)容的有效映射)(處理塊702)。如果否,則處理邏輯繼續(xù)處理塊712。如果是,則處理邏輯確定過期條目映射H)頁(yè)面還是PT頁(yè)面(處理塊704)。如果過期條目不映射ro或PT頁(yè)面,則處理邏輯移除過期條目(處理塊710)并繼續(xù)進(jìn)行處理塊712。
[0084]如果過期條目的確映射ro或PT頁(yè)面,則處理邏輯進(jìn)一步確定是否更新映射的頁(yè)面(處理塊706)。如果否,則處理邏輯繼續(xù)進(jìn)行處理塊710。如果是,則處理邏輯更新、同步或移除修改的ro或PT陰影(處理塊708),并繼續(xù)進(jìn)行處理塊710。在一個(gè)實(shí)施例中,頁(yè)面被標(biāo)記以便將來同步。
[0085]在處理塊712,處理邏輯確定客戶PT層級(jí)是否含有對(duì)于規(guī)定地址的新映射。如果否,則過程700結(jié)束。如果是,則處理邏輯添加新映射作為對(duì)應(yīng)的PTE或TOE,并且如果必要的話,則創(chuàng)建陰影頁(yè)面,并根據(jù)添加更新元數(shù)據(jù)(處理塊714)。
[0086]圖8是用于從由VMM維持的陰影PT層級(jí)的工作組中移除陰影PT層級(jí)的過程800的一個(gè)實(shí)施例的流程圖。
[0087]在VM檢測(cè)到對(duì)應(yīng)過程的去激活后,可從工作組中移除陰影PT層級(jí)??墒褂脤?duì)于相關(guān)OS定義的啟發(fā)式或采用一組檢查,基于由客戶VM的行為相對(duì)于當(dāng)前地址空間提供的線索,檢測(cè)去激活。如果VM支持通過其OS或驅(qū)動(dòng)程序通知VMM去激活的接口,則可避免啟發(fā)式。由于資源約束,例如因?yàn)橛糜陉幱敖Y(jié)構(gòu)的存儲(chǔ)量超過目標(biāo)閾限,陰影PT層級(jí)也可被移除。
[0088]參考圖8,處理邏輯開始于從陰影PT層級(jí)中的H)移除每個(gè)有效PDE (處理塊802)。
[0089]在處理塊804,處理邏輯清除PDV中的對(duì)應(yīng)條目。
[0090]在處理塊806,處理邏輯解除分配ro頁(yè)面,并從ro轉(zhuǎn)換表(pdtt)移除轉(zhuǎn)換。pdtt用于跟蹤頁(yè)面的地址和類型(例如ro或PT)。roTT由客戶pfn索引,其中每個(gè)條目含有物理PFN和元數(shù)據(jù)。
[0091]在處理塊808,處理邏輯從映射ro的PTE中移除監(jiān)視。下面結(jié)合圖14更詳細(xì)討論用于從PTE移除監(jiān)視的過程的一個(gè)實(shí)施例。
[0092]圖9是用于向陰影PT層級(jí)的ro添加條目的過程900的一個(gè)實(shí)施例的流程圖。為了圖示,我們將考慮映射頁(yè)面表的存在的條目。
[0093]參考圖9,處理邏輯開始于向Iro添加TOE的條目(處理塊902)。
[0094]在處理塊904,處理邏輯確定在PTV中是否設(shè)置由這個(gè)PDE映射的PT。如果是,則在PTTT中查找適當(dāng)陰影PT(處理塊916),創(chuàng)建新陰影roE(處理塊914)并且過程900結(jié)束。如果否,則處理邏輯在PTV中設(shè)置對(duì)應(yīng)向量(處理塊906),分配陰影頁(yè)面,并初始化轉(zhuǎn)換(處理塊908),填充新陰影頁(yè)面表(處理塊910),更新活動(dòng)PTE/PDE列表和元數(shù)據(jù)以反映要監(jiān)視由當(dāng)前客戶PDE用作頁(yè)面表的客戶頁(yè)面(處理塊912),并添加新TOE,如果陰影頁(yè)面表含有任何活動(dòng)PTE列表元素,則將其添加到活動(dòng)PDE列表(處理塊914)。下面結(jié)合圖13更詳細(xì)討論用于監(jiān)視PTE的過程的一個(gè)實(shí)施例。
[0095]圖10是用于從陰影PT層級(jí)的H)移除條目的過程1000的一個(gè)實(shí)施例的流程圖。
[0096]參考圖10,處理邏輯開始于從IPD PDE列表移除此PDE的條目(處理塊1002)。如果PDE在活動(dòng)PDE列表中,則必須更新活動(dòng)PDE列表。
[0097]在處理塊1004,處理邏輯確定PDE是否是映射對(duì)應(yīng)PT的最后條目。如果否,則過程1000結(jié)束。如果是,則處理邏輯清除PTV中用于PT的條目(處理塊1006),移除每個(gè)有效PTE (處理塊1008),對(duì)于PT覆蓋更新映射此PT的活動(dòng)PTE/PDE (處理塊1010),并移除陰影頁(yè)面轉(zhuǎn)換和釋放用于存儲(chǔ)PT陰影頁(yè)面的存儲(chǔ)器(處理塊1010)。
[0098]圖11是用于向陰影PT層級(jí)的PT添加條目的過程1100的一個(gè)實(shí)施例的流程圖。
[0099]參考圖11,處理邏輯開始于向IPT添加此PTE的條目(處理塊1102)。
[0100]在處理塊1106,處理邏輯創(chuàng)建陰影映射并繼續(xù)進(jìn)行處理塊1108。
[0101]在處理塊1108,處理邏輯確定是否設(shè)置PDV或PTV中的對(duì)應(yīng)條目。如果否,則過程1100結(jié)束。如果是,處理邏輯將此條目添加到活動(dòng)PTE列表,并更新指示它是否映射ro和/或PT頁(yè)面的相關(guān)聯(lián)元數(shù)據(jù)(處理塊1110)。如果剛創(chuàng)建的活動(dòng)PTE條目是這個(gè)頁(yè)面表的第一條目,則Iro必須被查閱,并且映射此頁(yè)面表頁(yè)面的每個(gè)PDE必須被添加到活動(dòng)PDE列表。
[0102]圖12是用于從陰影PT層級(jí)的PT移除條目的過程1200的一個(gè)實(shí)施例的流程圖。
[0103]參考圖12,處理邏輯開始于確定此PTE是否映射在PDV或PTV中設(shè)置的頁(yè)面(處理塊1202)。如果否,則處理邏輯繼續(xù)進(jìn)行處理塊1206。如果是,則處理邏輯從活動(dòng)PTE列表中移除PTE。如果這是PT中的最后的活動(dòng)PTE列表元素,則參考此PT的PDE從活動(dòng)TOE列表中移除(處理塊1204),并且繼續(xù)進(jìn)行處理塊1206。
[0104]在處理塊1206,處理邏輯從IPT中移除對(duì)應(yīng)的條目。
[0105]圖13是用于監(jiān)視陰影PT層級(jí)的PTE的過程1300的一個(gè)實(shí)施例的流程圖。圖13中示出的步驟表示當(dāng)監(jiān)視器認(rèn)識(shí)到已經(jīng)被映射作為數(shù)據(jù)頁(yè)面的頁(yè)面被用作頁(yè)面目錄或頁(yè)面表頁(yè)面時(shí)所需的處理。這個(gè)過程因此將通過由PTE映射的頁(yè)面的狀況改變觸發(fā)。
[0106]參考圖13,處理邏輯開始于確定該P(yáng)TE是否在活動(dòng)PTE列表中標(biāo)識(shí)了(處理塊1302)。如果是,則處理邏輯添加之前失去的覆蓋(處理塊1304)。此流程通過映射的頁(yè)面的狀況改變來觸發(fā)。由于這個(gè)PTE已經(jīng)在活動(dòng)PTE列表中了,因此它必須是由這個(gè)PTE映射的幀之前被用作PT或ro而現(xiàn)在也用在其它容量中的情況。此類信息可明確地與條目一起存儲(chǔ),或存儲(chǔ)在關(guān)聯(lián)的元數(shù)據(jù)中。如果PTE不在活動(dòng)PTE列表中,則處理邏輯將PTE添加到活動(dòng)PTE列表,并相應(yīng)地更新元數(shù)據(jù)(處理塊1306)。
[0107]接下來,在處理塊1308,處理邏輯確定該P(yáng)TE是否是此PT的第一活動(dòng)PTE列表?xiàng)l目。如果否,則過程1300結(jié)束。如果是,則處理邏輯向活動(dòng)PDE列表添加映射此PT(如通過Iro所發(fā)現(xiàn)的)的條目。
[0108]圖14是用于減小由陰影PT層級(jí)的PTE提供的監(jiān)視覆蓋的過程1400的一個(gè)實(shí)施例的流程圖。當(dāng)從工作組中移除過程或移除參考頁(yè)面表的最后TOE時(shí),導(dǎo)致之前監(jiān)視的頁(yè)面目錄或頁(yè)面表頁(yè)面的狀況改變,可能調(diào)用此過程。
[0109]參考圖14,處理邏輯開始于確定此PTE是否已經(jīng)監(jiān)視了既是頁(yè)面表又是頁(yè)面目錄頁(yè)面的頁(yè)面(處理塊1402)。如果是,則處理邏輯降低覆蓋級(jí),指示PTE現(xiàn)在監(jiān)視作為PT或作為ro但不是二者的頁(yè)面(處理塊1404)。如果否,則處理邏輯從活動(dòng)PTE列表中移除該P(yáng)TE(處理塊1406)。要注意的是,如果PTE是對(duì)于其在單個(gè)容量中的使用而跟蹤的頁(yè)面的元素,則它現(xiàn)在必須是頁(yè)面不再需要監(jiān)視的情況。
[0110]接下來,如果PT中的最后活動(dòng)PTE列表元素被移除(處理塊1408),則處理邏輯從活動(dòng)PDE列表(如通過IB)所發(fā)現(xiàn)的)中移除映射此頁(yè)面表的對(duì)應(yīng)條目(處理塊1410)。
[0111]如上面所討論的,裸平臺(tái)硬件116包括多個(gè)物理處理器,包含處理器118和119。在虛擬機(jī)環(huán)境內(nèi),每個(gè)物理處理器或物理處理器的任何組合可用于支持一個(gè)或多個(gè)虛擬處理器。當(dāng)在多處理器系統(tǒng)中使用共享陰影頁(yè)面表時(shí),可出現(xiàn)幾個(gè)一致性問題,這些問題必須被適當(dāng)處置以便保全正確性。這些問題的主要源頭是,對(duì)于每個(gè)物理處理器存在單獨(dú)的硬件TLB。存在這樣的情況:當(dāng)陰影頁(yè)面表在一個(gè)物理處理器上改變時(shí),但一個(gè)或多個(gè)其它物理處理器在它們的硬件TLB中可含有老的不一致的映射,并且能夠執(zhí)行一些客戶頁(yè)面表的更新,而無需存儲(chǔ)器虛擬化算法識(shí)別并跟蹤此類修改的任何能力。為了解決此類問題,可發(fā)送IPI(處理器間中斷)以同步其它物理處理器的TLB。在一些實(shí)現(xiàn)中,客戶執(zhí)行可在陰影頁(yè)面表修改期間被中止,以簡(jiǎn)化狀態(tài)跟蹤和陰影頁(yè)面表管理。
[0112]本發(fā)明的實(shí)施例可用于消除對(duì)于IPI的需要,隨著虛擬處理器數(shù)量的增加,沒有施加附加存儲(chǔ)器開銷。這可通過向監(jiān)視器處理器添加跟蹤數(shù)據(jù)來達(dá)成,監(jiān)視器處理器仍可含有到陰影頁(yè)面表頁(yè)面的可寫映射以及添加的同步相位,同時(shí)此類映射存在。
[0113]圖15是用于維持多處理器系統(tǒng)中陰影PT層級(jí)的過程1500的一個(gè)實(shí)施例的流程圖。在處理塊1510中,創(chuàng)建用于一個(gè)處理器(例如處理器118)的陰影PT層級(jí)的工作組。用于處理器118的陰影PT層級(jí)使用TLB 122存儲(chǔ)虛擬到物理地址轉(zhuǎn)換。在處理塊1512中,創(chuàng)建用于另一個(gè)處理器(例如處理器119)的陰影PT層級(jí)的工作組。用于處理器119的陰影PT層級(jí)使用TLB 123存儲(chǔ)虛擬到物理地址轉(zhuǎn)換。處理器118的工作組可不同于處理器119的工作組,因?yàn)椴煌腣M可運(yùn)行在不同處理器上,或者由于任何其它原因。然而,在多于一個(gè)處理器的工作組中可包含任何頁(yè)面幀,PT和PF。在本發(fā)明的范圍內(nèi),還可創(chuàng)建用于任何數(shù)量的附加處理器的工作組。
[0114]在處理塊1514中,創(chuàng)建修改的客戶表記錄。修改的客戶表記錄可以是在其中存儲(chǔ)已經(jīng)修改了客戶頁(yè)面表的記錄的列表或任何類型數(shù)據(jù)結(jié)構(gòu)。對(duì)于每個(gè)修改的客戶頁(yè)面表,保持處理器在處理器的硬件TLB中仍可含有到那個(gè)客戶頁(yè)面表的可寫參考的記錄。
[0115]例如,修改的客戶頁(yè)面表記錄可包含用于每個(gè)修改的客戶頁(yè)面表的位向量,其中位向量中的一位用于系統(tǒng)中的每個(gè)處理器,其中每位可用于記錄對(duì)應(yīng)處理器的硬件TLB是否仍可含有到修改的客戶頁(yè)面表的可寫參考。
[0116]在處理塊1516中,處理器118的工作組如上面所描述的維持,例如通過從每個(gè)新陰影PT層級(jí)提取元數(shù)據(jù),將元數(shù)據(jù)存儲(chǔ)在VTLB數(shù)據(jù)存儲(chǔ)器124中,并且當(dāng)修改陰影PT層級(jí)時(shí)更新元數(shù)據(jù)。元數(shù)據(jù)可包含PT向量(PTV)、PD向量(rov)、活動(dòng)PTE列表、活動(dòng)PDE列表以及所需的任何其它信息。在處理塊1518中,處理器119的工作組如上面所描述的維持,例如通過從每個(gè)新陰影PT層級(jí)提取元數(shù)據(jù),將元數(shù)據(jù)存儲(chǔ)在VTLB數(shù)據(jù)存儲(chǔ)器124中,并且當(dāng)修改陰影PT層級(jí)時(shí)更新元數(shù)據(jù)。元數(shù)據(jù)可包含PT向量(PTV)、PD向量(rov)、活動(dòng)pte列表、活動(dòng)PDE列表以及所需的任何其它信息。盡管VTLB數(shù)據(jù)存儲(chǔ)器124在圖1中被顯示為單個(gè)塊,但在本發(fā)明的范圍內(nèi),用于任何數(shù)量處理器的工作組的元數(shù)據(jù)可被存儲(chǔ)在任何數(shù)量的單獨(dú)數(shù)據(jù)結(jié)構(gòu)和/或存儲(chǔ)器中。例如,用于處理器118的工作組的元數(shù)據(jù)和用于處理器119的工作組的元數(shù)據(jù)可被存儲(chǔ)在兩個(gè)單獨(dú)數(shù)據(jù)結(jié)構(gòu)中。在本發(fā)明的范圍內(nèi),還可維持用于任何數(shù)量的附加處理器的工作組。
[0117]在處理塊1520中,識(shí)別對(duì)客戶頁(yè)面表的修改。在處理塊1522中,條目被添加到修改的客戶頁(yè)面表地址的修改的客戶表記錄,其中該條目指示系統(tǒng)中的每個(gè)處理器(包含處理器118和119)在其硬件TLB中可含有到客戶頁(yè)面表的可寫參考。
[0118]在處理塊1530中,創(chuàng)建新陰影頁(yè)面表。在處理塊1532中,條目被添加到新陰影頁(yè)面表地址的修改的客戶表記錄,其中該條目指示系統(tǒng)中的每個(gè)處理器(包含處理器118和119)在其硬件TLB中可含有到客戶頁(yè)面表的可寫參考。
[0119]在處理塊1540,同步事件發(fā)生在系統(tǒng)中的任何處理器(例如處理器118)上。在處理塊1542中,根據(jù)在圖16中圖示的過程1600,將修改的客戶表記錄中的每個(gè)客戶頁(yè)面表與對(duì)應(yīng)的陰影頁(yè)面表同步。在處理塊1544中,VM退出發(fā)生在不同處理器(例如處理器119)上,導(dǎo)致刷新那個(gè)處理器的硬件TLB (例如TLB 123),并更新修改的客戶表記錄以指示TLB不再含有到客戶頁(yè)面表的任何可寫參考。
[0120]圖16是用于同步修改的客戶頁(yè)面表記錄中的客戶頁(yè)面表與多處理器系統(tǒng)中的對(duì)應(yīng)陰影頁(yè)面表的過程1600的一個(gè)實(shí)施例的流程圖。在處理塊1610中,到所有陰影頁(yè)面表中的客戶頁(yè)面表的所有可寫參考被改變成只讀。在處理塊1612中,清除到處理器118的硬件TLB (例如TLB 122)中的客戶頁(yè)面表的參考(如果有的話)。處理塊1612可發(fā)生在源自于識(shí)別出同步事件的VM退出期間,或者可由軟件執(zhí)行。作為處理塊1612的結(jié)果,對(duì)處理器118上的客戶頁(yè)面表的任何將來寫存取將引起頁(yè)面故障異常,并且將識(shí)別和記錄更新,如過程1500中的處理塊1520中。在處理塊1614中,更新修改的客戶表記錄以反映在它們的硬件TLB中不含有到客戶頁(yè)面表的可寫參考的任何其它處理器。
[0121]在處理塊1620中,確定客戶頁(yè)面表是否含有任何未處理的條目。如果它含有,則在處理塊1622中,確定客戶頁(yè)面表中的條目是否與陰影頁(yè)面表中的對(duì)應(yīng)條目同步。如果否,則在處理塊1624,使陰影頁(yè)面表中的對(duì)應(yīng)條目無效,例如改變成不存在狀況。要指出的是,執(zhí)行處理塊1624,代替將陰影頁(yè)面表?xiàng)l目的值改變成客戶頁(yè)面表?xiàng)l目的值,以阻止在系統(tǒng)中其它處理器上的不正確行為。
[0122]在處理塊1630中,更新修改的客戶表記錄以指示處理器118在其硬件TLB中不含有到客戶頁(yè)面表的可寫參考。在處理塊1632中,確定任何其它處理器在其硬件TLB中是否含有到客戶頁(yè)面表的可寫參考。如果否,則在處理塊1634中,從修改的客戶表記錄中移除客戶頁(yè)面表的記錄。要注意的是,客戶頁(yè)面表的同步發(fā)生在從修改的客戶表記錄中移除客戶頁(yè)面表之前,以確保同步發(fā)生在已經(jīng)從系統(tǒng)中移除最后的可寫映射之后。
[0123]在本發(fā)明的范圍內(nèi),可按不同次序執(zhí)行任何所圖示的方法實(shí)施例,省略圖示的框,添加附加框,或者重新記錄、省略或附加框的組合。例如,處理器的工作組與第一處理器上的當(dāng)前客戶狀態(tài)的同步可包含比在圖16中示出的更多。
[0124]從而,已經(jīng)描述了用于支持多處理器虛擬機(jī)環(huán)境中地址轉(zhuǎn)換的方法和設(shè)備。要理解到,以上描述意圖是說明性的,而非約束性的。在閱讀和理解了以上描述后,許多其它實(shí)施例對(duì)于本領(lǐng)域技術(shù)人員將是顯而易見的。因此,本發(fā)明的范圍應(yīng)該相對(duì)于所附權(quán)利要求書連同賦予此類權(quán)利要求書權(quán)利的等同物的完整范圍來確定。
【權(quán)利要求】
1.一種方法,包括: 創(chuàng)建用于多個(gè)處理器中的第一處理器的陰影頁(yè)面表層級(jí)的第一工作組; 創(chuàng)建用于所述多個(gè)處理器中的第二處理器的陰影頁(yè)面表層級(jí)的第二工作組; 保持修改的客戶頁(yè)面表的記錄,以及對(duì)于每個(gè)修改的客戶頁(yè)面表,所述多個(gè)處理器中的哪些處理器具有包含到所述修改的客戶頁(yè)面表的可寫參考的硬件轉(zhuǎn)換后備緩沖器的指示;以及 將每個(gè)修改的客戶頁(yè)面表與所述第一工作組中的對(duì)應(yīng)陰影頁(yè)面表同步。
2.如權(quán)利要求1所述的方法,進(jìn)一步包括將每個(gè)修改的客戶頁(yè)面表與所述第二工作組中的對(duì)應(yīng)陰影頁(yè)面表同步。
3.如權(quán)利要求1所述的方法,其中執(zhí)行將每個(gè)修改的客戶頁(yè)面表與所述第一工作組中的對(duì)應(yīng)陰影頁(yè)面表同步和將每個(gè)修改的客戶頁(yè)面表與所述第二工作組中的對(duì)應(yīng)陰影頁(yè)面表同步無需處理器間中斷。
4.如權(quán)利要求1所述的方法,其中陰影頁(yè)面表層級(jí)的所述第一工作組使用所述第一處理器中的第一硬件轉(zhuǎn)換后備緩沖器存儲(chǔ)虛擬到物理地址轉(zhuǎn)換。
5.如權(quán)利要求 1所述的方法,其中陰影頁(yè)面表層級(jí)的所述第二工作組使用所述第二處理器中的第二硬件轉(zhuǎn)換后備緩沖器存儲(chǔ)虛擬到物理地址轉(zhuǎn)換。
6.如權(quán)利要求1所述的方法,其中修改的客戶表記錄中的所述記錄包含用于每個(gè)修改的客戶頁(yè)面表的位向量,其中所述位向量中的一位用于所述多個(gè)處理器中的每個(gè)處理器,其中每個(gè)位將記錄所述對(duì)應(yīng)處理器的硬件轉(zhuǎn)換后備緩沖器是否含有到所述修改的客戶頁(yè)面表的可寫參考。
7.如權(quán)利要求1所述的方法,進(jìn)一步包括:通過從每個(gè)新陰影頁(yè)面表層級(jí)提取元數(shù)據(jù)、將所述元數(shù)據(jù)存儲(chǔ)在虛擬轉(zhuǎn)換后備緩沖器數(shù)據(jù)存儲(chǔ)器中,并且在修改所述陰影頁(yè)面表層級(jí)時(shí)更新所述元數(shù)據(jù),來維持所述第一工作組和所述第二工作組。
8.如權(quán)利要求1所述的方法,進(jìn)一步包括:識(shí)別對(duì)客戶頁(yè)面表的修改。
9.如權(quán)利要求8所述的方法,進(jìn)一步包括:向所述修改的客戶頁(yè)面表的修改的客戶表記錄添加條目。
10.如權(quán)利要求10所述的方法,其中所述條目指示所述多個(gè)處理器中的每個(gè)處理器在其硬件轉(zhuǎn)換后備緩沖器中含有到所述修改的客戶頁(yè)面表的可寫參考。
11.如權(quán)利要求1所述的方法,進(jìn)一步包括:創(chuàng)建新陰影頁(yè)面表。
12.如權(quán)利要求11所述的方法,進(jìn)一步包括:向所述新陰影頁(yè)面表的所述修改的客戶表記錄添加條目。
13.如權(quán)利要求10所述的方法,其中所述條目指示所述多個(gè)處理器中的每個(gè)處理器在其硬件轉(zhuǎn)換后備緩沖器中含有到對(duì)應(yīng)于所述新陰影頁(yè)面表的客戶頁(yè)面表的可寫參考。
14.如權(quán)利要求4所述的方法,進(jìn)一步包括:刷新所述第一硬件轉(zhuǎn)換后備緩沖器。
15.如權(quán)利要求14所述的方法,進(jìn)一步包括:更新所述修改的客戶表記錄以指示所述第一硬件轉(zhuǎn)換后備緩沖器不含有到客戶頁(yè)面表的可寫參考。
16.—種方法,包括: 將修改的客戶表記錄中的客戶頁(yè)面表與多處理器系統(tǒng)中的對(duì)應(yīng)陰影頁(yè)面表同步,包含:將到所有陰影頁(yè)面表中的所述客戶頁(yè)面表的所有可寫參考改變成只讀;以及 清除第一處理器的第一硬件轉(zhuǎn)換后備緩沖器中到所述客戶頁(yè)面表的參考。
17.如權(quán)利要求16所述的方法,進(jìn)一步包括: 確定所述客戶頁(yè)面表包含未處理的條目; 確定所述未處理的條目與所述陰影頁(yè)面表中的對(duì)應(yīng)條目不同步;以及 使所述陰影頁(yè)面表中的所述對(duì)應(yīng)條目無效。
18.如權(quán)利要求16所述的方法,進(jìn)一步包括:更新所述修改的客戶表記錄以指示所述第一硬件轉(zhuǎn)換后備緩沖器不包含到所述客戶頁(yè)面表的可寫參考。
19.如權(quán)利要求18所述的方法,進(jìn)一步包括: 確定第二處理器中的第二硬件轉(zhuǎn)換后備緩沖器是否不含有到所述客戶頁(yè)面表的可寫參考;以及 從所述修改的客戶表記錄中移除所述客戶頁(yè)面表的記錄。
20.—種系統(tǒng),包括: 第一處理器,具有用于存儲(chǔ)陰影頁(yè)面表層級(jí)的第一工作組的虛擬到物理地址轉(zhuǎn)換的第一硬件轉(zhuǎn)換后備緩沖器;以及 第二處理器,具有用于存儲(chǔ)陰影頁(yè)面表層級(jí)的第二工作組的虛擬到物理地址轉(zhuǎn)換的第二硬件轉(zhuǎn)換后備緩沖器, 其中保持修改的客戶頁(yè)面表記錄以便將每個(gè)修改的客戶頁(yè)面表與所述第一工作組和所述第二工作組中的對(duì)應(yīng)陰影頁(yè)面表同步,其中對(duì)于每個(gè)修改的客戶頁(yè)面表,所述第一物理轉(zhuǎn)換后備緩沖器和所述第二轉(zhuǎn)換后備緩沖器中的哪個(gè)含有到所述修改的客戶頁(yè)面表的可寫參考的指示。
【文檔編號(hào)】G06F9/52GK104081346SQ201280069252
【公開日】2014年10月1日 申請(qǐng)日期:2012年2月7日 優(yōu)先權(quán)日:2012年2月7日
【發(fā)明者】A.羅本科, A.安德森 申請(qǐng)人:英特爾公司