用于优化数据缓存的方法和设备与流程

文档序号:15829161发布日期:2018-11-03 00:17阅读:173来源:国知局
本公开一般性地涉及与计算机系统或存储系统有关的
技术领域
,并且更特别地,涉及一种计算机实施的方法和电子装置。
背景技术
在计算机系统或存储系统中,对缓存中缓存的数据条目的管理通常关注通过数据的物理地址来对其进行读写操作,并且通过物理地址的偏移来索引数据。因此,当系统使用数据的逻辑地址或逻辑地址的偏移来提供对数据的读写请求时,缓存将不能确定具有所给定的逻辑地址或逻辑地址偏移的数据是否被缓存在缓存中。在这种情况下,通过数据的逻辑地址提出的对数据的读写请求必须经由映射功能映射到数据的物理地址,而这种映射功能通常要求进行对持久性存储设备的若干访问步骤。为此,传统方案可以进一步提供写缓冲功能,其使得通过逻辑地址提出的读写请求有可能在写缓冲功能中所保留的“写缓冲记录”中直接找到(也称为命中),而无需“立即”进行从逻辑地址到物理地址的映射,而且避免了单独为逻辑地址建立缓存空间所带来的冗余。此后,写缓冲功能将在空闲时在后台进行从逻辑地址到物理地址的映射,这也可以称为后台重命名。技术实现要素:本公开的实施例提供了一种计算机实施的方法、电子装置和计算机程序产品。在本公开的第一方面,提供了一种计算机实施的方法。该方法包括:将持久性存储设备中的数据缓存在缓存中;将数据在持久性存储设备中的物理地址和逻辑地址缓存在缓存中;以及响应于接收到针对数据的访问请求,使用物理地址和逻辑地址中的至少一个地址来访问缓存中缓存的数据。在一些实施例中,将物理地址和逻辑地址缓存在缓存中可以包括:使用二维散列表来缓存物理地址和逻辑地址。在一些实施例中,二维散列表可以包括:第一维散列表,用于将物理地址用作关键码并且映射到逻辑地址和数据;以及第二维散列表,用于将逻辑地址用作关键码并且映射到物理地址。在一些实施例中,逻辑地址可以对应于一个物理地址或者不对应于任何物理地址;并且物理地址可以对应于至少一个逻辑地址或者不与任何逻辑地址对应。在一些实施例中,该方法可以进一步包括:将指示符缓存在缓存中;以及将指示符设置为肯定状态或否定状态以指示数据在缓存中是否为直接可改写的。在一些实施例中,设置指示符可以包括:如果物理地址仅对应于该逻辑地址,则将指示符设置为肯定状态;以及如果物理地址对应于多个逻辑地址,或者不确定物理地址是否仅对应于该逻辑地址,则将指示符设置为否定状态。在一些实施例中,设置指示符可以进一步包括:响应于在存储设备中对数据进行快照操作或去重操作中的至少一种操作,将指示符设置为否定状态。在一些实施例中,将存储设备中的数据缓存在缓存中可以包括:响应于对数据进行读取操作的请求,确定数据是否已被缓存在缓存中;响应于确定数据未被缓存在缓存中,将数据从存储设备复制到缓存中;以及将指示符设置为否定状态。在一些实施例中,访问缓存中缓存的数据可以包括:响应于访问请求为改写请求,确定指示符的状态;响应于确定指示符为肯定状态,直接在缓存中对数据进行改写操作;以及响应于确定指示符为否定状态,将用于改写的数据缓存在缓存的另一位置;以及将指示用于改写的数据是否为直接可改写的指示符设置为肯定状态。在本公开的第二方面,提供了一种电子装置。该电子装置包括至少一个处理器和包括计算机指令的至少一个存储器。该至少一个存储器和计算机指令被配置为,与处理器一起,使得电子装置:将持久性存储设备中的数据缓存在缓存中;将数据在持久性存储设备中的物理地址和逻辑地址缓存在缓存中;以及响应于接收到针对数据的访问请求,使用物理地址和逻辑地址中的至少一个地址来访问缓存中缓存的数据。在本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令。该机器可执行指令在被执行时使得机器执行第一方面的方法的步骤。附图说明通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得容易理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施例,其中:图1示出了根据本公开的实施例的存储系统的示意图。图2示出了根据本公开的实施例的方法的流程图。图3示出了根据本公开的实施例的二维散列表的示意图。图4示出了根据本公开的实施例的缓存中的数据条目的结构示意图。图5示出了根据本公开的实施例的操作过程的状态转换图。图6示出了根据本公开的实施例的装置的框图。图7示出了可以被用来实施本公开内容的实施例的设备的框图。贯穿所有附图,相同或者相似的参考标号被用来表示相同或者相似的元件。具体实施方式下面将参考附图中所示出的若干示例性实施例来描述本公开的原理和精神。应当理解,描述这些具体的实施例仅是为了使本领域的技术人员能够更好地理解并实现本公开,而并非以任何方式限制本公开的范围。应当注意,在本公开的上下文中为了讨论的方便,可能使用某些特定的术语来描述本公开的某些实施例。但是,本领域的技术人员将理解,这样的描述无意将本公开的实施例限制于特定的系统或技术环境。本公开的实施例等同地可应用到其他的计算机系统或存储系统中。如上文所提到的,在传统的方案中,写缓冲功能的写缓冲记录的空间是有限的。这里,写缓冲记录是指写缓冲功能保留的空间,用来暂时存储尚未从逻辑地址映射到物理地址的写请求。因此,建立在具备“快照”、“内联压缩”,“数据冗余消除”,“写缓冲”等高级文件系统特性的基础之上,这种传统方案的一个关键选择在于写缓冲功能应当多频繁地针对写缓冲记录中的那些数据条目进行重命名。事实上,仅写缓冲记录中的数据条目可能是可命中的,但是它们不能过久地保持在数据记录中,而是一旦重命名完成就必须从写缓冲记录移除。为了进一步解释后台重命名而考虑两个假设的情形。一个假设情形是,如果写缓冲功能过久地进行重命名,则它针对近期的读写操作将具有良好的命中率,因为大多数数据条目被保持在写缓冲记录中。然而,在这种情况下,写缓冲记录将会变满,并且此后新到来的写请求难以借助“写缓冲”提升性能。因此,新请求的性能将变得非常差,甚至差于不启用写缓冲功能时。另一假设情形是,写缓冲功能在它空闲时快速地进行重命名。以这种方式,写缓冲记录将包含非常少的数据条目可能被命中,这也导致了差的命中率。在实践中,如下表所示,重命名的频率不管是短还是长,写缓冲功能必须选择其中的一种。在下表中,近期r/w意指满足良好空间局部性的逻辑读写请求,而非近期r/w意指其地址不在近期缓存条目列表中的请求,从而较不可能命中。这里,逻辑读写是指来自客户端侧存储系统的通过逻辑地址的i/o请求,其地址例如由<文件系统号,根索引号,偏移地址>组成。相对应地,物理读写是指在完成从逻辑地址到物理地址的映射之后对物理盘的持久数据的i/o请求,其例如可以由物理地址偏移组成。重命名频率[近期r/w][非近期r/w]短(难以选择)差好长(难以选择)好差表1传统方案之所以存在上述问题的原因在于,缓存中的数据条目是通过物理地址索引的传统的散列表来组织的,所以如果提供物理地址,则它可以被询问而快速地回答它是否包含具有该物理地址的数据。但是,如果通过逻辑地址来访问缓存中的数据条目,则它本身无法确定具有该逻辑地址的数据是否被缓存。为了至少部分地解决上述以及其他潜在问题,本公开的实施例提出了一种算机实施的方法、电子装置和计算机程序产品,从而使得上述各种情形得以改进并且使得缓存中的数据更易于管理。如下表所示出的,通过使用本公开的实施例,在上面讨论的具体技术场景中,重命名可以总是被推荐执行而不会对近期r/w带来负面影响。重命名频率[近期r/w][非近期r/w]短(推荐)好好长(不推荐)好差表2具体而言,本公开的实施例针对缓存中的每个数据条目扩展了数据的逻辑地址信息,并且在一些实施例中还扩展了共享指示符信息。在一些实施例中,通过将数据及其相关信息组织成为特殊的二维散列表,可以通过物理地址和逻辑地址两者来查找数据内容而不会增加时间复杂性和空间复杂性。利用本公开的实施例进行的这种改进,缓存不仅可以通过物理地址,而且也能够通过逻辑地址来查找数据,同时通过指示符的共享状态决定写操作是否存在优化的可能性。此外,在设置了共享指示符的实施例中,共享指示符可以帮助缓存来区分一个物理地址是否唯一地映射到一个逻辑地址。这将进一步防止新到来的改写请求进行更多的重复的从逻辑地址到物理地址的映射。下面结合图1来描述本公开的实施例的总体构思。图1示出了根据本公开的实施例的存储系统100的示意图。如图1中所示出的,存储系统100可以包括持久性存储设备110和缓存120。在存储系统100的操作中,持久性存储设备110中存储的数据130可以被复制到缓存120中,以便在后续操作中可以在缓存120中更快速地访问数据130,而无需反复地在持久性存储设备110中以解析索引的方式定位到数据130。为了在缓存120中实现对数据130的访问,根据本公开的实施例,数据130在持久性存储设备110中的物理地址131和逻辑地址132也与数据130一起被缓存在缓存120中。因此,存储系统100可以通过数据130的物理地址131和逻辑地址132中的至少一个地址来访问缓存120中的数据130。应当理解,图1是一种高度简化的示意图,其仅简要地示出了与本公开紧密相关的单元或组件,目的在于概括性地解释本公开的实施例的技术环境,而无意以任何方式限制本公开的范围。在其他实施例中,存储系统100还可能包括或涉及更多的单元或组件,缓存120中的数据组织方式可能具有更复杂的数据结构,持久性存储设备110与缓存120可能具有更复杂的交互机制,等等。下面结合图2-5来具体地描述根据本公开的实施例的方法。图2示出了根据本公开的实施例的方法200的流程图。在一些实施例中,方法200可以由图1中所描绘的存储系统100来执行,例如可以由存储系统100中的一个或多个单元或模块来执行。在210处,存储系统100将持久性存储设备110中的数据130缓存在缓存120中。本领域的技术人员将理解,数据130可能由于各种原因、或者持久性存储设备110与缓存120之间的各种交互机制而被缓存在缓存120中,本公开的实施例在这个方面不受限制。例如,存储系统100的用户可能通过客户端向存储系统100发出对数据130的读取请求。在这种情况下,响应于对数据130进行读取操作的请求,存储系统100可以确定数据130是否已被缓存在缓存120中。一方面,响应于确定数据130已被缓存在缓存120中,存储系统100可以直接在缓存120中对数据130进行读取操作。另一方面,响应于确定数据130未被缓存在缓存120中,存储系统100可以将数据130从持久性存储设备110复制到缓存120中。继续参考图2,在220处,存储系统100将数据130在持久性存储设备110中的物理地址131和逻辑地址132缓存在缓存120中。本领域的技术人员将理解,存储系统100可以使用各种各样的数据组织方式将数据130的物理地址131和逻辑地址132与数据130一起缓存在缓存120中,本公开的实施例在这个方面不受限制。下面结合图3来描绘根据本公开的实施例的实现这种功能的组织方式。图3示出了根据本公开的实施例的二维散列表300的示意图。本领域的技术人员将理解,根据较为简单的方式,缓存120可以利用数据130的物理地址131作为索引来形成散列表,该方式可以以时间上的大约o(1)复杂度来执行插入/找出/移除数据条目等操作。在此基础上,根据本公开的实施例,缓存120可以构建二维散列表300来进一步将数据130的逻辑地址132作为索引扩展到每个数据条目中。具体而言,如图3中所示出的,缓存120可以使用一对散列表310和320来实施二维散列表300,用以缓存数据130及其物理地址131和逻辑地址132。特别地,二维散列表300可以包括第一维散列表310和第二维散列表320。第一维散列表310可以用于将物理地址131用作关键码并且将其映射到逻辑地址132和数据130。第二维散列表320可以用于将逻辑地址132用作关键码并且将其映射到物理地址131。图3中使用虚线箭头描绘了物理地址131与逻辑地址132之间的这种映射关系。例如,在图3中示意性地描绘了第一维散列表310中的两个条目。一个条目存储有数据1、数据1的物理地址(标示为关键码k1)和数据1的逻辑地址(标示为@k2)。如图3中的虚线箭头所指示的,k1映射到第二维散列表320中以数据1的逻辑地址k2为关键码值的条目。进一步地,第二维散列表320中的该条目k2也映射到第一维散列表310中的上述条目。通过这样的映射关系,可以实现通过物理地址131和逻辑地址132中的任何一个来访问数据130。将理解,二维散列表300没有增加额外的时间复杂度和空间复杂度。与普通的一维散列表相比,二维散列表300仅使得用于存储关键码的空间加倍,但是这仍然没有增加空间复杂度,因为作为索引的逻辑地址132的大小远小于二进制大对象的数据130(例如8k)。在一些实施例中,例如在基于单一存储布局的实施例中,关于物理地址131与逻辑地址132之间的映射对应关系可以存在如下的规则。在一个方面,逻辑地址132可以仅对应于一个物理地址131,以保证通过逻辑地址132可以唯一地映射到物理地址131,进而可以访问数据130。此外,在一些情况中,逻辑地址132也可能不对应于任何物理地址或者被阻止定位到任何物理地址,例如,在某些存储系统启用了内联压缩的场合。在这种情况下,相当于逻辑地址132不可用于访问缓存120中的数据130,而仅能够通过物理地址131来访问缓存120中的数据130。在另一个方面,物理地址131可以对应于至少一个逻辑地址132。换句话说,物理地址131可能对应于包括逻辑地址132的多个逻辑地址。在本文中,这种情况可以称为数据130或物理地址131是共享的。如果多个逻辑地址映射到相同的物理地址131,则存储系统100可以考虑特殊复杂性而仅记录它们中的一个。但是,应当理解,存储所有的或部分的逻辑地址也是可行的,只是花费略微更多的存储空间和实施复杂度。此外,在一些情况中,物理地址131也可能不与任何逻辑地址对应。例如,在逻辑地址没有被启用的场合,诸如上面提到的在某些存储系统中启用了内联压缩的场合。根据上面的映射规则,可以预期到有效的二维散列映射中存在两种形式的数据条目。一种数据条目诸如(关键码1,关键码2,数据值)的形式,其指示指向该数据值的第一维散列表310中的关键码1和第二维散列表320中的关键码2这两者。例如,图3中所示出的第一维散列表310中的数据1的条目。另一种数据条目诸如(关键码1,空,数据值)的形式,其仅指示指向该数据值的第一维散列表310中的关键码1。例如,图3中的第一维散列表310中的数据2的条目,数据2的逻辑地址被设置为空,例如表示逻辑地址到物理地址的映射被阻止,其只能通过物理地址k3被访问。图4示出了根据本公开的实施例的缓存120中的数据条目400的结构示意图。如图4中所示出的,缓存120中的一个数据条目400可以包括数据130、数据130的物理地址131、数据130的逻辑地址132、改写位410和共享位420。改写位410用于指示缓存120中的数据130是否已经被改写,并且尚未将改写更新到持久性存储设备110中。此外,共享位420用于指示数据130的物理地址131是否被包括逻辑地址132的多个逻辑地址所共享。在本文中,共享位420也可以被称为共享指示符420或简称为指示符420。将理解,尽管在图4中将改写位410和共享位420描绘为一个比特位,但是在其他实施例中,它们也可以被设置为其他长度,本公开的实施例不限于此。此外,尽管图4中示意性地将数据130描绘为8k的二进制数据块,但是在其他实施例中,数据130也可以是其他大小,本公开的实施例不限于此。如下文进一步解释的,存储系统100可以通过将指示符420缓存在缓存120中,并且通过将指示符420设置为肯定状态或否定状态,来指示数据130在缓存120中是否为直接可改写的。因此,相比于常规的方案,通过设置指示符420可以避免大量的不必要的从逻辑地址到物理地址的映射和后台重命名。在一些实施例中,指示符420仅在确信逻辑地址132唯一地映射到物理地址131时才被设置为指示未被共享。例如,对于由新的写分离(writesplit)操作生成的那些数据,即由于不能直接在缓存120中进行改写而在缓存120的另一位置存放的用于改写的数据。此外,指示符420在任何其他情况下都应该被设置为指示被共享,包括在不确定数据130的物理地址131是否被共享的情况下。对于从持久性存储设备110复制到缓存120中的那些数据,因为缺乏从持久性存储设备110提供的信息而不知道它们是否被共享,所以存储系统100可以将它们的指示符420设置为指示被共享。在涉及针对数据130的快照操作或去重操作一起工作的实施例中,响应于在持久性存储设备110中对数据130进行快照操作或去重操作中的至少一种操作,存储系统100可以将数据130的指示符420设置为指示被共享。具体地,在存储系统100的例如某个存储盘上进行快照之后,缓存120中的属于这一存储盘的已有数据条目的指示符420应当设置为指示被共享。将理解,这一过程是快速的,因为缓存120中的数据条目的数目是有限的并且要访问的所有数据在内存中完成。例如,在内存大小为512mb而缓存120中的数据大小为8kb的情况下,可以计算出512mb/8kb=64k=6*104,所以时间成本仅为大约0.6微秒。此外,在去重操作中,不论是联机去重还是后台去重,去重操作使得两个物理地址合并为由多个逻辑地址所共享的一个物理地址,所以只需要将去重所涉及的数据的指示符420在去重之后设置为指示被共享。例如,在具体的实现中,可以仅需要以下的几行代码进行管理。这里,mcc缓存是指原为物理地址专用的单维缓存,这里通过扩展逻辑地址以及共享指示符、改写指示符,使其支持使用物理地址和逻辑地址的双向定位。返回参考图2,在数据130及其物理地址131和逻辑地址132均被缓存到缓存120的情况下,在230处,响应于接收到针对数据130的访问请求,存储系统100使用物理地址131和逻辑地址132中的至少一个地址来访问缓存120中缓存的数据130。在一些实施例中,如果访问请求是针对数据130的读取请求,存储系统100可以直接在缓存120中读取出数据130。在设置了指示符420的情况下,不论指示符420处于肯定状态还是否定状态,不会影响存储系统100直接从缓存120中读取数据130。在一些实施例中,在设置了指示符420的情况下,响应于访问请求为改写请求,存储系统100可以确定指示符420的状态。进一步地,响应于确定指示符420为肯定状态(即,未被共享),存储系统100可以直接在缓存120中对数据130进行改写操作。否则,响应于确定指示符420为否定状态(即,被共享),存储系统100可以将用于改写的数据缓存在缓存120的另一位置,并且将指示用于改写的数据是否为直接可改写的指示符420设置为肯定状态(即,未被共享)。换句话说,根据本公开的一些实施例,不管缓存120中的数据130的条目被共享与否,它都是直接可读取的。此外,仅在缓存120中的数据130的条目没有被共享时,它才是直接可改写的。也就是说,如果写请求定位到“非共享”的缓存数据130,仅通过逻辑地址132也可以实现对物理缓存120的直接写操作。在具体的实践中,可以使用伪代码将根据本公开的实施例的访问操作描写如下,其中使用“la”来表示数据130的逻辑地址132,使用“pa”表示数据130的物理地址131。此外,在设置了改写位410并且利用近期最少使用算法lru的实施例中,如果执行直接改写,则需要更新lru并且设置改写位410,其已经在伪代码中加以澄清。读取函数:改写函数:图5示出了根据本公开的实施例的操作过程的状态转换图500。如图5中所示出的,缓存120中缓存的数据130可能具有四种状态,即“唯一改写”510、“唯一同步”520、“共享改写”530和“共享同步”540。这些状态510-540中的“唯一”是指数据130的物理地址131确定唯一映射到逻辑地址132的,而“共享”是指数据130的物理地址131除了逻辑地址132之外,还有可能映射到其他的逻辑地址。此外,这些状态510-540中的“改写”是指数据130在缓存120中已经被改写但尚未将改写同步到持久性存储设备110中,而与持久性存储设备110中所记录的数据130不一致。相对照地,“同步”表示缓存120中的数据130与持久性存储设备110中所记录的数据130是一致的。如所示出的,响应于例如来自客户端的写操作未命中,存储系统100可以将用于对某个数据进行改写的数据130缓存在缓存120的某个位置,由于此时可以确定数据130没有被共享,所以此时数据130的状态是“唯一改写510”。如果数据130被冲刷,意味着在缓存120中对数据进行的改写被同步到持久性存储设备110,因此数据130从状态“唯一改写510”转变为状态“唯一同步520”。相反地,响应于例如来自客户端的写操作在缓存120中命中,存储系统100可以直接在缓存120中对数据130进行改写,因此数据130从状态“唯一同步520”转变为“唯一改写510”。类似地,如果缓存120被冲刷,处于“共享改写530”状态的数据130可以转变为状态“共享同步540”。此外,响应于针对数据130进行快照、去重或ilc等操作,状态“唯一改写510”和“唯一同步520”可以分别转变为“共享改写530”和“共享同步540”。另外,响应于例如来自客户端的读操作未命中,存储系统100可以将数据130从持久性存储设备110复制到缓存120,此时由于不能确定数据130是否被共享,因此存储系统100可以将数据130的状态设置为“共享同步540”。最后,处于“唯一同步520”或“共享同步540”状态下的数据130可以从缓存120中被删除,例如基于近期最少使用算法lru而被删除。在下文中,通过简单的分析来论证本公开的实施例的方法的有效性。首先,如将进一步解释的,本公开的实施例相比于传统方案在更多的情形下具有更高的命中率。更高的命中率不仅使得可以更快地向用户返回结果(意味着更好的性能),它还可以实现较少的写缓冲功能的写缓冲记录的消耗、较小的压力和许多其他好处。例如,在一些实施例中,本公开的实施例在写缓冲功能的重命名之后具有更多的直接读写命中。直接读写命中是指无需进行逻辑地址到物理地址映射来处理读写操作并且保留写缓冲功能的条目,而是通过直接查询或变更缓存的数据。对于传统的“写缓冲”方案而言,需要一定间隔频率的重命名来回收写缓冲的空间,一旦写缓冲功能的重命名完成,所有的数据条目在读和写方面必然不是可命中的,因为逻辑地址映射被清除以释放更多的写缓冲记录的空间。然而,本公开的实施例使得读和写两者仍然有可能命中,因为缓存120(例如,mcc缓存)不论在写缓冲功能的重命名之前还是之后都包含逻辑地址131的映射。再例如,本公开的实施例可以实现更多的直接改写命中。对于传统的方案而言,如果改写请求不在写缓冲功能的写缓冲记录内,则它将总是保留写缓冲记录的空间来进行写分离,即使它实际上为非共享的。因此,用于新地址的从逻辑地址到物理地址的映射和用于旧地址的解除分配这两者是不可避免的。相对照地,本公开的实施例可以容易地处理所有的非共享情形。再者,根据以下的讨论可知,非共享的数据条目在缓存120(例如,mcc缓存)的数据条目列表中将是常见的,这在增加直接改写命中方面起到了重要的作用。具体地,如果逻辑地址132的改写请求被报告为是共享的,对于首次在这一逻辑地址上的写入将不是可命中的,所以需要进行写分离。然而,写分离使得逻辑地址132映射到确定没有被共享的另一物理地址,所以对于在这一逻辑地址132上的后续所有写请求,它将持续满足直写的条件。为了进行简单的定量分析,可以假设在固定逻辑地址上总共有a次写请求,并且在它们期间执行了b次快照。在现实的场景中,b将明显地远小于a,所以可以假设b<<a。在这种情况下,仅(b+1)次写请求不是直接可改写的,并且剩余的a-(b+1)次的写请求是可以直接进行改写的。总而言之,如下表所示出的,本公开的实施例在所有情形中使得逻辑读操作是可命中的,并且使得逻辑写操作在数据条目为非共享时是可命中的,而数据条目为非共享将是普遍的情况。共享的非共享的直接读取可命中可命中直接改写不可命中可命中表3图6示意性地示出了根据本公开的实施例的装置600的框图。本领域的技术人员可以理解,图6中仅示出了装置600中的与本公开紧密相关的单元或组件,在一些实施方式中,装置600还可以包括使其能够正常运转的其他功能单元或组件。此外,图6中所示出的各个单元或组件之间可以存在必要的连接关系,但是出于简洁的考虑,图6中并没有描绘出这些连接关系。在一些实施例中,装置600可以被配置为实施上文结合图2所描述的方法200。在图6中,使用虚线框描绘了可选的单元或组件。如图6中所示出的,装置600包括缓存单元610和访问单元620。缓存单元610被配置为将持久性存储设备110中的数据130缓存在缓存120中。缓存单元610还被配置为将数据130在持久性存储设备110中的物理地址131和逻辑地址132缓存在缓存120中。访问单元620被配置为,响应于接收到针对数据130的访问请求,使用物理地址131和逻辑地址132中的至少一个地址来访问缓存120中缓存的数据130。在一些实施例中,缓存单元610还可以被配置为使用二维散列表300来缓存物理地址131和逻辑地址132。在一些实施例中,二维散列表300可以包括:第一维散列表310,用于将物理地址131用作关键码k1并且映射到逻辑地址132和数据130;以及第二维散列表320,用于将逻辑地址132用作关键码k2并且映射到物理地址131。在一些实施例中,逻辑地址132可以对应于一个物理地址或者不对应于任何物理地址;并且物理地址131可以对应于至少一个逻辑地址或者不与任何逻辑地址对应。在一些实施例中,缓存单元610还可以被配置为将指示符420缓存在缓存120中;以及将指示符420设置为肯定状态或否定状态以指示数据130在缓存120中是否为直接可改写的。在一些实施例中,缓存单元610还可以被配置为,如果物理地址131仅对应于逻辑地址132,则将指示符420设置为肯定状态;以及如果物理地址131对应于多个逻辑地址,或者不确定物理地址131是否仅对应于逻辑地址132,则将指示符420设置为否定状态。在一些实施例中,装置600还可以包括设置单元630。设置单元630被配置为,响应于在持久性存储设备110中对数据130进行快照操作或去重操作中的至少一种操作,将指示符420设置为否定状态。在一些实施例中,缓存单元610还可以被配置为,响应于对数据130进行读取操作的请求,确定数据130是否已被缓存在缓存120中;响应于确定数据130未被缓存在缓存120中,将数据130从持久性存储设备110复制到缓存120中;以及将指示符420设置为否定状态。在一些实施例中,缓存单元610还可以被配置为,响应于访问请求为改写请求,确定指示符420的状态;响应于确定指示符420为肯定状态,直接在缓存120中对数据130进行改写操作;以及响应于确定指示符420为否定状态,将用于改写的数据缓存在缓存120的另一位置;以及将指示用于改写的数据是否为直接可改写的指示符设置为肯定状态。图7示意性地示出了一种可以被用来实施本公开内容的实施例的设备700的框图。如图7中所示出的,设备700包括中央处理单元(cpu)701,其可以根据存储在只读存储设备(rom)702中的计算机程序指令或者从存储单元708加载到随机访问存储设备(ram)703中的计算机程序指令,来执行各种适当的动作和处理。在ram703中,还可存储设备700操作所需的各种程序和数据。cpu701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。设备700中的多个部件连接至i/o接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。上文所描述的各个过程和处理,例如方法200,可由处理单元701来执行。例如,在一些实施例中,方法200可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由rom702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序被加载到ram703并由cpu701执行时,可以执行上文描述的方法200的一个或多个步骤。本公开的实施例提供了一种计算机实施的方法、电子装置和计算机程序产品。在一些实施例中提出了一种不仅针对读操作而且针对写操作可以优化缓存命中率的数据结构。与已有的缓存中的数据结构(例如,mcc模型)相比,本公开的实施例具有以下优点。首先,本公开的实施例改进了读操作命中率,例如,不论写缓冲功能的重命名是否对缓存进行了清除。此外,本公开的实施例改进了写操作命中率,在更多的情况下可以支持直接改写,而无需进行缓慢的从逻辑地址到物理地址的映射。另外,本公开的实施例在进行写缓冲功能的背景冲刷时可以具有较小的压力,因为更多的写操作可以智能地被分析为不再被预留在写缓冲功能的写缓冲记录中。进一步地,本公开的实施例可以简单地与内联压缩一起工作,可以简单地与快照功能和去重功能一起工作。此外,本公开的实施例的所有操作在时间复杂度和空间复杂度两者中仍然保持o(1),并且处理数据写入的顺序也可以满足一致性的要求。此外,本公开的实施例不需要改变持久性存储设备的布局,所以容易实施于已有产品之上。最后,本公开的实施例的也可以适合于基于b树的架构,如cyclone。如本文所使用的,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。如本文所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可以包括运算、计算、处理、导出、调查、查找(例如,在表格、数据库或另一数据结构中查找)、查明等。此外,“确定”可以包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)等。此外,“确定”可以包括解析、选择、选取、建立等。应当注意,本公开的实施例可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。此外,尽管在附图中以特定顺序描述了本公开的方法的操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤组合为一个步骤执行,和/或将一个步骤分解为多个步骤执行。还应当注意,根据本公开的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。虽然已经参考若干具体实施例描述了本公开,但是应当理解,本公开不限于所公开的具体实施例。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等效布置。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1