用于对等缓存转发的方法

文档序号:6534641阅读:203来源:国知局
用于对等缓存转发的方法
【专利摘要】一种使用缓存一致性协议选择源节点的主节点,包括耦合到目录的逻辑单元集群,其中所述逻辑单元集群用于从请求缓存节点接收对数据的请求,使用所述目录确定保存所述被请求数据的副本的多个节点,使用一个或多个选择参数选择其中一个所述节点作为所述源节点,以及向所述源节点发送消息以确定所述源节点是否存储所述被请求数据的副本;其中当在所述源节点中找到所述被请求数据时,所述源节点将所述被请求数据转发给所述请求缓存节点;以及一些所述节点被标记为对应于所述缓存一致性协议的共享状态。
【专利说明】用于对等缓存转发的方法
[0001]相关申请案交叉申请
[0002]本发明要求2012年7月30日由Iulin Lih等人递交的发明名称为“用于对等缓存转发的方法(Method for Peer to Peer Cache Forwarding) ”的第 61/677289 号美国临时专利申请案,以及2013年6月17日由Iulin Lih等人递交的发明名称为“用于对等缓存转发的方法(Method for Peer to Peer Cache Forwarding) ”的第 13/919223 号美国专利申请案的在先申请优先权,这些在先申请的内容以引用的方式并入本文本中,如全文再现一般。
[0003]关于联邦赞助的研宄或开发的声明
[0004]不适用。
[0005]参考缩微胶片附录
[0006]不适用。

【背景技术】
[0007]多核(例如多处理器)系统可以包括多个缓存节点,这些缓存节点用于存储诸如处理指令以及主存储器位置和/或其它缓存级别中频繁引用的数据之类的数据。引用特定主存储器位置的一个或多个数据副本(例如缓存线)可以存储在多核系统中的不同位置内。例如,与主存储器地址“0”相关联的数据值“0”可以存储在多核系统内的每个缓存节点中。当其中一个节点中的一个数据副本被修改时,缓存一致性机制可以修改位于其它缓存节点中的其它副本。缓存一致性机制可通过在多核系统中传播数据变更来保持许多不同缓存节点内存储的数据的一致性。
[0008]可在多核系统内使用的两种类型的缓存一致性机制是基于侦听的一致性和基于目录的一致性。在基于侦听的一致性中,每个缓存节点都可广播修改数据(例如写指令)的请求。其它缓存节点可监控发出的请求并确定接收到的请求是否对应于它们自身的缓存存储器内存储的数据。尽管基于侦听的一致性可能具有短的延迟周期,但是实施基于侦听的一致性的系统可能会遇到由于连续性广播数据所造成的带宽和可扩展性问题。或者,在基于目录的一致性中,在一个或多个缓存节点之间共享的数据可以存储在主节点中。主节点可通过目录保持多核系统内缓存节点之间的一致性。当一个缓存节点中的数据变更时,主节点可更新或无效化存储数据的其它缓存节点中的条目。缓存节点还可在从主存储器中加载数据之前向主节点发送权限请求。因此,与基于侦听的一致性相比,基于目录的一致性改善了可扩展性和带宽问题,但是产生了由于主节点不断访问所造成的较长延迟。
[0009]为了减少基于目录的一致性内的延迟,可使用修改、自有、排除、共享、无效(M0ESI)协议或修改、排除、共享、无效、转发(MESIF)协议等缓存一致性协议来实施对等缓存转发。对等缓存转发发生在其中一个节点用于将被请求数据转发给另一缓存节点的时候。指定的缓存节点直接响应该请求,而不是主节点从指定的缓存节点接收被请求数据并随后响应该请求。在M0ESI协议中,指定用于保存数据并响应对数据的请求的缓存节点可指定有“自有”状态,而MESIF协议可使用“转发”状态来指定缓存节点。在M0ESI和MESIF两个协议中,指定的缓存节点负责响应来自其它缓存节点的对特定数据(例如缓存线)的请求。
[0010]但是,MOESI和MESIF协议在选择指定用于响应来自其它缓存节点的请求方面缺乏灵活性。例如,MESIF协议指定请求最新数据的缓存节点带有“转发”状态。对于MOESI协议,“自有”状态被指定给存储最新的、正确的数据副本的缓存节点。因此,MOESI和MESIF两个协议不能基于请求缓存节点的位置以及指定的缓存节点处正在处理的当前工作量等性能因素而动态选择缓存节点。因此,在某些实例中,指定的缓存节点可能会变为一个处理瓶颈并导致多核系统内的性能下降。因此,需要一种解决方案来动态地选择缓存节点以满足多核系统内的请求。


【发明内容】

