欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種虛擬機(jī)的指令處理方法、裝置及物理主的制造方法

文檔序號(hào):6509792閱讀:224來源:國知局
一種虛擬機(jī)的指令處理方法、裝置及物理主的制造方法
【專利摘要】本發(fā)明實(shí)施例提供了一種虛擬機(jī)的指令處理方法、裝置及物理主機(jī),應(yīng)用于通信領(lǐng)域,能夠提高虛擬機(jī)在不兼容的異構(gòu)CPU所在的主機(jī)之間進(jìn)行熱遷移后的運(yùn)行成功率。具體的,虛擬機(jī)從源CPU所在的主機(jī)熱遷移至目標(biāo)CPU所在的主機(jī)后,若源CPU和目標(biāo)CPU不兼容,將指令中目標(biāo)CPU不可識(shí)別的指令轉(zhuǎn)換為目標(biāo)CPU可識(shí)別的信息,將目標(biāo)CPU可識(shí)別的信息發(fā)送至目標(biāo)CPU,以便于目標(biāo)CPU執(zhí)行。
【專利說明】一種虛擬機(jī)的指令處理方法、裝置及物理主機(jī)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及一種虛擬機(jī)的指令處理方法、裝置及物理主機(jī)。
【背景技術(shù)】
[0002]云計(jì)算是近年來出現(xiàn)的一種計(jì)算方式,將所有的計(jì)算機(jī)抽象成特定的計(jì)算資源,然后將這些計(jì)算資源提供給用戶,而不是像以前那樣直接提供一臺(tái)或多臺(tái)計(jì)算機(jī)。服務(wù)器虛擬化技術(shù)是云計(jì)算中基于基礎(chǔ)設(shè)施層的關(guān)鍵技術(shù)。通過對(duì)物理服務(wù)器進(jìn)行虛擬化,實(shí)現(xiàn)在單臺(tái)物理節(jié)點(diǎn)上部署多臺(tái)虛擬機(jī)(虛擬操作系統(tǒng)),來提高物理服務(wù)器的資源利用率,降低使用成本。
[0003]服務(wù)器虛擬化技術(shù)的一項(xiàng)重要技術(shù)是DRS(Distributed Resource Scheduler,動(dòng)態(tài)資源調(diào)度)技術(shù):集群管理系統(tǒng)定時(shí)監(jiān)控各個(gè)物理服務(wù)器和虛擬機(jī)的資源利用率,根據(jù)資源分布情況,利用熱遷移調(diào)整虛擬機(jī)在物理機(jī)上的分布。所以虛擬機(jī)熱遷移功能成為了服務(wù)器虛擬化技術(shù)需要的基礎(chǔ)功能。但是,目前虛擬機(jī)熱遷移受到較多的限制,最常見的限制就是當(dāng)熱遷移的源物理服務(wù)器(源CPU所在的主機(jī))和目標(biāo)物理服務(wù)器(目標(biāo)CPU所在的主機(jī))所使用的CPU (Central Process Unit,中央處理器)不同(CPU異構(gòu))時(shí),虛擬機(jī)熱遷移過去之后,由于目標(biāo)物理服務(wù)器的CPU無法正確識(shí)別虛擬機(jī)發(fā)送的指令,即源CPU和目標(biāo)(PU不兼容,會(huì)導(dǎo)致虛擬機(jī)崩潰,無法運(yùn)行,影響虛擬機(jī)運(yùn)行的業(yè)務(wù)。因此,當(dāng)前虛擬化平臺(tái)在進(jìn)行熱遷移之前,都會(huì)對(duì)源CPU和目標(biāo)CPU進(jìn)行兼容性檢查,如果目標(biāo)物理服務(wù)器無法正常運(yùn)行虛擬機(jī),則不允許進(jìn)行熱遷移。
[0004]在現(xiàn)有技術(shù)中,DPM (Distributed Power Management,動(dòng)態(tài)電源管理)會(huì)不斷將虛擬機(jī)整合到少數(shù)幾臺(tái)物理服務(wù)器上,會(huì)造成每次整合都可能將一部分虛擬機(jī)熱遷移到兼容性高的CPU所在的主機(jī)上,最終,所有虛擬機(jī)都集中在兼容性高的CPU所在的主機(jī)上,而兼容性低的CPU所在的主機(jī)則無法使用,造成主機(jī)資源浪費(fèi)。因此,如何解決虛擬機(jī)在不兼容的異構(gòu)CPU所在的主機(jī)之間進(jìn)行熱遷移后無法運(yùn)行的問題,是業(yè)界期待解決的問題。

【發(fā)明內(nèi)容】

[0005]本發(fā)明的實(shí)施例提供一種虛擬機(jī)的指令處理方法、裝置及物理主機(jī),能夠一定程度上提高虛擬機(jī)在不兼容的異構(gòu)CPU所在的主機(jī)之間進(jìn)行熱遷移后的運(yùn)行成功率。
[0006]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0007]第一方面,提供一種虛擬機(jī)的指令處理方法,應(yīng)用于虛擬機(jī)從源CPU所在的主機(jī)熱遷移至目標(biāo)CPU所在的主機(jī),包括:當(dāng)所述源CPU和所述目標(biāo)CPU不兼容時(shí),接收所述虛擬機(jī)發(fā)送的指令;將所述指令中所述目標(biāo)CPU不可識(shí)別的指令轉(zhuǎn)換為所述目標(biāo)CPU可識(shí)別的信息;將所述目標(biāo)CPU可識(shí)別的信息發(fā)送至所述目標(biāo)CPU,以便于所述目標(biāo)CPU對(duì)所述信息進(jìn)行處理。
[0008]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述將所述指令中所述目標(biāo)CPU不可識(shí)別的指令轉(zhuǎn)換為所述目標(biāo)CPU可識(shí)別的信息,包括:根據(jù)所述虛擬機(jī)中虛擬CPU的寄存器的狀態(tài)確定所述源CPU的型號(hào);根據(jù)所述源CPU的型號(hào)調(diào)用轉(zhuǎn)換表,在所述轉(zhuǎn)換表中查詢所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的目標(biāo)CPU可識(shí)別的指令,所述轉(zhuǎn)換表包括預(yù)先設(shè)置的所述目標(biāo)CPU不可識(shí)別的指令和所述目標(biāo)CPU可識(shí)別的指令之間的映射關(guān)系,所述目標(biāo)CPU不可識(shí)別的指令和與所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的所述目標(biāo)CPU可識(shí)別的指令的操作相同。
[0009]結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,所述將所述指令中所述目標(biāo)CPU不可識(shí)別的指令轉(zhuǎn)換為所述目標(biāo)CPU可識(shí)別的信息,包括:在映射表中查詢所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的函數(shù)地址,調(diào)用所述函數(shù)地址指示的函數(shù),根據(jù)所述函數(shù),獲取對(duì)所述不可識(shí)別的指令的運(yùn)算結(jié)果,所述運(yùn)算結(jié)果為所述目標(biāo)CPU可識(shí)別的信息,其中,所述映射表中包括預(yù)先設(shè)置的所述目標(biāo)CPU不可識(shí)別的每一個(gè)指令及與所述每一個(gè)指令對(duì)應(yīng)的函數(shù)地址信息。
[0010]結(jié)合第一方面,在第三種可能的實(shí)現(xiàn)方式中,所述接收所述虛擬機(jī)發(fā)送的指令之前,還包括:檢測所述源CPU和所述目標(biāo)CPU的兼容性;向所述虛擬機(jī)發(fā)送所述兼容性的檢測結(jié)果,以便于當(dāng)所述源CPU和目標(biāo)CPU兼容時(shí),所述虛擬機(jī)將指令直接發(fā)送至所述目標(biāo)CPU。
[0011]結(jié)合第一方面任意一種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述接收所述虛擬機(jī)發(fā)送的指令之后,還包括:計(jì)算接收到的指令的指令開銷,其中,所述目標(biāo)CPU不可識(shí)別的指令的指令開銷為轉(zhuǎn)換所述指令的開銷與目標(biāo)CPU運(yùn)行轉(zhuǎn)換后的指令的開銷的和,所述目標(biāo)CPU可識(shí)別的指令的指令開銷為目標(biāo)CPU運(yùn)行所述可識(shí)別的指令的開銷;根據(jù)所述接收到的指令的指令開銷計(jì)算所述虛擬機(jī)的性能開銷;若所述虛擬機(jī)的性能開銷大于預(yù)設(shè)的閾值開銷,則對(duì)所述虛擬機(jī)再次進(jìn)行熱遷移。
[0012]結(jié)合第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中:所述虛擬機(jī)的性能開銷為所述接收到的指令的指令開銷的加權(quán)平均值。
[0013]第二方面,提供一種虛擬機(jī)的指令處理裝置,包括接收單元、處理單元及發(fā)送單元;所述接收單元用于當(dāng)源CPU和目標(biāo)CPU不兼容時(shí),接收所述虛擬機(jī)發(fā)送的指令;所述處理單元用于將所述接收單元接收的指令中所述目標(biāo)CPU不可識(shí)別的指令轉(zhuǎn)換為所述目標(biāo)CPU可識(shí)別的信息;所述發(fā)送單元用于將所述處理單元轉(zhuǎn)換的目標(biāo)CPU可識(shí)別的信息發(fā)送至所述目標(biāo)CPU。
[0014]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述處理單元包括:型號(hào)確定子單元及轉(zhuǎn)換子單元;所述型號(hào)確定子單元用于根據(jù)所述虛擬機(jī)中虛擬CPU的寄存器的狀態(tài)確定所述源CPU的型號(hào);所述轉(zhuǎn)換子單元用于根據(jù)所述型號(hào)確定子單元確定的源CPU的型號(hào)調(diào)用轉(zhuǎn)換表,在所述轉(zhuǎn)換表中查詢所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的目標(biāo)CPU可識(shí)別的指令,所述轉(zhuǎn)換表包括預(yù)先設(shè)置的所述目標(biāo)CPU不可識(shí)別的指令和所述目標(biāo)CPU可識(shí)別的指令之間的映射關(guān)系,所述目標(biāo)CPU不可識(shí)別的指令和與所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的所述目標(biāo)CPU可識(shí)別的指令的操作相同。
[0015]結(jié)合第二方面,在第二種可能的實(shí)現(xiàn)方式中,所述處理單元具體用于:在映射表中查詢所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的函數(shù)地址,調(diào)用所述函數(shù)地址指示的函數(shù),根據(jù)所述函數(shù),獲取對(duì)所述不可識(shí)別的指令的運(yùn)算結(jié)果,所述運(yùn)算結(jié)果為所述目標(biāo)CPU可識(shí)別的信息,其中,所述映射表中包括預(yù)先設(shè)置的所述目標(biāo)CPU不可識(shí)別的每一個(gè)指令及與所述每一個(gè)指令對(duì)應(yīng)的函數(shù)地址信息。
[0016]結(jié)合第二方面,在第三種可能的實(shí)現(xiàn)方式中,所述裝置還包括檢測單元;所述檢測單元用于檢測所述源CPU和所述目標(biāo)CPU的兼容性;所述發(fā)送單元還用于向所述虛擬機(jī)發(fā)送所述檢測單元的兼容性的檢測結(jié)果,以便于當(dāng)所述源CPU和目標(biāo)CPU兼容時(shí),所述虛擬機(jī)將指令直接發(fā)送至所述目標(biāo)CPU。
[0017]結(jié)合第二方面任意一種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述裝置還包括性能分析單元和調(diào)度單元;所述性能分析單元用于計(jì)算所述接收單元接收到接收到的指令的指令開銷,其中,所述目標(biāo)CPU不可識(shí)別的指令的指令開銷為轉(zhuǎn)換所述指令的開銷與目標(biāo)CPU運(yùn)行轉(zhuǎn)換后的指令的開銷的和,所述目標(biāo)CPU可識(shí)別的指令的指令開銷為目標(biāo)CPU運(yùn)行所述可識(shí)別的指令的開銷;所述性能分析單元還用于根據(jù)所述接收到的指令的指令開銷計(jì)算所述虛擬機(jī)的性能開銷;若所述性能分析單元計(jì)算的虛擬機(jī)的性能開銷大于預(yù)設(shè)的閾值開銷,則所述調(diào)度單元對(duì)所述虛擬機(jī)再次進(jìn)行熱遷移。
[0018]結(jié)合第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述虛擬機(jī)的性能開銷為所述接收到的指令的指令開銷的加權(quán)平均值。
[0019]第三方面,提供一種物理主機(jī),所述物理主機(jī)包括硬件層、虛擬機(jī)管理層以及虛擬機(jī);所述虛擬機(jī)管理層包括虛擬機(jī)的指令處理裝置;所述虛擬機(jī)的指令處理裝置用于當(dāng)所述源CPU和所述目標(biāo)CPU不兼容時(shí),接收所述虛擬機(jī)發(fā)送的指令;所述虛擬機(jī)的指令處理裝置還用于將所述指令中所述目標(biāo)CPU不可識(shí)別的指令轉(zhuǎn)換為所述目標(biāo)CPU可識(shí)別的信息;所述虛擬機(jī)的指令處理裝置還用于將所述目標(biāo)CPU可識(shí)別的信息發(fā)送至所述目標(biāo)CPU,以便于所述目標(biāo)CPU對(duì)所述信息進(jìn)行處理。
[0020]結(jié)合第三方面,在第一種可能的實(shí)現(xiàn)方式中:所述虛擬機(jī)的指令處理裝置具體用于根據(jù)所述虛擬機(jī)中虛擬CPU的寄存器的狀態(tài)確定所述源CPU的型號(hào);所述虛擬機(jī)的指令處理裝置還用于根據(jù)所述源CPU的型號(hào)調(diào)用轉(zhuǎn)換表,在所述轉(zhuǎn)換表中查詢所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的目標(biāo)CPU可識(shí)別的指令,所述轉(zhuǎn)換表包括預(yù)先設(shè)置的所述目標(biāo)CPU不可識(shí)別的指令和所述目標(biāo)CPU可識(shí)別的指令之間的映射關(guān)系,所述目標(biāo)CPU不可識(shí)別的指令和與所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的所述目標(biāo)CPU可識(shí)別的指令的操作相同。
[0021]結(jié)合第三方面,在第二種可能的實(shí)現(xiàn)方式中,所述虛擬機(jī)的指令處理裝置具體用于:在映射表中查詢所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的函數(shù)地址,調(diào)用所述函數(shù)地址指示的函數(shù),根據(jù)所述函數(shù),獲取對(duì)所述不可識(shí)別的指令的運(yùn)算結(jié)果,所述運(yùn)算結(jié)果為所述目標(biāo)CPU可識(shí)別的信息,其中,所述映射表中包括預(yù)先設(shè)置的所述目標(biāo)CPU不可識(shí)別的每一個(gè)指令及與所述每一個(gè)指令對(duì)應(yīng)的函數(shù)地址信息。
[0022]結(jié)合第三方面任意一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中:所述虛擬機(jī)的指令處理裝置還用于檢測所述源CPU和所述目標(biāo)CPU的兼容性;所述虛擬機(jī)的指令處理裝置還用于向所述虛擬機(jī)發(fā)送所述兼容性的檢測結(jié)果,以便于當(dāng)所述源CPU和目標(biāo)CPU兼容時(shí),所述虛擬機(jī)將指令直接發(fā)送至所述目標(biāo)CPU。
[0023]可見,本發(fā)明的實(shí)施例提供的虛擬機(jī)的指令處理方法、裝置及物理主機(jī),通過將目標(biāo)CPU不可識(shí)別的指令轉(zhuǎn)換為目標(biāo)CPU可識(shí)別的信息,能夠提高虛擬機(jī)在不兼容的異構(gòu)CPU所在的主機(jī)之間進(jìn)行熱遷移后的運(yùn)行成功率?!緦@綀D】

