多处理器系统中维持数据一致性的方法和系统的制作方法

文档序号:6562090阅读:145来源:国知局
专利名称:多处理器系统中维持数据一致性的方法和系统的制作方法
技术领域
本发明通常涉及多处理器计算机系统,更具体地涉及在多处理器计算机系统中维持数据一致性的方法和系统。
背景技术
当数据遍及多处理器计算机系统地被分布时,存在数据一致性的问题。如果多处理器系统中多于一个的节点/处理器试图在几乎同一时刻或在重叠的时段之内存取和/或修改特定数据片,数据一致性就成为了问题。已经使用了许多不同的方法来保证数据一致性,并且这些方法通常都是通过使用多处理器系统中的从请求方处理器至其它处理器的、以及其它处理器之间的大量请求来保证数据一致性。例如,如果在特定处理器的高速缓冲存储器(cache,简称高速缓存)中没有找到数据行,该处理器可以发送请求至多处理器系统中的每个其它处理器以确定该数据行是否在这些其它处理器的高速缓存之一中被找到。这些处理事务(transaction)/命令往来(traffic)消耗了处理器/系统资源,作为结果,增加了多处理器系统内部的等待时间。因此,需要能够有效地维持多处理器内部的数据一致性同时也减少处理事务并因而减少系统内部等待时间的系统和方法。

发明内容
本发明的实施例致力于现有技术中关于多处理器系统的缺陷并提供了新颖的和非显而易见的系统和方法以维持多处理器系统内部的数据一致性。该多处理器系统包括具有高速缓存和目录的第一处理器,具有目录的第二处理器,以及至少一个具有目录并独立于第一和第二处理器的附加处理器。第一处理器被配置为确定在第一处理器的高速缓存中是否未找到数据行并为该数据行转发请求至第二处理器。第二处理器被配置为从第二处理器转发该数据行至第一处理器,更新第二处理器的目录以反映出该数据行被转发给第一处理器,并且转发目录更新消息给至少一个附加处理器以反映出该数据行被转发给第一处理器。该目录中的项目(entry)包括存储地址、最近的数据保持设备,以及行状态。
在某些方面,如果第一处理器确定具有数据行地址的项目未在第一处理器的目录中被找到,则被发送以请求的第二处理器作为该数据行的归属代理(home agent)。如果第一处理器确定关于数据行地址的项目在第一处理器的目录中被找到,则请求被发送给作为数据保持设备的第二处理器。同样,第一处理器被配置为在第一处理器接收到来自第二处理器的数据行后使与第一处理器目录中的数据行地址有关的项目无效。至少一个附加处理器被配置为响应所述至少一个附加处理器接收到所述目录更新消息,而更新所述至少一个附加处理器的目录以反映出所述数据行被转发给所述第一处理器。
本发明的其它发明将在以下描述中部分地被阐明,并且从该描述部分地变得清楚,或者可以通过本发明的实践来了解。本发明的各方面将通过所附的权利要求中具体指出的元件和组合被实现和达到。需要理解的是以上一般说明和以下详细说明只是示范性和解释性的,而不是对本发明如后附的保护范围一样进行限制。


附图被加入并组成了该说明书的一部分,阐明了本发明的实施例,并与说明一起,解释了本发明的原则。这里阐明的实施例目前是优选的,然而需要了解本发明并不限于所示的具体布局和实现方式,其中图1为表示依据本发明的维持多处理器计算机系统中的数据一致性的方法的流程图;以及图2A和2B分别为实现不同的数据一致性维持方法的多处理器计算机系统的结构图。
具体实施例方式
如图2A和2B中所阐明的,多处理器系统中的每个处理器10、11、12、13包括存储数据行和目录的数据高速缓存。目录是显示数据行如何流经多处理器系统的存储资料库(storage repository)。虽然不限于如下方式,但数据行的各目录项目可以包括该数据行的存储地址、最近的数据保持设备、以及数据行状态。作为示例,行状态可以是处理器具有数据行的独占权、数据行只读、或数据行已被修改。
图1中阐明了多处理器系统中的数据一致性维持方法的实例。在步骤110中,处理器10已经搜索了在程序执行中所用的数据行的最后一级高速缓存并且确定数据行未出现在处理器10的最后一级高速缓存中。在可与步骤110同时发生的步骤120中,处理器10在处理器10中的目录中搜索数据行地址。
如果数据行的地址在处理器10的目录中被找到,则该方法进入将随后针对图2B讨论的步骤230-290。然而,如果数据行的地址未在处理器10的目录中被找到,该方法继续进入如图2A所示的步骤130-180。在步骤130中,处理器10经由地址路由表发送请求至作为该数据行的占有者的归属代理(即处理器12)。该地址路由表映射有存储地址关于与各处理器相联系的存储器在哪里起始和终止。
在步骤140中,处理器12从存储器中检索该数据行并发送数据行至请求处理器10。在可能与步骤140同时发生的步骤150中,处理器12更新其自身的目录以反映出该数据行被发送至请求处理器10。在步骤160中,处理器12转发目录更新消息至多处理器系统内部的其它处理器11、13。在步骤170中,这些其它处理器11、13也更新它们的目录以反映出该数据行被发送至请求处理器10。在步骤180中,请求处理器10从处理器12接收该数据行,并且请求处理器10将该数据置于其自身的高速缓存中。虽然不限于此方式,可以不要求请求处理器10更新其自身的目录以反映出该数据行被发送至请求处理器10因为该数据行当前驻留于请求处理器10的高速缓存中。
如果数据行的地址在处理器10的目录中被找到,则在步骤230中,处理器10基于在处理器10的目录中找到的地址,发送请求至数据保持设备(即处理器11)。在步骤240中,处理器11从存储器中检索该数据行并发送该数据行至请求处理器10。在可能与步骤240同时发生的步骤250中,处理器11更新其自身的目录以反映出该数据行被发送至请求处理器10。在步骤260中,处理器11转发目录更新消息至多处理器系统内部的其它处理器12、13。在步骤270中,这些其它处理器12、13也更新它们的目录以反映出该数据行被发送至请求处理器10。在步骤280中,请求处理器10从处理器11接收数据行,并且请求处理器10将该数据置于其自身的高速缓存中。在步骤290中,请求处理器10使其自身目录中的该数据行项目无效,因为该项目不再准确。
硬件和软件的典型结合可以是带有计算机程序的通用计算机系统,当该计算机程序被加载和执行时,控制该计算机系统执行这里说明的方法。本发明也可以被嵌入计算机程序产品中,该产品包含所有能够实现这里所说明方法的特征,并且当被加载到计算机系统中时能够执行这些方法。
计算机程序或应用程序在当前的上下文中指的是任何表达形式,以任何语言、代码或符号表示的指令集,使得具有信息处理能力的系统直接地或在以下的任一步或两步操作后执行特定的功能a)转换为另一种语言、代码或符号;b)以不同的物质形式再现。值得注意的是,本发明可以在不背离其精神或本质属性的条件下以其它具体形式来实现,并且相应地,应参照以下指出的本发明的保护范围,而不是上述的说明书。
权利要求
1.一种在多处理器系统中维持数据一致性的方法,包括如下步骤确定未在第一处理器的高速缓存中找到数据行;转发关于所述数据行的请求至第二处理器;从所述第二处理器转发所述数据行至所述第一处理器;更新所述第二处理器的目录以反映出所述数据行被转发至所述第一处理器;以及转发目录更新消息至独立于所述第一和第二处理器的至少一个附加处理器以反映出所述数据行被转发至所述第一处理器。
2.权利要求1所述的方法,进一步包括确定未在所述第一处理器的目录中找到具有所述数据行的地址的项目的步骤。
3.权利要求2所述的方法,其中,所述第一处理器的目录中的项目包括存储地址、最近的数据保持设备、以及行状态。
4.权利要求2所述的方法,其中,所述第二处理器为所述数据行的归属代理。
5.权利要求1所述的方法,进一步包括确定在所述第一处理器的目录中找到关于所述数据行的地址的项目的步骤。
6.权利要求5所述的方法,其中,所述第一处理器的目录中的项目包括存储地址、最近的数据保持设备、以及行状态。
7.权利要求5所述的方法,其中,所述数据行的地址表明所述第二处理器为数据保持设备。
8.权利要求5所述的方法,进一步包括在所述第一处理器接收到来自所述第二处理器的所述数据行后使所述第一处理器的目录中关于所述数据行的地址的所述项目无效的步骤。
9.权利要求1所述的方法,进一步包括响应所述至少一个附加处理器接收到所述目录更新消息,而更新所述至少一个附加处理器的目录以反映出所述数据行被转发给所述第一处理器的步骤。
10.权利要求1所述的方法,其中,所述目录中的项目包括存储地址、最近的数据保持设备、以及行状态。
11.一种在多处理器系统中维持数据一致性的系统,包括具有高速缓存和目录的第一处理器;具有目录的第二处理器;以及至少一个具有目录并独立于所述第一和第二处理器的附加处理器,其中,所述第一处理器被配置为确定是否未在所述第一处理器的高速缓存中找到数据行;以及转发关于所述数据行的请求至所述第二处理器,以及所述第二处理器被配置为从所述第二处理器转发所述数据行至所述第一处理器;更新所述第二处理器的目录以反映出所述数据行被转发至所述第一处理器;以及转发目录更新消息至所述至少一个附加处理器以反映出所述数据行被转发至所述第一处理器。
12.权利要求11所述的系统,其中,所述第一处理器确定未在所述第一处理器的目录中找到具有所述数据行地址的项目。
13.权利要求12所述的系统,其中,所述第一处理器的目录中的项目包括存储地址、最新近的数据保持设备、以及行状态。
14.权利要求12所述的系统,其中,所述第二处理器为所述数据行的归属代理。
15.权利要求11所述的系统,其中,所述第一处理器确定在所述第一处理器的目录中找到关于所述数据行地址的项目。
16.权利要求15所述的系统,其中,所述第一处理器的目录中的项目包括存储地址、最新近的数据保持设备、以及行状态。
17.权利要求15所述的系统,其中,所述数据行的地址表明所述第二处理器为数据保持设备。
18.权利要求15所述的系统,其中,所述第一处理器被配置为在所述第一处理器接收到来自所述第二处理器的所述数据行后使所述第一处理器的目录中关于所述数据行地址的所述项目无效。
19.权利要求11所述的系统,其中,所述至少一个附加处理器被配置为响应所述至少一个附加处理器接收到所述目录更新消息,而更新所述至少一个附加处理器的目录以反映出所述数据行被转发给所述第一处理器。
20.权利要求11所述的系统,其中,所述目录中的项目包括存储地址、最新近的数据保持设备、以及行状态。
全文摘要
本发明提供一种在多处理器系统中维持数据一致性的系统,包括具有高速缓存和目录的第一处理器,具有目录的第二处理器,以及至少一个具有目录并独立于所述第一和第二处理器的附加处理器。该第一处理器被配置为确定是否未在所述第一处理器的高速缓存中找到数据行,并且转发关于该数据行的请求至所述第二处理器。该第二处理器被配置为从第二处理器转发数据行至第一处理器,更新第二处理器的目录以反映出该数据行被转发至第一处理器,并转发目录更新消息至所述至少一个附加处理器以反映出该数据行被转发至第一处理器。目录中的项目包括存储地址、最新近的数据保持设备、以及行状态。
文档编号G06F12/08GK1991794SQ20061013731
公开日2007年7月4日 申请日期2006年10月17日 优先权日2005年12月30日
发明者克里斯·多布罗夫斯基, 加恩·N.·法姆, 马库斯·L.·考尔尼盖伊 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1