两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

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

文檔序號(hào):6455442閱讀:447來(lái)源:國(guó)知局
專利名稱:虛擬化性能計(jì)數(shù)器的制作方法
技術(shù)領(lǐng)域
本公幵內(nèi)容屬于信息處理的領(lǐng)域,并且更明確地屬于在虛擬化環(huán)境中 使用性能計(jì)數(shù)器的領(lǐng)域。
背景技術(shù)
通常,信息處理系統(tǒng)中虛擬化的概念允許在單個(gè)信息處理系統(tǒng)上運(yùn)行
一個(gè)或更多操作系統(tǒng)(每個(gè)是一個(gè)"OS")的多個(gè)實(shí)例,即便每個(gè)OS被
設(shè)計(jì)為對(duì)系統(tǒng)及其資源具有完全、直接的控制權(quán)也可如此。虛擬化被典型
地通過(guò)使用軟件(例如,虛擬機(jī)監(jiān)視器或"VMM")來(lái)實(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)境之外的軟件。
信息處理系統(tǒng)中的物理處理器可以例如通過(guò)支持用于進(jìn)入虛擬化環(huán)境 以在VM中的虛擬處理器(即,受到VMM施加的限制的物理處理器)上 運(yùn)行客戶的指令,來(lái)支持虛擬化。在該虛擬化環(huán)境中,可以截聽某些事件、 操作和情況(例如要求訪問(wèn)特權(quán)寄存器(privilegedregister)或者資源的外 部中斷或嘗試),即,使處理器退出虛擬化環(huán)境以便VMM可以進(jìn)行操作(例 如,實(shí)現(xiàn)虛擬化策略)。物理處理器還可以支持其它用來(lái)維護(hù)虛擬化環(huán)境的 指令,并且物理處理器可以包括指示或控制該物理處理器的虛擬化能力的 存儲(chǔ)器位或寄存器位。
支持虛擬化環(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)。


