具有本地高速缓存的内存缓存系统的制作方法

文档序号:12142086阅读:217来源:国知局
具有本地高速缓存的内存缓存系统的制作方法与工艺

本公开涉及数据处理的领域。更具体地,本公开涉及具有本地高速缓存的内存缓存(memcached)系统。



背景技术:

本文提供的背景描述是为了一般地呈现本公开的上下文的目的。除非本文另有指示,否则本部分中描述的材料不是本申请中的权利要求的现有技术并且不由于被包括在本部分中而被承认为是现有技术。

在计算中,内存缓存是一种通用的分布式存储器高速缓存系统。它通常被用于通过在随机存取存储器(RAM)中高速缓存数据和对象来加速动态数据库驱动的web站点以减少外部数据源(例如数据库)必须被读取的次数。大多数系统使用包括多个客户端和服务器的客户端-服务器架构。服务器维护键值关联阵列;客户端填充此阵列并查询它。客户端使用客户端侧的库来联系服务器。每个客户端都知道所有服务器;服务器通常不彼此通信。如果客户端希望设置或读取对应于某个键的值,则客户端的库首先计算键的散列以确定要使用的服务器。然后它联系该服务器。服务器将计算键的第二散列以确定在哪里存储或读取对应的值。通常,服务器将值保持在RAM中;如果服务器用完了RAM,则它丢弃最旧的值。

对于大型web应用、例如具有数百万用户的web应用而言,可能需要几百个内存缓存服务器来及时服务于页面请求。为了满足业务需求,服务运营商不仅需要提供尽可能大的总存储器大小以满足期望的服务水平协议(SLA),而且还需要很多的CPU能力来处理存储器访问请求,其除其他之外通常包括GET(获取)、SET(设置)、UPDATE(更新)。

由于CPU的限制,内存缓存服务器通常不能充分利用实现存储器的物理容量。代之以,运营商需要跨多个内存缓存服务器散布负载以实现预期的负载平衡并且因此实现SLA。这导致至少两个问题:1)差的存储器带宽使用;和2)差的可扩展性。此外,由于重的CPU参与,用于每个存储器访问的开销是高的。这导致按照每个键-值对访问的差的功率效率。第三,对于内存缓存的访问模式通常是高度随机的,这使得对存储在内存缓存中的数据的CPU高速缓存几乎无用,但浪费了周期和功率。

附图说明

通过结合附图的以下详细描述将容易理解实施例。为了便于该描述,相同的参考标号表示相同的结构元素。在附图的图中通过示例而非限制的方式示出了实施例。

图1是示出根据所公开的实施例的具有内存缓存系统的计算布置的框图,其中所述内存缓存系统具有本地高速缓存。

图2-图4是示出根据所公开的实施例的在服务器上的内存缓存逻辑的各种操作流程的流程图。

图5-图7是示出根据所公开的实施例的在客户端上的内存缓存逻辑的各种操作流程的流程图。

图8示出了根据所公开的实施例的适合用于实践本公开的各个方面的示例计算机系统。

图9示出了根据所公开的实施例的具有用于实践参考图2-图7所描述的方法的指令的存储介质。

具体实施方式

本文公开了与具有本地高速缓存的内存缓存系统相关联的设备、方法和存储介质。在实施例中,内存缓存系统的客户端设备可能包括存储器和与存储器耦合的一个或多个处理器。此外,客户端设备可能包括内存缓存逻辑,其被配置为接收Get(获取)或Set(设置)与内存缓存系统中的键相对应的值的请求,响应于接收到该请求,确定键是否导致由所述内存缓存逻辑在存储器中维护的本地高速缓存中的命中,以及至少部分地基于所述确定的结果是否指示所述键导致所述本地高速缓存中的命中来服务所述Get(获取)或Set(设置)请求。

在实施例中,内存缓存系统的服务器可能包括存储器和一个或多个处理器。此外,内存缓存系统还可能包括内存缓存逻辑,其被配置为接收Get(获取)与内存缓存系统中的键相对应的值的请求,确定键是否导致命中,并且响应于所述键导致命中,返回所述值和与所述值相关联的状态标志所存储在的所述内存缓存系统的一个或多个位置的一个或多个地址。在实施例中,内存缓存逻辑还可能被配置为接收请求以使用第二对应值Update(更新)内存缓存系统中的第二键,确定第二键是否导致命中,以及响应于所述第二键导致命中,利用陈旧状态更新与产生针对第二键的命中的第一条目相关联的第二状态标志,将第一条目添加到收集列表,创建针对所述第二键的第二条目,以及将第二值指派给第二条目。

