TWI752619B - 存取儲存的元資料以識別儲存資料的記憶體裝置 - Google Patents

存取儲存的元資料以識別儲存資料的記憶體裝置 Download PDF

Info

Publication number
TWI752619B
TWI752619B TW109130612A TW109130612A TWI752619B TW I752619 B TWI752619 B TW I752619B TW 109130612 A TW109130612 A TW 109130612A TW 109130612 A TW109130612 A TW 109130612A TW I752619 B TWI752619 B TW I752619B
Authority
TW
Taiwan
Prior art keywords
memory
memory device
application
data
address
Prior art date
Application number
TW109130612A
Other languages
English (en)
Other versions
TW202117543A (zh
Inventor
肯尼斯 馬里安 柯維茲
席娃山卡 古納世卡藍
亞明 D 艾卡爾
王宏育
賈斯汀 M 依諾
希瓦姆 斯瓦米
山繆 E 布萊蕭
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
Application filed by 美商美光科技公司 filed Critical 美商美光科技公司
Publication of TW202117543A publication Critical patent/TW202117543A/zh
Application granted granted Critical
Publication of TWI752619B publication Critical patent/TWI752619B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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
    • G06F2212/1024Latency reduction
    • 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/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本發明提供一種電腦系統,其儲存用以識別儲存用於該電腦系統之記憶體的可隨機存取資料之實體記憶體裝置的元資料。在一種作法中,由該電腦系統之一作業系統維護對一位址空間中之記憶體的存取。儲存的元資料使該位址空間之一第一位址範圍與一第一記憶體裝置相關聯,且使該位址空間之一第二位址範圍與一第二記憶體裝置相關聯。該作業系統藉由存取該儲存的元資料管理在該電腦系統上運行之程序。此管理包括基於該儲存的元資料來分配記憶體,使得將用於一第一程序之資料儲存於該第一記憶體裝置中,且將用於一第二程序之資料儲存於該第二記憶體裝置中。

Description

存取儲存的元資料以識別儲存資料的記憶體裝置
本文中所揭示之至少一些實施例大體而言係關於記憶體系統,且更特定言之,係關於但不限於存取儲存的元資料以識別記憶體系統之儲存資料的記憶體裝置。
各種類型之記憶體裝置可用於將資料儲存於電腦系統之主記憶體中。一種類型之揮發性記憶體裝置為動態隨機存取記憶體(DRAM)裝置。各種類型之非揮發性記憶體裝置可包括NAND快閃記憶體裝置或非揮發性隨機存取記憶體(NVRAM)裝置。
在作業系統中,記憶體管理負責管理電腦系統之主記憶體。記憶體管理追蹤主記憶體中之記憶體位置之狀態(例如分配或空閒之記憶體狀態)。記憶體管理進一步判定在作業系統上運行之各種程序當中的記憶體之分配。當將記憶體分配給程序時,作業系統判定將指派給程序之記憶體位置。
在一種作法中,作業系統使用分頁分配將主記憶體劃分成稱為頁框之固定大小之單元。將軟體程式之虛擬位址空間劃分成具有相同大小之頁。硬體記憶體管理單元將頁映射至實體記憶體中之框。在分頁記憶體管理作法中,每一程序通常在其自身位址空間中運行。
在一些情況下,記憶體管理單元(MMU)稱為分頁記憶體管理單元(PMMU)。MMU管理由作業系統使用之所有記憶體參考且進行虛擬記憶體位址至實體位址之轉換。MMU通常將虛擬位址空間(其為由處理器使用之位址之範圍)劃分成頁。
在一些作法中,MMU使用含有頁表項之頁表將虛擬頁號映射至主記憶體中之實體頁號。在一些情況下,使用稱為位址轉換暫存器(translation lookaside buffer;TLB)的頁表項之快取以避免在映射虛擬位址時存取儲存於主記憶體中之頁表的需要。當使用虛擬記憶體時,可將虛擬位址之相連範圍映射至實體記憶體之若干非相連塊。
更大體而言,電腦系統可具有一或多個記憶體子系統。記憶體子系統可為記憶體模組,諸如雙行記憶體模組(DIMM)、小外形DIMM (SO-DIMM),或非揮發性雙行記憶體模組(NVDIMM)。記憶體子系統可為儲存系統,諸如固態驅動機(SSD),或硬碟驅動機(HDD)。記憶體子系統可包括儲存資料的一或多個記憶體組件。記憶體組件可為例如非揮發性記憶體組件及揮發性記憶體組件。記憶體組件之實例包括記憶體積體電路。一些記憶體積體電路為揮發性的且需要電力來維持儲存的資料。一些記憶體積體電路為非揮發性的,且即使在未供電時亦可保留儲存的資料。非揮發性記憶體之實例包括快閃記憶體、唯讀記憶體(ROM)、可程式化唯讀記憶體(PROM)、可抹除可程式化唯讀記憶體(EPROM)及電可抹除可程式化唯讀記憶體(EEPROM)記憶體等。揮發性記憶體之實例包括動態隨機存取記憶體(DRAM)及靜態隨機存取記憶體(SRAM)。大體而言,電腦系統可利用記憶體子系統在記憶體組件處儲存資料且自記憶體組件檢索資料。
舉例而言,電腦系統可包括附接至該電腦系統之一或多個記憶體子系統。電腦系統可具有與一或多個記憶體子系統通信以儲存及/或檢索資料及指令之中央處理單元(CPU)。用於電腦之指令可包括作業系統、裝置驅動器及應用程式。作業系統管理電腦中之資源且為應用程式提供公用服務,諸如資源之記憶體分配及時間共用。裝置驅動器操作或控制電腦中之特定類型之裝置;且作業系統使用裝置驅動器來提供由該類型之裝置提供之資源及/或服務。電腦系統之中央處理單元(CPU)可運行作業系統及裝置驅動器以將服務及/或資源提供至應用程式。中央處理單元(CPU)可運行使用服務及/或資源之應用程式。舉例而言,實施一類型之應用程式的應用程式可指示中央處理單元(CPU)將資料儲存於記憶體子系統之記憶體組件中及自記憶體組件檢索資料。
電腦系統之作業系統可允許應用程式使用記憶體之虛擬位址將資料儲存於電腦系統之一或多個記憶體子系統之記憶體組件中,或自該等記憶體組件檢索資料。作業系統將虛擬位址映射至連接至電腦系統之中央處理單元(CPU)的一或多個記憶體子系統之實體位址。作業系統將在虛擬位址處規定之記憶體存取轉換為記憶體子系統之實體位址。
可將虛擬位址空間劃分成頁。可將虛擬記憶體之頁映射至記憶體子系統中之實體記憶體之頁。作業系統可使用分頁技術經由記憶體模組中之記憶體之頁存取儲存裝置中之記憶體之頁。在不同時間情況處,可將記憶體模組中之記憶體之相同虛擬頁用作代理以存取電腦系統中之儲存裝置或另一儲存裝置中之記憶體之不同實體頁。
電腦系統可包括超管理器(或虛擬機監視器)以創建或提供虛擬機。虛擬機為使用可用於電腦系統中之資源及服務來虛擬地實施的計算裝置。超管理器將虛擬機呈現給作業系統,如同虛擬機之組件為專用實體組件一般。客席作業系統(guest operating system)以類似於在電腦系統中運行之主機作業系統之方式在虛擬機中運行以管理可用於虛擬機中之資源及服務。超管理器允許多個虛擬機共用電腦系統之資源,且允許虛擬機在電腦上實質上彼此獨立地作業。
在一實施例中,提供一種方法,其包含:由一電腦系統之一處理裝置存取一位址空間中之記憶體,其中該電腦系統之記憶體裝置由該處理裝置使用該位址空間中之位址存取;儲存使該位址空間之一第一位址範圍與一第一記憶體裝置相關聯且使該位址空間之一第二位址範圍與一第二記憶體裝置相關聯之元資料,其中該第一記憶體裝置之一第一潛時不同於該第二記憶體裝置之一第二潛時;及基於儲存的元資料將該第一位址範圍分配給在該電腦系統上執行之一應用程式。
在一實施例中,提供一種系統,其包含:一第一記憶體裝置;一第二記憶體裝置;至少一個處理裝置;及記憶體,其含有指令,該等指令經組態以指示該至少一個處理裝置:存取由一作業系統維護之一位址空間中之記憶體,該存取包括使用該位址空間中之位址來存取該第一記憶體裝置及該第二記憶體裝置;儲存使該位址空間之一第一位址範圍與該第一記憶體裝置相關聯且使該位址空間之一第二位址範圍與該第二記憶體裝置相關聯之元資料;及由該作業系統基於儲存的元資料管理包括一第一程序及一第二程序的程序,其中將用於該第一程序之資料儲存於該第一記憶體裝置中,且將用於該第二程序之資料儲存於該第二記憶體裝置中。
在一實施例中,提供一種非暫時性機器可讀儲存媒體,其儲存指令,該等指令在至少一個處理裝置上執行時使得該至少一個處理裝置至少:存取一位址空間中之記憶體,其中由該至少一個處理裝置使用該位址空間中之位址來存取一電腦系統之記憶體裝置;儲存使該位址空間之一第一位址範圍與一第一記憶體裝置相關聯且使該位址空間之一第二位址範圍與一第二記憶體裝置相關聯之元資料;將第一資料提供至在該電腦系統上執行之一應用程式,該第一資料指示該第一記憶體裝置之一第一潛時小於該第二記憶體裝置之一第二潛時;回應於將該第一資料提供至該應用程式,自該應用程式接收將與該應用程式相關聯之第二資料儲存於該第一記憶體裝置中之一請求;回應於該應用程式之儲存該第二資料的一請求,查詢儲存的元資料以提供一結果;及基於該結果將該第二資料儲存於該第一記憶體裝置中。
本文之至少一些實施例係關於存取儲存的元資料以識別記憶體系統之儲存資料的記憶體裝置。在如本文中所論述之各種實施例中,元資料可由各種類型之電腦系統儲存及存取。在一個實例中,電腦系統為系統單晶片(SoC)裝置,其儲存用於管理在SoC裝置上運行之一或多個程序的記憶體使用的元資料。在一個實例中,行動裝置使用SoC裝置來管理向在行動裝置上運行之一或多個應用程式分配主記憶體。
先前電腦系統常常使用不同類型之記憶體裝置來儲存資料。通常使用之一種類型之記憶體裝置為DRAM,其通常視為提供快速讀取及寫入存取。DRAM通常用於將資料儲存於電腦系統之主記憶體中。
其他記憶體裝置(諸如快閃記憶體)通常視為慢於DRAM。舉例而言,DRAM之讀取或寫入存取潛時通常明顯小於快閃記憶體之讀取或寫入存取潛時。作為特定實例,一些記憶體裝置之寫入存取潛時可比DRAM裝置大數十或甚至數百倍。
在使用不同類型之實體記憶體裝置以將資料儲存於主記憶體中之先前電腦系統中,存在處理器不具有對用於各種程序之記憶體如何實際上映射至記憶體裝置之察覺的技術問題。舉例而言,處理器可將虛擬位址範圍分配給程序。然而,處理器未察覺如何將虛擬位址範圍映射至不同記憶體裝置。
在一個實例中,若將用於一程序之虛擬位址範圍映射至明顯慢於其他記憶體裝置(例如DRAM)的實體記憶體裝置(例如快閃記憶體),則該程序可因不能自主記憶體快速存取繼續執行該程序所需之資料而被迫緩慢運行。舉例而言,該程序可能需要來自主記憶體之回應以便繼續資料計算或其他處理(例如包括用於由處理器向主記憶體作出的讀取存取請求之資料以獲得在由該程序執行期間所需之資料的回應)。若來自主記憶體之所需資料實際上儲存於緩慢實體記憶體裝置中,則處理在等待回應時明顯延遲。
本發明之各種實施例提供對以上技術問題中之一或多者的技術解決方案。在一些實施例中,電腦系統儲存關於由電腦系統使用之記憶體裝置(例如用以提供主記憶體之記憶體裝置)之潛時之資料。在一個實例中,已知對電腦系統之處理器可見的各種記憶體區之潛時(例如如由在儲存的元資料中收集及/或聚合之資訊表示,如下文所論述)。
在一些實施例中,處理器、作業系統及/或應用程式(如由軟體設計者程式化)可由電腦系統啟動及/或進行動作以避免歸因於緩慢記憶體存取之明顯程序延遲。舉例而言,需要快速記憶體回應之高優先級程序可經組態以在DRAM中運行。
在另一實例中,可監視在行動裝置上執行之應用程式的優先級。當應用程式之優先級增加(例如自低變高)時,處理器及/或作業系統可將應用程式自動傳送出主記憶體之對應於緩慢記憶體裝置的位址範圍,且將該應用程式移動至對應於快速記憶體裝置之新的位址範圍。
在一個實例中,記憶體裝置類型包括DRAM、NVRAM及NAND快閃。程序之優先級由處理器(例如基於該程序之資料使用模式)判定。基於關於映射至此等記憶體裝置類型之位址範圍之儲存的元資料,處理器將程序分配給具有適當記憶體潛時之位址範圍。舉例而言,處理器可判定程序具有低、中抑或高優先級。基於判定程序具有中優先級,將與該程序相關聯之軟體及/或資料儲存於對應於NVRAM記憶體裝置類型中之實體儲存的位址範圍中,其具有中潛時。
在一個實例中,NVRAM裝置類型為3D XPoint記憶體。在一個實例中,NVRAM裝置類型可為電阻式隨機存取記憶體、磁阻式RAM、相變RAM及/或鐵電RAM。在一個實例中,將NVRAM晶片用作電腦系統之主記憶體(例如NVDIMM-P)。在一個實例中,使用DIMM封裝中之非揮發性3D XPoint記憶體來實施NVRAM裝置。
在另一實例中,若處理器及/或作業系統未經組態以回應於優先級改變而將應用程式自動傳送至不同位址範圍,則應用程式之軟體程式碼自身可經組態以自儲存的元資料讀取一或多個值。基於讀取值,應用程式自身可管理資料儲存,使得將資料優先儲存於對應於更快記憶體裝置之位址範圍中。在一個實例中,應用程式可基於讀取或以其他方式經提供對儲存的元資料之存取來判定電腦系統中之可用記憶體裝置之相對潛時。在一個實例中,儲存的元資料規定哪一資料在具有不同潛時之各種不同記憶體裝置中之哪一記憶體裝置上。藉由以此方式規定記憶體裝置,應用程式可取決於正用以儲存資料之記憶體裝置判定對特定資料的存取之潛時。
在一個實例中,行動裝置上之應用程式在由(例如在系統單晶片裝置上執行之)作業系統請求主記憶體之分配時讀取儲存的元資料。在一個實例中,應用程式作出對主記憶體中之對應於特定類型之記憶體裝置及/或與記憶體讀取或寫入存取相關聯之特定潛時之位址範圍的請求。
在一個實例中,應用程式讀取或以其他方式存取儲存的元資料以判定哪一記憶體為快速的,及哪一記憶體為緩慢的。在行動裝置之第一上下文中,應用程式作出對快速記憶體之分配的請求。在行動裝置之第二上下文中,應用程式作出對緩慢記憶體之分配的請求。在一個實例中,回應於預定上下文之偵測,應用程式啟動或作出對記憶體之分配之改變的請求。在一個實例中,應用程式基於(例如由處理器)對儲存的元資料作出之經更新查詢及/或由電腦系統之處理器提供至應用程式的資料(例如行動裝置之作業特性)判定上下文之改變。
在一個實施例中,電腦系統包括第一記憶體裝置(例如DRAM)及第二記憶體裝置(例如NVRAM或NAND快閃),及一或多個處理裝置(例如CPU或系統單晶片(SoC))。電腦系統進一步包括含有指令之記憶體,該等指令經組態以指示一或多個處理裝置:存取由一作業系統維護之一位址空間中之記憶體,該存取包括使用該位址空間中之位址來存取該第一記憶體裝置及該第二記憶體裝置;儲存使該位址空間之一第一位址範圍與該第一記憶體裝置相關聯且使該位址空間之一第二位址範圍與該第二記憶體裝置相關聯之元資料;及由該作業系統基於儲存的元資料管理包括一第一程序及一第二程序的程序,其中將用於該第一程序之資料儲存於該第一記憶體裝置中,且將用於該第二程序之資料儲存於該第二記憶體裝置中。
在一個實施例中,電腦系統使用包括DRAM、NVRAM及NAND快閃之記憶體裝置類型。在一個實例中,DRAM快於NVRAM,NVRAM快於NAND快閃。電腦系統經組態以使得可由電腦系統之處理器使用虛擬記憶體位址直接存取所有三種不同類型之記憶體。在一個實例中,處理器與記憶體管理單元通信以實施虛擬至實體位址映射系統。
在一個實施例中,應用程式未經預程式化或未以其他方式經組態以基於不同類型之記憶體裝置管理或處置記憶體分配之最佳化。舉例而言,此可針對舊有軟體程式發生。在此類型之情況下,作業系統可經組態以管理針對應用程式之記憶體分配之最佳化。
在一個實例中,作業系統偵測或以其他方式判定應用程式之一或多個特性。基於特性,作業系統使用儲存的元資料將主記憶體中之一或多個位址範圍指派給應用程式。在一個實例中,基於由應用程式自身(例如當應用程式在行動裝置上啟動時)提供之資訊來判定特性。在另一實例中,除在其上執行應用程式之電腦系統以外,由計算裝置提供特性。在一個實例中,使用中央儲存庫來儲存及更新應用程式之特性之資料庫或表。在一個實例中,中央伺服器將關於待使用之一類型之實體記憶體的指示提供至作業系統。
在一個實施例中,作業系統判定與電腦系統及/或應用程式之執行相關聯之上下文。基於此上下文,作業系統使用儲存的元資料將主記憶體中之一或多個位址範圍指派給應用程式。
在一個實施例中,儲存的元資料用於識別儲存資料的裝置。記憶體子系統具有可由記憶體位址空間中之處理器(例如SoC)定址之多個實體記憶體裝置(例如DRAM、NVRAM及NAND快閃)。元資料用以規定將哪些記憶體位址區映射至哪些實體記憶體裝置。元資料可載入至DRAM及/或處理器中(例如載入至處理器之快取中)以判定哪一資料在哪一裝置上,及/或用以估計對各別資料之存取之潛時。
在一個實施例中,應用程式在具有使用主記憶體之處理器的行動裝置上執行。應用程式請求行動裝置之作業系統分配主記憶體之一部分以供由應用程式使用。所分配記憶體在邏輯/虛擬記憶體空間中(例如如由程式設計師及由處理器之執行單元所見之記憶體位址為虛擬的)。在一個實施例中,藉由頁表將虛擬記憶體位址映射至真實/實體記憶體。將頁表中之映射資料之一部分快取於處理器之緩衝器中。在一個實例中,緩衝器為位址轉換暫存器(TLB)。
在一個實施例中,電腦系統包括DRAM、NVRAM及NAND快閃記憶體裝置。電腦系統之處理器按位址隨機存取主記憶體。主記憶體內之位址對應於此等三種類型之記憶體裝置上之資料儲存之實體位置。在一個實例中,裝置中之每一者由處理器使用同步記憶體匯流排存取。在一個實例中,DRAM為同步動態隨機存取記憶體(SDRAM),其具有與在CPU與記憶體控制器集線器之間承載資料之系統匯流排同步之介面。
1 繪示根據一些實施例之具有記憶體子系統110的實例計算環境100。記憶體子系統110可包括媒體,諸如記憶體組件109A至109N。記憶體組件109A至109N可為揮發性記憶體組件、非揮發性記憶體組件,或此類之組合。在一些實施例中,記憶體子系統110為記憶體模組。記憶體模組之實例包括DIMM及NVDIMM。在一些實施例中,記憶體子系統110為混合式記憶體/儲存子系統。大體而言,計算環境100可包括使用記憶體子系統110之電腦系統120。舉例而言,電腦系統120可將資料寫入至記憶體子系統110且自記憶體子系統110讀取資料。
電腦系統120可為計算裝置,諸如行動裝置、IoT裝置、桌上型電腦、膝上型電腦、網路伺服器,或包括記憶體及處理裝置之此計算裝置。電腦系統120可包括或耦接至記憶體子系統110,使得電腦系統120可自記憶體子系統110讀取資料或將資料寫入至記憶體子系統110。電腦系統120可經由實體主機介面耦接至記憶體子系統110。如本文中所使用,「耦接至」通常係指組件之間的連接,其可為間接通信連接或直接通信連接(例如無中介組件)、有線或無線、包括諸如電、光學、磁性之連接等。實體主機介面之實例包括但不限於串列進階附接技術(SATA)介面、快捷周邊組件互連(PCIe)介面、通用串列匯流排(USB)介面、光纖通道、串列附接SCSI (SAS)、雙資料速率(DDR)記憶體匯流排等。實體主機介面可用於在電腦系統120與記憶體子系統110之間傳輸資料。當記憶體子系統110藉由PCIe介面與電腦系統120耦接時,電腦系統120可進一步利用NVM快捷(NVMe)介面存取記憶體組件109A至109N。實體主機介面可提供用於在記憶體子系統110與電腦系統120之間傳遞控制、位址、資料及其他信號之介面。
1 繪示記憶體子系統110作為實例。大體而言,電腦系統120可經由共用通信連接、多個單獨通信連接及/或通信連接之組合存取多個記憶體子系統。在一個實例中,每一記憶體子系統110可為由處理裝置118經由記憶體匯流排隨機存取之不同類型之記憶體裝置。
電腦系統120包括處理裝置118及控制器116。處理裝置118可為例如微處理器、中央處理單元(CPU)、處理器之處理核心、執行單元等。在一些情況下,控制器116可稱為記憶體控制器、記憶體管理單元及/或啟動器。在一個實例中,控制器116控制經由耦接於電腦系統120與一或多個記憶體子系統110之間的匯流排之通信。
大體而言,控制器116可將命令或請求發送至記憶體子系統110以用於對記憶體組件109A至109N之所要存取。控制器116可進一步包括介面電路系統以與記憶體子系統110通信。介面電路系統可將自記憶體子系統110接收到之回應轉換成用於電腦系統120之資訊。
電腦系統120之控制器116可與記憶體子系統110之控制器115通信以進行操作,諸如在記憶體組件109A至109N處讀取資料、寫入資料或抹除資料,及其他此類操作。在一些情況下,控制器116整合於處理裝置118之同一封裝內。在其他情況下,控制器116與處理裝置118之封裝分開。控制器116及/或處理裝置118可包括硬體,諸如一或多個積體電路及/或離散組件、緩衝器記憶體、快取記憶體或其組合。控制器116及/或處理裝置118可為微控制器、專用邏輯電路系統(例如場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)等),或另一合適之處理器。
記憶體組件109A至109N可包括各種不同類型之非揮發性記憶體組件及/或揮發性記憶體組件之任何組合。非揮發性記憶體組件之實例包括負及(NAND)類型快閃記憶體。在一個實例中,記憶體組件109A至109N中之每一者可包括一或多個記憶單元陣列,諸如單階單元(SLC)或多階單元(MLC) (例如三階單元(TLC)或四階單元(QLC))。在一些實施例中,特定記憶體組件可包括記憶單元之SLC部分及MLC部分兩者。記憶單元中之每一者可儲存由電腦系統120使用之一或多個資料位元(例如資料塊)。
儘管諸如NAND類型快閃記憶體之非揮發性記憶體組件為一個實例,但記憶體組件109A至109N可係基於任何其他類型之記憶體,諸如揮發性記憶體。在一些實施例中,記憶體組件109A至109N可為(但不限於)隨機存取記憶體(RAM)、唯讀記憶體(ROM)、動態隨機存取記憶體(DRAM)、同步動態隨機存取記憶體(SDRAM)、相變記憶體(PCM)、磁隨機存取記憶體(MRAM)、自旋轉移力矩(STT)-MRAM、鐵電電晶體隨機存取記憶體(FeTRAM)、鐵電RAM (FeRAM)、導電橋接RAM (CBRAM)、電阻式隨機存取記憶體(RRAM)、氧化物類RRAM (OxRAM)、負或(NOR)快閃記憶體、電可抹除可程式化唯讀記憶體(EEPROM)、奈米線類非揮發性記憶體、併有憶阻器技術之記憶體,及非揮發性記憶單元之3D XPoint陣列。非揮發性記憶體之交叉點陣列可基於體電阻之改變結合可堆疊交叉柵格資料存取陣列進行位元儲存。另外,與許多基於快閃之記憶體相比,交叉點非揮發性記憶體可進行原地寫入操作,其中可在先前未抹除非揮發性記憶單元之情況下對該非揮發性記憶單元進行程式化。另外,記憶體組件109A至109N之記憶單元可分組為可指用以儲存資料之記憶體組件之單元的記憶體頁或資料塊。
記憶體子系統110之控制器115可與記憶體組件109A至109N通信以進行操作,諸如在記憶體組件109A至109N處讀取資料、寫入資料或抹除資料,及其他此類操作(例如回應於由控制器116在命令匯流排上排程之命令)。控制器115可包括硬體,諸如一或多個積體電路及/或離散組件、緩衝器記憶體或其組合。控制器115可為微控制器、專用邏輯電路系統(例如場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)等),或另一合適之處理器。控制器115可包括經組態以執行儲存於局部記憶體119中之指令的處理裝置117 (處理器)。在所繪示實例中,控制器115之局部記憶體119包括嵌入式記憶體,其經組態以儲存用於進行控制記憶體子系統110之操作的各種程序、操作、邏輯流程及常式之指令,包括處置記憶體子系統110與電腦系統120之間的通信。在一些實施例中,局部記憶體119可包括儲存記憶體指標、所提取資料等之記憶體暫存器。局部記憶體119亦可包括用於儲存微碼之唯讀記憶體(ROM)。儘管 1 中之實例記憶體子系統110已繪示為包括控制器115,但在本發明之另一實施例中,記憶體子系統110可不包括控制器115,且可改為依賴於外部控制(例如由外部主機或由與記憶體子系統分開之處理器或控制器提供)。
大體而言,控制器115可自電腦系統120接收命令或操作,且可將該等命令或操作轉換成指令或適當之命令以達成對記憶體組件109A至109N之所要存取。控制器115可負責其他操作,諸如耗損調平操作、廢料收集操作、錯誤偵測及錯誤校正程式碼(ECC)操作、加密操作、快取操作,及與記憶體組件109A至109N相關聯之邏輯塊位址與實體塊位址之間的位址轉換。控制器115可進一步包括主機介面電路系統以經由實體主機介面與電腦系統120通信。主機介面電路系統可將自電腦系統接收到之命令轉換成用以存取記憶體組件109A至109N之命令指令,以及將與記憶體組件109A至109N相關聯之回應轉換成用於電腦系統120之資訊。
記憶體子系統110亦可包括未繪示之額外電路系統或組件。在一些實施例中,記憶體子系統110可包括快取或緩衝器121 (例如DRAM或SRAM),及可自控制器115接收位址且解碼位址以存取記憶體組件109A至109N的位址電路系統(例如列解碼器及行解碼器)。
計算環境100包括電腦系統120中之元資料組件113,其儲存用以識別儲存資料的記憶體裝置之元資料(例如如上文之各種實施例中所論述)。元資料組件113之一部分可常駐於電腦系統120及/或記憶體子系統110上。在一個實例中,將元資料之一部分儲存於局部記憶體119及/或緩衝器121中。在一個實例中,將元資料之一部分替代地及/或另外儲存於控制器116之快取中(例如儲存於位址轉換暫存器中)。
在一個實例中,記憶體子系統110可經由DDR或其他類型之同步記憶體匯流排為電腦系統120提供對不同類型之記憶體裝置中之資料的存取。在一個實施例中,將存取提供至DIMM上之NVRAM中之資料及DRAM中之資料。在一個實例中,使資料在電腦系統120之隨機存取記憶體位址空間中可存取,以用於在經由DDR記憶體匯流排作出之主機讀取/寫入請求期間進行存取。
在一個實例中,電腦系統120將頁入請求(用於對一頁之存取)發送至控制器115。回應於接收到頁入請求,控制器115將一頁自緩慢媒體(諸如非揮發性記憶體裝置)移動至揮發性記憶體裝置(例如記憶體子系統110上之DRAM)。
在一個實例中,電腦系統120將頁出請求發送至控制器115。回應於接收到頁出請求,控制器115經由緩衝器121將資料自揮發性記憶體(例如記憶體子系統110上之DRAM)移出至非揮發性記憶體。
在一些實施例中,電腦系統120中之控制器116及/或處理裝置118包括元資料組件113之至少一部分。舉例而言,控制器116及/或處理裝置118可包括實施元資料組件113之邏輯電路系統。舉例而言,電腦系統120之處理裝置118 (處理器)可經組態以執行儲存於記憶體中之指令,以用於進行識別用於元資料組件113之資料儲存於哪些裝置中的操作,如本文中所描述。在一些實施例中,元資料組件113為電腦系統120之作業系統之部分、裝置驅動器或應用程式(例如在電腦系統120上執行之應用程式)。
在一些實施例中,記憶體子系統110中之控制器115及/或處理裝置117包括元資料組件113之至少一部分。舉例而言,控制器115及/或處理裝置117可包括實施元資料組件113之邏輯電路系統。
在一個實例中,中央處理單元(CPU)可存取連接至CPU之記憶體系統中之記憶體。舉例而言,中央處理單元(CPU)可經組態以基於對元資料組件113之儲存的元資料的查詢來存取記憶體。
2 展示根據一些實施例之使用記憶體匯流排203存取記憶體模組205中之不同類型之記憶體的行動裝置200。 2 展示具有不同類型之記憶體的電腦系統。 2 之電腦系統包括行動裝置200,及經由記憶體匯流排203連接至行動裝置200的記憶體模組205。記憶體模組205為 1 中所繪示之記憶體子系統110之實例。
行動裝置200包括處理裝置118,其可為中央處理單元或具有一或多個處理核心之微處理器。行動裝置200可具有快取記憶體211。快取記憶體211之至少一部分可視情況整合於處理裝置118之同一積體電路封裝內。
2 中所繪示之記憶體模組205具有多種類型之記憶體(例如221及223)。舉例而言,A型記憶體221 (例如DRAM)快於B型記憶體223 (例如NVRAM)。舉例而言,記憶體匯流排203可為雙資料速率匯流排。大體而言,若干記憶體模組(例如205)可耦接至記憶體匯流排203。
處理裝置118經由指令(例如作業系統及/或一或多個裝置驅動器)經組態以使用元資料組件113存取電腦系統中之記憶體之一部分。舉例而言,可存取記憶體模組205之B型記憶體223 (例如NVRAM)或可存取記憶體模組205之A型記憶體221 (例如DRAM)。在一個實施例中,記憶體模組205之B型記憶體223僅可經由對記憶體模組205之A型記憶體221進行定址來存取。
控制器227可設置於記憶體模組205中以管理對A型記憶體221及B型記憶體223之資料存取。在一個實施例中,當將資料傳送至緩衝器121或自緩衝器121傳送資料時,控制器227多工由行動裝置200及記憶體模組205對DRAM或NVRAM之存取。在一個實例中,記憶體匯流排203提供主機DDR通道作為行動裝置200與記憶體模組205之間的DDR介面。在一個實例中,一旦將一頁自NVRAM記憶體檢索至緩衝器121中,即可經由習知DDR4槽(例如主機DDR通道)載入該頁以供由行動裝置存取。
大體而言,記憶體子系統(例如205)可包括媒體,諸如記憶體(例如221……223)。記憶體(例如221……223)可包括揮發性記憶體、非揮發性記憶體(NVM)及/或此類之組合。處理裝置118可直接或間接地將資料寫入至記憶體子系統(例如記憶體模組205)中之每一者且自記憶體子系統(例如記憶體模組205)讀取資料。
在一個實施例中,記憶體模組205藉由使用緩衝器121提供對非揮發性記憶體或揮發性記憶體之記憶體匯流排存取。在一個實例中,記憶體模組205為經由DDR匯流排耦接至行動裝置200的DIMM。儲存媒體為例如交叉點記憶體。
在一個實施例中,行動裝置經由用於讀取/寫入操作之通信通道(例如使用DDR4匯流排)與記憶體模組通信。行動裝置可具有可經由互連與諸如記憶體模組之電腦周邊裝置附接的一或多個中央處理單元(CPU),該互連諸如電腦匯流排(例如串列AT附接件(SATA)、周邊組件互連(PCI)、PCI延伸(PCI-X)、PCI快捷(PCIe))、通信部分及/或電腦網路。
在一個實施例中,記憶體模組可用於儲存用於非揮發性或揮發性儲存媒體中之處理器的資料。記憶體模組具有使用通信通道實施與行動裝置之通信的主機介面。在一個實施例中,記憶體模組205具有回應於來自處理裝置118之通信而運行例如韌體以進行操作之控制器227。在一個實例中,記憶體模組包括揮發性動態隨機存取記憶體(DRAM)及NVRAM。DRAM及NVRAM將可由處理裝置118存取之資料儲存於記憶體位址空間中。
如所繪示, 2 之電腦系統用以實施行動裝置。處理裝置118可自記憶體子系統(例如205)讀取資料或將資料寫入至該等記憶體子系統。
實體主機介面可用於在處理裝置118與記憶體子系統(例如205)之間傳輸資料。實體主機介面可提供用於在記憶體子系統(例如205)與處理裝置118之間傳遞控制、位址、資料及其他信號之介面。
大體而言,記憶體子系統(例如記憶體模組205)包括連接提供記憶體(例如221……223)之記憶體裝置集合(諸如記憶體積體電路)之印刷電路板。記憶體子系統(例如205)上之記憶體(例如221……223)可包括不同類型之非揮發性記憶體裝置及/或揮發性記憶體裝置之任何組合。
在一些實施中,記憶體(例如221……223)可包括但不限於隨機存取記憶體(RAM)、唯讀記憶體(ROM)、動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、同步動態隨機存取記憶體(SDRAM)、相變記憶體(PCM)、磁隨機存取記憶體(MRAM)、負或(NOR)快閃記憶體、電可抹除可程式化唯讀記憶體(EEPROM),及/或非揮發性記憶單元之交叉點陣列。
記憶體子系統(例如記憶體模組205)可具有回應於來自處理裝置118之請求、命令或指令而與記憶體(例如221……223)通信以進行操作之控制器(例如227),該等操作諸如讀取資料、寫入資料或抹除記憶體(例如221……223)中之資料,及其他此類操作。控制器(例如227)可包括硬體,諸如一或多個積體電路及/或離散組件、緩衝器記憶體或其組合。控制器(例如227)可為微控制器、專用邏輯電路系統(例如場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)等),或另一合適之處理器。控制器(例如227)可包括經組態以執行儲存於局部記憶體中之指令的一或多個處理器(處理裝置)。
控制器(例如227)之局部記憶體可包括嵌入式記憶體,其經組態以儲存用於進行控制記憶體子系統(例如205)之操作的各種程序、操作、邏輯流程及常式之指令,包括處置記憶體子系統(例如205)與處理裝置118之間的通信,及在下文更詳細地描述之其他功能。控制器(例如227)之局部記憶體可包括用於儲存微碼之唯讀記憶體(ROM)及/或儲存例如記憶體指標、所提取資料等之記憶體暫存器。
儘管 2 中之實例記憶體子系統205已繪示為包括控制器227,但在本發明之另一實施例中,記憶體子系統(例如205)可不包括控制器(例如227),且可改為依賴於外部控制(例如由與記憶體子系統(例如205)分開之處理器或控制器提供)。
大體而言,控制器(例如227)可根據用於通信通道(例如203)之標準通信協定自處理裝置118接收命令、請求或指令,且可將遵從標準協定之命令、請求或指令轉換成記憶體子系統(例如205)內之詳細指令或適當之命令,以達成對記憶體(例如221……223)之所要存取。舉例而言,控制器(例如227)可負責操作,諸如與記憶體(例如221……223)相關聯之邏輯位址與實體位址之間的位址轉換。控制器(例如227)可進一步包括主機介面電路系統以經由實體主機介面與處理裝置118通信。主機介面電路系統可將自處理裝置118接收到之命令轉換成命令指令以存取記憶體裝置(例如221……223),以及將與記憶體裝置(例如221……223)相關聯之回應轉換成用於處理裝置118之資訊。
記憶體子系統(例如205)亦可包括未繪示之額外電路系統或組件。在一些實施中,記憶體子系統(例如205)可包括快取或緩衝器(例如DRAM),及可自控制器(例如227)接收位址且解碼位址以存取記憶體(例如221……223)的位址電路系統(例如列解碼器及行解碼器)。
在一個實例中,記憶體匯流排203具有一或多個連接器以向記憶體子系統(例如205)提供功率及/或經由預定協定與記憶體子系統(例如205)通信;且記憶體子系統(例如205)具有一或多個連接器以自處理裝置118接收功率、資料及命令。在一個實例中,處理裝置118可執行一或多個作業系統以提供服務,包括記憶體存取,其中使用同步記憶體存取來存取電腦系統中之記憶體之一部分(例如儲存於NVRAM中之一頁)。
3 繪示根據一些實施例之儲存用以存取記憶體子系統302中之記憶體裝置之元資料320的實例電腦系統300。在記憶體子系統302中存取之記憶體裝置包括DRAM 304、NVRAM 306及NAND快閃308。在一個實施例中,電腦系統300替代地及/或另外將元資料322儲存於用以存取記憶體裝置的DRAM 304中。
在一個實施例中,電腦系統300之處理裝置310存取位址空間中之記憶體。在一個實例中,當執行一或多個應用程式時,記憶體為由處理裝置310使用之主記憶體。處理裝置310使用位址空間中之位址存取不同記憶體裝置。
在一個實施例中,元資料320、322使位址空間之第一位址範圍與記憶體裝置(例如DRAM 304)相關聯,且使位址空間之第二位址範圍與不同記憶體裝置(例如NVRAM 306或NAND快閃308)相關聯。在一個實例中,DRAM 304之潛時小於NVRAM 306及NAND快閃308之潛時。
在處理裝置310上執行之應用程式包括應用程式312,其經組態以包括記憶體類型314。當應用程式312初始地啟動時,應用程式312將記憶體類型314連同對電腦系統300之主記憶體中之記憶體之分配的請求一起提供至處理裝置310。
回應於對記憶體之分配的請求,處理裝置310對元資料320作出查詢及/或將查詢發送至元資料322。基於來自此等查詢中之一或兩者的結果,處理裝置310將位址空間中之位址範圍分配給應用程式312。
在一個實施例中,應用程式312向處理裝置310作出對與記憶體裝置相關聯之潛時之指示的請求。處理裝置310存取元資料320、322以獲得結果,且基於此結果將潛時之指示提供至應用程式312。回應於接收到潛時之指示,應用程式312作出對對應於記憶體裝置中之特定一者(對應於記憶體類型314之記憶體裝置)之記憶體之分配的請求,或對具有符合至少一或多個預定臨限值及/或要求的效能特性之記憶體之分配的請求。
在一個實施例中,元資料322儲存使虛擬位址空間中之位址範圍與記憶體子系統302之記憶體裝置中之實體位址相關聯的資料。在一個實例中,元資料322儲存用於NVRAM之位址範圍324,及用於NAND快閃之位址範圍326。在一個實例中,位址範圍324將處理裝置310之虛擬或邏輯位址映射至NVRAM 306之實體位址。在一個實例中,位址範圍326將處理裝置310之虛擬或邏輯位址映射至NAND快閃308之實體位址。在一個實施例中,元資料320或322儲存映射用於儲存於DRAM 304中之資料的處理裝置310之位址的一或多個位址範圍。
在一個實施例中,將元資料322儲存為頁表328之部分,該頁表328為電腦系統300之記憶體管理單元316提供虛擬位址至實體位址之映射。處理裝置310將虛擬位址提供至記憶體管理單元316,其存取位址轉換暫存器318以獲得記憶體子系統302之記憶體裝置中之一者中之實體位址。
在一個實施例中,位址轉換暫存器318為儲存來自頁表328之資料之一部分的快取。在一個實例中,緩衝器318儲存元資料322之一部分。在一個實施例中,當存取記憶體子系統302中之記憶體裝置時,將儲存於電腦系統300上之元資料320之一部分複製至位址轉換暫存器318以供由記憶體管理單元316存取。
在一個實施例中,處理裝置310將不同記憶體裝置之記憶體特性提供至應用程式312。應用程式312基於所提供記憶體特性作出對記憶體之分配的請求。
在一個實施例中,處理裝置310自應用程式312接收所請求潛時。基於所請求潛時將位址範圍分配給應用程式312。
在一個實施例中,處理裝置310判定與應用程式312相關聯之優先級。基於經判定優先級將位址範圍分配給應用程式312。在一個實例中,選擇更快記憶體裝置類型以與經判定優先級一起使用。處理裝置310使用元資料320、322來選擇將資料實體地儲存於選定更快記憶體裝置類型之記憶體裝置中之位址範圍。
在一個實施例中,處理裝置310判定應用程式312之優先級的改變。在一個實例中,基於應用程式312之優先級的增加,處理裝置310改變用於位址空間中之應用程式312的記憶體分配。在一個實例中,回應於優先級之增加,處理裝置310存取元資料320、322以判定對應於更快實體記憶體裝置之位址範圍。
在一個實施例中,處理裝置310基於與位址空間中之應用程式312的資料存取相關聯之觀察特性來判定應用程式312之優先級。觀察到之特性可用於為應用程式312分配記憶體使用。在一個實施例中,處理裝置310判定與實體記憶體裝置相關聯之一或多個潛時。元資料320、322儲存關於經判定一或多個潛時之資料,其可在初始地分配主記憶體及/或改變主記憶體之分配時由處理裝置310使用。
4 展示根據一些實施例之經組態用於主機電腦系統(未展示)對揮發性記憶體402及非揮發性記憶體404之記憶體匯流排存取的記憶體模組401。記憶體模組401為記憶體子系統302或記憶體模組205之實例。在一個實例中,記憶體模組401為混合式DIMM。揮發性記憶體402為例如DRAM。
記憶體模組401使用多工器408來提供記憶體控制器416對揮發性記憶體402及非揮發性記憶體404之存取。記憶體控制器416耦接至主機介面406以供由主機系統處置讀取/寫入存取。在一個實施例中,回應於經由主機介面406自主機系統接收到讀取或寫入命令而基於自記憶體控制器416接收到之信號來控制多工器408。
在一個實例中,主機系統存取記憶體模組401 (例如DIMM)上之記憶體空間(例如DRAM記憶體位址空間)。DIMM將自身暴露於主機作為DRAM之通道。在一個實施例中,主機系統之超管理器控制DIMM上之資料移動。舉例而言,作出對將記憶體塊移入及移出DRAM位址空間且將DRAM頁暴露於在主機上運行之軟體的請求。軟體例如在虛擬機(VM)中執行。
在一個實例中,為驅動器提供頁入/頁出控制路徑以請求當前在DRAM中或NVRAM中的頁。在一個實例中,NVRAM具有比DRAM大得多之容量。
在一個實例中,記憶體模組401實施為DIMM。非揮發性記憶體404由3D XPoint記憶體封裝提供。在一個實例中,將自3D XPoint記憶體獲得之資料之頁複製入及複製出緩衝器(頁入/頁出)。
在一個實例中,主機系統可使用正常DDR4時序對任何DRAM或NVRAM位址進行讀取/寫入存取。舉例而言,主機可在彼等時間期間根據DDR4規則生成任意訊務。
在一個實例中,非揮發性記憶體404之完整DDR位址空間暴露於主機系統。根據各種實施例,電腦系統120之控制器(例如控制器116)可以與其存取習知DRAM相同之方式(例如相同讀取/寫入及再新時序循環)操作。
5 展示根據至少一些實施例之使用記憶體匯流排存取來存取記憶體模組502的主機作業系統241。記憶體模組502包括緩衝器410。緩衝器410為緩衝器121之實例。在一個實例中,緩衝器410儲存元資料322及/或頁表328之至少一部分。經由主機介面406自主機作業系統241接收到命令及資料。在一個實例中,主機作業系統241在電腦系統120或300上執行。
在一個實施例中,裝置驅動器247(例如後端驅動器)經組態以用於經由超管理器245之記憶體存取。在一個實例中, 5 之系統實施於 1 3 之電腦系統中。
在一個實例中,主機作業系統241在 12 之電腦系統之處理裝置118或 3 之處理裝置310上運行。主機作業系統241包括使用記憶體子系統(諸如記憶體模組205或記憶體子系統302)之記憶體(例如221……223)提供記憶體服務之一或多個裝置驅動器(例如247)。
在一個實施例中,後端驅動器247維護映射表246。舉例而言,驅動器247維護映射表246以包括儲存於DRAM 304、NVRAM 306及NAND快閃308中之資料之頁的映射。
在一個實施例中,主機作業系統241包括佈建虛擬機249之超管理器245。虛擬機249具有經由由主機作業系統241使用 1 3 的計算系統之硬體提供之資源及服務實施之虛擬硬體。舉例而言,超管理器245可使用記憶體子系統(諸如記憶體模組205)之記憶體(例如221……223)之一部分佈建虛擬記憶體作為虛擬機249之部分。
虛擬機249允許客席作業系統243以如在實體計算機器上運行之作業系統243的方式將資源及/或服務提供至在客席作業系統243中運行之應用程式(例如251……253),該實體計算機器具有與虛擬機中之佈建相同或類似之硬體集合。超管理器245管理佈建於虛擬機中之虛擬硬體與由主機作業系統241管理之計算系統中之硬體之服務之間的映射。
裝置驅動器248 (例如前端驅動器)與後端驅動器247通信。當額外DDR容量(例如DRAM或NVRAM中之容量)可用時,驅動器247及驅動器248可通信以用於閒置記憶體回收(memory ballooning)。
5 繪示由超管理器245佈建虛擬機249之情況。大體而言,超管理器245可佈建可運行相同客席作業系統243或不同客席作業系統之若干虛擬機(例如249)。可指派不同使用者及/或應用程式之集合以使用不同虛擬機。
在一些情況下,主機作業系統241專用於為虛擬機之佈建提供服務且未運行其他應用程式。替代地,主機作業系統241可提供額外服務以支援其他應用程式,諸如應用程式(例如251……253)。
在一個實施例中,裝置驅動器247可經組態以請求一頁自較慢記憶體(例如NVRAM)至較快記憶體(例如DRAM)之頁入(page-in)以供由虛擬機249使用。此請求可係回應於來自應用程式(例如 3 之應用程式312)之請求而作出。在請求該頁之後,藉由載入資料之頁及/或將其自較慢記憶體傳送至較快記憶體使該頁在較快記憶體中可用。在一個實例中,處理裝置310基於儲存為元資料320、322之位址範圍資訊將頁自較慢記憶體移動至較快記憶體。在一個實例中,較慢記憶體可為記憶體模組401中之非揮發性記憶體404,且較快記憶體為同一記憶體模組401中之揮發性記憶體402。
在一個實施例中,資料之傳送(例如回應於主機作業系統241之頁入請求而進行)係在同一記憶體子系統內(諸如同一記憶體模組401內)進行,以避免或減少連接至處理裝置118之通信通道(諸如記憶體匯流排203)中之壅塞。舉例而言,在記憶體模組205中之控制器227之控制下,可回應於來自裝置驅動器247之一或多個命令、請求及/或指令,將資料自記憶體模組205中之較慢記憶體223 (例如NVRAM或NAND快閃)複製至記憶體模組205中之較快記憶體221 (例如DRAM)。
在一個實施例中,超管理器245不僅請求裝置驅動器247存取記憶體子系統(例如記憶體模組205)中之記憶體(例如221……223),且亦向裝置驅動器247提供可用於管理待使用之記憶體(例如221……223……或225)中之頁的資訊。在一個實例中,所提供資訊包括儲存的元資料320或322。
在一個實例中,驅動器247為用以存取記憶體模組502(例如DIMM)中之記憶體位址空間的記憶體模式驅動器。驅動器247控制在任何時間哪些頁在DIMM之揮發性記憶體中。在一種作法中,例如,記憶體位址空間暴露於客席作業系統243。在此超管理器環境中,客席作業系統243看到DIMM中之非揮發性記憶體(例如NVRAM及DRAM)之完整儲存容量。
在一個實例中,經由主機作業系統241主動地對DDR DRAM中之僅數個頁進行頁入。若存在對不存在之頁的客戶機(guest)存取,則主機系統之記憶體管理單元(MMU)中之尋頁錯失路徑觸發驅動器247以引起頁之載入(頁入)。在一個實例中,該頁經由控制暫存器載入。一旦該頁實際上存在於DDR DRAM中,則驅動器247可設置MMU映射(經由映射表246),使得客席應用程式可直接讀取及寫入彼資料。
在一個實例中,客戶機之前端驅動器及主機之後端驅動器關於對記憶體位址空間之存取而通信。在一個實例中,當判定頁陳舊(例如基於預定臨限值未頻繁使用)時,作出將當前映射於DDR記憶體位址空間中之資料之一部分(例如經由SRAM緩衝器)推出至NVRAM記憶體以使DRAM記憶體中之空間可用於待頁入的其他頁的請求。後端驅動器247傳達頁出請求以將資料自DDR DRAM移動至NVRAM記憶體。
在一個實施例中,後端驅動器247作為記憶體模式驅動器操作。直至驅動器247載入,否則不存在對記憶體模組502之NVRAM記憶體容量之存取。在作為記憶體模式驅動器之此操作期間,客席作業系統243將記憶體視為正常,且驅動器247保留記憶體模組上之DRAM頁以用於頁入及頁出操作。
驅動器247將NVRAM記憶體暴露於客席作業系統243且維護頁映射(例如在映射表246中)。舉例而言,驅動器247維護當前在DRAM中之頁與在NVRAM記憶體上之頁之間的映射。
在一個實例中,驅動器247在主機系統處設置記憶體管理單元映射表以映射當前儲存於DRAM中之任何頁。若在映射頁外部存在存取以觸發頁入請求,則可使用來自客戶機之尋頁錯失路徑。可進行頁出請求以維護DRAM中之一些記憶體空間。
在一個實施例中,操作不受限於記憶體模式。驅動器247亦可作為框模式驅動器操作,針對該框模式驅動器,NVRAM記憶體暴露作為框模式儲存。
在一個實施例中,記憶體模組502維護其自身的映射表,包括在SRAM緩衝器(未展示)中之頁之列表。一旦頁已移動至SRAM緩衝器,則記憶體模組502可將頁入完成信號返回給主機系統。此等准許減少主機系統存取彼等特定頁之潛時。驅動器247確保直至設置其映射,否則主機將不存取彼頁,直至頁入請求完成。
在一個實施例中,驅動器247實施頁出操作。在一個實例中,觸發此操作作為線程。此操作將空閒頁交換出DRAM記憶體且改變有效頁之映射。
6 展示根據一些實施例之用於基於儲存的元資料來管理用於電腦系統之位址空間中之程序的記憶體的方法,該儲存的元資料使用於位址空間中之程序的虛擬位址範圍與用於電腦系統中之記憶體裝置的實體位址相關聯。舉例而言, 6 之方法可實施於 1 3 之系統中。
6 之方法可由處理邏輯進行,該處理邏輯可包括硬體(例如處理裝置、電路系統、專用邏輯、可程式化邏輯、微碼、裝置之硬體、積體電路等)、軟體(例如在處理裝置上運行或執行之指令),或其組合。在一些實施例中, 6 之方法至少部分地由一或多個處理裝置(例如 3 之處理裝置310)進行。
儘管以特定順序或次序展示,但除非另有規定,否則可修改該等程序之次序。因此,所繪示實施例應僅理解為實例,且所繪示程序可以不同次序進行,且一些程序可並行進行。另外,可在各種實施例中省略一或多個程序。因此,在每一實施例中並非所有程序係必需的。其他程序流程係可能的。
在方塊601處,作業系統維護位址空間中之記憶體。存取記憶體包括使用位址空間中之位址存取第一記憶體裝置及第二記憶體裝置。在一個實例中,作業系統在 3 之處理裝置310上執行。在一個實例中,第一記憶體裝置為DRAM 304,且第二記憶體裝置為NVRAM 306。在一個實例中,第一記憶體裝置為NVRAM 306,且第二記憶體裝置為NAND快閃308。
在方塊603處,儲存使位址空間之第一位址範圍與第一記憶體裝置相關聯之元資料。元資料亦使位址空間之第二位址範圍與第二記憶體裝置相關聯。在一個實例中,儲存的元資料為 3 之元資料320及/或322。在一個實例中,第一位址範圍為位址範圍324,且第二位址範圍為位址範圍326。
在方塊605處,基於儲存的元資料來管理在電腦系統中運行之程序。程序包括第一程序及第二程序。將用於第一程序之資料儲存於第一記憶體裝置中,且將用於第二程序之資料儲存於第二記憶體裝置中。在一個實例中,將用於第一程序之資料儲存於位址範圍324中,且將用於第二程序之資料儲存於位址範圍326中。在一個實例中,將用於第一程序之資料儲存於對應於DRAM 304中之實體記憶體儲存的元資料320、322之位址範圍中。在一個實例中,電腦系統為電腦系統120或300。
在一個實施例中,一種方法包含:由電腦系統之處理裝置(例如 3 之處理裝置310)存取位址空間中之記憶體,其中該電腦系統之記憶體裝置由該處理裝置使用該位址空間中之位址存取;儲存使該位址空間之第一位址範圍與第一記憶體裝置(例如DRAM 304)相關聯且使該位址空間之第二位址範圍與第二記憶體裝置(例如NVRAM 306)相關聯之元資料(例如元資料320及/或322),其中該第一記憶體裝置之第一潛時不同於該第二記憶體裝置之第二潛時;及基於儲存的元資料將該第一位址範圍分配給在該電腦系統上執行之應用程式(例如應用程式312)。
在一個實施例中,將該第一位址範圍分配給該應用程式係回應於該應用程式之請求而進行。
在一個實施例中,該方法進一步包含:回應於該應用程式之第一請求,提供該第一潛時大於該第二潛時的指示;基於該指示接收由該應用程式作出之第二請求;及回應於接收到該第二請求,將該第二位址範圍分配給該應用程式。
在一個實施例中,該第一潛時小於該第二潛時,且將該元資料儲存於該第一記憶體裝置中。
在一個實施例中,該電腦系統使用記憶體匯流排來存取該第一記憶體裝置及該第二記憶體裝置,且其中將該元資料儲存於該第二記憶體裝置中。
在一個實施例中,將該元資料儲存於該第一記憶體裝置中,且該方法進一步包含將該元資料之至少一部分載入至緩衝器(例如位址轉換暫存器318)中,其中該處理裝置查詢該緩衝器以判定對應於該第一位址範圍中之虛擬位址的實體位址。
在一個實施例中,該電腦系統為系統單晶片裝置,且該緩衝器為位址轉換暫存器。
在一個實施例中,該方法進一步包含:將該第一記憶體裝置及該第二記憶體裝置之記憶體特性提供至該應用程式;其中將該第一位址範圍分配給該應用程式係回應於由該應用程式基於所提供記憶體特性作出之請求。
在一個實施例中,該方法進一步包含自該應用程式接收所請求潛時,其中將該第一位址範圍分配給該應用程式係進一步基於該所請求潛時。
在一個實施例中,該方法進一步包含判定與該應用程式相關聯之優先級,其中將該第一位址範圍分配給該應用程式係進一步基於該優先級。
在一個實施例中,該第一潛時小於該第二潛時;在將該第一位址範圍分配給該應用程式之前,將該第二位址範圍分配給該應用程式;且將該第一位址範圍分配給該應用程式係回應於判定與該應用程式相關聯之優先級之增加而進行。
在一個實施例中,判定與該應用程式相關聯之該優先級之該增加係基於關於該位址空間中之該應用程式的資料存取的一或多個觀察。
在一個實施例中,該方法進一步包含由該處理裝置判定與該記憶體裝置相關聯之潛時,其中儲存該元資料進一步包含儲存經判定潛時。
在一個實施例中,一種系統包含:第一記憶體裝置;第二記憶體裝置;至少一個處理裝置;及記憶體,其含有指令,該等指令經組態以指示該至少一個處理裝置:存取由作業系統維護之位址空間中之記憶體,該存取包括使用該位址空間中之位址來存取該第一記憶體裝置及該第二記憶體裝置;儲存使該位址空間之第一位址範圍與該第一記憶體裝置相關聯且使該位址空間之第二位址範圍與該第二記憶體裝置相關聯之元資料;及由該作業系統基於儲存的元資料管理包括第一程序及第二程序的程序,其中將用於該第一程序之資料儲存於該第一記憶體裝置中,且將用於該第二程序之資料儲存於該第二記憶體裝置中。
在一個實施例中,該第一程序具有第一優先級,該第二程序具有第二優先級,且回應於判定該第一優先級高於該第二優先級而選擇該第一記憶體裝置以儲存用於該第一程序之該資料。
在一個實施例中,該第一程序對應於第一應用程式;該等指令經進一步組態以指示該至少一個處理裝置自該第一應用程式接收指示待用於儲存資料的一類型之記憶體之請求;且基於所指示類型之記憶體選擇該第一記憶體裝置以儲存用於該第一程序之該資料。
在一個實施例中,該系統進一步包含緩衝器以儲存該元資料,其中該作業系統自該第一程序接收該第一位址範圍中之虛擬位址,且存取該緩衝器以判定該第一記憶體裝置之對應於該虛擬位址之實體位址。
在一個實施例中,該第一記憶體裝置之讀取潛時小於該第二記憶體裝置之讀取潛時,且該指令經進一步組態以指示該至少一個處理裝置將該元資料儲存於該第一記憶體裝置中。
在一個實施例中,該系統進一步包含記憶體管理單元(例如記憶體管理單元316),其經組態以在存取用於該第一程序之儲存的資料時將該第一位址範圍中之虛擬位址映射至該第一記憶體裝置中之實體位址。
在一個實施例中,一種非暫時性機器可讀儲存媒體儲存指令,該等指令在至少一個處理裝置上執行時使得該至少一個處理裝置至少:存取位址空間中之記憶體,其中由該至少一個處理裝置使用該位址空間中之位址來存取電腦系統之記憶體裝置;儲存使該位址空間之第一位址範圍與第一記憶體裝置相關聯且使該位址空間之第二位址範圍與第二記憶體裝置相關聯之元資料;將第一資料提供至在該電腦系統上執行之應用程式,該第一資料指示該第一記憶體裝置之第一潛時小於該第二記憶體裝置之第二潛時;回應於將該第一資料提供至該應用程式,自該應用程式接收將與該應用程式相關聯之第二資料儲存於該第一記憶體裝置中之請求;回應於該應用程式之儲存該第二資料的請求,查詢儲存的元資料以提供結果;及基於該結果將該第二資料儲存於該第一記憶體裝置中。
7 為可操作本發明之實施例的實例電腦系統之方塊圖。 7 繪示電腦系統600之實例機器,其內可執行用於使得機器進行本文中所論述之方法中之任何一或多者的指令集。在一些實施例中,電腦系統600可對應於主機系統(例如 1 之電腦系統120),該主機系統包括、耦接至或利用記憶體子系統(例如 1 之記憶體子系統110),或可用於進行元資料組件113之操作(例如執行指令以進行對應於參考 1 6 所描述之元資料組件113的操作)。在替代性實施例中,機器可連接(例如網路連接)至LAN、企業內部網路、企業間網路及/或網際網路中之其他機器。機器可操作於主從式網路環境中之伺服器或用戶端機器之容量中、操作為同級間(或分佈式)網路環境中之同級機器,或操作為雲端計算基礎設施或環境中之伺服器或用戶端機器。
機器可為個人電腦(PC)、平板PC、機上盒(STB)、個人數位助理(PDA)、蜂巢式電話、網頁器具、伺服器、網路路由器、開關或橋、物聯網(IOT)裝置,或能夠執行規定待由機器採取之動作的指令集(依序或以其他方式)之任何機器。另外,儘管繪示單一機器,但術語「機器」亦應視為包括個別地或聯合地執行指令集(或多個集)以進行本文中所論述之方法中之任何一或多者之機器之任何集合。
實例電腦系統600包括處理裝置602、主記憶體604 (例如唯讀記憶體(ROM)、快閃記憶體、動態隨機存取記憶體(DRAM) (諸如同步DRAM (SDRAM)或Rambus DRAM (RDRAM))、靜態隨機存取記憶體(SRAM)等)及資料儲存系統618,其經由匯流排630 (其可包括多個匯流排)彼此通信。
處理裝置602表示一或多個通用處理裝置,諸如微處理器、中央處理單元或其類似者。更特定而言,處理裝置可為複雜指令集計算(CISC)微處理器、精簡指令集計算(RISC)微處理器、超長指令字(VLIW)微處理器,或實施其他指令集之處理器,或實施指令集之組合的處理器。處理裝置602亦可為一或多個專用處理裝置,諸如特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)、數位信號處理器(DSP)、網路處理器或其類似者。處理裝置602經組態以執行用於進行本文中所論述之操作及步驟的指令626。電腦系統600可進一步包括網路介面裝置608以經由網路620通信。
資料儲存系統618可包括機器可讀儲存媒體624 (亦稱為電腦可讀媒體),其上儲存有體現本文中所描述之方法或功能中之任何一或多者的一或多個指令626集或軟體。在其由電腦系統600執行期間,指令626亦可完全或至少部分地常駐於主記憶體604內及/或處理裝置602內,主記憶體604及處理裝置602亦構成機器可讀儲存媒體。機器可讀儲存媒體624、資料儲存系統618及/或主記憶體604可對應於 1 之記憶體子系統110。
在一個實施例中,指令626包括實施對應於元資料組件113 (例如參考 1 6 所描述之元資料組件113)之功能性的指令。儘管在實例實施例中將機器可讀儲存媒體624展示為單一媒體,但術語「機器可讀儲存媒體」應視為包括儲存一或多個指令集之單一媒體或多個媒體。結語
本發明包括進行上文所描述之方法及實施上文所描述之系統的各種裝置,包括進行此等方法之資料處理系統,及含有在資料處理系統上執行時使得系統進行此等方法的指令之電腦可讀媒體。
描述及圖式為繪示性的且不應視為限制性的。描述眾多特定細節以提供透徹理解。然而,在某些情況下,並不描述熟知或習知細節以便避免混淆描述。對本發明中之一個或一實施例之參考未必為對同一實施例之參考;且此類參考意謂至少一者。
在本說明書中,對「一個實施例」或「一實施例」的參考意謂結合實施例所描述之特定特徵、結構或特性係包括於本發明之至少一個實施例中。在說明書中之各種地方中之片語「在一個實施例中」之表現形式未必均係指同一實施例,亦不均係指其他實施例之彼此排他性的單獨或替代性實施例。此外,描述各種特徵,該等特徵可藉由一些實施例而不藉由其他實施例來呈現。類似地,描述各種要求,該等要求可為對於一些實施例的要求但並非對於其他實施例的要求。
在本說明書中,各種功能及操作可描述為由軟體程式碼進行或由軟體程式碼引起以簡化描述。然而,熟習此項技術者將認識到此類表述意謂功能由一或多個處理器對程式碼之執行產生,該一或多個處理器諸如微處理器、特殊應用積體電路(ASIC)、圖形處理器及/或場可程式化閘陣列(FPGA)。替代地,或組合地,可在具有或不具有軟體指令之情況下使用專用電路系統(例如邏輯電路系統)實施功能及操作。實施例可使用硬連線電路系統在不具有軟體指令之情況下實施,或結合軟體指令實施。因此,技術不限於硬體電路系統與軟體之任何特定組合,亦不限於由計算裝置執行之指令的任何特定來源。
儘管一些實施例可實施於完全起作用之電腦及電腦系統中,但各種實施例能夠以各種形式作為計算產品分發,且能夠經應用,無論用以實際上影響分發的機器或電腦可讀媒體之特定類型如何。
所揭示之至少一些態樣可至少部分地體現於軟體中。亦即,技術可回應於其處理器(諸如微處理器)執行含於記憶體(諸如ROM、揮發性RAM、非揮發性記憶體、快取或遠端儲存裝置)中之指令序列而在計算裝置或其他系統中進行。
執行以實施實施例之常式可實施為作業系統、中間軟體、服務遞送平台、軟體開發套件(SDK)組件、網頁服務或稱為「電腦程式」之其他特定應用程式、組件、程式、對象、模組或指令序列之部分。對此等常式之調用介面可暴露於軟體開發社群作為應用程式程式化介面(API)。電腦程式通常包含在各種時間在電腦中之各種記憶體及儲存裝置中設定的一或多個指令,且當由電腦中之一或多個處理器讀取及執行時,使得電腦進行執行涉及各種態樣之元件所必需的操作。
機器可讀媒體可用於儲存在由計算裝置執行時使得該裝置進行各種方法之軟體及資料。可執行軟體及資料可儲存於各種場所中,包括例如ROM、揮發性RAM、非揮發性記憶體及/或快取。此軟體及/或資料之部分可儲存於此等儲存裝置中之任一者中。另外,資料及指令可自集中式伺服器或同級間網路獲得。資料及指令之不同部分可在不同時間且在不同通信對話或相同通信對話中自不同集中式伺服器及/或同級間網路獲得。可在應用程式之執行之前獲得全部資料及指令。替代地,可在需要執行時動態地(即時)獲得資料及指令之部分。因此,並不需要資料及指令在特定時刻全部處於機器可讀媒體上。
電腦可讀媒體之實例包括但不限於可記錄及不可記錄類型媒體,諸如揮發性及非揮發性記憶體裝置、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、快閃記憶體裝置、固態驅動機儲存媒體、抽取式磁碟、磁碟儲存媒體、光學儲存媒體(例如光碟唯讀記憶體(CD ROM)、數位多功能光碟(DVD)等),以及其他。電腦可讀媒體可儲存指令。
大體而言,有形或非暫時性機器可讀媒體包括提供(例如儲存)資訊之任何機構,該資訊呈可由機器(例如電腦、行動裝置、網路裝置、個人數位助理、製造工具、具有一或多個處理器集合之任何裝置等)存取之形式。
在各種實施例中,硬連線電路系統可與軟體及韌體指令組合使用以實施技術。因此,技術既不限於硬體電路系統與軟體之任何特定組合,亦不限於由計算裝置執行之指令的任何特定來源。
儘管圖式中之一些以特定次序繪示數個操作,但不依賴次序之操作可經重排序且其他操作可經組合或分解。儘管具體地提及一些重排序或其他分組,但其他者將對一般熟習此項技術者顯而易見,且因此並不存在替代例之窮盡性列表。此外,應認識到,階段可實施於硬體、韌體、軟體或其任何組合中。
在前述說明書中,已參考本發明之特定例示性實施例描述本發明。顯而易見的係,在不脫離如以下申請專利範圍中所闡述之較寬廣的精神及範疇之情況下,可對其進行各種修改。因此,應在繪示性意義上而非限制性意義上看待說明書及圖式。
本文中所闡述之各種實施例可使用廣泛多種不同類型之計算裝置實施。如本文中所使用,「計算裝置」之實例包括但不限於伺服器、集中式計算平台、多個計算處理器及/或組件之系統、行動裝置、使用者終端機、載具、個人通信裝置、穿戴式數字裝置、電子資訊站、通用電腦、電子文件閱讀器、平板、膝上型電腦、智慧型手機、數位攝影機、住宅家用器具、電視或數位音樂播放器。計算裝置之額外實例包括為稱為「物聯網」(IOT)之部分的裝置。此類「物聯」可與其所有者或管理員(其可監視該等物聯或修改此等物聯之設定)具有偶然交互。在一些情況下,此類所有者或管理員相對於「物聯」裝置扮演使用者之角色。在一些實例中,使用者之主行動裝置(例如蘋果iPhone)可為相對於由使用者穿戴之「物聯」裝置(例如蘋果手錶)之管理員伺服器。
在一些實施例中,計算裝置可為電腦或主機系統,其實施為例如桌上型電腦、膝上型電腦、網路伺服器、行動裝置或包括記憶體及處理裝置之另一計算裝置。主機系統可包括或耦接至記憶體子系統,使得主機系統可自記憶體子系統讀取資料或將資料寫入至記憶體子系統。主機系統可經由實體主機介面耦接至記憶體子系統。大體而言,主機系統可經由同一通信連接、多個單獨通信連接及/或通信連接之組合存取多個記憶體子系統。
100:計算環境 109A:記憶體組件 109N:記憶體組件 110:記憶體子系統 113:元資料組件 115:控制器 116:控制器 117:處理裝置 118:處理裝置 119:局部記憶體 120:電腦系統 121:緩衝器 200:行動裝置 203:記憶體匯流排 205:記憶體模組 211:快取記憶體 221:A型記憶體 223:B型記憶體 225:記憶體 227:控制器 241:主機作業系統 243:客席作業系統 245:超管理器 246:映射表 247:裝置驅動器 248:裝置驅動器 249:虛擬機 251:應用程式 253:應用程式 300:電腦系統 302:記憶體子系統 304:DRAM 306:NVRAM 308:NAND快閃 310:處理裝置 312:應用程式 314:記憶體類型 316:記憶體管理單元 318:位址轉換暫存器 320:元資料 322:元資料 324:位址範圍 326:位址範圍 328:頁表 401:記憶體模組 402:揮發性記憶體 404:非揮發性記憶體 406:主機介面 408:多工器 410:緩衝器 416:記憶體控制器 502:記憶體模組 600:電腦系統 601:方塊 602:處理裝置 603:方塊 604:主記憶體 605:方塊 608:網路介面裝置 618:資料儲存系統 620:網路 624:機器可讀儲存媒體 626:指令 630:匯流排
在隨附圖式之圖中藉助於實例(且非限制)來繪示實施例,在該等圖中,類似編號指示類似元件。
1 繪示根據一些實施例之具有記憶體子系統的實例電腦系統。
2 展示根據一些實施例之使用記憶體匯流排存取記憶體模組中之不同類型之記憶體的行動裝置。
3 繪示根據一些實施例之儲存用以存取記憶體子系統中之記憶體裝置之元資料的實例電腦系統。
4 展示根據一些實施例之經組態用於由主機電腦系統對記憶體模組之揮發性及非揮發性記憶體進行之記憶體匯流排存取的記憶體模組。
5 展示根據至少一些實施例之使用記憶體匯流排存取來存取記憶體模組的主機作業系統。
6 展示根據一些實施例之用於基於儲存的元資料來管理用於電腦系統之位址空間中之程序的記憶體的方法,該儲存的元資料使用於位址空間中之程序的虛擬位址範圍與用於電腦系統中之記憶體裝置的實體位址相關聯。
7 為可操作本發明之實施例的實例電腦系統之方塊圖。
100:計算環境
109A:記憶體組件
109N:記憶體組件
110:記憶體子系統
113:元資料組件
115:控制器
116:控制器
117:處理裝置
118:處理裝置
119:局部記憶體
120:電腦系統
121:緩衝器

