CN101510162A - 一种基于延时策略的软件事务内存的实现方法 - Google Patents

一种基于延时策略的软件事务内存的实现方法 Download PDF

Info

Publication number
CN101510162A
CN101510162A CNA2009100969599A CN200910096959A CN101510162A CN 101510162 A CN101510162 A CN 101510162A CN A2009100969599 A CNA2009100969599 A CN A2009100969599A CN 200910096959 A CN200910096959 A CN 200910096959A CN 101510162 A CN101510162 A CN 101510162A
Authority
CN
China
Prior art keywords
affairs
time
conflict
write operation
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2009100969599A
Other languages
English (en)
Other versions
CN101510162B (zh
Inventor
陈天洲
马建良
曹满
乔福明
章铁飞
项凌翔
王春昊
刘敬伟
陈剑
缪良华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN2009100969599A priority Critical patent/CN101510162B/zh
Publication of CN101510162A publication Critical patent/CN101510162A/zh
Application granted granted Critical
Publication of CN101510162B publication Critical patent/CN101510162B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及基于多处理器系统软件事物内存的实现技术,旨在提供一种基于延时策略的软件事务内存的实现方法。该方法包括以下步骤:事务创建、事务冲突产生、事务冲突延时仲裁、事务提交或者终止。本发明采用延时策略来仲裁事务间发生冲突时的情况。这样的冲突仲裁策略简单高效,有效地缓解了由于仲裁策略不当而造成的效率低下,提高了软件事物内存系统的性能。

Description

一种基于延时策略的软件事务内存的实现方法
技术领域
本发明涉及基于多处理器系统软件事物内存的实现技术,特别是涉及一种基于延时策略的软件事务内存的实现方法。
背景技术
在并行计算的多线程编程模型中,不可避免地会引入如何保证共享数据同步的问题。当前,锁机制是实现对共享数据互斥访问较常用的方法。使用锁机制的过程一般是这样的:程序员首先正确地识别出算法中的并行性,然后编写代码将独立的任务分配到并行机上,通常是一个处理器上运行一个线程。对于必须要顺序执行的任务,比如对共享资源的更新操作,程序员必须使用同步机制来协调线程间的执行顺序。这时,程序员就使用互斥锁来创建临界区,保证在某个时刻只允许一个线程进入访问共享资源。为了保证始终能互斥访问共享数据结构,程序员必须使用锁来协调临界区内的数据访问。但是锁会带来很多额外的问题,使程序设计变得复杂而费时。主要的问题有:死锁、护航、优先级反转。
由于这些问题的存在,基于锁的并行编程对于一般的程序员来说并不是一个很好的选择,特别是随着多核时代的到来。
同时,研究人员也在不断寻找代替锁策略的更先进、更高效的方案。其中最有前途、最热门的当属事务内存。在事务内存模型中,程序员将多条访问共享内存的语句组成一个事务,同基于锁的临界区一样,事务内对数据的更新从其他事务看来是瞬间发生的。但是,跟基于锁的代码不同的是,事务内存的原子性不是通过互斥来保证的,而是通过乐观的并行执行并在发生非线性操作时执行回滚操作的方式来保证原子性。因此,事务内存只在事务发生冲突时使用相应的冲突仲裁策略来同步并行操作。目前,事务内存可以从硬件和软件加以实现。
硬件事务内存虽然提供了良好的性能,但是却缺乏一般性。而软件事务内存通过软件的方式实现事务内存机制,不需要额外的硬件支持,所有的机制全是通过软件实现的。软件事务内存提供了更好的适应性和普遍性。软件事务内存可以很容易地适用于不同的任务量。同时,软件事务内存能在增加复杂度的情况下提供对无界事务的支持,因为,软件不会受到数据cache大小和其他片上资源的限制。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种基于延时策略的软件事务内存的实现方法。
本发明解决其技术问题采用的技术方案如下:
1)事务创建
软件事务的执行过程包括:创建事务、进行读写操作、检测冲突、等待提交和提交;
本方法为软件事务提供了四个状态:Active,Aborted,Committing和Committed,分别表示事务正在运行,事务已经终止,软件事务已经完成对对象的操作等待提交和事务已经提交成功;
在程序执行过程中碰到需要对一个对象进行读写操作时事务被创建,事务是一串连续的对同一个对象进行操作的指令集合;在事务Si中,用Si表示创建事务i时的系统时间,作为事务i的开始时间;用flag表示事务i是否有读写操作,如果有,则flag为真,如果没有,则flag为假;
2)事务冲突产生
在事务进行读写操作时,有两种情况会导致软件事务间的冲突:
a.一事务进行读操作,在获取数据的过程中,发现有其他事务已经在写该数据;
b.一事务进行写操作,在获取数据的过程中,发现有其他事务已经在读或写该数据;
3)事务冲突延时仲裁
在事务i和j发生冲突时,采用延迟策略进行仲裁,仲裁方式如下:
a.当Si<Sj或者Si=Sj时,延迟策略就将j事务终止;
b.当Si>Sj时,延迟策略就让事务i等待一定的时间,在指定的时间T过后,去读取事务j的状态,如果事务j的状态是Committed,表明事务j已经提交了,这时冲突在没有中止任何事务的情况下得到了解决;如果事务j的状态是Active,则将事务j的标记字段flag设置为False,事务再等待相同的时间T,如果在这段时间内,事务j进行了读写操作,则将事务j的flag标记字段设置为True,在T时间过后,如果事务j的状态仍然为Active而且flag仍然为False,说明这段时间内事务j没有读写操作,这样的话,延迟策略将事务j终止;否则,事务i自己终止;
4)事务提交或者终止
事务i和j的冲突经过延迟策略仲裁以后,事务i和j中将有一个事务被终止,另外一个事务继续执行,具体情况分为两种,分别如下:
a.事务i终止,则把事务i的状态置为aborted;
b.事务j终止,事务i继续执行;
如果事务i又和另外一个事务k冲突,则再次进行事务冲突延时仲裁;
如果事务i读写操作已经完成,则把事务i的状态置为committing,等待提交;
本发明与背景技术相比,具有的有益的效果是:
本发明采用延时策略来仲裁事务间发生冲突时的情况。这样的冲突仲裁策略简单高效,有效地缓解了由于仲裁策略不当而造成的效率低下,提高了软件事物内存系统的性能。
附图说明
图1是软件事务的执行过程示意图;
图2是软件事务的状态转化示意图;
图3是冲突事务的实例示意图;
图4是当Si<Sj或者Si=Sj时延时策略的示意图;
图5是当Si>Sj时延时策略的示意图。
具体实施方式
在实施基于延时策略的软件事务内存的实现方法时,具体方式如下:
1)事务创建
软件事务的执行过程包括:创建事务、进行读写操作、检测冲突、等待提交和提交,整个过程如图1所示;
本方法为软件事务提供了四个状态:Active,Aborted,Committing和Committed,分别表示事务正在运行,事务已经终止,软件事务已经完成对对象的操作等待提交和事务已经提交成功,如图2所示;
在程序执行过程中碰到需要对一个对象进行读写操作时事务被创建,事务是一串连续的对同一个对象进行操作的指令集合;在事务i中,用j表示创建事务i时的系统时间,作为事务i的开始时间;用flag表示事务i是否有读写操作,如果有,则flag为真,如果没有,则flag为假;
以Java程序为例,在对链表List进行操作时产生两个事务,事务1和事务2(如图3所示)。事务2先于事务1创建,即S1>S2,事务1和事务2的flag字段的初始值都为假,表示事务开始时都还未进行读写操作。等待时间T设置为1ms。
2)事务冲突产生
在事务进行读写操作时,有两种情况会导致软件事务间的冲突:
a.本事务进行读操作,在获取数据的过程中,发现有其他事务已经在写该数据;
b.本事务进行写操作,在获取数据的过程中,发现有其他事务已经在读或写该数据。
以事务1和事务2为例,事务1和事务2开始各自运行,事务2对List进行List.find(c)读操作,把事务2的flag字段置为True,当事务1试图对链表List进行List.insert(a)操作时发现事务2已经对链表List进行了读操作,这时就产生了冲突。
3)事务冲突延时仲裁
在事务i和j发生冲突时,采用延迟策略进行仲裁,仲裁方式如下:
a.当Si<Sj或者Si=Sj时,延迟策略就将与j事务终止,如图4所示;
b.当Si>Sj时,延迟策略就让事务i等待一定的时间,在指定的时间T过后,去读取事务j的状态,如果事务j的状态是Committed,表明事务j已经提交了,这时冲突在没有中止任何事务的情况下得到了解决;如果事务j的状态是Active,则将事务j的标记字段flag设置为False,事务再等待相同的时间T,如果在这段时间内,事务j进行了读写操作,则将事务j的flag标记字段设置为True,在T时间过后,如果事务j的状态仍然为Active而且flag仍然为False,说明这段时间内事务j没有读写操作,这样的话,延迟策略将事务j终止;否则,事务ji己终止,如图5所示。
以事务1和事务2为例,因为S1>S2,所以事务1就等待1ms,再去看事务2的状态,发现事务2还是Active,就把事务2的标记字段flag置为False,事务1再等1ms,因为事务2之后对链表List不再有任何操作,所以事务2的flag字段仍然为Flase,因此把事务2终止,事务1继续执行。
4)事务提交或者终止
事务i和j的冲突经过延迟策略仲裁以后,事务i和j中一个事务终止,另外一个事务继续执行
a.事务i终止,则把事务i的状态置为aborted;
b.事务j终止,事务i继续执行
如果事务i又和另外一个事务k冲突,则回到3),再调用事务冲突延时仲裁;
如果事务i读写操作已经完成,则把事务i的状态置为committing,等待提交。
以事务1和事务2为例,事务1继续执行,事务2终止,事务1之后没有再和其他任何事务冲突,那么事务1执行完毕后状态置为committing,等待提交。
最后,还需要注意的是,以上公布的仅是本发明的具体实施例。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。