在下面的详细描述中,参考形成详细描述的一部分的附图,其中相同的标号始终表示相同的部分,并且其中通过可能实践的示范实施例的方式而被示出。应当理解,在不脱离本公开的范围的情况下,可能利用其他实施例,并且可能进行结构或逻辑改变。因此,以下详细描述不应被视为限制性的,并且实施例的范围由所附权利要求书及其等同物限定。

在所附的说明书中公开了本公开的各方面。可能在不脱离本公开的精神或范围的情况下设计本公开的替代实施例及其等同物。应当注意,以下公开的相同元素在图中由相同的参考标号来指示。

各种操作可能以最有助于理解所要求保护的主题的方式依次被描述为多个离散动作或操作。然而,描述的顺序不应被解释为暗示这些操作必须是顺序相关的。具体地,这些操作可能不按照呈现的顺序而被执行。所描述的操作可能以与所描述的实施例不同的顺序来执行。在附加的实施例中,可能执行各种附加的操作和/或可能省略所描述的操作。

为了本公开的目的,短语“A和/或B”意味着(A)、(B)或(A和B)。为了本公开的目的,短语“A、B和/或C”意味着(A)、(B)、(C)、(A和B)、(A和C)、(B和C) 、或(A,B和C)。

本说明书可能使用短语“在一个实施例中”或“在实施例中”,其每个可能指代相同或不同实施例中的一个或多个。此外,关于本公开的实施例所使用的术语“包括”、“包含”、“具有”等是同义的。

如本文所使用的,术语“模块”可能指代、是如下内容的一部分或包括:专用集成电路(ASIC)、电子电路、执行一个或多个软件或固件程序的处理器(共享、专用或群组)和/或存储器(共享、专用或群组)、组合逻辑电路、和/或提供所描述的功能的其他适当的部件。

现在参考图1,其中示出了图示根据所公开的实施例的具有内存缓存系统的计算布置的框图,其中所述内存缓存系统具有本地高速缓存。如图所示,具有内存缓存系统的计算布置100可能包括通过网络104彼此耦合的多个客户端设备102a-102c和多个服务器106a-106b。每个客户端设备102a、102b或102c可能包括对应的处理器和存储器112a、112b或112c、客户端侧内存缓存逻辑114a、114b或114c、本地高速缓存116a、116b或116c以及网络接口卡(NIC)118a、118b或118c。然而,每个服务器106a或106b可能包括对应的处理器和存储器122a或122b、服务器侧内存缓存逻辑124a或124b,以及远程直接存储器访问(RDMA)NIC 126a或126b。客户端侧内存缓存逻辑114a、114b和114c以及服务器侧内存缓存逻辑124a和124b一起实现具有本地高速缓存​​116a、116b和116c的内存缓存系统,提供了相对于现有内存缓存系统的潜在优点。将在下面更详细地描述客户端侧内存缓存逻辑114a、114b和114c以及服务器侧内存缓存逻辑124a和124b的操作流程,包括本地高速缓存116a、116b和116c的使用和维护,以及NIC 118a-118c和RDMA NIC 126a-126b的使用。

除了客户端侧内存缓存逻辑114a、114b或114c以及本地高速缓存116a、116b或116c的实例化之外,客户端设备102a、102b或102c旨在表示本领域已知的广泛的计算设备,包括但不限于可从加利福尼亚州丘珀蒂诺的苹果计算机公司、加尼福尼亚州帕罗奥图的惠普公司获得的智能电话、计算平板、超极本、膝上型计算机、台式计算机或服务器等等。因此,处理器和存储器112a-112c和NIC 118a-118c可能是本领域中已知的许多这些元件中的任何一个。

类似地,除服务器内存缓存逻辑124a或124b之外,服务器106a或106b旨在表示本领域已知的广泛的计算设备,包括但不限于可从德克萨斯州奥斯汀的戴尔计算机公司、纽约阿蒙克的IBM公司获得的服务器等等。虽然为了便于理解,示出了计算布置100并且用三个客户端设备102a,102b和102c以及两个服务器106a和106b来描述计算布置100,但是本公开不限于此。在实施例中,计算布置100可能包括任何数量的客户端设备和任何数量的服务器。因此,处理器和存储器122a-122c和RDMA NIC 126a-126b可能是本领域中已知的许多这些元件中的任何一个。

网络104可能包括本领域已知的一个或多个有线和/或无线、局域和/或广域、公共和/或私有网络。每个网络可能包括一个或多个路由器、交换机、网关和/或其他联网设备。