[0011]在一项实施例中,本发明包括一种主节点,用于使用缓存一致性协议选择源节点,包括耦合到目录的逻辑单元集群,其中所述逻辑单元集群用于从请求缓存节点接收对数据的请求,使用所述目录确定保存所述被请求数据的副本的多个节点,使用一个或多个选择参数选择其中一个所述节点作为所述源节点,以及向所述源节点发送消息以确定所述源节点是否存储所述被请求数据的副本;其中当在所述源节点内找到所述被请求数据时,所述源节点将所述被请求数据转发给所述请求缓存节点;以及一些所述节点被标记为对应于所述缓存一致性协议的共享状态。
[0012]在另一项实施例中,本发明包括一种缓存节点,用于使用缓存一致性协议执行对等缓存转发,包括耦合到本地存储器的逻辑单元集群,其中所述逻辑单元集群用于从主节点接收侦听转发消息;使用所述侦听转发消息中的信息确定被请求数据是否存储在所述本地存储器内;当所述被请求数据存储在所述本地存储器内时,将所述被请求数据转发给请求缓存节点;以及当所述被请求数据未存储在所述本地存储器时,向所述主节点发送消息,其中所述缓存节点分配有所述缓存一致性协议的共享状态。
[0013]在又一项实施例中,本发明包括一种用于使用缓存一致性协议选择源节点的方法,其中所述方法包括维护将多个条目标记为所述缓存一致性协议内的共享状态的目录,从其中一个所述缓存节点接收数据请求;确定所述被请求数据是否映射到所述目录内的其中一个所述条目;当在所述目录内的其中一个所述条目中未找到所述被请求数据时,向存储器的下一级别发送所述数据请求;当在所述其中一个条目中找到所述被请求数据时,使用一个或多个选择参数从对应于所述其中一个条目的多个缓存节点中选择源节点;向所述源节点发送转发侦听消息以确定所述源节点是否存储所述被请求数据的副本,其中所述选择参数按优先次序排列选择作为所述源节点的缓存节点,以及所述源节点在所述缓存节点之间具有最尚优先级。
[0014]结合附图和权利要求书,可从以下的详细描述中更清楚地理解这些和其它特征。。

【专利附图】

【附图说明】
[0015]为了更完整地理解本发明,现在参考以下结合附图和详细描述进行的简要描述,其中相同参考标号表不相同部分。
[0016]图1为具有存储器的分形结构的多核系统的实施例的示意图。
[0017]图2为具有存储器的分形结构的多核系统的另一实施例的示意图。
[0018]图3为节点的示意图,所述节点适用于实施多核系统内揭示的节点的一个或多个实施例。
[0019]图4为实施到端缓存转发的多核系统的消息序列图。
[0020]图5为基于一个或多个选择参数动态选择源节点的方法的实施例的流程图。

【具体实施方式】
[0021]最初应理解,尽管下文提供一个或多个实施例的说明性实施方案,但可使用任意数目的当前已知或现有的技术来实施所公开的系统和/或方法。本发明决不应限于下文所说明的所述示例性实现方式、图式和技术,包含本文所说明并描述的示范性设计和实施方案,而是可以在所附权利要求书的范围以及其均等物的完整范围内修改。
[0022]本文公开的是至少一种动态选择源节点的方法、装置和系统以满足请求缓存节点对多核系统的请求。主节点可基于源节点的条件状态以及多核系统的拓扑动态地指定源节点(例如,缓存节点和/或主节点)来为请求缓存节点转发数据。主节点无需使用分别在MOESI和MESIF协议中发现的“自有”状态和/或“转发”状态就可以选择源节点。当请求缓存节点无法定位其本地缓存存储器内的特定数据(例如,缓存缺失)时,请求缓存节点可以向主节点发送请求以获得该特定数据。一旦主节点接收到来自请求缓存节点的数据,主节点就可以基于各种选择因素动态地选择与其它缓存节点(例如,在“共享”状态下)共享被请求数据的源节点以满足请求,这些选择因素包括源节点的当前条件状态、多核系统的拓扑和/或选择偏好。主节点可将消息(例如,侦听转发消息)转发给源节点,从而指示源节点将数据转发给请求缓存节点。如果数据位于源节点内,则源节点在从主节点接收指示之后可将该数据转发给请求缓存节点。
[0023]图1为具有存储器的分形结构的多核系统100的实施例的示意图。多核系统100可包括形成存储器层次结构的多级别存储器。如图1所示,多核系统100可包括主节点102、互联网络结构106和一个或多个缓存节点104。主节点102可物理上和/或逻辑上集中在多核系统100内以管理缓存节点104之间的缓存一致性。在一项实施例中,主节点102可位于多核系统100的存储器层次结构的N级处,而缓存节点C0-C3 104可位于存储器层次结构中的主节点102的下一级(例如,N-1级)。例如,缓存节点C0-C3 104可以是2级缓存(例如,存储器层次结构的2级),而主节点102可以是3级缓存(例如,存储器层次结构的3级)。主节点102可通过互联网络结构106与缓存节点C0-C3 104通信,互联网络结构106可与主节点102位于存储器层次结构的同一级别(例如,N级)处。此外,主节点102可通过(N+1)级结构108与存储器层次结构的较高级别通信。多核系统100的其它实施例可使主节点102跟踪缓存节点104,缓存节点104位于存储器层次结构中的主节点102以下的多个级别(例如,N-2级)处。在一个示例中,主节点102可以是5级缓存,而缓存节点C0-C3 104可以是3级或更低级缓存。当缓存节点104位于主节点102以下的多个存储器级别处时,主节点102可能需要更多的资源(例如,存储空间)来管理存储器的其它级另IJ,因此增加了实施主节点102的成本。
[0024]在一项实施例中,主节点102可与多核系统100的存储器层次结构的主存储器级别相关联。主节点102可包括动态随机存取存储器(DRAM)等主存储器以存储数据的副本。换言之,主节点102可用于存储数据的未缓存副本。主节点102还可包括一个或多个缓存存储器,它们可用于将其中一个缓存级别处的数据副本存储在主节点102内。如上所述,主节点102的其它实施例可以在多核系统100的存储器层次结构的较低级别处(例如,在3级缓存处)实施。
[0025]主节点102可以是用于保持缓存节点C0-C3 104之间的缓存一致性的任意节点。主节点102可通过监控缓存线中的缓存节点C0-C3 104的状态来保持缓存一致性,这些缓存线位于每个缓存节点C0-C3 104内。主节点102可包括一个目录,用于为缓存线中存储的数据监控缓存节点104的状态。该目录可以跟踪存储节点中存储的缓存线并且将缓存线与缓存状态关联。例如,该目录可将缓存节点C0 104内的一条缓存线与“共享”缓存状态关联,而缓存节点C0 104内的另一缓存线可具有“无效”缓存状态。该目录可使用编码的目录项跟踪缓存节点C0-C3 104的状态,这些目录项使用各种协议,包括但不限于位向量协议和粗向量协议进行编码。目录内的每个目录项可包括状态位,用来表示不同缓存状态,例如,缓存线是否脏(例如,“修改”状态)。在一项实施例中,目录可以存储在主节点102的主存储器内。缓存节点104的缓存状态将在下文进行更详细地论述。
[0026]缓存节点C0-C3 104均可包括用于将数据存储在缓存线内的缓存存储器。所有缓存节点C0-C3 104内的缓存线根据缓存一致性协议可以分配有不同的状态。在一项实施例中,多核系统100可用于实施修改、排除、共享、无效(MESI)协议以保持缓存一致性。对于MESI协议,缓存节点104内的每个缓存线均可被标记为“修改”状态、“排除”状态、“共享”状态,或“无效”状态。标记有“修改”状态的缓存线可指示缓存线为“脏”,因为数据只存在于缓存线内。缓存线的数据值可能已经被修改并且与主节点102和/或主存储器内存储的值不同。“排除”状态可指示缓存节点104内的缓存线保存或存储最新的数据并存在于缓存节点104而不是其它缓存节点104中。“排除”状态还可指示缓存线为“干净”,这表示缓存线内存储的数据匹配主节点102和/或主存储器内存储的数据。“共享”状态指示缓存线可存储在其它缓存节点104中。在一项实施例中,“共享”状态可指示缓存线为“干净”。“无效”状态指示缓存线为无效并且不能将数据的有效副本保存在缓存线内。缓存线可以是未使用的并且可用于存储新数据。数据的有效副本可以存储在主节点102、其它缓存节点104和/或存储器层次结构的其它存储器级别(例如主存储器)中。
[0027]主节点102内的目录可在每个目录项内对两个位进行编码以表示修改、排除、共享、有效MESI协议中的不同状态。例如,“00”可被编码以表示“修改”状态;“01”可被编码以表示“排除”状态;“10”可被编码以表示“共享”状态;以及“11”可被编码以表示“无效”状态。与MESI协议相比,MOESI和MESIF协议均可使用三个位对缓存线的不同状态进行编码。附加位可分别用来表示MOESI和MESIF协议中的“自有”状态和“转发”状态。然而,MOESI和MESIF协议中的附加位会增加管理多核系统100内的缓存一致性的成本。因此,通过使用MESI协议,目录不需要第三位对不同状态进行编码,因为主节点102无需使用MOESI和MESIF协议中分别要求的“自有”状态和/或“转发”状态就可以选择源节点。多核系统100的其它实施例可实施少于四种状态的缓存一致性协议,例如修改、共享、无效(MSI)协议。
[0028]主节点102还可用于动态选择源节点以满足缓存节点C0-C3104之一的请求,因此与可预指定源节点的MOESI和MESIF协议不同。通常,MOESI协议指定源节点具有“自有”状态,意味着源节点存储最新的、正确的数据副本。MESIF协议通常指定源节点具有“转发”状态,意味着源节点是最近请求数据的缓存节点。然而,MOESI和MESIF协议都没有考虑效率因素,例如,源节点到请求缓存节点的距离和源节点的当前工作量。
[0029]为了提高灵活性和性能,主节点102可基于各种选择参数,包括但不限于多核系统100的拓扑、缓存节点104和主节点102的当前条件状态,和/或选择过程的偏好,动态地选择源节点。选择参数可将被选为源节点的缓存节点104和/或主节点102按优选次序排列和/或按顺序列出。选择参数可存储在主存储器和/或目录内。“拓扑选择参数”可包括关于多核系统100的布局(例如,所有缓存节点C0-C3 104与主节点102之间的距离)和多核系统100的拓扑布局的参数以选择源节点。“当前条件状态”选择参数可关于与缓存节点C0-C3 104相关联的不同条件,例如缓存线内存储的数据的年龄、缓存节点C0-C3 104的当前工作量和业务负载以及缓存节点C0-C3104的可用带宽和/或容量。“偏好选择参数”可表示选择源节点的预定义方法,例如,在选择源节点中使用随机或轮询调度方法。选择参数将在图4中进行更详细地论述。可以不使用状态指定(例如,“自有”或“转发”)来确定源节点。
[0030]互联网络结构106可以为任意类型的数据路径,用于在所有缓存节点C0-C3 104与主节点102之间路由数据。例如,缓存节点C0 104可通过互联网络结构106发送对数据的请求以到达主节点102。此外,在对等缓存转发中,缓存节点C1 104可通过互联网络结构106将由缓存节点C0 104请求的数据转发给缓存节点C0 104。在一项实施例中,互联网络结构106可以是在线性拓扑中将缓存节点C0-C3 104和主节点102互联的共享总线。互联网络结构106的其它实施例可在各种其它拓扑中将缓存节点C0-C3 104互联,例如环形网拓扑或网状拓扑。(N+1)级结构108可基本上类似于互联网络结构106,除了(N+1)级结构108可用于将主节点102互联到位于存储器层次结构的下一级别的其它节点。
[0031]图2为具有存储器的分形结构的多核系统200的另一实施例的示意图。图2示出了主节点0-3 202可分布在多核系统200中。分布式主节点0-3 202可在多核系统200非常大且复杂时使用。缓存节点C0-C3 102均可关联于其中一个主节点0-3 202。主节点0-3 202都可维护位于存储器层次结构的N级处的存储器的一部分。主节点0-3 202内的存储器可引用N级存储器的不同地址范围。例如,N级可以是多核系统200的5级存储器(例如主存储器),5级存储器的总存储容量约为32千兆字节。32千兆字节的存储器可在主节点0-3 202之间划分,使得主节点0-3 202的存储容量均约为8千兆字节。主节点0202可拥有5级存储器的第一个八千兆字节的地址范围;主节点1 202可拥有5级存储器的第二个八千兆字节的地址范围;主节点2 202可拥有5级存储器的第三个八千兆字节的地址范围;以及主节点3 202可拥有5级存储器的第四个八千兆字节的地址范围。缓存节点C0-C3 102可用于将5级存储器的32千兆字节范围内存储的任意数据包含在它们的4级存储器(例如4级缓存)内。
[0032]图3为节点300的示意图,节点300适用于实施多核系统内公开的节点(例如,图1和2中示出的缓存节点104和主节点102)的一个或多个实施例。节点300可包括一个或多个入端口或网络接口 310以及一个或多个出端口或网络接口 312。入端口或网络接口 310以及出端口或网络接口 312可以是物理和/或逻辑端口,用于连接到如图1所示的互联网络结构106和/或(N+1)级结构108。入接口或网络接口 310可内部耦合到接收器(Rx) 306用于从其它节点接收数据,而出端口或网络接口 312可耦合到发射器(Tx)308用于向其它节点发送数据。
[0033]节点300还可包括耦合到Rx306和Tx308的逻辑单元集群302,其中逻辑单元集群302可用于实施进行如下操作的指令:请求来自其它节点的数据、使用选择参数确定源节点,和/或将数据转发给请求节点。逻辑单元集群302还可用于实施方法500,方法500将在后面进行更详细地论述。逻辑单元集群302可包括一个或多个中央处理器(CPU)芯片、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理器(DSP),并且/或者可以是一个或多个ASIC和/或多核处理器集群的一部分。逻辑单元集群302可用于将数据写入缓存存储器304和存储器316和/或从缓存存储器304和存储器316中读取数据,以及当数据不在缓存存储器304和存储器316中时,向对等节点生成请求以获取数据。
[0034]图3示出了逻辑单元集群302可物理上和/或逻辑上耦合到缓存存储器304。缓存存储器304可以为易失性和/或非易失性存储器以及可以使用随机存取存储器(RAM)、闪存、磁盘驱动器和/或任意其它合适类型的存储器来实施。缓存存储器304可用于为逻辑单元集群302存储易失性数据和指令和/或将频繁访问的存储器位置中的数据副本存储在存储器316内。在一项实施例中,缓存存储器304可包括多个缓存级别。例如,缓存存储器304可包括1级缓存、2级缓存和3级缓存。缓存存储器304内的一个或多个缓存级别可以嵌入到逻辑单元集群302内的一个或多个处理器中,而缓存存储器304内的其它缓存级别可位于逻辑单元集群302的外部。缓存存储器304的其它实施例可具有缓存存储器304内的嵌入到逻辑单元集群302内的所有缓存级别或具有缓存存储器304内的位于逻辑单元集群302外部的所有缓存级别。
[0035]缓存存储器304还可耦合到内存控制器314,其管理存储器316的传入和传出数据流。在一项实施例中,内存控制器314可在逻辑单元集群302的外部,而其它实施例可具有嵌入逻辑单元集群302内的内存控制器314。内存控制器314还可用于保持存储器316和缓存存储器304之间的缓存一致性。一般而言,存储器316可使用易失性存储器,例如RAM存储器(例如DRAM)来实施。存储器316的另一项实施例可包括非易失性存储器,例如一个或多个磁盘、磁带驱动器、光盘驱动器或固态驱动器,非易失性存储器可用于数据的非易失性存储以及用作溢流数据存储部件。当选择程序用于执行时,存储器316可存储这些程序并可存储指令以及程序执行期间读取的数据。通常,存储器316能够存储的数据比缓存存储器304的多而且存取的速度比缓存存储器304的慢。缓存存储器304和存储器316可表示节点300内的本地存储器。节点300的一些实施例可能不包括存储器316和/或内存控制器314。
[0036]图4为实施对等缓存转发的多核系统400的消息序列图。多核系统400可包括缓存节点C0-C3 104、主节点102以及存储器402。存储器402可以是多核系统400的主存储器。主节点102还可用于执行如图3所述的内存控制器功能。主节点102和存储器402可位于存储器层次结构的N级处,而缓存节点104可位于存储器层次结构的N-1级处。如图4所示,缓存节点C3 104可通过向主节点102发送请求数据消息404用作请求节点。请求消息404可以是位于存储器402的特定地址内的数据的读取或写入请求。当本地缺失发生在缓存节点C3 104的本地存储器内时,请求消息404可在缓存节点C3 104内生成。换言之,请求消息404可指示缓存节点C3 104想要从源节点获取被请求数据,该源节点可以是缓存节点C0-C2 104之一和/或存储器402,因为缓存节点C3 104无法在其本地存储器内找到被请求数据。回想上文,图3内的逻辑单元集群302可包括可生成数据请求的处理器。
[0037]当主节点102从请求节点(例如缓存节点C3 104)接收请求消息404时,主节点102可将被请求数据映射到目录内的其中一个目录项。目录内的信息可用于确定哪些缓存节点C0-C2 104可能已经存储被请求数据以及存储被请求数据的缓存线的状态。在图4中,主节点102内的目录指示缓存节点C0-C2 104标记有对应于被请求数据的缓存线的“共享”状态。本领域的普通技术人员都知道缓存节点C0-C2 104根据缓存节点C3 104请求的数据可具有不同的缓存状态。例如,缓存节点C3 104可向主节点102发送请求数据消息404以请求存储器402的地址“0”中的数据。针对该请求,缓存节点C0-C2 104可具有与对应于地址“0”的缓存线相关联的“共享”状态。缓存节点C3 104可向主节点102发送后续请求数据消息404以请求存储器402的地址“1”中的数据。在该示例中,缓存节点C0-C1 104可具有“共享”状态,而缓存节点C2 104可具有“无效”状态用于被请求数据。
[0038]在确定哪些缓存节点C0-C2 104标记有“共享”状态之后,主节点102可动态选择其中一个被标记为“共享”状态的缓存节点C0-C2 104为源节点。在一项实施例中,主节点102还可选择它自己而不是其中一个被标记有“共享”状态的缓存节点C0-C2 104作为源节点。主节点102可基于一个或多个选择参数为每个接收到的请求消息404选择源节点。选择参数可按优选次序排列和/或确定选为源节点的缓存节点104和/或主节点102的顺序(例如优先级列表)。例如,缓存节点C2 104可具有最高优先级或被列为列表中的第一,以作为选为源节点的第一节点。缓存节点C1 104可具有第二最高优先级或被列为第二,而缓存节点C0 104的优先级低于缓存节点C1 104,被列为第三。主节点102被指定具有最低优先级并被列为优先级列表的第四。通过按优先次序排列选为源节点的缓存节点104,选择参数可减少整体的处理时间以满足缓存节点C3 104的请求。尽管图4示出了所选择的源节点可处于“共享”状态,但是其它实施例可具有处于“修改”状态和/或“排除”状态中的所选源节点(例如缓存节点C2 104)。换言之,对等缓存转发还可发生在所选的源节点处于“修改”状态和/或“排除”状态中的时候。
[0039]如上所述,选择参数可包括基于多核系统400的拓扑、多核系统400内缓存节点104和主节点102的当前条件状态,以及选择过程的偏好的参数。可组合一个或多个不同的选择参数以优化选择源节点的选择过程。例如,主节点102可基于其中一个“拓扑选择参数”和其中一个“当前条件状态”选择参数来选择源节点。选择参数可存储在主存储器和/或目录内。每当主节点102从请求缓存节点104接收请求时,主节点102可动态选择缓存节点104和/或它自己作为源节点。源节点的选择不由缓存一致性协议预定义和/或预定。
[0040]“拓扑选择参数”可包括关于多核系统400拓扑的参数。“拓扑选择参数”在多核系统400拓扑方面存在细节粒度上的不同。例如,主节点102可存储广义的“拓扑选择参数”和/或笼统的拓扑信息,例如,缓存节点104与相对于发送请求数据消息404的缓存节点104的主节点102之间的距离值。基于距离信息,主节点102可选择与发送请求数据消息404的缓存节点104最近的缓存节点104。以图4为例,主节点102可选择缓存节点C2104作为源节点,因为缓存节点C2 104可能是与缓存节点C3 104位置最接近的缓存节点104。在另一项实施例中,主节点102可使用多核系统400的拓扑布局(例如网状拓扑)来选择源节点。例如,多核系统400可使用提供成本信息的成本图通过多核系统400内的不同路径将数据从一个缓存节点104转发给另一缓存节点104。
[0041]“当前条件状态”选择参数可关于与缓存节点C0-C2 104相关联的不同条件,例如缓存线内存储的数据的年龄。主节点102可使用缓存节点C0-C2 104中存储的数据年龄。数据年龄可表示将数据副本存储在缓存节点104内以及通知主节点102后已经消逝的时间间隔。在某些实例中,尽管目录项可具有标记为“共享”状态的缓存节点C0-C2 104中的缓存线,但是缓存节点C0-C2 104内的实际缓存线可能已经在没有通知主节点102的情况下被新数据覆盖。选择最近将被请求数据存储在缓存线的缓存节点104增加了缓存节点104仍然保存正确数据的可能性。以图4为例,缓存节点C0 104可能已经将被请求数据保存了最长时间周期(例如,数据年龄是缓存节点C0-C2 104中最老的),而缓存节点C2 104可能已经将被请求数据保存了最短时间周期。在某些实例中,缓存节点C0 104可能已经丢弃被请求数据并且使用新数据覆盖缓存线。如果主节点102选择缓存节点C0 104作为源节点,那么缓存节点C0 104将无法执行对等缓存转发。因此,主节点102可选择具有被请求数据的最近副本的缓存节点104。“当前条件状态”选择参数还可包括所有缓存节点104和主节点102的当前工作量、可用带宽和容量等参数。主节点102可监控所有缓存节点104和它自己的当前工作量、可用带宽和处理容量。主节点102可动态选择具有最多带宽和/或最少当前工作量的缓存节点104和/或主节点102作为源节点。
[0042]主节点102可用于通过“偏好选择参数”选择源节点。“偏好选择参数”可表示选择源节点的预定义方法。例如,主节点102可用于随机或以轮询调度方式选择源节点。当多核系统400内存在充足的资源和处理容量时,可随机选择源节点。随机和/或轮询调度选择参数的实施通常不复杂,因此减少了主节点102选择源节点所需的处理时间。
[0043]选择源节点之后,主节点102接着向源节点发送侦听转发消息406。侦听转发消息406可用于确定源节点是否具有在请求数据消息404中请求的数据并且指示源节点将被请求数据转发给请求缓存节点104。接收请求之后,源节点可使用请求数据消息404中引用的地址执行查找。当源节点在该地址处具有被请求数据时,那么源节点可将被请求数据转发给请求缓存节点104。如图4所示,作为源节点,缓存节点C2 104将转发数据消息408转发给缓存节点C3 104。在一项实施例中,如果主节点102使用的选择参数选择主节点102作为源节点,则主节点102还能够选择它自己将数据转发给缓存节点C3 104。当主节点102指定它自己作为源节点时,主节点102不需要发送侦听转发消息406。相反,主节点102无需首先发送侦听转发消息406就可以直接向缓存节点C3 104发送转发数据消息408。
[0044]或者,如果所选择的源节点(例如缓存节点C2 104)未存储在请求数据消息404中请求的数据,那么所选择的源节点可通过向主节点102发送消息来响应侦听转发消息406,其未在图4中示出,指示没有找到被请求数据。在主节点102内的目录指示所选择的源节点处于“修改”和/或“排除”状态中的实例中,主节点所选择的源节点还可在回复消息内提供回写指令是否正发往主节点102的指示。包含回写指示可避免潜在的死锁问题以及不必要的流量开销,这在2013年5月22日由Iulin Lih等人递交的发明名称为“为缓存一致性处理缓存回写和缓存淘汰(Handling Cache Write-back and Cache Evict1n forCache Coherence) ”的第13/900187号美国专利申请案中进行了更详细地论述,该申请的内容以全文引用的方式并入本文中。主节点102随后可在向缓存节点C3 104(例如请求节点)发送转发数据消息408之前等待回写。
[0045]图5为基于一个或多个选择参数动态选择源节点的方法500的实施例的流程图。方法500可由主节点102执行以及可在被请求数据为“干净”数据(例如,已经在主存储器中存储的数据)时使用。如上所述,选择参数可存储在主节点102的存储器和/或目录内。方法500开始于方框502并从请求缓存节点接收数据请求。请求缓存节点可能无法获取本地位于请求缓存节点内的数据并且随后发送询问主节点在哪获取被请求数据的数据请求主节点。
[0046]接收请求后,方法500可前进到方框504并确定是否在主节点处的目录内找到了数据。如果目录没有信息,则方法可前进到方框514以将数据请求转发给存储器层次结构的下一层。如图1和2所示,数据请求可通过位于存储器层次结构的下一级别处的网络结构转发数据请求。之后,完成方框514,则方法500结束。返回方框504,如果方法500在目录内找到被请求数据,那么方法500前进到方框506。
[0047]在方框506,方法500可基于上述一个或多个选择参数选择源节点。源节点可以是请求数据的缓存节点之外的缓存节点之一和/或主节点。源节点的选择不由缓存一致性协议来预定义和/或预定,例如使用“自有”状态和/或“转发”状态来标记源节点。在方法500选择源节点之后,方法500可前进到方框508并向源节点发送侦听转发消息。之后,方法500移动到方框510并确定源节点是否回复一条指示未找到数据的消息。如果方法500随后接收到一条指示未找到数据的消息,那么方法500继续到方框512并选择新的源节点。方框512之后,方法500环回到方框508。返回方框510,如果方法500未接收到来自源节点的指示未找到被请求数据的消息,那么方法500结束。
[0048]应理解,通过将可执行指令编程和/或加载至节点300,逻辑单元集群302、缓存存储器304、存储控制器314和存储器316中的至少之一被改变,从而将节点300的一部分转换成本发明宣扬的拥有新颖功能的特定机器或装置,例如节点。加载可执行软件至计算机所实现的功能可以通过公知设计规则转换成硬件实施,这在电力工程和软件工程领域是很基础的。决定使用软件还是硬件来实施一个概念通常取决于对设计稳定性及待生产的单元数量的考虑,而不是从软件领域转换至硬件领域中所涉及的任何问题。一般来说,经常变动的设计更适于在软件中实施,因为重新编写硬件实施比重新编写软件设计更为昂贵。通常,稳定及大规模生产的设计更适于在如ASIC这样的硬件中实施,因为运行硬件实施的大规模生产比软件实施更为便宜。设计通常可以以软件形式进行开发和测试,之后通过公知设计规则转变成专用集成电路中等同的硬件实施,该集成电路硬线软件指令。由新ASIC控制的机器是一特定的机器或装置,同样地,编程和/或加载有可执行指令的电脑可视为特定的机器或装置。
[0049]本发明公开至少一项实施例,且所属领域的普通技术人员对所述实施例和/或所述实施例的特征作出的变化、组合和/或修改均在本发明公开的范围内。因组合、合并和/或省略所述实施例的特征而得到的替代性实施例也在本发明的范围内。应当理解的是,本发明已明确阐明了数值范围或限制,此类明确的范围或限制应包括涵盖在上述范围或限制(如从大约1至大约10的范围包括2、3、4等;大于0.10的范围包括0.11,0.12,0.13等)内的类似数量级的迭代范围或限制。例如,每当公开具有下限札和上限Ru的数值范围时,具体是公开落入所述范围内的任何数字。具体而言,特别公开所述范围内的以下数字:R =尺1+1^0^-1?1),其中1^为从1%到100%范围内以1%递增的变量,即,k为1%、2%、3%、4%,7%......70%,71%,72%......97%、96%、97%、98%、99%或 100%。此外,还特此公开了,上文定义的两个R值所定义的任何数值范围。除非另有说明,否则使用术语约是指随后数字的±10%。相对于权利要求的某一要素,术语“可选地”的使用表示该要素可以是需要的,或者也可以是不需要的,二者均在所述权利要求的范围内。使用如包括、包含和具有摂等较广术语应被理解为提供对如由……组成、基本上由……组成,以及大体上由……组成等较窄术语的支持。因此,保护范围不受上文所述的限制,而是由所附权利要求书定义,所述范围包含所附权利要求书的标的物的所有等效物。每项和每条权利要求作为进一步公开的内容并入说明书中,且权利要求书是本发明的实施例。所述揭示内容中的参考的论述并不是承认其为现有技术,尤其是具有在本申请案的在先申请 优先权日:期之后的
【公开日】期的任何参考。本发明中所引用的所有专利、专利申请案和公开案的揭示内容特此以引用的方式并入本文本中,其提供补充本发明的示例性、程序性或其它细节。
[0050]虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的系统和方法可以以许多其它特定形式来体现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或部件可以在另一系统中组合或合并,或者某些特征可以省略或不实施。
[0051]此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式通过某一接口、设备或中间部件间接地耦合或通信。其它变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。
【权利要求】
1.一种使用缓存一致性协议选择源节点的主节点,其特征在于,包括: 耦合到目录的逻辑单元集群,其中所述逻辑单元集群用于: 从请求缓存节点接收对数据的请求; 使用所述目录确定保存所述被请求数据的副本的多个节点; 使用一个或多个选择参数选择其中一个节点作为所述源节点;以及 向所述源节点发送消息以确定所述源节点是否存储所述被请求数据的副本, 其中当在所述源节点内找到所述被请求数据时,所述源节点将所述被请求数据转发给所述请求缓存节点,以及 一些所述节点被标记为对应于所述缓存一致性协议的共享状态。
2.根据权利要求1所述的主节点,其特征在于,所述逻辑单元集群进一步用于,当在所述源节点内未找到所述被请求数据时,从所述源节点接收第二消息。
3.根据权利要求2所述的主节点,其特征在于,所述逻辑单元集群进一步用于,当接收所述第二消息时,使用一个或多个选择参数选择第二源节点。
4.根据权利要求1所述的主节点,其特征在于,所述目录包括多个状态信息,其对应于位于至少一些所述节点内的多个缓存线的缓存一致性协议。
5.根据权利要求2所述的主节点,其特征在于,所述缓存一致性协议是修改、排除、共享、无效(MESI)缓存一致性协议。
6.根据权利要求1所述的主节点,其特征在于,所述选择参数包括至少一个以下参数:拓扑选择参数、当前条件状态选择参数以及偏好选择参数。
7.根据权利要求6所述的主节点,其特征在于,所述拓扑选择参数表示所述请求缓存节点和所述节点之间的距离。
8.根据权利要求6所述的主节点,其特征在于,所述当前条件状态选择参数表示存储在所述节点中的所述被请求数据的多个年龄。
9.根据权利要求6所述的主节点,其特征在于,所述偏好选择参数表示选择所述源节点的随机选择过程。
10.根据权利要求1所述的主节点,其特征在于,其中一个所述节点是所述主节点,以及所述主节点的存储器级别比其它节点的高。
11.根据权利要求1所述的主节点,其特征在于,所述逻辑单元集群进一步用于从所述请求缓存节点接收第二请求和选择第二源节点以将所述第二请求数据转发给所述请求缓存节点,以及所述源节点和第二源节点是不同的节点。
12.一种使用缓存一致性协议执行对等缓存转发的缓存节点,其特征在于,包括: 耦合到本地存储器的逻辑单元集群,其中所述逻辑单元集群用于: 从主节点接收侦听转发消息; 使用所述侦听转发消息中的信息确定被请求数据是否存储在所述本地存储器内; 当所述被请求数据存储在所述本地存储器内时,将所述被请求数据转发给请求缓存节点;以及 当所述被请求数据未存储在所述本地存储器内时,向所述主节点发送消息, 其中所述缓存节点分配有所述缓存一致性协议的共享状态。
13.根据权利要求12所述的缓存节点,其特征在于,所述被请求数据的副本存储在所述主节点中。
14.根据权利要求12所述的缓存节点,其特征在于,所述缓存节点耦合到多个节点,以及所述缓存节点的业务工作量比所述多个节点的少。
15.根据权利要求12所述的缓存节点,其特征在于,所述缓存一致性协议使用两个位表示所述缓存节点的共享状态。
16.根据权利要求12所述的缓存节点,其特征在于,所述缓存一致性协议是修改、共享、无效(MSI)缓存一致性协议。
17.一种使用缓存一致性协议选择源节点的方法,其特征在于,所述方法包括: 维护将多个条目标记为所述缓存一致性协议内的共享状态的目录; 从其中一个所述缓存节点接收数据请求; 确定所述被请求的数据是否映射到所述目录内的其中一个条目; 当在所述目录内的其中一个项目中未找到所述被请求的数据时,向存储器的下一级别发送所述数据请求; 当在所述其中一个条目中找到所述被请求的数据时,使用一个或多个选择参数从对应于所述其中一个项目的多个缓存节点中选择源节点;以及 向所述源节点发送转发侦听消息以确定所述源节点是否存储所述被请求数据的副本, 其中所述选择参数按优先次序排列选为所述源节点的缓存节点,以及 所述源节点在所述缓存节点之间具有最高优先级。
18.根据权利要求17所述的方法,其特征在于,进一步包括接收指示所述源节点未保存所述被请求数据的消息以及选择在所述缓存节点之间具有第二最高优先级的第二源节点。
19.根据权利要求17所述的方法,其特征在于,所述选择参数使用所述缓存节点和主节点之间的拓扑布局以按优先次序排列所述源节点的所述选择。
20.根据权利要求17所述的方法,其特征在于,所述主节点和缓存节点位于存储器的不同级别内。
【文档编号】G06F12/08GK104508637SQ201380039835
【公开日】2015年4月8日 申请日期:2013年7月30日 优先权日:2012年7月30日
【发明者】林奕林, 贺成洪, 史洪波, 张纳新 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1