Claims (20)

  1. 一種用於存取一電腦系統之記憶體裝置之方法,其包含:由該電腦系統之一處理裝置存取一位址空間中之記憶體,其中該電腦系統之該等記憶體裝置由該處理裝置使用該位址空間中之位址存取;儲存使該位址空間之一第一位址範圍與該電腦系統之一第一記憶體裝置相關聯且使該位址空間之一第二位址範圍與該電腦系統之一第二記憶體裝置相關聯之元資料(metadata),其中該第一記憶體裝置之一第一潛時(latency)不同於該第二記憶體裝置之一第二潛時;及基於儲存的元資料將該第一位址範圍分配給在該電腦系統上執行之一應用程式。
  2. 如請求項1之方法,其中將該第一位址範圍分配給該應用程式係回應於該應用程式之一請求而進行。
  3. 如請求項1之方法,其進一步包含:回應於該應用程式之一第一請求,提供該第一潛時大於該第二潛時的一指示;基於該指示接收由該應用程式作出之一第二請求;及回應於接收到該第二請求,將該第二位址範圍分配給該應用程式。
  4. 如請求項1之方法,其中該第一潛時小於該第二潛時,且將該元資料儲存於該第一記憶體裝置中。
  5. 如請求項1之方法,其中該電腦系統使用一記憶體匯流排來存取該第一記憶體裝置及該第二記憶體裝置,且其中將該元資料儲存於該第一記憶體裝置或該第二記憶體裝置中。
  6. 如請求項1之方法,其中將該元資料儲存於該第一記憶體裝置中,該方法進一步包含將該元資料之至少一部分載入至一緩衝器中,其中該處理裝置查詢該緩衝器以判定對應於該第一位址範圍中之一虛擬位址的一實體位址。
  7. 如請求項6之方法,其中該電腦系統為一系統單晶片裝置,且該緩衝器為一位址轉換暫存器。
  8. 如請求項1之方法,其進一步包含:將該第一記憶體裝置及該第二記憶體裝置之記憶體特性提供至該應用程式;其中將該第一位址範圍分配給該應用程式係回應於由該應用程式基於所提供記憶體特性作出之一請求。
  9. 如請求項1之方法,其進一步包含自該應用程式接收一所請求潛時,其中將該第一位址範圍分配給該應用程式係進一步基於該所請求潛時。
  10. 如請求項1之方法,其進一步包含判定與該應用程式相關聯之一優先 級,其中將該第一位址範圍分配給該應用程式係進一步基於該優先級。
  11. 如請求項1之方法,其中:該第一潛時小於該第二潛時;在將該第一位址範圍分配給該應用程式之前,將該第二位址範圍分配給該應用程式;且將該第一位址範圍分配給該應用程式係回應於判定與該應用程式相關聯之一優先級之一增加而進行。
  12. 如請求項11之方法,其中判定與該應用程式相關聯之該優先級之該增加係基於關於該位址空間中之該應用程式的資料存取的一或多個觀察。
  13. 如請求項1之方法,其進一步包含由該處理裝置判定與該記憶體裝置相關聯之潛時,其中儲存該元資料進一步包含儲存經判定潛時。
  14. 一種系統,其包含:一第一記憶體裝置;一第二記憶體裝置;至少一個處理裝置;及記憶體,其含有指令,該等指令經組態以指示該至少一個處理裝置:存取由一作業系統維護之一位址空間中之記憶體,該存取包括使用該位址空間中之位址來存取該第一記憶體裝置及該第二記憶體裝 置;儲存使該位址空間之一第一位址範圍與該第一記憶體裝置相關聯且使該位址空間之一第二位址範圍與該第二記憶體裝置相關聯之元資料;及由該作業系統基於儲存的元資料管理包括一第一程序及一第二程序的若干程序,其中將用於該第一程序之資料儲存於該第一記憶體裝置中,且將用於該第二程序之資料儲存於該第二記憶體裝置中。
  15. 如請求項14之系統,其中該第一程序具有一第一優先級,該第二程序具有一第二優先級,且回應於判定該第一優先級高於該第二優先級而選擇該第一記憶體裝置以儲存用於該第一程序之該資料。
  16. 如請求項14之系統,其中:該第一程序對應於一第一應用程式;該等指令經進一步組態以指示該至少一個處理裝置自該第一應用程式接收指示待用於儲存資料的一類型之記憶體之一請求;且基於所指示類型之記憶體選擇該第一記憶體裝置以儲存用於該第一程序之該資料。
  17. 如請求項14之系統,其進一步包含一緩衝器以儲存該元資料,其中該作業系統自該第一程序接收該第一位址範圍中之一虛擬位址,且存取該緩衝器以判定該第一記憶體裝置之對應於該虛擬位址之一實體位址。
  18. 如請求項14之系統,其中該第一記憶體裝置之一讀取潛時小於該第二記憶體裝置之一讀取潛時,且其中該等指令經進一步組態以指示該至少一個處理裝置將該元資料儲存於該第一記憶體裝置中。
  19. 如請求項14之系統,其進一步包含一記憶體管理單元,該記憶體管理單元經組態以在存取用於該第一程序之儲存的資料時將該第一位址範圍中之一虛擬位址映射至該第一記憶體裝置中之一實體位址。
  20. 一種非暫時性機器可讀儲存媒體,其儲存指令,該等指令在至少一個處理裝置上執行時使得該至少一個處理裝置至少:存取一位址空間中之記憶體,其中由該至少一個處理裝置使用該位址空間中之位址來存取一電腦系統之記憶體裝置;儲存使該位址空間之一第一位址範圍與一第一記憶體裝置相關聯且使該位址空間之一第二位址範圍與一第二記憶體裝置相關聯之元資料;將第一資料提供至在該電腦系統上執行之一應用程式,該第一資料指示該第一記憶體裝置之一第一潛時小於該第二記憶體裝置之一第二潛時;回應於將該第一資料提供至該應用程式,自該應用程式接收將與該應用程式相關聯之第二資料儲存於該第一記憶體裝置中之一請求;回應於該應用程式之儲存該第二資料的一請求,查詢儲存的元資料以提供一結果;及基於該結果將該第二資料儲存於該第一記憶體裝置中。