现在参考图2-图4,其中示出了图示根据所公开的实施例的在服务器上的内存缓存逻辑的各种操作流程的三个流程图。如图所示,服务器侧内存缓存逻辑124a或124b的操作流程可能包括用于服务于各种请求的过程200和300以及用于维护服务器的过程400。操作流程可能在框202处开始,其中服务器侧内存缓存逻辑124a或124b可能经历内存缓存系统的典型服务器初始化过程。然而,根据本公开,与现有的内存缓存系统不同,在初始化过程期间,服务器侧内存缓存逻辑124a或124b可能将其存储器122a或122b的物理地址映射到内存缓存系统的地址空间。稍后将描述与虚拟地址相对的映射物理地址的潜在优点。

接下来在框204处,服务器侧内存缓存逻辑124a或124b可能接收并开始来自客户端102a、102b或102c的请求的服务。在框206处,在接收到请求时,服务器侧内存缓存逻辑124a或124b可能首先确定所接收的请求是否是获取与内存缓存系统中的键相对应的值的Get(获取)请求。如果它是Get(获取)请求,则操作流程可能在框208处继续,其中服务器侧内存缓存逻辑124a或124b可能确定键是否导致命中。如果确定的结果指示所述键未导致命中,则操作流程可能在框210处继续,其中服务器侧内存缓存逻辑124a或124b可能例如用指示键的请求值未被找到的消息来进行响应。此后,如前所述,操作流程可能继续回到框204处。

然而,如果在框208处,确定的结果指示键导致命中,则操作流程可能在框212处继续,其中服务器侧内存缓存逻辑124a或124b可能(代替返回所请求的值)向请求客户端102a、102b或102c返回内存缓存系统的一个或多个位置的一个或多个地址,其中存储键的对应值以及指示该值是否为陈旧的相关联的状态标志。在客户端设备102a、102b或102c接收到一个或多个地址之后的内容将在稍后参考图5-图7描述客户端设备102a、102b或102c的操作流程时被描述。在实施例中,对应值的位置的地址、以及针对相关联的状态标志的地址被返回。在其他实施例中,返回针对对应值和相关联的状态标志共置的位置的一个地址。

回到框206处,如果确定的结果指示该请求不是Get(获取)请求,则操作流程可能在图3中继续,在框302处开始。在框302处,服务器侧内存缓存逻辑124a或124b可能确定该请求是否是Set(设置)请求。如果确定的结果指示该请求既不是Set(设置)请求也不是Update(更新)请求,则服务器侧内存缓存逻辑124a或124b可能像在现有的存储系统中那样处理和服务该请求。此后,如前所述,操作流程可能继续回到图2的框204处。

另一方面,如果在框302处确定的结果指示它是Set(设置)或Update(更新)请求,则操作流程可能在框306处继续。在框306处,服务器侧内存缓存逻辑124a或124b可能确定针对Set(设置)或Update(更新)请求的键是否存在旧的对应值。如果在框306处确定的结果指示针对Set(设置)或Update(更新)请求的键不存在旧的对应值,则操作流程可能在框308处继续,其中服务器侧内存缓存逻辑124a或124b可能继续为该键分配在内存缓存系统中的新条目,并为该条目指派由Set(设置)或Update(更新)请求所提供的值。接下来,在框310处,服务器侧内存缓存逻辑124a或124b可能例如用指示已成功完成Set(设置)或Update(更新)请求的消息来响应该请求。从框310,操作流程可能如前所述继续到图2的框204处。

回到框306处,如果在框306处确定的结果指示针对Set(设置)或Update(更新)请求的键存在旧的对应值,则操作流程可能在框312处继续,其中服务器侧内存缓存逻辑124a或124b可能Update(更新)与该键相关联的状态标志以反映旧的对应值为陈旧。此外,服务器侧内存缓存逻辑124a或124b可将具有键和旧对应值的条目添加到回忆(recollect)列表上,以使得被分配给该条目的存储器能够随后被恢复。在实施例中,回忆列表可能是先进先出列表。从框312,操作流程可能如前所述继续到框308处。

除了用于服务Get(获取)、Set(设置)或Update(更新)请求的上述操作流程之外,服务器侧内存缓存逻辑124a或124b还可能周期性地执行维护过程400(也称为清除过程)以恢复被分配给具有被标记为“陈旧”的值的条目的存储器。过程400可能在框402处开始,其中服务器侧内存缓存逻辑124a或124b等待执行维护过程的时间。过程400可能在框402处连续循环,直到到执行维护过程400的时间。在这样的时间,过程400可能在框404处继续。在框404处,服务器侧内存缓存逻辑124a或124b可能确定在哪里已经添加了任何条目到回忆列表。如果确定的结果指示回忆列表是空的,意味着自从最后维护以来没有条目具有被标记为陈旧的它们的值,则过程400可能进入休眠,即,返回到框402,并且等待要执行维护时的下一时间点。

