CN112384890A - 预测性分页以加速存储器存取 - Google Patents

预测性分页以加速存储器存取 Download PDF

Info

Publication number
CN112384890A
CN112384890A CN201980046028.XA CN201980046028A CN112384890A CN 112384890 A CN112384890 A CN 112384890A CN 201980046028 A CN201980046028 A CN 201980046028A CN 112384890 A CN112384890 A CN 112384890A
Authority
CN
China
Prior art keywords
memory
page
pages
data
prediction
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
Application number
CN201980046028.XA
Other languages
English (en)
Other versions
CN112384890B (zh
Inventor
A·拉伊
S·米塔尔
G·阿南德
P·玛哈拉纳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN112384890A publication Critical patent/CN112384890A/zh
Application granted granted Critical
Publication of CN112384890B publication Critical patent/CN112384890B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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
    • 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
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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/0662Virtualisation aspects
    • 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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/0871Allocation or management of cache space
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种计算系统,其包含具有存储器组件的第一存储器和第二存储器。所述计算系统进一步包含处理装置,所述处理装置可操作地与所述存储器组件耦合,以:在预测引擎中接收所述第二存储器中的页面的使用历史;基于所述使用历史训练预测模型;由所述预测引擎使用所述预测模型来预测在后续时间段内使用所述页面的可能性;以及响应于由所述预测引擎预测的所述可能性,由控制器将所述第二存储器中的页面中的数据复制到所述第一存储器。

Description

预测性分页以加速存储器存取
相关申请
本申请主张于2018年7月11日提交的题为“预测性分页以加速存储器存取(Predictive Paging to Accelerate Memory Access)”第16/032,331号美国专利申请的优先权益,其全部公开内容通过引用并入本文。
技术领域
本文公开的至少一些实施例总体上涉及存储器系统,并且更具体地,但不限于预测性分页以加速计算系统中的存储器存取。
背景技术
存储器子系统可为存储器模块,诸如双列直插存储器模块(DIMM)、小外形DIMM(SO-DIMM)或非易失性双列直插存储器模块(NVDIMM)。存储器子系统可为存储系统,诸如固态驱动器(SSD)或硬盘驱动器(HDD)。存储器子系统可包含存储数据的一或多个存储器组件。存储器组件例如可为非易失性存储器组件和易失性存储器组件。存储器组件的实例包含存储器集成电路。一些存储器集成电路是易失性的并且需要电源来维持所存储的数据。一些存储器集成电路是非易失性的,即使在未通电时也可保留所存储的数据。非易失性存储器的实例包含快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)和电可擦除可编程只读存储器(EEPROM)等。易失性存储器的实例包含动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)。通常,主机系统可利用存储器子系统将数据存储在存储器组件处并从存储器组件检索数据。
例如,计算机可包含主机系统和附接到主机系统的一或多个存储器子系统。主机系统可具有与一或多个存储器子系统通信以存储和/或检索数据和指令的中央处理单元(CPU)。计算机的指令可包含操作系统、装置驱动程序和应用程序。操作系统管理计算机中的资源并为应用程序提供公用应用服务,诸如资源的存储器分配和时间共享。装置驱动程序操作或控制计算机中的特定类型的装置;操作系统使用装置驱动程序来提供由装置类型提供的资源和/或服务。计算机系统的中央处理单元(CPU)可运行操作系统和装置驱动程序以向应用程序提供服务和/或资源。中央处理单元(CPU)可运行使用服务和/或资源的应用程序。例如,实现一种类型的计算机系统应用程序的应用程序可指示中央处理单元(CPU)将数据存储在存储器子系统的存储器组件中并从存储器组件检索数据。
计算机系统的操作系统可允许应用程序使用存储器的虚拟地址以将数据存储在计算机系统的一或多个存储器子系统的存储器组件中或从其检索数据。操作系统将虚拟地址映射到连接到计算机系统的中央处理单元(CPU)的一或多个存储器子系统的物理地址。操作系统使用存储器子系统的物理地址来实现在虚拟地址处指定的存储器存取。
虚拟地址空间可划分为页面。虚拟存储器页面可映射到存储器子系统中的物理存储器页面。操作系统可使用分页技术以经由存储器模块中的存储器页面存取存储装置中的存储器页面。在不同的时刻,存储器模块中的同一存储器页面可用作代理以存取存储器装置或计算机系统中的另一存储器装置中的不同存储器页面。
计算机系统可包含管理程序(或虚拟机监视器)以创建或布建虚拟机。虚拟机是使用计算机系统中可用的资源和服务虚拟地实施的计算装置。管理程序将虚拟机呈现给操作系统,就好像虚拟机的组件是专用物理组件一样。客户操作系统以类似于在计算机系统中运行的主机操作系统的方式在虚拟机中运行,以管理虚拟机中可用的资源和服务。管理程序允许多个虚拟机共享计算机系统的资源,并允许虚拟机基本上彼此独立地在计算机上操作。
附图说明
在附图的图中通过实例而非限制的方式示出了实施例,其中相同的附图标记表示相似的元件。
图1示出了根据本公开的一些实施例的具有存储器子系统的实例计算系统。
图2示出了根据本文公开的至少一些实施例的具有不同类型的存储器并运行指令以加速存储器存取的计算系统。
图3示出了具有经配置以加速经由管理程序进行的存储器存取的装置驱动程序的系统。
图4示出了耦合到装置驱动程序以加速经由管理程序进行的存储器存取的预测引擎。
图5至6示出了加速存储器存取的方法。
图7是可在其中操作本公开的实施例的实例计算机系统的框图。
具体实施方式
本公开的至少一些方面涉及可加速具有一或多个存储器子系统的计算机系统中的存储器存取的预测性分页技术。存储器子系统在下文中也称为“存储器装置”。存储器子系统的实例是经由存储器总线连接到中央处理单元(CPU)的存储器模块。存储器模块的实例包含双列直插存储器模块(DIMM)、小外形DIMM(SO-DIMM)、非易失性双列直插存储器模块(NVDIMM)等。存储器子系统的另一实例是经由外围互连(例如,输入/输出总线、存储区域网络)连接到中央处理单元(CPU)的存储装置。存储装置的实例包含固态驱动器(SSD)、闪存驱动器、通用串行总线(USB)闪存驱动器和硬盘驱动器(HDD)。在一些实施例中,存储器子系统是提供存储器功能和存储功能两者的混合存储器/存储子系统。通常,主机系统可利用包含一或多个存储器组件的存储器子系统。主机系统可提供将存储在存储器子系统处的数据,并且可请求将从存储器子系统检索的数据。
传统的系统可使用诸如硬盘驱动器的存储装置作为通过诸如DRAM的存储器模块存取的虚拟存储器。当应用程序存取硬盘驱动器上的虚拟存储器页面时,操作系统可将页面从硬盘驱动器加载到DRAM并将虚拟存储器页面重新映射到DRAM。存取DRAM中的数据比存取硬盘驱动器中的数据更快。因此,在虚拟存储器页面被重新映射到DRAM之后,应用程序可以以改进的性能存取虚拟存储器页面中的数据。然而,当虚拟存储器页面从硬盘驱动器重新映射到DRAM时,存储器存取性能不是最佳的。
本公开的至少一些方面通过预测虚拟存储器页面的使用来解决上述和其它缺陷。预测模型可使用监督机器学习技术进行自训练。可使用在先前时间段期间的实际使用历史针对后续时间段执行训练。预测模型预测在后续时间段内可能使用的热页面和不太可能使用的冷页面。热页面可从较慢存储器重新映射到较快存储器,从而在使用该页面时,该页面已在较快存储器中。可以消除重新映射页面的等待时间。冷页面可从较快存储器重新映射到较慢存储器,以便在较快存储器中为另一热页面腾出空间。因此,可通过虚拟存储器页面的预测加载和卸载来加速总体存储器存取。
图1示出了根据本公开的一些实施例的具有存储器子系统110的实例计算系统100。存储器子系统110可包含介质,诸如存储器组件109A至109N。存储器组件109A至109N可为易失性存储器组件、非易失性存储器组件或其组合。在一些实施例中,存储器子系统110是存储器模块。存储器模块的实例包含DIMM、NVDIMM和NVDIMM-P。在一些实施例中,存储器子系统是存储系统。存储系统的实例是SSD。在一些实施例中,存储器子系统110是混合存储器/存储子系统。通常,计算环境可包含使用存储器子系统110的主机系统120。例如,主机系统120可将数据写入存储器子系统110并从存储器子系统110读取数据。
主机系统120可为诸如台式计算机、膝上型计算机、网络服务器、移动装置的计算装置,或者包含存储器和处理装置的此类计算装置。主机系统120可包含或耦合到存储器子系统110,使得主机系统120可从存储器子系统110读取数据或将数据写入存储器子系统110。主机系统120可经由物理主机接口耦合到存储器子系统110。如本文所使用的,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线的还是无线的,包含诸如电、光、磁等连接。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接SCSI(SAS)、双倍数据速率(DDR)存储器总线等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。主机系统120可进一步利用NVM高速(NVMe)接口,以在存储器子系统110通过PCIe接口与主机系统120耦合时存取存储器组件109A至109N。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。图1示出了作为实例的存储器子系统110。通常,主机系统120可经由同一通信连接、多个独立通信连接和/或通信连接的组合存取多个存储器子系统。
主机系统120包含处理装置118和控制器116。例如,主机系统120的处理装置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)、基于纳米线的非易失性存储器、结合忆阻器技术的存储器和非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠的交叉网格数据存取阵列来基于体电阻的改变执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行现场写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。此外,可将存储器组件109A至109N的存储器单元分组成存储器页面或数据块,其可指用于存储数据的存储器组件的单元。
存储器子系统110的控制器115可与存储器组件109A至109N通信以执行操作,诸如在存储器组件109A至109N处读取数据、写入数据或擦除数据和其它此类操作(例如,响应于控制器116在命令总线上调度的命令)。控制器115可包含诸如一或多个集成电路和/或分立组件的硬件、缓冲存储器或其组合。控制器115可为微控制器、专用逻辑电路(例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。控制器115可包含处理装置117(处理器),其经配置以执行存储在本地存储器119中的指令。在所示的实例中,控制器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可包含高速缓存或缓冲器(例如,DRAM)和地址电路(例如,行解码器和列解码器),其可从控制器115接收地址并解码地址以存取存储器组件109A至109N。
计算系统100包含预测加速器113,其在主机系统120中,可执行较快存储器(例如,109A)与较慢存储器(例如,109N)之间的虚拟存储器页面的预测性加载和/或卸载。在一些实施例中,主机系统120中的控制器116和/或处理装置118包含预测加速器113的至少一部分。例如,控制器116和/或处理装置118可包含实施预测加速器113的逻辑电路。例如,主机系统120的处理装置118(处理器)可经配置以执行存储在存储器中的指令,用于执行本文描述的预测加速器113的操作。在一些实施例中,预测加速器113是主机系统120的操作系统、装置驱动程序或应用程序的一部分。
预测加速器113可在预测即将使用的虚拟存储器的热页面和在一段时间内将不使用的虚拟存储器的冷页面时执行预测模型的自适应训练。预测加速器113使用在一段时间内映射到存储器组件109A至109N的虚拟存储器页面的实际使用历史来执行训练。来自该模型的预测用于在请求热页面之前将热页面从较慢存储器(例如,109N)重新映射到较快存储器(例如,109A)。预测的冷页面可从较快存储器(例如,109A)重新映射到较慢存储器(例如,109N)以便为热页腾出空间。该预测消除和/或减少用于将所请求的页面从较慢存储器(例如,109N)重新映射到较快存储器(例如,109A)以加速存储器存取的等待时间。下文描述关于预测加速器113的操作的进一步细节。
在一个实例中,中央处理单元(CPU)可存取在连接到CPU的一或多个存储器子系统中提供的两组存储器。例如,一组存储器可能比另一组存储器慢;并且中央处理单元(CPU)可经配置以使用分页技术经由较快存储器组存取较慢存储器组。例如,一组存储器不能由CPU直接寻址,并且耦合到可由CPU直接寻址的另一组存储器;并且中央处理单元(CPU)可经配置以以类似于使用分页技术的方式经由可直接寻址的存储器组存取不可直接寻址的存储器组。
当前正在存取的虚拟存储器页面位于较慢存储器组中而不是较快存储器组中时,可从较快存储器组分配页面为较慢存储器组中的页面提供服务;并且装置驱动程序用于从较慢存储器组中获取页面的数据,将获取的数据页面存储在较快存储器组中的分配页面中,使得可经由存取较快存储器组中的分配页面完成对虚拟存储器的页面的数据存取。
此外,装置驱动程序可接收与较慢存储器组中的页面的使用相关的信息,并且训练自学习预测引擎以基于此类信息预测页面的使用。例如,监督机器学习技术可用于使用该信息来训练人工神经网络,以通过减少预测与页面的实际使用之间的误差来预测较慢存储器组中的页面的使用。在训练人工神经网络之后,预测引擎可使用当前信息来预测要使用的下一页面。此外,可以以连续的方式执行训练、预测和来自用于进一步训练的预测之后的实际使用的反馈,以使人工神经网络的预测模型适应存储器页面的最新使用模式。
响应于该引擎基于训练后的人工神经网络和当前信息预测将很快使用较慢存储器组中的页面,装置驱动程序可从较慢存储器组中预取数据页面,并将所获取的数据存储在较快存储器组中的分配页面中,从而当需要处理时,该数据页面已在较快存储器组中,这样布置提高了数据页面的数据存取速度。
可根据随后的实际页面使用来衡量预测的准确性;并且该预测和随后的实际页面使用可用于进一步训练或调整人工神经网络以跟踪存储器页面的最新使用模式。
替代地或组合地,基于机器学习的预测可用基于策略的预测规则替换或增强。例如,在可能的情况下,可将存储常驻代码(例如,在较低地址中)的页面维持在较快存储器组中以减少频繁使用的页面的交换。例如,当存取作为大页面的一部分的页面时,可将大页面加载到较快存储器组中。例如,基于诸如是顺序地还是随机地访问页面、数据访问是在稳态模式还是在突发模式,和/或页面(和不同大小的页面)之间的逻辑关系的指示,可至少部分地使用启发式规则来进行预测。
图2示出了根据本文公开的至少一些实施例的具有不同类型的存储器并运行指令以加速存储器存取的计算系统。
图2的计算系统包含主机系统120、经由存储器总线203连接到主机系统120的存储器模块205,以及经由外围互连207连接到主机系统120的存储装置209。存储装置209和存储器模块205是图1所示的存储器子系统110的实例。
主机系统120具有处理装置118,其可为中央处理单元或具有一或多个处理核心的微处理器。主机系统120可具有存储器管理单元213和高速缓冲存储器211。存储器管理单元213和/或高速缓冲存储器211的至少一部分可任选地集成在处理装置118的同一集成电路封装内。
图2所示的存储器模块205具有多种类型的存储器(例如,221和223)。例如,A型存储器221比B型存储器223快。
存储器总线203通常以比外围互连207更快的速度操作。例如,存储器总线203可为双倍数据速率总线;并且外围互连207可为外围组件互连高速(PCIe)总线、串行高级技术附件(SATA)总线、通用串行总线(USB)总线和/或存储区域网络。存储模块205中的B型存储器223的存取速度可比存取存储装置209中的B型存储器223快。
图2所示的存储装置209具有多种类型的存储器(例如,223和225)。例如,B型存储器223比C型存储器225快。
通常,多个存储器模块(例如,205)可耦合到存储器总线203;并且多个存储装置(例如,209)可耦合到外围互连207。在一些实例中,外围互连207和存储装置(例如,209)是任选的,并且可不存在于计算系统中。在其它实例中,存储器总线203和存储器模块(例如,205)是任选的,并且可不存在于计算系统中。
在可能的配置中,当多个存储器模块(例如,205)耦合到存储器总线203时,存储器模块(例如,205)中的一个具有A型存储器221;并且另一存储器模块具有B型存储器223,其可以以低于独立存储器模块(例如,205)中的A型存储器221的速度存取。
类似地,在可能的配置中,当多个存储装置(例如,205)耦合到外围互连207时,存储装置(例如,209)中的一个具有B型存储器223,并且存储装置中的另一个具有C型存储器225,其可以以低于独立存储装置(例如,209)中的B型存储器221的速度存取。
处理装置118和/或MMU 213经配置以经由指令(例如,操作系统和/或一或多个装置驱动程序)使用分页技术和/或存储器映射接口经由计算机系统中的存储器的另一部分存取计算机系统中的存储器的一部分。
例如,可经由存储器模块205(或另一存储器模块)的A型存储器221来存取存储器模块205的B型存储器223。
例如,可经由存储器模块205的A型存储器221和/或经由存储器模块205的B型存储器223来存取存储装置209的B型存储器223。
例如,可经由存储模块205的A型存储器221、经由存储模块205的B型存储器223,和/或经由存储装置209(或另一存储装置)的B型存储器223来存取存储装置209的C型存储器225。
例如,在一些实例中,同一存储器模块205(或不同的存储器模块)中的A型存储器221和B型存储器223可由处理装置118的存储器管理单元213通过存储器总线203直接且单独地寻址。然而,由于B型存储器223比A型存储器221慢,因此希望经由A型存储器221存取B型存储器223。
在其它实例中,仅可通过寻址存储器模块205的A型存储器221来存取存储器模块205的B型存储器223(例如,由于存储器总线203的地址部分中的大小限制)。
控制器X 227可设置在存储器模块205中,以管理存储器模块205内的A型存储器221与B型存储器223之间的数据传送,尤其是当存储器模块205的B型存储器223不能使用存储器总线203直接寻址时。
在一个变型中,存储器模块205的存储器(例如,221和223)可在存储器模块205内单独地具有相同的性能;然而,存储器管理单元213和/或处理装置118被限制为经由存储器223经由存储器221存取(例如,由于存储器总线203的地址部分中的大小限制)。因此,对于处理装置118,存储器223看起来比存储器221慢。
通常,存储器子系统(例如,205和209)可包含诸如存储器(例如,221,…,223,…,225)的介质。存储器(例如,221,…,223,…,225)可包含易失性存储器、非易失性存储器(NVM)和/或其组合。在一些实施例中,计算机系统包含作为存储装置209的至少一个存储器子系统。存储装置209的实例是固态驱动器(SSD)。在一些实施例中,计算机系统包含至少一个存储器子系统,其经配置为存储器模块205的混合存储器/存储系统。处理装置118可将数据写入存储器子系统(例如,205和209)的每一个,并且直接或间接地从存储器子系统(例如,205和209)读取数据。
图2的计算系统可用于实施台式计算机、膝上型计算机、网络服务器、移动装置或包含存储器和处理装置的此类计算装置。处理装置118可从存储器子系统(例如,205和209)读取数据或向其写入数据。
处理装置118可经由一或多个物理接口(例如,203、207)耦合到存储器子系统(例如,209)。
如本文所使用的,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线的还是无线的,包含诸如电、光、磁等连接。
物理主机接口的实例包括但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、小型计算机系统接口(SCSI)、串行连接SCSI(SAS)等。
物理主机接口可用于在处理装置118与存储器子系统(例如,209)之间传输数据。当存储器子系统209经由PCIe接口与外围互连207耦合时,该计算机系统还可利用NVM高速(NVMe)接口来存取存储器(例如,223,…,225)。物理主机接口可提供用于在存储器子系统(例如,209)与处理装置118之间传递控制、地址、数据和其它信号的接口。
通常,存储器子系统(例如,205和209)包含印刷电路板,其连接一组提供存储器(例如,221,…,223,…,225)的存储器装置,诸如存储器集成电路。存储器子系统(例如,205和209)上的存储器(例如,221,…,223,…,225)可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任意组合。
非易失性存储器装置的实例包含负和(NAND)型快闪存储器或负或(NOR)型快闪存储器。存储器集成电路可包含一或多个存储器单元阵列,诸如单级单元(SLC)、多级单元(MLC)、三级单元(TLC)、四级单元(QLC)等。在一些实施方案中,特定存储器装置可包含存储器单元的SLC部分和MLC(或TLC或QLC)部分两者。存储器单元中的每一个可存储由主机系统120使用的一或多个数据位。尽管描述了诸如NAND型快闪存储器的非易失性存储器装置,但存储器集成电路可基于诸如易失性存储器的任何其它类型的存储器。在一些实施方案中,存储器(例如,221,…,223,…,225)可包含但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、负或(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)和/或非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠的交叉网格数据存取阵列来基于体电阻的改变执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行现场写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。此外,可将存储器装置的存储器单元分组成存储器页面或数据块,其可指用于存储数据的存储器装置的单元。
存储器子系统(例如,205或209)可具有控制器(例如,227或229),其与存储器(例如,221,…,223,…,225)通信以响应于来自处理装置118和/或存储器管理单元(MMU)213的请求、命令或指令而执行操作,诸如读取数据、写入数据或擦除存储器(例如,221,…,223,…,225)中的数据和其它此类操作。控制器(例如,227或229)可包含诸如一或多个集成电路和/或分立组件的硬件、缓冲存储器或其组合。控制器(例如,227或229)可为微控制器、专用逻辑电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。控制器(例如,227或229)可包含经配置以执行存储在本地存储器中的指令的一或多个处理器(处理装置)。
控制器(例如,227或229)的本地存储器可包含嵌入式存储器,其经配置以存储用于执行控制存储器子系统(例如,205或209)的操作(包含处理存储器子系统(例如,205或209)与处理装置118/MMU 213之间的通信,以及下文更详细描述的其它功能)的各种过程、操作、逻辑流程和例程的指令。控制器(例如,227或229)的本地存储器219可包含用于存储微代码的只读存储器(ROM)和/或存储例如存储器指针、获取数据等的存储器寄存器。
虽然图2中的实例存储器子系统(例如,205和209)被示为包含控制器(例如,227和229),但在本公开的另一实施例中,存储器子系统(例如,205或209)可不包含控制器(例如,227或229),而是可依赖于外部控制(例如,由MMU 213提供,或者由与存储器子系统(例如,205或209)分离的处理器或控制器提供)。
通常,控制器(例如,227或229)可根据用于通信信道(例如,203或207)的标准通信协议从处理装置118或MMU 213接收命令、请求或指令,并且可遵照标准协议将命令、请求或指令转换为存储器子系统(例如,205或209)内的详细指令或适当的命令,以实现对存储器(例如,221,…,223,…,225)的所需存取。例如,控制器(例如,227或229)可负责诸如损耗均衡操作、垃圾收集操作、误差检测和误差校正码(ECC)操作、加密操作、高速缓存操作以及与存储器(例如,221,…,223,…,225)相关联的逻辑块地址与物理块地址之间的地址转换等操作。控制器(例如,227或229)还可包含主机接口电路,以经由物理主机接口与处理装置118通信。主机接口电路可将从处理装置118接收的命令转换为用以存取存储器装置(例如,221,…,223,…,225)以及将与存储器装置(例如,221,…,223,…,225)相关联的响应转换为用于处理装置118的信息的命令指令。
存储器子系统(例如,205或209)还可包含未示出的额外电路或组件。在一些实施方案中,存储器子系统(例如,205或209)可包含高速缓存或缓冲器(例如,DRAM)和地址电路(例如,行解码器和列解码器),其可从控制器(例如,227或229)或MMU 213接收地址的并对地址进行解码以存取存储器(例如,221,…,223,…,225)。
在一个实例中,外围互连207或存储器总线203具有一或多个连接器,以向存储器子系统(例如,209或205)供电和/或经由预定协议与存储器子系统(例如,209或205)通信;并且存储器子系统(例如,209或205)具有一或多个连接器以接收来自处理装置118的电源、数据和命令。例如,外围互连207上的连接器与存储器子系统(例如,209)上的连接器之间的连接可利用PCIe总线或SATA总线。
通常,处理装置118可执行一或多个操作系统以提供服务,包含加速存储器存取,其中使用分页技术和/或存储器映射接口经由计算机系统中的存储器的另一部分存取计算机系统中的存储器的一部分,如下文进一步讨论的。
图3示出了具有经配置以加速经由管理程序245进行的存储器存取的装置驱动程序247的系统。例如,可在图1或2的计算机系统中实施图3的系统。
图3的系统包括主机操作系统241,其可在图1或2的计算机系统的处理装置118中运行。主机操作系统241包含一或多个装置驱动程序(例如,247),其使用存储器子系统(诸如存储器模块205和/或存储装置209)的存储器(例如,221,…,223,…,225)提供存储器服务。
主机操作系统241包含提供虚拟机249的管理程序245。虚拟机249具有使用图1或2的计算系统的硬件经由主机操作系统241提供的资源和服务实现的虚拟硬件。例如,管理程序245可使用存储器子系统(诸如存储器模块205和/或存储装置209)的存储器(例如,221,…,223,…,225)的一部分提供虚拟存储器作为虚拟机249的一部分。
虚拟机249允许客户操作系统243向运行在客户操作系统243中的应用程序(例如,251,…,253)提供资源和/或服务,其方式如同在物理计算机上运行的操作系统243,该物理计算机具有与虚拟机中的配置相同或相似的硬件集。管理程序245管理在虚拟机中提供的虚拟硬件和由主机操作系统241管理的计算系统中的硬件的服务之间的映射。
图3示出了其中由管理程序245提供虚拟机249的实例。通常,管理程序245可布建多个虚拟机(例如,249),这些虚拟机可运行同一客户操作系统243或不同的客户操作系统(例如,243)。可以分配不同组的用户和/或应用程序以使用不同的虚拟机。
在一些实例中,主机操作系统241专用于提供用于布建虚拟机的服务,而不运行其它应用程序。替代地,主机操作系统241可提供额外服务来支持其它应用程序,诸如应用程序(例如,251,…,253)。
装置驱动程序247可经配置以预测较慢存储器的页面使用,并在虚拟机249实际请求使用该页面之前将该页面加载到较快存储器中。预测通过在请求使用页面之前将数据页面从较慢存储器加载和/或传送到较快存储器来减少请求使用页面与较快存储器中的页面的可用性之间的时间,从而加速了页面的数据存取。
例如,较慢存储器可为存储器模块205中的存储器223,而较快存储器是同一存储器模块205(或连接到与存储器模块205相同的存储器总线203的另一存储器模块)中的存储器221。
例如,较慢存储器可为存储装置209中的存储器223;较快存储器可为存储器模块205中的同一类型的存储器223,或存储器模块205中的存储器221。
例如,较慢存储器可为存储装置209中的存储器225;较快存储器可为同一存储装置209或连接到外围互连207的另一存储装置中的存储器223,或存储器模块205中的存储器(例如,223或221)。
优选地,数据的预测预取在同一存储器子系统内执行,诸如在同一存储器模块205或同一存储装置209内,以避免或减少连接到处理装置118(诸如存储器总线203和/或外围互连207)的通信信道中的拥塞。例如,响应于来自装置驱动程序247和/或存储器管理单元(MMU)213的一或多个命令、请求或指令,在存储器模块205中的控制器227的控制下,可执行预取以将数据从存储器模块205中的较慢存储器223复制到存储器模块205中的较快存储器221。例如,响应于来自装置驱动程序247和/或存储器管理单元(MMU)213的一或多个命令、请求或指令,在存储装置209中的控制器229的控制下,可执行预取以将数据从存储装置209中的较慢存储器225复制到存储装置209中的较快存储器223。
在一个实施例中,管理程序245不仅请求装置驱动程序247存取存储器子系统(例如,存储器模块205或存储装置209)中的存储器(例如,221,…,223,…,或225),而且还向装置驱动程序247提供可用于对存储器(例如,221,…,223,…,或225)中的哪些页面可能在后续时间段内使用,并且存储器(例如,存储器(例如,221,…,223,…,或225)中的哪些页面不可能在后续时间段内使用进行预测的信息。
例如,可能被使用的页面可被称为热页面;而不太可能使用的页面可被称为冷页面。在后续时间段内使用页面的可能性可被称为页面的温度。装置驱动程序247使用由管理程序245提供的信息来预测页面的温度,将冷页面从较快存储器移动到较慢存储器,并将热页面从较慢存储器移动到较快存储器,以优化页面在存储器(例如,221,…,223,…,或225)中的分布并加速数据存取。
由管理程序245提供并由装置驱动程序247用来进行预测的信息的实例包含:在先前时间段中使用的页面序列,将页面从较慢存储器加载到较快存储器的请求的实例,页面的内容属性,页面的所有权属性,页面的用户或应用程序的标识,关于在虚拟机中和/或在用户帐户中是否以顺序方式存取页面的指示,关于页面存取是否处于稳定状态的指示,关于所使用的页面是否与大页面相关联的指示等。
在一些实例中,装置驱动程序247使用具有自学习能力的硬件预测引擎来进行页面温度的预测。
图4示出了预测引擎265,其耦合到装置驱动程序247以加速经由管理程序269进行的存储器存取。例如,图4的预测引擎265可与图3的主机操作系统241和图2的存储器子系统(例如,205和209)一起使用。
图4中的管理程序245耦合到转换后备缓冲器(TLB)267,其定义由管理程序布建给虚拟机(例如,249)的虚拟存储器的页面与存储器(例如,271或273)中的页面之间的映射。
处理装置118可比在地址263处的存储器273的页面更快地存取在地址261处的存储器271的页面。期望并且在一些实例中需要经由较快存储器271的页面服务于较慢存储器273的页面的数据260。
当虚拟机249正在存取在较慢存储器273中但不在较快存储器271中的数据260时,管理程序245请求装置驱动程序247将数据260从较慢存储器273加载到较快存储器271。装置驱动程序247与控制器228(例如,存储器模块205的控制器227、存储装置229的控制器229,和/或存储器管理单元(MMU)213)通信以将数据260加载到较快存储器271。一旦数据260在较快存储器271中,管理程序245就可更新转换后备缓冲器(TLB)267,以允许将页面的虚拟地址转换为较快存储器271的地址261,从而可在较快存储器271中读取和/或修改数据260。
当不使用数据260时,可将数据260卸载回较慢存储器273,以保存在较快存储器271中对数据260进行使用时对数据260的更改。
管理程序245将信息提供给装置驱动程序247和/或自学习预测引擎265,以在预测引擎265中训练预测模型269。此类信息可包含页面存取历史、使用页面的用户、程序和/或虚拟机的标识,以及页面的属性,诸如位置、时间、所有权、使用模式、页面之间的逻辑关系(例如,一起用于表示对象的页面的标识)、页面中包含的数据类型(例如,操作系统、应用程序、软件工具、系统数据、用户数据),和/或页面的其它元数据。
例如,可使用人工神经网络或另一机器学习模型来构建预测模型269。监督机器学习技术可用于预测较慢存储器273中的页面的温度,并且最小化页面的预测温度和测量温度,如在管理程序245中观察到的页面的实际使用中所指示的。在一些实例中,页面在一个时刻的温度与页面将被使用的最近的后续时刻成反比。小于阈值的使用时间间隙对应于非常热的温度,因此表示将页面获取到较快存储器271的需求或优先级提高。大于另一阈值的使用时间间隙对应于非常冷的温度,因此表示从较快存储器271卸载页面的机会并在较快存储器271中为其它热页面腾出空间。
此外,可基于关于页面使用的持续信息和实际使用的页面的标识来连续地训练预测模型269。预测之后的实际使用提供关于预测准确性的反馈;并且可连续地训练预测模型269,以基于最近的使用时间段最小化预测误差。
当预测引擎265识别出当前不在较快存储器271中的热页面和/或当前在较快存储器271中的冷页面时,装置驱动程序247预期数据260的使用将热页面的数据260加载到较快存储器271中,和/或将冷页面的数据260卸载到较慢存储器273中,以在较快存储器271中为热页面腾出空间。
任选地或组合地,预测引擎265使用启发式规则来帮助预测数据定位。启发式规则可基于应用程序或虚拟机是顺序地还是随机地存取数据页面、应用程序或虚拟机是以稳态模式还是以突发模式存取数据页面、应用程序或虚拟机是通过小页面还是大页面存取数据页面等。
图4示出了通过管理程序245提供的信息对自学习预测引擎265的训练。通常,主机操作系统241中的软件工具可用于提供关于页面使用历史的信息和/或页面信息,以在有或没有管理程序245的情况下训练自学习预测引擎265。例如,预测数据获取技术可用于运行多个应用程序但不具有管理程序245且不提供虚拟机(例如,249)的操作系统。
优选地,可使用与处理装置118和/或控制器(例如,213、227、229、228)分离的硬件电路来实施预测引擎265。例如,专用集成电路(ASIC)或现场可编程门阵列(FPGA)可用于实施预测引擎265。
替代地,预测引擎265可实施为处理装置118或耦合到处理装置118的处理器的一部分。
在一些实例中,预测引擎265实施于存储器子系统的控制器228中,诸如存储器模块205的控制器227或存储装置209的控制器229。
图5至6示出了加速存储器存取的方法。图5或6的方法可由处理逻辑执行,其可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,图5或6的方法至少部分地由图1或2的预测加速器113执行。尽管以特定的顺序或次序示出,但是除非另有说明,否则可修改过程的次序。因此,所示的实施例应当仅被理解为实例,并且可以以不同次序执行所示的过程且可并行执行一些过程。另外,可在各种实施例中省略一或多个过程。因此,并非在每一实施例中都需要所有过程。其它过程流程也是可能的。
例如,可在具有图3的主机操作系统241和图4的自学习预测引擎265的图1或2的计算系统中实施图5或6的方法。例如,可至少部分地经由图4的自学习预测引擎265和图3的主机操作系统241来实施预测加速器113。
在图5中的框281,预测加速器113接收计算系统(例如,如图2所示)中的较慢存储器273的页面的使用历史。
在框283,预测加速器113接收与计算系统中的页面和活动相关的信息。
在框285,预测加速器113训练285预测引擎265的预测模型269,以使用所接收的信息预测使用历史。
在框287,预测加速器113使用当前信息预测在后续时间段内使用的较慢存储器273中的页面的可能性/温度。
在框289,预测加速器113将可能使用的热页面从较慢存储器加载到较快存储器271,并将不太可能使用的冷页面从较快存储器271卸载回较慢存储器273。
在框291,预测加速器113接收后续时间段内页面的实际使用。
在框293,预测加速器113进一步训练预测模型269以减小预测的可能性/温度与实际使用之间的差异。
例如,基于在导致特定时间段的时间段中页面的实际使用、所使用页面的属性,和/或可指示页面使用模式的计算系统中的活动信息,可预测某一特定时间段内使用的页面的可能性/温度。
特定时间段中的实际使用提供反馈以校正预测,并可用于进一步训练自学习预测引擎265的预测模型269。此外,鉴于在特定时间段期间变得可用的其它信息,诸如在特定时间段中实际使用的页面的属性,和/或在特定时间段期间计算系统中的活动信息,特定时间段中的实际使用为在特定时间段之后的时间段进行的预测提供基础。
在一些实例中,在没有关于计算系统中的活动的进一步信息的情况下,基于紧接在前的时间段中的使用历史和使用页面的属性进行预测。任选地,关于计算系统中的活动的进一步信息也用于预测模型269中。
在图6中的框301,计算系统提供第一存储器(例如,271)和第二存储器(例如,273)。
在框303,计算系统中的预测引擎265接收第二存储器(例如,273)中的页面的使用历史。
在框306,预测引擎265基于使用历史训练预测模型269。
在框307,预测引擎265使用预测模型269预测在后续时间段内使用页面的可能性。
在框309,预测引擎265致使控制器(例如,213、227和/或229)响应于由预测引擎预测的可能性,将第二存储器(例如,273)中的页面中的数据复制到第一存储器(例如,271)。
例如,计算系统具有第一存储器271和第二存储器272、预测引擎265和控制器228。预测引擎265接收第二存储器273中的页面的使用历史,基于使用历史训练预测模型269,并使用预测模型269预测在后续时间段内使用页面的可能性。响应于预测引擎265所预测的可能性,控制器228将第二存储器273中的热页面中的数据(例如,260)复制/加载到第一存储器271,和/或将冷页面中的数据260从第一存储器271保存/卸载到第二存储器273。
例如,管理程序245可生成在预测引擎265中用以预测可能性的信息;并且经配置以操作第二存储器273的装置驱动程序247从管理程序245接收信息,并使用预测引擎265中的信息来预测可能性。装置驱动程序247可向控制器228提供指令/请求/命令,以致使控制器228在第一存储器271与第二存储器273之间移动数据。
例如,第一存储器271和第二存储器273可在同一存储器模块205中,该存储器模块205经由存储器总线203连接到计算系统的处理装置118。
在一些实例中,第一存储器271比第二存储器273快。在其它实例中,第一存储器271和第二存储器273是同一类型,因此在存储器模块205内具有相同速度。
例如,存储器模块205具有过大的存储器容量,使得第二存储器273不能由处理装置118在存储器总线203上直接寻址。第一存储器271是存储器模块205的可在存储器总线203上直接寻址的存储器容量的一部分。因此,第一存储器271为处理装置118和/或存储器管理单元(MMU)213提供窗口以存取存储器模块205的第二存储器273。
例如,第一存储器271是易失性动态随机存取存储器(DRAM),而第二存储器273是非易失性交叉点存储器(例如,3D XPoint存储器)。第二存储器273为第一存储器271提供存储功能,该第一存储器271是存储器总线203上的计算机系统的主存储器的一部分。第二存储器273虚拟地扩展存储器模块205中的第一存储器271(例如,DRAM)的容量,并允许即使在通电的情况下也存储存储器模块205中的数据。
任选地,预测引擎265经由现场可编程门阵列(FPGA)或专用集成电路(ASIC)来实施。
在一些实例中,当基于存储器模块205上可用的页面使用信息进行预测时,预测引擎265可在存储器模块205上和/或经由控制器227实施。任选地,预测引擎265可被实施为处理装置118或芯片组的一部分,或者被实施为耦合到处理装置118的单独装置;并且装置驱动程序247、管理程序245和/或操作系统(例如,241或243)可提供额外信息以提高引擎265的预测能力。
例如,可使用监督机器学习技术来训练预测模型269。
例如,预测模型269可包含人工神经网络和/或启发式规则。
在另一实例中,第一存储器271和第二存储器273在分离的存储器模块(例如,205)中,这些存储器模块经由同一存储器总线203连接到处理装置118。
在又一实例中,第一存储器271和第二存储器273在分离的存储器子系统(例如,205和209)中,这些存储器子系统经由分离的和不同类型的通信信道(例如,203和207)连接到处理装置118。
在一些实施方案中,处理装置118与存储器子系统之间的通信信道包含计算机网络,诸如局域网、无线局域网、无线个域网、蜂窝通信网络、宽带高速始终连接的无线通信连接(例如,当前或未来一代的移动网络链路);并且处理装置118和存储器子系统可经配置以使用与NVMe协议中类似的数据存储管理和使用命令来彼此通信。
存储器子系统通常可具有非易失性存储介质。非易失性存储介质的实例包含形成在集成电路中的存储器单元和涂覆在硬盘上的磁性材料。非易失性存储介质可保持存储在其中的数据/信息而不消耗功率。可使用各种存储器/存储技术来实施存储器单元,诸如NAND逻辑门、NOR逻辑门、相变存储器(PCM)、磁性存储器(MRAM)、电阻式随机存取存储器、交叉点存储和存储器装置(例如,3D XPoint存储器)。交叉点存储器装置使用无晶体管存储器元件,无晶体管存储器元件中的每一个具有堆叠在一起作为列的存储器单元和选择器。存储器元件列经由两个垂直布线层连接,其中一个布线层在存储器元件列上方而另一布线层在存储器元件列下方。可在两个层中的每一个上的一个导线的交叉点处分别选择每一存储器元件。交叉点存储装置是快速且非易失性的,并且可用作用于处理和存储的统一存储器池。
存储器子系统(例如,205或209)的控制器(例如,228、227或229)可运行固件以响应于来自处理装置118的通信执行操作。固件通常是提供工程计算装置的控制、监视和数据操作的一种计算机程序。
可使用由控制器228(诸如控制器228的固件)执行的计算机指令来实施涉及控制器228的操作的一些实施例。在一些实例中,硬件电路可用于实现至少一些功能。固件最初可存储在非易失性存储介质或另一非易失性装置中,并加载到易失性DRAM和/或处理器内高速缓冲存储器中以供控制器228执行。
非暂时性计算机存储介质通常可用于存储存储器子系统(例如,209或205)的固件的指令和/或操作系统(例如,241、243)的指令,特别是装置驱动程序247和管理程序245的指令。当由控制器228和/或处理装置118执行指令时,指令致使控制器228和/或处理装置118执行上述方法。
图7示出了计算机系统600的实例机器,在其中可执行用于致使机器执行本文所讨论的方法中的任何一或多个的一组指令。在一些实施例中,计算机系统600可对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行预测加速器113的操作(例如,执行指令以执行对应于参考图1至6所述的预测加速器113的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可在客户端-服务器网络环境中以服务器或客户端机器的身份运行,可作为对等(或分布式)网络环境中的对等机器,也可作为云计算基础架构或环境中的服务器或客户端机器运行。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或网桥,或者能够执行指定该机器要采取的动作的一组指令(顺序或其它方式)的任何机器。此外,尽管示出了单个机器,但术语“机器”还应当被理解为包含单独地或联合地执行一组(或多组)指令以执行本文所讨论的方法中的任何一或多个的机器的任何集合。
实例计算机系统600包含处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、诸如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)的动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等),以及数据存储系统618,它们经由总线630(其可包含多条总线)彼此通信。
处理装置602表示一或多个通用处理装置,诸如微处理器、中央处理单元等。更具体地,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或者实施其它指令集的处理器,或者实施指令集组合的处理器。处理装置602还可为一或多个专用处理装置,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置602经配置以执行用于执行本文所讨论的操作和步骤的指令626。计算机系统600可进一步包含网络接口装置608以通过网络620进行通信。
数据存储系统618可包含机器可读存储介质624(也被称为计算机可读介质),在其上存储体现本文描述的方法或功能中的任何一或多个的一或多组指令626或软件。指令626还可完全地或至少部分地驻留在主存储器604内和/或处理装置602内,在其由计算机系统600执行期间,主存储器604和处理装置602也构成机器可读存储介质。机器可读存储介质624、数据存储系统618和/或主存储器604可对应于图1的存储器子系统110。
在一个实施例中,指令626包含实施对应于预测加速器113(例如,参考图1至6描述的预测加速器113)的功能的指令。虽然机器可读存储介质624在实例实施例中被示为单个介质,但术语“机器可读存储介质”应被认为包含存储一或多组指令的单个介质或多个介质。术语“机器可读存储介质”还应被认为包含能够存储或编码由机器执行的一组指令并且致使机器执行本公开的方法中的任何一或多个的任何介质。因此,术语“机器可读存储介质”应被认为包含但不限于固态存储器、光介质和磁介质。
已经根据对计算机存储器内的数据位的操作的算法和符号表示呈现了前面的详细描述的一些部分。这些算法描述和表示为数据处理领域的技术人员通常使用的,从而最有效地将它们的工作实质传递到其它领域的技术人员。本文的算法通常是指得到期望结果的操作的自相容序列。这些操作是需要对物理量进行物理操纵的操作。通常,尽管不是必须的,这些量采用能够被存储、组合、比较以及以其它方式被操纵的电或磁信号的形式。有时主要是为了公共使用的原因,将这些信号称为位、值、元素、符号、字符、项、数字、或者类似名称,经证实这是方便的。
然而,应当记住,所有这些和类似的术语要与适当的物理量相关联,并且仅仅是应用于这些量的方便的标签。本公开可涉及计算机系统或类似的电子计算设备的动作和过程,其操纵计算机系统的寄存器和存储器内表示为物理(电子)量的数据并将其转换成计算机系统存储器或寄存器或其它这样的信息存储系统内类似地表示为物理量的其它数据。
本公开还涉及用于执行本文的操作的设备。该设备可为预期目的而专门构造,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储介质中,诸如但不限于,包含软盘、光盘、CD-ROM和磁光盘的任何类型的盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡、或适合于存储电子指令的任何类型的介质,其中每一个都耦合到计算机系统总线。
本文呈现的算法和显示并不固有地与任何特定计算机或其它设备相关。各种通用系统可与根据本文的教示的程序一起使用,或者其可证明构造更专用的设备以执行该方法是方便的。多种这些系统的结构从下文描述将是显而易见的。另外,未参考任何特定编程语言来描述本公开。应当理解,可使用各种编程语言来实施如本文描述的本公开的教示。
本公开可被提供作为计算机程序产品或软件,其可包含其上存储有指令的机器可读介质,指令可用于对计算机系统(或其它电子装置)编程以执行根据本公开的过程。机器可读介质包含用于以机器(例如,计算机)可读形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)介质包含机器(例如,计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、快闪存储器组件等。
在该描述中,各种功能和操作被描述为由计算机指令执行或引起以简化描述。然而,本领域技术人员将认识到,此类表达意味着这些功能是由诸如微处理器的一或多个控制器或处理器执行计算机指令而产生的。替代地或组合地,可使用具有或不具有软件指令(诸如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA))的专用电路来实施功能和操作。可使用不具有软件指令或与软件指令组合的硬连线电路来实施实施例。因此,技术既不限于硬件电路和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定源。
在前述说明书中,已参考本公开的特定实例实施例描述了本公开的实施例。显然,可在不脱离如在所附权利要求中阐述的本公开的实施例的更宽的精神和范围的情况下对其进行各种修改。因此,说明书和附图被认为是说明性的而非限制性的。

