利用基于二进制翻译的处理器的锁省略的制作方法

文档序号:10663551阅读:321来源:国知局
利用基于二进制翻译的处理器的锁省略的制作方法
【专利摘要】总体而言,本公开提供了用于利用基于二进制翻译的处理器对锁省略机会的检测和开拓的系统、设备、方法和计算机可读介质。所述设备可以包括动态二进制翻译(DBT)模块,用于将来自第一指令集架构(ISA)的代码区翻译成第二ISA中的翻译后的代码,并且用于检测和省略与代码区的临界区段相关联的锁。该设备还可以包括用于推测地执行临界区段中的翻译后的代码的处理器。该设备还可以包括事务支持处理器,用于在推测执行期间检测与锁和/或临界区段相关联的存储器访问冲突;响应于所述检测而回滚推测执行;以及在没有所述检测的情况下提交推测执行。
【专利说明】
利用基于二进制翻译的处理器的锁省略
技术领域
[0001] 本公开涉及锁省略,并且更具体地,涉及利用基于二进制翻译的处理器对锁省略 机会的检测和开拓。
【背景技术】
[0002] 计算系统常常具有多个处理器或处理核心,在所述多个处理器或处理核心上可以 分布给定工作负载以增加计算吞吐量。多个线程或进程可以在每个处理器核心上并行执行 并且可以共享存储器的公共区。锁典型地用于对存储器的这些临界区段的同步和保护以免 两个或更多个处理器进行冲突的访问。然而,归因于跨多处理器系统的存储器访问串行化 和与检查并等待锁可用性的多个线程相关联的相干流量,这样的锁的使用通常导致性能降 级。
[0003] 尽管锁可能引起相对高的运行时成本,但是它们常常对于正确的程序执行并不是 必要的,因为多个线程可能访问来自临界区段的不同(不相交)区的数据并且该访问可能不 涉及读-写冲突。一些处理器使用事务语义,所述事务语义允许软件开发者在代码中包括注 释以指示锁变量可以被硬件省略。然而,该方法要求修改该软件以支持该能力,这可能是昂 贵或不切实际的,并且否则的话未对传统代码提供益处。此外,程序师可能无意地使用这些 注释指示锁省略机会,这可能实际上导致静态不知晓的运行时的动态冲突。这样的不正确 省略的锁可能进一步使性能降级。
【附图说明】
[0004] 随着以下【具体实施方式】的进行并且在参考附图后,所要求保护的主题的实施例的 特征和优点将变得显而易见,其中相同的附图标记描绘相同的部分,并且在附图中: 图1图示了符合本公开的一个示例实施例的顶级系统图; 图2图示了符合本公开的一个示例实施例的框图; 图3图示了符合本公开的另一示例实施例的翻译区; 图4图不了符合本公开的另一不例实施例的框图; 图5图示了符合本公开的另一示例实施例的框图; 图6图示了符合本公开的一个示例实施例的操作的流程图;以及 图7图示了符合本公开的另一示例实施例的平台的顶级系统图。
[0005] 尽管以下【具体实施方式】将参照说明性实施例来进行,但是其的许多替换、修改和 变型对于本领域技术人员将是显而易见的。
【具体实施方式】
[0006] -般地,本公开提供了用于利用基于二进制翻译的处理器对锁省略机会的检测和 开拓的系统、设备、方法和计算机可读介质。锁能够实现对代码、存储器或其他资源的临界 区段的同步和保护,以免可能正在多个处理器或处理核心上执行的多线程应用进行冲突的 访问。如本公开中所描述的锁省略可以为硬件、软件或其中的某种组合提供以下能力:在不 要求如传统硬件锁省略(HLE)系统中所要求的对应用软件的用户可见语义修改的情况下避 免同步开销。在此意义上,本公开的锁省略可以被认为是自动的。
[0007] 如将在下文更详细地描述的,锁省略过程的一部分可以在应用软件从公共指令集 架构(ISA)(诸如,例如x86架构)到被处理器或核心执行的原生ISA的动态二进制翻译(DBT) 期间被执行。当还可以执行包括指令重排序的其他优化时,可以在DBT期间检测和省略锁。 锁省略过程还可以通过由处理器提供的原子性或事务支持而能够实现,从而允许翻译后的 区段的推测执行和对可能触发被执行的区段的回滚的冲突或故障的检测。在一些实施例 中,如果确定锁的移除使性能降级,则锁省略过程(或优化)可以被动态减缓。如本文所使用 的,术语"优化"总地指代例如在代码执行的效率上的相对改进,而非绝对状态。
[0008] 图1图示了符合本公开的一个示例实施例的顶级系统图100。具有锁省略部104的 DBT模块可以配置为在应用软件102与具有事务支持的多处理器系统106之间对接,如将在 下文更详细地解释的。应用软件102可以包括用于保护代码的临界区段的锁或其他同步机 构。DBT模块104可以配置为结合多处理器系统106提供的硬件支持来动态地检测和开拓与 这些临界代码区段相关联的锁省略机会。
[0009] 图2图示了符合本公开的一个示例实施例的框图200。应用软件或代码102可以包 括在系统上运行的基本输入输出系统(BI0S)202、操作系统(0S)204、设备驱动程序或任何 其他软件206,包括较高级应用或其他用户提供的代码。应用软件102可以典型地包括多线 程部件。应用软件102可以提供为、编译为或以其他方式遵从诸如例如x86架构或其变型的 公共ISA。
[0010] DBT模块104被示出为包括锁省略模块208 JBT模块104可以配置为将代码从公共 ISA翻译到被处理器106执行的原生ISA。原生ISA可以通常承载很少或没有与公共ISA的相 似之处。公共ISA提供能够实现对大的现有软件集合的访问的对传统代码的支持,而原生 ISA可以被设计用于被设定为目标的目的,诸如例如,增加的处理器性能或改进的功耗。处 理器可以被定期地更新以利用新技术并且可以改变它们的原生ISA同时维持运行现有软件 的能力。在DBT过程期间,可以删除锁和相关联的临界区段,并且可以开拓锁省略的机会。
[0011] 多处理器系统106可以包括可以配置为执行原生ISA中的代码的任意数目的处理 器或处理核心。多处理器系统106还可以包括配置为提供原生代码中的事务语义支持(例 如,原子性)的事务支持处理器210(或其他合适的硬件)。事务或原子代码区可以从检查点 开始,在所述检查点中,处理器的当前架构状态(高速缓冲存储器、寄存器等的内容)被验证 并且存储在内部硬件缓冲器中。然后推测地执行原子代码区,并且如果故障或冲突发生,则 处理器状态回滚到之前存储的检查点,使得可以撤销推测执行的任何影响。否则,提交推测 执行,并且可以后续建立新的检查点来取代之前的检查点,使得实现向前进展的代码执行。
[0012] 多处理器系统106还可以包括用于存储代码和/或数据或用于任何其他目的的存 储器212。存储器可以包括以下中的任意一个或全部:主存储器、高速缓冲存储器、寄存器、 存储器映射的I/O、条件代码寄存器以及用于任何其他状态信息的存储部。使用任何合适的 高速缓冲存储器一致性协议,事务支持处理器210可以配置为监视由系统106的处理器或核 心中的任何一个对存储器212的访问,包括读和写访问。
[0013] 图3图示了符合本公开的另一示例实施例的翻译区300。例如如由DBT模块104生成 的翻译后的代码区可以通过翻译边界302来限界。可以通过由DBT模块104检测的自旋锁304 来保护临界代码区306。自旋锁是相对简单的锁定机构的示例,其中一个线程获取对临界区 段的锁,并且其他线程循环(或自旋)同时等待获取锁。当利用临界区段完成拥有锁的线程 时,其释放锁,如在自旋解锁308中那样。尽管本文描述了自旋锁,但是结合示例实施例,将 意识到的是,本公开的方法和系统当然可以被一般化为任何类型的锁操作。
[0014] 下文描述用于自旋锁的示例DBT。在该情况中的"原始"或预翻译代码用x86汇编语 言来示出,其中临界代码区段通过自旋锁操作和自旋解锁操作来限界。 原始代码:
在该示例中,执行对存储器的原子读和写操作的交换指令(xchg)将持续轮询存储器地 址LOCK,直到读取返回指示处理器现在保持锁的"0"为止。当调用spin_l〇ck直到锁拥有者 将"0"写回spin_unlock调用中的LOCK为止时,所有其他处理器将看到设置为"Γ的LOCK变 量。如果锁变量被断言,则该过程可能生成相对大量的相干流量,这归因于许多处理器将 "Γ写到锁变量同时许多其他处理器尝试读取该变量。
[0015] DBT模块将该代码翻译成处理器的原生ISA,如下文所示出的。指令被分解成诸如 加载(LD)和存储(ST)的基本操作。添加 FENCE和COMMIT操作以实现同步和事务语义。FENCE 操作通过强制之前的存储器操作对于其他处理器为全局可见和/或阻止处理器的执行流水 线中的存储器操作的推测重排序,来提供存储器排序属性。当FENCE操作达到引退时存储缓 冲器或写队列可以被耗尽,以确保其他处理器将观察到存储操作为在FENCE之前已经发生。 COMMIT操作使得处理器对当前(已验证为正确)高速缓冲存储器和寄存器状态设置检查点, 使得执行可以以下一推测优化的代码间隔进行。COMMIT操作确保推测执行致使向前进展 (即,避免建立任意大的原子区)并且始终存在对于处理器可用的正确状态信息等等,在故 障的情况下推测代码执行可以回滚到所述正确状态信息。 翻译到原生代码 原始 _> 原生
然而,因为即使在临界区段中的操作很少冲突的情况下也在处理器之间断言存储指令 (ST it fL.OCK_$T iiUU_)CK]),所以在翻译后的代码中仍然存在性能惩罚。
[0016]因此,DBT还可以配置为如例如在下文所示出那样优化原生代码。 对原生代码的优化:

