專利名稱:虛擬化環(huán)境中的高速緩存分區(qū)的制作方法
技術(shù)領(lǐng)域:
本申請一般地涉及改進(jìn)的數(shù)據(jù)處理裝置和方法,更具體地說,涉及一種用于提供改進(jìn)的可重新配置的高速緩存的裝置和方法。
背景技術(shù):
高速緩存用于加快數(shù)據(jù)傳輸,并且可以是臨時或永久的。每臺計算機(jī)中都有存儲器高速緩存以加快指令執(zhí)行以及數(shù)據(jù)檢索和更新。這些臨時高速緩存用作登臺區(qū)域并且其內(nèi)容不斷變化。存儲器高速緩存或“CPU高速緩存”是橋接主存儲器和中央處理單元(CPU) 的存儲器組(bank)。存儲器高速緩存比主存儲器快,并允許以較高速度執(zhí)行指令以及讀取和寫入數(shù)據(jù)。指令和數(shù)據(jù)以固定塊(稱為高速緩存“行(line)”)從主存儲器傳輸?shù)礁咚倬彺妗L摂M機(jī)是在計算機(jī)系統(tǒng)內(nèi)的一個隔離分區(qū)中運(yùn)行的操作系統(tǒng)連同一個或多個應(yīng)用的實例。虛擬機(jī)監(jiān)視器能夠使不同操作系統(tǒng)同時在同一計算機(jī)中運(yùn)行并防止應(yīng)用相互干擾。這不同于雙重引導(dǎo)或多重引導(dǎo)環(huán)境,其中用戶在啟動時只能選擇一個操作系統(tǒng)。每個虛擬機(jī)都如同一個機(jī)器,并且它好像擁有整臺計算機(jī)那樣運(yùn)行。每個虛擬機(jī)分區(qū)中的操作系統(tǒng)可以被稱為“客戶(guest)操作系統(tǒng)”,并且它們通過虛擬機(jī)監(jiān)視器 (VMM)與硬件通信。VMM為每個虛擬機(jī)“虛擬化”諸如處理器、存儲器、輸入/輸出(I/O)適配器之類的硬件和其他資源。利用虛擬化,多個操作系統(tǒng)可以在同一服務(wù)器中運(yùn)行,從而無需將單個機(jī)器專用于一個應(yīng)用。新舊應(yīng)用可以同時在多個具有許多執(zhí)行線程的核心服務(wù)器中通過它們各自的操作系統(tǒng)運(yùn)行,這節(jié)省了空間和功耗。無需購買新的硬件即可部署新版本的操作系統(tǒng)和新的應(yīng)用。因此,本領(lǐng)域需要解決上述問題。
發(fā)明內(nèi)容
從第一方面來看,本發(fā)明提供了一種在數(shù)據(jù)處理系統(tǒng)中對虛擬化環(huán)境中的共享高速緩存進(jìn)行分區(qū)的方法。所述方法包括將虛擬標(biāo)識符分配給虛擬機(jī)以及在分區(qū)表中為所述虛擬機(jī)創(chuàng)建表項。所述表項包括垂直分區(qū)控制和水平分區(qū)控制。所述方法還包括接收來自所述虛擬機(jī)的高速緩存訪問請求,以及響應(yīng)于所述高速緩存訪問請求導(dǎo)致高速緩存未命中,根據(jù)所述分區(qū)表內(nèi)與所述虛擬機(jī)對應(yīng)的所述表項中的所述垂直分區(qū)控制和所述水平分區(qū)控制而寫入所述共享高速緩存。從另一方面來看,本發(fā)明提供了一種計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品包括提供計算機(jī)可讀程序的計算機(jī)可用或可讀介質(zhì)。所述計算機(jī)可讀程序在計算設(shè)備上執(zhí)行時導(dǎo)致所述計算設(shè)備執(zhí)行上面針對方法示例性實施例描述的各種操作及其組合。從另一方面來看,本發(fā)明提供了一種對虛擬化環(huán)境中的共享高速緩存進(jìn)行分區(qū)的裝置。所述裝置包括共享高速緩存陣列和共享高速緩存控制器。所述共享高速緩存控制器被配置為接收來自虛擬機(jī)的高速緩存訪問請求,以及響應(yīng)于所述高速緩存訪問請求導(dǎo)致高速緩存未命中,根據(jù)分區(qū)表內(nèi)與所述虛擬機(jī)對應(yīng)的表項中的垂直分區(qū)控制和水平分區(qū)控制而寫入所述共享高速緩存陣列。從另一方面來看,本發(fā)明提供了一種存儲在計算機(jī)可讀介質(zhì)上并可載入數(shù)字計算機(jī)的內(nèi)部存儲器的計算機(jī)程序,所述計算機(jī)程序包括軟件代碼部分,當(dāng)所述程序在計算機(jī)上運(yùn)行時,所述軟件代碼部分用于執(zhí)行本發(fā)明的步驟。本發(fā)明的這些和其他特征和優(yōu)點將在以下對本發(fā)明的實例實施例的詳細(xì)說明中進(jìn)行描述,或者鑒于以下對本發(fā)明的實例實施例的詳細(xì)說明,本發(fā)明的這些和其他特征和優(yōu)點將對本領(lǐng)域的技術(shù)人員變得顯而易見。
現(xiàn)在僅通過實例的方式參考如以下附圖所示的優(yōu)選實施例描述本發(fā)明圖1示出了根據(jù)現(xiàn)有技術(shù)并且其中可以實現(xiàn)本發(fā)明的一個優(yōu)選實施例的數(shù)據(jù)處理系統(tǒng)的方塊圖;其中可以實現(xiàn)示例性實施例的各方面;圖2示出了根據(jù)本發(fā)明的一個優(yōu)選實施例的實例虛擬化環(huán)境的方塊圖;圖3示出了根據(jù)本發(fā)明的一個優(yōu)選實施例的共享高速緩存的垂直和水平分區(qū);圖4是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的用于虛擬化環(huán)境中的高速緩存分區(qū)的分區(qū)表的方塊圖;圖5示出了根據(jù)本發(fā)明的一個優(yōu)選實施例的虛擬化環(huán)境中的共享高速緩存的垂直分區(qū);圖6示出了根據(jù)本發(fā)明的一個優(yōu)選實施例的虛擬化環(huán)境中的共享高速緩存的水平分區(qū);圖7是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的虛擬化環(huán)境中的高速緩存分區(qū)的虛擬機(jī)監(jiān)視器的操作的流程圖;以及圖8是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的虛擬化環(huán)境中的共享高速緩存的操作的流程圖。
具體實施例方式示例性實施例在虛擬機(jī)監(jiān)視器中提供了一種用于在虛擬化環(huán)境中提供高速緩存分區(qū)的機(jī)制。所述機(jī)制將虛擬標(biāo)識(ID)分配給所述虛擬化環(huán)境中的每個虛擬機(jī)。處理核心將所述虛擬機(jī)的所述虛擬ID存儲在專用寄存器中。所述機(jī)制還在分區(qū)表中為所述虛擬機(jī)創(chuàng)建表項。所述機(jī)制可以使用垂直(路)分區(qū)和/或水平分區(qū)對共享高速緩存進(jìn)行分區(qū)。所述分區(qū)表中的表項包括垂直分區(qū)控制和水平分區(qū)控制。根據(jù)一個示例性實施例,對于8路高速緩存,所述垂直分區(qū)控制包括8位掩碼。根據(jù)一個示例性實施例,所述水平分區(qū)控制包括4位掩碼和4位偏移。所述4位掩碼確定多個分區(qū),以及所述4位偏移確定第一位置 (行)。對于每次高速緩存訪問,所述虛擬機(jī)將所述虛擬ID連同地址一起傳遞到所述共享高速緩存。如果所述高速緩存訪問導(dǎo)致未命中,則所述共享高速緩存使用所述分區(qū)表選擇犧牲高速緩存行(victim cache line)以便替換。犧牲高速緩存行是作為數(shù)據(jù)替換的候選者的高速緩存行。因此,示例性實施例可以用于多種不同類型的數(shù)據(jù)處理環(huán)境,包括分布式數(shù)據(jù)處理環(huán)境、單個數(shù)據(jù)處理設(shè)備等。為了提供描述示例性實施例的特定元素和功能的上下文,下面提供了圖1和2作為其中可以實現(xiàn)示例性實施例的各方面的實例環(huán)境。盡管遵照圖1和 2的描述將主要專注于單個數(shù)據(jù)處理設(shè)備實施方式,但這僅是一個實例而并非旨在聲明或暗示對本發(fā)明的特征的任何限制。相反,示例性實施例旨在包括分布式數(shù)據(jù)處理環(huán)境?,F(xiàn)在參考附圖,具體地說,參考圖1和2,提供了其中可以實現(xiàn)本發(fā)明的示例性實施例的數(shù)據(jù)處理環(huán)境的實例圖。應(yīng)該理解,圖1和2僅是實例,并非旨在斷言或暗示對其中可以實現(xiàn)本發(fā)明的各方面或?qū)嵤├沫h(huán)境的任何限制??梢詫γ枋龅沫h(huán)境做出許多修改而不偏離本發(fā)明的范圍?,F(xiàn)在參考附圖,圖1是其中可以實現(xiàn)示例性實施例的各方面的數(shù)據(jù)處理系統(tǒng)的方塊圖。數(shù)據(jù)處理系統(tǒng)100是計算機(jī)的一個實例,其中可以針對示例性實施例定位實施各過程的計算機(jī)可用程序代碼或指令。在此示例性實例中,數(shù)據(jù)處理系統(tǒng)100包括通信結(jié)構(gòu) 102,通信結(jié)構(gòu)102在處理器單元104、存儲器106、永久性存儲裝置108、通信單元110、輸入 /輸出(I/O)單元112和顯示器114之間提供通信。處理器單元104用于執(zhí)行可以加載到存儲器106中的軟件指令。處理器單元104 可以是包括一個或多個處理器的集合,或者可以是多處理器核心,具體取決于特定實施方式。此外,處理器單元104可以使用一個或多個其中主處理器與輔助處理器存在于單個芯片上的異構(gòu)處理器系統(tǒng)實施。作為另一個示例性實例,處理器單元104可以是包含多個相同類型處理器的對稱多處理器系統(tǒng)。存儲器106和永久性存儲裝置108是存儲設(shè)備116的實例。存儲設(shè)備是任何一個能夠臨時和/或永久存儲信息(例如但不限于數(shù)據(jù)、功能形式的程序代碼和/或其他適合的信息)的硬件。在這些實例中,存儲器106例如可以是隨機(jī)存取存儲器或任何其他適合的易失性或非易失性存儲設(shè)備。永久性存儲裝置108可以采取各種形式,具體取決于特定實施方式。例如,永久性存儲裝置108可以包含一個或多個組件或設(shè)備。例如,永久性存儲裝置108可以是硬盤驅(qū)動器、閃存、可重寫光盤、可重寫磁帶或上述各項的某種組合。永久性存儲裝置108使用的介質(zhì)還可以是可移動的。例如,可以使用可移動硬盤驅(qū)動器作為永久性存儲裝置108。處理單元104可以具有高速緩存134。高速緩存134可以是0級(LO)和/或1級 (Li)高速緩存。存儲器106可以具有高速緩存136,高速緩存136例如是可以2級(L2)高速緩存或3級(L3)高速緩存。存儲器106可以是在多個線程或多個處理單元之間共享的共享存儲器。因此,高速緩存136可以是共享高速緩存。在這些實例中,通信單元110提供與其他數(shù)據(jù)處理系統(tǒng)或設(shè)備的通信。在這些實例中,通信單元110是網(wǎng)絡(luò)接口卡。通信單元110可以通過使用物理和無線通信鏈路二者之一或全部提供通信。輸入/輸出單元112允許與可以連接到數(shù)據(jù)處理系統(tǒng)100的其他設(shè)備進(jìn)行數(shù)據(jù)的輸入和輸出。例如,輸入/輸出單元112可以提供連接以便通過鍵盤、鼠標(biāo)和/或某些其他適合的輸入設(shè)備實現(xiàn)用戶輸入。此外,輸入/輸出單元112可以將輸出發(fā)送到打印機(jī)。顯示器114提供用于向用戶顯示信息的機(jī)制。用于操作系統(tǒng)、應(yīng)用和/或程序的指令可以位于存儲設(shè)備116中,存儲設(shè)備116通過通信結(jié)構(gòu)102與處理器單元104通信。在這些示例性實例中,所述指令以功能形式位于永久性存儲裝置108上。這些指令可以加載到存儲器106中以便由處理器單元104執(zhí)行。 處理器單元104可以使用可位于存儲器(如存儲器106)中的計算機(jī)實現(xiàn)的指令執(zhí)行不同實施例的過程。這些指令被稱為程序代碼、計算機(jī)可用程序代碼或計算機(jī)可讀程序代碼并可由處理器單元104中的處理器讀取和執(zhí)行。不同實施例中的所述程序代碼可以包含在不同物理或有形計算機(jī)可讀介質(zhì)(例如存儲器106或永久性存儲裝置108)上。程序代碼118以功能形式位于可選擇性地移除的計算機(jī)可讀介質(zhì)120上,并可以加載或傳輸?shù)綌?shù)據(jù)處理系統(tǒng)100以便由處理器單元104執(zhí)行。在這些實例中,程序代碼118 和計算機(jī)可讀介質(zhì)120形成計算機(jī)程序產(chǎn)品122。在一個實例中,計算機(jī)可讀介質(zhì)120可以采取有形形式,例如插入或放入屬于永久性存儲裝置108的一部分的驅(qū)動器或其他設(shè)備中的光盤或磁盤,以便傳輸?shù)酱鎯υO(shè)備(例如屬于永久性存儲裝置108的一部分的硬盤驅(qū)動器)。在有形形式中,計算機(jī)可讀介質(zhì)120還可以采取永久性存儲裝置的形式,例如連接到數(shù)據(jù)處理系統(tǒng)100的硬盤驅(qū)動器、拇指驅(qū)動器或閃存。有形形式的計算機(jī)可讀介質(zhì)120也被稱為計算機(jī)可記錄存儲介質(zhì)。在某些情況下,計算機(jī)可讀介質(zhì)120可能不可移動。備選地,程序代碼118可以通過到通信單元110的通信鏈路和/或通過到輸入/ 輸出單元112的連接從計算機(jī)可讀介質(zhì)120傳輸?shù)綌?shù)據(jù)處理系統(tǒng)100。在示例性實例中,所述通信鏈路和/或連接可以是物理或無線的。所述計算機(jī)可讀介質(zhì)還可以采取非有形介質(zhì)的形式,例如包含所述程序代碼的通信鏈路或無線傳輸。在某些示例性實施例中,程序代碼118可以通過網(wǎng)絡(luò)從其他設(shè)備或數(shù)據(jù)處理系統(tǒng)下載到永久性存儲裝置108以便在數(shù)據(jù)處理系統(tǒng)100內(nèi)使用。例如,存儲在服務(wù)器數(shù)據(jù)處理系統(tǒng)內(nèi)的計算機(jī)可讀存儲介質(zhì)中的程序代碼可以通過網(wǎng)絡(luò)從所述服務(wù)器下載到數(shù)據(jù)處理系統(tǒng)100。提供程序代碼118的數(shù)據(jù)處理系統(tǒng)可以是服務(wù)器計算機(jī)、客戶端計算機(jī)或者能夠存儲和傳輸程序代碼118的某種其他設(shè)備。針對數(shù)據(jù)處理系統(tǒng)100示出的不同組件并非旨在提供對其中可以實現(xiàn)不同實施例的方式的架構(gòu)限制??梢栽诎ㄡ槍?shù)據(jù)處理系統(tǒng)100示出的這些組件之外或替代這些組件的組件的數(shù)據(jù)處理系統(tǒng)中實現(xiàn)不同的示例性實施例。圖1中示出的其他組件可以不同于示出的示例性實例??梢允褂萌魏文軌驁?zhí)行程序代碼的硬件設(shè)備或系統(tǒng)實現(xiàn)不同的實施例。作為一個實例,所述數(shù)據(jù)處理系統(tǒng)可以包括與無機(jī)組件集成的有機(jī)組件和/或可以完全由除人以外的有機(jī)組件組成。例如,存儲設(shè)備可以包括有機(jī)半導(dǎo)體。作為另一個實例,數(shù)據(jù)處理系統(tǒng)100中的存儲設(shè)備是任何可以存儲數(shù)據(jù)的硬件裝置。存儲器106、永久性存儲裝置108和計算機(jī)可讀介質(zhì)120是有形形式的存儲設(shè)備的實例。在另一個實例中,總線系統(tǒng)可以用于實施通信結(jié)構(gòu)102,并且可以包括一個或多個總線(例如系統(tǒng)總線或輸入/輸出總線)。當(dāng)然,所述總線系統(tǒng)可以使用任何適合類型的架構(gòu)實施,所述架構(gòu)在連接到所述總線系統(tǒng)的不同組件或設(shè)備之間提供數(shù)據(jù)傳輸。此外,通信單元可以包括一個或多個用于傳輸和接收數(shù)據(jù)的設(shè)備,例如調(diào)制解調(diào)器或網(wǎng)絡(luò)適配器。此夕卜,存儲器例如可以是存儲器106或者例如在可以存在于通信結(jié)構(gòu)102中的接口和存儲器控制器集線器中發(fā)現(xiàn)的高速緩存。圖2是其中可以實現(xiàn)示例性實施例的各方面的實例虛擬化環(huán)境的方塊圖。虛擬化環(huán)境200中的硬件可以例如作為圖1中的數(shù)據(jù)處理系統(tǒng)100實施。虛擬化環(huán)境200包括虛擬機(jī)210、220和230、虛擬機(jī)監(jiān)視器250以及資源260。操作系統(tǒng)212、222和232分別在虛擬機(jī)210、220和230內(nèi)執(zhí)行。操作系統(tǒng)212、222和232可以是單個操作系統(tǒng)的多個副本或同時在虛擬化環(huán)境200內(nèi)運(yùn)行的多個異構(gòu)操作系統(tǒng)。虛擬機(jī)監(jiān)視器250為虛擬機(jī)210、220和230分配資源260。資源260例如可以包括處理器261-263、存儲器264和265、服務(wù)處理器266、高速緩存267和268、存儲裝置269 和I/O適配器270-272。例如,虛擬機(jī)監(jiān)視器250可以為每個虛擬機(jī)分配“虛擬處理器”,從虛擬機(jī)的角度,該“虛擬處理器”似乎是單個處理器。虛擬處理器可以是多線程處理器核心的線程、一個處理器核心、多個處理器核心、多核處理器或多個處理器。虛擬機(jī)監(jiān)視器250為虛擬機(jī)210、220和230執(zhí)行多種功能和服務(wù)以創(chuàng)建和實施虛擬化環(huán)境200的分區(qū)。虛擬機(jī)監(jiān)視器250例如可以是在服務(wù)處理器266上運(yùn)行的軟件或固件。系統(tǒng)管理程序軟件是IBM 提供的服務(wù)器固件的一個實例。固件是存儲在存儲器芯片中的無需電力即可保持其內(nèi)容的“軟件”,所述存儲器芯片例如只讀存儲器(ROM)、可編程 ROM(PROM)、可擦寫可編程ROM(EPROM)、電可擦寫可編程ROM(EEPROM)以及非易失性隨機(jī)存取存儲器(非易失性RAM)。因此,虛擬機(jī)監(jiān)視器250通過對虛擬化環(huán)境200的所有硬件資源進(jìn)行虛擬化,允許同時執(zhí)行獨(dú)立操作系統(tǒng)映像212、222和232。IBM是國際商業(yè)機(jī)器公司的商標(biāo),在全球許多管轄范圍內(nèi)進(jìn)行了注冊。更具體地說,資源260包括高速緩存267和高速緩存268。因此,高速緩存267和高速緩存268可以是共享高速緩存。虛擬化環(huán)境可能需要性能保證。例如,為使虛擬機(jī)滿足性能目標(biāo),虛擬機(jī)可能需要特定數(shù)量的高速緩存。因此,可以使用高速緩存著色(coloring) 或路分區(qū)對所述高速緩存進(jìn)行分區(qū)。但是,共享高速緩存中的干擾可能與性能保證不一致。根據(jù)本發(fā)明的一個優(yōu)選實施例,在虛擬機(jī)監(jiān)視器250中提供了一種用于在虛擬化環(huán)境200中提供高速緩存分區(qū)的機(jī)制。所述機(jī)制為虛擬化環(huán)境200中的每個虛擬機(jī)210、 220和230分配虛擬標(biāo)識(ID)。所述機(jī)制在分區(qū)表中為所述虛擬機(jī)創(chuàng)建表項。所述機(jī)制可以使用垂直(路)分區(qū)和/或水平分區(qū)對共享高速緩存進(jìn)行分區(qū)。所述分區(qū)表中的表項包括垂直分區(qū)控制和水平分區(qū)控制。圖3示出了根據(jù)本發(fā)明的一個優(yōu)選實施例的共享高速緩存的垂直和水平分區(qū)。在所示實例中,共享高速緩存是8路高速緩存;因此,垂直分區(qū)也可以被稱為“路分區(qū)”。也就是說,在垂直分區(qū)中,虛擬機(jī)監(jiān)視器可以為虛擬機(jī)分配共享高速緩存的一個或多個列或路。 在所示實例中,共享高速緩存的每個行可以被稱為“集合”或“同余類”。因此,在水平分區(qū)中,虛擬機(jī)監(jiān)視器可以為虛擬機(jī)分配共享高速緩存的一個或多個行或集合。圖4是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的虛擬化環(huán)境中的高速緩存分區(qū)的分區(qū)表的方塊圖。所述虛擬機(jī)監(jiān)視器為虛擬機(jī)分配虛擬ID 402。虛擬ID 402是對分區(qū)表410 的索引。所述虛擬機(jī)監(jiān)視器還在分區(qū)表410中為所述虛擬機(jī)創(chuàng)建由虛擬ID 402索引的表項。分區(qū)表410中的每個表項包括垂直分區(qū)控制412和/或水平分區(qū)控制414。分配給虛擬機(jī)的處理器核心在專用寄存器中存儲虛擬ID 402。虛擬ID402是所述虛擬機(jī)的架構(gòu)狀態(tài)的一部分;因此,在虛擬機(jī)切換過程中保存虛擬ID 402。所述虛擬機(jī)將其虛擬ID 402連同地址一起傳遞到共享高速緩存。如果高速緩存訪問導(dǎo)致高速緩存未命中,則共享高速緩存使用虛擬ID402和分區(qū)表410選擇犧牲行。圖5示出了根據(jù)本發(fā)明的一個優(yōu)選實施例的虛擬化環(huán)境中的共享高速緩存的垂直分區(qū)。垂直分區(qū)控制可以包括位掩碼,其中用于共享高速緩存的每個路的位不超過1位。 例如,對于8路高速緩存,垂直分區(qū)控制將包括一個8位掩碼。第一虛擬機(jī)的位掩碼1502 可以是“ObllOOOOll”,這指示所述第一虛擬機(jī)使用路0、路1、路6和路7。第二虛擬機(jī)的位掩碼2504可以是“ObOOl 10011”,這指示所述第二虛擬機(jī)使用路2、路3、路6和路7。因此, 在上面的實例中,所述虛擬機(jī)具有兩個專用垂直分區(qū)(對于第一虛擬機(jī)為路0和路1,對于第二虛擬機(jī)為路2和路3)以及兩個共享虛擬分區(qū)(即,路6和路7)。圖6示出了根據(jù)本發(fā)明的一個優(yōu)選實施例的虛擬化環(huán)境中的共享高速緩存的水平分區(qū)。水平分區(qū)控制可以包括掩碼和分區(qū)偏移。假設(shè)具有16個水平分區(qū),則水平分區(qū)控制可以包括一個4位掩碼和一個4位偏移。水平分區(qū)的數(shù)量是2的冪(所述冪等于掩碼中的位數(shù)),在此實例中為24或16。因此,水平分區(qū)是分區(qū)0到分區(qū)15。掩碼指示虛擬機(jī)可以使用何種相對位置。換言之,掩碼指示要使用多少個分區(qū)。 偏移指示第一位置在何處。因此,掩碼“ObOOOO”和偏移“0b0001”指示虛擬機(jī)使用分區(qū)1。 作為另一個實例,掩碼“ObOOOl”和偏移“0b0010”指示虛擬機(jī)使用分區(qū)2和分區(qū)3。給定地址610包括標(biāo)記(tag)612、分區(qū)ID 614、下標(biāo)(low index)616和行偏移 618。分區(qū)ID 614具有與掩碼602相同的位數(shù)。分區(qū)ID 614和掩碼進(jìn)行“與”的結(jié)果是此虛擬機(jī)可以使用的第一水平分區(qū)的位置。此結(jié)果加上偏移604指向具有給定地址610的對應(yīng)位置。下標(biāo)616是選定行內(nèi)到對應(yīng)行的位置的索引。選擇對應(yīng)行或同余集之后,使用垂直分區(qū)信息在行中選擇犧牲行。垂直分區(qū)信息可用于擴(kuò)展已知替換策略。例如,常用替換策略是替換最近最少使用(LRU)高速緩存行。 LRU策略可以擴(kuò)展為選擇存儲在此虛擬機(jī)可以使用的垂直分區(qū)中的LRU行。如果虛擬機(jī)的位掩碼2502為“ObOOllOOll”,則選擇來自路2、路3、路6和路7的LRU行作為犧牲行。垂直分區(qū)的數(shù)量必須小于或等于關(guān)聯(lián)性(每行的大小)。每個虛擬機(jī)必須使用2 的水平分區(qū)數(shù)的冪。其他虛擬機(jī)無法容易地使用未使用的專用分區(qū)。在一個備選實施例中,分區(qū)信息可以被視為提示(hint)。換言之,虛擬機(jī)可以使用虛擬機(jī)監(jiān)視器在分區(qū)表中分配的垂直和/或水平分區(qū),但可以決定不遵循所分配的分區(qū)。 在一個實例實施例中,虛擬機(jī)可以在考慮分區(qū)表中的所分配分區(qū)之前選擇未使用的行。如本領(lǐng)域的技術(shù)人員將理解的,本發(fā)明可以體現(xiàn)為系統(tǒng)、方法、計算機(jī)程序產(chǎn)品或計算機(jī)程序。因此,本發(fā)明可以采取完全硬件實施例、完全軟件實施例(包括固件、駐留軟件、微代碼等)或組合了在此通常被稱為“電路”、“模塊”或“系統(tǒng)”的軟件和硬件方面的實施例的形式。此外,本發(fā)明可以采取體現(xiàn)在任何有形表達(dá)介質(zhì)(在介質(zhì)中包含計算機(jī)可用程序代碼)中的計算機(jī)程序產(chǎn)品的形式??梢允褂靡粋€或多個計算機(jī)可用或計算機(jī)可讀介質(zhì)的任意組合。所述計算機(jī)可用或計算機(jī)可讀介質(zhì)例如可以是(但不限于)電、磁、光、電磁、紅外線或半導(dǎo)體系統(tǒng)、裝置、設(shè)備或傳播介質(zhì)。計算機(jī)可讀介質(zhì)的更具體的實例(非窮舉列表)將包括以下項具有一條或多條線的電連接、便攜式計算機(jī)軟盤、硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、可擦寫可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式光盤只讀存儲器(CDROM)、光存儲設(shè)備、諸如支持因特網(wǎng)或內(nèi)聯(lián)網(wǎng)的傳輸介質(zhì)或磁存儲設(shè)備。要指出的是,所述計算機(jī)可用或計算機(jī)可讀介質(zhì)甚至可以是程序被打印在其上的紙張或其他適合的介質(zhì),因為所述程序可以通過例如光掃描所述紙張或其他介質(zhì)被電子地捕獲,然后被編譯、解釋或另外以適合的方式被處理(如果必要),然后被存儲在計算機(jī)存儲器中。在本文檔的上下文中,計算機(jī)可用或計算機(jī)可讀介質(zhì)可以是任何能夠包含、存儲、傳送、傳播或傳輸由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與指令執(zhí)行系統(tǒng)、裝置或設(shè)備結(jié)合的程序的介質(zhì)。計算機(jī)可用介質(zhì)可以包括其中包含計算機(jī)可用程序代碼(在基帶中或作為載波的一部分)的傳播數(shù)據(jù)信號??梢允褂萌魏芜m當(dāng)?shù)慕橘|(zhì)(包括但不限于無線、有線、光纜、射頻(RF)等)來傳輸計算機(jī)可用程序代碼。用于執(zhí)行本發(fā)明的操作的計算機(jī)程序代碼可以使用一種或多種編程語言的任意組合來編寫,所述編程語言包括諸如Java 、Smalltalk , C++之類的面向?qū)ο蟮木幊陶Z言以及諸如“C”編程語言或類似的編程語言之類的常規(guī)過程編程語言。所述程序代碼可以完全地在用戶計算機(jī)上執(zhí)行,部分地在用戶計算機(jī)上執(zhí)行,作為獨(dú)立的軟件包、部分地在用戶計算機(jī)上并部分地在遠(yuǎn)程計算機(jī)上執(zhí)行,或者完全地在遠(yuǎn)程計算機(jī)或服務(wù)器上執(zhí)行。在后者的情況中,所述遠(yuǎn)程計算機(jī)可以通過包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)的任何類型網(wǎng)絡(luò)與用戶的計算機(jī)相連,也可以與外部計算機(jī)進(jìn)行連接(例如,使用因特網(wǎng)服務(wù)提供商通過因特網(wǎng)連接)。此外,所述程序代碼可以包含在服務(wù)器或遠(yuǎn)程計算機(jī)上的計算機(jī)可讀存儲介質(zhì)中,并且通過網(wǎng)絡(luò)下載到所述遠(yuǎn)程計算機(jī)或用戶計算機(jī)的計算機(jī)可讀存儲介質(zhì)以便存儲和/或執(zhí)行。此外,任何計算系統(tǒng)或數(shù)據(jù)處理系統(tǒng)都可以在通過網(wǎng)絡(luò)從遠(yuǎn)程計算系統(tǒng)或數(shù)據(jù)處理系統(tǒng)下載程序代碼之后,將所述程序代碼存儲在計算機(jī)可讀存儲介質(zhì)中。下面參考根據(jù)本發(fā)明的優(yōu)選實施例的方法、裝置(系統(tǒng))和計算機(jī)程序產(chǎn)品的流程圖和/或方塊圖描述示例性實施例。將理解,所述流程圖和/或方塊圖的每個方塊以及所述流程圖和/或方塊圖中的方塊的組合可以由計算機(jī)程序指令來實現(xiàn)。這些計算機(jī)程序指令可以被提供給通用計算機(jī)、專用計算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器以產(chǎn)生機(jī)器,以便通過所述計算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的裝置。這些計算機(jī)程序指令也可以被存儲在引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理裝置以特定方式工作的計算機(jī)可讀介質(zhì)中,以便存儲在所述計算機(jī)可讀介質(zhì)中的指令產(chǎn)生一件包括實現(xiàn)在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的指令裝置的制品。所述計算機(jī)程序指令還可被加載到計算機(jī)或其他可編程數(shù)據(jù)處理裝置,以導(dǎo)致在所述計算機(jī)或其他可編程裝置上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的過程,從而在所述計算機(jī)或其他可編程裝置上執(zhí)行的指令提供用于實現(xiàn)在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的過程。附圖中的流程圖和方塊圖示出了根據(jù)本發(fā)明的各種優(yōu)選實施例的系統(tǒng)、方法和計算機(jī)程序產(chǎn)品的可能實施方式的架構(gòu)、功能和操作。在此方面,所述流程圖或方塊圖中的每個方塊都可以表示代碼的模塊、段或部分,所述代碼包括用于實現(xiàn)指定的邏輯功能(多個) 的一個或多個可執(zhí)行指令。還應(yīng)指出,在某些備選實施方式中,在方塊中說明的功能可以不按圖中說明的順序發(fā)生。例如,示為連續(xù)的兩個方塊可以實際上被基本同時地執(zhí)行,或者某些時候,取決于所涉及的功能,可以以相反的順序執(zhí)行所述方塊。還將指出,所述方塊圖和 /或流程圖的每個方塊以及所述方塊圖和/或流程圖中的方塊的組合可以由執(zhí)行指定功能或操作的基于專用硬件的系統(tǒng)或?qū)S糜布陀嬎銠C(jī)指令的組合來實現(xiàn)。圖7是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的用于虛擬化環(huán)境中的高速緩存分區(qū)的虛擬機(jī)監(jiān)視器的操作的流程圖。當(dāng)激活新的虛擬機(jī)時操作開始,虛擬機(jī)監(jiān)視器將虛擬ID 分配給所述虛擬機(jī)(方塊702)。分配給所述虛擬機(jī)的處理核心將虛擬ID存儲在專用寄存器中(方塊704)。所述虛擬機(jī)監(jiān)視器然后在高速緩存分區(qū)表中為所述虛擬機(jī)創(chuàng)建表項(方塊706)。此后,操作結(jié)束。圖8是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的虛擬化環(huán)境中的共享高速緩存的操作的流程圖。當(dāng)虛擬機(jī)在虛擬化環(huán)境中對共享高速緩存執(zhí)行高速緩存訪問時操作開始,所述虛擬機(jī)將虛擬ID和地址傳遞到高速緩存(方塊802)。高速緩存判定所述高速緩存訪問是否導(dǎo)致高速緩存未命中(方塊804)。如果所述高速緩存訪問未導(dǎo)致高速緩存未命中,則高速緩存執(zhí)行所述高速緩存訪問(方塊806),并且操作結(jié)束。如果在方塊804所述高速緩存訪問導(dǎo)致高速緩存未命中,則高速緩存使用分區(qū)表選擇犧牲行(方塊808)、從存儲器讀取數(shù)據(jù)(方塊810),并替換犧牲行(方塊812)。此后,操作結(jié)束。因此,示例性實施例在虛擬機(jī)監(jiān)視器中提供了一種用于在虛擬化環(huán)境中提供高速緩存分區(qū)的機(jī)制。所述機(jī)制將虛擬標(biāo)識(ID)分配給所述虛擬化環(huán)境中的每個虛擬機(jī)。處理核心將所述虛擬機(jī)的所述虛擬ID存儲在專用寄存器中。所述機(jī)制還在分區(qū)表中為所述虛擬機(jī)創(chuàng)建表項。所述機(jī)制可以使用垂直(路)分區(qū)和/或水平分區(qū)對共享高速緩存進(jìn)行分區(qū)。所述分區(qū)表中的表項包括垂直分區(qū)控制和水平分區(qū)控制。對于每次高速緩存訪問, 所述虛擬機(jī)將虛擬ID連同地址一起傳遞到所述共享高速緩存。如果所述高速緩存訪問導(dǎo)致未命中,則所述共享高速緩存使用所述分區(qū)表選擇犧牲高速緩存行以便替換。示例性實施例的機(jī)制無需更改虛擬機(jī)中的客戶操作系統(tǒng)。此外,示例性實施例的機(jī)制為高速緩存增加了非常小的復(fù)雜性,因為它們無需更改高速緩存陣列。高速緩存分區(qū)表非常小。例如,每個虛擬機(jī)的16位表項(8位用于垂直分區(qū),8位用于水平分區(qū))允許128 個分區(qū)。通過示例性實施例的機(jī)制進(jìn)行的高速緩存分區(qū)允許靈活的分區(qū),從而允許各種程度的共享和專用性。一個行可以轉(zhuǎn)到多個分區(qū)。示例性實施例可以與許多基于軟件的高速緩存著色技術(shù)無關(guān)。如上面所指出的,應(yīng)該理解,示例性實施例可以采取完全硬件實施例、完全軟件實施例或包含硬件和軟件元素兩者的實施例的形式。在一個實例實施例中,示例性實施例的機(jī)制以軟件或程序代碼實現(xiàn),所述軟件或程序代碼包括但不限于固件、駐留軟件、微代碼寸。適合于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括至少一個直接或通過系統(tǒng)總線間接連接到存儲器元件的處理器。所述存儲器元件可以包括在程序代碼的實際執(zhí)行期間采用的本地存儲器、大容量存儲裝置以及提供至少某些程序代碼的臨時存儲以減少必須在執(zhí)行期間從大容量存儲裝置檢索代碼的次數(shù)的高速緩沖存儲器。輸入/輸出或I/O設(shè)備(包括但不限于鍵盤、顯示器、指點設(shè)備等)可以直接或通過中間I/O控制器與系統(tǒng)相連。網(wǎng)絡(luò)適配器也可以被連接到系統(tǒng)以使所述數(shù)據(jù)處理系統(tǒng)能夠通過中間專用或公共網(wǎng)絡(luò)變得與其他數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲設(shè)備相連。調(diào)制
解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡只是幾種目前可用的網(wǎng)絡(luò)適配器類型。 出于示例和說明目的給出了對本發(fā)明的描述,并且所述描述并非旨在是窮舉的或
是將本發(fā)明限于所公開的形式。對于本領(lǐng)域的技術(shù)人員來說,許多修改和變化都將是顯而
易見的。實施例的選擇和描述是為了最佳地解釋本發(fā)明的原理、實際應(yīng)用,并且當(dāng)適合于所
構(gòu)想的特定使用時,使得本領(lǐng)域的其他技術(shù)人員能夠理解本發(fā)明的具有各種修改的各種實施例。
權(quán)利要求
1.一種在數(shù)據(jù)處理系統(tǒng)中對虛擬化環(huán)境中的共享高速緩存進(jìn)行分區(qū)的方法,所述方法包括將虛擬標(biāo)識符分配給虛擬機(jī);在分區(qū)表中為所述虛擬機(jī)創(chuàng)建表項,其中所述表項包括垂直分區(qū)控制和水平分區(qū)控制;接收來自所述虛擬機(jī)的高速緩存訪問請求;以及響應(yīng)于所述高速緩存訪問請求導(dǎo)致高速緩存未命中,根據(jù)所述分區(qū)表內(nèi)與所述虛擬機(jī)對應(yīng)的所述表項中的所述垂直分區(qū)控制和所述水平分區(qū)控制而寫入所述共享高速緩存。
2.如權(quán)利要求1中所述的方法,其中所述垂直分區(qū)控制包括位掩碼。
3.如權(quán)利要求2中所述的方法,其中所述共享高速緩存是八路高速緩存,以及其中所述位掩碼是8位位掩碼。
4.如上述任一權(quán)利要求中所述的方法,其中所述水平分區(qū)控制包括掩碼和偏移。
5.如權(quán)利要求4中所述的方法,其中所述高速緩存訪問請求指定包括標(biāo)記、分區(qū)標(biāo)識符、下標(biāo)和行偏移的地址,以及其中根據(jù)所述分區(qū)表內(nèi)與所述虛擬機(jī)對應(yīng)的所述表項中的所述垂直分區(qū)控制和所述水平分區(qū)控制而寫入所述共享高速緩存包括對所述掩碼和所述分區(qū)標(biāo)識符執(zhí)行“與”運(yùn)算以形成結(jié)果;以及將所述水平控制的偏移與所述結(jié)果相加以形成指向所述地址內(nèi)的對應(yīng)位置的指針。
6.如上述任一權(quán)利要求中所述的方法,其中所述虛擬機(jī)的處理器核心存儲所述虛擬標(biāo)識符。
7.如權(quán)利要求6中所述的方法,其中所述高速緩存訪問請求包括所述虛擬標(biāo)識符。
8.如上述任一權(quán)利要求中所述的方法,其中根據(jù)所述分區(qū)表內(nèi)與所述虛擬機(jī)對應(yīng)的所述表項中的所述垂直分區(qū)控制和所述水平分區(qū)控制而寫入所述共享高速緩存包括根據(jù)所述水平分區(qū)控制選擇所述共享高速緩存的一個或多個行;根據(jù)所述垂直分區(qū)控制選擇所述共享高速緩存的所述一個或多個行的一個或多個路。
9.如權(quán)利要求8中所述的方法,其中根據(jù)所述分區(qū)表內(nèi)與所述虛擬機(jī)對應(yīng)的所述表項中的所述垂直分區(qū)控制和所述水平分區(qū)控制而寫入所述共享高速緩存進(jìn)一步包括從所述一個或多個路選擇要替換的一個或多個最近最少使用高速緩存行。
10.如上述任一權(quán)利要求中所述的方法,其中由虛擬機(jī)監(jiān)視器執(zhí)行將虛擬標(biāo)識符分配給虛擬機(jī)以及在分區(qū)表中為所述虛擬機(jī)創(chuàng)建表項。
11.一種在數(shù)據(jù)處理系統(tǒng)中對虛擬化環(huán)境中的共享高速緩存進(jìn)行分區(qū)的裝置,所述裝置包括共享高速緩存陣列;以及共享高速緩存控制器,其中所述共享高速緩存控制器被配置為接收來自虛擬機(jī)的高速緩存訪問請求,以及響應(yīng)于所述高速緩存訪問請求導(dǎo)致高速緩存未命中,根據(jù)分區(qū)表內(nèi)與所述虛擬機(jī)對應(yīng)的表項中的垂直分區(qū)控制和水平分區(qū)控制而寫入所述共享高速緩存陣列。
12.如權(quán)利要求11中所述的裝置,其中所述垂直分區(qū)控制包括位掩碼,以及其中所述水平分區(qū)控制包括掩碼和偏移。
13.如權(quán)利要求12中所述的裝置,其中所述高速緩存訪問請求指定包括標(biāo)記、分區(qū)標(biāo)識符、下標(biāo)和行偏移的地址,以及其中根據(jù)所述分區(qū)表內(nèi)與所述虛擬機(jī)對應(yīng)的所述表項中的所述垂直分區(qū)控制和所述水平分區(qū)控制而寫入所述共享高速緩存陣列包括 對所述掩碼和所述分區(qū)標(biāo)識符執(zhí)行“與”運(yùn)算以形成結(jié)果;以及將所述水平控制的偏移與所述結(jié)果相加以形成指向所述地址內(nèi)的對應(yīng)位置的指針。
14.如權(quán)利要求11至13中的任一權(quán)利要求中所述的裝置,其中根據(jù)所述分區(qū)表內(nèi)與所述虛擬機(jī)對應(yīng)的所述表項中的所述垂直分區(qū)控制和所述水平分區(qū)控制而寫入所述共享高速緩存陣列包括根據(jù)所述水平分區(qū)控制選擇所述共享高速緩存的一個或多個行; 根據(jù)所述垂直分區(qū)控制選擇所述共享高速緩存的所述一個或多個行的一個或多個路。
15.如權(quán)利要求14中所述的裝置,其中根據(jù)所述分區(qū)表內(nèi)與所述虛擬機(jī)對應(yīng)的所述表項中的所述垂直分區(qū)控制和所述水平分區(qū)控制而寫入所述共享高速緩存進(jìn)一步包括從所述一個或多個路選擇要替換的一個或多個最近最少使用高速緩存行。
16.如權(quán)利要求11至15中的任一權(quán)利要求中所述的裝置,還包括虛擬機(jī)監(jiān)視器,其中所述虛擬機(jī)監(jiān)視器被配置為將虛擬標(biāo)識符分配給所述虛擬機(jī)以及在所述分區(qū)表中為所述虛擬機(jī)創(chuàng)建表項。
17.如權(quán)利要求16中所述的裝置,其中所述虛擬機(jī)的處理器核心存儲所述虛擬標(biāo)識符。
18.—種包括計算機(jī)可記錄介質(zhì)的計算機(jī)程序產(chǎn)品,所述計算機(jī)可記錄介質(zhì)上記錄有計算機(jī)可讀程序,其中所述計算機(jī)可讀程序在計算設(shè)備上執(zhí)行時導(dǎo)致所述計算設(shè)備執(zhí)行以下步驟接收來自虛擬機(jī)的高速緩存訪問請求;以及響應(yīng)于所述高速緩存訪問請求導(dǎo)致高速緩存未命中,根據(jù)分區(qū)表內(nèi)與所述虛擬機(jī)對應(yīng)的表項中的垂直分區(qū)控制和水平分區(qū)控制而寫入共享高速緩存。
19.如權(quán)利要求18中所述的計算機(jī)程序產(chǎn)品,其中所述計算機(jī)可讀程序存儲在數(shù)據(jù)處理系統(tǒng)內(nèi)的計算機(jī)可讀存儲介質(zhì)中,以及其中通過網(wǎng)絡(luò)從遠(yuǎn)程數(shù)據(jù)處理系統(tǒng)下載所述計算機(jī)可讀程序。
20.如權(quán)利要求18中所述的計算機(jī)程序產(chǎn)品,其中所述計算機(jī)可讀程序存儲在服務(wù)器數(shù)據(jù)處理系統(tǒng)內(nèi)的計算機(jī)可讀存儲介質(zhì)中,以及其中所述計算機(jī)可讀程序通過網(wǎng)絡(luò)下載到遠(yuǎn)程數(shù)據(jù)處理系統(tǒng),以便通過所述遠(yuǎn)程系統(tǒng)在計算機(jī)可讀存儲介質(zhì)中使用。
21.一種存儲在計算機(jī)可讀介質(zhì)上并可載入數(shù)字計算機(jī)的內(nèi)部存儲器的計算機(jī)程序, 所述計算機(jī)程序包括軟件代碼部分,當(dāng)所述程序在計算機(jī)上運(yùn)行時,所述軟件代碼部分用于執(zhí)行如權(quán)利要求1至10中的任一權(quán)利要求中所述的方法。
全文摘要
在虛擬機(jī)監(jiān)視器中提供了一種用于在虛擬化環(huán)境中提供高速緩存分區(qū)的機(jī)制。所述機(jī)制將虛擬標(biāo)識(ID)分配給所述虛擬化環(huán)境中的每個虛擬機(jī)。處理核心將所述虛擬機(jī)的所述虛擬ID存儲在專用寄存器中。所述機(jī)制還在分區(qū)表中為所述虛擬機(jī)創(chuàng)建表項。所述機(jī)制可使用垂直(路)分區(qū)和/或水平分區(qū)對共享高速緩存進(jìn)行分區(qū)。所述分區(qū)表中的表項包括垂直分區(qū)控制和水平分區(qū)控制。對于每次高速緩存訪問,所述虛擬機(jī)將所述虛擬ID連同地址一起傳遞到所述共享高速緩存。如果所述高速緩存訪問導(dǎo)致未命中,則所述共享高速緩存使用所述分區(qū)表選擇犧牲高速緩存行以便替換。
文檔編號G06F12/12GK102483718SQ201080037627
公開日2012年5月30日 申請日期2010年8月19日 優(yōu)先權(quán)日2009年8月25日
發(fā)明者張立新, 林江 申請人:國際商業(yè)機(jī)器公司