CN111684417B - 用以存取异质存储器组件的存储器虚拟化 - Google Patents

用以存取异质存储器组件的存储器虚拟化 Download PDF

Info

Publication number
CN111684417B
CN111684417B CN201980011918.7A CN201980011918A CN111684417B CN 111684417 B CN111684417 B CN 111684417B CN 201980011918 A CN201980011918 A CN 201980011918A CN 111684417 B CN111684417 B CN 111684417B
Authority
CN
China
Prior art keywords
memory
access
bus
processing device
data
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.)
Active
Application number
CN201980011918.7A
Other languages
English (en)
Other versions
CN111684417A (zh
Inventor
A·拉伊
P·R·玛哈拉纳
G·阿南德
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 CN111684417A publication Critical patent/CN111684417A/zh
Application granted granted Critical
Publication of CN111684417B publication Critical patent/CN111684417B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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/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/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • 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/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System (AREA)

Abstract

本发明涉及一种计算系统,其具有:至少一个总线;多个不同存储器组件;及处理装置,其通过所述至少一个总线与所述多个存储器组件可操作地耦合。所述不同存储器组件包含具有不同存储器存取速度的第一存储器及第二存储器。所述计算系统进一步包含存储器虚拟器,所述存储器虚拟器可操作地:存储由所述处理装置用于存取存储器的第一地址与用于存取所述第一存储器及所述第二存储器的第二地址之间的地址映射;监测所述第一存储器及第二存储器的使用;基于所述使用调整所述地址映射以改进所述处理装置在涉及所述第一存储器及所述第二存储器的存储器存取时的速度;及根据对所述地址映射的调整交换所述第一存储器及所述第二存储器中的数据内容。

Description

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

Claims (14)

1.一种计算系统,其包括:
至少一个总线;
多个存储器组件,其包括第一存储器及第二存储器,其中所述第一存储器及所述第二存储器在经由所述至少一个总线存取时具有不同速度;
处理装置,其通过所述至少一个总线与所述多个存储器组件可操作地耦合;
其中所述计算系统进一步包括存储器虚拟器,所述存储器虚拟器可操作地:
存储由所述处理装置用于存取存储器的第一地址与用于存取所述第一存储器及所述第二存储器的第二地址之间的地址映射;
监测所述第一存储器及所述第二存储器的使用,包括接收与较慢存储器组中的页的使用相关的信息,且训练自学习预测引擎以基于所述信息产生与所述页的使用相关联的预测;
基于所述预测调整所述地址映射以改进所述处理装置在涉及所述第一存储器及所述第二存储器的存储器存取时的速度;及
根据对所述地址映射的调整交换所述第一存储器及所述第二存储器中的数据内容,其中从相关联于存取当前在所述第二存储器中的存储器位置的请求的应用程序、虚拟机、或其组合屏蔽相关联于所述第一存储器及所述第二存储器的特性或基于所述预测调整所述地址映射所导致的改变,其中响应于存取当前在所述第二存储器中的所述存储器位置的所述请求,所述存储器虚拟器响应于来自所述自学习预测引擎的所述预测在所述第一存储器的一部分中存取数据内容不如所述第二存储器的一部分频繁时,指示控制器在所述第一存储器的所述部分与所述第二存储器的所述部分之间交换数据内容;
其中所述第一存储器及所述第二存储器安置于相同存储器模块中,且所述存储器虚拟器包括运行于所述处理装置中的所述存储器模块的装置驱动程序。
2.根据权利要求1所述的计算系统,其中所述第一存储器比所述第二存储器快;且所述处理装置针对所述计算系统中的存储器存取请求的一部分经由所述至少一个总线存取所述第二存储器而不存取所述第一存储器。
3.根据权利要求1所述的计算系统,其中所述第一存储器比所述第二存储器快;所述第一存储器及所述第二存储器共享到所述总线的共同物理主机接口;所述总线是存储器总线;且所述存储器模块是双列直插存储器模块DIMM。
4.根据权利要求3所述的计算系统,其中所述存储器模块包含至少部分实施所述存储器虚拟器的控制器。
5.根据权利要求1所述的计算系统,其中在所述存储器模块内执行所述数据内容在所述第一存储器的所述部分与所述第二存储器的所述部分之间的交换,而不经过所述总线。
6.根据权利要求1所述的计算系统,其中在存取所述第二存储器中的所述存储器位置之后执行所述数据内容在所述第一存储器的所述部分与所述第二存储器的所述部分之间的所述交换。
7.根据权利要求3所述的计算系统,其中所述装置驱动程序在所述处理装置中运行以:
接收待由所述处理装置进行的存储器存取请求的地址;
基于所述地址映射将所述地址转换为经转换地址;及
根据所述经转换地址在所述总线上进行所述存储器存取请求。
8.根据权利要求3所述的计算系统,其中所述存储器虚拟器基于在一时段内存取第一数据比第二数据更频繁的确定来调整所述地址映射以将第一数据放置于所述第一存储器中且将所述第二数据放置于所述第二存储器中。
9.根据权利要求1所述的计算系统,其中所述第一存储器及所述第二存储器在相同存储器模块中;且所述第二存储器的至少一部分无法在所述至少一个总线上直接寻址。
10.根据权利要求9所述的计算系统,其中所述第一存储器是易失性动态随机存取存储器且所述第二存储器是非易失性交叉点存储器。
11.根据权利要求1所述的计算系统,其中所述第一存储器及所述第二存储器在经由相同存储器总线或经由各别通信通道耦合到中央处理单元的各别存储器模块中。
12.一种在计算机系统中执行的方法,所述方法包括:
在耦合到处理装置的至少一个总线上提供多个存储器组件,所述多个存储器组件包括第一存储器及第二存储器,其中所述第一存储器及所述第二存储器在经由所述至少一个总线存取时具有不同速度;
存储由所述处理装置用于存取存储器的第一地址与用于存取所述第一存储器及所述第二存储器的第二地址之间的地址映射;
监测所述第一存储器及所述第二存储器的使用,包括接收与较慢存储器组中的页的使用相关的信息,且训练自学习预测引擎以基于所述信息产生与所述页的使用相关联的预测;
基于所述使用调整所述地址映射以改进所述处理装置在涉及所述第一存储器及所述第二存储器的存储器存取时的速度;及
根据对所述地址映射的调整交换所述第一存储器及所述第二存储器中的数据内容,其中从相关联于存取当前在所述第二存储器中的存储器位置的请求的应用程序、虚拟机、或其组合屏蔽相关联于所述第一存储器及所述第二存储器的特性或基于所述预测调整所述地址映射所导致的改变,其中响应于存取当前在所述第二存储器中的所述存储器位置的所述请求,响应于来自所述自学习预测引擎的所述预测在所述第一存储器的一部分中存取数据内容不如所述第二存储器的一部分频繁而在所述第一存储器的所述部分与所述第二存储器的所述部分之间交换数据内容;
其中所述第一存储器及所述第二存储器安置于相同存储器模块中,且存储器虚拟器包括运行于所述处理装置中的所述存储器模块的装置驱动程序。
13.根据权利要求12所述的方法,其进一步包括
由超管理器产生用于预测所述第一存储器及所述第二存储器的所述使用的信息。
14.根据权利要求13所述的方法,其中所述信息包括以下中的至少一者:
在一时段中使用的页的序列;
将页从所述第二存储器加载到所述第一存储器的请求的例子;
从所述第二存储器加载到所述第一存储器的所述页的内容属性;
从所述第二存储器加载到所述第一存储器的所述页的所有权属性;
从所述第二存储器加载到所述第一存储器的所述页的用户的识别;
从所述第二存储器加载到所述第一存储器的识别应用程序;
在虚拟机中以循序模式存取的页的识别;
在用户帐户中以循序模式存取页的页的识别;及
处于稳态的页存取的识别。
CN201980011918.7A 2018-02-05 2019-01-18 用以存取异质存储器组件的存储器虚拟化 Active CN111684417B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862626491P 2018-02-05 2018-02-05
US62/626,491 2018-02-05
US16/054,719 2018-08-03
US16/054,719 US11416395B2 (en) 2018-02-05 2018-08-03 Memory virtualization for accessing heterogeneous memory components
PCT/US2019/014275 WO2019152224A1 (en) 2018-02-05 2019-01-18 Memory virtualization for accessing heterogeneous memory components

Publications (2)

Publication Number Publication Date
CN111684417A CN111684417A (zh) 2020-09-18
CN111684417B true CN111684417B (zh) 2023-11-24

Family

ID=67475639

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980011918.7A Active CN111684417B (zh) 2018-02-05 2019-01-18 用以存取异质存储器组件的存储器虚拟化

Country Status (6)

Country Link
US (2) US11416395B2 (zh)
EP (1) EP3750055A4 (zh)
KR (1) KR20200108359A (zh)
CN (1) CN111684417B (zh)
TW (1) TWI704457B (zh)
WO (1) WO2019152224A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US11176493B2 (en) * 2019-04-29 2021-11-16 Google Llc Virtualizing external memory as local to a machine learning accelerator
US11074182B2 (en) * 2019-08-22 2021-07-27 Micron Technology, Inc. Three tiered hierarchical memory systems
US11269780B2 (en) * 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
US10963396B1 (en) 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11650742B2 (en) * 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored
CN111143243B (zh) * 2019-12-19 2023-06-27 上海交通大学 一种基于nvm混合内存的缓存预取方法及系统
US11442631B2 (en) 2019-12-26 2022-09-13 Micron Technology, Inc. Memory operations with consideration for wear leveling
WO2024034752A1 (ko) * 2022-08-09 2024-02-15 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 증강현실 장치
KR20240057988A (ko) * 2022-10-25 2024-05-03 삼성전자주식회사 내구성이 높은 영구 스토리지 장치를 포함하는 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101645041A (zh) * 2006-03-29 2010-02-10 株式会社日立制作所 使用闪存的存储系统
CN102707899A (zh) * 2011-03-04 2012-10-03 索尼公司 虚拟存储器系统、虚拟存储器控制方法和程序
CN104903868A (zh) * 2012-12-10 2015-09-09 谷歌公司 使用虚拟到物理映射以与数据存储装置进行直接用户空间通信

Family Cites Families (156)

* 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> 低電力消費メモリ装置
JP3889044B2 (ja) 1995-05-05 2007-03-07 シリコン、グラフィクス、インコーポレイテッド 不均一メモリ・アクセス(numa)システムにおけるページ移動
US5909540A (en) 1996-11-22 1999-06-01 Mangosoft Corporation System and method for providing highly available data storage using globally addressable memory
US6148377A (en) 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
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
US6515917B2 (en) 2001-04-10 2003-02-04 International Business Machines Corporation Digital-to-analog converter (dac) for dynamic adjustment of off-chip driver pull-up and pull down impedance by providing a variable reference voltage to high frequency receiver and driver circuits for commercial memory
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
US8700724B2 (en) 2002-08-19 2014-04-15 Broadcom Corporation System and method for transferring data over a remote direct memory access (RDMA) network
US20040186960A1 (en) 2003-03-20 2004-09-23 Sun Microsystems, Inc. Computer processor data prefetch unit
JP4956922B2 (ja) 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
US20060095679A1 (en) 2004-10-28 2006-05-04 Edirisooriya Samantha J Method and apparatus for pushing data into a processor cache
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
US7631245B2 (en) 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7933923B2 (en) 2005-11-04 2011-04-26 International Business Machines Corporation Tracking and reconciling database commands
US7496711B2 (en) 2006-07-13 2009-02-24 International Business Machines Corporation Multi-level memory architecture with data prioritization
US8352709B1 (en) 2006-09-19 2013-01-08 Nvidia Corporation Direct memory access techniques that include caching segmentation data
CN101611387B (zh) * 2007-01-10 2013-03-13 移动半导体公司 用于增强外部计算设备的性能的自适应存储设备及方法
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 株式会社日立製作所 管理装置及び管理方法
US8375190B2 (en) 2007-12-11 2013-02-12 Microsoft Corporation Dynamtic storage hierarachy management
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 株式会社東芝 メモリシステム
US8412880B2 (en) 2009-01-08 2013-04-02 Micron Technology, Inc. Memory system controller to manage wear leveling across a plurality of storage nodes
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
US9009384B2 (en) * 2010-08-17 2015-04-14 Microsoft Technology Licensing, Llc Virtual machine memory management in systems with asymmetric memory
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
US8990538B2 (en) 2010-11-05 2015-03-24 Microsoft Corporation Managing memory with limited write cycles in heterogeneous memory systems
US8561065B2 (en) 2010-11-15 2013-10-15 International Business Machines Corporation Virtualization of vendor specific network interfaces of self-virtualizing input/output device virtual functions
KR20140041408A (ko) 2011-01-04 2014-04-04 콘두시브 테크놀로지스 코포레이션 저장 위치 속성 및 데이터 사용량 통계에 기초하여 데이터 저장을 위한 저장 위치 선택
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US8775731B2 (en) 2011-03-25 2014-07-08 Dell Products, L.P. Write spike performance enhancement in hybrid storage systems
US8930647B1 (en) * 2011-04-06 2015-01-06 P4tents1, LLC Multiple class memory systems
US9141528B2 (en) 2011-05-17 2015-09-22 Sandisk Technologies Inc. Tracking and handling of super-hot data in non-volatile memory systems
US20120297121A1 (en) 2011-05-17 2012-11-22 Sergey Anatolievich Gorobets Non-Volatile Memory and Method with Small Logical Groups Distributed Among Active SLC and MLC Memory Partitions
US9176864B2 (en) 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
US9047017B1 (en) 2011-12-20 2015-06-02 Emc Corporation Techniques for automated evaluation and movement of data between storage tiers
US10380022B2 (en) 2011-07-28 2019-08-13 Netlist, Inc. Hybrid memory module and system and method of operating the same
EP2761472B1 (en) 2011-09-30 2020-04-01 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 삼성전자주식회사 가상 메모리 관리 장치 및 방법
US9817761B2 (en) 2012-01-06 2017-11-14 Sandisk Technologies Llc Methods, systems, and computer readable media for optimization of host sequential reads or writes based on volume of data transfer
EP2791774A1 (en) * 2012-02-08 2014-10-22 Hitachi, Ltd. Storage apparatus with a plurality of nonvolatile semiconductor storage units and control method thereof to place hot data in storage units with higher residual life and cold data in storage units with lower residual life
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
US9201779B2 (en) 2012-06-27 2015-12-01 Hitachi, Ltd. Management system and management method
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
US9817739B1 (en) 2012-10-31 2017-11-14 Veritas Technologies Llc Method to restore a virtual environment based on a state of applications/tiers
CN104704569B (zh) 2012-12-19 2017-11-14 慧与发展有限责任合伙企业 Nvram路径选择
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
US9984089B2 (en) 2013-06-28 2018-05-29 Vmware, Inc. Techniques for implementing hybrid flash/HDD-based virtual disk files
US20150016046A1 (en) 2013-07-10 2015-01-15 Samsung Electronics Co., Ltd. Ina cabled memory appliance
US20150026509A1 (en) 2013-07-22 2015-01-22 Kabushiki Kaisha Toshiba Storage device having a data stream converter
US9619180B2 (en) 2013-07-29 2017-04-11 Silicon Graphics International Corp. System method for I/O acceleration in hybrid storage wherein copies of data segments are deleted if identified segments does not meet quality level threshold
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
US9122503B1 (en) 2013-09-05 2015-09-01 Symantec Corporation Systems and methods for adaptive throttling of input/output requests in a virtual environment
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
US9280456B2 (en) 2013-11-12 2016-03-08 Micron Technology, Inc. Mapping between program states and data patterns
US20150199276A1 (en) 2014-01-13 2015-07-16 Samsung Electronics Co., Ltd. Pre-fetch confirmation queue
KR20150089538A (ko) 2014-01-28 2015-08-05 한국전자통신연구원 인-메모리 데이터 관리 장치 및 인-메모리 데이터 관리 방법
US9588896B2 (en) * 2014-03-04 2017-03-07 Hitachi, Ltd. Computer and memory control method
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
JP6637906B2 (ja) 2014-05-08 2020-01-29 マイクロン テクノロジー,インク. ハイブリッドメモリキューブシステム相互接続ディレクトリベースキャッシュコヒーレンス方法
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
CN105574067B (zh) 2014-10-31 2020-01-21 株式会社东芝 项目推荐装置以及项目推荐方法
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 삼성전자주식회사 리프레쉬 동작을 관리하는 메모리 콘트롤러, 메모리 시스템 및 그 동작방법
US10645013B2 (en) 2015-04-02 2020-05-05 Nicira, Inc Data flow identifiers
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
US10114958B2 (en) * 2015-06-16 2018-10-30 Microsoft Technology Licensing, Llc Protected regions
US9639280B2 (en) 2015-06-18 2017-05-02 Advanced Micro Devices, Inc. Ordering memory commands in a computer system
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
US9535740B1 (en) 2015-08-26 2017-01-03 International Business Machines Corporation Implementing dynamic adjustment of resources allocated to SRIOV remote direct memory access adapter (RDMA) virtual functions based on usage patterns
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
US20170147427A1 (en) 2015-11-23 2017-05-25 Honeywell International, Inc. System and method for software simulation for testing a safety manager platform
US10394789B1 (en) 2015-12-07 2019-08-27 Amazon Technologies, Inc. Techniques and systems for scalable request handling in data processing systems
US10019372B2 (en) 2015-12-16 2018-07-10 Western Digital Technologies, Inc. Caching sensing device data in data storage device
US10719237B2 (en) 2016-01-11 2020-07-21 Micron Technology, Inc. Apparatuses and methods for concurrently accessing multiple partitions of a non-volatile memory
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
US20170285967A1 (en) 2016-03-29 2017-10-05 Samsung Electronics Co., Ltd. Multi-ware smart ssd
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
JP2018005446A (ja) 2016-06-30 2018-01-11 富士通株式会社 情報処理装置、ストレージ制御プログラム、及びストレージ制御方法
US10176099B2 (en) 2016-07-11 2019-01-08 Intel Corporation Using data pattern to mark cache lines as invalid
US11138160B2 (en) * 2016-07-13 2021-10-05 International Business Machines Corporation Application performance using multidimensional predictive algorithm for automated tiering mechanisms
US10083123B2 (en) * 2016-08-10 2018-09-25 Vmware, Inc. Page-fault latency directed virtual machine performance monitoring
US10866897B2 (en) 2016-09-26 2020-12-15 Samsung Electronics Co., Ltd. Byte-addressable flash-based memory module with prefetch mode that is adjusted based on feedback from prefetch accuracy that is calculated by comparing first decoded address and second decoded address, where the first decoded address is sent to memory controller, and the second decoded address is sent to prefetch buffer
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 財團法人工業技術研究院 資料存取系統、資料存取裝置及資料存取方法
US10866912B2 (en) 2017-03-10 2020-12-15 Toshiba Memory Corporation Integrated heterogeneous solid state storage drive
US11392488B2 (en) 2017-04-07 2022-07-19 Keysight Technologies Singapore (Sales) Pte. Ltd. Optimizing storage of application data in memory
US9910618B1 (en) 2017-04-10 2018-03-06 Pure Storage, Inc. Migrating applications executing on a storage system
US10666703B2 (en) 2017-05-09 2020-05-26 EMC IP Holding Company LLC De-multiplexing streaming data from a fast write ahead durable log into segments
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
US10298496B1 (en) 2017-09-26 2019-05-21 Amazon Technologies, Inc. Packet processing cache
KR102414047B1 (ko) 2017-10-30 2022-06-29 에스케이하이닉스 주식회사 통합 메모리 디바이스 및 그의 동작 방법
US10394706B2 (en) 2017-11-02 2019-08-27 Western Digital Technologies, Inc. Non-volatile storage with adaptive command prediction
US10572389B2 (en) 2017-12-12 2020-02-25 Advanced Micro Devices, Inc. Cache control aware memory controller
US20190196996A1 (en) 2017-12-21 2019-06-27 Advanced Micro Devices, Inc. Dynamically determining memory access burst length
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
US20190243771A1 (en) 2018-02-05 2019-08-08 Micron Technology, Inc. Accelerate Data Access in Memory Systems via Data Stream Segregation
US20190243787A1 (en) 2018-02-05 2019-08-08 Micron Technology, Inc. Memory Systems having Controllers Embedded in Packages of Integrated Circuit Memory
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10922221B2 (en) * 2018-03-28 2021-02-16 Micron Technology, Inc. Memory management
US10540100B2 (en) * 2018-04-10 2020-01-21 Western Digital Technologies, Inc. Mapping-based wear leveling for non-volatile memory
US20190370043A1 (en) * 2018-04-30 2019-12-05 Nutanix, Inc. Cooperative memory management
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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101645041A (zh) * 2006-03-29 2010-02-10 株式会社日立制作所 使用闪存的存储系统
CN102707899A (zh) * 2011-03-04 2012-10-03 索尼公司 虚拟存储器系统、虚拟存储器控制方法和程序
CN104903868A (zh) * 2012-12-10 2015-09-09 谷歌公司 使用虚拟到物理映射以与数据存储装置进行直接用户空间通信

Also Published As

Publication number Publication date
US20190243756A1 (en) 2019-08-08
US11416395B2 (en) 2022-08-16
EP3750055A4 (en) 2021-06-02
EP3750055A1 (en) 2020-12-16
CN111684417A (zh) 2020-09-18
WO2019152224A1 (en) 2019-08-08
TWI704457B (zh) 2020-09-11
US20220398194A1 (en) 2022-12-15
TW201935250A (zh) 2019-09-01
KR20200108359A (ko) 2020-09-17

Similar Documents

Publication Publication Date Title
CN111684417B (zh) 用以存取异质存储器组件的存储器虚拟化
CN111684434B (zh) 多层存储器系统中的预测数据协作
US11573901B2 (en) Predictive paging to accelerate memory access
US10880401B2 (en) Optimization of data access and communication in memory systems
US11977787B2 (en) Remote direct memory access in multi-tier memory systems
CN112470113B (zh) 存储器系统中的隔离性能域
CN111684435B (zh) 实施于存储器系统中的通过消息传递接口的存储器存取通信
CN114631076A (zh) 加载命令的生存时间

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