Claims (1)

1.一种基于延时策略的软件事务内存的实现方法,包括以下步骤:
1)事务创建
为软件事务提供四个状态:Active,Aborted,Committing和Committed,分别表示事务正在运行、事务已经终止、软件事务已经完成对对象的操作等待提交、事务已经提交成功;
在程序执行过程中碰到需要对一个对象进行读写操作时事务被创建,事务是一串连续的对同一个对象进行操作的指令集合;在事务Si中,用Si表示创建事务i时的系统时间,作为事务i的开始时间;用flag表示事务i是否有读写操作,如果有,则flag为真,如果没有,则flag为假;
2)事务冲突产生
在事务进行读写操作时,有两种情况会导致软件事务间的冲突:
a.一事务进行读操作,在获取数据的过程中,发现有其他事务已经在写该数据;
b.一事务进行写操作,在获取数据的过程中,发现有其他事务已经在读或写该数据;
3)事务冲突延时仲裁
在事务i和j发生冲突时,采用延迟策略进行仲裁,仲裁方式如下:
a.当Si<Sj或者Si=Sj时,延迟策略就将j事务终止;
b.当Si>Sj时,延迟策略就让事务i等待一定的时间,在指定的时间T过后,去读取事务j的状态;如果事务j的状态是Committed,表明事务j已经提交了,这时冲突在没有中止任何事务的情况下得到了解决;如果事务j的状态是Active,则将事务j的标记字段flag设置为False,事务再等待相同的时间T,如果在这段时间内,事务j进行了读写操作,则将事务j的flag标记字段设置为True;在T时间过后,如果事务j的状态仍然为Active而且flag仍然为False,说明这段时间内事务j没有读写操作,这样的话,延迟策略将事务j终止;否则,事务i自己终止;
4)事务提交或者终止
事务i和j的冲突经过延迟策略仲裁以后,事务i和j中将有一个事务被终止,另外一个事务继续执行,具体情况分为两种,分别如下:
a.事务i终止,则把事务i的状态置为aborted;
b.事务j终止,事务i继续执行;
如果事务i又和另外一个事务k冲突,则再次进行事务冲突延时仲裁;
如果事务i读写操作已经完成,则把事务i的状态置为committing,等待提交。
CN2009100969599A 2009-03-26 2009-03-26 一种基于延时策略的软件事务内存的实现方法 Expired - Fee Related CN101510162B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100969599A CN101510162B (zh) 2009-03-26 2009-03-26 一种基于延时策略的软件事务内存的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100969599A CN101510162B (zh) 2009-03-26 2009-03-26 一种基于延时策略的软件事务内存的实现方法

