CN111684434B - 多层存储器系统中的预测数据协作 - Google Patents

多层存储器系统中的预测数据协作 Download PDF

Info

Publication number
CN111684434B
CN111684434B CN201980011914.9A CN201980011914A CN111684434B CN 111684434 B CN111684434 B CN 111684434B CN 201980011914 A CN201980011914 A CN 201980011914A CN 111684434 B CN111684434 B CN 111684434B
Authority
CN
China
Prior art keywords
memory
data
access request
processing device
movement
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
CN201980011914.9A
Other languages
English (en)
Other versions
CN111684434A (zh
Inventor
S·米塔尔
A·拉伊
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 CN111684434A publication Critical patent/CN111684434A/zh
Application granted granted Critical
Publication of CN111684434B publication Critical patent/CN111684434B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • 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
    • G06F13/1668Details of memory controller
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3447Performance evaluation by modeling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • 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
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • 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/1021Hit rate improvement
    • 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/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host 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/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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

Landscapes

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

Abstract

本发明涉及一种具有不同层的存储器组件的计算系统。所述计算系统进一步包含控制器,所述控制器可操作地耦合于处理装置与所述存储器组件之间以:从所述处理装置接收引起跨所述存储器组件中的所述层的第一数据移动的第一数据存取请求;在所述第一数据移动之后服务所述第一数据存取请求;通过在经由机器学习训练的预测模型中应用从所述处理装置接收的数据使用信息而预测跨所述存储器组件中的所述层的第二数据移动;及在接收第二数据存取请求之前执行所述第二数据移动,其中所述第二数据移动减少由所述第二数据存取请求引起的跨所述层的第三数据移动。

Description

多层存储器系统中的预测数据协作
相关申请案
本申请案主张于2018年8月3日申请且标题为“多层存储器系统中的预测数据协作(Predictive Data Orchestration in Multi-Tier Memory Systems)”的序列号为16/054,819的美国专利申请案及于2018年2月5日申请且标题为“两层存储器系统中的预测数据协作(Predictive Data Orchestration in Two Tier Memory Systems)”的序列号为62/626,347的临时美国专利申请案的申请日期的权益,所述申请案的全部揭示内容特此以引用的方式并入本文中。
本申请案涉及于2018年7月11日申请且标题为“用以加速存储器存取的预测性分页(Predictive Paging to Accelerate Memory Access)”的序列号为16/032,331的美国专利申请案、于2018年7月13日申请且标题为“存储器系统中的隔离性能域(IsolatedPerformance Domains in a Memory System)”的序列号为16/035,469的美国专利申请案及于2018年8月3日申请且标题为“用于存取异质存储器组件的存储器虚拟化(MemoryVirtualization for Accessing Heterogeneous Memory Components)”的序列号为16/054,719的美国专利申请案,所述申请案的全部揭示内容特此以引用的方式并入本文中。
技术领域
本文中揭示的至少一些实施例大体上涉及存储器系统,且更特定来说(但非限制地)涉及多层存储器系统中的预测数据协作。
背景技术
存储器子系统可为存储器模块,例如双列直插存储器模块(DIMM)、小型DIMM(SO-DIMM)或非易失性双列直插存储器模块(NVDIMM)。存储器子系统可为存储系统,例如固态硬盘(SSD)或硬盘机(HDD)。存储器子系统可包含存储数据的一或多个存储器组件。存储器组件可为例如非易失性存储器组件及易失性存储器组件。存储器组件的实例包含存储器集成电路(IC)。一些存储器集成电路是易失性的且需要电力来维持经存储数据。一些存储器集成电路是非易失性的且甚至在未被供电时仍可保留经存储数据。非易失性存储器的实例包含快闪存储器、只读存储器(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)。在一些实施例中,存储器子系统是提供存储器功能及存储功能两者的混合存储器/存储子系统。一般来说,主机系统可利用包含一或多个存储器组件的存储器子系统。主机系统可提供待存储于存储器子系统处的数据且可请求待从存储器子系统检索的数据。
常规系统可具有其中通过较快存储器存取较慢存储器的高速缓存结构。当处理器存取当前在较慢存储器中的数据时,将数据加载到较快存储器作为较慢存储器中的数据的代理。随后,处理器操作较快存储器中的数据的代理/高速缓存以改进性能。较快存储器通常具有小于较慢存储器的容量。因此,可在较快存储器中同时高速缓存较慢存储器中的数据的仅一部分。当由处理器存取的项当前不在较快存储器中时,发生高速缓存未命中。当由处理器存取的项当前在较快存储器中时,发生高速缓存命中。导致高速缓存命中的存取的百分比是高速缓存命中率。改进高速缓存命中率可改进计算系统的操作性能。然而,设计高速缓存策略以改进高速缓存命中率是一项挑战。
本发明的至少一些方面通过使用机器学习技术执行跨不同存储器层的预测数据移动而解决上述及其它缺陷。不同层的存储器可具有不同数据存取速度。例如,为改进计算系统的操作性能,可将频繁使用的数据放置于较快存储器中;且可将不太频繁使用的数据放置于较慢存储器中。较快存储器可任选地配置为较慢存储器的高速缓存。在一些例子中,可直接存取较慢存储器的至少一部分而不经过作为高速缓存的较快存储器。可在使用机器学习技术训练的预测模型中应用数据使用信息,以预测工作负荷企图及因此跨不同层的存储器的数据移动。例如,数据使用信息可包含数据存取的历史及与数据存取相关的属性,例如使用数据的应用程序或程序、其中进行数据存取的用户帐户、存取数据的虚拟机、数据所属的对象、如应用程序中组织的数据块到对象之间的映射、对象当中的关系等。可事先执行根据数据使用信息预测的数据移动以改进计算系统的操作性能。最初可使用历史数据使用信息及由与数据使用信息相关联的数据存取引起的历史数据移动脱机地训练预测模型。所述训练最小化历史数据移动与通过在预测模型中应用历史数据使用信息而产生的预测之间的差异。随后,预测模型可用于使用实时数据使用信息进行实时预测。执行预测数据移动可减少响应于数据存取请求而移动数据的需要。由实时数据存取请求引起的数据移动及/或预测数据移动是否减少跨层移动数据的需要的指示可用于识别所要的实时预测结果。所要结果可使用加强机器学习技术进一步训练预测模型以持续改进及调适预测模型。预测模型可在计算系统的实时使用中动态地调适到当前工作负荷。
图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包含存储器子系统110中的数据协作器113,数据协作器113可在较快存储器(例如,109A)与较慢存储器(例如,109N)之间执行预测数据移动。在一些实施例中,存储器子系统110中的控制器115包含数据协作器113的至少一部分。在其它实施例中或组合地,主机系统120中的控制器116及/或处理装置118包含数据协作器113的至少一部分。例如,控制器115、控制器116及/或处理装置118可包含实施数据协作器113的逻辑电路系统。例如,控制器115或主机系统120的处理装置118(处理器)可经配置以执行存储于存储器中的指令而执行本文中描述的数据协作器113的操作。在一些实施例中,在安置于存储器子系统110中的集成电路芯片中实施数据协作器113。在其它实施例中,数据协作器113是主机系统120的操作系统、装置驱动程序或应用程序的部分。
数据协作器113可预测跨不同存储器层(较快存储器(例如,109A)及较慢存储器(例如,109N))的数据使用及移动。应用程序可循序地存取某些数据;且某些对象可一起使用。因此,在用户帐户、应用程序、虚拟机中使用数据项作为对象的部分可指示随后使用另一相关数据项。在存取相关数据项之前,数据协作器113可指示控制器115重新布置数据项在存储器子系统110中的物理存储位置,使得在主机系统120的处理装置118存取相关数据项之时,所述数据项已在较快存储器(例如,109A)中。因此,改进计算系统的操作性能。可经由人工神经网络实施数据协作器113的预测模型,所述人工神经网络最初可使用历史数据存取记录脱机地训练,且接着在实时使用中使用实时数据存取记录持续训练。下文描述关于数据协作器113的操作的另外细节。
在一个实例中,中央处理单元(CPU)可存取提供于连接到CPU的一或多个存储器系统中的两组存储器。例如,一组存储器可比另一组存储器慢;且中央处理单元(CPU)可经配置以使用分页技术来经由较快存储器组存取较慢存储器组。较快存储器组可用作较慢存储器组的高速缓存。例如,一组存储器无法通过CPU直接寻址且耦合到可由CPU直接寻址的另一组存储器;且中央处理单元(CPU)可经配置以依类似于使用分页技术的方式存取无法经由可直接寻址的存储器组直接寻址的一组存储器。可直接存取的存储器组可用作无法直接存取的存储器组的高速缓存。
当较快存储器用作较慢存储器的高速缓存时,存储于较快存储器中的数据在较慢存储器中具有对应复本。当较快存储器变化时,较慢存储器中的对应复本变得过时。较快存储器中的变化内容将刷新到较慢存储器以进行更新。
替代地,在一些例子中,可存取较慢存储器中的内容而不经过较快存储器;且较快存储器中的内容可能在较慢存储器中不具有对应复本。可动态地改变较慢存储器及较快存储器中的内容分布以优化当前工作负荷的操作性能。在此情境中,为跟踪高速缓存命中率,可仍将较快存储器视为高速缓存。例如,如果正在存取的数据项是由较快存储器服务,那么计数高速缓存命中;且如果正在存取的数据项是由较慢存储器服务,那么计数高速缓存未命中。
在一些例子中,存储器虚拟器可在存储器组件的装置驱动程序中实施以虚拟化对不同层的存储器的存储器存取,而从应用程序及/或虚拟机屏蔽存储器组件109A到109N的差异。存储器虚拟器自动调整跨不同层的存储器的数据存储位置,以优化计算系统的性能。可在于2018年8月3日申请且标题为“用于存取异质存储器组件的存储器虚拟化(MemoryVirtualization for Accessing Heterogeneous Memory Components)”的序列号为16/054,719的美国专利申请案中找到存储器虚拟器的一些细节及实例。
当正在存取的数据项在较慢存储器组中但不在较快存储器组中时,可在较慢存储器组中直接存取所述数据项,或将所述数据项交换到较快存储器组以在较快存储器组中存取或高速缓存于较快存储器组中。如果通过数据协作器113预测存取数据项的工作负荷,那么数据协作器113指示控制器115在数据存取之前将数据项交换到较快存储器组或将数据项高速缓存于较快存储器组中。在根据工作负荷预测执行数据移动之后,可在存取数据项时由较快存储器组伺服数据存取。由于数据存取是由较快存储器组服务,所以完成数据存取的时间比由较慢存储器组服务、或交换到较快存储器组以服务、或将数据从较慢存储器组加载到较快存储器组以进行高速缓存且接着服务的时间短。
例如,当正在存取的虚拟存储器页当前在较慢存储器组中但不在较快存储器组中时,可从较快存储器组分配页以服务较慢存储器组中的所述页;且可从较慢存储器组提取所述页的数据且将其存储于较快存储器组中的经分配页中,使得可在后续操作中经由存取较快存储器组中的经分配页而进行对虚拟存储器的所述页的数据存取。
在一些例子中,交换页比简单地从较慢存储器存取经请求数据元件花费的时间长。因此,首先使经请求数据元件服务于请求者,同时执行页交换以加速对热页中的数据元件的后续存取。因此,总体性能比保持对数据元件的请求直到完成页交换更佳。
此外,与较慢存储器组中的页的使用相关的信息可用于在预测页的使用时训练自学习预测引擎。例如,可使用监督式机器学习技术以使用信息训练人工神经网络,以通过减小预测与页的实际使用之间的误差而预测较慢存储器组中的页的使用。在训练人工神经网络之后,预测引擎可使用当前信息来预测接下来的待使用页。此外,可以连续方式执行训练、预测及来自预测后实际使用的用于进一步训练的反馈,以将人工神经网络的预测模型调适到存储器页的最新使用模式。
响应于即将使用较慢存储器组中的页的存储器使用预测,数据协作器113可指示控制器115主动将数据页从较慢存储器组交换或高速缓存到较快存储器组,使得当需要处理时,数据页已在较快存储器组中,所述布置改进数据页的数据存取速度。
可针对后续实际页使用测量预测的准确度;且预测及后续实际页使用可用于进一步训练或调整人工神经网络以跟踪存储器页的最新使用模式。
替代地或组合地,可用基于策略的预测规则取代或扩充基于机器学习的预测。例如,存储驻留代码(例如,在较低地址中)的页可在可能时维持在较快存储器组中以减少频繁使用页的交换。例如,当正在存取作为巨型页的一部分的页时,可将所述巨型页加载到较快存储器组中。例如,可至少部分使用启发式规则来基于以下指示(例如是循序地还是随机地存取页、数据存取是处于稳态模式还是处于丛发模式及/或页之间的逻辑关系(及不同大小的页))进行预测。
可在于2018年7月11日申请且标题为“用以加速存储器存取的预测性分页(Predictive Paging to Accelerate Memory Access)”的序列号为16/032,331的美国专利申请案中找到关于预测技术的一些细节及实例。
图2展示根据本文中揭示的至少一些实施例的计算系统,其具有不同存储器层中的嵌入式控制器及用于加速数据存取的数据协作器。
图2的计算系统包含主机系统120、经由存储器总线203连接到主机系统120的存储器模块205,及经由互连207连接到存储器模块205的存储装置209。存储装置209及/或存储器模块205是图1中说明的存储器子系统110的实例。
主机系统120具有处理装置118,处理装置118可为中央处理单元或具有一或多个处理核心的微处理器。主机系统120可具有存储器管理单元213及高速缓存211。存储器管理单元213及/或高速缓存211的至少一部分可任选地集成于处理装置118的相同集成电路封装内。
图2中说明的存储器模块205具有多种类型的存储器(例如,221及223)。例如,A型存储器221比B型存储器223快。
例如,存储器总线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的地址部分的大小限制)。
数据协作器113可指示存储器模块205中的控制器X 227在存储器模块205内的A型存储器221与B型存储器223之间执行数据传送/移动,特别是在存储器模块205的B型存储器223无法使用存储器总线203直接寻址时。
此外,数据协作器113可指示存储器模块205中的控制器X 227与存储装置209中的控制器Y 229通信,以在存储装置209中的存储器223到225之间及/或在存储装置209与存储器模块205之间执行数据传送/移动。
在一个变体中,存储器模块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)耦合到存储器子系统(例如,205、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总线。
在一些例子中,互连207连接到主机系统120而未经过存储器模块205及/或存储器总线203。当存储装置209耦合到主机系统120而未经过存储器模块205时,可在存储装置209中以类似于存储器模块205中的数据协作器113的方式实施数据协作器113。
在一些例子中,可至少部分在主机系统120中实施数据协作器113。
一般来说,处理装置118、控制器227及/或数据协作器113可执行一或多个操作系统以提供服务,包含加速存储器存取,其中使用分页技术及/或存储器映射接口经由计算机系统中的存储器的一部分存取计算机系统中的存储器的另一部分,如下文进一步论述。
图3展示具有数据协作器113的系统。例如,可在图1或2的计算机系统中实施图3的系统。
图3的系统包含可在图1或2的计算机系统的处理装置118中运行的主机操作系统241。主机操作系统241包含使用存储器子系统(例如存储器模块205及/或存储装置209)的存储器(例如,221、...、223、...、225)提供存储器服务的一或多个装置驱动。
主机操作系统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)。
在图3中,超管理器245经配置以使用单根I/O虚拟化来组织不同特性/属性的数据串流。例如,存储器模块205具有可实施多个虚拟功能(例如,247)的物理功能246。虚拟功能247经由物理功能246提供存储器模块205的服务。超管理器245分配且保留虚拟功能247以供特定虚拟机249、特定应用程序(例如,251或253)、特定用户帐户等进行存储器存取。因此,用于存取存储器模块205的虚拟功能247的识别可用于推断数据存取的数据使用信息,例如虚拟机249、应用程序251及/或相关联于及/或负责使用虚拟功能247进行的数据存取的用户帐户的识别。在机器学习时,可在数据协作器113中使用此信息来预测数据工作负荷及/或移动且进行实时预测。
例如,可训练数据协作器113以在实际请求较慢存储器中的数据项以供虚拟机249、运行于虚拟机中的应用程序251及/或操作应用程序251的用户帐户使用之前预测数据项的使用且将数据项加载到较快存储器中。所述预测通过在使用数据项的请求到达存储器模块205之前将所述项加载、传送及/或高速缓存到较快存储器中而减少请求使用所述项与所述项在较快存储器中可用之间的时间,此加速页的数据存取。
例如,较慢存储器可为存储器模块205中的存储器223,且较快存储器是相同存储器模块205(或与存储器模块205连接到相同存储器总线203的另一存储器模块)中的存储器221。
例如,较慢存储器可为存储装置209中的存储器223;且较快存储器可为存储器模块205中的相同类型的存储器223、或存储器模块205中的存储器221。
例如,较慢存储器可为存储装置209中的存储器225;且较快存储器可为相同存储装置209或连接到互连207的另一存储装置中的存储器223、或存储器模块205中的存储器(例如,223或221)。
优选地,在相同存储器子系统内(例如在相同存储器模块205、相同存储装置209或存储器模块205及存储装置209的相同组合内)执行预测数据移动,以避免或减少连接到处理装置118的通信通道(例如存储器总线203及/或互连207)中的拥塞。例如,可执行预测数据移动以在存储器模块205中的控制器227的控制下,响应于来自数据协作器113的一或多个命令、请求或指令而将数据从存储器模块205中的较慢存储器223复制到存储器模块205中的较快存储器221。例如,可执行预测数据移动以在存储装置209中的控制器229的控制下,响应于来自数据协作器113的一或多个命令、请求或指令而将数据从存储装置209中的较慢存储器225复制到存储装置209中的较快存储器223。例如,可执行预测数据移动以在控制器227及存储装置209中的控制器229的控制下,响应于来自数据协作器113的一或多个命令、请求或指令而将数据从存储装置209复制到存储器模块205。
在一个实施例中,超管理器245不仅请求装置驱动程序存取存储器子系统(例如,存储器模块205或存储装置209)中的存储器(例如,221、...、223、...或225),而且对装置驱动程序提供信息,所述信息可用于预测存储器(例如,221、...、223、...或225)中的哪些数据项可能在后续时段中使用及存储器(例如,221、...、223、...或225)中的哪些数据项不太可能在后续时段中使用。可至少部分经由使用与特定数据使用属性(例如虚拟机249、应用程序251、用户帐户等)预先关联的虚拟功能(例如,247)提供信息。
例如,可能使用的页可被称为热页;且不太可能使用的页可被称为冷页。在后续时段中使用页的可能性可称为页温度。数据协作器113使用由超管理器245提供/识别的信息来预测页温度、将冷页从较快存储器移动到较慢存储器,且将热页从较慢存储器移动到较快存储器以优化存储器(例如,221、...、223、...或225)中的页的分布且加速数据存取。
由超管理器245提供且由数据协作器113用来进行预测的信息的实例包含:在先前时段中使用的页的序列、将页从较慢存储器加载到较快存储器的请求的例子、页的内容属性、页的所有权属性、页的用户或应用程序的识别、是否在虚拟机及/或用户帐户中以循序模式存取页的指示、页存取是否处于稳态的指示、所使用的页是否与巨型页相关联的指示、数据块与对象之间的映射等。
图4说明数据协作器113的实施方案。
在图4中,数据协作器113包含高速缓存控制器273及工作负荷辨识器263。工作负荷辨识器263包含可使用人工神经网络实施的预测模型265。
高速缓存控制器273处理来自主机系统120的数据存取请求271。高速缓存控制器273监测相对于较低性能存储器用作高速缓存的较高性能存储器、分析高速缓存的使用、优化高速缓存的使用且管理高速缓存的使用。可在高速缓存控制器273中实施常规高速缓存技术。
响应于数据存取请求271,高速缓存控制器273确定在请求271之时由请求271设为目标的数据是否在较高性能存储器中。如果如此,那么高速缓存控制器273将对应数据存取请求271计数为高速缓存命中;且否则,高速缓存控制器273将对应数据存取请求271计数为高速缓存未命中。因此,高速缓存控制器273可在数据存取请求271之时产生用于数据分布的高速缓存命中率275的测量。
任选地,高速缓存控制器273可直接由较低性能存储器服务数据存取请求271的一部分,而未将对应数据高速缓存/加载到较高性能存储器中。
使用高速缓存控制器273的高速缓存策略可用于识别由高速缓存控制器273实施的数据移动277。
在用于训练预测模型265的计算系统的操作的初始时段内收集对应于数据存取请求271的数据使用信息261。例如,可使用监督式机器学习技术来训练预测模型265的人工神经网络以最小化由高速缓存控制器273响应于数据存取请求271而实施的数据移动277与使用预测模型265使用对应于数据存取请求271的数据使用信息261预测的数据移动269之间的差异。可在另一计算装置上脱机地执行机器学习以建立初始预测模型265。
随后,可在工作负荷辨识器263中使用预测模块265来基于实时数据使用信息261及实时数据存取请求271实时预测数据移动269。工作负荷辨识器263指示高速缓存控制器273执行预测数据测量,此可引起高速缓存命中率275的变化。使用混合加强机器学习技术实时调整及/或训练预测模型265以持续提高高速缓存命中率275。因此,预测模型265可自动调适到计算系统的当前工作负荷且实施预测数据移动269以实现高于单独经由高速缓存控制器273可实现的高速缓存命中率的高速缓存命中率275。
优选地,由工作负荷辨识器263进行的预测至少部分基于块到对象映射267。针对数据使用信息261的统计分析,数据协作器113可识别数据块当中的潜在关系。例如,一些数据块表示应用程序中的相同数据对象的部分;在一起存取数据对象的部分;一些数据对象具有以特定顺序存取的模式;在于虚拟机上运行应用程序的用户帐户中存取一个数据对象可具有导致存取另一数据对象的高可能性。块到对象映射267识别改进工作负荷辨识器263的预测准确度的关系。
图5展示预测数据协作的方法。图5的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实施例中,图5的方法至少部分由图1、2、3或4的数据协作器113执行。尽管以特定序列或顺序展示,然除非另有指定,否则可修改过程的顺序。因此,所说明实施例应仅被理解为实例,且所说明过程可依不同顺序执行,且一些过程可并行执行。另外,在各个实施例中,可省略一或多个过程。因此,并非每个实施例都需要全部过程。其它过程流程是可能的。
例如,可在图1或2的计算系统中运用图3的主机操作系统241、图4的预测模型265来实施图5的方法。例如,数据协作器113可至少部分经由图4的高速缓存控制器273及工作负荷辨识器263及/或图3的虚拟功能247实施。
在框301,数据协作器113从处理装置118接收引起跨存储器组件层的第一数据移动的第一数据存取请求。
例如,不同层的存储器组件(例如,图1中的109A到109N、图3中的221到223及/或到225)可具有第一存储器及第二存储器,其中第一存储器用作第二存储器的高速缓存。例如,第一存储器可为易失性动态随机存取存储器;且第二存储器可为非易失性交叉点存储器。在一些例子中,第一存储器及第二存储器容置于相同存储器子系统中,例如一存储器模块205或存储装置209。在其它例子中,第一存储器及第二存储器可容置于可在不涉及主机系统120及/或存储器总线203的情况下彼此通信的各别的相同存储器子系统中。
当处理装置118存取第二存储器时,存取请求引起在第一存储器中高速缓存正在存取的第二存储器的部分。在其它例子中,第一存储器未用作第二存储器的高速缓存;且响应于存取在第二存储器中的数据项的请求,数据协作器113基于一组策略或规则确定是否将数据项的存储位置从第二存储器改变为第一存储器;且如果如此,那么数据协作器113可将数据项从第二存储器交换到第一存储器。
在框303,数据协作器113响应于第一数据存取请求而执行第一数据移动。
例如,可结合与第一数据存取请求相关联的数据使用信息来记录响应于第一数据存取请求而执行/实施的第一数据移动。例如,数据使用信息可识别在一时段内使用数据块的序列、将数据块从第二存储器加载到第一存储器的请求的例子、从第二存储器加载到第一存储器的数据块的内容属性、从第二存储器加载到第一存储器的数据块的所有权属性、从第二存储器加载到第一存储器的数据块的用户的识别、引起将数据块从第二存储器加载到第一存储器的应用程序的识别、在虚拟机中以循序模式存取的数据块的识别、在用户帐户中以循序模式存取的数据块的识别,及/或处于稳态的数据存取哦识别。
第一数据移动可用作使用与第一数据存取请求相关联的数据使用信息进行预测的预测模型265的所要预测结果。例如,预测模型265具有人工神经网络,所述人工神经网络可使用监督式机器学习技术训练以减少第一数据移动与使用相关联于第一数据存取请求的数据使用信息进行的预测之间的差异。任选地,可使用单独计算机及关于第一数据存取请求的经记录信息、由第一数据存取请求引起的第一数据移动及第一数据存取之前的数据使用信息来脱机地执行对人工神经网络的初始训练。例如,数据协作器113可将经记录信息存储于由数据协作器113控制的存储器的一部分中;且另一处理装置118可存取存储器的部分以对数据协作器113执行初始训练。或者,可在数据协作器113中执行对人工神经网络的初始训练,直到预测模型265的预测准确度达到阈值水平。
在框305,存储器子系统110(例如,存储器模块205及/或存储装置209)在第一数据移动之后服务第一数据存取请求。可通过在对应数据存取请求之前预测数据移动及执行预测数据移动而改进计算系统的性能。
在框307,数据协作器113从处理装置118接收数据使用信息261。
在框309,数据协作器113基于数据使用信息261及经由机器学习训练的预测模型265来预测跨存储器组件中的层的第二数据移动269。
在框311,数据协作器113在接收第二数据存取请求271之前执行第二数据移动269。第二数据移动269减少由第二数据存取请求引起的跨层数据移动。
数据协作器113可任选地基于在由处理装置118服务第二数据存取请求时对多个存储器组件的性能测量及/或由第二数据存取请求引起的数据移动来进一步训练预测模型。
例如,性能测量可为通过数据协作器113测量的第二数据存取请求的高速缓存命中率。例如,处理装置118对第二存储器中的数据的请求可引起经请求数据从第二存储器到第一存储器的移动;可将此类移动计数为高速缓存未命中;且可将未引起此类移动的数据存取请求计数为高速缓存命中。数据协作器113可使用混合加强学习技术来训练预测模型265以提高高速缓存命中率、减少高速缓存未命中计数,及/或匹配预测与从数据存取请求识别的所要数据移动。
例如,数据协作器113可实施为以场可编程门阵列(FPGA)或专用集成电路(ASIC)的形式安置于存储器模块或存储装置上的集成电路芯片中的控制器。数据协作器113至少部分基于其中使用数据存取请求的虚拟功能(例如,247)的识别来获得数据使用信息261。例如,不同虚拟功能(例如,247)可用于表示一时段内的数据使用信息的不同组合,例如虚拟机、应用程序、用户帐户、数据存取模式等。
任选地,数据协作器113进一步执行对数据存取请求271及数据使用信息261的统计分析,以识别多个存储器组件中的数据块与如运行于处理装置中的应用程序中所组织的数据对象之间的映射。使用与预测模型265的映射可改进数据协作器113的预测准确度。
优选地,在不经过通过数据协作器113使用以与主机系统120通信的总线(例如,203)的情况下执行预测数据移动269。
在一些实施方案中,处理装置118与存储器子系统之间的通信通道包含计算机网络,例如局域网络、无线局域网络、无线个人局域网络、蜂窝通信网络、宽带高速始终连接的无线通信连接(例如,当前或下一代移动网络链路);且处理装置118及存储器子系统可经配置以使用类似于NVMe协议中的数据存储管理及使用命令的数据存储管理及使用命令来彼此通信。
存储器子系统一般可具有非易失性存储媒体。非易失性存储媒体的实例包含形成于集成电路中的存储器单元及涂覆于硬磁盘上的磁性材料。非易失性存储媒体可在未消耗电力的情况下维持存储于其中的数据/信息。存储器单元可使用各种存储器/存储技术实施,例如NAND逻辑门、NOR逻辑门、相变存储器(PCM)、磁性存储器(MRAM)、电阻式随机存取存储器、交叉点存储及存储器装置(例如,3D XPoint存储器)。交叉点存储器装置使用无晶体管的存储器元件,所述存储器元件中的每一者具有在一起堆叠为一列的存储器单元及选择器。存储器元件列经由两层垂直线敷设(lay of wires)连接,其中一层敷设在存储器元件列上方且另一层敷设在存储器元件列下方。可在两个层中的每一者上的一条线的交叉点处个别地选择每一存储器元件。交叉点存储器装置是快速的且非易失性的,且可用作用于处理及存储的统一存储器集区。
存储器子系统(例如,205或209)的控制器(例如,227或229)可运行固件以响应于来自处理装置118的通信而执行操作。固件一般为提供对工程计算装置的控制、监测及数据操纵的一类型的计算机程序。
涉及控制器227的操作的一些实施例可使用由控制器227执行的计算机指令(例如控制器227的固件)来实施。在一些例子中,硬件电路可用于实施至少一些功能。固件最初可存储于非易失性存储媒体或另一非易失性装置中,且加载到易失性DRAM及/或处理器内高速缓存中以由控制器227执行。
非暂时性计算机存储媒体可用于存储存储器子系统(例如,209或205)的固件的指令及/或一般来说操作系统(例如,241、243)以及特定来说装置驱动程序及超管理器245的指令。当通过控制器227及/或处理装置118执行指令时,指令引起控制器227及/或处理装置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 (15)

