CN112286843A - 数据存储***的***和方法 - Google Patents

数据存储***的***和方法 Download PDF

Info

Publication number
CN112286843A
CN112286843A CN202011204636.XA CN202011204636A CN112286843A CN 112286843 A CN112286843 A CN 112286843A CN 202011204636 A CN202011204636 A CN 202011204636A CN 112286843 A CN112286843 A CN 112286843A
Authority
CN
China
Prior art keywords
command
data
address
commands
storage system
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
CN202011204636.XA
Other languages
English (en)
Other versions
CN112286843B (zh
Inventor
廖裕民
范科伟
明淼晶
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.)
Shenzhen Anjilite New Technology Co ltd
Original Assignee
Shenzhen Anjili New Technology Co ltd
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 Shenzhen Anjili New Technology Co ltd filed Critical Shenzhen Anjili New Technology Co ltd
Publication of CN112286843A publication Critical patent/CN112286843A/zh
Application granted granted Critical
Publication of CN112286843B publication Critical patent/CN112286843B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

提供了用于确定与存储***中的命令相关联的数据是热还是冷的***、装置和方法。一种装置可以包括:被耦合到主机的第一接口和电路,其被配置为经由第一接口从主机接收命令。该命令可以包含用于在数据存储***中进行数据存储的地址和与该命令相关联的数据大小的长度。电路可以进一步被配置为将命令分类到多个集群中的一个集群,获得集群中的多个历史命令,并使用机器学习模型来确定与该命令相关联的数据是热还是冷。命令的地址和长度以及多个历史命令的地址和长度可以用作机器学习模型的输入特征。

Description

