亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

虛擬化性能計(jì)數(shù)器的制造方法

文檔序號(hào):6510507閱讀:326來源:國知局
虛擬化性能計(jì)數(shù)器的制造方法
【專利摘要】本發(fā)明公開了用于對(duì)性能計(jì)數(shù)器進(jìn)行虛擬化的裝置、方法和系統(tǒng)的實(shí)施例。在一個(gè)實(shí)施例中,一種裝置包括計(jì)數(shù)器、計(jì)數(shù)器啟用存儲(chǔ)單元、計(jì)數(shù)器啟用邏輯以及虛擬機(jī)控制邏輯。計(jì)數(shù)器啟用存儲(chǔ)單元用于存儲(chǔ)計(jì)數(shù)器啟用指示符。計(jì)數(shù)器啟用邏輯用于基于計(jì)數(shù)器啟用指示符來啟用計(jì)數(shù)器。虛擬機(jī)控制邏輯用于向客戶轉(zhuǎn)移該裝置的控制權(quán)。虛擬機(jī)控制邏輯包括客戶狀態(tài)加載邏輯,其用于針對(duì)該裝置的控制權(quán)向客戶的轉(zhuǎn)移而使來自虛擬機(jī)控制結(jié)構(gòu)的客戶值被加載到計(jì)數(shù)器啟用存儲(chǔ)單元中。
【專利說明】虛擬化性能計(jì)數(shù)器
[0001]本申請(qǐng)是2007年8月6日提交的名稱為‘虛擬化性能計(jì)數(shù)器’、申請(qǐng)?zhí)枮?00780025942.3的分案申請(qǐng)。
【技術(shù)領(lǐng)域】
[0002]本公開內(nèi)容屬于信息處理的領(lǐng)域,并且更明確地屬于在虛擬化環(huán)境中使用性能計(jì)數(shù)器的領(lǐng)域。
【背景技術(shù)】
[0003]通常,信息處理系統(tǒng)中虛擬化的概念允許在單個(gè)信息處理系統(tǒng)上運(yùn)行一個(gè)或更多操作系統(tǒng)(每個(gè)是一個(gè)“OS”)的多個(gè)實(shí)例,即便每個(gè)OS被設(shè)計(jì)為對(duì)系統(tǒng)及其資源具有完全、直接的控制權(quán)也可如此。虛擬化被典型地通過使用軟件(例如,虛擬機(jī)監(jiān)視器或“VMM”)來實(shí)現(xiàn),其為每個(gè)OS提供一個(gè)擁有虛擬資源的“虛擬機(jī)”(“VM”),該虛擬資源包括該OS可以完全且直接控制的一個(gè)或更多虛擬處理器,而VMM維護(hù)用于執(zhí)行虛擬化策略(例如在各VM之間共享和/或分配物理資源)的系統(tǒng)環(huán)境(“虛擬化環(huán)境”)。每個(gè)OS以及任何其它運(yùn)行在VM上的軟件被稱作“客戶(guest)”或“客戶軟件”,而“宿主(host)”或“宿主軟件”是諸如VMM這樣的運(yùn)行在虛擬化環(huán)境之外的軟件。
[0004]信息處理系統(tǒng)中的物理處理器可以例如通過支持用于進(jìn)入虛擬化環(huán)境以在VM中的虛擬處理器(即,受到VMM施加的限制的物理處理器)上運(yùn)行客戶的指令,來支持虛擬化。在該虛擬化環(huán)境中,可以截聽某些事件、操作和情況(例如要求訪問特權(quán)寄存器(privileged register)或者資源的外部中斷或嘗試),即,使處理器退出虛擬化環(huán)境以便VMM可以進(jìn)行操作(例如,實(shí)現(xiàn)虛擬化策略)。物理處理器還可以支持其它用來維護(hù)虛擬化環(huán)境的指令,并且物理處理器可以包括指示或控制該物理處理器的虛擬化能力的存儲(chǔ)器位或寄存器位。
[0005]支持虛擬化環(huán)境的物理處理器可以包括用于記錄性能監(jiān)測(cè)信息的性能計(jì)數(shù)器。典型地,每個(gè)性能計(jì)數(shù)器將會(huì)由與該計(jì)數(shù)器相關(guān)的一個(gè)或更多控制或配置寄存器、或一個(gè)或更多控制或配置寄存器的部分進(jìn)行控制。為了虛擬化這些性能計(jì)數(shù)器,客戶與宿主之間或者兩個(gè)客戶之間的每個(gè)轉(zhuǎn)換將典型地需要:保存所有計(jì)數(shù)器及其相關(guān)控制寄存器的狀態(tài),以及為所有計(jì)數(shù)器及其相關(guān)控制寄存器加載新的狀態(tài)。
【專利附圖】