1.一种计算系统,其包括:
处理装置;
不同层的多个存储器组件;及
控制器,其可操作地耦合于所述处理装置与所述多个存储器组件之间以:
从所述处理装置接收第一数据存取请求,所述第一数据存取请求引起跨所述存储器组件中的所述层的第一数据移动;
响应于所述第一数据存取请求而执行所述第一数据移动;
在所述第一数据移动之后服务所述第一数据存取请求;
从所述处理装置接收数据使用信息;
基于所述数据使用信息及经由机器学习训练的预测模型来预测跨所述存储器组件中的所述层的第二数据移动;及
在接收第二数据存取请求之前执行所述第二数据移动,所述第二数据移动减少由所述第二数据存取请求引起的第三数据移动。
2.根据权利要求1所述的计算系统,其中所述数据使用信息识别:
在一时段中使用的数据块的序列;
将数据块从第二存储器加载到第一存储器的请求的例子;
从所述第二存储器加载到所述第一存储器的数据块的内容属性;
从所述第二存储器加载到所述第一存储器的数据块的所有权属性;
从所述第二存储器加载到所述第一存储器的数据块的用户的识别;
引起将数据块从所述第二存储器加载到所述第一存储器的应用程序的识别;
在虚拟机中以循序模式存取的数据块的识别;
在用户帐户中以循序模式存取的数据块的识别;或
处于稳态的数据存取的识别。
3.根据权利要求1所述的计算系统,其中所述控制器进一步可操作地:
在服务来自所述处理装置的数据存取请求时基于所述多个存储器组件的性能测量调整所述预测模型。
4.根据权利要求3所述的计算系统,其中所述多个存储器组件包含第一存储器及第二存储器;所述第一存储器用作所述第二存储器的高速缓存。
5.根据权利要求4所述的计算系统,其中所述性能测量是数据存取请求的高速缓存命中率;且所述处理装置对所述第二存储器中的数据的请求引起经请求的所述数据从所述第二存储器到所述第一存储器的移动。
6.根据权利要求5所述的计算系统,其中所述控制器使用混合加强学习技术通过调整人工神经网络以产生改进在所述控制器处针对所述处理装置的所述请求测量的所述高速缓存命中率的预测而调整所述预测模型。
7.根据权利要求6所述的计算系统,其中所述控制器经由存储器总线与所述处理装置通信;所述控制器安置于存储器模块上;所述多个存储器组件安置于所述存储器模块上;且所述第一数据移动及所述第二数据移动未经过所述存储器总线。
8.根据权利要求7所述的计算系统,其中所述多个存储器组件的一部分不在所述存储器模块上。
9.根据权利要求4所述的计算系统,其中所述第一存储器是易失性动态随机存取存储器且所述第二存储器是非易失性交叉点存储器;且所述控制器包括场可编程门阵列FPGA或专用集成电路ASIC。
10.根据权利要求1所述的计算系统,其中所述控制器进一步可操作地:
识别所述多个存储器组件中的数据块与如运行于所述处理装置中的应用程序中所组织的数据对象之间的映射。
11.一种用于计算装置的方法,所述方法包括:
在计算装置中从耦合到不同层的多个存储器组件的处理装置接收第一数据存取请求,所述第一数据存取请求引起跨所述存储器组件中的所述层的第一数据移动;
由所述计算装置响应于所述第一数据存取请求而执行所述第一数据移动;
在所述第一数据移动之后服务所述第一数据存取请求;
在所述计算装置中从所述处理装置接收数据使用信息;
由所述计算装置基于所述数据使用信息及经由机器学习训练的预测模型来预测跨所述存储器组件中的所述层的第二数据移动;及
由所述计算装置在接收第二数据存取请求之前执行所述第二数据移动,所述第二数据移动减少由所述第二数据存取请求引起的第三数据移动。
12.根据权利要求11所述的方法,其中所述预测模型包括人工神经网络;且所述方法进一步包括:
基于所述第一数据移动及与所述第一数据存取请求相关联的数据使用信息训练所述预测模型。
13.根据权利要求12所述的方法,其进一步包括:
在脱机执行的所述训练之后提供所述预测模型,其中针对所述第二数据存取请求实时执行所述预测。
14.根据权利要求12所述的方法,其进一步包括:
基于由所述第二数据存取请求引起的所述第三数据移动及用于预测所述第二数据移动的所述数据使用信息来进一步训练所述预测模型。
15.根据权利要求11所述的方法,其进一步包括:
分析数据使用信息以对一起用于识别数据块与数据对象之间的映射的数据块分组,其中所述预测至少部分基于所述映射。
CN201980011914.9A 2018-02-05 2019-01-16 多层存储器系统中的预测数据协作 Active CN111684434B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862626347P 2018-02-05 2018-02-05
US62/626,347 2018-02-05
US16/054,819 2018-08-03
US16/054,819 US10782908B2 (en) 2018-02-05 2018-08-03 Predictive data orchestration in multi-tier memory systems
PCT/US2019/013836 WO2019152191A1 (en) 2018-02-05 2019-01-16 Predictive data orchestration in multi-tier memory systems

