存储的装置及其方法与流程

文档序号:26804030发布日期:2021-09-29 02:18阅读:103来源:国知局
存储的装置及其方法与流程
存储的装置及其方法
1.相关申请的交叉引用
2.本技术要求于2020年3月25日提交的美国临时专利申请第62/994,820号的权益,其出于所有目的通过引用并入本文。
技术领域
3.本发明构思总体上涉及存储设备,并且更具体地,涉及通过以小于全保真度存储数据以增加存储设备的有效存储容量。


背景技术:

4.在信息技术(it)基础结构中,各种设备和过程正在生成大量数据。这些数据生成器的一些示例包括但不限于智能机、自动驾驶车辆、社交网络和物联网(iot)设备。正在开发人工智能(ai)和机器学习(ml)算法,以分析收集到的数据并使用数据在各种应用中实现更高的效率和生产率。如此,大量的数据可以存储在由固态驱动器(ssd)、硬盘驱动器(hdd)、存储节点和存储互连组成的高性能、可靠的存储系统中。
5.ssd使用非and(nand)闪存介质来持久地存储数据。闪存介质能够使用并行闪存通道接口实现高性能的数据访问。可以使用主机接口协议,诸如快速非易失性存储器(nvme)和基于光纤通道的nvme(nvme

of),使得向主机提供闪存介质性能和其他优点。
6.但是,生成巨大的数据量需要大量的存储设备来存储数据。随着存储的数据量的增加,存储数据所需的存储设备的数量也会增加。此外,可以以全保真度(fidelity)存储数据,每个数据独立于任何其他数据被存储。数据去重复(deduplication)可以消除相同数据的冗余副本,但是如果两个数据集之间存在任何差异,则可能无法最佳地执行数据去重复。
7.仍然需要可以增加其有效存储容量而不必增加额外的实际存储容量的存储设备。
附图说明
8.图1示出了根据本发明构思的实施例的包括有损存储设备的机器。
9.图2示出了图1的机器的附加细节。
10.图3示出可以被视为相同类别或不同类别的数据组块(chunk)的示例可视化。
11.图4示出了图3的有损存储设备的细节。
12.图5示出了图4的闪存转换层的细节。
13.图6示出了图5的有损存储设备的替代视图。
14.图7a

图7b示出了根据本发明构思的实施例的、图1的有损存储设备处理来自图1的主机的写入请求的示例过程的流程图。
15.图8示出了根据本发明构思的实施例的、图1的有损存储设备在数据组块的不同类别id之间进行选择的示例过程的流程图。
16.图9示出了根据本发明构思的实施例的、图1的有损存储设备使用持久性策略更新代表性数据组块的示例过程的流程图。
17.图10示出了根据本发明构思的实施例的、图1的有损存储设备处理来自图1的主机的读取请求的示例过程的流程图。
18.图11示出了根据本发明构思的实施例的、图1的有损存储设备处理来自图1的主机的删除请求的示例过程的流程图。
具体实施方式
19.现在将详细参考本发明的实施例,其示例在附图中示出。在下面的详细描述中,阐述了多个具体细节以使得能够全面理解本发明。然而,应当理解,本领域普通技术人员可以在没有这些具体细节的情况下实践本发明。在其他情况下,没有详细描述公知的方法、过程、组件、电路和网络,以免不必要地模糊实施例的各方面。
20.将理解,尽管本文可以使用术语第一、第二等来描述各种元件,但是这些元件不应受到这些术语的限制。这些术语仅用于区分一个元件和另一个元件。例如,在不脱离本发明的范围的情况下,第一模块可以被称为第二模块,并且类似地,第二模块可以被称为第一模块。
21.在此在对本发明的描述中使用的术语仅出于描述特定实施例的目的,而无意于限制本发明。如在本发明的说明书和所附权利要求书中所使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另有明确指出。还应理解,本文所使用的术语“和/或”是指并涵盖相关联所列项目中的一个或多个的任何和所有可能的组合。将进一步理解,当在本说明书中使用术语“包括”和/或“包含”时,其指定了所述特征、整数、步骤、操作、元件和/或组件的存在,但并不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组的存在或添加。附图的组件和特征不必按比例绘制。
22.本发明构思的实施例包括可以使用有损存储增加存储设备(例如,固态驱动器ssd、或其他存储设备)的持久性数据存储容量的架构。基本思想是存储多个紧密相关的数据集的近似。本发明构思的实施例可以使用基于神经网络的技术将输入数据集分类到唯一的桶(bucket)或群集(cluster)中。对于每个这样的桶或群集,ssd可以存储一个代表性数据集。当主机对属于群集或桶的任何数据集执行读取时,存储的单个代表性数据集可以返回到主机。此技术可以减少所需的容量,并且为应用提供大的存储容量。为了存储代表性数据集,可以使用各种技术,诸如在每个群集中存储第一个数据集、最后一个数据集或数据集的加权平均。为了将输入数据集分类到不同的群集或桶中,可以使用各种神经网络(nn)架构,诸如多层感知器(mlp)、递归神经网络(rnn)和卷积神经网络(cnn)。
23.使用有损存储增加ssd的持久性数据存储容量可能适用于可以以较低精度或保真度的形式容忍数据丢失的应用,例如ml应用。动态量化方法可用于存储多个紧密相关的数据组块的近似(其与传统的数据去重复技术不同),从而增加ssd的存储容量。例如,可以使用神经网络和相似性/距离函数对数据执行量化。本发明构思的实施例可以对不同或特定数据集类型使用不同分类器(例如,不同nn)。例如,可能有支持视频数据的一个分类器、支持iot传感器数据的一个分类器、或者针对每种类型的数据(诸如音频、图像、文本、pdf等)的分类器。
24.本发明构思的实施例还可以使得能够配置准确度水平,从而可变地增加ssd的存储容量。
25.本发明构思的实施例可以与块(block)存储(基于逻辑块地址(lba))或对象存储(键值(kv)ssd)一起使用。
26.类别id和主机侧地址(lba)/键之间的关联可以存储在地址转换表中,潜在地与用于存储该数据集的nn的标识符一起被存储。
27.存储设备中使用机器学习的动态量化
28.传统存储设备本质上是无损的。也就是说,确保在需要时以高准确度再现存储在ssd(或其他存储设备)中的用户数据。存储的数据的保真度没有损失。ssd可以在持久性之前压缩数据,但是可以保证压缩技术是无损的。一般,这些条件意味着ssd的容量是有限的,并且最多只能存储达到物理介质容量的数据。
29.本发明构思的实施例可以使用不同的方法来存留(persist)用户数据。当主机将用户数据写入ssd时,该数据可以首先被划分为合适的组块大小,诸如大约4kb或大约8kb。组块大小可以与主机指示的逻辑块(lb)(或扇区大小)一致,也可以与lb/扇区大小不同。典型的扇区或块大小包括大约512b、大约4kb,大约8kb等:本发明构思的实施例也可以支持其他扇区或块大小。每个扇区或逻辑块可以由逻辑块地址(lba)寻址。也就是说,主机可以使用lba来引用ssd持久存储的数据。另一方面,ssd可以维护逻辑块地址(lba)到物理块地址(pba)的转换或映射。当主机写入数据时,ssd可以将用户数据存储到闪存介质中,并且可以将lba更新为pba,pba也可以被持久地存储。当主机读取数据时,ssd可以查找lba到pba的转换表,使用物理地址从闪存介质中获取数据,然后将该数据返回到主机。
30.在提出的存储方法中,出于存储目的,将相似的数据组块视为单个数据集。也就是说,当多个主机数据集彼此非常相近时,实际上仅存储这些数据集的一个副本。此技术可以显著地减少存储的数据量。如果用户数据在各个数据组块之间具有很大的相似性,则好处可能尤其如此。随后的部分描述了根据两个数据集之间的距离测量相似性的各种方法。
31.每个输入数据集都被分配类别id,也被称为桶id或群集id。然后可以将该类别id存储在不同于lba和pba的表中。对于每个类别id,只能存储一个数据集。存储的数据集可以是针对该类别所接收到的第一个数据集,也可以是最后一个数据集。另一种可能性是,每当将输入数据集被分类到相应的类别时,更新给定类别的存储的数据集。
32.当主机需要存储的数据时,主机可以将lba呈现给ssd。然后,ssd可以查找lba以获取类别id。然后,ssd可以使用类别id查找针对该类别所存储的数据集的pba。使用pba,ssd可以检索数据集并将数据集返回到主机。返回的数据可能不与主机为该lba写入的原始数据完全匹配,但是本发明构思的实施例可以仅用于可以容忍一些数据丢失或存储的数据缺乏完全保真度的应用。期望无损数据存储的应用可以仅将完全重复的数据组块聚类到组或群集中。
33.本架构说明使用块存储(基于lba的)作为示例以用于主机与ssd通信。但是,此处描述的概念和思想也同样适用于对象存储,诸如键值(kv)存储。这些概念独立于由主机和ssd使用的任何传输层和主机协议,诸如快速外围组件互连(pcie)、以太网、远程直接存储器访问(rdma)、传输控制协议/互联网协议(tcp/ip)、光纤通道、串行连接小型计算机系统接口(scsi)(sas)、串行at附件(sata)、快速非易失性存储器(nvme)和基于光纤通道的nvme(nvme

of)等。
34.基于用户数据中存在的相似性程度,本发明构思的实施例可以通过使用有限的物
理闪存介质容量提供对于特定应用的有效数据存储容量的显著增加。这种用例的一个示例是视频监视:监视的场景可能变化不大,因此收集到的数据可能在各个数据组块之间包含高相似性程度。另一个示例可以是用于人工智能(ai)/机器学习(ml)分析的图像的存储:多个图像可以包含类似的场景特征,诸如天空、山脉、树木或海洋。由于这些图像被分解成可以使用相似性测量而被分类到桶或类别中的组块,因此可以实现显著的数据减少。可以设计出多种类似的用例,尤其是针对非结构化的数据应用。
35.本发明构思的实施例可以适用于可以容忍一些数据保真度损失的非结构化的数据和应用。可能存在可能不需要精确再现存储的数据的一些应用。例如,相机可以存储其记录的图像。之后,安全应用可以读取并分析这些图像;但是对原始图像的近似就足够了。可以存在多个这样的应用,特别是在对非结构化的数据的分析领域中。
36.主机接口层(hil)与传统ssd中的主机接口层几乎相同。主机接口层(hil)为主机提供了逻辑接口,用于访问存储的数据。主机接口层(hil)基于接口的类型提取各种主机输入,诸如数据、lba、键、值等。
37.主机输入数据集可以被分割为所配置的大小的数据组块。如果块接口正被使用,则数据组块可以匹配扇区或块大小。一些示例数据组块大小为大约512字节、大约4kb或大约8kb。然后可以将每个数据组块馈入一个或多个分类器神经网络(nn)。分类器nn的输出本质上可以是被存储的数据的内部“键”或“句柄(handle)”,被称为类别id。类别id可以与相应的lba(如果存在)关联;在kv主机接口的情况下,类别id可以作为放置(put)值的键返回主机。类别id和主机侧地址/键/句柄之间的关联可以与用于存储该数据集的nn的标识符一起存储在地址转换表中。
38.主机输入数据集可以包含一些形式的“数据类型”,例如文件扩展名或元数据。主机提供的数据类型可用于选择要用于该数据集的不同/适当的nn。数据类型使用的一个示例是区分不同的数据源。例如,不同的数据类型值可用于相机输出数据和传感器数据。
39.一旦执行了将数据组块分类到群集或组中,就可以用lba/键等的映射作为主机地址和相应的类别id来更新地址转换表。如果主机操作为写入,并且转换表中不存在类别id,则数据组块可以被存留到闪存介质中,并且相关联的物理块地址(pba)可以在转换表中被更新。如果映射表中已经存在类别id,则可以应用各种写入数据更新策略。在本发明构思的一个实施例中,数据组块可以仅在第一实例被存留。在本发明构思的另一个实施例中,类别id的最新的数据组块可以被存留,从而覆写该类别id的先前的数据组块。在本发明构思的又一个实施例中,当前数据组块可以用于创建当前值和现有数据组块值的加权平均。
40.当主机操作为读取(read)时,主机可以呈现数据集的逻辑地址,诸如lba或kv键。lba或kv键可以用于在映射表中查找数据组块的物理地址。使用物理地址,可以从闪存介质中检索数据组块并将数据组块返回给主机。
41.所提出的方法可以使用量化函数或聚类函数。可以将接近一定程度的数据集组合到一个类别或桶中,并选择单个代表性数据集来表示该类别或桶。这样的分组可以以数据的近似为代价,实现物理存储容量的显著减少。主机数据的长度可以被保留,但是数据集的值可能与原始值不完全匹配。换句话说,存储的数据可能在值的在准确度或保真度方面遭受损失,并且只要用户应用可以容忍这种损失,就可以以更低的成本提供更大的存储容量。
42.当主机数据被写入ssd时,ssd中的分类器nn的权重和参数可以改变。改变的nn参
数可以使用闪存接口周期性地被存留到闪存介质中。先前在传统ssd部分中描述的大多数闪存接口功能保持不变。nn本身的状态可以使用无损技术来压缩。可以使用诸如低密度奇偶校验(ldpc)或bose

