基于辅助线程实现事务存储系统的方法和装置制造方法及图纸

技术编号:3767283 阅读:277 留言:0更新日期:2012-04-11 18:40
一种在支持同时多线程的处理器中执行事务的方法,包括:建立用于执行事务的主软件线程和用于执行屏障功能的辅助软件线程,利用多个硬件线程执行主软件线程和辅助软件线程;执行主软件线程;如果主软件线程遇到需要读取/写入数据的事务加载/存储操作,则判断是否需要执行屏障功能;如果需要执行屏障功能,则执行以下步骤:停止主软件线程;激活辅助软件线程以执行屏障功能;在辅助软件线程执行屏障功能完成之后,退出辅助软件线程;以及继续执行主软件线程。由此,本发明专利技术利用多个硬件线程实现屏障功能,从而避免了重新编译过程中带来的麻烦,并且保证了在数据访问过程中对冲突的检测。

【技术实现步骤摘要】

本专利技术涉及事务存储系统,更具体地,涉及基于辅助线程实现事务存储系统的方法和装置
技术介绍
事务(transaction)是一个在计算机领域中被广泛使用的概念。 一个事务通常是 指多条指令以看似原子的方式执行,在执行期间没有其他操作介于其中。例如,如果一个事 务访问了某个存储器地址上的数据,则直到该事务结束,该地址上的数据不应该被该事务 以外的操作修改。 事务可以直接在硬件层面实现,比如修改处理器体系结构。从体系结构级别上 支持事务的硬件组件称为硬件事务存储器(HardwareTransactional Memory,简称HTM) 系统。利用纯软件实现的事务存储器称为软件事务存储器(Software Transactional Memory,简称STM)。下文中的TM泛指所有的事务存储器系统。采用事务存储器系统,在编 写并行程序时程序员无需使用锁,因此可以提高软件生产效率。 事务访问的所有数据(推测性数据)将被临时地存储在一事务缓冲器中,而不是 写入到存储器中。如果两个事务访问相同的地址,并且其中至少一个修改该地址上的数据, 则其中一个事务必须回滚(roll back)并重新执行,而另一个事务继续。这种情况被称为 冲突(conflict)。如果没有冲突,事务结束时临时存储的数据将被写入到存储器。该操作 称为提交(commit)。 如上所述,在事务访问数据时,目前TM的一种实现是通过编译器在每个需要访问 数据的事务加载/存储指令之前增加屏障(barrier)。这种屏障的作用在于通过检查锁定 表来检测是否存在冲突,在锁定表中记录有事务要访问的每个存储器块的许可。在使用屏 障功能的情况下意味着,需要对事务的源代码重新编译,以在编译期间加入这些屏障。但 是第三方提供的函数库一般不包含源代码,因此程序员不能在事务中调用这些库函数。实 际上,很多库中的函数相对于事务来说是安全的,例如C库中的"strcmp "和math库中的 "sqrt"。也就是说,即使那些函数不包含不可恢复的操作,程序员也不能够调用那些函数。 所以,这种禁止程序员在事务执行期间调用那些函数的情况明显降低了生产率。
技术实现思路
因此,根据本专利技术的一个方面,提供了一种在支持同时多个硬件线程的处理器中 执行事务的方法,包括以下步骤建立用于执行事务的主软件线程和用于执行屏障功能的 辅助软件线程,利用所述多个硬件线程执行所述主软件线程和所述辅助软件线程;执行所 述主软件线程;如果所述主软件线程遇到需要读取/写入数据的事务加载/存储操作,则判 断是否需要执行屏障功能;如果需要执行屏障功能,则执行以下步骤停止所述主软件线 程;激活所述辅助软件线程以执行所述屏障功能;在所述辅助软件线程执行所述屏障功能 完成之后,退出所述辅助软件线程;以及继续执行所述主软件线程。由此,本专利技术利用多个硬件线程实现屏障功能,从而避免了重新编译过程中带来的麻烦,并且保证了在数据访问 过程中对冲突的检测。 优选地,在所述多个硬件线程的每个硬件线程中还包括写签名和读签名,用于存 储所述主软件线程曾经读取/写入的数据的物理地址。如果要读取/写入的数据没有命中 高速缓存,并且要写入的数据没有命中至少一个写签名或者要读取的数据没有命中至少一 个读签名或写签名,则需要执行所述屏障功能。由此,签名的使用可以简化对冲突的判断, 而无需每次都查询锁定表,可以提高判断的效率。 优选地,所述主软件线程利用共享寄存器与所述辅助软件线程进行通信。所述共 享寄存器包括事务地址寄存器,即TAR,用于保存读取/写入的数据的物理地址;事务数据 寄存器,即TDR,用于保存来自高速缓存中的高速缓存行的数据;事务运行寄存器,即T0R, 用于保存事务操作代码;以及事务ID寄存器,即TIR,用于保存设置TOR的硬件线程ID。所 述主软件线程利用共享寄存器与所述辅助软件线程进行通信的步骤包括将要读取/写入 数据的物理地址复制到TAR ;在要写入时将要写入的数据复制到TDR ;将硬件线程ID复制 到TIR ;以及根据要读取/写入的状态对应地设置TOR的状态。由此,可以实现多个硬件线 程之间的高速通信。 优选地,所述辅助软件线程通过检索锁定表来检测冲突。其中所述锁定表存储在 存储器中。如果检测到冲突,则所述辅助软件线程根据管理策略中止发生冲突的事务。如 果没有检测到冲突,则所述辅助软件线程执行以下步骤在要读取数据时,如果所述主软件 线程具有要读取数据的物理地址的读取许可,则所述辅助软件线程不执行任何处理;如果 所述主软件线程具有要读取数据的物理地址的写入许可,则所述辅助软件线程将所述锁定 表中的数据和硬件线程ID写入高速缓存行中;以及如果所述辅助软件线程没有在所述锁 定表中找到与要读取数据的物理地址对应的项目,则在所述锁定表中插入新的项目,以表 示所述主软件线程具有读取许可;在要写入数据时,如果所述主软件线程具有要写入数据 的物理地址的读取许可,则所述辅助软件线程将所述读取许可升级为写入许可,然后所述 辅助软件线程通过正常加载操作从TAR读取与物理地址对应的存储器块中的数据,并在对 应的锁定表的项目中记录所读取的数据,从而进行更新;如果所述主软件线程具有要写入 数据的物理地址的写入许可,则所述辅助软件线程将对应数据从TDR写入对应的锁定表的 项目中;以及如果所述辅助软件线程在所述锁定表中没有找到与要写入数据的物理地址对 应的项目,则向所述锁定表插入新的项目,以表示所述主软件线程具有写入许可。由此,可 以实现在存在冲突和不存在冲突两个情况下的对事务进行的处理,以及对锁定表的项目的 处理,从而提高利用多个硬件线程进行冲突判断的事务处理的效率。 根据本专利技术的另一个方面,提供了一种执行事务的系统,包括支持同时多个硬件 线程的至少一个处理器,其中利用所述多个硬件线程执行用于执行事务的主软件线程和用 于执行屏障功能的辅助软件线程;以及所述至少一个处理器能够访问的高速缓存;其中, 所述至少一个处理器被配置为执行所述主软件线程;如果所述主软件线程遇到需要读取 /写入数据的事务加载/存储操作,则判断是否需要执行屏障功能;如果需要执行屏障功 能,则执行以下步骤停止所述主软件线程;激活所述辅助软件线程以执行所述屏障功能; 在所述辅助软件线程执行所述屏障功能完成之后,退出所述辅助软件线程;以及继续执行 所述主软件线程。附图说明 为了使本专利技术的优点容易理解,将参考由附图示出的特定实施例来对上述简要描 述的本专利技术进行更详细的说明。可以理解的是这些附图仅仅对本专利技术的一般实施例进行描 述,不能因此而认为它们对本专利技术的范围进行限制,通过使用下列附图对本专利技术的特征及 细节进行描述及解释 图1示出本专利技术的简单系统结构。图2示出本专利技术的软件实现过程。图3示出主线程和辅助线程的实际执行程序图。 图4示出判断是否需要执行屏障功能的具体判断过程。 图5示出主线程和辅助线程的具体通信过程。 图6示出多个核心和多个线程的情况实例。具体实施例方式早期IBM提出 一 种尽力而为的事务(BET)方案(如美国专利申请 No. 2006/0288173),这种BET可以在现有的多处理器系统(例如对称多处理器(SMP)系 统)中实现,并具有较低的成本。在这种BET系统中,使本文档来自技高网
...

【技术保护点】
一种在支持同时多个硬件线程的处理器中执行事务的方法,包括以下步骤:建立用于执行事务的主软件线程和用于执行屏障功能的辅助软件线程,利用所述多个硬件线程执行所述主软件线程和所述辅助软件线程;执行所述主软件线程;如果所述主软件线程遇到需要读取/写入数据的事务加载/存储操作,则判断是否需要执行屏障功能;如果需要执行屏障功能,则:停止所述主软件线程;激活所述辅助软件线程以执行所述屏障功能;响应于所述辅助软件线程执行所述屏障功能完成,退出所述辅助软件线程;以及继续执行所述主软件线程。

【技术特征摘要】

【专利技术属性】
技术研发人员:王华勇
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

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

1