主-从重复删除储存系统及其方法和计算机可读储存介质转让专利

申请号 : CN201510781772.8

文献号 : CN105607867B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 因德拉·G.·哈里约诺柴震川

申请人 : 爱思开海力士有限公司

摘要 :

一种写入指令包括逻辑地址和要被储存的写入数据。地址映射主装置用于判断逻辑地址是否被储存在地址表中。至少部分地基于逻辑地址是否被储存在地址表中以及辨别码是否被储存在辨别码表中来选择重复删除状态。使用写入数据来产生辨别码。辨别从装置用于判断辨别码是否被储存在辨别码表中,其中,地址映射器和辨别器被配置为并行地运行,且相对于辨别器为从,地址映射器为主。

权利要求 :

1.一种主-从重复删除储存系统,包括:

地址映射主装置,被配置为:

接收写入指令,写入指令包括:(1)逻辑地址以及(2)要被储存在逻辑地址处的写入数据;

判断逻辑地址是否被储存在地址表中,所述地址表包括一个或更多个逻辑地址与物理地址之间的一个或更多个映射;以及至少部分地基于:(1)逻辑地址是否被储存在地址表中以及(2)辨别码是否被储存在辨别码表中来选择重复删除状态,其中,辨别码表包括辨别码与物理地址之间的一个或更多个映射;以及辨别从装置,被配置为:

使用写入数据来产生辨别码;以及

判断辨别码是否被储存在辨别码表中,其中:(1)地址映射器和辨别器被配置为并行地运行,以及(2)相对于辨别器为从,地址映射器为主。

2.如权利要求1所述的主-从重复删除储存系统,其中,所述系统包括半导体器件,所述半导体器件包括下面中的一种或更多种:专用集成电路ASIC或现场可编程门阵列FPGA。

3.如权利要求1所述的主-从重复删除储存系统,其中,如果判定辨别码被储存在辨别码表中,则辨别从装置还被配置为判断写入数据是否与对应于辨别码的储存的数据匹配。

4.如权利要求3所述的主-从重复删除储存系统,其中,如果判定写入数据与储存的数据匹配,则地址映射主装置还被配置为:如果判定逻辑地址未被储存在地址表中,则选择重复数据作为重复删除状态;以及如果判定逻辑地址被储存在地址表中,则:判断被储存在地址表中且与逻辑地址相对应的第一物理地址是否与被储存在辨别码表中且与辨别码相对应的第二物理地址匹配;

如果判定第一物理地址与第二物理地址匹配,则选择重复数据作为重复删除状态;以及如果判定第一物理地址与第二物理地址不匹配,则选择更新数据作为重复删除状态。

5.如权利要求3所述的主-从重复删除储存系统,其中,如果判定写入数据与储存的数据不匹配,则地址映射主装置还被配置为:如果判定逻辑地址未被储存在地址表中,则选择新数据作为重复删除状态;以及如果判定逻辑地址被储存在地址表中,则选择更新数据作为重复删除状态。

6.如权利要求1所述的主-从重复删除储存系统,还包括写入数据队列,其中:地址映射主装置还被配置为将写入数据写入到写入数据队列;以及辨别从装置还被配置为从写入数据队列获取写入数据。

7.如权利要求1所述的主-从重复删除储存系统,还包括废弃物理地址队列,其中:地址映射主装置还被配置为将在地址表中引用数目等于0的物理地址写入到废弃物理地址队列;以及辨别从装置还被配置为将辨别码表中的包括来自废弃物理地址队列的物理地址的条目移除。

8.一种主-从重复删除储存方法,包括:

接收写入指令,写入指令包括:(1)逻辑地址以及(2)要被储存在逻辑地址处的写入数据;

使用地址映射主装置来判断逻辑地址是否被储存在地址表中,所述地址表包括一个或更多个逻辑地址与物理地址之间的一个或更多个映射;

至少部分地基于:(1)逻辑地址是否被储存在地址表中以及(2)辨别码是否被储存在辨别码表中来选择重复删除状态,其中,辨别码表包括辨别码与物理地址之间的一个或更多个映射;

使用写入数据来产生辨别码;以及

使用辨别从装置来判断辨别码是否被储存在辨别码表中,其中:(1)地址映射器和辨别器被配置为并行地运行以及(2)相对于辨别器为从,地址映射器为主。

9.如权利要求8所述的主-从重复删除储存方法,其中,地址映射器和辨别器在半导体器件上实施,所述半导体器件包括下面中的一种或更多种:专用集成电路ASIC或现场可编程门阵列FPGA。

10.如权利要求8所述的主-从重复删除储存方法,其中,如果判定辨别码被储存在辨别码表中,则所述方法还包括:使用辨别从装置来判断写入数据是否与对应于辨别码的储存的数据匹配。

11.如权利要求10所述的主-从重复删除储存方法,其中,如果判定写入数据与储存的数据匹配,则所述方法还包括使用地址映射主装置来:如果判定逻辑地址未被储存在地址表中,则选择重复数据作为重复删除状态;以及如果判定逻辑地址被储存在地址表中,则:判断被储存在地址表中且与逻辑地址相对应的第一物理地址是否与被储存在辨别码表中且与辨别码相对应的第二物理地址匹配;

如果判定第一物理地址与第二物理地址匹配,则选择重复数据作为重复删除状态;以及如果判定第一物理地址与第二物理地址不匹配,则选择更新数据作为重复删除状态。

12.如权利要求10所述的主-从重复删除储存方法,其中,如果判定写入数据与储存的数据不匹配,则所述方法还包括使用地址映射主装置来:如果判定逻辑地址未被储存在地址表中,则选择新数据作为重复删除状态;以及如果判定逻辑地址被储存在地址表中,则选择更新数据作为重复删除状态。

13.如权利要求8所述的主-从重复删除储存方法,还包括:使用地址映射主装置来将写入数据写入到写入数据队列中;以及使用辨别从装置来从写入数据队列获取写入数据。

14.如权利要求8所述的主-从重复删除储存方法,还包括:使用地址映射主装置来将在地址表中引用数目等于0的物理地址写入到废弃物理地址队列中;以及使用辨别从装置来将辨别码表中的包括来自废弃物理地址队列的物理地址的条目移除。

15.一种计算机可读储存介质,所述计算机可读储存介质被实施为非暂时性计算机可读储存介质且包括计算机指令,所述计算机指令用于:接收写入指令,写入指令包括:(1)逻辑地址以及(2)要被储存在逻辑地址处的写入数据;

使用地址映射主装置来判断逻辑地址是否被储存在地址表中,所述地址表包括一个或更多个逻辑地址与物理地址之间的一个或更多个映射;

至少部分地基于:(1)逻辑地址是否被储存在地址表中以及(2)辨别码是否被储存在辨别码表中来选择重复删除状态,其中,辨别码表包括辨别码与物理地址之间的一个或更多个映射;