数据存储***的***和方法
技术领域
本公开涉及数据存储,尤其涉及包含闪存的数据存储***。
背景技术
大多数计算***具有用于存储数据的存储器。随着存储技术的发展,许多现代数据存储设备使用诸如闪存之类的存储设备来代替更常规的磁存储。存储设备没有活动部件(moving parts),因此具有出色的稳定性、耐用性、高信息访问速度和低功耗。具有这种优点的数据存储设备的示例包括通用串行总线(USB)驱动器,具有各种接口的存储卡以及固态驱动器(SSD)。为了提高闪存产品的有效性和寿命,需要改进的方法和存储***。
发明内容
所公开的主题涉及可以决定与在存储***中接收的命令相关联的数据是热还是冷的***、方法和装置。在示例性实施例中,提供了一种装置,该装置可以包括耦合到主机的第一接口和电路,该电路被配置为:通过所述第一接口从所述主机接收命令,所述命令包括用于在数据存储***中存储数据的地址和用于与该命令相关联的数据大小的长度;将所述命令分类到多个集群中的一个集群;获取所述集群中的多个历史命令;和将所述命令的地址和长度以及所述多个历史命令的地址和长度作为机器学习模型的输入特征,使用所述机器学习模型来确定与所述命令关联的数据是热数据还是冷数据。
在另一个示例性实施例中,提供了一种方法,包括:在数据存储***中接收命令,所述命令包含用于在所述数据存储***中存储数据的地址和用于与所述命令相关联的数据大小的长度;将所述命令分类到多个集群中的一个集群;获取所述集群中的多个历史命令;和将所述命令的地址和长度以及所述多个历史命令的地址和长度作为机器学习模型的输入特征,使用所述机器学习模型来确定与所述命令关联的数据是热数据还是冷数据。
在又一实施例中,可以提供一个或多个用计算机可执行指令编码的非暂时性计算机可读介质,该计算机可执行指令在被执行时使至少一个处理器执行包括以下内容的动作:在数据存储***中接收命令,所述命令包含用于在所述数据存储***中存储数据的地址和用于与所述命令相关联的数据大小的长度;将所述命令分类到多个集群中的一个集群;获取所述集群中的多个历史命令;和将所述命令的地址和长度以及所述多个历史命令的地址和长度作为机器学习模型的输入特征,使用所述机器学习模型来确定与所述命令关联的数据是热数据还是冷数据。
附图简要说明
图1示意性地示出了根据本公开的一个实施例的存储***。
图2示意性地示出了根据本公开的一个实施例的热/冷数据确定。
图3示意性地示出了根据本公开的一个实施例的另一种神经网络。
图4是根据本公开的一个实施例的用于确定热/冷数据的过程的流程图。
具体实施方式
现在将参考附图详细描述根据本申请的具体实施例。为了一致性,各个图中的相同元件由相同的附图标记表示。
图1示意性地示出了根据一个实施例的示例性存储***100。存储***100可以包括存储控制器102和一个或多个非易失性存储设备104.1至104.M。存储控制器102可以包括第一接口110、第二接口112、微控制器单元(MCU)114和可选的加速器116。第一接口110可以是被配置为将存储***100耦合到主机(例如,计算***)并且从主机接收数据并向主机发送数据的任何现有接口或尚待开发的接口。在一个实施例中,例如,第一接口110可以是高级可扩展接口(AXI)。在另一个实施例中,第一接口110可以是主机访问存储***的另一个合适的接口。第二接口112可以是被配置为将存储控制器耦合到一个或多个存储设备的任何现有接口或尚待开发的接口。在一个实施例中,第二接口112可以是被配置为在多个通道上并行地传送编码数据(例如,纠错编码(ECC)码字)的多通道接口。例如,第二接口112可以是开放式NAND闪存接口(ONFI),其可以支持不同的协议(例如,非易失性双倍数据速率(NVDDR)、NVDDR类型2(NVDDR2)、NVDDR类型3(NVDDR3),以及Toggle协议)并以不同的传输速度运行。
非易失性存储设备104.1至104.M可以是非易失性存储设备(NVM)。在一实施例中,可能只有一个非易失性存储设备104.1。在另一实施例中,可以存在具有非易失性存储设备104.2至104.M(以虚线示出)的一个以上的非易失性存储设备。当存在多个非易失性存储设备时,M可以是大于1的正整数,例如2、3、4或更大的数。在各种实施例中,存储***100可以是USB、SSD或包括NVM的任何其他合适的存储***。
主机可以经由第一接口110使用数据存储***100执行各种数据处理任务和操作。在一个实施例中,主机可以使用逻辑块地址(LBA)来指定存储在数据存储设备上的数据块的位置。LBA可以是线性寻址方案,其中块可以按整数索引定位,例如,第一个块是LBA 0,第二个是LBA 1,依此类推。当主机想要向存储***读取或写入数据时,主机可以发出具有LBA和长度的读取或写入命令到存储***。
在一些实施例中,从LBA到物理地址的映射可以由MCU 114执行。MCU 114可以是被配置为执行可执行指令(例如,软件或固件)的计算机处理器。在各种实施例中,MCU 114可以是微处理器、微控制器、现场可编程门阵列(FPGA),或专用IC(ASIC)或图形处理单元(GPU)。并非所有实施例都可以具有可选的加速器116。在提供加速器116的实施例中,一些计算任务可以由加速器116执行。加速器116可以由微处理器、微控制器、FPGA、ASIC或GPU来实现。
数据可以存储在非易失性存储设备104.1至104.M中的物理块的物理页面上。主机使用的逻辑块由存储控制器102映射或转换为物理地址。应当注意,由主机发送的数据可以在存储控制器102处被编码(例如,ECC编码)成码字,并且码字被保存到非易失性存储设备。因此,在一些实施例中,存储控制器102可以包括一个或多个ECC编码器和一个或多个ECC解码器。
但是,诸如闪存设备的非易失性存储设备具有一些独特的特性。例如,闪存必须先被擦除,然后再写入。在一个实施例中,擦除大小可以是块,其大于作为写操作的单位大小的页面。可以在进行重写之前执行垃圾回收(garbage collection)过程。在垃圾回收期间,要擦除的块中具有有效数据的页面将在另一个先前擦除的块中进行读取和重写,然后整个块将被擦除并准备好用于新数据。
可以根据访问特性将存储在非易失性存储设备104.1至104.M上的数据分类为热或冷。例如,存储在某个LBA上的数据在当主机(例如,主机计算***的操作***(OS))频繁访问该数据时,可能是热数据,并且存储在某个LBA上的数据在当主机(例如,主机计算***的操作***(OS))很少访问该数据时,可能是冷数据。热/冷数据可能有四类:热写入、热读取、冷写入和冷读取。热写入可能是指经常写入某个LBA的数据。热读取可能是指频繁从某个LBA读取的数据。冷写入可能是指很少写入某个LBA的数据。冷读取可能是指很少从某个LBA读取的数据。
存储***100可以被配置为具有热/冷数据判断的机制以具有更佳的效率。例如,存储***100可以执行垃圾回收,在此期间可以拾取某些块以进行擦除。如果为擦除而选择的块具有有效数据,则该有效数据需要保存到其他块。在一个实施例中,存储控制器102可以被配置为确定存储块中的数据是热还是冷,以及是否选择该块用于垃圾回收。例如,如果一个块包含一个或多个页面的热写入数据,则该数据可能会在不久的将来被修改,并且包含该数据的一个或多个页面将很快被标记为无效。因此,存储控制器102可以确定该块不是垃圾回收的良好候选者,并且当该块中的所有页面变为无效时,可以直接擦除该块。
此外,存储***100可以提供磨损均衡(Wear leveling)。闪存可以仅被编程(例如写入)和被擦除有限的次数,这可以被称为最大编程/擦除(P/E)周期。如果对存储块进行了反复编程并擦除,则该存储块可能很快就会磨损。磨损均衡可以将写入尽可能均匀地分布在非易失性存储设备中的所有块上。在一个实施例中,可以从块中移出冷写入数据,以便可以将这些块用于热写入数据,从而更均匀地增加所有块的P/E周期,并获得存储设备的改善的磨损均衡。
此外,存储***100可以提供用于存储的超额配置(overprovisioning),使得所提供的存储大小可以大于标称值。例如,存储***可以名义上提供4GB的存储空间(例如,用户容量),但是可以提供5GB的存储空间(例如,物理容量)。在此示例中,存储***提供了20%的超额配置(例如(物理容量–用户容量)/用户容量)。超额配置可以允许存储***为垃圾回收和磨损均衡保留一些块。实现热/冷确定的实施例可以减少垃圾回收的机会,并且更均匀地放置频繁写入的数据,因此可以减少超额配置率。
在又一示例中,多个非易失性存储设备104.1至104.M可以包括不同类型的NAND,例如快速NAND(例如,单层单元(SLC))和慢速NAND(例如,四层单元(QLC))。快速NAND可能具有更快的读取/编程时间和更多的PE周期,但价格昂贵且容量较小。慢速NAND可能具有更大的容量,但PE周期更少,读取/编程时间更长。存储控制器102可以被配置为将热数据存储到快速NAND,并且将冷数据存储到慢速NAND以提高整体性能。
应当注意,根据本公开的实施例可以包括提高存储***100的效率和寿命的许多应用。垃圾回收,超额配置,磨损均衡,将热数据或冷数据存储到不同类型的NVM都是非限制性示例。
当主机向存储***100发送数据或从存储***100读取数据时,主机可以发出带有指定数据存储位置的LBA和指定数据存储大小的长度的写入或读取命令。例如,主机可以发布地址为LBA 100且长度为5的写入命令,以将数据写入5个逻辑块(例如,写入LBA 100至LBA 104),或者主机可以发布地址为LBA 002且长度为2的读命令,以便从2个逻辑块(例如,从LBA 2和LBA 003读取)读取。根据本公开的实施例可以确定与命令相关联的数据是热还是冷。
图2示意性地示出了根据本公开的一个实施例的在存储控制器102中实现的热/冷数据确定。存储控制器102可以接收用于访问数据存储的命令(例如,经由第一接口110)。该命令可以包括地址(例如,LBA)和长度(例如,与命令相关联的数据的大小),并且可以具有时序(例如,基于主机的CPU时钟发出命令的时间)。
该命令可以是用于将与该命令关联的数据写入数据存储器的写入命令,或者是用于从数据存储器读取与该命令关联的数据的读取命令。存储控制器102可以获得与该地址相关联的命令间隔(age)。例如,存储控制器102可以保持对该地址的先前访问的记录,并且将记录保存在临时存储器中(例如,存储控制器102中的寄存器或内存,未示出)。存储控制器102可以获取对该地址的最新访问,并计算该命令与该最新访问之间的命令间隔。在一个实施例中,命令间隔可以是当前命令与针对相同地址的最新访问之间的索引差。例如,当前命令可以是来自主机的第20个命令(例如,索引为20),并且存储控制器102可以遍历先前的命令(例如,索引为19、18、17等的命令)并查找具有相同LBA地址的第12个命令。然后,命令间隔可能是八(8)(例如,20减去12)。在另一个实施例中,命令间隔可以是当前命令与具有相同地址的最新命令之间的时序差。
在一个实施例中,当前命令的地址可以被发送到集群机202作为其输入。在另一个实施例中,当前命令的地址和长度可以作为其输入发送到集群机202。在又一个实施例中,地址、长度和命令间隔信息可以作为输入发送到集群机202。集群机202可以被配置为将命令分类到多个集群204.1至204.N之一,其中,N可以是大于1的正整数。在一些实施例中,可以将数字N选择为大数而与实际使用环境无关,例如,可以将数字N选择为50或100。大数字N可以提供良好的性能,但它可能需要硬件和/或软件资源来支持这种配置。在至少一个实施例中,可以基于使用环境来选择数字N。例如,如果存储***100将与运行很少的应用程序的主机一起使用,则可以将数字N选择为接近几个应用程序的数目的低数字。如果存储***100将与运行很多应用程序的主机一起使用,则可以将数字N选择为接近许多应用程序的数目的高数字。在一个实施例中,例如,存储***100可以被配置为使用存储性能理事会(SPC)联机事务处理(OLTP)财务数据集(例如,业内已知的“Financial1.spc”)进行基准性能测试。该测试数据集提供了联机事务处理数据的I/O命令的集合。测试数据集可以包括24个应用程序,称为应用程序特定单位(ASU)。在此测试数据集用法中,存储***100的数字N设置为25可能比小于24的数字(例如5或10)具有更好的性能。
在一些实施例中,可以通过机器学习集群模型来实现集群机202,例如但不限于,K均值集群机,其中,K可以是正数N,并且可以通过常规的K均值集群技术来确定。在一个实施例中,机器学习集群模型可以由MCU 114实现。例如,机器学习集群模型可以用软件编程,并且MCU 114可以执行软件程序指令以将来自主机的命令分类到多个K集群之一。在另一个实施例中,机器学习集群模型可以例如通过ASIC、FPGA、GPU或它们的组合以硬件来实现。例如,在一些实施例中,加速器116可以被配置为实现机器学习集群模型。在又一个实施例中,机器学习集群模型可以通过软件和硬件的组合来实现。
一旦集群机202将命令分类到集群中,存储控制器102就可以获得该集群的历史信息。例如,存储控制器102可以保留所有集群的先前命令的记录(例如,在存储控制器102中的寄存器或内存中,未示出),并且可以获取预定数量的先前命令。在一个实施例中,获取到的信息可以包括地址、长度、索引、时序(发送命令的时间)或根据预定数量的最新命令集合的命令间隔。热/冷预测器206可以将命令(例如,当前命令)的地址、长度和命令间隔以及历史命令的地址、长度和命令间隔作为输入,以确定与命令相关联的数据是热还是冷。
在一些实施例中,热/冷预测器206可以通过机器学习模型(例如,神经网络)来实现。在一个实施例中,机器学习模型可以由MCU 114实现。例如,机器学习模型可以用软件编程,并且MCU 114可以执行软件程序指令以确定与当前命令相关联的数据是热还是冷。在另一个实施例中,机器学习模型可以用硬件实现,例如,ASIC、FPGA、GPU,或者ASIC、FPGA和GPU的组合。例如,在一些实施例中,加速器116可以被配置为实现热/冷预测器206。在又一个实施例中,机器学习模型可以通过软件和硬件的组合来实现。
在一些实施例中,命令的地址、长度和命令间隔以及历史命令的地址、长度和命令间隔可以用作对热/冷预测器206的机器学习模型的输入。用于热/冷预测器206的历史命令的最新命令的数量可以是机器学习模型的超参数。在一个实施例中,可以基于存储控制器中可用的资源来选择最新命令的数量,例如,用于保存先前命令的记录的存储容量,功耗,用于热/冷预测器206的计算资源。
应当注意,当访问存储设备(例如,NAND 104.1至104.M之一)时,存储控制器102可以将命令中的逻辑地址映射到存储设备中的物理地址。然而,热/冷的确定不干扰该映射,并且可以用于有效地管理存储设备(例如,用于垃圾回收,超额配置或磨损均衡)。
图3示意性地示出了根据本公开的实施例的神经网络300。神经网络300可以包括被称为人工神经元的连接单元或节点的集合,其对生物脑中的神经元进行松散建模。神经网络300的神经元可以分为三层:输入层302、隐藏层304和输出层306。输入层302可以包括被配置为接收输入信号的神经元,其可以被称为输入特征。隐藏层304可以包括在输入层302和输出层306之间的一层或多层神经元。输出层306可以包括一个或多个神经元,以基于输入条件输出信号。在一些实施例中,两个神经元之间的连接处的信号可以是实数。每个神经元的输出可以通过激活函数来计算,该激活函数可以是其输入的和的非线性函数。激活函数的非限制性示例可以包括Sigmoid、Tanh、整流线性单元(ReLU)和Leaky-ReLU。在一个实施例中,输出层306可以包括一个神经元,以输出标签,该标签指示与命令相关联的数据是热还是冷。
热/冷预测器206的机器学习模型可以具有损失函数。在一实施例中,损失函数可以是均方误差(MSE):
Figure BDA0002756626450000081
其中,“n”可以是数据点的维数或输出层中输出节点的数目(例如,热/冷预测器中为1),Yi可以是与正被预测的命令(例如,当前命令)相关联的数据热或冷的标签值,
Figure BDA0002756626450000091
可以是热或冷的(通过神经网络)预测值。在一个实施例中,可以使用已知算法,例如基于窗口的直接访问计数(WDAC)来获得与数据集中的命令相关联的数据的热或冷的标签值。可以使用神经网络的常规或任何合适的训练和优化过程来训练和优化热/冷预测器206的机器学习模型。在一个实施例中,训练和优化过程可以包括:应用输入数据并且将计算出的数据传播到输出;使用损失函数来计算标签值和预测值之间的损失;执行误差的反向传播;以及使用梯度算法来优化神经网络的参数。可以重复该过程,直到损失小于预定义的损失阈值或训练时期超过预定义的时期阈值为止。在一些实施例中,可能存在用于在验证过程中对训练结果进行概要分析的验证数据集,用于在测试过程中测试神经网络的测试数据集,或该两者。
在一些实施例中,在初始训练过程之后,可以通过在线学习过程进一步训练神经网络以调整其参数。例如,在存储***100已经投入使用之后,存储控制器102可以被配置为连续地或间歇地利用工作数据来调整神经网络的参数。
在一个实施例中,输入层302可以包括多个神经元,以接收包括命令(例如,当前命令)的地址、长度、命令间隔以及多个历史命令的地址、长度、命令间隔的输入特征。在一个实施例中,除了该命令和历史命令的地址、长度、命令间隔之外,对热/冷预测器206的输入还可以包括访问间隔新近度(inter-reference recency,IRR),其可以是与所考虑的命令具有相同地址的最新命令的命令间隔。例如,一个地址(例如,LBA 001)可能会在时间t0,t1,t2,t3出现在索引为i0,i1,i2和i3的命令中,然后对于时间t2时的命令,其命令间隔可能是i2-i1(或基于时序为t2-t1)或IRR可以是i1-i0(或基于时序为t1-t0),对于时间t3时的命令,其命令间隔可以是i3-i2(或基于时序为t3-t2),其IRR可以是i2-i1(或基于时序为t2-t1)。在该实施例中,对热/冷预测器206的输入可以包括该命令和历史命令的地址、长度、命令间隔和IRR。
应当注意,在一些实施例中,IRR可以被称为一阶新近度,并且机器学习模型的输入特征可以进一步包括一个或多个更高阶新近度。例如,第二阶新近度可以是倒数第二个命令的命令间隔,并且第三阶新近度可以是倒数第三个命令的命令间隔。以在时间t0,t1,t2,t3时的索引为i0,i1,i2和i3的命令中的地址相同的示例为例,在时间t3时的命令的命令间隔可以为i3-i2(或基于时序为t3-t2),其IRR(或一阶新近度)可以为i2-i1(或基于时序为t2-t1),其二阶新近度可以为i1-i0(或基于时序为t1-t0)。在该实施例中,对热/冷预测器206的输入可以包括该命令和历史命令的地址、长度、命令间隔、一阶新近度以及一个或多个更高阶新近度。
在一些实施例中,对热/冷预测器206的输入可以进一步包括用于当前和历史命令的操作码,其指示各个命令是写入还是读取。
在一个实施例中,实现热/冷预测器206的神经网络在输入层可以具有100个神经元。100个神经元可以从同一集群的当前命令和19个先前命令中获取五个输入特征。五个输入功能可能是地址、长度、命令间隔、IRR和操作码(例如,写入或读取)。隐藏层可以包括5个不同的层,每个层具有多个节点。输出层可包括一个输出神经元。对于训练过程,损失函数可以是均方误差,批(batch)大小可以是128,时期(epoch)可以是1(例如,一次遍历整个数据集),梯度算法的学习率可以是0.001,激活函数可能是Leaky-ReLU。在使用SPC OLTP数据集(例如,“Financial1.spc”数据集)和WDAC进行的基准测试中,对于总共350508条测试命令,总体准确性可以达到99.86%,其中147925条命令包含热数据的准确性可以达到99%,而202583条命令包含冷数据的准确性可以达到99%。
图4是根据本公开的一个实施例的用于确定热/冷数据的过程400的流程图。在框402中,可以在数据存储***中接收命令。例如,存储控制器102可以经由第一接口110从主机接收用于读取或写入的存储器访问命令(例如,读取或写入命令)。该命令可以包含用于在数据存储***中进行数据存储的地址(例如,LBA)以及与该命令相关联的数据大小的长度。在框404中,命令可以被分类到多个集群之一。例如,主机计算***可能正在运行许多应用程序,并且每个应用程序可能具有不同的内存访问模式。存储控制器102可以使用集群机(例如,诸如K-均值集群机的机器学习集群模型)来生成多个集群,并且可以使用集群机将命令分类到多个集群之一。在一个实施例中,分类可以基于命令的地址(例如,LBA)、长度和命令间隔。
在框406中,可以获得集群的多个历史命令。例如,存储控制器102可以被配置为保存先前命令的记录。一旦命令被分类到集群,就可以从存储器(例如,内存或寄存器)获得被分类为相同集群的多个先前命令。如本文所述,多个历史命令可以包括已经分类到该集群中的预定数量的最近命令。在框408中,可以使用机器学习模型来确定与命令相关联的数据是热还是冷。命令的地址和长度以及多个历史命令的地址和长度可以用作机器学习模型的输入特征。
应当理解,在一些实施例中,除了图1中所示的那些模块之外,存储控制器102可以包括更少或更多的模块。此外,本文描述的技术可以以硬件、软件或硬件和软件的组合来实现。在硬件或软件中实现上述技术的任何部分的选择可以取决于实现的要求。例如,过程400可以是由专用集成电路(ASIC)处理的固件的形式,该专用集成电路可以被集成到电路板中。可选地,过程400可以采用包括在可编程逻辑器件(例如,现场可编程门阵列)中的一个或多个逻辑块的形式。此外,过程400或过程400的至少一部分可以通过计算机软件指令来实现,并且可以被编码在易失性存储器、非易失性存储器、RAM、闪存、ROM、EPROM或任何其他形式的非暂时性计算机可读存储介质中。
在示例性实施例中,提供了一种装置,该装置可以包括耦合到主机的第一接口和电路,被配置为:通过所述第一接口从所述主机接收命令,所述命令包含用于在数据存储***中存储数据的地址和与该命令相关联的数据大小的长度;将所述命令分类到多个集群中的一个集群;获取所述集群中的多个历史命令;和将所述命令的地址和长度以及所述多个历史命令的地址和长度作为机器学习模型的输入特征,使用所述机器学习模型来确定与所述命令关联的数据是热数据还是冷数据
在一个实施例中,所述命令被至少部分地基于所述地址分类。
在一个实施例中,该装置可以进一步包括第二接口,其耦合到所述数据存储***的一个或多个存储设备,其中,所述电路进一步被配置为将所述地址映射到所述数据存储***中的物理地址并通过第二接口访问所述物理地址。
在一个实施例中,所述电路可以包括用于所述机器学习模型的加速器。
在一个实施例中,所述输入特征还包括所述命令和历史命令的命令间隔和访问间隔新近度(IRR)。
在一个实施例中,所述输入特征还包括所述命令和历史命令的指示各个命令是写入还是读取的操作码。
在一个实施例中,所述输入特征还包括针对所述命令和历史命令的一个或多个更高阶新近度。
在一个实施例中,所述电路被配置为实现机器学习集群模型,以对所述命令进行分类。
在另一个示例性实施例中,提供了一种方法,包括:在数据存储***中接收命令,所述命令包含用于在所述数据存储***中存储数据的地址和与所述命令相关联的数据大小的长度;将所述命令分类到多个集群中的一个集群;获取所述集群中的多个历史命令;和将所述命令的地址和长度以及所述多个历史命令的地址和长度作为机器学习模型的输入特征,使用所述机器学习模型来确定与所述命令关联的数据是热数据还是冷数据。
在一个实施例中,所述命令至少部分地基于所述地址被分类。
在一个实施例中,该方法可以进一步包括将所述地址映射到所述数据存储***中的物理地址并访问所述物理地址。
在一个实施例中,所述输入特征可以进一步包括所述命令和历史命令的命令间隔和访问间隔新近度(IRR)。
在一个实施例中,所述输入特征可以进一步包括所述命令和历史命令的指示各个命令是写入还是读取的操作码。
在一个实施例中,所述输入特征可以还包括针对所述命令和历史命令的一个或多个更高阶新近度。
在一个实施例中,使用机器学习集群模型来将命令分类到所述多个集群中的一个集群。
在一个实施例中,该方法可以进一步包括通过执行在线学习来调整所述机器学习模型的参数。
在一个实施例中,所述多个历史命令包括预定数量的最新命令,并且所述预定数量是所述机器学习模型的超参数。
在又一实施例中,可以提供一个或多个用计算机可执行指令编码的非暂时性计算机可读介质,该计算机可执行指令在被执行时使至少一个处理器执行包括以下内容的动作:在数据存储***中接收命令,所述命令包含用于在所述数据存储***中存储数据的地址和用于与所述命令相关联的数据大小的长度;将所述命令分类到多个集群中的一个集群;获取所述集群中的多个历史命令;和将所述命令的地址和长度以及所述多个历史命令的地址和长度作为机器学习模型的输入特征,使用所述机器学习模型来确定与所述命令关联的数据是热数据还是冷数据。
在一个实施例中,所述命令可以至少部分地基于所述地址而被分类。
在一个实施例中,所述输入特征还可以包括所述命令和历史命令的命令间隔和访问间隔新近度(IRR)。
任何公开的方法和操作可以被实现为存储在一个或多个计算机可读存储介质(例如,非暂时性计算机可读介质,例如,一个或更多个光盘介质,易失性存储组件(例如DRAM或SRAM),或非易失性存储组件(例如硬盘驱动器)上并在设备控制器(例如,ASIC执行的固件)上执行的计算机可执行指令(例如,本文描述的操作的软件代码)。可以将用于实现所公开的技术的任何计算机可执行指令以及在所公开的实施例的实现期间创建和使用的任何数据可以存储在一个或多个计算机可读介质(例如,非暂时性计算机可读介质)上。
如这里所使用的,非易失性存储设备可以是计算机存储设备,其可以在断电之后保留存储的信息,并且可以在重新通电(关闭和重新打开)之后获取所存储的信息。非易失性存储设备可以包括软盘、硬盘驱动器、磁带、光盘、NAND闪存、NOR闪存、磁阻随机存取存储器(MRAM)、电阻随机存取存储器(RRAM)、相变随机存取存储器(PCRAM)、Nano-RAM。在说明书中,可以使用NAND闪存作为所提出的技术的示例。然而,根据本说明书公开的各种实施例可以利用其他种类的非易失性存储设备来实现这些技术。
尽管本文已经公开了各个方面和实施例,但是其他方面和实施例对于本领域技术人员将是显而易见的。本文所公开的各个方面和实施例是出于说明的目的,而不是旨在进行限制,真实的范围和精神由所附权利要求书指示。

Claims (20)

1.一种装置,其特征在于,包括:
耦合到主机的第一接口;和
电路,被配置为:
通过所述第一接口从所述主机接收命令,所述命令包含用于在数据存储***中存储数据的地址和与该命令相关联的数据大小的长度;
将所述命令分类到多个集群中的一个集群;
获取所述集群中的多个历史命令;和
将所述命令的地址和长度以及所述多个历史命令的地址和长度作为机器学习模型的输入特征,使用所述机器学习模型来确定与所述命令关联的数据是热数据还是冷数据。
2.根据权利要求1所述的装置,其特征在于,所述命令被至少部分地基于所述地址分类。
3.根据权利要求1所述的装置,其特征在于,进一步包括第二接口,其耦合到所述数据存储***的一个或多个存储设备,其中,所述电路进一步被配置为将所述地址映射到所述数据存储***中的物理地址并通过所述第二接口访问所述物理地址。
4.根据权利要求1所述的装置,其特征在于,所述电路包括用于所述机器学习模型的加速器。
5.根据权利要求1所述的装置,其特征在于,所述输入特征还包括所述命令和历史命令的命令间隔和访问间隔新近度(IRR)。
6.根据权利要求5所述的装置,其特征在于,所述输入特征还包括所述命令和历史命令的指示各个命令是写入还是读取的操作码。
7.根据权利要求5所述的装置,其特征在于,所述输入特征还包括用于所述命令和历史命令的一个或多个更高阶新近度。
8.根据权利要求1所述的装置,其特征在于,所述电路被配置为实现机器学习集群模型,以对所述命令进行分类。
9.一种方法,其特征在于,包括:
在数据存储***中接收命令,所述命令包含用于在所述数据存储***中存储数据的地址和与所述命令相关联的数据大小的长度;
将所述命令分类到多个集群中的一个集群;
获取所述集群中的多个历史命令;和
将所述命令的地址和长度以及所述多个历史命令的地址和长度作为机器学习模型的输入特征,使用所述机器学习模型来确定与所述命令关联的数据是热数据还是冷数据。
10.根据权利要求9所述的方法,其特征在于,所述命令至少部分地基于所述地址被分类。
11.根据权利要求9所述的方法,其特征在于,进一步包括将所述地址映射到所述数据存储***中的物理地址并访问所述物理地址。
12.根据权利要求9所述的方法,其特征在于,所述输入特征还包括所述命令和历史命令的命令间隔和访问间隔新近度(IRR)。
13.根据权利要求12所述的方法,其特征在于,所述输入特征还包括所述命令和历史命令的指示各个命令是写入还是读取的操作码。
14.根据权利要求12所述的方法,其特征在于,所述输入特征还包括针对所述命令和历史命令的一个或多个更高阶新近度。
15.根据权利要求9所述的方法,其特征在于,使用机器学习集群模型来将所述命令分类到所述多个集群中的一个集群。
16.根据权利要求9所述的方法,其特征在于,还包括:通过执行在线学习来调整所述机器学习模型的参数。
17.根据权利要求9所述的方法,其特征在于,所述多个历史命令包括预定数量的最新命令,并且所述预定数量是所述机器学习模型的超参数。
18.一个或多个用计算机可执行指令编码的非暂时性计算机可读存储介质,其特征在于,当计算机可执行指令在被执行时使至少一个处理器执行包括以下内容的动作:
在数据存储***中接收命令,所述命令包含用于在所述数据存储***中存储数据的地址和与所述命令相关联的数据大小的长度;
将所述命令分类到多个集群中的一个集群;
获取所述集群中的多个历史命令;和
将所述命令的地址和长度以及所述多个历史命令的地址和长度作为机器学习模型的输入特征,使用所述机器学习模型来确定与所述命令关联的数据是热数据还是冷数据。
19.根据权利要求18所述的非暂时性计算机可读存储介质,其特征在于,所述命令至少部分地基于所述地址被分类。
20.根据权利要求18所述的非暂时性计算机可读存储介质,其特征在于,所述输入特征还包括所述命令和历史命令的命令间隔和访问间隔新近度(IRR)。
CN202011204636.XA 2020-08-12 2020-11-02 数据存储***的***和方法 Active CN112286843B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010796604 2020-08-12
CN2020107966047 2020-08-12

Publications (2)

Publication Number Publication Date
CN112286843A true CN112286843A (zh) 2021-01-29
CN112286843B CN112286843B (zh) 2022-04-08

Family

ID=74353982

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011204636.XA Active CN112286843B (zh) 2020-08-12 2020-11-02 数据存储***的***和方法

Country Status (1)

Country Link
CN (1) CN112286843B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101526923A (zh) * 2009-04-02 2009-09-09 成都市华为赛门铁克科技有限公司 一种数据处理方法、装置和闪存存储***
CN102222046A (zh) * 2011-06-09 2011-10-19 清华大学 一种磨损均衡方法及装置
CN102799534A (zh) * 2012-07-18 2012-11-28 上海宝存信息科技有限公司 基于固态存储介质的存储***及方法、冷热数据识别方法
US8425287B2 (en) * 2007-01-23 2013-04-23 Schneider Electric It Corporation In-row air containment and cooling system and method
CN103455283A (zh) * 2013-08-19 2013-12-18 华中科技大学 一种混合存储***
CN104933153A (zh) * 2015-06-24 2015-09-23 华中科技大学 一种基于协作的固态盘存储***性能提高方法
CN108563730A (zh) * 2018-04-04 2018-09-21 北京蓝杞数据科技有限公司天津分公司 一种冷热数据自动切换方法、装置、电子设备及存储介质
CN110716883A (zh) * 2018-07-13 2020-01-21 爱思开海力士有限公司 存储器***及其操作方法
CN111352857A (zh) * 2018-12-21 2020-06-30 爱思开海力士有限公司 存储器***及其操作方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8425287B2 (en) * 2007-01-23 2013-04-23 Schneider Electric It Corporation In-row air containment and cooling system and method
CN101526923A (zh) * 2009-04-02 2009-09-09 成都市华为赛门铁克科技有限公司 一种数据处理方法、装置和闪存存储***
CN102222046A (zh) * 2011-06-09 2011-10-19 清华大学 一种磨损均衡方法及装置
CN102799534A (zh) * 2012-07-18 2012-11-28 上海宝存信息科技有限公司 基于固态存储介质的存储***及方法、冷热数据识别方法
CN103455283A (zh) * 2013-08-19 2013-12-18 华中科技大学 一种混合存储***
CN104933153A (zh) * 2015-06-24 2015-09-23 华中科技大学 一种基于协作的固态盘存储***性能提高方法
CN108563730A (zh) * 2018-04-04 2018-09-21 北京蓝杞数据科技有限公司天津分公司 一种冷热数据自动切换方法、装置、电子设备及存储介质
CN110716883A (zh) * 2018-07-13 2020-01-21 爱思开海力士有限公司 存储器***及其操作方法
CN111352857A (zh) * 2018-12-21 2020-06-30 爱思开海力士有限公司 存储器***及其操作方法

Also Published As

Publication number Publication date
CN112286843B (zh) 2022-04-08

Similar Documents

Publication Publication Date Title
US11321636B2 (en) Systems and methods for a data storage system
US9645924B2 (en) Garbage collection scaling
US9251053B2 (en) Managing configuration parameters for a non-volatile medium
US12001359B2 (en) Identification and classification of write stream priority
US11550727B2 (en) Zone-aware memory management in memory subsystems
US11429521B2 (en) Allocation of overprovisioned blocks for minimizing write amplification in solid state drives
US20210117318A1 (en) Garbage collection candidate selection using block overwrite rate
US10789003B1 (en) Selective deduplication based on data storage device controller status and media characteristics
US11561902B2 (en) Cache operations in a hybrid dual in-line memory module
CN115543186A (zh) 使用命令序列分析管理存储器命令引擎
WO2022067686A1 (zh) 一种应用于固态硬盘ssd的数据读取方法及相关装置
CN112286843B (zh) 数据存储***的***和方法
CN115639951A (zh) 在存储器子***中实施自动速率控制
US11182087B2 (en) Modifying write performance to prolong life of a physical memory device
US11314456B2 (en) Memory device performance based on storage traffic pattern detection
US20240176527A1 (en) Memory device region allocation using lifetime hints
US20210405913A1 (en) Host access tracking in a memory sub-system
US20230266898A1 (en) Host Defined Zone Group Configuration At A Memory Sub-System
US20230266897A1 (en) Dynamic zone group configuration at a memory sub-system
US11221973B2 (en) Parallel iterator for machine learning frameworks

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
CP03 Change of name, title or address

Address after: Room 502, Block A, Jingang Center, Jingang Building, Haoye Community, Xixiang Street, Baoan District, Shenzhen City, Guangdong Province, 518000

Patentee after: Shenzhen anjilite New Technology Co.,Ltd.

Address before: No.302, no.6, zone 2, Fuhai Industrial Zone, Fuyong community, Fuyong street, Bao'an District, Shenzhen City, Guangdong Province

Patentee before: Shenzhen anjili New Technology Co.,Ltd.

CP03 Change of name, title or address