专利名称:支持事务存储的系统及基于预测的事务执行方法
技术领域:
本发明涉及支持事务存储的系统,尤其涉及支持事务存储的系统 的溢出预测。
背景技术:
事务(Transaction)的概念已经被广泛地应用于数据库领域当 中。本发明中所指的事务有别于传统的事务的概念,它是并行计算领 域中的一个概念。本发明中所涉及的事务指多条指令的执行,其中这 多条指令看起来像是一起被原子性地执行,执行期间没有任何其他操 作介入。例如,如果一个存储器地址在一个事务中被访问,则在该事 务完成之前,该存储器地址不应该被该事务之外的其他代码所修改。
事务可以直接在计算机体系结构层面被实现。在体系结构层面实 现事务的硬件系统被称为支持事务存储或者事务内存(Transactional Memory)的系统。采用支持事务存储的系统,编程人员不必再继续 使用传统的锁(lock)机制来保护共享数据的访问,同时使程序的性 能保持在可接受的范围内,因此软件开发效率有所提高。
支持事务存储的系统的一种实现方法如下。在处理器芯片内部增 加专用緩冲器,将一个事务要写的数据(推测性数据)存储在该专用 緩冲器中,而不是将其直接写到普通的存储器系统。如果两个事务都 对同一地址进行访问,且其中至少一个是写操作,则其中一个事务必 须回退(rollback)并且重新执行,而另 一个事务可以继续执行。这 种情况被称为"冲突"。如果不存在冲突,则在事务结束时,将临时存 储在专用緩沖器中的数据写到普通的存储器系统中。这个动作被称为 "提交"。也就是说,事务被推测性地执行,并且在该事务中的所有操 作被推测性地执行之后才将推测性执行的结果提交到普通的存储器系统中。
图1示意性地示出了这种支持事务存储的系统的原理图。如图1
所示,在支持事务存储的系统中设置有硬件緩冲器1012或1022,用 于在执行事务过程中临时存储该事务要写的所有数据,即推测性数 据。在该事务的所有程序代码都被执行完成之后,才将存储在硬件緩 冲器中的推测性数据通过总线1030提交到普通的存储器系统中。需 要指出的是,作为另外一种实现方法,硬件緩冲器1012可以和数据 高速緩冲器1014合并在一个物理硬件中,硬件緩冲器1022可以和数 据高速緩冲器1024合并在一个物理硬件中。这种实现方法就本发明 所关心的内容看来是一样的,本发明的精神实质可以继续适用,因此 不再单独阐述。
在现有技术中,所有事务都是被推测性地执行。其中在推测性执 行过程中,该事务要写的所有数据被临时存储在硬件緩冲器中。只有 在该事务的所有程序代码都被成功(推测性)执行之后,才将存储在 硬件緩冲器中的推测性数据提交到普通的存储器系统中,此时该事务 才成功地执行完成。
但是,因为硬件緩沖器不可能非常大,所以如果事务很大(即访 问大量地址),则緩冲器不能保存所有数据,从而緩沖器将溢出。在 现有技术中,緩冲器溢出将强迫事务异常终止(在以下将其称为事务 溢出),然后重新执行该事务。 一般说来,重新执行该事务时,为避 免再次溢出,将采用很费时的方式来进行处理,比如退回到以前基于 锁的方法。本发明并不关心具体的处理溢出事务的方法。在以下叙述 中,将用基于锁的方法为例进行说明,但是它泛指所有费时的处理溢 出事务的方法。
根据上述说明,在现有技术中存在两种方式执行一个事务。如果 事务小,则通过将推测性数据存储在硬件緩沖器的方式来执行该事务
(简称为利用硬件緩冲器来执行),这种方法速度快;而如果事务大, 则通过基于锁的方法来执行该事务,这种方法速度慢。
但是,在现有技术中,在事务执行之前并不知道该事务是否将溢出,即不知道对于该事务的执行,硬件緩冲器是否会溢出。因此,不 管事务大还是小,都首先假设不会溢出,利用硬件緩冲器来执行。而 大的事务的执行会由于硬件緩冲器溢出而异常终止,然后异常终止的 事务再通过第二种慢速的方法重新执行。因此,大的事务必须试探性 地运行第一次,在因为溢出而异常终止之后再通过基于锁的方法重新 执行。在这样的情形下,大的事务的第一次运行(即发生异常终止的 那次执行)浪费了时间和能量,并占用了系统资源。
在美国专利申请文献US2005/0060559中7>开了一种通过运行一 个伪事务(pseudo-transactions)来判断事务是否会溢出的方法。但 是,在这种方法中,同样必须通过运行一次来判断事务是否溢出,而 运行一次会消耗时间和能量,并占用了系统资源。
而在美国专利申请文献US2006/0085591中公开了 一种通过软硬 件混合实现的支持事务存储的系统,其中如果硬件事务存储器系统溢 出,就切换到软件事务存储器系统中重新运行。也就是说,该专利文 献提出了一种溢出后的处理方法,而这种处理方法是以运行一次并且 溢出为代价的。
发明内容
本发明的目的是对现有技术中的上述不足进行改进,即在一个事 务执行之前事先确定其是否会溢出,从而节省了事务执行时间和消耗 的能量以及占用的资源。
为此,本发明提出了 一种具有溢出预测机制的支持事务存储的系 统,其中在事务执行之前预测该事务是否会溢出,然后根据预测结果
来执行事务。如果一个事务被预测为不溢出,则该事务在事务模式(也 被称为非溢出模式)下执行,即利用硬件緩沖器执行。而如果一个事 务被预测为溢出,则该事务在溢出模式下工作,即该事务的执行不使 用硬件緩沖器,而是例如通过基于锁的方法执行。
为了实现上述目的,根据本发明的一个方面,提供了一种支持事 务存储的系统,包括预测单元,用于根据事务先前执行的执行结束状态预测所述事务的下一次执行模式;执行单元,用于在预测单元所 预测的执行模式下执行所述事务。其中执行模式包括溢出模式和非溢 出模式。
根据本发明的另一方面,提供了一种基于预测的事务执行方法, 包括预测步骤,用于根据事务先前执行的执行结束状态,预测所述 事务的下一次执行模式;执行步骤,用于在预测步骤所预测的执行模 式下执行事务。其中执行模式包括溢出模式和非溢出模式。
根据本发明的再一方面,提供了一种计算机程序产品,包括存储 在计算机可读存储介质中的程序代码,所述程序代码用于实现根据本 发明的方法。
本发明在事务执行之前就基于该事务先前执行的执行结束状态 预测该事务的下一次执行的执行模式,从而节省了为了判断溢出所必 须执行的一次运行,并因此提高了性能并节省了能量和资源。
通过结合附图,参考以下对示例性实施例的详细描述,将更好地 理解示例性实施例本身以及其优选使用方式、其他目标和其优点,其 中
图l示意性地示出了支持事务存储的系统的原理图; 图2示出了根据本发明的支持事务存储的系统的示意性方框图; 图3示出了根据本发明的基于预测的事务执行方法的流程图; 图4以在处理器内核中实现的方式示出了根据本发明的支持事务 存储的系统的 一个例子的示意图5示出了根据本发明第一实施例的支持事务存储的系统的示意
图6示出了根据本发明第一实施例的基于预测的事务执行方法 的流程图7示出了根据本发明第二实施例的支持事务存储的系统中查找 表的一项的示意图;图8示出了说明根据本发明第二实施例的状态机; 图9示出了根据本发明第二实施例的基于预测的事务执行方法 的流程图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图参 考优选实施例对本发明作进一步的详细描述。
在根据本发明的支持事务存储的系统中,存在以下三种模式
1) 非事务模式,用于非事务代码的执行。在非事务模式中,如 普通方式那样执行访存操作;
2) 事务模式,也被称为非溢出模式,用于被预测为不溢出的事 务的执行。大部分事务是小事务并在非溢出模式中执行;
3) 溢出模式,用于被预测为溢出的事务的执行。由于硬件緩冲 器容量的限制,少量的大事务在溢出模式下被执行。
图2示出了根据本发明的具有预测机制的支持事务存储的系统 的方框图。如图2所示,根据本发明的具有预测机制的支持事务存储 的系统200包括预测单元202和执行单元201。预测单元202根据事 务先前执行的执行结束状态预测事务的下 一 次执行模式,而执行单元 201才艮据预测单元202的预测,即在预测单元202所预测的执行模式 (溢出模式或非溢出模式)下执行该事务。
优选地,根据本发明的预测单元202包括查找表。查找表包含多 项(例如32个或更多项),每项具有一个物理地址字段和(一个或 多个)预测信息字段,其中物理地址字段中存储事务的物理地址,例 如事务的起始指令的地址,而相应的预测信息字段中存储关于该事务 下一次执行是否溢出的预测,即该事务的执行模式信息。
由于查找表只具有有限的项,因此在所有项都被使用的情况下必 须对某些项进行替换。对于选择哪些项进行替换,可以使用现有技术 中的多种方法,诸如循环法、最近最少使用算法(LRU)和随机法。
优选地,根据本发明的具有预测机制的支持事务存储的系统200还可以包括状态寄存器。执行单元201对状态寄存器进行设置,并通 过状态寄存器来控制对程序代码的执行。对于非事务的程序代码,执 行单元201将状态寄存器设置为非事务模式,使得该非事务的程序代 码在非事务模式下执行;对于被预测单元202预测为不溢出的事务, 执行单元201将状态寄存器设置为非溢出模式,使得被预测为不溢出 的事务在非溢出模式下执行;而对于被预测单元202预测为溢出的事 务,执行单元201将状态寄存器设置为溢出模式,使得被预测为溢出 的事务在溢出模式下执行。
根据本发明,当一个事务开始被执行时,例如当该事务的起始指 令被执行时,执行单元201搜索查找表。如果在查找表中找到某一项 的物理地址字段中所存储的物理地址等于该事务的地址,例如该事务 的起始指令的地址,则被称为"命中(hit)",否则被称为"未命中 (miss)"。如果搜索结果为命中,则执行单元201根据查找表中命中 项的预测信息字段中所存储的执行模式信息来执行该事务。例如,如 果命中项的预测信息字段指示溢出模式(即该事务被预测为溢出), 则状态寄存器被执行单元201设置为溢出模式,于是当前事务在溢出 模式下运行。如果命中项的预测信息字段指示非溢出模式(即该事务 被预测为不溢出),则状态寄存器被执行单元201设置为非溢出模式, 于是当前事务在非溢出模式下运行。如果搜索结果为未命中,则状态 寄存器被执行单元201设置为非溢出模式,于是当前事务在非溢出模 式下运行,后面章节将更详细地介绍。可选地在任何事务结束后,执 行单元都将状态寄存器设置为非事务模式。
图3示出了根据本发明的基于预测的事务执行方法的流程图。如 图3所示,首先在步骤S301中执行预测步骤,即根据事务先前执行 的执行结束状态预测该事务的下一次执行模式。然后根据步骤S301 中的预测结果,在步骤S301中所预测的执行模式下执行事务。在步 骤S302中判断在步骤S301中所作的预测是否是溢出预测,即判断步 骤S301中所预测的下一次执行模式是否是溢出模式。如果是,则在 步骤S303中在溢出模式下执行该事务。相反,如果在步骤S301中将该事务的下一次执行模式预测为非溢出模式,则在步骤S304中在非 溢出模式下执行该事务。
图4以在处理器内核中实现的形式示出了根据本发明的具有预 测机制的支持事务存储的系统的详细结构的示意图。如图4所示,根 据本发明的具有预测机制的支持事务存储的系统400包括执行单元 401和预测单元402。支持事务存储的系统400还可以包括执行读操 作的加栽单元404、执行写操作的存储单元405、控制存储单元405 和加载单元404对数据的写入或读取(即控制读操作和写操作的数据 流)的数据流控制器409、高速緩存器406、写緩冲器407和读緩冲 器408。优选地,根据本发明的具有预测机制的支持事务存储的系统 400还包括状态寄存器403。在图4所示的示例中,状态寄存器403 通过数据流控制器409来控制事务的读操作和写操作的数据流。
根据本发明,当预测单元402将一个事务预测为溢出,即预测该 事务的下一次执行模式是溢出模式时,执行单元401在溢出模式下执 行该事务,即不通过硬件緩冲器执行该事务。
可选地,在预测单元402将一个事务预测为溢出时,执行单元 401将状态寄存器403设置为溢出模式,于是状态寄存器403通过数 据流控制器409来实现该事务在溢出模式下的执行。例如,对于该事 务的读操作,加载单元404在数据流控制器409的控制下直接从高速 緩存器406读取数据,而对于该事务的写操作,存储单元405在数据 流控制器409的控制下将数据直接写入到高速緩存器406中。
当预测单元402将一个事务预测为不溢出、即预测该事务的下一 次执行模式为非溢出模式时,执行单元401在非溢出模式下执行该事 务,即通过硬件緩沖器(写緩沖器407和读緩沖器408)执行该事务。
可选地,当预测单元402将一个事务预测为不溢出时,执行单元 401将状态寄存器403设置为非溢出模式,于是状态寄存器403通过 数据流控制器409来实现该事务在非溢出模式下的执行。
本领域技术人员可以想到,数据流控制器409可以使用多路复用 器、触发器、开关等等来实现。以下介绍根据本发明的基于事务先前执行的执行结束状态预测 该事务是否溢出、即预测该事务的下一次执行模式的过程的两个优选 实施例。
图5示出了根据本发明第一实施例的具有预测机制的支持事务 存储的系统的示意图。在图5所示的支持事务存储的系统500中,预 测单元502包括查找表5021,该查找表中每项具有两个字段,其中一 个字段是记录物理地址的地址字段,另一个字段是记载溢出位的溢出 位字段。如果溢出位为1,则表示相应事务被预测为溢出,即该事务 的下一执行模式被预测为溢出模式;相反,如果溢出位为0,则表示 相应事务被预测为不溢出,即该事务的下一次执行模式被预测为非溢 出模式。本领域技术人员应该理解,溢出字段除了通过一个比特位来 实现以外,也可以通过多个比特位来实现。例如用一个含有多个比特 位的计数器,只有溢出的次数累积到一个阈值才预测该事务的下一执 行模式为溢出模式。这些方法是本领域的常识,以下针对第一实施例 的介绍仅以单比特位的实现为例进行说明。
根据本发明的第一实施例,查找表5021中各项的初始状态为无 效(invalid)。当一个事务开始时,在执行单元501中执行该事务的 起始指令。于是,执行单元501搜索查找表5021。如果搜索结果为未 命中,则该事务的地址、即该事务的起始指令的物理地址被记录在查 找表5021的某一项的地址字段中,并且该项的溢出位字段被设置为0, 即事务被预测为不溢出。
根据本发明,如果搜索结果为命中,则根据命中的项的溢出位设 置状态寄存器503。
如果预测单元502将一个事务预测为不溢出,则执行单元501 将在非溢出模式下执行该事务。
在非溢出模式下,对于事务写操作,存储单元505在数据流控制 器509的控制下将数据写入写緩冲器507中,而不是将数据写入一级 高速緩存器506中。其中如果命中写緩冲器507,即在写緩冲器507 中发现事务写操作所指向的地址,则数据流控制器509控制存储单元505直接将数据写入到写緩沖器507中。相反,如果未命中写緩沖器 507,则进行沖突检测。如果冲突检测确定不存在冲突,则存储单元 505将在写緩沖器507中为该事务写操作分配一项,将该事务写操作 所指向的地址写入写緩冲器507中该项的地址字段中,并将数据写入 写緩冲器507中该项的相应存储字段中。相反,如果沖突检测确定存 在沖突,则选择发生冲突的事务之一异常终止。在任何情况下,如果 写緩沖器507溢出,则事务异常终止。
在非溢出模式下,对于事务读操作,加载单元504从一级高速緩 存器506和写緩沖器507 二者读取数据,并检查该事务读操作所指向 的地址是否命中读緩冲器508。对于事务读操作,如果命中写緩沖器 507,则在数据流控制器509的控制下返回来自写緩冲器507的数据, 并忽略来自 一级高速緩存器506的数据;如果未命中写緩冲器507但 命中读緩沖器508,则在数据流控制器509的控制下返回来自一级高 速緩存器506的数据;而如果写緩沖器507和读緩沖器508 二者都未 命中,则进行冲突检测。如果冲突检测确定不存在冲突,则加载单元 504重新从一级高速緩存器506读取数据,并将该数据的地址(即该 事务读操作所指向的地址)记录到读緩冲器508中。相反,如果冲突 检测确定存在冲突,则选择冲突的事务之一异常终止。
根据本发明,如果一个在非溢出模式下执行的事务最后发生溢 出,则在该事务溢出之后,将查找表5021中与该事务相对应的项中 的溢出位改变为1,即将对该事务的预测改变为溢出,从而该事务的 下一次执行将在溢出模式下执行。
如果预测单元502将一个事务预测为溢出,则执行单元501将在 溢出模式下执行该事务。
在溢出模式下,事务中的执行不使用硬件緩冲器(即写緩沖器 507和读緩冲器508)来保存临时数据和数据地址;相反,事务写操 作将数据直接存储到一级高速緩存器506中,而事务中的读操作直接 从一级高速緩存器506读取数据。
根据本发明的第一实施例,在溢出模式下,除了直接从/向一级高速緩存器506读取/写入数据之外,还将写数据地址(即事务写操作 所指向的地址)记录到写緩冲器507中。
优选地,如果在溢出模式下执行的事务结束时,写緩冲器507 中的地址空间能够保持该事务的所有写操作的地址,则表明该事务实 际上并不溢出,即对于该事务的溢出预测不正确,于是预测单元502 修改查找表中相应项中的溢出位,即将对该事务的溢出预测修改为非 溢出预测。相反,如果写緩沖器507中的地址空间不足以保持该事务 的所有写操作的地址,则表明该事务确实溢出,即关于该事务溢出的 预测是正确的,于是预测单元502仍然预测该事务溢出,即预测该事 务的下一次执行模式为溢出模式。
优选地,还将读数据地址(即事务读操作所指向的地址)记录到 读緩冲器508中,并且,在溢出模式下执行的事务结束时,只有硬件 緩沖器(即写緩冲器507和读緩冲器508)中的地址空间能够保持该 事务所访问的所有地址(包括写操作和读操作所涉及的数据地址), 即写緩沖器足以记录该事务的所有写操作的数据地址,并且读緩冲器 足以记录该事务的所有读操作的数据地址,才表明关于该事务的溢出 预测不正确,于是预测单元502才^务改查找表中相应项中的溢出位,
即将对于该事务的溢出预测修改为非溢出预测。
在以上过程中,写緩冲器507和/或读緩冲器508提供了簿记功 能。可选地,当事务结束时,写緩沖器507和读緩沖器508被清空。
在溢出模式中,不需要冲突检测,并且硬件緩冲器中地址空间的 溢出不强迫事务异常终止,因为数据已经被保存在一级高速緩存器 506中。
由上面可知,根据本发明的第一实施例,可以在一个被预测为溢 出的事务执行结束时准确地确定该事务是否确实溢出。如果关于溢出
的预测是错误的,则将下一次执行预测为非溢出;否则,再次将下一 次执行预测为溢出。
图6示出了根据本发明第一实施例的基于预测的事务执行方法
的流程图。如图6所示,在步骤S601,预测事务是否溢出,即预测事务的下一次执行模式。在前面对第一实施例的具体描述中,步骤S601 读取查找表中所存储的执行模式信息。然后,在步骤S602中判断步 骤S601中的预测是否是溢出预测(即步骤S601中所预测(读取)的 执行模式是否是溢出模式)。如果是溢出预测,则在步骤S603中在 溢出模式下执行该事务。而如果不是溢出预测,则在S604中在非溢 出模式下执行该事务。
根据本发明的第一实施例,在溢出模式下执行时,利用写緩冲器 记录写数据地址。优选地,在这次执行结束后,在步骤S605中判断 写緩冲器是否足以记录所有被写的数据的地址(即写数据地址)。如 果是,则在步骤S607中将该事务的执行模式信息修改为非溢出模式, 即指示该事务的下一次执行模式是非溢出模式,否则在步骤S608中 将该事务的执行模式信息保持为溢出模式,即指示该事务的下一次执 行模式是溢出模式。
在非溢出模式下执行的情况下,在这次事务执行之后,在步骤 S606中判断该执行是否发生了溢出。如果发生了溢出,则在步骤S609 中将该事务的执行模式信息修改为溢出模式,否则在步骤S610中将 该事务的执行模式信息保持为非溢出模式。
下面描述根据本发明的第二实施例。
在根据本发明的第二实施例中,支持事务存储的系统的结构与第 一实施例基本相同,事务在非溢出模式下的执行也与第一实施例基本 相同,所不同的是事务在溢出模式下的工作过程。
根据本发明的第二实施例,在预测事务溢出的同时,还推测该事 务将溢出多少次。
根据本发明的第二实施例,对于在非溢出模式下执行的事务,如 果该事务的该次执行因为溢出而异常终止,则预测单元除了预测该事 务的下一次执行将溢出之外,还预测该事务将连续溢出N次,从而预 测单元在随后N次对该事务的预测中预测该事务溢出,即该事务在随 后N次的执行都在溢出模式下,并且预测单元预测该事务随后的第 N+l次执行将不会溢出。优选地,通过采用指数递增策略来推测事务将溢出的次数N。例 如,假设预测单元当前预测一个事务要溢出N次。则该事务的接下来 的N次执行将处于溢出模式中。在该事务的这N次在溢出模式下的 执行之后,预测单元翻转(flip)预测位,即将该事务预测为不溢出。 但是,如果该事务的第N+l次执行(该次执行在非溢出模式下)再次 发生溢出,则预测单元将该事务的N加倍,即预测该事务将溢出2N 次。
有利地,根据本发明的第二实施例,如果事务在发生溢出的执行 的前一次执行是在非溢出模式下的执行,则预测单元将该事务将溢出
的次数预测为最小值Nmin;否则预测单元将该事务将溢出的次数预测 为上次预测的次数的两倍。优选地,事务将溢出的最大次数被设置为
Nmax。默认的最小值Nmin可以取值为l,当然也可以取其它2的幂或其 它整数。最大值Nmax的取值取决于图7中计数器702所能存储的数的 范围。比如,如果702有3个比特位,那么最大的值就是二进制IOO, 也就是十进制4。因为在优选实施例中Nmax必须是2的幂,所以最大 值不是二进制lll。计数器702本质上是一个寄存器,它包含多少个比 特位取决于具体实现。
图7示出了根据本发明第二实施例的查找表中一项的一个例子, 其中具有四个字段,计数器字段702替代了本发明第一实施例中的溢 出位字段。如果计数器字段702中的内容(即计数器)为0,则表示 相应事务被预测为不溢出,即预测该事务的下一次执行模式为非溢出 模式;相反,如果不为0,则表示相应事务被预测为溢出,即预测该 事务的下一次执行模式为溢出模式。每次当事务在溢出模式下执行 时,相应项中的计数器减l。指数字段703中的内容(即指数)表示 计数器的初始值。
在根据本发明的第二实施例中,最初,查找表中所有项为无效的。
当一个事务开始时,执行单元搜索查找表。
如果搜索未命中,则该事务的地址、例如事务起始指令的地址被 记录到查找表中某一项的地址字段701中。该项中的计数器字段702、指数字段703和保持位(stick bit)字段704的内容都被设置为0。于 是,该事务被预测为非溢出,并在非溢出模式下执行。当该事务结束 时,如果该事务实际上溢出了,则相应项中的计数器和指数被设置为 1,并且保持位被设置为0。
如果搜索结果为命中,并且计数器为0,则事务被预测为非溢出, 并且在非溢出模式下执行。其中,对于保持位为0的情形,如果事务 在结束时实际上溢出了,则相应的指数和计数器被设置为1,并且保 持位被保持为0;而如果事务在结束时实际上并未溢出,则相应项中 的内容保持不变。而对于保持位为l的情形,如果事务在结束时实际 上溢出了,则相应的指数加倍,计数器被设置为与指数相同的值,并 且保持位被设置为0;而如果事务在结束时实际上并未溢出,则相应 的指数和保持位被设置为0。
如果搜索结果为命中,并且计数器不为0,则事务被预测为溢出, 并且在溢出模式下执行。在该情形下,事务在溢出模式下执行一次, 相应的计数器就减1。如果计数器变为O,则相应的保持位被设置为1。
图8示出了 一个状态机,以说明根据本发明第二实施例的支持事 务存储的系统的查找表中一项中的计数器字段、指数字段和保持位字 段中内容的变化。其中括号中的三个数字依次表示一项中计数器字段 的内容、指数字段的内容和保持位字段的内容,例如(l, 1, O)表 示计数器为1,指数为1,而保持位为0。"不溢出,,表示相应事务在非 溢出模式下执行,并且不发生溢出。"溢出"表示相应事务在非溢出模 式下执行,并且发生溢出。"溢出模式下N次执行"表示相应事务已经 在溢出模式下执行了 N次。
在图8所示的示例中,最大指数值(即事务被预测将溢出的最大 次数N皿x)为4。但是,在实践中,最大指数值可以根据查找表中指 数字段的比特数任意设置。另外,在图8所示的示例中,事务被预测 将溢出的最小次数Nn^被设置为1。
图9示出了根据本发明第二实施例的基于预测的事务执行方法 的流程图。如图9所示,首先在步骤S901处对事务进行预测。在前面对第 二实施例的具体描述中,步骤S卯l读取查找表中所存储的执行模式 信息。在步骤S902中判断步骤S901的预测结果是否是溢出预测。如 果不是,则在步骤S907中,在非溢出模式下执行该事务。然后在步 骤S卯8中判断执行是否发生溢出。如果发生了溢出,则在步骤S909 中将该事务的执行模式信息修改为溢出预测,否则在步骤S910中将
该事务的执行模式保持为非溢出预测。
相反,如果在步骤S902中确定是溢出模式,则在步骤S903中 预测溢出次数N。然后在步骤S卯4中在溢出;f莫式下执行该事务,并 将预测的溢出次数N减1。然后,在步骤S905中判断N是否大于0, 以确定该事务的下一次执行是否还是在溢出模式下的执行。如果N大 于O,则返回S904,即该事务的下一次执行在溢出模式下执行。如果 N不大于O,则在步骤S906中将该事务的执行模式修改为非溢出模式。
有利地,在步骤S903中釆用指数递增策略来推测事务将溢出的 次数N。例如,假设预测单元当前预测一个事务要溢出N次。则该事 务的接下来的N次执行将处于溢出模式中。在该事务的这N次在溢 出模式下的执行之后,预测单元翻转(flip)预测位,即将该事务预 测为不溢出。但是,如果该事务的第N+l次执行(该次执行在非溢出 模式下)再次发生溢出,则预测单元将所预测的该事务将溢出的次数 N加倍,即预测该事务将溢出2N次。
虽然在前面的描述中,在每次事务执行之后记录该事务的下一次 执行模式信息,并在事务每次执行之前通过读取上一次执行结束后所 记录的执行模式信息来进行预测,但是也可以想到在每次事务执行之 后只记录该次执行的结束状态,而在事务每次执行之前读取上一次执 行结束后所记录的结束状态并根据所读取的结束状态预测该事务的 下一次执行模式。
另夕卜,在实施例一和二中都涉及到对预测单元所存储的预测信息 进行修改。上述描述中优选地釆用了通过执行单元对预测信息进行修 改的实现方法。但是本领域技术人员应该能够理解,对预测单元进行修改的操作也可以由其他部件完成,比如让专用緩存器来完成。物理 上,无论谁完成修改的操作,都是向预测单元发出事先定义的物理信 号,预测单元接收到上述信号后,按照本文实施例一和二中所述算法 对预测信息进行变更。
本领域技术人员将能够理解,可以采用任何软件或/和硬件的形 式,以及记录执行根据本发明的方法的程序的记录介质来实现本发明 的预测事务是否溢出的过程。
示例性实施例的描述是为了示例和描述的目的而提供的,而并不 是要穷举或限制到所公开形式的说明性实施例。4艮多修改和变形对于 本领域技术人员来说是显而易见的。选择和描述了实施例,以便更好 地解释示例性实施例的原理、实践应用,并使本领域的其他技术人员
能够理解示例性实施例的多种实施方式,其中可以想到适于特定使用 的各种变形。
虽然结合附图详细描述了本发明的实施例,但是对于本领域的技 术人员来说,仍可以对上述实施例作出各种修改和变更而不背离本发 明的实质和范围。因此,本发明的范围仅由所附权利要求书限定。
权利要求
1.一种支持事务存储的系统,包括预测单元,用于根据事务先前执行的执行结束状态预测所述事务的下一次执行模式;执行单元,用于在预测单元所预测的执行模式下执行所述事务,其中所述执行模式包括溢出模式和非溢出模式。
2. 根据权利要求1的支持事务存储的系统,其中对于在非溢出 模式下执行的事务,如果所述事务的所述执行发生了溢出,则预测单 元将所述事务的下一次执行模式预测为溢出模式,否则将所述事务的 下 一次执行模式预测为非溢出模式。
3. 根据权利要求2的支持事务存储的系统,还包括 事务写緩沖器,用于在执行单元在非溢出模式下执行事务的过程中临时存储所执行事务的推测性数据,并且用于在执行单元在溢出模 式下执行事务的过程中记录所执行事务的写操作的数据地址。
4. 根据权利要求3的支持事务存储的系统,其中对于在溢出模 式下执行的事务,如果在所述事务的所述执行中,事务写緩冲器足以 记录所述事务的所有写操作的数据地址,则预测单元将所述事务的下 一次执行模式预测为非溢出模式,否则预测单元将所述事务的下一次 执行模式预测为溢出模式。
5. 根据权利要求3或4的支持事务存储的系统,还包括 事务读緩冲器,用于在执行单元执行事务的过程中记录所执行事务的读操作的数据地址;其中对于在溢出模式下执行的事务,如果在所述事务的所述执行的过程中事务读緩冲器不足以记录所述事务的所有读操作的数据地址,则预测单元将所述事务的下一次执行模式预测为溢出模式。
6. 根据权利要求2的支持事务存储的系统,其中对于在非溢出 模式下执行的事务,如果所述事务的所述执行发生了溢出,则预测单 元还预测所述事务将在溢出模式下执行的次数N,并且在所述事务在 溢出模式下执行N次之后将所述事务的下一次执行模式预测为非溢 出模式。
7. 根据权利要求6的支持事务存储的系统,其中如果所述事务 在发生了溢出的执行的前一次执行是在非溢出模式下的执行,则预测 单元将所述事务将在溢出模式下执行的次数预测为最小值Nmin,最小 值N^为2的幂;而如果所述前一次执行是在溢出模式下的执行,则 预测单元将所述事务将在溢出模式下执行的次数预测为上次预测的 次数N的两倍。
8. 根据权利要求l的支持事务存储的系统,还包括 状态寄存器,用于存储执行单元所指示的执行模式; 存储单元,用于将数据写入高速緩存器或者写緩沖器; 加载单元,用于从高速緩存器或者事务写緩冲器读取数据; 数据流控制器,用于根据状态寄存器所存储的执行模式,控制存储单元或加载单元对数据的写入或读取。
9. 根据权利要求1的支持事务存储的系统,其中所述预测单元 包括查找表,用于存储标识事务的执行模式的信息,并且查找表中所存储的执行模式信息根据事务的执行结束状态而改变。
10. 根据权利要求9的支持事务存储的系统,其中如果执行单元 在所述查找表中没有查询到对应于待执行事务的执行模式的信息,则在查找表中创建对应于所述事务的执行模式的信息并将执行模式设 置为非溢出模式。
11. 一种基于预测的事务执行方法,包括 >预测步骤,用于根据事务先前执行的执行结束状态预测所述事务 的下一次执行模式;执行步骤,用于在预测步骤所预测的执行模式下执行事务,其中 所述执行模式包括溢出模式和非溢出模式。
12. 根据权利要求11的事务执行方法,其中所述预测步骤包括 如下步骤对于在非溢出模式下执行的事务,如果所述事务的所述执行发生 了溢出,则将所述事务的下一次执行模式预测为溢出模式,否则将所 述事务的下一次执行模式预测为非溢出模式。
13. 根据权利要求12的事务执行方法,其中所述执行步骤包括 在溢出模式下,用事务写緩沖器记录被执行的事务的写操作的数据地址。
14. 根据权利要求13的事务执行方法,其中所述预测步骤还包括对于在溢出模式下执行的事务,如果在所述事务的所述执行中, 事务写緩冲器足以记录所述事务的所有写操作的数据地址,则将所述 事务的下一次执行模式预测为非溢出模式,否则将所述事务的下一次 执行模式预测为溢出模式。
15. 根据权利要求13或14的事务执行方法,其中所述执行步骤 还包括使用事务读緩冲器记录事务的读操作的数据地址;并且所述预测步骤还包括对于在溢出模式下执行的事务,如果在所述事务的所述执行中, 事务读緩冲器不足以记录所述事务的所有读操作的数据地址,则将所 述事务的下一次执行模式预测为溢出模式。
16. 根据权利要求12的事务执行方法,其中所述预测步骤还包括对于在非溢出模式下执行的事务,如果所述事务的所述执行发生 了溢出,则还预测所述事务将在溢出模式下执行的次数N,并且在所 述事务在溢出模式下执行N次之后将所述事务的下一次执行模式预 测为非溢出模式。
17. 根据权利要求16的事务执行方法,其中如果所述事务在发 生了溢出的执行的前一次执行是在非溢出模式下的执行,则将所述事务将在溢出模式下执行的次数预测为最小值Nmin,最小值N^为2的幂;而如果所述前一次执行是在溢出模式下的执行,则将所述事务将 在溢出模式下执行的次数预测为上次预测的次数N的两倍。
18. 根据权利要求ll的事务执行方法,所述执行步骤还包括 存储执行模式信息;根据所存储的执行模式信息,执行事务的存储操作或加载操作。
19. 根据权利要求ll的事务执行方法,其中所述预测步骤包括使用查找表存储标识事务的执行模式的信息,以及 根据事务的执行结束状态改变查找表中所存储的执行模式信息。
20. 根据权利要求19的事务执行方法,其中如果在所述查找表 中没有查询到对应于待执行事务的执行模式信息,则在查找表中创建 对应于所述事务的执行模式信息并将执行模式设置为非溢出模式。
全文摘要
本发明提供了一种具有溢出预测机制的支持事务存储的系统,包括预测单元,用于根据事务先前执行的执行结束状态预测所述事务的下一次执行模式;执行单元,用于在预测单元所预测的执行模式下执行所述事务,其中所述执行模式包括溢出模式和非溢出模式。根据本发明,可以在事务执行之前预测事务是否将溢出,从而节省了为了判断溢出所必须执行的一次运行,并因此提高了性能。
文档编号G06F9/46GK101587447SQ200810109178
公开日2009年11月25日 申请日期2008年5月23日 优先权日2008年5月23日
发明者C·B·豪尔, 梁志勇, 沈晓卫, 王华勇, 王艳琦 申请人:国际商业机器公司