使用写入数据来产生辨别码;以及

使用辨别从装置来判断辨别码是否被储存在辨别码表中,其中:(1)地址映射器和辨别器被配置为并行地运行以及(2)相对于辨别器为从,地址映射器为主。

16.如权利要求15所述的计算机可读储存介质,其中,如果判定辨别码被储存在辨别码表中,则所述计算机可读储存介质还包括用于如下操作的计算机指令,用于:使用辨别从装置来判断写入数据是否与对应于辨别码的储存的数据匹配。

17.如权利要求15所述的计算机可读储存介质,还包括用于如下操作的计算机指令,用于:使用地址映射主装置来将写入数据写入到写入数据队列中;以及使用辨别从装置来从写入数据队列获取写入数据。

18.如权利要求15所述的计算机可读储存介质,还包括用于如下操作的计算机指令,用于:使用地址映射主装置来将在地址表中引用数目等于0的物理地址写入到废弃物理地址队列中;以及使用辨别从装置来将辨别码表中的包括来自废弃物理地址队列的物理地址的条目移除。

说明书 :

主-从重复删除储存系统及其方法和计算机可读储存介质

[0001] 相关申请的交叉引用
[0002] 本申请要求2014年11月14日提交的申请号为62/080,015(代理人案号SKHYP061+)、名称为“用于重复储存数据删除过程中的快速、高性能批量处理的方法(METHOD FOR FAST AND HIGH PERFORMANCE BULK PROCESSING IN STORAGE DATA DEDUPLICATION PROCESS)”的美国临时专利申请以及2015年3月27日提交的申请号为14/671,711、名称为“使用主装置和从装置的重复删除(DEDUPLICATION USING A MASTER AND A SLAVE)”的美国专利申请的优先权,其全部公开内容通过引用合并于此用于所有目的。

背景技术

[0003] 重复删除(deduplication)是在其中重复数据块被识别使得仅需要储存单个实际的拷贝的储存技术。不是储存同一数据块的多个拷贝,而是维持数据块的单个储存实例的多个引用。使更快的重复删除成为可能的新技术将是期望的。如果这些新技术解决针对新型储存介质(诸如固态储存器(例如,快闪存储器))的一些问题,则其也将是期望的。

附图说明

[0004] 在下面的具体实施方式和附图中公开了本发明的各种实施例。
[0005] 图1是图示用于使用主装置和从装置来执行重复删除储存的过程的实施例的流程图。
[0006] 图2是图示主-从重复删除储存系统的实施例的示图。
[0007] 图3是图示用于分别使用主装置和从装置来执行地址映射和辨别(fingerprinting)以选择重复删除状态的过程的实施例的流程图。
[0008] 图4是图示响应于接收到第一逻辑地址和写入数据对而被更新的辨别码(fingerprint)表和地址表的实施例的示图。
[0009] 图5是图示响应于接收到第二逻辑地址和写入数据对而被更新的辨别码表和地址表的实施例的示图。
[0010] 图6是图示响应于接收到第三逻辑地址和写入数据对而被更新的辨别码表和地址表的实施例的示图。
[0011] 图7是图示响应于接收到第四逻辑地址和写入数据对而被更新的辨别码表和地址表的实施例的示图。
[0012] 图8是图示响应于接收到第五逻辑地址和写入数据对而被更新的辨别码表和地址表的实施例的示图。
[0013] 图9是图示写入数据队列的实施例的示图。
[0014] 图10是图示废弃物理地址队列的实施例的示图。
[0015] 图11是图示识别废弃物理地址的过程的实施例的流程图。
[0016] 图12是图示用于使用废弃的物理地址队列来更新辨别码表的过程的实施例的流程图。
[0017] 图13是图示包括快闪转换层(FTL)的固态储存系统的实施例的示图。

具体实施方式

