TW202301133A - 計算系統中的記憶體包容性管理 - Google Patents
計算系統中的記憶體包容性管理 Download PDFInfo
- Publication number
- TW202301133A TW202301133A TW111118337A TW111118337A TW202301133A TW 202301133 A TW202301133 A TW 202301133A TW 111118337 A TW111118337 A TW 111118337A TW 111118337 A TW111118337 A TW 111118337A TW 202301133 A TW202301133 A TW 202301133A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- data
- slc
- controller
- block
- Prior art date
Links
Images
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0822—Copy directories
-
- 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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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/1016—Performance improvement
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本文中揭示記憶體包容性管理之技術。一種實例技術包括自CPU之核心接收將對應於第一快取行之資料區塊寫入至記憶體處之對換緩衝器的請求。回應於請求,方法可包括擷取對應於第一快取行之元資料,其包括編碼有狀態值之位元,該狀態值指示記憶體處之記憶體區塊當前含有第一快取行之資料還是對應於第二快取行之資料。第一及第二快取行交替地共享記憶體處之對換緩衝器。當經解碼狀態值指示第一記憶體處之記憶體區塊當前含有對應於第一快取行之資料時,將指令傳輸至記憶體控制器以將資料區塊直接寫入至第一記憶體處之記憶體區塊。
Description
本揭示案係關於計算系統中之記憶體包容性管理。
在計算中,記憶體通常代表計算部件,其用以儲存用於由電腦中之中央處理單元(central processing unit; CPU)或其他類型的計算裝置立即存取的資料。除了記憶體以外,電腦亦可包括持久地在電腦上儲存資料之一或更多個儲存裝置(例如,硬碟驅動器或HDD)。在操作中,資料(諸如,應用程式之指令)可首先自儲存裝置被加載至記憶體中。CPU可接著執行已加載在記憶體中之應用程式的指令以提供計算服務,諸如,文字處理、線上會議,等。
提供本發明內容以便以簡化形式介紹一系列概念,以下在實施方式中更詳細地描述該等概念。此發明內容並不意欲標識所主張標的之關鍵特徵或基本特徵,亦不意欲用以限制所主張標的之範疇。
計算裝置時常部署具有多級快取記憶體之快取記憶體系統以促進指令在CPU處的高效執行。舉例而言,CPU可包括多個個別處理器或「核心」,其各自具有多級私用快取記憶體(例如,L1、L2,等)。CPU之多個核心亦可經由與CPU共同封裝之系統級快取記憶體(system level cache; SLC)控制器共享SLC。在CPU外部,記憶體可包括快取記憶體及主記憶體。快取記憶體可為非常高速之記憶體,其充當主記憶體與CPU之間的緩衝器,以保持快取行以使CPU立即可用。舉例而言,某些電腦可包括雙倍資料速率(Double Data Rate; DDR)同步動態隨機存取記憶體(Synchronous Dynamic Random-Access Memory; SDRAM),作為CPU之快取記憶體。此種快取記憶體由於靠近CPU而有時稱作「近記憶體」。除了近記憶體以外,CPU亦可經由計算快速鏈接(Compute Express Link; CXL)或其他適當類型之介面協定與主記憶體介面連接。主記憶體由於處在比近記憶體距CPU更遠的距離處而可有時稱作「遠記憶體」。
在操作期間,CPU中之核心可以階層架構方式自多級快取記憶體請求資料。舉例而言,當在核心處執行之過程請求讀取資料區塊時,核心可首先檢查L1快取記憶體當前是否含有所請求資料。當L1不含有所請求資料時,核心可接著檢查L2快取記憶體尋找相同資料。當L2不含有所請求資料時,核心可請求SLC控制器檢查SLC是否含有所請求資料。當SLC亦不含有所請求資料時,SLC控制器可向近或遠記憶體之記憶體控制器請求該資料區塊。在定位來自近或遠記憶體之資料後,記憶體控制器可接著將資料區塊之複本傳輸至SLC控制器以儲存在SLC處且可用於核心。SLC控制器可接著經由L2及/或L1快取記憶體將資料區塊提供給在核心處執行之過程。
在某些實施中,近記憶體可用作遠記憶體之對換緩衝器,而非CPU之專用快取記憶體,以使近記憶體可用作可定址之系統記憶體。在某些實施中,近記憶體與遠記憶體之間的比率可為一至大於或等於一的任何整數。舉例而言,系統記憶體位址之範圍可由近記憶體及遠記憶體按一比三之比率組合覆蓋。如此,可將系統記憶體之範圍劃分成四個分區(例如,A、B、C及D),可變地對應於近記憶體中之一個記憶體區塊及遠記憶體中之三個記憶體區塊。近及遠記憶體中之每一記憶體區塊可包括資料部分(例如,512個位元)及元資料部分(例如,128個位元)。資料部分可經配置以含有使用者資料或指令。元資料部分可經配置以含有具有多個位元(例如,針對四個分區有六至八個位元)之元資料,其編碼有系統記憶體之各種分區的位置資訊。
使用近記憶體之記憶體區塊中的元資料,記憶體控制器可經配置以管理各個分區(例如,A、B、C及D)之間的對換操作。舉例而言,在讀取操作期間,記憶體控制器可經配置以自近記憶體讀取,以分別自近記憶體之資料部分及元資料部分擷取資料及元資料。記憶體控制器可接著經配置以使用元資料決定所擷取資料對應於系統記憶體之哪一分區,及已決定分區是否匹配將要讀取之目標分區。舉例而言,當目標分區為分區A且來自元資料部分之前兩個位元含有對應於分區A之代碼(例如)(0,0)時,則記憶體控制器可經配置以決定所擷取資料來自於分區A(稱作「快取行A」)。因此,記憶體控制器可將來自分區A之已擷取資料轉遞至請求實體,諸如,在計算裝置上執行之應用程式或OS。
另一方面,當來自元資料部分之前兩個位元含有代碼(例如)(0,1)而非(0,0)時,例如,記憶體控制器可經配置以決定已擷取之快取行屬於分區B(稱作「快取行B」),而非快取行A。記憶體控制器可接著繼續檢查元資料中之額外位元,以決定哪對位元含有(0,0)。舉例而言,當元資料之第二對(位元3及位元4)含有(0,0)時,則記憶體控制器可經配置以決定快取行A位於遠記憶體中之第一記憶體區塊處。作為回應,記憶體控制器可經配置以自遠記憶體中之第一記憶體區塊讀取快取行A,且將快取行A提供至SLC控制器。記憶體控制器可接著經配置以將已擷取之快取行A寫入至近記憶體中並將先前所擷取之快取行B寫入至遠記憶體中之第一記憶體區塊,藉此對換快取行A及快取行B。記憶體控制器亦可經配置以修改近記憶體之記憶體區塊中的元資料部分中的位元,以反映近記憶體中的分區A及分區B之間的快取行對換。
儘管使用近記憶體作為對換緩衝器可增加計算裝置中之可定址系統記憶體的量,但由於計算裝置中之快取記憶體系統缺乏包容性,因此此種配置可能負面地影響執行潛時。如本文中所使用,術語「包容性」大體代表保證存在於較低級快取記憶體(例如,SLC)處之資料亦存在於較高級快取記憶體(例如,近記憶體)中。舉例而言,當快取行A存在於SLC、L1或L2中時,包容性將保證同一快取行A之複本亦存在於近記憶體之記憶體區塊中。然而,當將近記憶體用作對換緩衝器時,此種包容性可能不存在。舉例而言,在由核心所執行之過程讀取快取行A之後,相同或不同的過程可請求自近記憶體讀取快取行B。作為回應,記憶體控制器可對換近記憶體中之快取行A及快取行B。如此,當過程隨後試圖將新資料寫入至快取行A時,近記憶體會含有快取行B而非快取行A。因此,記憶體控制器可能需要在執行寫入操作之前執行額外操作(諸如,讀取近記憶體中之元資料)以決定快取行A之當前位置。額外的先讀後寫可減小記憶體頻寬,且因此負面地影響計算裝置中之系統效能。
針對前述困難之一種解決方案為配置快取記憶體系統以經由反向失效在所有級之快取記憶體中強加包容性。如此,在先前實例中,當近記憶體含有快取行B而非快取行A時,快取記憶體系統將使計算裝置中之SLC、L1及/或L2中的快取行A之所有複本失效。此種失效會引入實質性的操作複雜性並增加執行潛時,因為快取行A可能包括過程需要存取之被頻繁使用的資料。因此,在使快取行A失效以強加包容性之後,由於近記憶體中之對換,所以過程可能被迫自近記憶體請求快取行A的另一複本以繼續執行。對快取行A之額外讀取可進一步減小計算裝置中之記憶體頻寬。
當將近記憶體實施為電腦裝置中之對換緩衝器時,所揭示技術之若干實施例可解決對系統效能之前述影響。在某些實施中,可將共享被用作對換緩衝器之近記憶體的記憶體區塊之資料分區(例如,A、B、C及D)分組成資料集(例如,稱作T1set)。可(例如)在SLC控制器處實施散列函數,以使得T1set之所有A、B、C及D分區經散列而儲存在單個SLC記憶體空間(稱作SLC片)中。在某些實施中,儲存在SLC片處之針對不同分區的資料可包括快取記憶體集合,其具有標籤陣列及資料陣列。資料陣列可經配置以儲存針對A、B、C、D分區之資料的複本。標籤陣列可包括多個位元,其經配置以指示儲存在對應資料陣列中之資料的某些屬性。
根據所揭示技術之若干實施例,標籤陣列可經配置以包括A、B、C、D分區中的每一者之有效性位元及包容性位元。在其他實施例中,標籤陣列可包括包容性位元,而無有效性位元或具有其他適當配置。使用有效性及包容性位元,SLC控制器可經配置以監控快取記憶體系統中之包容性狀態並相應地修改計算裝置中之操作。舉例而言,在針對來自近記憶體之快取行A的讀取後,SLC控制器可將分區A之有效性位元及包容性位元設定為真(例如,設定成為值1)。有效性位元指示儲存在SLC片中之快取行A有效,而包容性位元指示近記憶體亦含有儲存在SLC片中之快取行A的複本。
隨後,當藉由新資料處理對分區A的寫入時,SLC控制器可經配置以自SLC片擷取標籤陣列,並決定分區A之包容性位元是否為真。在決定分區A之包容性位元為真之後,SLC控制器可經配置以指示記憶體控制器將分區A之新資料直接寫入至對換緩衝器(亦即,近記憶體),因為維持了包容性。另一方面,在決定分區A之包容性位元非真之後,SLC控制器可經配置以將分區A之新資料連同近記憶體可能不含有快取行A的指示或警告一起提供至記憶體控制器。基於該指示,記憶體控制器可經配置以執行額外操作(諸如,上述元資料擷取及檢查操作)以決定分區A在近或遠記憶體中之位置。
當將近記憶體用作對換緩衝器而非CPU之專用快取記憶體時,以上所揭示技術之若干實施例可提高計算裝置之系統效能。使用效能模擬,發明人已認識到,計算裝置中之大量記憶體操作不涉及介入讀取/寫入操作。如此,時常維持多個級之快取記憶體處的包容性,儘管未嚴格地強加包容性。因此,藉由使用包容性位元來監控快取記憶體系統中之包容性狀態,在許多情況下,可避免藉由記憶體控制器進行之額外的先讀後寫操作。因此,可改良計算裝置之執行潛時及/或其他系統效能。
以下論述用於記憶體包容性管理之系統、裝置、部件、模組、例程、資料結構及過程的某些實施例。在以下描述中,包括部件之特定細節以提供對所揭示技術之某些實施例的透徹理解。熟習相關技術之人員亦將理解,該技術可具有額外實施例。亦可在無以下關於第1圖至第5圖所述實施例的細節中之若干者的情況下實踐該技術。舉例而言,本文所揭示之記憶體操作管理技術的態樣亦可實施在個人電腦、智慧型電話、平板電腦或其他適當類型之計算裝置上,而不是實施在資料中心或其他適當的分散式計算系統中。
如本文中所使用,術語「分散式計算系統」大體代表具有多個網路節點之互連電腦系統,該等網路節點使複數個伺服器或主機彼此互連及/或互連至外部網路(例如,網際網路)。術語「網路節點」大體代表實體網路裝置。實例網路節點包括路由器、交換機、集線器、橋接器、負載平衡器、安全閘道,或防火墻。「主機」大體代表實體計算裝置。在某些實施例中,主機可經配置以實施(例如)一或更多個虛擬機、虛擬交換機或其他適當的虛擬化部件。舉例而言,主機可包括具有超管理器之伺服器,該超管理器經配置以支援一或更多個虛擬機、虛擬交換機或其他適當類型之虛擬部件。在其他實施例中,主機可經配置以直接在作業系統頂部上執行適當應用程式。
在某些實施中,可在概念上將電腦網路劃分為實施在底層網路之上的覆蓋網路。「覆蓋網路」大體代表實施在底層網路的頂部之上並在其上運行的抽象網路。底層網路可包括彼此互連之多個實體網路節點。覆蓋網路可包括一或更多個虛擬網路。「虛擬網路」大體代表底層網路的一部分在覆蓋網路中之抽象概念。虛擬網路可包括稱作「租戶站點」之一或更多個虛擬端點,該等「租戶站點」由使用者或「租戶」個別地使用以存取虛擬網路及相關聯的計算、儲存或其他適當資源。租戶站點可代管一或更多個租戶端點(tenant end point; 「TEP」),例如,虛擬機。虛擬網路可使不同主機上之多個TEP互連。覆蓋網路中之虛擬網路節點可藉由個別地對應於沿底層網路中的一或更多個實體網路節點之一或更多個網路路由的虛擬鏈路彼此連接。在其他實施中,電腦網路可僅包括底層網路。
亦在本文中使用,術語「近記憶體」大體代表相比於距處理器(例如,CPU)一定距離之其他「遠記憶體」實體地接近該處理器的記憶體。舉例而言,近記憶體可包括一或更多個DDR SDRAM晶粒,其經由中介層及/或經由矽介層窗併入具有一或更多個CPU晶粒之積體電路(Integrated Circuit; IC)部件封裝中。對比而言,遠記憶體可包括在遠端計算裝置、加速器、記憶體緩衝器或智慧型I/O裝置上之額外記憶體,CPU可經由CXL或其他適當類型的協定與其介面連接。舉例而言,在資料中心中,多個伺服器/伺服器葉片上之多個記憶體裝置可經匯集以可分配給伺服器/伺服器葉片中之一者上的單個CPU。CPU可經由資料中心中之電腦網路存取已分配之此遠記憶體。
在某些實施中,CPU可包括整合至電子封裝中之多個個別處理器或核心。核心可個別地包括一或更多個算術邏輯單元、浮點單元、L1/L2快取記憶體及/或其他適當部件。電子封裝亦可包括經配置以促進核心的操作之一或更多個周邊部件。此些周邊部件之實例可包括由CPU中之多個核心共享的QuickPath
®互連控制器、系統級快取記憶體或SLC(例如,L3快取記憶體)、監聽代理管線、經配置以管理SLC之SLC控制器,及/或其他適當部件。
亦在本文中使用,「快取行」大體代表在快取記憶體(例如,L1、L2或SLC)與記憶體(例如,近或遠記憶體)之間移送的資料之單位。快取行可包括32、64、128或其他適當數目個位元組。當讀取或寫入快取行中之任何位置時,核心可讀取或寫入整個快取行。在某些實施中,當近記憶體被配置為對換緩衝器而非CPU之專用快取記憶體時,多個快取行可經配置以交替地共享近記憶體處之記憶體區塊。交替地共享近記憶體處之記憶體區塊的多個快取行可稱作快取記憶體集合。如此,在不同時間,近記憶體處之記憶體區塊可含有多個快取行中之一者而非其他者的資料。
在某些實施中,快取記憶體集合中之多個快取行可經配置(例如,經由散列)以儲存在單個SLC記憶體空間中,該SLC記憶體空間稱作SLC片,其個別地具有資料陣列及標籤陣列。資料陣列可經配置以儲存個別快取行之資料的複本,而標籤陣列可包括多個位元,該多個位元經配置以指示儲存在對應資料陣列中之資料的某些屬性。舉例而言,根據所揭示技術之實施例,標籤陣列可經配置以包括每一快取行之有效性位元及包容性位元。在其他實施例中,標籤陣列可包括包容性位元而無有效性位元,或具有其他適當位元及/或配置。如本文中更詳細地描述,包容性位元可經配置以監控快取記憶體系統中之包容性狀態並相應地修改計算裝置中之操作。
第1圖為根據所揭示技術之實施例的繪示實施記憶體包容性管理之分散式計算系統100的示意圖。如第1圖中所示,分散式計算系統100可包括底層網路108,該底層網路108與複數個主機106、與對應使用者101相關聯之複數個客戶端裝置102及以可操作方式彼此耦接之平臺控制器125互連。平臺控制器125可為群集控制器、組構控制器、資料庫控制器,及/或經配置以監控並管理分散式計算系統100中之伺服器106及/或其他部件的資源及操作之其他適當類型的控制器。儘管第1圖中示出了分散式計算系統100之部件,但在其他實施例中,分散式計算系統100亦可包括額外及/或不同的部件或佈置。舉例而言,在某些實施例中,分散式計算系統100亦可包括網路儲存裝置、額外主機,及/或呈其他適當配置之其他適當部件(未示出)。
如第1圖中所示,底層網路108可包括一或更多個網路節點112,其使多個主機106與使用者101之客戶端裝置102互連。在某些實施例中,主機106可被組織成機架、行動區、群組、集合或其他適當分區。舉例而言,在所繪示實施例中,將主機106分組成三個主機集合,分別標識為第一、第二及第三主機集合107a~107c。主機集合107a~107c中之每一者分別以可操作方式耦接至對應的網路節點112a~112c,其統稱為「機架頂部」網路節點或「TOR」。TOR 112a~112c可接著以可操作方式耦接至額外網路節點112以便以分層的、平直的、網狀或其他適當拓撲形成電腦網路。底層網路可允許主機106、平臺控制器125及使用者101之間的通訊。在其他實施例中,多個主機集合107a~107c可共享單個網路節點112或可具有其他適當佈置。
主機106可個別地經配置以向使用者101提供計算、儲存及/或其他適當的雲端或其他適當類型之計算服務。舉例而言,如以下參考第2圖更詳細地描述,主機106中之一者可以根據來自使用者101之請求啟動並維護一或更多個虛擬機144(第2圖中所示)或容器(未示出)。使用者101可接著利用所提供之虛擬機144或容器以執行資料庫、計算、通訊及/或其他適當任務。在某些實施例中,主機106中之一者可為多個使用者101提供虛擬機144。舉例而言,主機106a可代管分別對應於使用者101a~101c中之每一者的三個虛擬機144。在其他實施例中,多個主機106可代管針對使用者101a~101c之虛擬機144。
客戶端裝置102可各自包括計算裝置,該計算裝置促進使用者101經由底層網路108存取主機106所提供之計算服務。在所繪示實施例中,客戶端裝置102個別地包括桌上型電腦。在其他實施例中,客戶端裝置102亦可包括膝上型電腦、平板電腦、智慧型電話或其他適當計算裝置。儘管第1圖中出於說明目的示出三個使用者101,但在其他實施例中,分散式計算系統100可促進任何適當數目個使用者101存取由分散式計算系統100中之主機106所提供的雲端或其他適當類型之計算服務。
第2圖為根據所揭示技術的實施例之繪示分散式計算系統100的某些硬體/軟體部件之示意圖。第2圖繪示覆蓋網路108',其可實施在第1圖中之底層網路108上。儘管在第2圖中繪示出覆蓋網路108'之特定配置,但在其他實施例中,亦可以其他適當方式配置覆蓋網路108'。在第2圖中,為了清楚起見而僅示出第1圖之底層網路108的某些部件。
在第2圖中及在本文中之其他諸圖中,個別軟體部件、物件、類別、模組及例程可為以C、C++、C#、Java及/或其他適當程式化語言編寫為源代碼之電腦程式、程序或過程。部件可包括而不限於一或更多個模組、物件、類別、例程、性質、過程、執行緒、可執行文件、庫或其他部件。部件可呈源形式或二進位形式。部件可包括編譯前之源代碼態樣(例如,類別、性質、程序、例程)、經編譯之二進位單元(例如,庫、可執行文件)或在運行時實例化並使用之製品(例如,物件、過程、執行緒)。
系統內之部件可在系統內採取不同形式。作為一個實例,包括第一部件、第二部件及第三部件之系統可涵蓋(而不限於)使第一部件為源代碼中之性質、第二部件為二進位編譯之庫且第三部件為在運行時創建之執行緒的系統。電腦程式、程序或過程可被編譯成物件、中間代碼或機器代碼並經呈現以供個人電腦、網路伺服器、膝上型電腦、智慧型電話及/或其他適當計算裝置之一或更多個處理器執行。
同樣,部件可包括硬體電路系統。一般技藝人士將認識到,硬體可被視為僵化之軟體,而軟體可被視為液化之硬體。僅作為一個實例,部件中之軟體指令可被燒錄至可程式化邏輯陣列電路中,或可被設計為具有適當積體電路之硬體電路。同樣,可藉由軟體來模擬硬體。源代碼、中間代碼及/或目標代碼以及相關聯資料之各種實施可儲存在電腦記憶體中,該電腦記憶體包括唯讀記憶體、隨機存取記憶體、磁碟儲存媒體、光學儲存媒體、快閃記憶體裝置及/或不包括傳播信號之其他適當的電腦可讀儲存媒體。
如第2圖中所示,源主機106a及目的地主機106b及106b'(僅藉由詳細部件示出目的地主機106b)可各自包括以可操作方式彼此耦接之CPU 132、記憶體134、網路介面卡136及封包處理器138。在其他實施例中,主機106亦可包括輸入/輸出裝置,該等輸入/輸出裝置經配置以接收來自操作員及/或自動化軟體控制器(未示出)或其他適當類型的硬體部件之輸入並向其提供輸出。在另外實施例中,可自主機106中之一或更多者省去某些部件(諸如,封包處理器138)。
CPU 132可包括微處理器、快取記憶體及/或其他適當邏輯裝置。記憶體134可包括揮發性及/或非揮發性媒體(例如,ROM;RAM;磁碟儲存媒體;光學儲存媒體;快閃記憶體裝置及/或其他適當儲存媒體),及/或其他類型之電腦可讀儲存媒體,其經配置以儲存自CPU 132接收到之資料以及用於CPU 132之指令(例如,用於執行以下參考第4A圖至第4C圖所論述之方法的指令)。以下參考第3A圖至第3E圖更詳細地描述CPU 132及記憶體134之某些實例配置。儘管第2圖中為了說明而在個別主機106中僅示出一個CPU 132及一個記憶體134,但在其他實施例中,個別主機106可包括兩個、四個、六個、八個或任何其他適當數目個CPU 132及/或記憶體134。
源主機106a及目的地主機106b可單獨地含有在記憶體134中之可由CPU 132執行的指令,以使個別CPU 132提供超管理器140(分別標識為第一超管理器140a及第二超管理器140b)及作業系統141(分別標識為第一作業系統141a及第二作業系統141b)。儘管將超管理器140及作業系統141示為獨立部件,但在其他實施例中,超管理器140可在作業系統141頂部上運行,該作業系統141在主機106或主機106的韌體部件上執行。
超管理器140可單獨地經配置以產生、監控、終止及/或以其他方式管理被組織成租戶站點142之一或更多個虛擬機144。舉例而言,如第2圖中所示,源主機106a可提供第一超管理器140a,其分別管理第一租戶站點142a及第二租戶站點142b。目的地主機106b可提供第二超管理器140b,其分別管理第一租戶站點142a'及第二租戶站點142b'。第2圖中將超管理器140單獨地示為軟體部件。然而,在其他實施例中,超管理器140可為韌體及/或硬體部件。租戶站點142可各自包括針對特定租戶(未示出)之多個虛擬機144。舉例而言,源主機106a及目的地主機106b可均代管針對第一租戶101a(第1圖)之租戶站點142a及142a'。源主機106a及目的地主機106b可均代管針對第二租戶101b(第1圖)之租戶站點142b及142b'。每一虛擬機144可執行對應作業系統、中介軟體及/或應用程式。
亦在第2圖中示出,分散式計算系統100可包括具有一或更多個虛擬網路146之覆蓋網路108',該一或更多個虛擬網路146使租戶站點142a及142b跨多個主機106互連。舉例而言,第一虛擬網路142a使第一租戶站點142a及142a'在源主機106a及目的地主機106b處互連。第二虛擬網路146b使第二租戶站點142b及142b'在源主機106a及目的地主機106b處互連。儘管將單個虛擬網路146示為對應於一個租戶站點142,但在其他實施例中,多個虛擬網路146(未示出)可經配置以對應於單個租戶站點146。
虛擬機144可經配置以執行一或更多個應用程式147以向使用者101(第1圖)提供適當的雲端或其他適當類型之計算服務。舉例而言,源主機106a可執行應用程式147,該應用程式147經配置以提供計算服務,該計算服務監控線上交易並將價格資料分配給訂閱計算服務之多個使用者101。虛擬網路146上之虛擬機144亦可經由底層網路108(第1圖)彼此通訊,即使虛擬機144位於不同主機106上。
虛擬網路146中之每一者的通訊可與其他虛擬網路146隔離開。在某些實施例中,可允許通訊經由安全閘道或以其他方式以受控方式自一個虛擬網路146跨越至另一者。虛擬網路位址可對應於特定虛擬網路146中之虛擬機144中的一者。因此,不同虛擬網路146可使用相同的一或更多個虛擬網路位址。實例虛擬網路位址可包括IP位址、MAC位址及/或其他適當位址。為了促進虛擬機144之間的通訊,虛擬交換機(未示出)可經配置以交換或過濾封包,該等封包係經由網路介面卡136導向至不同虛擬機144並由封包處理器138協助。
如第2圖中所示,為了促進彼此間或與外部裝置之通訊,個別主機106亦可包括網路介面卡(network interface card; 「NIC」)136以與電腦網路(例如,第1圖之底層網路108)介面連接。NIC 136可包括網路配接器、LAN配接器、實體網路介面或其他適當的硬體電路系統及/或韌體,以使得能夠藉由經由網路媒體(例如,光纖)根據乙太網路、光纖通道、Wi-Fi或其他適當實體的及/或資料鏈路層標準來傳輸/接收資料(例如,作為封包)而在主機106之間進行通訊。在操作期間,NIC 136可促進與在主機106上執行的適當軟體部件/自該等適當軟體部件之通訊。實例軟體部件可包括虛擬交換機141、虛擬機144、在虛擬機144上執行之應用程式147、超管理器140或其他適當類型的部件。
在某些實施中,封包處理器138可與NIC 136互連及/或與NIC 136整合,以促進網路訊務操作,其用於強加通訊安全、執行網路虛擬化、轉譯網路位址、維護/限制通訊流狀態或執行其他適當功能。在某些實施中,封包處理器138可包括與NIC 136整合在一起之現場可程式化閘極陣列(Field-Programmable Gate Array;「FPGA」)。
FPGA可包括邏輯電路之陣列及可重新配置互連件之階層架構,其允許使用者在製造後將邏輯電路如同邏輯閘一般「有線連接在一起」。如此,使用者101可配置FPGA中之邏輯區塊以執行複雜的組合功能或僅執行簡單的邏輯運算以便以遠比軟體中更快之速度合成可在硬體中執行的等效功能。在所繪示實施例中,封包處理器138使一個介面以通訊方式耦接至NIC 136且另一介面另外耦接至網路交換機(例如,機架頂部或「TOR」交換機)。在其他實施例中,封包處理器138亦可包括特殊應用積體電路(Application Specific Integrated Circuit ; 「ASIC」)、微處理器或其他適當的硬體電路系統。
在操作中,CPU 132及/或使用者101(第1圖)可配置封包處理器138中之邏輯電路,以執行複雜的組合功能或簡單的邏輯運算,以便以遠比軟體中更快之速度合成可在硬體中執行的等效功能。舉例而言,封包處理器138可經配置以根據流表(諸如,MAT)中所含之配置策略或規則來處理個別流的入站/出站封包。流表可含有表示對應於每個流之處理動作的資料,用於啟用具有消費者供應之位址空間、可擴展負載平衡器、安全群組及存取控制列表(Access Control List; 「ACL」)、虛擬路由表、頻寬計量、服務品質(Quality of Service; 「QoS」)等的私用虛擬網路。
如此,一旦封包處理器138將入站/出站封包標識為屬於特定流,則封包處理器138可在將經處理封包轉遞至NIC 136或TOR 112之前應用流表中之一或更多個對應策略。舉例而言,如第2圖中所示,應用程式147、虛擬機144及/或源主機106a上之其他適當軟體部件可產生出站封包,其目的地為(例如)目的地主機106b及106b'處之其他應用程式147。源主機106a處之NIC 136可將已產生之封包轉遞至封包處理器138,用於根據流表中之某些策略進行處理。一經處理,封包處理器138便可將出站封包轉遞至第一TOR 112a,其繼而經由覆蓋/底層網路108及108'將該封包轉遞至第二TOR 112b。
第二TOR 112b可接著將封包轉遞至目的地主機106b及106b'處之封包處理器138以根據目的地主機106b及106b'處之另一流表中的其他策略進行處理。若封包處理器138無法將封包標識為屬於任何流,則封包處理器138可經由NIC 136將封包轉遞至CPU 132以用於異常處理。在另一實例中,當第一TOR 112a(例如)經由第二TOR 112b自目的地主機106b接收入站封包時,第一TOR 112a可將該封包轉遞至封包處理器138以便根據與封包流相關聯之策略進行處理。封包處理器138可接著將經處理封包轉遞至NIC 136,以便轉遞至(例如)應用程式147或虛擬機144。
在某些實施例中,記憶體134可包括近記憶體170及遠記憶體172(在第3A圖至第3E圖中示出)。近記憶體170可為極高速記憶體,其充當遠記憶體與CPU 132之間的緩衝器,以保持頻繁使用之快取行及指令,以便CPU 132立即可用。舉例而言,某些電腦可包括與CPU 132封裝在一起之雙倍資料速率(Double Data Rate; DDR)同步動態隨機存取記憶體(Synchronous Dynamic Random-Access Memory; SDRAM),作為CPU 132之快取記憶體。除了近記憶體170以外,CPU 132亦可經由計算快速鏈接(Compute Express Link; CXL)或其他適當類型之介面協定與遠記憶體172介面連接。
在某些實施中,L1、L2、SLC及近記憶體170可以階層架構方式形成具有多級快取記憶體之快取記憶體系統。舉例而言,CPU 132中之核心可嘗試以順序方式定位L1、L2、SLC及近記憶體170中之快取行。然而,當近記憶體170經配置作為遠記憶體172之對換緩衝器而非CPU 132之專用快取記憶體時,維持快取記憶體系統中之包容性可能困難。針對前述困難之一種解決方案為配置快取記憶體系統以經由反向失效在所有級之快取記憶體中強加包容性。但此種失效會引入實質性的運算複雜性並增加執行潛時,因為頻繁使用之快取行可能會由於對換緩衝器中之讀取/寫入操作而失效。因此,在主機106中強加包容性可能會負面地影響系統效能。
當將近記憶體實施為電腦裝置中之對換緩衝器時,所揭示技術之若干實施例可解決對系統效能之前述影響。在某些實施例中,交替共享近記憶體170之記憶體區塊的資料分區(例如,一或更多個快取行)可被分組成資料集或快取記憶體集合。可(例如)在SLC控制器處實施散列函數,使得快取記憶體集合中之所有快取行皆被儲存在單個SLC片中。在操作期間,SLC控制器可經配置以在讀取或寫入資料至快取行時跟踪快取記憶體系統中之包容性狀態,並根據快取記憶體系統中之包容性狀態來修改快取記憶體系統中的操作,如以下參考第3A圖至第3E圖更詳細地描述。
第3A圖至第3E圖為根據所揭示技術的實施例之繪示處在實例操作階段期間之第1圖的分散式計算系統之某些硬體/軟體部件的示意圖。如第3A圖中所示,主機106可包括以可操作方式彼此耦接之CPU 132、SLC控制器150、SLC 151、記憶體控制器135、近記憶體170及遠記憶體172。儘管第3A圖中示出特定部件,但在其他實施例中,主機106亦可包括額外及/或不同的部件。
在所繪示實施例中,CPU 132可包括單獨地具有L1/L2快取記憶體139之多個核心133(繪示為核心1、核心2、核心N)。主機106亦可包括SLC控制器150,其以可操作方式耦接至CPU 132且經配置以管理SLC 151之操作。在所繪示實施例中,SLC 151被分區成多個SLC片154(繪示為SLC片1、SLC片2、SLC片M),其單獨地經配置以含有一或更多個資料集(諸如,快取記憶體集合158)之資料及元資料。每一快取記憶體集合158可包括標籤陣列155及資料陣列156(為了簡要起見僅繪示出一個快取記憶體集合158)。儘管在第3A圖中僅將一個快取記憶體集合158示為被儲存在SLC片M處,但在其他實施例中,每一SLC片154可儲存兩個、三個或任何適當數目個快取記憶體集合158。
在某些實施中,記憶體控制器135可經配置以將近記憶體170操作為針對遠記憶體172之對換緩衝器137,而非CPU 132之專用快取記憶體。如此,CPU 132可繼續在近記憶體170中快取資料,而近記憶體170及遠記憶體172作為可定址系統記憶體被暴露給作業系統141(第2圖)。近記憶體170與遠記憶體172之間的儲存空間之比率可為靈活的。近記憶體170與遠記憶體172之間的比率可為一至大於或等於一的任何整數。在一個實例中,系統記憶體位址之範圍可由近記憶體170及遠記憶體172按一比三之比率組合覆蓋。如此,可將系統系統之範圍劃分成四個分區,例如,A、B、C及D(稱作「T1set」)。每一分區可包括可交替儲存在近記憶體170中之對換緩衝器137中的資料部分157(例如,512個位元)及元資料部分159(例如,128個位元)。資料部分157可經配置以含有表示在主機106中執行之使用者資料或指令的資料。元資料部分159可包括表示資料部分156中之資料的各種屬性之資料。舉例而言,元資料部分159可包括錯誤檢查及校正位元或其他適當類型之資訊。
在某些實施中,近記憶體170中之元資料部分159中的若干位元可經配置以指示(1)近記憶體170當前保持系統記憶體之範圍的哪一分區;及(2)系統記憶體之範圍的額外分區在遠記憶體172中之位置。在具有系統記憶體之四個分區的實例中,近記憶體170中之元資料部分159中的八個位元可經配置以指示前述資訊。舉例而言,第一對前兩個位元可經配置以指示目前在近記憶體170中保持哪一分區,如下:
如此,當位元1及位元2分別含有零及零時,記憶體控制器135可容易地決定近記憶體170含有來自系統記憶體之分區A的資料,如第3A圖中所示。
位元1 | 位元2 | 分區ID |
0 | 0 | A |
0 | 1 | B |
1 | 0 | C |
1 | 1 | D |
雖然前兩個位元對應於近記憶體170,但額外的六個位元可細分成三對,其分別對應於遠記憶體172中之位置。舉例而言,第二、第三及第四對可各自對應於遠記憶體172中之第一、第二或第三位置172a~172c,如下:
第一對(位元1及位元2) | 近記憶體 |
第二對(位元3及位元4) | 遠記憶體中之第一位置 |
第三對(位元5及位元6) | 遠記憶體中之第二位置 |
第四對(位元7及位元8) | 遠記憶體中之第三位置 |
如此,記憶體控制器135可容易地決定來自系統記憶體之特定分區的資料係在遠記憶體172中何處,即使該資料目前不在近記憶體170中。舉例而言,當第二對(亦即,位元3及位元4)含有(1,1)時,記憶體控制器135可經配置以決定對應於系統記憶體之分區D的資料在遠記憶體172中之第三位置172c中。當第三對(亦即,位元5及位元6)含有(1,0)時,記憶體控制器135可經配置以決定對應於系統記憶體之分區C的資料在遠記憶體172中之第二位置172b中。當第四對(亦即,位元7及位元8)含有(0,1)時,記憶體控制器135可經配置以決定對應於系統記憶體之分區B的資料在遠記憶體172中之第一位置172b中,如第3A圖中所繪示。
使用來自近記憶體170中之元資料部分159的資料,記憶體控制器135可經配置以使用近記憶體170作為對換緩衝器137來管理近記憶體170與遠記憶體172之間的對換操作。舉例而言,在讀取操作期間,當對應於分區A之資料目前未駐存在SLC 151、L1或L2快取記憶體中時,CPU 132可向記憶體控制器135發佈命令以讀取此資料。作為回應,記憶體控制器135可經配置以自近記憶體170讀取,以自近記憶體170之資料部分157及元資料部分159擷取資料。記憶體控制器135可接著經配置以使用上表決定已擷取資料對應於系統記憶體之哪一分區,及已決定分區是否匹配將要讀取之目標分區。舉例而言,當目標分區為分區A且來自元資料部分159之前兩個位元含有(0,0)時,記憶體控制器135可經配置以決定已擷取資料係來自分區A(例如,「A資料162a」)。因此,記憶體控制器135可將已擷取之A資料162a轉遞至請求實體,諸如,由CPU 132執行之應用程式。
另一方面,當來自元資料部分之前兩個位元含有(0,1)而非(0,0)時,記憶體控制器135可經配置以決定已擷取資料屬於分區B(稱作「B資料162b」),而非A資料162a。記憶體控制器135可接著繼續檢查元資料部分159中之額外位元,以決定哪對位元含有(0,0)。舉例而言,當來自元資料部分之第二對(位元3及位元4)含有(0,0)時,記憶體控制器135可經配置以決定A資料162a位於遠記憶體172中之第一位置172a處。作為回應,記憶體控制器135可經配置以自遠記憶體172中之第一位置172a讀取A資料162a,並將A資料162a提供至請求實體。記憶體控制器135可接著經配置以將已擷取之A資料162a寫入近記憶體中且將先前已擷取之B資料162b寫入遠記憶體172中之第一分區172a。記憶體控制器135亦可經配置以修改近記憶體170中之元資料部分159中的位元,以反映分區A與分區B之間的對換。儘管以上描述了用以實施近記憶體170與遠記憶體172之間的對換操作之特定機制,但在其他實施中,記憶體控制器135可經配置而以其他適當方式執行對換操作。
如第3A圖中所示,SLC控制器152可經配置以實施散列函數152,該散列函數152經配置以使SLC控制器150將T1set之所有分區儲存在單個SLC片154(例如,第3A圖中之SLC片M)中。根據所揭示技術之若干實施例,標籤陣列155可經配置以包括標籤(示為「標籤A」、「標籤B」、「標籤C」及「標籤D」),其各自具有資料,諸如,A、B、C及D分區中之每一者的有效性位元及包容性位元(在第3B圖中示出)。在其他實施例中,標籤陣列155可包括包容性位元而無有效性位元及/或包括其他適當類型之資料。
使用包容性位元,SLC控制器150可經配置以監控快取記憶體系統(諸如,對換緩衝器137)中之包容性狀態,並相應地修改主機106中之操作。舉例而言,如第3A圖中所示,在自CPU 132之核心1接收請求160以讀取資料A 162a之後,SLC控制器150可首先檢查資料A 162a是否已在SLC 151中。如此,SLC控制器150可利用散列函數152以散列請求160的至少一部分以決定哪一SLC片154對應於資料A 162a。在所繪示實例中,SLC片M對應於資料A 162a。因此,SLC控制器150可讀取SLC片M以決定資料A 162a之複本是否已存在。回應於決定資料A 162a之複本當前在SLC片M中不可用,SLC控制器150可將請求160轉遞至記憶體控制器135,以自近記憶體170中之對換緩衝器137請求資料A 162a之複本。
在接收到讀取資料A 162a的請求160之後,記憶體控制器135可經配置以使用元資料部分159中之元資料決定資料A 162a當前是否在對換緩衝器137中,如以上所述。在所繪示實例中,資料A 162a確實在對換緩衝器137中。如此,記憶體控制器135自近記憶體170讀取資料A 162a並將資料A 162a傳輸至SLC控制器150,如在第3B圖中所示。如在第3B圖中所示,在自記憶體控制器135接收到資料A 162a之後,SLC控制器150可經配置以將資料A 162a之複本儲存在SLC片M中之資料陣列156中,且將分區A之有效性位元(示為「V」)及包容性位元(示為「I」)設定為真(例如,設定成為值1)。當包容性位元指示近記憶體170中之對換緩衝器137亦含有資料A 162a之複本時,有效性位元指示儲存在SLC片M中之資料A 162a有效。作為對請求160(在第3A圖中示出)的回應,SLC控制器150亦可經配置以將資料A 162a之複本轉遞至CPU 132之核心1。
如第3C圖中所示,隨後,核心1可傳輸將分區A之新資料162a'寫入至對換緩衝器137的請求161。當處理請求161時,SLC控制器150可經配置以自SLC片M擷取標籤陣列155,並決定分區A之包容性位元是否為真。在決定分區A之包容性位元為真後,如在第3C圖之實例中所繪示,SLC控制器150可經配置以指示記憶體控制器135將分區A之新資料162a'直接寫入至對換緩衝器137,而無進一步驗證,因為維持了包容性。
然而,在其他操作情境下,某些介入操作可導致對換緩衝器137含有其他分區而非分區A之資料。舉例而言,如第3D圖中所示,在如第3B圖中所示讀取了資料A 162a後,藉由核心N 133在CPU 132處執行之過程可向SLC控制器150發佈讀取資料B 162b的另一請求160'。作為回應,SLC控制器150可散列請求160'以決定SLC片M對應於資料B 162b並檢查資料B 162b之複本是否在SLC片M處已可用。
回應於決定資料B 162b當前在SLC片M處不可用,SLC控制器150可經配置以向記憶體控制器135請求資料B 162b之複本。作為回應,記憶體控制器135可執行上述對換操作以自遠記憶體172中之第一位置172a讀取資料B 162b,將資料B 162b之複本儲存在對換緩衝器137中,將資料B 162b之複本提供至SLC控制器150,並將資料A 162a之複本寫入至遠記憶體172中之第一位置172a。在接收到資料B 162b之複本後,SLC控制器150可經配置以將分區B之有效性及包容性位元設定為真,而同時將分區A之包容性位元修改為非真,如在第3D圖中所示。如此,分區A之有效性位元指示SLC片M中之資料A 162a的複本仍有效,儘管近記憶體170處之對換緩衝器137可能並非亦含有資料A 162a之複本。
如第3E圖中所示,在讀取第3D圖中所示之資料B 162b之後,核心1可發佈將新資料162a'寫入至分區A的請求161。在接收到請求161之後,SLC控制器150可經配置以決定分區A之包容性位元非真(以相反對比度顯示)。如此,SLC控制器150可經配置以向記憶體控制器135提供分區A的新資料162a'連同指示符163,該指示符163指示近記憶體170中之對換緩衝器137可能並不含有資料A 162a。基於指示符163,記憶體控制器135可經配置以執行額外操作,諸如,自對換緩衝器137中之元資料部分159擷取元資料166,以決定資料A 162a當前位於遠記憶體172中之第一位置172a處,如上所述。作為回應,記憶體控制器135可將新資料162a'轉遞至遠記憶體172以將其儲存在遠記憶體172中之第一位置172a處,而非將新資料162a'寫入至近記憶體170中之對換緩衝器137。
當將近記憶體170用作對換緩衝器137而非CPU 132之專用快取記憶體時,以上所揭示技術之若干實施例可因此提高主機106之系統效能。使用效能模擬,發明人已認識到,主機106中之大量操作不涉及介入如第3D圖及第3E圖中所示之彼些操作的讀取/寫入操作。如此,時常維持多個級之快取記憶體處的包容性。因此,藉由使用標籤陣列155中之包容性位元來監控快取記憶體系統中之包容性狀態,經常可避免在記憶體控制器135進行的寫入操作之前對第3E圖中之元資料166的額外讀取。因此,可改良計算裝置之執行潛時及/或其他系統效能。
第4A圖至第4C圖為根據所揭示技術的實施例之繪示記憶體包容性管理的某些過程之流程圖。儘管以下在第1圖至第3E圖之分散式計算系統100的上下文中描述過程之實施例,但在其他實施例中,該等過程之態樣可實施在具有額外及/或不同部件之計算系統中。
如第4A圖中所示,過程200可包括在階段202中在SLC控制器處接收自近記憶體讀取快取行的請求。近記憶體可經配置作為遠記憶體之對換緩衝器,如參考第3A圖所述。過程200可接著包括在階段204中自近記憶體擷取快取行之資料。過程200可進一步包括在階段206處將經擷取之快取行的包容性位元設定為真。包容性位元指示SLC以及近記憶體中之對換緩衝器是否含有對應於同一快取行之資料,如以上參考第3B圖更詳細地描述。
第4B圖為繪示用於將新資料寫入至快取行之過程210的流程圖。如第4B圖中所示,過程210可包括在階段212中接收寫入至快取行的請求。過程210接著包括決策階段214以決定關於快取記憶體系統中之快取行的包容性是否為真。以下參考第4C圖更詳細地描述用於執行此決定之實例操作。回應於決定關於快取記憶體系統中之快取行的包容性為真,過程210可包括在階段218中傳輸指令以將新資料直接寫入至近記憶體中之對換緩衝器。否則,過程210可包括在階段216中將通知傳輸至記憶體控制器,該通知指示關於快取行之包容性的缺乏。過程210可進一步包括在階段220中驗證近記憶體的對換緩衝器中之資料的身份並在階段222中寫入至遠記憶體中之位置,如以上參考第3E圖更詳細地描述。
如在第4C圖中所示,用於決定關於快取記憶體系統中之快取行的包容性是否為真可包括在階段230中擷取含有每一分區的包容性位元之標籤陣列。該等操作可接著包括決策階段以決定快取行之包容性位元是否為真。回應於決定包容性位元為真,操作進行至在階段234中指示關於快取行之包容性為真。否則,操作進行至在階段236中指示關於快取行之包容性為不真。
第5圖為適合於第1圖中之分散式計算系統100的某些部件之計算裝置300。舉例而言,計算裝置300可能適合於第1圖之主機106、客戶端裝置102或平臺控制器125。在非常基礎的配置302中,計算裝置300可包括一或更多個處理器304及系統記憶體306。記憶體匯流排308可用於在處理器304與系統記憶體306之間通訊。
取決於所需配置,處理器304可為任何類型,包括但不限於微處理器(μP)、微控制器(μC)、數位信號處理器(digital signal processor; DSP)或其任何組合。處理器304可包括一個以上快取級(諸如,一級快取記憶體310及二級快取記憶體312)、處理器核心314及暫存器316。實例處理器核心314可包括算術邏輯單元(arithmetic logic unit; ALU)、浮點單元(floating-point unit; FPU)、數位信號處理核心(DSP核心)或其任何組合。實例記憶體控制器318亦可與處理器304一起使用,或在一些實施中,記憶體控制器318可為處理器304的內部部分。
取決於所需配置,系統記憶體306可為任何類型,包括但不限於揮發性記憶體(諸如,RAM)、非揮發性記憶體(諸如,ROM、快閃記憶體,等)或其任何組合。系統記憶體306可包括作業系統320、一或更多個應用程式322及程式資料324。如第5圖中所示,作業系統320可包括用於管理一或更多個虛擬機144之超管理器140。在第5圖中藉由在內虛線以內之彼些部件繪示出此種已描述之基本配置302。
計算裝置300可具有額外特徵或功能以及額外介面,以促進基本配置302與任何其他裝置及介面之間的通訊。舉例而言,匯流排/介面控制器330可用以促進基本配置302與一或更多個資料儲存裝置332之間經由儲存介面匯流排334的通訊。資料儲存裝置332可為可移除儲存裝置336、不可移除儲存裝置338或其組合。可移除儲存裝置及不可移除儲存裝置之實例包括磁碟裝置(諸如,軟碟驅動器及硬碟驅動器(hard-disk drive; HDD))、光碟驅動器(諸如,緊密光碟(compact disk; CD)驅動器或數位多功能光碟(digital versatile disk; DVD)驅動器)、固態驅動器(solid state drive; SSD)及磁帶驅動器,僅列舉幾種。實例電腦儲存媒體可包括在用於資訊(諸如,電腦可讀指令、資料結構、程式模組或其他資料)儲存之任何方法或技術中實施之揮發性及非揮發性、可移除及不可移除媒體。術語「電腦可讀儲存媒體」或「電腦可讀儲存裝置」不包括傳播信號及通訊媒體。
系統記憶體306、可移除儲存裝置336及不可移除儲存裝置338為電腦可讀儲存媒體之實例。電腦可讀儲存媒體包括但不限於RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術、CD-ROM、數位多功能光碟(DVD)或其他光學儲存器、磁帶盒、磁帶、磁碟儲存器或其他磁性儲存裝置,或可用以儲存所需資訊並可由計算裝置300存取之任何其他媒體。任何此種電腦可讀儲存媒體可為計算裝置300的一部分。術語「電腦可讀儲存媒體」不包括傳播信號及通訊媒體。
計算裝置300亦可包括介面匯流排340,用於促進自各種介面裝置(例如,輸出裝置342、周邊介面344及通訊裝置346)經由匯流排/介面控制器330至基礎配置302之通訊。實例輸出裝置342包括圖形處理單元348及音訊處理單元350,其可經配置以經由一或更多個A/V埠352與各種外部裝置(諸如,顯示器或揚聲器)通訊。實例周邊介面344包括串行介面控制器354或並行介面控制器356,其可經配置以經由一或更多個I/O埠358與外部裝置通訊,諸如,輸入裝置(例如,鍵盤、滑鼠、筆、語音輸入裝置、觸控式輸入裝置,等)或其他周邊裝置(例如,列印機、掃描器,等)。實例通訊裝置346包括網路控制器360,其可經佈置以促進經由一或更多個通訊埠364在網路通訊鏈路上與一或更多個其他計算裝置362通訊。
網路通訊鏈路可為通訊媒體之一個實例。通訊媒體通常可由電腦可讀指令、資料結構、程式模組或經調變資料信號中之其他資料(諸如,載波或其他輸送機制)來體現,且可包括任何資訊輸送媒體。術語「經調變資料信號」可為一種信號,此信號以將資訊編碼在信號中之方式設定或改變其特性中之一或更多者。藉助於實例且並非限制,通訊媒體可包括有線媒體(諸如,有線網路或直連連接),及無線媒體(諸如,聲學、射頻(radio frequency; RF)、微波、紅外線(infrared; IR)及其他無線媒體)。如本文中所使用,術語電腦可讀媒體可包括儲存媒體及通訊媒體。
計算裝置300可實施為小的外形尺寸之可攜式(或行動)電子裝置的一部分,諸如,包括上述功能中的任一者之蜂巢式電話、個人快取行助理(personal cacheline Assistant; PDA)、個人媒體播放器裝置、無線網路手錶裝置、個人頭戴式耳機裝置、專用裝置或混合裝置。計算裝置300亦可實施為個人電腦,包括膝上型電腦或非膝上型電腦配置。
自前文,將瞭解,本文中已出於說明目的描述了本揭示案之特定實施例,但可在不偏離本揭示案的情況下作出各種修改。另外,除了其他實施例之元件以外或替代於其他實施例之元件,一個實施例之許多元件可與其他實施例組合。因此,除了受附加申請專利範圍限制外,本技術不受限制。
100:分散式計算系統
101:使用者
101a:使用者
101b:使用者
101c:使用者
102:客戶端裝置
106:主機
106a:源主機
106b:目的地主機
107a:主機集合
107b:主機集合
107c:主機集合
108:底層網路
108':覆蓋網路
112:網路節點
112a:網路節點
112b:網路節點
112c:網路節點
125:平臺控制器
132:CPU
133:核心
134:記憶體
135:記憶體控制器
136:網路介面卡
137:對換緩衝器
138:封包處理器
139:L1/L2快取記憶體
140:超管理器
140a:第一超管理器
140b:第二超管理器
141a:第一作業系統
141b:第二作業系統
142:租戶站點
142a:第一租戶站點
142a':第一租戶站點
142b:第二租戶站點
142b':第二租戶站點
144:虛擬機
146a:第一虛擬網路
146b:第二虛擬網路
147:應用程式
150:SLC控制器
151:SLC
152:散列函數
154:SLC片
155:標籤陣列
156:資料陣列
157:資料部分
158:快取記憶體集合
159:元資料部分
160:請求
160':請求
161:請求
162a:A資料
162a':新資料
162b:B資料
163:指示符
166:元資料
170:近記憶體
172:遠記憶體
172a:第一位置
172b:第一位置
172c:第一位置
200:過程
202:階段
204:階段
206:階段
210:過程
212:階段
214:決策階段
216:階段
218:階段
220:階段
222:階段
230:階段
232:階段
234:階段
236:階段
300:計算裝置
302:基礎配置
304:處理器
306:系統記憶體
308:記憶體匯流排
310:一級快取記憶體
312:二級快取記憶體
314:處理器核心
316:暫存器
318:記憶體控制器
320:作業系統
322:應用程式
324:程式資料
330:匯流排/介面控制器
332:資料儲存裝置
334:儲存介面匯流排
336:可移除儲存裝置
338:不可移除儲存裝置
342:輸出裝置
344:周邊介面
346:通訊裝置
348:圖形處理單元
350:音訊處理單元
352:A/V埠
354:串行介面控制器
356:並行介面控制器
358:I/O埠
360:網路控制器
362:計算裝置
364:通訊埠
第1圖為根據所揭示技術的實施例之繪示實施記憶體包容性管理的分散式計算系統之示意圖。
第2圖為根據所揭示技術的實施例之繪示第1圖的分散式計算系統之某些硬體/軟體部件的示意圖。
第3A圖至第3E圖為根據所揭示技術的實施例之繪示處在實例操作階段期間之第1圖的分散式計算系統之某些硬體/軟體部件的示意圖。
第4A圖至第4C圖為根據所揭示技術的實施例之繪示記憶體包容性管理的某些過程之流程圖。
第5圖為適合於第1圖中之分散式計算系統的某些部件之計算裝置。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
100:分散式計算系統
101:使用者
101a:使用者
101b:使用者
101c:使用者
102:客戶端裝置
106:主機
106a:源主機
106b:目的地主機
107a:主機集合
107b:主機集合
107c:主機集合
108:底層網路
112:網路節點
112a:網路節點
112b:網路節點
112c:網路節點
125:平臺控制器
Claims (20)
- 一種在一計算裝置中進行記憶體包容性管理之方法,該計算裝置具有帶有共享由一系統級快取記憶體(SLC)控制器管理之一SLC的多個核心之一中央處理單元(CPU)、由一記憶體控制器管理之一第一記憶體,及與該第一記憶體分離且與該CPU介面連接之一第二記憶體,該方法包括以下步驟: 在該SLC控制器處,自該CPU之一核心接收將對應於一第一快取行之一資料區塊寫入至經配置以快取該CPU的資料之該第一記憶體處的一記憶體區塊的一請求;以及 回應於接收到用以自該核心寫入之該請求,在該SLC控制器處, 自該SLC擷取對應於儲存在該SLC處之該第一快取行的元資料,該元資料包括編碼有一狀態值之一位元,該狀態值指示在該第一記憶體處之該記憶體區塊當前是否含有對應於該第一快取行之資料; 解碼對應於該第一快取行的該經擷取元資料中之該位元的該狀態值,以決定在該第一記憶體處之該記憶體區塊當前含有對應於該第一快取行之該資料還是對應於一第二快取行之資料,該第二快取行與該第一快取行交替地共享該第一記憶體處之該記憶體區塊;以及 當該經解碼狀態值指示該第一記憶體處之該記憶體區塊當前含有對應於該第一快取行之該資料時,將該資料區塊連同一指令一起傳輸至該記憶體控制器,以將該資料區塊直接寫入至該第一記憶體處之該記憶體區塊。
- 如請求項1所述之方法,進一步包括以下步驟: 當該經解碼狀態值指示該第一記憶體處之該記憶體區塊當前不含有對應於該第一快取行之該資料時,將該資料區塊連同一指示符一起傳輸至該記憶體控制器,該指示符指示該第一記憶體處之該記憶體區塊可能當前不含有對應於該第一快取行之該資料。
- 如請求項1所述之方法,進一步包括以下步驟: 當該經解碼狀態值指示該第一記憶體處之該記憶體區塊當前不含有對應於該請求中之該第一快取行的該資料時, 將該資料區塊連同一指示符一起傳輸至該記憶體控制器,該指示符指示該第一記憶體處之該記憶體區塊可能當前不含有對應於該第一快取行之該資料;以及 在接收到該資料區塊及該指示符後,在該記憶體控制器處,決定該第二記憶體處當前儲存該第一快取行之該資料的一位置,而不將該已接收到的資料區塊寫入至該第一記憶體處之該記憶體區塊。
- 如請求項1所述之方法,進一步包括以下步驟: 當該經解碼狀態值指示該第一記憶體處之該記憶體區塊當前不含有應於該第一快取行之該資料時, 將該資料區塊連同一指示符一起傳輸至該記憶體控制器,該指示符指示該第一記憶體處之該記憶體區塊可能當前不含有對應於該第一快取行之該資料;以及 在接收到該資料區塊及該指示符後,在該記憶體控制器處, 擷取當前儲存在該第一記憶體處之該記憶體區塊中的資料; 基於該經擷取資料決定在該第二記憶體處當前儲存該第一快取行之資料的一位置;以及 轉遞待儲存在該第二記憶體處之該已決定位置處的該資料區塊,而不將該資料區塊寫入至該第一記憶體處之該記憶體區塊。
- 如請求項1所述之方法,其中: 該請求為一第一請求; 該位元為該元資料之一第一位元;以及 該方法進一步包括以下步驟: 在該SLC控制器處,接收一第二請求以自該第一記憶體之該記憶體區塊讀取該第二快取行之資料;以及 在接收到該第二請求後,在該SLC控制器處, 自該記憶體控制器擷取該第二快取行之該資料的一複本;以及 修改儲存在該SLC處之該元資料的一第二位元之一狀態值以指示該第一記憶體處之該記憶體區塊含有該第二快取行之該資料。
- 如請求項1所述之方法,其中: 該請求為一第一請求; 該位元為該元資料之一第一位元;以及 該方法進一步包括以下步驟: 在該SLC控制器處,接收一第二請求以自該第一記憶體之該記憶體區塊讀取該第二快取行之資料;以及 在接收到該第二請求後,在該SLC控制器處, 自該記憶體控制器擷取該第二快取行之該資料的一複本; 將該第二快取行之該資料的該經擷取複本儲存在該SLC處;以及 修改儲存在該SLC處之該元資料的一第二位元之一狀態值以指示該第一記憶體處之該記憶體區塊當前含有該第二快取行之該資料。
- 如請求項1所述之方法,其中: 該請求為一第一請求; 該位元為該元資料之一第一位元;以及 該方法進一步包括以下步驟: 在該SLC控制器處,接收自該第一記憶體之該記憶體區塊讀取該第二快取行之資料的一第二請求;以及 在接收到該第二請求後,在該SLC控制器處, 修改儲存在該SLC處之該元資料的該第一位元之該狀態值以指示該第一記憶體處之該記憶體區塊當前可能不含有該第一快取行之該資料。
- 如請求項1所述之方法,其中: 該請求為一第一請求; 該位元為該元資料之一第一位元;以及 該方法進一步包括以下步驟: 在該SLC控制器處,接收自該第一記憶體之該記憶體區塊讀取一第二快取行之資料的一第二請求;以及 在接收到該第二請求後,在該SLC控制器處, 自該記憶體控制器擷取該第二快取行之該資料的一複本; 修改儲存在該SLC處之該元資料的該第一位元之該狀態值以指示該第一記憶體處之該記憶體區塊當前不含有該第一快取行之該資料;以及 修改儲存在該SLC處之該元資料的一第二位元之一狀態值以指示該第一記憶體處之該記憶體區塊當前含有該第二快取行之該資料。
- 如請求項1所述之方法,進一步包括以下步驟: 回應於接收到用以自該核心寫入之該請求,散列該請求的至少一部分以使得該第一快取行及該第二快取行之該資料及該元資料係儲存在該SLC中之一單個SLC片中。
- 一種計算裝置,包括: 具有多個核心之一中央處理單元(CPU)、由該多個核心共享之一系統級快取記憶體(SLC),及經配置以管理該SLC之一SLC控制器; 一第一記憶體,以可操作方式耦接至該CPU; 一記憶體控制器,經配置以管理該第一記憶體;以及 一第二記憶體,與該第一記憶體分離且與該CPU介面連接,其中該SLC控制器包括指令,其可執行以使該SLC控制器: 自該CPU之一核心接收將對應於一第一快取行的一資料區塊寫入至經配置以快取該CPU的資料之該第一記憶體處的一記憶體區塊的一請求;以及 回應於接收到用以自該核心寫入之該請求, 自該SLC擷取對應於儲存在該SLC處之該第一快取行的元資料,該元資料包括編碼有一狀態值之一位元,該狀態值指示在該第一記憶體處之該記憶體區塊當前是否含有對應於該第一快取行之資料; 解碼對應於該第一快取行的該經擷取元資料中之該位元的該狀態值,以決定在該第一記憶體處之該記憶體區塊當前含有對應於該第一快取行之該資料還是對應於一第二快取行之資料,該第二快取行與該第一快取行交替地共享該第一記憶體處之該記憶體區塊;以及 當該經解碼狀態值指示該第一記憶體處之該記憶體區塊當前含有對應於該第一快取行之該資料時,將該資料區塊連同一指令一起傳輸至該記憶體控制器,以將該資料區塊直接寫入至該第一記憶體處之該記憶體區塊。
- 如請求項10所述之計算裝置,其中該SLC控制器包括額外指令,其可執行以在該經解碼狀態值指示該第一記憶體處之該記憶體區塊當前不含有對應於該第一快取行之該資料時,導致該SLC控制器將該資料區塊連同一指示符一起傳輸至該記憶體控制器,該指示符指示該第一記憶體處之該記憶體區塊可能當前不含有對應於該第一快取行之該資料。
- 如請求項10所述之計算裝置,其中: 該請求為一第一請求; 該位元為該元資料之一第一位元;以及 該SLC控制器包括額外指令,其可執行以使該SLC控制器: 在該SLC控制器處,接收自該第一記憶體之該記憶體區塊讀取該第二快取行之資料的一第二請求;以及 在接收到該第二請求後, 自該記憶體控制器擷取該第二快取行之該資料的一複本;以及 修改儲存在該SLC處之該元資料的一第二位元之一狀態值以指示該第一記憶體處之該記憶體區塊含有該第二快取行之該資料。
- 如請求項10所述之計算裝置,其中: 該請求為一第一請求; 該位元為該元資料之一第一位元;以及 該SLC控制器包括額外指令,其可執行以使該SLC控制器: 在該SLC控制器處,接收自該第一記憶體之該記憶體區塊讀取該第二快取行之資料的一第二請求;以及 在接收到該第二請求後,在該SLC控制器處, 自該記憶體控制器擷取該第二快取行之該資料的一複本; 將該第二快取行之該資料的該經擷取複本儲存在該SLC處;以及 修改儲存在該SLC處之該元資料的一第二位元之一狀態值以指示該第一記憶體處之該記憶體區塊當前含有該第二快取行之該資料。
- 如請求項10所述之計算裝置,其中: 該請求為一第一請求; 該位元為該元資料之一第一位元;以及 該SLC控制器包括額外指令,其可執行以使該SLC控制器: 在該SLC控制器處,接收自該第一記憶體之該記憶體區塊讀取該第二快取行之資料的一第二請求;以及 在接收到該第二請求後,在該SLC控制器處,修改儲存在該SLC處之該元資料的該第一位元之該狀態值以指示該第一記憶體處之該記憶體區塊當前可能不含有該第一快取行之該資料。
- 如請求項10所述之計算裝置,其中: 該請求為一第一請求; 該位元為該元資料之一第一位元;以及 該SLC控制器包括額外指令,其可執行以使該SLC控制器: 在該SLC控制器處,接收自該第一記憶體之該記憶體區塊讀取一第二快取行之資料的一第二請求;以及 在接收到該第二請求後,在該SLC控制器處, 修改儲存在該SLC處之該元資料的該第一位元之該狀態值以指示該第一記憶體處之該記憶體區塊當前不含有該第一快取行之該資料;以及 修改儲存在該SLC處之該元資料的一第二位元之一狀態值以指示該第一記憶體處之該記憶體區塊當前含有該第二快取行之該資料。
- 如請求項10所述之計算裝置,其中該SLC控制器包括額外指令,其可執行以回應於接收到用以自該核心寫入之該請求,使該SLC控制器散列該請求的至少一部分,以使得該第一快取行及該第二快取行之該資料及該元資料係儲存在該SLC中之一單個SLC片中。
- 一種在一計算裝置中進行記憶體包容性管理之方法,該計算裝置具有帶有共享由一系統級快取記憶體(SLC)控制器管理之一SLC的多個核心之一中央處理單元(CPU)、由一記憶體控制器管理之一第一記憶體,及與該第一記憶體分離且與該CPU介面連接之一第二記憶體,該方法包括以下步驟: 在該SLC控制器處,自該CPU之一核心接收將對應於一系統記憶體位址的一資料區塊寫入至該第一記憶體處之一記憶體區塊的一請求;以及 回應於接收到用以自該核心寫入之該請求,在該SLC控制器處, 自該SLC擷取包括個別地編碼有一狀態值的一或更多個位元之元資料,該狀態值指示在該第一記憶體處之該記憶體區塊當前含有對應於該系統記憶體位址之資料還是對應於交替地共享該第一記憶體處之該記憶體區塊的一或更多個額外系統記憶體位址之資料; 基於來自該SLC之該經擷取元資料,決定該第一記憶體處之該記憶體區塊當前含有對應於該請求中之該系統位址的該資料;以及 回應於決定該第一記憶體處之該記憶體區塊當前含有對應於該系統位址之該資料,將該資料區塊連同一指令一起傳輸至該記憶體控制器,以將該資料區塊直接寫入至該第一記憶體處之該記憶體區塊。
- 如請求項17所述之方法,進一步包括以下步驟: 回應於決定該第一記憶體處之該記憶體區塊當前不含有對應於該系統記憶體之該資料時,將該資料區塊連同一指示符一起傳輸至該記憶體控制器,該指示符指示該第一記憶體處之該記憶體區塊可能當前不含有對應於該請求中之該系統記憶體的該資料。
- 如請求項17所述之方法,其中: 該請求為一第一請求; 該系統位址為一第一系統位址;以及 該方法進一步包括以下步驟: 在該SLC控制器處,接收自該第一記憶體之該記憶體區塊讀取一第二系統位址之資料的一第二請求;以及 在接收到該第二請求後,在該SLC控制器處, 自該記憶體控制器擷取該第二系統位址之該資料的一複本;以及 修改該元資料中對應於該第二記憶體位址之該一或更多個位元中的一者之一值,以指示該第一記憶體處之該記憶體區塊含有該第二記憶體位址之該資料。
- 如請求項17所述之方法,其中: 該請求為一第一請求; 該系統位址為一第一系統位址;以及 該方法進一步包括以下步驟: 在該SLC控制器處,接收自該第一記憶體之該記憶體區塊讀取一第二記憶體位址之資料的一第二請求;以及 在接收到該第二請求後,在該SLC控制器處, 修改儲存在該SLC處之該元資料的該第一位元之該狀態值以指示該第一記憶體處之該記憶體區塊當前不含有該第一快取行之該資料;以及 修改儲存在該SLC處之該元資料的一第二位元之一狀態值以指示該第一記憶體處之該記憶體區塊當前含有該第二快取行之該資料。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/359,104 | 2021-06-25 | ||
US17/359,104 US20220414001A1 (en) | 2021-06-25 | 2021-06-25 | Memory inclusivity management in computing systems |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202301133A true TW202301133A (zh) | 2023-01-01 |
Family
ID=81975393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111118337A TW202301133A (zh) | 2021-06-25 | 2022-05-17 | 計算系統中的記憶體包容性管理 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220414001A1 (zh) |
TW (1) | TW202301133A (zh) |
WO (1) | WO2022271327A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11847459B2 (en) | 2022-04-12 | 2023-12-19 | Microsoft Technology Licensing, Llc | Direct swap caching with zero line optimizations |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5338375B2 (ja) * | 2009-02-26 | 2013-11-13 | 富士通株式会社 | 演算処理装置、情報処理装置および演算処理装置の制御方法 |
KR101636634B1 (ko) * | 2011-12-21 | 2016-07-05 | 인텔 코포레이션 | 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법 |
US9418009B2 (en) * | 2013-12-27 | 2016-08-16 | Intel Corporation | Inclusive and non-inclusive tracking of local cache lines to avoid near memory reads on cache line memory writes into a two level system memory |
US10261901B2 (en) * | 2015-09-25 | 2019-04-16 | Intel Corporation | Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory |
US10140052B2 (en) * | 2015-11-05 | 2018-11-27 | International Business Machines Corporation | Memory access in a data processing system utilizing copy and paste instructions |
US10007606B2 (en) * | 2016-03-30 | 2018-06-26 | Intel Corporation | Implementation of reserved cache slots in computing system having inclusive/non inclusive tracking and two level system memory |
US10884927B2 (en) * | 2018-03-21 | 2021-01-05 | Intel Corporation | Cache architecture using way ID to reduce near memory traffic in a two-level memory system |
US11321171B1 (en) * | 2021-03-19 | 2022-05-03 | Microsoft Technology Licensing, Llc | Memory operations management in computing systems |
-
2021
- 2021-06-25 US US17/359,104 patent/US20220414001A1/en not_active Abandoned
-
2022
- 2022-05-17 TW TW111118337A patent/TW202301133A/zh unknown
- 2022-05-17 WO PCT/US2022/029517 patent/WO2022271327A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20220414001A1 (en) | 2022-12-29 |
WO2022271327A1 (en) | 2022-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10891228B2 (en) | Cache line states identifying memory cache | |
US11487675B1 (en) | Collecting statistics for persistent memory | |
US10719463B1 (en) | Hardware handling memory write request during memory data migration | |
EP3028162B1 (en) | Direct access to persistent memory of shared storage | |
US20200379922A1 (en) | Adaptive routing for pooled and tiered data architectures | |
CN107111576A (zh) | 发布的中断架构 | |
US20210326270A1 (en) | Address translation at a target network interface device | |
US10810133B1 (en) | Address translation and address translation memory for storage class memory | |
US20220004488A1 (en) | Software drive dynamic memory allocation and address mapping for disaggregated memory pool | |
US11138130B1 (en) | Nested page tables | |
WO2019153702A1 (zh) | 一种中断处理方法、装置及服务器 | |
US10762137B1 (en) | Page table search engine | |
TW202301133A (zh) | 計算系統中的記憶體包容性管理 | |
JP2005535002A (ja) | 共有リソース・ドメイン | |
US20180143906A1 (en) | Memory access architecture with coherence | |
US11296981B2 (en) | Serverless packet processing service with configurable exception paths | |
US11321171B1 (en) | Memory operations management in computing systems | |
US20230029026A1 (en) | Flexible resource sharing in a network | |
US10901917B1 (en) | Address scrambling for storage class memory | |
US11599415B2 (en) | Memory tiering techniques in computing systems | |
WO2022197419A1 (en) | Memory operations management in computing systems | |
US20230036751A1 (en) | Sparse memory handling in pooled memory | |
US11775328B2 (en) | Virtual bond for efficient networking of virtual machines | |
US20230325225A1 (en) | Confidential compute architecture integrated with direct swap caching | |
JP2005515543A (ja) | ドメイン間データ転送 |