当前位置: 首页 > 专利查询>英特尔公司专利>正文

越过障碍的推测性执行制造技术

技术编号:2821549 阅读:141 留言:0更新日期:2012-04-11 18:40
在多线程程序中,共享同步障碍的线程集合中的线程向线程集合中的各个其它线程表明该线程已经到达同步障碍,在表明之后,该线程开始基于事务存储器的事务,以及在开始基于事务存储器的事务之后,该线程越过同步障碍继续执行。

【技术实现步骤摘要】
【国外来华专利技术】越过障碍的推测性执行有关申请的相互参照本申请涉及转让给本专利技术的受让人、标题为"LOCK ELISION WITH TRANSACTIONAL MEMORY(采用事务存储器的锁定取消)"的 序号xx/xxxxx的未决美国专利申请(Attomey Docket Number(律师记录 号)P22226)。
技术介绍
在M. Herlihy和J. Moss的"事务存储器无锁定数据结构的 体系结构支持,,(Preceedings of the 20th Annual International Symposium on Computer Architecture 20, 1993)(Heriihy和Moss)中描迷了通过硬件、 使用事务存储器对无锁定共享数据结构的事务支持。这种方法描述了 对于实现这种无锁定访问的现有多处理器高速緩存一致性协议的一组 扩展。使用事务存储器的事务在本文称作事务存储器事务或者无锁定 事务。 障碍同步(barrier synchronization)是多线程编程、例如 OpenMP系统中的一种常用范例。还可将障碍同步用于其它广泛使用 的并发编程系统,包括基于以pthreads或Java实现的线程的系统。一 般来说,并发计算中的障碍是多个线程或进程共享的同步点。要让多 个线程越过障碍正确执行,各线程4全验并发执行的所有其它线程已经 到达障碍是充分的。当使用障碍的线程集合中的所有线程已经到达障 碍时,作为多线程程序的连续正确执行的先决条件的某个谓词4皮保证 为真,因而程序执行可在所有线程中继续进行。一般来说,通常结合 计数器的同步变量由线程用来相互传达它们已经到达障碍。因此,对 障碍变量的互斥访问可在典型实现中在障碍上强制实行串行化点,以及所有线程到达障碍之前,已经到达障碍的各线程的有效执行的挂起, 因而可能降低性能。但是,由于对于越过障碍的任何其它线程的正确 执行,所有线程到达障碍是充分但不是必要条件,因此,在一些情况 下,即使所有线程仍未全部到达障碍,线程也能够越过障碍正确执行。 已经提出涉及多线程程序和专用硬件的程序员修改的学术方法,作为提高障碍同步的性能的一种方式。例如参见Rajiv Gupta的 "模糊障碍处理器的高速同步的机制"(Proceedings of the Third International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS III),第54-63页,Boston, Massachusetts, 1989年4月3-6日,ACM Press)。附图说明图1示出一个实施例中的基于处理器的系统。 图2示出一个实施例中的处理。具体实施方式图1示出基于处理器的系统,它可包括耦合到总线110的一 个或多个处理器105。或者,系统可具有作为多核处理器的处理器或 者其它情况下的多个多核处理器。在一个简单示例中,总线110可耦 合到系统存储器115、例如磁盘驱动器或其它存储设备120等存储设 备、外围设备145。存储装置120可存储各种软件或数据。系统可经 由一个或多个总线系统连接到各种外围设备145。这类外围设备还可 包括显示器和打印系统,这是已知的。在一个实施例中,例如图中所示的处理器系统添加事务存4诸 系统,它允许具有事务存储系统中高速緩存的共享数据结构的无锁定 事务的执行,如Herlihy和Moss中所述。处理器105则可包括支持这 种无锁定或基于事务存储器的事务的指令集体系结构。在这样一种体 系结构中,这个实施例中的系统支持指令集,包括开始事务的指令;正常提交和终止事务的指令;以及中止事务的指令。在事务中,推测 性地访问所有存储单元,并緩冲所有存储器更新。在事务期间,高速 緩存一致性协议表明另一个线程是否正尝试访问同一个存储单元。如 果检测到任何冲突,则产生可由中止处理程序进行处理的中断。在提 交时,推测性更新变为原子可见。还可由于例如超额预订硬件资源等 其它原因和其它异常而终止事务执行。图l的系统只是一个示例,并且本专利技术不限于任何特定体系结构。对于其它体系结构的系统的特定组件的变更可包括包含事务 存储器,在一些情况下作为系统的处理器或多个处理器的组件;在其 它情况不,它可以是连接到处理器的总线上的独立组件。在其它实施 例中,系统可具有管理无锁定事务的附加指令。在其它实施例中,指 令的实际形式或格式可能有所不同。可存在附加存储器或存储组件。 大量其它变更是可能的。在一个典型的多线程程序中,可使用例如下表1所示的代码 序列来实现障碍同步。<table>table see original document page 7</column></row><table>表l在表1的代码序列中,操作lockedlnc是互斥的增量操作, 它使最初设置为零、作为由所有线程共享的障碍同步变量的变量 barrierObject的字段mmiberThreadsAtBarrier递增。此外,障碍变量的 字段numberThreadsInTeam的值是多线程计算中的线程数量。从以上 代码序列可以看到,到达障碍的各线程首先使障碍变量递增,然后在第6至第8行的自旋锁循环(spin lock loop)中等待,直至所有线程到达 障碍。这通过以下条件来表示barrierObject->numberThreadsAtBarrier !=barrierObject->numberThreadsI nTeam变为真,这是在处于计算中的每 一 个线程已经使字段 numberThreadsAtBarrier递增、固而表明它已经到达障碍时。表l中的代码序列表示通常实现的障碍同步。众所周知,这 种同步是昂贵的,因为每一个线程都需要访问共享障碍变量 barrierObject,它至少必须祐L依次访问以便进行递增,此外还因为各线 程必须在自旋锁循环中闲置和自旋,直到所有其它线程已经4吏障碍变 量递增。在无序机中,处理器可越过barrierWait中的枱r验来进4亍内部推测,并在障碍之后推测性地执行程序指令。在这种推测期间,处理 器还确保一致性;即,它确信没有其它处理器或线程正在访问它已经 访问的同一个数据。但是,如果所有线程仍未全部到达障碍,则推测 将在无序处理器中触发分支误预测异常,从而使所有推测性工作祐j文 弃,并且处理器将回复到自旋锁循环中的自旋状态。在一个实施例中,可使用事务存储器的指令集体系结构支持 的属性,将通过硬件支持事务存储器的基于处理器的系统用于越过障 碍进行推测性地执行。这在不支持无序执行的处理器中实现越过同步 障碍的推测性执行。甚至在支持无序执行的处理器中,这允许越过障 碍的多线程程序的推测性执行,而无需冒如上所述;^文弃无序处理器推 测的风险。图2示出一个这种实施例中的处理。在该图中,该处理根据 事务存储器来实现推测性障碍,在210开始。在220,例如通过检查 障碍同步变量,多线程程序首先检查是否所有线程已经到达障碍。由 于这个动作是读动作,所以它不需要是互斥的。如果所有线程已经本文档来自技高网...

【技术保护点】
在多线程程序中,一种方法包括: 共享同步障碍的线程集合中的线程,向所述线程集合中的各个其它线程表明所述线程已经到达所述同步障碍; 在所述表明步骤之后,所述线程开始基于事务存储器的事务;以及 在开始所述基于事务存储器的事务之后,所述线程越过所述同步障碍继续执行。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:B萨哈A阿德尔塔巴塔拜
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1