TWI592875B - 支援無虛擬機器監控器介入的虛擬機器監控器組態服務之調用的指令集的方法、處理器及機器可讀媒體 - Google Patents
支援無虛擬機器監控器介入的虛擬機器監控器組態服務之調用的指令集的方法、處理器及機器可讀媒體 Download PDFInfo
- Publication number
- TWI592875B TWI592875B TW105128054A TW105128054A TWI592875B TW I592875 B TWI592875 B TW I592875B TW 105128054 A TW105128054 A TW 105128054A TW 105128054 A TW105128054 A TW 105128054A TW I592875 B TWI592875 B TW I592875B
- Authority
- TW
- Taiwan
- Prior art keywords
- processor
- virtual machine
- service
- services
- instruction
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/4555—Para-virtualisation, i.e. guest operating system has to be modified
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Description
本發明的領域通常相關於虛擬化,並具體相關於用於VM客戶軟體之CPU支援的服務。
許多現今的計算系統實作「虛擬化」。典型實作描繪於圖1中。如在圖1中觀察到的,將軟體層102夾於作業系統101軟體及CPU 103之間。此軟體層102典型地包括在虛擬機器監控器(VMM)102b之「頂部上運行」的一或多個虛擬機器(VM)102a_1-102a_N。雖然無嚴格要求,圖1顯示各者設有在專用虛擬機器102a_1-102a_N之頂部上運行的自有作業系統實例101_1-101_N之不同軟體應用程式實例100_1-100_N的共同配置。
VM呈現CPU對在其上運行之軟體的外觀;此種軟體常以「客戶」軟體為人所知。結果,至少作為第一近似,
在虛擬機器上運行的該軟體可能「認為」其具有全部電腦系統的資源。VMM 102b負責支援在下層CPU 103上的多個VM。因此,VMM 102b協調CPU 103上之多個VM的並行請求/需求。此包括將下層計算系統之實際資源(例如,CPU執行緒、系統記憶體空間、硬碟儲存空間等)關聯配置至在VM上運行之軟體所參照的「虛擬」計算系統資源。
雖然客戶軟體通常「認為」其在沒有VMM的自有電腦系統上運行,也可能將此種軟體設計成知道其在由VMM支援的VM中運行。有時將此種軟體稱為「半虛擬化」或「功能增強」的。可能將「知道」其在VMM(例如,在VM 102a_1-102a_N之一者中)上運行的軟體設計成直接調用由VMM 102b提供的特定「服務」。然而,目前,為調用VMM服務,CPU的控制必須先從產生該調用之應用程式/OS實例正在其中運行的VM傳至VMM;此控制轉移有時稱為「VM脫離」。VM脫離的一種可能結果係CPU必須將其現行內容或狀態從VM之處理的內容或狀態「切換」至VMM處理的內容或狀態。在該服務已完成後,CPU必須再度將其現行內容或狀態從VMM處理切換回VM處理;此傳回控制轉移有時稱為「VM項目」。
圖2顯示用於調用VMM服務的先前技術處理。如在圖2中觀察到的,在201,應用程式/OS實例認知必需調用VMM服務。在調用之前,在202,應用程式/OS實例
可能以識別被調用之特定服務及服務之輸入參數的值填充暫存器及/或記憶體。然後在203,調用VMM服務,應用程式/OS實例執行用於調用VMM服務的指令。例如,在具有VT-x技術之現今的Intel處理器的情形中,應用程式/OS實例執行VMCALL指令,其針對從在VM上運行之程序明顯地呼叫VMM而設計。(應用程式/OS實例可能替代地使用其他指令,諸如,導致VM脫離及VMM已針對此目的啟用的CPUID或WRMSR。)
在203,反應於受執行的VMCALL指令,將CPU的控制從VM轉移至VMM(VM脫離)。在操作中,CPU內的微碼藉由將VM的內容/狀態資訊從軟體可見CPU暫存器空間移至虛擬機器控制結構(VMCS)而實作上述內容/狀態切換,其已由VMM組態,並以來自VMCS中的它處之用於VMM程序的內容/狀態資訊重載入多數此等相同的軟體可見暫存器。
VMM程序參照由調用之應用程式/OS實例建立的記憶體或暫存器值,以暸解請求何服務及存取該服務的輸入參數。然後在204,VMM程序執行服務。此係藉由執行為實施該服務撰寫的VMM程式碼而完成。
在205,在該服務完成後,控制藉由VM項目從VMM轉移回VM。此處,CPU微碼從VMCS將VM內容/狀態載入至軟體可見暫存器空間。
VMM服務的範例係「客戶位址空間切換」服務。此服務可能對在VMM支援多位址空間之虛擬機器中運行的
客戶軟體有用,如在以下段落中解釋的。
VMM典型針對其之各VM支援「客戶位址空間」。此係從客戶「認為」係實體(客戶實體位址)的位址至可用於存取記憶體之真正實體位址的映射;該映射也可能針對各客戶實體位址指定存取權(例如,讀/寫、唯讀等)。在具有VT-x技術之現今的Intel處理器的情形中,客戶位址空間可能使用延伸頁面表(EPT)實作。
在缺少半虛擬化時,VMM將典型地對每個VM支援單一客戶位址空間。若客戶軟體係半虛擬化的,雖然每次將僅有一者係使用中的,VMM可能針對單一VM建立多個客戶位址空間。在一範例中,此等位址空間可能相關於如何保護記憶體的不同區域而彼此不同。針對在VM中運行的各應用程式模組,可能有不同的客戶位址空間;用於模組的客戶位址空間可能容許模組存取自有的記憶體,但不能存取屬於其他模組的記憶體。
針對由多客戶位址空間支援的VM,在適當時間,VMM將需要改變何客戶位址空間係現行的。有效的機制係當改變客戶位址空間時(例如,當客戶OS從一應用程式模組改變至另一者時),針對客戶軟體通知VMM。客戶軟體可能經由「客戶位址空間切換」服務通知VMM。
如稍早提及的,可執行VMCALL或其他指令以針對客戶位址空間切換服務呼叫VMM。在該指令執行前,客戶軟體可能將值置入暫存器(例如,EAX暫存器)或記憶體中,以識別「客戶位址空間切換」服務。待切換至之位
址空間的識別符可能指定在另外的暫存器(例如,EBX暫存器)或記憶體中。該指令導致VM脫離,且該服務如上文描述地藉由VMM實施。
一種由處理器實施的方法,包含:執行指令以改變在虛擬機器上運行之客戶軟體的位址空間,該執行包括:不脫離該虛擬機器的程序,該處理器的指令執行邏輯電路在私有暫存器空間中以指向第二頁面表階層的第二指標取代指向第一頁面表階層的第一指標,該第一頁面表階層針對在記憶體的第一區域外操作之該客戶軟體的第一部分實施位址轉換,該第二頁面表階層針對在記憶體的第二區域外操作之該客戶軟體的第二部分實施位址轉換。
一種半導體晶片,包含:具有耦合至暫存器空間之指令執行邏輯的處理器,反應於指令,該指令執行邏輯在該暫存器空間中以指向第二頁面表階層的第二指標取代指向第一頁面表階層的第一指標,該第一頁面表階層針對在記憶體的第一區域外操作之該VM客戶軟體的第一部分實施位址轉換,該第二頁面表階層針對在記憶體的第二區域外操作之該客戶軟體的第二部分實施位址轉換。
一種機器可讀媒體,包含當由電腦系統之處理器處理時,導致方法被實施的儲存程式碼,該方法包含:
在該處理器上執行虛擬機器監控器的第一程式碼;在該處理器上執行由該虛擬機器監控器供應之虛擬機器的第二程式碼;在該處理器上執行由該虛擬機器供應之客戶軟體的第三程式碼,執行未由程式碼提供之服務的指令;在該處理器上執行請求未由該第一程式碼或該程式碼提供之服務的指令,在該虛擬機器的程序內在該處理器的硬體中實施該服務,該服務改變記憶體組態或組態對虛擬中斷之回應的行為。
一種處理核心,包含:指令執行邏輯電路及暫存器空間,該暫存器空間從VMCS載入,與VM項目相應,具有指示由該處理核心提供之代表該VMM的服務是否啟用的資訊,該指令執行邏輯回應於調用指令的客戶軟體執行下列步驟:參考該暫存器空間以確認該服務已啟用,及,參考第二暫存器空間或記憶體空間以針對由該客戶軟體寫入的該服務提取輸入參數。
100_1~100_N‧‧‧軟體應用程式實例
101‧‧‧作業系統
101_1~101_N‧‧‧作業系統實例
102‧‧‧軟體層
102a_1~102a_N‧‧‧虛擬機器
102b‧‧‧虛擬機器監控器(VMM)
103‧‧‧CPU
401、402、403‧‧‧私有控制暫存器空間
404‧‧‧VMCS
407‧‧‧指標表
409‧‧‧指標
410‧‧‧頁面表階層A
411‧‧‧EAX暫存器
412‧‧‧ECX暫存器
413‧‧‧項目
415‧‧‧頁面表階層B
416‧‧‧CPU執行單元資源
500‧‧‧通用處理核心
503‧‧‧提取單元
504‧‧‧解碼單元
505‧‧‧排程單元
506‧‧‧執行單元
507‧‧‧引退單元
508‧‧‧微碼
601‧‧‧處理核心
602‧‧‧記憶體控制集線器(MCH)
603‧‧‧系統記憶體
604‧‧‧快取
605‧‧‧I/O控制集線器(ICH)
606‧‧‧圖形處理器
607‧‧‧顯示器/螢幕
608‧‧‧I/O裝置
本發明藉由範例並以不受該等隨附圖式之圖形限制的方式說明,其中的相似參考數字指示相似元件,且其中:圖1顯示虛擬設計(先前技術);圖2顯示用於調用來自客戶軟體之VMM服務的處理(先前技術);
圖3顯示用於調用來自客戶軟體之CPU提供之服務的處理;圖4顯示CPU提供的客戶位址切換服務;圖5顯示處理器的實施例;圖6顯示計算系統的實施例。
VM脫離在每次客戶軟體調用VMM服務時發生的事實對應於無效率形式。具體地說,如上文所述,顯著的暫存器內容移動必需發生在軟體可見暫存器空間及VMCS之間,以將程式流程的內容/狀態從VM的內容/狀態切換至VMM的內容/狀態。
避免VM脫離的一方式係將該服務功能嵌入CPU而非VMM中。此處,因為係CPU而非VMM實施該請求服務,不需要在CPU內的控制轉移或內容切換。在各實施例中,雖然VMM不再實施該服務,該服務係由VMM組態。在實施例中,客戶軟體經由特定指令調用該服務。此可能係由CPU重界定為調用該服務之特定數量的既存指令之一者,或可能係具體界定成支援VMM組態服務之特定數量的新指令之一者。緊接於下文之圖3的討論討論此新方法使用建入CPU指令集中之單一新指令VMFUNC實作的實施例。
圖3顯示針對該組態及VMFUNC指令之使用的處理流程。如在圖3之處理中觀察到的,在針對客戶軟體或
VM之特定實例的最初組態期間,在301,VMM指示(例如,藉由寫入VM的VMCS)VMFUNC是否針對客戶軟體/VM啟用,且若為真,指示針對該客戶軟體實例/VM將特定CPU提供的服務啟用。其次在302,VM項目從VMCS將此組態資訊載入至CPU的私有控制暫存器空間(亦即,客戶軟體不可視的空間)。為了簡化,將下文的討論呈現為保持在VMCS中的組態資訊係客戶軟體之特定實例的特定資訊,然而,讀者應理解此資訊也可能係客戶軟體在其上運行之VM的特定資訊。
在此實施例中,希望調用VMM組態服務的客戶軟體首先以識別其希望調用之服務的值載入EAX暫存器。如果合適,客戶軟體以相關於該服務的相應資訊(例如,輸入參數)載入其他暫存器(例如,EBX或ECX暫存器)。在此等暫存器已載入後,在303,客戶軟體執行VMFUNC指令以調用該服務。
雖然以上討論描述藉由其將用於VM之各服務的啟用指定在VMCS中,且客戶軟體藉由寫入晶粒上處理器暫存器識別所期望之服務的處理,讀者將理解任何此種組態資訊及/或客戶軟體服務調用可經由記憶體替代地或組合地產生。
在304,回應於VMFUNC指令的執行,CPU內的指令執行邏輯調查EAX暫存器中的資訊以理解請求何具體服務,且如果合適,調查其他暫存器以得到可應用的輸入資訊。
然後在305,CPU的指令執行資源檢視稍早在302之VM項目載入VMCS資訊的私有控制暫存器,以看出VMFUNC是否針對客戶軟體啟用,且若為真,檢視已由客戶軟體請求之特定服務是否也已啟用。在307,若VMFUNC尚未針對客戶軟體啟用,或若VMFUNC已啟用但特定請求服務尚未啟用,CPU硬體引發異常。在306,若VMFUNC及請求服務均已啟用,CPU的指令執行資源實施該服務。
部分實施例可能將部分或全部服務限制在特定權限等級或操作模式。此種實施例可能在檢查VMFUNC及請求服務已啟用之前或之後檢查權限等級及/或操作模式。若CPU未在合適的權限等級及操作模式操作,CPU可能產生異常或VM脫離。
當VMFUNC指令實施調用的VMM組態服務時,所有處理發生而不在VM處理及VMM處理之間切換內容;此與使用VMCALL指令導致VM脫離(或導致VM脫離的其他指令)的先前技術方式相反。
在實施例中,用於客戶軟體實例的私有暫存器空間(從VMCS載入)包括指向針對在VM上運行的客戶軟體實施位址轉換(亦即,針對目前客戶位址空間)之EPT頁面表階層的EPT頁面表指標位址。此處,EPT頁面表階層中的轉換界定(潛在多步驟)從客戶軟體指定的實體位址(「客戶實體位址」)至與該等指定位址關聯之資料/指令在系統記憶體中實際存在之實體位址的轉換處理,以
及客戶軟體可能使用其存取該等實體位址的存取權。
客戶軟體的不同組件(例如,二不同應用程式或相同應用程式的二不同軟體模組)可能存取系統記憶體的不同實體位置。VMM可能藉由將此種組件各者與其自有的EPT頁面表階層關聯而在該等組件之間提供保護。例如,若客戶軟體對應於OS實例,OS核心可配置成具有在從不同記憶體位址空間操作之OS的不同模組(包括插入OS中的模組,諸如驅動程式),將相同OS實例內的各模組與其他模組分開保護。例如,可能將驅動程式組態成存取實體記憶體的一部分並可將OS實例的其他模組,諸如,OS核心,組態成存取實體記憶體的第二部分。藉由另外使OS核心的記憶體空間唯讀,可保護OS核心免於其他較不受信任的軟體模組傷害(諸如,該驅動程式)。
使用針對VM的現行客戶軟體改變保持在私有暫存器空間中及VMCS空間中的EPT頁面表指標位址,改變何EPT頁面表階層,且因此改變何轉換方式。根據一實施例,將VMFUNC指令用於改變EPT頁面表指標位址而無需VM脫離。當程式流程流經客戶軟體的各軟體模組時,VMFUNC在軟體模組之間的轉換上執行,以設定彼等個別的適當位址空間。例如,當程式流程從OS核心流至驅動程式時,將VMFUNC執行為該轉換的一部分,以設定驅動程式的位址空間。相似地,當程式流程從驅動程式流回OS核心時,VMFUNC再度在該轉換上執行,以切換回OS核心的位址空間。
回想圖3之藉由VM項目從VMCS載入至私有暫存器空間的步驟302。在實施例中,若客戶位址空間切換服務針對該客戶軟體啟用,也從VMCS將識別「指標表」之VMCS中的位址載入私有暫存器空間中。該指標表對應於可能為客戶軟體使用之不同頁面表階層的集合。在實施例中,該指標表係由VMM預組態。
圖4a及4b涉及在CPU硬體中實作客戶位址切換服務的實施例。圖4a係從VM項目已在430發生之後的角度繪製,且作為VM項目處理的一部分,私有控制暫存器空間401、402、403已藉由CPU在430載入來自VMCS 404之指定下列各項的資訊:i)VMFUNC是否已啟用401;ii)客戶位址切換是否已啟用402;iii)指標表407的位址403;iv)指向最初頁面表階層A 410的指標409。
當執行客戶軟體時,位於私有暫存器空間409中的頁面表指標位址指向包括用於客戶軟體之合適的位址轉換資訊的頁面表階層410。隨後,客戶軟體決定執行VMFUNC指令以調用客戶位址切換服務。在440,在設定用於VMFUNC指令的輸入參數時,記憶體或暫存器(在實施例中,EAX暫存器411)中的位置載入有識別客戶位址切換服務的值,且記憶體或暫存器(在實施例中,ECX暫存器412)中的第二位置載入有識別位址空間所切換至的頁面表指標位址414(以頁面表階層B 415表示)在指標表407中所在之項目413的值。
在執行該指令時,CPU執行單元資源416首先在450讀取暫存器/記憶體空間411以理解正在調用客戶位址切換服務,並讀取私有暫存器空間401及402以檢查VMFUNC是否已針對客戶軟體啟用,且若為真,檢查客戶位址切換是否已針對客戶軟體啟用。在證實VMFUNC及客戶位址空間切換二者均已啟用後,CPU執行單元資源416其次在460讀取暫存器空間403(指標表的位址)及暫存器/記憶體空間412(指示指標表中的選擇項目),以提取新頁面表指標位址414(在指標表407中的項目413)、在470將其載入暫存器空間409、並在470將其儲存入配置給VMCS 404的暫存器或記憶體空間中。在載入新頁面表指標位址後,用於客戶軟體的轉換現在使用頁面表階層415而非頁面表階層410轉換(亦即,客戶位址空間已切換)。
雖然上文討論已相關於實作在CPU硬體中的客戶位址切換服務,也可能將由VMM提供的其他服務整合入CPU中。此等服務包括,但未受限於下列各者:1)映射或解映射具有特定權限之記憶體的特定區域;2)以特定方式處理虛擬岔斷(例如,界定虛擬岔斷控制器的操作特徵);3)將記憶體註記成作為I/O緩衝器使用。須注意上述項目1)及3)以及客戶位址空間切換功能全部改變記憶體組態。
圖5顯示通用處理核心500,據信其描述許多不同種類的處理核心架構,諸如,複雜指令集(CISC)、精簡指
令集(RISC)、及極長指令(VLIW)。圖5的通用處理核心500包括:1)提取指令的提取單元503(例如,從快取或記憶體);2)解碼指令的解碼單元504;3)決定指令發佈給執行單元506的時間點及/或次序的排程單元505(顯然地,排程器係選擇性的);4)執行指令的執行單元506;5)表示指令成功完成的引退單元507。顯然地,該處理核心可能或可能不部分地或完全地包括微碼508,以控制執行單元506的微操作。在先前討論中所參照的指令執行資源/邏輯可能以執行單元506內的一或多個執行單元實作。
也可將具有上述功能的處理核心實作入各種計算系統中。圖6顯示計算系統的實施例(例如,電腦)。圖6的模範計算系統包括:1)可能設計成包括二或三個暫存器純量整數及向量指令執行的一或多個處理核心601;2)記憶體控制集線器(MCH)602;3)系統記憶體603(其存在不同種類,諸如,DDR RAM、EDO RAM等);4)快取604;5)I/O控制器集線器(ICH)605;6)圖形處理器606;7)顯示器/螢幕607(其存在不同種類,諸如,陰極射線管(CRT),平面顯示器、薄膜電晶體(TFT)、液晶顯示器(LCD)、DPL等)、一或多個I/O裝置608。
該一或多個處理核心601執行指令以實施該計算系統實作的無論任何軟體常式。該等指令常包含在資料上實施的特定操作種類。將資料及指令二者儲存在系統記憶體
603及快取604中。將快取604典型地設計成具有比系統603更短的延遲時間。例如,可能將快取604積體入與處理器(等)相同的矽晶片(等)上及/或以更快的SRAM胞元構成,雖然系統記憶體603可能以更慢的DRAM胞元構成。傾向於將更常使用的指令及資料儲存在快取604而非系統記憶體603中,該計算系統的整體性能效率改善。
有意使系統記憶體603可用於該計算系統內的其他組件。例如,從各種介面(例如,鍵盤及滑鼠、印表機埠、LAN埠、數據機埠等)接收至該計算系統,或從該計算系統的內部儲存元件(例如,硬碟機)取得的資料在彼等在軟體程式之實作中由一或多個處理器(等)601操作之前,常暫時佇列在系統記憶體603中。相似地,軟體程式決定應從該計算系統經由計算系統介面之一者傳送至外側實體,或儲存入內部儲存元件中的資料在傳送或儲存其之前,常暫時佇列在系統記憶體603中。
ICH 605負責確保此種資料在系統記憶體603及其適當的對應計算系統介面(及內部儲存裝置,若該計算系統係如此設計的)之間正確地傳送。MCH 602負責管理在處理器(等)601、介面、及內部儲存元件之間可能相關於另一者在時間上緊鄰地出現之存取系統記憶體603的各種競爭請求。
也將一或多個I/O裝置608實作在典型的計算系統中。I/O裝置通常負責將資料轉移至計算系統及/或自該計
算系統轉移出(例如,網路配適卡);或用於計算系統內的大量非依電性儲存器(例如,硬碟機)。ICH 605具有在自身及觀察到之I/O裝置608之間的雙向點對點鏈接。
藉由上文討論教示的處理可能以程式碼實施,諸如,導致執行此等指令之機器實施特定功能的機器可執行指令。在此本文中,「機器」可能係將中間形式(或「抽象」)指令轉換為處理器特定指令(例如,抽象執行環境,諸如,「虛擬機器」(例如,Java虛擬機器)、解譯器、共同語言執行環境、高階語言虛擬機器等)的機器,及/或設置在設計成執行指令之半導體晶片上的電子電路(例如,以電晶體實作的「邏輯電路」),諸如,通用處理器及/或專用處理器。藉由上文討論教示的處理也可能藉由設計成實施該等處理(或其一部分)而不執行程式碼的電子電路(在替代方案中,組合至機器或與機器組合)實施。
據信藉由上文討論教示的處理也可能以由各種軟體開發環境支援(例如,Microsoft Corporation的.NET、Mono、Java、Oracle Corporation的Fusion等)之各種物件導向或非物件導向電腦程式語言(例如,Java、C#、VB、Python、C、C++、J#、APL、Cobol、Fortran、Pascal、Perl等)的原始級程式碼描述。可能將原始級程式碼轉換為可為抽象執行環境(例如,Java虛擬機器、共同語言執行環境、高階語言虛擬機器,解譯器等)理解的程式碼中間格式(諸如,Java位元組碼、Microsoft中間
語言等),或可能直接編譯為目標碼。
根據各種方法,該抽象執行環境可能藉由1)編譯該中間格式程式碼(例如,在執行期間(例如,JIT編譯器))、2)解譯該中間格式程式碼、或3)在執行期間編譯該中間格式程式碼及解譯該中間格式程式碼的組合將該中間格式程式碼轉換為處理器特定碼。抽象執行環境可能在各種作業系統上運行(諸如,UNIX、LINUX、包括Windows家族的Microsoft作業系統、包括MacOS X的Apple Computers作業系統、Sun/Solaris、OS/2、Novell等)。
可能將製品用於儲存程式碼。可能將儲存程式碼的製品體現為,但未受限於,一或多個記憶體(例如,一或多個快閃記憶體、隨機存取記憶體(靜態、動態、或其他))、光碟片、CD-ROM、DVD ROM、EPROM、EEPROM、磁或光卡、或適合儲存電子指令之其他種類的機器可讀媒體。程式碼也可能藉由體現在傳播媒體(例如,經由通訊鏈路(例如,網路連接))中的資料訊號從遠端電腦(例如,伺服器)下載至請求電腦(例如,用戶端)。
在上述說明書中,本發明已參考其之具體例示實施例描述。然而,明顯地可能產生其之各種修改及改變而不脫離在隨附之申請專利範圍中陳述之本發明之更廣泛的精神及範圍。
100_1~100_N‧‧‧軟體應用程式實例
101‧‧‧作業系統
101_1~101_N‧‧‧作業系統實例
102‧‧‧軟體層
102a_1~102a_N‧‧‧虛擬機器
102b‧‧‧虛擬機器監控器(VMM)
103‧‧‧CPU
Claims (21)
- 一種由處理器實施的方法,包含:以該處理器之解碼單元將指令解碼成解碼的指令;以及以該處理器之執行單元執行該解碼的指令,以進行:確認針對由該處理器之虛擬機器執行而請求的該指令是否針對該虛擬機器啟動,確認由該處理器之該虛擬機器所請求的服務是否為該處理器用以在不脫離該虛擬機器下實施的複數個服務之其中一者,其中該複數個服務包含該處理器係用以在不脫離該虛擬機器下實施的至少一非中斷服務,以及若該指令係針對該虛擬機器啟動並且該服務為該複數個服務的其中一者,則在不脫離該虛擬機器下實施該服務。
- 如申請專利範圍第1項的方法,其中該確認該服務的步驟包含確認該處理器的私有控制暫存器空間。
- 如申請專利範圍第1項之方法,其中該確認該服務的步驟包含該虛擬機器載入識別請求進入該處理器之暫存器的該服務的值。
- 如申請專利範圍第3項之方法,其中該確認該服務的步驟進一步包含將用於在該處理器的私有控制暫存器空間中該虛擬機器的組態資訊與該值比較。
- 如申請專利範圍第1項之方法,其中該確認該服務的步驟包含該虛擬機器載入識別請求進入該處理器之記 憶體的該服務的值。
- 如申請專利範圍第5項之方法,其中該確認該服務的步驟進一步包含將用於在該處理器的私有控制暫存器空間中該虛擬機器的組態資訊與該值比較。
- 如申請專利範圍第1項之方法,其中該複數個服務包含該處理器要用以在不脫離該虛擬機器下實施的複數個非中斷服務。
- 一種處理器,包含:解碼單元,用以將指令解碼成解碼的指令;以及執行單元,用以執行該解碼的指令,以進行:確認針對由該處理器之虛擬機器執行而請求的該指令是否針對該虛擬機器啟動,確認由該處理器之該虛擬機器所請求的服務是否為該處理器用以在不脫離該虛擬機器下實施的複數個服務之其中一者,其中該複數個服務包含該處理器係用以在不脫離該虛擬機器下實施的至少一非中斷服務,以及若該指令係針對該虛擬機器啟動並且該服務為該複數個服務的其中一者,則在不脫離該虛擬機器下實施該服務。
- 如申請專利範圍第8項之處理器,其中該確認該服務的步驟包含該處理器的私有控制暫存器空間的確認。
- 如申請專利範圍第8項之處理器,其中該確認該服務的步驟包含該虛擬機器用以載入識別請求進入該處理器之暫存器的該服務的值。
- 如申請專利範圍第10項之處理器,其中該確認該服務的步驟進一步包含用於在該處理器的私有控制暫存器空間中該虛擬機器的組態資訊與該值的比較。
- 如申請專利範圍第8項之處理器,其中該確認該服務的步驟包含該虛擬機器用以載入識別請求進入該處理器之記憶體的該服務的值。
- 如申請專利範圍第12項之處理器,其中該確認該服務的步驟進一步包含用於在該處理器的私有控制暫存器空間中該虛擬機器的組態資訊與該值的比較。
- 如申請專利範圍第8項之處理器,其中該複數個服務包含該處理器要用以在不脫離該虛擬機器下實施的複數個非中斷服務。
- 一種非暫態機器可讀媒體,其包括儲存的程式碼,當由機器處理時,導致方法用以被實施,該方法包含:以處理器之解碼單元將指令解碼成解碼的指令;以及以該處理器之執行單元執行該解碼的指令,用以進行:確認針對由該處理器之虛擬機器執行而請求的該指令是否針對該虛擬機器啟動,確認由該處理器之該虛擬機器所請求的服務是否為該處理器用以在不脫離該虛擬機器下實施的複數個服務之其中一者,其中該複數個服務包含該處理器係用以在不脫離該虛擬機器下實施的至少一非中斷服務,以及 若該指令係針對該虛擬機器啟動並且該服務為該複數個服務的其中一者,則在不脫離該虛擬機器下實施該服務。
- 如申請專利範圍第15項之非暫態機器可讀媒體,其中該確認該服務的步驟包含確認該處理器之私有控制暫存器空間。
- 如申請專利範圍第15項之非暫態機器可讀媒體,其中該確認該服務的步驟包含該虛擬機器載入識別請求進入該處理器之暫存器的該服務的值。
- 如申請專利範圍第17項之非暫態機器可讀媒體,其中該確認該服務的步驟進一步包含將用於在該處理器的私有控制暫存器空間中該虛擬機器的組態資訊與該值比較。
- 如申請專利範圍第15項之非暫態機器可讀媒體,其中該確認該服務的步驟包含該虛擬機器載入識別請求進入該處理器之記憶體的該服務的值。
- 如申請專利範圍第19項之非暫態機器可讀媒體,其中該確認該服務的步驟進一步包含將用於在該處理器的私有控制暫存器空間中該虛擬機器的組態資訊與該值比較。
- 如申請專利範圍第15項之非暫態機器可讀媒體,其中該複數個服務包含該處理器要用以在不脫離該虛擬機器下實施的複數個非中斷服務。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201161553108P | 2011-10-28 | 2011-10-28 | |
| US13/629,395 US9804870B2 (en) | 2011-10-28 | 2012-09-27 | Instruction-set support for invocation of VMM-configured services without VMM intervention |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201717002A TW201717002A (zh) | 2017-05-16 |
| TWI592875B true TWI592875B (zh) | 2017-07-21 |
Family
ID=48168304
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW101136211A TWI556173B (zh) | 2011-10-28 | 2012-10-01 | 支援無虛擬機器監控器介入的虛擬機器監控器組態服務之調用的指令集的方法、處理器及機器可讀媒體 |
| TW105128054A TWI592875B (zh) | 2011-10-28 | 2012-10-01 | 支援無虛擬機器監控器介入的虛擬機器監控器組態服務之調用的指令集的方法、處理器及機器可讀媒體 |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW101136211A TWI556173B (zh) | 2011-10-28 | 2012-10-01 | 支援無虛擬機器監控器介入的虛擬機器監控器組態服務之調用的指令集的方法、處理器及機器可讀媒體 |
Country Status (4)
| Country | Link |
|---|---|
| US (3) | US9804870B2 (zh) |
| CN (3) | CN114741156B (zh) |
| TW (2) | TWI556173B (zh) |
| WO (1) | WO2013062719A1 (zh) |
Families Citing this family (39)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10324863B2 (en) | 2013-06-24 | 2019-06-18 | Intel Corporation | Protected memory view for nested page table access by virtual machine guests |
| US9563455B2 (en) | 2013-10-28 | 2017-02-07 | Intel Corporation | Virtualization exceptions |
| US9928094B2 (en) * | 2014-11-25 | 2018-03-27 | Microsoft Technology Licensing, Llc | Hardware accelerated virtual context switching |
| US9703703B2 (en) | 2014-12-23 | 2017-07-11 | Intel Corporation | Control of entry into protected memory views |
| US9703720B2 (en) | 2014-12-23 | 2017-07-11 | Intel Corporation | Method and apparatus to allow secure guest access to extended page tables |
| US9477509B2 (en) | 2015-01-23 | 2016-10-25 | Red Hat Israel, Ltd. | Protection against interrupts in virtual machine functions |
| US9875128B2 (en) * | 2015-01-23 | 2018-01-23 | Red Hat Israel, Ltd. | Using hypervisor trapping for protection against interrupts in virtual machine functions |
| US9772870B2 (en) * | 2015-01-29 | 2017-09-26 | Red Hat Israel, Ltd. | Delivering interrupts to virtual machines executing privileged virtual machine functions |
| US9715410B2 (en) | 2015-01-30 | 2017-07-25 | Red Hat Israel, Ltd. | Protected virtual machine function access |
| US9778945B2 (en) * | 2015-02-10 | 2017-10-03 | Red Hat Israel, Ltd. | Providing mode-dependent virtual machine function code |
| US9607165B2 (en) | 2015-02-13 | 2017-03-28 | Red Hat Israel, Ltd. | Watchdog code for virtual machine functions |
| US10127064B2 (en) | 2015-02-24 | 2018-11-13 | Red Hat Israel, Ltd. | Read-only VM function chaining for secure hypervisor access |
| US9740519B2 (en) | 2015-02-25 | 2017-08-22 | Red Hat Israel, Ltd. | Cross hypervisor migration of virtual machines with VM functions |
| US9483301B2 (en) | 2015-02-26 | 2016-11-01 | Red Hat Israel, Ltd. | Dynamic virtual machine function enabling |
| US9600190B2 (en) | 2015-02-27 | 2017-03-21 | Red Hat Israel, Ltd. | Virtual machine functions for multiple privileged pages |
| US9569247B2 (en) * | 2015-03-31 | 2017-02-14 | Red Hat Israel, Ltd. | Range based virtual machine functions |
| US9824032B2 (en) | 2015-04-16 | 2017-11-21 | Red Hat Israel, Ltd. | Guest page table validation by virtual machine functions |
| US9842065B2 (en) | 2015-06-15 | 2017-12-12 | Intel Corporation | Virtualization-based platform protection technology |
| US9710393B2 (en) | 2015-06-25 | 2017-07-18 | Intel Corporation | Dynamic page table edit control |
| CN107924321B (zh) * | 2015-09-25 | 2022-01-18 | 英特尔公司 | 针对虚拟机退出的嵌套虚拟化 |
| US10255196B2 (en) * | 2015-12-22 | 2019-04-09 | Intel Corporation | Method and apparatus for sub-page write protection |
| US9898605B2 (en) | 2015-12-24 | 2018-02-20 | Mcafee, Llc | Monitoring executed script for zero-day attack of malware |
| US10025930B2 (en) | 2015-12-24 | 2018-07-17 | Mcafee, Llc | Hardware assisted branch transfer self-check mechanism |
| US10289570B2 (en) | 2015-12-24 | 2019-05-14 | Mcafee, Llc | Detecting data corruption by control flow interceptions |
| US10210331B2 (en) | 2015-12-24 | 2019-02-19 | Mcafee, Llc | Executing full logical paths for malware detection |
| US9880871B2 (en) | 2016-02-23 | 2018-01-30 | Red Hat Israel, Ltd. | Protection from guest interrupts in a virtual machine function |
| US10515023B2 (en) | 2016-02-29 | 2019-12-24 | Intel Corporation | System for address mapping and translation protection |
| US11442760B2 (en) | 2016-07-01 | 2022-09-13 | Intel Corporation | Aperture access processors, methods, systems, and instructions |
| US10176007B2 (en) | 2016-08-30 | 2019-01-08 | Red Hat Israel, Ltd. | Guest code emulation by virtual machine function |
| US10180854B2 (en) * | 2016-09-28 | 2019-01-15 | Intel Corporation | Processor extensions to identify and avoid tracking conflicts between virtual machine monitor and guest virtual machine |
| US10698713B2 (en) | 2016-11-29 | 2020-06-30 | Red Hat Israel, Ltd. | Virtual processor state switching virtual machine functions |
| US10114759B2 (en) * | 2016-12-06 | 2018-10-30 | Vmware, Inc. | Trapless shadow page tables |
| US10671737B2 (en) * | 2017-11-10 | 2020-06-02 | Intel Corporation | Cryptographic memory ownership table for secure public cloud |
| US11250123B2 (en) | 2018-02-28 | 2022-02-15 | Red Hat, Inc. | Labeled security for control flow inside executable program code |
| US11829517B2 (en) | 2018-12-20 | 2023-11-28 | Intel Corporation | Method and apparatus for trust domain creation and destruction |
| US20210117244A1 (en) * | 2020-12-26 | 2021-04-22 | Intel Corporation | Resource manager access control |
| US12229047B2 (en) * | 2021-04-20 | 2025-02-18 | Assured Information Security, Inc. | Memory access control in a virtualization environment |
| US12373356B2 (en) | 2022-12-28 | 2025-07-29 | Intel Corporation | Fast key ID switching via extended paging for cryptographic intra-process isolation |
| CN115988218B (zh) * | 2023-03-14 | 2023-06-09 | 摩尔线程智能科技(北京)有限责任公司 | 一种虚拟化视频编解码系统、电子设备和存储介质 |
Family Cites Families (30)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4975836A (en) * | 1984-12-19 | 1990-12-04 | Hitachi, Ltd. | Virtual computer system |
| EP1085719A2 (en) | 1999-09-15 | 2001-03-21 | Koninklijke Philips Electronics N.V. | Use of buffer-size mask in conjunction with address pointer to detect buffer-full and buffer-rollover conditions in a can device that employs reconfigurable message buffers |
| US7035963B2 (en) | 2000-12-27 | 2006-04-25 | Intel Corporation | Method for resolving address space conflicts between a virtual machine monitor and a guest operating system |
| US7127548B2 (en) * | 2002-04-16 | 2006-10-24 | Intel Corporation | Control register access virtualization performance improvement in the virtual-machine architecture |
| US20040117532A1 (en) * | 2002-12-11 | 2004-06-17 | Bennett Steven M. | Mechanism for controlling external interrupts in a virtual machine system |
| US7941799B2 (en) * | 2004-05-27 | 2011-05-10 | International Business Machines Corporation | Interpreting I/O operation requests from pageable guests without host intervention |
| US7886293B2 (en) * | 2004-07-07 | 2011-02-08 | Intel Corporation | Optimizing system behavior in a virtual machine environment |
| US7562179B2 (en) * | 2004-07-30 | 2009-07-14 | Intel Corporation | Maintaining processor resources during architectural events |
| WO2006069493A1 (en) * | 2004-12-31 | 2006-07-06 | Intel Corporation | An apparatus and method for cooperative guest firmware |
| US7395405B2 (en) | 2005-01-28 | 2008-07-01 | Intel Corporation | Method and apparatus for supporting address translation in a virtual machine environment |
| US7685635B2 (en) * | 2005-03-11 | 2010-03-23 | Microsoft Corporation | Systems and methods for multi-level intercept processing in a virtual machine environment |
| US8312452B2 (en) * | 2005-06-30 | 2012-11-13 | Intel Corporation | Method and apparatus for a guest to access a privileged register |
| WO2007050797A2 (en) * | 2005-10-25 | 2007-05-03 | Secure64 Software Corporation | Secure virtual-machine monitor |
| US8286162B2 (en) * | 2005-12-30 | 2012-10-09 | Intel Corporation | Delivering interrupts directly to a virtual processor |
| US7490191B2 (en) * | 2006-09-22 | 2009-02-10 | Intel Corporation | Sharing information between guests in a virtual machine environment |
| US8707337B2 (en) * | 2006-10-31 | 2014-04-22 | Motorola Mobility Llc | Dispatch API that permits midlets to initiate dispatch calls |
| US8464251B2 (en) * | 2007-03-31 | 2013-06-11 | Intel Corporation | Method and apparatus for managing page tables from a non-privileged software domain |
| US8156492B2 (en) | 2007-09-07 | 2012-04-10 | Oracle International Corporation | System and method to improve memory usage in virtual machines running as hypervisor guests |
| US8099261B2 (en) | 2007-09-10 | 2012-01-17 | Braunstein Zachary L | Low-cost solid-state identification device |
| US8370559B2 (en) * | 2007-09-28 | 2013-02-05 | Intel Corporation | Executing a protected device model in a virtual machine |
| US20090187726A1 (en) * | 2008-01-22 | 2009-07-23 | Serebrin Benjamin C | Alternate Address Space to Permit Virtual Machine Monitor Access to Guest Virtual Address Space |
| JP4530182B2 (ja) * | 2008-02-27 | 2010-08-25 | 日本電気株式会社 | プロセッサ、メモリ装置、処理装置及び命令の処理方法 |
| US8151032B2 (en) | 2008-06-26 | 2012-04-03 | Microsoft Corporation | Direct memory access filter for virtualized operating systems |
| US8230155B2 (en) | 2008-06-26 | 2012-07-24 | Microsoft Corporation | Direct memory access filter for virtualized operating systems |
| US8316211B2 (en) * | 2008-06-30 | 2012-11-20 | Intel Corporation | Generating multiple address space identifiers per virtual machine to switch between protected micro-contexts |
| US9747118B2 (en) * | 2009-01-06 | 2017-08-29 | Intel Corporation | Guest-specific microcode |
| US8479196B2 (en) * | 2009-09-22 | 2013-07-02 | International Business Machines Corporation | Nested virtualization performance in a computer system |
| GB2478727B (en) | 2010-03-15 | 2013-07-17 | Advanced Risc Mach Ltd | Translation table control |
| US9529615B2 (en) * | 2010-11-24 | 2016-12-27 | International Business Machines Corporation | Virtual device emulation via hypervisor shared memory |
| US9405570B2 (en) * | 2011-12-30 | 2016-08-02 | Intel Corporation | Low latency virtual machine page table management |
-
2012
- 2012-09-27 US US13/629,395 patent/US9804870B2/en active Active
- 2012-09-28 CN CN202210307130.4A patent/CN114741156B/zh active Active
- 2012-09-28 CN CN201280057792.5A patent/CN104137056B/zh active Active
- 2012-09-28 CN CN201811075414.5A patent/CN109240801B/zh active Active
- 2012-09-28 WO PCT/US2012/058079 patent/WO2013062719A1/en not_active Ceased
- 2012-10-01 TW TW101136211A patent/TWI556173B/zh not_active IP Right Cessation
- 2012-10-01 TW TW105128054A patent/TWI592875B/zh active
-
2013
- 2013-03-15 US US13/843,337 patent/US9804871B2/en active Active
-
2017
- 2017-10-30 US US15/797,379 patent/US10678575B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| CN104137056A (zh) | 2014-11-05 |
| US20140013326A1 (en) | 2014-01-09 |
| US20180217857A1 (en) | 2018-08-02 |
| TWI556173B (zh) | 2016-11-01 |
| WO2013062719A1 (en) | 2013-05-02 |
| US10678575B2 (en) | 2020-06-09 |
| CN109240801B (zh) | 2022-04-01 |
| US20130117743A1 (en) | 2013-05-09 |
| TW201333826A (zh) | 2013-08-16 |
| CN114741156A (zh) | 2022-07-12 |
| US9804870B2 (en) | 2017-10-31 |
| CN104137056B (zh) | 2018-10-23 |
| CN114741156B (zh) | 2025-07-08 |
| US9804871B2 (en) | 2017-10-31 |
| CN109240801A (zh) | 2019-01-18 |
| TW201717002A (zh) | 2017-05-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI592875B (zh) | 支援無虛擬機器監控器介入的虛擬機器監控器組態服務之調用的指令集的方法、處理器及機器可讀媒體 | |
| US8239610B2 (en) | Asynchronous page faults for virtual machines | |
| US12367062B1 (en) | Virtualization extension modules | |
| US11042485B2 (en) | Implementing firmware runtime services in a computer system | |
| US20150370590A1 (en) | Hypervisor context switching using a trampoline scheme in processors having more than two hierarchical privilege levels | |
| US20170090963A1 (en) | Technologies for multi-level virtualization | |
| JP2016529614A (ja) | 待ち時間の影響を受けやすい仮想マシンをサポートするように構成された仮想マシンモニタ | |
| US9959134B2 (en) | Request processing using VM functions | |
| US10620963B2 (en) | Providing fallback drivers for IO devices in a computing system | |
| US11726807B2 (en) | Safe execution of virtual machine callbacks in a hypervisor | |
| US10095520B2 (en) | Interrupt return instruction with embedded interrupt service functionality | |
| EP2810162B1 (en) | Optimization of resource usage in a multi-environment computing system | |
| US9122549B2 (en) | Method and system for emulation of instructions and hardware using background guest mode processing | |
| US10481941B1 (en) | Virtual machine exit processing accelerator | |
| US12118362B2 (en) | Behavioral implementation of a double fault stack in a computer system | |
| Ito et al. | Mesovirtualization: lightweight virtualization technique for embedded systems | |
| KR101433644B1 (ko) | Arm 기반 운영체제의 가상화를 위한 정책 제공 시스템 및 방법 |