【附圖說明】
[0006]在附圖中以示例的方式而非限制的方式說明了本發(fā)明。
[0007]圖1用一種虛擬化架構(gòu)說明了本發(fā)明的一個(gè)實(shí)施例。
[0008]圖2用一種用于對(duì)性能計(jì)數(shù)器進(jìn)行虛擬化的方法說明了本發(fā)明的一個(gè)實(shí)施例。
[0009]圖3用一種虛擬化架構(gòu)說明了本發(fā)明的另一個(gè)實(shí)施例。
[0010]圖4用一種用于對(duì)性能計(jì)數(shù)器進(jìn)行虛擬化的方法說明了本發(fā)明的另一個(gè)實(shí)施例。【具體實(shí)施方式】
[0011]以下描述了用于對(duì)性能計(jì)數(shù)器進(jìn)行虛擬化的裝置、方法和系統(tǒng)的實(shí)施例。在該說明書中,可以給出許多特定細(xì)節(jié),例如部件和系統(tǒng)配置,以供更細(xì)致了解本發(fā)明。然而,本領(lǐng)域的技術(shù)人員可以理解,在沒有這些特定細(xì)節(jié)的情況下也可以實(shí)現(xiàn)本發(fā)明。此外,沒有詳細(xì)示出一些眾所周知的結(jié)構(gòu)、電路等等,以便避免不必要地模糊本發(fā)明。
[0012]通過降低在宿主和客戶之間以及多個(gè)客戶之間進(jìn)行轉(zhuǎn)換時(shí)所必須保存和加載的狀態(tài)信息量,可以提高虛擬化環(huán)境的性能。本發(fā)明的實(shí)施例可以用來對(duì)性能計(jì)數(shù)器或其它計(jì)數(shù)器進(jìn)行虛擬化,而不需要保存和加載計(jì)數(shù)器及其相關(guān)控制寄存器的內(nèi)容。因此,可以提高當(dāng)轉(zhuǎn)換時(shí)要保存計(jì)數(shù)器及其相關(guān)控制寄存器的內(nèi)容的虛擬化環(huán)境的性能。本發(fā)明的實(shí)施例提供了:對(duì)于任意多個(gè)宿主和客戶,性能計(jì)數(shù)器都能被高效地啟用(enable)或禁用(disable);分配性能計(jì)數(shù)器用于宿主或客戶的排他使用;以及在任意多個(gè)宿主和/或客戶之間共享性能計(jì)數(shù)器。
[0013]圖1用虛擬化架構(gòu)100說明了本發(fā)明的一個(gè)實(shí)施例。在圖1中,裸平臺(tái)硬件110可以是任何能夠執(zhí)行任意OS或VMM軟件的數(shù)據(jù)處理裝置。例如,裸平臺(tái)硬件可以是個(gè)人計(jì)算機(jī)、大型計(jì)算機(jī)、便攜式計(jì)算機(jī)、手持設(shè)備、機(jī)頂盒、服務(wù)器或任意其它計(jì)算系統(tǒng)的平臺(tái)硬件。裸平臺(tái)硬件110包括處理器120和存儲(chǔ)器130。
[0014]處理器120可以是任何類型的處理器,包括通用微處理器(例如,英特爾?奔騰?系列處理器、安騰?系列處理器、或英特爾?公司的其它系列處理器中的處理器),或來自其它公司的其它處理器,或者數(shù)字信號(hào)處理器或微控制器。盡管圖1僅示出一個(gè)這種處理器120,但是裸平臺(tái)硬件110可以包括任意多個(gè)處理器,包括任意多個(gè)多核處理器(每個(gè)擁有任意多個(gè)執(zhí)行內(nèi)核)以及任意多個(gè)多線程處理器(每個(gè)擁有任意多個(gè)線程)。
[0015]存儲(chǔ)器130可以是靜態(tài)或動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器、基于半導(dǎo)體的只讀或閃速存儲(chǔ)器、磁盤或光盤存儲(chǔ)器、處理器120可讀的任何其它類型的介質(zhì)、或任意這樣的介質(zhì)的組合。處理器120和存儲(chǔ)器130可以根據(jù)任何已知的方法(例如,直接或間接地通過一個(gè)或更多總線、點(diǎn)到點(diǎn)的連接、或其它有線的或無線的連接)來互相耦合或進(jìn)行通信。裸平臺(tái)硬件110還可以包括任意多個(gè)附加的設(shè)備或連接。
[0016]除裸硬件平臺(tái)110之外,圖1還示出了 VMM140、VM150和160、客戶操作系統(tǒng)152和162、以及應(yīng)用程序154、155、164和165。
[0017]VMM140可以是任何被安裝在裸平臺(tái)硬件110上或可由其訪問的軟件、固件或硬件宿主,其用于向客戶提供VM (即裸平臺(tái)硬件110的抽象),或用于創(chuàng)建VM、管理VM及實(shí)現(xiàn)虛擬化策略。在其它實(shí)施例中,宿主可以是任何VMM、管理程序(hypervisor)、0S或其它能夠控制裸平臺(tái)硬件110的軟件、固件或硬件??蛻艨梢允侨魏蜲S、任何VMM (包括VMM140的另一實(shí)例)、任何管理程序、或者任何應(yīng)用程序或其它軟件。
[0018]每個(gè)客戶希望根據(jù)VM上提供的處理器和平臺(tái)的架構(gòu)來訪問物理資源,例如裸平臺(tái)硬件110的處理器和平臺(tái)寄存器、存儲(chǔ)器以及輸入/輸出設(shè)備。圖1示出兩個(gè)VM,150和160,在VM150上安裝有客戶0S152及客戶應(yīng)用程序154和155,以及在VM160上安裝有客戶0S162及客戶應(yīng)用程序164和165。盡管圖1僅示出兩個(gè)VM,并且每個(gè)VM有兩個(gè)應(yīng)用程序,但是在本發(fā)明的范圍之內(nèi),可以創(chuàng)建任意多個(gè)VM,并且在每個(gè)VM上可以運(yùn)行任意多個(gè)應(yīng)用程序。[0019]客戶能夠訪問的資源可以或者被歸類為“特權(quán)”資源,或者被歸類為“非特權(quán)”資源。對(duì)于特權(quán)資源,VMM140幫助實(shí)現(xiàn)了客戶希望的功能,但保留對(duì)該資源的最終控制權(quán)。非特權(quán)資源不需要由VMM140進(jìn)行控制,并且可以被客戶直接訪問。
[0020]此外,每個(gè)客戶OS期望處理各種事件,例如異常(舉例來說,頁面錯(cuò)誤和常規(guī)保護(hù)錯(cuò)誤)、中斷(舉例來說,硬件中斷和軟件中斷)和平臺(tái)事件(舉例來說,初始化和系統(tǒng)管理中斷)。這里,這些異常、中斷和平臺(tái)事件被一并、且被各自稱作“虛擬化事件”。這些虛擬化事件中的一些事件被稱作“特權(quán)事件”,這是因?yàn)樗鼈儽仨氂蒝MM140來進(jìn)行處理,以確保VMl50和160的正確操作、確保VMM140免受客戶的不當(dāng)操作、以及確??蛻裘馐芷渌蛻舻牟划?dāng)操作。
[0021]在任意給定的時(shí)刻,處理器120可能正在執(zhí)行來自VMM140或任何客戶的指令,因此VMM140或該客戶可能正在處理器120上運(yùn)行或者控制著處理器120。當(dāng)發(fā)生特權(quán)事件或客戶試圖訪問特權(quán)資源時(shí),可以把控制權(quán)從客戶轉(zhuǎn)移給VMM140。這里,從客戶向VMM140轉(zhuǎn)移控制權(quán)被稱作“VM退出(exit)”。在適當(dāng)?shù)靥幚碓撌录驇椭鷮?shí)現(xiàn)對(duì)資源的訪問之后,VMM140可以把控制權(quán)歸還給客戶。這里,從VMM140向客戶轉(zhuǎn)移控制權(quán)被稱作“VM進(jìn)入(entry),,。
[0022]在圖1的實(shí)施例中,處理器120根據(jù)存儲(chǔ)在虛擬機(jī)控制結(jié)構(gòu)(“VMCS”)132中的數(shù)據(jù)來控制VM150和VM160的操作。VMCS132是一種結(jié)構(gòu),其可以包含:一個(gè)客戶或多個(gè)客戶的狀態(tài)、VMM140的狀態(tài)、指示VMM140將如何控制一個(gè)客戶或多個(gè)客戶的操作的執(zhí)行控制信息、關(guān)于VM退出和VM進(jìn)入的信息、以及任意其它這樣的信息。處理器120從VMCS132讀取信息,以確定VM的執(zhí)行環(huán)境并限制VM的行為。在該實(shí)施例中,VMCS132被存儲(chǔ)在存儲(chǔ)器130中。在一些實(shí)施例中,使用多個(gè)VMCS以支持多個(gè)VM。盡管圖1示出VMCS132被存儲(chǔ)在存儲(chǔ)器130中,但是本發(fā)明并不要求在存儲(chǔ)器中存儲(chǔ)VMCS。
[0023]處理器120包括計(jì)數(shù)器171、173、175和177。在該實(shí)施例中,計(jì)數(shù)器171、173、175和177是性能計(jì)數(shù)器,其可以由運(yùn)行在處理器120上的軟件進(jìn)行編程以便記錄性能監(jiān)測(cè)信息;然而,其它實(shí)施例可以包括任意多個(gè)計(jì)數(shù)器和/或任意類型或長(zhǎng)度的計(jì)數(shù)器。例如,可以對(duì)任意一個(gè)計(jì)數(shù)器171、173、175和177進(jìn)行編程,以便每次發(fā)生選定的事件時(shí)該計(jì)數(shù)器加1,或在選定的事件期間每過一個(gè)時(shí)鐘周期該計(jì)數(shù)器加I。所述事件可以包括各種涉及在處理器120上執(zhí)行程序代碼的事件中的任意事件,例如,分支誤預(yù)測(cè)、高速緩存命中、高速緩存未命中、旁路轉(zhuǎn)換緩沖(translation lookaside buffer)命中、旁路轉(zhuǎn)換緩沖未命中等等。因此,可以使用性能計(jì)數(shù)器171、173、175和177來調(diào)節(jié)或剖析程序代碼,以在處理器120上產(chǎn)生可能的最優(yōu)性能。
[0024]處理器120還包括分別對(duì)應(yīng)于計(jì)數(shù)器171、173、175和177的計(jì)數(shù)器控制存儲(chǔ)單元172、174、176和178。計(jì)數(shù)器控制存儲(chǔ)單元172、174、176和178可以是寄存器或任何其它具有任意長(zhǎng)度的結(jié)構(gòu)、或一個(gè)或更多具有其它結(jié)構(gòu)的寄存器的部分,分別用來存儲(chǔ)用于對(duì)計(jì)數(shù)器171、173、175和177進(jìn)行控制或配置的信息??梢詫?duì)計(jì)數(shù)器控制存儲(chǔ)單元172、174、176和178進(jìn)行編程來分別存儲(chǔ)用于對(duì)計(jì)數(shù)器171、173、175和177進(jìn)行控制或配置的信息,例如這樣的信息:其用于啟用計(jì)數(shù)器、用于選擇將要進(jìn)行計(jì)數(shù)的事件、用于選擇計(jì)數(shù)方法(例如,事件發(fā)生的次數(shù)或事件的持續(xù)時(shí)間)、用于選擇計(jì)數(shù)條件(例如,基于檢測(cè)到事件時(shí)正在執(zhí)行的軟件的特權(quán)等級(jí))、以及用于設(shè)置任何其它控制、配置或其它變量。[0025]處理器120還包括全局計(jì)數(shù)器啟用存儲(chǔ)單元121,其可以是控制寄存器、配置寄存器、模式相關(guān)寄存器(model specific register)中的一個(gè)或更多比特,或用來存儲(chǔ)全局計(jì)數(shù)器啟用指示符的任意其它存儲(chǔ)單元。在一個(gè)實(shí)施例中,全局計(jì)數(shù)器啟用存儲(chǔ)單元121可以是可編程寄存器中的一個(gè)比特,其中該比特可以被設(shè)置為邏輯1,以便將全局計(jì)數(shù)器啟用指示符設(shè)置為“啟用”值,或者該比特可以被設(shè)置為邏輯0,以便將全局計(jì)數(shù)器啟用指示符設(shè)置為“禁用”值。
[0026]在另一個(gè)實(shí)施例中,全局計(jì)數(shù)器啟用存儲(chǔ)單元可以包括針對(duì)每個(gè)性能計(jì)數(shù)器的一個(gè)比特,其中每個(gè)比特可以被設(shè)置為邏輯1,以便將用于相對(duì)應(yīng)的性能計(jì)數(shù)器的單個(gè)計(jì)數(shù)器啟用指示符設(shè)置為“啟用”值。在其它實(shí)施例中,全局計(jì)數(shù)器啟用存儲(chǔ)單元中的一個(gè)比特或字段可以對(duì)應(yīng)于一組的任意多個(gè)性能計(jì)數(shù)器。在任意這些實(shí)施例中,全局啟用存儲(chǔ)單元可以包括對(duì)應(yīng)于任意多個(gè)性能計(jì)數(shù)器的任意多個(gè)比特或字段,并且還可以包括或關(guān)聯(lián)于一個(gè)或更多附加的啟用指示符(其可以被用來控制任意多個(gè)更直接控制性能計(jì)數(shù)器的比特或字段)。例如,一個(gè)存儲(chǔ)單元可以包括用于存儲(chǔ)“計(jì)數(shù)器啟用向量”的字段,該字段包括針對(duì)每個(gè)計(jì)數(shù)器的一個(gè)比特,并且該存儲(chǔ)單元內(nèi)的一個(gè)附加比特或在處理器120或虛擬化架構(gòu)100的其它地方的存儲(chǔ)單元或數(shù)據(jù)結(jié)構(gòu)中的一個(gè)附加比特可以被用來啟用或禁用該計(jì)數(shù)器啟用向量。這樣,客戶根據(jù)存儲(chǔ)在VMCS中的計(jì)數(shù)器啟用向量來單獨(dú)地對(duì)單個(gè)計(jì)數(shù)器進(jìn)行控制,但是可以設(shè)置附加比特的默認(rèn)值,以便當(dāng)執(zhí)行為不支持計(jì)數(shù)器啟用向量模型的處理器設(shè)計(jì)的VMM或其它宿主軟件時(shí),能夠自動(dòng)地禁用單個(gè)計(jì)數(shù)器控制。
[0027]計(jì)數(shù)器啟用邏輯170使用全局計(jì)數(shù)器啟用指示符的值、以及任意其它存儲(chǔ)在計(jì)數(shù)器控制存儲(chǔ)單元172、174、176和178中的相關(guān)信息,來分別控制計(jì)數(shù)器171、173、175和177的操作。如果全局計(jì)數(shù)器啟用指示符被設(shè)置為“啟用”值,則每個(gè)計(jì)數(shù)器根據(jù)其單個(gè)控制和配置信息來進(jìn)行操作。例如,因?yàn)橛?jì)數(shù)器控制存儲(chǔ)單元172的內(nèi)容包括被設(shè)置為“啟用”值的單個(gè)計(jì)數(shù)器啟用比特以及被設(shè)置對(duì)高速緩存命中進(jìn)行計(jì)數(shù)的事件選擇字段,所以當(dāng)高速緩存命中時(shí)計(jì)數(shù)器171會(huì)加1,而與此同時(shí),由于計(jì)數(shù)器控制存儲(chǔ)單元174的內(nèi)容包括被設(shè)置為“禁用”值的單個(gè)計(jì)數(shù)器啟用比特,所以計(jì)數(shù)器173不會(huì)加I。然而,如果全局計(jì)數(shù)器啟用指示符被設(shè)置為“禁用”值,則所有計(jì)數(shù)器171、173、175和177被禁用,而不會(huì)根據(jù)它們的單個(gè)控制和配置信息進(jìn)行操作。例如,即使計(jì)數(shù)器控制存儲(chǔ)單元172的內(nèi)容包括被設(shè)置為“啟用”值的單個(gè)計(jì)數(shù)器啟用比特以及被設(shè)置對(duì)高速緩存命中進(jìn)行計(jì)數(shù)的事件選擇字段,當(dāng)高速緩存命中時(shí)計(jì)數(shù)器171也不會(huì)加I。
[0028]此外,處理器120包括用于支持虛擬化的控制邏輯180,該虛擬化包括對(duì)計(jì)數(shù)器171、173、175和177的虛擬化??刂七壿?80可以是處理器120內(nèi)的微碼、可編程邏輯、硬編碼邏輯、或任何其它形式的控制邏輯。在其它實(shí)施例中,可以用處理器內(nèi)部的或處理器可訪問的任何部件或可讀的任何介質(zhì)(例如存儲(chǔ)器130 )中的任何形式的硬件、軟件或固件(例如處理器抽象層)來實(shí)現(xiàn)控制邏輯180。
[0029]控制邏輯180使處理器120執(zhí)行本發(fā)明的方法實(shí)施例(例如,以下參考圖2進(jìn)行描述的方法實(shí)施例),這是例如通過以下來實(shí)現(xiàn)的:使處理器120在其對(duì)來自宿主或客戶的虛擬化指令或其它指令進(jìn)行響應(yīng)期間執(zhí)行一個(gè)或更多微操作(例如,用以支持虛擬化)。
[0030]控制邏輯180包括VM進(jìn)入邏輯181,其用于把處理器120的控制權(quán)從宿主轉(zhuǎn)移到客戶(即,VM進(jìn)入),以及VM退出邏輯182,其用于把處理器120的控制權(quán)從客戶轉(zhuǎn)移到宿主(SP,VM退出)。在一些實(shí)施例中,也可以把控制權(quán)從一個(gè)客戶轉(zhuǎn)移到另一個(gè)客戶或從一個(gè)宿主轉(zhuǎn)移到另一個(gè)宿主。例如,在支持分層虛擬化的實(shí)施例中,運(yùn)行在處理器120上的VM上的軟件既可以是客戶又可以是宿主(例如,運(yùn)行在VM上的VMM對(duì)控制該VM的VMM而言是客戶,而對(duì)運(yùn)行在其控制的VM上的客戶而言是宿主)。
[0031]控制邏輯180還包括客戶狀態(tài)加載邏輯183、宿主狀態(tài)加載邏輯184以及客戶狀態(tài)存儲(chǔ)邏輯185??蛻魻顟B(tài)加載邏輯183用于在VM進(jìn)入時(shí)把客戶狀態(tài)從VMCS132加載到處理器120中。宿主狀態(tài)加載邏輯184用于在VM退出時(shí)把宿主狀態(tài)從VMCS132加載到處理器120中??蛻魻顟B(tài)存儲(chǔ)邏輯185用于在VM退出時(shí)把客戶狀態(tài)從處理器120存儲(chǔ)到VMCS132中。在一些實(shí)施例中,控制邏輯180還包括宿主狀態(tài)存儲(chǔ)邏輯186,其用于在VM進(jìn)入時(shí),在客戶狀態(tài)加載邏輯183把客戶狀態(tài)加載到處理器120之前,把宿主狀態(tài)從處理器120存儲(chǔ)到VMCS132中。在一些實(shí)施例中,控制邏輯180可以加載并存儲(chǔ)存在于其它系統(tǒng)部件(例如,輸入-輸出設(shè)備、存儲(chǔ)器控制器)中的狀態(tài)。
[0032]VMCS132可以包括用于支持虛擬化的字段、控制比特或其它數(shù)據(jù)結(jié)構(gòu)??刂七壿?80可以檢查或者以其它方式訪問這些數(shù)據(jù)結(jié)構(gòu),以確定如何管理VM環(huán)境。例如,可以設(shè)置客戶狀態(tài)加載啟用指示符133,以便針對(duì)VM進(jìn)入,使客戶狀態(tài)加載邏輯183把客戶值從客戶狀態(tài)存儲(chǔ)單元137加載到全局計(jì)數(shù)器啟用存儲(chǔ)單元121中;可以設(shè)置宿主狀態(tài)加載啟用指示符134,以便針對(duì)VM退出,使宿主狀態(tài)加載邏輯184把宿主值從宿主狀態(tài)存儲(chǔ)單元138加載到全局計(jì)數(shù)器啟用存儲(chǔ)單元121中;可以設(shè)置客戶狀態(tài)存儲(chǔ)啟用指示符135,以使客戶狀態(tài)存儲(chǔ)邏輯185把全局啟用存儲(chǔ)單元121的內(nèi)容存儲(chǔ)到客戶狀態(tài)存儲(chǔ)單元137中;并且可以設(shè)置宿主狀態(tài)存儲(chǔ)啟用指示符136,以使宿主狀態(tài)存儲(chǔ)邏輯186把全局啟用存儲(chǔ)單元121的內(nèi)容存儲(chǔ)到宿主狀態(tài)存儲(chǔ)單元138中,所有這些都將會(huì)在下面進(jìn)一步描述。在該實(shí)施例的該說明中,這些指示符是被設(shè)置以啟用或引發(fā)期望效果的控制比特,這里,設(shè)置意味著向該比特寫入邏輯1,但是在本發(fā)明的范圍之內(nèi)可以使用任何邏輯約定或命名。
[0033]使用這里描述的機(jī)制,VMM可以支持對(duì)僅在客戶執(zhí)行時(shí)發(fā)生的事件、僅在VMM執(zhí)行時(shí)發(fā)生的事件、或在VMM執(zhí)行和客戶執(zhí)行時(shí)發(fā)生的事件進(jìn)行計(jì)數(shù)。此外,VMM可以,一個(gè)客戶接一個(gè)客戶地,啟用或禁用性能計(jì)數(shù)器,作為該客戶和VMM之間的轉(zhuǎn)換(S卩,VM進(jìn)入或VM退出)的一部分。這種機(jī)制允許VMM對(duì)客戶“隱藏”它對(duì)性能計(jì)數(shù)器的影響。作為選擇,這種機(jī)制允許對(duì)在VMM中客戶使用的事件或在客戶中VMM使用的事件進(jìn)行計(jì)數(shù)。
[0034]圖2用方法200,一種用于對(duì)性能計(jì)數(shù)器進(jìn)行虛擬化的方法,說明了本發(fā)明的一個(gè)實(shí)施例。參考圖1的虛擬化架構(gòu)100來描述圖2的方法實(shí)施例,但是方法實(shí)施例不限于此。
[0035]在圖2的框210中,第一性能計(jì)數(shù)器被配置成對(duì)第一事件的發(fā)生進(jìn)行計(jì)數(shù)。例如,可以通過對(duì)計(jì)數(shù)器控制存儲(chǔ)單元172進(jìn)行編程來把計(jì)數(shù)器171配置成對(duì)高速緩存未命中進(jìn)行計(jì)數(shù)。在框212,第二性能計(jì)數(shù)器被配置成對(duì)第二事件的發(fā)生進(jìn)行計(jì)數(shù)。例如,可以通過對(duì)計(jì)數(shù)器控制存儲(chǔ)單元174進(jìn)行編程來把計(jì)數(shù)器173配置成對(duì)沒有異常終止(halt)的周期進(jìn)行計(jì)數(shù)。在其它實(shí)施例中,性能計(jì)數(shù)器可以被配置成對(duì)任何其它事件(例如旁路轉(zhuǎn)換緩沖未命中、分支誤預(yù)測(cè)等等)的發(fā)生進(jìn)行計(jì)數(shù)。
[0036]在圖2的框220中,圖1的VMM140為VM創(chuàng)建VMCS(例如,VMCS132)。在框222至Ij框226,VMM140配置VMCS132以實(shí)現(xiàn)支持對(duì)計(jì)數(shù)器171、173、175和177進(jìn)行虛擬化。在框222,設(shè)置客戶狀態(tài)加載啟用指示符133,以便針對(duì)VM進(jìn)入,使客戶狀態(tài)加載邏輯183把客戶值從客戶狀態(tài)存儲(chǔ)單元137加載到全局計(jì)數(shù)器啟用存儲(chǔ)單元121中。在框224,設(shè)置宿主狀態(tài)加載啟用指示符134,以便針對(duì)VM退出,使宿主狀態(tài)加載邏輯184把宿主值從宿主狀態(tài)存儲(chǔ)單元138加載到全局計(jì)數(shù)器啟用存儲(chǔ)單元121中。在框226,設(shè)置客戶狀態(tài)存儲(chǔ)啟用指示符135,以使客戶狀態(tài)存儲(chǔ)邏輯185把全局啟用存儲(chǔ)單元121的內(nèi)容存儲(chǔ)到客戶狀態(tài)存儲(chǔ)單元136中。
[0037]在框230,發(fā)起從宿主(B卩,VMM140)向客戶轉(zhuǎn)移處理器120的控制權(quán)。例如,VMM可以發(fā)起一個(gè)VM進(jìn)入。VM進(jìn)入可以包括:VM進(jìn)入邏輯181使處理器120執(zhí)行用于保存宿主狀態(tài)并加載客戶狀態(tài)的操作或微操作。在框232,VM進(jìn)入邏輯基于客戶狀態(tài)加載啟用指示符133,確定是否把客戶值從客戶狀態(tài)存儲(chǔ)單元137加載到全局計(jì)數(shù)器啟用存儲(chǔ)單元121中。如果設(shè)置了客戶狀態(tài)加載啟用指示符133,則在框234,客戶狀態(tài)加載邏輯183使來自客戶狀態(tài)存儲(chǔ)單元137的客戶值被加載到全局計(jì)數(shù)器啟用存儲(chǔ)單元121中;否則,不執(zhí)行框234。在框236,完成VM進(jìn)入并且控制權(quán)被轉(zhuǎn)移給客戶。在框238,客戶開始或繼續(xù)執(zhí)行。
[0038]在框239,計(jì)數(shù)器啟用邏輯170確定是否設(shè)置了全局計(jì)數(shù)器啟用指示符。如果沒有設(shè)置,則方法200繼續(xù)進(jìn)行到框258。如果設(shè)置了,則方法200繼續(xù)進(jìn)行到框240。在框240,確定是否發(fā)生了第一事件。如果發(fā)生了第一事件,則在框244,第一性能計(jì)數(shù)器如所配置的那樣進(jìn)行操作,即,在該實(shí)施例中,在框210中其被配置成對(duì)高速緩存未命中進(jìn)行計(jì)數(shù),因此第一性能計(jì)數(shù)器加I。在框250,確定是否發(fā)生了第二事件。如果發(fā)生了第二事件,則在框254,第二性能計(jì)數(shù)器如所配置的那樣進(jìn)行操作,即,在該實(shí)施例中,在框212中其被配置成對(duì)第二事件的發(fā)生進(jìn)行計(jì)數(shù),因此第二性能計(jì)數(shù)器加I。
[0039]在框258,確定是否發(fā)生了虛擬化事件。如果沒有發(fā)生,則方法200繼續(xù)進(jìn)行到框238。如果發(fā)生了虛擬化事件,則在框260,發(fā)起從客戶向宿主轉(zhuǎn)移處理器120的控制權(quán)。VM退出可以包括:VM退出邏輯182使處理器120執(zhí)行用于保存客戶狀態(tài)并加載宿主狀態(tài)的操作或微操作。
[0040]在框262,VM退出邏輯基于客戶狀態(tài)存儲(chǔ)啟用指示符135,確定是否把全局計(jì)數(shù)器啟用存儲(chǔ)單元121的內(nèi)容存儲(chǔ)到客戶狀態(tài)存儲(chǔ)單元137中。如果設(shè)置了客戶狀態(tài)存儲(chǔ)啟用指示符135,則在框264,客戶狀態(tài)存儲(chǔ)邏輯185把全局計(jì)數(shù)器啟用存儲(chǔ)單元121的內(nèi)容存儲(chǔ)到客戶狀態(tài)存儲(chǔ)單元137中;否則,不執(zhí)行框264。在一些實(shí)施例中,沒有客戶狀態(tài)存儲(chǔ)啟用指示符135。在一些實(shí)施例中,客戶狀態(tài)存儲(chǔ)邏輯185總是把全局計(jì)數(shù)器啟用存儲(chǔ)單元121的內(nèi)容存儲(chǔ)到客戶狀態(tài)存儲(chǔ)單元137中。在其它實(shí)施例中,客戶狀態(tài)存儲(chǔ)邏輯185從來不會(huì)作為VM退出處理的一部分而把全局計(jì)數(shù)器啟用存儲(chǔ)單元121的內(nèi)容存儲(chǔ)到客戶狀態(tài)存儲(chǔ)單元137中。在一些實(shí)施例中,客戶軟件試圖訪問全局計(jì)數(shù)器啟用存儲(chǔ)單元121會(huì)引起VM退出,或者是通過軟件約定(例如,VMM被要求正確設(shè)置VMCS中的控制,以便在訪問全局計(jì)數(shù)器啟用存儲(chǔ)單元121時(shí)引起VM退出),或者是通過處理器強(qiáng)制執(zhí)行這種VM退出。
[0041]在框266,VM退出邏輯基于宿主狀態(tài)加載啟用指示符134,確定是否把宿主值從宿主狀態(tài)存儲(chǔ)單元138加載到全局計(jì)數(shù)器啟用存儲(chǔ)單元121中。如果設(shè)置了宿主狀態(tài)加載啟用指示符134,則在框268,宿主狀態(tài)加載邏輯184使來自宿主狀態(tài)存儲(chǔ)單元138的宿主值被加載到全局計(jì)數(shù)器啟用存儲(chǔ)單元121中;否則,不執(zhí)行框268。
[0042]在框270,完成VM退出并且控制權(quán)被轉(zhuǎn)移到宿主。在框272,宿主開始或繼續(xù)執(zhí)行。
[0043]在框275,計(jì)數(shù)器啟用邏輯170確定是否設(shè)置了全局計(jì)數(shù)器啟用指示符。如果沒有設(shè)置,則方法200繼續(xù)進(jìn)行到框298。如果設(shè)置了,則方法200繼續(xù)進(jìn)行到框280。在框280,確定是否發(fā)生了第一事件。如果發(fā)生了第一事件,則在框284,第一性能計(jì)數(shù)器如所配置的那樣進(jìn)行操作,即,在該實(shí)施例中,在框210中其被配置成對(duì)高速緩存未命中進(jìn)行計(jì)數(shù),因此第一性能計(jì)數(shù)器加I。在框290,確定是否發(fā)生了第二事件。如果發(fā)生了第二事件,則在框294,第二性能計(jì)數(shù)器如所配置的那樣進(jìn)行操作,即,在該實(shí)施例中,在框212中其被配置成對(duì)第二事件的發(fā)生進(jìn)行計(jì)數(shù),因此第二性能計(jì)數(shù)器加I。
[0044]在框298,確定是否發(fā)生VM進(jìn)入。如果發(fā)生了 VM進(jìn)入,則方法200繼續(xù)進(jìn)行到框230。如果沒有發(fā)生,則方法200繼續(xù)進(jìn)行到框299。在框299,確定是否將要執(zhí)行異常終止或其它這樣的指令。如果不執(zhí)行,則方法200繼續(xù)進(jìn)行到框272。如果執(zhí)行,則方法200結(jié)束。
[0045]圖3用裸平臺(tái)硬件310說明了本發(fā)明的另一個(gè)實(shí)施例,該裸平臺(tái)硬件可以被用在虛擬化架構(gòu)100或其它虛擬化架構(gòu)中。除了另外專門描述的以外,對(duì)裸平臺(tái)硬件及其單元的說明也適用于裸平臺(tái)硬件310及其對(duì)應(yīng)的單元。裸平臺(tái)硬件310包括處理器320和存儲(chǔ)器 330。
[0046]處理器320包括計(jì)數(shù)器371、373、375和377。處理器320還包括分別對(duì)應(yīng)于計(jì)數(shù)器371、373、375和377的計(jì)數(shù)器控制存儲(chǔ)單元372、374、376和378,每個(gè)計(jì)數(shù)器控制存儲(chǔ)單元包含用于存儲(chǔ)計(jì)數(shù)器有效指示符的計(jì)數(shù)器有效存儲(chǔ)單元以及其它控制或配置信息,該計(jì)數(shù)器有效指示符用于啟用或禁用相對(duì)應(yīng)的計(jì)數(shù)器。此外,處理器320包括分別對(duì)應(yīng)于計(jì)數(shù)器371、373、375和377的計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元391、393、395和397。計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元391、393、395和397可以是寄存器或任何其它具有任意長(zhǎng)度的結(jié)構(gòu)、或一個(gè)或更多具有其它結(jié)構(gòu)的寄存器的部分,分別用來存儲(chǔ)用于標(biāo)識(shí)或標(biāo)記計(jì)數(shù)器371、373、375和377的信息??梢詫?duì)計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元391、393、395和397進(jìn)行編程,來存儲(chǔ)分別用于唯一地或冗余地(即,兩個(gè)計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元可以被用同一個(gè)值來編程)標(biāo)識(shí)計(jì)數(shù)器371、373、375和377的標(biāo)識(shí)符。
[0047]VMCS332包括計(jì)數(shù)器標(biāo)識(shí)符字段333,在該實(shí)施例中,計(jì)數(shù)器標(biāo)識(shí)符字段與每個(gè)計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元391、393、395和397具有相同的比特?cái)?shù),但是在其它實(shí)施例中其可以具有任意多個(gè)比特。其它實(shí)施例可以包括附加的計(jì)數(shù)器標(biāo)識(shí)符字段。通過創(chuàng)建VMCS332的VMM或通過任意其它軟件,可以對(duì)計(jì)數(shù)器標(biāo)識(shí)符字段333進(jìn)行編程,來存儲(chǔ)一個(gè)值,該值可以匹配或不匹配在計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元391、393、395和397中存儲(chǔ)的值中的一個(gè)或更多值。
[0048]處理器320還包括可以根據(jù)任何已知方法實(shí)現(xiàn)的比較邏輯322,其用于基于相對(duì)應(yīng)的計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元的內(nèi)容與計(jì)數(shù)器標(biāo)識(shí)符字段333的內(nèi)容的比較結(jié)果,為每個(gè)計(jì)數(shù)器生成計(jì)數(shù)器匹配信號(hào)。在該實(shí)施例中,如果相對(duì)應(yīng)的計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元的內(nèi)容與計(jì)數(shù)器標(biāo)識(shí)符字段333的內(nèi)容相匹配,則將針對(duì)該計(jì)數(shù)器的計(jì)數(shù)器匹配信號(hào)置為有效(assert)。在該實(shí)施例中,如果相對(duì)應(yīng)的計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元中的內(nèi)容等于O值,貝U不論計(jì)數(shù)器標(biāo)識(shí)符字段333中的內(nèi)容怎樣,也將針對(duì)該計(jì)數(shù)器的計(jì)數(shù)器匹配信號(hào)置為有效,以便使不使用本發(fā)明的計(jì)數(shù)器標(biāo)識(shí)符特性的軟件也能在包括該計(jì)數(shù)器標(biāo)識(shí)符特性的硬件上進(jìn)行期望的操作。在另一個(gè)實(shí)施例中,計(jì)數(shù)器匹配邏輯可以至少部分地基于其它因素(例如VMCS內(nèi)的其它字段的內(nèi)容)來確定“匹配”。例如,可以參考英特爾架構(gòu)中的各種控制寄存器(例如CR0、CR3或CR4寄存器)的值。作為選擇,計(jì)數(shù)器匹配邏輯可以包括確定當(dāng)前執(zhí)行的軟件是VMM還是客戶,并且基于VMCS中的一個(gè)或更多控制比特,僅當(dāng)客戶軟件正在執(zhí)行時(shí),才啟用計(jì)數(shù)器。
[0049]實(shí)施例可以包括一個(gè)或更多“計(jì)數(shù)器匹配啟用”控制比特或字段,用于通過禁用比較邏輯或通過任何其它希望的方式來啟用或禁用計(jì)數(shù)器匹配特性。例如,如果設(shè)置了計(jì)數(shù)器匹配啟用比特,則發(fā)生上述比較。然而,如果計(jì)數(shù)器匹配啟用比特被清零,則總是啟用計(jì)數(shù)器而不進(jìn)行比較,因此,計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元中的“O”值不需要上述特別處理。
[0050]計(jì)數(shù)器啟用邏輯370使用針對(duì)每個(gè)計(jì)數(shù)器的計(jì)數(shù)器匹配信號(hào)以及任意其它存儲(chǔ)在計(jì)數(shù)器控制存儲(chǔ)單元372、374、376和378中的相關(guān)信息,來分別控制計(jì)數(shù)器371、373、375和377的操作。如果針對(duì)一個(gè)計(jì)數(shù)器的計(jì)數(shù)器匹配信號(hào)被置為有效,則該計(jì)數(shù)器根據(jù)其單個(gè)控制和配置信息進(jìn)行操作。例如,如果計(jì)數(shù)器控制存儲(chǔ)單元372的內(nèi)容包括被設(shè)置為“啟用”值的單個(gè)計(jì)數(shù)器有效比特以及被設(shè)置對(duì)高速緩存命中進(jìn)行計(jì)數(shù)的事件選擇字段,則當(dāng)高速緩存命中時(shí)計(jì)數(shù)器371可以加I。然而,如果針對(duì)一個(gè)計(jì)數(shù)器的計(jì)數(shù)器匹配信號(hào)未被置為有效,則該計(jì)數(shù)器被禁用而不根據(jù)其單個(gè)控制和配置信息進(jìn)行操作。例如,即使計(jì)數(shù)器控制存儲(chǔ)單元372的內(nèi)容包括被設(shè)置為“啟用”值的單個(gè)計(jì)數(shù)器有效比特以及被設(shè)置對(duì)高速緩存命中進(jìn)行計(jì)數(shù)的事件選擇字段,當(dāng)高速緩存命中時(shí)計(jì)數(shù)器371也不會(huì)加I。
[0051]此外,處理器320包括用于支持虛擬化的控制邏輯380,該虛擬化包括對(duì)計(jì)數(shù)器371、373、375和377的虛擬化。控制邏輯380使處理器320執(zhí)行本發(fā)明的方法實(shí)施例(例如,以下參考圖4進(jìn)行描述的方法實(shí)施例),這是例如通過以下來實(shí)現(xiàn)的:使處理器320在其對(duì)來自宿主或客戶的虛擬化指令或其它指令進(jìn)行響應(yīng)期間執(zhí)行一個(gè)或更多微操作(例如,用以支持虛擬化)。
[0052]圖4用方法400,另一種用于對(duì)性能計(jì)數(shù)器進(jìn)行虛擬化的方法,說明了本發(fā)明的一個(gè)實(shí)施例。參考圖1和圖3來描述圖4的方法實(shí)施例,但是方法實(shí)施例不限于此。
[0053]在圖4的框410中,性能計(jì)數(shù)器被配置成對(duì)一種事件的發(fā)生進(jìn)行計(jì)數(shù)。例如,可以通過對(duì)計(jì)數(shù)器控制存儲(chǔ)單元372進(jìn)行編程來把計(jì)數(shù)器371配置成對(duì)高速緩存未命中進(jìn)行計(jì)數(shù)。在框412,計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元391被用期望的計(jì)數(shù)器標(biāo)識(shí)值進(jìn)行編程。
[0054]在框420,宿主為VM創(chuàng)建VMCS (例如,VMCS332)。在框422,宿主對(duì)VMCS332進(jìn)行配置以便實(shí)現(xiàn)支持對(duì)計(jì)數(shù)器371、373、375和377進(jìn)行虛擬化,包括用等于在框412中使用的計(jì)數(shù)器標(biāo)識(shí)值的值來對(duì)計(jì)數(shù)器標(biāo)識(shí)符字段333進(jìn)行編程。在該實(shí)施例中,也可以用同一個(gè)值來對(duì)VMCS332或任何其它VMCS (對(duì)應(yīng)于任意多個(gè)其它客戶或宿主)中的任意多個(gè)其它計(jì)數(shù)器標(biāo)識(shí)符字段進(jìn)行編程,以允許任意多個(gè)客戶或宿主共享一個(gè)或更多計(jì)數(shù)器。
[0055]在框430,處理器320的控制權(quán)從宿主轉(zhuǎn)移到客戶。在框432,客戶開始或繼續(xù)執(zhí)行。在框434,基于計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元391與計(jì)數(shù)器標(biāo)識(shí)符字段333的比較結(jié)果,生成計(jì)數(shù)器匹配信號(hào)。在該實(shí)施例中,如果計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元的內(nèi)容與計(jì)數(shù)器標(biāo)識(shí)符字段的內(nèi)容相匹配,則將該計(jì)數(shù)器匹配信號(hào)置為有效。
[0056]在框440,識(shí)別出該事件(B卩,在該實(shí)施例中,高速緩存未命中)的發(fā)生。在框442,計(jì)數(shù)器啟用邏輯370基于計(jì)數(shù)器匹配信號(hào)以及在相對(duì)應(yīng)的計(jì)數(shù)器控制存儲(chǔ)單元(例如,計(jì)數(shù)器控制存儲(chǔ)單元372)中的計(jì)數(shù)器有效存儲(chǔ)單元的內(nèi)容,來確定性能計(jì)數(shù)器是否加I。
[0057]如果計(jì)數(shù)器匹配信號(hào)被置為有效,并且沒有設(shè)置該計(jì)數(shù)器的計(jì)數(shù)器有效指示符,則在框444,性能計(jì)數(shù)器如所配置的那樣進(jìn)行操作,即,在該實(shí)施例中,在框410中其被配置成對(duì)高速緩存未命中進(jìn)行計(jì)數(shù),因此該性能計(jì)數(shù)器加I。如果計(jì)數(shù)器匹配信號(hào)未被置為有效或沒有設(shè)置該計(jì)數(shù)器的有效指示符,則不執(zhí)行框444。
[0058]在本發(fā)明的范圍之內(nèi),圖2和圖4所說明的方法可以按不同的次序來執(zhí)行,可以省略所說明的框來執(zhí)行、可以添加附加的框來執(zhí)行、或者可以利用重排序的、省略的或附加的框的組合來執(zhí)行。例如,VMCS可以按任意次序來配置VMCS,例如,可以按照任意次序重新安排框222至226。
[0059]可以在從創(chuàng)造到仿真到制造的各個(gè)階段中對(duì)處理器120或根據(jù)本發(fā)明的實(shí)施例設(shè)計(jì)的任何其它部件或部件的一部分進(jìn)行設(shè)計(jì)。表示一種設(shè)計(jì)的數(shù)據(jù)可以用許多方式來表示該設(shè)計(jì)。首先,在仿真中很有用的一種情況是,可以使用硬件描述語言或其它功能描述語言來表示硬件。此外或作為選擇,可以在設(shè)計(jì)過程的一些階段中,生產(chǎn)出具有邏輯和/或晶體管門的電路級(jí)模型。此外,大多數(shù)設(shè)計(jì)在某一階段上可以達(dá)到這樣一種級(jí)別,其中可以用表示各種器件的物理布局的數(shù)據(jù)來對(duì)該設(shè)計(jì)進(jìn)行建模。在使用常規(guī)半導(dǎo)體制造技術(shù)的情況下,表示器件布局模型的數(shù)據(jù)可以是這樣的數(shù)據(jù):其規(guī)定了在用于生產(chǎn)集成電路的掩膜的不同掩膜層上各種特性的存在與否。
[0060]在該設(shè)計(jì)的任何表示中,數(shù)據(jù)可以被存儲(chǔ)在任何形式的機(jī)器可讀介質(zhì)中。被調(diào)制或以其它方式生成的用來傳送這樣的信息的光波或電波、存儲(chǔ)器、或磁或光存儲(chǔ)介質(zhì)(例如磁盤)都可以是該機(jī)器可讀介質(zhì)。任意這些媒體都可以“攜帶”或“指示”該設(shè)計(jì)或在本發(fā)明的實(shí)施例中使用的其它信息。當(dāng)傳送指示或攜帶信息的電載波時(shí),就對(duì)電信號(hào)執(zhí)行復(fù)制、緩沖或重傳而言,創(chuàng)建了一個(gè)新的拷貝。因此,通信提供者或網(wǎng)絡(luò)提供者的行為可以構(gòu)成對(duì)包含了本發(fā)明的技術(shù)的制品(例如,載波)的拷貝的生成。
[0061]這樣,公開了用于對(duì)性能計(jì)數(shù)器進(jìn)行虛擬化的裝置、方法和系統(tǒng)。盡管已經(jīng)描述了某些實(shí)施例并且在附圖中示出,但是可以理解,這些實(shí)施例僅僅是說明而不是限制了該廣泛的發(fā)明,并且由于本領(lǐng)域技術(shù)人員在研究本公開內(nèi)容之后可以想到各種其它修改,因此本發(fā)明并不被限制于所示出和描述的特定構(gòu)造和安排。在像這樣的快速成長(zhǎng)且不易預(yù)見其進(jìn)一步發(fā)展的【技術(shù)領(lǐng)域】中,如技術(shù)進(jìn)步所推動(dòng)的,所公開的實(shí)施例可以被很容易地在安排和細(xì)節(jié)上進(jìn)行修改,而不背離本公開內(nèi)容的原理或所附權(quán)利要求的范圍。
【權(quán)利要求】
1.一種用于虛擬化性能計(jì)數(shù)器的裝置,包括: 計(jì)數(shù)器,由虛擬機(jī)監(jiān)視器VMM進(jìn)行虛擬化,該虛擬機(jī)監(jiān)視器VMM用于創(chuàng)建虛擬機(jī)控制結(jié)構(gòu)VMCS以支持該虛擬化的計(jì)數(shù)器; 計(jì)數(shù)器啟用存儲(chǔ)單元,用于存儲(chǔ)計(jì)數(shù)器啟用指示符,其中,所述計(jì)數(shù)器啟用存儲(chǔ)單元包括對(duì)應(yīng)于任意多個(gè)計(jì)數(shù)器的任意多個(gè)比特或字段; 計(jì)數(shù)器啟用邏輯,用于基于所述計(jì)數(shù)器啟用指示符來啟用所述計(jì)數(shù)器;以及 虛擬機(jī)控制邏輯,用于向客戶轉(zhuǎn)移所述裝置的控制權(quán)并且將所述裝置的控制權(quán)從該客戶轉(zhuǎn)移給宿主,所述虛擬機(jī)控制邏輯包括客戶狀態(tài)加載邏輯,宿主狀態(tài)加載邏輯和客戶狀態(tài)存儲(chǔ)邏輯,該客戶狀態(tài)加載邏輯針對(duì)控制權(quán)向所述客戶的轉(zhuǎn)移而將來自所述虛擬機(jī)控制結(jié)構(gòu)VMCS中的客戶值加載到所述計(jì)數(shù)器啟用存儲(chǔ)單元的比特或字段中。
2.根據(jù)權(quán)利要求1所述的裝置,其中,所述計(jì)數(shù)器用于記錄性能監(jiān)測(cè)信息。
3.根據(jù)權(quán)利要求1所述的裝置,其中,所述虛擬機(jī)控制邏輯還包括虛擬機(jī)進(jìn)入邏輯,該虛擬機(jī)進(jìn)入邏輯用于基于所述虛擬機(jī)控制結(jié)構(gòu)中的客戶狀態(tài)加載啟用指示符來啟用所述客戶狀態(tài)加載邏輯。
4.根據(jù)權(quán)利要求1所述的裝置,其中,所述虛擬機(jī)控制邏輯還包括虛擬機(jī)退出邏輯,該虛擬機(jī)退出邏輯用于基于所述虛擬機(jī)控制結(jié)構(gòu)中的宿主狀態(tài)加載啟用指示符來啟用所述宿主狀態(tài)加載邏輯。
5.根據(jù)權(quán)利要求1所述的裝置,其中,所述虛擬機(jī)控制邏輯還包括虛擬機(jī)退出邏輯,該虛擬機(jī)退出邏輯用于基于所述虛擬機(jī)控制結(jié)構(gòu)中的客戶狀態(tài)存儲(chǔ)啟用指示符來啟用所述客戶狀態(tài)存儲(chǔ)邏輯。
6.根據(jù)權(quán)利要求1所述的裝置,其中,所述VMM設(shè)置所述VMCS中的客戶狀態(tài)加載啟用指示符,使該客戶狀態(tài)加載邏輯針對(duì)控制權(quán)向所述客戶的轉(zhuǎn)移而將來自所述虛擬機(jī)控制結(jié)構(gòu)VMCS中的客戶狀態(tài)存儲(chǔ)單元的客戶值加載到所述計(jì)數(shù)器啟用存儲(chǔ)單元中。
7.根據(jù)權(quán)利要求1所述的裝置,其中,所述VMM設(shè)置所述VMCS中的宿主狀態(tài)加載啟用指示符,使所述宿主狀態(tài)加載邏輯針對(duì)控制權(quán)從所述客戶向所述宿主的轉(zhuǎn)移而將來自所述虛擬機(jī)控制結(jié)構(gòu)VMCS的宿主狀態(tài)存儲(chǔ)單元中的宿主值加載到所述計(jì)數(shù)器啟用存儲(chǔ)單元中。
8.根據(jù)權(quán)利要求6所述的裝置,其中,所述VMM設(shè)置所述VMCS中的客戶狀態(tài)存儲(chǔ)啟用指示符,以使該客戶狀態(tài)存儲(chǔ)邏輯針對(duì)控制權(quán)從所述客戶向所述宿主的轉(zhuǎn)移而將所述計(jì)數(shù)器啟用存儲(chǔ)單元的內(nèi)容存儲(chǔ)到所述虛擬機(jī)控制結(jié)構(gòu)VMCS的客戶狀態(tài)存儲(chǔ)單元中。
9.一種用于虛擬化性能計(jì)數(shù)器的裝置,包括: 計(jì)數(shù)器,由虛擬機(jī)監(jiān)視器VMM進(jìn)行虛擬化,該虛擬機(jī)監(jiān)視器VMM用于創(chuàng)建虛擬機(jī)控制結(jié)構(gòu)VMCS以實(shí)現(xiàn)支持對(duì)該虛擬化的計(jì)數(shù)器; 虛擬機(jī)控制邏輯,用于實(shí)施虛擬機(jī)VM退出和VM進(jìn)入,包括客戶狀態(tài)加載邏輯,宿主狀態(tài)加載邏輯和客戶狀態(tài)存儲(chǔ)邏輯; 計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元,用于存儲(chǔ)計(jì)數(shù)器標(biāo)識(shí)符,其中,所述計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元是可編程的; 比較邏輯,用于基于所述計(jì)數(shù)器標(biāo)識(shí)符與來自所述虛擬機(jī)控制結(jié)構(gòu)VMCS的計(jì)數(shù)器標(biāo)識(shí)符字段的內(nèi)容的比較結(jié)果來生成計(jì)數(shù)器匹配信號(hào),其中,所述計(jì)數(shù)器標(biāo)識(shí)符字段是可編程的;以及 啟用邏輯,用于生成用來啟用所述計(jì)數(shù)器的計(jì)數(shù)器啟用信號(hào),其中所述計(jì)數(shù)器啟用信號(hào)是基于所述計(jì)數(shù)器匹配信號(hào)的。
10.根據(jù)權(quán)利要求9所述的裝置,還包括: 計(jì)數(shù)器有效存儲(chǔ)單元,用于存儲(chǔ)計(jì)數(shù)器有效指示符,其中所述計(jì)數(shù)器啟用信號(hào)也是基于所述計(jì)數(shù)器有效指示符的。
11.根據(jù)權(quán)利要求9所述的裝置,其中所述VMM設(shè)置所述VMCS中的客戶狀態(tài)加載啟用指示符,使該客戶狀態(tài)加載邏輯針對(duì)所述VM進(jìn)入而將來自所述虛擬機(jī)控制結(jié)構(gòu)VMCS中的客戶狀態(tài)存儲(chǔ)單元的客戶值加載到所述計(jì)數(shù)器啟用存儲(chǔ)單元中。
12.根據(jù)權(quán)利要求11所述的裝置,其中所述VMM設(shè)置所述VMCS中的宿主狀態(tài)加載啟用指示符,使所述宿主狀態(tài)加載邏輯針對(duì)所述VM退出而將來自所述虛擬機(jī)控制結(jié)構(gòu)VMCS的宿主狀態(tài)存儲(chǔ)單元中的宿主值加載到所述計(jì)數(shù)器啟用存儲(chǔ)單元中。
13.根據(jù)權(quán)利要求11所述的裝置,其中所述VMM設(shè)置所述VMCS中的客戶狀態(tài)存儲(chǔ)啟用指示符,以使該客戶狀態(tài)存儲(chǔ)邏輯針對(duì)所述VM退出而將所述計(jì)數(shù)器啟用存儲(chǔ)單元的內(nèi)容存儲(chǔ)到所述虛擬機(jī)控制結(jié)構(gòu)VMCS的客戶狀態(tài)存儲(chǔ)單元中。
14.一種用于虛擬化性能計(jì)數(shù)器的方法,包括: 把處理器中的第一計(jì)數(shù)器配置成對(duì)第一事件的發(fā)生進(jìn)行計(jì)數(shù); 把所述處理器中的第二計(jì)數(shù)器配置成對(duì)第二事件的發(fā)生進(jìn)行計(jì)數(shù); 發(fā)起向客戶轉(zhuǎn)移所述處理器的控制權(quán); 配置虛擬機(jī)控制結(jié)構(gòu)(VMCS)以實(shí)現(xiàn)支持對(duì)所述處理器內(nèi)的第一與第二計(jì)數(shù)器進(jìn)行虛擬化,包括設(shè)置所述VMCS中的客戶狀態(tài)加載啟用指示符以把客戶值從所述虛擬機(jī)控制結(jié)構(gòu)VMCS加載到計(jì)數(shù)器啟用存儲(chǔ)單元中,其中,所述計(jì)數(shù)器啟用存儲(chǔ)單元用于存儲(chǔ)計(jì)數(shù)器啟用指示符并包括對(duì)應(yīng)于任意多個(gè)計(jì)數(shù)器的任意多個(gè)比特或字段; 完成向所述客戶轉(zhuǎn)移所述處理器的控制權(quán); 基于所述計(jì)數(shù)器啟用存儲(chǔ)單元的內(nèi)容以及所述第一事件的第一次發(fā)生,確定是否改變所述第一計(jì)數(shù)器的計(jì)數(shù)值;以及 基于所述計(jì)數(shù)器啟用存儲(chǔ)單元的內(nèi)容以及所述第二事件的第一次發(fā)生,確定是否改變所述第二計(jì)數(shù)器的計(jì)數(shù)值。
15.根據(jù)權(quán)利要求14所述的方法,還包括: 基于所述計(jì)數(shù)器啟用存儲(chǔ)單元的內(nèi)容以及所述第一事件的第二次發(fā)生,確定是否改變所述第一計(jì)數(shù)器的計(jì)數(shù)值;以及 基于所述計(jì)數(shù)器啟用存儲(chǔ)單元中的內(nèi)容以及所述第二事件的第二次發(fā)生,確定是否改變所述第二計(jì)數(shù)器的計(jì)數(shù)值。
16.根據(jù)權(quán)利要求14所述的方法,還包括: 發(fā)起從所述客戶向宿主轉(zhuǎn)移所述處理器的控制權(quán)。
17.根據(jù)權(quán)利要求16所述的方法,還包括: 設(shè)置所述VMCS中的宿主狀態(tài)加載啟用指示符,把宿主值從所述虛擬機(jī)控制結(jié)構(gòu)加載到所述計(jì)數(shù)器啟用存儲(chǔ)單元中;設(shè)置所述VMCS中的客戶狀態(tài)存儲(chǔ)啟用指示符,以在發(fā)起從所述客戶向所述宿主轉(zhuǎn)移所述處理器的控制權(quán)之后,把所述計(jì)數(shù)器啟用存儲(chǔ)單元的內(nèi)容存儲(chǔ)到所述虛擬機(jī)控制結(jié)構(gòu)中。
18.根據(jù)權(quán)利要求17所述的方法,還包括: 完成從所述客戶向所述宿主轉(zhuǎn)移所述處理器的控制權(quán)。
19.一種用于虛擬化性能計(jì)數(shù)器的系統(tǒng),包括: 存儲(chǔ)器,用于存儲(chǔ)用來控制虛擬機(jī)VM的虛擬機(jī)控制結(jié)構(gòu)VMCS ;以及 處理器,包括: 多個(gè)計(jì)數(shù)器,其中虛擬機(jī)監(jiān)視器VMM配置所述VMCS以實(shí)現(xiàn)支持對(duì)該多個(gè)計(jì)數(shù)器進(jìn)行虛擬化;; 計(jì)數(shù)器啟用存儲(chǔ)單元,用于存儲(chǔ)計(jì)數(shù)器啟用指示符,其中,所述計(jì)數(shù)器啟用存儲(chǔ)單元包括對(duì)應(yīng)于任意多個(gè)計(jì)數(shù)器的任意多個(gè)比特或字段; 計(jì)數(shù)器啟用邏輯,用于基于所述計(jì)數(shù)器啟用指示符來啟用所述多個(gè)計(jì)數(shù)器;以及 虛擬機(jī)控制邏輯,用于向客戶轉(zhuǎn)移所述處理器的控制權(quán)并且將所述處理器的控制權(quán)從該客戶轉(zhuǎn)移給宿主,所述虛擬機(jī)控制邏輯包括客戶狀態(tài)加載邏輯,宿主狀態(tài)加載邏輯和客戶狀態(tài)存儲(chǔ)邏輯。
20.根據(jù)權(quán)利要求19所述的系統(tǒng),其中,所述多個(gè)計(jì)數(shù)器用于記錄性能監(jiān)測(cè)信息。
21.根據(jù)權(quán)利要求19所述的系統(tǒng),其中,所述存儲(chǔ)器是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器。
22.根據(jù)權(quán)利要求19所述的系統(tǒng),`其中,所述VMM設(shè)置所述VMCS中的客戶狀態(tài)加載啟用指示符,使該客戶狀態(tài)加載邏輯針對(duì)控制權(quán)向所述客戶的轉(zhuǎn)移而將來自所述虛擬機(jī)控制結(jié)構(gòu)VMCS中的客戶狀態(tài)存儲(chǔ)單元的客戶值加載到所述計(jì)數(shù)器啟用存儲(chǔ)單元中。
23.根據(jù)權(quán)利要求19所述的系統(tǒng),其中,所述VMM設(shè)置所述VMCS中的宿主狀態(tài)加載啟用指示符,使所述宿主狀態(tài)加載邏輯針對(duì)控制權(quán)從所述客戶向所述宿主的轉(zhuǎn)移而將來自所述虛擬機(jī)控制結(jié)構(gòu)VMCS的宿主狀態(tài)存儲(chǔ)單元中的宿主值加載到所述計(jì)數(shù)器啟用存儲(chǔ)單元中。
24.根據(jù)權(quán)利要求22所述的系統(tǒng),其中,所述VMM設(shè)置所述VMCS中的客戶狀態(tài)存儲(chǔ)啟用指示符,以使該客戶狀態(tài)存儲(chǔ)邏輯針對(duì)控制權(quán)從所述客戶向所述宿主的轉(zhuǎn)移而將所述計(jì)數(shù)器啟用存儲(chǔ)單元的內(nèi)容存儲(chǔ)到所述虛擬機(jī)控制結(jié)構(gòu)VMCS的客戶狀態(tài)存儲(chǔ)單元中。
【文檔編號(hào)】G06F11/34GK103500137SQ201310403619
【公開日】2014年1月8日 申請(qǐng)日期:2007年8月6日 優(yōu)先權(quán)日:2006年8月8日
【發(fā)明者】E·科塔-羅布爾斯, G·奈格, S·貝內(nèi)特, A·安德森 申請(qǐng)人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1