两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

內(nèi)存靜態(tài)劃分虛擬化方法

文檔序號(hào):6400196閱讀:503來(lái)源:國(guó)知局
專利名稱:內(nèi)存靜態(tài)劃分虛擬化方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)設(shè)計(jì)領(lǐng)域,更具體地說(shuō),本發(fā)明涉及一種內(nèi)存靜態(tài)劃分虛擬化方法。
背景技術(shù)
內(nèi)存虛擬化是在虛擬地址到物理地址映射的基礎(chǔ)上增加一層映射關(guān)系,使虛擬地址映射到虛擬物理地址,再將虛擬物理地址映射到物理地址,同時(shí)使得每個(gè)虛擬機(jī)(Virtual Machine, VM)都認(rèn)為自己獨(dú)立運(yùn)行在從O開始的虛擬物理地址上。內(nèi)存虛擬化的實(shí)現(xiàn)形式有很多種方式,從內(nèi)存分配角度看,有動(dòng)態(tài)分配和靜態(tài)分配兩種形式。現(xiàn)有X86上商用或開源虛擬機(jī)管理器(VMM)均采用動(dòng)態(tài)分配的方式實(shí)現(xiàn)內(nèi)存虛擬化,虛擬機(jī)需要內(nèi)存時(shí)再向宿主機(jī)請(qǐng)求內(nèi)存。其中,虛擬機(jī)管理器是提供虛擬機(jī)環(huán)境底層基礎(chǔ)技術(shù)支撐,并對(duì)虛擬機(jī)環(huán)境進(jìn)行管理的底層系統(tǒng)軟件。從底層技術(shù)基礎(chǔ)上看,X86上商用或開源虛擬機(jī)管理器有兩種實(shí)現(xiàn)方式。一種是采用軟件方法修改虛擬機(jī)內(nèi)核頁(yè)表裝填代碼,管理虛擬地址到虛物理地址的代換,并配合虛擬機(jī)管理器為硬件提供影子頁(yè)表,硬件并不使用虛擬機(jī)內(nèi)核提供的頁(yè)表,而是使用影子頁(yè)表,將虛擬地址代換到機(jī)器地址。另外一種是基于X86硬件提供的NPT(AMD)或VT(Intel)內(nèi)存虛擬化接口,由虛擬機(jī)管理器管理該硬件接口相關(guān)設(shè)置來(lái)實(shí)現(xiàn)內(nèi)存虛擬化,該方法對(duì)虛擬機(jī)操作系統(tǒng)內(nèi)核透明。現(xiàn)有方法的缺點(diǎn)主要是開銷大:內(nèi)存動(dòng)態(tài)分配性能開銷大:采用內(nèi)存動(dòng)態(tài)分配的方式時(shí),內(nèi)存分配由每一次虛擬機(jī)內(nèi)頁(yè)面缺失時(shí)觸發(fā),需要硬件捕獲該異常,并保留虛擬機(jī)狀態(tài),然后切換到宿主機(jī),由宿主機(jī)分配好內(nèi)存,并設(shè)置好相應(yīng)的硬件接口后再返回虛擬機(jī),此時(shí)虛擬機(jī)才具備可用的物理內(nèi)存。該流程較長(zhǎng),且屬于串行操作,使得虛擬機(jī)內(nèi)內(nèi)存分配的性能較低。X86基于NPT或VT硬件的性能開銷大:硬件提供了這些接口后,可不使用影子頁(yè)表,也無(wú)需修改虛擬機(jī)內(nèi)核,使得內(nèi)存虛擬化對(duì)虛擬機(jī)完全透明,但該類接口的引入導(dǎo)致旁路轉(zhuǎn)換緩沖(Translation Lookaside Buffer, TLB)缺失(Miss)(在本說(shuō)明書中,旁路轉(zhuǎn)換緩沖缺失簡(jiǎn)稱“TLBMiss”)后裝填時(shí)的訪存次數(shù)大大增加,虛擬機(jī)的TLB性能開銷較大?;谟白禹?yè)表的方式空間開銷大:具體地說(shuō),針對(duì)沒一個(gè)虛擬機(jī)內(nèi)核管理的頁(yè)表,均需要構(gòu)建另外一份該頁(yè)表的影子頁(yè)表提供給硬件使用,該方法使得頁(yè)表所占用的空間加倍。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)中存在上述缺陷,提供一種能夠解決內(nèi)存虛擬機(jī)的性能和空間開銷問題的基于TLB Miss裝填的內(nèi)存靜態(tài)劃分虛擬化方法。根據(jù)本發(fā)明,提供了一種內(nèi)存靜態(tài)劃分虛擬化方法,其特征在于包括:在進(jìn)行虛地址轉(zhuǎn)換時(shí),首先查詢TLB表,如果虛地址在表中命中,則直接根據(jù)TLB中的頁(yè)表項(xiàng)PTE中的頁(yè)幀號(hào)PFN確定虛地址所對(duì)應(yīng)的物理地址;如果沒有命中,則轉(zhuǎn)入TLB的不命中處理流程。
優(yōu)選地,在TLB的不命中處理流程中,從虛擬地址VA獲得物理地址PA,再通過(guò)虛擬機(jī)控制寄存器中存儲(chǔ)的虛擬機(jī)地址偏移Offset計(jì)算出物理地址PA對(duì)應(yīng)的機(jī)器地址MA,再將機(jī)器地址MA裝填至TLB中,其中,虛擬機(jī)地址偏移Offset為虛擬機(jī)控制寄存器中存放的虛擬機(jī)地址偏移量Offset。優(yōu)選地,TLB的不命中處理流程包括:a)頁(yè)表基地址寄存器中填的頁(yè)表基地址是虛擬物理地址,先從虛擬機(jī)控制寄存器得到虛擬機(jī)地址偏移量Offset,加上頁(yè)表基地址寄存器中的虛擬物理地址,得到頁(yè)表基地址的機(jī)器地址MALI,其中,虛擬機(jī)地址偏移Offset為虛擬機(jī)控制寄存器中存放的虛擬機(jī)地址偏移量Offset ;b)從頁(yè)表基地址的機(jī)器地址MALI所對(duì)應(yīng)的頁(yè)面中,取出第一級(jí)Levell的頁(yè)表,從中取出頁(yè)幀號(hào),將頁(yè)幀號(hào)乘以PAGE_SIZE,得到作為下一級(jí)頁(yè)表的第二級(jí)Level2的頁(yè)表的基地址的物理地址PAL1,再根據(jù)公式MAL2=PA Ll+0ffset計(jì)算出作為下一級(jí)頁(yè)表的第二級(jí)Level2的頁(yè)表的基地址的機(jī)器地址MAL2,其中,PAGE_SIZE為頁(yè)面大?。籧)從上一步得到的機(jī)器地址MAL2所對(duì)應(yīng)的頁(yè)面中取出第二級(jí)Level2的頁(yè)表,從中取出頁(yè)幀號(hào),將頁(yè)幀號(hào)乘以PAGE_SIZE,以得到作為下一級(jí)頁(yè)表的第三級(jí)Level3的頁(yè)表的基地址的物理地址PAL2,再根據(jù)公式MAL3=PAL2+0ffset計(jì)算出作為下一級(jí)頁(yè)表的第三級(jí)Leve13的基地址的機(jī)器地址MAL3 ;d)從上一步得到的機(jī)器地址MAL3所對(duì)應(yīng)的頁(yè)面中取出第三級(jí)Level3的頁(yè)表,從中取出頁(yè)幀號(hào),乘以PAGE_SIZE,得到下一級(jí)頁(yè)表的基地址的物理地址PAL3,再根據(jù)公式MAL4=PAL3+0ffset計(jì)算出下一級(jí)頁(yè)表基地址的機(jī)器地址MAL4 ;e)從上一步得到的機(jī)器地址MAL4所對(duì)應(yīng)的頁(yè)面中取出TLB的頁(yè)表項(xiàng)PTE的頁(yè)表,從中取出頁(yè)幀號(hào),將頁(yè)幀號(hào)乘以PAGE_SIZE,以得到物理地址PAL4,再根據(jù)公式MA=PAL4+0ffset計(jì)算出機(jī)器地址MA,最終得到虛擬地址VA到機(jī)器地址MA的映射關(guān)系,并根據(jù)該機(jī)器地址MA裝填硬件TLB。通過(guò)根據(jù)本發(fā)明實(shí)施例的TLB裝填實(shí)現(xiàn)內(nèi)存虛擬化的工作方法,在針對(duì)虛擬機(jī),虛擬機(jī)內(nèi)核認(rèn)為的物理地址實(shí)際為虛擬的物理地址,所以虛擬機(jī)內(nèi)核在其頁(yè)表中放置的PFN實(shí)際上也是虛擬的物理地址。這樣,在TLB不命中的處理流程中獲取的各級(jí)頁(yè)表的PFN需要按照虛擬物理地址到真實(shí)物理地址的代換關(guān)系進(jìn)行處理,得到真實(shí)的物理地址后從中得到頁(yè)表項(xiàng)條目,并確定最終的代換關(guān)系填入硬件。該代換關(guān)系為MA=PA+0fTset,且該Offset存放在處理器內(nèi)部寄存器VPCR中,處理該代換關(guān)系不需增加額外訪存,性能開銷極低。本發(fā)明的一個(gè)主要優(yōu)點(diǎn)在于采用固定連續(xù)分配虛擬機(jī)內(nèi)存空間,可以避免維護(hù)復(fù)雜的物理地址PA到機(jī)器地址MA的映射關(guān)系,實(shí)現(xiàn)物理地址PA到機(jī)器地址MA的一次性代換,相比影子頁(yè)表,該方式?jīng)]有額外的頁(yè)表維護(hù)開銷和內(nèi)存開銷,并且虛擬機(jī)操作系統(tǒng)內(nèi)核在管理頁(yè)面時(shí)無(wú)需通知虛擬機(jī)管理器或宿主機(jī)內(nèi)核,內(nèi)存虛擬化對(duì)虛擬機(jī)操作系統(tǒng)完全透明。


