本發(fā)明涉及虛擬化技術(shù),尤其涉及一種狀態(tài)信息控制方法及裝置。
背景技術(shù):
在虛擬化平臺(tái)中,宿主機(jī)在執(zhí)行虛擬化應(yīng)用的過(guò)程中,需要模擬虛擬機(jī)的處理器狀態(tài),當(dāng)虛擬機(jī)的處理器狀態(tài)改變時(shí),宿主機(jī)上的所模擬的虛擬機(jī)的處理器狀態(tài)也需要進(jìn)行相應(yīng)改變,以保證宿主機(jī)所執(zhí)行的虛擬化應(yīng)用能夠正確執(zhí)行。
現(xiàn)有技術(shù)中,宿主機(jī)將需要模擬的虛擬機(jī)的處理器狀態(tài)信息保存在宿主機(jī)的內(nèi)存中,當(dāng)虛擬機(jī)的處理器狀態(tài)信息改變時(shí),宿主機(jī)通過(guò)執(zhí)行大量的訪存指令來(lái)相應(yīng)地更新宿主機(jī)內(nèi)存中所保存的虛擬機(jī)的處理器狀態(tài)信息。
但是,現(xiàn)有技術(shù)使用宿主機(jī)內(nèi)存來(lái)保存虛擬機(jī)的處理器狀態(tài)信息,需要使用大量的訪存指令來(lái)更新內(nèi)存中的虛擬機(jī)的處理器狀態(tài)信息,而大量訪存指令的執(zhí)行會(huì)引起系統(tǒng)開(kāi)銷(xiāo)過(guò)大,進(jìn)而導(dǎo)致虛擬化的效率低下。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種狀態(tài)信息控制方法及裝置,用于解決現(xiàn)有技術(shù)中執(zhí)行虛擬化執(zhí)行系統(tǒng)開(kāi)銷(xiāo)過(guò)大,導(dǎo)致虛擬化效率低下的問(wèn)題。
本發(fā)明第一方面提供一種狀態(tài)信息控制方法,所述方法應(yīng)用于虛擬平臺(tái)中的宿主機(jī),所述宿主機(jī)中包括:虛擬化狀態(tài)全局控制寄存器、多個(gè)分組寄存器組,每個(gè)分組寄存器組包括至少一個(gè)分組寄存器,所述多個(gè)分組寄存器組與所述虛擬平臺(tái)的多個(gè)虛擬機(jī)一一對(duì)應(yīng),其中,所述分組寄存器組用于保存對(duì)應(yīng)虛擬機(jī)的處理器狀態(tài)信息,所述方法包括:
所述宿主機(jī)在第一虛擬機(jī)的處理器狀態(tài)信息更新時(shí),創(chuàng)建第一虛擬機(jī)更新?tīng)顟B(tài)操作指令,所述第一虛擬機(jī)為所述宿主機(jī)當(dāng)前運(yùn)行的虛擬機(jī);
所述宿主機(jī)讀取所述虛擬化狀態(tài)全局控制寄存器中保存的所述第一虛擬 機(jī)對(duì)應(yīng)的第一分組寄存器組的標(biāo)識(shí);
所述宿主機(jī)根據(jù)所述第一分組寄存器組的標(biāo)識(shí),對(duì)所述第一分組寄存器組執(zhí)行所述第一虛擬機(jī)更新?tīng)顟B(tài)操作指令以更新所述第一分組寄存器組中的處理器狀態(tài)信息。
結(jié)合第一方面,在第一方面的第一種可能的實(shí)施方式中,所述宿主機(jī)根據(jù)所述第一分組寄存器組的標(biāo)識(shí),對(duì)所述第一分組寄存器組執(zhí)行所述第一虛擬機(jī)更新?tīng)顟B(tài)操作指令之前,還包括:
所述宿主機(jī)獲取所述多個(gè)虛擬機(jī)的數(shù)量N,以及N個(gè)虛擬機(jī)的標(biāo)識(shí);
所述宿主機(jī)創(chuàng)建N組所述分組寄存器組,并建立所述虛擬機(jī)的標(biāo)識(shí)與所述分組寄存器組之間一一對(duì)應(yīng)的映射關(guān)系。
結(jié)合第一方面或第一方面的第一種可能的實(shí)施方式,在第一方面的第二種可能的實(shí)施方式中,所述宿主機(jī)中還包括:虛擬化狀態(tài)臨時(shí)控制寄存器;
所述方法還包括:
所述宿主機(jī)創(chuàng)建第二虛擬機(jī)更新?tīng)顟B(tài)操作指令,并根據(jù)所述第二虛擬機(jī)更新?tīng)顟B(tài)操作指令的屬性確定所述第二虛擬機(jī)更新?tīng)顟B(tài)操作指令對(duì)應(yīng)的至少一個(gè)目標(biāo)虛擬機(jī),獲取所述至少一個(gè)目標(biāo)虛擬機(jī)對(duì)應(yīng)的至少一個(gè)第二分組寄存器組的標(biāo)識(shí),其中,所述目標(biāo)虛擬機(jī)為非當(dāng)前運(yùn)行的虛擬機(jī);
所述宿主機(jī)將所述至少一個(gè)第二分組寄存器組的標(biāo)識(shí)添加到所述第二虛擬機(jī)更新?tīng)顟B(tài)操作指令的前端,形成所述第二虛擬機(jī)更新?tīng)顟B(tài)操作指令的前綴指令;
所述宿主機(jī)通過(guò)執(zhí)行所述前綴指令將所述前綴指令對(duì)應(yīng)的至少一個(gè)第二分組寄存器組的標(biāo)識(shí)保存在所述虛擬化狀態(tài)臨時(shí)控制寄存器中。
結(jié)合第一方面的第二種可能的實(shí)施方式,在第一方面的第三種可能的實(shí)施方式中,所述方法還包括:
所述宿主機(jī)根據(jù)所述虛擬化狀態(tài)臨時(shí)控制寄存器中保存的所述第二分組寄存器組的標(biāo)識(shí),對(duì)相應(yīng)的所述至少一個(gè)第二分組寄存器組分別執(zhí)行所述第二虛擬機(jī)更新?tīng)顟B(tài)操作指令,以更新所述至少一個(gè)第二分組寄存器組中的處理器狀態(tài)信息。
結(jié)合第一方面的第三種可能的實(shí)施方式,在第一方面的第四種可能的實(shí)施方式中,所述宿主機(jī)根據(jù)所述更新后的第二虛擬機(jī)更新?tīng)顟B(tài)操作指令中的 所述前綴,對(duì)相應(yīng)的所述至少一個(gè)第二分組寄存器組分別執(zhí)行所述更新后的第二虛擬機(jī)更新?tīng)顟B(tài)操作指令之后,還包括:
所述宿主機(jī)將所述虛擬化狀態(tài)臨時(shí)控制寄存器中的值清零。
本發(fā)明第二方面提供一種狀態(tài)信息控制裝置,所述狀態(tài)信息控制裝置集成于虛擬平臺(tái)的宿主機(jī)中;所述狀態(tài)信息控制裝置,包括:處理單元、虛擬化狀態(tài)全局控制寄存器和多個(gè)分組寄存器組,每個(gè)分組寄存器組包括至少一個(gè)分組寄存器;其中,所述多個(gè)分組寄存器組與所述虛擬平臺(tái)的多個(gè)虛擬機(jī)一一對(duì)應(yīng);
所述虛擬化狀態(tài)全局控制寄存器,用于存儲(chǔ)宿主機(jī)當(dāng)前所運(yùn)行的虛擬機(jī)的所對(duì)應(yīng)的分組寄存器組的標(biāo)識(shí);每個(gè)所述分組寄存器組,用于存儲(chǔ)對(duì)應(yīng)虛擬機(jī)的處理器狀態(tài)信息;
所述處理單元,用于在第一虛擬機(jī)的處理器狀態(tài)信息更新時(shí),創(chuàng)建第一虛擬機(jī)更新?tīng)顟B(tài)操作指令;讀取所述虛擬化狀態(tài)全局控制寄存器中保存的所述第一虛擬機(jī)對(duì)應(yīng)的第一分組寄存器組的標(biāo)識(shí);根據(jù)所述第一分組寄存器組的標(biāo)識(shí),對(duì)所述第一分組寄存器組執(zhí)行所述第一虛擬機(jī)更新?tīng)顟B(tài)操作指令以更新所述第一分組寄存器組中的處理器狀態(tài)信息。
結(jié)合第二方面,在第二方面的第一種可能的實(shí)施方式中,所述處理單元還用于:獲取所述多個(gè)虛擬機(jī)的數(shù)量N,以及N個(gè)虛擬機(jī)的標(biāo)識(shí);創(chuàng)建N組所述分組寄存器組,并建立所述虛擬機(jī)的標(biāo)識(shí)與所述分組寄存器組之間一一對(duì)應(yīng)的映射關(guān)系。
結(jié)合第二方面或第二方面的第一種可能的實(shí)施方式,在第二方面的第二種可能的實(shí)施方式中,所述裝置還包括:虛擬化狀態(tài)臨時(shí)控制寄存器;相應(yīng)地,
所述處理單元還用于:創(chuàng)建第二虛擬機(jī)更新?tīng)顟B(tài)操作指令,并根據(jù)所述第二虛擬機(jī)更新?tīng)顟B(tài)操作指令的屬性確定所述第二虛擬機(jī)更新?tīng)顟B(tài)操作指令對(duì)應(yīng)的至少一個(gè)目標(biāo)虛擬機(jī),獲取所述至少一個(gè)目標(biāo)虛擬機(jī)對(duì)應(yīng)的至少一個(gè)第二分組寄存器組的標(biāo)識(shí),其中,所述目標(biāo)虛擬機(jī)為非當(dāng)前運(yùn)行的虛擬機(jī);將所述至少一個(gè)第二分組寄存器組的標(biāo)識(shí)添加到所述第二虛擬機(jī)更新?tīng)顟B(tài)操作指令的前端,形成所述第二虛擬機(jī)更新?tīng)顟B(tài)操作指令的前綴指令;所述宿主機(jī)通過(guò)執(zhí)行所述前綴指令將所述前綴指令對(duì)應(yīng)的至少一個(gè)第二分組寄存器 組的標(biāo)識(shí)保存在所述虛擬化狀態(tài)臨時(shí)控制寄存器中。
結(jié)合第二方面的第二種可能的實(shí)施方式中,在第二方面的第三種可能的實(shí)施方式中,所述處理單元還用于在將所述前綴指令對(duì)應(yīng)的至少一個(gè)第二分組寄存器組的標(biāo)識(shí)保存在所述虛擬化狀態(tài)臨時(shí)控制寄存器中之后,根據(jù)所述虛擬化狀態(tài)臨時(shí)控制寄存器中保存的所述第二分組寄存器組的標(biāo)識(shí),對(duì)相應(yīng)的所述至少一個(gè)第二分組寄存器組分別執(zhí)行所述第二虛擬機(jī)更新?tīng)顟B(tài)操作指令,以更新所述至少一個(gè)第二分組寄存器組中的處理器狀態(tài)信息。
結(jié)合第二方面的第三種可能的實(shí)施方式中,在第二方面的第四種可能的實(shí)施方式中,所述處理單元還用于:將所述虛擬化狀態(tài)臨時(shí)控制寄存器中的值清零。
本發(fā)明所提供的狀態(tài)信息控制方法及裝置中,虛擬機(jī)的處理器狀態(tài)信息被保存在了宿主機(jī)中與該虛擬機(jī)一一對(duì)應(yīng)的分組寄存器組中,同時(shí),宿主機(jī)中設(shè)置了虛擬化狀態(tài)全局控制寄存器用于保存當(dāng)前運(yùn)行的虛擬機(jī)對(duì)應(yīng)的分組寄存器組的標(biāo)識(shí),當(dāng)虛擬機(jī)的處理器狀態(tài)信息更新時(shí),只需要?jiǎng)?chuàng)建普通的虛擬機(jī)操作指令,并將虛擬機(jī)操作指令發(fā)往對(duì)應(yīng)的分組寄存器組中即可,而不再需要通過(guò)訪存指令操作內(nèi)存來(lái)模擬虛擬機(jī)的處理器狀態(tài)信息,從而節(jié)省了系統(tǒng)開(kāi)銷(xiāo),提升了虛擬化效率。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的狀態(tài)信息控制方法實(shí)施例一的流程示意圖;
圖2為本發(fā)明實(shí)施例提供的虛擬化狀態(tài)全局控制寄存器設(shè)置方法示意圖;
圖3為本發(fā)明實(shí)施例提供的根據(jù)虛擬化狀態(tài)全局控制寄存器執(zhí)行指令示意圖;
圖4為本發(fā)明實(shí)施例提供的狀態(tài)信息控制方法實(shí)施例二的流程示意圖;
圖5為本發(fā)明實(shí)施例提供的狀態(tài)信息控制方法實(shí)施例三的流程示意圖;
圖6為本發(fā)明實(shí)施例提供的虛擬化狀態(tài)臨時(shí)控制寄存器設(shè)置方法示意圖;
圖7為本發(fā)明實(shí)施例提供的根據(jù)虛擬化狀態(tài)臨時(shí)控制寄存器執(zhí)行指令示意圖;
圖8為本發(fā)明實(shí)施例提供的狀態(tài)信息控制裝置實(shí)施例一的結(jié)構(gòu)示意圖;
圖9為本發(fā)明實(shí)施例提供的狀態(tài)信息控制裝置實(shí)施例一的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1為本發(fā)明實(shí)施例提供的狀態(tài)信息控制方法實(shí)施例一的流程示意圖,該方法應(yīng)用于虛擬平臺(tái)中的宿主機(jī),該宿主機(jī)中包括:虛擬化狀態(tài)全局控制寄存器、多個(gè)分組寄存器組,每個(gè)分組寄存器組包括至少一個(gè)分組寄存器,多個(gè)分組寄存器組與虛擬平臺(tái)的多個(gè)虛擬機(jī)一一對(duì)應(yīng),其中,分組寄存器組用于保存對(duì)應(yīng)虛擬機(jī)的處理器狀態(tài)信息。如圖1所示,該方法包括:
S101、宿主機(jī)在第一虛擬機(jī)的處理器狀態(tài)信息更新時(shí),創(chuàng)建第一虛擬機(jī)更新?tīng)顟B(tài)操作指令。
第一虛擬機(jī)更新?tīng)顟B(tài)操作指令可以為通用指令,也可以為跨多個(gè)分組寄存器組的特定指令。
其中,虛擬機(jī)的處理器狀態(tài)信息表示虛擬機(jī)的處理器當(dāng)前的運(yùn)行狀態(tài),包括虛擬機(jī)的處理器中軟件(比如進(jìn)程)或硬件(比如寄存器)的當(dāng)前狀態(tài)。
S102、宿主機(jī)讀取虛擬化狀態(tài)全局控制寄存器中保存的第一虛擬機(jī)對(duì)應(yīng)的第一分組寄存器組的標(biāo)識(shí)。
虛擬化狀態(tài)全局控制寄存器用于存儲(chǔ)宿主機(jī)當(dāng)前所運(yùn)行的虛擬機(jī)所對(duì)應(yīng)的分組寄存器組的標(biāo)識(shí),當(dāng)宿主機(jī)當(dāng)前所運(yùn)行的虛擬機(jī)發(fā)生變化時(shí),虛擬化狀態(tài)全局控制寄存器中的分組寄存器組的標(biāo)識(shí)會(huì)相應(yīng)進(jìn)行更新。
需要說(shuō)明的是,當(dāng)宿主機(jī)當(dāng)前所運(yùn)行的虛擬機(jī)發(fā)生變化時(shí),宿主機(jī)會(huì)使用一個(gè)全局控制寄存器設(shè)置指令來(lái)將虛擬化狀態(tài)全局控制寄存器中的分組寄 存器組的標(biāo)識(shí)更新為當(dāng)前運(yùn)行的虛擬機(jī)對(duì)應(yīng)的分組寄存器組的標(biāo)識(shí),進(jìn)而,第一虛擬機(jī)更新?tīng)顟B(tài)操作指令會(huì)針對(duì)該分組寄存器組來(lái)執(zhí)行。具體地,圖2為本發(fā)明實(shí)施例提供的虛擬化狀態(tài)全局控制寄存器設(shè)置方法示意圖,圖3為本發(fā)明實(shí)施例提供的根據(jù)虛擬化狀態(tài)全局控制寄存器執(zhí)行指令示意圖,如圖2所示,宿主機(jī)根據(jù)分組寄存器組的編號(hào)來(lái)設(shè)置虛擬化狀態(tài)全局控制寄存器,如圖3所示,當(dāng)虛擬化狀態(tài)全局控制寄存器中設(shè)置了分組寄存器組之后,宿主機(jī)上需要執(zhí)行的通用指令就根據(jù)虛擬化狀態(tài)全局控制寄存器中的所保存的分組寄存器組的標(biāo)識(shí)來(lái)讀寫(xiě)對(duì)應(yīng)的分組寄存器組所對(duì)應(yīng)的寄存器。
S103、宿主機(jī)根據(jù)上述第一分組寄存器組的標(biāo)識(shí),對(duì)第一分組寄存器組執(zhí)行上述第一虛擬機(jī)更新?tīng)顟B(tài)操作指令,以更新第一分組寄存器組中的處理器狀態(tài)信息。
從而可以保證宿主機(jī)中虛擬機(jī)對(duì)應(yīng)的處理器狀態(tài)信息與虛擬機(jī)實(shí)際的處理器狀態(tài)信息同步。
每個(gè)分組寄存器組對(duì)應(yīng)一個(gè)虛擬機(jī),每個(gè)分組寄存器組中保存這個(gè)對(duì)應(yīng)虛擬機(jī)的處理器狀態(tài)信息。分組寄存器組和虛擬機(jī)的一一對(duì)應(yīng)關(guān)系已經(jīng)進(jìn)行預(yù)先設(shè)置。
假設(shè)當(dāng)前運(yùn)行的虛擬機(jī)為虛擬機(jī)A,其所對(duì)應(yīng)的分組寄存器組為B,則虛擬化狀態(tài)全局控制寄存器中所保存的為分組寄存器組B的標(biāo)識(shí),當(dāng)虛擬機(jī)A的處理器狀態(tài)信息發(fā)生變更后,宿主機(jī)向與虛擬機(jī)A對(duì)應(yīng)的分組寄存器組B執(zhí)行指令X以同步虛擬機(jī)A的處理器狀態(tài)信息,具體地,宿主機(jī)只要從虛擬化狀態(tài)全局控制寄存器中獲取到分組寄存器組B的標(biāo)識(shí),就可以確定指令X需要發(fā)往哪個(gè)分組寄存器組,進(jìn)而將指令X發(fā)往分組寄存器組B。
本實(shí)施例中,虛擬機(jī)的處理器狀態(tài)信息被保存在了宿主機(jī)中與該虛擬機(jī)一一對(duì)應(yīng)的分組寄存器組中,同時(shí),宿主機(jī)中設(shè)置了虛擬化狀態(tài)全局控制寄存器用于保存當(dāng)前運(yùn)行的虛擬機(jī)對(duì)應(yīng)的分組寄存器組的標(biāo)識(shí),當(dāng)虛擬機(jī)的處理器狀態(tài)信息更新時(shí),只需要?jiǎng)?chuàng)建普通的虛擬機(jī)操作指令,并將虛擬機(jī)操作指令發(fā)往對(duì)應(yīng)的分組寄存器組中即可,而不再需要通過(guò)訪存指令操作內(nèi)存來(lái)模擬虛擬機(jī)的處理器狀態(tài)信息,從而節(jié)省了系統(tǒng)開(kāi)銷(xiāo),提升了虛擬化效率。
圖4為本發(fā)明實(shí)施例提供的狀態(tài)信息控制方法實(shí)施例二的流程示意圖,如圖4所示,在上述步驟S103之前,該方法還包括:
S201、宿主機(jī)獲取多個(gè)虛擬機(jī)的數(shù)量N,以及N個(gè)虛擬機(jī)的標(biāo)識(shí)。
上述數(shù)量N表示虛化平臺(tái)中宿主機(jī)實(shí)際所關(guān)聯(lián)的虛擬機(jī)的數(shù)量。
S202、宿主機(jī)創(chuàng)建N組分組寄存器組,并建立所述虛擬機(jī)的標(biāo)識(shí)與所述分組寄存器組之間一一對(duì)應(yīng)的映射關(guān)系。
宿主機(jī)按照一定規(guī)則,將分組寄存器設(shè)置為N組,每組分組寄存器包含特定個(gè)數(shù)個(gè)分組寄存器,分組完成后,宿主機(jī)建立每組分組寄存器與虛擬機(jī)的一一對(duì)應(yīng)關(guān)系,例如,可以通過(guò)一個(gè)映射表來(lái)建立一一對(duì)應(yīng)關(guān)系。當(dāng)后續(xù)需要確定分組寄存器組時(shí),可以通過(guò)查詢這個(gè)映射表來(lái)確定。
本實(shí)施例中,通過(guò)宿主機(jī)對(duì)分組寄存器進(jìn)行分組,每組對(duì)應(yīng)一個(gè)虛擬機(jī),用來(lái)模擬每個(gè)虛擬機(jī)的處理器狀態(tài)信息,使得分組寄存器組與虛擬機(jī)之間建立起來(lái)一一對(duì)應(yīng)關(guān)系,便與后續(xù)在虛擬機(jī)切換后快速確定對(duì)應(yīng)的分組寄存器組。
圖5為本發(fā)明實(shí)施例提供的狀態(tài)信息控制方法實(shí)施例三的流程示意圖,如圖5所示,宿主機(jī)中還包括虛擬化狀態(tài)臨時(shí)控制寄存器,相應(yīng)地,在上述步驟S101之后,該方法還包括:
S301、宿主機(jī)創(chuàng)建第二虛擬機(jī)更新?tīng)顟B(tài)操作指令,并根據(jù)第二虛擬機(jī)更新?tīng)顟B(tài)操作指令的屬性確定第二虛擬機(jī)更新?tīng)顟B(tài)操作指令對(duì)應(yīng)的至少一個(gè)目標(biāo)虛擬機(jī),獲取該至少一個(gè)目標(biāo)虛擬機(jī)對(duì)應(yīng)的至少一個(gè)第二分組寄存器組的標(biāo)識(shí),其中,目標(biāo)虛擬機(jī)為非當(dāng)前運(yùn)行的虛擬機(jī)。
對(duì)于一些特定指令,即第二虛擬機(jī)更新?tīng)顟B(tài)操作指令,并不是針對(duì)當(dāng)前正在運(yùn)行的虛擬機(jī),可能是針對(duì)當(dāng)前非運(yùn)行的虛擬機(jī),針對(duì)這些特定指令,需要確定其需要發(fā)往的分組寄存器組,并要保證其能發(fā)到正確的分組寄存器組。
本步驟中,宿主機(jī)根據(jù)這些特定指令的屬性來(lái)確定其針對(duì)的虛擬機(jī),例如,根據(jù)指令中所攜帶的虛擬機(jī)標(biāo)識(shí)等,再根據(jù)預(yù)先設(shè)置的虛擬機(jī)與分組寄存器組的一一映射關(guān)系來(lái)確定分組寄存器組。
S302、宿主機(jī)將上述至少一個(gè)第二分組寄存器組的標(biāo)識(shí)添加到第二虛擬機(jī)更新?tīng)顟B(tài)操作指令的前端,形成第二虛擬機(jī)更新?tīng)顟B(tài)操作指令的前綴指令。
由于在設(shè)置了虛擬化狀態(tài)全局控制寄存器之后,如果沒(méi)有特殊要求,通用指令都會(huì)針對(duì)當(dāng)前虛擬化狀態(tài)全局控制寄存器對(duì)應(yīng)的分組寄存器組去執(zhí) 行。而如果這個(gè)過(guò)程中需要更新非當(dāng)前運(yùn)行的虛擬機(jī)的狀態(tài)信息,就可以通過(guò)本實(shí)施例,在針對(duì)非當(dāng)前運(yùn)行的虛擬機(jī)狀態(tài)操作指令前增加一個(gè)前綴指令。該前綴指令中包括了其后的一條指令是針對(duì)哪個(gè)虛擬機(jī)的。在執(zhí)行該前綴指令時(shí),會(huì)將該前綴指令中包括的虛擬機(jī)對(duì)應(yīng)的分組寄存器組標(biāo)識(shí)保存在虛擬化狀態(tài)臨時(shí)控制寄存器,使得其后的一條指令在執(zhí)行時(shí)直接根據(jù)虛擬化狀態(tài)臨時(shí)控制寄存器中所保存的分組寄存器組去執(zhí)行。
S303、宿主機(jī)通過(guò)執(zhí)行上述前綴指令將上述前綴指令對(duì)應(yīng)的至少一個(gè)第二分組寄存器組的標(biāo)識(shí)保存在虛擬化狀態(tài)臨時(shí)控制寄存器中。
另一實(shí)施例中,在上述步驟S303之后,該方法還包括:
宿主機(jī)根據(jù)虛擬化狀態(tài)臨時(shí)控制寄存器中保存的第二分組寄存器組的標(biāo)識(shí),對(duì)相應(yīng)的至少一個(gè)第二分組寄存器組分別執(zhí)行第二虛擬機(jī)更新?tīng)顟B(tài)操作指令,以更新至少一個(gè)第二分組寄存器組中的處理器狀態(tài)信息。
具體地,圖6為本發(fā)明實(shí)施例提供的虛擬化狀態(tài)臨時(shí)控制寄存器設(shè)置方法示意圖,圖7為本發(fā)明實(shí)施例提供的根據(jù)虛擬化狀態(tài)臨時(shí)控制寄存器執(zhí)行指令示意圖,如圖6和圖7所示,在形成前綴指令之后,執(zhí)行前綴指令時(shí),宿主機(jī)根據(jù)前綴指令中的分組寄存器組的標(biāo)識(shí)來(lái)設(shè)置虛擬化狀態(tài)臨時(shí)控制寄存器。其中,分組寄存器組的標(biāo)識(shí)優(yōu)選的可以使用編號(hào)來(lái)表示。當(dāng)執(zhí)行到前綴之后的一條指令時(shí),該條指令就清楚應(yīng)該針對(duì)哪個(gè)分組寄存器組去執(zhí)行了,即該條指令會(huì)根據(jù)虛擬化狀態(tài)臨時(shí)控制寄存器對(duì)應(yīng)的分組寄存器組及其對(duì)應(yīng)的寄存器去執(zhí)行。
本實(shí)施例中,針對(duì)不是發(fā)往正在運(yùn)行的虛擬機(jī)的指令,宿主機(jī)上提供了虛擬化狀態(tài)臨時(shí)控制寄存器,并在指令前加上設(shè)置需要發(fā)往的虛擬機(jī)的標(biāo)識(shí)的前綴指令,從而能夠保證指令被發(fā)往正確的分組寄存器組。
另一實(shí)施例中,在上述方法之后,該方法還包括:宿主機(jī)將虛擬化狀態(tài)臨時(shí)控制寄存器中的值清零。
參考圖7,虛擬化狀態(tài)臨時(shí)控制寄存器僅針對(duì)正在執(zhí)行的其中一條指令,來(lái)存儲(chǔ)其針對(duì)的虛擬機(jī)標(biāo)識(shí),當(dāng)該指令執(zhí)行完成后,將虛擬化狀態(tài)臨時(shí)控制寄存器中的值清零,以便下一條指令可以繼續(xù)使用虛擬化狀態(tài)臨時(shí)控制寄存器來(lái)存儲(chǔ)其所對(duì)應(yīng)的虛擬機(jī)標(biāo)識(shí)。
圖8為本發(fā)明實(shí)施例提供的狀態(tài)信息控制裝置實(shí)施例一的結(jié)構(gòu)示意圖, 如圖8所示,狀態(tài)信息控制裝置1集成于虛擬平臺(tái)的宿主機(jī)中。狀態(tài)信息控制裝置1包括:處理單元11、虛擬化狀態(tài)全局控制寄存器12和多個(gè)分組寄存器組13,每個(gè)分組寄存器組13包括至少一個(gè)分組寄存器131。其中,多個(gè)分組寄存器組13與虛擬平臺(tái)的多個(gè)虛擬機(jī)一一對(duì)應(yīng)。
優(yōu)選地,狀態(tài)信息控制裝置1可以為宿主機(jī)中的中央處理器(Central Processing Unit,簡(jiǎn)稱CPU)。
虛擬化狀態(tài)全局控制寄存器12,用于存儲(chǔ)宿主機(jī)當(dāng)前所運(yùn)行的虛擬機(jī)的所對(duì)應(yīng)的分組寄存器組的標(biāo)識(shí);每個(gè)分組寄存器組13,用于存儲(chǔ)對(duì)應(yīng)虛擬機(jī)的處理器狀態(tài)信息。
處理單元11,用于在第一虛擬機(jī)的處理器狀態(tài)信息更新時(shí),創(chuàng)建第一虛擬機(jī)更新?tīng)顟B(tài)操作指令;讀取虛擬化狀態(tài)全局控制寄存器中保存的第一虛擬機(jī)對(duì)應(yīng)的第一分組寄存器組的標(biāo)識(shí);根據(jù)第一分組寄存器組的標(biāo)識(shí),對(duì)第一分組寄存器組執(zhí)行第一虛擬機(jī)更新?tīng)顟B(tài)操作指令以更新所述第一分組寄存器組中的處理器狀態(tài)信息。
另一實(shí)施例中,處理單元11還用于:獲取多個(gè)虛擬機(jī)的數(shù)量N,以及N個(gè)虛擬機(jī)的標(biāo)識(shí);創(chuàng)建N組分組寄存器組,并建立虛擬機(jī)的標(biāo)識(shí)與分組寄存器組之間一一對(duì)應(yīng)的映射關(guān)系。
圖9為本發(fā)明實(shí)施例提供的狀態(tài)信息控制裝置實(shí)施例二的結(jié)構(gòu)示意圖,如圖9所示,在圖8的基礎(chǔ)上,狀態(tài)信息控制裝置1還包括:虛擬化狀態(tài)臨時(shí)控制寄存器14,虛擬化狀態(tài)臨時(shí)控制寄存器14用于存儲(chǔ)宿主機(jī)當(dāng)前未運(yùn)行的虛擬機(jī)的虛擬機(jī)標(biāo)識(shí),相應(yīng)地,處理單元11還用于:創(chuàng)建第二虛擬機(jī)更新?tīng)顟B(tài)操作指令,并根據(jù)所述第二虛擬機(jī)更新?tīng)顟B(tài)操作指令的屬性確定所述第二虛擬機(jī)更新?tīng)顟B(tài)操作指令對(duì)應(yīng)的至少一個(gè)目標(biāo)虛擬機(jī),獲取所述至少一個(gè)目標(biāo)虛擬機(jī)對(duì)應(yīng)的至少一個(gè)第二分組寄存器組的標(biāo)識(shí),其中,所述目標(biāo)虛擬機(jī)為非當(dāng)前運(yùn)行的虛擬機(jī);將所述至少一個(gè)第二分組寄存器組的標(biāo)識(shí)添加到所述第二虛擬機(jī)更新?tīng)顟B(tài)操作指令的前端,形成所述第二虛擬機(jī)更新?tīng)顟B(tài)操作指令的前綴指令;所述宿主機(jī)通過(guò)執(zhí)行所述前綴指令將所述前綴指令對(duì)應(yīng)的至少一個(gè)第二分組寄存器組的標(biāo)識(shí)保存在所述虛擬化狀態(tài)臨時(shí)控制寄存器中。
另一實(shí)施例中,處理單元11還用于在將所述至少一個(gè)第二分組寄存器組 的標(biāo)識(shí)保存在所述虛擬化狀態(tài)臨時(shí)控制寄存器中之后,根據(jù)所述虛擬化狀態(tài)臨時(shí)控制寄存器中保存的所述第二分組寄存器組的標(biāo)識(shí),對(duì)相應(yīng)的所述至少一個(gè)第二分組寄存器組分別執(zhí)行所述第二虛擬機(jī)更新?tīng)顟B(tài)操作指令,以更新所述至少一個(gè)第二分組寄存器組中的處理器狀態(tài)信息。
另一實(shí)施例中,處理單元11還用于:將虛擬化狀態(tài)臨時(shí)控制寄存器中的值清零。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:ROM、RAM、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。