TW109130612A 2019-09-17 2020-09-07 存取儲存的元資料以識別儲存資料的記憶體裝置 TWI752619B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/573,490 2019-09-17
US16/573,490 US11650742B2 (en) 2019-09-17 2019-09-17 Accessing stored metadata to identify memory devices in which data is stored

Publications (2)

Publication Number Publication Date
TW202117543A TW202117543A (zh) 2021-05-01
TWI752619B true TWI752619B (zh) 2022-01-11

Family

ID=74869576

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109130612A TWI752619B (zh) 2019-09-17 2020-09-07 存取儲存的元資料以識別儲存資料的記憶體裝置

Country Status (7)

Country Link
US (2) US11650742B2 (zh)
EP (1) EP4031973A4 (zh)
JP (1) JP2022548888A (zh)
KR (1) KR20220060548A (zh)
CN (1) CN114402282B (zh)
TW (1) TWI752619B (zh)
WO (1) WO2021055281A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11494311B2 (en) 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
US11269780B2 (en) 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
US10963396B1 (en) 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11650742B2 (en) * 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored
KR20210095761A (ko) * 2020-01-23 2021-08-03 삼성전자주식회사 호스트로부터 오프로드된 작업을 수행하는 스토리지 장치 및 스토리지 시스템
US20210089225A1 (en) * 2020-11-19 2021-03-25 Intel Corporation Adaptive device behavior based on available energy
US20230029331A1 (en) * 2021-07-26 2023-01-26 Microsoft Technology Licensing, Llc Dynamically allocatable physically addressed metadata storage
CN114036085B (zh) * 2021-09-24 2024-04-12 北京无线电测量研究所 基于ddr4的多任务读写调度方法、计算机设备及存储介质
US11977783B2 (en) 2021-10-28 2024-05-07 Silicon Motion, Inc. Method and apparatus for performing data access control of memory device with aid of predetermined command

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090254851A1 (en) * 2008-04-08 2009-10-08 Techneos Systems Inc. Method and system for conducting a survey by using a wireless device
TW201301029A (zh) * 2011-06-20 2013-01-01 Microsoft Corp 具有增強型應用程式元資料之記憶體管理器
US10108220B2 (en) * 2014-05-01 2018-10-23 Wisconsin Alumni Research Foundation Computer architecture having selectable, parallel and serial communication channels between processors and memory
US20190065248A1 (en) * 2017-08-29 2019-02-28 Entit Software Llc Combining pipelines for a streaming data system
US10248447B2 (en) * 2015-11-25 2019-04-02 Red Hat, Inc. Providing link aggregation and high availability through network virtualization layer

