運行虛擬機的控制方法和裝置製造方法
2023-05-21 04:08:51 4
運行虛擬機的控制方法和裝置製造方法
【專利摘要】本發明實施例提供一種運行虛擬機的控制方法和裝置,該方法包括:在第一虛擬機的本次運行過程中,當所述第一虛擬機需訪問控制寄存器中的第一寄存器時,讀取宿主機的狀態位,獲得宿主機的狀態值;當根據所述宿主機的狀態值確定所述宿主機處於宿主機非核心態時,則讀取所述第一虛擬機的狀態位,獲得所述第一虛擬機的狀態值;當根據所述虛擬機的狀態值確定所述第一虛擬機處於虛擬機核心態時,則控制所述第一虛擬機訪問所述第一寄存器;通過該運行虛擬機的控制方法和裝置,優化了虛擬機訪問控制寄存器的過程,減小了虛擬機訪問控制寄存器引起的關閉重啟次數,降低了宿主機的性能開銷。
【專利說明】運行虛擬機的控制方法和裝置
【技術領域】
[0001]本發明實施例涉及計算機【技術領域】,尤其涉及一種運行虛擬機的控制方法和裝置。
【背景技術】
[0002]隨著雲計算的流行,系統虛擬化得到了越來越快的發展,越來越多的架構推出了虛擬化的解決方案,例如MIPS架構通常採用半虛擬化硬體規範或全虛擬化硬體規範。其中,全虛擬化硬體規範中,基於已有的精簡指令集架構(Micropr-ocessor withoutinterlocked piped stages,簡稱MIPS),增加了額外的操作模式及相關寄存器,並且增加了雙地址翻譯及相關寄存器;而半虛擬化硬體規範中,相比與全虛擬硬體規範,只增加了額外的操作模式及相關寄存器。
[0003]具體的,虛擬機在宿主機(也稱物理機)上運行時,需要虛擬機的虛擬地址與宿主機的物理地址之間的翻譯做以運行支持,從而在全虛擬化的硬體規範中,通過使用TLB (Translat1n Lookaside Buffer,翻譯為轉換旁視緩衝器)來實現虛擬機的虛擬地址與宿主機的物理地址之間的翻譯,因此全虛擬化的硬體規範中,基於已有的MIPS架構下的TLB的基礎上,設置了額外的TLB,以供虛擬機使用,相應的,也設置了額外的用於控制該額外的TLB的寄存器。但半虛擬化硬體規範是為了減少MIPS架構下全虛擬化硬體規範實現的複雜度而提出的一種折中方案,相比於全虛擬化方案,不具有額外的TLB,因此也不具有專門供虛擬機使用的用於控制上述額外TLB的寄存器。因此當虛擬機基於已有的MIPS架構,通過訪問控制TLB寄存器以使用TLB時,該虛擬機則被迫關閉,需要通過宿主機上的VMM (Virtual Machine Monitor,虛擬機管理器)訪問控制TLB寄存器,從而通過TLB以實現虛擬機的虛擬地址與宿主機的物理地址之間的翻譯,隨後上述被迫關閉的虛擬機再次啟動繼續運行。
[0004]可以理解的,虛擬機的運行會多次需要進行虛擬機的虛擬地址與宿主機的物理地址之間的翻譯,由此導致多次使用控制TLB寄存器以訪問TLB的事件,因此在現有技術中,虛擬機需要多次被迫關閉,隨後再重啟,而虛擬機的多次關閉重啟,增大了宿主機的性能開銷。
【發明內容】
[0005]本發明實施例提供一種運行虛擬機的控制方法和裝置,用於優化虛擬機訪問控制寄存器的過程,減小虛擬機訪問控制寄存器引起的關閉重啟次數,降低性能開銷。
[0006]第一方面,本發明實施例提供一種運行虛擬機的控制方法,包括:
[0007]在第一虛擬機的本次運行過程中,當所述第一虛擬機需訪問控制寄存器中的第一寄存器時,讀取宿主機的狀態位,獲得宿主機的狀態值;
[0008]當根據所述宿主機的狀態值確定所述宿主機處於宿主機非核心態時,則讀取所述第一虛擬機的狀態位,獲得所述第一虛擬機的狀態值;
[0009]當根據所述虛擬機的狀態值確定所述第一虛擬機處於虛擬機核心態時,則控制所述第一虛擬機訪問所述第一寄存器。
[0010]結合第一方面,在第一實施方式中,所述根據所述宿主機的狀態值確定所述宿主機處於宿主機非核心態,包括:
[0011]判斷所述宿主機的狀態值是否標識為非核心狀態,當所述宿主機的狀態值標識為非核心狀態,確定所述宿主機處於宿主機非核心狀態;
[0012]所述,根據所述虛擬機的狀態值確定所述第一虛擬機處於虛擬機核心態,包括:
[0013]判斷所述虛擬機的狀態值是否標識為核心狀態,當所述虛擬機的狀態值標識為核心狀態,確定所述宿主機處於宿主機非核心狀態。
[0014]結合第一方面第一實施方式,在第二實施方式中,所述控制方法應用於處理器,且所述處理器中新增有判斷邏輯,所述判斷邏輯,在執行訪問控制寄存器指令時觸發,用於判斷所述宿主機的狀態值是否標識為非核心狀態,還用於判斷所述虛擬機的狀態值是否標識為核心狀態。
[0015]結合第一方面至第一方面第二實施方式中的任一種實施方式,在第三實施方式中,當所述第一虛擬機本次運行過程開始之前,所述控制方法還包括:
[0016]將所述第一虛擬機對應的暫存空間所存儲的前次現場數據恢復至所述控制寄存器,以使所述第一虛擬機開始本次運行過程;
[0017]所述現場數據用於在虛擬機第一次運行結束之後保證該虛擬機正確進行第二次運行。
[0018]結合第一方面第三實施方式,在第四實施方式中,當所述第一虛擬機本次運行過程結束時,所述控制方法還包括:
[0019]將所述第一虛擬機的本次現場數據存儲至所述第一虛擬機對應的暫存空間。
[0020]結合第一方面第四實施方式中的任一種實施方式,在第四實施方式中,所述第一寄存器為用於控制轉換旁視緩衝器TLB的寄存器。
[0021]第二方面,本發明實施例提供一種運行虛擬機的控制裝置,包括:
[0022]獲取模塊,用於在第一虛擬機的本次運行過程中,當所述第一虛擬機需訪問控制寄存器中的第一寄存器時,讀取宿主機的狀態位,獲得宿主機的狀態值;
[0023]確定模塊,用於根據所述獲取模塊獲得的所述宿主機的狀態值確定所述宿主機處於宿主機非核心態,
[0024]則所述確定模塊觸發所述獲取模塊讀取所述第一虛擬機的狀態位,獲得所述第一虛擬機的狀態值;
[0025]當所述確定模塊根據所述獲取模塊獲得的所述虛擬機的狀態值確定所述第一虛擬機處於虛擬機核心態時,
[0026]則所述確定模塊觸發控制模塊,所述控制模塊用於控制所述第一虛擬機訪問所述第一寄存器。
[0027]結合第二方面,在第一實施方式中,所述確定模塊,包括:
[0028]第一判斷單元,用於判斷所述獲取模塊獲得的宿主機的狀態值是否標識為非核心狀態,當所述宿主機的狀態值標識為非核心狀態,確定所述宿主機處於宿主機非核心狀態;
[0029]第二判斷單元,用於判斷所述獲取單元獲取的虛擬機的狀態值是否標識為核心狀態,當所述虛擬機的狀態值標識為核心狀態,確定所述宿主機處於宿主機非核心狀態。
[0030]結合第二方面第一或第二實施方式,在第三實施方式中,所述控制裝置還包括:
[0031]存儲模塊,用於將所述第一虛擬機對應的暫存空間所存儲的前次現場數據恢復至所述控制寄存器,以使所述第一虛擬機開始本次運行過程;
[0032]所述現場數據用於在虛擬機第一次運行結束之後保證該虛擬機正確進行第二次運行。
[0033]結合第二方面第三實施方式,在第四實施方式中,所述存儲模塊還用於
[0034]將所述第一虛擬機的本次現場數據存儲至所述第一虛擬機對應的暫存空間。
[0035]結合第二方面第四實施方式,在第五實施方式中,所述第一寄存器為用於控制轉換旁視緩衝器TLB的寄存器。
[0036]在本發明實施例提供的運行虛擬機的控制方法和裝置,當第一虛擬機訪問控制寄存器中的第一寄存器時,即使宿主機處於非核心態,但根據第一虛擬機的狀態位獲知第一虛擬機處於核心態,便可控制該第一虛擬機訪問第一寄存器,不需要使第一虛擬機重啟,便可完成對第一寄存器的訪問,從而減小了宿主機上虛擬機發生重啟的次數,進而可減小宿主機用於重啟虛擬機的開銷。
【專利附圖】
【附圖說明】
[0037]圖1為本發明運行虛擬機的控制方法實施例一的流程圖;
[0038]圖2為本發明運行虛擬機的控制方法實施例二的流程圖;
[0039]圖3為本發明運行虛擬機的控制裝置實施例一的結構圖;
[0040]圖4為本發明運行虛擬機的控制裝置實施例二的結構圖。
【具體實施方式】
[0041]圖1為本發明運行虛擬機的控制方法實施例一的流程圖。如圖1所示,本實施例的執行主體為運行虛擬機的控制裝置,該控制裝置可以採用軟體和/或硬體的方式實現,優選的,該控制裝置可以設置在承載虛擬機的宿主機(也稱宿主機)上,具體的,該控制方法包括:
[0042]S101、在第一虛擬機的本次運行過程中,當第一虛擬機需訪問控制寄存器中的第一寄存器時,讀取宿主機的狀態位,獲得宿主機的狀態值。
[0043]上述第一虛擬機為宿主機當前運行的虛擬機,可以理解的,虛擬機的運行需要宿主機作為承載的載體,因此可以將虛擬機看作宿主機上的一種進程,則虛擬機作為進程是按照進程內的指令在宿主機上運行,當某一條指令指示該虛擬機訪問控制寄存器時,運行虛擬機的控制裝置可以訪問宿主機的狀態寄存器,以讀取宿主機的狀態位,從而獲得宿主機的狀態值。
[0044]S102、當根據宿主機的狀態值確定宿主機處於宿主機非核心態時,讀取第一虛擬機的狀態位,獲得第一虛擬機的狀態值。
[0045]基於已有的MIPS架構,宿主機上的虛擬機訪問控制寄存器的行為是不能在宿主機非核心態下發生的,若發生虛擬機在宿主機非核心態下訪問控制寄存器的特殊情況時,則由宿主機處理這種特殊情況,並且虛擬機進行重啟;在本實施例中,為了實現第一虛擬機不發生重啟便可訪問控制寄存器,因此,本實施例中運行虛擬機的控制裝置進一步獲取第一虛擬機的狀態值;具體的,上述控制裝置繼續訪問狀態寄存器,讀取第一虛擬機的狀態位,以獲得第一虛擬機的狀態值;其中控制裝置在本步驟所訪問的狀態寄存器與SlOl中訪問的狀態寄存器可以為同一個,但根據宿主機的系統架構的不同,如虛擬機的狀態位由另一個狀態寄存器保存時,則本步驟中控制裝置所訪問的狀態寄存器與SlOl中的狀態寄存器可以不一樣。
[0046]S103、當根據虛擬機的狀態值確定第一虛擬機處於虛擬機核心態時,則控制第一虛擬機訪問第一寄存器。
[0047]可以理解的,宿主機上運行的一個虛擬機相當於在宿主機上的虛擬了一個完整的計算機系統,則獨立的以該虛擬的計算機系統的角度來看,該虛擬的計算機系統也是具有核心態和非核心態的區分;基於已有的MIPS架構,上述第一寄存器屬於特權資源,僅能在虛擬機的核心態下被訪問,因此運行虛擬機的控制裝置只能允許第一虛擬機在虛擬機核心態下才可訪問第一寄存器。
[0048]具體的,在實際應用中,上述控制寄存器中的第一寄存器可以為用於控制轉換旁視緩衝器TLB的寄存器,而第一虛擬機訪問第一寄存器時,根據實際應用的不同,可能會更改第一寄存器中所存儲的數據,或者查詢第一寄存器中的數據。
[0049]舉例來說,第一虛擬機需要使用TLB實現虛擬機的虛擬地址與宿主機的物理地址之間的翻譯時,只要根據S103確定第一虛擬機處於虛擬機核心態下,運行虛擬機的控制裝置可以控制第一虛擬機直接訪問控制TLB寄存器,從而完成對TLB的操作,例如增加或修改地址翻譯的內容。
[0050]在本實施例中,當第一虛擬機訪問控制寄存器中的第一寄存器時,即使宿主機處於非核心態,但運行虛擬機的控制裝置根據第一虛擬機的狀態位獲知第一虛擬機處於核心態,便可控制該第一虛擬機訪問第一寄存器,不需要使第一虛擬機重啟,便可完成對第一寄存器的訪問,從而減小了宿主機上虛擬機發生重啟的次數,進而可減小宿主機用於重啟虛擬機的開銷。
[0051]圖2為本發明運行虛擬機的控制方法實施例二的流程圖。如圖2所示,本實施例是在圖1所示的實施例的基礎上,做出進一步的描述,具體的,本實施例的執行主體仍然為運行虛擬機的控制裝置,該運行虛擬機的控制裝置集成在本實施例運行虛擬機的控制方法所應用的處理器中,所述處理器與現有技術相比,新增由判斷邏輯,該判斷邏輯在運行虛擬機的控制裝置執行訪問控制寄存器指令時觸發,具體如下:
[0052]S201、將第一虛擬機對應的暫存空間所存儲的前次現場數據恢復至控制寄存器,以使第一虛擬機開始本次運行過程。
[0053]可選的,本實施例中的虛擬機可以為KVM(Kernel-based Virtual Machine,基於內核的虛擬機),其中現場數據用於在虛擬機第一次運行結束之後保證該虛擬機正確進行第二次運行。
[0054]如前述實施例中所述,虛擬機在每一次的運行過程中,由於運行虛擬機的控制裝置控制第一虛擬機訪問了控制寄存器,而虛擬機對控制寄存器的訪問會更改控制寄存器中的數據,即虛擬機在一次運行過程中,使控制寄存器中的數據發生更新,當虛擬機完成本次運行過程後,宿主機繼續運行其他任務,若前述更新後的數據仍然存儲在控制寄存器中,則會影響宿主機的正常運行,且宿主機此時的運行也會訪問控制寄存器,則會將控制寄存器中虛擬機更新的數據覆蓋或修改,則上述虛擬機再次運行時,無法正常運行,因此,通常在虛擬機結束一次運行過程的同時,將控制寄存器中所存儲的、對應於該虛擬機本次運行過程的更新後的數據,作為本次的現場數據(context)保存至該虛擬機對應的暫存空間中,以便虛擬機在下次運行時進行現場恢復。常見的index寄存器、EntryHi寄存器等,虛擬機在一次運行過程中會訪問這些寄存器,並使這些寄存器中的數據發生更新,舉例來說,在虛擬機A的第一次運行過程中,虛擬機A訪問控制寄存器,並將用於表示翻譯地址的變量i的賦值由0001更改為0101,若虛擬機I在進行第二次運行之前,若針對虛擬機A沒有進行現場數據恢復,則虛擬機A在控制寄存器中無法獲得正確信息「i = 0101」,從而虛擬機A無法確定正確的地址,則虛擬機A的運行會發生錯誤,不可正常運行,因此需要執行S201,針對第一虛擬機進行現場數據的恢復;上述「第一次」和「第二次」為相對概念,即在tl時刻運行了虛擬機A,在t2時刻再次運行虛擬機A,則對於t2時刻來說,tl時刻運行的虛擬機過程為第一次運行,而t2時刻則為第二次運行;可以理解的,當t3時刻再次運行虛擬機A時,對於t3時刻來說,t2時刻則為第一次運行,t3時刻為第二次運行;
[0055]具體的,當第一虛擬機在前次運行結束時,便將針對第一虛擬機的前次現場數據存儲至該第一虛擬機對應的暫存空間,則在第一虛擬機開始本次運行過程之前,將第一虛擬機對應的暫存空間所存儲的前次現場數據恢復至控制寄存器,以使第一虛擬機開始本次運行過程;其中暫存空間是宿主機上針對該宿主機所承載的各個虛擬機對應設置的各個存儲空間,該各個暫存空間用於存儲對應的各個虛擬機的現場數據。
[0056]當然可以理解的,若該第一虛擬機是首次在宿主機上運行則上述暫存空間存儲的是運行虛擬機的初始化數據,可以將該初始化數據看做第一虛擬機進行本次運行所需的現場數據。
[0057]S202、在第一虛擬機的本次運行過程中,當所述第一虛擬機需訪問控制寄存器中的第一寄存器時觸發判斷邏輯;
[0058]S203、判斷邏輯讀取宿主機的狀態位,獲得宿主機的狀態值。
[0059]S204判斷邏輯判斷所述宿主機的狀態值是否標識為非核心狀態;若是,執行S205 ;若否,則停止。
[0060]當所述宿主機的狀態值標識為非核心狀態,判斷邏輯確定所述宿主機處於宿主機非核心狀態。
[0061]基於現有的MIPS架構,虛擬機不能在宿主機的核心態下運行,因此當通過S204判斷為宿主機核心態,則說明當前宿主機運行的程序是非虛擬機,則本實施例不再實施,即運行虛擬機的控制裝置停止工作。
[0062]S205、判斷邏輯讀取第一虛擬機的狀態位,獲得第一虛擬機的狀態值。
[0063]S206、判斷邏輯判斷第一虛擬機的狀態值是否標識為核心狀態;若是,執行S207 ;若否,則執行S208。
[0064]S207、基於判斷邏輯判斷第一虛擬機處於虛擬機核心態,控制第一虛擬機訪問第一寄存器。
[0065]具體參照S103,且在執行完本步驟後繼續運行該第一虛擬機,可以理解的,在隨後的運行過程中,當第一虛擬機根據指令需要再次訪問控制寄存器時,則返回S202,直至該第一虛擬機的本次運行過程結束,則執行S208。
[0066]S208、將第一虛擬機的本次現場數據存儲至所述第一虛擬機對應的暫存空間。
[0067]上述本次現場數據存儲至第一虛擬機對應的暫存空間後,若第一虛擬機需要再一次運行時,則運行虛擬機的控制裝置將上述本次現場數據則作為前次現場數據,再次由前述S201開始控制第一虛擬機的下一次運行過程。
[0068]上述S208的發生情況分為兩種,一種是第一虛擬機正常運行結束,則執行S208之後則停止,一種是第一虛擬機需要訪問第一寄存器,但根據S206的判斷,不能控制第一虛擬機直接訪問第一寄存器,則需關閉第一虛擬機,在關閉之前,需要執行S208,隨後執行S209。
[0069]S209、控制第一虛擬機關閉,並控制VMM代替第一虛擬機訪問第一寄存器。
[0070]基於已有的MIPS架構,宿主機上承載的虛擬機系統可以簡單的分為宿主機承載的虛擬機和虛擬機管理器。虛擬機在宿主機上運行時,可進行普通的操作,例如用戶程序;但虛擬機的運行過程中會出現特殊情況,如某些特權指令(例如上述訪問第一寄存器),執行某些有害指令等;當發生這些特殊情況時,運行虛擬機的控制裝置關閉當前正在運行的虛擬機,並開啟虛擬機管理器,由虛擬機管理器在宿主機的核心態下處理該特殊情況,待虛擬機管理器處理完成後,再次運行該虛擬機,具體可參照現有技術,在此不再贅述;
[0071]可以理解的,將第一虛擬機(虛擬機A)關閉,VMM代替第一虛擬機訪問第一寄存器之後,虛擬機A還需繼續運行,則將虛擬機A作為第一虛擬機,由S201處重新開始執行。
[0072]在本實施例中,當第一虛擬機訪問控制寄存器中的第一寄存器時,即使宿主機處於非核心態,但運行虛擬機的控制裝置根據第一虛擬機的狀態位獲知第一虛擬機處於核心態,便可控制該第一虛擬機訪問第一寄存器,不需要使第一虛擬機重啟,便可完成對第一寄存器的訪問,從而減小了宿主機上虛擬機發生重啟的次數,進而可減小宿主機用於重啟虛擬機的開銷。
[0073]圖3為本發明一種運行虛擬機的控制裝置實施例一的結構圖。如圖3所示,該控制裝置包括:
[0074]獲取模塊31,用於在第一虛擬機的本次運行過程中,當所述第一虛擬機需訪問控制寄存器中的第一寄存器時,讀取宿主機的狀態位,獲得宿主機的狀態值;
[0075]確定模塊32,用於根據所述獲取模塊31獲得的所述宿主機的狀態值確定所述宿主機處於宿主機非核心態,
[0076]則所述確定模塊32觸發所述獲取模塊31讀取所述第一虛擬機的狀態位,獲得所述第一虛擬機的狀態值;
[0077]當所述確定模塊32根據所述獲取模塊31獲得的所述虛擬機的狀態值確定所述第一虛擬機處於虛擬機核心態時,
[0078]則所述確定模塊32觸發控制模塊33,所述控制模塊33用於控制所述第一虛擬機訪問所述第一寄存器。
[0079]在本實施例中,當第一虛擬機訪問控制寄存器中的第一寄存器時,即使宿主機處於非核心態,但運行虛擬機的控制裝置根據第一虛擬機的狀態位獲知第一虛擬機處於核心態,便可控制該第一虛擬機訪問第一寄存器,不需要使第一虛擬機重啟,便可完成對第一寄存器的訪問,從而減小了宿主機上虛擬機發生重啟的次數,進而可減小宿主機用於重啟虛擬機的開銷。
[0080]圖4為本發明運行虛擬機的控制裝置實施例二的結構圖。如圖4所示,本實施例是在圖3所示的實施例的基礎上做出進一步描述,上述確定模塊32包括第一判斷單元321,用於判斷所述獲取模塊獲得的宿主機的狀態值是否標識為非核心狀態,當所述宿主機的狀態值標識為非核心狀態,確定所述宿主機處於宿主機非核心狀態;第二判斷單元322,用於判斷所述獲取單元獲取的虛擬機的狀態值是否標識為核心狀態,當所述虛擬機的狀態值標識為核心狀態,確定所述宿主機處於宿主機非核心狀態。
[0081]進一步的,所述控制裝置還包括存儲模塊34,用於將所述第一虛擬機對應的暫存空間所存儲的前次現場數據恢復至所述控制寄存器,以使所述第一虛擬機開始本次運行過程;
[0082]所述現場數據用於在虛擬機第一次運行結束之後保證該虛擬機正確進行第二次運行。
[0083]進一步的,所述存儲模塊34還用於
[0084]將所述第一虛擬機的本次現場數據存儲至所述第一虛擬機對應的暫存空間。
[0085]進一步的,所述第一寄存器為用於控制轉換旁視緩衝器TLB的寄存器。
[0086]本實施例中的第一判斷單元321和第二判斷單元322在實際應用中,具體可以為前述判斷邏輯,該判斷邏輯可以為軟體和/或硬體,例如該判斷邏輯包括處理器中新增的邏輯判斷電路,或者是應用在處理器上的邏輯判斷程序,或者是邏輯判斷電路和控制邏輯判斷電路的程序。
[0087]在本實施例中,當第一虛擬機訪問控制寄存器中的第一寄存器時,即使宿主機處於非核心態,但運行虛擬機的控制裝置根據第一虛擬機的狀態位獲知第一虛擬機處於核心態,便可控制該第一虛擬機訪問第一寄存器,不需要使第一虛擬機重啟,便可完成對第一寄存器的訪問,從而減小了宿主機上虛擬機發生重啟的次數,進而可減小宿主機用於重啟虛擬機的開銷。
[0088]需要補充說明的是,上述各個裝置實施例中的各個模塊對應執行上述各個方法實施例中的各個步驟,具體的執行過程和技術效果可參考上述各個方法實施例,在此不再贅述。
[0089]本領域普通技術人員可以理解:實現上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬體來完成。前述的程序可以存儲於一計算機可讀取存儲介質中。該程序在執行時,執行包括上述各方法實施例的步驟;而前述的存儲介質包括:R0M、RAM、磁碟或者光碟等各種可以存儲程序代碼的介質。
[0090]最後應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對其限制;儘管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本發明各實施例技術方案的範圍。
【權利要求】
1.一種運行虛擬機的控制方法,其特徵在於,包括: 在第一虛擬機的本次運行過程中,當所述第一虛擬機需訪問控制寄存器中的第一寄存器時,讀取宿主機的狀態位,獲得宿主機的狀態值; 當根據所述宿主機的狀態值確定所述宿主機處於宿主機非核心態時,則讀取所述第一虛擬機的狀態位,獲得所述第一虛擬機的狀態值; 當根據所述虛擬機的狀態值確定所述第一虛擬機處於虛擬機核心態時,則控制所述第一虛擬機訪問所述第一寄存器。
2.根據權利要求1所述的控制方法,其特徵在於, 所述根據所述宿主機的狀態值確定所述宿主機處於宿主機非核心態,包括: 判斷所述宿主機的狀態值是否標識為非核心狀態,當所述宿主機的狀態值標識為非核心狀態,確定所述宿主機處於宿主機非核心狀態; 所述,根據所述虛擬機的狀態值確定所述第一虛擬機處於虛擬機核心態,包括: 判斷所述虛擬機的狀態值是否標識為核心狀態,當所述虛擬機的狀態值標識為核心狀態,確定所述宿主機處於宿主機非核心狀態。
3.根據權利要求2所述的控制方法,其特徵在於,所述控制方法應用於處理器,且所述處理器中新增有判斷邏輯,所述判斷邏輯,在執行訪問控制寄存器指令時觸發,用於判斷所述宿主機的狀態值是否 標識為非核心狀態,還用於判斷所述虛擬機的狀態值是否標識為核心狀態。
4.根據權利要求1-3任一項所述的控制方法,其特徵在於,當所述第一虛擬機本次運行過程開始之前,所述控制方法還包括: 將所述第一虛擬機對應的暫存空間所存儲的前次現場數據恢復至所述控制寄存器,以使所述第一虛擬機開始本次運行過程; 所述現場數據用於在虛擬機第一次運行結束之後保證該虛擬機正確進行第二次運行。
5.根據權利要求4所述的控制方法,其特徵在於,當所述第一虛擬機本次運行過程結束時,所述控制方法還包括: 將所述第一虛擬機的本次現場數據存儲至所述第一虛擬機對應的暫存空間。
6.根據權利要求5所述的控制方法,其特徵在於,所述第一寄存器為用於控制轉換旁視緩衝器TLB的寄存器。
7.一種運行虛擬機的控制裝置,其特徵在於,包括: 獲取模塊,用於在第一虛擬機的本次運行過程中,當所述第一虛擬機需訪問控制寄存器中的第一寄存器時,讀取宿主機的狀態位,獲得宿主機的狀態值; 確定模塊,用於根據所述獲取模塊獲得的所述宿主機的狀態值確定所述宿主機處於宿主機非核心態, 則所述確定模塊觸發所述獲取模塊讀取所述第一虛擬機的狀態位,獲得所述第一虛擬機的狀態值; 當所述確定模塊根據所述獲取模塊獲得的所述虛擬機的狀態值確定所述第一虛擬機處於虛擬機核心態時, 則所述確定模塊觸發控制模塊,所述控制模塊用於控制所述第一虛擬機訪問所述第一寄存器。
8.根據權利要求7所述的控制裝置,其特徵在於,所述確定模塊,包括: 第一判斷單元,用於判斷所述獲取模塊獲得的宿主機的狀態值是否標識為非核心狀態,當所述宿主機的狀態值標識為非核心狀態,確定所述宿主機處於宿主機非核心狀態;第二判斷單元,用於判斷所述獲取單元獲取的虛擬機的狀態值是否標識為核心狀態,當所述虛擬機的狀態值標識為核心狀態,確定所述宿主機處於宿主機非核心狀態。
9.根據權利要求7或8所述的控制裝置,其特徵在於,所述控制裝置還包括: 存儲模塊,用於將所述第一虛擬機對應的暫存空間所存儲的前次現場數據恢復至所述控制寄存器,以使所述第一虛擬機開始本次運行過程; 所述現場數據用於在虛擬機第一次運行結束之後保證該虛擬機正確進行第二次運行。
10.根據權利要求9所述的控制裝置,其特徵在於,所述存儲模塊還用於 將所述第一虛擬機的本次現場數據存儲至所述第一虛擬機對應的暫存空間。
11.根據權利要求10所述的控制裝置,其特徵在於,所述第一寄存器為用於控制轉換旁視緩衝 器TLB的寄存器。
【文檔編號】G06F9/455GK104050017SQ201410310784
【公開日】2014年9月17日 申請日期:2014年7月1日 優先權日:2014年7月1日
【發明者】臺運方, 蔡萬偉, 劉奇, 張戈 申請人:龍芯中科技術有限公司