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