chaudhuri

hocquenghem(bch)码的检错和纠错码来对nn的状态进行加密,以用于安全保护并且防止任何物理介质错误。
43.用于数据集量化的方法
44.可以通过使用简单的数据相似性函数或距离测量(诸如余弦相似性或欧几里得(euclidean)距离)、或通过使用神经网络将相似的数据组块聚类为相同的组或类别id,来对数据集进行量化。用于聚类数据集的神经网络方法可以是有监督的、半监督的或无监督的。系统可以合并各种nn:例如,对于每种数据类型(诸如图像、文本、pdf等)有一个nn。对于图像,数据集可以首先被划分为rgb(红色、蓝色和绿色)通道,然后被量化/聚类为各种类别id。由于对于每个类别id仅存储一个数据集,因此数据组块中的一些可能丢失,并且因此可能需要使用增量机器学习或在线机器学习(例如,通过使用小批量(minibatch)处理k

均值聚类算法)来更新聚类算法。当使用相似性/距离函数对数据集进行量化时,针对给定类别id所存储的数据集可以是给定类别id的第一个数据集、最后一个数据集或所有数据组块的加权平均。当使用神经网络或聚类算法对数据集进行量化时,针对特定群集或类别id所存储的数据组块可以是由聚类算法确定的每个群集的质心(centroid)。系统可以使用神经网络和相似性函数的组合。例如,给定若干个数据集,数据集可以被归类到不同的群集或类别id中,然后在每个群集或类别id中,数据集被划分为不同的组块,不同的组块使用相似性/距离函数被进一步归类到各种类别id中。
45.分类nn架构
46.使用无监督学习方法执行聚类的神经网络架构可以包括自动编码器、具有聚类损失函数的深度神经网络、自组织映射(som)神经网络、生成对抗网络(gan)、变分自动编码器和聚类网络(clusternet)等。此外,神经网络可以用于学习数据的表示,该数据的表示可以进一步用于将数据组块聚类或归类到各种类别id中。
47.持久性功能
48.当主机执行写入(write)操作时,可以为一组相似的数据集存留写入数据的单个副本。存在若干种存留写入数据的方法。示例包括:为每个class id写入第一个数据集;为每个类别id写入最后一个数据集;为每个类别id写入写入数据集的加权平均,以及为每个类别id写入由nn或聚类算法确定的写入数据集的质心。
49.在本发明构思的一个实施例中,仅给定类别id的第一个数据集被存留。当主机执行写入操作且相应的写入数据导致lba