Publications (2)

Publication Number Publication Date
CN111684434A CN111684434A (zh) 2020-09-18
CN111684434B true CN111684434B (zh) 2023-09-29

Family

ID=67475108

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980011914.9A Active CN111684434B (zh) 2018-02-05 2019-01-16 多层存储器系统中的预测数据协作

Country Status (6)

Country Link
US (3) US10782908B2 (zh)
EP (1) EP3750070A4 (zh)
KR (1) KR102457071B1 (zh)
CN (1) CN111684434B (zh)
TW (1) TWI711925B (zh)
WO (1) WO2019152191A1 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
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
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
JP6800904B2 (ja) * 2018-03-20 2020-12-16 株式会社東芝 モデル生成装置、情報処理装置、モデル生成方法およびプログラム
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US10810069B2 (en) * 2018-07-17 2020-10-20 Accenture Global Solutions Limited Data processing for component failure determination
US11169920B2 (en) * 2018-09-17 2021-11-09 Micron Technology, Inc. Cache operations in a hybrid dual in-line memory module
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
US10838870B2 (en) * 2019-04-17 2020-11-17 EMC IP Holding Company LLC Aggregated write and caching operations based on predicted patterns of data transfer operations
US10936480B2 (en) * 2019-05-31 2021-03-02 Microsoft Technology Licensing, Llc Memory management for multiple process instances
US11275987B1 (en) * 2019-07-09 2022-03-15 Dell Products, L.P. Method and apparatus for optimizing performance of a storage system
US11474828B2 (en) * 2019-10-03 2022-10-18 Micron Technology, Inc. Initial data distribution for different application processes
US20210019069A1 (en) * 2019-10-21 2021-01-21 Intel Corporation Memory and storage pool interfaces
US11475126B2 (en) * 2019-10-31 2022-10-18 Dell Products, L.P. Systems and methods for modernizing workspace and hardware lifecycle management in an enterprise productivity ecosystem
US11625327B2 (en) * 2019-12-10 2023-04-11 EMC IP Holding Company LLC Cache memory management
US11221973B2 (en) * 2019-12-20 2022-01-11 Micron Technology, Inc. Parallel iterator for machine learning frameworks
CN113835616A (zh) * 2020-06-23 2021-12-24 华为技术有限公司 应用的数据管理方法、系统和计算机设备
US11500555B2 (en) 2020-09-04 2022-11-15 Micron Technology, Inc. Volatile memory to non-volatile memory interface for power management
WO2022061727A1 (en) * 2020-09-25 2022-03-31 Alibaba Group Holding Limited Method and apparatus for cache management
KR20220135560A (ko) * 2021-03-30 2022-10-07 삼성전자주식회사 메모리를 관리하기 위한 전자 장치 및 그의 동작 방법
US11657112B2 (en) * 2021-04-21 2023-05-23 Dell Products L.P. Artificial intelligence-based cache distribution
US11829364B2 (en) * 2021-06-30 2023-11-28 Amazon Technologies, Inc. Making decisions for placing data in a multi-tenant cache
US20230051781A1 (en) * 2021-08-16 2023-02-16 International Business Machines Corporation Data movement intimation using input/output (i/o) queue management
US20230229352A1 (en) * 2022-01-20 2023-07-20 Micron Technology, Inc. Host training indication for memory artificial intelligence
CN114356247A (zh) * 2022-03-18 2022-04-15 闪捷信息科技有限公司 一种分层存储调度方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316187B2 (en) * 2008-07-08 2012-11-20 International Business Machines Corporation Cache memory including a predict buffer
CN106126447A (zh) * 2015-05-07 2016-11-16 三星电子株式会社 控制存储装置的方法、存储器模块和存储系统
JP2018005446A (ja) * 2016-06-30 2018-01-11 富士通株式会社 情報処理装置、ストレージ制御プログラム、及びストレージ制御方法