Claims (15)

1.一种计算系统,其包括:
具有第一存储器和第二存储器的多个存储器组件;
处理装置,其可操作地与所述多个存储器组件耦合,以:
在预测引擎中接收所述第二存储器中的页面的使用历史;
基于所述使用历史训练预测模型;
由所述预测引擎使用所述预测模型来预测在后续时间段内使用所述页面的可能性;以及
响应于由所述预测引擎预测的所述可能性,由控制器将所述第二存储器中的页面中的数据复制到所述第一存储器。
2.根据权利要求1所述的计算系统,其进一步包括生成信息的管理程序,所述预测引擎基于由所述管理程序生成的所述信息预测所述可能性。
3.根据权利要求2所述的计算系统,其进一步包括从所述管理程序接收所述信息并向所述预测引擎提供所述信息的装置驱动程序;其中所述信息包括以下中的至少一个:
在一段时间内使用的页面序列;
将页面从所述第二存储器加载到所述第一存储器的请求实例;
从所述第二存储器向所述第一存储器加载的所述页面的内容属性;
从所述第二存储器向所述第一存储器加载的所述页面的所有权属性;
从所述第二存储器加载到所述第一存储器的所述页面的用户标识;
从所述第二存储器加载到所述第一存储器的标识应用程序;
在虚拟机中以顺序方式存取的页面的标识;
在用户账户中以顺序方式存取的页面的标识;以及
处于稳定状态的页面存取的标识。
4.根据权利要求3所述的计算系统,其中所述装置驱动程序控制所述控制器以将所述数据从所述第二存储器复制到所述第一存储器。
5.根据权利要求1所述的计算系统,其中所述第一存储器和所述第二存储器在同一存储器模块中,所述存储器模块经由存储器总线耦合到中央处理单元。
6.根据权利要求5所述的计算系统,其中所述第二存储器不能由所述中央处理单元在所述存储器总线上直接寻址;且所述第一存储器可在所述存储器总线上直接寻址。
7.根据权利要求5所述的计算系统,其中所述第一存储器是易失性动态随机存取存储器,且所述第二存储器是非易失性交叉点存储器;以及
其中所述预测引擎是以下中的一个:
现场可编程门阵列FPGA;以及
专用集成电路ASIC。
8.根据权利要求1所述的计算系统,其中所述第一存储器和所述第二存储器是:
在经由同一存储器总线耦合到中央处理单元的分离的存储器模块中;或
在经由分离的通信信道耦合到中央处理单元的分离的存储器系统中。
9.一种方法,其包括:
使用具有第一存储器和第二存储器的计算系统的第二存储器中的页面的使用历史来训练预测引擎的预测模型;
使用所述预测模型来预测在所述预测之后的后续时间段内使用所述页面的可能性;以及
响应于由所述预测引擎预测的所述可能性,将所述第二存储器中的页面中的数据复制到所述第一存储器。
10.根据权利要求9所述的方法,其中使用监督机器学习技术来执行所述训练。
11.根据权利要求10所述的方法,其中所述预测模型包括人工神经网络。
12.根据权利要求10所述的方法,其中所述使用历史是针对紧接在所述预测之前的时间段。
13.根据权利要求9所述的方法,其进一步包括:
经由所述计算系统中的装置驱动程序操作包含所述第二存储器的存储器系统;
由管理程序布建所述第二存储器作为所述计算系统中的虚拟存储器;以及
从所述管理程序接收信息;以及
将所述信息应用于所述预测模型以预测所述可能性。
14.根据权利要求13所述的方法,其进一步包括:
接收在所述后续时间段内的页面使用;以及
进一步训练所述预测模型,其中所述进一步训练减小在所述后续时间段内接收的页面使用与由所述可能性指示的预测页面使用之间的差异。
15.根据权利要求14所述的方法,其中所述存储器系统是经由存储器总线耦合到中央处理单元的模块;且所述第一存储器和所述第二存储器在所述存储器总线中;以及
其中所述第一存储器是在所述存储器总线上可直接寻址的动态随机存取存储器;以及
所述第二存储器是不能在所述存储器总线上直接寻址的交叉点非易失性存储器。
CN201980046028.XA 2018-07-11 2019-07-02 预测性分页以加速存储器存取 Active CN112384890B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/032,331 US10877892B2 (en) 2018-07-11 2018-07-11 Predictive paging to accelerate memory access
US16/032,331 2018-07-11
PCT/US2019/040413 WO2020014053A1 (en) 2018-07-11 2019-07-02 Predictive paging to accelerate memory access

