TW202340931A - 具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取 - Google Patents

具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取 Download PDF

Info

Publication number
TW202340931A
TW202340931A TW112104542A TW112104542A TW202340931A TW 202340931 A TW202340931 A TW 202340931A TW 112104542 A TW112104542 A TW 112104542A TW 112104542 A TW112104542 A TW 112104542A TW 202340931 A TW202340931 A TW 202340931A
Authority
TW
Taiwan
Prior art keywords
memory
address range
swappable
size
conflict
Prior art date
Application number
TW112104542A
Other languages
English (en)
Inventor
愛胥瓦 阿佳沃
依孚堅利 貝克
麗莎如芬 徐
Original Assignee
美商微軟技術授權有限責任公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/735,767 external-priority patent/US11860783B2/en
Application filed by 美商微軟技術授權有限責任公司 filed Critical 美商微軟技術授權有限責任公司
Publication of TW202340931A publication Critical patent/TW202340931A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual 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)
  • Storage Device Security (AREA)

Abstract

描述關於具有雜訊鄰居緩解及動態位址範圍指派之直接交換快取的系統及方法。系統包括主機作業系統(OS),其經配置以支援與計算節點相關聯之第一組租戶,其中主機OS可以存取:(1)與近記憶體相關聯之第一可交換記憶體位址範圍及(2)與遠記憶體相關聯之第二可交換記憶體位址範圍。主機OS經配置而以粒度方式分配記憶體,以使得對租戶之每次記憶體分配包括對應於具有衝突集大小之衝突集的記憶體位址。衝突集包括與關於近記憶體之第一可交換記憶體位址範圍相關聯的第一衝突區域,及與關於遠記憶體之第二可交換記憶體位址範圍相關聯的第二衝突區域。

Description