結(jié)合附圖,并通過(guò)參考下面的詳細(xì)描述,將會(huì)更容易地對(duì)本發(fā)明有更完整的理解并且更容易地理解其伴隨的優(yōu)點(diǎn)和特征,其中:圖1示意性地示出了內(nèi)存靜態(tài)分配示意圖。圖2示意性地示出了虛擬地址、物理地址和機(jī)器地址之間的關(guān)系。圖3是一個(gè)沒有內(nèi)存虛擬化時(shí),直接由虛擬地址VA代換出機(jī)器地址MA的代換示意圖。圖4示出了影子頁(yè)表示意圖。圖5示出了 X86硬件支持的頁(yè)表代換流程圖。圖6示意性地示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的內(nèi)存靜態(tài)映射示意圖。圖7示意性地示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的內(nèi)存靜態(tài)劃分虛擬化TLB裝填流程圖。需要說(shuō)明的是,附圖用于說(shuō)明本發(fā)明,而非限制本發(fā)明。注意,表示結(jié)構(gòu)的附圖可能并非按比例繪制。并且,附圖中,相同或者類似的元件標(biāo)有相同或者類似的標(biāo)號(hào)。
具體實(shí)施例方式為了使本發(fā)明的內(nèi)容更加清楚和易懂,下面結(jié)合具體實(shí)施例和附圖對(duì)本發(fā)明的內(nèi)容進(jìn)行詳細(xì)描述。與現(xiàn)有技術(shù)中采用動(dòng)態(tài)分配的方式實(shí)現(xiàn)內(nèi)存虛擬化,虛擬機(jī)需要內(nèi)存時(shí)再向宿主機(jī)請(qǐng)求內(nèi)存的方案不同;本發(fā)明實(shí)施例采用靜態(tài)內(nèi)存分配,在虛擬機(jī)創(chuàng)建之時(shí)預(yù)先分配固定大小的內(nèi)存。相應(yīng)地,在根據(jù)本發(fā)明實(shí)施例的基于TLB Miss裝填的內(nèi)存靜態(tài)劃分虛擬化方法中,以內(nèi)存靜態(tài)分配的方式,配合修改TLB Miss裝填流程實(shí)現(xiàn)對(duì)虛擬機(jī)內(nèi)核透明的內(nèi)存虛擬化方式,具有低性能開銷和低內(nèi)存開銷的特點(diǎn)。 下面將具體描述本發(fā)明的原理。圖1示意性地示出了內(nèi)存靜態(tài)分配示意圖如圖1所示,以4GB的內(nèi)存容量為例,內(nèi)存中包括已分配區(qū)間Al和空閑區(qū)間A2(即,未分配區(qū)間)。定義地址描述符來(lái)表示已分配區(qū)間Al,描述符至少包含以下兩個(gè)字段(或與之等價(jià)的字段):addr:地址區(qū)間的起始地址size:地址區(qū)間的長(zhǎng)度維護(hù)地址描述符列表memlist,表示當(dāng)前所有已分配的地址區(qū)間。<內(nèi)存分配流程>在上述基礎(chǔ)上,內(nèi)存分配流程可按下述流程進(jìn)行:假設(shè)申請(qǐng)的內(nèi)存大小為len,首先將申請(qǐng)的內(nèi)存的起始地址start設(shè)置為0,隨后執(zhí)行下述步驟:1.構(gòu)造一個(gè)初始的地址區(qū)間R: [start, start+len);2.遍歷memlist中的表項(xiàng)X:i)如果區(qū)間R與X所表示的地址區(qū)間存在交集,修改start為X所代表區(qū)間的上界,由此構(gòu)造新的地址區(qū)間R: [start, start+len),繼續(xù)遍歷;
)如果區(qū)間R超出有效的物理內(nèi)存范圍,結(jié)束遍歷,跳轉(zhuǎn)3;iii)否則,就表明地址區(qū)間R在有效的物理內(nèi)存范圍內(nèi),且處于未分配狀態(tài),結(jié)束遍歷,跳轉(zhuǎn)4 ;3.分配失敗,算法結(jié)束;4.構(gòu)造新的地址描述符,其addr字段為start, size字段為len,將該描述符加到memlist表中。分配成功。內(nèi)存申請(qǐng)成功后,將標(biāo)記該虛擬機(jī)使用該段內(nèi)存,并且將內(nèi)存區(qū)域物理地址偏移量填入CPU內(nèi)部虛擬機(jī)控制寄存器。〈釋放內(nèi)存流程〉假設(shè)所要釋放的內(nèi)存區(qū)間的地址描述符為A。遍歷memlist中的表項(xiàng),若存在一個(gè)表項(xiàng)M與A匹配,則從memlist中刪除M,釋放成功;否則即失敗。內(nèi)存釋放成功后,將銷毀該虛擬機(jī)相關(guān)信息,并清除CPU內(nèi)部虛擬機(jī)控制寄存器中存放的內(nèi)存區(qū)域物理地址偏移量信息。<通過(guò)TLB裝填實(shí)現(xiàn)內(nèi)存虛擬化的工作原理>虛擬機(jī)管理器的內(nèi)存模塊負(fù)責(zé)完成物理地址到機(jī)器地址的映射,我們將這個(gè)映射記為f,同時(shí),虛擬機(jī)內(nèi)核的內(nèi)存管理模塊要完成虛擬地址到物理地址的映射,我們將這個(gè)映射記為g,則虛擬地址、物理地址和機(jī)器地址之間的關(guān)系如圖2所示。內(nèi)存虛擬化的方法同CPU處理器體系結(jié)構(gòu)相關(guān)?,F(xiàn)代處理器均支持虛地址,內(nèi)存分頁(yè)管理,從一個(gè)虛地址映射到物理地址都要由操作系統(tǒng)維護(hù)的頁(yè)表來(lái)建立映射關(guān)系。處理器為了加快虛地址到物理地址`的翻譯速度,在芯片內(nèi)提供了一個(gè)旁路轉(zhuǎn)換緩沖(TLB,Translation lookaside buffer),在其中存儲(chǔ)最近使用的頁(yè)表項(xiàng)PTE。處理器在特定的模式下訪存時(shí)均以虛地址查詢TLB后計(jì)算出物理地址再進(jìn)行操作。在進(jìn)行虛地址轉(zhuǎn)換時(shí),首先查詢TLB表,如果虛地址在表中命中,則直接根據(jù)TLB中的頁(yè)表項(xiàng)PTE中的頁(yè)幀號(hào)PFN確定虛地址所對(duì)應(yīng)的物理地址;如果沒有命中,則轉(zhuǎn)入TLB的不命中處理流程。圖3是一個(gè)沒有內(nèi)存虛擬化時(shí),直接由虛擬地址代換出機(jī)器地址的代換示意圖。如圖3所示,以四級(jí)頁(yè)表為例,如圖3所示,輸入的虛擬地址VAO經(jīng)過(guò)四次頁(yè)表的查找,可以得到最終的機(jī)器地址ΜΑ0。在內(nèi)存虛擬化后,由于多增加了一個(gè)地址代換關(guān)系,虛擬機(jī)所認(rèn)為的物理地址不是最終的機(jī)器地址,虛擬機(jī)內(nèi)核準(zhǔn)備的頁(yè)表也就不是符合硬件需求的最終頁(yè)表,必須要對(duì)頁(yè)表進(jìn)行處理,或修改頁(yè)表代換流程以實(shí)現(xiàn)內(nèi)存虛擬化。由虛擬機(jī)管理器或宿主機(jī)操作系統(tǒng)對(duì)虛擬機(jī)頁(yè)表進(jìn)行處理的方式稱為影子頁(yè)表技術(shù)。圖4示出了影子頁(yè)表示意圖。硬件在進(jìn)行頁(yè)表代換時(shí)采用處理過(guò)的影子頁(yè)表,可以將虛擬機(jī)提供的虛擬地址VAl代換為真正的機(jī)器地址MAl。這個(gè)方式要求虛擬機(jī)在創(chuàng)建頁(yè)表的同時(shí),首先需要陷入到宿主機(jī)操作系統(tǒng)準(zhǔn)備好影子頁(yè)表,才能夠訪問相應(yīng)的頁(yè)面。另外,虛擬機(jī)操作系統(tǒng)內(nèi)核每一次對(duì)頁(yè)表的修改,都必須要反應(yīng)到影子頁(yè)表中才能夠生效。該方式實(shí)現(xiàn)的內(nèi)存虛擬化對(duì)操作系統(tǒng)內(nèi)核并不透明,一般僅在Linux類可修改內(nèi)核的操作系統(tǒng)上使用。影子頁(yè)表的引入,對(duì)硬件進(jìn)行頁(yè)表代換時(shí)并不會(huì)增加開銷,但是維護(hù)影子頁(yè)表會(huì)引入額外的空間開銷和性能開銷。內(nèi)存空間越大,所需影子頁(yè)表空間也就越大。另外一種實(shí)現(xiàn)內(nèi)存虛擬化的方式是修改頁(yè)表代換流程。圖5示出了 X86硬件支持的頁(yè)表代換流程圖。該方式通常由硬件提供,如圖5所示。由于虛擬機(jī)提供的是物理地址,只有宿主機(jī)或虛擬機(jī)管理器才有物理地址到機(jī)器地址的代換表,所以頁(yè)表代換流程里,得到每一級(jí)頁(yè)表的物理地址時(shí),均需要到物理地址到機(jī)器地址的代換頁(yè)表里得到真正的機(jī)器地址,才能得到下一級(jí)頁(yè)表項(xiàng)。如此進(jìn)行代換,最終得到真正的機(jī)器地址。X86體系結(jié)構(gòu)中,AMD的Nested Page和Intel的VT技術(shù),均采用這種方式的頁(yè)表代換流程以實(shí)現(xiàn)虛擬化。Nested Page和EPT技術(shù)均可以做到按照頁(yè)面粒度來(lái)管理虛擬機(jī)所使用的內(nèi)存,但是在TLB不命中的流程中要增加多次查詢物理地址PA到機(jī)器地址MA的索引表的動(dòng)作,意味著要增加多次訪存。這是由于該兩種技術(shù)均維護(hù)一個(gè)復(fù)雜的映射關(guān)系f,該映射關(guān)系也需要安裝四級(jí)頁(yè)表代換才能夠得到,這會(huì)帶來(lái)很大的性能開銷。<本發(fā)明實(shí)施例的具體示例>圖6示意性地示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的內(nèi)存靜態(tài)映射示意圖。圖7示意性地示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的內(nèi)存靜態(tài)劃分虛擬化TLB裝填流程圖。 按照“內(nèi)存分配流程”部分提出的虛擬機(jī)內(nèi)存靜態(tài)分配方法,多個(gè)虛擬機(jī)自身的虛擬物理內(nèi)存頁(yè)面在真正的物理內(nèi)存中是連續(xù)排布的。采用靜態(tài)內(nèi)存劃分得到的物理地址PA到機(jī)器地址MA的映射關(guān)系表,可用類似圖6的映射方式表示。物理地址PA到機(jī)器地址MA的映射關(guān)系f為 映射,簡(jiǎn)單的用如下公式來(lái)表不:MA=PA+0ffset為了得到虛擬地址VA到機(jī)器地址MA的映射關(guān)系,TLB不命中的處理流程中需要增加一些運(yùn)算,從虛擬地址VA獲得物理地址PA,再通過(guò)VPCR中存儲(chǔ)的Offset計(jì)算出物理地址PA對(duì)應(yīng)的機(jī)器地址MA,再將機(jī)器地址MA裝填至TLB中。如此,實(shí)現(xiàn)內(nèi)存虛擬化的TLB不命中的裝填將是如下的流程:a)頁(yè)表基地址寄存器中填的頁(yè)表基地址是虛擬物理地址,先從虛擬機(jī)控制寄存器得到虛擬機(jī)地址偏移量Offset,加上頁(yè)表基地址寄存器中的虛擬物理地址,得到頁(yè)表基地址的機(jī)器地址MALI,其中,虛擬機(jī)地址偏移Offset為虛擬機(jī)控制寄存器中存放的虛擬機(jī)地址偏移量Offset ;b)從頁(yè)表基地址的機(jī)器地址MALI所對(duì)應(yīng)的頁(yè)面中,取出第一級(jí)Level I的頁(yè)表,從中取出頁(yè)幀號(hào),將頁(yè)幀號(hào)乘以PAGE_SIZE,得到作為下一級(jí)頁(yè)表的第二級(jí)Level2的頁(yè)表的基地址的物理地址PAL1,再根據(jù)公式MAL2=PA Ll+Offset計(jì)算出作為下一級(jí)頁(yè)表的第二級(jí)Level2的頁(yè)表的基地址的機(jī)器地址MAL2,其中,PAGE_SIZE為頁(yè)面大??;c)從上一步得到的機(jī)器地址MAL2所對(duì)應(yīng)的頁(yè)面中取出第二級(jí)Level2的頁(yè)表,從中取出頁(yè)幀號(hào),將頁(yè)幀號(hào)乘以PAGE_SIZE,以得到作為下一級(jí)頁(yè)表的第三級(jí)Level3的頁(yè)表的基地址的物理地址PAL2,再根據(jù)公式MAL3=PAL2+0ffset計(jì)算出作為下一級(jí)頁(yè)表的第三級(jí)Leve13的基地址的機(jī)器地址MAL3 ;d)從上一步得到的機(jī)器地址MAL3所對(duì)應(yīng)的頁(yè)面中取出第三級(jí)Level3的頁(yè)表,從中取出頁(yè)幀號(hào),乘以PAGE_SIZE,得到下一級(jí)頁(yè)表的基地址的物理地址PAL3,再根據(jù)公式MAL4=PAL3+0ffset計(jì)算出下一級(jí)頁(yè)表基地址的機(jī)器地址MAL4 ;e)從上一步得到的機(jī)器地址MAL4所對(duì)應(yīng)的頁(yè)面中取出TLB的頁(yè)表項(xiàng)PTE的頁(yè)表,從中取出頁(yè)幀號(hào),將頁(yè)幀號(hào)乘以PAGE_SIZE,以得到物理地址PAL4,再根據(jù)公式MA=PAL4+0ffset計(jì)算出機(jī)器地址MA,最終得到虛擬地址VA到機(jī)器地址MA的映射關(guān)系,并根據(jù)該機(jī)器地址MA裝填硬件TLB。由此,根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)內(nèi)存靜態(tài)分配和釋放方案,在分配算法申請(qǐng)內(nèi)存時(shí),首先構(gòu)造一個(gè)可能的區(qū)間,如果該區(qū)間超出有效的物理內(nèi)存范圍,或者與已有的內(nèi)存區(qū)間存在交集,那么本次申請(qǐng)失敗,返回錯(cuò)誤信息;否則就表示該區(qū)間地址合法,且處于未分配狀態(tài),申請(qǐng)成功,構(gòu)造一個(gè)新的描述符,加入內(nèi)存已分配列表的末尾,同時(shí)標(biāo)記該段內(nèi)存為某虛擬機(jī)所屬,并將該段內(nèi)存的偏移地址設(shè)置到處理器內(nèi)部某控制寄存器中。通過(guò)根據(jù)本發(fā)明實(shí)施例的TLB裝填實(shí)現(xiàn)內(nèi)存虛擬化的工作方法,在針對(duì)虛擬機(jī),虛擬機(jī)內(nèi)核認(rèn)為的物理地址實(shí)際為虛擬的物理地址,所以虛擬機(jī)內(nèi)核在其頁(yè)表中放置的PFN實(shí)際上也是虛擬的物理地址。這樣,在TLB不命中的處理流程中獲取的各級(jí)頁(yè)表的PFN需要按照虛擬物理地址到真實(shí)物理地址的代換關(guān)系進(jìn)行處理,得到真實(shí)的物理地址后從中得到頁(yè)表項(xiàng)條目,并確定最終的代換關(guān)系填入硬件。該代換關(guān)系為MA=PA+0fTset,且該Offset存放在處理器內(nèi)部寄存器VPCR中,處理該代換關(guān)系不需增加額外訪存,性能開銷極低。本發(fā)明上述實(shí)施例的一個(gè)主要優(yōu)點(diǎn)在于采用固定連續(xù)分配虛擬機(jī)內(nèi)存空間,可以避免維護(hù)復(fù)雜的物理地址PA到機(jī)器地址MA的映射關(guān)系,實(shí)現(xiàn)物理地址PA到機(jī)器地址MA的一次性代換,相比影子頁(yè)表,該方式?jīng)]有額外的頁(yè)表維護(hù)開銷和內(nèi)存開銷,并且虛擬機(jī)操作系統(tǒng)內(nèi)核在管理頁(yè)面時(shí)無(wú)需通知虛擬機(jī)管理器或宿主機(jī)內(nèi)核,內(nèi)存虛擬化對(duì)虛擬機(jī)操作系統(tǒng)完全透明。本發(fā)明將偏移量放置在CPU內(nèi)部寄存器中,在TLB Miss處理流程中,可以在TLBMiss不增加任何訪存開銷的情況下實(shí)現(xiàn)VA到PA再到MA的三級(jí)映射關(guān)系轉(zhuǎn)換,同Intel VT或AMD NPT技術(shù)相比,內(nèi)存虛擬化性能開銷低。術(shù)語(yǔ)說(shuō)明:TLB (Translation Lookaside Buffer):屬于 CPU 內(nèi)部一種緩存,存放虛擬地址到物理地址的映射關(guān)系,用于存儲(chǔ)單元加速虛擬地址到物理地址的代換速度。TLB Miss =CPU將虛擬地址在代換到物理地址時(shí),未在TLB中查找到代換關(guān)系,稱為 TLB Miss。虛擬機(jī)(Virtual Machine, VM):通過(guò)軟件模擬的具有完整硬件系統(tǒng)功能的、運(yùn)行在Iv完全隔尚環(huán)境中的完整計(jì)算機(jī)系統(tǒng)。內(nèi)存虛擬化:在虛擬地址到物理地址映射的基礎(chǔ)上增加一層映射關(guān)系,使虛擬地址映射到虛擬物理地址,再將虛擬物理地址映射到物理地址,同時(shí)使得每個(gè)虛擬機(jī)都認(rèn)為自己獨(dú)立運(yùn)行在從O開始的虛擬物理地址上。虛擬地址(virtual address, VA):用戶程序以及操作系統(tǒng)核心使用的地址,其中操作系統(tǒng)核心僅少量使用虛地址。物理地址(physical address, PA):虛擬機(jī)操作系統(tǒng)核心看到的物理地址,經(jīng)過(guò)VMM抽象,每個(gè)虛擬機(jī)的虛物理地址都是從O開始,并是連續(xù)的。機(jī)器地址(machine address, MA):實(shí)際硬件平臺(tái)上的物理空間地址,即地址總線上應(yīng)該出現(xiàn)的地址信號(hào)。頁(yè)巾貞號(hào)(Page Frame Number, PFN):操作系統(tǒng)按照頁(yè)面來(lái)管理內(nèi)存,將所有內(nèi)存從低到高劃分成一個(gè)個(gè)固定大小的頁(yè)面,并按照從低到高的順序進(jìn)行編號(hào),該編號(hào)稱為頁(yè)幀號(hào)。虛擬機(jī)控制寄存器(VirtualMachine Private Control Register, VPCR):該寄存器為CPU內(nèi)部用于存放虛擬機(jī)相關(guān)信息的寄存器。頁(yè)表基地址寄存器(Page Table Base Register,PTBR):該寄存器為CPU內(nèi)部用于存放頁(yè)表基地址信息的寄存器。此外,需要說(shuō)明的是,除非特別指出,否則說(shuō)明書中的術(shù)語(yǔ)“第一”、“第二”、“第三”等描述僅僅用于區(qū)分說(shuō)明書中的各個(gè)組件、元素、步驟等,而不是用于表示各個(gè)組件、元素、步驟之間的邏輯關(guān)系或者順序關(guān)系等??梢岳斫獾氖牵m然本發(fā)明已以較佳實(shí)施例披露如上,然而上述實(shí)施例并非用以限定本發(fā)明。對(duì)于任何熟悉本領(lǐng)域的技術(shù)人員而言,在不脫離本發(fā)明技術(shù)方案范圍情況下,都可利用上述揭示的技術(shù)內(nèi)容對(duì)本發(fā)明技術(shù)方案作出許多可能的變動(dòng)和修飾,或修改為等同變化的等效實(shí)施例。因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所做的任何簡(jiǎn)單修改、等同變化及修飾,均仍屬于本發(fā)明技術(shù)方案保護(hù)的范圍內(nèi)。
權(quán)利要求
1.一種內(nèi)存靜態(tài)劃分虛擬化方法,其特征在于包括:在進(jìn)行虛地址轉(zhuǎn)換時(shí),首先查詢TLB表,如果虛地址在表中命中,則直接根據(jù)TLB中的頁(yè)表項(xiàng)PTE中的頁(yè)幀號(hào)PFN確定虛地址所對(duì)應(yīng)的機(jī)器地址;如果沒有命中,則轉(zhuǎn)入TLB的不命中處理流程。
2.根據(jù)權(quán)利要求1所述的內(nèi)存靜態(tài)劃分虛擬化方法,其特征在于,在TLB的不命中處理流程中,從虛擬地址VA獲得物理地址PA,再通過(guò)虛擬機(jī)控制寄存器中存儲(chǔ)的虛擬機(jī)地址偏移Offset計(jì)算出物理地址PA對(duì)應(yīng)的機(jī)器地址MA,再將機(jī)器地址MA裝填至TLB中,其中,虛擬機(jī)地址偏移Offset為虛擬機(jī)控制寄存器中存放的虛擬機(jī)地址偏移量Offset。
3.根據(jù)權(quán)利要求1或2所述的內(nèi)存靜態(tài)劃分虛擬化方法,其特征在于,TLB的不命中處理流程包括: a)頁(yè)表基地址寄存器中填的頁(yè)表基地址是虛擬物理地址,先從虛擬機(jī)控制寄存器得到虛擬機(jī)地址偏移量Offset,加上頁(yè)表基地址寄存器中的虛擬物理地址,得到頁(yè)表基地址的機(jī)器地址MALI,其中,虛擬機(jī)地址偏移Offset為虛擬機(jī)控制寄存器中存放的虛擬機(jī)地址偏移量 Offset ; b)從頁(yè)表基地址的機(jī)器地址MALI所對(duì)應(yīng)的頁(yè)面中,取出第一級(jí)Levell的頁(yè)表,從中取出頁(yè)幀號(hào),將頁(yè)幀號(hào)乘以PAGE_SIZE,得到作為下一級(jí)頁(yè)表的第二級(jí)Level2的頁(yè)表的基地址的物理地址PALl,再根據(jù)公式MAL2=PA Ll+Offset計(jì)算出作為下一級(jí)頁(yè)表的第二級(jí)Level2的頁(yè)表的基地址的機(jī)器地址MAL2,其中,PAGE_SIZE為頁(yè)面大?。? c)從上一步得到的機(jī)器地址MAL2所對(duì)應(yīng)的頁(yè)面中取出第二級(jí)Level2的頁(yè)表,從中取出頁(yè)幀號(hào),將頁(yè)幀號(hào)乘以PAGE_SIZE,以得到作為下一級(jí)頁(yè)表的第三級(jí)Level3的頁(yè)表的基地址的物理地址PAL2,再根據(jù)公式MAL3=PAL2+0ffset計(jì)算出作為下一級(jí)頁(yè)表的第三級(jí)Level3的基地址的機(jī)器地址MAL3 ; d)從上一步得到的機(jī)器地址MAL3所對(duì)應(yīng)的頁(yè)面中取出第三級(jí)Level3的頁(yè)表,從中取出頁(yè)幀號(hào),乘以PAGE_SIZE,得到下一級(jí)頁(yè)表的基地址的物理地址PAL3,再根據(jù)公式MAL4=PAL3+0ffset計(jì)算出下一級(jí)頁(yè)表基地址的機(jī)器地址MAL4 ; e)從上一步得到的機(jī)器地址MAL4所對(duì)應(yīng)的頁(yè)面中取出TLB的頁(yè)表項(xiàng)PTE的頁(yè)表,從中取出頁(yè)幀號(hào),將頁(yè)幀號(hào)乘以PAGE_SIZE,以得到物理地址PAL4,再根據(jù)公式MA=PAL4+0ffset計(jì)算出機(jī)器地址MA,最終得到虛擬地址VA到機(jī)器地址MA的映射關(guān)系,并根據(jù)該機(jī)器地址MA裝填硬件TLB。
全文摘要
本發(fā)明提供了一種內(nèi)存靜態(tài)劃分虛擬化方法,包括在進(jìn)行虛地址轉(zhuǎn)換時(shí),首先查詢TLB表,如果虛地址在表中命中,則直接根據(jù)TLB中的頁(yè)表項(xiàng)中的頁(yè)幀號(hào)確定虛地址所對(duì)應(yīng)的機(jī)器地址;如果沒有命中,則轉(zhuǎn)入TLB的不命中處理流程。在TLB的不命中處理流程中,從虛擬地址獲得物理地址,再通過(guò)虛擬機(jī)控制寄存器中存儲(chǔ)的虛擬機(jī)地址偏移計(jì)算出物理地址對(duì)應(yīng)的機(jī)器地址,再將機(jī)器地址裝填至TLB中。其中,所述虛擬機(jī)地址偏移為虛擬機(jī)控制寄存器中存放的虛擬機(jī)地址偏移量。
文檔編號(hào)G06F12/10GK103116556SQ201310076740
公開日2013年5月22日 申請(qǐng)日期2013年3月11日 優(yōu)先權(quán)日2013年3月11日
發(fā)明者王星焱, 殷紅武, 沈金祥, 何升, 許國(guó)春 申請(qǐng)人:無(wú)錫江南計(jì)算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
普定县| 西林县| 淄博市| 响水县| 临高县| 内丘县| 兴和县| 蚌埠市| 西盟| 高阳县| 东港市| 吉安市| 柳林县| 日喀则市| 肇庆市| 云安县| 隆德县| 洛隆县| 涞水县| 哈尔滨市| 昂仁县| 巨野县| 连南| 卫辉市| 永定县| 资中县| 白沙| 铁岭市| 长沙市| 沙河市| 沅陵县| 夏河县| 星子县| 白沙| 永城市| 嘉义县| 清水河县| 静宁县| 海安县| 滦南县| 鄂伦春自治旗|