一種平臺虛擬化系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種平臺虛擬化系統(tǒng),包括:CPU模擬器:首先讀取X86架構(gòu)代碼指令,判斷所述指令基本塊是否已翻譯;翻譯過程采用二進(jìn)制翻譯器實現(xiàn),二進(jìn)制翻譯器包括翻譯引擎和執(zhí)行引擎;其中翻譯引擎把X86架構(gòu)代碼翻譯成龍芯平臺代碼;執(zhí)行引擎準(zhǔn)備龍芯平臺代碼運(yùn)行的上下文環(huán)境,然后從龍芯平臺代碼緩存中找到X86架構(gòu)代碼所對應(yīng)的龍芯平臺代碼并執(zhí)行;內(nèi)存虛擬化模塊:采用影子頁表方法;外設(shè)虛擬化模塊:針對每一個外設(shè)設(shè)備分別建立相應(yīng)的設(shè)備模型,X86架構(gòu)虛擬機(jī)通過設(shè)備模型與外設(shè)設(shè)備進(jìn)行行交互,實現(xiàn)設(shè)備發(fā)現(xiàn)和訪問使用。本發(fā)明能夠使一些尚不能適配國產(chǎn)龍芯硬件平臺的信息系統(tǒng)以虛擬化的方式運(yùn)行在國產(chǎn)軟硬件環(huán)境中,有助于在信息系統(tǒng)的自主化升級過程中實現(xiàn)新舊技術(shù)體制的平滑過渡。
【專利說明】一種平臺虛擬化系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于虛擬計算領(lǐng)域,具體涉及一種基于國產(chǎn)軟硬件環(huán)境的資源虛擬化環(huán)境平臺虛擬化系統(tǒng)構(gòu)建方法。
【背景技術(shù)】
[0002]龍芯(Loongson)是由中國科學(xué)院計算機(jī)所自主開發(fā)的采用簡單指令集的通用系統(tǒng)處理器,可以用于服務(wù)器和個人電腦領(lǐng)域。目前已經(jīng)發(fā)展到龍芯2F和龍芯3A多核高性能處理器。
[0003]龍芯處理器主要包括三個系列。龍芯I號處理器及其IP系列主要面向嵌入式應(yīng)用,龍芯2號超標(biāo)量處理器及其IP系列主要面向桌面應(yīng)用,龍芯3號多核處理器系列主要面向服務(wù)器和高性能機(jī)應(yīng)用。目前最新的龍芯3A處理器采用的是RISC架構(gòu),兼容MIPS指令,原生四核設(shè)計,內(nèi)含兩條HT PHY超傳輸總線,采用65nm (納米)工藝,主頻IGHz。
[0004]中標(biāo)麒麟操作系統(tǒng)(龍芯版)是中標(biāo)軟件公司開發(fā)的龍芯平臺操作系統(tǒng)。針對龍芯系列處理器硬件設(shè)計和指令集特點(diǎn),從操作系統(tǒng)內(nèi)核進(jìn)行適配和優(yōu)化。在應(yīng)用環(huán)境之外,中標(biāo)麒麟操作系統(tǒng)(龍芯版)還構(gòu)建了基于龍芯CPU的完善應(yīng)用開發(fā)環(huán)境,方便得支持基于龍芯CPU進(jìn)一步應(yīng)用開發(fā)和移植的工作。
[0005]由于龍芯處理器采用與通用X86系統(tǒng)不同的體系架構(gòu),指令集上與X86也不相兼容,同時,為了提高處理器的性能,龍芯處理器的指令集也增加了許多新的優(yōu)化指令。針對龍芯硬件平臺的特點(diǎn),中標(biāo)軟件在通用桌面基礎(chǔ)上進(jìn)行移植開發(fā)、性能調(diào)優(yōu)和針對性改進(jìn),系統(tǒng)軟件包均采用龍芯2F處理器指令集進(jìn)行了重新編譯,并針對功能性與易用性進(jìn)行了優(yōu)化。
[0006]虛擬化(Virtualization)技術(shù)最早出現(xiàn)在20世紀(jì)60年代的IBM大型機(jī)系統(tǒng),在70年代的System370系列中逐漸流行起來,這些機(jī)器通過一種叫虛擬機(jī)監(jiān)控器(VirtualMachine Monitor, VMM)的程序在物理硬件之上生成許多可以運(yùn)行獨(dú)立操作系統(tǒng)軟件的虛擬機(jī)(Virtual Machine)實例。隨著近年多核系統(tǒng)、集群、網(wǎng)格以及云計算的廣泛部署,虛擬化技術(shù)在商業(yè)應(yīng)用上的優(yōu)勢日益體現(xiàn),不僅降低了 IT成本,而且還增強(qiáng)了系統(tǒng)安全性和可靠性,虛擬化的概念也逐漸深入到人們?nèi)粘5墓ぷ髋c生活中。
[0007]通常所說的虛擬化主要是指平臺虛擬化技術(shù),通過使用控制程序(ControlProgram,也被稱為Virtual Machine Monitor或Hypervisor),隱藏特定計算平臺的實際物理特性,為用戶提供抽象的、統(tǒng)一的、模擬的計算環(huán)境(稱為虛擬機(jī))。虛擬機(jī)中運(yùn)行的操作系統(tǒng)被稱為客戶機(jī)操作系統(tǒng)(Guest OS),運(yùn)行虛擬機(jī)監(jiān)控器的操作系統(tǒng)被稱為主機(jī)操作系統(tǒng)(Host OS)。運(yùn)行虛擬機(jī)的真實系統(tǒng)我們稱之為主機(jī)系統(tǒng)。
[0008]平臺虛擬化技術(shù)又可以細(xì)分為如下幾個子類:
[0009](I)全虛擬化(Full Virtualization)
[0010]全虛擬化是指虛擬機(jī)模擬了完整的底層硬件,包括處理器、物理內(nèi)存、時鐘、外設(shè)等,使得為原始硬件設(shè)計的操作系統(tǒng)或其它系統(tǒng)軟件完全不做任何修改就可以在虛擬機(jī)中運(yùn)行。操作系統(tǒng)與真實硬件之間的交互可以看成是通過一個預(yù)先規(guī)定的硬件接口進(jìn)行的。全虛擬化VMM以完整模擬硬件的方式提供全部接口(同時還必須模擬特權(quán)指令的執(zhí)行過程)。全虛擬化VMM必須完整地模擬該接口執(zhí)行的全過程。如果硬件不提供虛擬化的特殊支持,那么這個模擬過程將會十分復(fù)雜。
[0011](2)半虛擬化(Paravirtualization)
[0012]這是一種修改Guest OS部分訪問特權(quán)狀態(tài)的代碼以便直接與VMM交互的技術(shù)。在半虛擬化虛擬機(jī)中,部分硬件接口以軟件的形式提供給客戶機(jī)操作系統(tǒng),這可以通過Hypercall (VMM提供給Guest OS的直接調(diào)用,與系統(tǒng)調(diào)用類似)的方式來提供。這要求GuestOS必須進(jìn)行修改,才能使用VMM提供的HypercalI功能,所以限制了可用的操作系統(tǒng)。由于不需要產(chǎn)生額外的異常和模擬部分硬件執(zhí)行流程,半虛擬化相對全虛擬化可以大幅度提高性能,比較著名的VMM有Xen。
[0013](3)硬件輔助虛擬化(Hardware-Assisted Virtualization)
[0014]硬件輔助虛擬化是指借助硬件(主要是主機(jī)處理器)的支持來實現(xiàn)高效的全虛擬化。例如有了 Intel-VT技術(shù)的支持,Guest OS和VMM的執(zhí)行環(huán)境自動地完全隔離開來,Guest OS有自己的“全套寄存器”,可以直接運(yùn)行在最高級別。Intel-VT和AMD-V是目前x86體系結(jié)構(gòu)上可用的兩種硬件輔助虛擬化技術(shù)。
[0015]目前,在國產(chǎn)龍芯平臺上使用虛擬化技術(shù)的主要技術(shù)障礙是:
[0016](I)目前龍芯平臺還不支持硬件輔助虛擬化技術(shù)。
[0017](2)目前主要的應(yīng)用軟件都運(yùn)行在Intel x86平臺上,屬于CISC架構(gòu),x86指令集。而龍芯平臺屬于RISC架構(gòu),使用MIPS指令集,軟硬件與X86平臺不兼容。
[0018]因此,本發(fā)明采用全虛擬化方法,在龍芯平臺上模擬出X86架構(gòu)的虛擬硬件,實現(xiàn)在龍芯平臺上運(yùn)行X86架構(gòu)的虛擬機(jī)。
【發(fā)明內(nèi)容】
[0019]本發(fā)明的目的是提供一種平臺虛擬化系統(tǒng),在龍芯處理器平臺上運(yùn)行X86架構(gòu)虛擬機(jī),并且在X86架構(gòu)虛擬機(jī)中使用傳統(tǒng)的X86操作系統(tǒng),運(yùn)行已有的軟件。
[0020]本發(fā)明所采用的技術(shù)方案是:
[0021]一種平臺虛擬化系統(tǒng),在龍芯處理器平臺上運(yùn)行X86架構(gòu)虛擬機(jī),包括如下部分:
[0022]CPU模擬器:首先讀取X86架構(gòu)代碼指令,判斷所述指令基本塊是否已翻譯,若未翻譯,則進(jìn)行翻譯并寫入龍芯平臺中的指令寄存塊;若已翻譯,則在龍芯平臺上執(zhí)行已翻譯過的代碼塊并指向下一個X86架構(gòu)代碼指令,循環(huán)判斷并執(zhí)行;
[0023]上述翻譯過程采用二進(jìn)制翻譯器實現(xiàn),二進(jìn)制翻譯器包括翻譯引擎和執(zhí)行引擎;其中翻譯引擎把X86架構(gòu)代碼翻譯成龍芯平臺代碼;執(zhí)行引擎準(zhǔn)備龍芯平臺代碼運(yùn)行的上下文環(huán)境,然后從龍芯平臺代碼緩存中找到X86架構(gòu)代碼所對應(yīng)的龍芯平臺代碼并執(zhí)行;
[0024]內(nèi)存虛擬化模塊:采用影子頁表方法,使X86架構(gòu)虛擬機(jī)在進(jìn)行內(nèi)存讀寫時可以直接得到龍芯平臺宿主機(jī)物理地址;
[0025]外設(shè)虛擬化模塊:針對每一個外設(shè)設(shè)備分別建立相應(yīng)的設(shè)備模型,X86架構(gòu)虛擬機(jī)通過設(shè)備模型與外設(shè)設(shè)備進(jìn)行行交互,實現(xiàn)設(shè)備發(fā)現(xiàn)和訪問使用。
[0026]如上所述的一種平臺虛擬化系統(tǒng),其中:所述二進(jìn)制翻譯器,實現(xiàn)步驟如下:[0027]首先讀取X86架構(gòu)指令,將該指令放入解碼/分派循環(huán);其次在解碼/分派循環(huán)中,X86架構(gòu)指令被解釋為龍芯平臺指令;最后根據(jù)龍芯平臺指令執(zhí)行對應(yīng)的解釋執(zhí)行函數(shù)。
[0028]如上所述的一種平臺虛擬化系統(tǒng),其中:對于多條X86架構(gòu)指令,逐條進(jìn)行解碼和執(zhí)行。
[0029]如上所述的一種平臺虛擬化系統(tǒng),其中:所述龍芯平臺上設(shè)有目標(biāo)機(jī)器代碼緩存,所述緩存由二進(jìn)制翻譯器的翻譯引擎管理;由于X86架構(gòu)虛擬機(jī)的不同進(jìn)程間存在共享代碼,與所述共享代碼相對應(yīng)的龍芯平臺代碼保存在所述目標(biāo)機(jī)器代碼緩存中;對于所述共享代碼,直接在所述目標(biāo)機(jī)器代碼緩存中讀取并執(zhí)行。
[0030]如上所述的一種平臺虛擬化系統(tǒng),其中:所述影子頁表方法,建立影子頁表,影子頁表包含X86架構(gòu)虛擬機(jī)虛擬地址到龍芯平臺宿主機(jī)物理地址的映射關(guān)系;X86架構(gòu)虛擬機(jī)進(jìn)行內(nèi)存讀寫時,通過影子頁表中的地址映射關(guān)系直接得到龍芯平臺宿主機(jī)物理地址。
[0031]本發(fā)明的有益效果是:本發(fā)明充分利用包括CPU虛擬化、內(nèi)存虛擬化和外設(shè)虛擬化在內(nèi)的服務(wù)器虛擬化系列技術(shù),在以龍芯3A處理器和中標(biāo)麒麟服務(wù)器操作系統(tǒng)為主體構(gòu)成的國產(chǎn)自主基礎(chǔ)軟硬件環(huán)境下,為基礎(chǔ)設(shè)施資源的集約化管理以及信息系統(tǒng)的托管式運(yùn)維提供一種技術(shù)途徑。若將該發(fā)明應(yīng)用到信息系統(tǒng)的建設(shè)過程中,一方面將促使各種異構(gòu)的底層硬件設(shè)備所蘊(yùn)含的計算、存儲能力被集中整合,并按照業(yè)務(wù)單元的需要進(jìn)行調(diào)度和分配;另一方面還將使得各類信息系統(tǒng)能夠共享公用的基礎(chǔ)設(shè)施,并以托管運(yùn)行的方式由專業(yè)的運(yùn)維人員統(tǒng)一管理,從而減輕業(yè)務(wù)單元的系統(tǒng)部署和運(yùn)維壓力。此外,通過構(gòu)建基于龍芯3A處理器和中標(biāo)麒麟服務(wù)器操作系統(tǒng)的虛擬化平臺,能夠使一些尚不能適配國產(chǎn)自主底層硬件和基礎(chǔ)軟件的信息系統(tǒng)以虛擬化的方式運(yùn)行在國產(chǎn)自主基礎(chǔ)軟硬件環(huán)境中,有助于在信息系統(tǒng)的自主化升級過程中實現(xiàn)新舊技術(shù)體制的平滑過渡。
【專利附圖】
【附圖說明】
[0032]圖1為CPU模擬器架構(gòu)圖。
[0033]圖2為二進(jìn)制代碼翻譯流程圖。
[0034]圖3為影子頁表結(jié)構(gòu)圖。
【具體實施方式】
[0035]下面結(jié)合附圖和實施例對本發(fā)明提供的一種平臺虛擬化系統(tǒng)進(jìn)行介紹:
[0036]如圖1所示,一種平臺虛擬化系統(tǒng),在龍芯處理器平臺上運(yùn)行X86架構(gòu)虛擬機(jī),包括CPU模擬器、內(nèi)存虛擬化模塊、外設(shè)虛擬化模塊。
[0037](一)CPU 模擬器
[0038]在龍芯平臺上運(yùn)行x86架構(gòu)虛擬機(jī),由于x86架構(gòu)虛擬機(jī)(簡稱虛擬機(jī))和龍芯平臺采用不同的架構(gòu),虛擬機(jī)的指令無法直接在龍芯平臺物理硬件上執(zhí)行,必須經(jīng)過翻譯,把虛擬機(jī)的代碼轉(zhuǎn)換成龍芯平臺物理機(jī)所用的代碼。
[0039]龍芯平臺上的虛擬化系統(tǒng)(VMM)使用全虛擬化技術(shù)。虛擬化系統(tǒng)對整個x86架構(gòu)虛擬機(jī)(包括處理器和配套的外圍設(shè)備)進(jìn)行仿真。這樣做的優(yōu)點(diǎn)是,可以在一種硬件平臺上運(yùn)行另外一種硬件平臺的操作系統(tǒng)和軟件(例如,在X86硬件上運(yùn)行ARM系統(tǒng)),而缺點(diǎn)是性能有比較大的損失。
[0040]處理器的模擬采用二進(jìn)制代碼翻譯技術(shù)。所謂二進(jìn)制代碼翻譯,是指把某種指令集架構(gòu)的程序翻譯成另一種指令集架構(gòu),可以在另外的平臺上運(yùn)行。這種翻譯不需要獲得程序的源代碼作為輸入,提高了程序移植的方便性。這種翻譯是在程序執(zhí)行的時候動態(tài)進(jìn)行的。
[0041]如圖1所示,CPU模擬器首先讀取X86架構(gòu)(原PC)代碼指令,判斷所述指令基本塊是否已翻譯,若未翻譯,則進(jìn)行翻譯并寫入龍芯平臺(PC)中的指令寄存塊;若已翻譯,則在龍芯平臺上執(zhí)行已翻譯過的代碼塊并指向下一個X86架構(gòu)(原PC)代碼指令,循環(huán)判斷并執(zhí)行。
[0042]二進(jìn)制代碼動態(tài)翻譯系統(tǒng)的過程如圖2所示。被翻譯的虛擬機(jī)(x86架構(gòu))所運(yùn)行的代碼稱為源機(jī)器代碼,翻譯(或解釋)出的宿主物理機(jī)(龍芯平臺)運(yùn)行的代碼稱為目標(biāo)機(jī)器代碼。二進(jìn)制翻譯器主要包括兩個模塊:翻譯引擎和執(zhí)行引擎。其中翻譯引擎負(fù)責(zé)把源機(jī)器代碼(X86架構(gòu))翻譯成目標(biāo)機(jī)器(龍芯平臺)代碼;執(zhí)行引擎負(fù)責(zé)準(zhǔn)備目標(biāo)機(jī)器代碼運(yùn)行的上下文環(huán)境,然后從目標(biāo)機(jī)器代碼緩存中找到源機(jī)器代碼所對于的目標(biāo)機(jī)器代碼并執(zhí)行。
[0043]二進(jìn)制翻譯器解釋執(zhí)行步驟如下:
[0044]首先讀取X86架構(gòu)指令,將該指令放入解碼/分派循環(huán);
[0045]在解碼/分派循環(huán)中,X86架構(gòu)指令被解釋為龍芯平臺指令;
[0046]根據(jù)龍芯平臺指令執(zhí)行對應(yīng)的解釋執(zhí)行函數(shù)。
[0047]二進(jìn)制翻譯的過程可以分為3個階段:解釋,快速翻譯和優(yōu)化翻譯。
[0048](I)解釋執(zhí)行階段:當(dāng)源機(jī)器代碼被首次執(zhí)行時,翻譯引擎對其進(jìn)行解釋執(zhí)行,解釋執(zhí)行不保存解釋結(jié)果。如果該源機(jī)器代碼再次被執(zhí)行,它將再次被解釋。只有當(dāng)執(zhí)行次數(shù)達(dá)到某一閾值后,翻譯引擎對其進(jìn)行翻譯,生成目標(biāo)代碼并保存到目標(biāo)代碼緩存中。當(dāng)該代碼塊再次被執(zhí)行時,其對應(yīng)的翻譯代碼塊可以被重用,無需再次翻譯。
[0049](2)快速翻譯階段:由于要翻譯的代碼較多,通常采用簡單的翻譯方法,基于模板生成目標(biāo)代碼。
[0050](3)優(yōu)化翻譯階段:對于被頻繁執(zhí)行的關(guān)鍵代碼塊,當(dāng)其執(zhí)行次數(shù)超過某一更高的閾值時,它將再次被翻譯。在優(yōu)化翻譯階段,翻譯引擎采用更復(fù)雜的算法對源機(jī)器代碼進(jìn)行優(yōu)化翻譯,得到更高效的翻譯代碼。其執(zhí)行效率遠(yuǎn)遠(yuǎn)高于快速翻譯時得到的代碼。
[0051]二進(jìn)制翻譯引擎需要管理目標(biāo)機(jī)器代碼緩存。由于X86架構(gòu)虛擬機(jī)的不同進(jìn)程間會有大量的共享代碼,如共享庫及內(nèi)核代碼,所以目標(biāo)機(jī)器(龍芯平臺)代碼應(yīng)該在物理地址空間進(jìn)行保存,以獲得比較好的性能。
[0052](二)內(nèi)存虛擬化模塊
[0053]除了處理器CPU外,虛擬化系統(tǒng)還需要模擬內(nèi)存,硬件中斷和外設(shè)10。
[0054]虛擬機(jī)認(rèn)為它所擁有的內(nèi)存地址空間總是從O開始,但它在宿主機(jī)上執(zhí)行時不可能總是擁有從O開始的地址所在的物理內(nèi)存。也就是說虛擬機(jī)的物理地址并不等于宿主機(jī)上的機(jī)器物理地址。這樣虛擬化系統(tǒng)(VMM)必須把虛擬機(jī)線性地址到虛擬機(jī)物理地址的轉(zhuǎn)換修正為虛擬機(jī)線性地址到宿主機(jī)物理地址的轉(zhuǎn)換。VMM為虛擬機(jī)OS的每個進(jìn)程的頁表構(gòu)造一個影子頁表,維護(hù)虛擬機(jī)虛擬地址(Guest Linear Address)到宿主機(jī)物理地址(HostPhysical Address)的映射,宿主機(jī)CR3寄存器存放這個影子頁表的物理內(nèi)存地址。VMM同時維護(hù)一個Guest OS全局的虛擬機(jī)物理地址(Guest Physical Address)到宿主機(jī)物理地址(Host Physical Address)的映射表。發(fā)生缺頁異常的地址總是虛擬機(jī)虛擬地址(GuestLinear Address),VMM先去Guest OS中的頁表檢查原因,如果頁表項已經(jīng)建立,即對應(yīng)的虛擬機(jī)物理地址(Guest Physical Address)存在,說明尚未建立到宿主機(jī)物理地址(HostPhysical Address)的映射,那么VMM分配一頁物理內(nèi)存,將影子頁表和映射表更新;否則,VMM返回到Guest OS,由Guest OS自己處理該異常。影子頁表見圖3所示,影子頁表包含X86架構(gòu)虛擬機(jī)虛擬地址到龍芯平臺宿主機(jī)物理地址的映射關(guān)系;X86架構(gòu)虛擬機(jī)進(jìn)行內(nèi)存讀寫時,通過影子頁表中的地址映射關(guān)系得直接到龍芯平臺宿主機(jī)物理地址。
[0055](三)外設(shè)虛擬化模塊
[0056]從虛擬機(jī)的角度看,外設(shè)是通過一組I/O資源(端口 I/O或內(nèi)存映射I/O)來進(jìn)行訪問的。為了滿足多個客戶機(jī)操作系統(tǒng)的需求,龍芯平臺的虛擬化系統(tǒng)截獲虛擬機(jī)操作系統(tǒng)對設(shè)備的訪問請求,模擬真實設(shè)備的效果。
[0057]X86虛擬機(jī)上的客戶機(jī)操作系統(tǒng)(Guest OS)發(fā)現(xiàn)虛擬的目標(biāo)設(shè)備后,使用目標(biāo)設(shè)備的驅(qū)動程序來驅(qū)動該設(shè)備??蛻魴C(jī)操作系統(tǒng)中的驅(qū)動程序會發(fā)出一些請求并等待設(shè)備的響應(yīng),這些請求被龍芯虛擬化系統(tǒng)攔截處理后,響應(yīng)會返回給客戶機(jī)操作系統(tǒng),該響應(yīng)與真實物理設(shè)備的響應(yīng)相似。
[0058]在龍芯平臺的虛擬化系統(tǒng)中,進(jìn)行設(shè)備模擬,并處理所有設(shè)備請求與響應(yīng)的邏輯模塊,稱為設(shè)備模型。設(shè)備模型在進(jìn)行設(shè)備I/o模擬時,需要正確模擬目標(biāo)設(shè)備的軟件接口就可以保證X86客戶機(jī)操作系統(tǒng)觀察到的虛擬設(shè)備與目標(biāo)設(shè)備一致,忽略物理硬件的硬件結(jié)構(gòu)及接口。
[0059]X86虛擬機(jī)所使用的不同外設(shè)設(shè)備(例如硬盤、網(wǎng)卡、USB端口、光驅(qū)等),使用的軟件接口包括:PCI配置空間、I/O端口、麗IO (內(nèi)存映射輸入輸出)、DMA (直接內(nèi)存訪問)、中斷。在虛擬化系統(tǒng)中,X86客戶機(jī)操作系統(tǒng)通過以上接口與虛擬設(shè)備進(jìn)行數(shù)據(jù)交換,龍芯平臺虛擬化系統(tǒng)截獲這些訪問數(shù)據(jù),將其重定向至設(shè)備模型。X86架構(gòu)虛擬機(jī)通過設(shè)備模型與外設(shè)設(shè)備進(jìn)行交互,實現(xiàn)設(shè)備發(fā)現(xiàn)和訪問使用。
【權(quán)利要求】
1.一種平臺虛擬化系統(tǒng),在龍芯處理器平臺上運(yùn)行X86架構(gòu)虛擬機(jī),包括如下部分: CPU模擬器:首先讀取X86架構(gòu)代碼指令,判斷所述指令基本塊是否已翻譯,若未翻譯,則進(jìn)行翻譯并寫入龍芯平臺中的指令寄存塊;若已翻譯,則在龍芯平臺上執(zhí)行已翻譯過的代碼塊并指向下一個X86架構(gòu)代碼指令,循環(huán)判斷并執(zhí)行; 上述翻譯過程采用二進(jìn)制翻譯器實現(xiàn),二進(jìn)制翻譯器包括翻譯引擎和執(zhí)行引擎;其中翻譯引擎把X86架構(gòu)代碼翻譯成龍芯平臺代碼;執(zhí)行引擎準(zhǔn)備龍芯平臺代碼運(yùn)行的上下文環(huán)境,然后從龍芯平臺代碼緩存中找到X86架構(gòu)代碼所對應(yīng)的龍芯平臺代碼并執(zhí)行; 內(nèi)存虛擬化模塊:采用影子頁表方法; 外設(shè)虛擬化模塊:針對每一個外設(shè)設(shè)備分別建立相應(yīng)的設(shè)備模型,X86架構(gòu)虛擬機(jī)通過設(shè)備模型與外設(shè)設(shè)備進(jìn)行行交互,實現(xiàn)設(shè)備發(fā)現(xiàn)和訪問使用。
2.根據(jù)權(quán)利要求1所述的一種平臺虛擬化系統(tǒng),其特征在于:所述二進(jìn)制翻譯器,實現(xiàn)如下步驟: 首先讀取X86架構(gòu)指令,將該指令放入解碼/分派循環(huán); 在解碼/分派循環(huán)中,X86架構(gòu)指令被解釋為龍芯平臺指令; 根據(jù)龍芯平臺指令執(zhí)行對應(yīng)的解釋執(zhí)行函數(shù)。
3.根據(jù)權(quán)利要求1所述的一種平臺虛擬化系統(tǒng),其特征在于:對于多條X86架構(gòu)指令,逐條進(jìn)行解碼和執(zhí)行。
4.根據(jù)權(quán)利要求1所述的一種平臺虛擬化系統(tǒng),其特征在于:所述龍芯平臺上設(shè)有目標(biāo)機(jī)器代碼緩存,所述緩存由二進(jìn)制翻譯器的翻譯引擎管理;由于X86架構(gòu)虛擬機(jī)的不同進(jìn)程間存在共享代碼,與所述共享代碼相對應(yīng)的龍芯平臺代碼保存在所述目標(biāo)機(jī)器代碼緩存中;對于所述共享代碼,直接在所述目標(biāo)機(jī)器代碼緩存中讀取并執(zhí)行。
5.根據(jù)權(quán)利要求1所述的一種平臺虛擬化系統(tǒng),其特征在于:所述影子頁表方法,建立影子頁表,影子頁表包含X86架構(gòu)虛擬機(jī)虛擬地址到龍芯平臺宿主機(jī)物理地址的映射關(guān)系;X86架構(gòu)虛擬機(jī)進(jìn)行內(nèi)存讀寫時,通過影子頁表中的地址映射關(guān)系得直接到龍芯平臺宿主機(jī)物理地址。
【文檔編號】G06F9/455GK103793260SQ201310466848
【公開日】2014年5月14日 申請日期:2013年10月9日 優(yōu)先權(quán)日:2013年10月9日
【發(fā)明者】劉東紅, 郭長國, 李永紅, 朱燕, 劉偉華, 孫巍 申請人:中國電子設(shè)備系統(tǒng)工程公司研究所, 普華基礎(chǔ)軟件股份有限公司