CN113692579A - 数据存储装置中的预测性数据预取 - Google Patents
数据存储装置中的预测性数据预取 Download PDFInfo
- Publication number
- CN113692579A CN113692579A CN202080028473.6A CN202080028473A CN113692579A CN 113692579 A CN113692579 A CN 113692579A CN 202080028473 A CN202080028473 A CN 202080028473A CN 113692579 A CN113692579 A CN 113692579A
- Authority
- CN
- China
- Prior art keywords
- command
- data
- commands
- data storage
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000015654 memory Effects 0.000 claims abstract description 220
- 238000013500 data storage Methods 0.000 claims abstract description 73
- 238000012545 processing Methods 0.000 claims abstract description 40
- 238000000034 method Methods 0.000 claims description 44
- 238000012549 training Methods 0.000 claims description 24
- 238000010801 machine learning Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 7
- 230000000694 effects Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000001934 delay Effects 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000007477 logistic regression Methods 0.000 description 1
- 239000000696 magnetic material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
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)
- Data Mining & Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据存储系统具有非易失性媒体、缓冲存储器、处理装置和数据预取器。所述数据预取器接收要在所述数据存储系统中执行的命令,提供所述命令作为预测模型的输入,获得识别用于预取的至少一个命令作为具有所述命令作为输入的所述预测模型的输出。在所述命令在所述数据存储装置中执行之前,所述数据预取器从所述非易失性存储器检索要在执行所述命令时使用的至少一数据部分;并将所述数据部分存储在所述缓冲存储器中。在所述命令的执行之前,所述数据部分的检索和存储可以与许多命令的执行同时执行,以减小所述命令对与所述命令的执行同时执行的其它命令的时延影响。
Description
相关申请
本申请要求2019年4月15日提交的标题为“数据存储装置中的预测性数据预取(PREDICTIVE DATA PRE-FETCHING IN A DATA STORAGE DEVICE)”的第16/384,618号美国专利申请的优先权,所述申请的全部公开内容由此以引用的方式并入本文中。
技术领域
本文中所公开的至少一些实施例一般来说涉及存储器系统,且更具体地说,不限于数据存储装置中的预测性数据预取。
背景技术
存储器子系统可包含存储数据的一或多个存储器组件。存储器子系统可以是数据存储系统,例如固态驱动器(SSD)或硬盘驱动器(HDD)。存储器子系统可以是存储器模块,例如双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)或非易失性双列直插式存储器模块(NVDIMM)。存储器组件可以是例如非易失性存储器组件和易失性存储器组件。存储器组件的实例包含存储器集成电路。一些存储器集成电路是易失性的,需要电力来维持所存储的数据。一些存储器集成电路是非易失性的,即使没有供电也可以保持所存储的数据。非易失性存储器的实例包含快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)和电可擦除可编程只读存储器(EEPROM)存储器等。易失性存储器的实例包含动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)。一般来说,主机系统可利用存储器子系统将数据存储于存储器组件处并从存储器组件检索数据。
计算机可包含主机系统和附接到主机系统上的一或多个存储器子系统。主机系统可具有与所述一或多个存储器子系统通信已存储和/或检索数据和指令的中央处理单元(CPU)。计算机的指令可包含操作系统、装置驱动程序和应用程序。操作系统管理计算机中的资源并为应用程序提供公共服务,例如资源的存储器分配和分时。装置驱动程序操作或控制计算机中特定类型的装置;并且操作系统使用装置驱动程序来供应由所述类型的装置提供的资源和/或服务。计算机系统的中央处理单元(CPU)可运行操作系统和装置驱动程序来向应用程序提供服务和/或资源。中央处理单元(CPU)可运行使用所述服务和/或资源的应用程序。例如,实施计算机系统的某一类型的应用的应用程序可指示中央处理单元(CPU)在存储器子系统的存储器组件中存储数据并从存储器组件检索数据。
主机系统可根据预定义通信协议与存储器子系统通信,例如非易失性存储器主机控制器接口规范(NVMHCI),也称为NVM快速(NVMe),其指定经由外围组件互连高速(PCI快速或PCIe)总线存取非易失性存储装置的逻辑装置接口协议。根据通信协议,主机系统可向存储器子系统发送不同类型的命令;并且存储器子系统可执行命令并提供对命令的响应。一些命令指示存储器子系统在命令中指定的地址处存储数据项,或从命令中指定的地址检索数据项,例如读取命令和写入命令。一些命令管理存储器子系统中的基础架构和/或管理任务,例如管理命名空间的命令、附接命名空间的命令、创建输入/输出提交或完成队列的命令、删除输入/输出提交或完成队列的命令、用于固件管理的命令等等。
附图说明
在附图的各图中作为实例而非限制示出了实施例,在附图中,相似的参考标号指示类似的元件。
图1示出根据本公开的一些实施例的具有存储器子系统的实例计算系统。
图2示出配置成训练预测模型以识别可使其它命令的执行时延增加的命令的系统。
图3示出具有从非易失性媒体预取命令数据到缓冲存储器的预测模型的系统。
图4示出训练预测模型以识别高影响命令的方法。
图5示出基于预测模型的预测而预取高影响命令的数据的方法。
图6是其中可操作本公开的实施例的实例计算机系统的框图。
具体实施方式
本公开的至少一些方面涉及预测性预取可增加在数据存储装置中同时执行的其它命令的执行时延的命令的数据。例如,预测模型在数据存储装置中配置以识别可导致其它命令的执行具有显著延迟的此类命令。供所识别命令使用的数据可以从数据存储装置的非易失性存储媒体预取到存储装置的缓冲存储器。数据预取到缓冲存储器可减少、最小化和/或消除由所识别命令在其它命令的执行中造成的延迟。预测模型可通过在命令训练集上应用机器学习技术使用训练集中的命令的执行时延数据来建立。
一般来说,基础架构命令可用于管理(manage)、配置、管理(administrate)或报告数据存储系统中基础架构的状态。某些基础架构命令通常会导致与此类命令无关的其它命令的执行时延意外增加。此类基础架构命令可能具有高时延。当数据存储系统中的某些资源用于执行高时延基础架构命令时,这些资源变得不可用于执行其它命令,从而导致可使用这些资源的其它命令的执行出现明显的随机延迟。
在本文中所公开的至少一些实施例中,预测模型配置成预测最有可能增加其它命令的时延的基础架构命令。预测是基于当前排队等待在数据存储系统中处理的命令的一些特性。预测允许数据存储系统针对经预测基础架构命令将数据从非易失性存储媒体预取到缓冲存储器。在预取经预测命令的数据之后,经预测基础架构命令在它们的执行期间使用资源来存取非易失性存储媒体并使它们不可用于其它命令的执行的可能性减小。因此,基础架构命令的执行对其它命令的影响可减小、最小化和/或去除。
例如,监督机器学习技术可应用于训练数据集中的命令群组。训练数据集可具有一组混合的不同类型的基础架构命令和不同类型的其它命令。命令训练集可表示数据存储装置/系统的工作负载或服务周期期间的实际工作负载。训练集中的命令的一些参数可用作预测模型的输入参数,例如命令的类型、存储系统中被命令存取的区域等。训练集中的命令的执行的经测量时延可用于识别对其它命令的执行具有高影响的基础架构命令和对其它命令的执行不具有高影响的基础架构命令。例如,高影响命令使其它命令的执行的时延具有大于阈值量的增加;且低影响命令使其它命令的时延具有不超过阈值量的增加。监督机器学习技术可用于通过调整预测模型的参数以最小化由预测模型识别的基础架构命令的分类/预测和根据训练数据集的时延数据识别的基础架构命令的分类/预测之间的差异来训练预测模型。
例如,预测模型可经训练以对命令序列进行分类。序列中的每个基础架构命令可分类为针对序列中的命令具有高影响的可能性或不具有所述可能性。
例如,预测模型可经训练以针对命令序列预测由序列中的基础架构命令造成的序列中的其它命令的执行的时延增加。执行时延的经预测增加可与阈值比较以将基础架构命令分类为高影响命令或低影响命令。
例如,预测模型可经训练以针对命令序列预测将进入数据存储装置/系统使得序列中的一些命令的执行时延具有大于阈值量的增加的基础架构命令。预测可基于基础架构命令和其它命令的模式而进行。
例如,预测模型可基于使用逻辑回归和/或人工神经网络的统计相关性。
例如,不同组的训练集可用于具有不同结构和不同配置的数据存储系统。
具有特定设计的数据存储系统可初始地配置有根据所述设计的命令的典型工作负载训练的预测模型。随后,预测模型可针对计算机系统中的数据存储系统的典型工作负载和/或基于数据存储系统的最近实时工作负载进一步进行训练和/或更新。
任选地,数据存储系统可进一步配置成监测使用预测模型进行的实时预测和命令执行具有增加的时延的后续测量之间的差异,以进一步周期性地训练预测模型,从而根据实时工作负载调整其预测性能力。
在使用具有预测模型的数据存储系统期间,将由数据存储系统执行的传入命令可提供为预测模型的输入,以识别针对预取调度/建议的命令表。
例如,预测模型可用于处理一或多个队列中待执行的预定数目的命令(例如,1000个命令)或每预定时间段(例如,10ms)处理一次。在使用预测模型期间,等待数据存储系统执行的命令可被馈送到预测模型中,以识别用于预取的高影响命令表。数据存储系统配置成在实际执行高影响命令之前预取表中的高影响命令可能使用的数据,以便将执行高影响命令的影响分散给大量其它命令。此外,预取可配置成使用在高影响命令之前执行的其它命令的执行不使用/不需要的备用资源;这样的安排可以减小高影响命令对其它命令的总体影响。
在一些情况下,预测模型可在主机系统向数据存储系统发送基础架构命令之前和/或在从队列检索基础架构命令以执行之前预测基础架构命令。数据存储系统可以使用标志来指示经预测基础架构命令的预取数据是否有效。
一般来说,存储器子系统还可称为“存储器装置”。存储器子系统的实例是经由存储器总线连接到中央处理单元(CPU)的存储器模块。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)、非易失性双列直插式存储器模块(NVDIMM)等等。
存储器子系统的另一实例是经由外围互连件(例如,输入/输出总线、存储区域网络)连接到中央处理单元(CPU)的数据存储装置/系统。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器和硬盘驱动器(HDD)。
在一些实施例中,存储器子系统是提供存储器功能和存储功能两者的混合存储器/存储子系统。一般来说,主机系统可利用包含一或多个存储器组件的存储器子系统。主机系统可提供要存储在存储器子系统处的数据,并且可请求要从存储器子系统检索的数据。
图1示出根据本公开的一些实施例的具有存储器子系统(110)的实例计算系统。
存储器子系统(110)可包含非易失性媒体(109),其包含存储器组件。一般来说,存储器组件可以是易失性存储器组件、非易失性存储器组件或它们的组合。在一些实施例中,存储器子系统(110)是数据存储系统。数据存储系统的实例是SSD。在其它实施例中,存储器子系统(110)是存储器模块。存储器模块的实例包含DIMM、NVDIMM和NVDIMM-P。在一些实施例中,存储器子系统(110)是混合存储器/存储装置子系统。
一般来说,计算环境可包含使用存储器子系统(110)的主机系统(120)。例如,主机系统(120)可将数据写入到存储器子系统(110)并从存储器子系统(110)读取数据。
主机系统(120)可以是计算装置的部分,例如台式计算机、膝上型计算机、网络服务器、移动装置,或包含存储器和处理装置的此类计算装置。主机系统(120)可包含或耦合到存储器子系统(110),使得主机系统(120)可以从存储器子系统(110)中读取数据或将数据写入到所述存储器子系统。主机系统(120)可以经由物理主机接口耦合到存储器子系统(110)。如本文所使用,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等的连接。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连快速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接的SCSI(SAS)、双倍数据速率(DDR)存储器总线等。物理主机接口可用于在主机系统(120)与存储器子系统(110)之间传输数据和/或命令。当存储器子系统(110)通过PCIe接口与主机系统(120)耦合时,主机系统(120)可以进一步利用NVM快速(NVMe)接口存取非易失性媒体(109)。物理主机接口可以提供用于在存储器子系统(110)与主机系统(120)之间传递控制、地址、数据和其它信号的接口。图1示出存储器子系统(110)作为实例。一般来说,主机系统(120)可经由同一通信连接、多个单独通信连接和/或通信连接的组合来存取多个存储器子系统。
主机系统(120)包含处理装置(118)和控制器(116)。主机系统(120)的处理装置(118)可以是例如微处理器、中央处理单元(CPU)、处理器的处理核心、执行单元等。在一些情况下,控制器(116)可称为存储器控制器、存储器管理单元和/或发起器。在一个实例中,控制器(116)控制通过耦合在主机系统(120)与存储器子系统(110)之间的总线进行的通信。
一般来说,控制器(116)可以向存储器子系统(110)发送希望存取非易失性媒体(109)的命令或请求。控制器(116)可进一步包含与存储器子系统(110)通信的接口电路系统。接口电路系统可以将从存储器子系统(110)接收的响应转换成主机系统(120)的信息。
主机系统(120)的控制器(116)可以与存储器子系统(110)的控制器(115)通信以执行操作,例如在非易失性媒体(109)中读取数据、写入数据或擦除数据以及其它这类操作。在一些情况下,控制器(116)与处理装置(118)集成在同一封装内。在其它情况下,控制器(116)与处理装置(118)分开封装。控制器(116)和/或处理装置(118)可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器、高速缓存存储器或其组合。控制器(116)和/或处理装置(118)可以是微控制器、专用逻辑电路系统(例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。
非易失性媒体(109)可包含不同类型的非易失性存储器组件的任何组合。在一些情况中,还可以使用易失性存储器组件。非易失性存储器组件的实例包含与非(NAND)类型快闪存储器。媒体(109)中的存储器组件可包含一或多个存储器单元阵列,例如单层级单元(SLC)或多层级单元(MLC)(例如,三层级单元(TLC)或四层级单元(QLC))。在一些实施例中,特定存储器组件可包含存储器单元的SLC部分和MLC部分两者。存储器单元中的每一者可以存储由主机系统(120)使用的一或多个数据位(例如,数据块)。尽管描述了例如NAND类型快闪存储器的非易失性存储器组件,但非易失性媒体(109)中使用的存储器组件可以基于任何其它类型的存储器。此外,可以使用易失性存储器。在一些实施例中,媒体(109)中的存储器组件可包含但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁性随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、铁电随机存取存储器(FeTRAM)、铁电RAM(FeRAM)、导电桥接RAM(CBRAM)、电阻式随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)、基于纳米线的非易失性存储器、并入有忆阻器技术的存储器,或非易失性存储器单元的交叉点阵列,或其任何组合。非易失性存储器的交叉点阵列可以结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来进行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可以执行就地写操作,其中可以对非易失性存储器单元进行编程,而无需事先擦除非易失性存储器单元。此外,媒体(109)中的存储器组件的存储器单元可分组为存储器页或数据块,其可指代用于存储数据的存储器组件的单元。
存储器子系统(110)的控制器(115)可以与媒体(109)中的存储器组件通信以执行操作,例如在存储器组件处读取数据、写入数据或擦除数据以及其它这类操作(例如,响应于由控制器(116)在命令总线上调度的命令)。控制器(115)可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。控制器(115)可以是微控制器、专用逻辑电路系统(例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。控制器(115)可包含配置成执行存储在本地存储器(119)中的指令的处理装置(117)(处理器)。在所示的实例中,控制器(115)的缓冲存储器(119)包含配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统(110)的操作(包含处理存储器子系统(110)与主机系统(120)之间的通信)的各种处理、操作、逻辑流以及例程。在一些实施例中,控制器(115)可包含存储器寄存器,其存储存储器指针、获取的数据等。控制器(115)还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子系统(110)已示为包含控制器(115),但在本公开的另一实施例中,存储器子系统(110)可不包含控制器(115),而是可以依赖于外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供的外部控制)。
一般来说,控制器(115)可以从主机系统(120)接收命令或操作,并且可以将命令或操作转换成指令或适当的命令,以实现对媒体(109)中的存储器组件的所要存取。控制器(115)可以负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作,以及与媒体(109)中的存储器组件相关联的逻辑块地址与物理块地址之间的地址转换。控制器(115)可进一步包含主机接口电路系统以经由物理主机接口与主机系统(120)通信。主机接口电路系统可以将从主机系统接收到的命令转换成命令指令以存取媒体(109)中的存储器组件,以及将与存储器组件相关联的响应转换成用于主机系统(120)的信息。
存储器子系统(110)还可包含未示出的额外电路系统或组件。在一些实施例中,存储器子系统(110)可包含高速缓存或缓冲器(例如DRAM)和地址电路系统(例如行解码器和列解码器),其可从控制器(115)接收地址且对地址进行解码以存取媒体(109)中的存储器组件。
计算系统在存储器子系统(110)中包含数据预取器(113),其可针对预测的高影响命令而从非易失性媒体(109)检索数据到缓冲存储器(119)。在执行高影响命令之前,当数据没有预取到缓冲存储器(119)时,预测的高影响命令可导致其它命令的执行时延产生大于阈值量的增加。
在一些实施例中,存储器子系统(110)中的控制器(115)包含数据预取器(113)的至少一部分。在其它实施例中或组合地,主机系统(120)中的控制器(116)和/或处理装置(118)包含数据预取器(113)的至少一部分。例如,控制器(115)、控制器(116)和/或处理装置(118)可包含实施数据预取器(113)的逻辑电路系统。例如,控制器(115)或主机系统(120)的处理装置(118)(处理器)可配置成执行存储在存储器中的指令以执行本文中所描述的数据预取器(113)的操作。在一些实施例中,数据预取器(113)实施于安置在存储器子系统(110)中的集成电路芯片中。在其它实施例中,数据预取器(113)是主机系统(120)的操作系统、装置驱动程序或应用的部分。
存储器子系统(110)可具有用于一个类别的命令的队列(123)和用于另一类别的命令的另一队列(125)。例如,队列(123)可配置成用于典型输入/输出命令,例如读取命令和写入命令。队列(125)可配置成用于非典型输入/输出命令的基础架构命令。一些基础架构命令可以是导致队列(123)中的特定命令的执行时延具有大于阈值量的增加的高影响命令。存储器子系统(110)可包含一或多个完成队列(121),用于向主机系统(120)报告命令队列(123和125)中的命令的执行结果。在一些实施方案中,一或多个队列可以响应于来自主机系统(120)的命令而创建。因此,存储器子系统(110)总的来说不限于图1所示的特定数目的队列。
数据预取器(113)配置成将队列(125)中的类别的一些命令预测/分类为高影响命令。在从命令队列(125)检索到高影响命令用于执行之前,数据预取器(113)配置成将可供高影响命令使用的数据从非易失性媒体(109)负载到缓冲存储器(119)。在准备执行高影响命令时负载数据可经执行以使用不用于来自队列(123)的命令执行的资源,以提高资源利用率,并减小高影响命令的总体影响。替代地或组合地,在准备执行高影响命令时负载数据可经执行以扩散其在来自队列(123)的更多命令的执行当中的影响,使得其影响不集中在与高影响命令的执行同时执行的一或多个命令上。
图1示出已知高影响命令在特定队列(例如,125)中的实例。在其它实施方案中,不同类别的命令可以在同一队列中混合。例如,在一些系统中,基础架构命令可与非基础架构命令处于同一队列中;并且本公开的技术还可用于预测高影响命令,并针对高影响命令将数据预取到缓冲存储器。因此,本公开的技术的应用不限于特定的命令队列结构。
图2示出配置成训练预测模型(131)以识别可使其它命令的执行时延增加的命令的系统。
例如,图2的预测模型(131)可在图1的存储器子系统(110)的数据预取器(113)中配置。
在图2中,命令训练集(137)用于捕捉不同类型的命令对彼此的时延影响的模式。命令训练集(137)可以是表示存储器子系统(110)的典型工作负载或在图1的计算机系统中使用的特定周期期间存储器子系统(110)的实际工作负载的命令的实例。
在存储器子系统(110)执行训练集中的命令(例如,而不使用数据预取器(113))期间,测量训练集中的命令的执行时延数据(139)。执行时延数据(139)可用于识别导致时延增加的高影响命令(135)。
例如,可以从执行时延数据(139)计算特定类型的命令的平均执行时延。对于训练集中的每个相应命令,可以根据命令的实际执行时延和与命令类型相同的命令的平均执行时延之间的差来计算执行相应命令的经增加时延。当时延增加超过阈值时,所述命令被认为受到了很大影响。在时延受到了很大影响的命令的执行的时间窗中,可以检查在时间窗中执行和/或与执行所述命令同时执行的其它命令,以识别导致高影响的高影响命令。例如,在时间窗中执行的基础架构命令可被识别为高影响的来源;因此,基础架构命令可识别为高影响命令。例如,在时间窗中执行的特定类别的命令可被识别为高影响的来源;因此,所述命令可被识别为高影响命令。例如,平均执行时延高于阈值并且在时间窗中执行的命令类型可以被识别为高影响的源;因此,所述命令可以被识别为高影响命令。
在图2中,预测模型(131)配置成识别根据命令训练集预测会导致时延增加的高影响命令(141)。预测模型(131)基于训练集中命令的参数和/或命令在训练集中出现的次序来计算预测(141)。参数可包含训练集中的命令类型和/或命令存取的区/区域地址。将监督机器学习(133)应用于预测模型(131),以减少或最小化从执行时延数据(139)识别的高影响命令(135)与由预测模型(131)预测的高影响命令(141)之间的差异。
在使用监督机器学习(133)的技术训练预测模型(131)之后,预测模型(131)可用于图1的存储器子系统(110)的数据预取器(113)和/或如图3中所示的系统。
图3示出将命令的数据从非易失性媒体(109)预取到缓冲存储器(119)的具有预测模型(131)的系统。例如,图3的系统可以是图1的存储器子系统(1110)。
在图3中,提供一或多个队列(例如,123和/或125)中的命令作为预测模型(131)的输入,以生成可导致时延增加的高影响命令(141)的预测。数据预取器(113)配置成在实际执行由预测模型(131)预测的高影响命令(141)之前从非易失性媒体(109)检索数据到缓冲存储器(119)。
通常,与存取缓冲存储器(119)相比,存取非易失性媒体(109)以获取一定数量的数据所需的时间更长。此外,与存取缓冲存储器(119)相比,系统可具有更少的资源用于存取非易失性媒体(109)以同时执行多个命令。因此,当将由高影响命令使用的数据预取到缓冲存储器(119)中时,其对其它命令的同时执行的影响可以减小。
图4示出训练预测模型以识别具有高概率导致其它命令的执行具有显著延迟的命令的方法。例如,图4的方法可使用结合图2论述的技术实施于图1的计算机系统中。
在框151处,在数据存储系统中执行第一命令(例如,137)。
第一命令可以是与数据存储系统具有相同或类似结构的数据存储系统中典型的命令示例。任选地,第一命令可以是数据存储系统在一段时间内的实际工作负载。
在框153处,数据存储系统(或连接到数据存储系统的主机)测量第一命令的执行时延。例如,命令的执行时延可测量为从执行队列检索到命令和数据存储系统中的命令执行完成之间的持续时间。典型命令从命令中指定的地址检索数据,或将数据写入在命令中指定的地址处。
在框155处,使用计算装置识别导致一些第一命令的执行时延具有大于阈值量的增加的第二命令(例如,135)。计算装置可以是与数据存储系统和/或数据存储系统的主机系统分开的计算机、或数据存储系统的主机系统或数据存储系统的控制器。
例如,可以通过以下来识别第二命令:计算不同命令类型的平均时延,识别执行时延超过其相应命令类型平均值大于阈值的受影响命令,并识别与受影响命令同时执行且具有预定特性的第二命令。例如,预定特性可以是预定义的命令类别(例如,基础架构命令)、具有高于阈值的平均时延的命令类型和/或其它属性。
在框157处,计算装置基于第一命令使用预测模型(131)识别第三命令(例如,141)。
在框159处,计算装置将监督机器学习(133)应用于预测模型(131)以减少第二命令(例如,135)和第三命令(141)之间的差异。
图5示出基于预测模型(例如,131)的预测预取高影响命令的数据的方法,所述预测模型可使用图4的方法训练。
例如,图5的方法可以使用结合图3论述的技术实施于图1的计算机系统中。
在框171处,数据存储系统(例如,110)的数据预取器(113)接收排队等待在数据存储系统中执行的命令的标识。
在框173处,数据预取器(113)提供命令作为预测模型(131)的输入。
在框175处,数据预取器(113)使用预测模型(131)并基于作为输入的命令而识别用于预取的至少一个命令。
在从队列检索用于在数据存储系统中执行的命令之前,数据预取器(113)在框177处检索要在执行命令时使用的至少一数据部分,并在框179处将检索到的数据部分存储在数据存储系统的缓冲存储器(119)中。
同时,数据存储系统的控制器(115)在框181处检索经排队命令中的一些,并在框183处执行检索到的命令。
优选地,使用在命令的同时执行(183)中不需要/不使用的资源来执行用于经预取命令的数据部分的检索(177)和存储(179)。这种安排减少了命令对其它命令的总体影响。替代地或组合地,将用于经预取命令的数据部分的检索(177)和存储(179)的影响分散到许多命令的执行(183),使得对每个单独命令的影响减小。
随后,数据存储系统的控制器(115)在框185处从队列检索命令,并在框187处使用缓冲存储器中的至少所述数据部分执行命令。
由于至少所述数据部分在缓冲存储器中,因此命令的执行对与命令的执行同时执行的其它命令的执行时延的影响较小。
任选地,数据预取器(113)可包含图2中示出和/或图4中论述的监督机器学习(133)功能。例如,数据预取器(113)可测量命令的执行时延(139),识别导致时延增加的命令(135),并使用监督机器学习(133)来最小化预测不会导致时延增加(141)但基于测量的执行时延数据(139)发现已经导致时延增加(135)的命令的数目。
在一些实施方案中,处理装置(118)与存储器子系统之间的通信信道包含计算机网络,如局域网、无线局域网、无线个域网、蜂窝式通信网络、宽带高速始终连接的无线通信连接(例如,当前或未来一代的移动网络链路);且处理装置(118)和存储器子系统可配置成使用与NVMe协议中的那些类似的数据存储管理和使用命令来彼此通信。
一般来说,存储器子系统可具有非易失性存储媒体。非易失性存储媒体的实例包含在集成电路中形成的存储器单元和涂覆在刚性磁盘上的磁性材料。非易失性存储媒体可以在不消耗电力的情况下维持存储在其中的数据/信息。可使用各种存储器/存储技术来实施存储器单元,例如NAND逻辑门、NOR逻辑门、相变存储器(PCM)、磁存储器(MRAM)、电阻式随机存取存储器、交叉点存储和存储器装置(例如,3D XPoint存储器)。交叉点存储器装置使用无晶体管存储器元件,每个元件都有一个存储器单元和一个选择器,作为一列堆叠在一起。存储器元件列经由两条垂直的导线连接,其中一条导线位于存储器元件列上方,另一条导线位于存储器元件列下方。每个存储器元件可在两个层中的每一层上的一条导线的交叉点处单独选择。交叉点存储器装置速度快且不易失,可以用作处理和存储的统一存储器池。
存储器子系统(例如,110)的控制器(例如,115)可运行固件以响应于来自处理装置(118)的通信而执行操作。一般来说,固件是一种提供工程化计算装置的控制、监测和数据操纵的计算机程序类型。
涉及控制器(115)和/或数据预取器(113)的操作的一些实施例可以使用由控制器(115)(例如控制器(115)的固件)执行的计算机指令实施。在一些情况下,硬件电路可用于实施至少一些功能。固件可初始地存储在非易失性存储媒体或另一非易失性装置中,并装载至易失性DRAM和/或处理器内高速缓存存储器中以供控制器(115)执行。
非暂时性计算机存储媒体可用于存储存储器子系统(例如,110)的固件的指令。当指令由控制器(115)和/或处理装置(117)执行时,指令使控制器(115)和/或处理装置(117)执行上文所论述的方法。
图6示出计算机系统(200)的实例机器,在所述实例机器内可执行用于使机器执行本文中所论述的方法中的任何一或多种的指令集。在一些实施例中,计算机系统(200)可以对应于主机系统(例如,图1的主机系统(120)),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统(110))或可用于执行数据预取器(113)的操作(例如,执行指令以执行与参考图1-5描述的数据预取器(113)相对应的操作)。在替代实施例中,机器可以连接(例如联网)到LAN、内联网、外联网和/或互联网中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、开关或网桥、或能够(依序或以其它方式)执行一组指令的任何机器,所述指令指定要由所述机器采取的动作。另外,尽管示出了单个机器,但是术语“机器”也应被理解为包含机器的任何集合,所述机器单独地或共同地执行一(或多个)指令集以进行本文中所论述的方法中的任何一或多种。
实例计算机系统(200)包含处理装置(202)、主存储器(204)(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM)例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态随机存取存储器(SRAM)等),以及数据存储系统(218),其经由总线(230)(其可包含多个总线)彼此通信。
处理装置(202)表示一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置(202)也可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)网络处理器等。处理装置(202)配置成执行指令(226),用于执行本文讨论的操作和步骤。计算机系统(200)可以进一步包含网络接口装置(208),以通过网络(220)进行通信。
数据存储系统(218)可包含机器可读存储媒体(224)(也称为计算机可读媒体),其上存储有一或多个指令集(226)或体现本文中所描述的方法或功能中的任何一或多种的软件。在计算机系统(200)执行指令期间,指令(226)还可以全部或至少部分地驻存在主存储器(204)内和/或处理装置(202)内,主存储器(204)和处理装置(202)也构成机器可读存储媒体。机器可读存储媒体(224)、数据存储系统(218)和/或主存储器(204)可以对应于图1的存储器子系统(110)。
在一个实施例中,指令(226)包含用于实施与数据预取器(113)(例如,参考图1-5描述的数据预取器(113))相对应的功能的指令。尽管在实例实施例中将机器可读存储媒体(224)展示为单个媒体,但术语“机器可读存储媒体”应被视为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体以及磁性媒体。
已关于计算机存储器内的数据位的操作的算法和符号表示而呈现先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给本领域的其它技术人员的方式。算法在这里并且通常被认为是产生期望的结果的操作的自洽序列。操作是要求对物理量进行物理控制的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为位、值、元件、符号、字符、术语、数目或类似物是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便标签。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可以出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,如但不限于任何类型的盘(包含软盘、光盘、CD-ROM和磁性光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适合于存储电子指令的任何类型的媒体,它们各自耦合到计算机系统总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现多种这些系统的结构。此外,并不参考任何特定编程语言来描述本公开。应了解,可以使用各种编程语言来实施如本文中所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在本说明书中,为了简化描述,将各种功能和操作描述为由计算机指令执行或由计算机指令引起。然而,所属领域的技术人员将认识到,此类表达的意图是所述功能源自由一或多个控制器或处理器(例如,微处理器)执行计算机指令。替代地或组合地,所述功能和操作可使用具有或不具有软件指令的专用电路系统实施,例如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)来实施。可使用无软件指令的硬接线电路系统或结合软件指令实施实施例。因此,技术既不限于硬件电路系统和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定来源。
在前述说明书中,已参考其特定实例实施例描述了本公开的实施例。应显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。
Claims (20)
1.一种数据存储系统,其包括:
非易失性媒体;
缓冲存储器;
处理装置,其耦合到所述缓冲存储器和所述非易失性媒体;以及
数据预取器,其配置成:
接收要在所述数据存储系统中执行的命令;
提供所述命令作为预测模型的输入;
使用所述预测模型并基于所述命令,识别用于预取的至少一个命令;以及
在所述命令在数据存储装置中执行之前,
从所述非易失性存储器检索要在执行所述命令时使用的至少一数据部分;以及
将所述数据部分存储在所述缓冲存储器中。
2.根据权利要求1所述的数据存储系统,其中所述数据预取器配置成周期性地使用所述预测模型。
3.根据权利要求1所述的数据存储系统,其中所述数据预取器配置成在每次使用所述预测模型期间提供预定数目的所述命令作为所述预测模型的输入。
4.根据权利要求1所述的数据存储系统,其中所述预测模型使用监督机器学习技术训练。
5.根据权利要求4所述的数据存储系统,其中所述数据预取器配置成将所述命令的时延影响分散到大于阈值数目的命令中。
6.根据权利要求4所述的数据存储系统,其中所述数据预取器配置成在多个命令的执行期间,使用所述多个命令的所述执行不需要的资源从所述非易失性存储器检索所述数据部分并将所述数据部分存储在所述缓冲存储器中。
7.根据权利要求4所述的数据存储系统,其中如果所述数据部分在所述缓冲存储器中不可用,那么预测所述命令导致另一命令的执行时延具有大于阈值量的增加。
8.根据权利要求4所述的数据存储系统,其中所述命令由所述预测模型至少部分地基于所述命令处于预定类别而识别。
9.根据权利要求8所述的数据存储系统,其中所述预定类别的命令具有长于阈值的平均执行时延。
10.根据权利要求9所述的数据存储系统,其进一步配置成:
生成在所述数据存储系统中执行的第二命令的时延数据;
从所述时延数据识别导致所述第二命令中的至少一个的执行时延具有大于阈值量的增加的第三命令;以及
使用所述监督机器学习技术训练所述预测模型,以减少使用所述时延数据识别的第三命令和所述预测模型从所述第二命令识别的命令之间的差异。
11.一种方法,其包括:
在数据存储系统的控制器中,从主机系统接收用于在所述数据存储系统中执行的命令;
向预测模型提供所述命令作为输入;
使用所述预测模型并基于作为输入的所述命令,识别用于预取的至少一个命令;以及
在所述命令在数据存储装置中执行之前,
从数据存储媒体的非易失性存储器检索要在执行所述命令时使用的至少一数据部分;以及
将所述数据部分存储在所述数据存储系统的缓冲存储器中。
12.根据权利要求11所述的方法,其中所述预测模型使用监督机器学习技术训练。
13.根据权利要求12所述的方法,其进一步包括:
生成第一命令的执行时延数据;
从所述时延数据识别导致所述第一命令中的至少一个的执行时延具有大于阈值量的增加的第二命令;以及
使用所述监督机器学习技术训练所述预测模型,以减少使用所述时延数据识别的所述第二命令和所述预测模型从所述第一命令识别的第三命令之间的差异。
14.根据权利要求13所述的方法,其进一步包括:
计算不同类型的命令的平均执行时延;以及
比较所述第一命令的执行时延与平均值,以识别执行时延具有大于所述阈值量的增加的所述第一命令中的所述至少一个。
15.根据权利要求14所述的方法,其进一步包括:
响应于确定所述第二命令具有预定特性且所述第二命令已与所述第一命令中的所述至少一个同时执行而识别所述第二命令。
16.根据权利要求15所述的方法,其中所述预定特性包含预定命令类型、预定命令类别或高于阈值的平均执行时延,或其任何组合。
17.根据权利要求12所述的方法,其进一步包括:
将所述命令的时延影响分散到大于阈值数目的命令中。
18.根据权利要求12所述的方法,其进一步包括:
在多个命令的执行期间,使用所述多个命令的所述执行不使用的资源从所述非易失性存储器检索所述数据部分并将所述数据部分存储在所述缓冲存储器中。
19.一种存储指令的非暂时性计算机存储媒体,所述指令在由计算系统执行时使所述计算系统执行方法,所述方法包括:
接收在数据存储系统中执行的第一命令的时延数据;
从所述时延数据识别导致所述第一命令中的至少一个的执行时延具有大于阈值量的增加的第二命令;以及
使用所述监督机器学习技术训练预测模型,以减少使用所述时延数据识别的所述第二命令和所述预测模型从所述第一命令识别的第三命令之间的差异。
20.根据权利要求19所述的非暂时性计算机存储媒体,其存储其它指令,所述其它指令在由计算系统执行时使所述计算系统执行所述方法,所述方法进一步包括:
在数据存储系统的控制器中,从主机系统接收用于在所述数据存储系统中执行的待决命令;
向所述预测模型提供所述待决命令作为输入;
使用所述预测模型并基于作为输入的所述待决命令,识别用于预取的至少一个第五命令;以及
在所述第五命令在数据存储装置中执行之前,
从数据存储媒体的非易失性存储器检索要在执行所述第五命令时使用的至少一数据部分;以及
将所述数据部分存储在所述数据存储系统的缓冲存储器中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/384,618 US10852949B2 (en) | 2019-04-15 | 2019-04-15 | Predictive data pre-fetching in a data storage device |
US16/384,618 | 2019-04-15 | ||
PCT/US2020/021825 WO2020214276A1 (en) | 2019-04-15 | 2020-03-10 | Predictive data pre-fetching in a data storage device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113692579A true CN113692579A (zh) | 2021-11-23 |
CN113692579B CN113692579B (zh) | 2024-06-04 |
Family
ID=72749059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080028473.6A Active CN113692579B (zh) | 2019-04-15 | 2020-03-10 | 数据存储装置中的预测性数据预取 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10852949B2 (zh) |
CN (1) | CN113692579B (zh) |
DE (1) | DE112020001937T5 (zh) |
WO (1) | WO2020214276A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11099789B2 (en) | 2018-02-05 | 2021-08-24 | Micron Technology, Inc. | Remote direct memory access in multi-tier memory systems |
US10782908B2 (en) | 2018-02-05 | 2020-09-22 | Micron Technology, Inc. | Predictive data orchestration in multi-tier memory systems |
US11416395B2 (en) | 2018-02-05 | 2022-08-16 | Micron Technology, Inc. | Memory virtualization for accessing heterogeneous memory components |
US10880401B2 (en) | 2018-02-12 | 2020-12-29 | Micron Technology, Inc. | Optimization of data access and communication in memory systems |
US10877892B2 (en) | 2018-07-11 | 2020-12-29 | Micron Technology, Inc. | Predictive paging to accelerate memory access |
US10852949B2 (en) | 2019-04-15 | 2020-12-01 | Micron Technology, Inc. | Predictive data pre-fetching in a data storage device |
US20230051781A1 (en) * | 2021-08-16 | 2023-02-16 | International Business Machines Corporation | Data movement intimation using input/output (i/o) queue management |
CN114518849B (zh) * | 2022-02-18 | 2023-01-10 | 深圳大学 | 一种数据存储方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101421701A (zh) * | 2006-04-10 | 2009-04-29 | 苹果公司 | 使用nand闪存的直接引导配置 |
US20110238899A1 (en) * | 2008-12-27 | 2011-09-29 | Kabushiki Kaisha Toshiba | Memory system, method of controlling memory system, and information processing apparatus |
US20120041914A1 (en) * | 2010-08-16 | 2012-02-16 | Durga Deep Tirunagari | System and Method for Effective Caching Using Neural Networks |
CN106506275A (zh) * | 2016-11-09 | 2017-03-15 | 中国科学院计算技术研究所 | 一种预测交换节点目的端口传输时延的方法及装置 |
US20180059976A1 (en) * | 2016-08-26 | 2018-03-01 | Sandisk Technologies Llc | Storage System with Integrated Components and Method for Use Therewith |
Family Cites Families (172)
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 |
WO2004017220A1 (en) | 2002-08-19 | 2004-02-26 | 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 |
US8135933B2 (en) | 2007-01-10 | 2012-03-13 | Mobile Semiconductor Corporation | Adaptive memory system for enhancing the performance of an external computing device |
US8996834B2 (en) | 2007-05-21 | 2015-03-31 | International Business Machines Corporation | Memory class based heap partitioning |
US8281303B2 (en) | 2007-10-31 | 2012-10-02 | Hewlett-Packard Development Company, L.P. | Dynamic ejection of virtual devices on ejection request from virtual device resource object within the virtual firmware to virtual resource driver executing in virtual machine |
JP5238235B2 (ja) | 2007-12-07 | 2013-07-17 | 株式会社日立製作所 | 管理装置及び管理方法 |
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 |
US8316187B2 (en) | 2008-07-08 | 2012-11-20 | International Business Machines Corporation | Cache memory including a predict buffer |
US8131814B1 (en) | 2008-07-11 | 2012-03-06 | Hewlett-Packard Development Company, L.P. | Dynamic pinning remote direct memory access |
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 |
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 | 株式会社日立製作所 | データ移動管理装置及び情報処理システム |
US8719547B2 (en) | 2009-09-18 | 2014-05-06 | Intel Corporation | Providing hardware support for shared virtual memory between local and remote physical memory |
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 |
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 |
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 |
US9141528B2 (en) | 2011-05-17 | 2015-09-22 | Sandisk Technologies Inc. | Tracking and handling of super-hot data in non-volatile memory systems |
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 |
WO2013048493A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Memory channel that supports near memory and far memory access |
US20130145095A1 (en) | 2011-12-06 | 2013-06-06 | Lsi Corporation | Melthod and system for integrating the functions of a cache system with a storage tiering system |
KR20130064521A (ko) | 2011-12-08 | 2013-06-18 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 관리 방법 |
KR101850318B1 (ko) | 2011-12-09 | 2018-04-20 | 삼성전자주식회사 | 가상 메모리 관리 장치 및 방법 |
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 |
WO2013118170A1 (en) | 2012-02-08 | 2013-08-15 | Hitachi, Ltd. | Storage apparatus with a plurality of nonvolatile semiconductor storage units and control method thereof to place hot data in storage units with higher residual life and cold data in storage units with lower residual life |
US8849731B2 (en) | 2012-02-23 | 2014-09-30 | Microsoft Corporation | Content pre-fetching for computing devices |
CN102662690B (zh) | 2012-03-14 | 2014-06-11 | 腾讯科技(深圳)有限公司 | 应用程序启动方法和装置 |
US8838887B1 (en) | 2012-03-30 | 2014-09-16 | Emc Corporation | Drive partitioning for automated storage tiering |
US9043530B1 (en) | 2012-04-09 | 2015-05-26 | Netapp, Inc. | Data storage within hybrid storage aggregate |
US9996370B1 (en) | 2012-04-18 | 2018-06-12 | Open Invention Network Llc | Page swapping in virtual machine environment |
US9201779B2 (en) | 2012-06-27 | 2015-12-01 | Hitachi, Ltd. | Management system and management method |
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 |
US10514855B2 (en) | 2012-12-19 | 2019-12-24 | Hewlett Packard Enterprise Development Lp | NVRAM path selection |
US9552288B2 (en) | 2013-02-08 | 2017-01-24 | Seagate Technology Llc | Multi-tiered memory with different metadata levels |
US9672230B1 (en) | 2013-04-03 | 2017-06-06 | Ca, Inc. | Optimized placement of data |
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 |
EP3028154A4 (en) | 2013-07-29 | 2017-03-29 | Silicon Graphics International Corp. | I/o acceleration in hybrid storage |
GB2517493A (en) | 2013-08-23 | 2015-02-25 | Advanced Risc Mach Ltd | Handling access attributes for data accesses |
WO2015029102A1 (ja) | 2013-08-26 | 2015-03-05 | 株式会社日立製作所 | ストレージ装置及び階層制御方法 |
US9037753B2 (en) | 2013-08-29 | 2015-05-19 | International Business Machines Corporation | Automatic pinning and unpinning of virtual pages for remote direct memory access |
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 |
US10037222B2 (en) | 2013-09-24 | 2018-07-31 | University Of Ottawa | Virtualization of hardware accelerator allowing simultaneous reading and writing |
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 |
US20170060769A1 (en) | 2014-05-01 | 2017-03-02 | Coho Data, Inc. | Systems, devices and methods for generating locality-indicative data representations of data streams, and compressions thereof |
EP3140743B1 (en) | 2014-05-08 | 2021-11-24 | Micron Technology, INC. | Hybrid memory cube system interconnect directory-based cache coherence methodology |
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 |
US10089364B2 (en) | 2014-10-31 | 2018-10-02 | Kabushiki Kaisha Toshiba | Item recommendation device, item recommendation method, and computer program product |
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 |
US20180024853A1 (en) | 2015-02-17 | 2018-01-25 | Coho Data, Inc. | Methods, systems, devices and appliances relating to 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 |
US10025747B2 (en) | 2015-05-07 | 2018-07-17 | Samsung Electronics Co., Ltd. | I/O channel scrambling/ECC disassociated communication protocol |
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 |
CN109073350B (zh) | 2016-04-29 | 2021-07-02 | 思科技术公司 | 应用性能数据的预测性汇总和缓存 |
US10282261B2 (en) | 2016-06-20 | 2019-05-07 | Vmware, Inc. | Pooled memory heartbeat in shared memory architecture |
JP2018005446A (ja) | 2016-06-30 | 2018-01-11 | 富士通株式会社 | 情報処理装置、ストレージ制御プログラム、及びストレージ制御方法 |
US10176099B2 (en) | 2016-07-11 | 2019-01-08 | Intel Corporation | Using data pattern to mark cache lines as invalid |
US11138160B2 (en) | 2016-07-13 | 2021-10-05 | International Business Machines Corporation | Application performance using multidimensional predictive algorithm for automated tiering mechanisms |
US10083123B2 (en) | 2016-08-10 | 2018-09-25 | Vmware, Inc. | Page-fault latency directed virtual machine performance monitoring |
US10866897B2 (en) | 2016-09-26 | 2020-12-15 | Samsung Electronics Co., Ltd. | Byte-addressable flash-based memory module with prefetch mode that is adjusted based on feedback from prefetch accuracy that is calculated by comparing first decoded address and second decoded address, where the first decoded address is sent to memory controller, and the second decoded address is sent to prefetch buffer |
US10120797B1 (en) | 2016-09-30 | 2018-11-06 | EMC IP Holding Company LLC | Managing mapping metadata in storage systems |
CN108008911A (zh) | 2016-11-01 | 2018-05-08 | 阿里巴巴集团控股有限公司 | 读写请求处理方法及装置 |
TWI596541B (zh) | 2016-11-30 | 2017-08-21 | 財團法人工業技術研究院 | 資料存取系統、資料存取裝置及資料存取方法 |
US10866912B2 (en) | 2017-03-10 | 2020-12-15 | Toshiba Memory Corporation | Integrated heterogeneous solid state storage drive |
US11392488B2 (en) | 2017-04-07 | 2022-07-19 | Keysight Technologies Singapore (Sales) Pte. Ltd. | Optimizing storage of application data in memory |
US9910618B1 (en) | 2017-04-10 | 2018-03-06 | Pure Storage, Inc. | Migrating applications executing on a storage system |
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 |
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 |
US20190243787A1 (en) | 2018-02-05 | 2019-08-08 | Micron Technology, Inc. | Memory Systems having Controllers Embedded in Packages of Integrated Circuit Memory |
US20190243771A1 (en) | 2018-02-05 | 2019-08-08 | Micron Technology, Inc. | Accelerate Data Access in Memory Systems via Data Stream Segregation |
US10880401B2 (en) | 2018-02-12 | 2020-12-29 | Micron Technology, Inc. | Optimization of data access and communication in memory systems |
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 |
-
2019
- 2019-04-15 US US16/384,618 patent/US10852949B2/en active Active
-
2020
- 2020-03-10 CN CN202080028473.6A patent/CN113692579B/zh active Active
- 2020-03-10 WO PCT/US2020/021825 patent/WO2020214276A1/en active Application Filing
- 2020-03-10 DE DE112020001937.3T patent/DE112020001937T5/de active Pending
- 2020-11-03 US US17/088,360 patent/US11740793B2/en active Active
-
2023
- 2023-08-23 US US18/454,743 patent/US20230393743A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101421701A (zh) * | 2006-04-10 | 2009-04-29 | 苹果公司 | 使用nand闪存的直接引导配置 |
US20110238899A1 (en) * | 2008-12-27 | 2011-09-29 | Kabushiki Kaisha Toshiba | Memory system, method of controlling memory system, and information processing apparatus |
US20120041914A1 (en) * | 2010-08-16 | 2012-02-16 | Durga Deep Tirunagari | System and Method for Effective Caching Using Neural Networks |
US20180059976A1 (en) * | 2016-08-26 | 2018-03-01 | Sandisk Technologies Llc | Storage System with Integrated Components and Method for Use Therewith |
CN106506275A (zh) * | 2016-11-09 | 2017-03-15 | 中国科学院计算技术研究所 | 一种预测交换节点目的端口传输时延的方法及装置 |
Non-Patent Citations (1)
Title |
---|
从明;安虹;张军;任永青;: "利用数据预取机制降低块执行模型的访存延迟", 小型微型计算机系统, no. 08 * |
Also Published As
Publication number | Publication date |
---|---|
WO2020214276A1 (en) | 2020-10-22 |
US20230393743A1 (en) | 2023-12-07 |
US20200326851A1 (en) | 2020-10-15 |
US10852949B2 (en) | 2020-12-01 |
US11740793B2 (en) | 2023-08-29 |
DE112020001937T5 (de) | 2022-01-13 |
CN113692579B (zh) | 2024-06-04 |
US20210048947A1 (en) | 2021-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11669260B2 (en) | Predictive data orchestration in multi-tier memory systems | |
CN113692579B (zh) | 数据存储装置中的预测性数据预取 | |
US11573901B2 (en) | Predictive paging to accelerate memory access | |
US10782916B2 (en) | Proactive return of write credits in a memory system | |
KR20200108363A (ko) | 집적 회로 메모리의 패키지에 내장된 컨트롤러를 갖는 메모리 시스템 | |
US11740833B2 (en) | Throttle response signals from a memory system | |
US12039192B2 (en) | Efficient buffer management for media management commands in memory devices | |
WO2023022776A1 (en) | Data migration schedule prediction using machine learning | |
US11681909B2 (en) | Memory component with a bus to transmit data for a machine learning operation and another bus to transmit host data | |
US11263156B2 (en) | Memory component with a virtualized bus and internal logic to perform a machine learning operation | |
US11769076B2 (en) | Memory sub-system with a virtualized bus and internal logic to perform a machine learning operation | |
US11694076B2 (en) | Memory sub-system with internal logic to perform a machine learning operation | |
US20210110249A1 (en) | Memory component with internal logic to perform a machine learning operation | |
US11676010B2 (en) | Memory sub-system with a bus to transmit data for a machine learning operation and another bus to transmit host data | |
US20210034241A1 (en) | Storing data based on a probability of a data graph |
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 |