TWI710903B - 偽主記憶體系統及操作該系統的方法 - Google Patents
偽主記憶體系統及操作該系統的方法 Download PDFInfo
- Publication number
- TWI710903B TWI710903B TW106130111A TW106130111A TWI710903B TW I710903 B TWI710903 B TW I710903B TW 106130111 A TW106130111 A TW 106130111A TW 106130111 A TW106130111 A TW 106130111A TW I710903 B TWI710903 B TW I710903B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- processing unit
- central processing
- interface
- computing system
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 15
- 230000006835 compression Effects 0.000 claims abstract description 16
- 238000007906 compression Methods 0.000 claims abstract description 16
- 238000012937 correction Methods 0.000 claims abstract description 12
- 230000003321 amplification Effects 0.000 claims description 51
- 238000003199 nucleic acid amplification method Methods 0.000 claims description 51
- 238000012545 processing Methods 0.000 claims description 43
- 230000006870 function Effects 0.000 claims description 40
- 230000001360 synchronised effect Effects 0.000 claims description 16
- 238000004140 cleaning Methods 0.000 claims description 15
- 230000002085 persistent effect Effects 0.000 claims description 10
- 230000009977 dual effect Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 4
- 230000003416 augmentation Effects 0.000 abstract description 5
- 238000007726 management method Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 229920000642 polymer Polymers 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- 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
-
- 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/0877—Cache access modes
- G06F12/0882—Page mode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一種偽主記憶體系統包括記憶體配接器電路,所述記憶
體配接器電路用於利用壓縮、去重複、及/或錯誤修正來實行記憶體擴增。記憶體配接器電路連接至記憶體,且採用記憶體擴增方法來增大所述記憶體的有效儲存容量。記憶體配接器電路亦連接至記憶體匯流排並實作用於連接至所述記憶體匯流排的NVDIMM-F介面或經修改NVDIMM-F介面。
Description
根據本發明的實施例的一或多個態樣是有關於資料儲存,且更具體而言是有關於一種利用記憶體擴增(memory augmentation)來儲存資料的系統。
例如資料庫、虛擬桌面基礎設施(virtual desktop infrastructure)、及資料分析等一些現代應用可具有大的主記憶體佔用面積(footprint)。隨著系統按比例擴展(scale out),此種容量需求超線性地(super-linearly)增大。
因此,需要一種提供更大儲存容量的系統及方法。
本發明的實施例的各個態樣是有關於一種偽主記憶體系統。所述系統包括記憶體配接器電路,所述記憶體配接器電路用於利用壓縮、去重複、及/或錯誤修正來實行記憶體擴增。記憶體配接器電路連接至記憶體,且採用記憶體擴增方法來增大所述記憶體的有效儲存容量。記憶體配接器電路亦連接至記憶體匯流排並實作用於連接至所述記憶體匯流排的具有快閃記憶體的非揮發
性雙列直插記憶體模組(non-volatile dual in-line memory module,NVDIMM)(NVDIMM with flash memory,NVDIMM-F)介面或經修改NVDIMM-F介面。
根據本發明的實施例,提供一種計算系統,所述計算系統包括:中央處理單元;以及記憶體系統,包括:記憶體配接器電路;以及第一記憶體,所述記憶體配接器電路具有連接至所述中央處理單元的第一記憶體介面及連接至所述第一記憶體的第二記憶體介面,所述第一記憶體介面是雙倍資料速率同步動態隨機存取記憶體介面,且所述記憶體配接器電路被配置成利用所述第一記憶體的儲存容量的擴增來將資料儲存於所述第一記憶體中以及自所述第一記憶體擷取資料。
在一個實施例中,所述擴增包括以下中的至少一者:壓縮;去重複;以及錯誤修正。
在一個實施例中,所述第一記憶體介面是第二代或更高代雙倍資料速率同步動態隨機存取記憶體介面。
在一個實施例中,所述第二記憶體介面是第二代或更高代雙倍資料速率同步動態隨機存取記憶體介面。
在一個實施例中,所述第一記憶體介面是NVDIMM-F介面,且所述計算系統被配置成將所述記憶體系統作為區塊裝置來操作。
在一個實施例中,所述中央處理單元經由記憶體管理電路連接至所述記憶體配接器電路。
在一個實施例中,所述第一記憶體是動態隨機存取記憶體且所述第二記憶體介面是第二代或更高代雙倍資料速率同步動態隨機存取記憶體介面。
在一個實施例中,所述記憶體配接器電路是單個積體電路,所述單個積體電路被配置成實行:壓縮;去重複;以及錯誤修正。
在一個實施例中,所述計算系統包括第二記憶體,所述第二記憶體經由記憶體管理電路連接至所述中央處理單元。
在一個實施例中,所述第二記憶體經由第三記憶體介面連接至所述記憶體管理電路,所述第三記憶體介面是第二代或更高代雙倍資料速率同步動態隨機存取記憶體介面。
在一個實施例中,所述中央處理單元被配置成在所述第二記憶體中維持分頁快取,且所述中央處理單元被配置成當將清潔分頁自所述分頁快取逐出時對所述清潔分頁調用清潔快取功能(cleancache function),所述清潔快取功能被配置成將所述清潔分頁儲存於:當在所述第一記憶體中有足夠的空間可用時,儲存於所述第一記憶體中;以及否則,儲存於持久性儲存器中。
在一個實施例中,所述清潔快取功能被配置成基於所估測擴增比率來評估在所述第一記憶體中是否有足夠的空間可用,所述所估測擴增比率是在所設定時間間隔內儲存於所述第一記憶體中的資料的擴增比率的函數。
在一個實施例中,所述中央處理單元被配置成在所述第
二記憶體中維持使用者記憶體空間,且所述中央處理單元被配置成當將髒分頁自所述使用者記憶體空間逐出時對所述髒分頁調用前交換功能(frontswap function),所述前交換功能被配置成將所述髒分頁儲存於:當在所述第一記憶體中有足夠的空間可用時,儲存於所述第一記憶體中;以及否則,儲存於持久性儲存器中。
在一個實施例中,所述前交換功能被配置成基於所估測擴增比率來評估在所述第一記憶體中是否具有足夠的空間可用,所述所估測擴增比率是在所設定時間間隔內儲存於所述第一記憶體中的資料的擴增比率的函數。
在一個實施例中,所述中央處理單元被配置成:執行一或多個應用,以及因應於將所述一或多個應用應用於系統資訊函數而:基於所述第一記憶體的大小及所述第二記憶體的大小,返送回總可用記憶體的值,以及基於所述第一記憶體中的空閒記憶體的量及所述第二記憶體中的空閒記憶體的量,返送回總空閒記憶體的值。
在一個實施例中,所述總空閒記憶體的所述值是以下之和:所述第二記憶體中的空閒記憶體的量,以及所述第一記憶體的最小擴增比率與所述第一記憶體中的空閒記憶體的量的乘積,所述最小擴增比率為:當自系統啟動時起已經過所設定時間間隔時,為在所述所設定時間間隔內儲存於所述第一記憶體中的資料的擴增比率的函數,以及否則,為2.0。
根據本發明的實施例,提供一種操作電腦系統的方法,
所述電腦系統包括:中央處理單元;以及記憶體系統,包括:記憶體配接器電路;以及第一記憶體,所述記憶體配接器電路具有連接至所述中央處理單元的第一記憶體介面及連接至所述第一記憶體的第二記憶體介面,所述第一記憶體介面是雙倍資料速率同步動態隨機存取記憶體介面,且所述方法包括利用所述第一記憶體的所述儲存容量的擴增將資料儲存於所述第一記憶體中以及自所述第一記憶體擷取資料。
在一個實施例中,所述擴增包括以下中的至少一者:壓縮;去重複;以及錯誤修正。
在一個實施例中,所述方法包括將所述記憶體系統作為能夠以NVDIMM-F協定運作的區塊裝置來使用。
在一個實施例中,所述記憶體配接器電路是單個積體電路,所述單個積體電路被配置成實行:壓縮;去重複;以及錯誤修正。
根據本發明的實施例,提供一種計算系統,所述計算系統包括:中央處理單元;以及記憶體系統,包括:第一記憶體;以及記憶體配接工具,用於利用所述第一記憶體的儲存容量的擴增來將資料儲存於所述第一記憶體中以及自所述第一記憶體擷取資料,所述記憶體配接工具具有連接至所述中央處理單元的第一記憶體介面及連接至所述第一記憶體的第二記憶體介面,所述第一記憶體介面是NVDIMM-F介面,且所述計算系統被配置成將所述記憶體系統作為區塊裝置來操作。
210:中央處理單元
220:記憶體管理電路
230:主記憶體
240:記憶體ABCDE系統
250:記憶體配接器電路
260:中間記憶體
310:聯合記憶體
320:記憶體ABCDE驅動器
410:應用或中間軟體
420:結構
參考說明書、申請專利範圍及附圖將會瞭解及理解本發明的該些及其他特徵及優點,在附圖中:圖1是根據本發明實施例的系統記憶體層階的方塊圖。
圖2是根據本發明實施例的計算系統的硬體方塊圖。
圖3是根據本發明實施例的計算系統的混合硬體軟體方塊圖。
圖4是根據本發明實施例的用於修改對系統資訊函數調用(sysinfo function call)的回應的系統的軟體方塊圖。
以下結合附圖闡述的詳細說明旨在作為對根據本發明而提供的偽主記憶體系統的示例性實施例的說明,且並非旨在表示可在其中構造或利用本發明的唯一形式。所述說明結合所示實施例來闡述本發明的特徵。然而,應理解,藉由亦旨在囊括於本發明的精神及範圍內的不同實施例亦可達成相同或等效的功能及結構。如在本文中別處所表明,相同元件編號旨在指示相同元件或特徵。
在一些實施例中,系統是藉由壓縮及/或去重複及/或錯誤修正來部署線上記憶體擴增(inline memory augmentation)的高效偽記憶體機構,其可被稱作「記憶體ABCDE」。此種系統可在依賴於完全局限於記憶體系統本地的硬體技術的同時大幅提高記憶體密度。記憶體ABCDE系統所面臨的挑戰包括對雙倍資料速率同
步動態隨機存取記憶體(double data rate synchronous dynamic random-access memory,DDR)匯流排的整合及對此種系統所可提供的可變記憶體密度(例如,隨應用資料或外部條件而改變的記憶體密度(例如,可能影響錯誤的外部條件))的管理。此外,一些應用可不被寫入成明確地使用由記憶體ABCDE系統所提供的額外的容量。在一些實施例中,所述系統提供模擬系統記憶體容量以使得使用者空間應用能夠滿足對大的記憶體容量的需要。
在一些實施例中,作業系統(operating system)知曉底層記憶體(underlying memory)的實體組織(physical organization)及容量並實行相關運算以自應用遮蔽該些細節。在使用者空間之下,計算系統記憶體管理單元(memory management unit,MMU)(或「記憶體管理電路」)重新利用存在於LINUXTM內核中的卓越記憶體(transcendent memory)特徵將記憶體ABCDE系統作為快速交換區塊裝置(fast-swap block device)暴露於DDR介面(例如,第四代DDR(fourth-generation DDR,DDR4)介面)上。
圖1示出根據一個實施例的使用記憶體ABCDE系統作為偽主記憶體的系統記憶體層階。記憶體ABCDE系統可被稱作記憶體ABCDE「驅動機(drive)」,乃因其可作為區塊裝置來操作。
圖2示出根據一個實施例的計算系統的硬體方塊圖。在一些實施例中,使用記憶體ABCDE系統的計算系統可包括以下三個組件。首先,所述計算系統可包括基於具有快閃記憶體的非揮發性雙列直插記憶體模組(NVDIMM)(NVDIMM-F)形狀因數
(form factor)及介面(例如,在圖2中,位於記憶體ABCDE系統240與記憶體管理電路220之間的介面)的記憶體ABCDE系統240。NVDIMM-F記憶體可具有與記憶體ABCDE系統相同的屬性,乃因例如二者均可展現出可變儲存密度。第二,所述計算系統可使用基於卓越記憶體的軟體基礎設施。此基礎設施可包括驅動器(被稱作記憶體ABCDE驅動器),所述驅動器由作業系統用於存取記憶體ABCDE系統。第三,所述計算系統可採用經修改系統函數(例如,經修改sysinfo()函數)來模擬增大的主記憶體容量。
在先前技術應用中,可採用NVDIMM-F協定將快閃模組置於DDR記憶體匯流排上。此種應用可使得能夠使用僅支援具有64位元組快取列的短存取叢發(access burst)的介面(即,DDR介面)以長存取潛時來進行區塊存取。在此種應用中,位址空間可足夠大而使得DDR命令匯流排無法在自身的引腳限制(pin limit)內發佈邏輯區塊位址(logical block address,LBA)。因此,NVDIMM-F介面依賴於動態隨機存取記憶體(dynamic random access memory,DRAM)資料匯流排來向快閃模組發送命令(包括位址)。
在一些實施例中,作為取代,採用NVDIMM-F協定以包括對基於動態隨機存取記憶體(DRAM)的記憶體ABCDE系統的存取進而提供區塊存取。在一些實施例中,由於記憶體ABCDE系統可具有較基於快閃的系統低的容量,因此可將NVDIMM-F協
定修改成使用用於傳輸命令及位址的命令及位址匯流排(而非資料匯流排)。在此種實施例中,在命令及位址匯流排上寫入位址(藉由記憶體ABCDE驅動器),藉此直接存取記憶體位置(而非如在未經修改的NVDIMM-F協定中一樣在小的緩衝器中寫入所述位址本身)。
在一些實施例中,所述系統確保針對記憶體ABCDE系統的讀取及寫入命令不被快取,且因此命令被直接發送至所述記憶體ABCDE系統而非等待自中央處理單元(central processing unit,CPU)快取被清除。為達成此效果,記憶體ABCDE驅動器使用清除快取列(例如,CLFLUSH)中央處理單元指令及隨需清除(flush-on-demand)(例如,PCOMMIT)中央處理單元指令來確保命令到達ABCDE模組。另外,可採用記憶體ABCDE系統中的高效記憶體-記憶體直接記憶體存取(direct memory access,DMA)引擎將資料自所述記憶體ABCDE系統中的基於區塊的內部分頁傳送至計算系統的DDR4匯流排,以在主記憶體與所述記憶體ABCDE系統之間快速地來回遷移分頁。
在圖2所示實施例中,中央處理單元210藉由記憶體管理電路220與(i)主記憶體230(其可為DDR記憶體(例如,DDR4記憶體)或者在其他實施例中為被配置成連接至第二代或更高代雙倍資料速率同步動態隨機存取記憶體介面(例如,DDR2、DDR3、DDR4、或DDR5記憶體)的其他記憶體)通訊。記憶體管理電路220亦連接至包括記憶體配接器電路250及中間記憶體
260(被稱作「中間記憶體」,乃因其作用可被視為介於主記憶體230的作用與持久性儲存裝置(例如,固態驅動機(solid state drive,SSD))的作用之間)的記憶體ABCDE系統240。
記憶體配接器電路250可為系統晶片(system on a chip,SoC),例如其可為包括處理器、記憶體(用於儲存用於所述處理器的程式及資料)、以及其他邏輯及驅動電路系統的單個積體電路。記憶體配接器電路250可具有第一記憶體介面(例如,DDR4介面)及第二記憶體介面,記憶體配接器電路250經由所述第一記憶體介面連接(例如,經由DDR匯流排)至記憶體管理電路220,記憶體配接器電路250經由所述第二記憶體介面連接至中間記憶體260。第二記憶體介面可為可與中間記憶體260相容的任意適合的介面(例如,若中間記憶體260為DDR4記憶體,則第二記憶體介面為DDR4介面)。記憶體配接器電路250可在第一記憶體介面處實作如上所述的NVDIMM-F協定或經修改NVDIMM-F協定(後者在控制及位址匯流排上而非在資料匯流排上傳輸位址)。
在一些實施例中,記憶體配接器電路250進一步被配置成藉由壓縮、去重複、及錯誤修正中的一或多者來提供記憶體擴增。舉例而言,記憶體配接器電路250可壓縮自記憶體管理電路220擷取的資料並將經壓縮的資料儲存於中間記憶體260中,並且根據來自記憶體管理電路220的請求,記憶體配接器電路250可自中間記憶體260抓取經壓縮的資料、將其解壓縮,並將其發送
至記憶體管理電路220。相似地,記憶體配接器電路250可自儲存於中間記憶體260中的資料消除重複資料(並當記憶體管理電路220請求最初含有重複表項(duplicate entries)的資料時恢復所述重複表項),且可在將資料儲存於中間記憶體260中之前以錯誤修正碼(error-correcting code)對資料進行編碼,並對其自中間記憶體260所擷取的任意資料實行錯誤修正。
圖3示出根據一些實施例的混合硬體-軟體方塊圖。中央處理單元210具有對包括主記憶體230及記憶體ABCDE系統240的聯合記憶體(conglomerate memory)310的存取權限。在起動時,基礎輸入/輸出系統(basic input/output system,BIOS)中的指令暫存連接至記憶體ABCDE系統的DDR匯流排上的位址範圍,將與所述位址範圍交織的位址禁用,並將所述位址範圍指定為對應於區塊裝置。記憶體ABCDE系統240被暫存為區塊裝置,乃因(i)記憶體ABCDE系統240中的一些操作(例如,對資料進行壓縮及解壓縮)可能更適合於區塊存取而非個別的字元存取,且(ii)因此中央處理單元210將不會不恰當地依賴於記憶體ABCDE系統240作為同步DDR記憶體進行的運轉。
在一些實施例中,當加載作業系統時,記憶體ABCDE驅動器320暫存且實作前交換功能及清潔快取功能。若卓越記憶體特徵存在於LINUXTM內核中且在LINUXTM內核中被啟用,則LINUXTM內核的此特徵會調用該些功能。所述卓越記憶體特徵可攔截內核操作以逐出(i)清潔快取分頁或(ii)髒使用者分頁並
調用記憶體ABCDE驅動器320的清潔快取功能及前交換功能。舉例而言,當逐出清潔快取分頁時,卓越記憶體特徵可攔截逐出操作並調用清潔快取功能,所述清潔快取功能可將分頁自主記憶體230拷貝至記憶體ABCDE系統240中(中央處理單元210可隨後自記憶體ABCDE系統240存取所述分頁),或較所述分頁已被刪除的情形(因此後續的存取將需要自持久性儲存器(例如,自固態驅動機或硬驅動機)恢復所述分頁)更迅速地將所述分頁拷貝回至主記憶體230中。當髒使用者分頁被內核逐出時,卓越記憶體特徵可攔截逐出操作並調用前交換功能,所述前交換功能可將被逐出的髒使用者分頁拷貝至記憶體ABCDE系統240,此操作可較將所述分頁寫入至持久性儲存器更快速地完成。
記憶體ABCDE驅動器320可包括用於判斷是否接受或拒絕由記憶體ABCDE系統240所接收的任意寫入請求的方法。記憶體ABCDE驅動器320可藉由將中間記憶體260中的空閒空間乘以所估測擴增比率並將乘積與寫入請求中的資料的量進行比較來作出此判斷。所估測擴增比率可例如為因使用去重複而得到的所估測去重複比率,即對還可儲存多少資料的估測。在一些實施例中,記憶體ABCDE驅動器320被配置成產生基於已完成寫入操作的實際擴增比率但會隨時間緩慢變化的所估測擴增比率,因此實際擴增比率(例如,涉及少量資料的寫入操作的實際擴增比率)的大的波動不會造成所估測擴增比率的大的波動。舉例而言,在啟動時可將所估測擴增比率設定成1.0,且在已經過為所設定長度的時
間間隔之後,可將所述所估測擴增比率週期性地更新成等於實際擴增比率在具有所設定長度且在當前結束的時間間隔內的平均值。
可專門設計終端使用者及應用框架以避免使用未分頁記憶體(non-paged memory),乃因其他未分頁記憶體系統可能常駐於二級儲存器中(例如,常駐於持久性儲存器中)且可能具有長存取潛時。由於在一些實施例中記憶體ABCDE系統240提供未分頁記憶體,因而此可能使此種應用不必要地放棄記憶體ABCDE系統240的有益效果。一個可能的解決方案可為開發者重寫應用程式館及中間軟體框架,但此將引發顯著的挑戰(涉及對大量現有框架的修改)。
因此,在一些實施例中,可將內核修改成使得記憶體ABCDE系統240能夠模擬主記憶體以對系統調用(例如,對系統資訊函數的調用)作出回應。
圖4是根據本發明實施例的用於修改對系統資訊函數調用的回應的系統的軟體方塊圖。參照圖4,在一些實施例中,當應用或中間軟體410調用系統資訊時,所返送回的結構420可包括(i)基於主記憶體230的大小及中間記憶體260的大小的總可用記憶體(圖4中的「tram」)的值,以及(ii)基於主記憶體230中的空閒記憶體的量及中間記憶體260中的空閒記憶體的量的總空閒記憶體的值。
為了計及中間記憶體260中的儲存而使總記憶體及空閒
記憶體資訊增大的量可將欲儲存於中間記憶體260中的資料的預期擴增比率考慮在內。在一些實施例中,所返送回的總空閒記憶體的值等於以下之和:(i)主記憶體230中的空閒記憶體的量,以及(ii)中間記憶體260中的(1)所估測擴增比率與(2)空閒記憶體的量的乘積。可如上所述計算所估測擴增比率,或者可在系統啟動時或當不具有作為有意義估測的基礎的資料時根據保守演算法(用以得出可被稱作「最小擴增比率」的估測值)例如使用值1.0來計算所述所估測擴增比率。當作為有意義估測的基礎的資料可用時,可使用例如在時間間隔內已完成的寫入操作的最小實際擴增比率來計算所估測擴增比率。
此方式可能引起進一步的挑戰,即mlock()系統函數的實作。此系統函數被設計成當被調用時自主記憶體的虛擬位址開始銷定(pin)或鎖定(lock)特定量的記憶體以避免將所述特定量的記憶體交換至二級儲存器。在一些實施例中,在操作中,可能發生以下情況:此記憶體的一部份常駐於主記憶體230中,而另一部份常駐於記憶體ABCDE系統240中。為執行使用者空間請求,記憶體ABCDE驅動器可因此被配置成確保記憶體ABCDE系統中的當前分頁保持鎖定於定位上並延遲將所述當前分頁交換至二級(例如,持久性)儲存器的過程。
綜上所述,一些實施例提供一種偽主記憶體系統。所述系統包括記憶體配接器電路,所述記憶體配接器電路用於利用壓縮、去重複、及/或錯誤修正來實行記憶體擴增。記憶體配接器電
路連接至記憶體,且採用記憶體擴增方法來增大所述記憶體的有效儲存容量。
應理解,儘管本文中可能使用用語「第一(first)」、「第二(second)」、「第三(third)」等來闡述各種元件、組件、區、層、及/或區段,然而該些元件、組件、區、層、及/或區段不應受該些用語限制。該些用語僅用於區分各個元件、組件、區、層、或區段。因此,在不背離本發明概念的精神及範圍的條件下,可將以下論述的第一元件、組件、區、層、或區段稱為第二元件、組件、區、層、或區段。
本文所用的術語僅用於闡述具體實施例,而並非旨在限制本發明概念。本文所用的用語「實質上」、「約」及類似用語用作近似用語、而並程度用語,並且旨在慮及此項技術中具有通常知識者將知的量測值或計算值的固有偏差。本文所用的用語「主要組分(major component)」指代存在於組成物、聚合物、或產物中、量較所述組成或產物中的任意其他單個組分的量大的組分。相比之下,用語「基本組分(primary component)」指代重量佔所述組成物、聚合物、或產物的至少50%或更多的組分。本文所用的用語「主要部分(major portion)」當應用於多個項時,是意指所述項中的至少一半。
除非上下文中清楚地另外指示,否則本文所用單數形式「一(a及an)」旨在亦包含複數形式。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所
陳述特徵、整數、步驟、操作、元件、及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件、及/或其群組的存在或添加。本文所用用語「及/或」包括相關聯所列項其中一或多個項的任意及全部組合。當例如「...中的至少一者(at least one of)」等表達出現在一系列元件之前時是修飾整個系列的元件且並非修飾所述系列中的個別元件。此外,當闡述本發明概念的實施例時使用「可(may)」是指「本發明的一或多個實施例」。此外,用語「示例性(exemplary)」旨在指實例或說明。本文所用用語「使用(use)」、「正使用(using)」、及「被使用(used)」可視為分別與用語「利用(utilize)」、「正利用(utilizing)」、及「被利用(utilized)」同義。
將理解,當一元件或層被稱為「位於」另一元件或層「上」、「連接至」、「耦合至」或「鄰近於」另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接至、直接耦合至、或直接鄰近於所述另一元件或層,抑或可存在一或多個中間元件或層。相比之下,當稱一個元件或層「直接(directly)」位於另一元件或層「上(on)」,「直接連接至(directly connected to)」、「直接耦合至(directly coupled to)」、或「緊鄰於(immediately adjacent to)」另一元件或層時,則不存在中間元件或層。當第一元件與第一元件所連接至的第二元件之間存在中間元件時,可稱所述第一元件「經由(through)」所述中間元件連接至第二元件。
本文所列的任何數值範圍旨在包括歸於所列範圍內的相
同數值精度的所有子範圍。舉例而言,「1.0至10.0」的範圍旨在包括所列最小值1.0與所列最大值10.0之間(包含所列最小值1.0與所列最大值10.0在內)的所有子範圍,亦即具有等於或大於1.0的最小值及等於或小於10.0的最大值,例如(舉例而言,2.4至7.6)。本文所列任何最大數值限制旨在包括歸入其中的所有更低的數值限制,且在本說明書中所列任何最小數值限制旨在包括歸入其中的所有更高的數值限制。
儘管已在本文中具體闡述及說明了偽主記憶體系統的示例性實施例,然而對於熟習此項技術者將顯而易見,存在諸多潤飾及變型。因此,應理解,根據本發明的原理構造的偽主記憶體系統可被實施為不同於本文所具體闡述者。本發明亦界定於以下申請專利範圍及其等效範圍中。
210:中央處理單元
220:記憶體管理電路
230:主記憶體
240:記憶體ABCDE系統
250:記憶體配接器電路
260:中間記憶體
Claims (19)
- 一種計算系統,包括:中央處理單元;記憶體系統,包括:記憶體配接器電路;以及第一記憶體;以及第二記憶體,所述第二記憶體經由記憶體管理電路連接至所述中央處理單元,其中所述記憶體配接器電路具有連接至所述中央處理單元的第一記憶體介面及連接至所述第一記憶體的第二記憶體介面,所述第一記憶體介面是雙倍資料速率同步動態隨機存取記憶體介面,且其中所述記憶體配接器電路被配置成利用所述第一記憶體的儲存容量的擴增來將資料儲存於所述第一記憶體中以及自所述第一記憶體擷取資料,所述擴增被配置成根據擴增比率來增加所述第一記憶體的空閒記憶體,其中所述記憶體配接器電路還被配置成基於先前的寫入操作的壓縮及去重複中的任一者或兩者來估測所述擴增比率,且其中所述中央處理單元被配置成在所述第二記憶體中維持分頁快取,其中所述中央處理單元被配置成當將清潔分頁自所述分頁快取逐出時對所述清潔分頁調用清潔快取功能,所述清潔快取功能 被配置成將所述清潔分頁儲存於:當在所述第一記憶體中有足夠的空間可用時,儲存於所述第一記憶體中;以及否則,儲存於持久性儲存器中,且其中所述中央處理單元還被配置成基於所估測擴增比率來評估在所述第一記憶體中是否有足夠的空間可用,所述所估測擴增比率是在所設定時間間隔內儲存於所述第一記憶體中的資料的擴增比率的函數。
- 如申請專利範圍第1項所述的計算系統,其中所述擴增包括以下中的至少一者:壓縮;去重複;以及錯誤修正。
- 如申請專利範圍第1項所述的計算系統,其中所述第一記憶體介面是第二代或更高代雙倍資料速率同步動態隨機存取記憶體介面。
- 如申請專利範圍第3項所述的計算系統,其中所述第二記憶體介面是第二代或更高代雙倍資料速率同步動態隨機存取記憶體介面。
- 如申請專利範圍第3項所述的計算系統,其中所述第一記憶體介面是具有快閃記憶體的非揮發性雙列直插記憶體模組(NVDIMM-F)介面,且所述計算系統被配置成將所述記憶體系 統作為區塊裝置來操作。
- 如申請專利範圍第1項所述的計算系統,其中所述中央處理單元經由記憶體管理電路連接至所述記憶體配接器電路。
- 如申請專利範圍第1項所述的計算系統,其中所述第一記憶體是動態隨機存取記憶體且所述第二記憶體介面是第二代或更高代雙倍資料速率同步動態隨機存取記憶體介面。
- 如申請專利範圍第1項所述的計算系統,其中所述記憶體配接器電路是單個積體電路,所述單個積體電路被配置成實行:壓縮;去重複;以及錯誤修正。
- 如申請專利範圍第1項所述的計算系統,其中所述第二記憶體經由第三記憶體介面連接至所述記憶體管理電路,所述第三記憶體介面是第二代或更高代雙倍資料速率同步動態隨機存取記憶體介面。
- 如申請專利範圍第1項所述的計算系統,其中所述清潔快取功能被配置成基於所述所估測擴增比率來評估在所述第一記憶體中是否有足夠的空間可用。
- 如申請專利範圍第1項所述的計算系統,其中所述中央處理單元被配置成在所述第二記憶體中維持使用者記憶體空間,且所述中央處理單元被配置成當將髒分頁自所述使用者記憶體 空間逐出時對所述髒分頁調用前交換功能,所述前交換功能被配置成將所述髒分頁儲存於:當在所述第一記憶體中有足夠的空間可用時,儲存於所述第一記憶體中;以及否則,儲存於持久性儲存器中。
- 如申請專利範圍第11項所述的計算系統,其中所述前交換功能被配置成基於所述所估測擴增比率來評估在所述第一記憶體中是否具有足夠的空間可用。
- 如申請專利範圍第1項所述的計算系統,其中所述中央處理單元被配置成:執行一或多個應用,以及因應於將所述一或多個應用應用於系統資訊函數而:基於所述第一記憶體的大小及所述第二記憶體的大小,返送回總可用記憶體的值,以及基於所述第一記憶體中的空閒記憶體的量及所述第二記憶體中的空閒記憶體的量,返送回總空閒記憶體的值。
- 如申請專利範圍第13項所述的計算系統,其中所述總空閒記憶體的所述值是以下之和:所述第二記憶體中的空閒記憶體的量,以及所述第一記憶體的最小擴增比率與所述第一記憶體中的空閒記憶體的量的乘積,所述最小擴增比率為:當自系統啟動時起已經過所述所設定時間間隔時,為在所 述所設定時間間隔內儲存於所述第一記憶體中的資料的擴增比率的所述函數,以及否則,為2.0。
- 一種操作電腦系統的方法,所述電腦系統包括:中央處理單元;記憶體系統,包括:記憶體配接器電路;以及第一記憶體;以及第二記憶體,所述第二記憶體經由記憶體管理電路連接至所述中央處理單元,所述記憶體配接器電路具有連接至所述中央處理單元的第一記憶體介面及連接至所述第一記憶體的第二記憶體介面,所述第一記憶體介面是雙倍資料速率同步動態隨機存取記憶體介面,且所述方法包括利用所述第一記憶體的儲存容量的擴增將資料儲存於所述第一記憶體中以及自所述第一記憶體擷取資料,所述擴增被配置成根據擴增比率來增加所述第一記憶體的空閒記憶體,其中所述記憶體配接器電路被配置成基於先前的寫入操作的壓縮及去重複中的任一者或兩者來估測所述擴增比率,且其中所述中央處理單元被配置成在所述第二記憶體中維持分頁快取, 其中所述中央處理單元被配置成當將清潔分頁自所述分頁快取逐出時對所述清潔分頁調用清潔快取功能,所述清潔快取功能被配置成將所述清潔分頁儲存於:當在所述第一記憶體中有足夠的空間可用時,儲存於所述第一記憶體中;以及否則,儲存於持久性儲存器中,且其中所述中央處理單元還被配置成基於所估測擴增比率來評估在所述第一記憶體中是否有足夠的空間可用,所述所估測擴增比率是在所設定時間間隔內儲存於所述第一記憶體中的資料的擴增比率的函數。
- 如申請專利範圍第15項所述的方法,其中所述擴增包括以下中的至少一者:壓縮;去重複;以及錯誤修正。
- 如申請專利範圍第15項所述的方法,更包括將所述記憶體系統作為能夠以具有快閃記憶體的非揮發性雙列直插記憶體模組協定運作的區塊裝置來使用。
- 如申請專利範圍第15項所述的方法,其中所述記憶體配接器電路是單個積體電路,所述單個積體電路被配置成實行:壓縮;去重複;以及 錯誤修正。
- 一種計算系統,包括:中央處理單元;記憶體系統,包括:第一記憶體;以及記憶體配接工具,用於利用所述第一記憶體的儲存容量的擴增來將資料儲存於所述第一記憶體中以及自所述第一記憶體擷取資料,所述擴增被配置成根據擴增比率來增加所述第一記憶體的空閒記憶體,所述記憶體配接工具被配置成基於先前的寫入操作的壓縮及去重複中的任一者或兩者來估測所述擴增比率,所述記憶體配接工具具有連接至所述中央處理單元的第一記憶體介面及連接至所述第一記憶體的第二記憶體介面,所述第一記憶體介面是雙倍資料速率同步動態隨機存取記憶體介面,且所述計算系統被配置成將所述記憶體系統作為區塊裝置來操作,其中所述計算系統更包括:第二記憶體,所述第二記憶體經由記憶體管理電路連接至所述中央處理單元,其中所述中央處理單元被配置成在所述第二記憶體中維持分頁快取, 其中所述中央處理單元被配置成當將清潔分頁自所述分頁快取逐出時對所述清潔分頁調用清潔快取功能,所述清潔快取功能被配置成將所述清潔分頁儲存於:當在所述第一記憶體中有足夠的空間可用時,儲存於所述第一記憶體中;以及否則,儲存於持久性儲存器中,且其中所述中央處理單元還被配置成基於所估測擴增比率來評估在所述第一記憶體中是否有足夠的空間可用,所述所估測擴增比率是在所設定時間間隔內儲存於所述第一記憶體中的資料的擴增比率的函數。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/282,848 US10372606B2 (en) | 2016-07-29 | 2016-09-30 | System and method for integrating overprovisioned memory devices |
US15/282,848 | 2016-09-30 | ||
US201762489997P | 2017-04-25 | 2017-04-25 | |
US62/489,997 | 2017-04-25 | ||
US15/663,619 | 2017-07-28 | ||
US15/663,619 US10515006B2 (en) | 2016-07-29 | 2017-07-28 | Pseudo main memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201823994A TW201823994A (zh) | 2018-07-01 |
TWI710903B true TWI710903B (zh) | 2020-11-21 |
Family
ID=61781195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106130111A TWI710903B (zh) | 2016-09-30 | 2017-09-04 | 偽主記憶體系統及操作該系統的方法 |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP6788566B2 (zh) |
KR (1) | KR102266477B1 (zh) |
CN (2) | CN116594931B (zh) |
TW (1) | TWI710903B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11074007B2 (en) * | 2018-08-08 | 2021-07-27 | Micron Technology, Inc. | Optimize information requests to a memory system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004139503A (ja) * | 2002-10-21 | 2004-05-13 | Matsushita Electric Ind Co Ltd | 記憶装置及びその制御方法 |
US20060069879A1 (en) * | 2004-09-28 | 2006-03-30 | Sony Computer Entertainment Inc. | Methods and apparatus for providing a compressed network in a multi-processing system |
TW200821909A (en) * | 2006-05-18 | 2008-05-16 | Buffalo Inc | Data storage device and data storage method |
US20110145486A1 (en) * | 2009-12-16 | 2011-06-16 | Tsutomu Owa | Memory management device and method |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5668957A (en) * | 1995-11-02 | 1997-09-16 | International Business Machines Corporation | Method and apparatus for providing virtual DMA capability on an adapter connected to a computer system bus with no DMA support |
CN100524244C (zh) * | 2006-12-14 | 2009-08-05 | 英业达股份有限公司 | 网络存储系统的存储空间不足预警方法 |
US20100161909A1 (en) | 2008-12-18 | 2010-06-24 | Lsi Corporation | Systems and Methods for Quota Management in a Memory Appliance |
KR20100133710A (ko) * | 2009-06-12 | 2010-12-22 | 삼성전자주식회사 | 메모리 시스템 및 그것의 코드 데이터 로딩 방법 |
US8966477B2 (en) | 2011-04-18 | 2015-02-24 | Intel Corporation | Combined virtual graphics device |
US9507639B2 (en) * | 2012-05-06 | 2016-11-29 | Sandisk Technologies Llc | Parallel computation with multiple storage devices |
KR20140030383A (ko) * | 2012-08-27 | 2014-03-12 | 삼성전자주식회사 | 컴퓨팅 장치 및 컴퓨팅 장치의 동작 방법 |
US20150242432A1 (en) * | 2014-02-21 | 2015-08-27 | Microsoft Corporation | Modified Memory Compression |
-
2017
- 2017-09-04 TW TW106130111A patent/TWI710903B/zh active
- 2017-09-28 KR KR1020170126199A patent/KR102266477B1/ko active IP Right Grant
- 2017-09-29 JP JP2017190020A patent/JP6788566B2/ja active Active
- 2017-09-30 CN CN202310609420.9A patent/CN116594931B/zh active Active
- 2017-09-30 CN CN201710913938.6A patent/CN107885676B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004139503A (ja) * | 2002-10-21 | 2004-05-13 | Matsushita Electric Ind Co Ltd | 記憶装置及びその制御方法 |
US20060069879A1 (en) * | 2004-09-28 | 2006-03-30 | Sony Computer Entertainment Inc. | Methods and apparatus for providing a compressed network in a multi-processing system |
TW200821909A (en) * | 2006-05-18 | 2008-05-16 | Buffalo Inc | Data storage device and data storage method |
US20110145486A1 (en) * | 2009-12-16 | 2011-06-16 | Tsutomu Owa | Memory management device and method |
Also Published As
Publication number | Publication date |
---|---|
CN116594931B (zh) | 2024-04-05 |
TW201823994A (zh) | 2018-07-01 |
JP6788566B2 (ja) | 2020-11-25 |
CN116594931A (zh) | 2023-08-15 |
CN107885676B (zh) | 2023-06-13 |
KR102266477B1 (ko) | 2021-06-18 |
JP2018060538A (ja) | 2018-04-12 |
CN107885676A (zh) | 2018-04-06 |
KR20180036591A (ko) | 2018-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11030088B2 (en) | Pseudo main memory system | |
US10482032B2 (en) | Selective space reclamation of data storage memory employing heat and relocation metrics | |
US10956323B2 (en) | NVDIMM emulation using a host memory buffer | |
US9575884B2 (en) | System and method for high performance and low cost flash translation layer | |
KR101480659B1 (ko) | 2-레벨 시스템 메인 메모리 | |
Bae et al. | 2B-SSD: The case for dual, byte-and block-addressable solid-state drives | |
CN109154907B (zh) | 在输入-输出存储器管理单元中使用多个存储器元件来执行虚拟地址到物理地址转译 | |
US20110276746A1 (en) | Caching storage adapter architecture | |
Jung et al. | nvramdisk: A transactional block device driver for non-volatile ram | |
JP2017503266A (ja) | フラッシュメモリ内に記憶されたデータの推測的プリフェッチ | |
US20180089088A1 (en) | Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache | |
KR102168193B1 (ko) | 초과 공급 메모리 장치들을 통합하기 위한 시스템 및 방법 | |
US20170300255A1 (en) | Method and Apparatus for Detecting Transaction Conflict and Computer System | |
TWI710903B (zh) | 偽主記憶體系統及操作該系統的方法 | |
TW201802684A (zh) | 重疊輸入輸出記憶體管理單元映射及第二層記憶體讀取之二階命令緩衝器 | |
WO2019041903A1 (zh) | 一种基于非易失存储的计算装置及其使用方法 | |
JP2018502379A5 (zh) | ||
KR20150062646A (ko) | 전자 시스템 및 이의 동작 방법 | |
JP2014182812A (ja) | データ記憶装置 | |
Li et al. | A NUMA-aware Key-Value Store for Hybrid Memory Architecture | |
US11809341B2 (en) | System, device and method for indirect addressing | |
CN109032522A (zh) | 固态硬盘的数据读取方法以及固态硬盘 | |
US20240176740A1 (en) | Host managed memory shared by multiple host systems in a high availability system |