另一方面,如果在框404处确定回忆列表不为空,意味着具有陈旧值的一个或多个条目已被添加,则过程400可在框406处继续。在框406处,服务器侧内存缓存逻辑124a或124b可能检查回忆列表中的下一个条目,并且确定该下一个条目是否已经到期。可能例如基于自从其被放入回忆列表中的时间起逝去的时间量来确定到期。如果该下一条目尚未到期,对于回忆列表是先进先出列表的所示实施例而言,则如前所述,过程400可能也进入休眠,即返回到框402,并等待要执行维护时的下一时间点。在替代实施例中,在回忆列表不是先进先出列表的情况下,过程400可能返回到框404,并且如前所述那样代之以从那里继续。

另一方面,如果在框406处确定所检查的条目已到期,则接下来在框408处,服务器侧内存缓存逻辑124a或124b可将分配给该到期条目的存储器释放回存储器池中以供重新使用。此后,过程400可能返回到框404,并且如前所述继续。可重复框404-408处的操作,直到回忆列表中的没有条目到期。在处理回忆列表中到期的所有条目时,过程400可能返回到框402,并且如前所述从那里继续。

现在参考图5-图7,其中示出了图示根据所公开的实施例的在客户端上的内存缓存逻辑的各种操作流程的三个流程图。如图所示,客户端内存缓存逻辑114a、114b或114c的操作流程可能包括初始化过程500、服务Get(获取)请求的过程600以及服务Set(设置)请求的过程700。

初始化过程500可能在图5的框502处开始,其中客户端侧内存缓存逻辑114a、114b或114c可能如在现有的内存缓存系统中那样在启动时对其自身进行初始化。然而,对于所公开的实施例,接下来在框504处,客户端侧内存缓存逻辑114a、114b或114c可能分配本地存储器的块以用作本地高速缓存116a、116b或116c。

用于服务Get(获取)请求的过程600可能在框602开始,其中客户端内存缓存逻辑114a、114b或114c可能尝试在本地高速缓存116a、116b或116c中定位Get(获取)请求的键。如果该键没有导致高速缓存命中(或简单地,命中),则在框606处,客户端侧内存缓存逻辑114a、114b或114c可能向内存缓存系统的服务器发送Get(获取)请求,如在现有的内存缓存系统中那样。作为响应,如前所述,与现有的内存缓存系统不同,在框608处,客户端侧内存缓存逻辑114a、114b或114c可能接收其中键的对应值和相关联的“陈旧”状态标志所存储在的内存缓存系统的一个或多个位置的一个或多个地址。客户端内存缓存逻辑114a、114b或114c然后对键的对应值和相关联的“陈旧”状态标志所存储的内存缓存系统的一个或多个位置的该返回的一个或多个地址进行高速缓存。接下来,在框610处,客户端侧内存缓存逻辑114a、114b或114c可能使用所返回的值的地址来执行RDMA操作,并取回键的对应值。此后,客户端内存缓存逻辑114a、114b或114c可能将取回的值返回到Get(获取)请求的请求者。从框610,过程600可能结束。

注意,由于RDMA操作的性质,当客户端102a、102b或102c取回该值时,服务器侧内存缓存逻辑124a或124b认识不到RDMA操作,并且因此服务器106a或106b的处理器不涉及服务键的对应值的实际取回。换句话说,在本公开内容下,服务器106a或106b的处理器将不再是瓶颈,从而约束服务器106a或106b的存储器的量。因此,在本公开下,与现有的内存缓存系统相比,期望可能在每个服务器106a或106b上配置大得多的存储器的量。继而,与现有的内存缓存系统相比,对于应用而言,可能需要较少的服务器106a或106b,并且本公开,特别是与在RDMA中物理地址(代替虚拟地址)的直接使用相结合,可能更有效且可扩展。此外,由于处理器的显着较低的使用,与现有的内存缓存系统相比时,服务器106a和106b可能消耗少得多的功率并且更节能。

仍然参考图6,另一方面,如果框604处确定的结果指示该键导致命中,则过程600可能进行到框612。在框612处,内存缓存逻辑114a、114b或114c可能确定产生命中的高速缓存条目是否到期。如果产生命中的高速缓存条目尚未到期,则内存缓存逻辑114a、114b或114c可能使用存储在产生高速缓存命中的高速缓存条目中的值和相关联的状态标志的一个或多个地址来执行RDMA操作,以及取回该键的对应值和相关联的状态标志。例如,可能通过将当前系统时间与从内存缓存服务器取回一个或多个地址的时间进行比较来确定高速缓存条目的到期。如果时间差大于被配置的值,则高速缓存条目可能被确定为已到期。接下来在框614-框616处,内存缓存逻辑114a、114b或114c可能检查状态标志以确定取回的值是否陈旧。如果在框616处确定所取回的值不是陈旧的,则在框618处,内存缓存逻辑114a、114b或114c可将取回的值返回给Get(获取)请求的请求者。从框618,过程600可能结束。

