CN111684435A - 实施于存储器系统中的通过消息传递接口的存储器存取通信 - Google Patents

实施于存储器系统中的通过消息传递接口的存储器存取通信 Download PDF

Info

Publication number
CN111684435A
CN111684435A CN201980011932.7A CN201980011932A CN111684435A CN 111684435 A CN111684435 A CN 111684435A CN 201980011932 A CN201980011932 A CN 201980011932A CN 111684435 A CN111684435 A CN 111684435A
Authority
CN
China
Prior art keywords
memory
data
bus
processing device
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201980011932.7A
Other languages
English (en)
Other versions
CN111684435B (zh
Inventor
S·米塔尔
G·阿南德
A·拉伊
P·R·玛哈拉纳
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 CN111684435A publication Critical patent/CN111684435A/zh
Application granted granted Critical
Publication of CN111684435B publication Critical patent/CN111684435B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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/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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • 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
    • G06F3/0647Migration mechanisms
    • 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • 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
    • 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/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • 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/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS
    • 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/314In storage network, e.g. network attached cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6032Way prediction in set-associative cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Artificial Intelligence (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Probability & Statistics with Applications (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种存储器系统,其具有:多个存储器组件;及控制器,其可操作地耦合到所述多个存储器组件以:将数据存储于所述存储器组件中;经由总线与主机系统通信;经由所述总线上的通信将所述数据服务于所述主机系统;使用消息传递接口经由所述总线与处理装置通信,所述处理装置与所述主机系统分离;及通过使用所述消息传递接口经由所述总线进行的通信提供对所述处理装置的数据存取。

Description

实施于存储器系统中的通过消息传递接口的存储器存取通信
相关申请案
本申请案主张于2018年8月3日申请且标题为“实施于存储器系统中的通过消息传递接口的存储器存取通信(Memory Access Communications through Message PassingInterface Implemented in Memory Systems)”的序列号为16/054,890的美国专利申请案及于2018年2月5日申请且标题为“使用持续性存储器的消息传递接口(MPI)语义的输入/输出(IO)加速(Input/Output(IO)Acceleration with Message Passing Interface(MPI)Semantics with Persistent Memory)”的序列号为62/626,419的临时美国专利申请案的申请日期的权益,所述申请案的全部揭示内容特此以引用的方式并入本文中。
本申请案涉及于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的美国专利申请案及于2018年8月3日申请且标题为“多层存储器系统中的预测数据协作(Predictive Data Orchestration in Multi-Tier Memory Systems)”的序列号为16/054,819的美国专利申请案,所述申请案的全部揭示内容特此以引用的方式并入本文中。
技术领域
本文中揭示的至少一些实施例大体上涉及存储器系统,且更特定来说(但非限制地)涉及在存储器系统中使用消息传递接口实施的存储器存取通信。
背景技术
存储器子系统可为存储器模块,例如双列直插存储器模块(DIMM)、小型DIMM(SO-DIMM)或非易失性双列直插存储器模块(NVDIMM)。存储器子系统可为存储系统,例如固态硬盘(SSD)或硬盘机(HDD)。存储器子系统可包含存储数据的一或多个存储器组件。存储器组件可为例如非易失性存储器组件及易失性存储器组件。存储器组件的实例包含存储器集成电路。一些存储器集成电路是易失性的且需要电力来维持经存储数据。一些存储器集成电路是非易失性的且甚至在未被供电时仍可保留经存储数据。非易失性存储器的实例包含快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)及电可擦除可编程只读存储器(EEPROM)存储器等。易失性存储器的实例包含动态随机存取存储器(DRAM)及静态随机存取存储器(SRAM)。一般来说,主机系统可利用存储器子系统来将数据存储于存储器组件处及从存储器组件检索数据。
例如,计算机可包含主机系统及附接到主机系统的一或多个存储器子系统。主机系统可具有与一或多个存储器子系统通信以存储及/或检索数据及指令的中央处理单元(CPU)。用于计算机的指令可包含操作系统、装置驱动程序及应用程序。操作系统管理计算机中的资源且为应用程序提供常见服务,例如存储器分配及资源的分时。装置驱动程序操作或控制计算机中的特定类型的装置;且操作系统使用装置驱动程序来提供由所述类型的装置提供的资源及/或服务。计算机系统的中央处理单元(CPU)可运行操作系统及装置驱动程序以将服务及/或资源提供到应用程序。中央处理单元(CPU)可运行使用服务及/或资源的应用程序。例如,实施一类型的计算机系统应用程序的应用程序可指示中央处理单元(CPU)将数据存储于存储器子系统的存储器组件中及从存储器组件检索数据。
计算机系统的操作系统可允许应用程序使用虚拟存储器地址来将数据存储于计算机系统的一或多个存储器子系统的存储器组件中或从计算机系统的一或多个存储器子系统的存储器组件检索数据。操作系统将连接到计算机系统的中央处理单元(CPU)的一或多个存储器子系统的虚拟地址映射到物理地址。操作系统使用存储器子系统的物理地址实施虚拟地址处指定的存储器存取。
虚拟地址空间可被划分为页。可将虚拟存储器页映射到存储器子系统中的物理存储器页。操作系统可使用分页技术以经由存储器模块中的存储器页存取存储装置中的存储器页。在不同时间例子,存储器模块中的相同存储器页可用作存取存储装置中的不同存储器页或计算机系统中的另一存储装置的代理。
计算机系统可包含用于建立或布建虚拟机的超管理器(或虚拟机监测器)。虚拟机是使用计算机系统中可用的资源及服务虚拟地实施的计算装置。超管理器将虚拟机呈现给操作系统,宛如虚拟机的组件是专用物理组件一样。客户操作系统在虚拟机中运行以依与运行于计算机系统中的主机操作系统类似的方式管理虚拟机中可用的资源及服务。超管理器允许多个虚拟机共享计算机系统的资源且允许虚拟机在计算机上基本上彼此独立地操作。
消息传递接口(MPI)是一种用于编程并行计算机的通信协议。MPI支持同级间通信及群体通信(collective communication)两者。MPI在一组过程(已映射到节点/服务器/计算机例子)之间以语言无关方式提供虚拟拓扑、同步及通信功能性。
附图说明
在随附图式的图中通过实例且非限制的方式说明实施例,其中相似参考指示类似元件。
图1说明根据本发明的一些实施例的具有存储器子系统的实例计算系统。
图2展示根据本文中揭示的至少一些实施例的具有有利于数据存取通信的数据协作器的计算系统。
图3展示具有用于有效率数据存取通信的数据协作器的计算系统。
图4说明经由数据协作器实施的分布式存储系统。
图5展示数据协作的方法。
图6展示根据本文中揭示的至少一些实施例的具有不同存储器层及用于优化数据位置的数据协作器的计算系统。
图7展示具有数据协作器的系统。
图8说明数据协作器的实施方案。
图9展示预测数据协作的方法。
图10是其中可操作本发明的实施例的实例计算机系统的框图。。
具体实施方式
本发明的至少一些方面涉及一种实施于存储器系统中的使用消息传递接口来加速外围装置当中的数据通信的数据移动技术。存储器子系统在下文中也称为“存储器装置”。存储器子系统的实例是经由存储器总线连接到中央处理单元(CPU)的存储器模块。存储器模块的实例包含双列直插存储器模块(DIMM)、小型DIMM(SO-DIMM)、非易失性双列直插存储器模块(NVDIMM)等。存储器子系统的另一实例是经由外围互连(例如,输入/输出总线、存储局域网络)连接到中央处理单元(CPU)的存储装置。存储装置的实例包含固态硬盘(SSD)、快闪随身碟、通用串行总线(USB)快闪随身碟及硬盘机(HDD)。在一些实施例中,存储器子系统是提供存储器功能及存储功能两者的混合存储器/存储子系统。一般来说,主机系统可利用包含一或多个存储器组件的存储器子系统。主机系统可提供待存储于存储器子系统处的数据且可请求待从存储器子系统检索的数据。
常规系统可具有配置于用于外围装置的总线(例如快速外围组件互连(PCIe)总线)上的图形处理单元(GPU)及固态硬盘(SSD)。系统的中央处理单元(CPU)可各别地使用分别经调适用于GPU及SSD的通信协议来与GPU及SSD通信。因此,此系统允许GPU经由中央处理单元(CPU)间接存取SSD。CPU通过重组用于通信的数据及/或通过执行协议转译而桥接GPU与SSD之间的通信间隙。然而,在GPU与SSD之间的数据存取通信中涉及CPU是效率低的,此使系统的操作性能降级。
本发明的至少一些方面通过在存储器子系统中实施通信能力以允许存储器子系统在不涉及CPU的情况下与总线上的其它外围装置通信而解决上述及其它缺陷。例如,通信能力可包含实施于存储器子系统中的消息传递接口(MPI)。使用此通信能力,外围装置(例如存储装置、SSD、处理单元、GPU)可在无CPU协助的情况下执行预测数据移动以分布及/或重新分布数据。可在一或多个外围总线上及/或经由计算机网络实行预测数据移动以改进计算机系统的操作性能。
此外,常规系统可具有其中通过较快存储器存取较慢存储器的高速缓存结构。当处理器存取当前在较慢存储器中的数据时,将数据加载到较快存储器作为较慢存储器中的数据的代理。随后,处理器操作较快存储器中的数据的代理/高速缓存以改进性能。较快存储器通常具有小于较慢存储器的容量。因此,可在较快存储器中同时高速缓存较慢存储器中的数据的仅一部分。当由处理器存取的项当前不在较快存储器中时,发生高速缓存未命中。当由处理器存取的项当前在较快存储器中时,发生高速缓存命中。导致高速缓存命中的存取的百分比是高速缓存命中率。改进高速缓存命中率可改进计算系统的操作性能。然而,设计高速缓存策略以改进高速缓存命中率是一项挑战。
本发明的至少一些方面通过使用机器学习技术执行跨不同存储器层的预测数据移动而解决上述及其它缺陷。不同层的存储器可具有不同数据存取花费。例如,为改进计算系统的操作性能,可将频繁使用的数据放置于较快存储器中;且可将不太频繁使用的数据放置于较慢存储器中。任选地,较快存储器可配置为较慢存储器的高速缓存。在一些例子中,可直接存取较慢存储器的至少一部分而不经过作为高速缓存的较快存储器。可在使用机器学习技术训练的预测模型中应用数据使用信息以预测工作负荷企图及因此跨不同层的存储器的数据移动。例如,数据使用信息可包含数据存取的历史及与数据存取相关的属性,例如使用数据的应用程序或程序、其中进行数据评估的用户帐户、存取数据的虚拟机、数据所属的对象、如应用程序中组织的数据块到对象之间的映射、对象当中的关系等。可事先执行根据数据使用信息预测的数据移动以改进计算系统的操作性能。最初可使用历史数据使用信息及由与数据使用信息相关联的数据存取引起的历史数据移动脱机地训练预测模型。所述训练最小化历史数据移动与通过在预测模型中应用历史数据使用信息而产生的预测之间的差异。随后,预测模型可用于使用实时数据使用信息进行实时预测。执行预测数据移动可减少响应于数据存取请求而移动数据的需要。由实时数据存取请求引起的数据移动及/或预测数据移动是否减少跨层移动数据的需要的指示可用于识别所要的实时预测结果。所要结果可使用加强机器学习技术进一步训练预测模型以持续改进及调适预测模型。预测模型可在计算系统的实时使用中动态地调适到当前工作负荷。
图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可在存储器子系统110的较快存储器(例如,109A)与较慢存储器(例如,109N)之间执行预测数据移动及/或在外围装置之间执行预测数据移动。在一些实施例中,存储器子系统110中的控制器115包含数据协作器113的至少一部分。在其它实施例中或组合地,主机系统120中的控制器116及/或处理装置118包含数据协作器113的至少一部分。例如,控制器115、控制器116及/或处理装置118可包含实施数据协作器113的逻辑电路系统。例如,控制器115或主机系统120的处理装置118(处理器)可经配置以执行存储于存储器中的指令而执行本文中描述的数据协作器113的操作。在一些实施例中,在安置于存储器子系统110中的集成电路芯片中实施数据协作器113。在其它实施例中,数据协作器113可为主机系统120的操作系统、装置驱动程序或应用程序的部分。
数据协作器113可预测计算系统100中的数据使用及数据移动,包含存储器子系统110内的数据移动、存储器子系统110与任选外围装置之间的数据移动。任选外围装置可经由总线及/或计算机网络连接到存储器子系统110。此任选外围装置的实例包含类似于或不同于子系统110的存储器子系统、图形处理单元、经由局域网络连接计算系统100的计算机系统、经由无限带宽(IB)连接而连接到计算系统100的计算机存储装置等。例如,数据协作器113可使用消息传递接口(MPI)或适用于处理单元(例如CPU与GPU)之间的通信的另一通信协议与任选外围装置通信。下文描述关于数据协作器113的操作的另外细节。
图2展示根据本文中揭示的至少一些实施例的具有有利于数据存取通信的数据协作器113的计算系统。
图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的速度存取。
类似地,在多个存储装置(例如,205)耦合到互连207的可能配置中,存储装置(例如,209)的一者具有B型存储器223,且存储装置的另一者具有C型存储器225,C型存储器225可依低于各别存储装置(例如,209)中的B型存储器221的速度存取。
处理装置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可在不经过主机系统120的情况下与耦合到外围互连207的一或多个外围装置112通信。例如,数据协作器113实施允许数据协作器113将数据移动到外围装置112或从外围装置112移动数据的消息传递接口。例如,外围装置112可为类似于也具有数据协作器的存储装置209的另一存储装置。例如,外围装置112可为使用消息传递接口进行通信的图形处理单元(GPU)。数据协作器113可在无主机系统120协助的情况下经由外围互连207与外围装置112通信。因此,主机系统120的计算资源未用于数据协作器113与外围装置112之间的数据通信;且可通过消除主机系统120处的延迟而加速数据协作器113与外围装置112之间的数据通信。
数据协作器113可指示存储装置209中的控制器Y 229在存储装置209内的B型存储器223与C型存储器225之间执行数据传送/移动。
此外,数据协作器113可指示存储装置209中的控制器Y 229与外围装置112中的控制器、处理单元、处理器或数据协作器通信,以在存储装置209与外围装置112之间执行数据传送/移动。
在一些例子中,数据协作器113可指示存储装置209中的控制器Y 229与存储器模块205的控制器X 227通信,以在存储装置209与存储器模块205之间执行数据传送/移动。
图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)的本地存储器219可包含用于存储微代码的只读存储器(ROM)及/或存储例如存储器指针、经提取数据等的存储器寄存器。
虽然图2中的实例存储器子系统(例如,205及209)已被说明为包含控制器(例如,227及229),但在本发明的另一实施例中,存储器子系统(例如,205或209)可不包含控制器(例如,227或229),且可替代地依赖于外部控制(例如,其由MMU 213、或由与存储器子系统(例如,205或209)分离的处理器或控制器提供)。
一般来说,控制器(例如,227或229)可根据用于通信通道(例如,203或207)的标准通信协议从处理装置118或MMU 213接收命令、请求或指令,且可遵循所述标准协议将命令、请求或指令转换成存储器子系统(例如,205或209)内的详细指令或适当命令,以实现对存储器(例如,221、...、223、...、225)的所要存取。例如,控制器(例如,227或229)可负责与存储器(例如,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可通过存储器模块205及/或存储器总线203连接到主机系统120(例如,如图6中说明)。在此情境中,可在存储器模块205上实施数据协作器113,如图6中说明。
一般来说,处理装置118、控制器229及/或数据协作器113可执行一或多个操作系统以提供服务,包含加速存储器存取,其中使用分页技术及/或存储器映射接口以经由计算机系统中的存储器的一部分存取计算机系统中的存储器的另一部分,如下文进一步论述。
图3展示具有用于有效率数据存取通信的数据协作器的计算系统。例如,图3的计算系统可使用图2的存储装置209及/或图1的存储器子系统110来实施。
在图3中,一组图形处理单元(GPU)114及至少一个存储装置209经由交换结构215连接以为主机系统120的丛集提供外围资源。主机系统120的丛集及图形处理单元(GPU)114可经由交换结构215共享存储装置(A或B)209。丛集可经由网络219(例如,使用无限带宽(IB)接口)连接以扩展系统。
图3中的存储装置209具有数据协作器113。在数据协作器113中实施消息传递接口217。数据协作器113可使用消息传递接口217来经由交换结构215及/或网络219彼此通信、与图形处理单元(GPU)通信,及/或与主机系统120通信。数据协作器113的通信能力可用于执行计算系统内的预测数据移动。例如,数据移动可从存储装置A 209跨交换结构114前往图形处理单元(GPU),及/或经由网络219前往另一存储装置B 209或另一丛集中的图形处理单元(GPU),而未经过主机系统120的任一者。可在无主机系统120的任一者的任何协助的情况下通过远程直接存储器存取(RDMA)执行数据移动。
可使用下文结合图6到9论述的技术进行数据移动的预测。可在于2018年8月3日申请且标题为“多层存储器系统中的预测数据协作(Predictive Data Orchestration inMulti-Tier Memory Systems)”的序列号为16/054,819的美国专利申请案中找到一些实例及细节。
图4说明经由数据协作器实施的分布式存储系统。例如,图4的系统可使用图1、2及/或3的计算系统来实施。
图4的分布式存储系统包含通过计算机网络219(及/或交换结构215)连接的系统A236及系统B 237。
系统A 236包含具有数据协作器113的存储装置A 209。类似地,系统B 237包含具有数据协作器113的存储装置B 209。数据协作器113可如图3中那样在无主机系统120协助的情况下经由网络219(及/或交换结构215)彼此通信。
主机系统120可运行超管理器245以托管虚拟机249。超管理器245可支持虚拟机249以具有分布于通过网络219连接之系统A 236及B 237当中的逻辑卷231。
例如,虚拟机249中的逻辑卷231的一部分A 232布建于系统A 236中的存储装置A209中的一部分A 234上;且虚拟机249中的逻辑卷231的一部分B 233布建于系统B 237中的存储装置B 209中的一部分B 235上。
例如,超管理器245可实施用于实施虚拟机249的逻辑卷231的精简布置方法。在初始时段期间,超管理器245为虚拟机249中的逻辑卷231的部分232分配存储装置A 209的部分A 234。在虚拟机249使用越来越多的逻辑卷231时,部分232可能变得不足;且必需为逻辑卷231的部分B 233分配存储容量。然而,系统A 236中的存储装置A 209可能在为逻辑卷231的部分B 233分配存储容量之时耗尽容量,而系统B 237中的存储装置B 209具有足以用于逻辑卷231的部分B 233的存储容量。因此,超管理器245为虚拟机249中的逻辑卷231的部分233分配存储装置B 209的部分B 235。
一般来说,运行于主机系统120中的虚拟机249跨网络219存取存储装置B 209比存取存储装置A 209慢。因此,超管理器245可经配置以经由存储装置A 209的数据协作器113存取存储装置B 209,宛如存储装置B 209系存储装置A 209的部分一样。数据协作器113可基于数据使用的预测将存储装置B 209的数据的一部分预测性地高速缓存于存储装置A209中,使得改进系统的操作性能。
例如,存储装置A 209可具有较快存储器223及较慢存储器225。较快存储器223可用于高速缓存预测将由主机系统120在虚拟机249中使用的数据。
例如,当预测将由虚拟机249使用的数据在逻辑卷231的部分232中时,数据协作器113通过在存储装置A 209内部移动数据而将数据自存储装置A 209的较慢存储器225高速缓存到较快存储器223中。
当预测将由虚拟机249使用的数据在逻辑卷231的部分233中时,存储装置A的数据协作器113与存储装置B 209的数据协作器113通信以跨网络219(例如,通过远程直接存储器存取(RDMA))将数据从存储装置B 209高速缓存到存储装置A 209中。
此外,存储装置B 209的数据协作器113可预测数据移动及/或从存储装置A 209的数据协作器113接收相关预测。响应于预测,数据协作器113可任选地从部分B 235高速缓存数据。例如,将来自存储装置B 209的较慢存储器225的数据高速缓存到存储装置B 209的较快存储器223中。存储装置B 209的数据协作器113的预测高速缓存操作可加速系统A 236与系统B 237之间的数据移动,例如当经由网络219将数据从存储装置B 209的较慢存储器225传输到存储装置A 209比经由网络219将数据从存储装置B 209的较快存储器223传输到存储装置A 209慢时。
图4的数据协作器113可实施消息传递接口(MPI)使得存储装置A及B 209内的数据移动不经过其主机系统120的任一者。也可使用用于在不涉及主机系统120的情况下经由网络219在存储装置209之间进行数据传送的替代通信协议。
图5展示数据协作的方法。图5的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实施例中,图5的方法至少部分由图1到4的数据协作器113执行。尽管以特定序列或顺序展示,但除非另有指定,否则可修改过程的顺序。因此,所说明实施例应仅被理解为实例,且所说明过程可依不同顺序执行,且一些过程可并行执行。另外,在各个实施例中,可省略一或多个过程。因此,并非每项实施例都需要全部过程。其它程序流程是可能的。
例如,可在图1、2、3或4的计算系统中实施图5的方法以经由图2的外围互连207、图3的交换结构215及/或图3的网络219与外围装置112及/或主机系统120通信。例如,数据协作器113可至少部分经由存储器子系统110的控制器115实施,例如图2的存储装置209的控制器229或图2的存储器模块205的控制器227。任选地,数据协作器113可包含下文结合图6到9进一步论述的预测数据移动技术。
在框301,数据协作器113将数据存储于存储器子系统110(例如,图2、3或4中的存储装置209;图2中的存储器模块205)的存储器组件(例如,图1中的109A到109N;图2中的223到225)中。
在框303,数据协作器113经由总线(例如外围互连207、存储器总线203、交换结构215及/或网络219)与主机系统120通信。
在框305,存储器子系统110经由总线上的通信将数据服务于主机系统120。
在框307,数据协作器110使用消息传递接口217经由总线与处理装置通信,所述处理装置与主机系统120分离。一般来说,可使用适用于在无主机系统120协助的情况下在外围总线上在外围装置(例如存储装置及/或图形处理单元(GPU))当中进行通信的任何通信技术/协议。
例如,存储器子系统110可为配置于外围互连207上的存储装置209,例如固态硬盘(SSD)。处理装置可为连接到外围互连207的图形处理单元(GPU)114或耦合到外围互连207的另一存储装置209的控制器229。例如,存储装置209可经由快速外围组件互连(PCIe)总线、交换结构及/或无限带宽(IB)网络连接而连接。
在框309,数据协作器110通过使用消息传递接口217经由总线进行的通信提供对处理装置的数据存取。
例如,使用消息传递接口217经由总线进行的通信不涉及主机系统120及/或主机系统120的中央处理单元(CPU)。
优选地,存储器子系统110包含较快存储器,例如动态随机存取存储器(DRAM)、持续性随机存取存储器(PDRAM)、静态随机存取存储器(SRAM)等。存储器子系统110可为较慢存储器,例如高速缓存、交叉点存储器。
任选地,数据协作器110预测数据移动且基于预测在较快存储器中执行数据高速缓存。使用消息传递接口217经由总线进行的通信可用于输送用于高速缓存操作的数据。
例如,可基于与图4中说明的运行于系统A 236的主机系统120中的虚拟机249中所配置的逻辑卷231相关的活动来进行预测。逻辑卷231具有实施于系统A 236中的存储装置A的一部分234上的一部分232及实施于另一系统B 237中的存储装置B的一部分235上的另一部分233。系统A 236及系统B 237是经由网络219连接。当数据协作器113预测将使用系统B237的部分B 235上的数据时,数据协作器113经由使用消息传递接口(MPI)通信及远程直接存储器存取(RDMA)操作进行的通信来在其较快存储器中高速缓存数据。
例如,数据协作器113可使用场可编程门阵列(FPGA)或专用集成电路(ASIC)来实施。数据协作器113使用实施于FPGA或ASIC中的人工神经网络来预测数据移动。任选地,数据协作器113训练人工神经网络,如下文进一步论述。
数据协作器113可预测跨不同存储器层(较快存储器(例如,109A)及较慢存储器(例如,109N))的数据使用及移动。应用程序可循序地存取某些数据;且某些对象可一起使用。因此,在用户帐户、应用程序、虚拟机中使用数据项作为对象的部分可指示随后使用另一相关数据项。在存取相关数据项之前,数据协作器113可指示控制器115重新布置数据项在存储器子系统110中的物理存储位置,使得在主机系统120的处理装置118存取相关数据项之时,数据项已在较快存储器(例如,109A)中。因此,改进计算系统的操作性能。可经由人工神经网络实施数据协作器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的美国专利申请案中找到关于预测技术的一些细节及实例。
图6展示根据本文中揭示的至少一些实施例的计算系统,其具有不同存储器层及用于优化数据位置的数据协作器。
图6的计算系统包含主机系统120、经由存储器总线203连接到主机系统120的存储器模块205,及经由互连207连接到存储器模块205的存储装置209。存储装置209及/或存储器模块205是图1中说明的存储器子系统110的实例。
主机系统120具有处理装置118,处理装置118可为中央处理单元或具有一或多个处理核心的微处理器。主机系统120可具有存储器管理单元213及高速缓存211。存储器管理单元213及/或高速缓存211的至少一部分可任选地集成于处理装置118的相同集成电路封装内。
图6中说明的存储器模块205具有多种类型的存储器(例如,221及223)。例如,A型存储器221比B型存储器223快。
例如,存储器总线203可为双倍数据速率总线;且互连207可为快速外围组件互连(PCIe)总线、串行高级技术附接(SATA)总线、通用串行总线(USB)总线及/或存储局域网络。可依比存取存储装置209中的B型存储器223快的速度存取存储器模块205中的B型存储器223。
图6中说明的存储装置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的速度存取。
类似地,在多个存储装置(例如,205)耦合到互连207的可能配置中,存储装置(例如,209)的一者具有B型存储器223,且存储装置的另一者具有C型存储器225,C型存储器225可依低于单独存储装置(例如,209)中的B型存储器221的速度存取。
处理装置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型存储器并不是可以使用存储器总线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)读取数据。
图6的计算系统可用于实施桌面计算机、膝上型计算机、网络服务器、移动装置或包含存储器及处理装置的此计算装置。处理装置118可从存储器子系统(例如,205及209)读取数据或将数据写入到存储器子系统(例如,205及209)。
在一些例子中,互连207连接到主机系统120而未经过存储器模块205及/或存储器总线203。当存储装置209耦合到主机系统120而未经过存储器模块205时(例如,如图2中说明),可在存储装置209中以类似于存储器模块205中的数据协作器113的方式实施数据协作器113。
在一些例子中,可至少部分在主机系统120中实施数据协作器113。
图7展示具有数据协作器113的系统。例如,可在图1、2、3、4或6的计算机系统中实施图7的系统。
图7的系统包含可在图1、2、3、4或6的计算机系统的处理装置118中运行的主机操作系统241。主机操作系统241包含使用存储器子系统(例如存储器模块205及/或存储装置209)的存储器(例如,221、...、223、...、225)提供存储器服务的一或多个装置驱动。
主机操作系统241包含布建虚拟机249的超管理器245。虚拟机249具有经由主机操作系统241使用图1、2、3、4或6的计算系统的硬件提供的资源及服务实施的虚拟硬件。例如,超管理器245可使用存储器子系统(例如存储器模块205及/或存储装置209)的存储器(例如,221、...、223、...、225)的一部分布建虚拟存储器作为虚拟机249的部分。
虚拟机249允许客户操作系统243以如同操作系统243在具有与虚拟机中所布建相同或类似的硬件组的物理计算机器上运行的方式将资源及/或服务提供到运行于客户操作系统243上的应用程序(例如,251、...、253)。超管理器245管理虚拟机中所布建的虚拟硬件与由主机操作系统241管理的计算系统中的硬件服务之间的映射。
图7说明其中通过超管理器245布建虚拟机249的例子。一般来说,超管理器245可布建可运行相同客户操作系统243或不同客户操作系统(例如,243)的多个虚拟机(例如,249)。可指派不同用户及/或应用程序集以使用不同虚拟机。
在一些例子中,主机操作系统241专用于提供用于布建虚拟机的服务且不运行其它应用程序。或者,主机操作系统241可提供额外服务以支持其它应用程序,例如应用程序(例如,251、...、253)。
在图7中,超管理器245经配置以使用单根I/O虚拟化来组织不同特性/属性的数据串流。例如,存储器模块205具有可实施多个虚拟功能(例如,247)的物理功能246。虚拟功能247经由物理功能246提供存储器模块205的服务。超管理器245分配且保留虚拟功能246以供特定虚拟机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用来进行预测的信息的实例包含:在先前时段中使用的页的序列、将页从较慢存储器加载到较快存储器的请求的例子、页的内容属性、页的所有权属性、页的用户或应用程序的识别、是否在虚拟机及/或用户帐户中以循序模式存取页的指示、页存取是否处于稳态的指示、所使用的页是否与巨型页相关联的指示、数据块与对象之间的映射等。
图8说明数据协作器113的实施方案。
在图8中,数据协作器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而实施的数据移动272与使用预测模型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的预测准确度的关系。
图9展示预测数据协作的方法。图9的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实施例中,图9的方法至少部分由图1到8的数据协作器113执行。尽管以特定序列或顺序展示,然除非另有指定,否则可修改过程的顺序。因此,所说明实施例应仅被理解为实例,且所说明过程可依不同顺序执行,且一些过程可并行执行。另外,在各个实施例中,可省略一或多个过程。因此,并非每个实施例都需要全部过程。其它过程流程是可能的。
例如,可在图1、2、3、4或6的计算系统中运用图7的主机操作系统241及图8预测模型265来实施图9的方法。例如,数据协作器113可至少部分经由图8的高速缓存控制器273及工作负荷辨识器263及/或图7的虚拟功能247实施。
在框331,数据协作器113从处理装置118接收引起跨层的第一数据移动的第一数据存取请求
例如,不同层的存储器组件(例如,图1中的109A到109N、图7中的221到223及/或到225)可具有第一存储器及第二存储器,其中第一存储器用作第二存储器的高速缓存。例如,第一存储器可为易失性动态随机存取存储器;且第二存储器可为非易失性交叉点存储器。在一些例子中,第一存储器及第二存储器容置于相同存储器子系统中,例如存储器模块205或存储装置209。在其它例子中,第一存储器及第二存储器可容置于可在不涉及主机系统120及/或存储器总线203的情况下彼此通信的各别的相同存储器子系统中。
当处理装置118存取第二存储器时,存取请求引起在第一存储器中高速缓存正在存取的第二存储器的部分。在其它例子中,第一存储器未用作第二存储器的高速缓存;且响应于存取在第二存储器中的数据项的请求,数据协作器113基于一组策略或规则确定是否将数据项的存储位置从第二存储器改变为第一存储器;且如果如此,那么数据协作器113可将数据项从第二存储器交换到第一存储器。
在框333,数据协作器113响应于第一数据存取请求而执行第一数据移动。
例如,可结合与第一数据存取请求相关联的数据使用信息来记录响应于第一数据存取请求而执行/实施的第一数据移动。例如,数据使用信息可识别在一时段内使用数据块的序列、将数据块从第二存储器加载到第一存储器的请求的例子、从第二存储器加载到第一存储器的数据块的内容属性、从第二存储器加载到第一存储器的数据块的所有权属性、从第二存储器加载到第一存储器的数据块的用户的识别、引起将数据块从第二存储器加载到第一存储器的应用程序的识别、在虚拟机中以循序模式存取的数据块的识别、在用户帐户中以循序模式存取的数据块的识别,及/或处于稳态的数据存取的识别。
第一数据移动可用作使用与第一数据存取请求相关联的数据使用信息进行预测的预测模型265的所要预测结果。例如,预测模型265具有人工神经网络,所述人工神经网络可使用监督式机器学习技术训练以减少第一数据移动与使用相关联于第一数据存取请求的数据使用信息进行的预测之间的差异。任选地,可使用单独计算机及关于第一数据存取请求的经记录信息、由第一数据存取请求引起的第一数据移动及第一数据存取之前的数据使用信息来脱机地执行对人工神经网络的初始训练。例如,数据协作器113可将经记录信息存储于由数据协作器113控制的存储器的一部分中;且另一处理装置118可存取存储器的部分以对数据协作器113执行初始训练。或者,可在数据协作器113中执行对人工神经网络的初始训练,直到预测模型265的预测准确度达到阈值水平。
在框335,存储器子系统110(例如,存储器模块205及/或存储装置209)在第一数据移动之后服务第一数据存取请求。可通过在对应数据存取请求之前预测数据移动及执行预测数据移动而改进计算系统的性能。
在框337,数据协作器113从处理装置118接收数据使用信息261。
在框339,数据协作器113基于数据使用信息261及经由机器学习训练的预测模型265来预测跨存储器组件中的层的第二数据移动269。
在框341,数据协作器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执行上文论述的方法。
图10说明计算机系统600的实例机器,可在计算机系统600内执行用于引起所述机器执行本文中论述的方法论的任一或多者的指令集。在一些实施例中,计算机系统600可对应于包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)的主机系统(例如,图1的主机系统120),或其可用于执行数据协作器113的操作(例如,以执行指令而执行对应于关于图1到9描述的数据协作器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到9描述的数据协作器113)的功能性的指令。虽然机器可读存储媒体624在实例实施例中被展示为单个媒体,但术语“机器可读存储媒体”应被视为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”也应被视为包含能够存储或编码指令集以由机器执行且引起机器执行本发明的方法论的任一或多者的任何媒体。因此,术语“机器可读存储媒体”应被视为包含(但不限于)固态存储器、光学媒体及磁性媒体。
已依据对计算机存储器内的数据位的操作的算法及符号表示呈现前文详细描述的一些部分。这些算法描述及表示是由数据处理领域的技术人员使用以最有效地将其工作实质传达给所属领域的其它技术人员的方式。在此且一般来说,算法被认为是导致所要结果的自我一致操作序列。操作是需要物理操纵物理量的操作。通常但非必要,这些量采取能够被存储、组合、比较及以其它方式操纵的电信号或磁信号的形式。主要出于常用的原因,已证实将这些信号称为位、值、元件、符号、字符、项、数字或类似物有时是方便的。
然而,应记住,全部这些及类似术语应与适当物理量相关联且仅为应用于这些量的方便标签。本发明可涉及计算机系统或类似电子计算装置将表示为计算机系统的寄存器及存储器内的物理(电子)量的数据操纵及变换成类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量的其它数据的动作及过程。
本发明还涉及一种用于执行本文中的操作的设备。此设备可专门建构用于所欲目的,或其可包含通过存储于计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储于计算机可读存储媒体中,例如(但不限于)任何类型的磁盘,包含软盘、光盘、CD-ROM及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、或适于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文中呈现的算法及显示器并非固有地与任何特定计算机或其它设备相关。各种通用系统可搭配根据本文中的教示的程序使用,或可证实建构更专业设备以执行方法是方便的。多种这些系统的结构将如下文描述中所陈述那样出现。另外,未参考任何特定程序设计语言描述本发明。将明白,可使用多种程序设计语言来实施如本文中描述的本发明的教示。
本发明可被提供为计算机程序产品或软件,其可包含其上存储有指令的机器可读媒体,所述指令可用于编程计算机系统(或其它电子装置)以执行根据本发明的程序。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在本描述中,各种功能及操作被描述为由计算机指令执行或引起以简化描述。然而,所属领域的技术人员将认识到,此类表达意味着功能因通过一或多个控制器或处理器(例如微处理器)执行计算机指令而产生。替代地或组合地,可使用具有或不具有软件指令的专用电路系统(例如使用专用集成电路(ASIC)或场可编程门阵列(FPGA))来实施功能及操作。可使用不具有软件指令的硬接线电路系统或结合软件指令来实施实施例。因此,技术既不限于硬件电路系统及软件的任何特定组合也不限于通过数据处理系统执行的指令的任何特定来源。
在前述说明书中,已参考本发明的特定实例实施例描述本发明的实施例。将显而易见的是,可在不脱离如下文权利要求书中所陈述的本发明的实施例的更广泛精神及范围的情况下对本发明的实施例进行各种修改。因此,本说明书及图式应被视为说明性意义而非限制性意义。