Family Cites Families (170)

* 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> 低電力消費メモリ装置
WO1996035169A1 (en) 1995-05-05 1996-11-07 Silicon Graphics, Inc. Page migration in a non-uniform memory access (numa) system
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
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
CN100465955C (zh) * 2004-10-12 2009-03-04 国际商业机器公司 用于高速缓存万维网内容的方法和系统
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
US7631245B2 (en) 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US8291295B2 (en) 2005-09-26 2012-10-16 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
JP4863749B2 (ja) 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
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
TWI463321B (zh) 2007-01-10 2014-12-01 Mobile Semiconductor Corp 用於改善外部計算裝置效能的調適性記憶體系統
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
US8255631B2 (en) 2008-02-01 2012-08-28 International Business Machines Corporation Priority-based prefetch requests scheduling and throttling
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
US8289760B2 (en) 2008-07-02 2012-10-16 Micron Technology, Inc. Multi-mode memory device and method having stacked memory dice, a logic die and a command processing circuit and operating in direct and indirect modes
US8131814B1 (en) 2008-07-11 2012-03-06 Hewlett-Packard Development Company, L.P. Dynamic pinning remote direct memory access
US20100017650A1 (en) 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
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 콘두시브 테크놀로지스 코포레이션 저장 위치 속성 및 데이터 사용량 통계에 기초하여 데이터 저장을 위한 저장 위치 선택
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
JP5664347B2 (ja) 2011-03-04 2015-02-04 ソニー株式会社 仮想メモリシステム、仮想メモリの制御方法、およびプログラム
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
EP3382556A1 (en) 2011-09-30 2018-10-03 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
IN2014DN05977A (zh) 2012-02-08 2015-06-26 Hitachi Ltd
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 株式会社日立製作所 管理システム及び管理方法
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
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
US9164888B2 (en) 2012-12-10 2015-10-20 Google Inc. Using a logical to physical map for direct user space communication with a data storage device
US9069658B2 (en) 2012-12-10 2015-06-30 Google Inc. Using a virtual to physical map for direct user space communication with a data storage device
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
JP5577430B1 (ja) 2013-06-11 2014-08-20 株式会社ブリヂストン 空気入りタイヤ
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
WO2015042684A1 (en) 2013-09-24 2015-04-02 University Of Ottawa Virtualization of hardware accelerator
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 한국전자통신연구원 인-메모리 데이터 관리 장치 및 인-메모리 데이터 관리 방법
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
CA2947158A1 (en) 2014-05-01 2015-11-05 Coho Data, Inc. Systems, devices and methods for generating locality-indicative data representations of data streams, and compressions thereof
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
US9697130B2 (en) 2014-06-25 2017-07-04 Sandisk Technologies Llc Systems and methods for storage service automation
US10282100B2 (en) 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
US9390028B2 (en) 2014-10-19 2016-07-12 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines
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
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
US10019279B2 (en) 2015-12-17 2018-07-10 International Business Machines Corporation Transparent secure interception handling
US10148570B2 (en) 2015-12-29 2018-12-04 Amazon Technologies, Inc. Connectionless reliable transport
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
WO2017189006A1 (en) 2016-04-29 2017-11-02 Appdynamics Llc Predictive rollup and caching for application performance data
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
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
US11064001B2 (en) 2017-05-09 2021-07-13 EMC IP Holding Company LLC Atomically committing related streaming data across multiple distributed resources
US20190004841A1 (en) 2017-06-30 2019-01-03 Microsoft Technology Licensing, Llc Memory Sharing For Virtual Machines
US20190034284A1 (en) * 2017-07-25 2019-01-31 Hewlett Packard Enterprise Development Lp Sequencing host i/o requests and i/o snapshots
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
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
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
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
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
US8316187B2 (en) * 2008-07-08 2012-11-20 International Business Machines Corporation Cache memory including a predict buffer
CN106126447A (zh) * 2015-05-07 2016-11-16 三星电子株式会社 控制存储装置的方法、存储器模块和存储系统
JP2018005446A (ja) * 2016-06-30 2018-01-11 富士通株式会社 情報処理装置、ストレージ制御プログラム、及びストレージ制御方法

