CN101510162A - 一种基于延时策略的软件事务内存的实现方法 - Google Patents
一种基于延时策略的软件事务内存的实现方法 Download PDFInfo
- 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
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,等待提交。
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)
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)
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 | マルチプロセッサ装置 |
-
2009
- 2009-03-26 CN CN2009100969599A patent/CN101510162B/zh not_active Expired - Fee Related
Cited By (14)
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 |