CN101331456A - 越过障碍的推测性执行 - Google Patents
越过障碍的推测性执行 Download PDFInfo
- Publication number
- CN101331456A CN101331456A CNA2006800471997A CN200680047199A CN101331456A CN 101331456 A CN101331456 A CN 101331456A CN A2006800471997 A CNA2006800471997 A CN A2006800471997A CN 200680047199 A CN200680047199 A CN 200680047199A CN 101331456 A CN101331456 A CN 101331456A
- Authority
- CN
- China
- Prior art keywords
- thread
- obstacle
- affairs
- threads
- transaction memory
- 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
- 230000004888 barrier function Effects 0.000 title abstract description 7
- 238000000034 method Methods 0.000 claims description 40
- 230000001360 synchronised effect Effects 0.000 claims description 31
- 238000007689 inspection Methods 0.000 claims description 2
- 238000003860 storage Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000005055 memory storage Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 230000007717 exclusion Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000005352 clarification Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000063 preceeding effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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/466—Transaction processing
- G06F9/467—Transactional memory
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)
- Executing Machine-Instructions (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在多线程程序中,共享同步障碍的线程集合中的线程向线程集合中的各个其它线程表明该线程已经到达同步障碍,在表明之后,该线程开始基于事务存储器的事务,以及在开始基于事务存储器的事务之后,该线程越过同步障碍继续执行。
Description
有关申请的相互参照
本申请涉及转让给本发明的受让人、标题为“LOCK ELISIONWITH TRANSACTIONAL MEMORY(采用事务存储器的锁定取消)”的序号xx/xxxxx的未决美国专利申请(Attorney Docket Number(律师记录号)P22226)。
背景技术
[01]在M.Herlihy和J.Moss的“事务存储器:无锁定数据结构的体系结构支持”(Preceedings of the 20th Annual International Symposiumon Computer Architecture 20,1993)(Herlihy和Moss)中描述了通过硬件、使用事务存储器对无锁定共享数据结构的事务支持。这种方法描述了对于实现这种无锁定访问的现有多处理器高速缓存一致性协议的一组扩展。使用事务存储器的事务在本文称作事务存储器事务或者无锁定事务。
[02]障碍同步(barrier synchronization)是多线程编程、例如OpenMP系统中的一种常用范例。还可将障碍同步用于其它广泛使用的并发编程系统,包括基于以pthreads或Java实现的线程的系统。一般来说,并发计算中的障碍是多个线程或进程共享的同步点。要让多个线程越过障碍正确执行,各线程检验并发执行的所有其它线程已经到达障碍是充分的。当使用障碍的线程集合中的所有线程已经到达障碍时,作为多线程程序的连续正确执行的先决条件的某个谓词被保证为真,因而程序执行可在所有线程中继续进行。一般来说,通常结合计数器的同步变量由线程用来相互传达它们已经到达障碍。因此,对障碍变量的互斥访问可在典型实现中在障碍上强制实行串行化点,以及所有线程到达障碍之前,已经到达障碍的各线程的有效执行的挂起,因而可能降低性能。但是,由于对于越过障碍的任何其它线程的正确执行,所有线程到达障碍是充分但不是必要条件,因此,在一些情况下,即使所有线程仍未全部到达障碍,线程也能够越过障碍正确执行。
[03]已经提出涉及多线程程序和专用硬件的程序员修改的学术方法,作为提高障碍同步的性能的一种方式。例如参见Rajiv Gupta的“模糊障碍:处理器的高速同步的机制”(Proceedings of the ThirdInternational Conference on Architectural Support for ProgrammingLanguages and Operating Systems(ASPLOS III),第54-63页,Boston,Massachusetts,1989年4月3-6日,ACM Press)。
附图说明
图1示出一个实施例中的基于处理器的系统。
图2示出一个实施例中的处理。
具体实施方式
[04]图1示出基于处理器的系统,它可包括耦合到总线110的一个或多个处理器105。或者,系统可具有作为多核处理器的处理器或者其它情况下的多个多核处理器。在一个简单示例中,总线110可耦合到系统存储器115、例如磁盘驱动器或其它存储设备120等存储设备、外围设备145。存储装置120可存储各种软件或数据。系统可经由一个或多个总线系统连接到各种外围设备145。这类外围设备还可包括显示器和打印系统,这是已知的。
[05]在一个实施例中,例如图中所示的处理器系统添加事务存储系统,它允许具有事务存储系统中高速缓存的共享数据结构的无锁定事务的执行,如Herlihy和Moss中所述。处理器105则可包括支持这种无锁定或基于事务存储器的事务的指令集体系结构。在这样一种体系结构中,这个实施例中的系统支持指令集,包括:开始事务的指令;正常提交和终止事务的指令;以及中止事务的指令。在事务中,推测性地访问所有存储单元,并缓冲所有存储器更新。在事务期间,高速缓存一致性协议表明另一个线程是否正尝试访问同一个存储单元。如果检测到任何冲突,则产生可由中止处理程序进行处理的中断。在提交时,推测性更新变为原子可见。还可由于例如超额预订硬件资源等其它原因和其它异常而终止事务执行。
[06]图1的系统只是一个示例,并且本发明不限于任何特定体系结构。对于其它体系结构的系统的特定组件的变更可包括:包含事务存储器,在一些情况下作为系统的处理器或多个处理器的组件;在其它情况不,它可以是连接到处理器的总线上的独立组件。在其它实施例中,系统可具有管理无锁定事务的附加指令。在其它实施例中,指令的实际形式或格式可能有所不同。可存在附加存储器或存储组件。大量其它变更是可能的。
[07]在一个典型的多线程程序中,可使用例如下表1所示的代码序列来实现障碍同步。
表1
[08]在表1的代码序列中,操作lockedInc是互斥的增量操作,它使最初设置为零、作为由所有线程共享的障碍同步变量的变量barrierObject的字段numberThreadsAtBarrier递增。此外,障碍变量的字段numberThreadsInTeam的值是多线程计算中的线程数量。从以上代码序列可以看到,到达障碍的各线程首先使障碍变量递增,然后在第6至第8行的自旋锁循环(spin lock loop)中等待,直至所有线程到达障碍。这通过以下条件来表示:barrierObject→numberThreadsAtBarrier!=barrierObject→numberThreadsInTeam变为真,这是在处于计算中的每一个线程已经使字段numberThreadsAtBarrier递增、因而表明它已经到达障碍时。
[09]表1中的代码序列表示通常实现的障碍同步。众所周知,这种同步是昂贵的,因为每一个线程都需要访问共享障碍变量barrierObject,它至少必须被依次访问以便进行递增,此外还因为各线程必须在自旋锁循环中闲置和自旋,直到所有其它线程已经使障碍变量递增。
[10]在无序机中,处理器可越过barrierWait中的检验来进行内部推测,并在障碍之后推测性地执行程序指令。在这种推测期间,处理器还确保一致性;即,它确信没有其它处理器或线程正在访问它已经访问的同一个数据。但是,如果所有线程仍未全部到达障碍,则推测将在无序处理器中触发分支误预测异常,从而使所有推测性工作被放弃,并且处理器将回复到自旋锁循环中的自旋状态。
[11]在一个实施例中,可使用事务存储器的指令集体系结构支持的属性,将通过硬件支持事务存储器的基于处理器的系统用于越过障碍进行推测性地执行。这在不支持无序执行的处理器中实现越过同步障碍的推测性执行。甚至在支持无序执行的处理器中,这允许越过障碍的多线程程序的推测性执行,而无需冒如上所述放弃无序处理器推测的风险。
[12]图2示出一个这种实施例中的处理。在该图中,该处理根据事务存储器来实现推测性障碍,在210开始。在220,例如通过检查障碍同步变量,多线程程序首先检查是否所有线程已经到达障碍。由于这个动作是读动作,所以它不需要是互斥的。如果所有线程已经到达障碍,则无需推测性执行,并且在230,正常执行可继续进行,直到在295终止。
[13]但是,如果所有线程仍未全部到达障碍,则程序越过障碍对于这个线程继续开始推测性执行。为了确保保护推测性执行不受其它线程干扰,在240,程序调用指令来开始体系结构所提供的基于事务存储器的事务。然后,在255,它推测性地执行程序的其余部分,直到在255被需要事务中止处理程序关注的外部事件中断为止。在一种情况下,这个外部事件是专用于事务存储系统中的推测性执行的硬件资源的耗尽。由于只有有限数量的硬件可用于事务存储器支持、因而用于推测性执行,因此最终将产生这种中断。如上所述,在其它情况下,还有可能的是,由于推测中的数据误差、例如使推测性执行被折衷的线程之间的干扰而产生这个中断。在各种情况下,在260,中断将控制转移到中止处理程序。应当注意,中断只将控制转移到该处理程序,并且在这里也不存在中止和回滚或者事务的提交。然后,在270由该中止处理程序接管。首先,处理程序确定调用它的中断的原因。如果中断事件只是专用于事务存储器的硬件资源的耗尽,则仍未发生影响推测性计算的正确性的误差。随后,在280,通过读取同步变量,处理程序检查是否所有线程已经到达障碍。如果在280,仍存在未到达障碍的线程,则线程必须在自旋锁循环中等待,因为在这里,用于推测的任一个硬件资源可能不再是可用的,或者可能已经出现推测相关误差;即,在任何情况下,没有其它推测是可行的。一旦所有线程已经到达该障碍,则可在290提交该事务,并且在230,可继续进行正常执行。在这里,所有先前的推测性执行不再是推测性的,即,它变为有效,并且它的副作用是所有其它线程可见的。在该备选情况下,在270,结果可能是,由于推测中的实际误差所创建的事件、例如不同线程对已经由这个线程读取的变量进入写入的尝试,而调用中止处理程序。在这种情况下,推测需要被回滚。这通过在285中止事务并返回到220的过程开始处来进行。该中止放弃所有推测性执行,因为没有发生提交动作。在这里,线程当然可再一次重试推测性执行。
[14]应当注意,当中止处理程序在280的循环中等待时,可能发生其它数据冲突。这则会导致在270的处理程序的重入调用。如果重入调用由误推测引起,则处理程序将按照上述方式进行操作,并引起推测的回滚。
[15]最后,推测性执行或者常规执行将会成功,并且将到达在230的越过障碍的正常执行。
[16]应当清楚地知道,图2所示的处理只是一个实施例的处理。其它实施例可以有所不同。例如,在描述其它实施例时,具体术语可能不同:术语“线程”可由“进程”取代,术语“程序”由“计算”取代,术语“中断”由“陷阱(trap)”取代,等等,这是本领域已知的。可改变所示的控制流程,以便在其它实施例由技术人员实现等效程序流程。许多这类变更是可能的。
[17]表1和表1列示用于实现以上一般描述的推测性障碍的伪代码。
表2
1 int speculativeBarrierAbortHandler()2 (3 if(TRSR.failureReason!=HWResourceOverflow)(4 abort_transaction ;5 }6 barrier=getSpeculativeBarrier();7 epoch=getSpeculativeEpoch();8 while(epoch== barrier→epoch);9 commit_transaction;10 return;11 } |
表3
[18]在表2中,示出在一个实施例中进一步阐明由多线程程序进行的处理的伪代码。在第3-4行,代码首先检查它是否已经处于某个其它临界区之内,并且在情况是那样时中止,从而在第4行退出。这是因为障碍一般不应当在任何现有原子区域中出现。在第7行,程序判定(court)检查这个程序是否已经越过先前遇到的障碍进行了推测,在那种情况下,函数调用getSpeculativeBarrierDepth将返回值“真”。在这个特定情况不,其它推测性执行是不可能的,因此,第8至18行的代码一般执行传统的障碍变量测试和自旋锁循环,并在障碍上等待。在该代码中,使用本领域已知的并称作“戳记(epoch)”同步变量的特定类型的障碍同步变量。具体来说,在第10行,非事务代码首先检查是否留下要进入的其它线程。如果情况是这样,则执行第12行的自旋锁循环,直到障碍可用为止。如果在第10行,代码检测到它是要进入障碍的最后一个线程,则它完成其障碍等待,并且可继续进行。
[19]但是,如果第7行的代码发现它先前没有越过所遇到的障碍进行推测,则代码的事务阶段可开始。可以注意到,表2中第21至38行的代码大体上对应于图2的框220-260。如同非事务情况中那样,第23行的代码首先检查是否留下要进入障碍的其它线程。如果存在这类线程,则推测性事务开始。第24行的BeginTransaction调用是这个实现的下的事务存储器体系结构所提供的指令的包装器(wrapper)。在这个实施例中,BeginTransaction调用在成功时产生特定代码TransactionStarted。如果事务已经正确开始,则代码将关于这个障碍的信息存储在该执行线程本地的存储单元中或者文献中所说的线程本地存储装置(TLS)中。具体来说,在第25至27行,代码存储这个特定线程已经越过障碍进行推测的事实、对障碍变量的引用以及检查是否所有线程已经命中障碍的戳记的引用。然后它在第28行返回,这表示线程这时可继续推测性地执行,直到发生中止。另一方面,在第22行,这个函数可能发现它是尝试进入该障碍的最后一个线程。因此,推测性执行不是必要的,并且代码可以如同在第36至38行的正常非推测性情况中那样返回。
[20]表3示出这个实施例中的中止处理程序的伪代码,它在来自表2的推测性事务代码开始的事务期间所产生的事务存储器相关事件的上下文中进行操作。在已经发生与事务存储器相关的、需要这个处理程序关注的事件时,事务存储器硬件体系结构将控制转移到这个处理程序。一般来说,如前面所述,该事件可以是:支持推测性执行而分配的硬件资源或事务存储器资源的耗尽;不同的线程对于存储单元的冲突访问所引起的数据一致性错误,这个进程已经对该存储单元写入或者这个进程已经从该存储单元中推测性地读取;或者与事务存储器相关的某种其它外部错误条件。表3中的伪代码大体上对应于图2中的框270-290。表3中的处理程序在第3行首先确定将控制转移到处理程序的中断是由硬件资源耗尽还是由另一种错误产生。如果该事件由与推测性执行的正确性相关的错误、如数据一致性错误所引起,则在第3行的测试为真,并且处理程序在第4行,通过中止先前开始的事务,来使推测性执行中止并回滚。否则,推测性执行成功,但这时处理程序需要等待其它线程完成,因为当没有充分的资源用于进一步推测时,它可能不再推测性地进行操作。为此,处理程序在第6和第7行分别恢复对障碍和戳记的引用,然后在第8行使用它们在自旋锁循环中等待,直到所有其它线程完成。一旦所有线程已经到达障碍,则在第9行,处理程序提交这个线程开始的事务,以及推测性进行的所有改变在这时都是有效的,并且变为原子可见。
[21]本领域的技术人员应当清楚地知道,上述表只是一个实施例中的示范性代码段。在其它实施例中,实现语言可以是另一种语言、例如C或Java,所使用的变量名可能有所不同,并且所定义或调用的所有函数的名称可能有所不同。实现以上列示的程序所完成功能的程序的结构和逻辑可在不改变输入和输出关系的条件下任意改变,这是已知的。
[22]为了便于说明,以上描述中阐述了大量具体细节,以提供对所述实施例的充分理解,但是,本领域的技术人员会理解,即使没有这些具体细节也可实施其它许多实施例。
[23]以上详细说明的某些部分根据对基于处理器的系统中的数据位的操作的算法和符号表示来提供。这些算法描述和表示是本领域的技术人员用来向本领域的其它技术人员最有效地传达其工作主旨的方式。操作是要求物理量的物理处理的那些操作。这些量可采取能够被存储、传递、组合、比较以及以其它方式处理的电、磁、光或其它物理信号的形式。主要为了一般使用的原因,将这些信号称作位、值、元素、符号、字符、项、编号等,已经证明有时非常便利。
[24]但应当记住,所有这些及类似的项均与适当的物理量相关联,并且只是应用于这些量的便捷标签。若没有明确说明,则从描述中清楚地知道,诸如“执行”或“处理”或“计算”或者“确定”等术语可指基于处理器的系统或类似电子计算设备的动作和过程,其中所述基于处理器的系统或类似电子计算设备处理表示为基于处理器的系统的存储装置或者其它这类信息存储、传送或显示设备中的物理量的数据并将其转换为以类似方式表示的其它数据。
[25]在实施例的描述中,参照了附图。附图中,相似的标号在所有几幅视图中描述基本相似的组件。可采用其它实施例,并且可进行结构、逻辑和电气改变。此外,大家要理解,各种实施例虽然有所不同,但不一定相互排斥。例如,在一个实施例中描述的特定功能、结构或特性可包含在其它实施例中。
[26]此外,在处理器中实现的一实施例的设计可经过从创建到模拟直到制造的各种阶段。表示设计的数据可通过多种方式来表示设计。首先,如在模拟中有用的那样,硬件可采用硬件描述语言或者另一种功能描述语言来表示。另外,采用逻辑和/或晶体管门电路的电路级模型可在设计过程的某些阶段产生。此外,在某个阶段,大部分设计达到表示硬件模型中的各种设备的物理设置的数据级。在采用传统半导体制造技术的情况下,表示硬件模型的数据可以是指定用于生产集成电路的掩模的不同掩模层上的各种特征是否存在的数据。在该设计的任何表示中,数据可存储在任何形式的机器可读介质中。经调制或者以其它方式产生以便传送这种信息的光或电波、存储器或者磁或光存储装置、如盘可以是机器可读介质。这些介质的任一种可“携带”或“表明”设计或软件信息。在传送表明或携带代码或设计的电载波,达到执行电信号的复制、缓冲或重传时,可能产生新的副本。因此,通信提供商或网络提供商可能制作构成或表示实施例的产品(载波)的副本。
[27]实施例可作为程序产品来提供,该程序产品可包括其中存储了数据的机器可读介质,所述数据在由机器访问时可使机器执行根据要求权益的主题的过程。机器可读介质可包括但不限于软盘、光盘、DVD-ROM盘、DVD-RAM盘、DVD-RW盘、DVD+RW盘、CD-R盘、CD-RW盘、CD-ROM盘以及磁光盘、ROM、RAM、EPROM、EEPROM、磁卡或光卡、闪存、或者适合于存储电子指令的其它类型的介质/机器可读介质。此外,实施例还可作为程序产品下载,其中程序可通过载波或其它传播介质中包含的数据信号、经由通信链路(例如调制解调器或网络连接)从远程数据源传递到请求设备。
[28]以最基本的形式对许多方法进行了描述,但可以在不背离要求权益的主题的基本范围的前提下,对任何一个方法添加或删除步骤,或者对任何一个所述消息添加或减少信息。本领域的技术人员非常清楚,可进行许多其它修改和变更。具体实施例的提供不是要限制要求权益的主题,而是用于对该主题进行说明。要求权益的主题的范围不是由以上提供的具体实例来确定,而是仅由以下权利要求来确定。
Claims (22)
1.在多线程程序中,一种方法包括:
共享同步障碍的线程集合中的线程,向所述线程集合中的各个其它线程表明所述线程已经到达所述同步障碍;
在所述表明步骤之后,所述线程开始基于事务存储器的事务;以及
在开始所述基于事务存储器的事务之后,所述线程越过所述同步障碍继续执行。
2.如权利要求1所述的方法,还包括:
如果所述线程已从所述集合中的各个其它线程接收到关于那些线程已经到达所述同步障碍的指示,以及如果越过所述同步障碍的执行没有引起数据一致性错误,则所述线程提交所述基于事务存储器的事务。
3.如权利要求2所述的方法,还包括:
如果越过所述同步障碍的执行引起了数据一致性错误,则所述线程中止所述事务,并回滚越过所述同步障碍的执行。
4.如权利要求1所述的方法,其中,向所述线程集合中的各个其它线程表明所述线程已经到达所述同步障碍的步骤还包括:更新障碍变量。
5.如权利要求3所述的方法,其中,所述线程检查所述线程是否已从所述集合中的各个其它线程接收到关于那些线程已经到达所述同步障碍的指示的步骤还包括:所述线程检查所述障碍变量。
6.如权利要求1所述的方法,其中,所述多线程程序是Java程序。
7.如权利要求2所述的方法,其中,所述多线程程序是Java程序。
8.如权利要求1所述的方法,其中,所述多线程程序是pthreads程序。
9.如权利要求2所述的方法,其中,所述多线程程序是pthreads程序。
10.一种机器可读介质,其上存储了在由机器访问时使所述机器执行在多线程程序中的一种方法的数据,所述方法包括:
共享同步障碍的线程集合中的线程,向所述线程集合中的各个其它线程表明所述线程已经到达所述同步障碍;
在所述表明步骤之后,所述线程开始基于事务存储器的事务;以及
在开始所述基于事务存储器的事务之后,所述线程越过所述同步障碍继续执行。
11.如权利要求10所述的机器可读介质,其中,所述方法还包括:
如果所述线程从所述集合中的各个其它线程接收到关于它们已经到达所述同步障碍的指示,以及如果越过所述同步障碍的执行没有引起数据一致性错误,则所述线程提交所述基于事务存储器的事务。
12.如权利要求11所述的机器可读介质,其中,所述方法还包括:如果越过所述同步障碍的执行引起了数据一致性错误,则所述线程中止所述事务,并回滚越过所述同步障碍的执行。
13.如权利要求10所述的机器可读介质,其中,向所述线程集合中的各个其它线程表明所述线程已经到达所述同步障碍的步骤还包括:更新障碍变量。
14.如权利要求12所述的机器可读介质,其中,所述线程检查它是否已从所述集合中的各个其它线程接收到关于它已经到达所述同步障碍的指示的步骤还包括:所述线程检查所述障碍变量。
15.如权利要求10所述的机器可读介质,其中,所述多线程程序是Java程序。
16.如权利要求11所述的机器可读介质,其中,所述多线程程序是Java程序。
17.如权利要求10所述的机器可读介质,其中,所述多线程程序是pthreads程序。
18.如权利要求11所述的机器可读介质,其中,所述多线程程序是pthreads程序。
19.一种包括事务存储器体系结构的系统,包括:
处理器,执行程序,并且还可操作以发起基于事务存储器的事务;
提交基于事务存储器的事务;以及
中止基于事务存储器的事务;
存储器;
事务存储器体系结构;
处理器,执行所述存储器中存储的、共享同步障碍的线程集合中的线程,所述线程
向所述线程集合中的各个其它线程表明所述线程已经到达所述同步障碍;
在所述表明步骤之后,发起基于事务存储器的事务;以及
在开始所述基于事务存储器的事务之后,越过所述同步障碍继续执行。
20.如权利要求19所述的系统,其中:
如果所述线程已从所述集合中的每个其它线程接收到关于它已经到达所述同步障碍的指示,以及如果越过所述同步障碍的执行没有引起数据一致性错误,则所述线程还将提交所述基于事务存储器的事务。
21.如权利要求20所述的系统,其中,如果越过所述同步障碍的执行引起了数据一致性错误,则所述线程还将中止所述事务,并回滚越过所述同步障碍的执行。
22.如权利要求19所述的系统,其中,所述存储器还包括DRAM。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/305,506 | 2005-12-16 | ||
US11/305,506 US20070143755A1 (en) | 2005-12-16 | 2005-12-16 | Speculative execution past a barrier |
PCT/US2006/047141 WO2007075313A1 (en) | 2005-12-16 | 2006-12-06 | Speculative execution past a barrier |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101331456A true CN101331456A (zh) | 2008-12-24 |
CN101331456B CN101331456B (zh) | 2013-04-24 |
Family
ID=37905881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800471997A Expired - Fee Related CN101331456B (zh) | 2005-12-16 | 2006-12-06 | 用于多线程程序的方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20070143755A1 (zh) |
EP (1) | EP1960880A1 (zh) |
CN (1) | CN101331456B (zh) |
WO (1) | WO2007075313A1 (zh) |
Families Citing this family (92)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070186056A1 (en) * | 2006-02-07 | 2007-08-09 | Bratin Saha | Hardware acceleration for a software transactional memory system |
US7930695B2 (en) * | 2006-04-06 | 2011-04-19 | Oracle America, Inc. | Method and apparatus for synchronizing threads on a processor that supports transactional memory |
GB0613289D0 (en) * | 2006-07-04 | 2006-08-16 | Imagination Tech Ltd | Synchronisation of execution threads on a multi-threaded processor |
US8132158B2 (en) * | 2006-12-28 | 2012-03-06 | Cheng Wang | Mechanism for software transactional memory commit/abort in unmanaged runtime environment |
US7802136B2 (en) * | 2006-12-28 | 2010-09-21 | Intel Corporation | Compiler technique for efficient register checkpointing to support transaction roll-back |
US8719807B2 (en) * | 2006-12-28 | 2014-05-06 | Intel Corporation | Handling precompiled binaries in a hardware accelerated software transactional memory system |
US8185698B2 (en) * | 2007-04-09 | 2012-05-22 | Bratin Saha | Hardware acceleration of a write-buffering software transactional memory |
US9280397B2 (en) * | 2007-06-27 | 2016-03-08 | Intel Corporation | Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata |
US8140773B2 (en) | 2007-06-27 | 2012-03-20 | Bratin Saha | Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM |
US9251291B2 (en) | 2007-11-29 | 2016-02-02 | Microsoft Technology Licensing, Llc | Data parallel searching |
US8739163B2 (en) * | 2008-03-11 | 2014-05-27 | University Of Washington | Critical path deterministic execution of multithreaded applications in a transactional memory system |
US8694997B2 (en) * | 2007-12-12 | 2014-04-08 | University Of Washington | Deterministic serialization in a transactional memory system based on thread creation order |
US8171476B2 (en) | 2008-02-01 | 2012-05-01 | International Business Machines Corporation | Wake-and-go mechanism with prioritization of threads |
US8145849B2 (en) * | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Wake-and-go mechanism with system bus response |
US8640141B2 (en) | 2008-02-01 | 2014-01-28 | International Business Machines Corporation | Wake-and-go mechanism with hardware private array |
US8015379B2 (en) * | 2008-02-01 | 2011-09-06 | International Business Machines Corporation | Wake-and-go mechanism with exclusive system bus response |
US8127080B2 (en) | 2008-02-01 | 2012-02-28 | International Business Machines Corporation | Wake-and-go mechanism with system address bus transaction master |
US8880853B2 (en) | 2008-02-01 | 2014-11-04 | International Business Machines Corporation | CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock |
US8225120B2 (en) | 2008-02-01 | 2012-07-17 | International Business Machines Corporation | Wake-and-go mechanism with data exclusivity |
US8788795B2 (en) | 2008-02-01 | 2014-07-22 | International Business Machines Corporation | Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors |
US8341635B2 (en) | 2008-02-01 | 2012-12-25 | International Business Machines Corporation | Hardware wake-and-go mechanism with look-ahead polling |
US8732683B2 (en) | 2008-02-01 | 2014-05-20 | International Business Machines Corporation | Compiler providing idiom to idiom accelerator |
US8386822B2 (en) | 2008-02-01 | 2013-02-26 | International Business Machines Corporation | Wake-and-go mechanism with data monitoring |
US8316218B2 (en) | 2008-02-01 | 2012-11-20 | International Business Machines Corporation | Look-ahead wake-and-go engine with speculative execution |
US8516484B2 (en) | 2008-02-01 | 2013-08-20 | International Business Machines Corporation | Wake-and-go mechanism for a data processing system |
US8312458B2 (en) | 2008-02-01 | 2012-11-13 | International Business Machines Corporation | Central repository for wake-and-go mechanism |
US8612977B2 (en) | 2008-02-01 | 2013-12-17 | International Business Machines Corporation | Wake-and-go mechanism with software save of thread state |
US8452947B2 (en) * | 2008-02-01 | 2013-05-28 | International Business Machines Corporation | Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms |
US8725992B2 (en) | 2008-02-01 | 2014-05-13 | International Business Machines Corporation | Programming language exposing idiom calls to a programming idiom accelerator |
US8250396B2 (en) * | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Hardware wake-and-go mechanism for a data processing system |
US8032736B2 (en) * | 2008-02-26 | 2011-10-04 | International Business Machines Corporation | Methods, apparatus and articles of manufacture for regaining memory consistency after a trap via transactional memory |
US8972794B2 (en) * | 2008-02-26 | 2015-03-03 | International Business Machines Corporation | Method and apparatus for diagnostic recording using transactional memory |
US8789057B2 (en) * | 2008-12-03 | 2014-07-22 | Oracle America, Inc. | System and method for reducing serialization in transactional memory using gang release of blocked threads |
US8914620B2 (en) | 2008-12-29 | 2014-12-16 | Oracle America, Inc. | Method and system for reducing abort rates in speculative lock elision using contention management mechanisms |
US8103838B2 (en) * | 2009-01-08 | 2012-01-24 | Oracle America, Inc. | System and method for transactional locking using reader-lists |
US8230201B2 (en) | 2009-04-16 | 2012-07-24 | International Business Machines Corporation | Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system |
US8886919B2 (en) | 2009-04-16 | 2014-11-11 | International Business Machines Corporation | Remote update programming idiom accelerator with allocated processor resources |
US8082315B2 (en) * | 2009-04-16 | 2011-12-20 | International Business Machines Corporation | Programming idiom accelerator for remote update |
US8145723B2 (en) | 2009-04-16 | 2012-03-27 | International Business Machines Corporation | Complex remote update programming idiom accelerator |
US8924984B2 (en) * | 2009-06-26 | 2014-12-30 | Microsoft Corporation | Lock-free barrier with dynamic updating of participant count |
US8225139B2 (en) * | 2009-06-29 | 2012-07-17 | Oracle America, Inc. | Facilitating transactional execution through feedback about misspeculation |
US8904406B2 (en) * | 2009-07-30 | 2014-12-02 | Hewlett-Packard Development Company, L.P. | Coordination of tasks executed by a plurality of threads using two synchronization primitive calls |
US8832712B2 (en) * | 2009-09-09 | 2014-09-09 | Ati Technologies Ulc | System and method for synchronizing threads using shared memory having different buffer portions for local and remote cores in a multi-processor system |
US8341643B2 (en) * | 2010-03-29 | 2012-12-25 | International Business Machines Corporation | Protecting shared resources using shared memory and sockets |
US8453120B2 (en) | 2010-05-11 | 2013-05-28 | F5 Networks, Inc. | Enhanced reliability using deterministic multiprocessing-based synchronized replication |
US9880848B2 (en) * | 2010-06-11 | 2018-01-30 | Advanced Micro Devices, Inc. | Processor support for hardware transactional memory |
WO2012124078A1 (ja) * | 2011-03-16 | 2012-09-20 | 富士通株式会社 | 同期方法、マルチコアプロセッサシステム、および同期システム |
US9830158B2 (en) * | 2011-11-04 | 2017-11-28 | Nvidia Corporation | Speculative execution and rollback |
US8972704B2 (en) * | 2011-12-15 | 2015-03-03 | International Business Machines Corporation | Code section optimization by removing memory barrier instruction and enclosing within a transaction that employs hardware transaction memory |
US9367316B2 (en) | 2012-03-16 | 2016-06-14 | International Business Machines Corporation | Run-time instrumentation indirect sampling by instruction operation code |
US9250902B2 (en) | 2012-03-16 | 2016-02-02 | International Business Machines Corporation | Determining the status of run-time-instrumentation controls |
US9280447B2 (en) | 2012-03-16 | 2016-03-08 | International Business Machines Corporation | Modifying run-time-instrumentation controls from a lesser-privileged state |
US9405541B2 (en) * | 2012-03-16 | 2016-08-02 | International Business Machines Corporation | Run-time instrumentation indirect sampling by address |
US9158660B2 (en) | 2012-03-16 | 2015-10-13 | International Business Machines Corporation | Controlling operation of a run-time instrumentation facility |
US9442824B2 (en) | 2012-03-16 | 2016-09-13 | International Business Machines Corporation | Transformation of a program-event-recording event into a run-time instrumentation event |
US9454462B2 (en) | 2012-03-16 | 2016-09-27 | International Business Machines Corporation | Run-time instrumentation monitoring for processor characteristic changes |
US9430238B2 (en) | 2012-03-16 | 2016-08-30 | International Business Machines Corporation | Run-time-instrumentation controls emit instruction |
US9411591B2 (en) | 2012-03-16 | 2016-08-09 | International Business Machines Corporation | Run-time instrumentation sampling in transactional-execution mode |
US9471315B2 (en) | 2012-03-16 | 2016-10-18 | International Business Machines Corporation | Run-time instrumentation reporting |
US9483268B2 (en) | 2012-03-16 | 2016-11-01 | International Business Machines Corporation | Hardware based run-time instrumentation facility for managed run-times |
US9465716B2 (en) | 2012-03-16 | 2016-10-11 | International Business Machines Corporation | Run-time instrumentation directed sampling |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
CN104541248B (zh) | 2012-07-27 | 2017-12-22 | 华为技术有限公司 | 计算系统对屏障命令的处理 |
US9311137B2 (en) * | 2012-09-28 | 2016-04-12 | International Business Machines Corporation | Delaying interrupts for a transactional-execution facility |
US9304940B2 (en) * | 2013-03-15 | 2016-04-05 | Intel Corporation | Processors, methods, and systems to relax synchronization of accesses to shared memory |
US20150067356A1 (en) * | 2013-08-30 | 2015-03-05 | Advanced Micro Devices, Inc. | Power manager for multi-threaded data processor |
JP6021112B2 (ja) * | 2013-11-28 | 2016-11-02 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 複数のスレッドで順序付きトランザクションを実行する方法、並びに、当該トランザクションを実行するためのコンピュータ及びそのコンピュータ・プログラム |
US9424072B2 (en) * | 2014-02-27 | 2016-08-23 | International Business Machines Corporation | Alerting hardware transactions that are about to run out of space |
US9348658B1 (en) * | 2014-12-12 | 2016-05-24 | Intel Corporation | Technologies for efficient synchronization barriers with work stealing support |
US10241945B2 (en) | 2015-11-05 | 2019-03-26 | International Business Machines Corporation | Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions |
US10346164B2 (en) | 2015-11-05 | 2019-07-09 | International Business Machines Corporation | Memory move instruction sequence targeting an accelerator switchboard |
US10140052B2 (en) | 2015-11-05 | 2018-11-27 | International Business Machines Corporation | Memory access in a data processing system utilizing copy and paste instructions |
US9996298B2 (en) | 2015-11-05 | 2018-06-12 | International Business Machines Corporation | Memory move instruction sequence enabling software control |
US10042580B2 (en) | 2015-11-05 | 2018-08-07 | International Business Machines Corporation | Speculatively performing memory move requests with respect to a barrier |
US10067713B2 (en) | 2015-11-05 | 2018-09-04 | International Business Machines Corporation | Efficient enforcement of barriers with respect to memory move sequences |
US10152322B2 (en) | 2015-11-05 | 2018-12-11 | International Business Machines Corporation | Memory move instruction sequence including a stream of copy-type and paste-type instructions |
US10126952B2 (en) | 2015-11-05 | 2018-11-13 | International Business Machines Corporation | Memory move instruction sequence targeting a memory-mapped device |
CN108319455A (zh) * | 2018-01-25 | 2018-07-24 | 北京国睿中数科技股份有限公司 | 多线程的程序编写方法和程序编写系统 |
US11442795B2 (en) * | 2018-09-11 | 2022-09-13 | Nvidia Corp. | Convergence among concurrently executing threads |
US11934867B2 (en) | 2020-07-23 | 2024-03-19 | Nvidia Corp. | Techniques for divergent thread group execution scheduling |
US11204774B1 (en) * | 2020-08-31 | 2021-12-21 | Apple Inc. | Thread-group-scoped gate instruction |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6173442B1 (en) * | 1999-02-05 | 2001-01-09 | Sun Microsystems, Inc. | Busy-wait-free synchronization |
US20040002974A1 (en) * | 2002-06-27 | 2004-01-01 | Intel Corporation | Thread based lock manager |
US7051026B2 (en) * | 2002-07-31 | 2006-05-23 | International Business Machines Corporation | System and method for monitoring software locks |
US7089374B2 (en) * | 2003-02-13 | 2006-08-08 | Sun Microsystems, Inc. | Selectively unmarking load-marked cache lines during transactional program execution |
US7496574B2 (en) * | 2003-05-01 | 2009-02-24 | International Business Machines Corporation | Managing locks and transactions |
US20050289143A1 (en) * | 2004-06-23 | 2005-12-29 | Exanet Ltd. | Method for managing lock resources in a distributed storage system |
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 |
US8813052B2 (en) * | 2005-12-07 | 2014-08-19 | Microsoft Corporation | Cache metadata for implementing bounded transactional memory |
-
2005
- 2005-12-16 US US11/305,506 patent/US20070143755A1/en not_active Abandoned
-
2006
- 2006-12-06 EP EP06845165A patent/EP1960880A1/en not_active Withdrawn
- 2006-12-06 CN CN2006800471997A patent/CN101331456B/zh not_active Expired - Fee Related
- 2006-12-06 WO PCT/US2006/047141 patent/WO2007075313A1/en active Application Filing
Non-Patent Citations (1)
Title |
---|
TALI MORESHET等: "Energy Reduction in Multiprocessor Systems Using Transactional Memory", 《ISLPED’05》 * |
Also Published As
Publication number | Publication date |
---|---|
US20070143755A1 (en) | 2007-06-21 |
WO2007075313A1 (en) | 2007-07-05 |
EP1960880A1 (en) | 2008-08-27 |
CN101331456B (zh) | 2013-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101331456B (zh) | 用于多线程程序的方法和设备 | |
US7870545B2 (en) | Protecting shared variables in a software transactional memory system | |
US10268579B2 (en) | Hybrid hardware and software implementation of transactional memory access | |
CN101814018B (zh) | 事务存储器(tm)系统中的读和写监控属性 | |
CN101950259B (zh) | 用于执行事务的装置、系统及方法 | |
Von Praun et al. | Object race detection | |
US8065499B2 (en) | Methods and apparatus to implement parallel transactions | |
McDonald et al. | Architectural semantics for practical transactional memory | |
US7542977B2 (en) | Transactional memory with automatic object versioning | |
US6684398B2 (en) | Monitor entry and exit for a speculative thread during space and time dimensional execution | |
US7574588B2 (en) | Time-multiplexed speculative multi-threading to support single-threaded applications | |
US8180986B2 (en) | Memory conflict detection via mapping of the physical heap to control access permissions to the memory | |
US6704862B1 (en) | Method and apparatus for facilitating exception handling using a conditional trap instruction | |
Pai et al. | RSIM reference manual | |
CN101814017A (zh) | 事务存储器系统中硬件属性的存储器模型 | |
WO2000070450A1 (en) | Supporting speculative execution by selectively versioning memory updates | |
WO2007123756A1 (en) | Array comparison and swap operations | |
WO2000079383A2 (en) | Supporting multi-dimensional space-time computing through object versioning | |
Richards et al. | Protocol-based data-race detection | |
US6460067B1 (en) | Using time stamps to improve efficiency in marking fields within objects | |
AU2009212935B2 (en) | Method and apparatus for facilitating a persistence application programming interface | |
Linder et al. | Access graphs: A model for investigating memory consistency | |
Hansen | Extending the flow logic for carmel |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1127652 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1127652 Country of ref document: HK |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130424 Termination date: 20191206 |
|
CF01 | Termination of patent right due to non-payment of annual fee |