用于信息处理的系统和方法技术方案

技术编号:2919337 阅读:155 留言:0更新日期:2012-04-11 18:40
提出一种用于缺省数据前送一致的高速缓存代理的系统和方法。节点控制器从本地高速缓存代理(本地处理器)或者从远程节点控制器接收高速缓存线请求。当节点控制器从本地高速缓存代理接收请求时,节点控制器将对应高速缓存线发送到本地高速缓存代理,而始终维持高速缓存线前送状态控制。当节点控制器从远程节点控制器接收请求时,节点控制器将高速缓存线随同高速缓存线前送状态控制一起发送到远程节点控制器。此外,节点控制器基于高速缓存线请求来源、请求类型和高速缓存线当前状态来执行特定动作。

【技术实现步骤摘要】

本专利技术涉及一种用于缺省数据前送一致的高速缓存代理的系统和方法。更特别地,本专利技术涉及一种用于修改MESIF协议的“转发”状态控制以便有效地支持可缩放节点控制器计算机系统的系统和方法。
技术介绍
高速缓存一致性是计算机系统的整体性要素,它是管理高速缓存使得数据不丢失或者重写的过程。例如,当数据在高速缓存中更新但是尚未传送到它的目标存储器或者盘时,出错的可能性很高。高速缓存一致性是使用对高速缓存保持跟踪的算法和协议来获得的。在对称多处理(SMP)系统中,高速缓存甚至更为关键,因为多个处理器共享同一存储器空间。 一种现存的高速缓存一致性协议是MESIF(修改、独占、共享、无效、前送)协议。当高速缓存线处于“修改”状态中时,高速缓存代理具有计算机系统中的唯一正确数据。当高速缓存线处于“独占”状态中时(数据尚未修改),高速缓存代理具有对高速缓存进行修改的独占控制。当高速缓存线处于“共享”状态中时,多个高速缓存代理可以使它们的高速缓存存储器中的高速缓存线进行读取,而且每个拷贝是正确的。当高速缓存代理处的高速缓存线处于“无效”状态时,高速缓存代理的拷贝不正确,因为另一处理器已经更新了对应的存储器位置或者具有高速缓存线的独占状态。 最后,当高速缓存代理具有高速缓存线“前送”状态控制时,高速缓存代理在它接收到高速缓存线请求时将高速缓存线前送到请求的高速缓存代理。该前送状态消除了本地高速缓存代理为了高速缓存线而访问主存储器的需要,这改进了整体系统性能。然而,发现的挑战是对于使用可缩放节点控制器的系统而言,该前送状态没有被优化。对于这些系统来说,依赖于前送状态管理,对远程处理器进行高速缓存访问所造成的等待可能是严重的。 因此需要一种为使用可缩放节点控制器的系统有效地管理MESIF协议的高速缓存线前送状态控制的系统和方法。
技术实现思路
已经发现使用一种用于仅允许节点控制器拥有MESIF协议中的高速缓存线前送状态控制的系统和方法来解决上述挑战。当节点控制器从本地高速缓存代理接收到请求时,节点控制器将对应高速缓存线发送到本地高速缓存代理,而始终维持高速缓存线前送状态控制。当节点控制器从远程节点控制器接收到请求时,节点控制器将高速缓存线随同高速缓存线前送状态控制一起发送到远程节点控制器。 节点控制器从本地高速缓存代理(本地处理器)或者从远程节点控制器接收高速缓存线请求。节点控制器基于高速缓存线请求的来源、请求类型和高速缓存线当前状态来执行特定动作。当节点控制器从本地高速缓存代理接收到共享请求而且对应高速缓存线的当前状态是共享时,节点控制器简单地将高速缓存线发送到本地高速缓存代理。例如,两个处理器可以共享(例如读取)特定高速缓存线,并且第三处理器希望读取同一高速缓存线。 当节点控制器从本地高速缓存代理接收到共享请求而且对应高速缓存线的当前状态是独占时,节点控制器先通知控制代理将它的状态降级到“共享”,其中该控制代理是具有处于独占状态中的高速缓存线的高速缓存代理。节点控制器然后将高速缓存线发送到本地高速缓存代理,继而将它的记录更新为高速缓存线处于共享状态中。 当节点控制器从本地高速缓存代理接收到独占请求时,高速缓存线的当前状态而言在一定程度上不是实质性的,因为节点控制器由于本地高速缓存代理要求独占访问而通知共享高速缓存代理以及控制代理将它们的状态降级到“无效”。一旦通知被发送,节点控制器将高速缓存线发送到本地高速缓存代理,继而更新它的记录以将本地高速缓存代理标识为高速缓存线的控制代理。 当节点控制器从远程节点控制器接收到远程共享请求并且高速缓存线的当前状态是共享时,节点控制器将高速缓存线和高速缓存线前送状态控制发送到远程节点控制器。节点控制器继而更新它的记录以标识出远程节点控制器现在具有对于特定高速缓存线的高速缓存线前送状态控制。 当节点控制器从远程节点控制器接收到远程共享请求并且对应高速缓存线的当前状态是独占时,节点控制器先通知控制代理将它的状态降级到共享。节点控制器然后将高速缓存线和高速缓存线前送状态控制发送到远程节点控制器。节点控制器继而更新它的记录以标识出远程节点控制器现在具有对于特定高速缓存线的高速缓存线前送状态控制。 最后,当节点控制器从远程节点控制器接收到远程独占请求时,高速缓存线的当前状态而言在一定程度上不是实质性的。节点控制器先通知共享高速缓存代理以及控制代理将它们的状态降级到“无效”。一旦该通知被发送,节点控制器将高速缓存线和高速缓存线前送状态控制发送到远程节点控制器。节点控制器继而更新它的记录以标识出远程节点控制器现在具有对于特定高速缓存线的前送状态控制。 上文是概要,因此必要地包含简化、概括和细节省略;因而,本领域技术人员将认识到,该概要仅仅是说明性的而不旨在于以任何方式加以限制。仅由本文档来自技高网
...

【技术保护点】
一种计算机实施的方法,包括:在节点控制器检测高速缓存线请求;在该节点控制器确定该高速缓存线请求是否对应于本地高速缓存代理;以及响应于确定该高速缓存线请求对应于该本地高速缓存代理,将高速缓存线前送到该本地高速缓存代理, 同时在该节点控制器保留高速缓存线前送状态控制,该高速缓存线对应于该高速缓存线请求并且该高速缓存线前送状态控制对应于该高速缓存线。

【技术特征摘要】
US 2005-12-28 11/320,075书限定的本发明的其它方面、发明特征和优点将在下面阐述的非限制性的具体描述中变得明显。附图说明通过参照附图,可以更好地理解本发明,而且使得它的许多目的、特征和优点对于本领域技术人员变得明显。 图1是示出了在不具有这里描述的本发明的情况下处理器或者节点控制器将高速缓存线前送状态控制前送到远程节点处理器的图;图2是示出了节点控制器将高速缓存线和高速缓存线前送状态控制前送到远程节点控制器的图;图3是示出了基于高速缓存线请求类型和高速缓存线当前状态的节点控制器动作的表;图4是示出了在处理器从节点控制器请求和接收高速缓存线时所采取的步骤的流程图;图5是示出了在节点控制器处理高速缓存线请求时所采取的步骤的高级流程图;图6是示出了在处理远程高速缓存线请求时的步骤的流程图;以及图7是能实施本发明的计算设备的框图。具体实施方式下文旨在于提供对本发明的例子的具体描述,而不应当理解为限制本发明本身。实际上任何数目的变形可以落入于在基于说明书的权利要求书中限定的本发明范围之内。 图1是示出了在不具有这里描述的本发明的情况下遵循现存MESIF(修改、独占、共享、无效、前送)协议的计算机系统的图。图1中所示的每个处理器和节点包括请求和接收高速缓存线的高速缓存代理。处理器访问存储器映射以便确定特定高速缓存线的“归属节点”,也就是高速缓存线的物理位置。 图1中的例子从处理器A 100出于只读目的而请求高速缓存线开始。处理器A 100确定处理器D 115是特定高速缓存线的归属节点,并且将请求150发送到处理器D 115。此外,处理器A 100将“探听”152、154和156分别地发送到处理器B 105、处理器C 110和节点控制器Y 120。当归属节点高速缓存代理之外的高速缓存代理具有对所请求的高速缓存线的控制时,探听是向非归属节点的其它本地高速缓存代理请求处理状况的请求(见下文)。 在图1中所示的例子中,处理器C 110具有对特定高速缓存线的控制,也具有“高速缓存线前送状态控制”(基于现存MESIF协议)。具有高速缓存线前送状态控制的高速缓存代理负责将高速缓存线前送到本地高速缓存代理。同样,处理器C 110将高速缓存线以及高速缓存线前送状态控制前送到处理器A 100(前送160)。此外,处理器C 110将指示它的动作的探听响应162发送到处理器D 115(归属节点)。处理器B 105、处理器C 110和节点控制器Y 120也分别地将探听响应158、162和159发送到处理器D 115。 继续图1中的例子,处理器E 125(远程处理器)现在请求读取同一高速缓存线。同样,处理器E 125将请求170发送到节点控制器Z145,该节点控制器Z 145将请求170发送到节点控制器Y 120。在这一点,现有技术允许两种用于向处理器E 125提供高速缓存线的可选方式。 第一可选方式使节点控制器Y将高速缓存线随同高速缓存线前送状态控制一起发送到处理器E 125(前送N 175)。这一可选方式的缺点在于高速缓存线状态管理复杂,这可能造成处理器A 100和处理器E 125同时具有高速缓存线前送状态控制。 第二可选方式使处理器A 100通过节点控制器120将高速缓存线随同高速缓存线前送状态控制一起发送到处理器E 125(前送P 180)。这一可选方式的缺点在于数据等待显著增加,这使整体系统性能降级。因此,通过使用这里描述的本发明,将MESIF协议更改为仅使节点控制器拥有高速缓存线前送状态控制,就减少了系统复杂度和系统等待(关于进一步的细节,见图2-6和对应文字)。 图2是示出了计算机系统的图,该计算机系统遵循了使用这里描述的本发明所修改后的MESIF协议。修改后的MESIF协议仅允许节点控制器拥有高速缓存线前送状态控制。结果,节点控制器将高速缓存线发送到本地高速缓存代理,同时仍然维持高速缓存线前送状态控制。当节点控制器从远程节点控制器接收到请求时,节点控制器将高速缓存线和高速缓存线前送状态控制发送到远程节点控制器。处理器A 100、B 105、C 110、D 115以及节点控制器Y 120和Z 145与图1中所示相同。 与图1相似,图2中的例子从处理器A 100请求高速缓存线“共享请求”(只读目的)开始。处理器A 100确定处理器D 115是特定高速缓存线的归属节点,并且将请求200发送到处理器D 115。此外,处理器A 100分别地将“探听”202、204和206发送到处理器B 105、处理器C 110和节点控制器Y 120。 在一个实施例中,共享请求是“总线读取线”(BRL)请求。在这一实施例中,高速缓存代理不知道高速缓存线是否为共享的、独占的、无效的、企业层叠(tier)组件。如果高速缓存线在另一处理器或者节点控制器处使用,则作为BRL的结果,请求代理将该线高速缓存于共享状态中。 在图2中所示的例子中,处理器C 110具有对处理器A 100所请求的高速缓存线(独占状态)的控制。然而,使用这里描述的本发明,处理器C 110没有高速缓存线前送状态控制。实际上,节点控制器Y120具有高速缓存线前送状态控制。处理器B 105、处理器C 110和节点控制器Y 120分别地将探听响应208、210和212发送到处理器D115。 作为节点控制器Y 120具有高速缓存线前送状态控制的结果,节点控制器Y 120将消息220发送到处理器C 110,该消息命令处理器C110将它的状态降级到共享状态。继而,节点控制器Y 120将高速缓存线发送到处理器A 100(发送215),而始终维持高速缓存线前送状态控制。 继续图2中的例子,处理器E 125(远程控制器)现在请求读取同一高速缓存线。同样,处理器E 125将请求230发送到节点控制器Z145,该节点控制器Z 145将请求230发送到节点控制器Y 120。由于节点控制器Y 120具有高速缓存线前送状态控制,所以节点控制器Y120将高速缓存线随同高速缓存线前送状态控制一起发送到节点控制器Z 145(前送240)。在发送前送240之前,节点控制器Y 120可以将消息发送到一个或多个本地处理器(处理器A 100、处理器B 105、处理器C 110和处理器D 115),该消息通知它们将它们的状态降级。该消息是基于高速缓存线的当前状态和请求230的请求“类型”(共享或者独占)(关于状态降级的进一步细节,见图3和对应文字)。 一旦节点控制器Z 145接收到高速缓存线和高速缓存线前送状态控制,节点控制器Z 145保留高速缓存线前送状态控制而且将高速缓存线发送到处理器E 125(发送250)。结果,只有节点控制器Y 120和Z 145拥有高速缓存线前送状态控制。 图3是示出了基于高速缓存线请求类型和高速缓存线当前状态的节点控制器动作的表。高速缓存线请求类型可以是比如来自节点控制器所支持的处理器的本地请求,或者高速缓存线可以是比如来自远程节点控制器的远程请求。如果一个或多个高速缓存代理在读取高速缓存线,则高速缓存线当前状态可以是“共享”状态,或者如果高速缓存代理之一具有处于独占状态中的高速缓存线并且打算修改高速缓存线但是尚未修改高速缓存线,则高速缓存线当前状态可以是“独占”。 在一个实施例中,独占请求是“总线读取无效线”(BRIL)请求。在这一实施例中,高速缓存代理不知道高速缓存线是否当前为共享、独占、无效等。当高速缓存代理以修改高速缓存线内容的意图来请求读取高速缓存线时(BRIL请求),在当前使用高速缓存线的其它高速缓存代理处高速缓存线的状态被降级到“无效”。 表300包括列310至330。列310包括节点控制器从本地高速缓存代理或者远程节点控制器接收的各种请求类型。列320包括“共享”或者“独占”高速缓存线当前状态标识符,而列330包括基于列310中的请求类型和列320中的高速缓存线当前状态的动作。 行340至360示出了当节点控制器从本地高速缓存代理接收到高速缓存线请求时所采取的动作。行340示出了通过从本地高速缓存代理接收到共享请求并且对应高速缓存线的当前状态是共享,节点控制器简单地将高速缓存线发送到本地高速缓存代理。例如,两个处理器可以共享(例如读取)特定高速缓存线,而第三处理器希望读取同一高速缓存线。 行350示出了当节点控制器从本地高速缓存代理接收到共享请求而且对应高速缓存线的当前状态是独占时,节点控制器先通知控制代理(它是具有处于独占状态中的高速缓存线的高速缓存代理)将它的状态降级到“共享”。节点控制器然后将高速缓存线发送到本地高速缓存代理,继而节点控制器将它的记录更新为高速缓存线处于共享状态中。 行360示出了当节点控制器接收到独占请求类型时,高速缓存线的当前状态在一定程度上不是实质性的,因为节点控制器由于本地高速缓存代理正在请求独占访问而通知共享高速缓存代理以及控制代理将它们的状态降级到无效。一旦发送该通知,节点控制器将高速缓存线发送到本地高速缓存代理,继而节点控制器更新它的记录以将本地高速缓存代理标识为高速缓存线的控制代理。 行370至行390示出了当节点控制器从远程节点控制器接收到请求时所采取的动作。行370示出了当节点控制器接收到远程共享请求并且高速缓存线的当前状态是共享时,节点控制器将高速缓存线和高速缓存线前送状态控制发送到远程节点控制器。继而,节点控制器更新它的记录以标识出远程节点控制器现在具有对于特定高速缓存线的高速缓存线前送状态控制。 行380示出了当节点控制器接收到远程共享请求并且对应高速缓存线的当前状态是独占时,节点控制器先通知控制代理将它的状态降级到共享。节点控制器然后将高速缓存线和高速缓存线前送状态控制发送到远程节点控制器。继而,节点控制器更新它的记录以标识出远程节点控制器现在具有对于特定高速缓存线的高速缓存线前送状态控制。 行390示出了当节点控制器接收到远程独占请求类型时,高速缓存线的当前状态、比如行360中所示的当前状态在一定程度上不是实质性的。节点控制器先通知共享高速缓存代理以及控制代理将它们的状态降级到无效。一旦发送该通知,节点控制器将高速缓存线和高速缓存线前送状态控制发送到远程节点控制器。继而,节点控制器更新它的记录以标识出远程节点控制器现在具有对于特定高速缓存线的前送状态控制。 图4是示出了在高速缓存代理从节点控制器请求和接收到高速缓存线时所采取的步骤的流程图。高速缓存代理包含于处理器中,该处理器处理比如来自应用的高速缓存线请求。高速缓存线请求可以对应于内部高速缓存线(在处理器内部)或者外部高速缓存线(在处理器外部)。 高速缓冲器处理开始于400,由此高速缓存代理在步骤410从应用405接收存储器请求。例如,应用405可以计算数字值和要求存储在特定高速缓存线中的数字。在步骤420,高速缓存代理在存储器映射425中查找存储器位置以识别高速缓存线的“归属节点”,它是高速缓存线的物理处理器位置。存储器映射425可以存储于比如计算机存储器的易失性存储区上。 确定处理器本身是否为归属节点(判决430)。如果处理器本身是归属节点,则判决430转移到“是”分支432,由此高速缓存从本地存储器取回高速缓存线(步骤435)并且在步骤440将高速缓存线提供给应用405。高速缓存代理处理在445结束。 另一方面,如果所请求的高速缓存线的归属节点是在不同的处理器,则判决430转移到“否”分支438,由此高速缓存代理基于上面所识别的存储器映射位置来识别对应高速缓存线的归属节点(步骤450)。例如,在四个处理器的系统中,高速缓存代理可以识别出高速缓存线的归属节点是在第三处理器。 在步骤460,高速缓存代理将请求发送到归属节点处理器(包含于处理器465中),而且将“探听”发送到处理器465中的其它处理器以及节点控制器470。节点控制器470是控制高速缓存线前送的本地节点控制器。在步骤480,高速缓存代理从节点控制器470接收所请求的高速缓存线,并且在步骤485将高速缓存线提供到应用405。处理在490结束。 图5是示出了在节点控制器处理高速缓存线请求时所采取的步骤的高级流程图。节点控制器处理在500开始,由此节点控制器从包含于处理器515中的本地高速缓存代理或者从远程节点控制器520接收高速缓存线请求。 确定高速缓冲线请求是来自处理器515(本地请求)还是来自远程节点控制器(远程请求)(判决530)。如果高速缓存线请求是远程请求,则判决530转移到“是”分支532,由此节点控制器处理远程请求(预定义的过程块535,关于进一步细节,见图6和对应文字)。 另一方面,如果高速缓存线请求是本地请求,则判决530转移到“否”分支538,由此确定高速缓存线请求的“请求类型”。请求类型可以是“共享”请求(只读)或者请求类型可以是“独占”请求(打算修改)(判决540)。如果请求是独占请求,则判决540转移到“独占”分支542,由此该处理向具有处于共享状态或者独占状态中的对应高速缓存线的其它代理通知将它们的状态降级到“无效”状态,因为本地高速缓存代理正在请求对对应高速缓存线的独占状态(步骤545)。 在步骤550,节点控制器将高速缓存线发送到本地高速缓存代理,而始终维持高速缓存线的“前送状态控制”。这意味着即使节点控制器将高速缓存线发送到本地高速缓存代理,但是当高速缓存代理下次请求同一高速缓存线时,节点控制器仍然负责将高速缓存线发送到其它高速...

【专利技术属性】
技术研发人员:克里斯多姆布劳斯基马库斯莱瑟恩科恩盖恩甘恩戈克法姆
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1