具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取
本申請案主張2022年3月11日提交之題為「具有雜訊鄰居緩解及動態位址範圍指派的直接交換快取(DIRECT SWAP CACHING WITH NOISY NEIGHBOR MITIGATION AND DYNAMIC ADDRESS RANGE ASSIGNMENT)」之美國臨時申請案第63/319,109號的權益,該案之全部內容據此以引用方式併入本文中。
本揭示案係關於具有雜訊鄰居緩解及動態位址範圍指派之直接交換快取。
多個租戶可共享系統,包括計算系統及通訊系統。計算系統可包括公共雲端、私有雲端或具有公共部分及私有部分之混合雲端。公共雲端包括執行多種功能之全球伺服器網路,包括儲存及管理資料、運行應用程式,及交付內容或服務,諸如,串流媒體視訊、供應電子郵件、提供辦公生產力軟體或處理社交媒體。伺服器及其他部件可能位於世界各地之資料中心中。雖然公共雲端經由網際網路向公眾提供服務,但企業可使用私有雲端或混合雲端。私有及混合雲端亦包括被容納在資料中心中之伺服器網路。
多個租戶可使用與雲端中之伺服器相關聯之計算、儲存及網路連接資源。可使用安裝在資料中心中之計算節點(例如,伺服器)上的主機作業系統(operating system; OS)來供應計算、儲存及網路連接資源。每一主機OS可允許多個租戶(諸如,虛擬機)存取與相應計算節點相關聯之計算及記憶體資源。可為每個租戶分配一定量的記憶體,反映一定數目的快取行。在一些情況下,可將近記憶體(例如,DRAM)中之衝突的快取行分配給不同租戶。此可導致一租戶之活動給另一租戶帶來問題,包括減少記憶體頻寬及容量。
在一個實例中,本揭示案係關於包括提供對近記憶體及遠記憶體的存取之計算節點的系統。該系統可進一步包括主機作業系統(OS),其經配置以支援與計算節點相關聯之第一組租戶,其中該主機OS可以存取:(1)與近記憶體相關聯之第一可交換記憶體位址範圍及(2)與遠記憶體相關聯之第二可交換記憶體位址範圍,以允許在近記憶體與遠記憶體之間交換快取行。該系統可進一步包括主機OS經配置而以粒度方式向第一組租戶中之任一者分配記憶體,以使得向租戶之每次記憶體分配包括對應於具有衝突集大小之衝突集的記憶體位址。該衝突集可包括與相關聯於近記憶體之第一可交換記憶體位址範圍相關聯的第一衝突區域,及與相關聯於遠記憶體之第二可交換記憶體位址範圍相關聯的第二衝突區域,且其中第一衝突區域及第二衝突區域中之每一者具有相同大小,該大小經選擇而等於或小於衝突集大小的一半。
另外,本揭示案係關於一種包括為計算節點供應近記憶體及遠記憶體之方法。該方法可進一步包括向主機作業系統(OS)(其經配置以支援與計算節點相關聯之第一組租戶)授權對如下各者之存取:(1)與近記憶體相關聯之第一可交換記憶體位址範圍及(2)與遠記憶體相關聯之第二可交換記憶體位址範圍,以允許在近記憶體與遠記憶體之間交換快取行。該方法可進一步包括以粒度方式向第一組租戶中之任一者分配記憶體,以使得向租戶之每次記憶體分配包括對應於具有衝突集大小之衝突集的記憶體位址。該衝突集可包括與相關聯於近記憶體之第一可交換記憶體位址範圍相關聯的第一衝突區域,及與相關聯於遠記憶體之第二可交換記憶體位址範圍相關聯的第二衝突區域,且其中第一衝突區域及第二衝突區域中之每一者具有相同大小,該大小經選擇而等於或小於衝突集大小的一半。
另外,本揭示案係關於一種包括為計算節點供應近記憶體及遠記憶體之方法,其中與計算節點相關聯之主機作業系統(OS)被授權存取第一系統位址映射配置及與該第一系統位址映射配置不同之第二系統位址映射配置。該方法可進一步包括向主機OS(其經配置以支援第一組租戶)授權存取與近記憶體相關聯之第一不可交換位址範圍。
該方法可進一步包括向主機OS(其經配置以支援與第一組租戶不同之第二組租戶)授權對如下各者之存取:(1)與近記憶體相關聯之第一可交換位址範圍及(2)與遠記憶體相關聯之第二可交換位址範圍,以允許在近記憶體與遠記憶體之間交換快取行。該方法可進一步包括藉由自第一系統位址映射配置切換至第二系統位址映射配置來增加第一不可交換位址範圍之大小。
提供本發明內容以便以簡化形式介紹一系列概念,以下在實施方式中更詳細描述該等概念。此發明內容並不意欲識別所主張標的之關鍵特徵或基本特徵,亦不意欲用以限制所主張標的之範疇。
本揭示案中所述實例係關於用於具有雜訊鄰居緩解及動態位址範圍指派之直接交換快取的系統及方法。某些實例係關於利用直接交換快取以與計算系統或多租戶計算系統中之主機作業系統(OS)一起使用。多租戶計算系統可為公共雲端、私有雲端或混合雲端。公共雲端包括執行多種功能之全球伺服器網路,包括儲存及管理資料、運行應用程式,及交付內容或服務,諸如,串流媒體視訊、電子郵件、辦公生產力軟體或社交媒體。伺服器及其他部件可能位於世界各地之資料中心中。雖然公共雲端經由網際網路向公眾提供服務,但企業可使用私有雲端或混合雲端。私有及混合雲端亦包括被容納在資料中心中之伺服器網路。可使用資料中心之計算及記憶體資源來執行計算實體。如本文中所使用,術語「計算實體」涵蓋但不限於為無伺服器計算實施功能、虛擬機、應用程式、服務、微服務、容器或單核之任何可執行代碼(呈硬體、韌體、軟體之形式,或為前述各者之任何組合)。或者,計算實體可在與邊緣計算設備、本地伺服器或其他類型的系統(包括通訊系統,諸如,基地台(例如,5G或6G基地台))相關聯之硬體上執行。
與本揭示案之實例一致,主機OS可具有對近記憶體(例如,局部DRAM)及遠記憶體(例如,自近記憶體移除至少一個層級之池化記憶體或非池化記憶體)的已分配部分之組合的存取。遠記憶體可與包括由多個計算節點共享的任何實體記憶體之記憶體有關。作為實例,近記憶體可對應於以較高資料速率操作之雙資料速率(double data rate; DDR)動態隨機存取記憶體(dynamic random access memory; DRAM)(例如,DDR2 DRAM、DDR3 DRAM、DDR4 DRAM或DDR5 DRAM),且遠記憶體可對應於以較低資料速率操作之DRAM(例如,DRAM或DDR DRAM)。其他成本差異可能為可靠性之函數或與近記憶體對比遠記憶體相關聯之其他品質差異。如本文中所使用,術語「近記憶體」及「遠記憶體」係以相對術語來看待。因此,近記憶體包括用於儲存自與CPU相關聯之(若干)系統級快取記憶體中逐出的任何資料或指令之任何記憶體,且遠記憶體包括用於儲存自近記憶體換出的任何資料或指令之任何記憶體。近記憶體與遠記憶體之間的另一區別與CPU與記憶體之間的實體鏈路之相對數目有關。作為實例,假設近記憶體係經由近記憶體控制器耦接,因此距CPU有至少一條實體鏈路,遠記憶體耦接至遠記憶體控制器,該遠記憶體控制器距該CPU有至少多一條實體鏈路。
第1圖為根據一個實例之包括與遠記憶體系統180耦接的計算節點110、140及170之系統100的方塊圖。每一計算節點可包括計算及記憶體資源。作為實例,計算節點110可包括中央處理單元(central processing unit; CPU)112;計算節點140可包括CPU 142;且計算節點170可包括CPU 172。儘管第1圖中之每個計算節點被示為具有單個CPU,但每個計算節點可包括額外CPU及其他裝置,諸如,圖形處理器單元(graphics processor unit; GPU)、現場可程式化閘陣列(field programmable gate array; FPGA)、特殊應用積體電路(application specific integrated circuit; ASIC)或其他裝置。另外,每個計算節點可包括近記憶體,其可被組織成為記憶體模組。作為實例,計算節點110可包括記憶體模組122、124、126、128、130及132。計算節點140可包括記憶體模組152、154、156、158、160及162。計算節點170可包括記憶體模組182、184、186、188、190及192。此些記憶體模組之實例包括但不限於雙列直插式記憶體模組(dual-in-line memory module; DIMM)或單列直插式記憶體模組(single-in-line memory module; SIMM)。此些模組中所包括之記憶體可為動態隨機存取記憶體(DRAM)、快閃記憶體、靜態隨機存取記憶體(static random access memory; SRAM)、相變記憶體、磁性隨機存取記憶體,或可允許記憶體充當局部記憶體之任何其他類型的記憶體技術。
繼續參考第1圖,每個計算節點可包括一或更多個記憶體控制器。作為實例,計算節點110可包括記憶體控制器118,計算節點140可包括記憶體控制器148,且計算節點170可包括記憶體控制器178。在記憶體模組包括雙動態速率(DDR)DRAM之情形下,此些節點中所包括之記憶體控制器可為DDR DRAM控制器。每個計算節點可經配置以執行若干計算實體。在此實例中,計算節點110可具有安裝於其上之主機OS 114;計算節點140可具有安裝於其上之主機OS 144;且計算節點170可具有安裝於其上之主機OS 174。遠記憶體系統180可包括池化記憶體(或非池化記憶體),其可包括若干記憶體模組。此些記憶體模組之實例包括但不限於雙列直插式記憶體模組(DIMM)或單列直插式記憶體模組(SIMM)。此些模組中所包括之記憶體可為動態隨機存取記憶體(DRAM)、快閃記憶體、靜態隨機存取記憶體(SRAM)、相變記憶體、磁性隨機存取記憶體,或可允許記憶體充當遠記憶體之任何其他類型的記憶體技術。
由計算節點(例如,計算節點110、140或170)中之任一者執行的主機OS(例如,主機OS 114、144或174)中之任一者可存取作為遠記憶體系統180的一部分被包括在內之實體記憶體的至少一部分。當計算節點通電或作為分配/撤銷分配操作的一部分時,可將來自遠記憶體系統180之記憶體的一部分分配至計算節點。被指派部分可包括一或更多個記憶體「切片」,其中切片代表由遠記憶體控制器管理之任何最小粒度的記憶體部分(例如,記憶體頁或與切片大小對準之任何其他記憶體區塊)。記憶體切片一次至多被分配給僅一個主機。可使用任何適當的切片大小,包括1GB切片、2GB切片、8GB切片或任何其他適當的切片大小。遠記憶體控制器可基於與遠記憶體系統180相關聯之指派/撤銷策略來指派或撤銷將切片指派給計算節點。如早先所解釋,與主機OS相關聯之資料/指令可自遠記憶體換入近記憶體/自近記憶體換出至遠記憶體。
在一個實例中,計算節點110、140及170可為資料中心的一部分。如本揭示案中所使用,術語資料中心可包括但不限於雲端服務提供商所擁有之一些或所有資料中心、雲端服務提供商所擁有並操作之一些或所有資料中心、雲端服務提供商所擁有之由服務提供商的消費者操作之一些或所有資料中心、資料中心之任何其他組合、單個資料中心,或甚至特定資料中心中之一些群集。在一個實例中,每個群集可包括若干等同計算節點。因此,群集可包括包含特定數目個CPU核心及特定量的記憶體之計算節點。亦可使用其他類型之硬體,諸如,邊緣計算設備、本地伺服器或其他類型之系統,包括通訊系統,諸如,基地台(例如,5G或6G基地台),而不使用計算節點。儘管第1圖將系統100示為具有以特定方式佈置之特定數目個部件(包括計算節點及記憶體部件),但系統100可包括以不同方式佈置之額外或更少部件。
第2圖示出對應於第1圖中所示的遠記憶體系統180之實例遠記憶體系統200的方塊圖。遠記憶體系統200可包括交換機202,其用於將遠記憶體系統控制器耦接至計算節點(例如,第1圖之計算節點110、130及150)。遠記憶體系統200可進一步包括若干遠記憶體控制器及相關聯之遠記憶體模組。作為實例,如第2圖中所示,遠記憶體系統200可包括耦接至交換機202之遠記憶體控制器(far memory controller; FMC)210、FMC 220、FMC 230、FMC 240、FMC 250及FMC 260。FMC 210、FMC 220、FMC 230、FMC 240、FMC 250及FMC 260中之每一者可進一步耦接至組構管理器280。FMC 210可進一步耦接至記憶體模組212、214、216及218。FMC 220可進一步耦接至記憶體模組222、224、226及228。FMC 230可進一步耦接至記憶體模組232、234、236及238。FMC 240可進一步耦接至記憶體模組242、244、246及248。FMC 250可進一步耦接至記憶體模組252、254、256及258。FMC 260可進一步耦接至記憶體模組262、264、266及268。每個記憶體模組可為雙列直插式記憶體模組(DIMM)或單列直插式記憶體模組(SIMM)。
繼續參考第2圖,在一個實例中,可將遠記憶體控制器中之每一者實施為計算快速鏈路(Compute Express Link; CXL)規範相容記憶體控制器。在此實例中,可將與遠記憶體系統200相關聯之記憶體模組中的每一者被配置為3型CXL元件。組構管理器280可經由匯流排206與資料中心控制平面290通訊。在一個實例中,可將組構管理器280實施為CXL規範相容組構管理器。自資料中心控制平面290接收到之控制資訊可包括指定在給定時間將來自遠記憶體之哪些記憶體切片分配給任何特定計算節點之控制資訊。回應於此控制資訊,組構管理器280可以分時多工方式將來自遠記憶體內之記憶體切片分配給特定計算節點。換言之,特定的記憶體切片一次僅可被分配給特定計算節點且不會分配給其他計算節點。作為此實例的一部分,與基於PCIe的非同調I/O協定之CXL.io協定相關聯的異動可用以配置記憶體元件以及CPU與遠記憶體系統200中所包括的記憶體模組之間的鏈路。CXL.io協定亦可由與設備發現、枚舉、錯誤報告及管理中之各種計算節點相關聯的CPU使用。或者,亦可使用支援此些配置異動之任何其他I/O協定。可經由與CXL.mem協定相關聯之異動來處理對記憶體模組之記憶體存取,該CXL.mem協定為支援記憶體異動之記憶體存取協定。作為實例,可經由CXL.mem協定來處理與CPU中之任一者相關聯的加載指令及儲存指令。或者,亦可使用允許將CPU加載/儲存指令轉譯成與遠記憶體系統200中所包括的記憶體模組相關聯之讀取/寫入實務的任何其他協定。儘管第2圖將遠記憶體系統200示為具有以特定方式佈置之特定數目個部件(包括遠記憶體控制器及記憶體模組),但遠記憶體系統200可包括以不同方式佈置之額外或更少部件。作為實例,遠記憶體可實施為以與近記憶體(例如,被示為第1圖中之系統100的一部分之記憶體模組)相同的方式耦接之記憶體模組。然而,可使用記憶體之更便宜或更低速的版本來實施遠記憶體模組。
第3圖示出用於與第1圖的系統100一起使用之實例系統位址映射300。在此實例中,為了在第1圖之系統100的上下文中使用直接交換快取,近記憶體必須具有與遠記憶體之固定比率。在此實例中,假設近記憶體包括不可交換範圍及可交換範圍。此意謂在此實例中,將保證對不可交換範圍內之記憶體的任何存取將在近記憶體中獲得「命中」(因為此範圍未被交換)。對可交換範圍內之記憶體中的位置之任何存取將以直接交換快取方式操作。因此,此些存取將首先在指定為近記憶體之記憶體中執行查找。近記憶體中之命中將直接自局部記憶體中得到服務,而近記憶體中之未命中將導致對應的遠記憶體與近記憶體位置之間的交換操作。交換操作(例如,將資料自遠記憶體中之位置換入至近記憶體中之位置或將資料自近記憶體中之位置換出至遠記憶體中之位置)可在快取行之粒度級別上執行。每個快取行可包括資料部分(例如,512位元)及元資料部分(例如,128位元)之組合。資料部分可含有表示使用者資料或由計算節點執行之指令之資料。元資料可包括表示資料部分中之資料的各種屬性之資料。元資料部分亦可包括錯誤檢查及校正位元或其他合適類型之資訊。另外,元資料可包括具有適當數目位元之標籤以在快取行的位置之間進行區分。在此實例中,因為近記憶體中之可交換記憶體區域具有與遠記憶體中之可交換記憶體區域相同的大小(比率為1),所以可使用單個位元。因此,為「1」之邏輯值可指示快取行處在對應於近記憶體之位置中,而為「0」之邏輯值可指示快取行處在對應於遠記憶體之位置中。然而,本揭示案並不限於在近記憶體與遠記憶體之間使用1:1的固定比率。作為實例,可使用1:3的比率。在此情形下,可能需要額外標籤位元以根據具有快取行之記憶體區域來編碼關於快取行的位置之資訊。
繼續參考第3圖,可能關於直接交換快取發生之潛在問題中的一者在於,近記憶體中衝突的快取行可能會被分配給虛擬化系統中之單獨租戶(例如,VM、容器,等)。在此情境下,一個租戶之快取行交換可影響另一個租戶之記憶體頻寬及記憶體容量。本揭示案描述一種實例機制,其允許在租戶之間建立隔離以使得一個租戶無法影響另一個租戶之記憶體頻寬及記憶體容量。為此,本揭示案描述一種位址映射佈置,使得衝突集映射至同一租戶—亦即,一個租戶之位址不與另一者衝突。
系統位址映射300包括可交換範圍及不可交換範圍。在此實例中,使用位址位元將可交換範圍劃分成更小粒度區域。作為實例,假設2太位元組(TB)之記憶體範圍可用於與系統位址映射300一起使用,1 TB被配置為不可交換範圍,且1 TB被配置為可交換範圍。低階位址位元用以將此記憶體範圍(可交換範圍)劃分成更小粒度區域,每一者之大小為512 MB。在此佈置中,只要為租戶(例如,VM 1、VM 2、...VM N中之任一者)分配等於或高於1 GB之位址範圍(為更小粒度區域之大小的至少兩倍),則租戶之位址不會彼此衝突。分配給每個租戶之位址範圍可被視為具有衝突集大小(例如,1 GB),其在此實例中被選為與相關聯於系統之頁面大小相同的大小。主機OS(例如,超管理器)可按1 GB增量為租戶分配記憶體。每個1 GB增量不需為連續的。每個衝突集(具有兩個衝突的512 MB可交換區域)對應於租戶(例如,DRAM)可存取之實體記憶體中的單個512 MB區域。因此,單個1 GB頁面對應於實體記憶體中之單個512 MB區域。在此實例中,低階位址位元(例如,位址位元29)可具有為「0」或「1」之邏輯值,以在兩個512 MB衝突區域之間進行區分。當位址位元29之邏輯值為「0」時,則快取行之位址對應於512 MB衝突區域中之一者,且當位址位元29之邏輯值為「1」時,則快取行之位址對應於另一512 MB衝突區域。其他類型之編碼亦可用作定址的一部分以在兩個衝突區域之間進行區分。
儘管位址分配之粒度可為任意的,但使用512 MB的大小之令人關注的性質如下:若第一級頁表(將訪客實體位址映射至系統實體位址之表)使用1 GB的頁面大小,則此種劃分位址空間之方法可確保完美的雜訊鄰居隔離,即使1 GB頁面在系統實體位址(system physical address; SPA)空間中以不連續方式進行分配。
仍參考第3圖,系統位址映射300亦包括不可交換範圍。可將彼範圍分配給使用未被交換空間之一組高優先級租戶(例如,VM X,Y...Z),該組高優先級租戶亦與使用易起衝突之可交換區域的所有租戶隔離開。此實例進一步假設計算節點(例如,主機伺服器)為雙插槽伺服器系統,其允許存取兩個非統一記憶體存取(non-uniform memory access; NUMA)集合:INTERLEAVED SET A(NUMA-0)及INTERLEAVED SET B(NUMA-1)。此些不同集合可向租戶提供不同的NUMA特性。作為實例,系統位址映射300之不可交換範圍可映射至NUMA-0集合,此允許局部存取相對於NUMA-1集合而言更快之記憶體。在一個實例中,可交換範圍及不可交換範圍可作為兩個單獨範圍經由進階配置與電源介面(Advanced Configuration and Power Interface; ACPI)通告。如早先所述,每個範圍可映射至具有不同NUMA特性之記憶體。另外,可交換範圍及不可交換範圍中之每一者可具有如經由相應的異構記憶體屬性表(Heterogenous Memory Attributes Table; HMAT)提供之不同屬性。
第4圖為示出當資料位置在近記憶體中時與讀取操作及寫入操作有關之異動流400的圖。與讀取操作相關聯之異動在異動流400之部分410中示出,且與寫入操作相關聯之異動示出在異動流400之流部分420中。在讀取操作期間,CPU(例如,第1圖之CPU 112、142或172中的任一者)可將命令發佈至記憶體控制器(例如,第1圖之記憶體控制器118、148及178中的任一者)以讀取對應於位址A1之資料。當讀取操作導致關於最後一級快取之未命中時,首先將位址A1解碼至近記憶體(例如,與CPU相關聯之局部記憶體中的任一者)。自局部記憶體位置讀取導致擷取包括資料部分及元資料部分(包括標籤)之快取行。在此情形下,該標籤指示資料部分對應於正查找之位址且因此其為命中。因此,快取行中之資料返回至請求CPU。如異動流400之部分420中所示,當快取行被寫入至記憶體時,每個寫入操作之前需要有讀取操作,以確保記憶體位置含有正被寫入之位址。在此情形下,資料被寫入至位址A2,該位址A2位於近記憶體內且因此寫入操作亦為命中。
第5圖為示出與在相關聯於讀取操作之資料位於遠記憶體(例如,池化記憶體)中時發生的異動有關之異動流500的圖。若該標籤指示近記憶體位置不含有被請求之資料的位址,則其為未命中。在未命中時,為了防止衝突及競爭條件,可在記憶體控制器中為映射至局部記憶體中之記憶體位置的四個條目設定阻塞條目。接下來,該標籤可用以解碼遠記憶體中之哪一位置含有對應於被請求之位址的資料。如早先所述,遠記憶體可實施為CXL相容之3型元件。在此實施中,記憶體控制器可能會向適當位址生成CXL.mem讀取請求。在擷取該資料之後,該資料被發送給原始請求者且因此完成讀取操作。該資料亦被寫入至近記憶體,且自局部記憶體讀取之原始資料被寫入遠記憶體中讀取發生之相同位置—藉此執行快取行交換。
第6圖為示出與在相關聯於寫入操作之資料位於遠記憶體中時發生的異動有關之異動流600的圖。對於未命中近記憶體(局部記憶體)之寫入(例如,寫入(A3)),將資料寫入至遠記憶體。
第7圖示出實例系統700之方塊圖,其用於實施用於整合式記憶體池化及直接交換快取之方法中的至少一些。系統700可包括(若干)處理器702、(若干)I/O部件704、記憶體706、(若干)呈現部件708、感測器710、(若干)資料庫712、網路連接介面714及(若干)I/O埠716,其可經由匯流排720互連。(若干)處理器702可執行儲存在記憶體706中之指令。(若干)I/O部件704可包括諸如鍵盤、滑鼠、語音識別處理器或觸控式螢幕之部件。記憶體706可為非揮發性儲存器或揮發性儲存器(例如,快閃記憶體、DRAM、SRAM或其他類型之記憶體)之任何組合。(若干)呈現部件708可包括顯示器、全息設備或其他呈現設備。顯示器可為任何類型之顯示器,諸如,LCD、LED或其他類型之顯示器。(若干)感測器710可包括經配置以偵測及/或接收資訊(例如,已收集之資料)的遙測式或其他類型之感測器。(若干)感測器710可包括經配置以偵測及/或接收資訊(例如,由資料中心中之各種計算節點執行的各種計算實體之記憶體使用)之遙測式或其他類型的感測器。(若干)感測器710可包括經配置以感測與CPU、記憶體或其他儲存部件、FPGA、主機板、底板管理控制器或其類似者相關聯的條件之感測器。(若干)感測器710亦可包括經配置以感測與機架、機箱、風扇、電源供應器單元(power supply unit; PSU)或其類似者相關聯的條件之感測器。(若干)感測器710亦可包括經配置以感測與網路介面控制器(Network Interface Controller; NIC)、架頂式(Top-of-Rack; TOR)交換機、架中式(Middle-of-Rack; MOR)交換機、路由器、電力分配單元(power distribution unit; PDU)、機架級不間斷電源供應器(uninterrupted power supply; UPS)系統或其類似者相關聯的條件之感測器。
仍參考第7圖,(若干)資料庫712可用以儲存已收集或記錄及執行本文所述方法所需的資料中之任一者。(若干)資料庫712可實施為分散式資料庫之集合,或實施為單個資料庫。(若干)網路介面714可包括通訊介面,諸如,乙太網、蜂窩式無線電、藍芽無線電、UWB無線電或其他類型之無線或有線通訊介面。(若干)I/O埠716可包括乙太網埠、光纖埠、無線埠或其他通訊或診斷埠。儘管第7圖將系統700示為包括以特定方式佈置且耦接之特定數目個部件,但其可包括以不同方式佈置且耦接之更少或額外部件。另外,視需要,與系統700相關聯之功能可為分散式的。
第8圖示出根據一個實例之用於實施用於具有雜訊鄰居緩解及動態位址範圍指派之直接交換快取的系統之資料中心800。作為實例,資料中心800可包括若干機架群集,包括平臺硬體,諸如,計算資源、儲存資源、網路連接資源或其他類型的資源。計算資源可經由計算節點來提供,該等計算節點係經由伺服器供應,該等伺服器可連接至交換機以形成網路。網路可實現交換機之每一可能組合之間的連接。資料中心800可包括伺服器1 810及伺服器N 830。資料中心800可進一步包括資料中心相關功能860,包括部署/監控870、目錄/身份服務872、負載平衡874、資料中心控制器876(例如,軟體定義網路連接(software defined networking; SDN)控制器及其他控制器),及路由器/交換機878。伺服器1 810可包括(若干)CPU 811、主機超管理器812、近記憶體813、(若干)儲存介面控制器(storage interface controller; SIC)814、遠記憶體815、(若干)網路介面控制器(network interface controller; NIC)816及儲存磁碟817及818。如早先所解釋,可將記憶體815實施為近記憶體及遠記憶體之組合。伺服器N 830可包括(若干)CPU 831、主機超管理器832、近記憶體833、(若干)儲存介面控制器(SIC)834、遠記憶體835、(若干)網路介面控制器(NIC)836及儲存磁碟837及838。如早先所解釋,可將記憶體835實施為近記憶體及遠記憶體之組合。伺服器1 810可經配置以支援虛擬機,包括VM1 819、VM2 820及VMN 821。虛擬機可進一步經配置以支援應用程式,諸如,APP1 822、APP2 823及APPN 824。伺服器N 830可經配置以支援虛擬機,包括VM1 839、VM2 840及VMN 841。虛擬機可進一步經配置以支援應用程式,諸如,APP1 842、APP2 843及APPN 844。
繼續參考第8圖,在一個實例中,可使用虛擬可擴展區路域網(Virtual extensible Local Area Network; VXLAN)框架為多個租戶啟用資料中心800。可允許每個虛擬機(virtual machine; VM)與同一VXLAN區段中之VM通訊。每個VXLAN區段可由VXLAN網路標識符(VXLAN Network Identifier; VNI)標識。儘管第8圖將資料中心800示為包括以特定方式佈置且耦接之特定數目個部件,但其可包括以不同方式佈置且耦接之更少或額外部件。另外,視需要,與資料中心800相關聯之功能可為分散式的或組合式的。
第9圖示出用於具有雜訊鄰居緩解之直接交換快取的實例方法之流程圖900。在一個實例中,與此方法相關聯之步驟可由早先所述之系統(例如,第1圖之系統100及第2圖之系統200)的各種部件執行。步驟910可包括為計算節點供應近記憶體及遠記憶體。
步驟920可包括向主機作業系統(OS)(其經配置以支援與計算節點相關聯之第一組租戶)授權對如下各者之存取:(1)與近記憶體相關聯之第一可交換記憶體位址範圍及(2)與遠記憶體相關聯之第二可交換記憶體位址範圍,以允許在近記憶體與遠記憶體之間交換快取行。如早先所解釋,關於第3圖,假設2太位元組(TB)之記憶體範圍可用於與系統位址映射300一起使用,1 TB被配置為不可交換範圍,且1 TB被配置為可交換範圍。低階位址位元可用以將此可交換範圍劃分成更小粒度區域,每一者之大小為512 MB。
步驟930可包括以粒度方式向第一組租戶中之任一者分配記憶體,以使得向租戶之每次記憶體分配包括對應於具有衝突集大小之衝突集的記憶體位址,且其中衝突集包括:與相關聯於近記憶體之第一可交換記憶體位址範圍相關聯的第一衝突區域,及與相關聯於遠記憶體之第二可交換記憶體位址範圍相關聯的第二衝突區域,且其中第一衝突區域及第二衝突區域中之每一者具有相同大小,該大小經選擇而等於或小於衝突集大小的一半。如早先所解釋,關於第3圖中所示之佈置,只要為租戶(例如,VM 1、VM 2、...VM N中之任一者)分配等於或高於1 GB之位址範圍(為衝突區域之大小的至少兩倍),則租戶之位址不會彼此衝突。分配給每個租戶之位址範圍可被視為具有衝突集大小(例如,1 GB),其在此實例中被選為與相關聯於系統之頁面大小相同的大小。有利地,使衝突集大小與相關聯於系統之頁面大小相同可能導致關於記憶體操作(例如,讀取/寫入操作)可能的最高服務品質。主機OS(例如,超管理器)可按1 GB增量為租戶分配記憶體。每個1 GB增量不需為連續的。每個衝突集(具有兩個衝突的512 MB可交換區域)對應於租戶(例如,DRAM)可存取之實體記憶體中的單個512 MB區域。因此,單個1 GB頁面對應於實體記憶體中之單個512 MB區域。在此實例中,低階位址位元(例如,位址位元29)可具有為「0」或「1」之邏輯值,以在兩個512 MB衝突區域之間進行區分。當位址位元29之邏輯值為「0」時,則快取行處在512 MB衝突區域中之一者中,且當位址位元29之邏輯值為「1」時,則快取行處在另一512 MB衝突區域中。
如早先關於第3圖所示,主機OS可具有對記憶體位址之特定大小的可交換範圍及記憶體位址之特定大小的不可交換範圍之初始存取。傳統上,對此種初始分配之任何改變需要修改硬體暫存器,該等硬體暫存器可能經程式化作為與計算節點啟動序列相關聯之韌體的一部分。作為實例,與系統(例如,包括計算節點之系統)相關聯之基本輸入輸出系統(basic input-output system; BIOS)可基於韌體設置來設置硬體暫存器。主機OS不具有對硬體暫存器之存取。因此,主機OS無法改變系統位址映射。通常,對此些硬體暫存器之任何修改將需要重新程式化韌體(例如,BIOS韌體)。韌體或其他硬體之重新程式化需要重新啟動計算節點。此繼而剝奪了租戶在重新程式化並重新啟動計算節點的時間期間對計算節點之存取。本揭示案描述用以改變可交換區域及不可交換區域的大小之初始分配而不需要重新程式化硬體暫存器之技術。總之,這是藉由供應任何數目個不同配置並接著視需要在配置之間切換而無需重新程式化硬體暫存器來實現。有利地,配置之間的切換關於可使用系統運行之工作負載類型提供了運行時靈活性。作為實例,最初,系統之主機OS可具有相等量之可交換及不可交換的位址範圍。可將不可交換的位址範圍分配給使用未被交換空間之一組高優先級租戶(例如,VM X,Y...Z),該組高優先級租戶亦與使用易起衝突之可交換區域的所有租戶隔離開。在運行時期間,若主機OS發現高優先級租戶對記憶體使用之更高需求,則主機OS可能會進行運行時切換至系統位址映射之不同配置,該不同配置包括更大量的不可交換位址空間。然而,若需求模式與此實例相反,則主機OS可能進行運行時切換至系統位址映射之又一種配置,該配置包括更大量的可交換位址空間。
第10圖示出用於與第1圖的系統100一起使用之系統位址映射1000的配置A。關於系統位址映射1000所述之配置A假設N吉位元組(GB)的不可交換範圍及M GB的可交換範圍。低階位址位元用以將該可交換範圍劃分成更小粒度區域(例如,每一者之大小為512 MB)。可將此些粒度區域分配給租戶(例如,VM 1,VM 2,...VM N中之任一者)。可將不可交換範圍分配給具有較高優先級之租戶(例如,VM X、VM Y及VM Z中之任一者)。此實例進一步假設計算節點(例如,主機伺服器)為雙插槽伺服器系統,其允許存取兩個非統一記憶體存取(non-uniform memory access; NUMA)集合:INTERLEAVED SET A(NUMA-0)及INTERLEAVED SET B(NUMA-1)。此些不同集合可向租戶提供不同的NUMA特性。作為實例,系統位址映射1000之不可交換範圍可映射至NUMA-0集合,此允許局部存取相對於NUMA-1集合而言更快之記憶體。
繼續參考第10圖,作為此配置的一部分,除了N GB之可交換範圍及M GB之可交換範圍以外,系統位址映射1000進一步用以預留兩個M/2 GB之不可交換位址範圍。M/2 GB之不可交換位址範圍中的一者映射至近記憶體(例如,DDR交錯集3)且另一M/2之不可交換位址範圍映射至遠記憶體(例如,CXL非交錯集4)。與計算節點相關聯之硬體暫存器(例如,硬體位址解碼器)經設置以使得M/2 GB位址範圍中之每一者映射至相同的近記憶體(例如,DRAM)位置。如此,此些位址範圍最初為預留的,並向主機OS指示為不可用。因此,在開始時,將此些兩種位址範圍標記為離線。如此,被標記為預留之位址範圍不映射至任何實體記憶體。因此,在開始時,主機OS可僅存取N GB的不可交換範圍及M GB的可交換範圍。稍後,假設可交換範圍與不可交換範圍之比率需要改變,以使得需要主機OS可存取額外的X GB的不可交換範圍。為了實現此情形,系統位址映射1000自第10圖中所示之配置A切換至第11圖中所示之配置B。
繼續參考第11圖,切換至配置B係藉由主機OS實現,而無需調用BIOS,包括無需對硬體暫存器進行任何重新程式化。主機OS使X GB的可交換範圍離線。在使此範圍離線之前,主機OS使系統實體位址表中之所有頁表映射無效。此有效地意謂主機OS不再可存取已離線之位址範圍。同時,主機OS使兩個X/2 GB的記憶體位址範圍自先前預留之不可交換範圍(例如,作為第10圖之系統位址映射1000的一部分顯示之M GB的不可交換範圍)在線。X/2 GB的不可交換位址範圍中之一者映射至遠記憶體(例如,CXL非交錯集4)且另一X/2 GB的不可交換位址範圍映射至近記憶體(例如,DDR交錯集3)。以此方式,主機OS已有效地將X GB的可交換位址範圍轉換為不可交換位址範圍。儘管第10圖及第11圖描述了特定配置,但使用與關於此些圖所述類似之技術,亦可部署其他配置。此些配置允許動態位址範圍指派,其可經動態地修改,而無需重新程式化在啟動時所使用之硬體暫存器。
第12圖示出用於具有雜訊鄰居緩解之直接交換快取的實例方法之流程圖1200。在一個實例中,與此方法相關聯之步驟可由早先所述之系統(例如,第1圖之系統100及第2圖之系統200)的各種部件執行。步驟1210可包括為計算節點供應近記憶體及遠記憶體,其中與計算節點相關聯之主機作業系統(OS)被授權存取第一系統位址映射配置及與該第一系統位址映射配置不同之第二系統位址映射配置。
步驟1220可包括向主機OS(其經配置以支援第一組租戶)授權存取與近記憶體相關聯之第一不可交換位址範圍。作為實例,如關於第10圖之系統位址映射1000所示,可授權具有比其他租戶更高優先級之特定租戶(例如,VM X、VM Y及VM Z中之任一者)存取N GB的不可交換位址範圍。
步驟1230可包括向主機OS(其經配置以支援與第一組租戶不同之第二組租戶)授權對如下各者之存取:(1)與近記憶體相關聯之第一可交換位址範圍及(2)與遠記憶體相關聯之第二可交換位址範圍,以允許在近記憶體與遠記憶體之間交換快取行。作為實例,如關於第10圖之系統位址映射1000所示,可授權一組租戶(例如,VM 1,VM 2,...VM N中之任一者)存取M GB的可交換範圍。低階位址位元用以將該可交換範圍劃分成更小粒度區域(例如,每一者之大小為512 MB)。
步驟1240可包括藉由自第一系統位址映射配置切換至第二系統位址映射配置來增加第一不可交換位址範圍之大小。如早先關於第10圖及第11圖所解釋,主機OS可藉由自第10圖之系統位址映射1000切換至第11圖之系統位址映射1100來增加針對較高優先級租戶之不可交換位址範圍的大小。如早先關於第11圖所解釋,切換係藉由主機OS實現,而無需調用BIOS,包括無需對硬體暫存器進行任何重新程式化。主機OS可執行若干動作以便執行該切換。作為實例,主機OS使X GB的可交換範圍離線。在使此範圍離線之前,主機OS使系統實體位址表中之所有頁表映射無效。此實際上意謂主機OS不再可存取已離線之位址範圍。同時,主機OS使兩個X/2 GB的記憶體位址範圍自先前預留之不可交換範圍(例如,作為第10圖之系統位址映射1000的一部分顯示之M GB的不可交換範圍)在線。
總之,本揭示案係關於包括提供對近記憶體及遠記憶體的存取之計算節點的系統。該系統可進一步包括主機作業系統(OS),其經配置以支援與計算節點相關聯之第一組租戶,其中該主機OS可以存取:(1)與近記憶體相關聯之第一可交換記憶體位址範圍及(2)與遠記憶體相關聯之第二可交換記憶體位址範圍,以允許在近記憶體與遠記憶體之間交換快取行。
該系統可進一步包括該主機OS經配置而以粒度方式向第一組租戶中之任一者分配記憶體,以使得向租戶之每次記憶體分配包括對應於具有衝突集大小之衝突集的記憶體位址。該衝突集可包括與相關聯於近記憶體之第一可交換記憶體位址範圍相關聯的第一衝突區域,及與相關聯於遠記憶體之第二可交換記憶體位址範圍相關聯的第二衝突區域,且其中第一衝突區域及第二衝突區域中之每一者具有相同大小,該大小經選擇而等於或小於衝突集大小的一半。
主機OS可具有對相關聯於近記憶體之第一不可交換記憶體位址範圍的存取,且該主機OS可進一步經配置以僅自相關聯於近記憶體之第一不可交換記憶體位址範圍內將記憶體位址分配給第二組租戶(其具有比第一組租戶更高的優先級)。該衝突集大小可經選擇而等於由主機OS用於基於頁面的記憶體管理之記憶體頁面的大小。
相關聯於近記憶體之第一可交換記憶體位址範圍的大小與相關聯於遠記憶體之第二可交換記憶體位址範圍的大小之比率可為固定的。主機OS可進一步經配置以增加第一不可交換記憶體位址範圍之大小而無需重新程式化與計算節點相關聯之硬體暫存器。
該系統可進一步包括用於管理近記憶體之近記憶體控制器,及用於管理遠記憶體之遠記憶體控制器,該遠記憶體控制器經配置以與近記憶體控制器通訊。近記憶體控制器可進一步經配置以分析與快取行相關聯之元資料部分,以決定近記憶體含有該快取行還是遠記憶體含有該快取行。
另外,本揭示案係關於包括為計算節點供應近記憶體及遠記憶體之方法。該方法可進一步包括向主機作業系統(OS)(其經配置以支援與計算節點相關聯之第一組租戶)授權對如下各者之存取:(1)與近記憶體相關聯之第一可交換記憶體位址範圍及(2)與遠記憶體相關聯之第二可交換記憶體位址範圍,以允許在近記憶體與遠記憶體之間交換快取行。該方法可進一步包括以粒度方式向第一組租戶中之任一者分配記憶體,以使得向租戶之每次記憶體分配包括對應於具有衝突集大小之衝突集的記憶體位址。
該衝突集可包括與相關聯於近記憶體之第一可交換記憶體位址範圍相關聯的第一衝突區域,及與相關聯於遠記憶體之第二可交換記憶體位址範圍相關聯的第二衝突區域,且其中第一衝突區域及第二衝突區域中之每一者具有相同大小,該大小經選擇而等於或小於衝突集大小的一半。
主機OS可具有對相關聯於近記憶體之第一不可交換記憶體位址範圍的存取,且該主機OS進一步經配置以僅自相關聯於近記憶體之第一不可交換記憶體位址範圍內將記憶體位址分配給第二組租戶(其具有比第一組租戶更高的優先級)。該衝突集大小可經選擇而等於由主機OS用於基於頁面的記憶體管理之記憶體頁面的大小。
相關聯於近記憶體之第一可交換記憶體位址範圍的大小與相關聯於遠記憶體之第二可交換記憶體位址範圍的大小之比率可為固定的。該方法可進一步包括增加第一不可交換記憶體位址範圍之大小而無需重新程式化與計算節點相關聯之硬體暫存器。該方法可進一步包括分析與快取行相關聯之元資料部分,以決定近記憶體含有該快取行還是遠記憶體含有該快取行。
另外,本揭示案係關於一種包括為計算節點供應近記憶體及遠記憶體之方法,其中與計算節點相關聯之主機作業系統(OS)被授權存取第一系統位址映射配置及與該第一系統位址映射配置不同之第二系統位址映射配置。該方法可進一步包括向主機OS(其經配置以支援第一組租戶)授權存取與近記憶體相關聯之第一不可交換位址範圍。
該方法可進一步包括向主機OS(其經配置以支援與第一組租戶不同之第二組租戶)授權對如下各者之存取:(1)與近記憶體相關聯之第一可交換位址範圍及(2)與遠記憶體相關聯之第二可交換位址範圍,以允許在近記憶體與遠記憶體之間交換快取行。該方法可進一步包括藉由自第一系統位址映射配置切換至第二系統位址映射配置來增加第一不可交換位址範圍之大小。
增加第一不可交換位址範圍之大小係在無需重新程式化與計算節點相關聯之硬體暫存器的情況下實現。第一系統位址映射配置可包括映射至近記憶體之第一預留不可交換位址範圍,及映射至遠記憶體之第二預留不可交換位址範圍,其中與第一預留不可交換位址範圍及第二預留不可交換位址範圍相關聯之所有位址被標記為離線。第二位址映射配置可包括第一預留不可交換位址範圍之標記為在線的一部分及第二預留不可交換位址範圍之標記為在線的一部分。第二位址映射配置可進一步包括第一可交換位址範圍之標記為離線的一部分,其中第一可交換位址範圍之標記為離線的該部分具有與標記為在線之第一預留不可交換位址範圍及該第二預留不可交換位址範圍之標記為在線的該部分之組合大小相同的大小。
該方法可進一步包括以粒度方式向第一組租戶中之任一者分配記憶體,以使得每次記憶體分配包括對應於具有衝突集大小之衝突集的記憶體位址。該衝突集可包括與相關聯於近記憶體之第一可交換記憶體位址範圍相關聯的第一衝突區域,及與相關聯於遠記憶體之第二可交換記憶體位址範圍相關聯的第二衝突區域,且其中第一衝突區域及第二衝突區域中之每一者具有相同大小,該大小經選擇而等於或小於衝突集大小的一半。該衝突集大小可經選擇而等於由主機OS用於基於頁面的記憶體管理之記憶體頁面的大小。
應理解,本文所描繪之方法、模組及部件僅為例示性的。或者或另外,本文所述之功能可至少部分地由一或更多個硬體邏輯部件執行。舉例而言且並非限制,可使用之說明性類型的硬體邏輯部件包括現場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、特殊應用標準產品(Application-Specific Standard Product; ASSP)、系統單晶片系統(System-on-a-Chip system; SOC)、複雜可程式化邏輯元件(Complex Programmable Logic Device; CPLD),等。在抽象但仍明確的含義上,有效地「相關聯」用以實現相同功能之部件的任何佈置,以使得實現所期望之功能。因而,可將本文中相組合以實現特定功能之任何兩個部件視為彼此「相關聯」,以使得實現所期望之功能,而與架構或中間部件無關。同樣,亦可將如此相關聯之任何兩個部件視為彼此「可操作地連接」或「耦接」以實現所期望之功能。僅因為可為裝置、結構、系統或功能的任何其他實施之部件在本文中被描述為耦接至另一部件並不意謂該等部件有必要為單獨的部件。作為實例,被描述為耦接至另一部件B之部件A可為部件B之子部件,部件B可為部件A之子部件,或部件A及B可為另一部件C之經組合的子部件。
與本揭示案中所述之一些實例相關聯的功能亦可包括儲存在非暫時性媒體中之指令。如本文中所使用,術語「非暫時性媒體」代表儲存導致機器以特定方式操作的資料及/或指令之任何媒體。例示性非暫時性媒體包括非揮發性媒體及/或揮發性媒體。舉例而言,非揮發性媒體包括硬碟、固態驅動器、磁碟或磁帶、光碟或磁帶、快閃記憶體、EPROM、NVRAM、PRAM或其他此種媒體,或此些媒體之網路連接版本。舉例而言,揮發性媒體包括動態記憶體,諸如,DRAM、SRAM、快取記憶體或其他此種媒體。非暫時性媒體與傳輸媒體相異,但可與傳輸媒體結合使用。傳輸媒體用於將資料及/或指令移送至機器或自機器移送資料及/或指令。例示性傳輸媒體包括同軸纜線、光纖纜線、銅線,及無線媒體(諸如,無線電波)。
另外,熟習此項技術者將認識到,上述操作的功能之間的界限僅為說明性的。多個操作之功能可組合至單個操作中,及/或單個操作之功能可分佈在額外操作中。此外,替代實施例可包括特定操作之多個個例,且在各種其他實施例中可改變操作之次序。
儘管本揭示案提供了特定實例,但可在不脫離如在以下申請專利範圍中所闡述之本揭示案之範疇的情況下作出各種修改及改變。因此,應在說明性而非限制性含義上看待本說明書及諸圖,且所有此種修改旨在被包括在本揭示案之範疇內。本文關於特定實例所描述之任何益處、優勢或問題解決方案並不旨在被解釋為任何或所有請求項之關鍵、必需或基本特徵或要素。
另外,如本文中所使用,術語「一(a)」或「一(an)」被定義為一個或一個以上。又,在申請專利範圍中使用諸如「至少一個」及「一或更多個」之介紹性片語不應被解釋為暗指由不定冠詞「一(a)」或「一(an)」引入另一請求項要素將含有此被引入的請求項要素之任何特定請求項限於僅含有一個此種要素的發明,即使同一請求項包括介紹性片語「一或更多個」或「至少一個」以及不定冠詞(諸如,「一(a)」或「一(an)」)。對使用定冠詞而言,情況相同。
除非另有說明,否則諸如「第一」及「第二」之術語用以任意地在此些術語所描述之要素之間任意區分。因此,此些術語未必旨在指示此些要素之時間或其他的優先級。
100:系統 110:計算節點 112:中央處理單元(CPU) 114:主機OS 118:記憶體控制器 122:記憶體模組 124:記憶體模組 126:記憶體模組 128:記憶體模組 130:記憶體模組 132:記憶體模組 140:計算節點 142:CPU 144:主機OS 148:記憶體控制器 152:記憶體模組 154:記憶體模組 156:記憶體模組 158:記憶體模組 160:記憶體模組 162:記憶體模組 170:計算節點 172:CPU 174:主機OS 178:記憶體控制器 180:遠記憶體系統 182:記憶體模組 184:記憶體模組 186:記憶體模組 188:記憶體模組 190:記憶體模組 192:記憶體模組 200:遠記憶體系統 202:交換機 206:匯流排 210:遠記憶體控制器(FMC) 212:記憶體模組 214:記憶體模組 216:記憶體模組 218:記憶體模組 220:FMC 222:記憶體模組 224:記憶體模組 226:記憶體模組 228:記憶體模組 230:FMC 232:記憶體模組 234:記憶體模組 236:記憶體模組 238:記憶體模組 240:FMC 242:記憶體模組 244:記憶體模組 246:記憶體模組 248:記憶體模組 250:FMC 252:記憶體模組 254:記憶體模組 256:記憶體模組 258:記憶體模組 260:FMC 262:記憶體模組 264:記憶體模組 266:記憶體模組 268:記憶體模組 280:組構管理器 290:資料中心控制平面 300:系統位址映射 400:異動流 410:部分 420:流部分 500:異動流 600:異動流 700:系統 702:處理器 704:I/O部件 706:記憶體 708:呈現部件 710:感測器 712:資料庫 714:網路連接介面 716:I/O埠 720:匯流排 800:資料中心 810:伺服器1 811:CPU 812:主機超管理器 813:近記憶體 814:儲存介面控制器(SIC) 815:遠記憶體 816:網路介面控制器(NIC) 817:儲存磁碟 818:儲存磁碟 819:VM1 820:VM2 821:VMN 822:APP1 823:APP1 824:APPN 830:伺服器N 831:CPU 832:主機超管理器 833:近記憶體 834:儲存介面控制器(SIC) 835:遠記憶體 836:網路介面控制器(NIC) 837:儲存磁碟 838:儲存磁碟 839:VM1 840:VM2 841:VMN 842:APP1 843:APP2 844:APPN 860:資料中心相關功能 870:部署/監控 872:目錄/身份服務 874:負載平衡 876:資料中心控制器 878:路由器/交換機 900:流程圖 910:步驟 920:步驟 930:步驟 1000:系統位址映射 1100:系統位址映射 1200:流程圖 1210:步驟 1220:步驟 1230:步驟 1240:步驟
藉助於實例來繪示本揭示案且本揭示案並不受隨附諸圖限制,在隨附諸圖中相同元件符號指示類似元件。諸圖中之元件係為了簡化及清楚起見加以繪示且未必已按比例繪製。
第1圖為根據一個實例之包括與遠記憶體系統耦接的計算節點之系統的方塊圖。
第2圖示出實例遠記憶體系統之方塊圖。
第3圖示出用於與第1圖的系統一起使用之實例系統位址映射。
第4圖為根據一個實例之示出當資料位置在近記憶體中時與讀取操作及寫入操作有關之異動流的圖。
第5圖為根據一個實例之示出與在相關聯於讀取操作之資料位於遠記憶體中時發生的異動有關之異動流的圖。
第6圖為根據一個實例之示出與在相關聯於寫入操作之資料位於遠記憶體中時發生的異動有關之異動流的圖。
第7圖示出實例系統之方塊圖,其用於實施用於具有雜訊鄰居緩解及動態位址範圍指派之直接交換快取的方法中之至少一些。
第8圖示出用於實施用於具有雜訊鄰居緩解及動態位址範圍指派之直接交換快取的系統之資料中心。
第9圖示出用於具有雜訊鄰居緩解之直接交換快取的實例方法之流程圖。
第10圖示出用於與第1圖的系統一起使用之系統位址映射的配置A。
第11圖示出用於與第1圖的系統一起使用之系統位址映射的配置B。
第12圖示出用於具有雜訊鄰居緩解之直接交換快取的另一實例方法之流程圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
300:系統位址映射