在附圖中以示例的方式而非限制的方式說(shuō)明了本發(fā)明。 圖1用一種虛擬化架構(gòu)說(shuō)明了本發(fā)明的一個(gè)實(shí)施例。
圖2用一種用于對(duì)性能計(jì)數(shù)器進(jìn)行虛擬化的方法說(shuō)明了本發(fā)明的一個(gè) 實(shí)施例。
圖3用一種虛擬化架構(gòu)說(shuō)明了本發(fā)明的另一個(gè)實(shí)施例。
圖4用一種用于對(duì)性能計(jì)數(shù)器進(jìn)行虛擬化的方法說(shuō)明了本發(fā)明的另一
具體實(shí)施例方式
以下描述了用于對(duì)性能計(jì)數(shù)器進(jìn)行虛擬化的裝置、方法和系統(tǒng)的實(shí)施 例。在該說(shuō)明書中,可以給出許多特定細(xì)節(jié),例如部件和系統(tǒng)配置,以供 更細(xì)致了解本發(fā)明。然而,本領(lǐng)域的技術(shù)人員可以理解,在沒(méi)有這些特定 細(xì)節(jié)的情況下也可以實(shí)現(xiàn)本發(fā)明。此外,沒(méi)有詳細(xì)示出一些眾所周知的結(jié) 構(gòu)、電路等等,以便避免不必要地模糊本發(fā)明。
通過(guò)降低在宿主和客戶之間以及多個(gè)客戶之間進(jìn)行轉(zhuǎn)換時(shí)所必須保存 和加載的狀態(tài)信息量,可以提高虛擬化環(huán)境的性能。本發(fā)明的實(shí)施例可以 用來(lái)對(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ù)器。
圖1用虛擬化架構(gòu)100說(shuō)明了本發(fā)明的一個(gè)實(shí)施例。在圖1中,裸平 臺(tái)硬件110可以是任何能夠執(zhí)行任意OS或VMM軟件的數(shù)據(jù)處理裝置。 例如,裸平臺(tái)硬件可以是個(gè)人計(jì)算機(jī)、大型計(jì)算機(jī)、便攜式計(jì)算機(jī)、手持
7設(shè)備、機(jī)頂盒、服務(wù)器或任意其它計(jì)算系統(tǒng)的平臺(tái)硬件。裸平臺(tái)硬件110
包括處理器120和存儲(chǔ)器130。
處理器120可以是任何類型的處理器,包括通用微處理器(例如,英 特爾@奔騰@系列處理器、安騰⑧系列處理器、或英特爾@公司的其它系列處 理器中的處理器),或來(lái)自其它公司的其它處理器,或者數(shù)字信號(hào)處理器或 微控制器。盡管圖1僅示出一個(gè)這種處理器120,但是裸平臺(tái)硬件110可 以包括任意多個(gè)處理器,包括任意多個(gè)多核處理器(每個(gè)擁有任意多個(gè)執(zhí) 行內(nèi)核)以及任意多個(gè)多線程處理器(每個(gè)擁有任意多個(gè)線程)。
存儲(chǔ)器130可以是靜態(tài)或動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器、基于半導(dǎo)體的只讀或 閃速存儲(chǔ)器、磁盤或光盤存儲(chǔ)器、處理器120可讀的任何其它類型的介質(zhì)、 或任意這樣的介質(zhì)的組合。處理器120和存儲(chǔ)器130可以根據(jù)任何已知的 方法(例如,直接或間接地通過(guò)一個(gè)或更多總線、點(diǎn)到點(diǎn)的連接、或其它 有線的或無(wú)線的連接)來(lái)互相耦合或進(jìn)行通信。裸平臺(tái)硬件110還可以包 括任意多個(gè)附加的設(shè)備或連接。
除裸硬件平臺(tái)110之外,圖1還示出了 VMM 140、 VM 150和160、 客戶操作系統(tǒng)152和162、以及應(yīng)用程序154、 155、 164和165。
VMM 140可以是任何被安裝在裸平臺(tái)硬件110上或可由其訪問(wèn)的軟 件、固件或硬件宿主,其用于向客戶提供VM(即裸平臺(tái)硬件IIO的抽象), 或用于創(chuàng)建VM、管理VM及實(shí)現(xiàn)虛擬化策略。在其它實(shí)施例中,宿主可 以是任何VMM、管理程序(hypervisor)、OS或其它能夠控制裸平臺(tái)硬件110 的軟件、固件或硬件??蛻艨梢允侨魏蜲S、任何VMM (包括VMM 140 的另一實(shí)例)、任何管理程序、或者任何應(yīng)用程序或其它軟件。
每個(gè)客戶希望根據(jù)VM上提供的處理器和平臺(tái)的架構(gòu)來(lái)訪問(wèn)物理資 源,例如裸平臺(tái)硬件110的處理器和平臺(tái)寄存器、存儲(chǔ)器以及輸入/輸出設(shè) 備。圖1示出兩個(gè)VM, 150和160,在VM 150上安裝有客戶OS 152及 客戶應(yīng)用程序154和155,以及在VM 160上安裝有客戶OS 162及客戶應(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)用程序。
客戶能夠訪問(wèn)的資源可以或者被歸類為"特權(quán)"資源,或者被歸類為
8"非特權(quán)"資源。對(duì)于特權(quán)資源,VMM140幫助實(shí)現(xiàn)了客戶希望的功能, 但保留對(duì)該資源的最終控制權(quán)。非特權(quán)資源不需要由VMM 140進(jìn)行控制, 并且可以被客戶直接訪問(wèn)。
此外,每個(gè)客戶OS期望處理各種事件,例如異常(舉例來(lái)說(shuō),頁(yè)面 錯(cuò)誤和常規(guī)保護(hù)錯(cuò)誤)、中斷(舉例來(lái)說(shuō),硬件中斷和軟件中斷)和平臺(tái)事 件(舉例來(lái)說(shuō),初始化和系統(tǒng)管理中斷)。這里,這些異常、中斷和平臺(tái)事 件被一并、且被各自稱作"虛擬化事件"。這些虛擬化事件中的一些事件被 稱作"特權(quán)事件",這是因?yàn)樗鼈儽仨氂蒝MM 140來(lái)進(jìn)行處理,以確保 VM150和160的正確操作、確保VMM140免受客戶的不當(dāng)操作、以及確 保客戶免受其它客戶的不當(dāng)操作。
在任意給定的時(shí)刻,處理器120可能正在執(zhí)行來(lái)自VMM 140或任何 客戶的指令,因此VMM 140或該客戶可能正在處理器120上運(yùn)行或者控 制著處理器120。當(dāng)發(fā)生特權(quán)事件或客戶試圖訪問(wèn)特權(quán)資源時(shí),可以把控 制權(quán)從客戶轉(zhuǎn)移給VMM 140。這里,從客戶向VMM 140轉(zhuǎn)移控制權(quán)被稱 作"VM退出(exit)"。在適當(dāng)?shù)靥幚碓撌录驇椭鷮?shí)現(xiàn)對(duì)資源的訪問(wèn)之后, VMM 140可以把控制權(quán)歸還給客戶。這里,從VMM 140向客戶轉(zhuǎn)移控制 權(quán)被稱作"VM進(jìn)入(entry)"。
在圖1的實(shí)施例中,處理器120根據(jù)存儲(chǔ)在虛擬機(jī)控制結(jié)構(gòu)("VMCS") 132中的數(shù)據(jù)來(lái)控制VM 150和VM 160的操作。VMCS 132是一種結(jié)構(gòu), 其可以包含 一個(gè)客戶或多個(gè)客戶的狀態(tài)、VMM140的狀態(tài)、指示VMM 140將如何控制一個(gè)客戶或多個(gè)客戶的操作的執(zhí)行控制信息、關(guān)于VM退 出和VM進(jìn)入的信息、以及任意其它這樣的信息。處理器120從VMCS 132 讀取信息,以確定VM的執(zhí)行環(huán)境并限制VM的行為。在該實(shí)施例中, VMCS 132被存儲(chǔ)在存儲(chǔ)器130中。在一些實(shí)施例中,使用多個(gè)VMCS以 支持多個(gè)VM。盡管圖1示出VMCS 132被存儲(chǔ)在存儲(chǔ)器130中,但是本 發(fā)明并不要求在存儲(chǔ)器中存儲(chǔ)VMCS。
處理器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, 或在選定的事件期間每過(guò)一個(gè)時(shí)鐘周期該計(jì)數(shù)器加1。所述事件可以包括 各種涉及在處理器120上執(zhí)行程序代碼的事件中的任意事件,例如,分支 誤預(yù)測(cè)、高速緩存命中、高速緩存未命中、旁路轉(zhuǎn)換緩沖(translation lookaside buffer)命中、旁路轉(zhuǎn)換緩沖未命中等等。因此,可以使用性能 計(jì)數(shù)器171、 173、 175和177來(lái)調(diào)節(jié)或剖析程序代碼,以在處理器120上 產(chǎn)生可能的最優(yōu)性能。
處理器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)的寄存器的部分,分別用來(lái)存儲(chǔ)用于對(duì)計(jì)數(shù)器171、 173、 175和 177進(jìn)行控制或配置的信息??梢詫?duì)計(jì)數(shù)器控制存儲(chǔ)單元172、 174、 176 和178進(jìn)行編程來(lái)分別存儲(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è)置任何其它控制、配置或其它變量。
處理器120還包括全局計(jì)數(shù)器啟用存儲(chǔ)單元121,其可以是控制寄存 器、配置寄存器、模式相關(guān)寄存器(model specific register)中的一個(gè)或更 多比特,或用來(lái)存儲(chǔ)全局計(jì)數(shù)器啟用指示符的任意其它存儲(chǔ)單元。在一個(gè) 實(shí)施例中,全局計(jì)數(shù)器啟用存儲(chǔ)單元121可以是可編程寄存器中的一個(gè)比 特,其中該比特可以被設(shè)置為邏輯1,以便將全局計(jì)數(shù)器啟用指示符設(shè)置 為"啟用"值,或者該比特可以被設(shè)置為邏輯0,以便將全局計(jì)數(shù)器啟用 指示符設(shè)置為"禁用"值。
在另一個(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è)或更多附加的啟用指示符(其可以被用來(lái)控制任意多個(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è)附加比特可以被用來(lái)啟用或禁用該計(jì)數(shù)器啟 用向量。這樣,客戶根據(jù)存儲(chǔ)在VMCS中的計(jì)數(shù)器啟用向量來(lái)單獨(dú)地對(duì)單 個(gè)計(jì)數(shù)器進(jìn)行控制,但是可以設(shè)置附加比特的默認(rèn)值,以便當(dāng)執(zhí)行為不支 持計(jì)數(shù)器啟用向量模型的處理器設(shè)計(jì)的VMM或其它宿主軟件時(shí),能夠自 動(dòng)地禁用單個(gè)計(jì)數(shù)器控制。
計(jì)數(shù)器啟用邏輯170使用全局計(jì)數(shù)器啟用指示符的值、以及任意其它 存儲(chǔ)在計(jì)數(shù)器控制存儲(chǔ)單元172、 174、 176和178中的相關(guān)信息,來(lái)分別 控制計(jì)數(shù)器171、 173、 175和177的操作。如果全局計(jì)數(shù)器啟用指示符被 設(shè)置為"啟用"值,則每個(gè)計(jì)數(shù)器根據(jù)其單個(gè)控制和配置信息來(lái)進(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ì)加1。然而,如果全局計(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ì)加1。
此外,處理器120包括用于支持虛擬化的控制邏輯180,該虛擬化包 括對(duì)計(jì)數(shù)器171、 173、 175和177的虛擬化??刂七壿?80可以是處理器 120內(nèi)的微碼、可編程邏輯、硬編碼邏輯、或任何其它形式的控制邏輯。 在其它實(shí)施例中,可以用處理器內(nèi)部的或處理器可訪問(wèn)的任何部件或可讀 的任何介質(zhì)(例如存儲(chǔ)器130)中的任何形式的硬件、軟件或固件(例如 處理器抽象層)來(lái)實(shí)現(xiàn)控制邏輯180。
控制邏輯180使處理器120執(zhí)行本發(fā)明的方法實(shí)施例(例如,以下參 考圖2進(jìn)行描述的方法實(shí)施例),這是例如通過(guò)以下來(lái)實(shí)現(xiàn)的:使處理器
ii120在其對(duì)來(lái)自宿主或客戶的虛擬化指令或其它指令進(jìn)行響應(yīng)期間執(zhí)行一 個(gè)或更多微操作(例如,用以支持虛擬化)。
控制邏輯180包括VM進(jìn)入邏輯181,其用于把處理器120的控制權(quán) 從宿主轉(zhuǎn)移到客戶(即,VM進(jìn)入),以及VM退出邏輯182,其用于把處 理器120的控制權(quán)從客戶轉(zhuǎn)移到宿主(即,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上的客戶而言是 宿主)。
控制邏輯180還包括客戶狀態(tài)加載邏輯183、宿主狀態(tài)加載邏輯184 以及客戶狀態(tài)存儲(chǔ)邏輯185??蛻魻顟B(tài)加載邏輯183用于在VM進(jìn)入時(shí)把 客戶狀態(tài)從VMCS 132加載到處理器120中。宿主狀態(tài)加載邏輯184用于 在VM退出時(shí)把宿主狀態(tài)從VMCS 132加載到處理器120中??蛻魻顟B(tài)存 儲(chǔ)邏輯185用于在VM退出時(shí)把客戶狀態(tài)從處理器120存儲(chǔ)到VMCS 132 中。在一些實(shí)施例中,控制邏輯180還包括宿主狀態(tài)存儲(chǔ)邏輯186,其用 于在VM進(jìn)入時(shí),在客戶狀態(tài)加載邏輯183把客戶狀態(tài)加載到處理器120 之前,把宿主狀態(tài)從處理器120存儲(chǔ)到VMCS 132中。在一些實(shí)施例中, 控制邏輯180可以加載并存儲(chǔ)存在于其它系統(tǒng)部件(例如,輸入-輸出設(shè)備、 存儲(chǔ)器控制器)中的狀態(tài)。
VMCS 132可以包括用于支持虛擬化的字段、控制比特或其它數(shù)據(jù)結(jié) 構(gòu)??刂七壿?80可以檢查或者以其它方式訪問(wèn)這些數(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í)施例的該說(shuō)明中,這些指示符是被設(shè)置以啟用或引發(fā)期望效果的控 制比特,這里,設(shè)置意味著向該比特寫入邏輯1,但是在本發(fā)明的范圍之 內(nèi)可以使用任何邏輯約定或命名。
使用這里描述的機(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)換(即,VM進(jìn)入或VM退出)的 一部分。這種機(jī)制允許VMM對(duì)客戶"隱藏"它對(duì)性能計(jì)數(shù)器的影響。作 為選擇,這種機(jī)制允許對(duì)在VMM中客戶使用的事件或在客戶中VMM使 用的事件進(jìn)行計(jì)數(shù)。
圖2用方法200, 一種用于對(duì)性能計(jì)數(shù)器進(jìn)行虛擬化的方法,說(shuō)明了 本發(fā)明的一個(gè)實(shí)施例。參考圖1的虛擬化架構(gòu)100來(lái)描述圖2的方法實(shí)施 例,但是方法實(shí)施例不限于此。
在圖2的框210中,第一性能計(jì)數(shù)器被配置成對(duì)第一事件的發(fā)生進(jìn)行 計(jì)數(shù)。例如,可以通過(guò)對(duì)計(jì)數(shù)器控制存儲(chǔ)單元172進(jìn)行編程來(lái)把計(jì)數(shù)器171 配置成對(duì)高速緩存未命中進(jìn)行計(jì)數(shù)。在框212,第二性能計(jì)數(shù)器被配置成 對(duì)第二事件的發(fā)生進(jìn)行計(jì)數(shù)。例如,可以通過(guò)對(duì)計(jì)數(shù)器控制存儲(chǔ)單元174 進(jìn)行編程來(lái)把計(jì)數(shù)器173配置成對(duì)沒(méi)有異常終止(halt)的周期進(jìn)行計(jì)數(shù)。 在其它實(shí)施例中,性能計(jì)數(shù)器可以被配置成對(duì)任何其它事件(例如旁路轉(zhuǎn) 換緩沖未命中、分支誤預(yù)測(cè)等等)的發(fā)生進(jìn)行計(jì)數(shù)。
在圖2的框220中,圖1的VMM140為VM創(chuàng)建VMCS(例如,VMCS 132)。在框222到框226, VMM 140配置VMCS 132以實(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中。在框230,發(fā)起從宿主(即,VMM 140)向客戶轉(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使來(lái)自客戶狀態(tài)存儲(chǔ)單元137的客戶值被加載到全局計(jì)數(shù)器 啟用存儲(chǔ)單元121中;否則,不執(zhí)行框234。在框236,完成VM進(jìn)入并 且控制權(quán)被轉(zhuǎn)移給客戶。在框238,客戶開始或繼續(xù)執(zhí)行。
在框239,計(jì)數(shù)器啟用邏輯170確定是否設(shè)置了全局計(jì)數(shù)器啟用指示 符。如果沒(méi)有設(shè)置,則方法200繼續(xù)進(jìn)行到框258。如果設(shè)置了,則方法 200繼續(xù)進(jìn)行到框240。在框240,確定是否發(fā)生了第一事件。如果發(fā)生了 第一事件,則在框244,第一性能計(jì)數(shù)器如所配置的那樣進(jìn)行操作,艮P, 在該實(shí)施例中,在框210中其被配置成對(duì)高速緩存未命中進(jìn)行計(jì)數(shù),因此 第一性能計(jì)數(shù)器加1。在框250,確定是否發(fā)生了第二事件。如果發(fā)生了第 二事件,則在框254,第二性能計(jì)數(shù)器如所配置的那樣進(jìn)行操作,即,在 該實(shí)施例中,在框212中其被配置成對(duì)第二事件的發(fā)生進(jìn)行計(jì)數(shù),因此第 二性能計(jì)數(shù)器加1。
在框258,確定是否發(fā)生了虛擬化事件。如果沒(méi)有發(fā)生,則方法200 繼續(xù)進(jìn)行到框238。如果發(fā)生了虛擬化事件,則在框260,發(fā)起從客戶向宿 主轉(zhuǎn)移處理器120的控制權(quán)。VM退出可以包括VM退出邏輯182使處 理器120執(zhí)行用于保存客戶狀態(tài)并加載宿主狀態(tài)的操作或微操作。
在框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í)施例中,沒(méi)有客戶狀態(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從來(lái)不會(huì)作為VM退出處理的一部分而把全局計(jì)數(shù)器啟用存儲(chǔ)單元121的內(nèi)容存儲(chǔ)到客戶狀態(tài)存儲(chǔ)單元137中。在一些實(shí)施 例中,客戶軟件試圖訪問(wèn)全局計(jì)數(shù)器啟用存儲(chǔ)單元121會(huì)引起VM退出, 或者是通過(guò)軟件約定(例如,VMM被要求正確設(shè)置VMCS中的控制,以 便在訪問(wèn)全局計(jì)數(shù)器啟用存儲(chǔ)單元121時(shí)引起VM退出),或者是通過(guò)處 理器強(qiáng)制執(zhí)行這種VM退出。
在框266, VM退出邏輯基于宿主狀態(tài)加載啟用指示符134,確定是否 把宿主值從宿主狀態(tài)存儲(chǔ)單元138加載到全局計(jì)數(shù)器啟用存儲(chǔ)單元121中。 如果設(shè)置了宿主狀態(tài)加載啟用指示符134,則在框268,宿主狀態(tài)加載邏輯 184使來(lái)自宿主狀態(tài)存儲(chǔ)單元138的宿主值被加載到全局計(jì)數(shù)器啟用存儲(chǔ) 單元121中;否則,不執(zhí)行框268。
在框270,完成VM退出并且控制權(quán)被轉(zhuǎn)移到宿主。在框272,宿主 開始或繼續(xù)執(zhí)行。
在框275,計(jì)數(shù)器啟用邏輯170確定是否設(shè)置了全局計(jì)數(shù)器啟用指示 符。如果沒(méi)有設(shè)置,則方法200繼續(xù)進(jìn)行到框298。如果設(shè)置了,則方法 200繼續(xù)進(jìn)行到框280。在框2S0,確定是否發(fā)生了第一事件。如果發(fā)生了 第一事件,則在框284,第一性能計(jì)數(shù)器如所配置的那樣進(jìn)行操作,艮P, 在該實(shí)施例中,在框210中其被配置成對(duì)高速緩存未命中進(jìn)行計(jì)數(shù),因此 第一性能計(jì)數(shù)器加1。在框290,確定是否發(fā)生了第二事件。如果發(fā)生了第 二事件,則在框294,第二性能計(jì)數(shù)器如所配置的那樣進(jìn)行操作,即,在 該實(shí)施例中,在框212中其被配置成對(duì)第二事件的發(fā)生進(jìn)行計(jì)數(shù),因此第 二性能計(jì)數(shù)器加1。
在框298,確定是否發(fā)生VM進(jìn)入。如果發(fā)生了 VM進(jìn)入,則方法200 繼續(xù)進(jìn)行到框230。如果沒(méi)有發(fā)生,則方法200繼續(xù)進(jìn)行到框299。在框 299,確定是否將要執(zhí)行異常終止或其它這樣的指令。如果不執(zhí)行,則方法 200繼續(xù)進(jìn)行到框272。如果執(zhí)行,則方法200結(jié)束。
圖3用裸平臺(tái)硬件310說(shuō)明了本發(fā)明的另 一個(gè)實(shí)施例,該裸平臺(tái)硬件 可以被用在虛擬化架構(gòu)100或其它虛擬化架構(gòu)中。除了另外專門描述的以 外,對(duì)裸平臺(tái)硬件及其單元的說(shuō)明也適用于裸平臺(tái)硬件310及其對(duì)應(yīng)的單 元。裸平臺(tái)硬件310包括處理器320和存儲(chǔ)器330。
處理器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)的寄存器的部分,分別用來(lái)存儲(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)行編程,來(lái)存儲(chǔ)分別用于唯一地或冗 余地(即,兩個(gè)計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元可以被用同一個(gè)值來(lái)編程)標(biāo)識(shí)計(jì) 數(shù)器371、 373、 375和377的標(biāo)識(shí)符。
VMCS 332包括計(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í)符字段。通過(guò)創(chuàng)建VMCS 332的VMM或通過(guò)任意其 它軟件,可以對(duì)計(jì)數(shù)器標(biāo)識(shí)符字段333進(jìn)行編程,來(lái)存儲(chǔ)一個(gè)值,該值可 以匹配或不匹配在計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元391、 393、 395和397中存儲(chǔ)的 值中的一個(gè)或更多值。
處理器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值,則不論 計(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) 容)來(lái)確定"匹配"。例如,可以參考英特爾架構(gòu)中的各種控制寄存器(例 如CRO、 CR3或CR4寄存器)的值。作為選擇,計(jì)數(shù)器匹配邏輯可以包括確定當(dāng)前執(zhí)行的軟件是VMM還是客戶,并且基于VMCS中的一個(gè)或更多 控制比特,僅當(dāng)客戶軟件正在執(zhí)行時(shí),才啟用計(jì)數(shù)器。
實(shí)施例可以包括一個(gè)或更多"計(jì)數(shù)器匹配啟用"控制比特或字段,用 于通過(guò)禁用比較邏輯或通過(guò)任何其它希望的方式來(lái)啟用或禁用計(jì)數(shù)器匹配 特性。例如,如果設(shè)置了計(jì)數(shù)器匹配啟用比特,則發(fā)生上述比較。然而, 如果計(jì)數(shù)器匹配啟用比特被清零,則總是啟用計(jì)數(shù)器而不進(jìn)行比較,因此, 計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元中的"0"值不需要上述特別處理。
計(jì)數(shù)器啟用邏輯370使用針對(duì)每個(gè)計(jì)數(shù)器的計(jì)數(shù)器匹配信號(hào)以及任意 其它存儲(chǔ)在計(jì)數(shù)器控制存儲(chǔ)單元372、 374、 376和378中的相關(guān)信息,來(lái) 分別控制計(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可以加1。然而,如果針對(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ì)加1。
此外,處理器320包括用于支持虛擬化的控制邏輯380,該虛擬化包 括對(duì)計(jì)數(shù)器371、 373、 375和377的虛擬化??刂七壿?80使處理器320 執(zhí)行本發(fā)明的方法實(shí)施例(例如,以下參考圖4進(jìn)行描述的方法實(shí)施例), 這是例如通過(guò)以下來(lái)實(shí)現(xiàn)的使處理器320在其對(duì)來(lái)自宿主或客戶的虛擬 化指令或其它指令進(jìn)行響應(yīng)期間執(zhí)行一個(gè)或更多微操作(例如,用以支持 虛擬化)。
圖4用方法400,另一種用于對(duì)性能計(jì)數(shù)器進(jìn)行虛擬化的方法,說(shuō)明 了本發(fā)明的一個(gè)實(shí)施例。參考圖1和圖3來(lái)描述圖4的方法實(shí)施例,但是 方法實(shí)施例不限于此。
在圖4的框410中,性能計(jì)數(shù)器被配置成對(duì)一種事件的發(fā)生進(jìn)行計(jì)數(shù)。 例如,可以通過(guò)對(duì)計(jì)數(shù)器控制存儲(chǔ)單元372進(jìn)行編程來(lái)把計(jì)數(shù)器371配置 成對(duì)高速緩存未命中進(jìn)行計(jì)數(shù)。在框412,計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元391被用期望的計(jì)數(shù)器標(biāo)識(shí)值進(jìn)行編程。
在框420,宿主為VM創(chuàng)建VMCS (例如,VMCS 332)。在框422, 宿主對(duì)VMCS 332進(jìn)行配置以便實(shí)現(xiàn)支持對(duì)計(jì)數(shù)器371、 373、 375和377 進(jìn)行虛擬化,包括用等于在框412中使用的計(jì)數(shù)器標(biāo)識(shí)值的值來(lái)對(duì)計(jì)數(shù)器 標(biāo)識(shí)符字段333進(jìn)行編程。在該實(shí)施例中,也可以用同一個(gè)值來(lái)對(duì)VMCS 332或任何其它VMCS (對(duì)應(yīng)于任意多個(gè)其它客戶或宿主)中的任意多個(gè) 其它計(jì)數(shù)器標(biāo)識(shí)符字段進(jìn)行編程,以允許任意多個(gè)客戶或宿主共享一個(gè)或 更多計(jì)數(shù)器。
在框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)置為有效。
在框440,識(shí)別出該事件(即,在該實(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)容,來(lái)確定性能計(jì)數(shù)器是否加1。
如果計(jì)數(shù)器匹配信號(hào)被置為有效,并且沒(méi)有設(shè)置該計(jì)數(shù)器的計(jì)數(shù)器有 效指示符,貝贓框444,性能計(jì)數(shù)器如所配置的那樣進(jìn)行操作,即,在該 實(shí)施例中,在框410中其被配置成對(duì)高速緩存未命中進(jìn)行計(jì)數(shù),因此該性 能計(jì)數(shù)器加1。如果計(jì)數(shù)器匹配信號(hào)未被置為有效或沒(méi)有設(shè)置該計(jì)數(shù)器的 有效指示符,則不執(zhí)行框444。
在本發(fā)明的范圍之內(nèi),圖2和圖4所說(shuō)明的方法可以按不同的次序來(lái) 執(zhí)行,可以省略所說(shuō)明的框來(lái)執(zhí)行、可以添加附加的框來(lái)執(zhí)行、或者可以 利用重排序的、省略的或附加的框的組合來(lái)執(zhí)行。例如,VMCS可以按任 意次序來(lái)配置VMCS,例如,可以按照任意次序重新安排框222至226。
可以在從創(chuàng)造到仿真到制造的各個(gè)階段中對(duì)處理器120或根據(jù)本發(fā)明 的實(shí)施例設(shè)計(jì)的任何其它部件或部件的一部分進(jìn)行設(shè)計(jì)。表示一種設(shè)計(jì)的 數(shù)據(jù)可以用許多方式來(lái)表示該設(shè)計(jì)。首先,在仿真中很有用的一種情況是, 可以使用硬件描述語(yǔ)言或其它功能描述語(yǔ)言來(lái)表示硬件。此外或作為選擇,可以在設(shè)計(jì)過(guò)程的一些階段中,生產(chǎn)出具有邏輯和/或晶體管門的電路級(jí)模型。此外,大多數(shù)設(shè)計(jì)在某一階段上可以達(dá)到這樣一種級(jí)別,其中可以用表示各種器件的物理布局的數(shù)據(jù)來(lái)對(duì)該設(shè)計(jì)進(jìn)行建模。在使用常規(guī)半導(dǎo)體制造技術(shù)的情況下,表示器件布局模型的數(shù)據(jù)可以是這樣的數(shù)據(jù)其規(guī)定了在用于生產(chǎn)集成電路的掩膜的不同掩膜層上各種特性的存在與否。
在該設(shè)計(jì)的任何表示中,數(shù)據(jù)可以被存儲(chǔ)在任何形式的機(jī)器可讀介質(zhì)中。被調(diào)制或以其它方式生成的用來(lái)傳送這樣的信息的光波或電波、存儲(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ù)的制品(例如,載波)的拷貝的生成。
這樣,公開了用于對(duì)性能計(jì)數(shù)器進(jìn)行虛擬化的裝置、方法和系統(tǒng)。盡管已經(jīng)描述了某些實(shí)施例并且在附圖中示出,但是可以理解,這些實(shí)施例僅僅是說(shuō)明而不是限制了該廣泛的發(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é)上迸行修改,而不背離本公開內(nèi)容的原理或所附權(quán)利要求的范圍。
權(quán)利要求
1、一種裝置,包括計(jì)數(shù)器;計(jì)數(shù)器啟用存儲(chǔ)單元,用于存儲(chǔ)計(jì)數(shù)器啟用指示符;計(jì)數(shù)器啟用邏輯,用于基于所述計(jì)數(shù)器啟用指示符來(lái)啟用所述計(jì)數(shù)器;以及虛擬機(jī)控制邏輯,用于向客戶轉(zhuǎn)移所述裝置的控制權(quán),所述虛擬機(jī)控制邏輯包括客戶狀態(tài)加載邏輯,該客戶狀態(tài)加載邏輯用于針對(duì)控制權(quán)向所述客戶的轉(zhuǎn)移而使來(lái)自虛擬機(jī)控制結(jié)構(gòu)的客戶值被加載到所述計(jì)數(shù)器啟用存儲(chǔ)單元中。
2、 根據(jù)權(quán)利要求1所述的裝置,其中,所述計(jì)數(shù)器用于記錄性能監(jiān)測(cè)信息o
3、 根據(jù)權(quán)利要求1所述的裝置,其中,所述虛擬機(jī)控制邏輯還用于從所述客戶向宿主轉(zhuǎn)移所述裝置的控制權(quán),并且所述虛擬機(jī)控制邏輯還包括宿主狀態(tài)加載邏輯,該宿主狀態(tài)加載邏輯用于針對(duì)控制權(quán)從所述客戶向所述宿主的轉(zhuǎn)移而使來(lái)自所述虛擬機(jī)控制結(jié)構(gòu)的宿主值被加載到所述計(jì)數(shù)器啟用存儲(chǔ)單元中。
4、 根據(jù)權(quán)利要求3所述的裝置,其中,所述虛擬機(jī)控制邏輯還包括客戶狀態(tài)存儲(chǔ)邏輯,該客戶狀態(tài)存儲(chǔ)邏輯用于針對(duì)控制權(quán)從所述客戶向所述宿主的轉(zhuǎn)移而使所述計(jì)數(shù)器啟用存儲(chǔ)單元的內(nèi)容被存儲(chǔ)到所述虛擬機(jī)控制結(jié)構(gòu)中。
5、 根據(jù)權(quán)利要求1所述的裝置,其中,所述虛擬機(jī)控制邏輯還包括虛擬機(jī)進(jìn)入邏輯,該虛擬機(jī)進(jìn)入邏輯用于基于所述虛擬機(jī)控制結(jié)構(gòu)中的客戶狀態(tài)加載啟用指示符來(lái)啟用所述客戶狀態(tài)加載邏輯。
6、 根據(jù)權(quán)利要求3所述的裝置,其中,所述虛擬機(jī)控制邏輯還包括虛擬機(jī)退出邏輯,該虛擬機(jī)退出邏輯用于基于所述虛擬機(jī)控制結(jié)構(gòu)中的宿主狀態(tài)加載啟用指示符來(lái)啟用所述宿主狀態(tài)加載邏輯。
7、 根據(jù)權(quán)利要求4所述的裝置,其中,所述虛擬機(jī)控制邏輯還包括虛擬機(jī)退出邏輯,該虛擬機(jī)退出邏輯用于基于所述虛擬機(jī)控制結(jié)構(gòu)中的客戶狀態(tài)存儲(chǔ)啟用指示符來(lái)啟用所述客戶狀態(tài)存儲(chǔ)邏輯。
8、 一種裝置,包括計(jì)數(shù)器;計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元,用于存儲(chǔ)計(jì)數(shù)器標(biāo)識(shí)符;比較邏輯,用于基于所述計(jì)數(shù)器標(biāo)識(shí)符與來(lái)自虛擬機(jī)控制結(jié)構(gòu)的計(jì)數(shù)器標(biāo)識(shí)符字段的內(nèi)容的比較結(jié)果來(lái)生成計(jì)數(shù)器匹配信號(hào);以及啟用邏輯,用于生成用來(lái)啟用所述計(jì)數(shù)器的計(jì)數(shù)器啟用信號(hào),其中所述計(jì)數(shù)器啟用信號(hào)是基于所述計(jì)數(shù)器匹配信號(hào)的。
9、 根據(jù)權(quán)利要求8所述的裝置,還包括計(jì)數(shù)器有效存儲(chǔ)單元,用于存儲(chǔ)計(jì)數(shù)器有效指示符,其中所述計(jì)數(shù)器啟用信號(hào)也是基于所述計(jì)數(shù)器有效指示符的。
10、 一種方法,包括把處理器中的第一計(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)加載到計(jì)數(shù)器啟用存儲(chǔ)單元中;完成向所述客戶轉(zhuǎn)移所述處理器的控制權(quán);基于所述計(jì)數(shù)器啟用存儲(chǔ)單元的內(nèi)容以及所述第一事件的第一次發(fā)生,確定是否改變所述第一計(jì)數(shù)器的計(jì)數(shù)值;以及基于所述計(jì)數(shù)器啟用存儲(chǔ)單元的內(nèi)容以及所述第二事件的第一次發(fā)生,確定是否改變所述第二計(jì)數(shù)器的計(jì)數(shù)值。
11、 根據(jù)權(quán)利要求IO所述的方法,還包括 發(fā)起從所述客戶向宿主轉(zhuǎn)移所述處理器的控制權(quán);把宿主值從所述虛擬機(jī)控制結(jié)構(gòu)加載到所述計(jì)數(shù)器啟用存儲(chǔ)單元中; 完成從所述客戶向所述宿主轉(zhuǎn)移所述處理器的控制權(quán); 基于所述計(jì)數(shù)器啟用存儲(chǔ)單元的內(nèi)容以及所述第一事件的第二次發(fā)生,確定是否改變所述第一計(jì)數(shù)器的計(jì)數(shù)值;以及基于所述計(jì)數(shù)器啟用存儲(chǔ)單元中的內(nèi)容以及所述第二事件的第二次發(fā)生,確定是否改變所述第二計(jì)數(shù)器的計(jì)數(shù)值。
12、 根據(jù)權(quán)利要求ll所述的方法,還包括在發(fā)起從所述客戶向所述宿主轉(zhuǎn)移所述處理器的控制權(quán)之后,把所述 計(jì)數(shù)器啟用存儲(chǔ)單元的內(nèi)容存儲(chǔ)到所述虛擬機(jī)控制結(jié)構(gòu)中。
13、 根據(jù)權(quán)利要求10所述的方法,還包括使所述處理器能夠基于所述虛擬機(jī)控制結(jié)構(gòu)中的客戶狀態(tài)加載啟用指 示符來(lái)加載所述客戶值。
14、 根據(jù)權(quán)利要求ll所述的方法,還包括使所述處理器能夠基于所述虛擬機(jī)控制結(jié)構(gòu)中的宿主狀態(tài)加載啟用指 示符來(lái)加載所述宿主值。
15、 根據(jù)權(quán)利要求ll所述的方法,還包括使所述處理器能夠基于所述虛擬機(jī)控制結(jié)構(gòu)中的客戶狀態(tài)存儲(chǔ)啟用指 示符來(lái)存儲(chǔ)所述計(jì)數(shù)器啟用存儲(chǔ)單元的內(nèi)容。
16、 一種方法,包括把處理器中的計(jì)數(shù)器配置成對(duì)事件的發(fā)生進(jìn)行計(jì)數(shù); 向客戶轉(zhuǎn)移所述處理器的控制權(quán); 識(shí)別所述事件的發(fā)生;4基于在所述處理器中的計(jì)數(shù)器標(biāo)識(shí)符存儲(chǔ)單元的內(nèi)容與虛擬機(jī)控制結(jié) 構(gòu)中的計(jì)數(shù)器標(biāo)識(shí)符字段的內(nèi)容的比較結(jié)果來(lái)生成匹配信號(hào);以及 基于所述匹配信號(hào)來(lái)確定是否改變所述計(jì)數(shù)器的計(jì)數(shù)值。
17、 根據(jù)權(quán)利要求16所述的方法,其中,確定是否改變所述計(jì)數(shù)器的 計(jì)數(shù)值也是基于計(jì)數(shù)器有效指示符的。
18、 一種系統(tǒng),包括存儲(chǔ)器,用于存儲(chǔ)用來(lái)控制虛擬機(jī)的數(shù)據(jù)結(jié)構(gòu);以及 處理器,包括 多個(gè)計(jì)數(shù)器;計(jì)數(shù)器啟用存儲(chǔ)單元,用于存儲(chǔ)計(jì)數(shù)器啟用指示符; 計(jì)數(shù)器啟用邏輯,用于基于所述計(jì)數(shù)器啟用指示符來(lái)啟用所述多 個(gè)計(jì)數(shù)器;以及虛擬機(jī)控制邏輯,用于向客戶轉(zhuǎn)移所述處理器的控制權(quán),所述虛 擬機(jī)控制邏輯包括客戶狀態(tài)加載邏輯,該客戶狀態(tài)加載邏輯用于針對(duì) 控制權(quán)向所述客戶的轉(zhuǎn)移而使來(lái)自所述數(shù)據(jù)結(jié)構(gòu)的客戶值被加載到所 述計(jì)數(shù)器啟用存儲(chǔ)單元中。
19、 根據(jù)權(quán)利要求18所述的系統(tǒng),其中,所述多個(gè)計(jì)數(shù)器用于記錄性 能監(jiān)測(cè)信息。
20、 根據(jù)權(quán)利要求18所述的系統(tǒng),其中,所述存儲(chǔ)器是動(dòng)態(tài)隨機(jī)存取 存儲(chǔ)器。
全文摘要
公開了用于對(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ù)器啟用指示符來(lái)啟用計(jì)數(shù)器。虛擬機(jī)控制邏輯用于向客戶轉(zhuǎn)移該裝置的控制權(quán)。虛擬機(jī)控制邏輯包括客戶狀態(tài)加載邏輯,其用于針對(duì)該裝置的控制權(quán)向客戶的轉(zhuǎn)移而使來(lái)自虛擬機(jī)控制結(jié)構(gòu)的客戶值被加載到計(jì)數(shù)器啟用存儲(chǔ)單元中。
文檔編號(hào)G06F9/06GK101490646SQ200780025942
公開日2009年7月22日 申請(qǐng)日期2007年8月6日 優(yōu)先權(quán)日2006年8月8日
發(fā)明者A·安德森, E·科塔-羅布爾斯, G·奈格, S·貝內(nèi)特 申請(qǐng)人:英特爾公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
孝感市| 兰坪| 锡林浩特市| 尚志市| 北安市| 林芝县| 河东区| 德惠市| 电白县| 乐业县| 鄢陵县| 永城市| 利辛县| 连云港市| 阳城县| 霸州市| 石林| 慈利县| 德令哈市| 蛟河市| 垫江县| 峨眉山市| 诸暨市| 广东省| 彭州市| 玉环县| 通渭县| 孙吴县| 弥勒县| 桂林市| 无锡市| 毕节市| 宝鸡市| 孝昌县| 祥云县| 屯留县| 淮阳县| 保靖县| 兰考县| 长丰县| 滦平县|