TW201633137A - 利用多個轉譯階段管理重用資訊 - Google Patents
利用多個轉譯階段管理重用資訊 Download PDFInfo
- Publication number
- TW201633137A TW201633137A TW104113189A TW104113189A TW201633137A TW 201633137 A TW201633137 A TW 201633137A TW 104113189 A TW104113189 A TW 104113189A TW 104113189 A TW104113189 A TW 104113189A TW 201633137 A TW201633137 A TW 201633137A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- cache
- physical address
- reuse
- access level
- Prior art date
Links
Classifications
-
- 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/1009—Address translation using page tables, e.g. page table structures
-
- 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]
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
- 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/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- 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/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
使用處理器管理位址轉譯和快取記憶體存儲,該處理器包括至少一個CPU,該至少一個CPU被配置為在第一存取級處運行管理程式並且在第二存取級處運行至少一個來賓作業系統。管理包括:在第二存取級處,從虛擬位址向中間物理位址進行轉譯;在第二存取級處,基於存儲在虛擬位址空間內的資料的估計的重用來決定用於虛擬位址的範圍的重用資訊;在第一存取級處,從中間物理位址向物理位址進行轉譯;在第一存取級處,基於存儲在中間物理位址空間內的資料的估計的重用來決定用於中間物理位址的範圍的重用資訊;以及處理在不同存取級處決定的重用資訊以將快取記憶體行存儲在第一快取記憶體的選擇的部分中。
Description
本發明涉及利用多個轉譯階段管理重用資訊。
很多現代處理器支援具有多級快取記憶體的分層快取記憶體系統,多級快取記憶體包括在處理器內或者在多核處理器的每個核心內的一級或者多級,以及在處理器或者核心外部的一級或者多級,一直到就在主記憶體被存取之前被存取的最後一級快取記憶體(LLC)。在層次結構的每級處,快取記憶體存儲資料的子集的副本以相對於較高級快取記憶體的速度(或者相對於用於LLC的主記憶體的速度)加速通過處理器對該資料的存取。較低級快取記憶體更靠近處理器(或者核心),而較高級快取記憶體更遠離處理器(或者核心)。LLC通常由多核處理器的核心中的全部核心共用。在每級處,快取記憶體系統將以‘快取列(即快取記憶體行,cache line)’(也稱為‘快取塊’(cache block))為單位把資料塊載入到條目中並且從條目中逐出資料塊。每個快取列包括若干‘字(words)’的資料,每個字由預定數目的位元組構成。每個快取記憶體條目包括用於存儲特定快取列的資料字和用於標籤(其包含位址的若干最高有效位,其對於該條目的字是共同的)的位的空間和用於其他資訊(例如,有效的位元和任何標記(flag)或者錯誤校正碼位元)的空間。對於組相聯快取記憶體,在比較所期望的資料的記憶體位址的標籤部分之前,快取記憶體系統比較位址的索引部分以決定包含該資料的快取列可以被存儲在多個組中的哪個組中。對於N路(N-way)組相聯快取記憶體,
標籤比較被執行N次(有可能並行地),針對其中可以存儲包含資料的快取列的N‘路’中的每一路執行一次。地址的最低序的位(也稱為‘塊偏移’)被用於從在快取記憶體中找到(即,‘快取記憶體命中’(cache hit))的快取列中選擇特定字。如果快取列未在快取記憶體中找到(即,‘快取記憶體未命中(cache miss)’),則快取記憶體系統嘗試從更高級快取記憶體中或者從主記憶體(在LLC的情況下)中獲取快取列。
在包括快取記憶體的計算系統的操作中可能出現的一個問題被稱為“快取記憶體污染”,其中具有較低再使用性的快取列代替具有較高再使用性的快取列。再使用性指特定快取列中的資料在被載入到快取記憶體中之後並且在被逐出之前將被再次存取的可能性。一種用於減輕該快取記憶體污染問題的方案是使用‘污染緩衝器’,污染緩衝器是快取記憶體的一部分,用於存儲具有低再使用性的快取列,為具有高再使用性的快取列保留大部分的快取記憶體。例如,使用‘頁面著色’,虛擬位址的特定部分可以與特定‘顏色’相關聯,使得具有不同顏色的虛擬位址被保證不在快取記憶體中重疊(例如,通過將每個顏色限制到組相聯快取記憶體的一個或者多個組)。在一些虛擬化方案中,頁面著色已經被用於減輕快取記憶體污染。
在一個方面,總體上講,一種用於管理位址轉譯和快取記憶體存儲的方法包括:回應於在從外部記憶體系統的主記憶體的物理位址空間獲取第一記憶體頁面中的資料的嘗試之後發出的分頁錯誤,從存放裝置獲取第一記憶體頁面;回應於在從外部記憶體系統的第一快取記憶體的第一快取記憶體行獲取第一記憶體頁面中的資料的嘗試之後發出的快取記憶體未命中,發出獲取第一記憶體頁面中的資料的嘗試;通過處理器管理位址轉譯和快取記憶體存儲,該處理器包括(1)耦合到外部記憶體系統的至少一個記憶體管理單元,以及(2)被配置為在第一存取級處運行管理
程式並且在第二存取級處運行至少一個來賓作業系統的至少一個中央處理單元。管理包括:在第二存取級處,從虛擬位址空間中的虛擬位址向中間物理位址空間中的中間物理位址進行轉譯;在第二存取級處,基於存儲在虛擬位址空間內的資料的估計的重用來決定用於虛擬位址空間中的虛擬位址的範圍的重用資訊;在第一存取級處,從中間物理位址向主記憶體的物理位址空間中的物理位址進行轉譯;在第一存取級處,基於存儲在中間物理位址空間內的資料的估計的重用來決定用於中間物理位址空間中的中間物理位址的範圍的重用資訊;以及處理在不同存取級處決定的重用資訊以將快取記憶體行存儲在第一快取記憶體的選擇的部分中。
在另一方面,總體上講,一種裝置包括:存放裝置,該存放裝置被配置為存儲包括第一記憶體頁面的記憶體頁面,該第一記憶體頁面回應於在從物理位址空間獲取第一記憶體頁面中的資料的嘗試之後發出的分頁錯誤而從存放裝置被獲取,其中從物理位址空間獲取第一記憶體頁面中的資料的嘗試回應於快取記憶體未命中而被發出;外部記憶體系統,包括:(1)主記憶體控制器,該主記憶體控制器耦合到具有物理位址空間的主記憶體,以及(2)第一快取記憶體,該第一快取記憶體被配置為存儲多個快取記憶體行並且在從快取列中的至少一個快取列獲取第一記憶體頁面中的資料的嘗試之後發出快取記憶體未命中;以及處理器,包括(1)至少一個記憶體管理單元,該至少一個記憶體管理單元耦合到外部記憶體系統,以及(2)至少一個中央處理單元,該至少一個中央處理單元被配置為在第一存取級處運行管理程式並且在第二存取級處運行至少一個來賓作業系統。處理器被配置為:在第二存取級處,從虛擬位址空間中的虛擬位址向中間物理空間中的中間物理位址進行轉譯;在第二存取級處,基於存儲在虛擬位址空間內的資料的估計的重用來決定用於虛擬位址空間中的虛擬位址的範圍的重用資訊;在第一存取級處,從中間物理位址向主記憶體的物理位址空間中的物理位址進行轉譯;在第一存取級
處,基於存儲在中間物理位址空間內的資料的估計的重用來決定用於中間物理位址空間中的中間物理位址的範圍的重用資訊;以及處理在不同存取級處決定的重用資訊以將快取列存儲在第一快取記憶體的選擇的部分中。
多方面可以包括以下特徵中的一個或者多個特徵。
處理在不同存取級處決定的重用資訊包括基於在第一存取級處決定的第一重用資訊和在第二存取級處決定的第二重用資訊中的一個或者兩個的內容來在第一重用資訊和第二重用資訊之間進行選擇。
處理在不同存取級處決定的重用資訊包括根據預定函數組合在第一存取級處決定的第一重用資訊和在第二存取級處決定的第二重用資訊。
針對其決定重用資訊的虛擬位址的範圍中的每個虛擬位址的範圍由具有共同的虛擬頁號的虛擬位址組成;並且針對其決定重用資訊的中間物理位址的範圍中的每個中間物理位址的範圍由具有共同的中間物理頁號的中間物理位址組成。
第一存取級具有比第二存取級更高的許可權(privilege)。
中央處理單元被配置為在具有比第一存取級更高的許可權的第三安全級處管理用於主記憶體的物理位址空間中的物理位址的安全性。
處理不同存取級處決定的重用資訊以將快取列存儲在第一快取記憶體的選擇的部分中包括處理在三個或者更多不同的存取級處決定的重用資訊。
存儲在虛擬位址空間內的資料的估計的重用和存儲在中間物理位址空間內的資料的估計的重用,包括用於被嘗試從第一快取記憶體的對應的快取列獲取的資料塊的估計的未命中率。
用於虛擬位址的範圍的重用資訊獨立於以下各項而被存儲:(1)用於指示虛擬位址的任何位元,以及(2)用於指示中間物理位址的任何位元。
用於中間物理位址的範圍的重用資訊獨立於以下各項而被存儲:(1)用於指示中間物理位址的任何位元,以及(2)用於指示物理位址的任何位元。
第一快取記憶體包括最後一級快取記憶體。
多方面可以具有以下優點中的一個或者多個優點。
通過存儲定量地表徵記憶體位址的特定範圍的再使用性的顯式重用資訊,一級或者多級的位址轉譯可以被執行,而無需使用頁面著色或者減輕快取記憶體污染的其他技術的特殊位址的分配。例如,一種估計再使用性的方式是通過測量針對位址空間的特定部分(例如,按照記憶體頁面的細微性,其包含很多快取列)的過往快取記憶體未命中。
在來賓作業系統頁表和管理程式頁表二者中存儲重用資訊使得重用資訊能夠在兩個存取級處是可存取的。處理在不同存取級處決定的重用資訊以選擇在最後一級快取記憶體中的哪個部分(例如,在哪一‘路’)存儲特定快取列使得能夠靈活地使用用於在一些場景下選擇不同的重用資訊的各種規則,或者靈活地使用用於在其他場景下組合不同的重用資訊的各種函數。
獨立於用於指示任何類型的位址(例如,虛擬位址、中間物理位址或者物理位址)的任何位元存儲重用資訊使得能夠更自由地應用重用資訊以用於減輕快取記憶體污染,而不與位址轉譯方案干擾,特別是在虛擬化系統中。
本發明的其他特徵和優點將通過下述實施方式以及申請專利範圍變得明顯。
100‧‧‧計算系統
102‧‧‧處理器
104‧‧‧流水線
106‧‧‧寄存器堆
108‧‧‧處理器記憶體系統
110‧‧‧處理器匯流排
112‧‧‧外部記憶體系統
114‧‧‧I/O橋
116‧‧‧I/O匯流排
118A-118D‧‧‧I/O設備
120‧‧‧LLC
122‧‧‧主記憶體控制器
124‧‧‧記憶體模組
200A-200D‧‧‧虛擬位址空間
202A-202D‧‧‧中間物理位址空間
204‧‧‧物理位址空間
300‧‧‧記憶體管理單元
302A-302B‧‧‧頁表
304‧‧‧轉譯後備緩衝器
306‧‧‧L1快取記憶體
308‧‧‧主記憶體
310‧‧‧PTE
312‧‧‧IPPN
314‧‧‧PPN
316‧‧‧狀態資訊
318‧‧‧重用信息
320‧‧‧LLC
322‧‧‧快取記憶體行
320’‧‧‧LLC
330‧‧‧主快取記憶體
332‧‧‧污染緩衝器
第一圖是計算系統的示意圖。
第二圖是圖示了不同級的位址空間的示意圖。
第三A圖和第三B圖是圖示了用於管理重用資訊的過程的示意圖。
不同種類的虛擬化經常被用在計算系統中。一種虛擬化是‘虛擬記憶體’,其允許被CPU執行的程式指令引用比由主記憶體的大小限定的‘物理位址空間’更大的‘虛擬位址空間’內的虛擬位址。虛擬記憶體涉及從一個或者多個這樣的虛擬位址空間到物理位址空間中的位址轉譯。使用‘頁表’執行轉譯,該‘頁表’以通常由很多快取列構成的記憶體頁面(或者簡單地‘頁面’)的細微性(granularity)來存儲虛擬位址和物理位址之間的映射。
其他種類的虛擬化涉及‘虛擬機器’(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指示‘低再使用性’並且管理程式指示‘高再使用性’,則選擇‘低再使用性’作為重用資訊。備選地,快取記憶體系統可以使用預定函數結合來自二個轉譯階段的重用資訊,潛在地導致更細粒的估計作為組合的重用資訊。不管它是來自基於規則選擇的任一轉譯階段的重用資訊
的值之一,還是它是用於組合重用資訊並且推導出可以與任一階段的重用資訊不同的得到的重用資訊的預定函數,處理可以通過存儲用於兩個階段的可能值和對應的結果之間的映射被實現。快取記憶體系統也可以決定覆寫(override)該表並且使用來自轉譯階段或者存取級中的任何轉譯階段或者存取級的重用資訊,或者基於軟體和/或硬體的某些屬性關閉污染緩衝器並且忽略重用資訊。下表是用於具有兩個階段和二進位重用資訊的系統的映射表的示例。
在一些處理器架構中,存在用於來賓OS和管理程式的存取級之外的附加的存取級。例如,可以存在用於運行在來賓OS中的使用者程式的最低許可權的存取級L0、用於來賓OS的存取級L1、用於管理程式的存取級L2和用於管理主記憶體內的安全和非安全頁面的安全系統的最高許可權存取級L3。一些實現方式可以使得每個存取級能夠維護其自身的用於頁面的重用資訊,並且快取記憶體系統可以處理來自多級的任何組合的重用資訊以決定用於存取LLC 320的最終重用資訊。
存在各種技術用於在快取記憶體的所選擇的部分中存儲快取列以便提供污染緩衝器。在第三A圖的示例中,LLC 320是四路組相聯快取記憶體。快取記憶體系統可以使用各路中的一路(例如,路4)作為用於具有‘低再使用性’的頁面上的快取記憶
體行的污染緩衝器,並且可以使用其他路(路1-3)作為用於具有‘高再使用性’的頁面上的快取列的主快取記憶體。在第三B圖的示例中,LLC 320’是具有單獨的專用主快取記憶體330和污染緩衝器332的物理分離的快取記憶體。快取記憶體系統仍然使用來自一個或者兩個轉譯階段的重用資訊以在主快取記憶體330和污染緩衝器332之間進行選擇。
其他實施例在以下的申請專利範圍內。
300‧‧‧記憶體管理單元
302A-302B‧‧‧頁表
304‧‧‧轉譯後備緩衝器
306‧‧‧L1快取記憶體
308‧‧‧主記憶體
310‧‧‧PTE
312‧‧‧IPPN
314‧‧‧PPN
316‧‧‧狀態資訊
318‧‧‧重用信息
320‧‧‧LLC
322‧‧‧快取記憶體行
Claims (22)
- 一種用於管理位址轉譯和快取記憶體存儲的方法,所述方法包括:回應於在從外部記憶體系統的主記憶體的物理位址空間獲取第一記憶體頁面中的資料的嘗試之後發出的分頁錯誤,從存放裝置獲取所述第一記憶體頁面;回應於在從所述外部記憶體系統的第一快取記憶體的第一快取列獲取所述第一記憶體頁面中的所述資料的嘗試之後發出的快取記憶體未命中,發出獲取所述第一記憶體頁面中的所述資料的所述嘗試;通過處理器管理位址轉譯和快取記憶體存儲,所述處理器包括(1)耦合到所述外部記憶體系統的至少一個記憶體管理單元,以及(2)被配置為在第一存取級處運行管理程式並且在第二存取級處運行至少一個來賓作業系統的至少一個中央處理單元,所述管理包括:在所述第二存取級處,從虛擬位址空間中的虛擬位址向中間物理位址空間中的中間物理位址進行轉譯;在所述第二存取級處,基於存儲在所述虛擬位址空間內的資料的估計的重用來決定用於所述虛擬位址空間中的虛擬位址的範圍的重用資訊;在所述第一存取級處,從所述中間物理位址向所述主記 憶體的所述物理位址空間中的物理位址進行轉譯;在所述第一存取級處,基於存儲在所述中間物理位址空間內的資料的估計的重用來決定用於所述中間物理位址空間中的中間物理位址的範圍的重用資訊;以及處理在不同存取級處決定的重用資訊以將快取列存儲在所述第一快取記憶體的選擇的部分中。
- 如申請專利範圍第1項所述的方法,其中處理在不同存取級處決定的重用資訊包括基於在所述第一存取級處決定的第一重用資訊和在所述第二存取級處決定的第二重用資訊中的一個或者兩個的內容來在所述第一重用資訊和所述第二重用資訊之間進行選擇。
- 如申請專利範圍第1項所述的方法,其中處理在不同存取級處決定的重用資訊包括根據預定函數組合在所述第一存取級處決定的第一重用資訊和在所述第二存取級處決定的第二重用資訊。
- 如申請專利範圍第1項所述的方法,其中針對其決定重用資訊的所述虛擬位址的範圍中的每個虛擬位址的範圍由具有共同的虛擬頁號的虛擬位址組成;並且針對其決定重用資訊的所述中間物理位址的範圍中的每個中間物理位址的範圍由具有共同的中間物理頁號的中間物理位址組成。
- 如申請專利範圍第1項所述的方法,其中所述第一存取級具有比所述第二存取級更高的許可權。
- 如申請專利範圍第5項所述的方法,其中所述中央處理單元被配置為,在具有比所述第一存取級更高的許可權的第三安全級處,管理用於所述主記憶體的所述物理位址空間中的物理位址的安全性。
- 如申請專利範圍第6項所述的方法,其中處理在不同的存取級處決定的重用資訊以將快取列存儲在所述第一快取記憶體的選擇的部分中包括處理在三個或者更多不同的存取級處決定的重用資訊。
- 如申請專利範圍第1項所述的方法,其中存儲在所述虛擬位址空間內的資料的所述估計的重用和存儲在所述中間物理位址空間內的資料的所述估計的重用包括用於被嘗試從所述第一快取記憶體的對應的快取列獲取的資料塊的估計的未命中率。
- 如申請專利範圍第1項所述的方法,其中用於虛擬位址的範圍的所述重用資訊獨立於以下各項而被存儲:(1)用於指示虛擬位址的任何位元,以及(2)用於指示中間物理位址的任何位元。
- 如申請專利範圍第1項所述的方法,其中用於中間物理位址的範圍的所述重用資訊獨立於以下各項而被存儲:(1)用於指示中間物理位址的任何位元,以及(2)用於指示物理位址的任何位元。
- 如申請專利範圍第1項所述的方法,其中所述第一快取記憶體包括最後一級快取記憶體。
- 一種裝置,包括: 存放裝置,所述存放裝置被配置為存儲包括第一記憶體頁面的記憶體頁面,所述第一記憶體頁面為回應於在從物理位址空間獲取所述第一記憶體頁面中的資料的嘗試之後發出的分頁錯誤而從所述存放裝置被獲取,其中從所述物理位址空間獲取所述第一記憶體頁面中的所述資料的所述嘗試被發出以回應於快取記憶體未命中;外部記憶體系統,包括:(1)主記憶體控制器,所述主記憶體控制器耦合到具有所述物理位址空間的主記憶體,以及(2)第一快取記憶體,所述第一快取記憶體被配置為存儲多個快取列,並且在從所述快取列中的至少一個快取列獲取所述第一記憶體頁面中的所述資料的嘗試之後發出所述快取記憶體未命中;以及處理器,包括(1)至少一個記憶體管理單元,所述至少一個記憶體管理單元耦合到所述外部記憶體系統,以及(2)至少一個中央處理單元,所述至少一個中央處理單元被配置為在第一存取級處運行管理程式並且在第二存取級處運行至少一個來賓作業系統;其中所述處理器被配置為:在所述第二存取級處,從虛擬位址空間中的虛擬位址向中間物理空間中的中間物理位址進行轉譯;在所述第二存取級處,基於存儲在所述虛擬位址空間內的資料的估計的重用來決定用於所述虛擬位址空間中的虛擬位址的範圍的重用資訊; 在所述第一存取級處,從所述中間物理位址向所述主記憶體的所述物理位址空間中的物理位址進行轉譯;在所述第一存取級處,基於存儲在所述中間物理位址空間內的資料的估計的重用來決定用於所述中間物理位址空間中的中間物理位址的範圍的重用資訊;以及處理在不同存取級處決定的重用資訊,以將快取列存儲在所述第一快取記憶體的選擇的部分中。
- 如申請專利範圍第12項所述的裝置,其中處理在不同存取級處決定的重用資訊包括基於在所述第一存取級處決定的第一重用資訊和在所述第二存取級處決定的第二重用資訊中的一個或者兩個的內容來在所述第一重用資訊和所述第二重用資訊之間進行選擇。
- 如申請專利範圍第12項所述的裝置,其中處理在不同存取級處決定的重用資訊包括根據預定函數組合在所述第一存取級處決定的第一重用資訊和在所述第二存取級處決定的第二重用資訊。
- 如申請專利範圍第12項所述的裝置,其中針對其決定重用資訊的所述虛擬位址的範圍中的每個虛擬位址的範圍由具有共同的虛擬頁號的虛擬位址組成;並且針對其決定重用資訊的所述中間物理位址的範圍中的每個中間物理位址的範圍由具有共同的中間物理頁號的中間物理位址組成。
- 如申請專利範圍第12項所述的裝置,其中所述第一存取 級具有比所述第二存取級更高的許可權。
- 如申請專利範圍第16項所述的裝置,其中所述中央處理單元被配置為在具有比所述第一存取級更高的許可權的第三安全級處管理用於所述主記憶體的所述物理位址空間中的物理位址的安全性。
- 如申請專利範圍第17項所述的裝置,其中處理在不同存取級處決定的重用資訊,以將快取列存儲在所述第一快取記憶體的選擇的部分中,包括處理在三個或者更多不同的存取級處決定的重用資訊。
- 如申請專利範圍第12項所述的裝置,其中存儲在所述虛擬位址空間內的資料的所述估計的重用和存儲在所述中間物理位址空間內的資料的所述估計的重用,包括用於被嘗試從所述第一快取記憶體的對應的快取列獲取的資料塊的估計的未命中率。
- 如申請專利範圍第12項所述的裝置,其中用於虛擬位址的範圍的所述重用資訊獨立於以下各項而被存儲:(1)用於指示虛擬位址的任何位元,以及(2)用於指示中間物理位址的任何位元。
- 如申請專利範圍第12項所述的裝置,其中用於中間物理位址的範圍的所述重用資訊獨立於以下各項而被存儲:(1)用於指示中間物理位址的任何位元,以及(2)用於指示物理位址的任何位元。
- 如申請專利範圍第12項所述的裝置,其中所述第一快取 記憶體包括最後一級快取記憶體。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/638,194 US10013360B2 (en) | 2015-03-04 | 2015-03-04 | Managing reuse information with multiple translation stages |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201633137A true TW201633137A (zh) | 2016-09-16 |
Family
ID=56850157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104113189A TW201633137A (zh) | 2015-03-04 | 2015-04-24 | 利用多個轉譯階段管理重用資訊 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10013360B2 (zh) |
TW (1) | TW201633137A (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9720773B2 (en) | 2015-03-04 | 2017-08-01 | Cavium, Inc. | Managing reuse information in caches |
US10271189B2 (en) | 2016-06-01 | 2019-04-23 | Essential Products, Inc. | Communication between devices and device accessories |
US10303379B2 (en) | 2017-09-25 | 2019-05-28 | International Business Machines Corporation | Efficient adaptive read-ahead in log structured storage |
US10606752B2 (en) | 2017-11-06 | 2020-03-31 | Samsung Electronics Co., Ltd. | Coordinated cache management policy for an exclusive cache hierarchy |
CN113168322A (zh) * | 2019-05-27 | 2021-07-23 | 华为技术有限公司 | 一种图形处理方法和装置 |
US11204879B2 (en) * | 2019-06-06 | 2021-12-21 | Arm Limited | Memory management circuitry managing data transactions and address translations between an upstream device and a downstream device |
Family Cites Families (19)
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 |
GB2460393B (en) * | 2008-02-29 | 2012-03-28 | Advanced Risc Mach Ltd | A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry |
US8443156B2 (en) * | 2009-03-27 | 2013-05-14 | Vmware, Inc. | Virtualization system using hardware assistance for shadow page table coherence |
US9063866B1 (en) | 2010-07-12 | 2015-06-23 | Vmware, Inc. | Page table data structure for online classification of memory pages based on activity level |
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 |
GB2483906C (en) * | 2010-09-24 | 2019-10-09 | Advanced Risc Mach Ltd | Selection of debug instruction set for debugging of a data processing apparatus |
US8694728B2 (en) | 2010-11-09 | 2014-04-08 | Vmware, Inc. | Efficient online construction of miss rate curves |
GB2510760B (en) | 2011-12-20 | 2020-05-20 | Intel Corp | Dynamic partial power down of memory-side cache in a 2-level memory hierarchy |
GB2501274B (en) * | 2012-04-17 | 2020-05-13 | Advanced Risc Mach Ltd | Management of data processing security in a secondary processor |
US8972985B2 (en) | 2012-05-25 | 2015-03-03 | Verizon Patent And Licensing Inc. | Hypervisor-based stack pre-fetch cache |
US9053065B2 (en) * | 2012-12-10 | 2015-06-09 | Vmware, Inc. | Method for restoring virtual machine state from a checkpoint file |
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 |
US9720773B2 (en) | 2015-03-04 | 2017-08-01 | Cavium, Inc. | Managing reuse information in caches |
US20160259732A1 (en) | 2015-03-04 | 2016-09-08 | Cavium, Inc. | Managing reuse information for memory pages |
-
2015
- 2015-03-04 US US14/638,194 patent/US10013360B2/en active Active
- 2015-04-24 TW TW104113189A patent/TW201633137A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US20160259734A1 (en) | 2016-09-08 |
US10013360B2 (en) | 2018-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI641947B (zh) | 用於管理位址轉換和快取記憶體儲存的方法及裝置 | |
US20160259732A1 (en) | Managing reuse information for memory pages | |
US10802987B2 (en) | Computer processor employing cache memory storing backless cache lines | |
KR101575827B1 (ko) | 주변장치 상호연결에서 i/o 및 계산 오프로드 디바이스들을 위해 2-레벨 어드레스 변환을 사용하는 iommu | |
US9092359B2 (en) | Identification and consolidation of page table entries | |
US8028341B2 (en) | Providing extended memory protection | |
US8316211B2 (en) | Generating multiple address space identifiers per virtual machine to switch between protected micro-contexts | |
US9465748B2 (en) | Instruction fetch translation lookaside buffer management to support host and guest O/S translations | |
US8386745B2 (en) | I/O memory management unit including multilevel address translation for I/O and computation offload | |
US9772962B2 (en) | Memory sharing for direct memory access by a device assigned to a guest operating system | |
US10013360B2 (en) | Managing reuse information with multiple translation stages | |
US10255069B2 (en) | Cleared memory indicator | |
US9772943B1 (en) | Managing synonyms in virtual-address caches | |
US20090172341A1 (en) | Using a memory address translation structure to manage protected micro-contexts | |
US20090172343A1 (en) | Using a translation lookaside buffer to manage protected micro-contexts | |
JP5583274B2 (ja) | コンピュータ・メモリを管理する方法、対応するコンピュータ・プログラム製品、およびそのためのデータ・ストレージ・デバイス | |
TWI648625B (zh) | 管理位址獨立的頁面屬性 | |
US20170003893A1 (en) | Memory state indicator | |
US9740628B2 (en) | Page table entry consolidation |