然而,如果在框612处确定产生命中的高速缓存条目已到期,或者在框616处确定取回的值是陈旧的,则过程600可能在框620处继续。在框620处,内存缓存逻辑114a、114b或114c可能像在现有的内存缓存系统中那样向内存缓存系统的服务器发送Get(获取)请求。如前所述,与现有的内存缓存系统不同,在框620处,内存缓存逻辑114a、114b或114c可能响应地接收键的对应值和相关联的状态标志所存储的内存缓存系统的一个或多个位置的一个或多个地址。如先前针对类似接收所描述的那样,内存缓存逻辑114a、114b或114c可能Update(更新)本地高速缓存116a、116b或116c,将返回的一个或多个地址存储在本地高速缓存116a、116b或116c中的新的高速缓存条目中,并且使得产生高速缓存命中的先前高速缓存条目无效。在替代实施例中,内存缓存逻辑114a、114b或114c可能替代地更新产生高速缓存命中的先前高速缓存条目。接下来,在框622处,如前所讨论的那样,内存缓存逻辑114a、114b或114c可能使用值的返回地址来执行RDMA操作以取回值,并将取回的值返回给Get(获取)请求的请求者。从框622,过程600可能结束。

类似地,用于服务Set(设置)请求的过程700可能在框702处开始,其中内存缓存逻辑114a、114b或114c可能尝试在本地高速缓存116a、116b或116c中定位Set(设置)请求的键。如果键确实导致高速缓存命中(或简单地,命中)且未到期,则在框706处,内存缓存逻辑114a、114b或114c可能使得产生高速缓存命中的高速缓存条目无效,然后进行到框708,否则过程700直接进行到框708。在框708处,内存缓存逻辑114a、114b或114c可能如在现有内存缓存系统中那样处理和服务Set(设置)请求。从框708,过程700可能结束。

图8示出了可能适于用作客户端设备或服务器来实践本公开的所选方面的示例计算机系统。如图所示,计算机900可能包括一个或多个处理器或处理器核902和系统存储器904。为了包括权利要求书在内的本申请的目的,“处理器”和“处理器核”可能被认为是同义的,除非上下文另有明确要求。另外,计算机900可能包括大容量存储设备906(诸如磁盘、硬盘驱动器、光盘只读存储器(CD-ROM)等)、输入/输出设备908(诸如显示器、键盘、光标控制等)和通信接口910(例如网络接口卡、调制解调器等)。元件可能经由系统总线912彼此耦合,系统总线912可能表示一个或多个总线。在多个总线的情况下,它们可能通过一个或多个总线桥(未示出)进行桥接。

这些元件中的每一个元件都可能执行其在本领域中已知的常规功能。特别地,系统存储器904和大容量存储设备906可能被采用来存储实现被统称为计算逻辑922的之前描述的客户端或服务器侧内存缓存逻辑114a、114b、114c、124a或124b的编程指令的工作副本和永久副本。各种元件可能由(一个或多个)处理器902所支持的汇编器指令或可编译为这样的指令的诸如例如C的高级语言来实现。

这些元件910-912的数量、能力和/或容量可能根据计算机900是用作客户端设备还是服务器而变化。具体地,当用作客户端设备时,这些元件910-912的能力和/或容量可能根据客户端设备是固定的还是移动设备而变化,移动设备比如智能电话、计算平板、超级本或膝上型计算机。否则,元件910-912的组成是已知的,并且因此将不进一步进行描述。

如本领域技术人员将理解的那样,本公开可能被体现为方法或计算机程序产品。因此,除了如前所述的被体现在硬件中之外,本公开可能采取完全软件实施例(包括固件、驻留软件、微代码等)或组合软件和硬件方面的实施例的形式,其可能全部被一般滴称为“电路”、“模块”或“系统”。此外,本公开可能采取体现在具有体现在介质中的计算机可用程序代码的表示的任何有形或非暂时介质中的计算机程序产品的形式。图9示出了可能适于用于存储指令的示例计算机可读非暂时性存储介质,所述指令使得设备响应于由设备对指令的执行来实践本公开的所选方面。如图所示,非暂时性计算机可读存储介质1002可能包括多个编程指令1004。编程指令1004可能被配置为使得设备,例如计算机900,能够响应于编程指令的执行而执行例如与客户端或服务器侧内存缓存逻辑114a、114b、114c、124a或124b相关联的各种操作。在替代实施例中,编程指令1004可能代之以被布置在多个计算机可读的非暂时性存储介质1002上。在替代实施例中,编程指令904可能被布置在计算机可读的暂时存储介质1002上,诸如信号。

