CN101788922A - 基于辅助线程实现事务存储系统的方法和装置 - Google Patents
基于辅助线程实现事务存储系统的方法和装置 Download PDFInfo
- Publication number
- CN101788922A CN101788922A CN200910005955.5A CN200910005955A CN101788922A CN 101788922 A CN101788922 A CN 101788922A CN 200910005955 A CN200910005955 A CN 200910005955A CN 101788922 A CN101788922 A CN 101788922A
- Authority
- CN
- China
- Prior art keywords
- thread
- software thread
- data
- write
- carry out
- 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
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000004888 barrier function Effects 0.000 claims abstract description 57
- 230000008569 process Effects 0.000 claims abstract description 16
- 238000012545 processing Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims 2
- 238000001514 detection method Methods 0.000 abstract description 4
- 230000003213 activating effect Effects 0.000 abstract 1
- 230000006870 function Effects 0.000 description 10
- 101150107557 SMT-1 gene Proteins 0.000 description 3
- 230000006854 communication Effects 0.000 description 3
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
- G06F9/528—Mutual exclusion algorithms by using speculative mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种在支持同时多线程的处理器中执行事务的方法,包括:建立用于执行事务的主软件线程和用于执行屏障功能的辅助软件线程,利用多个硬件线程执行主软件线程和辅助软件线程;执行主软件线程;如果主软件线程遇到需要读取/写入数据的事务加载/存储操作,则判断是否需要执行屏障功能;如果需要执行屏障功能,则执行以下步骤:停止主软件线程;激活辅助软件线程以执行屏障功能;在辅助软件线程执行屏障功能完成之后,退出辅助软件线程;以及继续执行主软件线程。由此,本发明利用多个硬件线程实现屏障功能,从而避免了重新编译过程中带来的麻烦,并且保证了在数据访问过程中对冲突的检测。
Description
技术领域
本发明涉及事务存储系统,更具体地,涉及基于辅助线程实现事务存储系统的方法和装置。
背景技术
事务(transaction)是一个在计算机领域中被广泛使用的概念。一个事务通常是指多条指令以看似原子的方式执行,在执行期间没有其他操作介于其中。例如,如果一个事务访问了某个存储器地址上的数据,则直到该事务结束,该地址上的数据不应该被该事务以外的操作修改。
事务可以直接在硬件层面实现,比如修改处理器体系结构。从体系结构级别上支持事务的硬件组件称为硬件事务存储器(HardwareTransactional Memory,简称HTM)系统。利用纯软件实现的事务存储器称为软件事务存储器(Software Transactional Memory,简称STM)。下文中的TM泛指所有的事务存储器系统。采用事务存储器系统,在编写并行程序时程序员无需使用锁,因此可以提高软件生产效率。
事务访问的所有数据(推测性数据)将被临时地存储在一事务缓冲器中,而不是写入到存储器中。如果两个事务访问相同的地址,并且其中至少一个修改该地址上的数据,则其中一个事务必须回滚(roll back)并重新执行,而另一个事务继续。这种情况被称为冲突(conflict)。如果没有冲突,事务结束时临时存储的数据将被写入到存储器。该操作称为提交(commit)。
如上所述,在事务访问数据时,目前TM的一种实现是通过编译器在每个需要访问数据的事务加载/存储指令之前增加屏障(barrier)。这种屏障的作用在于通过检查锁定表来检测是否存在冲突,在锁定表中记录有事务要访问的每个存储器块的许可。在使用屏障功能的情况下意味着,需要对事务的源代码重新编译,以在编译期间加入这些屏障。但是第三方提供的函数库一般不包含源代码,因此程序员不能在事务中调用这些库函数。实际上,很多库中的函数相对于事务来说是安全的,例如C库中的“strcmp”和math库中的“sqrt”。也就是说,即使那些函数不包含不可恢复的操作,程序员也不能够调用那些函数。所以,这种禁止程序员在事务执行期间调用那些函数的情况明显降低了生产率。
发明内容
因此,根据本发明的一个方面,提供了一种在支持同时多个硬件线程的处理器中执行事务的方法,包括以下步骤:建立用于执行事务的主软件线程和用于执行屏障功能的辅助软件线程,利用所述多个硬件线程执行所述主软件线程和所述辅助软件线程;执行所述主软件线程;如果所述主软件线程遇到需要读取/写入数据的事务加载/存储操作,则判断是否需要执行屏障功能;如果需要执行屏障功能,则执行以下步骤:停止所述主软件线程;激活所述辅助软件线程以执行所述屏障功能;在所述辅助软件线程执行所述屏障功能完成之后,退出所述辅助软件线程;以及继续执行所述主软件线程。由此,本发明利用多个硬件线程实现屏障功能,从而避免了重新编译过程中带来的麻烦,并且保证了在数据访问过程中对冲突的检测。
优选地,在所述多个硬件线程的每个硬件线程中还包括:写签名和读签名,用于存储所述主软件线程曾经读取/写入的数据的物理地址。如果要读取/写入的数据没有命中高速缓存,并且要写入的数据没有命中至少一个写签名或者要读取的数据没有命中至少一个读签名或写签名,则需要执行所述屏障功能。由此,签名的使用可以简化对冲突的判断,而无需每次都查询锁定表,可以提高判断的效率。
优选地,所述主软件线程利用共享寄存器与所述辅助软件线程进行通信。所述共享寄存器包括:事务地址寄存器,即TAR,用于保存读取/写入的数据的物理地址;事务数据寄存器,即TDR,用于保存来自高速缓存中的高速缓存行的数据;事务运行寄存器,即TOR,用于保存事务操作代码;以及事务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系统中,使用高速缓存(cache)保存在执行事务时由事务所访问的数据,其中系统对高速缓存进行读写的单位被称作高速缓存行(cache line)。高速缓存行包括A标签和颜色标签。A标签表示这个高速缓存行是否被未提交事务访问,而颜色标签表示哪个事务进行的访问。仅当设置了A标签时,颜色标签才有效。具有A标签设置的高速缓存行称为A高速缓存行。A高速缓存行不能够被替换出。对于A高速缓存行处于共享状态下,颜色标签可表示多个线程(如果高速缓存被多个核共享)。在BET的情况下,冲突检测基于现有的高速缓存一致性协议(如MESI的窥探协议)。所述MESI一致性协议已经广泛使用在SMP系统中,从名称可以看出,MESI具有4个高速缓存状态:修改状态(M)、专有状态(E)、共享状态(S)和无效状态(I)。
以下描述实现本发明的系统架构。在上文所述的BET的基础上,提出针对大型事务的改进版本(BELT)。BELT需要支持同时多线程(SMT,simultaneous multi-thread)的处理器。在以下的讨论中,为了简化,假设处理器具有仅2个硬件线程。图1示出本发明的简单系统结构,其中具有硬件线程SMT0和SMT1。当然,也可以有多于2个硬件线程的情况。在系统中还包括处理器可访问的高速缓存和存储器。这里的存储器可以存储锁定表(以下将对其进行详细描述)等。
此外,优选地,还可以对每个硬件线程增加写签名和读签名。这些签名用于保存相应的从高速缓存被替换出来的行的地址。所谓相应是指:缓存行的颜色标签等于线程ID。应该注意,如果不存在溢出,则签名为空。每个签名是具有1K比特的布隆过滤器(bloom filter),所述布隆过滤器实际上是一个很长的二进制向量和一系列随机映射函数,好处在于快速和省空间。签名可具有以下操作:
1)向签名中加入地址。
2)检查地址是否在签名中。如果有,则命中;否则,失效。
3)清除签名(将所有比特设置为0)。
当事务结束(中止或提交)时,硬件线程的签名清除。
在图1中,每个处理器连接有至少4个寄存器。这些寄存器可由处理器中的所有硬件线程访问。这些寄存器包括:事务地址寄存器(TAR)、事务数据寄存器(TDR)、事务ID寄存器(TIR)和事务运行寄存器(TOR)等。TAR用于保存事务所读取或写入的数据的物理地址。TDR用于保存来自高速缓存行的数据,寄存器大小等于高速缓存行大小。在Power架构中,为128B。在实际情况下,该寄存器可通过多个寄存器实现。TIR用于保存设置TOR(以下对其进行详细描述)的硬件线程ID。TOR用于保存事务操作代码。在以下的表中列出代码值。当然,也可以包括用于存储与事务相关的信息的其它寄存器。在本实施例中,TOR寄存器具有特别的特征。当TOR为OP NO时,读取TOR的指令停止执行该指令的硬件线程。停止意味着执行流程停止对于该硬件线程的指令提取/解码,并且不执行读取TOR的指令。在Power4和Power5架构中,这个过程类似于在数据高速缓存中失效(miss)的加载指令。该指令被拒绝,并且在一定次数的时钟周期之后被再次发出,并重复该过程。当TOR不是OP_NO时,取消停止。如下表1示出操作代码。
表1
当TOR不是OP_NO时,TIR有效。仅当TOR是数据操作时,TAR有效。仅当TOR是OP_WRITE或OP_OVERFLOW_WRITE时,TDR有效。
图2示出本发明的软件实现过程。通过处理器中的2个硬件线程(SMT0和SMT1)调度一对软件线程。应该注意,如上所述可以是多个硬件线程,并且也可以是多个软件线程。这里,为了与2个硬件线程对应,所以也仅假设有2个软件线程。其中一个软件线程称为主软件线程(即在SMT0上调度),以下简称为主线程,其用于正常执行事务。而另一个软件线程称为辅助软件线程(即在SMT1上调度),以下简称为辅助线程,其用于向主线程提供服务,例如提供屏障功能。首先,需要建立主线程和辅助线程(步骤201)。然而,应该注意,主线程和辅助线程可以在相同的处理空间中,也可以不在相同的处理空间中,这取决于不同因素的权衡结果。在本发明实施例的设计中,这两个线程没有在相同的处理空间中。主线程和辅助线程的执行以粗粒度的方式交替。也就是说,在任意给定的适当时刻仅有一个线程执行。随后,执行主线程(步骤202)。在主线程的执行期间,如果主线程遇到需要读取/写入数据的事务加载/存储操作,则判断是否需要执行屏障功能(步骤203)。图4示出具体的判断过程。如果需要屏障功能(步骤203为是),则表明需要利用本发明提出的多个硬件线程的配合来实现屏障功能。具体地,考虑到在任意给定时刻只能有一个线程在执行,所以首先停止主软件线程(步骤205)。然后,激活辅助线程以执行屏障功能,由此实现从主线程到辅助线程的执行切换(步骤206)。在辅助线程执行所述屏障功能完成之后,辅助线程退出(步骤207)。在辅助线程执行期间,辅助线程的功能对应于传统STM中的屏障所执行的功能。在辅助线程退出之后,主线程继续执行,由此实现从辅助线程到主线程的执行切换(步骤204)。如果不需要执行屏障功能(如步骤203为否),则主线程正常执行(步骤204),然后,判断主线程是否结束,如果没有结束(步骤208为否),则返回步骤203。否则(步骤208为是),结束主线程的执行。如图3示出主线程和辅助线程的实际执行的程序图。
具体地,通过以下伪码示出辅助线程实例。
……
while(true)
{
op=read_TOR;//helper thread is stalled by this instruction
address=read_TPAR;//get the physical address
thread_id=read_TCR;//get the thread ID
switch(op)
{
case OP_OVERFLOW_READ:
/*add address to in-memory permission table with read
permission*/
insert_read_permission(address,thread_id);
break;
case OP_OVERFLOW_WRITE:
/*add address and data to in-memory permission table with
write permission*/
in sert_write_permission(address,data,thread_id);
break;
case OP_TRANS_READ:
/*search the permission table to detect conflict*/
if(conflict)abort_one_transaction;
else if(has_read_permission)do nothing;
else if(has_write_permission)write the data into cache.
else insert a new entry to lock table.
break;
case OP_TRANS_WRITE:
data=read_TDR;
/*search the permission tableto detect conflict*/
if(conflict)abort_one_transaction;
else if(has_read_permission)upgrade to write permission;
else if(has_write_permission)write data to lock table entry;
else insert a new entry to lock table.
break;
}
}
……
在判断是否需要执行屏障功能的步骤203中,参照图4,示出根据本发明实施例的判断是否需要执行屏障功能的具体判断过程。首先,判断主线程要访问的数据是否命中高速缓存,即,判断在高速缓存中是否包括主线程需要访问的数据。如果命中高速缓存,则主线程可以直接访问高速缓存,而不会发生冲突,因此不需要屏障功能(该过程类似于BET)。如果没有命中高速缓存,则在要写入数据时,主线程判断是否命中自身的写签名;在要读取数据时,主线程判断是否命中自身的读签名和写签名。如果命中签名,说明当前主线程曾经访问过要访问的数据,因此当前主线程可以访问该数据,而不会发生冲突,所以不需要屏障功能。否则,会存在两种情况,一种是没有命中高速缓存,并且没有命中自身的签名(即,在要写入数据时,没有命中自身的写签名;在要读取数据时,没有命中自身的读签名和写签名),但是命中了其它线程的签名(即,在要写入数据时,命中其它线程的读签名或者写签名;在要读取数据时,命中其它线程的写签名);另一种是没有命中高速缓存,也没有命中签名(即,在要写入数据时,没有命中任何读签名和写签名;在要读取数据时,没有命中任何写签名)。第一种情况表示可能有其它主线程访问当前主线程需要访问的数据(存在冲突),第二种情况表示没有其它主线程和本线程冲突。这两种情况下都需要执行屏障功能。如果不需要执行屏障功能,则主线程通过与BET情况类似的高速缓存一致性协议检测冲突。如果需要执行屏障功能,则主线程需要利用上文中提及的寄存器与辅助线程进行通信。图5示出主线程和辅助线程的具体通信过程。首先,将事务加载/存储所要读取或写入的数据的物理地址复制到TAR(步骤501)。如果是事务存储,还需要将事务存储所写入的数据复制到TDR(步骤502)。将线程ID复制到TIR(步骤503)。将TOR适当地设置为OP_TRANS_READ或OP_TRANS_WRITE(步骤504)。
在设置了TOR之后,处理器切换到对辅助线程的执行。如果需要屏障功能,则通过辅助线程执行屏障功能。辅助线程通过检索锁定表来检测冲突。优选地,考虑到高速缓存空间有限,所以可以将锁定表存储在存储器中,或者可以存储在其它空间足够大的存储装置中。在根据锁定表检测冲突的过程中,所述锁定表的功能在于通过将当前事务需要读取或写入的地址或数据信息填写到锁定表中来实现对所填写的地址或数据信息的保护。考虑到对锁定表的利用是本领域已知的,所以这里不再对其进行详细描述。
在利用高速缓存存储数据时,可能会出现溢出的情况。当在主线程中的事务溢出时,将颜色标签等于主线程的线程ID的A高速缓存行替换出高速缓存。以下描述高速缓存控制器需要执行的操作。
1)将该高速缓存行的物理地址复制到TAR。
2)如果A高速缓存行处于M状态,则将A高速缓存行中的数据复制到TDR。
3)如果A高速缓存行处于M状态,将A高速缓存行的物理地址加入SMT0的写签名中;否则,将物理地址加入SMT0的读签名中。
4)将A高速缓存行的颜色标签复制到TIR。
5)使得该高速缓存行无效。
6)如果A高速缓存行处于M状态,将TOR设置为OP_OVERFLOW_WRITE,否则将TOR设置为OP_OVERFLOW_READ。
7)最后,停止主线程,该步骤是可选的。当然,各个步骤的具体顺序不受到本实施例的限制,可以根据需要进行修改。
在检测冲突的过程中,如果检测到冲突,则辅助线程可执行任意的竞争管理策略中止发生冲突的事务。由于辅助线程是纯软件线程,所以对中止发生冲突的处理可以十分灵活。
如果没有检测到冲突,则辅助线程执行以下步骤。
1)TOR是OP_TRANS_READ
a)如果主线程具有要读取数据的物理地址的读取许可,则辅助线程不执行任何处理。
b)如果主线程已经具有对于该地址的写入许可,则辅助线程将该许可表中的数据和线程ID写入高速缓存行中,并设置A标签,随后刷新在SMT0中的主线程的指令。
c)如果辅助线程没有找到与该地址对应的许可表项,则在锁定表中插入新项,以表示该线程具有读取许可。
2)TOR是OP_TRANS_WRITE
a)如果主线程已经具有对于该地址的读取许可,则辅助线程将读取许可升级为写入许可,然后辅助线程通过正常加载操作读取存储器块(包含来自TAR的地址),并记录在对应的许可表项中的数据的块,最后通过从TDR将数据写入该项并改变许可标签来更新该项。
b)如果主线程已经具有对该地址的写入许可,则辅助线程将数据从TDR写入对应许可表项。
c)如果辅助线程没有找到与该地址对应的许可表项,则向锁定表插入新项,以表示该线程具有写入许可。
当辅助线程完成屏障功能操作时,辅助线程退出,主线程继续运行,由此完成从辅助线程到主线程的切换。
如上所述,主线程中执行的事务可能被提交和中止。事务中止比较简单。主线程执行回滚指令。具体操作如下:
1)停止主线程。
2)将TIR设置为线程ID。
3)将TOR设置为OP_ABORT。
4)当辅助线程开始运行时,删除属于主线程的许可表中的所有项。
之后,主线程恢复。当主线程恢复时,使得高速缓存中所有对应的A高速缓存行无效,并清除SMT0的签名。
主线程在提交事务时,执行以下步骤。
1)主线程停止。
2)将TIR设置为线程ID。
3)将TOR设置为OP_COMMIT。
4)当辅助线程开始运行时,将推测数据写入高速缓存。之后,主线程恢复。在恢复指令之后的指令应该清除属于主线程的A高速缓存行中的所有A标签,并清除签名。
此外,在例如目前的处理器系统中,每个核心可以具有4个线程。在本发明的实施例中,可以仅使用一个辅助线程,其它的都用作主线程。辅助线程的成本并不是问题。在未来的系统中,甚至可能出现更多个处理器核和硬件线程。如图6示出多个处理器核和多个线程的情况实例。在这种情况下,可以通过与本发明中仅使用2个线程交互的类似方法使得多个主线程与一个辅助线程交互运行,从而可以实现相同的效果。
因此,根据本发明实施例所提供的事务处理方法和系统,可以在不需要加入屏障代码的情况下,利用多个硬件线程之间的交互实现屏障功能,从而避免了重新编译过程中带来的麻烦,并且保证了在数据访问过程中对冲突的检测。
为了示意和说明的目的,已经提供了本发明的示意性实施例的上述说明。它并不意味着穷尽或限制本发明公开的准确形式。根据上面的教导,许多修改和变化都是可能的。这意味着本发明的保护范围并不局限于这些详细描述,而是由后面的权利要求书来确定。
Claims (17)
1.一种在支持同时多个硬件线程的处理器中执行事务的方法,包括以下步骤:
建立用于执行事务的主软件线程和用于执行屏障功能的辅助软件线程,利用所述多个硬件线程执行所述主软件线程和所述辅助软件线程;
执行所述主软件线程;
如果所述主软件线程遇到需要读取/写入数据的事务加载/存储操作,则判断是否需要执行屏障功能;
如果需要执行屏障功能,则:
停止所述主软件线程;
激活所述辅助软件线程以执行所述屏障功能;
响应于所述辅助软件线程执行所述屏障功能完成,退出所述辅助软件线程;以及
继续执行所述主软件线程。
2.根据权利要求1的方法,在所述多个硬件线程的每个硬件线程中还包括:写签名和读签名,用于存储所述主软件线程曾经读取/写入的数据的物理地址。
3.根据权利要求2的方法,其中判断是否需要执行屏障功能包括:
如果要读取/写入的数据没有命中高速缓存,并且要写入的数据没有命中该线程的写签名,或者要读取的数据没有命中该线程的读签名和写签名,则需要执行所述屏障功能。
4.根据权利要求3的方法,还包括所述主软件线程利用共享寄存器与所述辅助软件线程进行通信。
5.根据权利要求4的方法,所述共享寄存器包括:
事务地址寄存器TAR,用于保存读取/写入的数据的物理地址;
事务数据寄存器TDR,用于保存来自高速缓存中的高速缓存行的数据;
事务运行寄存器TOR,用于保存事务操作代码;以及
事务ID寄存器TIR,用于保存设置TOR的硬件线程ID。
6.根据权利要求5的方法,其中所述主软件线程利用共享寄存器与所述辅助软件线程进行通信包括:
将要读取/写入数据的物理地址复制到TAR;
在要写入时将要写入的数据复制到TDR;
将硬件线程ID复制到TIR;以及
根据要读取/写入的状态对应地设置TOR的状态。
7.根据权利要求1的方法,其中所述辅助软件线程执行所述屏障功能包括:所述辅助软件线程通过检索锁定表来检测冲突。
8.根据权利要求7的方法,其中所述锁定表存储在存储器中。
9.根据权利要求7的方法,其中如果检测到冲突,则所述辅助软件线程根据管理策略中止发生冲突的事务。
10.根据权利要求7的方法,其中如果没有检测到冲突,则所述辅助软件线程执行:
在要读取数据时,如果所述主软件线程具有要读取数据的物理地址的读取许可,则所述辅助软件线程不执行任何处理;
如果所述主软件线程具有要读取数据的物理地址的写入许可,则所述辅助软件线程将所述锁定表中的数据和硬件线程ID写入高速缓存行中;以及
如果所述辅助软件线程没有在所述锁定表中找到与要读取数据的物理地址对应的项目,则在所述锁定表中插入新的项目,以表示所述主软件线程具有读取许可;
在要写入数据时,如果所述主软件线程具有要写入数据的物理地址的读取许可,则所述辅助软件线程将所述读取许可升级为写入许可,然后所述辅助软件线程通过正常加载操作从TAR读取与物理地址对应的存储器块中的数据,并在对应的锁定表的项目中记录所读取的数据,从而进行更新;
如果所述主软件线程具有要写入数据的物理地址的写入许可,则所述辅助软件线程将对应数据从TDR写入对应的锁定表的项目中;以及
如果所述辅助软件线程在所述锁定表中没有找到与要写入数据的物理地址对应的项目,则向所述锁定表插入新的项目,以表示所述主软件线程具有写入许可。
11.一种在支持同时多个硬件线程的处理器中执行事务的系统,包括:
用于建立用于执行事务的主软件线程和用于执行屏障功能的辅助软件线程,利用所述多个硬件线程执行所述主软件线程和所述辅助软件线程的装置;
用于执行所述主软件线程的装置;
用于如果所述主软件线程遇到需要读取/写入数据的事务加载/存储操作,则判断是否需要执行屏障功能的装置;
用于如果需要执行屏障功能,则:
停止所述主软件线程;
激活所述辅助软件线程以执行所述屏障功能;
响应于所述辅助软件线程执行所述屏障功能完成,退出所述辅助软件线程;以及
继续执行所述主软件线程的装置。
12.根据权利要求11的系统,在所述多个硬件线程的每个硬件线程中还包括:写签名和读签名,用于存储所述主软件线程曾经读取/写入的数据的物理地址。
13.根据权利要求12的系统,还包括:
用于如果要读取/写入的数据没有命中高速缓存,并且要写入的数据没有命中该线程的写签名,或者要读取的数据没有命中该线程的读签名和写签名,则需要执行所述屏障功能的装置。
14.根据权利要求13的系统,还包括:共享寄存器,用于所述主软件线程与所述辅助软件线程之间的通信。
15.根据权利要求14的系统,所述共享寄存器包括:
事务地址寄存器TAR,用于保存读取/写入的数据的物理地址;
事务数据寄存器TDR,用于保存来自高速缓存中的高速缓存行的数据;
事务运行寄存器TOR,用于保存事务操作代码;以及
事务ID寄存器TIR,用于保存设置TOR的硬件线程ID。
16.根据权利要求11的系统,还包括:锁定表,用于由所述辅助软件线程检测冲突。
17.根据权利要求16的系统,还包括:所述至少一个处理器能够访问的存储器,用于存储所述锁定表。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910005955.5A CN101788922B (zh) | 2009-01-22 | 2009-01-22 | 基于辅助线程实现事务存储系统的方法和装置 |
US12/685,863 US8448173B2 (en) | 2009-01-22 | 2010-01-12 | Method and apparatus for implementing a transactional store system using a helper thread |
US13/834,409 US9098327B2 (en) | 2009-01-22 | 2013-03-15 | Method and apparatus for implementing a transactional store system using a helper thread |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910005955.5A CN101788922B (zh) | 2009-01-22 | 2009-01-22 | 基于辅助线程实现事务存储系统的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101788922A true CN101788922A (zh) | 2010-07-28 |
CN101788922B CN101788922B (zh) | 2013-12-25 |
Family
ID=42337981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910005955.5A Expired - Fee Related CN101788922B (zh) | 2009-01-22 | 2009-01-22 | 基于辅助线程实现事务存储系统的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US8448173B2 (zh) |
CN (1) | CN101788922B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629192A (zh) * | 2012-04-20 | 2012-08-08 | 西安电子科技大学 | 用于片上多核并发多线程处理器的指令包及其操作方法 |
CN103631647A (zh) * | 2013-12-06 | 2014-03-12 | 北京京东尚科信息技术有限公司 | 一种实现分布式事务的方法和装置 |
CN106462394A (zh) * | 2014-05-07 | 2017-02-22 | 高通股份有限公司 | 使用共享硬件资源的群集处理器核心中硬件线程的动态负载平衡以及相关的电路、方法和计算机可读媒体 |
WO2017054711A1 (en) * | 2015-10-01 | 2017-04-06 | Huawei Technologies Co., Ltd. | Action-based routing of a transaction in an online transaction processing system |
CN115080206A (zh) * | 2022-06-14 | 2022-09-20 | 哈尔滨工业大学 | 一种基于多线程机制的高速回波数据实时记录系统及记录方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9501314B2 (en) * | 2013-02-22 | 2016-11-22 | International Business Machines Corporation | Reducing aborts caused by a runtime helper called during execution of a transaction block |
US10114752B2 (en) * | 2014-06-27 | 2018-10-30 | International Business Machines Corporation | Detecting cache conflicts by utilizing logical address comparisons in a transactional memory |
GB2533415B (en) | 2014-12-19 | 2022-01-19 | Advanced Risc Mach Ltd | Apparatus with at least one resource having thread mode and transaction mode, and method |
US10289558B2 (en) | 2016-03-04 | 2019-05-14 | Western Digital Technologies, Inc. | Apparatus and method for reducing storage class memory write-backs |
CN110716755B (zh) * | 2019-10-14 | 2023-05-02 | 浙江诺诺网络科技有限公司 | 一种线程退出方法、装置、设备及可读存储介质 |
CN112363779A (zh) * | 2020-11-25 | 2021-02-12 | 王志平 | 一种动态链接程序的安全控制方法 |
WO2022155937A1 (zh) * | 2021-01-23 | 2022-07-28 | 王志平 | 一种动态链接程序的安全控制方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5953736A (en) * | 1997-04-23 | 1999-09-14 | Sun Microsystems, Inc. | Write barrier system and method including pointer-specific instruction variant replacement mechanism |
US5930807A (en) * | 1997-04-23 | 1999-07-27 | Sun Microsystems | Apparatus and method for fast filtering read and write barrier operations in garbage collection system |
US6976155B2 (en) * | 2001-06-12 | 2005-12-13 | Intel Corporation | Method and apparatus for communicating between processing entities in a multi-processor |
US7363474B2 (en) * | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
US7395382B1 (en) * | 2004-08-10 | 2008-07-01 | Sun Microsystems, Inc. | Hybrid software/hardware transactional memory |
US7950012B2 (en) * | 2005-03-16 | 2011-05-24 | Oracle America, Inc. | Facilitating communication and synchronization between main and scout threads |
US7350034B2 (en) * | 2005-06-20 | 2008-03-25 | International Business Machines Corporation | Architecture support of best-effort atomic transactions for multiprocessor systems |
US7395418B1 (en) * | 2005-09-22 | 2008-07-01 | Sun Microsystems, Inc. | Using a transactional execution mechanism to free up processor resources used by a busy-waiting thread |
US8719807B2 (en) * | 2006-12-28 | 2014-05-06 | Intel Corporation | Handling precompiled binaries in a hardware accelerated software transactional memory system |
US8060482B2 (en) * | 2006-12-28 | 2011-11-15 | Intel Corporation | Efficient and consistent software transactional memory |
US8195898B2 (en) * | 2007-12-27 | 2012-06-05 | Intel Corporation | Hybrid transactions for low-overhead speculative parallelization |
-
2009
- 2009-01-22 CN CN200910005955.5A patent/CN101788922B/zh not_active Expired - Fee Related
-
2010
- 2010-01-12 US US12/685,863 patent/US8448173B2/en not_active Expired - Fee Related
-
2013
- 2013-03-15 US US13/834,409 patent/US9098327B2/en not_active Expired - Fee Related
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629192A (zh) * | 2012-04-20 | 2012-08-08 | 西安电子科技大学 | 用于片上多核并发多线程处理器的指令包及其操作方法 |
CN103631647A (zh) * | 2013-12-06 | 2014-03-12 | 北京京东尚科信息技术有限公司 | 一种实现分布式事务的方法和装置 |
CN106462394A (zh) * | 2014-05-07 | 2017-02-22 | 高通股份有限公司 | 使用共享硬件资源的群集处理器核心中硬件线程的动态负载平衡以及相关的电路、方法和计算机可读媒体 |
CN106462394B (zh) * | 2014-05-07 | 2019-04-05 | 高通股份有限公司 | 使用共享硬件资源的群集处理器核心中硬件线程的动态负载平衡以及相关的电路、方法和计算机可读媒体 |
US11200058B2 (en) | 2014-05-07 | 2021-12-14 | Qualcomm Incorporated | Dynamic load balancing of hardware threads in clustered processor cores using shared hardware resources, and related circuits, methods, and computer-readable media |
WO2017054711A1 (en) * | 2015-10-01 | 2017-04-06 | Huawei Technologies Co., Ltd. | Action-based routing of a transaction in an online transaction processing system |
CN108139927A (zh) * | 2015-10-01 | 2018-06-08 | 华为技术有限公司 | 联机事务处理系统中事务的基于动作的路由 |
US10210200B2 (en) | 2015-10-01 | 2019-02-19 | Futurewei Technologies, Inc. | Action-based routing of a transaction in an online transaction processing system |
CN108139927B (zh) * | 2015-10-01 | 2021-06-01 | 华为技术有限公司 | 联机事务处理系统中事务的基于动作的路由 |
CN115080206A (zh) * | 2022-06-14 | 2022-09-20 | 哈尔滨工业大学 | 一种基于多线程机制的高速回波数据实时记录系统及记录方法 |
CN115080206B (zh) * | 2022-06-14 | 2023-08-08 | 哈尔滨工业大学 | 一种基于多线程机制的高速回波数据实时记录系统及记录方法 |
Also Published As
Publication number | Publication date |
---|---|
US9098327B2 (en) | 2015-08-04 |
US20130219121A1 (en) | 2013-08-22 |
US20100186015A1 (en) | 2010-07-22 |
CN101788922B (zh) | 2013-12-25 |
US8448173B2 (en) | 2013-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101788922B (zh) | 基于辅助线程实现事务存储系统的方法和装置 | |
CN103150206B (zh) | 高效且一致的软件事务存储器 | |
US8627048B2 (en) | Mechanism for irrevocable transactions | |
CN101950259B (zh) | 用于执行事务的装置、系统及方法 | |
US8838908B2 (en) | Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM | |
US8132158B2 (en) | Mechanism for software transactional memory commit/abort in unmanaged runtime environment | |
US8190859B2 (en) | Critical section detection and prediction mechanism for hardware lock elision | |
CN101410797B (zh) | 无序处理器中的事务存储器执行的方法、设备和系统 | |
KR100567099B1 (ko) | L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치 | |
TWI448897B (zh) | 監視在硬體中之記憶體存取的方法與設備、處理器及其系統 | |
RU2501071C2 (ru) | Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle) | |
KR100704089B1 (ko) | L2 디렉토리를 이용한 멀티프로세서 시스템의 가-로드촉진 방법 및 장치 | |
US20110219215A1 (en) | Atomicity: a multi-pronged approach | |
US8898395B1 (en) | Memory management for cache consistency | |
CN101470629A (zh) | 用于在事务性存储器系统中实现强原子性的机制 | |
KR20080031039A (ko) | 공유 메모리 위치로의 메모리 액세스를 관리하는 방법 및컴퓨터 판독가능 매체 | |
KR20090025295A (ko) | 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법 | |
US8190825B2 (en) | Arithmetic processing apparatus and method of controlling the same | |
CN102968292A (zh) | 无约束事务存储器系统 | |
CN101814017A (zh) | 事务存储器系统中硬件属性的存储器模型 | |
WO2012067904A1 (en) | Preventing unintended loss of transactional data in hardware transactional memory systems | |
CN1510567A (zh) | 用于使用记录板机制处理加载锁定指令的方法和装置 | |
US20230161704A1 (en) | Computing system with direct invalidation in a hierarchical cache structure based on at least one designated key identification code | |
EP3404537A1 (en) | Processing node, computer system and transaction conflict detection method | |
US11586462B2 (en) | Memory access request for a memory 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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20131225 |