多階段地址轉換中的轉換旁路的制作方法
【專利摘要】本發(fā)明的各實施例涉及多階段地址轉換中的轉換旁路。一種支持虛擬化的計算機系統(tǒng)可以保持多個地址空間。每個客戶機操作系統(tǒng)使用客戶機虛擬地址(GVA),這些客戶機虛擬地址被轉換成客戶機物理地址(GPA)。對一個或多個客戶機操作系統(tǒng)進行管理的超管理器將GPA轉換成根物理地址(RPA)。合并轉換旁視緩沖器(MTLB)高速緩存該多個地址域之間的轉換,從而能夠實現(xiàn)更快的地址轉換和存儲器訪問。MTLB作為多個不同的高速緩存可以是邏輯上可訪問的,并且可以被重新配置成用于將不同的空間分配給每個邏輯高速緩存??梢曰诳刂婆渲煤退邮盏降牡刂返膶傩赃x擇性地旁路對MTLB的高速緩存的查找。
【專利說明】多階段地址轉換中的轉換旁路
【技術領域】
[0001] 本發(fā)明的各實施例涉及多階段地址轉換中的轉換旁路。
【背景技術】
[0002] 在計算機系統(tǒng)中,虛擬化是被稱為主機的計算機系統(tǒng)通過其來模擬計算資源(如 硬件平臺、操作系統(tǒng)、或存儲器)的過程。典型的主機運行超管理器,該超管理器為創(chuàng)建并 運行虛擬機(也被稱為客戶機)的軟件或硬件。通過硬件虛擬化,超管理器為每個客戶機 提供虛擬硬件操作平臺。通過與虛擬操作平臺進行接口連接,客戶機訪問主機的計算資源 以執(zhí)行其對應的操作。其結果是,單個主機可以通過虛擬化同時支持多個操作系統(tǒng)或其他 軟件。在典型的主機中,虛擬硬件平臺作為"實際"硬件平臺呈現(xiàn)給客戶機,意味著硬件平 臺的虛擬性質對于客戶機而言不應是可辨別的。進一步地,主機應避免在訪問計算資源時 客戶機之間的沖突。為了完成這些目標,主機可以實施客戶機軟件與物理主機資源之間的 轉換方案。關于存儲器資源,例如,主機可以支持呈現(xiàn)給對應客戶機的虛擬地址空間。對于 客戶機而言,虛地址空間看起來像"實際"(物理)地址空間。然而,主機在虛擬地址空間與 和主機的存儲器相對應的物理地址空間之間進行轉換。其結果是,主機可以為多個客戶機 管理存儲器資源。
【發(fā)明內容】
[0003] 本發(fā)明的示例實施例提供了用于高速緩存虛擬化環(huán)境下的地址空間之間的轉換 的系統(tǒng)和方法。一種電路可以包括一個第一高速緩存,被配置成用于存儲地址域之間的轉 換,其中,該第一高速緩存作為一個第一邏輯部分和一個第二邏輯部分是可尋址的。該第 一邏輯部分被配置成用于存儲一個第一地址域和一個第二地址域之間的轉換,并且該第二 邏輯部分被配置成用于存儲該第二地址域與一個第三地址域之間的轉換。一個處理器可以 被配置成用于1)關于一個地址請求對該第一和第二邏輯部分中的至少一個的一個旁路進 行控制以及2)根據(jù)該旁路對該地址請求與該高速緩存的一個沒有旁路的部分進行匹配并 且輸出一個相應的地址結果。
[0004] 在進一步的實施例中,該處理器可以被進一步配置成用于基于該地址請求所指示 的一個地址對該旁路進行控制。該處理器還可以基于該地址請求所指示的該地址是否指定 從一個給定地址轉換排除的一個存儲器的一個子集、或是否是從一個給定地址轉換排除的 一個地址范圍(例如,如表中所指定的)的一個成員來對該旁路進行控制。該處理器還可 以基于該地址請求所指定的一個地址是否被映射到該高速緩存的一個指示、或基于一個旁 路指示來對該旁路進行控制。該旁路指示可以是該地址請求的一個部分,或可以進一步是 該處理器所接收到的一個控制位。該處理器可以基于該地址請求所指定的一個地址是否被 映射到該高速緩存的一個指示、以及2)關于該地址請求的一個旁路指示兩者來對該旁路 進行控制。
[0005] 在又進一步的實施例中,該處理器可以變換該地址請求的一個地址部分,該變換 可以包括應用一個地址掩碼。該處理器可以根據(jù)該旁路變換該地址部分代替該第一和第二 邏輯部分中的至少一個的查找。在進一步的實施例中,一個寄存器可以被配置成用于限定 該第一和第二邏輯部分之間的一個邊界,并且該邊界的位置根據(jù)該寄存器處所存儲的一個 值而變化。
[0006] 在仍又進一步的實施例中,一種電路可以包括一個轉換旁視緩沖器(TLB),該轉換 旁視緩沖器被配置成用于存儲多個地址域之間的轉換,其中,該TLB作為一個客戶機TLB和 一個根TLB是可尋址的。該客戶機TLB可以被配置成用于存儲一個客戶機虛擬地址(GVA) 域與一個客戶機物理地址(GPA)域之間的轉換,并且該根TLB可以被配置成用于存儲該 GPA域與一個根物理地址(RPA)域之間的轉換。該TLB中的每個條目可以包括一個對該條 目是否是該客戶機TLB或該根TLB的一個成員進行指示的位。一個處理器可以被配置成用 于1)關于一個地址請求對客戶機TLB或根TLB中的至少一個的一個旁路進行控制以及2) 根據(jù)該旁路對該地址請求與該高速緩存的一個沒有旁路的部分進行匹配并且輸出一個相 應的地址結果。
【專利附圖】
【附圖說明】
[0007] 從本發(fā)明的示例實施例的以下更具體的說明中上述內容將是清楚的,如在這些附 圖中展示的,其中,貫穿這些不同的視圖相似的參照字符是指相同的部分。這些圖不一定是 按比例繪制,而是著重展示本發(fā)明的實施例。
[0008] 圖1為一個實施例中實現(xiàn)合并轉換旁視緩沖器(MTLB)的計算機系統(tǒng)的框圖。
[0009] 圖2是MTLB的分區(qū)的框圖。
[0010] 圖3是MTLB的框圖。
[0011] 圖4為流程圖,展示了一個實施例中使用MTLB訪問系統(tǒng)存儲器的過程。
[0012] 圖5是MTLB中的條目的框圖。
[0013] 圖6為實現(xiàn)MTLB和微轉換旁視緩沖器(μ TLB)的計算機系統(tǒng)的框圖。
[0014] 圖7是μ TLB中的條目的框圖。
[0015] 圖8為流程圖,展示了一個實施例中使用μ TLB訪問系統(tǒng)存儲器的過程。
[0016] 圖9Α至圖9C為框圖,展不了輸入到μ TLB內的折疊轉換(collapsed translation)〇
[0017] 圖10為框圖,展示了一個進一步的實施例中的TLB集合和虛擬數(shù)據(jù)高速緩存。
[0018] 圖11為示例數(shù)據(jù)高速緩存標記的框圖。
[0019] 圖12為流程圖,展示了跨多個高速緩存保持條目的過程。
[0020] 圖13為框圖,展示了一個進一步的實施例中地址轉換的選擇性旁路。
[0021] 圖14為流程圖,展示了選擇性地旁路地址轉換的過程。
【具體實施方式】
[0022] 以下是本發(fā)明的多個示例實施例的描述。
[0023] -種支持虛擬化的計算機系統(tǒng)可以保持多個地址空間。每個客戶機操作系統(tǒng)使用 客戶機虛擬地址(GVA),這些客戶機虛擬地址被轉換成客戶機物理地址(GPA)。GPA空間是 指物理存儲器的被分配給指定客戶機的分區(qū)。然而,為了允許存儲器分配的更大的靈活性, GVA空間(而不是GPA空間)被呈現(xiàn)給每個客戶機。例如,給定的客戶機的GVA空間可以大 于分配給它的物理存儲器分區(qū),并且當存儲器分區(qū)達到最大容量時,數(shù)據(jù)可以存儲到硬盤。
[0024] 對一個或多個客戶機操作系統(tǒng)進行管理的軟件系統(tǒng)(如超管理器)將GPA轉換成 相應的根物理地址(RPA)。RPA (也被稱為物理系統(tǒng)地址或機器地址)指示主計算機的物理 存儲器的位置。從而,為了通過客戶機完成存儲器訪問,進行兩次轉換:首先將GVA轉換成 GPA,并且然后將GPA轉換成RPA。
[0025] 最初通過讀?。?行走(walking) ")存儲相關地址關系的頁表在多個地址域之間 轉換地址(例如,虛擬地址到物理地址)。使用轉換旁視緩沖器(TLB)來高速緩存此類轉 換。一旦高速緩存了給定轉換,就在未來存儲器訪問過程中訪問TLB,從而要求該給定轉換, 由此,預防對未來頁表行走的需要。在某些虛擬化系統(tǒng)中,TLB可以高速緩存從GVA到RPA 的轉換??商娲?,可以使用兩個物理TLB :存儲GVA到GPA轉換的第一 TLB、和存儲GPA到 RPA轉換的第二TLB。
[0026] 圖1為一個實施例中實現(xiàn)合并轉換旁視緩沖器(MTLB)的計算機系統(tǒng)100的框 圖。所示系統(tǒng)100可以是通過虛擬化支持多個客戶機的主機的一部分。多個客戶(即,客 戶機)104a-n通過對應的客戶機操作平臺(未示出)運行,這些操作平臺為受超管理器105 管理的虛擬硬件平臺??蛻魴C104a-n通過客戶機操作平臺所提供的客戶機虛擬地址(GVA) 空間來間接地訪問物理系統(tǒng)存儲器150。然而,通過根物理地址(RPA)空間對系統(tǒng)存儲器 150進行尋址。GVA可以首先被映射到客戶機物理地址(GPA),該GPA進而被映射到為給定 客戶機104a-n分配的系統(tǒng)存儲器150的分區(qū)處的RPA。從而,為了能夠使客戶機104a-n訪 問存儲器,可以將GVA轉換成GPA,然后將GPA轉換成對系統(tǒng)存儲器150的條目進行指示的 RPA。
[0027] 存儲器控制器108(其可以包括硬件和客戶機操作平臺的軟件部分)與客戶機 104a-n進行接口連接,從而訪問系統(tǒng)存儲器150。為了訪問系統(tǒng)存儲器150,存儲器控制 器首先訪問合并轉換旁視緩沖器(MTLB) 110。MTLB 110可以包括單個物理高速緩存、緩 沖器、段寄存器、系統(tǒng)寄存器、或作為兩個不同TLB邏輯上可尋址的其他存儲單元:客戶機 TLB (GTLB) 120 ( "虛擬標記部分")和根TLB (RTLB) 130 ( "物理標記部分")。GTLB 120存儲 GVA到GPA轉換,并且RTLB 130存儲GPA到RPA轉換。因此,MTLB 110可以看起來像作為 兩個不同的邏輯TLB (同時共享單個物理結構)的其他部分。
[0028] 在客戶機存儲器訪問過程中,存儲器控制器108可以從客戶機104a_n接收GVA,然 后,該GVA與GTLB 120中的條目進行匹配以確定相應的GPA。如果發(fā)現(xiàn)匹配,則存儲器控制 器將所定位的GPA與RTLB 130中的條目進行匹配以確定相應的RPA。在匹配RPA情況下, 存儲器控制器訪問所指示的系統(tǒng)存儲器150的條目以便客戶機104a-n進行讀取或寫入操 作。
[0029] 客戶機104a_n可以初始地添加 GTLB 120中的條目,這些客戶機訪問存儲在系統(tǒng) 存儲器150處的頁表140。頁表140存儲GVA、GPA和RPA空間之間的關系,并且可以對其進 行"行走"以確定那些地址空間之間的地址轉換。從而,客戶機l〇4a-n可以行走頁表140 以確定GVA到GPA轉換,并且然后通過用于將該轉換存儲在GTLB 120處的GTLB索引訪問 GTLB 120。同樣,超管理器105可以初始地添加 RTLB 130中的條目,該超管理器訪問存儲 在系統(tǒng)存儲器150處的頁表140。該超管理器可以行走頁表140以確定GPA到RPA轉換, 并且然后通過用于將該轉換存儲在RTLB 130處的RTLB索引訪問RTLB 130。響應于GTLB 120或RTLB 130處轉換查找中存儲器控制器108報告的"缺失(miss) ",如上所述,可以將 條目添加到GTLB 120和RTLB 130內。
[0030] 以下參照圖2至圖5進一步詳細描述了 MTLB 110的配置、以及系統(tǒng)100在存儲器 訪問和填充MTLB 110過程中的操作。
[0031] 圖2是MTLB 110的高速緩存206的框圖。高速緩存206可以是在邏輯上被分成兩 個或更多個段的單個物理結構(例如,存儲器或其他存儲裝置)。在本示例實施例中,高速 緩存206被分成兩個邏輯部分以容納GTLB 120和RTLB 130。TLB分區(qū)212限定GTLB 120 和RTLB 130之間的劃分。在替代性實施例中,高速緩存206可以被分成多個附加段以容納 附加緩沖器,如存儲附加地址空間之間的轉換的TLB。在此類實施例中,可以實現(xiàn)附加 TLB 分區(qū)以將高速緩存206分成這些附加段。
[0032] 存儲在MTLB 110處的或MTLB 110外部的可編程寄存器(未示出)限定對GTLB 120和RTLB 130進行劃分的TLB分區(qū)212的位置。相應地,物理索引低于分區(qū)212的所有 條目包括RTLB 130,并且物理索引大于等于該分區(qū)的所有條目包括GTLB 120。鑒于所有轉 換條目的固定數(shù)量,GTLB 120與RTLB 130之間的靈活分區(qū)允許系統(tǒng)(例如,系統(tǒng)100)優(yōu) 化這些結構的大小??梢栽谶\行時間改變TLB 120U30的大小。此外,如果計算機系統(tǒng)用 于非虛擬化環(huán)境中,分區(qū)212可以被設置成使得根TLB占據(jù)整個MTLB高速緩存206。對于 此類配置而言,可以保留一個值以表示GTLB 120中的0條目。
[0033] 軟件(如超管理器105和客戶機104a_n(圖1))可以查看作為兩個邏輯上不同 的 TLB 的 TLB 120、130,其中,分別從 0 到 "G-Config-1" 和 "R-Config-1" 標引每個 TLB 的 條目,這與每個邏輯TLB 120U30的大小相符。例如,RTLB 130看起來像具有從0高達 R-Config-I (其為RTLB的大小-1)的條目的軟件。例如,GTLB120看起來像具有從0高達 G-Config-I (其為GTLB的大小-1)的條目的軟件。(GTLB的大小+RTLB的大小=MTLB的大 ?。H鐖D2中所示,可以在GTLB 120與RTLB 130之間顛倒高速緩存206中的條目的順 序,意味著自頂向下對GTLB 120進行排序和自底向上對RTLB 130進行排序。由于可以改 變每個TLB 120、130的終端條目或使其無效,此類配置允許通過對TLB分區(qū)212進行重新 定位更容易地改變TLB 120、130的大小。在某些實施例中,RTLB 130可以具有在1個條目 與MTLB高速緩存206中的條目總數(shù)之間的大小。相比之下,由于可以要求RTLB 130具有 至少一個條目,GTLB 120可以具有在1與比MTLB高速緩存206中的條目總數(shù)小1之間的 大小。
[0034] 圖3是MTLB 110的進一步詳細的框圖??梢园凑找陨蠀⒄請D1和圖2所述的那樣 配置MTLB 110。MTLB 110與存儲器控制器108進行接口連接,從而提供地址請求(例如, GVA到GPA或GPA到RPA轉換)的匹配結果,并且進一步與客戶機104a-n和超管理器105 進行接口連接,從而在GTLB 120和RTLB 130中添加條目并對其進行修訂??蛻魴C104a-n 或代表這些客戶機的硬件可以行走頁表(例如,頁表140,圖1)以確定GVA到GPA轉換,并 且然后通過用于將該轉換存儲在GTLB 120處的GTLB索引訪問GTLB120。同樣,超管理器 105或代表該超管理器的硬件可以在RTLB 120中添加條目并對其進行修訂,該超管理器還 訪問頁表以確定GPA到RPA轉換。響應于GTLB 120或RTLB 130處轉換查找中存儲器控制 器108報告的"缺失(miss) ",可以在GTLB 120和RTLB 130內添加條目或對其進行修訂。
[0035] 為了方便訪問GTLB 120和RTLB 130, MTLB 110還可以包括一個解碼器334,該 解碼器允許軟件(例如,客戶機104a-n或超管理器105)用索引訪問MTLB 110的條目???以給MTLB 110中的每個條目分配這樣一個索引,并且軟件可以使用解碼器334來讀取或寫 入具體條目。該解碼邏輯可以使用物理索引來標識具體MTLB條目??蛻魴C104a-n可以被 限制成生成用于寫入到GTLB 120的客戶機邏輯索引。超管理器105(或進行根訪問的其他 軟件)可以生成用于寫入到GTLB 120或RTLB 130的客戶機邏輯或根邏輯索引??梢詫崿F(xiàn) 索引轉換器332用于將客戶機索引變換成與GTLB 120的條目相對應的物理索引。
[0036] 在一個示例實施例中,GTLB 120和RTLB 130的邏輯索引可以按如下配置??偟?MTLB大小可以是2的冪,并且根邏輯索引可以等于物理索引(即,物理高速緩存的索引) 以便所有根邏輯索引小于RTLB 130的大小??梢詫⒖蛻魴C邏輯索引變換成物理索引,以便 所有客戶機邏輯索引小于GTLB 120的大小。基于軟件的只讀寄存器可以指示GTLB 120和 RTLB 130的大小,并且在配置了 GTLB120與RTLB 130之間的分區(qū)后被自動更新。
[0037] MTLB 110可以是全相聯(lián)結構。如果MTLB 110被配置成具有相聯(lián)匹配邏輯的一個 物理TLB,則MTLB 110中的搜索會產生對或者GTLB 120條目或者RTLB 130條目的匹配。對 于該相聯(lián)邏輯而言,為了在GTLB 120與RTLB 130條目之間進行區(qū)分,每個條目可以標記有 一個被稱為Gt位的位。如果Gt位為1,則條目屬于GTLB120 ;如果Gt位為零,則條目屬于 RTLB 130。從而,所有RTLB 130條目可以具有為0的Gt位,而所有GTLB 120條目可以具 有為1的Gt位。當需要對RTLB 130進行相聯(lián)查找時,發(fā)送至MTLB 110的搜索值(密鑰) 將Gt設置成零。類似地,當需要對GTLB 120進行相聯(lián)查找時,發(fā)送至MTLB 110的搜索值 將Gt設置成1。
[0038] 可以通過使用"隨機寄存器"來利用隨機替換,作為處理MTLB查找"缺失"的算法 的一部分。隨機寄存器可以選擇所選擇的GTLB 120或RTLB 130的一部分內的隨機條目。 參照圖2,例如,隨機替換可以被限制到"線(wired)"條目(即,"G線"、"R線")與對應 TLB的終端條目之間的段。
[0039] 再次參照圖3 (并且參照圖1),當超管理器105在客戶機104a_n之間進行切換時, 必須用輸入客戶機(例如,客戶機l〇4b)的客戶機TLB條目替換屬于輸出客戶機(例如,客 戶機104a)的客戶機TLB條目。超管理器105可以管理MTLB 110來使此變化生效。因為 MTLB 110可以是全相聯(lián)結構,該系統(tǒng)應避免遞送有待匹配的、會與多個條目匹配的值(密 鑰)。匹配多個條目通常被認為是軟件錯誤并且可能導致引起故障,如機器檢查異常。在 寫入到TLB過程中,可以對所有條目進行潛在沖突的檢查。如果發(fā)現(xiàn)沖突,則禁止寫入,并 且生成機器檢查異常。在改變客戶機操作系統(tǒng)的具體情況下,當用輸入TLB條目替換輸出 TLB條目時,可以預期GTLB 120中的多個條目可以匹配。即,輸入客戶機映射可能具有與輸 出客戶機映射相同或相似的客戶機虛擬地址。因為一旦已經用輸入客戶機條目完全替換了 輸出客戶機條目就可以解決這種臨時情況,可以提供軟件控制(例如,通過超管理器105進 行管理)來抑制這種客戶機操作系統(tǒng)切換過程的機器檢查異常。這種軟件控制允許客戶機 TLB中的多個條目在軟件正在為另一個虛擬地址改變一個上下文時在一個虛擬地址上進行 匹配。
[0040] 返回參照圖2,根軟件(如超管理器105(圖1))可以在運行時間而不是在系統(tǒng)配 置過程中對寄存器進行編程,該寄存器限定分區(qū)212的位置。此寄存器的重新編程(例如, 在運行時間期間)可以自動地更新架構可視客戶機和對GTLB 120與RTLB 130的大小進 行標識的根寄存器中的值。在其他實現(xiàn)方式中,可以由根軟件直接執(zhí)行此類更新。當RTLB 130的大小增長而GTLB 120的大小收縮時,用于屬于GTLB 120的某些條目現(xiàn)在屬于RTLB 130。軟件可以使用TLB寫入索引指令來寫入這些具有根映射的新條目,或這些條目可以被 寫成無效。當執(zhí)行TLB寫入索引指令時,這些條目中的每個條目內的Gt位可以被重設,從 而將它們正確地標記為根條目。改變Gt位的失敗會引起不可預測的行為。相反,當RTLB 130的大小收縮而GTLB 120的大小增加時,之前屬于RTLB 130的某些條目現(xiàn)在屬于GTLB 120。根軟件可以使用TLB寫入索引指令來寫入這些具有非沖突客戶機映射的條目,或TLB 條目可以被寫成無效。當執(zhí)行TLB客戶機寫入索引指令時,用于此類條目的Gt位可以被設 置成使得條目現(xiàn)在被正確地標記為客戶機條目。在一個替代性實施例中,當在GTLB與RTLB 之間移動條目時,可以使用硬件而不是軟件來正確地配置Gt位。
[0041] 超管理器105、或其他軟件或硬件被進一步配置成用于提供用于GTLB 120中的條 目的批量無效。通過將Gt位用作標識符,超管理器105可以快速地使所有GTLB 120條目 無效??商娲?,電路或其他硬件可以被配置成用于使Gt位被設置成1的所有條目無效。 其結果是,可以從MTLB 110快速地擦除客戶機上下文而不影響根TLB條目,如在客戶機之 間的切換過程中。在一個實施例中,由包含地址空間標識符(也被稱為虛擬機ID或VMID) 的寄存器標識當前客戶機上下文。當切換當前客戶機上下文時,超管理器105可以改變此 值,并且當軟件改變此值時,硬件(如上所述)可以自動地使使用該Gt位的客戶機上下文 無效。
[0042] 在進一步的實施例中,MTLB可以被劃分成三個或更多個邏輯TLB以容納多個客戶 機TLB??梢造o態(tài)地或動態(tài)地管理該多個客戶機上下文。在靜態(tài)配置下,可以創(chuàng)建多個TLB 分區(qū)而不是一個TLB分區(qū)(例如,圖2的TLB分區(qū)212)。在此類實施例中,按照以上所述的 客戶機TLB和根TLB來管理TLB段,除了當在和客戶機之間進行切換時可以不需要替換客 戶機TLB中的條目情況,其條件是附加客戶機TLB可用于下一個客戶機。如果客戶機數(shù)量 超過TLB中的客戶機上下文,則可以擦除和根據(jù)需要用新的客戶機上下文替換一個或多個 客戶機TLB。預定義的系統(tǒng)寄存器集合可以限定TLB分區(qū)的大小。可替代地,可以動態(tài)地管 理該多個客戶機上下文。例如,每個TLB條目可以標記有合適的客戶機上下文并且穿插著 來自其他軟件上下文的TLB條目。
[0043] 圖4為流程圖,展示了一個實施例中使用MTLB訪問系統(tǒng)存儲器的過程400。過 程400包括兩個場景:成功的MTLB查找、以當查找"缺失"后對MTLB的更新。參照圖1,客 戶機104a向存儲器控制器發(fā)送存儲器訪問請求(例如,對系統(tǒng)存儲器的讀取或寫入)和 GVA (405)。存儲器控制器108接收該請求和GVA (406),并訪問MTLB 110以查找與GVA的轉 換匹配(410)。如果發(fā)現(xiàn)與相應的GPA匹配,則存儲器控制器進一步對GPA進行匹配以定位 相應的RPA,并返回RPA(415)。然后,存儲器控制器108使用RPA來訪問系統(tǒng)存儲器中的相 應條目(416),從而使客戶機104a能夠對系統(tǒng)存儲器150進行讀取或寫入操作。
[0044] 在與GPA和RPA之一或兩者匹配失敗(S卩,MTLB "缺失")的情況下,對MTLB 110 進行更新(420)。為了這樣做,客戶機104a和超管理器105 (或代表客戶機104a或超管理 器105的硬件)之一或兩者訪問系統(tǒng)存儲器150的頁表140。客戶機104a和/或超管理器 105行走頁表140以確定所需要的GVA到GPA和/或GPA到RPA轉換(425)。然后,客戶機 104a和/或超管理器105可以將該或這些轉換寫入到MTLB 110(430)(例如,如以上參照圖 3所描述的)。一旦更新了 MTLB 110,存儲器控制器108就可以再次執(zhí)行GVA與MTLB 110 的匹配,并且當返回相應的RPA后(415)提供存儲器訪問(416)。
[0045] 圖5為MTLB中的示例條目500的框圖,如以上參照圖1至圖4所描述的MTLB。該 條目可以具有一個虛擬部分501和一個物理部分502,其中,虛擬部分501包含有待匹配的 地址(506)以及其他信息,并且該物理部分包含結果轉換地址(510)以及其他信息。上述 Gt位可以是對客戶機或根軟件不可見的附加條目。該虛擬部分可以包括以下條目:
[0046] ASID[7:0] (505):地址空間標識符(ASID)。如果Gt = 1,則此字段保持客戶機 ASID用于此具體轉換。如果Gt = 0,則此字段保持根ASID用于此具體轉換。如果G= 1, 則可以忽略此字段。
[0047] VPN (506):虛擬頁號,指示GVA或GPA地址。
[0048] G(507):全局位。如果Gt = 1,則此位表示與GVA相對應的客戶機TLB條目的G 位。如果Gt = 0,則此位表示與或者GPA或者RVA (根虛擬地址)相對應的根TLB條目的G 位。
[0049] 該物理部分可以包括以下條目:
[0050] PFN(510):物理幀號,指示GPA或RPA地址的物理頁號。如果Gt = 1,則此字段表 示GPA。如果Gt = 0,則此字段表示RPA。
[0051] XI (511):執(zhí)行禁止(Execute Inhibit)指示映射包含數(shù)據(jù)而不是指令。如果XI =1,則此頁面轉換不可以用于指令并且僅可以用于數(shù)據(jù)轉換。如果XI = 0,則此轉換可以 用于或者數(shù)據(jù)或者指令。
[0052] RI (512):讀取禁止(Read inhibit)。讀取禁止位可以用于防止讀取具體頁面。
[0053] C[2:0] (513): -致性屬性可以存儲在C字段。這些屬性可以用于確定存儲器空間 的性質(例如,可高速緩存、沒有高速緩存、一致、非一致、I/O空間等)。
[0054] D(514):頁面重寫標志位。頁面重寫標志位指示是否之前已經寫入到頁面。
[0055] V (515):有效位。有效位指示條目有效還是無效。
[0056] 圖6為實現(xiàn)MTLB 610和微轉換旁視緩沖器(μ TLB)615的計算機系統(tǒng)600的框圖。 可以與以上參照圖1至圖5所述的系統(tǒng)100類似地配置系統(tǒng)600,其中添加了 μ TLB 615。 μ TLB 615的添加可以通過高速緩存GVA空間與RPA空間之間的折疊轉換而提供更快的地 址轉換。
[0057] 所示系統(tǒng)600可以是通過虛擬化支持多個客戶機的主機的一部分。多個客戶(即, 客戶機)604a-n通過對應的客戶機操作平臺(未示出)運行,這些操作平臺為受超管理器 605管理的虛擬硬件平臺??蛻魴C604a-n通過客戶機操作平臺所提供的GVA空間訪問物 理系統(tǒng)存儲器650。為了訪問通過RPA空間尋址的系統(tǒng)存儲器650,GVA可以首先被映射到 GPA,GPA進而被映射到為給定客戶機604a-n分配的系統(tǒng)存儲器650的分區(qū)處的RPA。從 而,為了能夠使客戶機604a-n訪問存儲器,可以將GVA轉換成GPA,然后將GPA轉換成對系 統(tǒng)存儲器650的條目進行指示的RPA。
[0058] 可以如以上參照圖1至圖5的MTLB 110所述的配置MTLB610。如此,MTLB 610可 以包括作為兩個不同TLB邏輯上可尋址的單個物理高速緩存:客戶機TLB(GTLB)620和根 TLB (RTLB) 630。GTLB 620 存儲 GVA 到 GPA 轉換,并且 RTLB 630 存儲 GPA 到 RPA 轉換。因 此,MTLB 610可以看起來像作為兩個不同的邏輯TLB(同時共享單個物理結構)的其他部 分??蛻魴C604a-n可以初始地添加 GTLB 620中的條目,這些客戶機訪問存儲在系統(tǒng)存儲 器650處的頁表640。頁表640存儲GVA、GPA和RPA空間之間的關系,并且對其進行行走以 確定哪些地址空間之間的地址轉換。從而,客戶機604a-n(或代表客戶機的硬件)可以行 走頁表640以確定GVA到GPA轉換,并且然后通過用于將該轉換存儲在GTLB 620處的GTLB 索引訪問GTLB 620。同樣,超管理器605(或代表該超管理器的硬件)可以初始地添加 RTLB 620中的條目,該超管理器訪問存儲在系統(tǒng)存儲器650處的頁表640。該超管理器可以行走 頁表640以確定GPA到RPA轉換,并且然后通過用于將該轉換存儲在RTLB630處的RTLB索 引訪問RTLB 630。響應于GTLB 620或RTLB 630處轉換查找中存儲器控制器608報告的 "缺失(miss)",如上所述,可以將條目添加到GTLB 620和RTLB 630內。
[0059] 存儲器控制器608(其可以包括硬件和客戶機操作平臺的軟件部分)與客戶機 604a-n進行接口連接,從而訪問系統(tǒng)存儲器650。為了訪問系統(tǒng)存儲器650,存儲器控制器 首先訪問UTLB 615。μ TLB615可以包括高速緩存、緩沖器、段寄存器、系統(tǒng)寄存器、或存儲 GVA至RPA轉換的其他存儲單元。在客戶機存儲器訪問過程中,存儲器控制器608可以從客 戶機604a-n接收GVA,然后,該GVA與μ--Β 615中的條目進行匹配以確定相應的RPA。如 果發(fā)現(xiàn)匹配,則存儲器控制器608訪問所指示的系統(tǒng)存儲器650的條目以便客戶機604a-n 進行讀取或寫入操作。如果沒有發(fā)現(xiàn)匹配,則存儲器控制器608可以訪問MTLB以確定相應 的GVA到GPA和GPA到RPA轉換。該存儲器控制器可以進一步將兩次轉換折疊成單次GVA 到RPA轉換,并且可以用所折疊的轉換填充μ TLB 615。
[0060] 以下參照圖7至圖9進一步詳細描述了 MTLB 615的配置、以及系統(tǒng)600在存儲器 訪問和填充μ TLB 615過程中的操作。
[0061] 圖7為μ TLB中的示例條目700的框圖,如以上參照圖6所描述的μ TLB 615。條 目700可以包括以下段:
[0062] V(705):有效位。有效位指示條目有效還是無效。
[0063] Gt (706) :Gt位指示條目屬于客戶機(Gt = 1)還是根上下文(Gt = 0)。如果Gt =0,則VPN為GPA或RVA。如果Gt = 1,則VPN為GVA或GPA (對于未映射的客戶機地址)。 Gt位的使用避免了用相應的虛擬機ID(VMID)標記每個μ TLB條目的需要。
[0064] 掩碼(707):這些位向比較器指示是否應在比較中考慮具體地址位或將其忽略。
[0065] G(708):這是全局位。如果Gt = 1,則此位表示與GVA相對應的客戶機TLB條目 的G位。如果Gt = 0,則此位表示與或者GPA或者RVA相對應的根TLB條目的G位。
[0066] ASID (709):這是ASID字段。如果Gt = 1,則此字段保持客戶機ASID用于此具體 轉換。如果G = 1,則忽略此字段。如果Gt = 0,則此字段保持根ASID用于此具體轉換。如 果G = 1,則忽略此字段。
[0067] VP(710):虛擬頁號(用于 GVA、GPA、或 RVA)。
[0068] ENTg[7:0] (711) :ENTg為客戶機條目編號或對此轉換的來源進行標識的另一個 唯一標識符。當MTLB寫入后,此編號用于選擇性地使可能表示有效轉換的條目無效。如果 Gt = 0,則不使用此字段。根TLB內的Entg[7:0] = = 0指示客戶機TLB中沒有客戶機轉 換(例如,未映射的客戶機地址)。ENTg為MTLB中的絕對條目編號(0-255)而不是客戶機 熟知的"索引"。
[0069] ENTr [8:0] (712) :ENTr為根條目編號或對此轉換的來源進行標識的另一個唯一 標識符。應指出的是,可以為Gt = 0和Gt = 1兩者設置此字段。ENTr[8]被設置成用于指 示此μ TLB條目不具有MTLB根條目。如果未映射的根地址被插入到μ TLB內,則會發(fā)生這 種情況。ENTr為MTLB中的絕對條目編號(0-255)而不是根熟知的"索引"。
[0070] RP(713):根頁號或者從根TLB條目LoO或條目Lol拷貝此字段或者其可以是 GPN (來自客戶機TLB)和RP (來自根TLB)的拼接。
[0071] GRI (714):客戶機讀取禁止。GRI位反映客戶機TLB條目RI位中的值。當Gt = 0 時,則忽視此字段。
[0072] RI (715):讀取禁止。RI反映根TLB RI位中的值。如果Gt = 0,則此字段無關緊 要。
[0073] ⑶(716):客戶機頁面重寫標志位。⑶位反映客戶機TLB中的D位的值。如果Gt =〇,則可以忽視此字段。
[0074] D(717):頁面重寫標志位。D位反映根TLB中的D位的值。
[0075] C(718): -致性位。當Gt = 1時,從客戶機TLB條目中取CCA。當Gt = 0時,從 根TLB條目中取CCA。
[0076] 以下進一步詳細描述了上述值。如果客戶機=1(即,執(zhí)行客戶機查找),則在查 找時僅考慮Gt = 1的條目。如果客戶機=0 (即,執(zhí)行根查找),則在查找時僅考慮Gt = 0 的條目。
[0077] 返回參照圖6,當需要地址轉換時,存儲器控制器608訪問μ TLB 615并在"VP"字 段上搜索匹配。如果找到匹配,則相應的RP包含根物理地址的頁號部分。掩碼位用于確定 VP字段中的哪些位匹配以及RP中的哪些位用于形成根物理地址。當發(fā)生"缺失"時,硬 件訪問MTLB 610,并且取決于有待轉換的地址類型,執(zhí)行或者一次(GPA到RPA)或者兩次 (GVA 到 GPA、GPA 到 RPA)查找。
[0078] 再次返回圖7,每個μ TLB條目700可以表示高達兩個轉換步驟的結果。μ TLB必 須保留來自這些步驟中的每個步驟的某些信息??蛻魴C頁面大小和根頁面大?。?,客戶 機虛擬對客戶機物理頁面大小或客戶機物理對根物理頁面大?。┲械妮^小者確定掩碼位 707。
[0079] G位708表示"全局"位。全局地址為忽視ASID情況下的地址。如果這是從GVA 到RPA的映射,則從客戶機TLB( S卩,客戶機轉換)拷貝G位。如果這是從GPA或RVA到RPA 的映射,則從根TLB ( S卩,根轉換)拷貝G位。
[0080] ASID字段709表示虛擬地址的地址空間標識符。ASID 709用于在屬于不同上下文 的虛擬地址之間進行區(qū)分。如果這是從客戶機虛擬地址到根物理地址的映射,則從客戶機 TLB( S卩,客戶機轉換)拷貝ASID字段709。如果這是GPA到RPA的映射,則從根TLB(即, 根轉換)拷貝ASID字段。可以由正在轉換的虛擬地址形成虛擬頁號(VP)字段710,并且可 以取決于(以下參照圖9A-C進行詳細描述的)客戶機和根轉換的相對頁面大小來形成根 頁號(RP)字段713。
[0081] 讀取禁止位(RI) 715可以用于防止讀取具體頁面。因為讀取權限取決于針對此位 的客戶機和根轉換兩者的值,在UTLB 615中捕捉到客戶機和根兩者讀取禁止屬性。可以 從客戶機TLB拷貝GRI (客戶機讀取禁止)。如果轉換不是客戶機虛擬地址轉換,則可以忽 視GRI位并且從根TLB條目拷貝RI位715。類似地,D位(頁面重寫標志位)717指示是 否之前已經寫入到頁面。因為位717取決于針對此位的相應客戶機和根轉換兩者的值,在 μ TLB 615中捕捉到客戶機和根兩者D位屬性。
[0082] C位718可以與針對具體頁面的一致性策略相關。如果從GVA映射到RPA,則可以 從客戶機TLB的相應條目拷貝CCA字段718。如果映射是GPA到RPA,則可以從客戶機TLB 的相應條目拷貝C字段718。
【權利要求】
1. 一種電路,包括: 一個高速緩存,被配置成用于存儲多個地址域之間的轉換,該高速緩存作為一個第一 邏輯部分和一個第二邏輯部分是可尋址的,并且該第一邏輯部分被配置成用于存儲一個第 一地址域與一個第二地址域之間的轉換,該第二邏輯部分被配置成用于存儲該第二地址域 與一個第三地址域之間的轉換;以及 一個處理器,被配置成用于1)關于一個地址請求對該第一和第二邏輯部分中的至少 一個的一個旁路進行控制以及2)根據(jù)該旁路對該地址請求與該高速緩存的一個沒有旁路 的部分進行匹配并且輸出一個相應的地址結果。
2. 如權利要求1所述的電路,其中,該處理器被進一步配置成用于基于該地址請求所 指示的一個地址對該旁路進行控制。
3. 如權利要求2所述的電路,其中,該處理器被進一步配置成用于基于該地址請求所 指示的該地址是否指定從一個給定地址轉換排除的一個存儲器的一個子集對該旁路進行 控制。
4. 如權利要求2所述的電路,其中,該處理器被進一步配置成用于基于該地址請求所 指示的該地址是否是從一個給定地址轉換排除的一個地址范圍中的一個成員來對該旁路 進行控制。
5. 如權利要求1所述的電路,其中,該處理器被進一步配置成用于基于該地址請求所 指定的一個地址是否被映射到該高速緩存的一個指示來對該旁路進行控制。
6. 如權利要求1所述的電路,其中,該處理器被進一步配置成用于基于一個旁路指示 對該旁路進行控制。
7. 如權利要求6所述的電路,其中,該旁路指示為該地址請求的一個部分。
8. 如權利要求6所述的電路,其中,該旁路指示為該處理器所接收到的一個控制位。
9. 如權利要求1所述的電路,其中,該處理器被進一步配置成用于基于1)該地址請求 所指定的一個地址是否被映射到該高速緩存的一個指示、以及2)關于該地址請求的一個 旁路指示來對該旁路進行控制。
10. 如權利要求1所述的電路,其中,該處理器被進一步配置成用于變換該地址請求的 一個地址部分。
11. 如權利要求10所述的電路,其中,變換該地址部分包括應用一個地址掩碼。
12. 如權利要求10所述的電路,其中,該處理器根據(jù)該旁路變換該地址部分代替該第 一和第二邏輯部分中的至少一個的查找。
13. 如權利要求1所述的電路,進一步包括一個對該第一和第二邏輯部分之間的一個 邊界進行限定的寄存器。
14. 如權利要求13所述的電路,其中,該邊界的位置根據(jù)存儲在該寄存器處的一個值 變化。
15. -種將地址轉換高速緩存在存儲器架構內的方法,包括: 將一個第一地址域與一個第二地址域之間的轉換存儲到一個高速緩存的一個第一邏 輯部分; 將該第二地址域與一個第三地址域之間的轉換存儲到該高速緩存的一個第二邏輯部 分; 關于一個地址請求對該第一和第二邏輯部分中的至少一個的一個旁路進行控制;以及 根據(jù)該旁路將該地址請求與該高速緩存的沒有旁路的部分進行匹配并且輸出一個相 應的地址結果。
16. 如權利要求15所述的方法,進一步包括基于該地址請求所指示的一個地址對該旁 路進行控制。
17. 如權利要求16所述的方法,其中,基于該地址請求所指示的該地址是否指定從一 個給定地址轉換排除的一個存儲器的一個子集對該旁路進行控制。
18. 如權利要求16所述的方法,其中,基于該地址請求所指示的該地址是否是從一個 給定地址轉換排除的一個地址范圍的一個成員來對該旁路進行控制。
19. 如權利要求15所述的方法,其中,基于該地址請求所指定的一個地址是否是被映 射到該高速緩存的一個指示來對該旁路進行控制。
20. 如權利要求15所述的方法,其中,基于一個旁路指示對該旁路進行控制。
21. 如權利要求20所述的方法,其中,該旁路指示為該地址請求的一個部分。
22. 如權利要求20所述的方法,其中,該旁路指示為一個與該地址請求無關的控制位。
23. 如權利要求15所述的方法,其中,基于1)該地址請求所指定的一個地址是否被映 射到該高速緩存的一個指示、以及2)關于該地址請求的一個旁路指示來對該旁路進行控 制。
24. 如權利要求15所述的方法,進一步包括變換該地址請求的一個地址部分。
25. 如權利要求24所述的方法,其中,變換該地址部分包括應用一個地址掩碼。
26. 如權利要求24所述的方法,其中,根據(jù)該旁路變換該地址部分代替該第一和第二 邏輯部分中的至少一個的查找。
27. 如權利要求15所述的方法,進一步包括對該第一和第二邏輯部分之間的一個邊界 進行限定。
28. 如權利要求27所述的方法,其中,該邊界的位置根據(jù)存儲在一個寄存器處的一個 值變化。
29. -種電路,包括: 一個轉換旁視緩沖器(TLB),被配置成用于存儲多個地址域之間的轉換,該TLB作為一 個客戶機TLB和一個根TLB是可尋址的,該客戶機TLB被配置成用于存儲一個客戶機虛擬 地址(GVA)域與一個客戶機物理地址(GPA)域之間的轉換,該根TLB被配置成用于存儲該 GPA域與一個根物理地址(RPA)域之間的轉換,該TLB中的每個條目包括一個對該條目是否 是該客戶機TLB或該根TLB的一個成員進行指示的位;以及 一個處理器,被配置成用于1)關于一個地址請求對客戶機TLB和根TLB中的至少一個 的一個旁路進行控制以及2)根據(jù)該旁路對該地址請求與該高速緩存的一個沒有旁路的部 分進行匹配并且輸出一個相應的地址結果。
30. 如權利要求29所述的電路,進一步包括一個對該客戶機TLB與該根TLB之間的一 個邊界進行限定的寄存器。
【文檔編號】G06F12/08GK104516830SQ201410498013
【公開日】2015年4月15日 申請日期:2014年9月25日 優(yōu)先權日:2013年9月26日
【發(fā)明者】R·E·凱斯勒, B·W·欽, M·S·伯通 申請人:凱為公司