【附圖說明】
[0024]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0025]圖1為本發(fā)明的實(shí)施例提供的一種虛擬機(jī)的指令處理方法的流程示意圖;
[0026]圖2為本發(fā)明的另一實(shí)施例提供的一種虛擬機(jī)的指令處理方法的流程意圖;
[0027]圖3為本發(fā)明的實(shí)施例提供的一種虛擬機(jī)的指令處理裝置的結(jié)構(gòu)示意圖;
[0028]圖4為本發(fā)明的另一實(shí)施例提供的一種虛擬機(jī)的指令處理裝置的結(jié)構(gòu)示意圖;
[0029]圖5為本發(fā)明的另一實(shí)施例提供的另一虛擬機(jī)的指令處理裝置的結(jié)構(gòu)示意圖;
[0030]圖6為本發(fā)明的又一實(shí)施例提供的一種虛擬機(jī)的指令處理裝置的結(jié)構(gòu)示意圖;
[0031]圖7為本發(fā)明的實(shí)施例提供的一種物理主機(jī)。
【具體實(shí)施方式】
[0032]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0033]虛擬機(jī)(Virtual Machine,VM)是一種通過軟件模擬的具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng),現(xiàn)有的虛擬機(jī)所在的物理主機(jī)(物理服務(wù)器)一般分為三層,第一層為承載虛擬機(jī)系統(tǒng)的硬件,虛擬機(jī)所在的CPU就處于這一層,第二層為構(gòu)建在硬件之上虛擬機(jī)管理層(Virtual Machine Manager, VMM),用于對(duì)虛擬機(jī)進(jìn)行管理,第三層為虛擬機(jī)本身,包括虛擬機(jī)的虛擬CPU及虛擬內(nèi)存等。
[0034]本發(fā)明的實(shí)施例提供一種虛擬機(jī)的指令處理方法、裝置及物理主機(jī),應(yīng)用于虛擬機(jī)系統(tǒng)的虛擬機(jī)管理層,對(duì)虛擬機(jī)從源CPU所在的主機(jī)熱遷移至目標(biāo)CPU所在的主機(jī)之后的不兼容的問題進(jìn)行處理,管理虛擬機(jī)和承載虛擬機(jī)系統(tǒng)的硬件之間的熱遷移。
[0035]請(qǐng)參考圖1,為本發(fā)明實(shí)施例提供的一種虛擬機(jī)的指令處理方法。該方法可以在虛擬機(jī)從源CPU所在的主機(jī)熱遷移至目標(biāo)CPU所在的主機(jī)之后執(zhí)行,前提是該源CPU與該目標(biāo)CPU不兼容。該方法可以應(yīng)用于虛擬機(jī)的指令處理裝置,該裝置可以位于目標(biāo)CPU所在主機(jī)上的虛擬機(jī)系統(tǒng)的虛擬機(jī)管理層。具體的,該方法可以包括以下步驟:
[0036]101、虛擬機(jī)的指令處理裝置接收虛擬機(jī)發(fā)送的指令。
[0037]102、虛擬機(jī)的指令處理裝置將指令中目標(biāo)CPU不可識(shí)別的指令轉(zhuǎn)換為目標(biāo)CPU可識(shí)別的息。
[0038]具體的,根據(jù)轉(zhuǎn)換過程的不同,目標(biāo)CPU可識(shí)別的信息可以包括目標(biāo)CPU可識(shí)別的指令和\或目標(biāo)CPU不可識(shí)別的指令的運(yùn)算結(jié)果,其中,目標(biāo)CPU不可識(shí)別的指令的運(yùn)算結(jié)果是目標(biāo)CPU可識(shí)別的。
[0039]由于該方法執(zhí)行時(shí)虛擬機(jī)已經(jīng)熱遷移至目標(biāo)CPU,即在遷移過程中,虛擬機(jī)不進(jìn)行斷電載入,所以,虛擬機(jī)中虛擬CPU的狀態(tài)與源CPU的狀態(tài)相同,而且對(duì)目標(biāo)CPU不可識(shí)別的指令的轉(zhuǎn)換操作是在目標(biāo)CPU所在的物理主機(jī)上進(jìn)行的,即目標(biāo)CPU的狀態(tài)是已知的,這樣,對(duì)目標(biāo)CPU不可識(shí)別的指令的轉(zhuǎn)換是根據(jù)源CPU狀態(tài)及目標(biāo)CPU狀態(tài)進(jìn)行的轉(zhuǎn)換,可以保證指令轉(zhuǎn)換生成的指令都是目標(biāo)CPU可識(shí)別的指令。
[0040]103、虛擬機(jī)的指令處理裝置將目標(biāo)CPU可識(shí)別的信息發(fā)送至目標(biāo)CPU,以便于所述目標(biāo)CPU對(duì)所述信息進(jìn)行處理。
[0041]本發(fā)明的實(shí)施例提供的虛擬機(jī)的指令處理方法,通過將目標(biāo)CPU無法識(shí)別的指令,轉(zhuǎn)換為目標(biāo)CPU可識(shí)別的信息,能夠提高虛擬機(jī)在不兼容的異構(gòu)CPU所在的主機(jī)之間進(jìn)行熱遷移后的運(yùn)行成功率。
[0042]請(qǐng)參閱圖2,為本發(fā)明實(shí)施例提供的另一種虛擬機(jī)指令處理方法。如圖2所示,該方法包括以下步驟:
[0043]201、虛擬機(jī)的指令處理裝置檢測源CPU和目標(biāo)CPU的兼容性,向虛擬機(jī)發(fā)送兼容性的檢測結(jié)果。
[0044]通常情況下,虛擬機(jī)在正常運(yùn)行中會(huì)由于性能均衡等原因,需要熱遷移到其他CPU所在的主機(jī)上,即從源CPU所在的主機(jī)熱遷移到目標(biāo)CPU所在的主機(jī)。此時(shí),由于源CPU和目標(biāo)CPU異構(gòu),所以源CPU和目標(biāo)CPU可能不兼容。當(dāng)源CPU和目標(biāo)CPU兼容時(shí),虛擬機(jī)的指令處理裝置向虛擬機(jī)發(fā)送兼容的檢測結(jié)果,這時(shí)虛擬機(jī)運(yùn)行在裸核模式下,即虛擬機(jī)直接將指令發(fā)送至目標(biāo)CPU,這樣虛擬機(jī)的性能開銷較小。
[0045]當(dāng)源CPU和目標(biāo)CPU不兼容時(shí),虛擬機(jī)的指令處理裝置向虛擬機(jī)發(fā)送不兼容的檢測結(jié)果,通知虛擬機(jī)目標(biāo)CPU無法正確識(shí)別虛擬機(jī)發(fā)送的指令,這時(shí),目標(biāo)CPU發(fā)送異常信息到虛擬機(jī)的指令處理裝置,虛擬機(jī)的指令處理裝置將虛擬機(jī)的運(yùn)行模式切換至兼容模式,虛擬機(jī)的指令處理裝置執(zhí)行以下步驟。
[0046]202、虛擬機(jī)的指令處理裝置接收虛擬機(jī)發(fā)送的指令。
[0047]即,此時(shí)虛擬機(jī)不再直接將指令發(fā)送至目標(biāo)CPU,而是將指令發(fā)送至虛擬機(jī)的指令處理裝置,以便于將目標(biāo)CPU不能識(shí)別的指令轉(zhuǎn)換為可識(shí)別的信息。
[0048]具體的,CPU指令分為五類:第一類為整數(shù)計(jì)算指令,是CPU運(yùn)行最多的指令類型,這類指令通常比較簡單,同時(shí)計(jì)算速度也很快,這類指令語意比較簡單,性能開銷通常比較??;第二類為浮點(diǎn)計(jì)算指令,即CPU對(duì)于一些科學(xué)運(yùn)算常用的指令類型,和整數(shù)計(jì)算指令類似,語意比較簡單,但是計(jì)算速度要比整數(shù)慢,性能開銷也比較小;第三類為控制指令,是CPU中用于改變程序執(zhí)行流的指令類型,語意相對(duì)整數(shù)和浮點(diǎn)計(jì)算要復(fù)雜,根據(jù)不同的指令,性能開銷可大可??;第四類為CPU高級(jí)指令,主要用于進(jìn)行向量計(jì)算,語意比較復(fù)雜,性能開銷一般較大;第五類為未知指令,即該物理服務(wù)器的CPU不支持的指令,具體根據(jù)CPU型號(hào)確定,這類指令就是需要轉(zhuǎn)換的指令,性能開銷一般都比較大。
[0049]203、虛擬機(jī)的指令處理裝置將指令中目標(biāo)CPU不可識(shí)別的指令轉(zhuǎn)換為目標(biāo)CPU可識(shí)別的息。
[0050]其中,每種CPU不可識(shí)別的指令是可知的,將所有不可識(shí)別的指令存到映射表中,如果在表中可以查到,就是不可識(shí)別的;或者,根據(jù)CPU指令中的分類碼(即每條指令屬于上述五類指令中的一類),然后查詢CPU支持的指令類型,如果該指令的分類碼對(duì)應(yīng)的指令類型為目標(biāo)CPU不支持的類型,則該指令為目標(biāo)CPU不可識(shí)別的指令。
[0051]具體的,步驟203可以通過以下步驟實(shí)現(xiàn):
[0052]2031、虛擬機(jī)的指令處理裝置根據(jù)虛擬機(jī)中虛擬CPU的寄存器的狀態(tài)確定源CPU的型號(hào)。
[0053]由于虛擬機(jī)是熱遷移至目標(biāo)CPU所在的物理主機(jī),即在遷移過程中,虛擬機(jī)不進(jìn)行斷電載入,所以,虛擬機(jī)中虛擬CPU的狀態(tài)與源CPU的狀態(tài)相同,虛擬機(jī)的指令處理裝置可以通過快照保存保存虛擬機(jī)中虛擬CPU的寄存器的狀態(tài)作為源CPU的寄存器的狀態(tài)。
[0054]虛擬機(jī)的指令處理裝置調(diào)整模擬器中的寄存器的狀態(tài)至保存的源CPU的寄存器的狀態(tài),根據(jù)調(diào)整后的模擬器中的寄存器狀態(tài)判斷接收到的指令的源CPU型號(hào),具體的,寄存器作為CPU的控制部件,用來暫時(shí)存儲(chǔ)CPU的指令、數(shù)據(jù)和地址,因此,根據(jù)寄存器中存儲(chǔ)的指令、數(shù)據(jù)和地址的類型與模式,可以確定寄存器對(duì)應(yīng)的CPU的型號(hào)與狀態(tài)。
[0055]2032、虛擬機(jī)的指令處理裝置根據(jù)源CPU的型號(hào)調(diào)用轉(zhuǎn)換表,在轉(zhuǎn)換表中查詢目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的目標(biāo)CPU可識(shí)別的指令。
[0056]每一種型號(hào)的目標(biāo)CPU的轉(zhuǎn)換表可能有一個(gè)或多個(gè),每一個(gè)轉(zhuǎn)換表對(duì)應(yīng)一個(gè)源CPU型號(hào),源CPU型號(hào)不同,該源CPU指令中包含的目標(biāo)CPU不可識(shí)別的指令就可能不同。
[0057]這一個(gè)或多個(gè)轉(zhuǎn)換表中包括預(yù)先設(shè)置的目標(biāo)CPU不可識(shí)別的指令和目標(biāo)CPU可識(shí)別的指令之間的映射關(guān)系,目標(biāo)CPU不可識(shí)別的指令和與目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的目標(biāo)CPU可識(shí)別的指令的操作相同。
[0058]具體的,虛擬機(jī)的指令處理裝置通過模擬器對(duì)于每一種型號(hào)的目標(biāo)CPU維持一組轉(zhuǎn)換表,該組轉(zhuǎn)換表中的一個(gè)轉(zhuǎn)換表對(duì)應(yīng)一個(gè)型號(hào)的源CPU,在一個(gè)型號(hào)的源CPU對(duì)應(yīng)的轉(zhuǎn)換表中,該型號(hào)的源CPU的指令中目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)一個(gè)操作相同的目標(biāo)CPU可識(shí)別的指令,由于此時(shí)虛擬機(jī)的熱遷移已經(jīng)完成,因此虛擬機(jī)的指令處理裝置是通過模擬器在目標(biāo)CPU上進(jìn)行的模擬,即目標(biāo)CPU的型號(hào)是已知的,所以只需確定源CPU的型號(hào),就可以查詢每一條目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的目標(biāo)CPU可識(shí)別的指令,因此模擬器處理后指令是目標(biāo)CPU可以正確識(shí)別的指令,即將目標(biāo)CPU不可識(shí)別的指令轉(zhuǎn)換為目標(biāo)CPU可識(shí)別的指令。
[0059]上述步驟2031與2032可以通過能夠?qū)χ噶钸M(jìn)行模擬的模擬器實(shí)現(xiàn),具體的如Zesto模擬器、gem5模擬器、FeS2,模擬器等。
[0060]或者,步驟203也可以通過以下方式實(shí)現(xiàn):
[0061]虛擬機(jī)的指令處理裝置在映射表中查詢指令對(duì)應(yīng)的函數(shù)地址,調(diào)用函數(shù)地址指示的函數(shù),根據(jù)函數(shù),獲取對(duì)指令的運(yùn)算結(jié)果,運(yùn)算結(jié)果為目標(biāo)CPU可識(shí)別的信息,其中,映射表中包括預(yù)先設(shè)置的目標(biāo)CPU不可識(shí)別的每一個(gè)指令對(duì)應(yīng)的函數(shù)地址信息。
[0062]具體的,當(dāng)虛擬機(jī)的指令處理裝置接收一條目標(biāo)CPU不可識(shí)別的指令時(shí),虛擬機(jī)的指令處理裝置根據(jù)該指令的操作碼在映射表中查詢?cè)撝噶顚?duì)應(yīng)的函數(shù)地址,根據(jù)函數(shù)地址,調(diào)用該函數(shù)地址對(duì)應(yīng)的函數(shù),并根據(jù)調(diào)用的函數(shù)進(jìn)行計(jì)算,獲取計(jì)算結(jié)果,則該計(jì)算結(jié)果作為這條目標(biāo)CPU不可識(shí)別的指令的運(yùn)算結(jié)果。
[0063]204、虛擬機(jī)的指令處理裝置將該目標(biāo)CPU可識(shí)別的信息發(fā)送至目標(biāo)CPU,以便于所述目標(biāo)CPU對(duì)所述信息進(jìn)行處理。
[0064]其中,目標(biāo)CPU可識(shí)別的信息,根據(jù)上述方法的描述,包括目標(biāo)CPU可識(shí)別的指令和\或?qū)δ繕?biāo)CPU不可識(shí)別的指令的計(jì)算結(jié)果。則目標(biāo)CPU可以接收目標(biāo)CPU可識(shí)別的指令,根據(jù)目標(biāo)CPU可識(shí)別的指令,獲取該指令的結(jié)果,再根據(jù)該結(jié)果進(jìn)行下一步操作;也可以直接接收指令的結(jié)果,再根據(jù)該結(jié)果進(jìn)行下一步操作。[0065]可選的,由于要對(duì)目標(biāo)CPU不可識(shí)別的指令進(jìn)行操作,所以此時(shí)虛擬機(jī)的性能開銷會(huì)比較大,因此,在步驟202、虛擬機(jī)的指令處理裝置接收虛擬機(jī)發(fā)送的指令之后,本發(fā)明的實(shí)施例提供的方法還可以包括步驟205:
[0066]205、虛擬機(jī)的指令處理裝置計(jì)算接收到的指令的指令開銷,根據(jù)接收到的指令的指令開銷計(jì)算虛擬機(jī)的性能開銷,其中,目標(biāo)CPU不可識(shí)別的指令的指令開銷為轉(zhuǎn)換指令的開銷與目標(biāo)CPU運(yùn)行指令的開銷的和,目標(biāo)CPU可識(shí)別的指令的指令開銷為目標(biāo)CPU運(yùn)行指令的開銷。
[0067]其中,對(duì)虛擬機(jī)的性能開銷預(yù)先設(shè)置一個(gè)閾值開銷,若虛擬機(jī)的性能開銷大于預(yù)設(shè)的閾值開銷,則虛擬機(jī)的指令處理裝置對(duì)虛擬機(jī)進(jìn)行熱遷移,若虛擬機(jī)的性能開銷小于等于預(yù)設(shè)的閾值開銷,則虛擬機(jī)的指令處理裝置不對(duì)虛擬機(jī)進(jìn)行熱遷移。
[0068]具體的,虛擬機(jī)的指令處理裝置獲取上述五類指令中每一類指令的指令開銷,其中,指令開銷指的是一條該類指令的平均開銷,對(duì)第一類至第四類指令,指令開銷為目標(biāo)CPU運(yùn)行該類指令的每一條指令的開銷的平均值;對(duì)第五類,即未知指令,由于要對(duì)這一類指令進(jìn)行轉(zhuǎn)化,因此第五類指令的指令開銷為目標(biāo)CPU運(yùn)行每一條該類指令的開銷及轉(zhuǎn)換每一條該類指令所需的開銷的和的平均值。同時(shí),統(tǒng)計(jì)這類指令出現(xiàn)的頻率,獲取如下表I所示的表:
[0069]表I
[0070]
【權(quán)利要求】
1.一種虛擬機(jī)的指令處理方法,其特征在于,應(yīng)用于虛擬機(jī)從源CPU所在的主機(jī)熱遷移至目標(biāo)CPU所在的主機(jī)之后,包括: 當(dāng)所述源CPU和所述目標(biāo)CPU不兼容時(shí),接收所述虛擬機(jī)發(fā)送的指令; 將所述指令中所述目標(biāo)CPU不可識(shí)別的指令轉(zhuǎn)換為所述目標(biāo)CPU可識(shí)別的信息;將所述目標(biāo)CPU可識(shí)別的信息發(fā)送至所述目標(biāo)CPU,以便于所述目標(biāo)CPU對(duì)所述信息進(jìn)行處理。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述指令中所述目標(biāo)CPU不可識(shí)別的指令轉(zhuǎn)換為所述目標(biāo)CPU可識(shí)別的信息,包括: 根據(jù)所述虛擬機(jī)中虛擬CPU的寄存器的狀態(tài)確定所述源CPU的型號(hào); 根據(jù)所述源CPU的型號(hào)調(diào)用轉(zhuǎn)換表,在所述轉(zhuǎn)換表中查詢所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的目標(biāo)CPU可識(shí)別的指令,所述轉(zhuǎn)換表包括預(yù)先設(shè)置的所述目標(biāo)CPU不可識(shí)別的指令和所述目標(biāo)CPU可識(shí)別的指令之間的映射關(guān)系,所述目標(biāo)CPU不可識(shí)別的指令和與所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的所述目標(biāo)CPU可識(shí)別的指令的操作相同。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述指令中所述目標(biāo)CPU不可識(shí)別的指令轉(zhuǎn)換為所述目標(biāo)CPU可識(shí)別的信息,包括: 在映射表中查詢所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的函數(shù)地址,調(diào)用所述函數(shù)地址指示的函數(shù),根據(jù)所述函數(shù),獲取對(duì)所述不可識(shí)別的指令的運(yùn)算結(jié)果,所述運(yùn)算結(jié)果為所述目標(biāo)CPU可識(shí)別的信息,其中,所述映射表中包括預(yù)先設(shè)置的所述目標(biāo)CPU不可識(shí)別的每一個(gè)指令及與所述每一個(gè)指令對(duì)應(yīng)的函數(shù)地址信息。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述接收所述虛擬機(jī)發(fā)送的指令之前,還包括: 檢測所述源CPU和所述目標(biāo)CPU的兼容性; 向所述虛擬機(jī)發(fā)送所述兼容性的檢測結(jié)果,以便于當(dāng)所述源CPU和目標(biāo)CPU兼容時(shí),所述虛擬機(jī)將指令直接發(fā)送至所述目標(biāo)CPU。
5.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,所述接收所述虛擬機(jī)發(fā)送的指令之后,還包括: 計(jì)算接收到的指令的指令開銷,其中,所述目標(biāo)CPU不可識(shí)別的指令的指令開銷為轉(zhuǎn)換所述指令的開銷與目標(biāo)CPU運(yùn)行轉(zhuǎn)換后的指令的開銷的和,所述目標(biāo)CPU可識(shí)別的指令的指令開銷為目標(biāo)CPU運(yùn)行所述可識(shí)別的指令的開銷; 根據(jù)所述接收到的指令的指令開銷計(jì)算所述虛擬機(jī)的性能開銷; 若所述虛擬機(jī)的性能開銷大于預(yù)設(shè)的閾值開銷,則對(duì)所述虛擬機(jī)再次進(jìn)行熱遷移。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于: 所述虛擬機(jī)的性能開銷為所述接收到的指令的指令開銷的加權(quán)平均值。
7.—種虛擬機(jī)的指令處理裝置,其特征在于,包括接收單元、處理單元及發(fā)送單元; 所述接收單元用于當(dāng)源CPU和目標(biāo)CPU不兼容時(shí),接收所述虛擬機(jī)發(fā)送的指令; 所述處理單元用于將所述接收單元接收的指令中所述目標(biāo)CPU不可識(shí)別的指令轉(zhuǎn)換為所述目標(biāo)CPU可識(shí)別的信息; 所述發(fā)送單元用于將所述處理單元轉(zhuǎn)換的目標(biāo)CPU可識(shí)別的信息發(fā)送至所述目標(biāo)CPU,以便于所述目標(biāo)CPU對(duì)所述信息進(jìn)行處理。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述處理單元包括:型號(hào)確定子單元及轉(zhuǎn)換子單兀; 所述型號(hào)確定子單元用于根據(jù)所述虛擬機(jī)中虛擬CPU的寄存器的狀態(tài)確定所述源CPU的型號(hào); 所述轉(zhuǎn)換子單元用于根據(jù)所述型號(hào)確定子單元確定的源CPU的型號(hào)調(diào)用轉(zhuǎn)換表,在所述轉(zhuǎn)換表中查詢所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的目標(biāo)CPU可識(shí)別的指令,所述轉(zhuǎn)換表包括預(yù)先設(shè)置的所述目標(biāo)CPU不可識(shí)別的指令和所述目標(biāo)CPU可識(shí)別的指令之間的映射關(guān)系,所述目標(biāo)CPU不可識(shí)別的指令和與所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的所述目標(biāo)CPU可識(shí)別的指令的操作相同。
9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述處理單元還用于: 在映射表中查詢所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的函數(shù)地址,調(diào)用所述函數(shù)地址指示的函數(shù),根據(jù)所述函數(shù),獲取對(duì)所述不可識(shí)別的指令的運(yùn)算結(jié)果,所述運(yùn)算結(jié)果為所述目標(biāo)CPU可識(shí)別的信息,其中,所述映射表中包括預(yù)先設(shè)置的所述目標(biāo)CPU不可識(shí)別的每一個(gè)指令及與所述每一個(gè)指令對(duì)應(yīng)的函數(shù)地址信息。
10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括檢測單元; 所述檢測單元用于檢測所述源CPU和所述目標(biāo)CPU的兼容性; 所述發(fā)送單元還用于向所述虛擬機(jī)發(fā)送所述檢測單元的兼容性的檢測結(jié)果,以便于當(dāng)所述源CPU和目標(biāo)CPU兼容時(shí),所述虛擬機(jī)將指令直接發(fā)送至所述目標(biāo)CPU。
11.根據(jù)權(quán)利要求7-10任一項(xiàng)所述的裝置,其特征在于,所述裝置還包括性能分析單元和調(diào)度單元; 所述性能分析單元用于計(jì)算所述接收單元接收到接收到的指令的指令開銷,其中,所述目標(biāo)CPU不可識(shí)別的指令的指令開銷為轉(zhuǎn)換所述指令的開銷與目標(biāo)CPU運(yùn)行轉(zhuǎn)換后的指令的開銷的和,所述目標(biāo)CPU可識(shí)別的指令的指令開銷為目標(biāo)CPU運(yùn)行所述可識(shí)別的指令的開銷; 所述性能分析單元還用于根據(jù)所述接收到的指令的指令開銷計(jì)算所述虛擬機(jī)的性能開銷; 若所述性能分析單元計(jì)算的虛擬機(jī)的性能開銷大于預(yù)設(shè)的閾值開銷,則所述調(diào)度單元對(duì)所述虛擬機(jī)再次進(jìn)行熱遷移。
12.—種物理主機(jī),其特征在于,所述物理主機(jī)包括硬件層、運(yùn)行在所述硬件層之上的虛擬機(jī)管理層以及運(yùn)行在所述虛擬機(jī)管理層上的一個(gè)或多個(gè)虛擬機(jī); 所述虛擬機(jī)管理層包括虛擬機(jī)的指令處理裝置,所述虛擬機(jī)的指令處理裝置用于當(dāng)所述源CPU和所述目標(biāo)CPU不兼容時(shí),接收所述虛擬機(jī)發(fā)送的指令;將所述指令中所述目標(biāo)CPU不可識(shí)別的指令轉(zhuǎn)換為所述目標(biāo)CPU可識(shí)別的信息;將所述目標(biāo)CPU可識(shí)別的信息發(fā)送至所述目標(biāo)CPU,以便于所述目標(biāo)CPU對(duì)所述信息進(jìn)行處理。
13.根據(jù)權(quán)利要求12所述的物理主機(jī),其特征在于: 所述虛擬機(jī)的指令處理裝置具體用于根據(jù)所述虛擬機(jī)中虛擬CPU的寄存器的狀態(tài)確定所述源CPU的型號(hào);根據(jù)所述源CPU的型號(hào)調(diào)用轉(zhuǎn)換表,在所述轉(zhuǎn)換表中查詢所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的目標(biāo)CPU可識(shí)別的指令,所述轉(zhuǎn)換表包括預(yù)先設(shè)置的所述目標(biāo)CPU不可識(shí)別的指令和所述目標(biāo)CPU可識(shí)別的指令之間的映射關(guān)系,所述目標(biāo)CPU不可識(shí)別的指令和與所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的所述目標(biāo)CPU可識(shí)別的指令的操作相同。
14.根據(jù)權(quán)利要求12所述的物理主機(jī),其特征在于,所述虛擬機(jī)的指令處理裝置具體用于:在映射表中查詢所述目標(biāo)CPU不可識(shí)別的指令對(duì)應(yīng)的函數(shù)地址,調(diào)用所述函數(shù)地址指示的函數(shù),根據(jù)所述函數(shù),獲取對(duì)所述不可識(shí)別的指令的運(yùn)算結(jié)果,所述運(yùn)算結(jié)果為所述目標(biāo)CPU可識(shí)別的信息,其中,所述映射表中包括預(yù)先設(shè)置的所述目標(biāo)CPU不可識(shí)別的每一個(gè)指令及與所述每一個(gè)指令對(duì)應(yīng)的函數(shù)地址信 息。
【文檔編號(hào)】G06F9/455GK103455363SQ201310391124
【公開日】2013年12月18日 申請(qǐng)日期:2013年8月30日 優(yōu)先權(quán)日:2013年8月30日
【發(fā)明者】劉力力 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
象州县| 咸阳市| 阿拉善左旗| 尉犁县| 寿宁县| 北海市| 大荔县| 肃北| 万宁市| 大邑县| 承德县| 扬中市| 渑池县| 公安县| 都安| 临沭县| 双鸭山市| 永登县| 松阳县| 玉林市| 山阳县| 八宿县| 固阳县| 资溪县| 威远县| 涿州市| 格尔木市| 乌海市| 蕉岭县| 邵阳县| 桑日县| 黑龙江省| 山西省| 万宁市| 扎兰屯市| 大姚县| 江北区| 英吉沙县| 盐津县| 长垣县| 环江|