一个或多个计算机可用或计算机可读介质的任何组合可能被利用。计算机可用或计算机可读介质例如可能是但不限于:电、磁、光、电磁、红外或半导体系统、装置、设备或传播介质。计算机可读介质的更具体的示例(非穷举列表)将包括以下内容:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、传输介质,诸如支持因特网或内联网的那些,或磁存储设备。注意,计算机可用或计算机可读介质甚至可能是在其上打印程序的纸张或另一合适的介质,因为程序可能经由例如纸张或其他介质的光学扫描而被电子捕获,然后如果需要的话则被编译、解释或者另外以合适的方式被处理,并且然后被存储在计算机存储器中。在本文档的上下文中,计算机可用或计算机可读介质可能是可以包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的程序的任何介质。计算机可用介质可能包括在基带中或作为载波的一部分的具有随其一起被体现的计算机可用程序代码的传播数据信号。可能使用任何适当的介质来传输计算机可用程序代码,所述适当的介质包括但不限于无线、有线、光纤线缆、RF等。

用于执行本公开的操作的计算机程序代码可能以一种或多种编程语言的任何组合来编写,所述编程语言包括面向对象的编程语言,诸如Java、Smalltalk、C ++等,和常规的过程编程语言,诸如“ C”编程语言或类似的编程语言。程序代码可能完全地在用户的计算机上执行、部分地在用户的计算机上执行、作为独立软件包执行、部分地在用户的计算机上执行且部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后一种情况下,远程计算机可能通过包括局域网(LAN)或广域网(WAN)在内的任何类型的网络连接到用户的计算机,或者可能连接到外部计算机(例如,通过使用因特网服务提供商的因特网)。

参考根据本公开的实施例的方法设备(系统)和计算机程序产品的流程图图示和/或框图来描述本公开。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可能通过计算机程序指令来实现。这些计算机程序指令可能被提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器,以产生机器,使得经由计算机或其他可编程数据处理设备的处理器执行的指令创造用于实现流程图和/或一个或多个框图框中指定的功能/动作的装置。

这些计算机程序指令还可能被存储在计算机可读介质中,其可能引导计算机或其他可编程数据处理设备以特定方式运转,使得存储在计算机可读介质中的指令产生包括实现在流程图和/或一个或多个框图框中指定的功能/动作的指令装置的制品。

计算机程序指令还可能被加载到计算机或其他可编程数据处理设备上,以使得在计算机或其他可编程设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机或者其他可编程设备上执行的指令提供用于实现流程图和/或一个或多个框图框中指定的功能/动作的过程。

附图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可能表示代码的模块、段或部分,其包括用于实现(一个或多个)指定的逻辑功能的一个或多个可执行指令。还应注意,在一些替代实现中,框中标注的功能可能不按照附图中所示的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可能基本上同时被执行,或者框有时可能以相反的顺序被执行。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作的基于专用硬件的系统、或专用硬件和计算机指令的组合来实现。

本文使用的术语是仅为了描述特定实施例的目的,并且不旨在限制本公开。如本文所使用的,除非上下文另有明确指示,否则单数形式“一”、“一个”和“该”也旨在包括复数形式。将进一步理解的是,术语“包括”和/或“包含”当在本说明书中被使用时指明所述特征、整体、步骤、操作、元素和/或部件的存在,但不排除一个或多个其他特征、整体、步骤、操作、元素、部件和/或其群组的存在或添加。

实施例可能被实现为计算机进程、计算系统或实现为诸如计算机可读介质的计算机程序产品之类的制品。计算机程序产品可能是计算机系统可读的并且对计算机程序指令进行编码以用于执行计算机进程的计算机存储介质。

以下权利要求书中的所有装置或步骤加功能元素的对应结构、材料、动作和等同物旨在包括用于与其他要求保护的元素组合地执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了本公开的描述,但是并不旨在穷尽或将本公开限制于所公开的形式。在不脱离本公开的范围和精神的情况下,许多修改和变化对于普通技术人员将是清楚的。选择和描述实施例,以便最好地解释本公开的原理和实际应用,并且使得本领域的其他普通技术人员能够理解如适于预期的特定用途的具有各种修改的实施例的公开。

返回参考图9,对于一个实施例,处理器902中的至少一个处理器可能与具有计算逻辑922的存储器封装在一起(代替存储在存储器904和记忆装置906上)。对于一个实施例,处理器902中的至少一个处理器可能与具有计算逻辑922的存储器封装在一起以形成系统级封装(SiP)。对于一个实施例,处理器902中的至少一个处理器可能与具有计算逻辑922的存储器集成在相同管芯上。对于一个实施例,处理器802中的至少一个处理器可能与具有计算逻辑922的存储器封装在一起以形成片上系统(SoC)。对于至少一个实施例,SoC可能被利用在例如但不限于智能电话或计算平板中。

