CN114402282A - 存取存储的元数据以识别存储数据的存储器装置 - Google Patents
存取存储的元数据以识别存储数据的存储器装置 Download PDFInfo
- Publication number
- CN114402282A CN114402282A CN202080064797.5A CN202080064797A CN114402282A CN 114402282 A CN114402282 A CN 114402282A CN 202080064797 A CN202080064797 A CN 202080064797A CN 114402282 A CN114402282 A CN 114402282A
- Authority
- CN
- China
- Prior art keywords
- memory
- memory device
- application
- data
- metadata
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 230000015654 memory Effects 0.000 claims abstract description 523
- 238000000034 method Methods 0.000 claims abstract description 111
- 230000008569 process Effects 0.000 claims abstract description 73
- 238000012545 processing Methods 0.000 claims description 117
- 230000004044 response Effects 0.000 claims description 38
- 238000003860 storage Methods 0.000 claims description 25
- 238000013519 translation Methods 0.000 claims description 12
- 238000013459 approach Methods 0.000 abstract description 4
- 238000004891 communication Methods 0.000 description 21
- 238000013507 mapping Methods 0.000 description 17
- 238000007726 management method Methods 0.000 description 16
- 230000014616 translation Effects 0.000 description 11
- 230000008859 change Effects 0.000 description 8
- 230000001360 synchronised effect Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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/0866—Addressing 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/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/217—Hybrid disk, e.g. using both magnetic and solid state storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical 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
相关申请案
本申请案主张2019年9月17日提交且名为“存取存储的元数据以识别存储数据的存储器装置(ACCESSING STORED METADATA TO IDENTIFY MEMORY DEVICES IN WHICH DATAIS STORED)”的第16/573,490号美国专利申请案的优先权,所述专利申请案的整个公开内容特此以引用的方式并入本文中。
技术领域
本文中所公开的至少一些实施例大体来说涉及存储器系统,且更特定地说,涉及但不限于存取存储的元数据以识别存储器系统的存储数据的存储器装置。
背景技术
各种类型的存储器装置可用于将数据存储于计算机系统的主存储器中。一种类型的易失性存储器装置为动态随机存取存储器(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 operatingsystem)以类似于在计算机系统中运行的主机操作系统的方式在虚拟机中运行以管理可用于虚拟机中的资源及服务。超管理器允许多个虚拟机共享计算机系统的资源,且允许虚拟机在计算机上大致上彼此独立地操作。
附图说明
在随附图式的图中借助于实例(而非限制)来绘示实施例,在所述图中,类似编号指示类似元件。
图1绘示根据一些实施例的具有存储器子系统的实例计算机系统。
图2展示根据一些实施例的使用存储器总线存取存储器模块中的不同类型的存储器的移动装置。
图3绘示根据一些实施例的存储用以存取存储器子系统中的存储器装置的元数据的实例计算机系统。
图4展示根据一些实施例的经配置用于由主机计算机系统对存储器模块的易失性及非易失性存储器进行的存储器总线存取的存储器模块。
图5展示根据至少一些实施例的使用存储器总线存取来存取存储器模块的主机操作系统。
图6展示根据一些实施例的用于基于存储的元数据来管理用于计算机系统的地址空间中的过程的存储器的方法,所述存储的元数据使用于地址空间中的过程的虚拟地址范围与用于计算机系统中的存储器装置的物理地址相关联。
图7为可操作本公开的实施例的实例计算机系统的框图。
具体实施方式
本文中的至少一些实施例涉及存取存储的元数据以识别存储器系统的存储数据的存储器装置。在如本文中所论述的各种实施例中,元数据可由各种类型的计算机系统存储及存取。在一个实例中,计算机系统为片上系统(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中存取的存储器装置包含DRAM304、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在图1或2的计算机系统的处理装置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)的部分的装置。此类“物联”可与其所有者或管理员(其可监测所述物联或修改这些物联的设定)具有偶然交互。在一些情况下,此类所有者或管理员相对于“物联”装置扮演用户的角色。在一些实例中,用户的主移动装置(例如Apple iPhone)可为相对于由用户穿戴的“物联”装置(例如Apple手表)的管理员服务器。
在一些实施例中,计算装置可为计算机或主机系统,其实施为例如桌上型计算机、膝上型计算机、网络服务器、移动装置或包含存储器及处理装置的另一计算装置。主机系统可包含或耦合到存储器子系统,使得主机系统可从存储器子系统读取数据或将数据写入到存储器子系统。主机系统可经由物理主机接口耦合到存储器子系统。大体来说,主机系统可经由同一通信连接、多个单独通信连接及/或通信连接的组合存取多个存储器子系统。
Claims (20)
1.一种方法,其包括:
由计算机系统的处理装置存取地址空间中的存储器,其中所述计算机系统的存储器装置由所述处理装置使用所述地址空间中的地址存取;
存储使所述地址空间的第一地址范围与第一存储器装置相关联且使所述地址空间的第二地址范围与第二存储器装置相关联的元数据,其中所述第一存储器装置的第一时延不同于所述第二存储器装置的第二时延;及
基于所述存储的元数据将所述第一地址范围分配给在所述计算机系统上执行的应用程序。
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.一种非暂时性机器可读存储媒体,其存储指令,所述指令在至少一个处理装置上执行时使所述至少一个处理装置至少:
存取地址空间中的存储器,其中由所述至少一个处理装置使用所述地址空间中的地址来存取计算机系统的存储器装置;
存储使所述地址空间的第一地址范围与第一存储器装置相关联且使所述地址空间的第二地址范围与第二存储器装置相关联的元数据;
将第一数据提供到在所述计算机系统上执行的应用程序,所述第一数据指示所述第一存储器装置的第一时延小于所述第二存储器装置的第二时延;
响应于将所述第一数据提供到所述应用程序,从所述应用程序接收将与所述应用程序相关联的第二数据存储于所述第一存储器装置中的请求;
响应于所述应用程序的存储所述第二数据的请求,查询所述存储的元数据以提供结果;及
基于所述结果将所述第二数据存储于所述第一存储器装置中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/573,490 US11650742B2 (en) | 2019-09-17 | 2019-09-17 | Accessing stored metadata to identify memory devices in which data is stored |
US16/573,490 | 2019-09-17 | ||
PCT/US2020/050714 WO2021055281A1 (en) | 2019-09-17 | 2020-09-14 | Accessing stored metadata to identify memory devices in which data is stored |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114402282A true CN114402282A (zh) | 2022-04-26 |
CN114402282B CN114402282B (zh) | 2024-04-09 |
Family
ID=74869576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080064797.5A Active CN114402282B (zh) | 2019-09-17 | 2020-09-14 | 存取存储的元数据以识别存储数据的存储器装置 |
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11269780B2 (en) | 2019-09-17 | 2022-03-08 | Micron Technology, Inc. | Mapping non-typed memory access to typed memory access |
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 |
US10963396B1 (en) | 2019-09-17 | 2021-03-30 | Micron Technology, Inc. | Memory system for binding data to a memory namespace |
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 (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050188119A1 (en) * | 2004-02-25 | 2005-08-25 | Analog Devices, Inc. | DMA controller for digital signal processors |
CN1945557A (zh) * | 2005-10-07 | 2007-04-11 | 国际商业机器公司 | 处理页面复制期间的dma操作的存储控制器和方法 |
KR20080038363A (ko) * | 2005-08-03 | 2008-05-06 | 쌘디스크 코포레이션 | 직접적인 데이터 파일 저장 메모리들에서의 데이터 통합 및가비지 수집 |
US20090150599A1 (en) * | 2005-04-21 | 2009-06-11 | Bennett Jon C R | Method and system for storage of data in non-volatile media |
US20140025923A1 (en) * | 2012-07-18 | 2014-01-23 | Micron Technology, Inc. | Memory management for a hierarchical memory system |
CN104520823A (zh) * | 2012-08-07 | 2015-04-15 | 高通股份有限公司 | 用于混合存储器管理的方法、系统和设备 |
EP2863312A1 (en) * | 2013-10-16 | 2015-04-22 | Samsung Electronics Co., Ltd | Methods and systems for managing heterogeneous memories |
US9075733B1 (en) * | 2010-05-20 | 2015-07-07 | Seagate Technology Llc | Selective storage of address mapping metadata in a system having multiple memories |
US20160085696A1 (en) * | 2014-09-24 | 2016-03-24 | International Business Machines Corporation | Using access information to determine a storage tier for storing data |
US20160124674A1 (en) * | 2014-11-04 | 2016-05-05 | Samsung Electronics Co., Ltd. | Method and apparatus for managing a plurality of memory devices |
CN105612505A (zh) * | 2014-09-17 | 2016-05-25 | 华为技术有限公司 | Cpu调度的方法和装置 |
JP2017102943A (ja) * | 2017-01-10 | 2017-06-08 | マイクロン テクノロジー, インク. | トレーニング、データ再構築および/またはシャドウィングを含むメモリシステムおよび方法 |
JP2017138852A (ja) * | 2016-02-04 | 2017-08-10 | 株式会社東芝 | 情報処理装置、記憶装置およびプログラム |
CN108028058A (zh) * | 2015-10-08 | 2018-05-11 | 桑迪士克科技有限责任公司 | 用于设备的数据编码技术 |
US20180173419A1 (en) * | 2016-12-21 | 2018-06-21 | Western Digital Technologies, Inc. | Hybrid ssd with delta encoding |
US20180225059A1 (en) * | 2015-11-03 | 2018-08-09 | Hewlett-Packard Development Company, L.P. | Operating mode memory migration |
CN108776949A (zh) * | 2017-04-07 | 2018-11-09 | 英特尔公司 | 用于图形处理环境中的存储器管理的设备和方法 |
WO2018236260A1 (en) * | 2017-06-22 | 2018-12-27 | Telefonaktiebolaget Lm Ericsson (Publ) | APPARATUSES AND METHODS FOR MEMORY ALLOCATION IN A DATA CENTER |
CN109101434A (zh) * | 2017-06-21 | 2018-12-28 | 三星电子株式会社 | 存储装置、存储系统及所述存储装置的操作方法 |
WO2019152224A1 (en) * | 2018-02-05 | 2019-08-08 | Micron Technology, Inc. | Memory virtualization for accessing heterogeneous memory components |
Family Cites Families (90)
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 | 最適メモリ配置演算装置及び最適メモリ配置方法 |
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 | ソニー株式会社 | 記憶装置および情報処理システム |
US7949845B2 (en) | 2005-08-03 | 2011-05-24 | Sandisk Corporation | Indexing of file data in reprogrammable non-volatile memories that directly store data files |
US7669003B2 (en) | 2005-08-03 | 2010-02-23 | Sandisk Corporation | Reprogrammable non-volatile memory systems with indexing of directly stored data files |
JP2007254204A (ja) | 2006-03-23 | 2007-10-04 | Seiko Epson Corp | マルチレンズアレイの強化処理方法 |
US7978516B2 (en) | 2007-12-27 | 2011-07-12 | Pliant Technology, Inc. | Flash memory controller having reduced pinout |
US8151076B2 (en) | 2008-04-04 | 2012-04-03 | Cisco Technology, Inc. | Mapping memory segments in a translation lookaside buffer |
US20090254851A1 (en) | 2008-04-08 | 2009-10-08 | Techneos Systems Inc. | Method and system for conducting a survey by using a wireless device |
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 | メモリ管理装置及びメモリ管理方法 |
DE112010000004B4 (de) | 2010-06-13 | 2016-03-03 | Lianyungang Zhongfu Lianzhong Composites Group Co., Ltd. | Verfahren zur Herstellung eines Turbinenflügelfusses einer Megawatt-Windturbine |
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 |
US9558040B2 (en) | 2011-06-20 | 2017-01-31 | Microsoft Technology Licensing, Llc | Memory manager with enhanced application metadata |
US8935491B2 (en) * | 2011-07-15 | 2015-01-13 | Throughputer, Inc. | Memory architecture for dynamically allocated manycore processor |
WO2013161073A1 (ja) | 2012-04-27 | 2013-10-31 | 株式会社日立製作所 | データ管理システム及び方法 |
US9678863B2 (en) | 2012-06-12 | 2017-06-13 | Sandisk Technologies, Llc | Hybrid checkpointed memory |
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 |
US9229854B1 (en) * | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
CN103174406B (zh) | 2013-03-13 | 2015-12-02 | 吉林大学 | 一种油页岩地下原位加热的方法 |
US9785558B2 (en) | 2013-10-29 | 2017-10-10 | Hua Zhong University Of Science Technology | Mixed cache management |
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 |
US9594508B2 (en) | 2014-03-04 | 2017-03-14 | Kabushiki Kaisha Toshiba | Computer system having tiered block storage device, storage controller, file arrangement method and storage medium |
JP6118285B2 (ja) | 2014-03-20 | 2017-04-19 | 株式会社東芝 | キャッシュメモリシステムおよびプロセッサシステム |
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 |
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 |
JP2016085677A (ja) | 2014-10-28 | 2016-05-19 | 富士通株式会社 | メモリ管理方法、メモリ管理プログラム及び情報処理装置 |
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 |
WO2016134035A1 (en) | 2015-02-17 | 2016-08-25 | Coho Data, Inc. | 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 | 東芝メモリ株式会社 | メモリシステム |
US10216643B2 (en) | 2015-11-23 | 2019-02-26 | International Business Machines Corporation | Optimizing page table manipulations |
US10248447B2 (en) | 2015-11-25 | 2019-04-02 | Red Hat, Inc. | Providing link aggregation and high availability through network virtualization layer |
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 | キヤノン株式会社 | 情報処理装置、情報処理方法および撮像装置 |
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 | 東芝メモリ株式会社 | メモリ制御回路、メモリシステムおよびプロセッサシステム |
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 |
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 |
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 |
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 |
US10540203B2 (en) | 2017-08-29 | 2020-01-21 | Micro Focus Llc | Combining pipelines for a streaming data system |
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 |
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 |
US10725853B2 (en) | 2019-01-02 | 2020-07-28 | 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 |
US10963396B1 (en) * | 2019-09-17 | 2021-03-30 | Micron Technology, Inc. | Memory system for binding data to a memory namespace |
US11269780B2 (en) | 2019-09-17 | 2022-03-08 | Micron Technology, Inc. | Mapping non-typed memory access to typed memory access |
US11650742B2 (en) * | 2019-09-17 | 2023-05-16 | Micron Technology, Inc. | Accessing stored metadata to identify memory devices in which data is stored |
-
2019
- 2019-09-17 US US16/573,490 patent/US11650742B2/en active Active
-
2020
- 2020-09-07 TW TW109130612A patent/TWI752619B/zh active
- 2020-09-14 EP EP20864647.1A patent/EP4031973A4/en active Pending
- 2020-09-14 WO PCT/US2020/050714 patent/WO2021055281A1/en unknown
- 2020-09-14 JP JP2022517129A patent/JP2022548888A/ja active Pending
- 2020-09-14 KR KR1020227011422A patent/KR20220060548A/ko unknown
- 2020-09-14 CN CN202080064797.5A patent/CN114402282B/zh active Active
-
2023
- 2023-03-27 US US18/190,669 patent/US20230236747A1/en active Pending
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050188119A1 (en) * | 2004-02-25 | 2005-08-25 | Analog Devices, Inc. | DMA controller for digital signal processors |
US20090150599A1 (en) * | 2005-04-21 | 2009-06-11 | Bennett Jon C R | Method and system for storage of data in non-volatile media |
KR20080038363A (ko) * | 2005-08-03 | 2008-05-06 | 쌘디스크 코포레이션 | 직접적인 데이터 파일 저장 메모리들에서의 데이터 통합 및가비지 수집 |
CN1945557A (zh) * | 2005-10-07 | 2007-04-11 | 国际商业机器公司 | 处理页面复制期间的dma操作的存储控制器和方法 |
US9075733B1 (en) * | 2010-05-20 | 2015-07-07 | Seagate Technology Llc | Selective storage of address mapping metadata in a system having multiple memories |
US20140025923A1 (en) * | 2012-07-18 | 2014-01-23 | Micron Technology, Inc. | Memory management for a hierarchical memory system |
CN104520823A (zh) * | 2012-08-07 | 2015-04-15 | 高通股份有限公司 | 用于混合存储器管理的方法、系统和设备 |
EP2863312A1 (en) * | 2013-10-16 | 2015-04-22 | Samsung Electronics Co., Ltd | Methods and systems for managing heterogeneous memories |
CN105612505A (zh) * | 2014-09-17 | 2016-05-25 | 华为技术有限公司 | Cpu调度的方法和装置 |
US20160085696A1 (en) * | 2014-09-24 | 2016-03-24 | International Business Machines Corporation | Using access information to determine a storage tier for storing data |
US20160124674A1 (en) * | 2014-11-04 | 2016-05-05 | Samsung Electronics Co., Ltd. | Method and apparatus for managing a plurality of memory devices |
CN108028058A (zh) * | 2015-10-08 | 2018-05-11 | 桑迪士克科技有限责任公司 | 用于设备的数据编码技术 |
US20180225059A1 (en) * | 2015-11-03 | 2018-08-09 | Hewlett-Packard Development Company, L.P. | Operating mode memory migration |
JP2017138852A (ja) * | 2016-02-04 | 2017-08-10 | 株式会社東芝 | 情報処理装置、記憶装置およびプログラム |
US20180173419A1 (en) * | 2016-12-21 | 2018-06-21 | Western Digital Technologies, Inc. | Hybrid ssd with delta encoding |
JP2017102943A (ja) * | 2017-01-10 | 2017-06-08 | マイクロン テクノロジー, インク. | トレーニング、データ再構築および/またはシャドウィングを含むメモリシステムおよび方法 |
CN108776949A (zh) * | 2017-04-07 | 2018-11-09 | 英特尔公司 | 用于图形处理环境中的存储器管理的设备和方法 |
CN109101434A (zh) * | 2017-06-21 | 2018-12-28 | 三星电子株式会社 | 存储装置、存储系统及所述存储装置的操作方法 |
WO2018236260A1 (en) * | 2017-06-22 | 2018-12-27 | Telefonaktiebolaget Lm Ericsson (Publ) | APPARATUSES AND METHODS FOR MEMORY ALLOCATION IN A DATA CENTER |
WO2019152224A1 (en) * | 2018-02-05 | 2019-08-08 | Micron Technology, Inc. | Memory virtualization for accessing heterogeneous memory components |
Also Published As
Publication number | Publication date |
---|---|
TW202117543A (zh) | 2021-05-01 |
EP4031973A1 (en) | 2022-07-27 |
CN114402282B (zh) | 2024-04-09 |
US11650742B2 (en) | 2023-05-16 |
TWI752619B (zh) | 2022-01-11 |
WO2021055281A1 (en) | 2021-03-25 |
US20210081121A1 (en) | 2021-03-18 |
JP2022548888A (ja) | 2022-11-22 |
EP4031973A4 (en) | 2023-10-11 |
KR20220060548A (ko) | 2022-05-11 |
US20230236747A1 (en) | 2023-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114402282B (zh) | 存取存储的元数据以识别存储数据的存储器装置 | |
US11494311B2 (en) | Page table hooks to memory types | |
US11868268B2 (en) | Mapping non-typed memory access to typed memory access | |
US11526450B2 (en) | Memory system for binding data to a memory namespace | |
KR102408149B1 (ko) | 저장 매체에 대한 동기식 메모리 버스 액세스 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |