專利名稱:在虛擬機(jī)環(huán)境中檢測自旋循環(huán)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息處理領(lǐng)域,特別是涉及平臺虛擬化領(lǐng)域。
背景技術(shù):
通常,信息處理系統(tǒng)中的虛擬化的概念允許一個或多個操作系統(tǒng)的多個實(shí)例(一“OS”的每一個)在單個信息處理系統(tǒng)上運(yùn)行,盡管每一個OS都被設(shè)計(jì)成擁有對該系統(tǒng)及其資源的完全的、直接的控制。通常,通過使用軟件(例如,虛擬機(jī)監(jiān)視器,或者“VMM”)來實(shí)現(xiàn)虛擬化,以便將“虛擬機(jī)”(“VM”)提供給每個OS,所述“虛擬機(jī)”具有虛擬資源,包括可以由OS完全且直接地控制的一個或多個虛擬處理器,同時VMM維持用于實(shí)現(xiàn)虛擬化策略(如在VM( “虛擬化環(huán)境”或“虛擬機(jī)環(huán)境”)之間共享和/或分配物理資源)的系統(tǒng)環(huán)境。運(yùn)行在VM上的每一個OS和任何其它軟件,被稱為“客戶”(“guest”)或者“客戶軟件” (“guest software”),而“主機(jī)” (“host”)或“主機(jī)軟件” (“hostsoftware”)是例如運(yùn)行在虛擬化環(huán)境之外的VMM這樣的軟件。信息處理系統(tǒng)中的物理處理器可以支持虛擬化,例如,通過支持指令進(jìn)入虛擬化環(huán)境以在VM中的虛擬處理器(即,在VMM施加的約束下的物理處理器)上運(yùn)行客戶。在虛擬化環(huán)境中,某些事件、操作和情況,例如外部中斷或訪問特許的寄存器或資源的嘗試,可能被截取(intercept),就是說,導(dǎo)致處理器退出虛擬化環(huán)境,使得VMM可以操作,以便例如實(shí)現(xiàn)虛擬化策略。物理處理器還可支持其它的指令以維持虛擬化環(huán)境,并且可以包括指示或控制物理處理器的虛擬化能力的存儲器或寄存器位。物理處理器還可以支持“暫停(pause)”指令以將延遲插入指令流中。暫停指令可以用在自旋循環(huán)(spin loop)中,來減慢循環(huán)的執(zhí)行以節(jié)省功率和/或阻止處理器在每次執(zhí)行循環(huán)時用相同的變量填充不同的負(fù)載緩沖器。處理器可以被設(shè)計(jì)成由虛擬機(jī)來檢測暫停指令的執(zhí)行,并且使處理器退出所述虛擬機(jī)并進(jìn)入不同的虛擬機(jī)(假設(shè)運(yùn)行在第一個虛擬機(jī)中的客戶處在自旋循環(huán)中,在該自旋循環(huán)期間,在第二個虛擬機(jī)中運(yùn)行的客戶能夠更加有效的使用處理器資源)。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的第一方面,提供了一種用于執(zhí)行虛擬化的處理器,包括:執(zhí)行單元,用于執(zhí)行暫停指令;時間戳計(jì)數(shù)器,用于測量暫停指令被執(zhí)行的當(dāng)前時間;檢測邏輯,用于跟蹤第一值和第二值,所述第一值用于指示在客戶的自旋循環(huán)內(nèi)執(zhí)行所述暫停指令的第一時間,所述第二值用于指示所述暫停指令被執(zhí)行的最近時間,以及用于基于當(dāng)前時間和所述第二值之間的差與閾值的比較來檢測所述客戶是否在所述自旋循環(huán)中;以及虛擬化邏輯,用于響應(yīng)檢測到所述客戶正在執(zhí)行所述自旋循環(huán)以及所述當(dāng)前時間和所述第一值之間的差超過窗口值而將對所述處理器的控制從所述客戶轉(zhuǎn)移到主機(jī)。根據(jù)本發(fā)明的第二方面,提供了一種用于執(zhí)行平臺虛擬化的方法,包括:檢測客戶是否正在處理器上執(zhí)行自旋循環(huán),包括將兩個暫停指令的執(zhí)行之間的時間段與閾值進(jìn)行比較;以及響應(yīng)確定所述客戶正在執(zhí)行所述自旋循環(huán),而將對所述處理器的控制從所述客戶轉(zhuǎn)移到主機(jī)。根據(jù)本發(fā)明的第三方面,提供了一種系統(tǒng),包括:處理器,包括用于執(zhí)行暫停指令的執(zhí)行單元,用于測量暫停單元被執(zhí)行的當(dāng)前時間的時間戳計(jì)數(shù)器,檢測邏輯,用于跟蹤第一值和第二值,所述第一值用于指示在客戶的自旋循環(huán)內(nèi)執(zhí)行所述暫停指令的第一時間,所述第二值用于指示所述暫停指令被執(zhí)行的最近時間,以及用于基于當(dāng)前時間和所述第二值之間的差與閾值的比較來檢測所述客戶是否在所述自旋循環(huán)中,以及虛擬化邏輯,用于響應(yīng)檢測到所述客戶正在執(zhí)行所述自旋循環(huán)以及所述當(dāng)前時間和所述第一值之間的差超過窗口值而將對所述處理器的控制從所述客戶轉(zhuǎn)移到主機(jī);以及與所述處理器耦合的系統(tǒng)存儲器。
在附圖中,作為示例而非限制來圖解說明本發(fā)明。圖1圖解說明了在虛擬化平臺中的本發(fā)明的一實(shí)施例。圖2圖解說明了用于在虛擬機(jī)環(huán)境中檢測自旋循環(huán)的方法中的本發(fā)明的一實(shí)施例。
具體實(shí)施例方式如下所述,本發(fā)明可被包含在用于在虛擬機(jī)環(huán)境中檢測自旋循環(huán)的裝置、方法或系統(tǒng)中。在該描述中,可能闡述了大量具體細(xì)節(jié),例如部件和系統(tǒng)配置,以便提供對本發(fā)明的比較充分的理解。但是,本領(lǐng)域的技術(shù)人員會理解到,本發(fā)明可以不在沒有這樣的具體細(xì)節(jié)的條件下實(shí)施。此外,沒有詳細(xì)說明一些公知的結(jié)構(gòu)、電路等,以免不必要地影響對本發(fā)明的理解。 本發(fā)明的實(shí)施例提供對自旋循環(huán)的檢測,該檢測將被用于改進(jìn)支持虛擬化的信息處理系統(tǒng)的性能。VMM可在第一虛擬機(jī)中的客戶空閑時,例如在自旋循環(huán)期間,通過從第一虛擬機(jī)轉(zhuǎn)換出來并進(jìn)入第二虛擬機(jī)來對處理器進(jìn)行分時(time-share)。如背景技術(shù)中所描述的,基于客戶處在自旋循環(huán)中的假設(shè),當(dāng)客戶執(zhí)行暫停指令時進(jìn)行VM轉(zhuǎn)換。但是,暫停指令還可以在自旋循環(huán)之外使用,例如插入延遲以等待輸入/輸出(“I/O”)操作的完成。當(dāng)暫停指令在自旋循環(huán)之外被客戶使用時,通過允許那個客戶繼續(xù)使用處理器而不是花費(fèi)時間來保存那個客戶的狀態(tài)并裝載另一個客戶的狀態(tài)并且進(jìn)行VM轉(zhuǎn)換,可提高性能。因此,本發(fā)明的實(shí)施例提供了一種檢測自旋循環(huán)的新方法。本發(fā)明實(shí)施例的要素可以在硬件、軟件、固件中或者以硬件、軟件或固件的任意結(jié)合的形式來實(shí)現(xiàn)。術(shù)語“硬件”通常指具有諸如電子的、電磁的、光學(xué)的、光電的、機(jī)械的、機(jī)電部分等物理結(jié)構(gòu)的元件。術(shù)語“軟件”通常指邏輯結(jié)構(gòu)、方法、過程、程序、例程、進(jìn)程、算法、公式、表達(dá)式等。術(shù)語固件通常指邏輯結(jié)構(gòu)、方法、過程、程序、例程、進(jìn)程、算法、公式或者在硬件結(jié)構(gòu)(例如,閃存或只讀存儲器)中被實(shí)現(xiàn)或具體化的表達(dá)式。固件的示例是微碼、可寫控制存儲器以及微編程結(jié)構(gòu)(micro-programmed structure)。圖1圖解說明了在信息處理系統(tǒng)100中的本發(fā)明的一實(shí)施例。在圖1中,裸平臺硬件(bare platform hardware) 110可以是能夠執(zhí)行任何OS、VMM或其它這樣的軟件的任何數(shù)據(jù)處理裝置。例如,裸平臺硬件可以是個人計(jì)算機(jī)、大型機(jī)、便攜式電腦、手持設(shè)備、機(jī)頂盒、服務(wù)器或者任何其它計(jì)算系統(tǒng)的數(shù)據(jù)處理裝置。裸平臺硬件110包括處理器120和存儲器130。處理器120可以是任何類型的處理器,包括通用目的微處理器,例如Intel Pentium 處理器系列、Itanium 處理器系列或者其它來自丨ntel 公司的處理器系列中的處理器,或來自另一公司的另一種處理器,或者數(shù)字信號處理器或者微控制器。雖然圖1只示出了一個這樣的處理器120,但是裸平臺硬件110可以包括任意數(shù)量的處理器,所述處理器包括任意數(shù)量的多核處理器,各具有任意數(shù)量的執(zhí)行核心,以及任意數(shù)量的多線程處理器,各具有任意數(shù)量的線程。存儲器130可以是靜態(tài)或動態(tài)隨機(jī)存取存儲器、基于半導(dǎo)體的只讀或閃速存儲器、磁盤或光盤存儲器以及任何其它類型的處理器120可讀介質(zhì)或這些介質(zhì)的任意結(jié)合。處理器120和內(nèi)存130可以通過任何已知的途徑例如直接或間接地通過一條或多條總線、點(diǎn)對點(diǎn)或其它有線或無線連接來相互耦合或互相通信。裸平臺硬件110還可以包括任意數(shù)量的附加設(shè)備或連接。除了裸平臺硬件100,圖1還圖解說明了 VMM140、VM150和160、客戶操作系統(tǒng)152和162以及客戶應(yīng)用程序154、155、164和165。VMM140可以是安裝在裸平臺硬件110上或可訪問裸平臺硬件110來向客戶提供VM(即裸平臺硬件110的抽象)或者以其它方式創(chuàng)建VM、管理VM以及實(shí)現(xiàn)虛擬化策略的任何軟件、固件或硬件主機(jī)。在其它實(shí)施例中,主機(jī)可以是能夠控制裸平臺硬件110的任何VMM,管理程序,OS或者其它軟件、固件或硬件??蛻艨梢允侨魏蜲S、任何VMM(包括VMM140的另一實(shí)例)、任何管理程序或者任何應(yīng)用程序或其它軟件。根據(jù)VM中提供的處理器和平臺的體系結(jié)構(gòu),每個客戶期望訪問裸平臺硬件110的物理資源,例如處理器和平臺寄存器、存儲器和輸入/輸出設(shè)備。圖1示出了兩個VM,150和160,客戶0S152以及客戶應(yīng)用程序154和155安裝在VM150上,客戶0S162以及客戶應(yīng)用程序程序164和165安裝在VM160上。雖然圖1只示出了兩個VM和每個VM的兩個應(yīng)用程序,但是在本發(fā)明的范圍內(nèi),可創(chuàng)建任意數(shù)量的VM,并且在每個VM上可以運(yùn)行任意數(shù)量的應(yīng)用程序。能夠被客戶訪問的資源可被分類為“特許”或“非特許”的資源。對于特許資源,VMM140促進(jìn)(facilitate)客戶所需的功能性,同時保留對資源的最終控制。非特許資源不需要由VMM140控制并且可由客戶直接訪問。此外,每個客戶OS期望處理各種事件,例如異常(例如,頁錯誤和一般性保護(hù)錯誤(general protection fault)),中斷(例如,硬件中斷和軟件中斷),以及平臺事件(例如,初始化和系統(tǒng)管理中斷)。這些異常、中斷和平臺事件在本文中統(tǒng)一且單獨(dú)地稱為“虛擬化事件”。這些虛擬化事件中的一部分被稱為“特許事件”,因?yàn)樗鼈儽仨氂蒝MM140處理以確保VM150和160的適當(dāng)操作,保護(hù)VMM140免受客戶影響,并且保護(hù)客戶以免互相影響。在任何給定時間,處理器120可能正在執(zhí)行來自VMM140或其它任何客戶的指令,因此VMM140或客戶可能正運(yùn)行在處理器120上或在處理器120的控制中。當(dāng)特許事件發(fā)生或者客戶試圖訪問特許資源時,控制從客戶轉(zhuǎn)移到VMM140。本文中,從客戶到VMM140的控制轉(zhuǎn)移被稱為“VM退出”。在處理該事件或者適當(dāng)?shù)卮龠M(jìn)對該資源的訪問之后,VMM140可以將控制返回給客戶。本文中,從VMM140到客戶的控制轉(zhuǎn)移被稱作“VM登錄”。在圖1的實(shí)施例中,處理器120根據(jù)存儲在虛擬機(jī)控制結(jié)構(gòu)(“VMCS”)132中的數(shù)據(jù)來控制VM150和160的操作。VMCS132是一種結(jié)構(gòu),該結(jié)構(gòu)可包含一個客戶或多個客戶的狀態(tài),VMM140的狀態(tài),指示VMM140如何控制一個客戶或多個客戶的操作的執(zhí)行控制信息,關(guān)于VM退出和VM登錄的信息,以及其它任何這樣的信息。處理器120從VMCS132讀取信息以確定VM的執(zhí)行環(huán)境并且約束它的行為。在該實(shí)施例中,VMCS132存儲在存儲器130中。在某些實(shí)施例中,多個VMCS用于支持多VM。雖然圖1示出了 VMCS132存儲在存儲器130中,但是將VMCS存儲在存儲器中可能不是本發(fā)明所必需的。處理器120可以包括執(zhí)行單元122來執(zhí)行包括暫停指令在內(nèi)的指令。暫停指令可以是將延遲插入指令流中的任何指令。處理器120還包括時間戳計(jì)算器(“TSC”)124來計(jì)算處理器時鐘周期,或者以其它方式測量經(jīng)過的時間。在其它實(shí)施例中,可以使用其它測量經(jīng)過的時間的方法。此外,處理器120包括控制邏輯170來支持虛擬化??刂七壿?70可以包括微碼,可編程邏輯,硬編碼邏輯,或者處理器120中的任何其它形式的控制邏輯。在其它實(shí)施例中,控制邏輯170可通過處理器中或者處理器可訪問的任何部件或者可讀介質(zhì)(例如存儲器130)中的硬件、軟件或固件(例如,處理器抽象層)的任何形式來實(shí)現(xiàn)??刂七壿?70使處理器120執(zhí)行本發(fā)明的方法實(shí)施例,例如下面在圖2中圖解說明的方法實(shí)施例,例如,通過使處理器120將例如支持虛擬化的一個或多個微操作的執(zhí)行包括在該處理器對來自主機(jī)和客戶的虛擬化指令或其它指令的響應(yīng)中。例如,如下面在方法200的描述中所述的,檢測邏輯180的操作和自旋循環(huán)的檢測可以在響應(yīng)暫停指令而執(zhí)行的微碼中被實(shí)現(xiàn)??刂七壿?70包括虛擬化邏輯172和檢測邏輯180。虛擬化邏輯172將準(zhǔn)備并執(zhí)行VM登錄和退出。如下面在方法200的描述中所述的,檢測邏輯180通過檢測自旋循環(huán)簽名(signature)來檢測自旋循環(huán)的執(zhí)行。這些邏輯單元的每一個還可以執(zhí)行附加的功能,包括所述的那些由另一個邏輯單元執(zhí)行功能,并且任何或所有這些邏輯單元可被集成在單個邏輯單元中。在一個實(shí)施例中,檢測邏輯180可以追蹤兩個值(第一暫停和最后暫停)來幫助自旋循環(huán)的檢測。這些值可以被存儲在檢測邏輯180、存儲器130內(nèi)的存儲位置中,或者在處理器120可訪問的任何其它存儲位置中。保持第一暫停的值以指示自旋循環(huán)中第一暫停指令第一次執(zhí)行時的TSC值。保持最后暫停的值以指示同一個自旋循環(huán)中的暫停指令被執(zhí)行的最近時間的TSC值。對于這些值的追蹤和保持在以下對方法200的描述中進(jìn)行描述??刂七壿?70可以檢查或以其它方式參考在VMCS132中的字段、指示符、位或者其它數(shù)據(jù)結(jié)構(gòu)來確定如何管理VM環(huán)境。例如,如果客戶執(zhí)行暫停指令,則暫停-退出控制位133可被設(shè)置成導(dǎo)致VM退出。在對該實(shí)施例的描述中,控制位被設(shè)置成實(shí)現(xiàn)或?qū)е孪胍男Ч渲?,設(shè)置意味著向該位寫邏輯1,而在本發(fā)明范圍內(nèi)任何邏輯慣例或術(shù)語都可使用。還是在VMCS132中,如果檢測邏輯180檢測到客戶正在執(zhí)行自旋循環(huán),則暫停-循環(huán)-退出控制位134可被設(shè)置成導(dǎo)致VM退出。當(dāng)暫停-循環(huán)-退出控制位124被設(shè)置時,暫停-退出控制位133可以被忽略,以便允許本發(fā)明的新方法替代(override)現(xiàn)有的響應(yīng)客戶執(zhí)行的每個暫停指令而導(dǎo)致的VM退出的方法。同樣,如果需要,當(dāng)暫停-環(huán)-退出控制位134未被設(shè)置,和/或當(dāng)處理器120在虛擬機(jī)環(huán)境之外運(yùn)行時,檢測邏輯180可被禁用。暫停-間隙字段136可用于存儲由TSC124測量的表示時間段的值,在該時間段內(nèi)自旋循環(huán)的一次迭代通常會被執(zhí)行。暫停-窗口字段138可用于存儲由TSC124測量的表示在VM退出發(fā)生之前客戶將被允許執(zhí)行自旋循環(huán)的時間段的值。VMCS132還可包括存儲關(guān)于VM退出的信息的字段,以在VM退出之后當(dāng)VMM接收到控制時,幫助VMM確定要采取的合適行動。例如,VMCS132包括指示VM退出的原因的退出-原因字段135。圖2圖解說明了方法200(—種用于在虛擬機(jī)環(huán)境中檢測自旋循環(huán)的方法)中的本發(fā)明的一實(shí)施例。雖然方法實(shí)施例在不限于此方面,但是參照圖1的信息處理系統(tǒng)100來描述圖2的方法的實(shí)施例。在圖2的框210中,VMM(例如,VMMl40)為VM(例如,VM150)創(chuàng)建VMCS(例如,VMCS132)。在框212中,如果檢測邏輯180檢測到自旋循環(huán),則VMM140設(shè)置暫停-循環(huán)-退出控制位134以便導(dǎo)致從VM150的VM退出。在框214中,如上所述,VMM140在暫停-間隙字段136中存儲暫停-間隙值。在框216中,如上所述,VMM140在暫停-窗口字段138中
存儲暫停-窗口值。在框220中,發(fā)起從主機(jī)(例如,VMM140)到客戶的處理器120的控制轉(zhuǎn)移??刂频霓D(zhuǎn)移或VM登錄,可包括使處理器120執(zhí)行操作或微操作以保存主機(jī)狀態(tài)并加載客戶狀態(tài)的虛擬化邏輯172。在框222中,將第一暫停和最后暫停的值設(shè)置成VM登錄時的TSC值。在框224中,完成VM登錄。在框230中,客戶開始或繼續(xù)執(zhí)行指令。在框232中,發(fā)起暫停指令的執(zhí)行。在框234中,當(dāng)前的TSC值被存儲。在框240中,確定來自框234的TSC值和最后暫停值的差是否大于暫停間隙的值。如果是,即應(yīng)當(dāng)是自旋循環(huán)的第一次迭代并且是自旋循環(huán)外的暫停指令的情況,那么,在框242中,框232的TSC值被存儲在第一暫停和最后暫停中,并且方法200返回到框230。如果不是,即應(yīng)當(dāng)是自旋循環(huán)后續(xù)的迭代的情況,那么,在框250中,確定來自234的TSC值和第一暫停的值的差是否大于暫停窗口的值。如果框250中判定的結(jié)果是否定的,即應(yīng)當(dāng)是客戶還沒有在執(zhí)行比所允許的更長的自旋循環(huán)的情況,那么,在框252中,來自框232的TSC值被存儲在最后暫停中,并且方法200返回到框230。如果框250中判定的結(jié)果是肯定的,即應(yīng)當(dāng)是客戶已經(jīng)在執(zhí)行比所允許的更長的自旋循環(huán)的情況,那么方法200在框260中繼續(xù)。在框260中,發(fā)起從客戶到主機(jī)的控制轉(zhuǎn)移??刂妻D(zhuǎn)移或VM退出可包括使處理器120執(zhí)行操作或微操作以保存客戶狀態(tài)并加載主機(jī)狀態(tài)的虛擬化邏輯172。在框262中,虛擬化邏輯172在退出-原因字段235中存儲表示暫停指令的執(zhí)行的值,或者其它所需的值,例如表示自旋循環(huán)的檢測的值。在框264中,完成VM退出。在本發(fā)明的范圍內(nèi),圖2所示的方法可按不同的順序、通過省略所示的框、添加附加的框,或者以重新排序、省略或增加框的結(jié)合,來執(zhí)行。此外,在本發(fā)明范圍內(nèi),其它基于自旋循環(huán)簽名來檢測自旋循環(huán)的方法是可行的。在基于指令指針的實(shí)施例中,與暫停指令相關(guān)聯(lián)的指令指針可以被存儲,并且然后和與后續(xù)暫停指令相關(guān)聯(lián)的指令指針相比較,以確定指令指針是否是相同的,這將表明正在執(zhí)行暫停循環(huán)。在基于控制流的實(shí)施例中,在客戶執(zhí)行中的特定轉(zhuǎn)換,例如特許級或地址空間的改變,或者指令指針的改變大于某個值,可能表示不在執(zhí)行暫停循環(huán)。在基于頻率的實(shí)施例中,在特定時間段中的暫停指令的數(shù)量將被計(jì)算,并且如果所述數(shù)量超過了某個值,所述某個值可以是低至一的數(shù)(即,兩個暫停指令在該時間段中被執(zhí)行),它可以表明正在執(zhí)行自旋循環(huán),或者執(zhí)行了超過所允許的時間。根據(jù)本發(fā)明的一實(shí)施例設(shè)計(jì)的處理器120,或者任何其它的部件或者部件的組成部分,可在各個階段中設(shè)計(jì),從創(chuàng)建到模擬(simulation)到制作。表示設(shè)計(jì)的數(shù)據(jù)可能以多種方式表示該設(shè)計(jì)。首先,如在模擬時有用的,可以使用硬件描述語言或另一功能描述語言來表示硬件。作為附加或備選的方案,在設(shè)計(jì)過程的某些階段,可以產(chǎn)生具有邏輯和/或晶體管門電路的電路級模型。此外,在某階段,大多數(shù)設(shè)計(jì)達(dá)到可以用表示各種設(shè)備的物理布置的數(shù)據(jù)來建模的級別。在使用傳統(tǒng)的半導(dǎo)體制造技術(shù)的情況下,表示設(shè)備布置模型的數(shù)據(jù)可以是指定在用于生產(chǎn)集成電路的掩模的不同掩模層上各種特性存在或不存在的數(shù)據(jù)。在本設(shè)計(jì)的任何表示中,數(shù)據(jù)可存儲在任何形式的機(jī)器可讀介質(zhì)中。經(jīng)調(diào)制或以其它方式生成以發(fā)送這樣的信息的光或電波,存儲器,或者磁或光存儲介質(zhì),例如磁盤,可以是機(jī)器可讀介質(zhì)。這些介質(zhì)中的任何一個可以“攜帶”或“指示”該設(shè)計(jì),或者本發(fā)明的一實(shí)施例中使用的其它信息。當(dāng)指示或攜帶信息的電載波被發(fā)送,到執(zhí)行復(fù)制、緩沖、或者重傳電信號的程度時,產(chǎn)生新的副本。因此,通信提供商或者網(wǎng)絡(luò)提供商的行為可能構(gòu)成制造包含本發(fā)明技術(shù)的產(chǎn)品的副本,例如,載波。這樣,公開了用于在虛擬機(jī)環(huán)境中檢測自旋循環(huán)的裝置、方法和系統(tǒng)。當(dāng)在附圖中描述并示出某些實(shí)施例時,應(yīng)當(dāng)理解,這樣的實(shí)施例只是解釋性的而不是對寬泛的發(fā)明的限制,并且本發(fā)明不限于所示或所描述的具體構(gòu)造和設(shè)置,因?yàn)樵谘芯勘竟_后,本領(lǐng)域的技術(shù)人員可對本發(fā)明進(jìn)行各種其它修改。在發(fā)展迅速且不易預(yù)見未來發(fā)展的技術(shù)領(lǐng)域,例如本發(fā)明的技術(shù)領(lǐng)域中,可在不背離本公開的原理和所附權(quán)利要求的范圍的前提下,通過實(shí)現(xiàn)技術(shù)進(jìn)步的推動,所公開的實(shí)施例可易于在設(shè)置和細(xì)節(jié)方面進(jìn)行修改。
權(quán)利要求
1.一種用于執(zhí)行虛擬化的處理器,包括: 執(zhí)行單元,用于執(zhí)行暫停指令; 時間戳計(jì)數(shù)器,用于測量暫停指令被執(zhí)行的當(dāng)前時間; 檢測邏輯,用于跟蹤第一值和第二值,所述第一值用于指示在客戶的自旋循環(huán)內(nèi)執(zhí)行所述暫停指令的第一時間,所述第二值用于指示所述暫停指令被執(zhí)行的最近時間,以及用于基于當(dāng)前時間和所述第二值之間的差與閾值的比較來檢測所述客戶是否在所述自旋循環(huán)中;以及 虛擬化邏輯,用于響應(yīng)檢測到所述客戶正在執(zhí)行所述自旋循環(huán)以及所述當(dāng)前時間和所述第一值之間的差超過窗口值而將對所述處理器的控制從所述客戶轉(zhuǎn)移到主機(jī)。
2.如權(quán)利要求1所述的處理器,其中,所述檢測邏輯也用于基于控制流改變來檢測所述客戶是否正在執(zhí)行所述自旋循環(huán)。
3.如權(quán)利要求1所述的處理器,其中,所述檢測邏輯也用于基于時間段內(nèi)的暫停指令的計(jì)數(shù)來檢測所述客戶是否正在執(zhí)行所述自旋循環(huán)。
4.如權(quán)利要求1所述的處理器,其中,所述處理器包括多核處理器。
5.如權(quán)利要求1所述的處理器,其中,所述處理器包括多線程處理器。
6.如權(quán)利要求1所述的處理器,進(jìn)一步包括包含所述檢測邏輯和所述虛擬化邏輯的控制邏輯。
7.一種用于執(zhí)行平臺虛擬化的方法,包括: 檢測客戶是否正在處理器上執(zhí)行自旋循環(huán),包括將兩個暫停指令的執(zhí)行之間的時間段與閾值進(jìn)行比較;以及 響應(yīng)確定所述客戶正在執(zhí)行所述自旋循環(huán),而將對所述處理器的控制從所述客戶轉(zhuǎn)移到主機(jī)。
8.如權(quán)利要求7所述的方法,其中,檢測所述客戶是否正在執(zhí)行所述自旋循環(huán)的步驟包括以下步驟之一: 比較兩個暫停指令的指令指針; 檢測控制流改變;以及 對時間段內(nèi)的暫停指令的數(shù)量計(jì)數(shù)。
9.如權(quán)利要求7所述的方法,其中,響應(yīng)確定所述客戶正在執(zhí)行所述自旋循環(huán)而將對所述處理器的控制從所述客戶轉(zhuǎn)移到主機(jī)包括:響應(yīng)確定所述客戶已在執(zhí)行比所允許的時間段長的自旋循環(huán)而轉(zhuǎn)移控制。
10.一種系統(tǒng),包括: 處理器,包括用于執(zhí)行暫停指令的執(zhí)行單元,用于測量暫停指令被執(zhí)行的當(dāng)前時間的時間戳計(jì)數(shù)器,檢測邏輯,用于跟蹤第一值和第二值,所述第一值用于指示在客戶的自旋循環(huán)內(nèi)執(zhí)行所述暫停指令的第一時間,所述第二值用于指示所述暫停指令被執(zhí)行的最近時間,以及用于基于當(dāng)前時間和所述第二值之間的差與閾值的比較來檢測所述客戶是否在所述自旋循環(huán)中,以及虛擬化邏輯,用于響應(yīng)檢測到所述客戶正在執(zhí)行所述自旋循環(huán)以及所述當(dāng)前時間和所述第一值之間的差超過窗口值而將對所述處理器的控制從所述客戶轉(zhuǎn)移到主機(jī);以及 與所述處理器耦合的系統(tǒng)存儲器。
11.如權(quán)利要求10所述的系統(tǒng),其中,所述檢測邏輯也用于基于控制流改變來檢測所述客戶是否正在執(zhí)行所述自旋循環(huán)。
12.如權(quán)利要求10所述的系統(tǒng),其中,所述檢測邏輯也用于基于時間段內(nèi)的暫停指令的計(jì)數(shù)來檢測所述客戶是否正在執(zhí)行所述自旋循環(huán)。
13.如權(quán)利要求10所述的系統(tǒng),其中,所述處理器包括多核處理器。
14.如權(quán)利要求10所述的系統(tǒng),其中,所述處理器包括多線程處理器。
15.如權(quán)利要求10所述的系統(tǒng),進(jìn)一步包括包含所述檢測邏輯和所述虛擬化邏輯的控制邏輯。
16.如權(quán)利要求10所述的系統(tǒng),其中,所述系統(tǒng)存儲器包括用于存儲所述客戶的狀態(tài)的虛擬機(jī)控制結(jié)構(gòu)。
17.如權(quán)利要求16所述的系統(tǒng),其中,所述虛擬機(jī)控制結(jié)構(gòu)用于存儲虛擬機(jī)監(jiān)視器的狀 態(tài)。
全文摘要
本申請涉及“在虛擬機(jī)環(huán)境中檢測自旋循環(huán)”。公開了在虛擬機(jī)環(huán)境中檢測自旋循環(huán)的裝置、方法和系統(tǒng)的實(shí)施例。在一個實(shí)施例中,裝置包括檢測邏輯和虛擬化邏輯。檢測邏輯用于檢測客戶是否正在執(zhí)行自旋循環(huán)。虛擬化邏輯用于響應(yīng)檢測邏輯檢測到客戶正在執(zhí)行自旋循環(huán),而將對裝置的控制從客戶轉(zhuǎn)移到主機(jī)。
文檔編號G06F9/455GK103207803SQ20131010344
公開日2013年7月17日 申請日期2008年3月28日 優(yōu)先權(quán)日2007年3月30日
發(fā)明者G.奈格爾, R.L.坎貝爾, J.B.克羅斯蘭德, L.K.普蒂耶達(dá)思, S.A.費(fèi)希爾, S.M.貝內(nèi)特, A.V.安德森, G.格爾宗 申請人:英特爾公司