因此,已经描述了本公开的各种示例实施例,包括但不限于:

示例1可能是包括存储器和与存储器耦合的一个或多个处理器的内存缓存系统的客户端设备。所述客户端设备还可能包括内存缓存逻辑,所述内存缓存逻辑由所述一个或多个处理器操作以:接收请求来Get(获取)、Set(设置)或Update(更新)与所述内存缓存系统中的键相对应的值,响应于接收到所述请求,确定所述键是否导致在由所述内存缓存逻辑维护在存储器中的本地高速缓存中的命中,以及至少部分地基于所述确定的结果是否指示所述键导致所述本地高速缓存中的命中来服务所述Get(获取)、Set(设置)或Update(更新)请求。

示例2可能是示例1,其中,所述内存缓存逻辑用于进一步为所述本地高速缓存在存储器内分配或使得被分配存储空间。

示例3可能是示例1或2,其中,对于具有所述键导致命中的Get(获取)请求,服务包括:访问所述本地高速缓存以取回所述值和所述值的相关联的状态标志所存储的所述内存缓存系统的一个或多个位置的一个或多个地址;在所述内存缓存系统的服务器上执行远程直接存储器访问操作,以使用从所述本地高速缓存取回的所述一个或多个地址来取回所述值和所述相关联的状态标志;和至少部分地基于通过所述远程直接存储器访问操作取回的状态标志来确定通过所述远程直接存储器访问操作取回的值是否陈旧。

示例4可能是示例3,其中,对于具有所述键导致命中的Get(获取)请求,服务还包括:响应于陈旧确定的结果指示所述值不陈旧,返回所取回的值。

示例5可能是示例3,其中,对于具有所述键导致命中的Get(获取)请求,服务还包括:响应于陈旧确定的结果指示所述值为陈旧,将所述Get(获取)请求传输到所述内存缓存系统的服务器以请求所述值;接收所述值和所述值的相关联的状态标志所存储的所述内存缓存系统的第二一个或多个位置的第二一个或多个地址;在所述内存缓存系统的服务器上执行远程直接存储器访问操作,以使用所接收的所述第二一个或多个地址来取回所述值和所述相关联的状态标志;更新所述本地高速缓存以存储针对所述键的第三和第四地址;并且返回接收的值

示例6可能是示例1-5中的任一个,其中,对于具有所述键未导致命中的Set(设置)请求,服务包括:将所述Get(获取)请求传输到所述内存缓存系统的服务器以请求所述值;接收所述值和所述值的相关联的状态标志所存储的所述内存缓存系统的一个或多个位置的一个或多个地址;在所述内存缓存系统的服务器上执行远程直接存储器访问操作,以使用所接收的一个或多个地址来取回所述值和所述相关联的状态标志;和返回接收的值。

示例7可能是权利要求1-6中的任何一个,其中,对于Set(设置)请求,服务包括:响应于所述键导致命中,使得产生所述命中的所述本地高速缓存中的高速缓存条目无效;和将所述Set(设置)请求发送到所述内存缓存系统的服务器

示例8可能是示例3,其中,执行远程直接存储器访问包括首先确定产生所述命中的高速缓存条目尚未到期。

示例9可能是内存缓存系统的服务器设备,包括:存储器;与所述存储器耦合的一个或多个处理器;和被配备来支持远程存储器直接访问的网络接口卡。所述服务器设备还可能包括内存缓存逻辑,所述内存缓存逻辑由所述一个或多个处理器操作以:接收请求来Get(获取)对应于所述内存缓存系统中的键的值,确定所述键是否导致命中,以及响应于所述键导致命中,返回所述值和与所述值相关联的状态标志所存储的所述内存缓存系统的一个或多个位置的一个或多个地址。

示例10可能是示例9,其中,内存缓存逻辑进一步接收请求以使用第二对应值Update(更新)所述内存缓存系统中的第二键,确定第二键是否导致命中,以及响应于所述第二键导致命中,使用陈旧状态更新与产生针对所述第二键的命中的第一条目相关联的第二状态标志,将所述第一条目添加到收集列表,创建针对所述第二键的第二条目,并为所述第二条目指派第二值。

示例11可能是示例9或10,其中,内存缓存逻辑进一步周期性地执行维护操作,以恢复被分配给具有有陈旧状态的相关联的状态标志的条目的存储器。

示例12可能是示例9-11中的任一个,其中,所述内存缓存逻辑进一步将所述存储器的物理地址映射到所述内存缓存系统的地址空间。