Claims (20)

  1. 一種系統,包括: 一計算節點,提供對近記憶體及遠記憶體之存取;以及 一主機作業系統(OS),經配置以支援與該計算節點相關聯之一第一組租戶,其中該主機OS可以存取:(1)與該近記憶體相關聯之一第一可交換記憶體位址範圍及(2)與該遠記憶體相關聯之一第二可交換記憶體位址範圍,以允許在該近記憶體與該遠記憶體之間交換快取行,其中該主機OS經配置而以一粒度方式向該第一組租戶中之任一者分配記憶體,以使得對一租戶之每次記憶體分配包括對應於具有一衝突集大小之一衝突集的記憶體位址,且其中該衝突集包括: 與相關聯於該近記憶體之該第一可交換記憶體位址範圍相關聯的一第一衝突區域,及與相關聯於該遠記憶體之該第二可交換記憶體位址範圍相關聯的一第二衝突區域,且其中該第一衝突區域及該第二衝突區域中之每一者具有一相同大小,該大小經選擇而等於或小於該衝突集大小的一半。
  2. 如請求項1所述之系統,其中該主機OS具有對相關聯於該近記憶體之該第一不可交換記憶體位址範圍的存取,且該主機OS進一步經配置以僅自相關聯於該近記憶體之該第一不可交換記憶體位址範圍內將記憶體位址分配給一第二組租戶,其具有比該第一組租戶更高的一優先級。
  3. 如請求項1所述之系統,其中該衝突集大小經選擇而等於由該主機OS用於基於頁面的記憶體管理之一記憶體頁面的一大小。
  4. 如請求項1所述之系統,其中相關聯於該近記憶體之該第一可交換記憶體位址範圍的一大小與相關聯於該遠記憶體之該第二可交換記憶體位址範圍的一大小之一比率為固定的。
  5. 如請求項2所述之系統,其中該主機OS進一步經配置以增加該第一不可交換記憶體位址範圍之一大小而無需重新程式化與該計算節點相關聯之硬體暫存器。
  6. 如請求項1所述之系統,其中該系統進一步包括用於管理該近記憶體之一近記憶體控制器,及用於管理該遠記憶體之一遠記憶體控制器,該遠記憶體控制器經配置以與該近記憶體控制器通訊。
  7. 如請求項6所述之系統,其中該近記憶體控制器進一步經配置以分析與一快取行相關聯之一元資料部分,以決定該近記憶體含有該快取行還是該遠記憶體含有該快取行。
  8. 一種方法,包括以下步驟: 為一計算節點供應近記憶體及遠記憶體; 向經配置以支援與該計算節點相關聯之一第一組租戶的一主機作業系統(OS)授權對如下各者之存取:(1)與該近記憶體相關聯之一第一可交換記憶體位址範圍及(2)與該遠記憶體相關聯之一第二可交換記憶體位址範圍,以允許在該近記憶體與該遠記憶體之間交換快取行;以及 以一粒度方式向該第一組租戶中之任一者分配記憶體,以使得向一租戶之每次記憶體分配包括對應於具有一衝突集大小之一衝突集的記憶體位址,且其中該衝突集包括: 與相關聯於該近記憶體之該第一可交換記憶體位址範圍相關聯的一第一衝突區域,及與相關聯於該遠記憶體之該第二可交換記憶體位址範圍相關聯的一第二衝突區域,且其中該第一衝突區域及該第二衝突區域中之每一者具有一相同大小,該大小經選擇而等於或小於該衝突集大小的一半。
  9. 如請求項8所述之方法,其中該主機OS具有對相關聯於該近記憶體之該第一不可交換記憶體位址範圍的存取,且該主機OS進一步經配置以僅自相關聯於該近記憶體之該第一不可交換記憶體位址範圍內將記憶體位址分配給一第二組租戶,其具有比該第一組租戶更高的一優先級。
  10. 如請求項8所述之方法,其中該衝突集大小經選擇而等於由該主機OS用於基於頁面的記憶體管理之一記憶體頁面的一大小。
  11. 如請求項8所述之方法,其中相關聯於該近記憶體之該第一可交換記憶體位址範圍的一大小與相關聯於該遠記憶體之該第二可交換記憶體位址範圍的一大小之一比率為固定的。
  12. 如請求項9所述之方法,進一步包括以下步驟:增加該第一不可交換記憶體位址範圍之一大小而無需重新程式化與該計算節點相關聯之硬體暫存器。
  13. 如請求項8所述之方法,進一步包括以下步驟:分析與一快取行相關聯之一元資料部分,以決定該近記憶體含有該快取行還是該遠記憶體含有該快取行。
  14. 一種方法,包括以下步驟: 為一計算節點供應近記憶體及遠記憶體,其中與該計算節點相關聯之一主機作業系統(OS)被授權存取一第一系統位址映射配置及與該第一系統位址映射配置不同之一第二系統位址映射配置; 向經配置以支援一第一組租戶之該主機OS授權存取與該近記憶體相關聯之一第一不可交換位址範圍; 向經配置以支援與該第一組租戶不同之一第二組租戶的該主機OS授權對如下各者之存取:(1)與該近記憶體相關聯之一第一可交換位址範圍及(2)與該遠記憶體相關聯之一第二可交換位址範圍,以允許在該近記憶體與該遠記憶體之間交換快取行;以及 藉由自該第一系統位址映射配置切換至該第二系統位址映射配置來增加該第一不可交換位址範圍之一大小。
  15. 如請求項14所述之方法,其中該增加該第一不可交換位址範圍之該大小之步驟係在無需重新程式化與該計算節點相關聯之硬體暫存器的情況下實現。
  16. 如請求項14所述之方法,其中該第一系統位址映射配置包括映射至該近記憶體之一第一預留不可交換位址範圍,及映射至該遠記憶體之一第二預留不可交換位址範圍,其中與該第一預留不可交換位址範圍及該第二預留不可交換位址範圍相關聯之所有位址被標記為離線。
  17. 如請求項16所述之方法,其中該第二位址映射配置包括該第一預留不可交換位址範圍之標記為在線的一部分及該第二預留不可交換位址範圍之標記為在線的一部分。
  18. 如請求項17所述之方法,其中該第二位址映射配置包括該第一可交換位址範圍之標記為離線的一部分,其中該第一可交換位址範圍之標記為離線的該部分具有與標記為在線之該第一預留不可交換位址範圍及該第二預留不可交換位址範圍之標記為在線的該部分之一組合大小相同的一大小。
  19. 如請求項14所述之方法,進一步包括以下步驟:以一粒度方式向該第一組租戶中之任一者分配記憶體,以使得每次記憶體分配包括對應於具有一衝突集大小之一衝突集的記憶體位址,且其中該衝突集包括: 與相關聯於該近記憶體之該第一可交換記憶體位址範圍相關聯的一第一衝突區域,及與相關聯於該遠記憶體之該第二可交換記憶體位址範圍相關聯的一第二衝突區域,且其中該第一衝突區域及該第二衝突區域中之每一者具有一相同大小,該大小經選擇而等於或小於該衝突集大小的一半。
  20. 如請求項19所述之方法,其中該衝突集大小經選擇而等於由該主機OS用於基於頁面的記憶體管理之一記憶體頁面的一大小。