Publications (2)

Publication Number Publication Date
CN112384890A true CN112384890A (zh) 2021-02-19
CN112384890B CN112384890B (zh) 2024-06-25

Family

ID=69138321

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980046028.XA Active CN112384890B (zh) 2018-07-11 2019-07-02 预测性分页以加速存储器存取

Country Status (5)

Country Link
US (2) US10877892B2 (zh)
EP (1) EP3821331A4 (zh)
KR (1) KR20210019576A (zh)
CN (1) CN112384890B (zh)
WO (1) WO2020014053A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535311A (zh) * 2021-07-29 2021-10-22 展讯半导体(成都)有限公司 一种页面显示方法、装置及电子设备

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
US11321636B2 (en) * 2019-07-18 2022-05-03 Innogrit Technologies Co., Ltd. Systems and methods for a data storage system
US11645198B2 (en) 2020-12-08 2023-05-09 International Business Machines Corporation Buffer pool maintenance improvement
US11442865B1 (en) * 2021-07-02 2022-09-13 Vmware, Inc. Smart prefetching for remote memory
US12007899B2 (en) 2021-09-30 2024-06-11 Micron Technology, Inc. Delta predictions for page scheduling
CN114116528B (zh) * 2021-11-22 2022-11-11 深圳大学 一种内存访问地址预测方法、装置、存储介质及电子设备
US20230229352A1 (en) * 2022-01-20 2023-07-20 Micron Technology, Inc. Host training indication for memory artificial intelligence
KR20230135748A (ko) 2022-03-17 2023-09-26 에스케이하이닉스 주식회사 신경망을 이용하여 쓰기 주소를 결정하는 데이터 저장 장치
US20240152466A1 (en) * 2022-11-04 2024-05-09 Samsung Electronics Co., Ltd. Systems and methods for computational acceleration
CN115827947B (zh) * 2023-02-03 2023-04-25 北京匠数科技有限公司 采集分页网站数据的方法、装置及电子设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5727150A (en) * 1995-05-05 1998-03-10 Silicon Graphics, Inc. Apparatus and method for page migration in a non-uniform memory access (NUMA) system
CN101044464A (zh) * 2004-10-28 2007-09-26 英特尔公司 用于将数据推送到处理器高速缓存中的方法和设备
EP1988467A1 (en) * 2007-05-01 2008-11-05 Vivante Corporation Virtual memory translation with pre-fetch prediction
US20100011188A1 (en) * 2008-07-14 2010-01-14 Via Technologies, Inc. Microprocessor that performs speculative tablewalks
US20120047312A1 (en) * 2010-08-17 2012-02-23 Microsoft Corporation Virtual machine memory management in systems with asymmetric memory
WO2014141411A1 (ja) * 2013-03-13 2014-09-18 株式会社日立製作所 ストレージシステムおよびストレージシステム制御方法
US20150106582A1 (en) * 2013-10-14 2015-04-16 Electronics And Telecommunications Research Institute Apparatus and method for managing data in hybrid memory
US9910618B1 (en) * 2017-04-10 2018-03-06 Pure Storage, Inc. Migrating applications executing on a storage system
US20180089087A1 (en) * 2016-09-26 2018-03-29 Samsung Electronics Co., Ltd. Byte-addressable flash-based memory module

