TWI641947B - 用於管理位址轉換和快取記憶體儲存的方法及裝置 - Google Patents
用於管理位址轉換和快取記憶體儲存的方法及裝置 Download PDFInfo
- Publication number
- TWI641947B TWI641947B TW104113188A TW104113188A TWI641947B TW I641947 B TWI641947 B TW I641947B TW 104113188 A TW104113188 A TW 104113188A TW 104113188 A TW104113188 A TW 104113188A TW I641947 B TWI641947 B TW I641947B
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- memory
- cache memory
- physical address
- stored
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/805—Real-time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
Abstract
使用處理器管理位址轉換和快取記憶體存儲,該處理器包括至少一個CPU,該至少一個CPU被配置為運行管理程式和至少一個來賓作業系統。管理包括:從虛擬位址空間中的虛擬位址向中間物理位址空間中的中間物理位址進行轉換;從中間物理位址向主記憶體的物理位址空間中的物理位址進行轉換;基於存儲在記憶體頁面內的資料的快取記憶體行的估計的重用來確定用於記憶體頁面的重用資訊;獨立於以下各項存儲所確定的重用資訊:(1)用於指示虛擬位址的任何位元、(2)用於指示中間物理位址的任何位元、以及(3)用於指示物理位址的任何位元;以及使用所存儲的重用資訊將快取記憶體行存儲在第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中。
Description
本發明涉及管理快取記憶體中的重用資訊。
很多現代處理器支援具有多級快取記憶體的分層快取記憶體系統,多級快取記憶體包括在處理器內或者在多核處理器的每個核心內的一級或者多級,以及在處理器或者核心外部的一級或者多級,一直到就在主記憶體被存取之前被存取的最後一級快取記憶體(LLC)。在層次結構的每級處,快取記憶體存儲資料的子集的副本以相對於較高級快取記憶體的速度(或者相對於用於LLC的主記憶體的速度)加速通過處理器對該資料的存取。較低級快取記憶體更靠近處理器(或者核心),而較高級快取記憶體更遠離處理器(或者核心)。LLC通常由多核處理器的核心中的全部核心共用。在每級處,快取記憶體系統將以‘快取記憶體行(cache line)’(也稱為‘快取記憶體塊(cache block)’)為單位把資料塊載入到條目中並且從條目中逐出資料塊。每個快取記憶體行包括若干‘字(words)’的資料,每個字由預定數目的位元組構成。每個快取記憶體條目包括用於存儲特定快取記憶體行的資料字和用於標籤(其包含位址的若干最高有效位,其對於該條目的字是共同的)的位的空間和用於其他資訊(例如,有效的位元和任何標記(flag)或者錯誤校正碼位元)的空間。對於組相聯快取記憶體,在比較所期望的資料的記憶體位址的標籤部分之前,快取記憶體系統比較位址的索引部分以確定包含該資料的快取記憶體行可以被存儲在多
個組中的哪個組中。對於N路(N-way)組相聯快取記憶體,標籤比較被執行N次(有可能並行地),針對其中可以存儲包含資料的快取記憶體行的N‘路’中的每一路執行一次。地址的最低序的位(也稱為‘塊偏移’)被用於從在快取記憶體中找到(即,‘快取記憶體命中(cache hit)’)的快取記憶體行中選擇特定字。如果快取記憶體行未在快取記憶體中找到(即,‘快取記憶體未命中(cache miss)’),則快取記憶體系統嘗試從更高級快取記憶體中或者從主記憶體(在LLC的情況下)中獲取快取記憶體行。
在包括快取記憶體的計算系統的操作中可能出現的一個問題被稱為“快取記憶體污染”,其中具有較低再使用性的快取記憶體行代替具有較高再使用性的快取記憶體行。再使用性指特定快取記憶體行中的資料在被載入到快取記憶體中之後並且在被逐出之前將被再次存取的可能性。一種用於減輕該快取記憶體污染問題的方案是使用‘污染緩衝器’,污染緩衝器是快取記憶體的一部分,用於存儲具有低再使用性的快取記憶體行,為具有高再使用性的快取記憶體行保留大部分的快取記憶體。例如,使用‘頁面著色’,虛擬位址的特定部分可以與特定‘顏色’相關聯,使得具有不同顏色的虛擬位址被保證不在快取記憶體中重疊(例如,通過將每個顏色限制到組相聯快取記憶體的一個或者多個組)。在一些虛擬化方案中,頁面著色已經被用於減輕快取記憶體污染。
在一個方面,總體上講,一種用於管理位址轉換和快取記憶體存儲的方法包括:回應於在從外部記憶體系統的主記憶體的物理位址空間獲取第一記憶體頁面中的資料的嘗試之後發出的分頁錯誤,從存放裝置獲取所述第一記憶體頁面;回應於在從所述外部記憶體系統的第一快取記憶體的第一快取記憶體行獲取所述第一記憶體頁面中的所述資料的嘗試之後發出的快取記憶體未命
中,發出獲取所述第一記憶體頁面中的所述資料的所述嘗試;通過處理器管理位址轉換和快取記憶體存儲,所述處理器包括(1)耦合到所述外部記憶體系統的至少一個記憶體管理單元,以及(2)被配置為運行管理程式和至少一個來賓作業系統的至少一個中央處理單元,所述管理包括:從虛擬位址空間中的虛擬位址向中間物理位址空間中的中間物理位址進行轉換;從所述中間物理位址向所述主記憶體的所述物理位址空間中的物理位址進行轉換;基於存儲在記憶體頁面內的資料的快取記憶體行的估計的重用來確定用於所述記憶體頁面的重用資訊;獨立於以下各項存儲所確定的重用資訊:(1)用於指示虛擬位址的任何位元、(2)用於指示中間物理位址的任何位元、以及(3)用於指示物理位址的任何位元;以及使用所存儲的重用資訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中。
在另一方面,總體上講,一種裝置包括:存放裝置,所述存放裝置被配置為存儲包括第一記憶體頁面的記憶體頁面,所述第一記憶體頁面回應於在從物理位址空間獲取所述第一記憶體頁面中的資料的嘗試之後發出的分頁錯誤從所述存放裝置被獲取,其中從所述物理位址空間獲取所述第一記憶體頁面中的所述資料的所述嘗試回應於快取記憶體未命中而被發出;外部記憶體系統,包括:(1)主記憶體控制器,所述主記憶體控制器耦合到具有所述物理位址空間的主記憶體,以及(2)第一快取記憶體,所述第一快取記憶體被配置為存儲多個快取記憶體行並且在從所述快取記憶體行中的至少一個快取記憶體行獲取所述第一記憶體頁面中的所述資料的嘗試之後發出所述快取記憶體未命中;以及處理器,包括(1)至少一個記憶體管理單元,所述至少一個記憶體管理單元耦合到所述外部記憶體系統,以及(2)至少一個中央處理單元,至少一個中央處理單元被配置為運行管理程式和至少一個來
賓作業系統。所述處理器被配置為:從虛擬位址空間中的虛擬位址向中間物理位址空間中的中間物理位址進行轉換;從所述中間物理位址向所述主記憶體的所述物理位址空間中的物理位址進行轉換;基於存儲在記憶體頁面內的資料的快取記憶體行的估計的重用來確定用於所述記憶體頁面的重用資訊;獨立於以下各項存儲所確定的重用資訊:(1)用於指示虛擬位址的任何位元、(2)用於指示中間物理位址的任何位元,以及(3)用於指示物理位址的任何位元;以及使用所存儲的重用資訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中。
方面可以包括以下特徵中的一個或者多個特徵。
第一快取記憶體包括具有快取記憶體行的多個組的組相聯快取記憶體,快取記憶體行的每個組具有多個路。
使用所存儲的重用資訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中包括使用所存儲的重用資訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的所述多個組中的所述多個路中的選擇的路中。
多個路中的第一路被選擇以存儲在具有所述重用資訊的第一值的記憶體頁面內存儲的資料的快取記憶體行,並且所述多個路中的第二路被選擇以存儲在具有所述重用資訊的與所述第一值不同的第二值的記憶體頁面內存儲的資料的快取記憶體行。
第一快取記憶體包括多個獨立的存儲區域,每個獨立的存儲區域由所述物理位址空間中的物理位址的部分定址。
使用所存儲的重用資訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中包括使用所存儲的重用資訊將快取記憶體行存儲在所述多個獨立存儲區域的選擇的存儲區域中。
重用資訊包括存儲在快取記憶體存儲在轉換後備緩衝器中的頁表條目內的一個或者多個位。
存儲在所述記憶體頁面內的資料的快取記憶體行的所述估計的重用包括用於被嘗試從所述第一快取記憶體的對應的快取記憶體行獲取的資料塊的估計的未命中率。
確定所述重用資訊包括:(1)通過所述來賓作業系統確定第一重用資訊,以及(2)通過所述管理程式確定第二重用資訊。
使用所存儲的重用資訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中包括處理所述第一重用資訊和所述第二重用資訊以及使用所述處理的結果以將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中。
第一快取記憶體包括最後一級快取記憶體。
方面可以具有以下優點中的一個或者多個優點。
通過存儲定量地表徵記憶體位址的特定範圍的再使用性的顯式重用資訊,一級或者多級的位址轉換可以被執行,而無需使用頁面著色或者減輕快取記憶體污染的其他技術的特殊位址的分配。例如,一種估計再使用性的方式是通過測量針對位址空間的特定部分(例如,按照記憶體頁面的細微性,其包含很多快取記憶體行)的過往快取記憶體未命中。
在來賓作業系統頁表和管理程式頁表二者中存儲重用資訊使得重用資訊能夠在兩個存取級處是可存取的。處理在不同存取級處確定的重用資訊以選擇在最後一級快取記憶體中的哪個部分(例如,在哪一‘路’)存儲特定快取記憶體行使得能夠靈活地使用用於在一些場景下選擇不同的重用資訊的各種規則,或者靈活地使用用於在其他場景下組合不同的重用資訊的各種函數。
獨立於用於指示任何類型的位址(例如,虛擬位址、中間物理位址或者物理位址)的任何位元存儲重用資訊使得能夠更自由地應用重用資訊以用於減輕快取記憶體污染,而不與位址轉換方案干擾,特別是在虛擬化系統中。
從以下描述中,並且從權利要求書中,本發明的其他特徵和優點將變得明顯。
100‧‧‧計算系統
102‧‧‧處理器
104‧‧‧流水線
106‧‧‧寄存器堆
108‧‧‧處理器記憶體系統
110‧‧‧處理器匯流排
112‧‧‧外部記憶體系統
114‧‧‧I/O橋
116‧‧‧I/O匯流排
118A‧‧‧存放裝置
118B-118D‧‧‧I/O設備
120‧‧‧LLC
122‧‧‧主記憶體控制器
124‧‧‧記憶體模組
200A-200D‧‧‧虛擬位址空間
202A-202D‧‧‧中間物理位址空間
204‧‧‧物理位址空間
300‧‧‧MMU
302A-302B‧‧‧頁表
304‧‧‧TLB
306‧‧‧L1快取記憶體
308‧‧‧主記憶體
310‧‧‧PTE
312‧‧‧中間物理頁號
314‧‧‧物理頁號
316‧‧‧狀態資訊
318‧‧‧重用資訊
320‧‧‧LLC
320’‧‧‧LLC
322‧‧‧快取記憶體行
330‧‧‧主快取記憶體
332‧‧‧污染緩衝器
第一圖是計算系統的示意圖。
第二圖是圖示了不同級的位址空間的示意圖。
第三A圖和第三B圖是圖示了用於管理重用資訊的過程的示意圖。
不同種類的虛擬化經常被用在計算系統中。一種虛擬化是‘虛擬記憶體’,其允許被CPU執行的程式指令引用比由主記憶體的大小限定的‘物理位址空間’更大的‘虛擬位址空間’內的虛擬位址。虛擬記憶體涉及從一個或者多個這樣的虛擬位址空間到物理位址空間中的位址轉換。使用‘頁表’執行轉換,該‘頁表’以通常由很多快取記憶體行構成的記憶體頁面(或者簡單地‘頁面’)的細微性來存儲虛擬位址和物理位址之間的映射。
其他種類的虛擬化涉及‘虛擬機器’(VM)。這些種類的虛擬化包括‘核心虛擬化’和‘I/O虛擬化’,核心虛擬化使得多個來賓作業系統均能夠運行在其自身單獨的VM中同時共用相同的物理系統硬體,並且在I/O虛擬化中多個I/O流被耦合到並且來自不同的VM。‘管理程式(hypervisor)’(也稱為虛擬機器監視器(VMM))運行在物理系統上以管理虛擬化系統的所有來賓作業系統。管理程式運行在比來賓作業系統更高的許可權的存取級處。因此,只有管理程式可以存取物理位址空間。因此,每個來賓作業
系統被提供其自身的‘中間物理位址空間’,一個或者多個虛擬位址空間被轉換到中間物理位址空間中,並且管理程式將中間物理位址轉換成物理位址。下文更加詳細地描述的虛擬記憶體和VM虛擬化方案的組合對於減輕快取記憶體污染的一些方法提出了問題。
為了理解虛擬記憶體和這些虛擬化方案如何影響快取記憶體管理,理解快取記憶體系統的操作是有說明的。有效的快取記憶體性能依賴於資料存取模式的兩個性質:關於剛剛被存取的資料的時間局部性和空間局部性。時間局部性意指相同資料很可能很快被再次存取。空間局部性意指定位元在附近位址中的資料很可能很快被存取。遺憾的是,某些資料集不呈現顯著的時間或者空間局部性。當具有這樣的資料的快取記憶體行被存儲在快取記憶體條目中時,它代替可能具有更高時間和/或空間局部性的另一快取記憶體行。具有更高時間/空間局部性的資料比具有更低時間和/或空間局部性的資料更可重用。
在一些快取記憶體污染減輕方案中,使用快取記憶體未命中率來估計再使用性。虛擬位址的快取記憶體未命中率被採樣,並且然後含具有高未命中率的虛擬位址的資料被映射到存儲在稱為污染緩衝器的快取記憶體的相對較小的區域中的物理位址空間的一部分。通過將高未命中率資料限制到污染緩衝器,由對於該資料的頻繁未命中引起的逐出將僅影響也具有高未命中率的其他資料,這將具有低未命中率的資料保存在污染緩衝器外的快取記憶體的另一區域中。一種將虛擬位址映射到保證被限制到快取記憶體的特定區域的物理位址的方法是限制所使用的物理位址的‘索引’部分以選擇組相聯快取記憶體的特定‘組’。這一機制在其中作業系統具有機器的物理位址佈局的直接控制的非虛擬化系統中有效。然而,這一機制在來賓作業系統可能不具有主控機器的物理位址佈局的直接控制的虛擬化系統中可能無效。用於提供用於虛擬
化系統的污染緩衝器的備選技術涉及重用資訊,該重用資訊獨立於位址的並且可以在來賓作業系統和管理程式的多個存取級處被高效地管理。
第一圖示出了其中可以使用污染緩衝器管理技術的計算系統100的示例。系統100包括至少一個處理器102,其可以是單個中央處理單元(CPU)或者多核架構的多個處理器核心的佈置。在該示例中,處理器102包括流水線(pipeline)104、一個或者多個寄存器堆(register file)106和處理器記憶體系統108。處理器102被連接到處理器匯流排110,處理器匯流排110使得能夠與外部記憶體系統112和輸入/輸出(I/O)橋114進行通信。I/O橋114使得能夠通過I/O匯流排116與包括存放裝置118A和其他I/O設備118B-118D(例如,網路介面、顯示器適配器和/或諸如鍵盤或者滑鼠之類的使用者輸入裝置)的各種不同的I/O設備進行通信。諸如硬碟驅動器或者其他大容量(通常非揮發性的)存放裝置之類的存放裝置118A可以留出一些空間來用作虛擬記憶體方案中的用於(通常揮發性的)主記憶體的次存儲裝置(或者‘後備存儲庫’),正如下文更加詳細地描述的。
處理器記憶體系統108和外部記憶體系統112一起形成分層快取記憶體系統,該分層快取記憶體系統包括處理器記憶體系統108內的至少第一級(L1)快取記憶體和外部記憶體系統112內的任何數目的更高級(L2、L3、…)快取記憶體。外部記憶體系統112內的最高級快取記憶體(如果層級中只有兩級,其可以是L2快取記憶體)是就在主記憶體之前被存取的LLC 120。當然,這僅是示例。在哪些級快取記憶體在處理器記憶體系統108內和哪些在外部記憶體系統112之間的精確區分在其他示例中可以不同。例如,L1快取記憶體和L2快取記憶體可以都在處理器102內部,並且L3(和更高的)快取記憶體可以在處理器102外部。如果處理器102
是多核處理器,則每個核心可以具有其自身的內部L1快取記憶體,並且核心可以共用L2快取記憶體。外部記憶體系統112還包括主記憶體控制器122,其被連接到用作主記憶體的任何數目的記憶體模組124(例如,動態隨機存取記憶體模組)。
第二圖圖示了具有虛擬記憶體的虛擬化系統的示例中的不同位址空間之間的關係。如上文所描述,有三種類型的地址:虛擬位址(VA)、中間物理位址(IPA)和物理位址(PA)。一個或者多個來賓作業系統(OS)運行在管理程式內,管理程式直接運行在諸如計算系統100之類的主機上。在該示例中,有四個來賓OS:來賓OS A、來賓OS B、來賓OS C和來賓OS D。每個來賓OS提供用於運行在該來賓OS上的程式的一個或者多個虛擬位址空間,並且管理這些虛擬位址空間內的VA向中間物理位址空間內的IPA的轉換。在該示例中,來賓OS A提供虛擬位址空間200A,並且管理向中間物理位址空間202A的轉換;來賓OS B提供虛擬位址空間200B,並且管理向中間物理位址空間202B的轉換;來賓OS C提供虛擬位址空間200C,並且管理向中間物理位址空間202C的轉換;並且來賓OS D提供虛擬位址空間200D,並且管理向中間物理位址空間202D的轉換。運行在每個來賓作業系統之下的管理程式管理中間物理位址空間中的所有中間物理位址空間內的IPD向對應於主記憶體內的實際物理存儲位置的物理位址空間204內的PA的轉換。PA的部分被用作標籤、索引和偏移以存取諸如LLC 120之類的快取記憶體系統中的快取記憶體中的資料。對於其中來賓OS使用VA至IPA轉換以基於IPA的一部分將高未命中率資料限制到‘軟體污染緩衝器’的快取記憶體污染減輕技術,將需要一種機制,該機制讓管理程式確定軟體污染緩衝器被映射到特定IPA區域,該特定IPA區域用於由來賓OS執行的對於基於PA的一部分優化硬體污染緩衝器有用的任何軟體優化。作為使用位址的一部分將某些資料映
射到污染緩衝器的備選方案,用於存儲映射的頁表可以被擴充有對特定頁面的可用性的定量估計進行編碼的顯式重用資訊,其然後用於將某些頁面上的快取記憶體行高效地轉移到用作污染緩衝器的快取記憶體的選擇的部分。
第三A圖和第三B圖圖示了用於管理和應用這樣的重用資訊的過程的示例。處理器記憶體系統108包括記憶體管理單元(MMU)300,管理程式使用MMU 300用於IPA至PA的轉換。在虛擬化系統中,通過來賓OS的VA至IPA的轉換可以完全在軟體中被處理,或者來賓OS可以從MMU 300得到一些硬體協助。不論哪種情況,都會有含存儲VA至IPA的映射的條目的用於由來賓OS使用的頁表,以及含存儲IPA至PA的映射的條目的用於由管理程式使用的單獨的頁表。頁表302A是用於由管理程式使用用於轉換IPA的這樣的頁表的示例,頁表302A通常連同包括頁表302B的若干附加的頁表一起被存儲在主記憶體308中,頁表302B可以由來賓OS使用用於轉換VA。
處理器記憶體系統108還包括轉換後備緩衝器(TLB)304,TLB 304用於快取記憶體存儲來自一個或者多個頁表的經常使用的頁表條目。這使得轉換能夠在不需要必須存取主記憶體以獲取頁表條目的情況下被執行。處理器記憶體系統108還包括L1快取記憶體306和用於處理TLB 304或者L1快取記憶體中的未命中的各種其他電路裝置。當載入或者存儲指令被執行時,TLB 304被用於轉換該指令的記憶體位址(從VA至IPA至PA),並且確定來自該記憶體位址的資料的副本是否在分層快取記憶體系統的級中的任何級中,如果必要從L1快取記憶體306一直到LLC 320。如果是這樣,該指令可以從快取記憶體系統中被執行。如果不是這樣,該指令可以由未命中電路裝置處理使得它可以在直接存取主記憶體308之後被執行。
在該示例中,頁表302A的頁表條目(PTE)310存儲中間物理頁號(IPPN)312和物理頁號(PPN)314,中間物理頁號312和物理頁號314用作IPA和PA之間的映射。因為對於IPA及其映射的PA,包括頁偏移的低序位是相同的,所以這只留下包括頁號的高序位來指定映射。同樣地,頁表302B的PTE存儲用作VA和IPA之間的映射的虛擬頁號和中間物理頁號。PTE 310還存儲狀態資訊316,諸如指示頁面是駐留在主記憶體中還是需要從次存儲裝置(例如,存放裝置118A)中獲取的資訊。當PTE 310被存儲在TLB 304中時,也可以有附加的資訊用於管理全頁表和TLB 304之間的PTE的傳遞。
PTE 310中的附加的欄位318被提供用於存儲重用資訊。重用資訊提供允許來賓OS向L1快取記憶體306和LLC 320之間的任何級處的下面的快取記憶體系統傳達存儲在特定頁面上的資料的再使用性的定量估計的機制。在一些實現方式中,可用資訊是二進位的,並且可以因此使用單個‘重用位元’被編碼(例如,0=低再使用性,或者1=高再使用性)。在二進位情況下,閾值可以被選擇以在低和高再使用性之間進行區分。如果用於特定頁面內的快取記憶體行的平均未命中率高於閾值,則重用位被設置為0(即,高未命中率=低再使用性)。如果用於特定頁面內的快取記憶體行的平均未命中率低於閾值,則重用位被設置為1(即,低未命中率=高再使用性)。如果附加的位元被用於對重用資訊進行編碼,則更細粒的定量估計可以被編碼(例如,2位元提供使用3個閾值確定的4個重用級)。
在一些實現方式中,每個來賓OS負責維護用於VA至IPA頁表中的頁面的重用資訊,並且管理程式負責維護用於IPA至PA頁表中的頁面的重用資訊。對於兩種類型的頁表,當整個PTE被緩存在TLB 304中時,重用資訊可以與該PTE一起被複製。對於快取
記憶體系統中的基於重用資訊配置有污染緩衝器的任一級快取記憶體,快取記憶體系統使用用於來自一個或者兩個頁表的特定頁面的重用資訊以選擇該快取記憶體的一部分用於存取落入該特定頁面內的快取記憶體行322。第三A圖和第三B圖圖示了其中LLC 320被配置有污染緩衝器的示例。包含特定快取記憶體行的頁面可以通過使用對應於用於頁號的位址位的用於該快取記憶體行的標籤和索引的合適的部分而被確定。
來賓OS和管理程式可以潛在地估計用於相同頁面的重用資訊的不同的定量值。快取記憶體系統可以被配置以各種方式中的任何方式處理來自兩個轉換階段(即,來自兩個頁表)的重用資訊。例如,快取記憶體系統可以使用用於在來賓OS重用資訊和管理程式重用資訊之間進行選擇的規則。用於二進位重用資訊的一個這樣的規則可以是:如果來賓OS指示‘低再使用性’並且管理程式指示‘高再使用性’,則選擇‘低再使用性’作為重用資訊。備選地,快取記憶體系統可以使用預定函數結合來自二個轉換階段的重用資訊,潛在地導致更細粒的估計作為組合的重用資訊。不管它是來自基於規則選擇的任一轉換階段的重用資訊的值之一還是它是用於組合重用資訊並且推導出可以與任一階段的重用資訊不同的得到的重用資訊的預定函數,處理可以通過存儲用於兩個階段的可能值和對應的結果之間的映射被實現。快取記憶體系統也可以確定覆寫該表並且使用來自轉換階段或者存取級中的任何轉換階段或者存取級的重用資訊,或者基於軟體和/或硬體的某些屬性關閉污染緩衝器並且忽略重用資訊。下表是用於具有兩個階段和二進位重用資訊的系統的映射表的示例。
在一些處理器架構中,存在用於來賓OS和管理程式的存取級之外的附加的存取級。例如,可以存在用於運行在來賓OS中的使用者程式的最低許可權的存取級L0、用於來賓OS的存取級L1、用於管理程式的存取級L2和用於管理主記憶體內的安全和非安全頁面的安全系統的最高許可權存取級L3。一些實現方式可以使得每個存取級能夠維護其自身的用於頁面的重用資訊,並且快取記憶體系統可以處理來自級的任何組合的重用資訊以確定用於存取LLC 320的最終重用資訊。
存在各種技術用於在快取記憶體的所選擇的部分中存儲快取記憶體行以便提供污染緩衝器。在第三A圖的示例中,LLC 320是4路組相聯快取記憶體。快取記憶體系統可以使用各路中的一路(例如,路4)作為用於具有‘低再使用性’的頁面上的快取記憶體行的污染緩衝器,並且可以使用其他路(路1-3)作為用於具有‘高再使用性’的頁面上的快取記憶體行的主快取記憶體。在第三B圖的示例中,LLC 320’是具有單獨的專用主快取記憶體330和污染緩衝器332的物理分離的快取記憶體。快取記憶體系統仍然使用來自一個或者兩個轉換階段的重用資訊以在主快取記憶體330和污染緩衝器332之間進行選擇。
其他實施例在以下的申請專利範圍內。
Claims (22)
- 一種用於管理位址轉換和快取記憶體存儲的方法,所述方法包括:回應於在從外部記憶體系統的主記憶體的物理位址空間獲取第一記憶體頁面中的資料的嘗試之後發出的分頁錯誤,從存放裝置獲取所述第一記憶體頁面;回應於在從所述外部記憶體系統的第一快取記憶體的第一快取記憶體行獲取所述第一記憶體頁面中的所述資料的嘗試之後發出的快取記憶體未命中,發出獲取所述第一記憶體頁面中的所述資料的所述嘗試;通過處理器管理位址轉換和快取記憶體存儲,所述處理器包括(1)耦合到所述外部記憶體系統的至少一個記憶體管理單元,以及(2)被配置為運行管理程式和至少一個來賓作業系統的至少一個中央處理單元,所述管理包括:從虛擬位址空間中的虛擬位址向中間物理位址空間中的中間物理位址進行轉換;從所述中間物理位址向所述主記憶體的所述物理位址空間中的物理位址進行轉換;基於存儲在記憶體頁面內的資料的快取記憶體行的估計的重用來確定用於所述記憶體頁面的重用資訊;獨立於以下各項存儲所確定的重用資訊:(1)用於指示虛擬位址的任何位元、(2)用於指示中間物理位址的任何位元、以及(3)用於指示物理位址的任何位元;以及使用所存儲的重用資訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中。
- 如申請專利範圍第1項所述的方法,其中所述第一快取記憶體 包括具有快取記憶體行的多個組的組相聯快取記憶體,快取記憶體行的每個組具有多個路。
- 如申請專利範圍第2項所述的方法,其中使用所存儲的重用資訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中包括使用所存儲的重用資訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的所述多個組中的所述多個路中的選擇的路中。
- 如申請專利範圍第3項所述的方法,其中所述多個路中的第一路被選擇以存儲在具有所述重用資訊的第一值的記憶體頁面內存儲的資料的快取記憶體行,並且所述多個路中的第二路被選擇以存儲在具有所述重用資訊的與所述第一值不同的第二值的記憶體頁面內存儲的資料的快取記憶體行。
- 如申請專利範圍第1項所述的方法,其中所述第一快取記憶體包括多個獨立的存儲區域,每個獨立的存儲區域由所述物理位址空間中的物理位址的部分定址。
- 如申請專利範圍第5項所述的方法,其中使用所存儲的重用資訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中包括使用所存儲的重用資訊將快取記憶體行存儲在所述多個獨立存儲區域的選擇的存儲區域中。
- 如申請專利範圍第1項所述的方法,其中所述重用資訊包括存儲在快取記憶體存儲在轉換後備緩衝器中的頁表條目內的一個或者多個位。
- 如申請專利範圍第1項所述的方法,其中存儲在所述記憶體頁面內的資料的快取記憶體行的所述估計的重用包括用於被嘗試從所述第一快取記憶體的對應的快取記憶體行獲取的資料塊的估計的未命中率。
- 如申請專利範圍第1項所述的方法,其中確定所述重用資訊包 括:(1)通過所述來賓作業系統確定第一重用資訊,以及(2)通過所述管理程式確定第二重用資訊。
- 如申請專利範圍第9項所述的方法,其中使用所存儲的重用資訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中包括處理所述第一重用資訊和所述第二重用資訊以及使用所述處理的結果以將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中。
- 如申請專利範圍第1項所述的方法,其中所述第一快取記憶體包括最後一級快取記憶體。
- 一種裝置,包括:存放裝置,所述存放裝置被配置為存儲包括第一記憶體頁面的記憶體頁面,所述第一記憶體頁面回應於在從物理位址空間獲取所述第一記憶體頁面中的資料的嘗試之後發出的分頁錯誤從所述存放裝置被獲取,其中從所述物理位址空間獲取所述第一記憶體頁面中的所述資料的所述嘗試回應於快取記憶體未命中而被發出;外部記憶體系統,包括:(1)主記憶體控制器,所述主記憶體控制器耦合到具有所述物理位址空間的主記憶體,以及(2)第一快取記憶體,所述第一快取記憶體被配置為存儲多個快取記憶體行並且在從所述快取記憶體行中的至少一個快取記憶體行獲取所述第一記憶體頁面中的所述資料的嘗試之後發出所述快取記憶體未命中;以及處理器,包括(1)至少一個記憶體管理單元,所述至少一個記憶體管理單元耦合到所述外部記憶體系統,以及(2)至少一個中央處理單元,至少一個中央處理單元被配置為運行管理程式和至少一個來賓作業系統;其中所述處理器被配置為:從虛擬位址空間中的虛擬位址向中間物理位址空間中的 中間物理位址進行轉換;從所述中間物理位址向所述主記憶體的所述物理位址空間中的物理位址進行轉換;基於存儲在記憶體頁面內的資料的快取記憶體行的估計的重用來確定用於所述記憶體頁面的重用資訊;獨立於以下各項存儲所確定的重用資訊:(1)用於指示虛擬位址的任何位元、(2)用於指示中間物理位址的任何位元,以及(3)用於指示物理位址的任何位元;以及使用所存儲的重用資訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中。
- 如申請專利範圍第12項所述的裝置,其中所述第一快取記憶體包括具有快取記憶體行的多個組的組相聯快取記憶體,快取記憶體行的每個組具有多個路。
- 如申請專利範圍第13項所述的裝置,其中使用所存儲的重用資訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中包括使用所存儲的重用資訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的所述多個組中的所述多個路中的選擇的路中。
- 如申請專利範圍第14項所述的裝置,其中所述多個路中的第一路被選擇以存儲在具有所述重用資訊的第一值的記憶體頁面內存儲的資料的快取記憶體行,並且所述多個路中的第二路被選擇以存儲在具有所述重用資訊的與所述第一值不同的第二值的記憶體頁面內存儲的資料的快取記憶體行。
- 如申請專利範圍第12項所述的裝置,其中所述第一快取記憶體包括多個獨立的存儲區域,每個獨立的存儲區域由所述物理位址空間中的物理位址的部分定址。
- 如申請專利範圍第16項所述的裝置,其中使用所存儲的重用資 訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中包括使用所存儲的重用資訊將快取記憶體行存儲在所述多個獨立存儲區域的選擇的存儲區域中。
- 如申請專利範圍第12項所述的裝置,其中所述重用資訊包括存儲在快取記憶體存儲在轉換後備緩衝器中的頁表條目內的一個或者多個位。
- 如申請專利範圍第12項所述的裝置,其中存儲在所述記憶體頁面內的資料的快取記憶體行的所述估計的重用包括用於被嘗試從所述第一快取記憶體的對應的快取記憶體行獲取的資料塊的估計的未命中率。
- 如申請專利範圍第12項所述的裝置,其中確定所述重用資訊包括:(1)通過所述來賓作業系統確定第一重用資訊,以及(2)通過所述管理程式確定第二重用資訊。
- 如申請專利範圍第20項所述的裝置,其中使用所存儲的重用資訊將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中包括處理所述第一重用資訊和所述第二重用資訊以及使用所述處理的結果以將快取記憶體行存儲在所述第一快取記憶體的快取記憶體行的多個群組中的選擇的群組中。
- 如申請專利範圍第12項所述的裝置,其中所述第一快取記憶體包括最後一級快取記憶體。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/638,266 | 2015-03-04 | ||
US14/638,266 US9720773B2 (en) | 2015-03-04 | 2015-03-04 | Managing reuse information in caches |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201633144A TW201633144A (zh) | 2016-09-16 |
TWI641947B true TWI641947B (zh) | 2018-11-21 |
Family
ID=56850698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104113188A TWI641947B (zh) | 2015-03-04 | 2015-04-24 | 用於管理位址轉換和快取記憶體儲存的方法及裝置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9720773B2 (zh) |
TW (1) | TWI641947B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10013360B2 (en) | 2015-03-04 | 2018-07-03 | Cavium, Inc. | Managing reuse information with multiple translation stages |
US10007614B2 (en) * | 2016-02-02 | 2018-06-26 | Cavium, Inc. | Method and apparatus for determining metric for selective caching |
US10402337B2 (en) | 2017-08-03 | 2019-09-03 | Micron Technology, Inc. | Cache filter |
US10606752B2 (en) | 2017-11-06 | 2020-03-31 | Samsung Electronics Co., Ltd. | Coordinated cache management policy for an exclusive cache hierarchy |
US11113207B2 (en) * | 2018-12-26 | 2021-09-07 | Samsung Electronics Co., Ltd. | Bypass predictor for an exclusive last-level cache |
US11609858B2 (en) * | 2018-12-26 | 2023-03-21 | Samsung Electronics Co., Ltd. | Bypass predictor for an exclusive last-level cache |
US20240045805A1 (en) * | 2021-01-20 | 2024-02-08 | Alibaba Group Holding Limited | Core-aware caching systems and methods for multicore processors |
US20240111674A1 (en) * | 2022-09-29 | 2024-04-04 | Advanced Micro Devices, Inc. | Data Reuse Cache |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201428482A (zh) * | 2010-12-22 | 2014-07-16 | Via Tech Inc | 多核心微處理器之共享電源的分散式管理 |
TW201432562A (zh) * | 2007-08-10 | 2014-08-16 | Kernelon Silicon Inc | 虛擬佇列處理電路及工作處理裝置 |
US8838914B2 (en) * | 2009-03-27 | 2014-09-16 | Vmware, Inc. | Virtualization system using hardware assistance for shadow page table coherence |
US20140304475A1 (en) * | 2011-12-20 | 2014-10-09 | Raj K Ramanujan | Dynamic partial power down of memory-side cache in a 2-level memory hierarchy |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5737751A (en) | 1996-03-26 | 1998-04-07 | Intellectual Business Machines Corporation | Cache memory management system having reduced reloads to a second level cache for enhanced memory performance in a data processing system |
US6370622B1 (en) | 1998-11-20 | 2002-04-09 | Massachusetts Institute Of Technology | Method and apparatus for curious and column caching |
US7010633B2 (en) * | 2003-04-10 | 2006-03-07 | International Business Machines Corporation | Apparatus, system and method for controlling access to facilities based on usage classes |
US7461210B1 (en) | 2006-04-14 | 2008-12-02 | Tilera Corporation | Managing set associative cache memory according to entry type |
US8706979B2 (en) | 2007-12-30 | 2014-04-22 | Intel Corporation | Code reuse and locality hinting |
US9032398B2 (en) | 2010-07-12 | 2015-05-12 | Vmware, Inc. | Online classification of memory pages based on activity level represented by one or more bits |
US9063866B1 (en) | 2010-07-12 | 2015-06-23 | Vmware, Inc. | Page table data structure for online classification of memory pages based on activity level |
US8694728B2 (en) | 2010-11-09 | 2014-04-08 | Vmware, Inc. | Efficient online construction of miss rate curves |
US8972985B2 (en) | 2012-05-25 | 2015-03-03 | Verizon Patent And Licensing Inc. | Hypervisor-based stack pre-fetch cache |
US9208103B2 (en) * | 2013-09-26 | 2015-12-08 | Cavium, Inc. | Translation bypass in multi-stage address translation |
US9501422B2 (en) | 2014-06-11 | 2016-11-22 | Vmware, Inc. | Identification of low-activity large memory pages |
US20160259732A1 (en) | 2015-03-04 | 2016-09-08 | Cavium, Inc. | Managing reuse information for memory pages |
US10013360B2 (en) | 2015-03-04 | 2018-07-03 | Cavium, Inc. | Managing reuse information with multiple translation stages |
-
2015
- 2015-03-04 US US14/638,266 patent/US9720773B2/en active Active
- 2015-04-24 TW TW104113188A patent/TWI641947B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201432562A (zh) * | 2007-08-10 | 2014-08-16 | Kernelon Silicon Inc | 虛擬佇列處理電路及工作處理裝置 |
US8838914B2 (en) * | 2009-03-27 | 2014-09-16 | Vmware, Inc. | Virtualization system using hardware assistance for shadow page table coherence |
TW201428482A (zh) * | 2010-12-22 | 2014-07-16 | Via Tech Inc | 多核心微處理器之共享電源的分散式管理 |
US20140304475A1 (en) * | 2011-12-20 | 2014-10-09 | Raj K Ramanujan | Dynamic partial power down of memory-side cache in a 2-level memory hierarchy |
Also Published As
Publication number | Publication date |
---|---|
TW201633144A (zh) | 2016-09-16 |
US9720773B2 (en) | 2017-08-01 |
US20160259689A1 (en) | 2016-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI641947B (zh) | 用於管理位址轉換和快取記憶體儲存的方法及裝置 | |
US9465748B2 (en) | Instruction fetch translation lookaside buffer management to support host and guest O/S translations | |
US10802987B2 (en) | Computer processor employing cache memory storing backless cache lines | |
TW201633145A (zh) | 管理用於記憶體頁面的重用資訊 | |
KR101575827B1 (ko) | 주변장치 상호연결에서 i/o 및 계산 오프로드 디바이스들을 위해 2-레벨 어드레스 변환을 사용하는 iommu | |
US9747221B2 (en) | Dynamic pinning of virtual pages shared between different type processors of a heterogeneous computing platform | |
US8386745B2 (en) | I/O memory management unit including multilevel address translation for I/O and computation offload | |
US8028341B2 (en) | Providing extended memory protection | |
US8316211B2 (en) | Generating multiple address space identifiers per virtual machine to switch between protected micro-contexts | |
US10013360B2 (en) | Managing reuse information with multiple translation stages | |
US20130339659A1 (en) | Managing accessing page table entries | |
US9772943B1 (en) | Managing synonyms in virtual-address caches | |
TWI648625B (zh) | 管理位址獨立的頁面屬性 | |
JP5583274B2 (ja) | コンピュータ・メモリを管理する方法、対応するコンピュータ・プログラム製品、およびそのためのデータ・ストレージ・デバイス | |
US20090172343A1 (en) | Using a translation lookaside buffer to manage protected micro-contexts | |
US10459852B1 (en) | Memory utilization analysis for memory management systems | |
US20190205261A1 (en) | Systems, methods, and apparatuses for patching pages | |
US9836405B2 (en) | Dynamic management of virtual memory blocks exempted from cache memory access |