[0018] 本发明能够以许多方法来实施,包括:过程;装置;系统;物的组合;在计算机可读储存介质上实施的计算机程序产品;和/或处理器(诸如,被配置为运行储存在耦接至处理器的存储器上的指令和/或由耦接至处理器的存储器提供的指令的处理器)。在本说明书中,这些实施方式,或本发明可以采用的任何其他形式可以被称作技术。一般来说,公开的过程的步骤的次序可以在本发明的范围之内变化。除非另有说明,否则被描述为被配置为执行任务的组件(诸如,处理器或存储器)可以被实施为常规组件(其在给定时间被暂时地配置为执行任务)或特定组件(其被制造为执行任务)。如本文中所使用的,术语“处理器”指被配置为处理数据(诸如,计算机程序指令)的一个或更多个器件、电路和/或处理核。
[0019] 下面连同图示本发明的原理的附图来提供对本发明的一个或更多个实施例的详细描述。本发明是结合这些实施例来描述的,但本发明不局限于任何实施例。本发明的范围仅受权利要求的限制,且本发明包含大量的替代物、变型和等价物。在下面的描述中陈述了许多具体细节以提供对本发明的透彻理解。为了示例的目的而提供这些细节,且本发明可以在没有这些特定细节中的一些或全部的情况下根据权利要求书来实现。为了清晰的目的,未详细描述与本发明相关的技术领域中已知的技术材料,使得本发明不被不必要地混淆。
[0020] 图1是图示用于使用主装置和从装置来执行重复删除储存的过程的实施例的流程图。重复数据删除(在下文中被更简单地称作重复删除)是在其中数据的重复拷贝被识别使得(理想情况下)最多仅独特数据片段的单个拷贝被储存的数据储存技术。随后的数据拷贝仅指向早先储存的拷贝,使得重复数据不被储存。例如,电子邮件回复经常包括被响应的接收到的电子邮件。如果接收到的电子邮件和响应(其包括接收到的电子邮件的拷贝)都被储存在重复删除储存器上,则第二封电子邮件中包括的第一封电子邮件的拷贝将被识别,且该部分在重复删除储存器中将指向第一封邮件,使得不需要储存相同数据的两个拷贝。重复删除有时被称作单实例(数据)储存。
[0021] 除提升储存器利用率(例如,因为消除了重复,降低了储存的数据的总量)之外,重复删除能够通过减少必须在网络上交换的信息的量来提升网络的性能。重复删除也增加固态驱动器的使用寿命,因为需要写入更少的数据。
[0022] 在100处,接收到写入指令,包括:(1)逻辑地址以及(2)要在逻辑地址处被储存的写入数据。在本文中描述的实施例中,存在辨别过程(组件)和地址映射过程(组件),辨别过程(组件)和地址映射过程(组件)一起操作,从而以避免冗余数据或重复数据(即,重复删除)的方式来储存数据。在本文中描述的实施例中,地址映射过程充当主过程,而辨别过程充当从过程;照此,写入指令由地址映射过程来接收。然后,地址映射过程使用任何合适的技术来启动辨别过程。下面更详细地描述一些示例。
[0023] 写入数据储存在储存器(例如,诸如硬盘驱动器(HDD)储存器的磁储存器或诸如快闪储存器的固态储存器)上的实际(即,物理)位置被称作物理地址。在一些实施例中,写入数据被分解成多个块且被储存在多个(例如,非连续的)物理地址中,因此逻辑地址对应于多个物理地址(在一些实施例中)。(为了简化,本文中描述的一些实施例可以具有1:1的逻辑地址对物理地址的比例。)为了追踪哪些物理地址对应于哪些逻辑地址,使用地址表来储存逻辑地址与物理地址之间的映射。
[0024] 在一些实施例中,逻辑地址与文件系统或应用程序相关联(例如,逻辑地址为在对应的读取操作期间文件系统或应用程序将通过其来请求数据返回的地址)。在一些这种实施例中,地址映射过程可以存在于设备驱动器中或之下(例如,其中设备驱动器位于I/O层之下,I/O层依次位于文件系统之下,文件系统依次位于应用层之下)。
[0025] 在102处,执行地址映射过程,包括通过判断逻辑地址是否被储存在地址表(地址表包括一个或更多个逻辑地址与单个物理地址之间的一个或更多个映射)中来执行地址映射过程。例如,在整个地址表中,一个(唯一的)逻辑地址被映射到仅一个物理地址,但单个物理地址可以由很多逻辑地址来映射、与很多逻辑地址相关联或者由很多逻辑地址来指向。如将在下面更详细地描述的,本文中描述的示例性重复删除过程得到三种重复删除结果或重复删除状态(新数据、重复数据或更新数据)中的一种。为了决定哪种是合适的重复删除状态,地址映射过程判断逻辑地址(例如,在步骤100处接收到的)是否被储存在地址表中(例如,在步骤100处接收到的逻辑地址在之前是否已经观察到)。
[0026] 在104处,执行辨别过程,包括通过(1)使用写入数据来产生辨别码以及(2)判断辨别码是否被储存在辨别码表(其包括辨别码与物理地址之间的一个或更多个映射)中来执行辨别过程,其中,(1)地址映射过程与辨别过程并行地运行以及(2)相对于辨别过程的从过程,地址映射表过程是主过程。
[0027] 由于辨别过程在辨别码表上操作而地址映射过程在地址表上操作,因此两个过程能够并行地操作,因为它们不需要担心来自其他过程的关于它们的表的干扰。不期望的是,例如,如果当地址映射过程访问信息时辨别过程改变地址表中的同一信息。这将导致竞争状况并且(更重要的是)产生不连续的结果以及偶尔产生不正确的结果。
[0028] 如将在下面更详细地描述的,来自辨别过程的结果与来自地址映射过程的结果被组合在一起。为了确保在结果被组合之前两个过程都已经完成,过程中的一个被指定为主过程,而另一个被指定为从过程。尽管辨别过程可以被指定为主过程而地址映射过程可以被指定为从过程,但在本文中描述的实施例中,相对于辨别过程的从过程,地址映射过程是主过程。这是因为辨别过程比地址映射过程更加处理密集(processing intensive),并且不期望保持主过程一直被占用。除了耗时过程和资源密集过程之外,由于(例如)硬件加速引擎的直接的(straight-forward)低电平逻辑处理,因此辨别最好(至少在一些应用中)由硬件加速引擎来完成。用于辨别的低电平逻辑程序严格基于纯数学过程,这使得其对于硬件实施方式是完美的。最好释放主过程以(例如)让从辨别过程排队等候后续运行、组合对应的结果、基于重复删除状态是什么来启动合适的后续重复删除过程等。
[0029] 在一些实施例中,为了使用写入数据来产生辨别码,使用(例如,密码)哈希函数。如果两个辨别码不匹配,则能够100%肯定地断定:从其产生辨别码的两个数据片段不匹配。然而,如果两个辨别码匹配,则两个不同的数据片段导致相同的辨别码存在非常小的概率(但不为0)。这被称作冲突(collision)。
[0030] 在一些实施例中,数据被划分为块(例如,恒定长度或可变长度的块),且块被传送到产生辨别码的哈希函数。注意,本文中描述的重复删除技术可以与任何组块(chunking)技术一起来使用。为了清晰,本文中未描述组块,但是任何组块过程都可以容易地集成到系统中(例如,在图1中的过程之前)。
[0031] 在106处,至少部分地基于(1)逻辑地址是否被储存在地址表中以及(2)辨别码是否被储存在辨别码表中来选择重复删除状态。在本文中描述的一些示例中,选中的重复删除状态可以为:新数据、重复数据或更新数据。在一些实施例中,由主过程(即,地址映射过程)来执行步骤106,因为其是重复删除系统的“大脑”,而辨别过程是重复删除系统的“筋肉”。在下面描述如何选择合适的重复删除状态的更多详细示例。
[0032] 图2是图示主-从重复删除储存系统的实施例的示图。重复删除储存器控制器200示出执行图1的过程的系统的一个示例。在此示例中,重复删除储存器控制器200包括辨别器(fingerprinter)202、地址映射器204、辨别码表206和地址表208。在一些实施例中,使用半导体器件(诸如,专用集成电路(ASIC)或现场可编程门阵列(FPGA))来实施重复删除储存器控制器200的至少一部分。在一个示例中,重复删除储存器控制器200的全部都实施在半导体器件上。在另一个示例中,在半导体器件上实施辨别器202和辨别码表206(例如,出于上述的理由,可能期望以硬件来实施从装置),而以固件来实施地址映射器204和地址表208。
[0033] 作为主装置,地址映射器204接收逻辑地址和写入数据。然后,地址映射器204启动通过从装置(辨别器202)的处理。在一些实施例中,地址映射器204在开始其自己的地址映射处理(即,判定逻辑地址被储存在地址表208中)之前首先启动通过从装置的处理。由于地址映射器204和辨别器202被设计为并行地操作,因此不期望在启动辨别之前等待地址映射完成。
[0034] 在一些实施例中,存在位于地址映射器204与辨别器202之间的写入数据队列(未示出),地址映射器204将写入数据存放在写入数据队列中。即便当辨别器202忙于早先的写入数据时,地址映射器204与辨别器202之间的这种队列仍使地址映射器204能够将操作排队等候。这种队列也将使地址映射器204能够调节写入数据的排序,以便基于一些准则来使特定的写入数据优先于其他写入数据。
[0035] 辨别器202根据从地址映射器204(例如,经由写入数据队列或任何其他接口)接收到的写入数据产生辨别码。然后,辨别器202判断辨别码是否被储存在辨别码表206中,并将其结果通知地址映射器204。在存在驻留在辨别器202与地址映射器204之间的写入数据队列(未示出)的一些实施例中,辨别器202将其结果写入到写入数据队列中的合适的条目。
[0036] 当辨别器202正在进行其辨别处理时,地址映射器204判断逻辑地址是否被储存在地址表208中。辨别码表206和地址表208根据需要而分别由辨别器202和地址映射器204来更新。一旦辨别器202和地址映射器204已经完成它们相应的处理,结果就被组合。在此特定示例中,地址映射器204组合结果并判断系统是遇到新数据、还是遇到重复数据、还是遇到更新数据。如果写入数据为新的,则其被储存在储存器220中,否则记录对已经储存的数据的引用。
[0037] 在各种实施例中,储存器220包括各种类型的储存器(诸如,磁储存器(例如,硬盘驱动器(HDD)储存器)或固态储存器(例如,快闪储存器))。为了清楚,储存器220被示为单个器件,但在一些实施例中储存器包括多个储存器件或包括储存器件阵列。例如,储存器220可以为多个固态储存器件或固态储存器件阵列。因为固态储存器不具有活动部件(例如,不存在伸缩的臂且不存在旋转盘),因此相比于使用磁储存器,使用固态储存器件可以是吸引人的,功耗可以更佳,和/或系统的尺寸可以更小。
[0038] 如上所述,两个不同的写入数据片段导致相同的辨别码(即,冲突)存在较小的(但不为0)概率。在一些实施例中,如果在辨别码表206中找到辨别码(例如,从写入数据产生的),则辨别器202将接收到的写入数据与储存在储存器220中的数据(例如,逐位地)相比较以确保未发生冲突。与此相反,一些其他的系统可以依赖于冲突的概率低的事实且跳过写入数据与已经储存的数据的比较。在一些实施例中,辨别器202(以及重复删除储存器控制器200中的可能其他组件)以硬件(例如,ASIC或FPGA)来实施,从而将写入数据与已经储存的数据相比较的成本是相对便宜的。
[0039] 执行写入数据与储存的数据的比较可能是非常耗时的,以及在一些应用中其可能是不期望的(例如,当大量数据被写入且大量该数据是重复数据时)。在一些实施例中,执行局部检查或抽查,在局部检查或抽查中,仅比较写入数据与储存的数据中的一些(例如,仅写入数据与储存的数据中的某些位/字节)。在一些实施例中,使用适应性比较技术,在适应性比较技术中,当不存在积压(backlog)或存在较少积压时使用完整比较,当存在中度积压时使用快速比较(例如,仅某些位/字节),以及当存在大量积压时不比较写入数据与储存的数据。例如,辨别器202与地址映射器204之间的写入数据队列(未示出)中的条目的数目可以与两个阈值相比较以判定积压以及使用什么类型的比较(如果需要)。
[0040] 下面的附图描述由辨别器202和地址映射器204执行的处理中的一些的更详细示例。
[0041] 图3是图示用于分别使用主装置和从装置来执行地址映射和辨别以选择重复删除状态的过程的实施例的流程图。在所示示例中,可以选择的重复删除状态包括:新数据、重复数据和更新数据。在一些实施例中,使用此处描述的步骤来执行图1中的步骤102、104和/或106。在此示例中,由主地址映射器执行的步骤用点图案来示出,而由从辨别器执行的步骤用阴影图案来示出。
[0042] 过程从地址映射过程开始,因为其是主过程。在300处,写入数据被传送到辨别器。如上所述,不期望延迟辨别器,因此在地址映射处理开始之前将写入地址传送到辨别器。
[0043] 在302处,判断逻辑地址是否在地址表中。如果在302处逻辑地址不在地址表中,则在304处将逻辑地址与物理地址之间的新的映射添加到地址表。
[0044] 在304处和(如果需要)306处使用的物理地址可以从地址映射过程获得。例如,在300处,写入数据可以经由写入数据队列从地址映射器传送到辨别器。辨别器可以将位于储存器中的写入数据(无论之前是否观察到)的物理地址(无论新的还是旧的)放在写入数据队列的同一条目中。然后,地址映射器可以从写入数据队列获得物理地址,并在304或306处使用该物理地址(如果需要)。
[0045] 在从装置侧,辨别器在310处使用写入数据来产生辨别码。在312处,判断辨别码是否在辨别码表中。如果在312处在辨别码表中找到辨别码,则在314处判断写入数据是否匹配与辨别码相对应的储存的数据。如上所述,即使在辨别码表中找到给定的辨别码,仍然存在冲突的可能性。在一些实施例中,在314处可以执行更快的比较(例如,仅比较某些位/字节)或使用适应性比较。如果在314处数据匹配,则与辨别码相对应的物理地址可以从辨别器传送到地址映射器(例如,经由写入数据队列)。
[0046] 如果在314处写入数据与读取数据不匹配,或者如果在312处在辨别码表中未找到辨别码,则在316处将辨别码与物理地址之间的新的映射添加到辨别码表。在此特定情形下,由于在辨别码表中未找到辨别码,因此知道了在之前未见到写入数据,从而拷贝被储存在储存器中(例如,而不是创建对已经储存的拷贝的引用)。这样,在316处添加到辨别码表的物理地址为(新的)写入数据被储存的(新的)物理地址。该(新的)物理地址可以被回传至地址映射器(例如,经由写入数据队列或一些其他的接口)。
[0047] 在其中储存器为固态储存器的系统中,对新的写入数据被储存的物理地址的选择特别感兴趣。这是因为编程和擦除(P/E)操作二者都对固态储存器很有压力。随着P/E循环的次数随时间增大,固态储存器的电绝缘击穿,且储存器变得更加“泄露”,导致差的保持特性。为了确保寿命终止尽可能晚地发生,经常使用耗损均衡(wear leveling)技术,在耗损均衡技术中,固态储存器控制器尝试以平均的水平来损耗固态储存器。在一些实施例中,将任何新的写入数据从辨别器(例如,在312处判定辨别码不在辨别码表中且因此写入数据是新的之后)传送到写入地址选择器,写入地址选择器被配置为基于一些耗损均衡技术(例如,选择具有最低的P/E计数的块)来选择最佳的物理地址。可以结合本文中描述的主-从重复删除技术来使用任何合适的耗损均衡技术。
[0048] 根据来自辨别器和地址映射器的结果,选择重复删除状态。如果(1)在312处在辨别码表中未找到辨别码且在302处在地址表中未找到逻辑地址或者(2)在312处在辨别码表中找到辨别码、在314处数据不匹配以及在302处在地址表中未找到逻辑地址,则新数据状态330被选中。换言之,在之前既未观察到逻辑地址也未观察到写入数据。
[0049] 如果在312处在辨别码表中找到了辨别码、在314处写入数据与储存的数据匹配以及在302处在地址表中未找到逻辑地址,则重复数据状态340a被选中。换言之,在之前已经观察到写入数据(因此在储存器中已经存在拷贝),因此该数据为重复的(例如,即便在之前未观察到逻辑地址)。
[0050] 如果(1)在312处在辨别码表中未找到辨别码而在302处在地址表中找到逻辑地址或者(2)在312处在辨别码表中找到辨别码、在314处数据不匹配以及在302处在地址表中找到逻辑地址,则更新数据状态350a被选中。换言之,在之前已经观察到逻辑地址,但在之前未观察到写入数据。
[0051] 如果在312处在辨别码表中找到辨别码、在314处读取数据与写入数据匹配以及在302处在地址表中找到逻辑地址,则重复数据状态340b或更新数据状态350b被选中。这里存在两种可能的情况:在之前观察到写入数据和逻辑地址二者,但是在具有不同的逻辑地址和不同的数据的不同配对中,或者在之前已经观察到该特定的写入数据和逻辑地址对。在
320处的物理地址的比较(即,地址表中与接收到的逻辑地址相对应的物理地址和辨别码表中与辨别码(其从接收到的写入数据产生)相对应的物理地址的比较)区分这两种情况。
[0052] 如果在320处物理地址匹配,则复制数据状态340b被选中。这对应于特定的逻辑地址和写入数据对在之前已经被观察到的情况。如果在320处物理地址不匹配,则在306处在地址表中更新逻辑地址与物理地址之间的现有的映射,且更新数据状态350b被选中。这对应于特定的逻辑地址和写入数据对在之前未被观察到的情况。
[0053] 注意,此处示出的步骤的排序仅是示例性的,使得过程能够以重复删除状态的选择来结束。在一些实施例中,过程可能需要等待,直到其他过程(例如,辨别过程或地址映射过程)结束,或直到重复删除状态已经被选中。例如,步骤306可能需要等待,直到在320处的物理地址比较已经被执行。如果在320处的决定为是,则不需要更新地址表,因为该特定的逻辑-物理映射已经被储存在地址表中。然而,如果在320处物理地址不匹配,则在306处需要用新的逻辑-物理对来更新地址表。类似地,步骤304可能需要等待,直到辨别过程结束且物理地址从辨别器返回到地址映射器。
[0054] 为了简化,此示例描述地址表中的物理地址与逻辑地址之间的1对1映射,以及辨别码表中的辨别码与物理地址之间的1对1映射。自然地,该技术不局限于此,且其他实施例能够包括n对m的映射,其中n和m可以为任意正整数。
[0055] 为了更清楚地图示图3的过程,接下来是接收到示例性逻辑地址和示例性写入数据的示例。
[0056] 图4是图示响应于接收到第一逻辑地址和写入数据对而被更新的辨别码表和地址表的实施例的示图。在示出的示例中,示图400示出在第一时间点(T0)处的空白辨别码表和空白地址表。
[0057] 示图410示出由系统接收到的第一逻辑地址和第一写入数据(分别为LA0和D0)。(为了简化,写入数据被示出为直接到辨别器,而不是首先到地址映射器,然后到辨别器。在下面的附图中重复这种表示。)辨别器判断辨别码是否被储存在辨别码表中。如果是,则辨别器将接收到的写入数据与已经储存的数据进行比较(例如,根据工作负荷而进行完整比较、部分比较和/或适应性比较)以确保不存在冲突。并行地,地址映射器判断逻辑地址是否未被储存在地址表中。
[0058] 在此特定情形下,辨别器判定辨别码未被储存在辨别码表中,且地址映射器判定逻辑地址未被储存在地址表中。结果,新的数据状态(330)被选中作为重复删除状态。为了更清晰地示出此示例与图3之间的关系,下面在此图和其他图中使用图3中的重复删除状态的附图标记。
[0059] 示图420示出在第二时间点(T1)处的被更新后的辨别码表和地址表。辨别码FP(D0)与物理地址PA0之间的映射已经被添加到辨别码表,且物理地址PA0与逻辑地址LA0之间的映射已经被添加到地址表。物理地址PA0是写入数据D0被储存在储存器(未示出)中的物理地址。因为在之前既未观察到写入数据也未观察到逻辑地址,因此条目被添加到辨别码表和地址表二者。
[0060] 图5是图示响应于接收到第二逻辑地址和写入数据对而被更新的辨别码表和地址表的实施例的示图。图5继续图4的示例,且示图500示出时间点T1处的辨别码表和地址表的状态。
[0061] 在示图510中,接收到地址-数据对LA1和D0。在从写入数据产生辨别码以及访问辨别码表之后,辨别器判定辨别码(即,FP(D0))已经被储存在辨别码表中且写入数据匹配储存的数据(即,其不冲突)。地址映射器(并行地)判定逻辑地址(LA1)未被储存在地址表中。结果,重复数据状态340a被选中。如此示例中所示,重复数据状态包括写入数据在之前已经被观察到、但逻辑地址为新的且在之前未观察到的情况。
[0062] 示图520示出在时间点T2处的更新的辨别码表和地址表。如此示例中所示,辨别码表未被更新,因为写入数据(即D0)相同,因此另一个辨别码不需要被储存和追踪。然而,条目被添加到示图520中的地址表以将逻辑地址LA1与物理地址PA0相关联。如地址表所示,LA0和LA1二者与相同的物理地址相关联,因此实际上仅数据D0的单个拷贝被储存在储存器(未示出)中。
[0063] 图6是图示响应于接收到第三逻辑地址和写入数据对而被更新的辨别码表和地址表的实施例的示图。图6继续图5中的示例。在所示示例中,示图600示出时间T2处的辨别码表和地址表。
[0064] 在示图610中接收到写入数据D1和逻辑地址LA0。辨别器判定从写入数据D1产生的辨别码未被储存在辨别码表中,而地址映射器判定逻辑地址LA0已经被储存在地址表中。作为这些决定或结论的结果,更新数据状态350a被选中。
[0065] 示图620示出时间T3处的被更新后的辨别码表和地址表。由于写入数据是新的,因此新的条目被添加到辨别表,在该新的条目中,辨别码FP(D1)与物理地址PA1(即,写入数据D1被储存在储存器中的物理地址)相关联。在地址表中,包括逻辑地址LA0的条目被更新以反映与物理地址PA0(对应于旧的写入数据D0)不同的物理地址PA1(对应于新的写入数据D1)。
[0066] 图7是图示响应于接收到第四逻辑地址和写入数据对而被更新的辨别码表和地址表的实施例的示图。图7继续图6中的示例。示图700示出时间T3处的辨别码表和地址表。
[0067] 示图710示出接收到的地址-数据对LA0和D1。辨别器判定从写入数据D1产生的辨别码已经被储存在辨别码表中,且接收到的写入数据与储存在储存器中的数据匹配。地址映射器判定逻辑地址LA0已经被储存在地址表中。在320处来自辨别码表和地址表中的相关条目的物理地址的比较表明物理地址匹配,因此重复数据状态340b被选中。注意重复数据状态340a(见例如图5)对应于写入数据在之前已经被观察到但逻辑地址在之前未被观察到的情形。相反地,重复数据状态340b对应于写入数据和逻辑地址在之前已经一起(即,作为对)被观察到的情形。在此特定情形下,先前的在图6中接收到的地址-数据对与此处接收到的地址-数据对LA0和D1相同。示图720示出时间T4处的辨别码表和地址表。
[0068] 图8是图示响应于接收到第五逻辑地址和写入数据对而被更新的辨别码表和地址表的实施例的示图。图8继续图7中的示例。示图800示出时间T4处的辨别码表和地址表。
[0069] 在示图810中,接收到写入数据D1和逻辑地址LA1。辨别器判定与写入数据D1相对应的辨别码已经被储存在辨别码表中,且接收到的写入数据与储存的数据匹配(即,不存在冲突)。地址映射器判定逻辑地址被储存在地址表中。在320处,来自地址表与辨别码表中的相关条目的物理地址被比较且不匹配。注意,例如,在示图800中,辨别码FP(D1)对应于物理地址PA1,而逻辑地址LA1对应于物理地址PA0。这样,在306处在地址表中更新逻辑地址与物理地址之间的现有的映射,且更新数据状态350b被选中。在此特定更新数据情况下,写入数据和逻辑地址二者在之前都已经被观察到,只是不是彼此被观察到。相反地,更新数据状态350a(见例如图6)对应于写入数据在之前未被观察到但逻辑地址在之前已经被观察到的情况。
[0070] 示图820示出时间T5处的被更新后的辨别码表和地址表。在此特定情形下,辨别码表保持不变。然而,地址表被更新,使得具有逻辑地址LA1的条目现在与物理地址PA1(写入数据D1被储存在储存器上的物理地址)相关联。
[0071] 如上所述,在一些实施例中,使用写入数据队列来在地址映射器主装置与辨别器从装置之间交换信息。下面的图示出这种写入数据队列的示例。
[0072] 图9是图示写入数据队列的实施例的示图。在此示例中,示出了图4到图6的示例。地址映射器900将写入数据输入到写入数据队列的写入数据列902中。辨别器904意识到写入数据已经被写入到写入数据队列。在一些实施例中,辨别器904周期性地针对新的写入数据来检查写入数据队列;可替代地,地址映射器900可以直接用信号通知辨别器904在写入数据队列中存在新的写入数据。
[0073] 辨别器904访问与最高优先级条目(例如,第一条目)相对应的写入数据列902中的写入数据,并从该写入数据产生辨别码。然后(在合适的处理之后)辨别器904将写入数据是否已经被储存在系统中(即,在辨别码表中找到辨别码表,且接收到的写入数据匹配储存的数据,意味着不存在冲突)写入到列906中,并将对应的物理地址写入到物理地址列908中。
[0074] 在第一条目和第二条目的情形下,地址映射器900使用通过写入数据队列而交换的物理地址来将新的条目添加到地址表。参见例如图4和图5。在第三条目的情形下,地址映射器900使用通过写入数据队列而交换的物理地址来更新地址表中的现有的条目。
[0075] 出于若干理由,使用写入数据队列是期望的。一方面,即使辨别器904繁忙,地址映射器900也能够将过程排队等候。另一方面,如果写入数据还未由辨别器904访问,则地址映射器900能够调节写入数据的次序或优先级。在一些实施例中,由辨别器904使用锁定列901以指示辨别器904是否已经访问储存于其中的写入数据以及是否正在处理该写入数据。例如,在所示的状态中,第三条目被锁定,因为辨别器正在工作于该写入数据。注意,对于该条目,结果还未被返回至列906和列908。
[0076] 如果锁定条目(和第三条目的情况一样),则该条目不适合由地址映射器来重新排序(例如,如果存在地址映射器希望首先处理的较高优先级的写入数据)。例如,辨别器可能期望将结果返回至特定的条目或行,且改变条目的次序(例如,通过在正被处理的条目之上插入其他条目)可能导致信息被返回至错误的条目。然而,如果对于该条目锁定未被使能,则可以在该条目之上插入具有其他写入数据的一个或更多个新的条目,或者可以对写入数据队列中等待处理的写入数据的顺序进行一些其它改变。这使得地址映射器900能够重新排序写入数据被处理的顺序或优先级。在下面的图之后描述重新排序写入数据被处理的次序的能力是多么有益的示例。
[0077] 例如,假定在逻辑地址在之前已经见到但针对该逻辑地址已经改变辨别码和对应的写入数据的情况下更新到来。对于被取代的旧数据仅由该逻辑地址来指向的情形,系统将从辨别码表正常地移除辨别码,且旧的写入数据将被从储存器自身移除。还假定紧接着现在删除的辨别码和写入数据存在后续的写入指令。如果这样,则辨别码被回添到辨别码表,且写入数据将回添到储存器自身上。这对于固态储存器而言是低效且代价高的,因为写入损耗固态储存器的电绝缘。
[0078] 在一些实施例中,写入指令在写入队列中被重新排序,使得后面的写入指令在更新写入指令之前被处理。自然地,这假定该重新排序将不破坏储存的数据且正确的数据能够被返回至主机。这样的重新排序将防止辨别码表和储存器自身的上述的不必要的删除和添加。这样的重新排序也可以减少扫描地址表(例如,当更新指令被接收到时)所需要的时间量。这是因为如果不存在对辨别码或写入数据(如果不是因为重新排序,其已经被删除)的其他引用,该过程不得不完全遍历地址表,以便最终判定讨论的辨别码和写入数据能够被删除。
[0079] 下面的描述废弃物理地址队列的实施例。地址映射器使用此队列来用信号通知辨别器哪些物理地址是废弃的,因此辨别码表中的哪些条目能够被删除。
[0080] 图10是图示废弃物理地址队列的实施例的示图。示图1000示出时间T5处的辨别码表和地址表,并继续图8的示例。在地址表中,没有条目包括物理地址PA0。这意味着没有逻辑地址引用储存在物理地址PA0处的数据,因此能够从辨别码表删除包括该物理地址的条目。
[0081] 为了指示这种情况,地址映射器(1012)将废弃的物理地址PA0放入示图1010中的废弃物理地址队列(1014)中。在一些实施例中,地址映射器追踪地址表中的所有物理地址,并且当对特定物理地址的引用数目达到0时(例如,检查器到达地址表的尽头,而未找到对该物理地址的引用),该物理地址被添加到废弃物理地址队列。
[0082] 示图1020示出时间T6处的辨别码表,该辨别码表具有包含删除的物理地址PA0的条目。然后,辨别器(1016)可以从废弃物理地址队列(未示出)移除该地址,释放该条目以用于另一个地址。
[0083] 在各种实施例中,辨别器可以在任何期望的时间处理废弃物理地址队列中的地址。例如,当在辨别码表中需要空间时或者当辨别器未在积极地处理一些写入数据时等,辨别器可以检查废弃物理地址队列。使用队列来将废弃物理地址传送到辨别器可以是期望的,因为其允许辨别器在方便的时间和/或辨别器所期望的时间来处理废弃物理地址。即便在辨别器繁忙时,地址映射器也能够使废弃物理地址排队等候。
[0084] 图11是图示识别废弃物理地址的过程的实施例的流程图。例如,图10中的地址映射器1012可以在地址表(例如,图1000中所示)上执行此过程来识别废弃物理地址以将其放入废弃物理地址队列1014中。
[0085] 在1100处,判断是否已经添加新的物理地址到地址表中。例如,图4示出此判定为“是”的一个示例,而图5示出此判定为“否”(例如,由于被添加到图5中的地址表的物理地址在之前已经被观察到,因此不是新的)的一个示例。
[0086] 如果在1100处添加了新的物理地址,则在1102处追踪对地址表中的新物理地址的引用数目。例如,在图4中在时间T1处,针对PA0的计数为1,而在图5中在时间T2处,针对PA0的计数为2。在1102处的追踪可以为周期性地检查对每个物理地址的引用数目的持续过程和/或后台过程。
[0087] 在1102处的追踪之后或者如果在1100处未添加新的物理地址,则判断是否存在地址表中引用数目等于0的一些物理地址。如果是,则在1106处地址表中引用数目等于0的物理地址被写入到废弃物理地址队列中。参见例如图10中的示图1000和1010。
[0088] 在1106处写入到废弃物理地址队列之后或者如果在1104处不存在地址表中引用数目等于0的物理地址,则在1108处判断是否结束该过程。在一些实施例中,该过程可以持续地运行。
[0089] 图12是图示用于使用废弃物理地址队列来更新辨别码表的过程的实施例的流程图。例如,该过程可以由图10中的辨别器1016来执行。
[0090] 在1200处,判断在废弃物理地址队列中是否存在任何物理地址。如上所述,在各种实施例中,当辨别器需要释放辨别码表中空间时,当辨别器未在处理用于地址映射器主装置的写入数据时等,辨别器可以检查或维护废弃物理地址队列。
[0091] 如果在1200处在废弃物理地址队列中存在物理地址,则在1202处从废弃物理地址队列选择物理地址。在1204处,移除辨别码表中包括选中的物理地址的条目。例如,将图10中的示图1000中的辨别码表与示图1020中的辨别码表(其中具有物理地址PA0的条目已经被移除)相比较。
[0092] 在1206处,从废弃物理地址队列移除选中的物理地址。例如,这让地址映射器知道辨别器已经从辨别码表移除该物理地址。也释放该条目以用于另一个废弃物理地址。
[0093] 在步骤1206之后或者如果在1200处废弃物理地址队列是空的,则在1208处判断是否结束此过程。在一些实施例中,该过程持续地运行。
[0094] 在一些实施例中,重复删除储存器包括固态储存器(诸如NAND快闪存储器)。固态储存器具有其他类型的储存器(诸如,硬盘驱动储存器)不具有的一些特性和操作。下面描述能够用固态储存器的一些特性来工作的主-从重复删除储存系统的实施例。
[0095] 图13是图示包括快闪转换层(FTL)的固态储存器系统的实施例的示图。在所示示例中,储存器1306包含固态储存器(诸如,NAND快闪存储器)。尽管储存器1306被示为单个器件,但在一些实施例中,固态储存器1306包括多个储存器件。
[0096] 不同于其他类型的储存器(诸如,磁储存器),固态储存器具有后台过程,后台过程在不改变逻辑地址和/或无主机意识到其的情况下移动来自固态储存器1306上的一个物理位置的数据。可以移动数据的后台过程的一些示例包括垃圾收集(例如,因为固态储存器不能进行原地更新)或刷新过程,刷新过程将已经被储存很长时间的数据复制到新的位置(例如,因为随着使用,固态储存器的电绝缘击穿,使得器件关于储存的电荷泄露)。
[0097] 在所示示例中,辨别码表1300和地址表1302存在于快闪转换层1304之上。快闪转换层1304可以包括输入到其的地址(例如,由辨别码表1300和/或地址表1302储存的物理地址)与固态储存器1306上的对应于那些输入位置的实际物理位置之间的一些映射。换言之,由辨别码表1300和/或地址表1302储存的物理地址可以不对应于固态储存器1306上的储存一些信息的实际物理位置。
[0098] 出于各种原因,这样的布置可以是期望的。在一些系统中,FTL已经被实施,且期望通过FTL 1304来传送所有的访问请求,因为后台过程(诸如,垃圾收集和/或刷新过程)知道当在固态储存器1306上将数据从一个位置移动到另一个位置时更新储存在FTL中的映射。也可以期望在FTL 1304之上具有辨别码表1300和地址表1302,因为当后台过程(诸如,垃圾收集和/或刷新)被执行时那些表不需要被锁定。当后台过程正在运行时,锁定那些表将导致重复删除过程停止,这是不期望的。
[0099] 尽管已经出于清楚理解的目的而较详细地描述了前述的实施例,但本发明不局限于所提供的细节。存在实施本发明的许多替代方法。公开的实施例为说明性的而非限制性的。
[0100] 通过以上实施例可以看出,本发明提供以下技术方案。
[0101] 技术方案1.一种系统,包括:
[0102] 地址映射主装置,被配置为:
[0103] 接收写入指令,写入指令包括:(1)逻辑地址以及(2)要被储存在逻辑地址处的写入数据;
[0104] 判断逻辑地址是否被储存在地址表中,所述地址表包括一个或更多个逻辑地址与物理地址之间的一个或更多个映射;以及
[0105] 至少部分地基于:(1)逻辑地址是否被储存在地址表中以及(2)辨别码是否被储存在辨别码表中来选择重复删除状态,其中,辨别码表包括辨别码与物理地址之间的一个或更多个映射;以及
[0106] 辨别从装置,被配置为:
[0107] 使用写入数据来产生辨别码;以及
[0108] 判断辨别码是否被储存在辨别码表中,其中:(1)地址映射器和辨别器被配置为并行地运行,以及(2)相对于辨别器为从,地址映射器为主。
[0109] 技术方案2.如技术方案1所述的系统,其中,所述系统包括半导体器件,所述半导体器件包括下面中的一种或更多种:专用集成电路ASIC或现场可编程门阵列FPGA。
[0110] 技术方案3.如技术方案1所述的系统,其中,如果判定辨别码被储存在辨别码表中,则辨别从装置还被配置为判断写入数据是否与对应于辨别码的储存的数据匹配。
[0111] 技术方案4.如技术方案3所述的系统,其中,如果判定写入数据与储存的数据匹配,则地址映射主装置还被配置为:
[0112] 如果判定逻辑地址未被储存在地址表中,则选择重复数据作为重复删除状态;以及
[0113] 如果判定逻辑地址被储存在地址表中,则:
[0114] 判断被储存在地址表中且与逻辑地址相对应的第一物理地址是否与被储存在辨别码表中且与辨别码相对应的第二物理地址匹配;
[0115] 如果判定第一物理地址与第二物理地址匹配,则选择重复数据作为重复删除状态;以及
[0116] 如果判定第一物理地址与第二物理地址不匹配,则选择更新数据作为重复删除状态。
[0117] 技术方案5.如技术方案3所述的系统,其中,如果判定写入数据与储存的数据不匹配,则地址映射主装置还被配置为:
[0118] 如果判定逻辑地址未被储存在地址表中,则选择新数据作为重复删除状态;以及[0119] 如果判定逻辑地址被储存在地址表中,则选择更新数据作为重复删除状态。
[0120] 技术方案6.如技术方案1所述的系统,还包括写入数据队列,其中:
[0121] 地址映射主装置还被配置为将写入数据写入到写入数据队列;以及[0122] 辨别从装置还被配置为从写入数据队列获取写入数据。
[0123] 技术方案7.如技术方案1所述的系统,还包括废弃物理地址队列,其中:
[0124] 地址映射主装置还被配置为将在地址表中引用数目等于0的物理地址写入到废弃物理地址队列;以及
[0125] 辨别从装置还被配置为将辨别码表中的包括来自废弃物理地址队列的物理地址的条目移除。
[0126] 技术方案8.一种方法,包括:
[0127] 接收写入指令,写入指令包括:(1)逻辑地址以及(2)要被储存在逻辑地址处的写入数据;
[0128] 使用地址映射主装置来判断逻辑地址是否被储存在地址表中,所述地址表包括一个或更多个逻辑地址与物理地址之间的一个或更多个映射;
[0129] 至少部分地基于:(1)逻辑地址是否被储存在地址表中以及(2)辨别码是否被储存在辨别码表中来选择重复删除状态,其中,辨别码表包括辨别码与物理地址之间的一个或更多个映射;
[0130] 使用写入数据来产生辨别码;以及
[0131] 使用辨别从装置来判断辨别码是否被储存在辨别码表中,其中:(1)地址映射器和辨别器被配置为并行地运行以及(2)相对于辨别器为从,地址映射器为主。
[0132] 技术方案9.如技术方案8所述的方法,其中,地址映射器和辨别器在半导体器件上实施,所述半导体器件包括下面中的一种或更多种:专用集成电路ASIC或现场可编程门阵列FPGA。
[0133] 技术方案10.如技术方案8所述的方法,其中,如果判定辨别码被储存在辨别码表中,则所述方法还包括:使用辨别从装置来判断写入数据是否与对应于辨别码的储存的数据匹配。
[0134] 技术方案11.如技术方案10所述的方法,其中,如果判定写入数据与储存的数据匹配,则所述方法还包括使用地址映射主装置来:
[0135] 如果判定逻辑地址未被储存在地址表中,则选择重复数据作为重复删除状态;以及
[0136] 如果判定逻辑地址被储存在地址表中,则:
[0137] 判断被储存在地址表中且与逻辑地址相对应的第一物理地址是否与被储存在辨别码表中且与辨别码相对应的第二物理地址匹配;
[0138] 如果判定第一物理地址与第二物理地址匹配,则选择重复数据作为重复删除状态;以及
[0139] 如果判定第一物理地址与第二物理地址不匹配,则选择更新数据作为重复删除状态。
[0140] 技术方案12.如技术方案10所述的方法,其中,如果判定写入数据与储存的数据不匹配,则所述方法还包括使用地址映射主装置来:
[0141] 如果判定逻辑地址未被储存在地址表中,则选择新数据作为重复删除状态;以及[0142] 如果判定逻辑地址被储存在地址表中,则选择更新数据作为重复删除状态。
[0143] 技术方案13.如技术方案8所述的方法,还包括:
[0144] 使用地址映射主装置来将写入数据写入到写入数据队列中;以及
[0145] 使用辨别从装置来从写入数据队列获取写入数据。
[0146] 技术方案14.如技术方案8所述的方法,还包括:
[0147] 使用地址映射主装置来将在地址表中引用数目等于0的物理地址写入到废弃物理地址队列中;以及
[0148] 使用辨别从装置来将辨别码表中的包括来自废弃物理地址队列的物理地址的条目移除。
[0149] 技术方案15.一种计算机程序产品,所述计算机程序产品在非暂时性计算机可读储存介质中实施且包括计算机指令,计算机指令用于:
[0150] 接收写入指令,写入指令包括:(1)逻辑地址以及(2)要被储存在逻辑地址处的写入数据;
[0151] 使用地址映射主装置来判断逻辑地址是否被储存在地址表中,所述地址表包括一个或更多个逻辑地址与物理地址之间的一个或更多个映射;
[0152] 至少部分地基于:(1)逻辑地址是否被储存在地址表中以及(2)辨别码是否被储存在辨别码表中来选择重复删除状态,其中,辨别码表包括辨别码与物理地址之间的一个或更多个映射;
[0153] 使用写入数据来产生辨别码;以及
[0154] 使用辨别从装置来判断辨别码是否被储存在辨别码表中,其中:(1)地址映射器和辨别器被配置为并行地运行以及(2)相对于辨别器为从,地址映射器为主。
[0155] 技术方案16.如技术方案15所述的计算机程序产品,其中,如果判定辨别码被储存在辨别码表中,则所述方法还包括使用辨别从装置来判断写入数据是否与对应于辨别码的储存的数据匹配。
[0156] 技术方案17.如技术方案15所述的计算机程序产品,还包括:
[0157] 使用地址映射主装置来将写入数据写入到写入数据队列中;以及
[0158] 使用辨别从装置来从写入数据队列获取写入数据。
[0159] 技术方案18.如技术方案15所述的计算机程序产品,还包括:
[0160] 使用地址映射主装置来将在地址表中引用数目等于0的物理地址写入到废弃物理地址队列中;以及
[0161] 使用辨别从装置来将辨别码表中的包括来自废弃物理地址队列的物理地址的条目移除。