TWI710899B - 計算系統以及其操作方法 - Google Patents
計算系統以及其操作方法 Download PDFInfo
- Publication number
- TWI710899B TWI710899B TW105120096A TW105120096A TWI710899B TW I710899 B TWI710899 B TW I710899B TW 105120096 A TW105120096 A TW 105120096A TW 105120096 A TW105120096 A TW 105120096A TW I710899 B TWI710899 B TW I710899B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- core
- computing system
- aggregate
- affinity
- Prior art date
Links
Images
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1647—Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
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)
- Memory System (AREA)
- Stored Programmes (AREA)
Abstract
本發明提供一種計算系統,其包含:記憶體模組,包含記
憶庫以及記憶體階級;以及控制單元,耦接至所述記憶體模組,經配置以:判定聚集記憶體與CPU核心之間的核心記憶體親和性;基於所述核心記憶體親和性而自作為所述CPU核心的核心附屬記憶體的所述聚集記憶體指定所述記憶庫以及所述記憶體階級;以及基於與所述CPU核心的核心應用程式親和性而將板類別自所述核心附屬記憶體分配至應用程式。
Description
本發明的實施例大體上是有關於一種計算系統,且更特定而言,是有關於一種用於記憶體管理的系統。
現代消費品以及工業電子裝置,尤其是諸如密鑰值裝置的裝置,正提供增大等級的功能性以支援現代生活,包含對大資料以及即時網路應用的分析。現有技術中的研究以及開發可採取多種不同方向。
因為使用者隨著資訊處理技術的發展而變得能夠處理更多事務,所以新以及舊範例開始利用此新空間。基於電子裝置的發展的一個領域(其中處理大量資訊為精髓)為(諸如)藉由基於非結構化查詢語言(「NoSQL」或「NonSQL」)的系統的大資料分析。然而,熟習此項技術者未能獲得藉由有效記憶體管理的高每秒輸入/輸出(input/output per second,IOPS)輸送量。
因此,仍存在對於具有用於記憶體分配的記憶體管理機制的計算系統的需要。鑒於不斷增長的商業競爭壓力,以及對市場中有意義產品區分的增長的消費者期望以及不斷消失的機會,發現此等問題的答案愈來愈關鍵。另外,減小成本、改良效率以及效能以及滿足競爭壓力的需要使發現此等問題的答案的關鍵必
要性甚至更為急迫。
已長期尋求此等問題的解決方案,但先前發展並未教示或建議任何解決方案,且因此,熟習此項技術者長期未能獲得此等問題的解決方案。
本發明的實施例提供一種系統,所述系統包含:記憶體模組,包含記憶庫(memory bank)以及記憶體階級(memory rank);以及控制單元,耦接至所述記憶體模組,經配置以:判定聚集記憶體與中央處理單元(CPU)核心之間的核心記憶體親和性;基於所述核心記憶體親和性而自作為所述CPU核心的核心附屬記憶體的所述聚集記憶體指定所述記憶庫以及所述記憶體階級;以及基於與所述CPU核心的核心應用程式親和性而將板(slab)類別自所述核心附屬記憶體分配至應用程式。
本發明的實施例提供一種方法,所述方法包含:判定聚集記憶體與CPU核心之間的核心記憶體親和性;基於所述核心記憶體親和性而自作為所述CPU核心的核心附屬記憶體的所述聚集記憶體指定記憶庫以及記憶體階級;以及基於與所述CPU核心的核心應用程式親和性而將slab類別自所述核心附屬記憶體分配至應用程式。
100:計算系統
102:裝置
112:控制單元
114:儲存單元
116:通信單元
118:使用者介面
122:控制介面
124:儲存介面
126:軟體
128:通信介面
130:顯示介面
140:中央處理單元(CPU)
142:中央處理單元(CPU)核心
150:記憶體模組
152:記憶體通道
154:記憶庫
156:記憶體階級
210:全域快取記憶體映射
212:聚集記憶體
214:巨大頁面
216:頁面記憶體位址
218:聚集頁面
220:第二聚集頁面
222:第三聚集頁面
330:slab類別
332:slab塊
334:塊大小
440:應用程式
442:核心應用程式親和性
444:應用程式執行緒
446:每核心快取記憶體映射
448:核心附屬記憶體
450:核心記憶體親和性
452:記憶體親和性執行緒
550:記憶體收集程序
552:頁面定址程序
554:頁面組合程序
556:全域映射產生程序
558:slab產生程序
560:親和性判定程序
562:記憶體附屬程序
564:核心映射產生程序
670:記憶體請求
672:映射擷取程序
674:CPU察覺分配程序
676:記憶體充足性程序
678:記憶體返回程序
700:方法
702、704、706:方塊
圖1為本發明的實施例中的具有記憶體管理機制的計算系
統。
圖2為用於計算系統的全域快取記憶體映射的實例。
圖3為用於計算系統的全域快取記憶體映射的另一實例。
圖4為用於計算系統的記憶體分配的實例。
圖5為計算系統的流程圖。
圖6為用於計算系統的記憶體分配的實例流程圖。
圖7為本發明的實施例中的操作計算系統的方法的流程圖。
足夠詳細地描述以下實施例,以使得熟習此項技術者能夠製作以及使用本發明。應理解,其他實施例將基於本發明而顯而易見,且可在不脫離本發明的實施例的範疇的情況下作出系統、程序或機械改變。
在以下描述中,給出多個特定細節以提供對本發明的透徹理解。然而,顯然的是,可在不具有此等特定細節的情況下實踐本發明。為了避免混淆本發明的實施例,並不詳細揭露一些熟知電路、系統配置以及程序步驟。
繪示系統的實施例的圖式為半圖解的且未按比例繪製,且特定而言,尺寸中的一些是為了呈現的清晰性且在圖式中放大繪示。類似地,儘管在圖式中的視圖為易於描述而大體上繪示類似定向,但在圖式中的此描述大部分為任意的。通常,可以在任一定向上操作本發明。諸實施例已按照描述方便而編號為第一實施例、第二實施例等,且並不意欲具有任何其他意義或提供對本發明的實施例的限制。
圖1為本發明的實施例中的具有記憶體管理機制的計算系統。現參看圖1。
計算系統100可包含裝置102。舉例而言,裝置102可為計算裝置,諸如伺服器、智慧型電話、膝上型電腦或桌上型電腦。在另一實例中,裝置102可包含多種集中式或分散型計算裝置。作為一特定實例,裝置102可為網格計算資源、虛擬化電腦資源、雲端計算資源、同級間分散式計算裝置或其組合。
裝置102可為能夠支援或實施(諸如)在NoSQL資料庫中的密鑰值儲存區或資料庫以及執行大資料以及即時網路應用程式或其組合的裝置。舉例而言,裝置102可包含藉由非揮發性資料儲存器(諸如快閃記憶體)對密鑰值儲存區的實施。
裝置102可包含諸如硬體組件的單元,包含控制單元112、儲存單元114、通信單元116以及使用者介面118。裝置102中的單元可個別地且獨立於其他單元而工作,或與其他單元中的一個或大於一個合作性地工作。
控制單元112可包含控制介面122。控制單元112可執行軟體126以提供計算系統100的智慧性。
可以數個不同方式的硬體電路系統實施控制單元112。舉例而言,控制單元112可為處理器、特殊應用積體電路(application specific integrated circuit,ASIC)、嵌人式處理器、微處理器、硬體控制邏輯、硬體有限狀態機(finite state machine,FSM)、數位信號處理器(digital signal processor,DSP)、可程式化邏輯裝置(programmable logic device,PLD)或其組合。控制單元112可進一步實施為具有一個或大於一個CPU核心142的中央處理單元
(CPU),CPU核心142可為CPU的基礎或基本計算單元。控制單元112可包含專用電路系統,諸如記憶體控制器、記憶體晶片控制器或記憶體控制器單元,用於記憶體分配操作以及資訊流動。
控制介面122可用於裝置102中的控制單元112與其他單元之間的通信。控制介面122亦可用於裝置102外部的通信。
控制介面122可自其他單元或自外部來源接收資訊,或可將資訊傳輸至其他單元或外部目的地。外部來源以及外部目的地是指在裝置102外部的來源以及目的地。
控制介面122可以不同方式藉由硬體電路系統加以實施,且可取決於哪些內部單元或外部單元正與控制介面122介接而包含不同實施。舉例而言,可藉由壓力感測器、慣性感測器、微機電系統(microelectromechanical system,MEMS)、光學電路系統、波導、無線電路系統、有線電路系統或其組合實施控制介面122。
儲存單元114可儲存軟體126。儲存單元114亦可儲存相關資訊,諸如表示傳入影像的資料、表示先前呈現的影像的資料、聲音檔案或其組合。
可藉由硬體電路系統,包含揮發性記憶體、非揮發性記憶體、內部記憶體、外部記憶體或其組合實施儲存單元114。舉例而言,儲存單元114可為非揮發性儲存器,諸如非揮發性隨機存取記憶體(non-volatile random access memory,NVRAM)、快閃記憶體、磁碟儲存器、電阻式隨機存取記憶體(resistive random access memory,ReRAM)、相變隨機存取記憶體(phase-change random access memory,PRAM),或揮發性儲存器,諸如靜態隨機存取記
憶體(static random access memory,SRAM)。作為特定實例,儲存單元114可包含呈記憶體模組150形式的隨機存取記憶體(random access memory,RAM)、動態隨機存取記憶體(dynamic random access memory,DRAM)、同步動態存取記憶體(synchronous dynamic access memory,SDRAM)或其組合,記憶體模組150為硬體模組,諸如雙行記憶體模組(dual in-line memory modules,DIMM)。記憶體模組150可劃分成記憶體通道152、記憶庫154以及記憶體階級156。儲存單元114的記憶體模組150可在實體上定址且具有直接記憶體存取(direct memory access,DMA)功能性。
儲存單元114可包含儲存介面124。儲存介面124可用於裝置102中的其他單元之間的通信。儲存介面124亦可用於在裝置102外部的通信。
儲存介面124可自其他單元或自外部來源接收資訊,或可將資訊傳輸至其他單元或外部目的地。外部來源以及外部目的地是指在裝置102外部的來源以及目的地。
儲存介面124可取決於哪些單元或外部單元正與儲存單元114介接而包含不同實施。可藉由類似於控制介面122的實施的技術以及技藝實施儲存介面124。
通信單元116可實現至裝置102以及自裝置102的外部通信。舉例而言,通信單元116可准許裝置102與附接件,諸如周邊裝置或桌上型電腦通信。通信單元116可包含主動以及被動組件,諸如微電子裝置、濾波器、調變器、解調變器、偵測器、解碼器、基頻數據機或天線。
通信單元116可包含通信介面128。通信介面128可用於裝置102中的通信單元116與其他單元之間的通信。通信介面128可自其他單元接收資訊或可將資訊傳輸至其他單元。
通信介面128可取決於哪些單元正與通信單元116介接而包含不同實施。可藉由類似於控制介面122的實施的技術以及技藝實施通信介面128。
使用者介面118允許使用者(未繪示)與裝置102介接且互動。使用者介面118可包含輸入裝置以及輸出裝置。使用者介面118的輸入裝置的實例可包含小鍵盤、觸控板、軟鍵、鍵盤、麥克風、用於接收遠端信號的紅外感測器或其任一組合以提供資料以及通信輸入。
使用者介面118可包含顯示介面130。顯示介面130可包含顯示器、投影儀、視訊螢幕、揚聲器或其任一組合。
控制單元112可操作使用者介面118以顯示由計算系統100產生的資訊。控制單元112亦可執行軟體126以執行計算系統100的其他功能。控制單元112可進一步執行軟體126以經由通信單元116與通信路徑104互動。
圖2為用於計算系統100的全域快取記憶體映射的實例。現參看圖2,全域快取記憶體映射210為用於動態記憶體分配的記憶體池。舉例而言,全域快取記憶體映射210可為聚集記憶體212的映射,聚集記憶體212為由計算系統100的作業系統分配的記憶體。作為一實例,聚集記憶體212可為自作業系統保留的直接存取記憶體的總量。聚集記憶體212可作為記憶體頁面而分配,記憶體頁面為記憶體的最小或基本量。
全域快取記憶體映射210可經組織或經佈置以將聚集記憶體212映射為一個或大於一個「巨大頁面」214。巨大頁面214為自記憶體頁面的實體上連續的例項產生的實體上連續的記憶體的單個區段。下文將論述巨大頁面214的產生。可基於頁面記憶體位址216而將巨大頁面214中的每一者在全域快取記憶體映射210中編索引。舉例而言,用於巨大頁面214中的每一者的頁面記憶體位址216可編索引為表示實體上連續的記憶體位址的範圍的邏輯位址,諸如巨大頁面214的第一例項的[0,N)等至巨大頁面214的第四例項的[3N,4N)。
全域快取記憶體映射210可進一步將巨大頁面214組織為聚集頁面218。聚集頁面218為實體上連續的記憶體的一個或大於一個片段的分組或聚集。舉例而言,聚集頁面218可為巨大頁面214的實體上鄰近例項的分組。可基於巨大頁面214在聚集頁面218中的個別例項而在全域快取記憶體映射210中定址聚集頁面218。舉例而言,當聚集頁面218包含具有範圍介於[0,N)至[3N,4N)的頁面記憶體位址216的巨大頁面214時,聚集頁面218的頁面記憶體位址216可為[0,4N)。出於說明的目的,聚集頁面218繪示為包含巨大頁面214的四個例項,但應理解,聚集頁面218可包含不同數目個巨大頁面214。
全域快取記憶體映射210可包含聚集頁面218的多個例項。舉例而言,聚集頁面218的每一例項可表示在圖1的記憶體模組150內的巨大頁面218的實體上連續例項的最大數目。舉例而言,如在圖2中說明,當實體上連續的巨大頁面214的鄰近例項的最大數目為一系列四個巨大頁面214時,用於聚集頁面218
的最大數目可為巨大頁面214的四個例項。
出於說明的目的,全域快取記憶體映射210繪示為聚集頁面218的額外例項,所述額外例項繪示為第二聚集頁面220以及第三聚集頁面222,但應理解,全域快取記憶體映射210可包含不同數目個聚集頁面218。在此說明中,分別具有範圍[100N,101N)以及[200N,201N)的頁面記憶體位址216的第二聚集頁面220以及第三聚集頁面222繪示為不具有巨大頁面214的相關聯例項,但應理解,第二聚集頁面220以及第三聚集頁面222包含巨大頁面214中的一個或大於一個。聚集頁面218可表示全域快取記憶體映射210中的總記憶體。
圖3為用於計算系統的全域快取記憶體映射的另一實例。現參看圖3,圖2的在全域快取記憶體映射210內的聚集記憶體212可組織成板(slab)類別330。slab類別330為記憶體片段的大小的分類。全域快取記憶體映射210可包含slab類別330的多個例項。
全域快取記憶體映射210可同時保持slab類別330的包含靜態或動態記憶體分配的多個例項。舉例而言,可用記憶體的最大量,諸如可用於分配的圖1的記憶體模組150的記憶體的總量,可在先到先得的基礎上分配給slab類別330中的每一者。繼續所述實例,基於可用記憶體至slab類別330的不同例項的分配,slab類別330的記憶體分配可類似或彼此不同。作為一特定實例,可藉由記憶體頁面的進一步分配或解除分配或巨大頁面214的細分來增大或減小slab類別330的給定例項的大小。
在另一實例中,slab類別330的大小可在slab類別330
的不同例項之間恆定。更特定而言,slab類別330中的每一者的記憶體量可類似或相等。作為一實例,slab類別330可各自經配置成2百萬位元組或16百萬位元組,但應理解,slab類別330的大小可具有不同值。
slab類別330可包含slab塊(slab chunk)332,slab塊332為實體上連續的記憶體的區段。一般而言,slab類別330中的任一者的slab塊332的塊大小334具有固定大小,而slab塊332的塊大小334在slab類別330的不同例項之間可具有不同大小。舉例而言,如在圖3中所說明,具有相同或類似記憶體分配的slab類別330可具有大小不同的slab塊332。作為一特定實例,slab類別330中的每一者可分配有1020個位元組的記憶體。繼續所述實例,slab類別330中的一者可包含各自具有96個位元組的塊大小334的slab塊332的多個例項,而slab類別330中的另一者可包含具有1024個位元組的塊大小334的slab塊332的單個例項。可預定slab塊332的塊大小334或將其設定為預設大小。slab塊332中的每一者內的記憶體為實體上連續的。然而,slab塊332中的每一者之間的記憶體可為非連續的。slab塊332可自來自巨大頁面214的記憶體分配產生(將在下文論述)。
圖4為用於計算系統的記憶體分配的實例。現參看圖4,圖4描繪CPU核心142、聚集記憶體212與應用程式440之間的關係。
應用程式440可為由計算系統100執行的軟體程式。舉例而言,應用程式440可為用於分析大資料的應用程式或即時網
路應用程式。應用程式440可與CPU核心142中的一者具有核心應用程式親和性442。核心應用程式親和性442為應用程式(諸如應用程式440)與CPU核心142中的一者的繫結。作為一實例,應用程式440的繫結可向CPU核心142中的一者指定應用程式440,使得將排他性地藉由CPU核心142的所指定例項執行應用程式440。
核心應用程式親和性442可基於應用程式執行緒444。作為一實例,應用程式執行緒444可為應用程式或程序(諸如應用程式440)的剩餘在CPU核心142中的一者的快取記憶體中的殘餘或殘留執行緒。
CPU核心142中的每一者可指派有核心附屬記憶體448。核心附屬記憶體448為指定給CPU核心142的特定例項的記憶體。舉例而言,核心附屬記憶體448可繫結至CPU核心142中的一者,使得僅CPU核心142的所指定例項可利用核心附屬記憶體448。作為一特定實例,可排他性地使用核心附屬記憶體448用於藉由與CPU核心142的例項具有核心記憶體親和性450的CPU核心142的例項來執行具有核心應用程式親和性442的應用程式440。
可基於核心記憶體親和性450而指定核心附屬記憶體448。核心記憶體親和性450可基於記憶體親和性執行緒452。記憶體親和性執行緒452可為先前使用特定記憶體分配而出現的處理的指示。舉例而言,可基於核心附屬記憶體448的實體位址,諸如記憶體通道152、圖1的記憶庫154、記憶體階級156或其組合而將具有核心記憶體親和性450的核心附屬記憶體448繫結至
CPU核心142中的一者。
可藉由每核心快取記憶體映射(per-core cache map)446對核心附屬記憶體448編索引。每核心快取記憶體映射446為特定針對CPU核心142中的一者的記憶體池(memory pool)。舉例而言,每核心快取記憶體映射446包含用於核心附屬記憶體448的記憶體位址。CPU核心142的每一例項可存取每核心快取記憶體映射446的對應例項。
可基於核心記憶體親和性452、應用程式440的需要或其組合而將slab類別330自全域快取記憶體映射210分配至每核心快取記憶體映射446。舉例而言,可基於最佳用於適應或處置應用程式440的資料物件的塊大小334而將slab類別330分配至每核心快取記憶體映射446。可自具有特定針對CPU核心142中的一者的核心記憶體親和性450的記憶體模組150(包含記憶體通道152、圖1的記憶庫154以及記憶體階級156)來指派核心附屬記憶體448的slab類別330。下文將詳細論述計算系統100的記憶體分配的功能。
圖5為計算系統(100)的流程圖。現參看圖5,可以數個不同方式實施計算系統100的記憶體管理機制。在下文的流程圖中描述實施的一個實例。一般而言,流程圖描繪實體上連續的記憶體的分配,諸如來自圖2的聚集記憶體212的圖4的核心附屬記憶體448。聚集記憶體212可為DMA可定址的。另外,可將聚集記憶體212以及核心附屬記憶體448轉譯成實體位址,使得由圖4的應用程式440頒佈(issue)的輸入以及輸出(I/O)可使用實體位址以填充I/O命令中的每一者。已發現,所述記憶體管
理機制的核心附屬記憶體448可消除對於記憶體複製操作以及自應用程式440至裝置102的資料結構改變的需要,此舉改良計算系統100的記憶體效率。
記憶體管理機制的流程可以由記憶體收集程序550開始。記憶體收集程序550用於自作業系統收集可用記憶體以產生聚集記憶體212。舉例而言,可經由或自計算系統100的作業系統保留實體上連續的記憶體。記憶體收集程序550可由控制單元112實施以產生聚集記憶體212。舉例而言,控制單元112可與儲存單元114介接以在儲存單元114內保留實體上連續的記憶體。
所述流程可繼續至頁面定址程序552。頁面定址程序552用於產生圖2的巨大頁面214。可自記憶體頁面組合出巨大頁面214中的每一者,記憶體頁面可為記憶體模組150內的實體上連續的記憶體的最小區段或部分,且可用於虛擬記憶體系統中的記憶體管理。更特定而言,可自在記憶庫154中的一者的記憶體階級156中的一者內的聚集記憶體212的記憶體頁面的實體上連續例項產生巨大頁面214。
可基於諸如與控制單元112、CPU核心142或其組合相關聯的處理器的CPU或RAM架構、類型、操作模式或定址模式的因素或特性而產生巨大頁面214的大小。舉例而言,頁面定址程序552可由作業系統實施,以選擇由與控制單元112、CPU核心142或其組合相關聯的處理器架構支援的巨大頁面的大小。巨大頁面214可產生於作業系統的內核空間(而非使用者空間)中。頁面定址程序552可由控制單元112實施以產生巨大頁面214。
所述流程可繼續至頁面組合程序554。頁面組合程序554
用於產生圖2的聚集頁面218。作為一實例,可藉由在屬於記憶庫154的例項的記憶體階級156的例項中組合巨大頁面214的兩個或大於兩個實體上鄰近例項而產生聚集頁面218。在另一實例中,可在圖1的記憶體階級156的層級處產生聚集頁面218,使得自記憶體階級156的一個例項內的記憶體產生聚集頁面218。在另一實例中,可在使用者空間中藉由使用者空間裝置驅動器執行頁面組合程序554。頁面組合程序554可由控制單元112實施以產生聚集頁面218,如上文所描述。
已發現,計算系統100藉由在使用者空間中藉由使用者空間裝置驅動器產生聚集頁面218而改良記憶體分配效率。使用者空間裝置驅動器減小額外負荷以及內核裝置驅動器的負載,此舉改良記憶體分配效率。
所述流程可繼續至全域映射產生程序556。全域映射產生程序556用於產生圖2的全域快取記憶體映射210。舉例而言,可產生全域快取記憶體映射210作為包含聚集頁面218以及巨大頁面214的相關聯例項的實體記憶體位址的映射。全域映射產生程序556可由控制單元112實施以產生全域映射快取記憶體210,如上文所描述。
所述流程可繼續至slab產生程序558。slab產生程序558用於自巨大頁面214中的一者將聚集記憶體212分配或劃分成slab類別330以及slab塊332(兩者皆在圖3中)。舉例而言,可實施slab演算法以將全域快取記憶體映射210劃分或組織成slab類別330。可一致地在slab類別330的不同例項之間設定分配至slab類別330的記憶體的量。更特定而言,可將類似或相等量的記憶
體分配至slab類別330中的每一者,此舉可使得能夠完全或最佳地使用記憶體對準益處。舉例而言,slab類別330可基於記憶體通道152、記憶庫154、記憶體階級156或其組合內的可用記憶體而具有預定大小。作為一特定實例,slab類別330可配置成2MB或16MB的大小,但應理解,slab類別330的大小可具有不同值。
slab類別330中的每一者可組織成圖3的slab塊332。slab類別330的slab塊332可自記憶體的實體上連續部分產生。舉例而言,可自巨大頁面214中的一者的聚集記憶體212分配slab類別330的slab塊332。作為一特定實例,slab產生程序558可由控制單元112實施以藉由自巨大頁面214中的一者的聚集記憶體212分配記憶體頁面中的一個或大於一個來產生slab塊332。
用於slab類別330的給定例項的slab塊332中的每一者的塊大小334可具有固定大小。在slab類別330的不同例項之間,可產生具有塊大小334的不同值的slab塊332。舉例而言,slab產生程序558可產生適合於配合物件(諸如應用程式440的內核資料物件或資料物件)的塊大小334。作為一特定實例,slab塊332的塊大小334可與巨大頁面214或巨大頁面214的一部分(諸如巨大頁面214內的記憶體頁面的一個或大於一個實體上連續例項的組合)的大小成比例。舉例而言,可將slab塊332劃分為等於或大於巨大頁面214內的頁面或細分區大小的1/8的物件的「大slab」,或劃分為小於巨大頁面214內的頁面或細分區大小的1/8的物件的「小slab」。slab產生程序558可由控制單元112實施以將聚集記憶體212劃分成slab類別330以及slab塊332,如上文所描述。
所述流程可繼續至親和性判定程序560。親和性判定程序560用於判定與記憶體的CPU親和性。可使圖1的CPU核心142中的每一者與圖4的記憶體親和性執行緒452相關聯而判定圖4的核心記憶體親和性450。舉例而言,當存在與在一組特定聚集記憶體212上執行的CPU核心142的例項相關聯的程序或應用程式時,可判定CPU核心142的特定例項的記憶體親和性執行緒452。親和性判定程序560可由控制單元112實施以判定核心記憶體親和性450,如上文所描述。
所述流程可繼續至記憶體附屬程序562。記憶體附屬程序562用於基於核心記憶體親和性450而指定具有CPU核心142的記憶體。舉例而言,已經判定為與CPU核心142的特定例項具有核心記憶體親和性450的圖1的記憶體模組150中的一者的記憶體通道152、記憶庫154、記憶體階級156或其組合可表示為圖4的核心附屬記憶體448。作為一特定實例,記憶體附屬程序562可為記憶體階級156、記憶庫154、記憶體通道152或其組合中的一者指定slab類別330,CPU核心142的例項先前已藉由以上各者用於執行應用程式440。為了進一步說明特定實例,記憶體附屬程序562可指定slab類別330,slab類別330具有最適合於應用程式440的資料物件的大小的塊大小334。記憶體附屬程序562可由控制單元112實施以指定具有CPU核心142之記憶體,如上文所描述。
所述流程可繼續至核心映射產生程序564。核心映射產生程序564用於產生圖4的每核心快取記憶體映射446。可基於核心附屬記憶體448的實體記憶體位址而產生每核心快取記憶體映射
446。舉例而言,在核心映射產生程序564中,可將每核心快取記憶體映射446產生為表示核心附屬記憶體448的記憶體通道152、記憶庫154、記憶體階級156或其組合的實體記憶體位址的映射。作為一特定實例,可根據與已指定至CPU核心142中的一特定者的記憶體通道152、記憶庫154、記憶體階級156或其組合的特定例項相關聯的巨大頁面214而產生每核心快取記憶體映射446。
記憶體通道152的不同例項附屬於CPU核心142的每核心快取記憶體映射446實現通道等級平行性。分配至與記憶體通道152的例項的記憶體階級156相關聯的每核心快取記憶體映射446的slab類別330中的每一者實現階級等級平行性。核心映射產生程序564可由控制單元112實施以產生與核心附屬記憶體448相關聯的每核心快取記憶體映射446,如上文所描述。
已發現,用於CPU核心142的核心附屬記憶體448可完全地利用記憶體通道152以及記憶體階級156的可用平行性,此舉改良效能。通道等級平行性以及階級等級(rank level)平行性使得能夠橫跨記憶體通道152的各層級以及記憶體階級156的各層級相等地加載,此舉改良計算系統100的效能,尤其當在每一佇列中執行I/O命令時改良多佇列應用的效能。
已進一步發現,自巨大頁面214中的一者的聚集記憶體212產生slab類別330的slab塊332實現記憶體通道152、記憶庫154、記憶體階級156或其組合之間的平行性,此舉改良計算系統100的效能。因為可自記憶庫154中的一者的記憶體階級156中的一者內的記憶體頁面的實體上連續例項聚集巨大頁面214,所以記憶庫154中的每一者可並行地操作,此舉改良計算系統100的效
能。
圖6為用於計算系統100的記憶體分配的實例流程圖。現參看圖6,當圖4的應用程式440在記憶體請求670中請求存取圖2的聚集記憶體212時,所述流程可開始。可基於圖4的應用程式執行緒444而判定與應用程式440具有圖4的核心應用程式親和性442的圖1的CPU核心142的例項。一旦已判定附屬於應用程式440的CPU核心142的例項,即可在映射擷取程序672中自全域快取記憶體映射210擷取附屬於CPU核心142的例項的每核心快取記憶體映射446。作為一實例,記憶體請求670可由控制單元112經由控制介面122(兩者皆在圖1中)接收。
所述流程可繼續至CPU察覺分配程序674。CPU察覺分配程序674用於基於與CPU核心142的親和性而將記憶體分配至應用程式440。因為每核心快取記憶體映射446是基於核心記憶體親和性450而產生,所以將核心附屬記憶體448分配至應用程式440提供核心附屬記憶體448、CPU核心142與應用程式440之間的繫結。
可基於應用程式440的需要而自核心附屬記憶體448分配slab類別330。舉例而言,可將slab類別330中適合於應用程式440的一個slab類別選擇為具有塊大小334的匹配應用程式440的需要的slab類別330。
作為一特定實例,可根據與CPU核心142中的一者相關聯的記憶庫154以及記憶體階級156而分配核心附屬記憶體448。舉例而言,針對與CPU核心142的特定例項相關聯的記憶庫154以及屬於記憶庫154的記憶體階級156,可分配具有恰當地用於應
用程式440的塊大小334的slab類別330。可將slab類別330的分配記錄於每核心快取記憶體映射446中。
藉由記憶體充足性程序676,可視附屬於CPU核心142的應用程式440的需要而擴展每核心快取記憶體映射446。記憶體充足性程序676用於判定核心附屬記憶體448的分配對於應用程式440是否充足。舉例而言,在當前每核心快取記憶體映射446對於應用程式440並不具有足夠的slab類別330的自由例項時,可將slab類別330的額外例項自全域快取記憶體映射210分配至每核心快取記憶體映射446。CPU察覺分配程序674可由控制單元112實施以將核心附屬記憶體448指定至應用程式440,如上文所描述。
所述流程可繼續至記憶體返回程序678。記憶體返回程序678用於使核心附屬記憶體448返回至全域快取記憶體映射210。舉例而言,一旦判定應用程式440不再需要核心附屬記憶體448,即可使slab類別330返回至聚集記憶體212。在另一實例中,當判定CPU核心142不再需要每核心快取記憶體映射446時,可使每核心快取記憶體映射446返回至全域快取記憶體映射210。記憶體返回程序678可由控制單元112實施且可與儲存單元114介接以返回或解除分配核心附屬記憶體448,如上文所描述。
已發現,就CPU使用率而言,自全域快取記憶體映射210存取slab類別330的CPU核心142的多個例項的花費可減小速率以及效能,這是因為對slab類別330的每一存取需要全域鎖定全部slab類別330。然而,已發現,來自每核心快取記憶體映射446的應用程式440的記憶體分配防止對slab類別330的整個例項的
全域鎖定。CPU核心142中的每一者的每核心快取記憶體映射446包含並不影響自全域快取記憶體映射210至CPU核心142的其他例項的記憶體分配的局部鎖定,此舉防止對slab類別330的全域鎖定。
在本申請案中描述的程序可實施為儲存於待由圖1的控制單元112執行的非暫時性電腦可讀媒體上的指令。非暫時性電腦媒體可包含圖1的儲存單元114。非暫時性電腦可讀媒體可包含非揮發性記憶體,諸如硬碟機、非揮發性隨機存取記憶體(NVRAM)、固態儲存裝置(solid-state storage device,SSD)、光碟(CD)、數位視訊磁碟(DVD)或通用串列匯流排(USB)快閃記憶體裝置。可將非暫時性電腦可讀媒體整合為計算系統100的一部分,或安裝為計算系統100的可移除部分。
圖7為本發明的實施例中的操作計算系統的方法的流程圖。現參看圖7,方法700包含:在方塊702中,判定聚集記憶體與CPU核心之間的核心記憶體親和性;在方塊704中,基於核心記憶體親和性而自聚集記憶體指定記憶體模組的記憶庫以及記憶體階級作為CPU核心的核心附屬記憶體;以及在方塊706中,基於與CPU核心的核心應用程式親和性而將slab類別自核心附屬記憶體分配至應用程式。作為一實例,方法700的方塊可由圖1的裝置102的單元(諸如圖1的控制單元112以及儲存單元114)實施,如上文在圖5以及圖6中描述的流程中所描述。
所得方法、程序、設備、裝置、產品以及/或系統為直接、具成本效益、不複雜、高度通用、準確、靈敏且有效的,且可藉由採用用於現成的、有效且經濟的製造、應用以及利用的已知組
件而予以實施。本發明的實施例的另一重要態樣為其有價值地支援以及服務於減少成本、簡化系統以及增大效能的歷史趨勢。
本發明的實施例的此等以及其他有價值態樣因此使技術的狀態前進至至少下一等級。
儘管已結合特定最佳模式描述本發明,但應理解,許多替代方案、修改以及變化按照前述描述將對於熟習此項技術者顯而易見。因此,預期包涵屬於所包含申請專利範圍的範疇內的所有此等替代方案、修改以及變化。本文中所闡述或在隨附圖式中繪示的所有內容將在說明性且非限制性意義上加以解釋。
100‧‧‧計算系統
102‧‧‧裝置
112‧‧‧控制單元
114‧‧‧儲存單元
116‧‧‧通信單元
118‧‧‧使用者介面
122‧‧‧控制介面
124‧‧‧儲存介面
126‧‧‧軟體
128‧‧‧通信介面
130‧‧‧顯示介面
140‧‧‧中央處理單元(CPU)
142‧‧‧中央處理單元(CPU)核心
150‧‧‧記憶體模組
152‧‧‧記憶體通道
154‧‧‧記憶庫
156‧‧‧記憶體階級
Claims (20)
- 一種計算系統,包括:記憶體模組,包含記憶庫以及記憶體階級;以及控制單元,耦接至所述記憶體模組,經配置以:判定聚集記憶體與中央處理單元核心之間的核心記憶體親和性;基於所述核心記憶體親和性而自所述聚集記憶體指定所述記憶庫以及所述記憶體階級作為所述中央處理單元核心的核心附屬記憶體;以及基於與所述中央處理單元核心的核心應用程式親和性而將板類別自所述核心附屬記憶體分配至應用程式。
- 如申請專利範圍第1項所述的計算系統,其中所述控制單元經配置以分配所述板類別的板塊,其中所述板塊包含實體上連續的記憶體。
- 如申請專利範圍第1項所述的計算系統,其中所述控制單元經配置以產生所述聚集記憶體的全域快取記憶體映射。
- 如申請專利範圍第1項所述的計算系統,其中所述控制單元經配置以產生所述核心附屬記憶體的每核心快取記憶體映射。
- 如申請專利範圍第1項所述的計算系統,其中所述控制單元經配置以:將所述聚集記憶體的實體上連續部分的頁面聚集於所述記憶庫的所述記憶體階級內; 自所述頁面分配所述聚集記憶體以產生所述板類別的板塊。
- 如申請專利範圍第1項所述的計算系統,其中所述控制單元經配置以基於記憶體親和性執行緒而判定所述核心記憶體親和性。
- 如申請專利範圍第1項所述的計算系統,其中所述控制單元經配置以將所述聚集記憶體組織成板類別的多個例項,其中所述板類別的大小相等。
- 如申請專利範圍第1項所述的計算系統,其中所述控制單元經配置以基於所述應用程式的需要而藉由所述板類別的額外例項對每核心快取記憶體映射進行擴展。
- 如申請專利範圍第1項所述的計算系統,其中所述控制單元經配置以基於實體上鄰近的頁面例項而產生所述聚集記憶體。
- 如申請專利範圍第1項所述的計算系統,其中所述控制單元經配置以產生包含直接記憶體存取功能性的所述聚集記憶體。
- 一種操作計算系統的方法,所述方法包括:判定聚集記憶體與中央處理單元核心之間的核心記憶體親和性;基於所述核心記憶體親和性而自所述聚集記憶體指定記憶庫以及記憶體階級作為所述中央處理單元核心的核心附屬記憶體;以及基於與所述中央處理單元核心的核心應用程式親和性而將板類別自所述核心附屬記憶體分配至應用程式。
- 如申請專利範圍第11項所述的操作計算系統的方法,其中分配所述板類別包含分配所述板類別的板塊,其中所述板塊具有實體上連續的記憶體。
- 如申請專利範圍第11項所述的操作計算系統的方法,更包括產生所述聚集記憶體的全域快取記憶體映射。
- 如申請專利範圍第11項所述的操作計算系統的方法,更包括產生所述核心附屬記憶體的每核心快取記憶體映射。
- 如申請專利範圍第11項所述的操作計算系統的方法,更包括:自所述記憶庫的所述記憶體階級內的所述聚集記憶體的實體上連續部分產生頁面;以及自所述頁面分配所述聚集記憶體以產生所述板類別的板塊。
- 如申請專利範圍第11項所述的操作計算系統的方法,其中判定所述核心記憶體親和性包含基於記憶體親和性執行緒判定所述核心記憶體親和性。
- 如申請專利範圍第11項所述的操作計算系統的方法,更包括將所述聚集記憶體組織成所述板類別的多個例項,其中所述板類別的大小相等。
- 如申請專利範圍第11項所述的操作計算系統的方法,更包括基於所述應用程式的需要而藉由所述板類別的額外例項對每核心快取記憶體映射進行擴展。
- 如申請專利範圍第11項所述的操作計算系統的方法,更包括基於實體上鄰近的頁面例項而產生所述聚集記憶體。
- 如申請專利範圍第11項所述的操作計算系統的方法, 更包括產生具有直接記憶體存取功能性的所述聚集記憶體。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562241544P | 2015-10-14 | 2015-10-14 | |
US62/241,544 | 2015-10-14 | ||
US15/062,855 US20170109080A1 (en) | 2015-10-14 | 2016-03-07 | Computing system with memory management mechanism and method of operation thereof |
US15/062,855 | 2016-03-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201717016A TW201717016A (zh) | 2017-05-16 |
TWI710899B true TWI710899B (zh) | 2020-11-21 |
Family
ID=58550294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105120096A TWI710899B (zh) | 2015-10-14 | 2016-06-27 | 計算系統以及其操作方法 |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP2017076396A (zh) |
KR (1) | KR20170043996A (zh) |
CN (1) | CN106598724B (zh) |
TW (1) | TWI710899B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6423809B2 (ja) * | 2016-02-19 | 2018-11-14 | イーソル株式会社 | オペレーティングシステム、プログラミングシステム及びメモリ割り当て方法 |
CN108664325B (zh) * | 2017-03-30 | 2019-06-28 | 视联动力信息技术股份有限公司 | 处理数据的方法和电子设备 |
CN107729151A (zh) * | 2017-10-19 | 2018-02-23 | 济南浪潮高新科技投资发展有限公司 | 一种集群管理fpga资源的方法 |
CN110134514B (zh) * | 2019-04-18 | 2021-04-13 | 华中科技大学 | 基于异构内存的可扩展内存对象存储系统 |
KR102547825B1 (ko) * | 2021-11-10 | 2023-06-27 | 삼성전자주식회사 | 호스트 메모리 버퍼를 사용하는 메모리 시스템 및 그것의 동작 방법 |
US12014080B2 (en) | 2021-11-10 | 2024-06-18 | Samsung Electronics Co., Ltd. | Memory system using host memory buffer and operation method thereof |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120072652A1 (en) * | 2010-03-04 | 2012-03-22 | Microsoft Corporation | Multi-level buffer pool extensions |
US20120227048A1 (en) * | 2010-05-27 | 2012-09-06 | International Business Machines Corporation | Framework for scheduling multicore processors |
US20140359269A1 (en) * | 2013-05-30 | 2014-12-04 | Michael J. Moen | Techniques for dynamic system performance tuning |
US20140362629A1 (en) * | 2013-06-11 | 2014-12-11 | Invensas Corporation | Single package dual channel memory with co-support |
US20150046259A1 (en) * | 2013-08-09 | 2015-02-12 | Yp Intellectual Property Llc | Systems and methods for personalized orchestration of business information |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6009478A (en) * | 1997-11-04 | 1999-12-28 | Adaptec, Inc. | File array communications interface for communicating between a host computer and an adapter |
US6085296A (en) * | 1997-11-12 | 2000-07-04 | Digital Equipment Corporation | Sharing memory pages and page tables among computer processes |
JP3918145B2 (ja) * | 2001-05-21 | 2007-05-23 | 株式会社ルネサステクノロジ | メモリコントローラ |
US7873776B2 (en) * | 2004-06-30 | 2011-01-18 | Oracle America, Inc. | Multiple-core processor with support for multiple virtual processors |
US7577813B2 (en) * | 2005-10-11 | 2009-08-18 | Dell Products L.P. | System and method for enumerating multi-level processor-memory affinities for non-uniform memory access systems |
CN101196816B (zh) * | 2007-12-29 | 2010-12-08 | 中国科学院计算技术研究所 | 一种操作系统及操作系统管理方法 |
KR101267347B1 (ko) * | 2011-07-29 | 2013-05-27 | 현대제철 주식회사 | 몰드 내 마찰력을 이용한 크랙 감시장치 및 그 방법 |
JP2013127703A (ja) * | 2011-12-19 | 2013-06-27 | Renesas Electronics Corp | ロードモジュール生成方法及びロードモジュール生成プログラム |
US9003223B2 (en) * | 2012-09-27 | 2015-04-07 | International Business Machines Corporation | Physical memory fault mitigation in a computing environment |
CN103345451B (zh) * | 2013-07-18 | 2015-05-13 | 四川九成信息技术有限公司 | 一种在多核处理器中缓冲数据的方法 |
CN104199699B (zh) * | 2014-08-29 | 2017-06-16 | 北京经纬恒润科技有限公司 | 程序加载方法、芯片启动方法、装置及主控设备 |
CN104375899B (zh) * | 2014-11-21 | 2016-03-30 | 北京应用物理与计算数学研究所 | 高性能计算机numa感知的线程和内存资源优化方法与系统 |
CN104317734A (zh) * | 2014-11-28 | 2015-01-28 | 迈普通信技术股份有限公司 | 一种适用于slab的内存分配方法及装置 |
-
2016
- 2016-06-27 TW TW105120096A patent/TWI710899B/zh active
- 2016-07-20 KR KR1020160092125A patent/KR20170043996A/ko unknown
- 2016-09-08 CN CN201610811271.4A patent/CN106598724B/zh active Active
- 2016-10-12 JP JP2016200590A patent/JP2017076396A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120072652A1 (en) * | 2010-03-04 | 2012-03-22 | Microsoft Corporation | Multi-level buffer pool extensions |
US20120227048A1 (en) * | 2010-05-27 | 2012-09-06 | International Business Machines Corporation | Framework for scheduling multicore processors |
US20140359269A1 (en) * | 2013-05-30 | 2014-12-04 | Michael J. Moen | Techniques for dynamic system performance tuning |
US20140362629A1 (en) * | 2013-06-11 | 2014-12-11 | Invensas Corporation | Single package dual channel memory with co-support |
US20150046259A1 (en) * | 2013-08-09 | 2015-02-12 | Yp Intellectual Property Llc | Systems and methods for personalized orchestration of business information |
Also Published As
Publication number | Publication date |
---|---|
JP2017076396A (ja) | 2017-04-20 |
CN106598724B (zh) | 2022-01-14 |
CN106598724A (zh) | 2017-04-26 |
KR20170043996A (ko) | 2017-04-24 |
TW201717016A (zh) | 2017-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI710899B (zh) | 計算系統以及其操作方法 | |
US10324832B2 (en) | Address based multi-stream storage device access | |
US20230315290A1 (en) | Namespaces allocation in non-volatile memory devices | |
US10866905B2 (en) | Access parameter based multi-stream storage device access | |
US10761977B2 (en) | Memory system and non-transitory computer readable recording medium | |
EP3217294B1 (en) | File access method and apparatus and storage device | |
US11656775B2 (en) | Virtualizing isolation areas of solid-state storage media | |
US9977734B2 (en) | Information processing device, non-transitory computer readable recording medium, and information processing system | |
TWI683217B (zh) | 使用去重複dram系統演算法架構的去重複記憶體模組及其方法 | |
EP2645259B1 (en) | Method, device and system for caching data in multi-node system | |
KR102061079B1 (ko) | 파일 액세스 방법 및 관련 기기 | |
US10782904B2 (en) | Host computing arrangement, remote server arrangement, storage system and methods thereof | |
KR20170097609A (ko) | 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법 | |
JP2022548887A (ja) | メモリタイプへのページテーブルフック | |
WO2021218038A1 (zh) | 一种存储系统、内存管理方法和管理节点 | |
US11200159B2 (en) | System and method for facilitating efficient utilization of NAND flash memory | |
KR20170036075A (ko) | 데이터 압축을 채용하는 캐싱 기술들 | |
US9355121B1 (en) | Segregating data and metadata in a file system | |
CN110647288A (zh) | 数据储存装置及其快取分流方法 | |
WO2024078429A1 (zh) | 内存管理方法、装置、计算机设备及存储介质 | |
US20130318322A1 (en) | Memory Management Scheme and Apparatus | |
US20220237114A1 (en) | Memory system and non-transitory computer readable recording medium | |
WO2015156937A1 (en) | Multi-level memory hierarchy | |
US20200364140A1 (en) | Memory system and non-transitory computer readable recording medium | |
US20170109080A1 (en) | Computing system with memory management mechanism and method of operation thereof |