示例13可能是用于存储器高速缓存数据的方法,其包括:由内存缓存系统的客户端设备接收请求以Get(获取)、Set(设置)或Update(更新)与所述内存缓存系统中的键相对应的值;由所述客户端设备响应于所述请求的接收来确定所述键是否导致在所述客户端设备的存储器中维护的本地高速缓存中的命中,以及由所述客户端设备至少部分地基于确定的结果是否指示所述键导致所述本地高速缓存中的命中来服务所述Get(获取)、Set(设置)或Update(更新)请求。

示例14可能是示例13,还包括所述客户端设备为所述本地高速缓存分配所述存储器内的存储空间。

示例15可能是示例13或14,其中,对于具有所述键导致命中的Get(获取)请求,服务包括:访问所述本地高速缓存以取回所述值和所述值的相关联的状态标志所存储的所述内存缓存系统的一个或多个位置的一个或多个地址;在所述内存缓存系统的服务器上执行远程直接存储器访问操作,以使用从所述本地高速缓存取回的所述一个或多个地址来取回所述值和相关联的状态标志;和至少部分地基于通过所述远程直接存储器访问操作取回的状态标志来确定通过所述远程直接存储器访问操作取回的值是否陈旧。

示例16可能是示例15,其中,对于具有所述键导致命中的Get(获取)请求,服务还包括:响应于陈旧确定的结果指示所述值不陈旧,返回所取回的值。

示例17可能是示例15或16,其中,对于具有所述键导致命中的Get(获取)请求,服务还包括:响应于陈旧确定的结果指示所述值为陈旧,将所述Get(获取)请求传输到所述内存缓存系统的服务器以请求所述值;接收所述值和所述值的相关联的状态标志所存储的所述内存缓存系统的第二一个或多个位置的第二一个或多个地址;在所述内存缓存系统的服务器上执行远程直接存储器访问操作,以使用所接收的所述第二一个或多个地址来取回所述值和所述相关联的状态标志;更新所述本地高速缓存以存储针对所述键的第二或更多个地址;和返回接收的值。

示例18可能是示例13-17中的任一个,其中,对于具有所述键未导致命中的Set(设置)请求,服务包括:将所述Get(获取)请求传输到所述内存缓存系统的服务器以请求所述值;接收所述值和所述值的相关联的状态标志所存储的所述内存缓存系统的一个或多个位置的一个或多个地址;在所述内存缓存系统的服务器上执行远程直接存储器访问操作,以使用所接收的一个或多个地址来取回所述值和所述相关联的状态标志;和返回接收的值。

示例19可能是示例13-18中的任一个,其中,对于Set(设置)请求,服务包括响应于所述键导致命中,使得产生所述命中的所述本地高速缓存中的高速缓存条目无效;和将所述Set(设置)请求发送到所述存储系统的服务器。

示例20可能是示例15,其中,执行远程直接存储器访问操作包括:首先确定产生所述命中的高速缓存条目尚未到期。。

示例21可能是一种用于存储器高速缓存数据的方法,其包括:由内存缓存系统的服务器接收请求以Get(获取)对应于键的值,由所述服务器确定所述键是否导致命中,以及响应于所述键导致命中,由所述服务器返回所述值和与所述值相关联的状态标志所存储的所述内存缓存系统的一个或多个位置的一个或多个地址。

示例22可能是示例21,还包括:由所述服务器接收请求以使用第二对应值Update(更新)所述内存缓存系统中的第二键,由所述服务器确定所述第二键是否导致命中,和响应于所述第二键导致命中,所述服务器利用陈旧状态更新与产生针对第二键的命中的第一条目相关联的第二状态标志,将所述第一条目添加到收集列表,创建针对所述第二键的第二条目,并为所述第二条目指派第二值。

示例23可能是示例21或22,还包括由所述服务器周期性地执行维护操作,以恢复被分配给具有有陈旧状态的相关联的状态标志的条目的存储器。

示例24可能是示例21-23中的任一个,还包括由所述服务器将所述服务器的存储器的物理地址映射到所述内存缓存系统的地址空间。

示例25可能是包括多个指令的一个或多个存储介质,响应于客户端设备对指令的执行,使客户端设备执行示例13-18的方法中的任何一个。

示例26可能是包括多个指令的一个或多个存储介质,响应于服务器设备对指令的执行,使服务器设备执行示例19-24的方法中的任何一个。

示例27可能是包括用于执行示例13-18的方法中的任一个的装置的客户端设备。

示例28可能是包括用于执行示例19-24的方法中的任一个的装置的客户端设备。

对于本领域技术人员显而易见的是,在不脱离本公开的精神或范围的情况下,可能在所公开的用于内存缓存的设备和相关方法的公开的实施例中进行各种修改和变化,包括应用于其他高速缓存应用、存储应用或设备。因此,本公开旨在覆盖上面公开的实施例的修改和变化,只要这些修改和变化落入任何权利要求书及其等同物的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1