Publications (2)

Publication Number Publication Date
CN101510162A true CN101510162A (zh) 2009-08-19
CN101510162B CN101510162B (zh) 2011-11-02

Family

ID=41002566

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100969599A Expired - Fee Related CN101510162B (zh) 2009-03-26 2009-03-26 一种基于延时策略的软件事务内存的实现方法

Country Status (1)

Country Link
CN (1) CN101510162B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102012992A (zh) * 2010-11-19 2011-04-13 奇智软件(北京)有限公司 一种实时防护文件的监控方法及装置
CN102289393A (zh) * 2010-06-21 2011-12-21 微软公司 软件事务存储器中的锁的组成
CN102521028A (zh) * 2011-12-02 2012-06-27 华中科技大学 一种分布式环境下的事务内存系统
CN102929711A (zh) * 2012-09-24 2013-02-13 浙江大学 一种软件实时事务内存的实现方法
CN103631831A (zh) * 2012-08-29 2014-03-12 阿里巴巴集团控股有限公司 一种数据备份方法及装置
CN104487946A (zh) * 2011-10-14 2015-04-01 英特尔公司 用于事务存储器系统中的自适应线程调度的方法、设备和系统
US9411634B2 (en) 2010-06-21 2016-08-09 Microsoft Technology Licensing, Llc Action framework in software transactional memory
CN107003894A (zh) * 2014-12-23 2017-08-01 英特尔公司 用于硬件事务内存程序的剖析器的装置和方法
CN107851037A (zh) * 2015-07-22 2018-03-27 华为技术有限公司 在使用带锁定和未锁定的非易失存储器的共享存储器中的硬件事务存储的一致性协议

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4480427B2 (ja) * 2004-03-12 2010-06-16 パナソニック株式会社 リソース管理装置
JP2009026136A (ja) * 2007-07-20 2009-02-05 Nec Electronics Corp マルチプロセッサ装置

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9411634B2 (en) 2010-06-21 2016-08-09 Microsoft Technology Licensing, Llc Action framework in software transactional memory
CN102289393A (zh) * 2010-06-21 2011-12-21 微软公司 软件事务存储器中的锁的组成
CN102012992B (zh) * 2010-11-19 2012-11-21 奇智软件(北京)有限公司 一种实时防护文件的监控方法及装置
CN102012992A (zh) * 2010-11-19 2011-04-13 奇智软件(北京)有限公司 一种实时防护文件的监控方法及装置
CN104487946B (zh) * 2011-10-14 2018-09-18 英特尔公司 用于事务存储器系统中的自适应线程调度的方法和设备
CN104487946A (zh) * 2011-10-14 2015-04-01 英特尔公司 用于事务存储器系统中的自适应线程调度的方法、设备和系统
CN102521028A (zh) * 2011-12-02 2012-06-27 华中科技大学 一种分布式环境下的事务内存系统
CN102521028B (zh) * 2011-12-02 2013-07-24 华中科技大学 一种分布式环境下的事务内存系统
CN103631831A (zh) * 2012-08-29 2014-03-12 阿里巴巴集团控股有限公司 一种数据备份方法及装置
CN103631831B (zh) * 2012-08-29 2016-12-21 阿里巴巴集团控股有限公司 一种数据备份方法及装置
CN102929711A (zh) * 2012-09-24 2013-02-13 浙江大学 一种软件实时事务内存的实现方法
CN107003894A (zh) * 2014-12-23 2017-08-01 英特尔公司 用于硬件事务内存程序的剖析器的装置和方法
CN107851037A (zh) * 2015-07-22 2018-03-27 华为技术有限公司 在使用带锁定和未锁定的非易失存储器的共享存储器中的硬件事务存储的一致性协议
US11614959B2 (en) 2015-07-22 2023-03-28 Huawei Technologies Co., Ltd. Coherence protocol for hardware transactional memory in shared memory using non volatile memory with log and no lock