TW112104542A 2022-03-11 2023-02-09 具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取 TW202340931A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202263319109P 2022-03-11 2022-03-11
US63/319,109 2022-03-11
US17/735,767 2022-05-03
US17/735,767 US11860783B2 (en) 2022-03-11 2022-05-03 Direct swap caching with noisy neighbor mitigation and dynamic address range assignment

Publications (1)

Publication Number Publication Date
TW202340931A true TW202340931A (zh) 2023-10-16

Family

ID=84901263

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112104542A TW202340931A (zh) 2022-03-11 2023-02-09 具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取

Country Status (2)

Country Link
TW (1) TW202340931A (zh)
WO (1) WO2023172319A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9645942B2 (en) * 2013-03-15 2017-05-09 Intel Corporation Method for pinning data in large cache in multi-level memory system
US10901894B2 (en) * 2017-03-10 2021-01-26 Oracle International Corporation Allocating and accessing memory pages with near and far memory blocks from heterogeneous memories
WO2020007813A1 (en) * 2018-07-04 2020-01-09 Koninklijke Philips N.V. Computing device with increased resistance against rowhammer attacks
US10983919B2 (en) * 2019-09-25 2021-04-20 Nvidia Corp. Addressing cache slices in a last level cache
CN112579251B (zh) * 2019-09-29 2024-04-23 华为技术有限公司 虚拟机内存管理的方法及设备