Also Published As

Publication number Publication date
WO2019152191A1 (en) 2019-08-08
US20220326868A1 (en) 2022-10-13
CN111684434A (zh) 2020-09-18
US20190243570A1 (en) 2019-08-08
KR102457071B1 (ko) 2022-10-21
EP3750070A1 (en) 2020-12-16
KR20200108362A (ko) 2020-09-17
US20200319813A1 (en) 2020-10-08
US10782908B2 (en) 2020-09-22
TWI711925B (zh) 2020-12-01
US11354056B2 (en) 2022-06-07
EP3750070A4 (en) 2021-06-16
US11669260B2 (en) 2023-06-06
TW201935248A (zh) 2019-09-01

Similar Documents

Publication Publication Date Title
CN111684434B (zh) 多层存储器系统中的预测数据协作
US11706317B2 (en) Optimization of data access and communication in memory systems
US11977787B2 (en) Remote direct memory access in multi-tier memory systems
CN111684417B (zh) 用以存取异质存储器组件的存储器虚拟化
CN111684435B (zh) 实施于存储器系统中的通过消息传递接口的存储器存取通信
US20190243771A1 (en) Accelerate Data Access in Memory Systems via Data Stream Segregation
KR20210019576A (ko) 메모리 액세스 가속화를 위한 예측 페이징

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant