处理多处理器系统中事务缓冲器溢出的方法和系统的制作方法

文档序号:6614774阅读:268来源:国知局
专利名称:处理多处理器系统中事务缓冲器溢出的方法和系统的制作方法
技术领域
本发明涉及计算机领域,具体涉及多处理器系统中的并发控制,更具 体涉及一种用于处理多处理器系统中的事务緩冲器溢出的方法和装置,以 及一种多处理器系统中的事务存储器系统。本发明还涉及一种在多处理器 环境中,由一个处理器修改其他一个或多个处理器的状态的方法和装置。
背景技术
事务(transaction)是一个在计算机领域中被广泛使用的概念。 一个 事务通常是指多条指令以看似原子的方式执行,在执行期间没有其他操作 介于其中。例如,如果一个事务访问了某个存储器地址上的数据,则直到 该事务结束,该地址上的数据不应该被该事务以外的操作修改。
事务可以直接在硬件层面实现,比如修改处理器体系结构。从体系结 构级别上支持事务的硬件组件称为事务存储器(Transactional Memory, 简称TM)系统。采用事务存储器系统,在编写并行程序时程序员无需使 用锁,因此可以提高软件生产效率。
下面的示例从程序员的角度说明了事务的含义。图l示出了一动态平 衡二叉树。对该树的操作有读取、写入、删除和插入。如果有多个线程并 行地访问该树,则程序员通常使用一全局锁来保护整个树。这种粗粒度的 方法简单,但它迫使对树的访问串行化。因此,该方法不能有好的性能。 细粒度的锁可解决这个问题。例如,给予该树中的每个节点一个锁。然而, 这样的话,程序将很难编写。当插入或删除一节点时,相邻节点必须旋转 以保持树的平衡。为正确起见,必须获得多个锁。这会带来新的问题,例 如死锁。如果使用细粒度锁来编写程序,则程序员必须掌握高超的并行编程技能。因此,生产率很低。
使用事务存储器则可以解决这个问题。程序员仅需要使用新定义的指
令transaction—start和transaction—end,在代码中标出事务的边界。在事 务内部,用和往常相同的方式编写代码,但是完全不需要考虑锁。硬件将 保证该事务以看似原子的方式执行,不会有其他操作介于其间。以下示例 代码示出了使用事务存储器对该动态平衡二叉树进行的操作,例如插入或 删除节点。
transaction—start { p = rootj while (TRUE) { if (x < p->key) { p = p->left; } else if (x > p->key) {
p = p->right; } else { break;}
}
do read/write/deletion/insertion here; } transaction—end;
图2示出了目前一般的事务存储器系统。如图所示,在体系结构的级 别上,事务访问的所有数据(推测性数据)将被临时地存储在一事务緩冲 器中,而不是写入到存储器中。如果两个事务访问相同的地址,并且其中 至少一个修改该地址上的数据,则其中一个事务必须回滚(roll back)并 重新执行,而另一个事务继续。这种情况被称为冲突(conflict)。如果没 有冲突,事务结束时临时存储的数据将被写入到存储器。该操作称为提交 (commit)。
在上述示例中,如果该树很大,则两个线程访问同一个节点的概率是 很低的。这意味着不同事务很可能是并行执行的。因此,虽然利用事务存 储器系统编程时采用了粗粒度的编程风格,但是程序运行时的性能却可以与细粒度的锁相比。
如上所述,为实现事务存储系统,需要添加用于临时存储的片上緩冲
器。然而,硬件緩沖器只能具有有限的大小。例如,Power4/Power5的每 个处理器核具有32KB —级数据高速緩存。临时緩沖器位于关键路径上, 因此,它几乎不可能大于一级高速緩存(事实上,由于面积限制,它应当 远小于一级高速緩存)。另一方面,程序员又很难精确估计一事务将使用 多少存储空间。因此, 一种可能的情况是事务所占用的存储空间大于硬件 緩冲器的大小。这种情况称为溢出(overflow)。
为保证程序的正确性,溢出必须得到处理。由于溢出是一种罕见的事 件,溢出处理方法的速度对于整体性能来讲并不是很关键,而实现该方法
所要求的硬件复杂性是需要关注的。
Rajwar R, Herlihy M, Lai K. Virtualizing transactional memory. Proceedings of the 32st Annual International Symposium on Computer Architecture(ISCA). Madison, Wisconsin: IEEE Computer Society, 2005. 494-505公开了一种通过硬件处理溢出的解决方案。该解决方案是由Intel 提供的。它通过将推测性数据存储到存储器中来避免溢出。然而,该方法 需要增加一些新的部件来支持自动存储,对硬件的修改很复杂。IBM Power 体系结构采用了 RISC (精简指令集计算机)体系结构,该体系结构要求 硬件简单。因此,上述解决方案不适合于IBM的产品以及所有采用RISC 体系结构的芯片。
Moore K E, Bobba J, Moravan M J, Hill M D, Wood D A. LogTM: log-based transactional memory. The 12th International Symposium on High-Performance Computer Architecture(HPCA). 2006. 254-265 7〉开了 另外一种通过将推测性数据写入存储器来避免溢出的方法。然而,相比于 日志的方式,在高速緩存或硬件緩冲器中进行冲突检测会快很多。所以, 该文中提及的基于日志的方式在进行冲突检测时性能并不理想。
Colin Blundell, Joe Devietti, E Christopher Lewis and et al. Making the Fast Case Common and the Uncommon Case Simple in UnboundedTransactional Memory. Proceedings of Annual International Symposium on Computer Architecture (ISCA). 2007中也公开了一种处理事务緩沖器 溢出的方法,然而,该方法仍然需要复杂的硬件改动,例如,对存储控制 器的修改。
显然,本领域中需要一种简单有效的解决方案来处理事务緩冲器溢出 的问题,该方案不应该对现有硬件体系结构进行很大的修改。

发明内容
根据本发明的一个方面,提供了一种处理多处理器系统中事务緩冲器 溢出的方法,包括以下步骤当一处理器的事务緩冲器溢出时,禁止其他 处理器进入事务,并等待任何具有当前事务的处理器完成其当前事务;在 不使用事务緩沖器的情况下,重新执行造成所述事务緩冲器溢出的事务; 以及当所述事务执行完成以后,使其他处理器能够进入事务。
根据本发明的另一个方面,提供了一种多处理器系统中的事务存储器 系统,包括多个处理器;所述多个处理器可访问的存储器;以及每个处 理器的事务緩冲器,其中,当一处理器的事务緩冲器溢出时,所述一处理 器禁止其他处理器进入事务,并等待所述其他处理器中的任何具有当前事 务的处理器完成其当前事务后重新执行造成所述事务緩沖器溢出的事务, 并且当所iiit成所述事务緩沖器溢出的事务重新执行完成后,使所述其他 处理器能够i^v事务。
根据本发明的再一个方面,提供了一种在多处理器环境中,由一个处 理器修改其他一个或多个处理器的状态的方法,该方法包括以下步骤所 述一个处理器通过总线向所述其他一个或多个处理器中的每一个发送消 息;所述其他一个或多个处理器中的每一个接受所述消息,并根据所述消 息修改其寄存器;以及所述其他一个或多个处理器中的每一个返回应答。
本发明的解决方案能够解决事务緩冲器溢出的问题,同时它只需要很 少的硬件方面的改动,因此它特别适合于RISC芯片。
9


通过在结合附图阅读时参照下面对说明性实施例的详细说明,将最好
地理解发明本身以及其优选使用模式、另外的目标以及优点,其中
图1示出了可使用事务存储器对其进行操作的一动态平衡二叉树示
例;
图2示出了目前一般的事务存储器系统;
图3示出了 Power体系结构中的芯片互连结构;
图4示出了 Power L2高速緩存的结构;
图5示出了根据本发明的实施例的多处理器系统中的事务存储器系 统;以及
图6示出了示出了在多处理器系统中,根据本发明的实施例处理事务 緩冲器溢出的方法。
具体实施例方式
下面参照附图来说明本发明的实施例。然而,应当理解的是,本发明 并不限于所介绍的特定实施例。相反,可以考虑用下面的特征和元素的任 意组合来实施和实践本发明,而无论它们是否涉及不同的实施例。因此, 下面的方面、特征、实施例和优点仅作说明之用而不应被看作是所附权利 要求的要素或限定,除非权利要求中明确提出。
本发明的基本思想在于当发生事务緩冲器溢出时,通知软件来处理 它。该事务应当被中止并重新执行。当它第二次执行时,硬件不将推测性 数据存储在事务緩冲器中,而是将数据写入存储器。由于未使用临时緩冲 器,因此,事务的第二次执行将不会发生溢出.然而,为了保持正确性, 必须有某种机制来防止其他事务访问同一数据。 一条新指令"检查和禁止" 在总线上广播一消息,并禁止其他处理器ii^新的事务。当其他处理器完 成其当前事务(如果有的话)后,溢出的事务开始第二次执行。由于此时
该事务是系统中唯一的事务,因此它可安全地直接将数据写入存储器。 下面以本发明在Power体系结构上的 一示例实现为例来从总体上说明本发明技术方案。然而,应指出的是,这并非是对本发明的限制,相反,
本发明也可在任何其他RISC体系结构上实现,或在采用其他体系结构的 多处理器系统中实现。
图3示出了 Power体系结构中芯片的互连方式,其中,使用环来连接 4个芯片以形成一个MCM (多芯片才莫块)。实际上,参与连接的是每个 芯片中的L2高速緩存(在图中Power芯片的内部,未示出)。图4示出 了 Power L2高速緩存的结构。
环总线通常用于传送高速緩存一致性协议的消息。这些消息,皮传送到 环总线上,并由其他处理器的L2高速緩存通过snoop (探听)端口接收。 其他处理器的L2高速緩存产生应答,这些应答被合并为一个最终的响应 (combined response, 简称cresp )。cresp也会^L每个L2高速緩存从 crcsp 端口监听到。
利用上述结构,可实现本发明而无需大量的硬件修改。可在每个处理 器的L2高速緩存中添加两个反映其状态的标志TE (事务使能)指示一 处理器是否可iiA事务;TP(事务进行中)指示一处理器是否正在事务中。 当一处理器上发生事务緩冲器溢出时,该处理器通过执行"检查和禁止,, 指令在环总线上向其他处理器广播一消息。每个处理器可通过其snoop端 口接收该消息,并且根据该消息设置其TE标志,从而禁止该处理器ii^ 新的事务。同时,从每个处理器的L2高速緩存中读取TP标志,作为对所 述消息的响应发送到环总线上。这些响应根据所述"检查和禁止"指令的 语义被合并。合并TP所产生的最g将被返回到所述处理器。所述一处 理器根据该值判断是否有其他处理器当前处于事务中,并在有任何其他处 理器当前处于事务中时,重新执行所述"检查和禁止,,指令,直到所有其 他处理器退出其当前事务,从而所述一处理器可不使用事务緩沖器而直接 在存储器上重新执行其产生緩冲器溢出的事务。
在该修改的硬件体系结构中,将添加若干新的指令。这些指令及其语 义如下
1)Transaction -Start handler语义
if(TE==l) TP=1;
开始执行事务; else
go to handlen
2) Transaction-End 语义
将由事务写入的所有数据提交到存储器; TP = 0;
3) Transaction-Enable 描述
使每个其他处理器能够进入新的事务 语义
对于每个其他处理器k, TE[k=l
4) Transaction-Disable
描述
禁止每个其他处理器进入新的事务 语义
对于每个其他处理器k, TEk=0
5) Transaction-Check result-register 描述
检查是否有任何其他处理器处于事务中 语义
当且仅当有某一其他处理器k, TP[k]--l时,result-register = 1
6) Transaction-Check-&-Disable result-register 语义
原子地执行如下两条指令Transaction-Check result-register Transaction-Disable
7) Get画TP result-register 语义
result-register = TP
8) Set-TP 描述
将TP设置为1以指示处理器处于事务中
语义
TP = 1
9) Clear-TP
描述
将TP清除为0以指示该处理器本身不在事务中
语义
TP = 0
10) Get-TE result-register 语义
result-register = TE
11) Set-TE 描述
将TE设置为1以使得该处理器本身可执行事务 语义
TE = 1
12) Clear-TE 描述
将TE清除为0以禁止该处理器本身执行事务
语义
TE = 0下面以 一事务及其处理程序的示例代码为例来说明在本发明的技术方 案中如何使用以上指令来处理事务緩冲器溢出。应指出的是,以下代码仅 为示例,而不是对本发明的限制。
1 Save register; 〃保存寄存器以便事务重新执行
2 transaction-start:
3 Recover register; 〃在重新执行时恢复寄存器
4 Transaction-Start handler-address; 〃事务开始
5 ...... 〃执行事务
6 Transaction-End; 〃事务结束
7 transaction-succeed:
8 …
9
10 handler-address 〃处理程序的入口
11 …
12 transaction-check: 〃处理溢出的代码从这里开始
13 Transaction-Check result-register 〃检查处理器是否在事务中
14 if(result-register==l)
15 go to transaction-check; 〃如果处理器在事务中,再次检查
16 Set-TP; 〃指示该处理器本身在事务中
17 transaction-check-&-disable:
18 Transaction-Check-&-Disable result-register〃禁止其他处理 器执行事务
19 if(result-register ==1) 〃检查其他处理器是否在事务中
20 go to transaction-check隱&陽disable〃如果一处理器在事务中,再 次检查
21 ...... 〃重新执行事务(可能用存储器的全局锁)
22 Transaction-Enable; //使其他处理器能执行事务
1423 Clear-TP; 〃指示该处理器本身不在事务中
24 go to transaction-succeed;
根据以上代码,如果一处理器的事务緩沖器发生了溢出,则执行流跳 转到处理程序(第10行)。因为这是溢出事件,所以它进一步跳转到第 12行。处理程序等待其他事务的完成(第13-15行)。然后,设置该处 理器本身的TP (第16行)并禁止所有其他处理器i^新的事务(第18 -20行)。此后,重新执行该事务,而没有临时緩沖(第21行)。在该阶 段,如需要可以使用全局锁或其他软件机制来保证正确性。最后,使其他 处理器能够执行事务(第22行),并清除该处理器本身的TP标志(第23 行)。
上述代码中的关键是"Check-&-Disable"(检查和禁止)指令,该指 令的如下几个独特特征将本发明的事务存储器系统与其他事务存储器系统 区别开来1)它显式地利用总线上的消息广播;2)它检查和修改其他处 理器的寄存器;3)它显式地利用Power体系结构中的响应合并机制来产 生返回值。
以上以本发明在Power体系结构上的一示例实现为例从总体上说明了 本发明的技术方案,应指出的是,以上说明仅为示例,而不是对本发明的 限制。例如,本发明也可以在其他RISC体系结构或非RISC体系结构的 多处理器系统中实现。可实现本发明的多处理器系统可以是任何类型的多 处理器系统,包括如上所述的多个CPU在总线级别上连接在一起、甚至多 个处理器在单个芯片上的紧密耦合的多处理器系统,以及多个独立的计算 机通过高速通信系统(例如,千兆位以太网)互连的松散耦合的多处理器 系统;也包括对称多处理器系统以及非对称多处理器系统。相应地,本文 中的处理器是指4壬何计算实体,包括单个芯片中的多个核,单个封装中多 个处理芯片,单个系统单元中的多个封装,通过网络互连的多个独立的计 算机等。再例如,上述TE、 TP标志既可以位于L2高速緩存中,也可以 位于处理器本身中;并且它们既可以利用现有的寄存器或其他存储元件或其中的位来实现,也可以利用新添加的寄存器或其他存储元件或其中的位
来实现。并且,所述"检查和禁止"指令以及其他指令既可以由L2高速 緩存来执行,也可以由处理器本身来执行。此外, 一处理器设置和读取其 他处理器的状态既可以如上所述通过在总线上发送消息来实现,也可以通 过在其他通信结构上发送消息或以其他方式来实现。
下以参照附图描述根据本发明的实施例的、多处理器系统中的事务存 储器系统以及根据本发明的实施例的用于处理事务緩冲器溢出的方法和装 置。
图5示出了根据本发明的实施例的多处理器系统中的事务存储器系 统。如图所示,该事务存储器系统包括多个处理器501 (为简明起见, 图中仅示出两个);所述多个处理器可访问的存储器502;以及每个处理 器的事务緩沖器503。
其中,当一处理器501在执行一事务的过程中,如果其事务緩冲器 503溢出,该处理器501能够禁止其他处理器501 i^v事务,并等待任何 具有当前事务的处理器501完成其当前事务。当所有具有当前事务的处理 器501已完成其当前事务后,该处理器501可重新执行造成所述事务緩冲 器503溢出的事务,并且在该事务的重新执行中,该处理器501将不再使 用所述事务緩沖器503,而是直接(例如通过数据高速緩存)在存储器502 上执行该事务中的操作。由于此时其他处理器501已被禁止^新的事务, 因此,该事务将是整个多处理器系统中唯一的事务,这样就避免了多处理 器系统中由于不同处理器501在不同事务中访问相同的存储器地址所可能 引起的沖突。此外,在所述事务的重新执行过程中,如需要还可以使用全 局锁等机制来进一步保证正确性。当所述事务执行完成以后,该处理器501 重新使其他处理器501能够i^v事务。
在本发明的一实施例中,当一处理器501在执行事务的过程中,如果 发生了事务緩冲器溢出,该处理器501向该多处理器系统中的所有其他处 理器501发送一 "检查和禁止"消息。当所述其他处理器501中的每一个 接收到该"检查和禁止"消息时,检查该每一个处理器501是否有正在执行的事务,返回检查结果,并禁止各自处理器501进入新的事务。当从所 述其他处理器501中的每一个返回的检查结果指示任何一个处理器501当 前正在执行事务时,所述一处理器501再次发送所述"检查和禁止"消息, 直到从所述其他处理器501中的每一个返回的检查结果均指示该处理器 501没有正在执行的事务。
例如,在本发明的一实施例中,当多处理器系统中的一处理器501发 生事务緩冲器溢出时,该处理器501可通过执行上文中的 Transaction-Check-&-Disable指令来向该多处理器系统中的其他处理器发 送所述"检查和禁止,,消息,以便检查其他处理器当前是否正在执行事务, 并禁止其他处理器进入新的事务。并且,在该指令的执行结果显示有任何 其他处理器具有正在执行的当前事务时,该处理器可重新执行该指令,直 到该指令的执行结构显示其他处理器的当前事务执行完毕。
在本发明的一实施例中,所述多处理器系统中的每一个处理器501具 有一TP标志。该标志表示该处理器501当前是否正在执行事务。例如, 该标志可包含一个二进制位,当该位为1时,表示该处理器501当前正在 执行事务;当该位为O时,表示该处理器501当前没有正在执行事务。当 然,该标志也可包含多个位,且可由不同的二进制数表示处理器501是否 正在执行事务。在本发明的一实施例中,该标志位于处理器501的数据高 速緩存(例如L2数据高速緩存)中。在本发明的其他实施例中,该标志 也可位于处理器501本身中。该标志既可由数据高速緩存或处理器501本 身中的现有元件来实现,也可由新增加的元件来实现。
当一处理器501 i^A事务时,设置其TP标志(例如,通过执行上文 中的Set-TP指令来设置该标志),而当一处理器501完成事务时,清除其 TP标志(例如,通过执行上文中的Clear-TP指令来清除该标志)。这样, 当一处理器501接收到来自另一个处理器501的"检查和禁止"消息时, 可通过读取其自身中的TP标志来检查其自身是否正在执行事务(例如, 通过执行上文中的Get-TP指令来进行检查),并将该结果返回给所述另 一个处理器501。在本发明的一实施例中,所述多处理器系统中的每一个处理器501还 具有一TE标志。该标志表示该处理器501是否能够i^V事务。例如,该 标志可包含一个二进制位,当该位为1时,表示该处理器501能够进入事 务;当该位为0时,表示该处理器501不能进入事务。当然,该标志也可 包含多个位,且可由不同的二进制数表示处理器501是否能够i^事务。 在本发明的一实施例中,该标志位于处理器501的数据高速緩存中。在本 发明的其他实施例中,该标志也可位于处理器501本身中。该标志既可由 数据高速緩存或处理器501本身中的现有元件来实现,也可由新增加的元 件来实现。
每一处理器501每当其ii^事务之前,首先检查该TE标志,并仅当 该TE标志已蜂皮i殳置(例如,该标志为l)时,才ii^该事务;当该TE标 志未^i殳置时(例如,该标志为0),该处理器501不能进入该事务,而 是例如执行一处理程序。这样,当一处理器501接收到来自另一个处理器 501的所述"检查和禁止,,消息时,可通过清除该TE标志来禁止其自身进 入新的事务(例如,通过执行上文中的Clear-TE指令来清除该标志)。
在本发明的一实施例中,当在一处理器501上造成事务緩存溢出的事 务在不使用事务緩存的情况下被重新执行完成以后,该处理器501通过向 该多处理器系统中的其他每一处理器501发送一事务使能消息来4吏得其他 每一处理器501能够ii^事务。在本发明的进一步的实施例中,当一处理 器501中接收到来自另一处理器501的事务使能消息时,该处理器501可 通过设置其自身中的所述TE标志来使其自身能够i^新的事务(例如, 通过执行上文中的Set-TE标志来设置该标志)。
在本发明的一优选实施例中,当一处理器501的事务緩沖器503溢出 时,该处理器501执行一处理程序,并在该处理程序中执行以上^作。 该处理程序优选地以加载到存储器502中并可由处理器501访问的软件代 码来实现,但也可以处理器501或其他部件中的固件或硬件来实现。
在本发明的一实施例中,作为进一步的性能优化,当一处理器501上 发生事务緩冲器溢出时,该处理器501不是禁止该多处理器系统中的所有
18其他处理器501进入事务,而仅禁止部分处理器501 ii^事务,或者禁止 处理器ii^有可能与当前事务冲突的事务,或者两者兼而有之。
在本发明的一实施例中,所述多处理器系统中的多个处理器501通过 总线互连,这样,所述"检查和禁止,,消息以及所述事务使能消息可通过 总线上的消息广播从一处理器501传送到其他每个处理器501,且每个处 理器501的响应可通过总线传回到所述一处理器501。在本发明的进一步 的实施例中,所述多处理器系统为诸如Power体系结构,且可利用Power 体系结构中的响应合并机制由所述每个处理器501的响应生成一个返回 值,并返回给所述一处理器501。
图6示出了在多处理器系统中,根据本发明的实施例处理事务緩冲器 :益出的方法。
如图所示,当一处理器的事务緩沖器503溢出时,过程开始。在步骤 601,禁止该多处理器系统中的其他处理器进入事务,并等待任何具有当前 事务的处理器完成其当前事务。
在本发明的一实施例中,该步骤601包括以下子步骤由所述发生事 务緩冲器溢出的处理器向所述其他处理器中的每一个发送"检查和禁止,, 消息;当所述其他处理器中的每一个接收到该"检查和禁止"消息时,检 查该处理器是否正在执行事务,返回检查结果,并禁止该处理器it^新的 事务;以及当从所述其他处理器中的每一个返回的检查结果指示任何一个 处理器正在执行事务时,所述发生事务緩沖器溢出的处理器再次发送所述 "检查和禁止,,消息,直到从所述其他处理器中的每一个返回的检查结果 均指示该每一个处理器没有正在执行的事务。
在本发明的一实施例中,作为进一步的性能优化,当一处理器上发生 事务緩沖器溢出时,该处理器不是禁止该多处理器系统中的所有其他处理 器i^事务,而仅禁止部分处理器501进入事务,或者禁止处理器i^有 可能与当前事务沖突的事务,或者两者兼而有之。
在本发明的一实施例中,该多处理器系统中的每个处理器具有一 TP 标志,该标志表示该处理器是否有正在执行的当前事务。这样,当所述其
19他处理器中的每一个接收到所述"检查和禁止"消息时,该每一个处理器
通过读取其TP标志来判断其是否正在执行事务。当该多处理器系统中的 一处理器当进入事务时,设置该TP标志,而当其完成事务时,清除该TP 标志。该TP标志可位于每个处理器的数据高速緩存中,也可位于每个处 理器本身中。
在本发明的一实施例中,该处理器系统中的每个处理器还具有一 TE 标记,该标志表示该处理器是否能够^事务。这样,当所述其他处理器 中的每一个接收到所述"检查和禁止,,消息时,该每一个处理器通过清除 其本身中的TE标志来禁止其本身进入事务。并且,该多处理器系统中的 每一个处理器当^事务之前都先检查其te标志,且只有当该te标志
被设置时,才ii/v该事务;而当该TE标志未被设置时,不ii^事务,而 是例如执行一处理程序。该TE标志可位于每个处理器的数据高速緩存中, 也可位于每个处理器本身中。
当该多处理器系统中的每个处理器已在步骤601被禁止i^新的事 务,且任何具有当前事务的处理器已完成其当前事务之后,在步骤602, 在不使用事务緩冲器的情况下,重新执行造成所述事务緩冲器溢出的事务。 由于该多处理器系统中的所有其他处理器已净皮禁止进入事务,因此该重新 执行的事务将是该多处理器系统中唯一的事务。这样,可以不通过事务緩 冲器,而是直接在存储器上(例如通过数据高速緩存)执行该重新执行的 事务中的^作。
在步骤603,当该事务重新执行完成以后,使其他处理器能够进入事 务。在本发明的一实施例中,该步骤包括以下子步骤由所述发生事务緩 沖器溢出的处理器向该多处理器系统中的其他每一个处理器发送一事务4吏 能消息;并且当所述每一个处理器接收到该事务使能消息时,设置该处理 器中的上述TE标志,从而使得该处理器能够i^事务。
优选地,当该多处理器系统中的一处理器发生事务緩沖器溢出时,该 处理器开始执行一处理程序,并在该处理程序中执行上述各步骤。
在本发明的一实施例中,该多处理器系统中的多个处理器通过总线互连,并且所述"检查和禁止"消息以及所述事务使能消息是通过总线上的 消息广##送的,且每个处理器的响应可通过总线传回到所^生事务緩 沖器溢出的处理器。在本发明的进一步的实施例中,所述多处理器系统为
诸如Power体系结构,且可利用Power体系结构中的响应合并机制由所述 每个处理器的响应生成一个返回值,并返回给所述发生事务緩冲器溢出处 理器。
本发明还提供了一种用于处理多处理器系统中事务緩沖器溢出的装 置,该装置中的各功能模块执行上述根据本发明的实施例的用于处理多处 理器系统中事务緩沖器溢出的方法中的各相应步骤,并优选地以计算机软 件模块结合通用计算机硬件部件以及上述根据本发明的实施例的多处理器 系统中的事务存储器系统中的硬件部件来实现。
以上描述了才艮据本发明的实施例的一种用于处理多处理器系统中事务 緩冲器溢出的方法和装置,以及一种多处理器系统中的事务存储器系统。 从以上描述可知,本发明的核心技术是由一个处理器修改其他处理器的状 态的机制,以及为实现这种机制而设计的"检查和禁止"指令。事实上, 本发明的这种机制以及所述"检查和禁止"指令不仅可用于处理多处理器 系统中事务緩冲器的溢出,而且适用于其他场合,用于实现原子访问或对 共享数据的保护。比如,当访问某些全局数据时,先禁止别人访问,再自 己访问,就是安全的。这种做法有别于传统的锁机制,因为锁机制中的锁 是放在存储器中,而本发明修改的是寄存器。这种方案可以应用在数据库、 Web服务、多^^体的应用中。
需要指出的是,在不同的实施例中,所述"检查和禁止"指令可能具 有不同的名称,也可能具有更复杂的语义。但是需要强调的是l)其他指 令只要包含本文中"检查和禁止"指令的语义,不论另外添加了多少额外 的语义,都应该包含在本发明的范围之中。2)本文中的"检查和禁止"指 令的语义,即使使用多条指令来完成,而不是像本文中所述那样用一条指 令来完成,也应该是包含在本专利的范围之中。总之,在多处理器环境中, 只要发生了由一个处理器通过总线向其他处理器发送消息,从而修改其他处理器的状态的行为,就应包含在本发明的范围之内。
尽管已参照优选实施例具体示出和说明了本发明,但是本领域内的那 些技术人员应理解,可在形式和细节上对其进行各种改变而不会背离本发 明的精神和范围。
权利要求
1. 一种处理多处理器系统中事务缓冲器溢出的方法,包括以下步骤当一处理器的事务缓冲器溢出时,禁止其他处理器进入事务,并等待所述其他处理器中的任何具有当前事务的处理器完成其当前事务;重新执行造成所述事务缓冲器溢出的事务;以及当所述事务执行完成以后,使其他处理器能够进入事务。
2. 根据权利要求1的方法,其中所述禁止其他处理器进入事 务的步骤包括由所述一处理器向所述其他处理器中的每一个处理器发送检 查和禁止消息;以及当所述其他处理器中的每一个处理器接收到该检查和禁止消 息时,检查所述其他处理器中的每一个处理器是否有正在执行的 事务,返回检查结果,并禁止所述其他处理器中的每一个处理器 进入新的事务。
3. 根据权利要求2的方法,其中所述等待所述其他处理器中 的任何具有当前事务的处理器完成其当前事务的步骤包括当从所述其他处理器中的每一个处理器返回的检查结果指示 所述其他处理器中的任何一个处理器有正在执行的事务时,所述 一处理器再次发送所述检查和禁止消息,直到从所述其他处理器 中的每一个处理器返回的检查结果均指示所述其他处理器中的每 一个处理器都没有正在执行的事务。
4. 根据权利要求2的方法,其中所述多处理器系统的处理器 具有第一标志,当所述多处理器系统的处理器进入事务时,设置该第一标志,而当事务完成时,清除该第一标志,所述检查所述 其他处理器中的每一个处理器是否有正在执行的事务的步骤是通过读取所述其他处理器中的每一个处理器中的第一标志来完成 的。
5. 根据权利要求2的方法,其中所述多处理器系统的处理器 具有第二标志,所述多处理器系统的处理器在进入事务之前检查 该第二标志,并仅当该第二标志被设置时,才能进入该事务,所 述禁止所述其他处理器中的每一个处理器进入新的事务的步骤是 通过清除所述其他处理器中的每一个处理器中的第二标志来完成 的。
6. 根据权利要求5的方法,其中所述使其他处理器能够进入 事务的步骤包括由所述一处理器向所述其他处理器中的每一个处理器发送一 事务使能消息;以及当所述其他处理器中的每一个处理器接收到该事务使能消息 时,设置所述其他处理器中的每一个处理器中的所述第二标志。
7. 根据权利要求1的方法,其中所述重新执行造成所述事务 緩沖器溢出的事务的步骤是通过所述一处理器在存储器上执行所述事务中的操作来完成的。
8. 根据权利要求1的方法,其中所述禁止其他处理器进入事 务包括仅禁止其他处理器进入有可能引起冲突的事务。
9. 根据权利要求4或5的方法,其中所述第一标志和第二标 志位于所述多处理器系统的处理器的数据高速緩存中。
10. 根据权利要求4或5的方法,其中所述所述多处理器系统 的处理器通过总线互连,且所述检查和禁止消息以及所述事务使 能消息是通过总线上的消息广播传送的。
11. 一种多处理器系统中的事务存储器系统,包括 多个处理器;所述多个处理器可访问的存储器;以及 每个处理器的事务緩冲器,其中,当一处理器的事务緩冲器溢出时,所述一处理器禁止 其他处理器进入事务,并等待所述其他处理器中的任何具有当前 事务的处理器完成其当前事务后重新执行造成所述事务緩冲器溢 出的事务,并且当所述造成所述事务緩冲器溢出的事务重新执行 完成后,使所述其他处理器能够进入事务。
12. 根据权利要求11的系统,其中所述一处理器通过以下方 式禁止其他处理器进入事务由所述一处理器向所述其他处理器中的每一个处理器发送检 查和禁止消息;以及当所述其他处理器中的每一个处理器接收到该检查和禁止消 息时,检查所述其他处理器中的每一个处理器是否有正在执行的 事务,返回检查结果,并禁止所述其他处理器中的每一个处理器 进入新的事务。
13. 根据权利要求12的系统,其中所述一处理器通过以下方 式等待所述其它处理器中的任何具有当前事务的处理器完成其当 前事务当从所述其他处理器中的每一个处理器返回的检查结果指示 所述其他处理器中的任何一个处理器有正在执行的事务时,所述 一处理器再次发送所述检查和禁止消息,直到从所述其他处理器 中的每一个处理器返回的检查结果均指示所述其他处理器中的每 一个处理器都没有正在执行的事务。
14. 根据权利要求12的系统,其中所述多个处理器中的每一 个处理器都具有第一标志,当所述多个处理器中的每一个处理器 进入事务时,设置该第一标志,而当完成事务时,清除该第一标 志,且所述其他处理器中的每一个在接收到所述检查和禁止消息 时,通过读取其自身中的所述第一标志来检查其自身是否有正在 执行的事务。
15. 根据权利要求12的系统,其中所述多处理器系统中的每一个处理器具有笫二标志,该处理器当进入事务之前检查该第二 标志,并仅当该第二标志被设置时,才进入该事务,以及所述其 他处理器中的每一个在接收并执行所述检查和禁止消息时,通过 清除其自身中的所述第二标志来禁止其自身进入新的事务,且所 述其他处理器中的每一个在接收并执行由所述一处理器发出的事 务使能消息时,通过设置其自身中的所述第二标志来使其自身能 够进入事务。
16. 根据权利要求11的系统,其中,所述一处理器重新执行 造成所述事务緩冲器溢出的事务的操作是在存储器上执行的。
17. 根据权利要求14或15的系统,其中,所述第一标志和第 二标志位于所述处理器的数据高速緩存中。
18. 根据权利要求14或15的系统,其中,所述处理器通过总 线互连,且所述检查和禁止消息以及所述事务使能消息是通过总 线上的消息广播传送的。
19. 一种在多处理器环境中由一个处理器修改其他一个或多 个处理器的状态的方法,包括以下步骤所述一个处理器通过总线向所述其他一个或多个处理器中的 每一个发送消息;所述其他一个或多个处理器中的每一个接受所述消息,并根 据所述消息修改其寄存器;以及所述其他一个或多个处理器中的每一个返回应答。
全文摘要
根据了一种处理多处理器系统中事务缓冲器溢出的方法和装置以及一种多处理器系统中的事务存储器系统,所述方法包括以下步骤当一处理器的事务缓冲器溢出时,禁止其他处理器进入事务,并等待任何具有当前事务的处理器完成其当前事务;在不使用事务缓冲器的情况下,重新执行造成所述事务缓冲器溢出的事务;以及当所述事务执行完成以后,使其他处理器能够进入事务。
文档编号G06F9/46GK101452400SQ20071019618
公开日2009年6月10日 申请日期2007年11月29日 优先权日2007年11月29日
发明者沈晓卫, 鲲 王, 王华勇 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1