Also Published As

Publication number Publication date
CN101510162B (zh) 2011-11-02

Similar Documents

Publication Publication Date Title
CN101510162B (zh) 一种基于延时策略的软件事务内存的实现方法
US9367363B2 (en) System and method for integrating best effort hardware mechanisms for supporting transactional memory
US9569254B2 (en) Automatic checkpointing and partial rollback in software transaction memory
US7945741B2 (en) Reservation required transactions
US20110209155A1 (en) Speculative thread execution with hardware transactional memory
US9037554B2 (en) Bloom bounders for improved computer system performance
US9069790B2 (en) Multi-threaded message passing journal
CN103279428B (zh) 一种显式的面向流应用的多核Cache一致性主动管理方法
CN103995691B (zh) 基于事务的服务状态一致性维护方法
US9652168B2 (en) Adaptive concurrency control using hardware transactional memory and locking mechanism
CN110704112B (zh) 在区块链中并发执行交易的方法和装置
US11029995B2 (en) Hardware transactional memory-assisted flat combining
Guerraoui et al. On obstruction-free transactions
Gramoli et al. On the input acceptance of transactional memory
CN102929711B (zh) 一种软件实时事务内存的实现方法
Wojciechowski et al. Model-driven comparison of state-machine-based and deferred-update replication schemes
CN102446226A (zh) 一种实现NoSQL的键值存储引擎的方法
US8214560B2 (en) Communications support in a transactional memory
CN101556597A (zh) 一种自适应乐观并发控制方法
CN109901913B (zh) 一种可控重复执行次数的多线程事务存储编程模型方法
CN111858626A (zh) 一种基于并行执行的数据同步的方法和装置
Shanker et al. Some performance issues in distributed real time database systems
Schneider et al. Bounds on contention management algorithms
CN111367625A (zh) 一种线程的唤醒方法及装置,存储介质和电子设备
Cores et al. Achieving checkpointing global consistency through a hybrid compile time and runtime protocol

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20111102

Termination date: 20120326