CN101908000B - 一种硬件型事务存储系统中事务线程的阻塞唤醒方法 - Google Patents
一种硬件型事务存储系统中事务线程的阻塞唤醒方法 Download PDFInfo
- Publication number
- CN101908000B CN101908000B CN201010220900A CN201010220900A CN101908000B CN 101908000 B CN101908000 B CN 101908000B CN 201010220900 A CN201010220900 A CN 201010220900A CN 201010220900 A CN201010220900 A CN 201010220900A CN 101908000 B CN101908000 B CN 101908000B
- Authority
- CN
- China
- Prior art keywords
- affairs
- thread
- identifier
- transaction
- register
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
Abstract
本发明公开了一种硬件型事务存储系统中事务线程的阻塞唤醒方法,该方法在事务支持硬件中增加一个事务线程寄存器,在该寄存器中记录当前执行的事务线程的标识符;然后当阻塞的事务线程被重新调度执行,如果与寄存器中的线程标识符相同,则该事务继续进行提交操作;如果与寄存器中的线程标识符不同,则清除当前事务现场,并让事务重新执行。本发明的方法解除了硬件型事务存储系统中事务必须在一个时间片内执行完毕的限制,解决了事务缓冲区难以迁移的问题,优化了硬件型事务存储系统中的事务的高效执行。
Description
技术领域
本发明涉及一种属于计算机系统结构中的多线程并行编程手段,特别涉及一种硬件型事务存储系统中事务线程的阻塞唤醒方法。
背景技术
当前,随着工艺和应用模式的发展,无论是高端还是低端、通用式还是嵌入式,传统的采用指令级并行的微处理器系统结构正在由单线程向多线程、单处理器向多处理器、单核向多核进行发展。与此同时,人们应用中大规模数据处理的需求也在与日俱增。如何建立一个有效的编程模型使得并行程序可以充分利用这些CPU和核,发挥多核处理器的资源优势,从根本上提高并行程序运行性能、满足人们的计算需求,是摆在研究人员面前一个急需解决的难题。现在人们编写并行程序的主要方法是多线程,硬件或软件的并行化也是朝着挖掘更多可以并行的线程的方向发展。传统的并行程序设计方法需要程序员来维护各个进程之间的同步,随着进程数目的增加以及共享资源的增多,手工维护这种同步越来越困难。在CMP/SMP结构上采用由用户显式制导的并行程序设计模型,使用锁和同步变量来实现同步的方法存在很大的局限性。粗粒度锁不易开发并行性,细粒度锁会带来较大的额外系统开销;同时锁机制会导致死锁、优先权倒置、编程困难等种种问题。
事务存储(Transactional Memory,TM)模型提供了一种在CMP/SMP结构上程序并行执行和同步的方法,能够解决锁机制带来的种种问题,提高程序的并发性。事务存储模型使得程序在发生数据冲突时才串行化执行,最大限度地挖掘程序中潜在的并行性,极大地提高了多线程编程的正确性和效率,使得程序员可以集中精力于多核程序的设计。目前有大量的研究工作已经或正致力于硬件支持的事务存储模型(Hardware Transactional Memory,HTM)的研究,充分显示出该方案可能被未来主流CMP结构采纳的巨大潜力。
对于HTM系统来说,当一个事务的执行时间过长,超过一个时间片的限制时,事务线程会先被阻塞,等到分配到新的时间片,事务可能被迁移到另外的处理器核上继续执行。但是事务缓冲区存在难以迁移的特点,所以被唤醒的事务无法在新的处理器核上恢复事务现场,容易导致事务频繁重启。对于这个问题,目前已有的硬件型事务存储系统结构采取将事务限定在一个时间片内执行完毕的办法,但是无法实质上解决事务迁移的问题,反而限制了事务的灵活性。因此,针对事务迁移问题,设计一种有效的阻塞唤醒方法是有十分重要的。
发明内容
本发明的目的是提供一种硬件型事务存储系统中事务线程的阻塞唤醒方法,该方法解除了硬件型事务存储系统中事务必须在一个时间片内执行完毕的限制,解决了事务缓冲区难以迁移的问题,优化了硬件型事务存储系统中的事务的高效执行。
本发明的一种硬件型事务存储系统中事务线程的阻塞唤醒方法,该方法解除了硬件型事务存储系统中事务必须在一个时间片内执行完毕的限制,具体实现步骤为:
第一步:唤醒事务线程
(A)当处理器开始执行事务时,一方面事务线程寄存器记录下当前所执行的事务线程的标识符;
(B)另一方面在事务缓冲区的读/写标志位中记录下当前所执行的事务的数据;
(C)若事务线程的执行时间超过一个时间片,则阻塞该线程;
(D)若事务线程的执行时间未超过一个时间片,则查看事务是否执行完成,若未完成,继续执行当前事务;
(E)当事务被执行完成后则进行事务提交;
(F)对于阻塞的线程需要依据时间片轮转调度机制来决定唤醒事务线程;
所述的时间片轮转调度机制是:当线程用完它的时间片后,它将被转移到就绪线程队列的末尾,直到排在它之前的所有线程全部执行完毕或者时间片用完时,操作系统才将其唤醒;
第二步:被唤醒的事务线程检查事务现场
(A)当事务线程被唤醒时,根据事务线程寄存器中的线程标识符能够得到当前处理器核内正在执行的事务线程,进而根据事务现场判断条件来判断事务现场是否被破坏;
(B)若是,则对事务现场已被破坏的事务,清除事务缓冲区内的全部数据,并重新启动事务;
(C)若否,则对事务继续执行并提交;
所述的事务现场是指事务缓冲区内保存的事务的读、写数据;
所述的事务现场判断条件是:如果事务线程寄存器中的线程标识符等于被唤醒事务线程的标识符,则事务缓冲区内保存的是该事务的读、写数据,事务现场未被破坏;如果事务线程寄存器中的线程标识符不等于被唤醒的事务线程的标识符,则事务缓冲区内保存的是脏数据,事务现场已被破坏。
本发明阻塞唤醒的优点在于:
①本发明基于现有的多核处理器结构,只需在每个处理器核内增加少量硬件即可支持事务执行,这些硬件包括一个事务缓冲区和一个事务线程寄存器。
②本发明只需在处理器核内增加少量硬件即可支持事务执行,这些硬件型事务存储系统包括一个事务缓冲区和一个事务线程寄存器。本发明的方法解除了硬件型事务存储系统中事务必须在一个时间片内执行完毕的限制,解决了事务缓冲区难以迁移的问题,优化了硬件型事务存储系统中的事务的高效执行。
附图说明
图1是本发明硬件型事务存储系统中事务线程的阻塞唤醒方法的流程图。
图2是本发明硬件型事务存储系统的结构图。
图3是未采用本发明方法的事务存储系统在不同处理器个数下的加速比图。
图4是采用本发明方法的事务存储系统在不同处理器个数下的加速比图。
图5是未采用本发明方法的事务存储系统在不同处理器个数下的启动事务个数与提交事务个数之比。
图6是采用本发明方法的事务存储系统在不同处理器个数下的启动事务个数与提交事务个数之比。
具体实施方式
下面将结合附图和实施例对本发明做进一步的详细说明。
参见图1所示,本发明是一种硬件型事务存储系统中事务线程的阻塞唤醒方法,该方法是这样实现的:
第一步:唤醒事务线程
(A)当处理器开始执行事务时,一方面事务线程寄存器(TTR)记录下当前所执行的事务线程的标识符activeTID;
(B)另一方面在事务缓冲区(TC)的读/写标志位中记录下当前所执行的事务的数据;
(C)若事务线程的执行时间超过一个时间片(是),则阻塞该线程;
(D)若事务线程的执行时间未超过一个时间片(否),则查看事务是否执行完成,若未完成(否),继续执行当前事务;
(E)当事务执行完成(是)则进行事务提交;
(F)对于阻塞的线程依据时间片轮转调度机制(TCSM)来决定唤醒事务线程;
所述的时间片轮转调度机制(TCSM)是:当线程用完它的时间片后,它将被转移到就绪线程队列的末尾,直到排在它之前的所有线程全部执行完毕或者时间片用完时,操作系统才将其唤醒;
第二步:被唤醒的事务线程检查事务现场
(A)当事务线程被唤醒时,根据TTR中的线程标识符能够得到当前处理器核内正在执行的事务线程,进而根据事务现场判断条件来判断事务现场是否被破坏;
(B)若是,则对事务现场已被破坏的事务,清除事务缓冲区TC内的全部数据,并重新启动事务;
(C)若否,则对事务继续执行并提交;
所述的事务现场是指事务缓冲区内保存的事务的读、写数据;
所述的事务现场判断条件是:如果TTR中的线程标识符等于被唤醒事务线程的标识符,则TC内保存的是该事务的读、写数据,事务现场未被破坏;如果TTR中的线程标识符不等于被唤醒的事务线程的标识符,则TC内保存的是脏数据,事务现场已被破坏。
参见图2所示,基于现有的多核处理器结构,通过在处理器核内增加部分支持事务执行的硬件,以实现对程序中事务的高效执行。在本发明中,硬件型事务存储系统包括一个事务缓冲区和一个事务线程寄存器。
事务线程寄存器(Transaction Thread Register,TTR),主要用于记录当前执行的事务线程的标识符,以便在事务阻塞后被重新调度执行时判断事务现场是否正常。事务线程寄存器的结构与通用寄存器类似,宽度为32位,配备在每一个处理器核上。
事务缓冲区TC主要用于缓冲事务执行过程中对变量所做的修改,并保存相关状态,以便最终提交或回滚。事务缓冲区结构与高速缓冲存储器(cache)结构类似,数据的存储以行为单位,主要差异在于,对缓冲的数据保存新(new)、旧(old)两个拷贝,其中旧拷贝是指事务开始前的数据拷贝,新拷贝则为事务执行过程中的修改版本。每行数据还配有1个读标志位和1个写标志位,用于记录该行数据在事务执行过程中的读/写情况。在本发明事务缓冲区TC中Tag表示编号,Data表示数据,Old表示数据的原始版本,New表示数据的更新版本,State表示事务状态,Read表示读标志位,Write表示写标志位。
本发明的性能评价是基于系统结构模拟器Virtutech Simics及多核处理器GEMS(general execution-driven multiprocessor simulator)进行。目标系统基于可扩充处理器架构SPARC(Scalable Processor ARChitecture),并扩展了事务存储相关的硬件部件和指令系统,处理器核的个数从2~16个,运行Solaris操作系统。
使用了5个测试程序对目标系统进行了测试,表1给出了测试程序的介绍。
表1.测试程序介绍
名称 | 说明 | 长事务的密度 |
Deque | 双向队列入出、写文件 | 高 |
Deque | 双向队列入出、写文件 | 中 |
Deque | 双向队列入出、写文件 | 低 |
FFT | 快速傅里叶变换 | 无 |
LU | 矩阵的LU分解 | 无 |
注:Deque(double-ended queue)是GEMS模拟器中自带的一种具有队列和栈的性质的数据结构的基准测试程序。
FFT(Fast Fourier Transformation)是斯坦福大学发明的通用并行测试程序集SPLASH-2(Stanford Parallel Applications for Shared M emory)中的傅里叶变换算法的测试程序。
LU(Lower/Upper triangular matrix)是斯坦福大学发明的通用并行测试程序集SPLASH-2(Stanford Parallel Applications for Shared Memory)中具有矩阵LU分解的算法的测试程序。
由图3所示,在不使用本发明方法的事务存储系统中,当处理器个数为2时,加速比最大为1.14;当处理器个数为4时,加速比最大为1.15;当处理器个数为8时,加速比最大为1.7;当处理器个数为16时,加速比最大为1.8。
由图4所示,在使用了本发明方法的事务存储系统中,当处理器个数为2时,加速比最大为1.15;当处理器个数为4时,加速比最大为1.23;当处理器个数为8时,加速比最大为1.73;当处理器个数为16时,加速比最大为1.95。
由此可知,随着处理器个数的增长,使用了本发明方法的事务存储系统与未使用本方法的事务存储系统的加速比都在逐渐提高,因此本发明方法比锁机制在长事务处理上的性能有所提高,在同等处理器个数下,使用了本发明方法对不使用本发明方法的性能提升表现更加明显。加速比是指事务存储系统与锁机制的系统进行事务处理的时间的反比。
一个事务由于冲突回滚后需要被重新启动,因而事务程序运行时启动事务个数与成功提交事务个数的比值反映出了事务回滚的频繁程度,如果该比值为1则表示无事务回滚发生,比值越大说明回滚越频繁。
由图5所示,在不使用本发明方法的事务存储系统中,当处理器个数为2时,启动事务个数与提交事务个数的比值最大为1.07;当处理器个数为4时,该比值最大为1.17;当处理器个数为8时,该比值最大为1.26;当处理器个数为16时,该比值最大为1.35。在同等处理器个数下,由于deque(高)程序的长事务最为密集,因此发生冲突进行回滚的概率也较大,所以比值最高,而FFT和LU程序中没有长事务,因此发生冲突进行回滚的概率很低,所以比值一般接近于1。
由图6所示,在使用了本方法的事务存储系统中,当处理器个数为2时,启动事务个数与提交事务个数的比值最大为1.05;当处理器个数为4时,该比值最大为1.12;当处理器个数为8时,该比值最大为1.19;当处理器个数为16时,该比值最大为1.24。
由此可知,在同等处理器个数下,使用了本发明方法比不使用本发明方法的事务回滚概率更低,本发明方法使得事务的执行更加高效。
Claims (2)
1.一种硬件型事务存储系统中事务线程的阻塞唤醒方法,其特征在于该方法是这样实现的:
第一步:唤醒事务线程
(A)当处理器开始执行事务时,一方面事务线程寄存器记录下当前所执行的事务线程的标识符;
(B)另一方面在事务缓冲区的读/写标志位中记录下当前所执行的事务的数据;
(C)若事务线程的执行时间超过一个时间片,则阻塞该线程;
(D)若事务线程的执行时间未超过一个时间片,则查看事务是否执行完成,若未完成,继续执行当前事务;
(E)当事务被执行完成后则进行事务提交;
(F)对于阻塞的线程需要依据时间片轮转调度机制来决定唤醒事务线程;
所述的时间片轮转调度机制是:当线程用完它的时间片后,它将被转移到就绪线程队列的末尾,直到排在它之前的所有线程全部执行完毕或者时间片用完时,操作系统才将其唤醒;
第二步:被唤醒的事务线程检查事务现场
(A)当事务线程被唤醒时,根据事务线程寄存器中的线程标识符能够得到当前处理器核内正在执行的事务线程,进而根据事务现场判断条件来判断事务现场是否被破坏;
(B)若是,则对事务现场已被破坏的事务,清除事务缓冲区内的全部数据,并重新启动事务;
(C)若否,则对事务继续执行并提交;
所述的事务现场是指事务缓冲区内保存的事务的读、写数据;
所述的事务现场判断条件是:如果事务线程寄存器中的线程标识符等于被唤醒事务线程的标识符,则事务缓冲区内保存的是该事务的读、写数据,事务现场未被破坏;如果事务线程寄存器中的线程标识符不等于被唤醒的事务线程的标识符,则事务缓冲区内保存的是脏数据,事务现场已被破坏。
2.根据权利要求1所述的硬件型事务存储系统中事务线程的阻塞唤醒方法,其特征在于:硬件型事务存储系统包括一个事务缓冲区和一个事务线程寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010220900A CN101908000B (zh) | 2010-07-08 | 2010-07-08 | 一种硬件型事务存储系统中事务线程的阻塞唤醒方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010220900A CN101908000B (zh) | 2010-07-08 | 2010-07-08 | 一种硬件型事务存储系统中事务线程的阻塞唤醒方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101908000A CN101908000A (zh) | 2010-12-08 |
CN101908000B true CN101908000B (zh) | 2012-10-10 |
Family
ID=43263466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010220900A Expired - Fee Related CN101908000B (zh) | 2010-07-08 | 2010-07-08 | 一种硬件型事务存储系统中事务线程的阻塞唤醒方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101908000B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681884A (zh) * | 2011-03-17 | 2012-09-19 | 新奥特(北京)视频技术有限公司 | 一种媒资元数据读写访问冲突的解决方法 |
CN102567089B (zh) * | 2011-10-25 | 2014-02-19 | 曙光信息产业(北京)有限公司 | 一种分布式文件系统中元数据服务器线程池的设计方法 |
US9916178B2 (en) * | 2015-09-25 | 2018-03-13 | Intel Corporation | Technologies for integrated thread scheduling |
CN108509260B (zh) * | 2018-01-31 | 2021-08-13 | 深圳市万普拉斯科技有限公司 | 线程识别处理方法、装置、计算机设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101132336A (zh) * | 2007-10-17 | 2008-02-27 | 中国人民解放军国防科学技术大学 | 异构多核处理器高速异步互连通信网络 |
CN101520759A (zh) * | 1999-12-28 | 2009-09-02 | 英特尔公司 | 动态优先级外部事务处理系统 |
CN101615132A (zh) * | 2008-06-27 | 2009-12-30 | 国际商业机器公司 | 事务存储系统及其控制方法 |
-
2010
- 2010-07-08 CN CN201010220900A patent/CN101908000B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520759A (zh) * | 1999-12-28 | 2009-09-02 | 英特尔公司 | 动态优先级外部事务处理系统 |
CN101132336A (zh) * | 2007-10-17 | 2008-02-27 | 中国人民解放军国防科学技术大学 | 异构多核处理器高速异步互连通信网络 |
CN101615132A (zh) * | 2008-06-27 | 2009-12-30 | 国际商业机器公司 | 事务存储系统及其控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101908000A (zh) | 2010-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Friedman et al. | A persistent lock-free queue for non-volatile memory | |
JP5635620B2 (ja) | 無限トランザクショナルメモリ(utm)システムにおけるモード切り替えの実行 | |
Hwang et al. | Endurable transient inconsistency in {Byte-Addressable} persistent {B+-Tree} | |
Johnson et al. | Aether: a scalable approach to logging | |
Balmau et al. | Flodb: Unlocking memory in persistent key-value stores | |
JP4774056B2 (ja) | トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現のための方法及び装置 | |
Hammond et al. | Transactional memory coherence and consistency | |
Ren et al. | Lightweight locking for main memory database systems | |
Blundell et al. | Invisifence: performance-transparent memory ordering in conventional multiprocessors | |
US8661449B2 (en) | Transactional computation on clusters | |
JP5489554B2 (ja) | 非プリエンプタブルなデータ参照者に影響する共用データ要素の更新動作の後に猶予期間の低電力検出のための方法、システム及びコンピュータ・プログラム | |
Lu et al. | Blurred persistence in transactional persistent memory | |
US20100162247A1 (en) | Methods and systems for transactional nested parallelism | |
Graefe | A survey of B-tree logging and recovery techniques | |
Yiapanis et al. | Optimizing software runtime systems for speculative parallelization | |
US20140040208A1 (en) | Early release of transaction locks based on tags | |
CN101908000B (zh) | 一种硬件型事务存储系统中事务线程的阻塞唤醒方法 | |
Guerraoui et al. | On obstruction-free transactions | |
Gramoli et al. | On the input acceptance of transactional memory | |
Moreshet et al. | Energy reduction in multiprocessor systems using transactional memory | |
CN102929711A (zh) | 一种软件实时事务内存的实现方法 | |
Ritson et al. | Exploring garbage collection with haswell hardware transactional memory | |
Xia et al. | Taurus: Lightweight parallel logging for in-memory database management systems | |
Saxena et al. | Hathi: durable transactions for memory using flash | |
Matveev et al. | Reduced hardware norec: An opaque obstruction-free and privatizing hytm |
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: 20121010 Termination date: 20130708 |