第一加载od fiMijocig使得锁变量对于处理器的事务存储器硬件(或存储器重 排序硬件)可见。如果另一处理器尝试对[LOCK]写入,则原子区被放弃。假设第二存储 ST Γ〇, IIOCKJ将向存储器中的[L 0 c κ ]写回相同的值,则第一存储 ST"r], i'LOCK'j可以被移除。在假设锁自"死"存储被执行以来还未被改变下,第二加 哉:LD rZILOCKI也可以被消除。第二存储ST rO, [LOCK]被检查操作 STCHK: [LOCKJ.替代,所述检查操作使用处理器的事务或存储器重排序硬件来 确保没有其他存储修改了临界区段中的锁变量。
[0017] 在该示例中,如果翻译到达翻译退出分支,则以下是已知的,如处理器的硬件支持 (例如,模块21 〇)所保证的: 1. 没有其他处理器在该翻译的执行期间修改锁变量。 2. 没有对锁变量的修改在该处理器上的翻译中发生。 3. 在该临界区段中的存储器操作与任何其他处理器上的存储器操作之间不存在读-写冲突,所述任何其他处理器可以或可以不正在由锁保护的临界区段内操作。
[0018] 给定这些条件,锁将已经被成功省略。如果对于临界区段检测到原子性违反或者 存储检查(STCHK)归因于对锁变量的修改而失败,则生成故障。在该事件中,代码执行回滚 到最后成功提交的检查点状态,并且DBT可以从该点开始以更保守的方式继续执行(例如, 不省略锁)以前进通过该失效。
[0019] 在一些实施例中,DBT可以跟踪对故障的计数,并且如果对于锁达到阈值,则在没 有该特定锁省略的情况下重新翻译代码的一部分,因此提供在静态锁省略实现中不可能的 适配,其中类似的机制通过公共ISA(包括在其中)明确地提供。
[0020] 图4图示了符合本公开的另一示例实施例的框图400 ABT模块104的实施例被更详 细地示出为包括多个子模块。图示了模块的示例排序,但是将意识到的是,各种实施例可以 采用任何合适的排序并且一些模块可以是可选的并且可以采用其他附加模块(未示出)。 DBT可以配置为通过执行到(模块412生成的)原生代码的翻译来操作,所述原生代码在它们 的效果上对应于原始程序中的公共ISA指令区。翻译后的区可以是锁定的临界区段,如例如 由模块404所检测的。可以由DBT在剖析模块402中的代码之后生成翻译。DBT可以配置为检 验所有翻译后的代码并且优化代码。优化模块406可以例如配置为基于启发法和运行时行 为来执行优化。翻译推测地执行,并且执行效果要么通过提交操作被使得是持久的要么在 误推测、外部事件或者发现DBT执行的无效优化的情况下被回滚。每个提交操作使处理器的 状态前进一个或多个等同公共ISA指令。系统还可以配置为支持用于以下的机制:在DBT(例 如,模块408)中对存储器操作静态地重新调度(重排序)并且验证公共ISA存储器排序在执 行时未被动态地违反。
[0021]锁省略决定模块410可以配置为例如基于对模块414的性能监视来确定是否应当 省略锁,因为可能存在其中利用就位的锁更有效地执行的多种情况。省略锁的决定也可以 基于满足以下条件的确定: 1. DBT在单个翻译中找到锁操作和对应的解锁操作二者。翻译将验证锁变量的地址在 执行时对于锁和解锁是相同的。 2. 解锁操作后置支配临界区段。也就是说,翻译内的所有无故障控制流路径将导致包 含解锁操作的块。 3. 锁、临界区段以及解锁全部都适合于处理器的事务硬件支持的单个原子区。
[0022]图5图示了符合本公开的另一示例实施例的框图500。事务支持处理器210的实施 例被更详细地示出为包括多个模块,所述多个模块在它们的执行期间与优化后的原生ISA 代码区互操作。图示了模块的示例排序,但是将意识到的是,各种实施例可以采用任何合适 的排序并且一些模块可以是可选的并且可以采用其他附加模块(未示出)。冲突检测模块 502可以配置为检测可能在推测执行过程期间出现的冲突。例如,翻译内的存储器读和写操 作可以设置与执行推测执行的处理器的高速缓冲存储器的行(区)相关联的用于存储的推 测属性比特(或用于加载的观察比特)。属性比特指示写入到高速缓存的数据还不是已知正 确的或者从高速缓存未以原始存储器顺序读取了数据。属性比特可以配置为如果外部实体 (例如,另一线程或另一处理器)应当请求该高速缓存行的所有权,则强制回滚发生(例如, 通过模块506)。如果推测执行成功地到达提交操作,则可以清理与高速缓存相关联的属性 比特(例如,模块508 )。换言之,高速缓存中的数据和访问它们的存储器顺序已经被验证。然 而,可以在没有回滚的情况下允许多个并发读取器在多个处理器上执行,只要保证只有一 个写入器得到对高速缓存行的独占访问即可,如由高速缓冲存储器一致性协议所限定。然 而,如果误推测发生并且处理器执行到最后成功地提交的状态的回滚,则数据高速缓存可 以丢弃具有设置的推测属性比特的所有高速缓存行。这将自动地恢复最后的有效非推测状 ??τ 〇
[0023] 指令重排序验证模块504可以配置为在执行期间动态地验证可能已经被DBT静态 执行的指令重排序。在无效的重排序的情况下,可以强制回滚(模块506 ),并且可以通过DBT 执行重新翻译以更改或消除带来问题的指令重排序。
[0024] 图6图示了符合本公开的另一示例实施例的操作600的流程图。这些操作提供用于 锁省略的方法。在操作610处,对代码区执行从第一指令ISA到在第二ISA中的翻译后的代码 的DBT。第一ISA可以是公共ISA而第二ISA对于处理器是原生的。在操作620处,在DBT期间, 检测与代码区的临界区段相关联的锁。在操作630处,从翻译后的代码省略锁。在操作640 处,推测地执行临界区段中的翻译后的代码。在操作650处,响应于检测到事务故障,回滚推 测执行。在操作660处,在没有事务故障的情况下,提交推测执行。
[0025]图7图示了符合本公开的一个示例实施例的顶级系统图700。系统700可以是硬件 平台710或计算设备,诸如例如,智能电话、智能平板计算机、个人数字助理(PDA)、移动因特 网设备(MID)、双用型平板计算机、笔记本或膝上型计算机、台式计算机、服务器、智能电视 或任何其他设备(无论是固定的还是移动的)。设备可以通常经由显示器770向用户呈现各 种接口,显示器770诸如例如有触摸屏、液晶显示器(IXD)或任何其他合适的显示类型。 [0026]系统700被示出为包括处理器720。在一些实施例中,处理器720可以实现为任何数 目的处理器核心。处理器(或处理器核心)可以是任何类型的处理器,诸如例如,微处理器、 嵌入式处理器、数字信号处理器(DSP)、网络处理器、现场可编程门阵列或配置为执行代码 的其他设备。处理器720可以是单线程核心或多线程核心,因为其可以包括每核心多于一个 的硬件线程上下文(或"逻辑处理器")。系统700还被示出为包括耦合到处理器720的存储器 730。存储器730可以是如对于本领域技术人员已知的或以其他方式对于本领域技术人员可 用的各种各样的存储器(包括存储器层级和/或存储器高速缓存的各个层)中的任何一个。 系统700还被示出为包括输入/输出(10)系统或控制器740,其可以配置为能够实现或管理 在处理器720与系统700的其他元件或者在系统700外部的其他元件(未示出)之间的数据通 信。系统700还可以包括配置为能够实现在系统700与任何外部实体之间的无线通信的无线 通信接口 750。无线通信可以遵从或以其他方式兼容任何现有的或还要开发的包括移动电 话通信标准的通信标准。
[0027] 系统700还可以包括配置为在执行至(多个)处理器720的原生代码ISA的DBT的同 时如之前所描述的那样检测和开拓应用102中的锁省略机会的DBT模块104。
[0028]将意识到的是,在一些实施例中,系统700的各个部件可以组合在片上系统(SoC) 架构中。在一些实施例中,部件可以是硬件部件、固件部件、软件部件或硬件、固件或软件的 任何合适的组合。
[0029] 本文描述的方法的实施例可以实现在系统中,所述系统包括其上个体地或组合地 存储有指令的一个或多个存储介质,所述指令在由一个或多个处理器执行时执行所述方 法。这里,处理器可以包括例如系统CPU(例如,核心处理器)和/或可编程电路。因此,意图的 是,根据本文描述的方法的操作可以跨诸如处理结构的多个物理设备分布在若干不同的物 理位置处。而且,意图的是,可以个体地或亚组合地(in a subcombination)执行方法操作, 如本领域技术人员将理解的。因此,并非每个流程图的所有操作都需要被执行,并且本公开 明确地意图能够实现这样的操作的所有亚组合,如本领域普通技术人员将理解的。
[0030] 存储介质可以包括任何类型的有形介质,例如,任何类型的盘,包括:软盘、光学 盘、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)、数字通用盘(DVD)和磁光盘;半导体设 备,诸如只读存储器(R0M)、诸如动态和静态随机存取存储器(RAM)的RAM、可擦可编程只读 存储器(EPR0M)、电可擦可编程只读存储器(EEPR0M)、闪速存储器、磁或光学卡、适于存储电 子指令的任何类型的介质。
[0031 ]如在本文的任何实施例中所使用的,"电路"可以例如单一地或组合地包括硬件电 路、可编程电路、状态机电路和/或存储由可编程电路执行的指令的固件。应用可以体现为 可以在诸如主机处理器的可编程电路或其他可编程电路上执行的代码或指令。如在本文的 任何实施例中所使用的,模块可以体现为电路。电路可以体现为诸如集成电路芯片的集成 电路。
[0032]因此,本公开提供了用于利用基于二进制翻译的处理器对锁省略机会的检测和开 拓的系统、设备、方法和计算机可读介质。以下示例涉及进一步的实施例。
[0033]所述设备可以包括动态二进制翻译(DBT)模块,用于将来自第一指令集架构(ISA) 的代码区翻译成第二ISA中的翻译后的代码,并且用于检测和省略与代码区的临界区段相 关联的锁。该示例的设备还可以包括用于推测地执行临界区段中的翻译后的代码的处理 器。该示例的设备还可以包括事务支持处理器,用于在推测执行期间检测与临界区段相关 联的存储器访问冲突;响应于所述检测而回滚推测执行;以及在没有所述检测的情况下提 交推测执行。
[0034]另一示例设备包括前述部件并且存储器访问冲突与锁相关联。
[0035]另一示例设备包括前述部件并且处理器还用于在响应于检测到的存储器访问冲 突而执行回滚之后在锁下重新执行临界区段中的翻译后的代码。
[0036]另一示例设备包括前述部件并且DBT模块还用于静态重排序代码区的指令并且事 务支持处理器还用于在执行期间动态地验证重排序。
[0037]另一示例设备包括前述部件并且DBT模块还用于监视与锁相关联的检测到的存储 器访问冲突的数目,并且如果冲突的数目超过阈值,则执行新DBT,并且新DBT不包括锁省 略。
[0038]另一示例设备包括前述部件并且存储器访问冲突包括在多处理系统的两个或更 多个处理器之间的存储器读和/或写冲突。
[0039]另一示例设备包括前述部件并且DBT模块还用于基于执行性能测量来动态地优化 翻译后的代码。
[0040] 另一示例设备包括前述部件并且DBT模块还用于将指令插入翻译后的代码中,所 述指令使得在省略的锁之前的存储器操作的影响对多处理系统的处理器是全局可见的。
[0041] 另一示例设备包括前述部件并且设备是智能电话、膝上型计算设备、智能TV或智 能平板计算机。
[0042] 另一示例设备包括前述部件并且还包括用户接口,并且用户接口是触摸屏。
[0043] 根据另一方面,提供有一种方法。所述方法可以包括执行来自第一指令集架构 (ISA)的代码区到第二ISA中的翻译后的代码的动态二进制翻译(DBT)。该示例的方法还可 以包括在DBT期间检测与代码区的临界区段相关联的锁。该示例的方法还可以包括从翻译 后的代码省略锁。该示例的方法还可以包括推测地执行临界区段中的翻译后的代码。该示 例的方法还可以包括响应于检测到事务故障而回滚推测执行。该示例的方法还可以包括在 没有事务故障的情况下提交推测执行。
[0044] 另一示例方法包括前述操作并且还包括在响应于事务故障而执行回滚之后在锁 下重新执行临界区段中的翻译后的代码。
[0045] 另一示例方法包括前述操作并且还包括在DBT期间静态地对代码区的指令重排序 并且在执行期间动态地验证重排序。
[0046] 另一示例方法包括前述操作并且还包括监视与锁相关联的事务故障的数目,并且 如果事务故障的数目超过阈值,则执行新DBT,并且新DBT不包括锁省略。
[0047] 另一示例方法包括前述操作并且事务故障是由与锁和/或临界区段相关联的对存 储器的访问冲突生成的。
[0048]另一示例方法包括前述操作并且DBT还包括基于执行性能测量来动态地优化翻译 后的代码。
[0049] 另一示例方法包括前述操作并且DBT还包括将指令插入翻译后的代码中,所述指 令使得在省略的锁之前的存储器操作的影响对多处理系统的处理器是全局可见的。
[0050] 根据另一方面,提供有一种系统。所述系统可以包括用于执行来自第一指令集架 构(ISA)的代码区到第二ISA中的翻译后的代码的动态二进制翻译(DBT)的构件。该示例的 系统还可以包括用于在DBT期间检测与代码区的临界区段相关联的锁的构件。该示例的系 统还可以包括用于从翻译后的代码省略锁的构件。该示例的系统还可以包括用于推测地执 行临界区段中的翻译后的代码的构件。该示例的系统还可以包括用于响应于检测到事务故 障而回滚推测执行的构件。该示例的系统还可以包括用于在没有事务故障的情况下提交推 测执行的构件。
[0051] 另一示例系统包括前述部件并且还包括用于在响应于事务故障而执行回滚之后 在锁下重新执行临界区段中的翻译后的代码的构件。
[0052]另一示例系统包括前述部件并且还包括用于在DBT期间对代码区的指令静态重排 序的构件和用于在执行期间动态地验证重排序的构件。
[0053]另一示例系统包括前述部件并且还包括用于监视与锁相关联的事务故障的数目 的构件,以及如果事务故障的数目超过阈值则用于执行新DBT的构件,并且新DBT不包括锁 省略。
[0054]另一示例系统包括前述部件并且事务故障是由与锁和/或临界区段相关联的对存 储器的访问冲突生成的。
[0055]另一示例系统包括前述部件并且DBT还包括用于基于执行性能测量来动态地优化 翻译后的代码的构件。
[0056]另一示例系统包括前述部件并且DBT还包括用于将指令插入翻译后的代码中的构 件,所述指令使得在省略的锁之前的存储器操作的影响对多处理系统的处理器是全局可见 的。
[0057]根据另一方面,提供有至少一个其上存储有指令的计算机可读存储介质,所述指 令在由处理器执行时使得处理器执行以上示例中的任何一个中所描述的方法的操作。 [0058]根据另一方面,提供有一种装置,包括用于执行以上示例中的任何一个中所描述 的方法的构件。
[0059]本文已经采用的术语和表述用作描述而非限制的术语,并且在这样的术语和表述 的使用中不存在排除所示出和描述的特征(或其部分)的任何等同物的意图,并且应当认识 到的是,在权利要求的范围内,各种修改是可能的。因此,意图权利要求覆盖所有这样的等 同物。本文已经描述了各种特征、方面和实施例。如本领域技术人员将理解的,这些特征、方 面和实施例是易于彼此组合以及改变和修改的。因此,本公开应当被认为涵盖了这样的组 合、改变和修改。
【主权项】
1. 一种用于锁省略的设备,所述设备包括: 动态二进制翻译(DBT)模块,用于将来自第一指令集架构(ISA)的代码区翻译成第二 ISA中的翻译后的代码,并且用于检测和省略与所述代码区的临界区段相关联的锁; 处理器,用于推测地执行所述临界区段中的所述翻译后的代码;以及 事务支持处理器,用于: 在所述推测执行期间检测与所述临界区段相关联的存储器访问冲突; 响应于所述检测而回滚所述推测执行;以及 在没有所述检测的情况下提交所述推测执行。2. 根据权利要求1所述的设备,其中所述处理器还用于在响应于所述检测到的存储器 访问冲突而执行所述回滚之后在所述锁下重新执行所述临界区段中的所述翻译后的代码。3. 根据权利要求1所述的设备,其中所述DBT模块还用于静态重排序所述代码区的指令 并且所述事务支持处理器还用于在所述执行期间动态地验证所述重排序。4. 根据权利要求1所述的设备,其中所述DBT模块还用于监视与所述锁相关联的检测到 的存储器访问冲突的数目,并且如果冲突的所述数目超过阈值,则执行新DBT,其中所述新 DBT不包括所述锁省略。5. 根据权利要求1所述的设备,其中所述存储器访问冲突包括在多处理系统的两个或 更多个处理器之间的存储器读或写冲突。6. 根据权利要求1所述的设备,其中所述DBT模块还用于基于执行性能测量来动态地优 化所述翻译后的代码。7. 根据权利要求1所述的设备,其中所述DBT模块还用于将指令插入所述翻译后的代码 中,所述指令使得在省略的锁之前的存储器操作的影响对多处理系统的处理器是全局可见 的。8. 根据权利要求1所述的设备,其中所述设备是智能电话、膝上型计算设备、智能TV或 智能平板计算机。9. 根据权利要求1所述的设备,还包括用户接口,其中所述用户接口是触摸屏。10. -种用于锁省略的方法,所述方法包括: 执行来自第一指令集架构(ISA)的代码区到第二ISA中的翻译后的代码的动态二进制 翻译(DBT); 在所述DBT期间检测与所述代码区的临界区段相关联的锁; 从所述翻译后的代码省略所述锁; 推测地执行所述临界区段中的所述翻译后的代码; 响应于检测到事务故障而回滚所述推测执行;以及 在没有所述事务故障的情况下提交所述推测执行。11. 根据权利要求10所述的方法,还包括在响应于所述事务故障而执行所述回滚之后 在所述锁下重新执行所述临界区段中的所述翻译后的代码。12. 根据权利要求10所述的方法,还包括在所述DBT期间静态地对所述代码区的指令重 排序并且在所述执行期间动态地验证所述重排序。13. 根据权利要求10所述的方法,还包括监视与所述锁相关联的事务故障的数目,并且 如果事务故障的所述数目超过阈值,则执行新DBT,其中所述新DBT不包括所述锁省略。14. 根据权利要求10所述的方法,其中所述事务故障是由与所述临界区段相关联的对 存储器的访问冲突生成的。15. 根据权利要求10所述的方法,其中所述DBT还包括基于执行性能测量来动态地优化 所述翻译后的代码。16. 根据权利要求10所述的方法,其中所述DBT还包括将指令插入所述翻译后的代码 中,所述指令使得在省略的锁之前的存储器操作的影响对多处理系统的处理器是全局可见 的。17. 至少一个其上存储有指令的计算机可读存储介质,所述指令在由处理器执行时导 致用于锁省略的以下操作,所述操作包括: 执行来自第一指令集架构(ISA)的代码区到第二ISA中的翻译后的代码的动态二进制 翻译(DBT); 在所述DBT期间检测与所述代码区的临界区段相关联的锁; 从所述翻译后的代码省略所述锁; 推测地执行所述临界区段中的所述翻译后的代码; 响应于检测到事务故障而回滚所述推测执行;以及 在没有所述事务故障的情况下提交所述推测执行。18. 根据权利要求17所述的计算机可读存储介质,还包括在响应于所述事务故障而执 行所述回滚之后在所述锁下重新执行所述临界区段中的所述翻译后的代码的操作。19. 根据权利要求17所述的计算机可读存储介质,还包括在所述DBT期间静态地对所述 代码区的指令重排序以及在所述执行期间动态地验证所述重排序的操作。20. 根据权利要求17所述的计算机可读存储介质,还包括监视与所述锁相关联的事务 故障的数目的操作,并且如果事务故障的所述数目超过阈值,则执行新DBT,其中所述新DBT 不包括所述锁省略。21. 根据权利要求17所述的计算机可读存储介质,其中所述事务故障是由与所述临界 区段相关联的对存储器的访问冲突生成的。22. 根据权利要求17所述的计算机可读存储介质,其中所述DBT还包括基于执行性能测 量来动态地优化所述翻译后的代码的操作。23. 根据权利要求17所述的计算机可读存储介质,其中所述DBT还包括将指令插入所述 翻译后的代码中的操作,所述指令使得在省略的锁之前的存储器操作的影响对多处理系统 的处理器是全局可见的。
【文档编号】G06F9/30GK106030522SQ201580010755
【公开日】2016年10月12日
【申请日】2015年3月10日
【发明人】J.H.克尔姆, N.尼拉肯坦, D.M.哈蒂科夫
【申请人】英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1