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

用于增强线程级推测的原语制造技术

技术编号:3997390 阅读:230 留言:0更新日期:2012-04-11 18:40
一种处理器可以包括地址监控表和原子更新表以支持推测线程。该处理器还可以包括一个或多个寄存器以保持与推测线程的执行相关的状态。该处理器可以支持一个或多个下列原语:将状态写入寄存器的指令,对提交所缓冲的存储器更新进行触发的指令,从状态寄存器读取状态的指令,和/或清除与陷阱/异常/中断处理相关联的状态位之一的指令。还描述和声明了其它实施例。

【技术实现步骤摘要】

本公开总体上涉及信息处理系统,更具体地,涉及支持线程级推测。
技术介绍
多线程逐渐得到硬件上的支持。例如,在一种方式中,多处理器系统(诸如单芯片 多处理器(“CMP”)系统)中的处理器每个都可以并发地运行多个软件线程中的一个。在 被称为同时多线程(“SMT”)的另一种方式中,单个物理处理器看起来像是多个逻辑处理器 那样操作系统和用户程序。对于SMT,能够在单个处理器上同时启动并执行多个软件线程而 无需切换。也就是,每个逻辑处理器维护一整套架构状态,但是该物理处理器的许多其它资 源都是共享的,比如高速缓存、执行单元、分支预测器、控制逻辑和总线。因此,对于SMT来 说,来自多个软件线程的指令并发地在每个逻辑处理器上执行。对于诸如SMT和/或CMP系统这样的支持软件线程并发执行的系 统,一个应用程 序可以被并行化为多线程代码以利用该系统的并发执行能力。多线程应用程序的线程之间 可能需要通信和同步,这通常是通过共享存储器来完成的。另外,通过将单线程程序组织为 多个线程然后并发地运行这些线程,每个线程在单独一个线程单元上运行,该单线程程序 也可以被并行化为多线程代码。当在对这样的单线程程序进行并行化处理期间作出关于依 赖性的某些假设时,该技术有时被称为推测多线程(speculative multithreading)。为了提高多线程程序的性能和/或使其更易于编写,可以使用线程级推测。线程 级推测指的是推测地确定一个线程的指令块性能。也就是,该线程执行这些指令,而其他线 程不被允许看到这些指令的结果,直到该线程决定提交或丢弃(也称为放弃)该推测地完 成的工作。通过提供用于缓存和包含作为推测的指令块的一部分而完成的存储器更新的能 力,处理器能够使线程级推测更高效。存储器更新可以被缓存,直到被指示执行或丢弃所推 测的存储器更新。程序可能希望推测的一件事情是,一个代码块是否依赖于并发地运行在其它线程 上的其它代码。处理器通过为检测依赖性提供支持,能够使得该推测更高效。例如,处理器 可以提供支持以检测一个推测的代码块是否读取随后要被另一个并发的线程修改的任意 存储单元。
技术实现思路
考虑到上述问题而设计了本专利技术。根据一个方面,提供了一种方法,包括并发地执行对存储器的公共逻辑视图进行 共享的多个线程;挂起所述多个线程中除第一线程以外的所有其它线程的执行,以便所述 第一线程能够原子地执行指令块;其中,所述挂起是由所述第一线程调用硬件机制的动作 触发的;以及在所述第一线程完成所述指令块的原子执行之后,恢复所述其它线程。根据另一个方面,提供了一种装置,包括执行资源,用于执行原子块;状态寄存器,用于保持陷阱字段,其中,所述陷阱字段将响应于在所述原子块的执行期间发生的中断而被更新为陷阱值,监控硬件,用于监控在所述原子块的执行期间加载的地址;缓存硬件, 用于对在所述原子块的执行期间的写操作进行缓存,其中,所述监控硬件和所述缓存硬件 用于在对在所述原子块的执行期间发生的所述中断进行处理期间维持持久状态,并且其 中,所述执行资源用于,响应于在处理所述中断之后所述状态寄存器的陷阱字段未保持所 述陷阱值,恢复所述原子块的执行而不使所述事务失败。根据再一个方面,提供了一种装置,包括执行资源,用于并行地执行多个线程,所 述多个线程中的每一个都共享存储器的公共逻辑视图;硬件机制,用于检测与所述多个线 程中的第一线程相关联的触发事件,其中,响应于检测到所述触发事件,所述多个线程中除 所述第一线程以外的每一个线程被挂起,以使得所述执行资源能够执行来自所述第一线程 的指令原子块;其中,在执行完来自所述第一线程的指令原子块之后,所述执行资源恢复执 行所述多个线程中每一个被挂起的线程。附图说明参考下列附图,可以理解本专利技术的实施例,在附图中相同或相似的单元用相同或 相似的数字标明。这些附图并不是要进行限制,而是被提供用来说明系统、方法和机制的选 定实施例,以便提供具有事务执行支持的推测多线程。图1是示出一般的并行编程方法的图形表示的框图。图2是说明根据本专利技术的至少一个实施例的处理器的选定特性的框图。图3、4和5是说明了用于执行具有事务执行支持的推测多线程的至少一个实施例 的数据和控制流的流程图。图6是用于确定事务块的执行已失败的机制的至少一个实施例的数据流图。图7是说明能够执行所公开的技术的系统的至少一个实施例的框图。图8是说明包括地址监控表和原子更新表以支持事务执行的处理器的至少一个 实施例的框图。具体实施例方式下面的说明描述了用于为线程级推测提供硬件支持的方法、系统和机制的选定实 施例。这里所述的装置、系统和方法实施例可以用于单核或多核多线程系统。在下面的说明 中,阐述了大量具体细节,例如处理器类型、多线程环境、系统配置、数据结构、指令助记符 以及语义,以便提供对本专利技术的实施例的更透彻的理解。然而,本领域技术人员可以理解, 也可以无需这样的特定细节而实施本专利技术。此外,并未详细示出一些公知的结构、电路等, 以免不必要地模糊本专利技术。对于采用线程级推测的多线程工作负荷,并发执行的线程的至少一部分(如果不 是全部的话)可以共享相同的存储空间。如这里所使用的,术语“协作线程(cooperative threads) ”描述了共享相同的存储空间的一组线程。由于协作线程共享存储空间,它们可以 读取和/或写入相同的存储项。因此,为了进行正确的、有意义的工作,并发执行的协作线 程应该被彼此同步。图1是以图形形式说明两个协作线程125、126的框图,这两个协作线程125、126共享存储器的公共逻辑视图。这样的共享存储器多处理范例可以被用于称为并行编程的方 法。根据该方法,应用程序员可以将一个软件程序(有时称为“应用程序”或“进程”)拆 分成要并发运行的多个线程,以便表示该软件程序的并行化。也就是,单线程程序(或“进 程”)120可以被分成可以并发执行的两个线程126、125。图1说明了每个线程125、126分别具有自己的应用和系统状态202a、202b。与特 定进程120相关联的协作线程125、126共享存储器的特定逻辑视图204。因此,对于至少一 个实施例,协作线程125、126每个都可以共享由操作系统为进程120构建的虚拟存储器的 相同视图,并且可以看到彼此的虚拟地址空间。为了简化讨论,图1仅说明了进程120的两个线程125、126。然而,这样的示例说 明不应被理解为限制性的。与进程120相关联的协作线程的数目可以多于两个。与进程 120相关联的线程的数目的上限可以由操作系统(OS)程序(未示出)来限定。已经设计出各种方法来处理协作线程的存储器访问的同步。一种处理协作线程的 同步的通常方法是使用存储器锁。存储器锁可以用于保证特定线程对于特定代码段的共享 数据具有排它的访问权。在传统的多线程算法中,可以在任意关键代码段周围使用锁,其中 如果多个线程并发执行关键段,则可能会引发错误的行为。对于这种方法,一个线程可以获 得该锁,执行其关键段,然后释放该锁。性能可能会因这些锁而降低,这是因为这些锁能禁 止多个线程并发地运行。如果,“仅仅是为了安全”而保持超过需要的锁,那么性能会进一步 降低。也就是,可能经常会相当保守地使用这些锁。为了最小化锁的性能影响,一个应用程本文档来自技高网
...

【技术保护点】
一种方法,包括:并发地执行对存储器的公共逻辑视图进行共享的多个线程;挂起所述多个线程中除第一线程以外的所有其它线程的执行,以便所述第一线程能够原子地执行指令块;其中,所述挂起是由所述第一线程调用硬件机制的动作触发的;以及在所述第一线程完成所述指令块的原子执行之后,恢复所述其它线程。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:Q雅克布森H王J舍恩G金雅P哈默伦德X邹B比格比S考舒基
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

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

1