專利名稱:虛擬化環(huán)境中地址轉換緩存操作和i/o高速緩存性能的改善的制作方法
虛擬化環(huán)境中地址轉換緩存操作和i/o高速緩存性能的改善技術領域本文公開的內容總體上涉及電子領域。更具體地,本發(fā)明的實施例涉及改善虛擬化環(huán)境中的地址轉換緩存操作(address translation caching)和/或 輸入/輸出(1/0)高速緩存的性能。
背景技術:
I/O虛擬化是一種正在發(fā)展的技術,用以保證I/O設備在虛擬化環(huán)境中正常工作。虛擬化環(huán)境通常是這樣一種環(huán)境,其中多于一個操作系統(tǒng)(os)可以同時是活動的。I/O虛擬化的一些實現可以采用硬件結構以改善性能。然而,這樣的實現方式需要相對高的門數來實現,而這又使成本更高和/ 或實現起來更復雜。
參考附圖提供了詳細的說明。在圖中,參考號最左邊的數字標識其中 該參考號首次出現的那幅圖。在不同的圖中使用相同的參考號指示相似或 相同的項目。圖l-3示出了計算系統(tǒng)的實施例的方框圖,所述計算系統(tǒng)可用來實現 這里所討論的各種實施例。圖4示出了根據一實施例的方法的流程圖。
具體實施方式
在下述說明中,為了完全理解各個實施例,闡述了許多特定細節(jié)。然 而,可以實現一些實施例而不需要這些特定細節(jié)。在另外一些實例中,并 未詳細說明公知的方法、過程、組件和電路,以免使具體的實施例難以理 解。本發(fā)明的實施例的各個方面可通過各種方式實現,例如,半導體集成 電路("硬件")、組成一個或多個程序的計算機可讀指令("軟件")、或硬 件和軟件的一些組合。為了便于說明本公開的內容,提及"邏輯"時,表 示的是硬件、軟件或其一些組合。這里所討論的一些實施例可以改善虛擬化環(huán)境中的地址轉換緩存操作(例如,定向I/0(VTd)地址轉換的虛擬化)和/或I/0高速緩存的性能。更具 體地, 一些虛擬化服務可以在硬件結構上實現,所述硬件結構用來將客戶 機物理地址(guest physical address, GPA)轉換成主機物理地址(host physical address, HPA)。因此,這樣的結構可以提供緩存支持,例如,以I/O地址 轉換后備緩沖器(1/0 look-aside-buffer, IOTLB)的形式來對從GPA到HPA的 轉換進行緩存。在一些實施例中,這些緩存結構可為以實現同一地址轉換 為目的的多個請求提供更低的延遲。此外,這些技術中的一些可以用于各 種類型的計算環(huán)境中,例如參考圖卜4所討論的。更特別地,圖1示出了根據發(fā)明一實施例的計算系統(tǒng)100的方框圖。 系統(tǒng)100可以包括一個或多個代理102-1至102-M(這里被統(tǒng)稱為"多個代 理102"或更一般地"代理102")。在一實施例中,代理102可以是計算 系統(tǒng)(例如參考圖2-4所討論的計算系統(tǒng))的組件。如圖1所示,多個代理102可以通過網絡結構104進行通信。在一個 實施例中,網絡結構104可以包括允許各個代理(例如,計算設備)傳送數 據的計算機網絡。在一實施例中,網絡結構104可以包括一個或多個通過 串行(例如,點對點)鏈路和域共享通信網絡進行通信的互連(或互連網絡)。 例如, 一些實施例可以便于鏈路上的組件調試或驗證,所述鏈路允許與完 全緩沖雙列直插存儲模塊(FBD)進行通信,例如,這里FBD鏈路是將存儲 模塊耦合到主控制器設備(例如,處理器或存儲器中心(hub))的串行鏈路。 可以從FBD通道主機發(fā)送調試信息,使得可以通過通道業(yè)務(tra傷c)跟蹤 捕捉工具(例如, 一個或多個邏輯分析器)來沿通道觀察調試信息。在一個實施例中,系統(tǒng)100可以支持包括物理層、鏈路層、路由層、 傳輸層和/或協(xié)議層的分層協(xié)議方案。結構104進一步可以有助于針對點對 點網絡或共享網絡從一種協(xié)議(例如,緩存處理器(cachingprocessor)或可進 行緩存的存儲器控制器(caching aware memory controller))到另一種協(xié)議的 數據傳輸(例如,以分組形式)。在一些實施例中,網絡104還可以提供遵 守一個或多個高速緩存一致性協(xié)議的通信。
此外,如圖1的箭頭方向所示,代理102可以通過網絡結構104發(fā)送 和/或接收數據。因此, 一些代理可以采用單向鏈路來進行通信,而其它的 代理可以采用雙向鏈路來進行通信。例如, 一個或多個代理(例如,代理 102-M)可以發(fā)送數據(例如,通過單向鏈路106),其它代理(例如,代理102-2) 可以接收數據(例如,通過單向鏈路108),而某些代理(例如,代理102-1) 既可發(fā)送又可接收數據(例如,通過雙向鏈路IIO)。圖2示出了根據一實施例的計算系統(tǒng)200的各個部分的方框圖。在一 個實施例中,系統(tǒng)200的各個組件可以在參考圖1所討論的代理102-1和/ 或102-M中的一個代理內實現。這里,將參考圖4討論關于計算系統(tǒng)200 一些操作的進一步的細節(jié)。系統(tǒng)200可以包括一個或多個處理器202-1至202-N (這里被統(tǒng)稱為 "多個處理器202"或更一般地"處理器202")。處理器202-1至202-N 中的每一個可以包括各種組件,例如私有的或共享的高速緩存、執(zhí)行單元、 一個或多個核心(core)等。此夕卜,每個處理器202可以對存儲器204(例如, 存儲器204-1至204-N)進行訪問。系統(tǒng)200還可以包括可由系統(tǒng)200的各 種組件共享的可選的系統(tǒng)存儲器206,所述各種組件包括例如一個或多個 處理器202、非核心部分(uncore)或芯片組(CS) 208的組件、或耦合到非核 心部分208的組件等。 一個或多個存儲器204和/或206可以存儲一個或多 個操作系統(tǒng)。因此,在一些實施例中,系統(tǒng)200能執(zhí)行多個操作系統(tǒng)(例如, 同時)。如圖2所示,非核心部分208可以包括各種組件,例如,根聯合體(root complex, RC)高速緩存210 (例如,其可以由諸如系統(tǒng)200這樣的計算系統(tǒng) 的各個組件所共享)。在一些實施例中,RC高速緩存210可以存在于芯片 組或非核心部分(例如,CS/非核心部分208)的存儲器控制中心(MCH)和/或 圖形MCH (GMCH)部分中。通過數據通路212 (可以包括可選的核心互連 214,例如,以有助于處理器202的一個或多個核心和系統(tǒng)200的其它組件 之間的通信),RC高速緩存210可以與其它組件進行通信。系統(tǒng)200可以 進一步包括預取邏輯216,例如,用以從各個位置(例如, 一個或多個存儲 器204、系統(tǒng)存儲器206、其它存儲設備(包括例如易失性或非易失性存儲 器件)等)中預取數據(包括指令或微操作)放入IOTLB 220 (例如,通過虛擬
化或轉換邏輯222-1到222-P (這里被統(tǒng)稱為"多個邏輯222"或更一般地 "邏輯222"))。如圖2所示,在至少一個實施例中,數據通路212可以耦合到一個或 多個I/O設備??梢圆捎萌魏晤愋偷腎/O設備。為了示意的目的,在圖2 示出的實施例中,I/O設備可以包括一個或多個設備224-1至224-P (這里 被統(tǒng)稱為"端點設備224"或更一般地"端點224")。在一實施例中,端 點設備224可以是外圍組件互連(PCI)設備。例如,根據可從美國俄勒岡州波特蘭市的PCI特別興趣小組得到的PCI 局部總線規(guī)范(修訂版3.0, 2004年3月9日)(下文中被稱為"PCI總線"), 端點設備224可以與CS/非核心部分208進行通信??商娲?,可以采用 從上述美國俄勒岡州波特蘭市的PCI特別興趣小組得到的PCI-X規(guī)范(修訂 版3.0a,2003年4月23日)(下文中被稱為"PCI-X總線,和/或快速PCI (PCI Express, PCIe)規(guī)范(PCIe規(guī)范,修訂版2.0, 2006年10月)。此外,在本發(fā) 明的各個實施例中,耦合到CS/非核心部分208的其它外圍設備可以包括 集成驅動電子設備(IDE)或小型計算機系統(tǒng)接口(SCSI)硬盤驅動器、通用串 行總線(USB)設備、鍵盤、鼠標、并行端口、串行端口、軟盤驅動器、數 字輸出支持(例如,數字視頻接口(DVI))等。如圖2所示,通過根端口 226-1至226-P (這里被統(tǒng)稱為"多個端口 226" 或更一般地"端口 226"),端點設備224可以與系統(tǒng)200的其它組件(諸如 邏輯222)進行通信。在一實施例中,邏輯222可以進行針對虛擬化環(huán)境的 地址轉換操作,例如通過訪問IOTLB 220來將虛擬地址轉換成物理地址。 物理地址可以與系統(tǒng)存儲器206中的單元(location)(例如,項(entry))相對 應。另外,邏輯222可以進行其它操作,例如參考圖3和4所討論的那些 操作,所述操作可能涉及對耦合到系統(tǒng)200和域300的存儲器件(例如, 系統(tǒng)存儲器206)中的項的GPA和HPA進行轉換。根據PCIe規(guī)范,邏輯 222還可以是根聯合體。此外,處理器202可以是任何類型的處理器,例如,通用處理器、網 絡處理器(其可以處理計算機網絡250上傳送的數據)等(包括精簡指令集計 算機(RISC)處理器、或復雜指令集計算機(CISC)處理器)。此夕卜,處理器202 可以具有單核心或多核心設計。具有多核心設計的處理器202可以將不同
類型的處理器核心集成到同一個集成電路(IC)管芯上。具有多核心設計的 處理器202也可以被實現為對稱式或非對稱式多處理器。此外,如圖2所 示,在一實施例中,至少一個或多個端點設備224可以耦合到網絡250。此外,處理器202可以包括一個或多個高速緩存(未示出),在各種實 施例中所述高速緩存可以是私有的和/或共享的。通常,高速緩存存儲與在 其它地方存儲的、或早先計算的原始數據相對應的數據。為減少存儲器訪 問延遲, 一旦數據被存儲到高速緩存中,就可以在將來使用時,訪問被緩 存的副本而不是重新讀取或重新計算原始數據。這里所討論的高速緩存(包 括例如,RC高速緩存210、 IOTLB220、其組合等)可以是任何類型的高速 緩存,例如一級(L1)高速緩存、二級(L2)高速緩存、三級(L3)高速緩存、中 間級高速緩存、最末級高速緩存(LLC)、或其組合,用來存儲由系統(tǒng)200 的一個或多個組件所使用的電子數據(例如,包括指令)。在一實施例中,系統(tǒng)200和域300還可以包括其它設備,例如以下中 的一個或多個顯示設備(例如,耦合到CS/非核心部分208以顯示圖像)、 音頻設備(耦合到CS/非核心部分208以處理音頻信號)等。在一些實施例 中,這樣的設備可以被實現為端點設備224 (例如,可通過根端口 226與 CS/非核心部分208進行通信)。圖3示出了根據一實施例的計算系統(tǒng)300的各個部分的方框圖。在一 個實施例中,系統(tǒng)300的各個組件可以在參考圖1所討論的代理102-1和/ 或102-M中的一個代理內實現。這里,將參考圖4討論關于計算系統(tǒng)300 的一些操作的進一步的細節(jié)。如圖3所示,系統(tǒng)300可以包括以下部件中的一個或多個:處理器202、 存儲器204、系統(tǒng)存儲器206、 RC高速緩存210、數據通路212、可選的 核心互連214、預取邏輯216、 IOTLB 220、邏輯222、端點設備224、和 根端口 226。此外,在一個實施例中,如所示出的那樣,可以將RC高速 緩存210和IOTLB 220組合成單個高速緩存。圖4示出了根據一實施例的方法400的流程圖,該方法用于更新I/O 高速緩存中所存儲的信息,以改善虛擬化環(huán)境中的地址轉換緩存操作和/ 或I/0高速緩存的性能。在一個實施例中,可以采用參考圖l-3和5所討 論的各個組件來執(zhí)行參考圖4所討論的一個或多個操作。參考圖1-4,在操作402處,方法400以接收存儲器訪問請求開始。 例如,存儲器訪問請求(例如,讀或寫訪問)可以由一個端點224產生,并 在操作402處經過一個端口 226由相應的虛擬化邏輯222接收。在操作404 處,可以確定與該存儲器訪問請求相對應的項是否存在于高速緩存中。在 一實施例中,在操作404處,虛擬化邏輯222可以訪問IOTLB 220、 RC 高速緩存210和/或其組合(例如,圖3所示的)。如果相應的項不存在,則 在操作406處,可以將數據讀取到高速緩存中(例如,通過虛擬化邏輯222 和/或預取邏輯216)。在一實施例中,在操作402之前,可能己通過邏輯216將相應的數據 預取到高速緩存中。在一個實施例中,通過一個端點設備224發(fā)出預取請 求,以提前獲取并保持目標地址單元的一致副本。這些預取請求還將使 IOTLB 220、 RC高速緩存210和/或其組合做好準備;這些項將被分配并 進行緩存,直到設備發(fā)出請求。需求請求ACH設置將確定IOTLB 220、 RC高速緩存210和/或其組合中的項是需要被保持還是要加上標簽以供替 換。在操作408處,可以確定(例如,通過虛擬化邏輯222)該存儲器訪問請 求是否包括提示(例如,該存儲器訪問請求的一個或多個位)。如果不存在 提示,則在操作410處,可以例如通過參考IOTLB220、 RC高速緩存210 和/或其組合內的項對HPA和GPA地址和/或物理/虛擬地址進行轉換,來 處理該存儲器訪問請求。在一個實施例中,可以基于I/0設備業(yè)務提示(這 里還可以被稱為訪問控制提示(ACH)),來改善虛擬化環(huán)境中的地址轉換緩 存操作和/或I/O高速緩存的性能。例如,I/O設備(例如, 一個端點設備224) 可以在存儲器請求中提供ACH(例如,經過PCIe),以指示該設備是否將再 次訪問相同地址。相應地,操作412可以確定該提示是否指示將來對相同 地址的訪問。這種信息可以存儲在與一個高速緩存項(例如,IOTLB220、 RC高速緩存210和/或其組合內的一個項)相對應的一個或多個位中,該一 個或多個位將會在高速緩存行替換策略中很有用,例如,未設置預期的重 用位(或取決于具體實現而被清零)的那些被緩存的轉換將是供替換的候選 者。在一個實施例中,邏輯222可以進行操作412。如果沒有指示將來訪 問,則方法400繼續(xù)進行操作410。否則,可在操作414處更新相應項的
信息(例如,可通過相應的邏輯222來更新IOTLB 220、 RC高速緩存210 和/或其組合內相應項的一個或多個位)。在操作414之后,方法400在操 作410處繼續(xù)進行。在一些實施例中,將IOTLB 220和RC高速緩存210結構合并成一個 組合的IOTLB高速緩存和RC高速緩存結構(這里可以被稱為I/O高速緩存),這樣做可以提高性能(例如,改進i/o事務處理的延遲)和/或更有效地利用硅資源(例如,減少門的總數)。在一實施例中,處理器(例如, 一個或 多個處理器202)發(fā)出的探查指令(snoop)將使用物理地址來在RC高速緩存 210 (或組合的I/O高速緩存)中進行査找,I/O訪問將基于GPA來在RC高 速緩存210 (或組合的I/O高速緩存)中査找地址。在一些實施例中,各種高速緩存替換策略可以應用到RC高速緩存 210、 IOTLB 220和/或其組合。例如, 一些替換策略可以實現隨機的替換 策略,而其它一些可以實現最近最少使用(LRU)策略。因此,在一些實施例中,可以減小地址轉換延遲和/或與為I/0請求提 供服務相關聯的延遲。此外,用于RC高速緩存210和IOTLB220的存儲 (例如,地址或數據)結構的合并(例如,成為單個I/0高速緩存)可以產生改 進的硅效率(silicon efficiency)和更佳的性能或硅面積(silicon-area)(例如,通 過減少門數)。在本發(fā)明的各個實施例中,這里例如參考圖l-4所討論的操作可以實 現為硬件(例如,電路)、軟件、固件、微代碼、或其組合,其可作為計算 機程序產品來提供,該計算機程序產品例如包括機器可讀或計算機可讀的 介質,其上存儲有用于對計算機進行編程以執(zhí)行這里所討論的處理過程的 指令(或軟件程序)。術語"邏輯"還可以示例性地包括軟件、硬件、或軟 件和硬件的組合。機器可讀介質可以包括存儲設備(例如,這里所討論的那 些)。例如,這里所討論的存儲設備可以包括易失性和/或非易失性存儲器 (或存儲裝置)。非易失性存儲器可以包括下列中一個或多個只讀存儲器 (ROM)、可編程ROM (PROM)、可擦除PROM (EPROM)、電EPROM (EEPROM)、硬盤驅動器、軟盤、光盤ROM (CD-ROM)、數字通用光盤 (DVD)、閃速存儲器、磁光盤、或其它類型的能存儲電子數據(例如,包括
指令)的非易失性機器可讀介質。易失性存儲裝置(或存儲器)可以包括例如隨機存取存儲器(RAM)、動態(tài)RAM(DRAM)、同步DRAM (SDRAM)、靜 態(tài)RAM (SRAM)等的設備。另外,這種計算機可讀介質可以作為計算機軟件產品來下載,其中, 可以經通信鏈路(例如,總線、調制解調器、或網絡連接)以包含在載波或 其它傳播介質中的數據信號的方式,將程序從遠程計算機(例如,服務器) 傳送到請求方計算機(例如,客戶端)。說明書中,提及"一個實施例"或"一實施例"時,表示結合該實施 例而說明的特定特征、結構、或特性可以包括在至少一個實現中。在說明 書中各處出現的短語"在一個實施例中"可以或可以不是都指代相同的實 施例。此外,在說明書和權利要求書中,可以使用術語"耦合的"和"連接 的"以及其派生詞。在本發(fā)明的一些實施例中,"連接的"可以用來指示兩 個或更多元件彼此直接物理或電接觸。"耦合的"可以表示兩個或更多元件 直接物理或電接觸。然而,"耦合的"還可表示兩個或更多元件可以彼此并 不直接接觸,但仍彼此協(xié)作或交互。因此,盡管以特定于結構特征和/或方法行為的語言說明了本發(fā)明的實 施例,但是應當理解,所要求保護的主題可以不受限于所說明的特定特征 或行為。所公開的特定特征和行為而是作為實現所要求保護的主題的示例 形式。
權利要求
1、一種裝置,包括高速緩存,用于存儲一個或多個項,其中每個項與在客戶機物理地址(GPA)和主機物理地址(HPA)之間的輸入/輸出(I/O)存儲器訪問請求相對應;以及第一邏輯,用于從端點設備接收第一I/O存儲器訪問請求,并確定所述第一I/O存儲器訪問請求是否包括與一個地址相關聯的將來訪問提示,其中,所述第一邏輯響應于確定所述第一I/O存儲器訪問請求包括所述提示,更新相應的高速緩存項中的一個或多個位。
2、 如權利要求1所述的裝置,其中,所述端點設備產生所述存儲器訪 問請求0
3、 如權利要求1所述的裝置,進一步包括預取邏輯,用于響應于所 述端點設備發(fā)出的請求而將數據預取到所述高速緩存中。
4、 如權利要求1所述的裝置,其中,所述端點設備包括快速外圍組件 互連(PCI)設備。
5、 如權利要求l所述的裝置,其中,所述將來訪問提示指示將來會對 所述地址進行訪問。
6、 如權利要求l所述的裝置,其中,所述第一邏輯、 一個或多個處理 器內核、或所述高速緩存中的一個或多個在同一個集成電路管芯上。
7、 如權利要求l所述的裝置,其中,所述高速緩存包括根聯合體高速 緩存、I/O地址轉換后備緩沖器(IOTLB)或其組合中的一個或多個。
8、 如權利要求1所述的裝置,其中,所述高速緩存是共享的高速緩存或私有的高速緩存。
9、 如權利要求l所述的裝置,其中,所述高速緩存包括一級(L1)高速 緩存、二級(L2)高速緩存、三級(L3)高速緩存、中間級高速緩存、最末級 高速緩存(LLC)或其組合中的 一個或多個。
10、 如權利要求l所述的裝置,進一步包括根端口,用于耦合所述 第一邏輯和所述端點設備。
11、 一種方法,包括從端點設備接收第 一輸入/輸出(1/0)存儲器訪問請求; 在高速緩存中存儲一個或多個項,其中,每個項與在客戶機物理地址(GPA)和主機物理地址(HPA)之間的輸入/輸岀(I/0)存儲器訪問請求相對應;以及確定所述第一 I/O存儲器訪問請求是否包括與一個地址相關聯的將來 i方問提示,其中,所述將來訪問提示指示將來會對所述地址進行訪問。
12、 如權利要求11所述的方法,進一步包括響應于確定所述第一I/O存儲器訪問請求包括所述提示,更新相應的高速緩存項中的一個或多 個位。
13、 如權利要求ll所述的方法,進一步包括在所述高速緩存中,先于包括提示的項,對不包括提示的項進行替換。
14、 如權利要求ll所述的方法,進一步包括轉換與所述第一I/0存 儲器訪問相對應的地址。
15、 一種系統(tǒng),包括存儲器,用于存儲一個或多個項;高速緩存,用于存儲與所述存儲器中所存儲的一個或多個項相對應的一個或多個項,其中,所述高速緩存中的每個項與在客戶機物理地址(GPA) 和主機物理地址(HPA)之間的輸入/輸出(1/0)存儲器訪問請求相對應;以及第一邏輯,用于從端點設備接收第一i/o存儲器訪問請求,并確定所述第一 I/O存儲器訪問請求是否包括與一個地址相關聯的將來訪問提示,其中,所述第一邏輯響應于確定所述第一 I/O存儲器訪問請求包括所 述提示,更新相應的高速緩存項中一個或多個位。
16、 如權利要求15所述的系統(tǒng),其中,所述端點設備產生所述存儲器 訪問請求。
17、 如權利要求15所述的系統(tǒng),進一步包括預取邏輯,用于響應于所述端點設備發(fā)出的請求而將數據預取到所述高速緩存中。
18、 如權利要求15所述的系統(tǒng),其中,所述端點設備包括快速外圍組 件互連(PCI)設備。
19、 如權利要求15所述的系統(tǒng),其中,所述將來訪問提示指示將來會 對所述地址進行訪問。
20、 如權利要求15所述的系統(tǒng),進一步包括顯示設備,其耦合到包 括所述高速緩存的非核心部分。
全文摘要
說明了涉及改善在虛擬化環(huán)境中的地址轉換緩存操作和/或輸入/輸出(I/O)高速緩存的性能的方法和裝置。在一個實施例中,可以采用端點設備所提供的提示來更新I/O高速緩存中存儲的信息。在一個實施例中,這種信息可以用來實現更高效的替換策略。還公開了其它實施例。
文檔編號G06F12/10GK101398787SQ20081016192
公開日2009年4月1日 申請日期2008年9月27日 優(yōu)先權日2007年9月28日
發(fā)明者J·阿亞諾維奇, M·韋格 申請人:英特爾公司