Also Published As

Publication number Publication date
WO2023172319A1 (en) 2023-09-14

Similar Documents

Publication Publication Date Title
US9760497B2 (en) Hierarchy memory management
US10339047B2 (en) Allocating and configuring persistent memory
US11620060B2 (en) Unified hardware and software two-level memory
US9652405B1 (en) Persistence of page access heuristics in a memory centric architecture
JP2014021972A (ja) 複数の仮想マシンとして動作する複数のシステムによって共有されるストレージ・キャッシングでの柔軟性を改善するための方法および構造
US8612691B2 (en) Assigning memory to on-chip coherence domains
US11157191B2 (en) Intra-device notational data movement system
US20240103876A1 (en) Direct swap caching with zero line optimizations
US7793051B1 (en) Global shared memory subsystem
CN116171430A (zh) 具有独立地一致的节点的计算设备
TW202340931A (zh) 具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取
US10936219B2 (en) Controller-based inter-device notational data movement system
US11860783B2 (en) Direct swap caching with noisy neighbor mitigation and dynamic address range assignment
US20230229498A1 (en) Systems and methods with integrated memory pooling and direct swap caching
TW202344971A (zh) 使用整合記憶體池化及直接交換快取的系統及方法
US11281612B2 (en) Switch-based inter-device notational data movement system
CN117716343A (zh) 计算系统中的存储器分层技术