类别id表中不存在的类别id时,可以实行此选项。导致相同类别id的所有后续主机写入操作实际上都可以被忽略或丢弃。也就是说,对于与类别id相对应的lba的任何后续读取操作,仅原始的或第一个写入数据被返回。换句话说,仅类别id的第一个数据集被记住。
50.在本发明构思的另一个实施例中,每次主机执行写入操作时,写入数据总是被写入到相应的类别id。基本上,当新的写入操作映射到现有的类别id时,该类别id的旧数据将被最新的数据替换。换句话说,仅类别id的最后一个数据集被记住,并且与该类别id相对应的所有先前的数据丢失。
51.在本发明构思的又一个实施例中,与类别id相对应的新数据和旧数据的加权函数
被用于持久性操作。例如,写入数据可以是如下的等式1:
52.[等式1]
[0053]
写入数据=当前数据组块*权重+较早的数据组块*(1

权重)
[0054]
在本发明构思的又一个实施例中,每个类别id内的数据集的质心可以被存留到ssd中。
[0055]
数据集粒度
[0056]
该架构可以将数据集的字节粒度用于分类目的。但是也可以使用其他值,诸如1位粒度、16位粒度或10位粒度等。不同的数据集粒度可以基于数据的类型提供益处或权衡。也就是说,可能在提出的ssd中使用多个/不同的数据集粒度,这些粒度可能与不同的应用及其唯一的数据类型和/或特性相关。
[0057]
存储容量分析
[0058]
ssd的有效存储的增加量可能与ssd可以存储的数据组块的数量以及数据组块之间的相似性相关。例如,使用4kb的数据组块,存储设备可能具有1tb的可用存储容量(忽略预留空间)。这样的存储设备将包括268,435,456个数据组块。如果数据组块包括25%的相似性,则存储设备能够有效地存储335,544,320个数据组块,或具有大约1.25tb的存储容量(与存储从lba到类别id以及从类别id到pba的映射相关的开销很大,但是在此示例中,此开销量小于ssd的实际存储容量的1%)。
[0059]
存储数据的应用和准确度
[0060]
动态量化ssd在不需要100%数据存储准确度的应用中可能有用。例如,自动驾驶汽车可能不需要识别道路上行人的确切面孔:仅检测道路上是否有行人就足够了。动态量化ssd的另一示例应用可以是用于存储视频数据,其中后续帧通常彼此非常相似,两个相邻帧之间只有很小的差异。动态量化ssd可以提供视频数据的存储的显著增加,例如zoom将所有记录的会议存储在云中。
[0061]
由动态量化ssd返回的数据的准确度可以由主机配置,主机可以用于确定每个数据集的组块大小。例如,为了更高的准确度,可以配置较小的组块大小,而为了更低的准确度,可以配置较大的组块大小。控制存储的数据的准确度的另一种方式是指定和/或控制数据集可以被分组到一起的桶的数量。例如,群集的数量越多,存留的数据的准确度越高。如果所有数据组块被聚类到仅一个群集或类别id中,则准确度将非常低:什么数据被写入ssd都没有关系,因为对于被写入到ssd中的每一个数据组块,仅一个数据集会被返回。另一方面,如果每个唯一的数据组块被聚类到其自己的组或类别id中,则准确度将为100%,但是仅相同的数据组块可以被去重复,并且有效存储容量可以最小程度地增加。
[0062]
图1示出了根据本发明构思的实施例的包括有损存储设备的机器。在图1中,示出了机器105,其也可以被称为主机。机器105可以包括处理器110。处理器110可以是任何种类的处理器:例如,intel xeon、celeron,itanium或atom处理器、amd opteron处理器、arm处理器等。尽管图1在机器105中示出了单个处理器110,但是机器105可以包括任何数量的处理器,处理器中的每一个可以是单核或多核处理器,并且可以以任何期望的组合被混合。
[0063]
机器105还可以包括存储器115。存储器115可以是任何种类的存储器,诸如闪存、动态随机访问存储器(dram)、静态随机访问存储器(sram)、持久性随机访问存储器(pram)、铁电随机访问存储器存储器(fram)或非易失性随机访问存储器(nvram)、磁阻随机访问存
储器(mram)等。存储器115也可以是不同存储器类型的任何期望的组合。机器105还可以包括存储器控制器120,该存储器控制器120可以用于管理对存储器115的访问。
[0064]
机器105还可以包括存储设备125,诸如固态驱动器(ssd)。存储设备125可以用于存储数据。处理器110可以运行设备驱动器130,该设备驱动器130可以支持对存储设备125的访问。尽管图1示出了ssd,但是本发明构思的实施例可以包括任何期望的存储设备,这些存储设备可以使用任何期望的存储原理来操作。因此,存储设备可以是ssd、硬盘驱动器或任何其他期望的存储设备,并且可以使用基于块的存储或基于键值的存储来存储数据。
[0065]
尽管图1将机器105描绘为服务器(其可以是独立服务器或机架服务器),但是本发明构思的实施例可以包括任何期望类型的机器105而没有限制。例如,机器105可以用台式或膝上型计算机、或者可以从本发明构思的实施例中受益的任何其他机器代替。机器105还可以包括专用便携式计算机器、平板计算机、智能电话和其他计算机器。此外,可能正从存储设备125访问数据的应用可以位于与机器105分开、并经由穿越任何类型(有线、无线、全局等)的一个或多个网络的网络连接访问机器105的另一机器中。
[0066]
图2示出了图1的机器105的附加细节。在图2中,通常,机器105包括一个或多个处理器110,该一个或多个处理器110可以包括存储器控制器120和时钟205,存储器控制器120和时钟205可以用于协调机器105的组件的操作。处理器110还可以耦合到存储器115,例如,该存储器115可以包括随机访问存储器(ram)、只读存储器(rom)或其他状态保存介质。处理器110还可以耦合到存储设备125以及网络连接器210,例如,网络连接器210可以是以太网连接器或无线连接器。处理器110还可以连接到总线215,用户接口220和可以使用输入/输出引擎225来管理的输入/输出接口端口以及其他组件可以附接到总线215。
[0067]
图3示出了可以被视为相同类别或不同类别的数据组块的示例可视化。在图3中,示出了数据组块305、310和315。数据组块305、310和315被示出为4kb的大小,但是可以具有任何期望的组块大小,如下面参考图6进一步讨论的。
[0068]
数据组块305和310彼此相似,在数据组块的整个长度上相对最小程度地变化。当使用有损存储时,数据组块305和310可以被认为足够相似,以被分配相同的类别id。可以使用可以与数据组块305和310之一或两者相似或不同的数据组块来表示该类别id。例如,数据组块320(在图3中用虚线示出)可以是数据组块305和310的算术平均,并且可以被存储在图1的存储设备125上。因此,尽管彼此之间存在差异,但是彼此非常相近的数据组块(诸如数据组块305和310)可以被视为单个数据集。
[0069]
通过针对类别存储单个数据组块(诸如数据组块320),图1的存储设备125可以避免需要分别存储每一个数据组块。因此,由图1的机器105写入的多个数据组块可能最终被映射到相同的类别id,并且使用单个数据组块来表示。该方法的优点是,可以在图1的存储设备125上存储更少的数据组块,从而为其他数据留出更多的空间。这种方法的缺点是,被存储为表示特定类别id的数据可能与图1的机器105实际写入的数据有所不同。这一概念(被称为“有损存储”)以以下原则为核心:如果所提供的数据与原始数据“足够接近”,则原始数据与所提供的数据之间的差异可能是可接受的。但是,如果机器105可以接受由于使用数据组块320而造成的准确度的损失,那么这个缺点可以是可接受的折衷方案。
[0070]
在图像存储的领域中,有损存储的示例是对jpg格式的使用。jpg格式在图像的全部细节可能超出人眼所能看到的范围的原则下操作。通过使图像的一些细节不太清晰,存
储图像所需的文件的大小可以小于以全分辨率存储图像的文件的大小,而不会对人眼造成图像中的信息的任何实际损失。以类似的方式,如果存储的数据组块与原始数据之间的差异是可容忍的,则通过使多个(潜在不同的)数据组块“共享”存储在存储设备上的公共数据组块,可以减少在存储设备上存储数据所需的空间量。
[0071]
与数据组块305和310如何相当相似相比,数据组块315与数据组块305和310中的任何一个显著地不同。因此,数据组块315可以被分配与数据组块305和310不同的类别id。
[0072]
将数据流划分为数据组块并分析每个数据组块以确定类别id的过程可以被称为“量化”(尽管实际上仅对数据组块进行“量化”:将类别id分配给数据组块从技术上讲不是“量化”的一般含义的部分)。
[0073]
在上面的讨论中,已经忽略了多个因素,所有这些因素都可以考虑数据组块可能被分配哪个类别id。第一,数据组块的大小可以是可变的。数据组块可以是4kb(或大约4kb)、8kb(或大约8kb)或任何其他数量的字节。此外,使用与基础存储设备的块大小或扇区大小相对应的组块大小(由于在存储数据组块时几乎没有浪费的空间)将具有优势,因此,组块大小可以根据存储设备的块大小或扇区大小而变化。
[0074]
第二,数据组块的大小和存储的数据的准确度之间可能存在关系。作为一般规则,数据组块的大小越小,即使相对于可能不同于存储的数据的数据,存储的数据的准确度也越高。原因很简单:数据组块的大小越小,则类别的代表性数据与由图1的机器105提供的数据组块之间可能不同的位数/字节数越少,这表示数据可能更准确。
[0075]
第三,任何给定数据组块的准确度可能是可变的。也就是说,图1的机器105可以向存储设备写入数据的多个组块,每个组块具有不同的相关联的准确度。由图1的机器105发送的每个写入请求可以指定不同的准确度作为写入命令的部分,或者与特定应用或数据流相关联的数据可以被分配特定的准确度等。
[0076]
注意,如上所述,由于在数据组块的大小和存储的数据的准确度之间可能存在关系,因此如果图1的机器105(或图1的机器105上的应用)指定期望的准确度水平,则存储设备可以选择提供期望的准确度水平的数据组块大小。准确度水平可以被理解为应被分配相同的类别id的两个数据集的相似程度的定义;如果两个数据集不足够相似,则其应被分配不同的类别id。本发明构思的实施例可以支持要根据需要配置的准确度水平,以用于存储设备上的所有数据、或者用于源自单个机器的数据、或者用于源自单个应用的数据。本发明构思的实施例还可以允许应用或机器在任何时间重新配置期望的准确度水平。理论上,由图1的机器105写入的每一个数据组块可以被分配不同的准确度水平。
[0077]
例如,可能发生以下情况:当使用8kb的数据组块大小时,准确度可以是90%,而当使用4kb的数据组块大小时,准确度可以是95%。如果应用(或图1的机器105)请求为95%的准确度水平,则即使默认数据组块大小(即,其他条件未被建立时所使用的数据组块大小)可能是8kb,存储设备可以选择4kb的数据组块大小以提供期望的准确度。
[0078]
另一方面,如果应用(或图1的机器105)请求为90%的准确度水平,则即使默认数据组块大小可能是4kb(其可能提供95%的准确度水平),存储设备可以选择8kb的数据组块大小以提供期望的准确度。
[0079]
每个数据组块大小的准确度水平可以使用经验测试预先确定,或者可以在运行时通过将数据组块与所选类别id的代表性数据组块进行比较来动态地测量。注意,如果使用
一种以上的技术来确定类别id(如下文参考图6所讨论的),则对于相同大小的数据组块,不同的技术可以导致不同的准确度水平,在这种情况下,数据组块的大小可以取决于期望的准确度水平和用于确定数据组块的类别id的所选技术。
[0080]
同样值得考虑的是,在极端情况下应用请求为100%的准确度水平(即,没有数据的损失)时会发生什么。如果准确度水平为100%,则应用可以指定不容许任何数据丢失:数据应完全按照被提供的方式被存储。因此,如果两个不同的写入请求中的数据(各自具有为100%的期望的准确度水平)都被分配了类别id,则两个写入请求中的数据是相同的。实际上,本发明构思的实施例可以执行数据去重复。但是,即使在这种极端情况下,本发明构思的实施例也可以与传统的数据去重复解决方案区分开,如逻辑块地址(lba)到类别id的映射、以及从类别id到物理块地址(pba)的映射不在传统的数据去重复解决方案中被执行。传统的数据去重复解决方案也不能被一般化以处理将不同的数据映射到存储设备上的相同位置,因为传统的数据去重复假设仅相同的数据可以被映射到存储设备上的相同位置。将有损比较引入到传统的数据去重复系统中还将需要想要传统的数据去重复开始指定准确度水平的应用,这要求这样的应用被修改。通过默认为特定数据组块大小和/或准确度水平的本发明构思的实施例,被适当配置的存储设备可以被插入机器(诸如图1的机器105)中,而无需对机器或在其上运行的任何应用做出任何修改。
[0081]
第四,图3没有解决什么数据被实际存储在存储设备上的问题,也没有解决这些数据是否随时间被更新的问题。本发明构思的实施例可以支持针对类别id的代表性数据组块的不同的更新策略(也被称为持久性策略或持久性功能)。在本发明构思的一些实施例中,被分配了类别id的初始数据(即,写入请求中接收到的被分配了该类别id的第一数据)可以被存储为该类别id的代表性数据,并且可以被留在存储设备上而不被更新。因此,例如,如果数据组块305是由存储设备接收到的第一写入请求中被分配了类别id的第一数据,则数据组块305可以响应于任何之后的读取请求(诸如指定与数据组块310相关联的lba的读取请求)被返回。
[0082]
在本发明构思的其他实施例中,被分配了类别id的最近的数据可以被存储为类别id的代表性数据。因此,例如,如果数据组块305是被分配了类别id的第一数据组块,并且数据组310是被分配了类别id的第二数据组块,则数据组块310将被返回(即使响应于指定与数据组块305相关联的lba的读取请求)。
[0083]
在本发明构思的其他实施例中,代表性数据组块可以以考虑被写入到类别的较早数据的方式来更新。这种技术的示例可以包括加权平均和质心计算。作为加权平均的示例,权重可以被确定(权重可以在制造存储设备时被指定,并且不能由图1的机器105改变或配置)。通过将最近接收到的数据组块的值乘以一个权重并且通过将先前的代表性数据组块乘以另一个权重,然后将两个乘积相加,可以将最近接收到的数据组块与先前的代表性数据组块组合。在一些实现方式中,权重的值的范围可以从0到1(这可以使代表性数据组块与被分配了类别id的数据组块保持在相同的比例),并且两个权重之和可以为1(在这种情况下,权重的值之一可以被计算为1

另一个权重的值。使用这种技术,权重可以是较旧的数据组块(如果先前的代表性数据组块乘以的权重较高)或较新的数据组块(如果新的数据组块乘以的权重较高)。然后,该计算的总和的结果可以被存储为类别id的新的代表性数据组块。
[0084]
注意,本发明构思的实施例可以扩展到使用不止两个数据组块(即,新的数据组块和先前的代表性数据组块),并且因此可以使用两个以上的权重。在极端情况下,权重(其根据需要可以相同或不同)可以被分配给曾经被分配了类别id的每一个数据组块,而新的代表性数据组块是被分配了该类别id的所有数据组块的加权平均。注意,在特定的极端情况下,曾经被分配了类别id的每一个数据组块都被用于对加权平均的计算,并且权重全部相同并且总和为1(即,如果有n个数据值,则权重都为1/n),则加权平均可以被描述为计算数据组块的质心,因为n维空间中数据点的群集的质心是给定群集内所有点的算术平均。
[0085]
还要注意,跟踪类别id的数据组块的质心作为类别id的代表性数据组块并不一定需要存储每一个数据组块:如果当前数据组块是要被分配类别id的第n个数据组块,然后类别id的数据组块的质心可以被计算为(n

1)乘以类别id的先前的代表性数据组块,加上被分配了类别id的新的数据组块,再除以n。也就是说,给定被分配了类别id的所有先前的数据组块的总和,其可以被计算为先前的质心乘以用于计算该先前的质心的数据组块的数量,则新的质心可以通过添加新的数据组块,然后除以现在被分配了类别id的数据组块的数量来计算。因此,唯一可被存储的附加数据是值n,其识别有多少数据组块被分配了类别id。
[0086]
此外,存储设备可以将单个持久性策略应用于存储在存储设备上的所有数据、或者不同的持久性策略可以被应用于用于分配类别id的不同的技术、或被应用于不同的类别id。因此,例如,一个类别id可能会使用第一数据组块作为类别id的代表性数据组块,另一个类别id可能会跟踪代表性数据组块和新的数据组块的加权平均,第三个类别id可能使用最近的数据组块,依此类推。
[0087]
存储设备可以将单个持久性策略应用于存储在存储设备上的所有数据。或者,要使用的持久性策略可以取决于类别id(即,不同的类别id可以使用不同的持久性策略)。持久性策略还可以取决于数据的准确度水平:一些持久性策略可能更适合于可以容忍原始数据的大量丢失的数据,而其他持久性策略可能更适合于对数据丢失具有较低容忍度的数据。
[0088]
例如,在本发明构思的实施例中,当新的数据组块(在第一数据组块之后)被分配了类别id时,持久性策略导致对代表性数据组块的改变,对代表性数据组块的改变可能影响类别id的代表性数据组块对于被分配了该类别id的先前的数据组块有多准确。例如,考虑从请求为95%的准确度水平的应用接收到数据组块305的情况(也就是说,该应用愿意容忍写入数据和读取数据之间高达5%的差异),并且数据组块305是被分配了类别id 101的第一数据组块(这意味着当图1的机器105发送对数据组块的读取请求时,数据组块305将被100%准确地返回)。当数据组块310被接收到并被分配了类别id 101时,类别id 101的代表性数据组块可以被更新。这样的更新可能会影响类别id 101的代表性数据组块对于数据组块305是否仍然足够准确。
[0089]
如果持久性策略使初始数据组块保持不变,则无需担心数据组块305之后被读取时类别id 101的代表性数据组块不够准确。(实际上,被分配了类别id 101的任何其他数据组块的准确度也不会改变,因为持久性策略不会改变代表性数据组块)。但是,持久性策略用被分配了类别id的最近的数据组块替换表示数据组块可能是有问题的。如果数据组块310与数据组块305的差异大于5%,则代表性数据组块的更新将意味着代表性数据组块不
再足够准确。如果写入的另一个数据组块足够接近要被分配类别id 101的数据组块310,但是距离数据组块305更远,则此问题可能会加剧:代表性数据组块可能会与数据组块305距离越来越远,导致数据组块305的准确度水平越来越低。
[0090]
另一方面,如果持久性策略指定为类别id的代表性数据组块保持加权平均或质心,则对类别id的代表性数据组块的更新可能会或可能不被接受。例如,即使数据组块310可能与数据组块305相距很远,以致于不能将数据组块310用作代表性数据组块,但是数据组块305和310的加权平均或质心(如数据组块320所示)可以在数据组块305的写入请求的准确度水平内。因此,所应用的特定持久性策略可能影响代表性数据组块是否在由图1的机器105所指定的准确度水平之内。
[0091]
存在多种解决这种情况的方法。一种可能性(最容易实现的)可以是仅在数据首次被分配了类别id时才考虑指定的准确度水平。类别id的代表性数据组块的任何“漂移”都可以被忽略。另一种可能性(最复杂的)可以是检查持久性策略是否将代表性数据组块移到距任何先前的数据组块足够远,以使新的数据组块可以更好地被分配新的类别id。但是这种方法需要以某种方式跟踪被分配了类别id的所有先前的数据组块,这可能实际上破坏了有损存储的目的。第三种可能性可以是:如果新的数据组块与代表性数据组块足够相似并且请求与被分配了类别id的其他数据组块相同的准确度水平,则仅向数据组块分配单个类别id。即使具有相同的数据,不同的所请求的准确度水平也可以被分配不同的类别id。因此,例如,如果应用为特定的数据组块指定了100%的期望的准确度水平(即,没有数据丢失),则仅100%相同的数据组块被分配与该数据组块相同的类别id,以防止任何可能的“漂移”和数据的丢失。
[0092]
当相似性和/或距离函数用于确定类别id时,相似性和/或距离函数可以将接收到的数据组块与存储在存储设备上的代表性数据组块进行比较。(这可以与神经网络、机器学习算法和其他分类器进行比较,可以使用内部模型对可以独立于存储在存储设备上的代表性数据组块的接收到的数据组块进行分类)。由于两个这样的数据组块之间的变化量是绝对的(数据组块a到数据组块b的距离与数据组块b到数据组块a的距离相同),因此如何测量代表性数据组块的准确度可能是对称操作。
[0093]
由于准确度水平和数据组块大小之间存在关系,因此一旦选择了数据组块大小,就可以保证相关的准确度水平。但是,事实可能并非如此。例如,假设选择了4kb的数据组块大小。如果认为包含全0的数据组块与要被分配相同的类别id的、包含全1的数据组块足够相似,则逻辑结论是实际上每一个数据组块都将被分配该类别id。但是,如果每一个数据组块都将被分配相同的类别id,则准确度水平可能会变得毫无意义。因此,尽管特定的数据组块大小可能与所要求的准确度相关,但是数据组块大小不能保证特定的准确度水平:特定的数据组块与类别id的代表性数据组块有多相似(或不同)可能仍然是相关的考虑。
[0094]
第五,未参考图3讨论数据组块将如何被分配特定的类别id的细节。存在数据组块可以被分配类别id的多种不同的方式。神经网络、机器学习算法或其他分类器(诸如自动编码器和变分自动编码器、具有聚类损失函数的深度神经网络、自组织映射(som)神经网络、生成对抗网络(gan)、聚类网络和无监督学习技术)可以用于向数据组块分配类别id,相似性和/或距离函数(其实际上是同一内容的两个方面)也可以用于向数据组块分配类别id。
[0095]
例如,相似性和/或距离函数可以测量接收到的数据组块与特定的类别id的代表
性数据组块有多相似(或有多不同)。如果接收到的数据组块与类别id的代表性数据组块足够接近,则数据组块可以被分配该类别id;否则,数据组块可以被分配另一个类别id(如果接收到的数据组块与所有现有类别id的代表性数据组块之间的差异足够大:也就是说,接收到的数据组块与不应该被使用的现有类别id足够不相似(也许基于准确度水平)、或者如果可能被选择的任何类别id的置信度水平低于阈值,则可能是新的类别id)。相似性和/或距离函数的示例可以包括余弦相似性或欧几里得距离函数。如果两个数据集基于某个阈值足够相似(例如,90%相似),则两个数据集可以被分配相同的类别id。
[0096]
神经网络、机器学习算法和其他分类器(以下可以被称为“类别id确定器电路”)可以提供相似的功能,尽管被不同地实现。代替将接收到的数据组块与特定的类别id的代表性数据组块进行比较,类别id确定器电路可以使用内部模型来表示不同的类别id的数据。通过在接收到的数据组块和内部模型之间执行适当的比较,类别id确定器电路可以确定哪个类别id可以最好地表示接收到的数据组块。如果数据组块被分配了特定的类别id,则类别id确定器电路可以更新内部模型以反映被分配了类别id的新数据。注意,类别id确定器电路的内部模型可以独立于存储在存储设备上的类别id的代表性数据组块,该代表性数据组块可以使用持久性策略来管理。还要注意,类别id确定器电路如何更新其内部模型可能与适用于类别id的代表性数据的任何持久性策略无关。
[0097]
尽管使用的任何技术都应返回给定数据组块的类别id,但神经网络、机器学习算法、其他分类器以及相似性和/或距离函数如何操作以向数据组块分配类别id基本上不受限制。因此,例如,一个相似性或距离函数可以基于两个数据组块中任何两个值之间的绝对差应小于要被分配相同的类别id的两个数据组块的某个增量(delta)的原则进行操作,而另一相似性或距离函数可以基于两个数据组块之间所有差异的总和进行操作。前一种实现方式可以允许两个数据组块之间的整体较大变化,而后一种实现方式可以允许两个数据组块之间的较大差异的单个“尖峰”,前提是该“尖峰”是两个数据组块之间的唯一差异。
[0098]
不同的类别id确定器电路可能最适合于不同类型的数据。例如,一个神经网络可以被设计为对视频数据进行分类,另一个神经网络可以被设计为对图像数据进行分类,第三个神经网络可以被设计为对音频数据进行分类,第四个神经网络可以被设计为对来自物联网(iot)的数据进行分类等。这个事实至少具有三个含义。
[0099]
第一,如果存储设备提供多个类别id确定器电路,则每个类别id确定器电路可以独立地对数据组块进行操作。因此,存储设备可以将接收到的数据组块发送到仅一个类别id确定器电路、发送到可用类别id确定器电路的任何子集、或发送到所有可用类别id确定器电路。例如,可以基于要被发送的数据的类型来选择将特定的接收到的数据组块发送到哪个类别id确定器电路。例如,如上所述,一个神经网络可以被设计为对图像数据进行分类,而另一个神经网络可以被设计为对音频数据进行分类。如果存储设备可以确定特定的数据组块包含音频数据,则存储设备可以将接收到的数据组块发送到被设计为仅对音频数据进行分类的神经网络,而不发送到被设计为对视频数据进行分类的神经网络。
[0100]
第二,尽管存储设备可能试图将接收到的数据组块集中到特定的类别id确定器电路,但是这种集中可能是不可能的。例如,数据组块可能被辨识为音频数据、视频数据或任何特定类型的数据。因此,存储设备可能不知道向哪个类别id确定器电路发送数据组块。此外,即使存储设备可以知道数据组块的类型,存储设备仍可以将数据组块发送到所有类别
id确定器电路。例如,存储设备可能不确定数据是否为已识别的类型。或者,可以以将所有接收到的数据组块发送到所有可用类别id确定器电路的方式来实现存储设备(简单的实现方式)。
[0101]
但是,尽管每个类别id确定器电路都可以确定给定数据组块的类别id,被设计为处理视频数据的类别id确定器电路可能无法很好地对iot数据进行分类。因此,每个类别id确定器电路还可以提供与类别id相关联的置信度水平。本质上,每个类别id确定器电路都可以提供指示“我认为该数据组块属于该类别id,并且这就是我对我的确定的信心”的置信度水平。然后,存储设备可以使用那些置信度水平、从考虑数据组块的所有类别id确定器电路中选择最终的类别id。例如,存储设备可以在所有类别id确定器电路中选择具有最高关联置信度水平的类别id。
[0102]
注意,类别id确定器电路有可能不对特定的数据组块进行分类。例如,特定的数据组块的类型可能与类别id确定器电路被设计为进行分类的数据的类型相差甚远,使得类别id确定器电路可能无法对数据进行分类。在那种情况下,类别id确定器电路可能根本不返回任何类别id、或者可以指定非常低(可能为零)的置信度水平。
[0103]
还要注意,尽管每个类别id确定器电路可以输出类别id和/或置信度水平,但是不要求这两个值在所有类别id确定器电路中都是唯一的。也就是说,例如,类别id确定器电路1和类别id确定器电路2两者都可以确定特定的接收到的数据组块应被分配类别id“101”、或者两个确定都具有例如90%的关联置信度水平。因此,尽管每个类别id确定器电路可以确定特定的类别id和/或特定的置信度水平,但是两个值都不一定是唯一的。
[0104]
第三,不同的类别id确定器电路可以在不参考甚至不知道其他类别id确定器电路的情况下进行操作。也就是说,每个类别id确定器电路可以确定类别id,而无需考虑可能由其他类别id确定器电路使用的类别id。这个事实可能是以下事实的结果:每个类别id确定器电路(尤其是神经网络、机器学习算法和其他使用内部模型的分类器)都可以分配类别id而无需参考存储在存储设备上的任何内容。甚至将接收到的数据组块与存储在存储设备上的数据进行比较的类别id确定器电路也不一定没有这种顾虑:例如,如果两个类别id确定器电路都认为它们分析的数据组块不同于任何存储的数据组块,则两个不同的相似性函数可能向不同的数据组块分配单个类别id,并且因此,不同的数据组块将被分配新的类别id(并且巧合地选择相同的新的类别id)。
[0105]
因此,例如,被设计为对视频数据进行分类的神经网络和被设计为对iot数据进行分类的神经网络可以分别向数据组块(不一定是相同的数据组块)分配给类别id“101”。每个类别id确定器电路向数据分配类别id“101”的事实不应理解为意味着这两个数据组块彼此相似,而仅是它们与具有由相同类别id确定器电路分配的类别id 101的其他数据组块相似。换句话说,不同的类别id确定器电路可以使用相同的类别id表示非常不同的数据。因此,在存储设备支持不止一个类别id确定器电路的情况下,存储设备可以将类别id和类别id确定器电路的标识符的组合与数据组块相关联,而不仅是将类别id与数据组块相关联。(当然,如果存在将类别id分配给数据组块的标准,这样无论哪个类别id确定器电路被使用,接收到的数据组块被分配相同的类别id,则类别id可能不会与类别id确定器电路的标识符相组合。但是,这种标准的逻辑后果是对于任何数据组块,都只需要单个类别id确定器电路)。
[0106]
假设向数据组块分配公共的类别id并且仅存储类别的一个代表性数据组块的有损性质,当访问存储设备的应用可以容忍这种数据丢失时,可以使用本发明构思的实施例。此类应用的示例可以包括视频流,其中视频流的各个帧仅最小程度地改变(诸如安全流,其中数据可能仅偶尔改变,或者视频会议馈送,其中背景一般可能保持不变),或机器学习算法。其他应用也可能会受益:例如,音频或图像存储、物联网数据、文本文档、便携式文档格式(pdf)文档、自动驾驶汽车(其可能只关心图像是否包含行人,而不关心行人是谁)等。注意,数据组块不仅可能小于整个文档或数据流,甚至可能只是数据流的部分的子集。例如,图像数据可以被分为红色、绿色和蓝色通道,每个通道分别被量化。可替代地,图像数据可以在量化之前保持完整(相比于被分为多个通道)。
[0107]
尽管以上讨论暗示数据组块来自单独的数据流,但是本发明构思的实施例可以支持包括来自多个数据流的数据的数据组块。也就是说,来自多个源的数据(诸如来自单个应用的不同的数据流、或者来自多个应用甚至是多个机器的数据)可以被组合到数据组块中以用于分类。向数据组块分配类别id取决于数据组块中的数据,而不一定取决于数据的源。
[0108]
最后,被分配给各种数据组块的类别id可以被视为数据组块可以存储在存储设备上的逻辑表示,并且可以与任何数据被实际存储的存储设备上的物理地址无关(特别是对于类别id)。也就是说,与主机分配的lba(或存储设备分配的句柄)相比,被分配给数据组块的类别id本身不能更进一步指示数据组块在存储设备上的实际物理位置。在没有从类别id到pba的附加映射(或某些等效操作)的情况下,可能无法从存储设备中检索类别id的代表性数据组块。
[0109]
图4示出了图1的有损存储设备的细节。在图4中,有损存储设备被示出为ssd,但是本发明构思的实施例可以使用其他形式的存储,诸如硬盘驱动器。存储设备125可以包括主机接口逻辑(hil)405(其也可以被称为“主机接口”)、ssd控制器410以及各种闪存芯片415

1至415

8(也被称为“闪存存储”),其可以被组织到各种通道420

1至420

4中。主机接口逻辑405可以管理存储设备125与其他组件(诸如图1的处理器110)之间的通信。主机接口逻辑405还可以管理与远离存储设备125的设备(即,不被视为图1的机器105的部分、但例如通过一个或多个网络连接与存储设备125通信的设备)的通信。这些通信可以包括从存储设备125读取数据的读取请求、将数据写入存储设备125的写入请求以及从存储设备125删除数据的删除请求。主机接口逻辑405可以仅管理单个端口上的接口,或者它可以管理多个端口之间的接口。可替代地,存储设备125可以包括多个端口,端口中的每一个可以具有管理端口上的接口的单独的主机接口逻辑405。本发明构思的实施例还可以混合各种可能性(例如,具有三个端口的ssd可能具有管理一个端口的一个主机接口逻辑和管理其他两个端口的第二主机接口逻辑)。
[0110]
ssd控制器410可以使用闪存控制器(图4中未示出)管理闪存芯片415

1至415

8上的读取和写入操作以及垃圾收集和其他操作。ssd控制器410可以包括闪存转换层425和类别id确定器电路430。闪存转换层425可以管理lba(如图1的机器105所使用的)到数据实际存储在存储设备125上的pba的映射。通过使用闪存转换层425,数据在存储设备125中从一个块移动到另一个块时,图1的机器105不需要被通知。将在下面参考图5进一步讨论闪存转换层425。
[0111]
如以上参考图3所讨论的,类别id确定器电路430可以确定接收到的数据组块的类
别id,然后存储设备125可以使用该类别id以有损方式存储接收到的数据组块。类别id确定器电路430可以实现神经网络、机器学习算法、另一个分类器和/或相似性或距离函数。尽管图4仅示出了一个类别id确定器电路430,但是本发明构思的实施例可以包括任意数量(两个或更多个)的类别id确定器电路430。
[0112]
尽管图4将ssd 125示出为包括被组织到四个通道420

1至420

4中的八个闪存芯片415

1至415

8,但是本发明构思的实施例可以支持被组织到任意数量的通道中的任意数量的闪存芯片。类似地,尽管图4示出了ssd的结构,但是可以使用不同的结构来实现其他存储设备(例如,硬盘驱动器),且具有相似的潜在益处。
[0113]
图5示出了图4的闪光转换层425的细节。传统的闪存转换层可以包括单个表,其将从图1的机器105接收到的lba映射到存储设备125上的pba。然而,在图5中,闪存转换层425可以包括两个映射表505和510。映射表505可以将从图1的机器105接收到的lba映射到由类别id确定器电路430之一确定的类别id。如图5所见,映射表505中的每个条目可以包括(从图1的机器105接收到的)数据组块的lba、(由类别id确定器电路430确定的)类别id、分类器id(其识别哪个类别id确定器电路确定了类别id)和其他参数(其可以包括分类器id、任何适用的持久性策略以及与数据组块的存储有关的其他信息:例如,数据组块的期望的准确度水平)。因此,例如,与lba 0x1000和0x1001相关联的数据组块两者都通过由数字“1”标识的类别id确定器电路被分配类别id 101(这意味着对lba 0x1000和0x1001两者的读取请求可以返回相同的代表性数据组块,这可能与由图1的机器105为任一lba写入的数据组块不同)。
[0114]
具有lba 0x1002和0x1003的数据组块两者都被分配类别id 201,但是是由不同的类别id确定器电路分配的。因此,与lba 0x1002和0x1003相关联的数据组块不仅由与具有lba 0x1000和0x1001的数据组块不同的数据组块表示,而且彼此之间也相互表示(因为类别id“201”由不同的类别id确定器电路分配给每个数据组块)。
[0115]
由于映射表505可以从lba映射到类别id,因此映射表505可以包括由图1的机器105写入的数据组块的每个唯一lba的条目。可以将其与下面讨论的映射表510中存储的信息进行比较。
[0116]
尽管映射表505将每个条目示出为包括lba,但是本发明构思的实施例可以使用除lba之外的其他信息来识别数据组块。例如,尽管基于块的ssd和基于扇区的硬盘驱动器可以使用lba表示主机的数据地址,但是键值ssd可以使用键从主机的角度识别数据。一般,在图5和其他图中以及在本文档的其他地方对“lba”的任何引用可以被替换为“键”或数据组块的任何其他基于主机的标识符。在本文档的其余部分,术语“数据id”用于表示数据组块的基于主机的标识符,无论该标识符是lba、键还是任何其他基于主机的标识符。
[0117]
尽管映射表505可以从数据id(具体地,lba)映射到类别id,但是仅该映射不能在存储设备上定位数据。为了在存储设备上定位数据,需要数据的位置。映射表510可以提供该信息。
[0118]
映射表510可以从类别id映射到存储设备上的pba。映射表510中的每个条目可以包括类别id、分配了类别id的分类器id、pba(数据存储在存储设备上的位置)、以及参数。映射表510中的参数类似于映射表505中的参数。例如,图5将映射表510中的条目示出为指定每个类别id的特定持久性策略。
[0119]
注意,在映射表505示出了从图1的机器105接收到的每个数据id的条目的同时,映射表510示出了数据已经被分配了的每个类别id的条目。因此,尽管映射表505包括四个条目,但是映射表510仅示出了三个条目(因为lba 0x1000和0x1001两者都由分类器1映射到类别id 101)。
[0120]
最后,注意,映射表505和510的组合提供了从数据id到存储设备上的pba的完整映射。例如,在映射表505中,lba 0x1000由分类器1映射到类别id 101,并且在映射表510中,类别id 101由分类器1映射到pba 0x1100。
[0121]
映射表505和510示出了如何将lba映射到类别id,然后映射到pba。但是,如以上参考图3所讨论的,在本发明构思的一些实施例中,存储设备可以返回句柄,该句柄可以用于绕过对映射表505和510的一些或全部使用。例如,在本发明构思的一些实施例中,pba可以从句柄导出,在这种情况下,映射表505和510两者可以被省略。在本发明构思的其他实施例中,类别id可以从句柄导出,并且映射表510然后可以用于确定pba。在本发明构思的又一个实施例中,映射表510(或映射表505)可以被修改以添加包括句柄的列,从而(直接或间接地)允许从句柄到pba的映射。
[0122]
图6示出了图1的有损存储设备的替代视图。在图6中,存储设备125可以经由主机接口逻辑405从机器105接收请求(诸如写入请求)、读取请求和删除请求。每种类型的请求如何被处理可以是不同的。由于所有存储设备都支持写入、读取和删除数据的命令(尽管可能具有不同的命令名称和数据格式),因此本发明构思的实施例可以与存储设备的类型无关地进行操作。
[0123]
当主机接口逻辑405接收到写入请求时,可以从写入请求中提取数据组块。然后,该数据组块可以被馈送到类别id确定器1

n中的任一个。然后,类别id确定器430

1至430

n中的一个、部分或全部可以返回类别id(以及可能返回相应的置信度水平)。然后,类别id选择器电路605也许可以基于相应的置信度水平来选择类别id(也许与分类器标识符结合)之一,并使用闪存转换层425中的图5的映射表505和510将由机器105提供的数据id映射到pba。如果数据id对于图5的映射表505是新的、或者如果类别id或分类器id已经改变,则图5的映射表505可以被更新。如果类别id和分类器id形成新的组合(在这种情况下,当前可能没有代表性数据存储在存储设备125上),则图5的映射表505也可以被更新。存储设备125还可以使用图5的映射表505和/或510中的参数来确定所选类别id的代表性数据组块的持久性策略610,并且可以使用更新电路615按照持久性策略610的指示更新类别id的代表性数据组块。一旦pba被确定,闪存接口620可以用于将更新后的代表性数据组块写入闪存芯片415,之后机器105可以被通知写入请求已成功完成。
[0124]
上面关于如何处理写入请求的描述大体上与图6中所示的元件的顺序一致。但是某些变化也是可能的。例如,如果接收到的数据组块被分配类别id/分类器id的新的组合、或者类别id的代表性数据组块正被更新并从一个pba移到另一个pba,则直到代表性数据组块被写入闪存芯片415之后,pba才获知。在该情况下,直到代表性数据组块被写入闪存芯片415之后,图5的映射表510的更新才可能发生。顺序中的其他变化也是可能的:本发明构思的实施例旨在包括所有这样的变化。
[0125]
上面的讨论假设写入请求仅包括单个数据组块(无论数据组块的大小如何)。但是机器105在单个写入请求中发送的数据可能比在单个数据组块中存储的数据更多。在这种
情况下,可以使用数据组块电路625。数据组块电路625可以从写入请求中提取数据并将该数据划分为适当大小的数据组块。然后,每个数据组块可以如上所述地被分别提供给类别id确定器电路430

1至430

n,以用于单独的分类。
[0126]
在写入请求包括不止一个数据组块的情况下,图5的映射表505可以用多个条目来更新,以反映每个这样的组块。由于写入请求可以指定要写入的整个数据的数据id,因此可以基于单个数据组块的大小为单个数据组块确定其他的数据id。
[0127]
例如,考虑数据组块的大小为4kb,并且机器105发送包括lba为0x1000、总共12kb的数据的写入请求的情况。由于写入请求包括的数据多于可以存储在单个数据组块中的数据,因此数据组块电路625可以将12kb的数据划分为适当的组块:在这种情况下,三个数据组块(由于12kb/4kb=3)。如果lba基于组块大小被分配,则第一组块的lba可以是0x1000,第二组块的lba可以是0x1001,并且第三组块的lba可以是0x1002。因此,映射表505可以被更新为包括三个条目,一个条目用于lba 0x1000、0x1001和0x1002中的一个。映射表505中的参数信息还可以用于(也许经由其他数据组块的lba)识别作为原始写入请求的部分的其他数据组块。
[0128]
当存储设备125是kv

ssd时,键可能不会增加数据组块的大小。但是由机器105提供的作为数据id的键可以具有附加到其上的索引,以识别原始数据的哪个部分由特定的数据组块对象表示。因此,例如,如果数据id是键(key),则第一数据组块可以使用被识别为key_0的键来写入,第二数据组块可以使用被识别为key_1的键来写入,并且第三数据组块可以使用被识别为key_2的键来写入。这些各种键也可以作为参数存储在图5的映射表505中的条目中,以识别相关的数据。
[0129]
处理读取请求或删除请求与处理写入请求不同。在读取请求中,机器105可以提供数据id,但不提供数据。在那种情况下,不存在要由类别id确定器电路430

1至430

n分析的数据组块。而是,数据id可以被直接呈现给闪存转换层425。图5的映射表510可以用于将数据id映射到类别id,并且图5的映射表510可以用于将数据id映射到pba。然后该pba可以使用闪存接口620从闪存芯片415被读取,并且数据被返回到机器105。
[0130]
如果发现要读取的数据跨越一个以上的数据组块,则多个数据组块可以使用图5的映射表505和510来定位。然后每个数据组块可以被分别读取,结果以正确的顺序被组合,然后数据被返回到机器105。
[0131]
另一方面,涉及一点删除请求。像读取请求一样,删除请求可以提供数据id,但不提供数据。因此,像读取请求一样,删除请求可能不涉及类别id确定器电路430

1至430

n。但是由于机器105指示不再需要以提供的数据id存储的数据,因此条目可以从映射表505中被删除。(如果要删除的数据跨越一个以上的数据组块,则可以定位相关的数据,也许使用图5映射表505中的参数列)。
[0132]
对此,存储设备125可以决定是否还有其他数据id引用与要删除的数据组块相同的类别id。也就是说,要删除的数据组块是由该类别id表示的唯一剩余的数据组块。存储设备125可以通过在映射表505中搜索包括类别id(和分类器标识符,如果需要的话)的任何剩余的条目来确定是否有任何其他数据id引用相同的类别id。如果在图5的映射表505中存在将数据id映射到类别id的任何条目,则存储设备125已经完成对删除请求的处理,并且存储设备125可以返回报告对数据的成功删除的结果。
[0133]
另一方面,如果图5的映射表505中没有将任何数据id映射到类别id的条目,则不再需要类别id。图5的映射表510中将类别id映射到pba的条目也可以被删除,在识别出的pba处的数据也可以被删除,之后,存储设备125可以返回报告对数据的成功删除的结果。(如由图5的映射表505和510中的分类器标识符所标识的)类别id确定器电路430

1至430

n可以可选地被通知类别id不再被使用,使得该类别id可以稍后用于新的数据组块的类别。
[0134]
尽管以上讨论考虑相当大的数据组块(诸如4kb或8kb),但是数据组块的大小可能从1位到千兆字节的数据、兆兆字节的数据,甚至无限大。使用与存储设备上典型存储单元的规模相当的数据组块大小对于数据管理是有用的,但不是必需的。
[0135]
可能会出现这样的问题:既然还有一些与存储类别id相关联的额外开销(这可能与存储设备上可能存储的数据组块的数量相关,但在大小方面可能没有限制),那为什么使用非常小的数据组块(按位或字节的规模)。例如,如果类别id使用64位(8个字节),则图4的闪存转换层425至少增加16个字节(因为类别id被存储在图5的两个映射表505和510中)。答案是,类别id确定器电路430

1到430

n中的任何或全部可能能够检测数据中的模式,这些模式对于检查数据的人来说是不可见的。因此,即使存储足够小的数据组块的开销可能抵消了与存储非完全保真度的数据相关联的任何益处,但是以这种粒度对数据组块进行分类仍然可以提供有用的信息。
[0136]
例如,考虑图像。当将图像被完整地呈现给人时,模式和细节可能很明显。但是,如果将图像分为红色/绿色/蓝色通道,则可能难以辨别分别查看这些通道的模式,尤其是可能会交叉进入不同颜色通道的模式。但是类别id确定器电路430

1至430

n可能能够识别人可能会错过的相似或相同数据的模式。
[0137]
图7a

图7b示出了根据本发明构思的实施例的图1的有损存储设备125处理来自图1的主机的写入请求的示例过程的流程图。在图7a中,在框705,图1的存储设备125可以(经由图4的主机接口逻辑405)接收来自图1的机器105的写入请求。在框710,如果写入请求中的数据大于单个数据组块,则数据组块电路625可以将数据划分为数据组块,数据组块中的每一个可以被单独处理,就好像在分开的写入请求中被接收一样。如虚线715所示,框710可以被省略。在框720,图4的类别id确定器电路430可以可以确定数据组块的类别id。在框725,图5的映射表505被更新以存储从数据id到类别id的映射。
[0138]
在框730,可以检查图5的映射表510,以查看是否存在从类别id到存储在图1的存储设备125上的代表性数据组块的映射。如果是这样,则在框735(图7b),可以使用数据组块和图6的持久性策略610更新代表性数据组块。如虚线740所示,框735可以被省略。然后,在框745,图1的存储设备125可以将关于对写入请求的处理的结果返回到图1的机器105。
[0139]
另一方面,如果在图5的映射表510中不存在从类别id到代表性数据组块的映射,则在框750,图1的存储设备125可以将数据组块存储在图1的存储设备125上的pba处。在框755,图5的映射表510可以被更新以反映类别id到代表性数据组块被存储的pba处的映射,并且处理可以继续到框745以将结果返回到图1的机器105。
[0140]
图8示出了根据本发明构思的实施例的图1的有损存储设备125在数据组块的不同类别id之间进行选择的示例过程的流程图。在图8中,在框805,图4的第一类别id确定器电路430

1可以用于确定数据组块的第一类别id。在框810处,图4的第二类别id确定器电路430

2可以用于确定数据组块的第二类别id。(当然,框805和810相似,只是取决于可用的类
别id确定器电路的数量,哪个类别id确定器电路被使用、并且可以根据需要被重复多次不同)。最后,在框815,图6的类别id选择器电路605可以在已经为数据组块确定的两个(或更多个)类别id之间进行选择。注意,在框805和810中,类别id确定器电路430还可以确定类别id的置信度水平,图6的类别id选择器电路605可以在类别id之间进行选择时使用。
[0141]
图9示出了根据本发明构思的实施例的图1的有损存储设备125使用持久性策略更新代表性数据组块的示例过程的流程图。在图9中,在框905,图6的更新电路615可以应用图6的持久性策略610,该持久性策略610可以指定可以如何更新代表性数据组块。在框910,图6的更新电路615可以将代表性数据组块替换为新接收到的数据组块。可替代地,在框915,图6的更新电路615可以将代表性数据组块替换为代表性数据组块和新接收到的数据组块的加权平均。可替代地,在框920,图6的更新电路615可以将代表性数据组块替换为与类别id相关联的所有数据组块的质心。
[0142]
图10示出了根据本发明构思的实施例的图1的有损存储设备125处理来自图1的主机105的读取请求的示例过程的流程图。在图10中,在框1005,图1的存储设备125可以经由图4的主机接口逻辑405接收来自图1的机器105的读取请求。在框1010,图1的存储设备125可以使用图5的映射表505将读取请求中的数据id映射到类别id。在框1015,图1的存储设备125可以使用图5的映射表510将类别id映射到pba。在框1020,图1的ssd 125可以从pba读取数据。最后,在框1025,图1的ssd 125可以将数据返回到图1的机器105。
[0143]
图11示出了根据本发明构思的实施例的图1的有损存储设备125处理来自图1的主机的删除请求的示例过程的流程图。在图11中,在框1105,图1的存储设备125可以经由图4的主机接口逻辑405从图1的机器105接收删除请求。在框1110,图1的存储设备125可以在图5的映射表505中识别从删除请求中的数据id到类别id的映射。在框1115,图1的存储设备125可以从图5的映射表505删除从数据id到类别id的映射。
[0144]
在框1120,图1的存储设备125可以检查图5的映射表505,以查看是否存在到类别id的任何其他映射。如果图5的映射表505包括到类别id的任何其他映射,则处理完成。否则,由于没有剩余的到类别id的映射,因此不再需要代表性数据组块,也不再需要类别id。因此,在框1125,图1的存储设备125可以识别图5的映射表510中从类别id到pba的映射。在框1130,图1的存储设备125可以删除存储在识别出的pba处的代表性数据组块。最后,在框1135,图1的存储设备125可以删除图5的映射表510中从类别id到pba的映射。(尽管在图11中未示出,但是图1的存储设备125还可以通知任何适用的类别id确定器电路430该类别id已经被删除,使得类别id确定器电路430可以重新使用该类别id和/或从任何内部模型或数据中移除对该类别id的引用)。
[0145]
在图7a

图11中,示出了本发明的一些实施例。但是本领域技术人员将认识到,通过改变框的顺序,通过省略框或通过包括附图中未示出的链接,本发明的其他实施例也是可能的,而不管可以具体地省略的任何元件。不论是否明确描述,流程图的所有这些变型都被认为是本发明的实施例。
[0146]
本发明构思的实施例包括优于传统实现方式的技术优点。通过使用有损存储设备,可以增加存储设备的有效存储容量,但是与从有损存储设备读取的数据相比,写入有损存储设备的数据之间存在一些潜在的变化。根据所讨论的数据组块和/或其数据类型,可以使用多个类别id确定器电路生成可能被使用的多个类别id,每个类别id确定器电路可以提
供与所识别的类别id相关联的置信度水平,该置信度水平可用于在可用的类别id中进行选择。用于将数据组块组织到类别的类别id确定器电路还可以用于识别用户可能不可见的数据模式(可以以比数据组块的大小更精细的粒度水平来识别)。
[0147]
此外,可以在软件级执行常规的数据去重复,如低精度压缩。通过将数据量化和分类添加到存储设备,无需在软件级执行数据去重复或数据压缩,但是也不需要基于专用硬件的压缩/编码。
[0148]
以下讨论旨在提供对可以实现本发明的特定方面的一种或多种合适的机器的简要概括描述。可以至少部分地通过来自传统输入设备(诸如键盘、鼠标等)的输入以及通过从另一个机器接收到的指令、与虚拟现实(vr)环境的交互、生物反馈或其他输入信号来控制一个或多个机器。如本文中所使用的,术语“机器”旨在广泛地涵盖单个机器、虚拟机或通信耦合的机器、或一起操作的设备的系统。示例性机器包括诸如个人计算机、工作站、服务器、便携式计算机、手持设备、电话、平板电脑等的计算设备,以及诸如私人或公共交通工具的运输设备,例如汽车、火车、出租车等。
[0149]
一个或多个机器可以包括嵌入式控制器,诸如可编程或非可编程逻辑设备或阵列、专用集成电路(asic)、嵌入式计算机、智能卡等。一个或多个机器可以利用到一个或多个远程机器的一个或多个连接,诸如通过网络接口、调制解调器或其他通信耦合。机器可以通过诸如内联网、互联网、局域网、广域网等的物理和/或逻辑网络互连。本领域的技术人员将理解,网络通信可以利用各种有线和/或无线短程或长程载波和协议,包括射频(rf)、卫星、微波、电气和电子工程师协会(ieee)802.11、光学、红外、电缆、激光等。
[0150]
可以参考或结合包括功能、程序、数据结构、应用程序等的相关数据来描述本发明的实施例,该相关数据在被机器访问时使机器执行任务或者定义抽象数据类型或低级硬件上下文。相关数据可以存储在例如易失性和/或非易失性存储器中,例如ram、rom等或存储在其他存储设备及其相关的存储介质中,包括硬盘驱动器、软盘、光盘存储、磁带、闪存、记忆棒、数字视频磁盘、生物存储等。可以在传输环境(包括物理和/或逻辑网络)上以分组、串行数据、并行数据、传播信号等的形式传递相关数据,并且可以以压缩或加密格式使用相关数据。相关数据可以在分布式环境中使用,并且可以被本地和/或远程地存储以供机器访问。
[0151]
本发明的实施例可以包括有形的、非暂时性的机器可读介质,其包括可由一个或多个处理器执行的指令,指令包括用于执行本文所述的本发明的元件的指令。
[0152]
已经参考示出的实施例描述和示出了本发明的原理,将认识到,所示出的实施例可以在布置和细节上进行修改而不背离这样的原理,并且可以以任何期望的方式被组合。并且,尽管前述讨论集中于特定实施例,但是可以构想其他配置。特别地,即使在本文中使用诸如“根据本发明的实施例”之类的表达,这些短语也意在大体上参考实施例的可能性,并且不旨在将本发明限制于特定的实施例配置。如本文所使用的,这些术语可以引用可组合到其他实施例的相同或不同的实施例。
[0153]
前述说明性实施例不应解释为限制本发明。尽管已经描述了一些实施例,但是本领域技术人员将容易理解,在实质上不脱离本公开的新颖教导和优点的情况下,可以对那些实施例进行多种修改。因此,所有这样的修改旨在被包括在权利要求书所限定的本发明的范围内。
[0154]
本发明的实施例可以无限制地扩展到以下陈述:
[0155]
陈述1.本发明构思的实施例包括一种存储设备,包括:
[0156]
用于数据的存储装置;
[0157]
主机接口,用于在存储设备处接收来自主机的写入请求,写入请求包括第一数据组块和第一数据标识符(id);
[0158]
第一类别id确定器电路,用于确定第一数据组块的第一类别id;以及
[0159]
第一映射表,用于将第一数据id映射到第一类别id。
[0160]
陈述2.本发明构思的实施例包括根据陈述1的存储设备,其中,存储设备是基于块的固态驱动器(ssd)、键值(kv)ssd、基于块的存储设备、kv存储设备或硬盘驱动器中的至少一个。
[0161]
陈述3.本发明构思的实施例包括根据陈述1的存储设备,其中,第一数据id是逻辑块地址(lba)和键中的一个。
[0162]
陈述4.本发明构思的实施例包括根据陈述1的存储设备,其中:
[0163]
写入请求包括数据;并且
[0164]
存储设备还包括数据组块电路,用于将数据划分为第一数据组块和第二数据组块。
[0165]
陈述5.本发明构思的实施例包括根据陈述4的存储设备,其中,数据组块电路使用组块大小将数据划分为第一数据组块和第二数据组块。
[0166]
陈述6.本发明构思的实施例包括根据陈述5的存储设备,其中,主机分配组块大小。
[0167]
陈述7.本发明构思的实施例包括根据陈述5的存储设备,其中:
[0168]
写入请求的准确度水平由主机或主机上运行的应用中的至少一个指定;并且
[0169]
数据组块电路确定与准确度水平相关联的组块大小。
[0170]
陈述8.本发明构思的实施例包括根据陈述5的存储设备,其中,组块大小与基于块的存储设备的块大小或硬盘驱动器的扇区大小中的至少一个相关联。
[0171]
陈述9.本发明构思的实施例包括根据陈述1的存储设备,其中,第一类别id确定器电路在与写入请求相关联的准确度水平内确定第一数据组块的第一类别id。
[0172]
陈述10.本发明构思的实施例包括根据陈述9的存储设备,其中,写入请求的准确度水平由主机或在主机上运行的应用中的至少一个指定。
[0173]
陈述11.本发明构思的实施例包括根据陈述9的存储设备,其中,类别id确定器电路在被分配了存储在存储设备上的第一类别id的代表性数据组块的准确度水平内,确定第一数据组块的第一类别id。
[0174]
陈述12.本发明构思的实施例包括根据陈述11的存储设备,其中,类别id确定器电路包括相似性函数或差异函数中的至少一个。
[0175]
陈述13.本发明构思的实施例包括根据陈述9的存储设备,其中,类别id确定器电路至少部分地基于第一数据组块不在存储在与现有类别id相关联的存储设备上的第二数据组块的准确度水平内,确定第一数据组块的新的类别id。
[0176]
陈述14.本发明构思的实施例包括根据陈述9的存储设备,其中,类别id确定器电路在被分配了类别id的模型数据组块的准确度水平内,确定数据组块的类别id。
[0177]
陈述15.本发明构思的实施例包括根据陈述14的存储设备,其中,类别id确定器电路包括分类器或神经网络中的至少一个。
[0178]
陈述16.本发明构思的实施例包括根据陈述1的存储设备,其中,
[0179]
类别id确定器电路确定类别id的置信度水平;并且
[0180]
存储设备还包括用于确定数据组块的第二类别id和第二置信度水平的第二类别id确定器电路。
[0181]
陈述17.本发明构思的实施例包括根据陈述16的存储设备,还包括,用于使用第一置信度水平和第二置信度水平、在第一类别id和第二类别id之间进行选择的类别id选择器电路。
[0182]
陈述18.本发明构思的实施例包括根据陈述1的存储设备,还包括,用于将类别id映射到存储装置中的物理块地址(pba)的第二映射表,其中,数据组块存储在存储设备的存储装置的pba处。
[0183]
陈述19.本发明构思的实施例包括根据陈述1的存储设备,其中,主机接口将结果返回到主机,而第一数据组块没有存储在存储设备的存储中。
[0184]
陈述20.本发明构思的实施例包括根据陈述1的存储设备,其中:
[0185]
存储装置包括被分配了存储在pba处的第一类别id的代表性数据组块;并且
[0186]
存储设备还包括:
[0187]
持久性策略;以及
[0188]
更新电路,用于使用持久性策略来更新存储在pba处的、被分配了第一类别id的代表性数据组块。
[0189]
陈述21.本发明构思的实施例包括根据陈述20的存储设备,其中,更新电路将被分配了第一类别id的代表性数据组块替换为第一数据组块。
[0190]
陈述22.本发明构思的实施例包括根据陈述20的存储设备,其中,更新电路将被分配了第一类别id的代表性数据组块替换为被分配了第一类别id的代表性数据组块和第一数据组块的加权平均。
[0191]
陈述23.本发明构思的实施例包括根据陈述20的存储设备,其中,更新电路将被分配了第一类别id的代表性数据组块替换为由类别id表示的所有数据组块的质心。
[0192]
陈述24.本发明构思的实施例包括一种方法,包括:
[0193]
在存储设备处接收来自主机的写入请求,写入请求包括第一数据组块;
[0194]
确定第一数据组块的第一类别标识符(id);以及
[0195]
将从第一数据id到第一类别id的映射存储在存储设备中;
[0196]
其中,第一类别id可以是第一数据组块存储在存储设备上的位置的逻辑表示。
[0197]
陈述25.本发明构思的实施例包括根据陈述24的方法,其中,存储设备包括基于块的固态驱动器(ssd)、键值(kv)ssd、基于块的存储设备、kv存储设备或硬盘驱动器中的一个。
[0198]
陈述26.本发明构思的实施例包括根据陈述24的方法,其中,第一数据id是逻辑块地址(lba)和键中的一个。
[0199]
陈述27.本发明构思的实施例包括根据陈述24的方法,其中,写入请求包括第一数据id。
[0200]
陈述28.本发明构思的实施例包括根据陈述24的方法,其中,
[0201]
在存储设备处接收来自主机的写入请求包括:
[0202]
在存储设备处接收来自主机的写入请求,写入请求包括数据;以及
[0203]
将数据划分为至少第一数据组块和第二数据组块。
[0204]
陈述29.本发明构思的实施例包括根据陈述24的方法,其中,将数据划分为至少第一数据组块和第二数据组块包括:使用由主机分配的组块大小,将数据划分为至少第一数据组块和第二数据组块。
[0205]
陈述30.本发明构思的实施例包括根据陈述28的方法,其中,将数据划分为至少第一数据组块和第二数据组块包括:使用与由主机请求的准确度水平相关联的组块大小,将数据划分为至少第一数据组块和第二数据组块。
[0206]
陈述31.本发明构思的实施例包括根据陈述24的方法,其中,第一数据组块的大小与基于块的存储设备的块大小或硬盘驱动器的扇区大小中的至少一个相关联。
[0207]
陈述32.本发明构思的实施例包括根据陈述24的方法,其中,确定第一数据组块的第一类别id包括:使用与写入请求相关联的准确度水平确定第一数据组块的第一类别id。
[0208]
陈述33.本发明构思的实施例包括根据陈述32的方法,其中,写入请求包括准确度水平。
[0209]
陈述34.本发明构思的实施例包括根据陈述32的方法,其中,使用准确度水平确定第一数据组块的第一类别id包括:使用由主机或在主机上运行的应用中的至少一个指定的准确度水平确定第一数据组块的第一类别id。
[0210]
陈述35.本发明构思的实施例包括根据陈述32的方法,其中,使用准确度水平确定第一数据组块的第一类别id包括:确定第一数据组块的第一类别id,其中,第一数据组块在被分配了存储在存储设备的第一类别id的代表性数据组块的准确度水平内。
[0211]
陈述36.本发明构思的实施例包括根据陈述32的方法,其中,使用准确度水平确定第一数据组块的第一类别id包括:至少部分地基于第一数据组块不在存储在与现有类别id相关联的存储设备上的第二数据组块的准确度水平内,确定第一数据组块的新的类别id。
[0212]
陈述37.本发明构思的实施例包括根据陈述32的方法,其中,使用准确度水平确定第一数据组块的第一类别id包括:确定第一数据组块的第一类别id,其中,第一数据组块在被分配了第一类别id的模型数据组块的准确度水平内。
[0213]
陈述38.本发明构思的实施例包括根据陈述24的方法,其中,确定第一数据组块的第一类别id包括:
[0214]
使用第一分类方法确定第一数据组块的第一类别id;以及
[0215]
使用第二分类方法确定第一数据组块的第二类别id。
[0216]
陈述39.本发明构思的实施例包括根据陈述38的方法,其中:
[0217]
使用第一分类方法确定第一数据组块的第一分类别id包括:确定第一分类别id的第一置信度水平;以及
[0218]
使用第二分类方法确定第一数据组块的第二分类别id包括:确定第二分类别id的第二置信度水平。
[0219]
陈述40.本发明构思的实施例包括根据陈述39的方法,其中,确定第一数据组块的第一类别id还包括:基于第一置信度水平大于第二置信度水平,选择第一类别id。
[0220]
陈述41.本发明构思的实施例包括根据陈述24的方法,还包括:
[0221]
将第一数据组块存储在存储设备中的物理块地址(pba)处;以及
[0222]
存储从第一类别id到pba的第二映射。
[0223]
陈述42.本发明构思的实施例包括根据陈述41的方法,还包括:从存储设备向主机返回第一数据组块存储在存储设备上的结果。
[0224]
陈述43.本发明构思的实施例包括根据陈述42的方法,其中:
[0225]
该方法还包括由存储设备生成第一数据id;并且
[0226]
从存储设备向主机返回第一数据组块存储在存储设备上的结果包括:将第一数据id从存储设备返回到主机。
[0227]
陈述44.本发明构思的实施例包括根据陈述24的方法,还包括:将结果从存储设备返回到主机,而第一数据组块没有存储在存储设备中。
[0228]
陈述45.本发明构思的实施例包括根据陈述24的方法,还包括:至少部分地基于第一数据组块更新被分配了第一类别id的代表性数据组块。
[0229]
陈述46.本发明构思的实施例包括根据陈述45的方法,其中,至少部分地基于第一数据组块更新被分配了第一类别id的代表性数据组块包括:应用持久性策略,以至少部分地基于第一数据组块更新被分配了第一类别id的代表性数据组块。
[0230]
陈述47.本发明构思的实施例包括根据陈述45的方法,其中,至少部分地基于第一数据组块更新被分配了第一类别id的代表性数据组块包括:将第二数据组块替换为第一数据组块。
[0231]
陈述48.本发明构思的实施例包括根据陈述45的方法,其中,至少部分地基于第一数据组块更新被分配了第一类别id的代表性数据组块包括:将第二数据组块替换为第一数据组块和第二数据组块的加权平均。
[0232]
陈述49.本发明构思的实施例包括根据陈述45的方法,其中,至少部分地基于第一数据组块更新被分配了第一类别id的代表性数据组块包括:将第二数据组块替换为由第一类别id表示的所有数据组块的质心。
[0233]
陈述50.本发明构思的实施例包括根据陈述24的方法,其中,确定第一数据组块的第一类别标识符(id)包括:使用第一类别id确定器电路确定第一数据组块的第一类别id,第一类别id确定器电路包括相似性函数、差异函数、分类器或神经网络中的至少一个。
[0234]
陈述51.本发明构思的实施例包括根据陈述24的方法,还包括:
[0235]
在存储设备处接收来自主机的读取请求,读取请求包括数据id;
[0236]
将第一数据id映射到第一类别id;
[0237]
将第一类别id映射到pba;
[0238]
读取pba处的数据;以及
[0239]
将数据从存储设备返回到主机。
[0240]
陈述52.本发明构思的实施例包括根据陈述24的方法,还包括:
[0241]
在存储设备处接收来自主机的删除请求,删除请求包括第一数据id;以及
[0242]
删除从第一数据id到第一类别id的映射。
[0243]
陈述53.本发明构思的实施例包括根据陈述52的方法,还包括:
[0244]
确定没有从第二数据id到第一类别id的映射;
[0245]
删除存储设备上从第一类别id到pba的映射;以及
[0246]
删除存储设备上pba处的数据。
[0247]
陈述54.本发明构思的实施例包括一种制品,包括非暂时性存储介质,该非暂时性存储介质具有存储在其上的指令,指令在由机器执行时导致:
[0248]
在存储设备处接收来自主机的写入请求,写入请求包括第一数据组块;
[0249]
确定第一数据组块的第一类别标识符(id);以及
[0250]
将从第一数据id到第一类别id的映射存储在存储设备中;
[0251]
其中,第一类别id可以是第一数据组块存储在存储设备上的位置的逻辑表示。
[0252]
陈述55.本发明构思的实施例包括根据陈述54的制品,其中,存储设备包括基于块的固态驱动器(ssd)、键值(kv)ssd、基于块的存储设备、kv存储设备或硬盘驱动器中的一个。
[0253]
陈述56.本发明构思的实施例包括根据陈述54的制品,其中,第一数据id是逻辑块地址(lba)和键中的一个。
[0254]
陈述57.本发明构思的实施例包括根据陈述54的制品,其中,写入请求包括第一数据id。
[0255]
陈述58.本发明构思的实施例包括根据陈述54的制品,其中,在存储设备处接收来自主机的写入请求包括:
[0256]
在存储设备处接收来自主机的写入请求,写入请求包括数据;以及
[0257]
将数据划分为至少第一数据组块和第二数据组块。
[0258]
陈述59.本发明构思的实施例包括根据陈述58的制品,其中,将数据划分为至少第一数据组块和第二数据组块包括:使用由主机分配的组块大小,将数据划分为至少第一数据组块和第二数据组块。
[0259]
陈述60.本发明构思的实施例包括根据陈述58的制品,其中,将数据划分为至少第一数据组块和第二数据组块包括:使用与由主机请求的准确度水平相关联的组块大小,将数据划分为至少第一数据组块和第二数据组块。
[0260]
陈述61.本发明构思的实施例包括根据陈述54的制品,其中,第一数据组块的大小与基于块的存储设备的块大小或硬盘驱动器的扇区大小的至少一个相关联。
[0261]
陈述62.本发明构思的实施例包括根据陈述54的制品,其中,确定第一数据组块的第一类别id包括:使用与写入请求相关联的准确度水平确定第一数据组块的第一类别id。
[0262]
陈述63.本发明构思的实施例包括根据陈述62的制品,其中,写入请求包括准确度水平。
[0263]
陈述64.本发明构思的实施例包括根据陈述62的制品,其中,使用准确度水平确定第一数据组块的第一类别id包括:使用由主机或在主机上运行的应用中的至少一个指定的准确度水平,确定第一数据组块的第一类别id。
[0264]
陈述65.本发明构思的实施例包括根据陈述62的制品,其中,使用准确度水平确定第一数据组块的第一类别id包括:确定第一数据组块的第一类别id,其中,第一数据组块在被分配了存储在存储设备的第一类别id的代表性数据组块的准确度水平内。
[0265]
陈述66.本发明构思的实施例包括根据陈述62的制品,其中,使用准确度水平确定第一数据组块的第一类别id包括:至少部分地基于第一数据组块不在存储在与现有类别id
相关联的存储设备上的第二数据组块的准确度水平内,确定第一数据组块的新的类别id。
[0266]
陈述67.本发明构思的实施例包括根据陈述62的制品,其中,使用准确度水平确定第一数据组块的第一类别id包括:确定第一数据组块的第一类别id,其中,第一数据组块在被分配了第一类别id的模型数据组块的准确度水平内。
[0267]
陈述68.本发明构思的实施例包括根据陈述54的制品,其中,确定第一数据组块的第一类别id包括:
[0268]
使用第一分类方法确定第一数据组块的第一类别id;以及
[0269]
使用第二分类方法确定第一数据组块的第二类别id。
[0270]
陈述69.本发明构思的实施例包括根据陈述68的制品,其中:
[0271]
使用第一分类方法确定第一数据组块的第一分类别id包括:确定第一分类别id的第一置信度水平;以及
[0272]
使用第二分类方法确定第一数据组块的第二分类别id包括:确定第二分类别id的第二置信度水平。
[0273]
陈述70.本发明构思的实施例包括根据陈述69的制品,其中,确定第一数据组块的第一类别id还包括:基于第一置信度水平大于第二置信度水平来选择第一类别id。
[0274]
陈述71.本发明构思的实施例包括根据陈述54的制品,其中,非暂时性存储介质具有存储在其上的其他指令,指令在由机器执行时导致:
[0275]
将第一数据组块存储在存储设备中的物理块地址(pba)处;以及
[0276]
存储从第一类别id到pba的第二映射。
[0277]
陈述72.本发明构思的实施例包括根据陈述71的制品,其中,非暂时性存储介质具有存储在其上的其他指令,指令在由机器执行时导致:
[0278]
从存储设备向主机返回第一数据组块存储在存储设备上的结果。
[0279]
陈述73.本发明构思的实施例包括根据陈述72的制品,其中:
[0280]
方法还包括由存储设备生成第一数据id;并且
[0281]
从存储设备向主机返回第一数据组块存储在存储设备上的结果包括:将第一数据id从存储设备返回到主机。
[0282]
陈述74.本发明构思的实施例包括根据陈述54的制品,其中,非暂时性存储介质具有存储在其上的其他指令,指令在由机器执行时导致:
[0283]
将结果从存储设备返回到主机,而第一数据组块没有存储在存储设备中。
[0284]
陈述75.本发明构思的实施例包括根据陈述54的制品,其中,非暂时性存储介质具有存储在其上的其他指令,指令在由机器执行时导致:
[0285]
至少部分地基于第一数据组块更新被分配了第一类别id的代表性数据组块。
[0286]
陈述76.本发明构思的实施例包括根据陈述75的制品,其中,至少部分地基于第一数据组块更新被分配了第一类别id的代表性数据组块包括:应用持久性策略,以至少部分地基于第一数据组块更新被分配了第一类别id的代表性数据组块。
[0287]
陈述77.本发明构思的实施例包括根据陈述75的制品,其中,至少部分地基于第一数据组块更新被分配了第一类别id的代表性数据组块包括:将第二数据组块替换为第一数据组块。
[0288]
陈述78.本发明构思的实施例包括根据陈述75的制品,其中,至少部分地基于第一
数据组块更新被分配了第一类别id的代表性数据组块包括:将第二数据组块替换为第一数据组块和第二数据组块的加权平均。
[0289]
陈述79.本发明构思的实施例包括根据陈述75的制品,其中,至少部分地基于第一数据组块更新被分配了第一类别id的代表性数据组块包括:将第二数据组块替换为由第一类别id表示的所有数据组块的质心。
[0290]
陈述80.本发明构思的实施例包括根据陈述54的制品,其中,确定第一数据组块的第一类别标识符(id)包括:使用第一类别id确定器电路确定第一数据组块的第一类别id,第一类别id确定器电路包括相似性函数、差异函数、分类器或神经网络中的至少一个。
[0291]
陈述81.本发明构思的实施例包括根据陈述54的制品,其中,非暂时性存储介质具有存储在其上的其他指令,指令在由机器执行时导致:
[0292]
在存储设备处接收来自主机的读取请求,读取请求包括数据id;
[0293]
将第一数据id映射到第一类别id;
[0294]
将第一类别id映射到pba;
[0295]
读取pba处的数据;以及
[0296]
将数据从存储设备返回到主机。
[0297]
陈述82.本发明构思的实施例包括根据陈述54的制品,其中,非暂时性存储介质具有存储在其上的其他指令,指令在由机器执行时导致:
[0298]
在存储设备处接收来自主机的删除请求,删除请求包括第一数据id;以及
[0299]
删除从第一数据id到第一类别id的映射。
[0300]
陈述83.本发明构思的实施例包括根据陈述82的制品,其中,非暂时性存储介质具有存储在其上的其他指令,指令在由机器执行时导致:
[0301]
确定没有从第二数据id到第一类别id的映射;
[0302]
删除存储设备上从第一类别id到pba的映射;以及
[0303]
删除存储设备上pba处的数据。
[0304]
因此,鉴于本文所描述的实施例的多种排列,该详细描述和所附材料仅旨在是示例性的,而不应被视为限制本发明的范围。因此,要求保护的本发明是落入所附权利要求及其等同物的范围和精神之内的所有此类修改。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1