Claims (14)

1.一种存储器系统,其包括:
多个存储器组件;及
控制器,其可操作地耦合到所述多个存储器组件以至少:
将数据存储于所述存储器组件中;
经由总线与主机系统通信;
经由所述总线上的通信将所述数据服务于所述主机系统;
使用消息传递接口经由所述总线与处理装置通信,所述处理装置与所述主机系统分离;及
通过使用所述消息传递接口经由所述总线进行的通信提供对所述处理装置的数据存取。
2.根据权利要求1所述的存储器系统,其中所述控制器在不涉及所述主机系统的情况下与所述处理装置通信。
3.根据权利要求2所述的存储器系统,其中所述主机系统包含中央处理单元CPU。
4.根据权利要求3所述的存储器系统,其中所述总线是快速外围组件互连PCIe总线。
5.根据权利要求3所述的存储器系统,其中所述处理装置是图形处理单元GPU、耦合到所述总线的存储装置或通过计算机网络耦合到所述总线的存储装置的控制器。
6.根据权利要求5所述的存储器系统,其中所述总线经由无限带宽IB接口连接到所述计算机网络;所述存储器系统是固态硬盘;且所述多个存储器组件包含动态随机存取存储器。
7.根据权利要求6所述的存储器系统,其中所述控制器执行预测数据移动以在所述动态随机存取存储器中高速缓存存储于所述存储装置上的数据的一部分。
8.根据权利要求7所述的存储器系统,其中所述预测数据移动是基于配置于运行于所述主机系统上的虚拟机中的逻辑卷。
9.根据权利要求8所述的存储器系统,其中所述逻辑卷的一部分在所述存储装置中;且所述逻辑卷的一部分在所述多个存储器组件中。
10.根据权利要求8所述的存储器系统,其中所述控制器包括使用场可编程门阵列FPGA或专用集成电路ASIC实施以实施人工神经网络的数据协作器。
11.根据权利要求8所述的存储器系统,其中所述数据协作器使用所述人工神经网络预测所述数据移动。
12.根据权利要求8所述的存储器系统,其中所述数据协作器训练所述人工神经网络。
13.一种实施于具有多个存储器组件及控制器的存储器系统中的方法,所述方法包括:
将数据存储于所述存储器组件中;
经由总线与主机系统通信;
经由所述通信将所述数据服务于所述主机系统;
使用消息传递接口经由所述总线与处理装置通信,所述处理装置与所述主机系统分离;及
通过使用所述消息传递接口经由所述总线进行的通信提供对所述处理装置的数据存取。
14.根据权利要求13所述的方法,其进一步包括:
预测经由所述总线的数据移动;及
在不涉及所述主机系统的情况下执行所述数据移动。
CN201980011932.7A 2018-02-05 2019-01-18 实施于存储器系统中的通过消息传递接口的存储器存取通信 Active CN111684435B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862626419P 2018-02-05 2018-02-05
US62/626,419 2018-02-05
US16/054,890 2018-08-03
US16/054,890 US10671460B2 (en) 2018-02-05 2018-08-03 Memory access communications through message passing interface implemented in memory systems
PCT/US2019/014216 WO2019152221A1 (en) 2018-02-05 2019-01-18 Memory access communications through message passing interface implemented in memory systems