Family Cites Families (112)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04230508A (ja) 1990-10-29 1992-08-19 Internatl Business Mach Corp <Ibm> 低電力消費メモリ装置
US6148377A (en) 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
US5909540A (en) 1996-11-22 1999-06-01 Mangosoft Corporation System and method for providing highly available data storage using globally addressable memory
US6026475A (en) 1997-11-26 2000-02-15 Digital Equipment Corporation Method for dynamically remapping a virtual address to a physical address to maintain an even distribution of cache page addresses in a virtual address space
US6279138B1 (en) 1998-08-04 2001-08-21 International Business Machines Corporation System for changing the parity structure of a raid array
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6247097B1 (en) 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6473845B1 (en) 2000-09-28 2002-10-29 Hewlett-Packard Company System and method for dynamically updating memory address mappings
US6646912B2 (en) 2001-06-05 2003-11-11 Hewlett-Packard Development Company, Lp. Non-volatile memory
US7437438B2 (en) 2001-12-27 2008-10-14 Hewlett-Packard Development Company, L.P. System and method for energy efficient data prefetching
EP1552409B1 (en) 2002-08-19 2013-07-24 Broadcom Corporation One-shot rdma
US20040186960A1 (en) 2003-03-20 2004-09-23 Sun Microsystems, Inc. Computer processor data prefetch unit
JP4956922B2 (ja) 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
US7376681B1 (en) 2004-12-23 2008-05-20 Emc Corporation Methods and apparatus for accessing information in a hierarchical file system
US7334076B2 (en) 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7571295B2 (en) 2005-08-04 2009-08-04 Intel Corporation Memory manager for heterogeneous memory control
US8291295B2 (en) 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US8352709B1 (en) 2006-09-19 2013-01-08 Nvidia Corporation Direct memory access techniques that include caching segmentation data
US8135933B2 (en) 2007-01-10 2012-03-13 Mobile Semiconductor Corporation Adaptive memory system for enhancing the performance of an external computing device
US8996834B2 (en) 2007-05-21 2015-03-31 International Business Machines Corporation Memory class based heap partitioning
US8281303B2 (en) 2007-10-31 2012-10-02 Hewlett-Packard Development Company, L.P. Dynamic ejection of virtual devices on ejection request from virtual device resource object within the virtual firmware to virtual resource driver executing in virtual machine
JP5238235B2 (ja) * 2007-12-07 2013-07-17 株式会社日立製作所 管理装置及び管理方法
US8082400B1 (en) 2008-02-26 2011-12-20 Hewlett-Packard Development Company, L.P. Partitioning a memory pool among plural computing nodes
US8560761B2 (en) 2008-03-31 2013-10-15 Spansion Llc Memory resource management for a flash aware kernel
US8316187B2 (en) 2008-07-08 2012-11-20 International Business Machines Corporation Cache memory including a predict buffer
US8131814B1 (en) 2008-07-11 2012-03-06 Hewlett-Packard Development Company, L.P. Dynamic pinning remote direct memory access
JP2010086049A (ja) * 2008-09-29 2010-04-15 Hitachi Ltd 管理計算機及びその運用方法
US8429665B2 (en) 2010-03-19 2013-04-23 Vmware, Inc. Cache performance prediction, partitioning and scheduling based on cache pressure of threads
JP5221332B2 (ja) 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US8321645B2 (en) 2009-04-29 2012-11-27 Netapp, Inc. Mechanisms for moving data in a hybrid aggregate
US8117373B2 (en) 2009-04-30 2012-02-14 Kimon Berlin VM host responding to initiation of a page swap by transferring pages from host-but-non-guest-addressable RAM to host-and-guest-addressable RAM
JP4990322B2 (ja) * 2009-05-13 2012-08-01 株式会社日立製作所 データ移動管理装置及び情報処理システム
US8595411B2 (en) 2009-12-30 2013-11-26 Sandisk Technologies Inc. Method and controller for performing a sequence of commands
US8850151B2 (en) 2010-03-24 2014-09-30 Apple Inc. Hybrid-device storage based on environmental state
US8965819B2 (en) 2010-08-16 2015-02-24 Oracle International Corporation System and method for effective caching using neural networks
CN101930404B (zh) 2010-08-27 2012-11-21 威盛电子股份有限公司 存储装置及其操作方法
US8533422B2 (en) 2010-09-30 2013-09-10 Intel Corporation Instruction prefetching using cache line history
US8799554B1 (en) * 2010-10-27 2014-08-05 Amazon Technologies, Inc. Methods and system for swapping memory in a virtual machine environment
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US8930647B1 (en) 2011-04-06 2015-01-06 P4tents1, LLC Multiple class memory systems
US10380022B2 (en) 2011-07-28 2019-08-13 Netlist, Inc. Hybrid memory module and system and method of operating the same
WO2013048493A1 (en) 2011-09-30 2013-04-04 Intel Corporation Memory channel that supports near memory and far memory access
US20130145095A1 (en) 2011-12-06 2013-06-06 Lsi Corporation Melthod and system for integrating the functions of a cache system with a storage tiering system
KR20130064521A (ko) 2011-12-08 2013-06-18 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 관리 방법
KR101850318B1 (ko) 2011-12-09 2018-04-20 삼성전자주식회사 가상 메모리 관리 장치 및 방법
CN104115109A (zh) 2012-02-08 2014-10-22 株式会社日立制作所 具有多个非易失性半导体存储单元的存储装置及其用于在具有较高残留寿命长度的存储单元中放置热数据而在具有较低残留寿命长度的存储单元中放置冷数据的控制方法
US8849731B2 (en) 2012-02-23 2014-09-30 Microsoft Corporation Content pre-fetching for computing devices
CN102662690B (zh) 2012-03-14 2014-06-11 腾讯科技(深圳)有限公司 应用程序启动方法和装置
US8838887B1 (en) 2012-03-30 2014-09-16 Emc Corporation Drive partitioning for automated storage tiering
US9043530B1 (en) 2012-04-09 2015-05-26 Netapp, Inc. Data storage within hybrid storage aggregate
US9996370B1 (en) * 2012-04-18 2018-06-12 Open Invention Network Llc Page swapping in virtual machine environment
WO2014002213A1 (ja) * 2012-06-27 2014-01-03 株式会社日立製作所 管理システム及び管理方法
US9128845B2 (en) 2012-07-30 2015-09-08 Hewlett-Packard Development Company, L.P. Dynamically partition a volatile memory for a cache and a memory partition
US10303618B2 (en) 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
US9552288B2 (en) 2013-02-08 2017-01-24 Seagate Technology Llc Multi-tiered memory with different metadata levels
US9672230B1 (en) 2013-04-03 2017-06-06 Ca, Inc. Optimized placement of data
US20150026509A1 (en) 2013-07-22 2015-01-22 Kabushiki Kaisha Toshiba Storage device having a data stream converter
EP3028154A4 (en) 2013-07-29 2017-03-29 Silicon Graphics International Corp. I/o acceleration in hybrid storage
GB2517493A (en) 2013-08-23 2015-02-25 Advanced Risc Mach Ltd Handling access attributes for data accesses
WO2015029102A1 (ja) 2013-08-26 2015-03-05 株式会社日立製作所 ストレージ装置及び階層制御方法
US9037753B2 (en) 2013-08-29 2015-05-19 International Business Machines Corporation Automatic pinning and unpinning of virtual pages for remote direct memory access
US9513692B2 (en) 2013-09-18 2016-12-06 Intel Corporation Heterogenous memory access
CN105579959B (zh) 2013-09-24 2019-06-07 渥太华大学 硬件加速器虚拟化
US10032246B2 (en) 2013-10-09 2018-07-24 Nvidia Corporation Approach to caching decoded texture data with variable dimensions
US20150199276A1 (en) 2014-01-13 2015-07-16 Samsung Electronics Co., Ltd. Pre-fetch confirmation queue
KR20150089538A (ko) 2014-01-28 2015-08-05 한국전자통신연구원 인-메모리 데이터 관리 장치 및 인-메모리 데이터 관리 방법
JP6203937B2 (ja) 2014-03-04 2017-09-27 株式会社日立製作所 計算機およびメモリ制御方法
US10445025B2 (en) 2014-03-18 2019-10-15 Micron Technology, Inc. Apparatuses and methods having memory tier structure and recursively searching between tiers for address in a translation table where information is only directly transferred between controllers
US9472248B2 (en) 2014-03-28 2016-10-18 Intel Corporation Method and apparatus for implementing a heterogeneous memory subsystem
US10628245B2 (en) 2014-04-02 2020-04-21 Pure Storage, Inc. Monitoring of storage units in a dispersed storage network
US20150356125A1 (en) 2014-06-06 2015-12-10 Plexistor Ltd. Method for data placement based on a file level operation
US10282100B2 (en) 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
US10223371B2 (en) 2014-11-21 2019-03-05 Vmware, Inc. Host-based deduplication using array generated data tags
US9727427B2 (en) 2014-12-31 2017-08-08 International Business Machines Corporation Synchronizing storage of data copies in a dispersed storage network
US20160212214A1 (en) 2015-01-16 2016-07-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Tunneled remote direct memory access (rdma) communication
WO2016134035A1 (en) 2015-02-17 2016-08-25 Coho Data, Inc. Virtualized application-layer space for data processing in data storage systems
KR20160116533A (ko) 2015-03-30 2016-10-10 삼성전자주식회사 리프레쉬 동작을 관리하는 메모리 콘트롤러, 메모리 시스템 및 그 동작방법
US9720846B2 (en) 2015-05-28 2017-08-01 Red Hat Israel, Ltd. Memory swap for direct memory access by a device assigned to a guest operating system
US10042782B2 (en) 2015-06-02 2018-08-07 ALTR Solutions, Inc. Immutable datastore for low-latency reading and writing of large data sets
US10019409B2 (en) 2015-08-03 2018-07-10 International Business Machines Corporation Extending remote direct memory access operations for storage class memory access
US11169925B2 (en) 2015-08-25 2021-11-09 Samsung Electronics Co., Ltd. Capturing temporal store streams into CPU caches by dynamically varying store streaming thresholds
US10430723B1 (en) 2015-09-29 2019-10-01 EMC IP Holding Company LLC Storage system with machine learning based skew prediction
US20170123796A1 (en) 2015-10-29 2017-05-04 Intel Corporation Instruction and logic to prefetch information from a persistent memory
US10019372B2 (en) 2015-12-16 2018-07-10 Western Digital Technologies, Inc. Caching sensing device data in data storage device
US10019279B2 (en) 2015-12-17 2018-07-10 International Business Machines Corporation Transparent secure interception handling
US10592114B2 (en) 2016-03-03 2020-03-17 Samsung Electronics Co., Ltd. Coordinated in-module RAS features for synchronous DDR compatible memory
US10216536B2 (en) 2016-03-11 2019-02-26 Vmware, Inc. Swap file defragmentation in a hypervisor
US20170285992A1 (en) 2016-04-01 2017-10-05 Intel Corporation Memory subsystem with narrow bandwidth repeater channel
US10778762B2 (en) 2016-04-18 2020-09-15 Rancher Labs, Inc. Cloud computing service architecture
CN109073350B (zh) 2016-04-29 2021-07-02 思科技术公司 应用性能数据的预测性汇总和缓存
US10282261B2 (en) 2016-06-20 2019-05-07 Vmware, Inc. Pooled memory heartbeat in shared memory architecture
US10176099B2 (en) 2016-07-11 2019-01-08 Intel Corporation Using data pattern to mark cache lines as invalid
US10083123B2 (en) 2016-08-10 2018-09-25 Vmware, Inc. Page-fault latency directed virtual machine performance monitoring
US10120797B1 (en) 2016-09-30 2018-11-06 EMC IP Holding Company LLC Managing mapping metadata in storage systems
CN108008911A (zh) 2016-11-01 2018-05-08 阿里巴巴集团控股有限公司 读写请求处理方法及装置
TWI596541B (zh) 2016-11-30 2017-08-21 財團法人工業技術研究院 資料存取系統、資料存取裝置及資料存取方法
US11392488B2 (en) 2017-04-07 2022-07-19 Keysight Technologies Singapore (Sales) Pte. Ltd. Optimizing storage of application data in memory
US20190004841A1 (en) 2017-06-30 2019-01-03 Microsoft Technology Licensing, Llc Memory Sharing For Virtual Machines
US10289566B1 (en) 2017-07-28 2019-05-14 EMC IP Holding Company LLC Handling data that has become inactive within stream aware data storage equipment
US10671303B2 (en) * 2017-09-13 2020-06-02 International Business Machines Corporation Controlling a storage system
KR102414047B1 (ko) 2017-10-30 2022-06-29 에스케이하이닉스 주식회사 통합 메모리 디바이스 및 그의 동작 방법
US10572389B2 (en) 2017-12-12 2020-02-25 Advanced Micro Devices, Inc. Cache control aware memory controller
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US20190243787A1 (en) 2018-02-05 2019-08-08 Micron Technology, Inc. Memory Systems having Controllers Embedded in Packages of Integrated Circuit Memory
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US20190243771A1 (en) 2018-02-05 2019-08-08 Micron Technology, Inc. Accelerate Data Access in Memory Systems via Data Stream Segregation
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US11182507B2 (en) 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
US10915465B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5727150A (en) * 1995-05-05 1998-03-10 Silicon Graphics, Inc. Apparatus and method for page migration in a non-uniform memory access (NUMA) system
CN101044464A (zh) * 2004-10-28 2007-09-26 英特尔公司 用于将数据推送到处理器高速缓存中的方法和设备
EP1988467A1 (en) * 2007-05-01 2008-11-05 Vivante Corporation Virtual memory translation with pre-fetch prediction
US20100011188A1 (en) * 2008-07-14 2010-01-14 Via Technologies, Inc. Microprocessor that performs speculative tablewalks
US20120047312A1 (en) * 2010-08-17 2012-02-23 Microsoft Corporation Virtual machine memory management in systems with asymmetric memory
WO2014141411A1 (ja) * 2013-03-13 2014-09-18 株式会社日立製作所 ストレージシステムおよびストレージシステム制御方法
US20150106582A1 (en) * 2013-10-14 2015-04-16 Electronics And Telecommunications Research Institute Apparatus and method for managing data in hybrid memory
US20180089087A1 (en) * 2016-09-26 2018-03-29 Samsung Electronics Co., Ltd. Byte-addressable flash-based memory module
US9910618B1 (en) * 2017-04-10 2018-03-06 Pure Storage, Inc. Migrating applications executing on a storage system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535311A (zh) * 2021-07-29 2021-10-22 展讯半导体(成都)有限公司 一种页面显示方法、装置及电子设备

Also Published As

Publication number Publication date
EP3821331A1 (en) 2021-05-19
EP3821331A4 (en) 2022-04-20
US20200019506A1 (en) 2020-01-16
CN112384890B (zh) 2024-06-25
US20210117326A1 (en) 2021-04-22
US10877892B2 (en) 2020-12-29
KR20210019576A (ko) 2021-02-22
US11573901B2 (en) 2023-02-07
WO2020014053A1 (en) 2020-01-16

Similar Documents

Publication Publication Date Title
CN112384890B (zh) 预测性分页以加速存储器存取
US11669260B2 (en) Predictive data orchestration in multi-tier memory systems
US20220398194A1 (en) Memory virtualization for accessing heterogeneous memory components
US12001342B2 (en) Isolated performance domains in a memory system
US11977787B2 (en) Remote direct memory access in multi-tier memory systems
US11561845B2 (en) Memory access communications through message passing interface implemented in memory systems
EP3750072A1 (en) Accelerate data access in memory systems via data stream segregation
US11734071B2 (en) Memory sub-system tier allocation

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