Family Cites Families (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0447145B1 (en) 1990-03-12 2000-07-12 Hewlett-Packard Company User scheduled direct memory access using virtual addresses
US6256714B1 (en) 1998-09-02 2001-07-03 Sharp Laboratories Of America, Inc. Computer system with efficient memory usage for managing multiple application programs
US6630264B2 (en) * 2000-05-01 2003-10-07 Delphi Technologies, Inc. Solid oxide fuel cell process gas sampling for analysis
US6681311B2 (en) 2001-07-18 2004-01-20 Ip-First, Llc Translation lookaside buffer that caches memory type information
US7346664B2 (en) 2003-04-24 2008-03-18 Neopath Networks, Inc. Transparent file migration using namespace replication
US7444547B2 (en) 2003-06-19 2008-10-28 International Business Machines Corproation Method, system, and product for programming in a simultaneous multi-threaded processor environment
JP2005216053A (ja) 2004-01-30 2005-08-11 Matsushita Electric Ind Co Ltd 最適メモリ配置演算装置及び最適メモリ配置方法
US7533195B2 (en) * 2004-02-25 2009-05-12 Analog Devices, Inc. DMA controller for digital signal processors
US7269708B2 (en) 2004-04-20 2007-09-11 Rambus Inc. Memory controller for non-homogenous memory system
US7552282B1 (en) 2004-08-04 2009-06-23 Emc Corporation Method, computer readable medium, and data storage system for selective data replication of cached data
JP4643395B2 (ja) 2004-08-30 2011-03-02 株式会社日立製作所 ストレージシステム及びデータの移動方法
JP5338859B2 (ja) 2004-10-27 2013-11-13 ソニー株式会社 記憶装置および情報処理システム
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7949845B2 (en) 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7669003B2 (en) 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7533198B2 (en) * 2005-10-07 2009-05-12 International Business Machines Corporation Memory controller and method for handling DMA operations during a page copy
JP2007254204A (ja) 2006-03-23 2007-10-04 Seiko Epson Corp マルチレンズアレイの強化処理方法
US8738841B2 (en) 2007-12-27 2014-05-27 Sandisk Enterprise IP LLC. Flash memory controller and system including data pipelines incorporating multiple buffers
US8151076B2 (en) 2008-04-04 2012-04-03 Cisco Technology, Inc. Mapping memory segments in a translation lookaside buffer
US8725927B2 (en) * 2008-10-15 2014-05-13 Micron Technology, Inc. Hot memory block table in a solid state storage device
JP5531476B2 (ja) 2009-07-15 2014-06-25 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
JP2011154547A (ja) 2010-01-27 2011-08-11 Toshiba Corp メモリ管理装置及びメモリ管理方法
US9075733B1 (en) * 2010-05-20 2015-07-07 Seagate Technology Llc Selective storage of address mapping metadata in a system having multiple memories
US8328976B2 (en) 2010-06-13 2012-12-11 Lianyungang Zhongfu Lianzhong Composites Group Co., Ltd. Method of manufacturing root of megawatt wind-turbine blade
US8521944B2 (en) 2010-08-31 2013-08-27 Intel Corporation Performing memory accesses using memory context information
US8595463B2 (en) 2010-09-15 2013-11-26 International Business Machines Corporation Memory architecture with policy based data storage
US8706697B2 (en) 2010-12-17 2014-04-22 Microsoft Corporation Data retention component and framework
US8935491B2 (en) * 2011-07-15 2015-01-13 Throughputer, Inc. Memory architecture for dynamically allocated manycore processor
US20150081965A1 (en) 2012-04-27 2015-03-19 Hitachi, Ltd. Data management system and data management method
US9678863B2 (en) 2012-06-12 2017-06-13 Sandisk Technologies, Llc Hybrid checkpointed memory
US9524248B2 (en) * 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US9047090B2 (en) * 2012-08-07 2015-06-02 Qualcomm Incorporated Methods, systems and devices for hybrid memory management
US10303618B2 (en) 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
US9304828B2 (en) 2012-09-27 2016-04-05 Hitachi, Ltd. Hierarchy memory management
US9747000B2 (en) * 2012-10-02 2017-08-29 Razer (Asia-Pacific) Pte. Ltd. Launching applications on an electronic device
US20140101370A1 (en) * 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
US9330736B2 (en) 2012-11-09 2016-05-03 Qualcomm Incorporated Processor memory optimization via page access counting
WO2014102886A1 (en) 2012-12-28 2014-07-03 Hitachi, Ltd. Information processing apparatus and cache control method
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9229854B1 (en) * 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software
CN103174406B (zh) 2013-03-13 2015-12-02 吉林大学 一种油页岩地下原位加热的方法
KR20150044370A (ko) 2013-10-16 2015-04-24 삼성전자주식회사 이종 메모리들을 관리하는 시스템들
CN105612499B (zh) 2013-10-29 2018-11-13 华中科技大学 混合高速缓存管理
CA2881206A1 (en) * 2014-02-07 2015-08-07 Andrew WARFIELD Methods, systems and devices relating to data storage interfaces for managing address spaces in data storage devices
JP5797848B1 (ja) 2014-03-04 2015-10-21 株式会社東芝 階層化ブロックストレージ装置を有するコンピュータシステム、ストレージコントローラ、及びプログラム
JP6118285B2 (ja) 2014-03-20 2017-04-19 株式会社東芝 キャッシュメモリシステムおよびプロセッサシステム
US9450879B2 (en) * 2014-05-09 2016-09-20 Nexgen Storage, Inc. Adaptive bandwidth throttling
US9792227B2 (en) 2014-08-19 2017-10-17 Samsung Electronics Co., Ltd. Heterogeneous unified memory
WO2016041156A1 (zh) * 2014-09-17 2016-03-24 华为技术有限公司 Cpu调度的方法和装置
US9411539B2 (en) * 2014-09-24 2016-08-09 International Business Machines Corporation Providing access information to a storage controller to determine a storage tier for storing data
JP2016085677A (ja) 2014-10-28 2016-05-19 富士通株式会社 メモリ管理方法、メモリ管理プログラム及び情報処理装置
KR20160052240A (ko) 2014-11-04 2016-05-12 삼성전자주식회사 복수의 메모리 장치들을 관리하기 위한 방법 및 장치
US9766819B2 (en) * 2014-12-30 2017-09-19 Sandisk Technologies Llc Systems and methods for managing storage endurance
US10691375B2 (en) * 2015-01-30 2020-06-23 Hewlett Packard Enterprise Development Lp Memory network to prioritize processing of a memory access request
US20180024853A1 (en) 2015-02-17 2018-01-25 Coho Data, Inc. Methods, systems, devices and appliances relating to virtualized application-layer space for data processing in data storage systems
US10049035B1 (en) 2015-03-10 2018-08-14 Reniac, Inc. Stream memory management unit (SMMU)
JP6384375B2 (ja) 2015-03-23 2018-09-05 富士通株式会社 情報処理装置、記憶装置制御方法、記憶装置制御プログラム及び情報処理システム
US10331384B2 (en) 2015-03-31 2019-06-25 International Business Machines Corporation Storing data utilizing a maximum accessibility approach in a dispersed storage network
US10157008B2 (en) 2015-04-29 2018-12-18 Qualcomm Incorporated Systems and methods for optimizing memory power consumption in a heterogeneous system memory
US10235282B2 (en) 2015-06-01 2019-03-19 Hitachi, Ltd. Computer system, computer, and method to manage allocation of virtual and physical memory areas
JP6403162B2 (ja) 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
US9734009B2 (en) * 2015-10-08 2017-08-15 Sandisk Technologies Llc Data encoding techniques for a device
US20180225059A1 (en) * 2015-11-03 2018-08-09 Hewlett-Packard Development Company, L.P. Operating mode memory migration
US10216643B2 (en) 2015-11-23 2019-02-26 International Business Machines Corporation Optimizing page table manipulations
US20170153892A1 (en) 2015-11-30 2017-06-01 Intel Corporation Instruction And Logic For Programmable Fabric Hierarchy And Cache
US10007614B2 (en) 2016-02-02 2018-06-26 Cavium, Inc. Method and apparatus for determining metric for selective caching
JP2017138823A (ja) 2016-02-04 2017-08-10 キヤノン株式会社 情報処理装置、情報処理方法および撮像装置
JP2017138852A (ja) 2016-02-04 2017-08-10 株式会社東芝 情報処理装置、記憶装置およびプログラム
JP6423809B2 (ja) 2016-02-19 2018-11-14 イーソル株式会社 オペレーティングシステム、プログラミングシステム及びメモリ割り当て方法
US10223228B2 (en) 2016-08-12 2019-03-05 International Business Machines Corporation Resolving application multitasking degradation
JP6666813B2 (ja) 2016-08-24 2020-03-18 キオクシア株式会社 記憶装置及びその制御方法
US10372635B2 (en) 2016-08-26 2019-08-06 Qualcomm Incorporated Dynamically determining memory attributes in processor-based systems
JP2018049385A (ja) 2016-09-20 2018-03-29 東芝メモリ株式会社 メモリシステムおよびプロセッサシステム
JP2018049381A (ja) 2016-09-20 2018-03-29 東芝メモリ株式会社 メモリ制御回路、メモリシステムおよびプロセッサシステム
US20180173419A1 (en) * 2016-12-21 2018-06-21 Western Digital Technologies, Inc. Hybrid ssd with delta encoding
US10409603B2 (en) 2016-12-30 2019-09-10 Intel Corporation Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory
JP6391719B2 (ja) * 2017-01-10 2018-09-19 マイクロン テクノロジー, インク. トレーニング、データ再構築および/またはシャドウィングを含むメモリシステムおよび方法
US11886732B2 (en) * 2017-01-31 2024-01-30 Seagate Technology Llc Data storage server with multi-memory migration
US10866912B2 (en) 2017-03-10 2020-12-15 Toshiba Memory Corporation Integrated heterogeneous solid state storage drive
US10380039B2 (en) * 2017-04-07 2019-08-13 Intel Corporation Apparatus and method for memory management in a graphics processing environment
US10289555B1 (en) 2017-04-14 2019-05-14 EMC IP Holding Company LLC Memory read-ahead using learned memory access patterns
US10747568B2 (en) 2017-05-30 2020-08-18 Magalix Corporation Systems and methods for managing a cloud computing environment
KR102319189B1 (ko) * 2017-06-21 2021-10-28 삼성전자주식회사 스토리지 장치, 이를 포함하는 스토리지 시스템 및 스토리지 장치의 동작 방법
US20200174926A1 (en) 2017-06-22 2020-06-04 Telefonaktiebolaget Lm Ericsson (Publ) Apparatuses and methods for allocating memory in a data center
US10642744B2 (en) 2017-06-28 2020-05-05 Nvidia Corporation Memory type which is cacheable yet inaccessible by speculative instructions
US10152428B1 (en) * 2017-07-13 2018-12-11 EMC IP Holding Company LLC Virtual memory service levels
US20190095329A1 (en) 2017-09-27 2019-03-28 Intel Corporation Dynamic page allocation in memory
CN109656833B (zh) 2017-10-12 2022-11-11 慧荣科技股份有限公司 数据储存装置
US10678703B2 (en) 2017-11-16 2020-06-09 Micron Technology, Inc. Namespace mapping structual adjustment in non-volatile memory devices
US11138121B2 (en) 2017-11-20 2021-10-05 Samsung Electronics Co., Ltd. Systems and methods for efficient cacheline handling based on predictions
US11231852B2 (en) 2017-12-18 2022-01-25 Microsoft Technology Licensing, Llc Efficient sharing of non-volatile memory
US20190213165A1 (en) * 2018-01-09 2019-07-11 Qualcomm Incorporated Priority scheme for fast arbitration procedures
US11416395B2 (en) * 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US10528489B2 (en) 2018-02-28 2020-01-07 Micron Technology, Inc. Multiple memory type memory module systems and methods
JP6508382B1 (ja) 2018-03-26 2019-05-08 日本電気株式会社 情報処理装置、情報処理方法、プログラム
US20190370043A1 (en) 2018-04-30 2019-12-05 Nutanix, Inc. Cooperative memory management
KR102518095B1 (ko) * 2018-09-12 2023-04-04 삼성전자주식회사 스토리지 장치 및 시스템
US10795586B2 (en) 2018-11-19 2020-10-06 Alibaba Group Holding Limited System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash
US11144231B2 (en) 2018-12-12 2021-10-12 International Business Machines Corporation Relocation and persistence of named data elements in coordination namespace
WO2020142431A1 (en) 2019-01-02 2020-07-09 Formulus Black Corporation Systems and methods for memory failure prevention, management, and mitigation
US11494311B2 (en) * 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
US11650742B2 (en) * 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored
US11269780B2 (en) 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
US10963396B1 (en) * 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090254851A1 (en) * 2008-04-08 2009-10-08 Techneos Systems Inc. Method and system for conducting a survey by using a wireless device
TW201301029A (zh) * 2011-06-20 2013-01-01 Microsoft Corp 具有增強型應用程式元資料之記憶體管理器
US10108220B2 (en) * 2014-05-01 2018-10-23 Wisconsin Alumni Research Foundation Computer architecture having selectable, parallel and serial communication channels between processors and memory
US10248447B2 (en) * 2015-11-25 2019-04-02 Red Hat, Inc. Providing link aggregation and high availability through network virtualization layer
US20190065248A1 (en) * 2017-08-29 2019-02-28 Entit Software Llc Combining pipelines for a streaming data system

Also Published As

Publication number Publication date
US11650742B2 (en) 2023-05-16
EP4031973A1 (en) 2022-07-27
US20230236747A1 (en) 2023-07-27
EP4031973A4 (en) 2023-10-11
TW202117543A (zh) 2021-05-01
US20210081121A1 (en) 2021-03-18
CN114402282B (zh) 2024-04-09
WO2021055281A1 (en) 2021-03-25
KR20220060548A (ko) 2022-05-11
JP2022548888A (ja) 2022-11-22
CN114402282A (zh) 2022-04-26

Similar Documents

Publication Publication Date Title
TWI752619B (zh) 存取儲存的元資料以識別儲存資料的記憶體裝置
TWI752620B (zh) 與記憶體類型相關的頁表
TWI781439B (zh) 映射未經分類之記憶體存取至經分類之記憶體存取
TWI764265B (zh) 用於將資料連結至記憶體命名空間的記憶體系統
TWI711931B (zh) 對儲存媒體的同步記憶體匯流排存取
CN110597742A (zh) 用于具有持久***存储器的计算机***的改进存储模型