Publications (2)

Publication Number Publication Date
CN111684435A true CN111684435A (zh) 2020-09-18
CN111684435B CN111684435B (zh) 2024-03-29

Family

ID=67476702

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980011932.7A Active CN111684435B (zh) 2018-02-05 2019-01-18 实施于存储器系统中的通过消息传递接口的存储器存取通信

Country Status (6)

Country Link
US (2) US10671460B2 (zh)
EP (1) EP3750069A4 (zh)
KR (1) KR20200108357A (zh)
CN (1) CN111684435B (zh)
TW (1) TWI710912B (zh)
WO (1) WO2019152221A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10671460B2 (en) 2018-02-05 2020-06-02 Micron Technology, Inc. Memory access communications through message passing interface implemented in memory systems
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
CN112422244B (zh) * 2019-08-21 2022-11-25 无锡江南计算技术研究所 基于流量负载预测的rdma缓冲区动态分配方法
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
CN113435601A (zh) * 2020-03-23 2021-09-24 华为技术有限公司 数据预取方法、装置以及存储设备
CN112667354B (zh) * 2020-12-30 2022-05-06 上海壁仞智能科技有限公司 计算机可读取存储介质、虚拟化寄存器装置及访问该装置的方法
JP2022146351A (ja) * 2021-03-22 2022-10-05 キオクシア株式会社 ストレージシステム
CN113156855A (zh) * 2021-04-07 2021-07-23 杭州永谐科技有限公司成都分公司 一种微型数据采集处理系统
KR102484914B1 (ko) * 2021-11-23 2023-01-06 (주)글루시스 가상화 환경에서 데이터를 저장하는 방법
US11868828B1 (en) * 2022-07-15 2024-01-09 Micron Technology, Inc. Message routing in a network-ready storage product for internal and external processing

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002061737A2 (en) * 2001-01-29 2002-08-08 Snap Appliance Inc. Dynamically distributed file system
US20040064590A1 (en) * 2000-09-29 2004-04-01 Alacritech, Inc. Intelligent network storage interface system
WO2007146845A2 (en) * 2006-06-08 2007-12-21 Bitmicro Networks, Inc. Configurable and scalable hybrid multi-tiered caching storage system
US20100169253A1 (en) * 2008-12-27 2010-07-01 Vmware, Inc. Artificial neural network for balancing workload by migrating computing tasks across hosts
US20120069029A1 (en) * 2010-09-20 2012-03-22 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
US20150095567A1 (en) * 2013-09-27 2015-04-02 Fujitsu Limited Storage apparatus, staging control method, and computer-readable recording medium having stored staging control program
US20150113214A1 (en) * 2013-10-21 2015-04-23 Sehat Sutardja Final level cache system and corresponding methods
US20160077740A1 (en) * 2014-05-02 2016-03-17 Cavium, Inc. Systems and methods for enabling local caching for remote storage devices over a network via nvme controller

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5675762A (en) * 1992-04-03 1997-10-07 International Business Machines Corporation System for locking down part of portion of memory and updating page directory with entry corresponding to part of portion of the memory locked down
US6047323A (en) * 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
US5950014A (en) * 1997-03-21 1999-09-07 Lsi Logic Corporation Methodology for pull model invocation
JP3601955B2 (ja) * 1997-10-23 2004-12-15 株式会社日立製作所 データ転送方法およびそれに適した計算機システム
US7007126B2 (en) * 1998-02-13 2006-02-28 Intel Corporation Accessing a primary bus messaging unit from a secondary bus through a PCI bridge
US6044415A (en) * 1998-02-27 2000-03-28 Intel Corporation System for transferring I/O data between an I/O device and an application program's memory in accordance with a request directly over a virtual connection
US7213086B2 (en) * 2003-10-28 2007-05-01 Hewlett-Packard Development Company, L.P. System having a storage controller that modifies operation of a storage system based on the status of a data transfer
US20070113105A1 (en) * 2005-11-15 2007-05-17 Campbell William B Apparatus and method for power management in peripheral device
US8108908B2 (en) * 2008-10-22 2012-01-31 International Business Machines Corporation Security methodology to prevent user from compromising throughput in a highly threaded network on a chip processor
US9331869B2 (en) * 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
US9069587B2 (en) * 2011-10-31 2015-06-30 Stec, Inc. System and method to cache hypervisor data
US8868517B2 (en) * 2012-03-29 2014-10-21 Lsi Corporation Scatter gather list for data integrity
US9043530B1 (en) 2012-04-09 2015-05-26 Netapp, Inc. Data storage within hybrid storage aggregate
US8996781B2 (en) 2012-11-06 2015-03-31 OCZ Storage Solutions Inc. Integrated storage/processing devices, systems and methods for performing big data analytics
CN105190576A (zh) * 2013-03-28 2015-12-23 惠普发展公司,有限责任合伙企业 共享的存储器系统
US9304779B2 (en) * 2013-06-04 2016-04-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Optimizing boot time of a storage system
US20150356125A1 (en) 2014-06-06 2015-12-10 Plexistor Ltd. Method for data placement based on a file level operation
US9910670B2 (en) * 2014-07-09 2018-03-06 Intel Corporation Instruction set for eliminating misaligned memory accesses during processing of an array having misaligned data rows
US10305772B2 (en) * 2015-03-30 2019-05-28 Mellanox Technologies, Ltd. Using a single work item to send multiple messages
GB2545654A (en) * 2015-12-18 2017-06-28 Sony Interactive Entertainment Inc User-pairing evaluation method and apparatus
US10423419B2 (en) * 2016-06-27 2019-09-24 International Business Machines Corporation Stream based branch prediction index accelerator for multiple stream exits
US10795742B1 (en) * 2016-09-28 2020-10-06 Amazon Technologies, Inc. Isolating unresponsive customer logic from a bus
US10671460B2 (en) 2018-02-05 2020-06-02 Micron Technology, Inc. Memory access communications through message passing interface implemented in memory systems
WO2020061737A1 (zh) 2018-09-25 2020-04-02 深圳柔显系统技术有限公司 书写控制方法及手写输入装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040064590A1 (en) * 2000-09-29 2004-04-01 Alacritech, Inc. Intelligent network storage interface system
WO2002061737A2 (en) * 2001-01-29 2002-08-08 Snap Appliance Inc. Dynamically distributed file system
WO2007146845A2 (en) * 2006-06-08 2007-12-21 Bitmicro Networks, Inc. Configurable and scalable hybrid multi-tiered caching storage system
US20100169253A1 (en) * 2008-12-27 2010-07-01 Vmware, Inc. Artificial neural network for balancing workload by migrating computing tasks across hosts
US20120069029A1 (en) * 2010-09-20 2012-03-22 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
US20150095567A1 (en) * 2013-09-27 2015-04-02 Fujitsu Limited Storage apparatus, staging control method, and computer-readable recording medium having stored staging control program
US20150113214A1 (en) * 2013-10-21 2015-04-23 Sehat Sutardja Final level cache system and corresponding methods
US20160077740A1 (en) * 2014-05-02 2016-03-17 Cavium, Inc. Systems and methods for enabling local caching for remote storage devices over a network via nvme controller

Also Published As

Publication number Publication date
US20190243695A1 (en) 2019-08-08
EP3750069A1 (en) 2020-12-16
KR20200108357A (ko) 2020-09-17
TW201935262A (zh) 2019-09-01
US10671460B2 (en) 2020-06-02
TWI710912B (zh) 2020-11-21
WO2019152221A1 (en) 2019-08-08
US11561845B2 (en) 2023-01-24
US20200272530A1 (en) 2020-08-27
CN111684435B (zh) 2024-03-29
EP3750069A4 (en) 2021-06-30

Similar Documents

Publication Publication Date Title
CN111684434B (zh) 多层存储器系统中的预测数据协作
CN111801659B (zh) 存储器系统中的数据存取及通信的优化
CN111684435B (zh) 实施于存储器系统中的通过消息传递接口的存储器存取通信
KR102428791B1 (ko) 집적 회로 메모리의 패키지에 내장된 컨트롤러를 갖는 메모리 시스템
CN112384890B (zh) 预测性分页以加速存储器存取
US11977787B2 (en) Remote direct memory access in multi-tier memory systems
CN111684417B (zh) 用以存取异质存储器组件的存储器虚拟化
CN111699477A (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