CN106030522B - 利用基于二进制翻译的处理器的锁省略 - Google Patents
利用基于二进制翻译的处理器的锁省略 Download PDFInfo
- Publication number
- CN106030522B CN106030522B CN201580010755.2A CN201580010755A CN106030522B CN 106030522 B CN106030522 B CN 106030522B CN 201580010755 A CN201580010755 A CN 201580010755A CN 106030522 B CN106030522 B CN 106030522B
- Authority
- CN
- China
- Prior art keywords
- lock
- code
- dbt
- translation
- critical section
- 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.)
- Active
Links
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/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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
- Retry When Errors Occur (AREA)
Abstract
总体而言,本公开提供了用于利用基于二进制翻译的处理器对锁省略机会的检测和开拓的系统、设备、方法和计算机可读介质。所述设备可以包括动态二进制翻译(DBT)模块,用于将来自第一指令集架构(ISA)的代码区翻译成第二ISA中的翻译后的代码,并且用于检测和省略与代码区的临界区段相关联的锁。该设备还可以包括用于推测地执行临界区段中的翻译后的代码的处理器。该设备还可以包括事务支持处理器,用于在推测执行期间检测与锁和/或临界区段相关联的存储器访问冲突;响应于所述检测而回滚推测执行;以及在没有所述检测的情况下提交推测执行。
Description
技术领域
本公开涉及锁省略,并且更具体地,涉及利用基于二进制翻译的处理器对锁省略机会的检测和开拓。
背景技术
计算系统常常具有多个处理器或处理核心,在所述多个处理器或处理核心上可以分布给定工作负载以增加计算吞吐量。多个线程或进程可以在每个处理器核心上并行执行并且可以共享存储器的公共区。锁典型地用于对存储器的这些临界区段的同步和保护以免两个或更多个处理器进行冲突的访问。然而,归因于跨多处理器系统的存储器访问串行化和与检查并等待锁可用性的多个线程相关联的相干流量,这样的锁的使用通常导致性能降级。
尽管锁可能引起相对高的运行时成本,但是它们常常对于正确的程序执行并不是必要的,因为多个线程可能访问来自临界区段的不同(不相交)区的数据并且该访问可能不涉及读-写冲突。一些处理器使用事务语义,所述事务语义允许软件开发者在代码中包括注释以指示锁变量可以被硬件省略。然而,该方法要求修改该软件以支持该能力,这可能是昂贵或不切实际的,并且否则的话未对传统代码提供益处。此外,程序师可能无意地使用这些注释指示锁省略机会,这可能实际上导致静态不知晓的运行时的动态冲突。这样的不正确省略的锁可能进一步使性能降级。
附图说明
随着以下具体实施方式的进行并且在参考附图后,所要求保护的主题的实施例的特征和优点将变得显而易见,其中相同的附图标记描绘相同的部分,并且在附图中:
图1图示了符合本公开的一个示例实施例的顶级系统图;
图2图示了符合本公开的一个示例实施例的框图;
图3图示了符合本公开的另一示例实施例的翻译区;
图4图示了符合本公开的另一示例实施例的框图;
图5图示了符合本公开的另一示例实施例的框图;
图6图示了符合本公开的一个示例实施例的操作的流程图;以及
图7图示了符合本公开的另一示例实施例的平台的顶级系统图。
尽管以下具体实施方式将参照说明性实施例来进行,但是其的许多替换、修改和变型对于本领域技术人员将是显而易见的。
具体实施方式
一般地,本公开提供了用于利用基于二进制翻译的处理器对锁省略机会的检测和开拓的系统、设备、方法和计算机可读介质。锁能够实现对代码、存储器或其他资源的临界区段的同步和保护,以免可能正在多个处理器或处理核心上执行的多线程应用进行冲突的访问。如本公开中所描述的锁省略可以为硬件、软件或其中的某种组合提供以下能力:在不要求如传统硬件锁省略(HLE)系统中所要求的对应用软件的用户可见语义修改的情况下避免同步开销。在此意义上,本公开的锁省略可以被认为是自动的。
如将在下文更详细地描述的,锁省略过程的一部分可以在应用软件从公共指令集架构(ISA)(诸如,例如x86架构)到被处理器或核心执行的原生ISA的动态二进制翻译(DBT)期间被执行。当还可以执行包括指令重排序的其他优化时,可以在DBT期间检测和省略锁。锁省略过程还可以通过由处理器提供的原子性或事务支持而能够实现,从而允许翻译后的区段的推测执行和对可能触发被执行的区段的回滚的冲突或故障的检测。在一些实施例中,如果确定锁的移除使性能降级,则锁省略过程(或优化)可以被动态减缓。如本文所使用的,术语“优化”总地指代例如在代码执行的效率上的相对改进,而非绝对状态。
图1图示了符合本公开的一个示例实施例的顶级系统图100。具有锁省略部104的DBT模块可以配置为在应用软件102与具有事务支持的多处理器系统106之间对接,如将在下文更详细地解释的。应用软件102可以包括用于保护代码的临界区段的锁或其他同步机构。DBT模块104可以配置为结合多处理器系统106提供的硬件支持来动态地检测和开拓与这些临界代码区段相关联的锁省略机会。
图2图示了符合本公开的一个示例实施例的框图200。应用软件或代码102可以包括在系统上运行的基本输入输出系统(BIOS)202、操作系统(OS)204、设备驱动程序或任何其他软件206,包括较高级应用或其他用户提供的代码。应用软件102可以典型地包括多线程部件。应用软件102可以提供为、编译为或以其他方式遵从诸如例如x86架构或其变型的公共ISA。
DBT模块104被示出为包括锁省略模块208。DBT模块104可以配置为将代码从公共ISA翻译到被处理器106执行的原生ISA。原生ISA可以通常承载很少或没有与公共ISA的相似之处。公共ISA提供能够实现对大的现有软件集合的访问的对传统代码的支持,而原生ISA可以被设计用于被设定为目标的目的,诸如例如,增加的处理器性能或改进的功耗。处理器可以被定期地更新以利用新技术并且可以改变它们的原生ISA同时维持运行现有软件的能力。在DBT过程期间,可以删除锁和相关联的临界区段,并且可以开拓锁省略的机会。
多处理器系统106可以包括可以配置为执行原生ISA中的代码的任意数目的处理器或处理核心。多处理器系统106还可以包括配置为提供原生代码中的事务语义支持(例如,原子性)的事务支持处理器210(或其他合适的硬件)。事务或原子代码区可以从检查点开始,在所述检查点中,处理器的当前架构状态(高速缓冲存储器、寄存器等的内容)被验证并且存储在内部硬件缓冲器中。然后推测地执行原子代码区,并且如果故障或冲突发生,则处理器状态回滚到之前存储的检查点,使得可以撤销推测执行的任何影响。否则,提交推测执行,并且可以后续建立新的检查点来取代之前的检查点,使得实现向前进展的代码执行。
多处理器系统106还可以包括用于存储代码和/或数据或用于任何其他目的的存储器212。存储器可以包括以下中的任意一个或全部:主存储器、高速缓冲存储器、寄存器、存储器映射的I/O、条件代码寄存器以及用于任何其他状态信息的存储部。使用任何合适的高速缓冲存储器一致性协议,事务支持处理器210可以配置为监视由系统106的处理器或核心中的任何一个对存储器212的访问,包括读和写访问。
图3图示了符合本公开的另一示例实施例的翻译区300。例如如由DBT模块104生成的翻译后的代码区可以通过翻译边界302来限界。可以通过由DBT模块104检测的自旋锁304来保护临界代码区306。自旋锁是相对简单的锁定机构的示例,其中一个线程获取对临界区段的锁,并且其他线程循环(或自旋)同时等待获取锁。当利用临界区段完成拥有锁的线程时,其释放锁,如在自旋解锁308中那样。尽管本文描述了自旋锁,但是结合示例实施例,将意识到的是,本公开的方法和系统当然可以被一般化为任何类型的锁操作。
下文描述用于自旋锁的示例DBT。在该情况中的“原始”或预翻译代码用x86汇编语言来示出,其中临界代码区段通过自旋锁操作和自旋解锁操作来限界。
原始代码:
//临界区段
…
在该示例中,执行对存储器的原子读和写操作的交换指令(xchg)将持续轮询存储器地址LOCK,直到读取返回指示处理器现在保持锁的“0”为止。当调用spin_lock直到锁拥有者将“0”写回spin_unlock调用中的LOCK为止时,所有其他处理器将看到设置为“1”的LOCK变量。如果锁变量被断言,则该过程可能生成相对大量的相干流量,这归因于许多处理器将“1”写到锁变量同时许多其他处理器尝试读取该变量。
DBT模块将该代码翻译成处理器的原生ISA,如下文所示出的。指令被分解成诸如加载(LD)和存储(ST)的基本操作。添加FENCE和COMMIT操作以实现同步和事务语义。FENCE操作通过强制之前的存储器操作对于其他处理器为全局可见和/或阻止处理器的执行流水线中的存储器操作的推测重排序,来提供存储器排序属性。当FENCE操作达到引退时存储缓冲器或写队列可以被耗尽,以确保其他处理器将观察到存储操作为在FENCE之前已经发生。COMMIT操作使得处理器对当前(已验证为正确)高速缓冲存储器和寄存器状态设置检查点,使得执行可以以下一推测优化的代码间隔进行。COMMIT操作确保推测执行致使向前进展(即,避免建立任意大的原子区)并且始终存在对于处理器可用的正确状态信息等等,在故障的情况下推测代码执行可以回滚到所述正确状态信息。
翻译到原生代码
原始 -> 原生
//临界区段 //临界区段
… …
然而,因为即使在临界区段中的操作很少冲突的情况下也在处理器之间断言存储指令(和),所以在翻译后的代码中仍然存在性能惩罚。
因此,DBT还可以配置为如例如在下文所示出那样优化原生代码。
对原生代码的优化:
//“死”存储
//临界区段 //临界区段
… …
第一加载使得锁变量对于处理器的事务存储器硬件(或存储器重排序硬件)可见。如果另一处理器尝试对[LOCK]写入,则原子区被放弃。假设第二存储将向存储器中的[LOCK]写回相同的值,则第一存储可以被移除。在假设锁自“死”存储被执行以来还未被改变下,第二加载也可以被消除。第二存储被检查操作替代,所述检查操作使用处理器的事务或存储器重排序硬件来确保没有其他存储修改了临界区段中的锁变量。
在该示例中,如果翻译到达翻译退出分支,则以下是已知的,如处理器的硬件支持(例如,模块210)所保证的:
1. 没有其他处理器在该翻译的执行期间修改锁变量。
2. 没有对锁变量的修改在该处理器上的翻译中发生。
3. 在该临界区段中的存储器操作与任何其他处理器上的存储器操作之间不存在读-写冲突,所述任何其他处理器可以或可以不正在由锁保护的临界区段内操作。
给定这些条件,锁将已经被成功省略。如果对于临界区段检测到原子性违反或者存储检查(STCHK)归因于对锁变量的修改而失败,则生成故障。在该事件中,代码执行回滚到最后成功提交的检查点状态,并且DBT可以从该点开始以更保守的方式继续执行(例如,不省略锁)以前进通过该失效。
在一些实施例中,DBT可以跟踪对故障的计数,并且如果对于锁达到阈值,则在没有该特定锁省略的情况下重新翻译代码的一部分,因此提供在静态锁省略实现中不可能的适配,其中类似的机制通过公共ISA(包括在其中)明确地提供。
图4图示了符合本公开的另一示例实施例的框图400。DBT模块104的实施例被更详细地示出为包括多个子模块。图示了模块的示例排序,但是将意识到的是,各种实施例可以采用任何合适的排序并且一些模块可以是可选的并且可以采用其他附加模块(未示出)。DBT可以配置为通过执行到(模块412生成的)原生代码的翻译来操作,所述原生代码在它们的效果上对应于原始程序中的公共ISA指令区。翻译后的区可以是锁定的临界区段,如例如由模块404所检测的。可以由DBT在剖析模块402中的代码之后生成翻译。DBT可以配置为检验所有翻译后的代码并且优化代码。优化模块406可以例如配置为基于启发法和运行时行为来执行优化。翻译推测地执行,并且执行效果要么通过提交操作被使得是持久的要么在误推测、外部事件或者发现DBT执行的无效优化的情况下被回滚。每个提交操作使处理器的状态前进一个或多个等同公共ISA指令。系统还可以配置为支持用于以下的机制:在DBT(例如,模块408)中对存储器操作静态地重新调度(重排序)并且验证公共ISA存储器排序在执行时未被动态地违反。
锁省略决定模块410可以配置为例如基于对模块414的性能监视来确定是否应当省略锁,因为可能存在其中利用就位的锁更有效地执行的多种情况。省略锁的决定也可以基于满足以下条件的确定:
1. DBT在单个翻译中找到锁操作和对应的解锁操作二者。翻译将验证锁变量的地址在执行时对于锁和解锁是相同的。
2. 解锁操作后置支配临界区段。也就是说,翻译内的所有无故障控制流路径将导致包含解锁操作的块。
3. 锁、临界区段以及解锁全部都适合于处理器的事务硬件支持的单个原子区。
图5图示了符合本公开的另一示例实施例的框图500。事务支持处理器210的实施例被更详细地示出为包括多个模块,所述多个模块在它们的执行期间与优化后的原生ISA代码区互操作。图示了模块的示例排序,但是将意识到的是,各种实施例可以采用任何合适的排序并且一些模块可以是可选的并且可以采用其他附加模块(未示出)。冲突检测模块502可以配置为检测可能在推测执行过程期间出现的冲突。例如,翻译内的存储器读和写操作可以设置与执行推测执行的处理器的高速缓冲存储器的行(区)相关联的用于存储的推测属性比特(或用于加载的观察比特)。属性比特指示写入到高速缓存的数据还不是已知正确的或者从高速缓存未以原始存储器顺序读取了数据。属性比特可以配置为如果外部实体(例如,另一线程或另一处理器)应当请求该高速缓存行的所有权,则强制回滚发生(例如,通过模块506)。如果推测执行成功地到达提交操作,则可以清理与高速缓存相关联的属性比特(例如,模块508)。换言之,高速缓存中的数据和访问它们的存储器顺序已经被验证。然而,可以在没有回滚的情况下允许多个并发读取器在多个处理器上执行,只要保证只有一个写入器得到对高速缓存行的独占访问即可,如由高速缓冲存储器一致性协议所限定。然而,如果误推测发生并且处理器执行到最后成功地提交的状态的回滚,则数据高速缓存可以丢弃具有设置的推测属性比特的所有高速缓存行。这将自动地恢复最后的有效非推测状态。
指令重排序验证模块504可以配置为在执行期间动态地验证可能已经被DBT静态执行的指令重排序。在无效的重排序的情况下,可以强制回滚(模块506),并且可以通过DBT执行重新翻译以更改或消除带来问题的指令重排序。
图6图示了符合本公开的另一示例实施例的操作600的流程图。这些操作提供用于锁省略的方法。在操作610处,对代码区执行从第一指令ISA到在第二ISA中的翻译后的代码的DBT。第一ISA可以是公共ISA而第二ISA对于处理器是原生的。在操作620处,在DBT期间,检测与代码区的临界区段相关联的锁。在操作630处,从翻译后的代码省略锁。在操作640处,推测地执行临界区段中的翻译后的代码。在操作650处,响应于检测到事务故障,回滚推测执行。在操作660处,在没有事务故障的情况下,提交推测执行。
图7图示了符合本公开的一个示例实施例的顶级系统图700。系统700可以是硬件平台710或计算设备,诸如例如,智能电话、智能平板计算机、个人数字助理(PDA)、移动因特网设备(MID)、双用型平板计算机、笔记本或膝上型计算机、台式计算机、服务器、智能电视或任何其他设备(无论是固定的还是移动的)。设备可以通常经由显示器770向用户呈现各种接口,显示器770诸如例如有触摸屏、液晶显示器(LCD)或任何其他合适的显示类型。
系统700被示出为包括处理器720。在一些实施例中,处理器720可以实现为任何数目的处理器核心。处理器(或处理器核心)可以是任何类型的处理器,诸如例如,微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、现场可编程门阵列或配置为执行代码的其他设备。处理器720可以是单线程核心或多线程核心,因为其可以包括每核心多于一个的硬件线程上下文(或“逻辑处理器”)。系统700还被示出为包括耦合到处理器720的存储器730。存储器730可以是如对于本领域技术人员已知的或以其他方式对于本领域技术人员可用的各种各样的存储器(包括存储器层级和/或存储器高速缓存的各个层)中的任何一个。系统700还被示出为包括输入/输出(IO)系统或控制器740,其可以配置为能够实现或管理在处理器720与系统700的其他元件或者在系统700外部的其他元件(未示出)之间的数据通信。系统700还可以包括配置为能够实现在系统700与任何外部实体之间的无线通信的无线通信接口750。无线通信可以遵从或以其他方式兼容任何现有的或还要开发的包括移动电话通信标准的通信标准。
系统700还可以包括配置为在执行至(多个)处理器720的原生代码ISA的DBT的同时如之前所描述的那样检测和开拓应用102中的锁省略机会的DBT模块104。
将意识到的是,在一些实施例中,系统700的各个部件可以组合在片上系统(SoC)架构中。在一些实施例中,部件可以是硬件部件、固件部件、软件部件或硬件、固件或软件的任何合适的组合。
本文描述的方法的实施例可以实现在系统中,所述系统包括其上个体地或组合地存储有指令的一个或多个存储介质,所述指令在由一个或多个处理器执行时执行所述方法。这里,处理器可以包括例如系统CPU(例如,核心处理器)和/或可编程电路。因此,意图的是,根据本文描述的方法的操作可以跨诸如处理结构的多个物理设备分布在若干不同的物理位置处。而且,意图的是,可以个体地或亚组合地(in a subcombination)执行方法操作,如本领域技术人员将理解的。因此,并非每个流程图的所有操作都需要被执行,并且本公开明确地意图能够实现这样的操作的所有亚组合,如本领域普通技术人员将理解的。
存储介质可以包括任何类型的有形介质,例如,任何类型的盘,包括:软盘、光学盘、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)、数字通用盘(DVD)和磁光盘;半导体设备,诸如只读存储器(ROM)、诸如动态和静态随机存取存储器(RAM)的RAM、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、闪速存储器、磁或光学卡、适于存储电子指令的任何类型的介质。
如在本文的任何实施例中所使用的,“电路”可以例如单一地或组合地包括硬件电路、可编程电路、状态机电路和/或存储由可编程电路执行的指令的固件。应用可以体现为可以在诸如主机处理器的可编程电路或其他可编程电路上执行的代码或指令。如在本文的任何实施例中所使用的,模块可以体现为电路。电路可以体现为诸如集成电路芯片的集成电路。
因此,本公开提供了用于利用基于二进制翻译的处理器对锁省略机会的检测和开拓的系统、设备、方法和计算机可读介质。以下示例涉及进一步的实施例。
所述设备可以包括动态二进制翻译(DBT)模块,用于将来自第一指令集架构(ISA)的代码区翻译成第二ISA中的翻译后的代码,并且用于检测和省略与代码区的临界区段相关联的锁。该示例的设备还可以包括用于推测地执行临界区段中的翻译后的代码的处理器。该示例的设备还可以包括事务支持处理器,用于在推测执行期间检测与临界区段相关联的存储器访问冲突;响应于所述检测而回滚推测执行;以及在没有所述检测的情况下提交推测执行。
另一示例设备包括前述部件并且存储器访问冲突与锁相关联。
另一示例设备包括前述部件并且处理器还用于在响应于检测到的存储器访问冲突而执行回滚之后在锁下重新执行临界区段中的翻译后的代码。
另一示例设备包括前述部件并且DBT模块还用于静态重排序代码区的指令并且事务支持处理器还用于在执行期间动态地验证重排序。
另一示例设备包括前述部件并且DBT模块还用于监视与锁相关联的检测到的存储器访问冲突的数目,并且如果冲突的数目超过阈值,则执行新DBT,并且新DBT不包括锁省略。
另一示例设备包括前述部件并且存储器访问冲突包括在多处理系统的两个或更多个处理器之间的存储器读和/或写冲突。
另一示例设备包括前述部件并且DBT模块还用于基于执行性能测量来动态地优化翻译后的代码。
另一示例设备包括前述部件并且DBT模块还用于将指令插入翻译后的代码中,所述指令使得在省略的锁之前的存储器操作的影响对多处理系统的处理器是全局可见的。
另一示例设备包括前述部件并且设备是智能电话、膝上型计算设备、智能TV或智能平板计算机。
另一示例设备包括前述部件并且还包括用户接口,并且用户接口是触摸屏。
根据另一方面,提供有一种方法。所述方法可以包括执行来自第一指令集架构(ISA)的代码区到第二ISA中的翻译后的代码的动态二进制翻译(DBT)。该示例的方法还可以包括在DBT期间检测与代码区的临界区段相关联的锁。该示例的方法还可以包括从翻译后的代码省略锁。该示例的方法还可以包括推测地执行临界区段中的翻译后的代码。该示例的方法还可以包括响应于检测到事务故障而回滚推测执行。该示例的方法还可以包括在没有事务故障的情况下提交推测执行。
另一示例方法包括前述操作并且还包括在响应于事务故障而执行回滚之后在锁下重新执行临界区段中的翻译后的代码。
另一示例方法包括前述操作并且还包括在DBT期间静态地对代码区的指令重排序并且在执行期间动态地验证重排序。
另一示例方法包括前述操作并且还包括监视与锁相关联的事务故障的数目,并且如果事务故障的数目超过阈值,则执行新DBT,并且新DBT不包括锁省略。
另一示例方法包括前述操作并且事务故障是由与锁和/或临界区段相关联的对存储器的访问冲突生成的。
另一示例方法包括前述操作并且DBT还包括基于执行性能测量来动态地优化翻译后的代码。
另一示例方法包括前述操作并且DBT还包括将指令插入翻译后的代码中,所述指令使得在省略的锁之前的存储器操作的影响对多处理系统的处理器是全局可见的。
根据另一方面,提供有一种系统。所述系统可以包括用于执行来自第一指令集架构(ISA)的代码区到第二ISA中的翻译后的代码的动态二进制翻译(DBT)的构件。该示例的系统还可以包括用于在DBT期间检测与代码区的临界区段相关联的锁的构件。该示例的系统还可以包括用于从翻译后的代码省略锁的构件。该示例的系统还可以包括用于推测地执行临界区段中的翻译后的代码的构件。该示例的系统还可以包括用于响应于检测到事务故障而回滚推测执行的构件。该示例的系统还可以包括用于在没有事务故障的情况下提交推测执行的构件。
另一示例系统包括前述部件并且还包括用于在响应于事务故障而执行回滚之后在锁下重新执行临界区段中的翻译后的代码的构件。
另一示例系统包括前述部件并且还包括用于在DBT期间对代码区的指令静态重排序的构件和用于在执行期间动态地验证重排序的构件。
另一示例系统包括前述部件并且还包括用于监视与锁相关联的事务故障的数目的构件,以及如果事务故障的数目超过阈值则用于执行新DBT的构件,并且新DBT不包括锁省略。
另一示例系统包括前述部件并且事务故障是由与锁和/或临界区段相关联的对存储器的访问冲突生成的。
另一示例系统包括前述部件并且DBT还包括用于基于执行性能测量来动态地优化翻译后的代码的构件。
另一示例系统包括前述部件并且DBT还包括用于将指令插入翻译后的代码中的构件,所述指令使得在省略的锁之前的存储器操作的影响对多处理系统的处理器是全局可见的。
根据另一方面,提供有至少一个其上存储有指令的计算机可读存储介质,所述指令在由处理器执行时使得处理器执行以上示例中的任何一个中所描述的方法的操作。
根据另一方面,提供有一种装置,包括用于执行以上示例中的任何一个中所描述的方法的构件。
本文已经采用的术语和表述用作描述而非限制的术语,并且在这样的术语和表述的使用中不存在排除所示出和描述的特征(或其部分)的任何等同物的意图,并且应当认识到的是,在权利要求的范围内,各种修改是可能的。因此,意图权利要求覆盖所有这样的等同物。本文已经描述了各种特征、方面和实施例。如本领域技术人员将理解的,这些特征、方面和实施例是易于彼此组合以及改变和修改的。因此,本公开应当被认为涵盖了这样的组合、改变和修改。
Claims (17)
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.一种其上存储有指令的计算机可读存储介质,所述指令在由一个或多个处理器执行时导致以下操作,所述操作包括:根据权利要求10到16中任意一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/227014 | 2014-03-27 | ||
US14/227,014 US20150277914A1 (en) | 2014-03-27 | 2014-03-27 | Lock elision with binary translation based processors |
PCT/US2015/019562 WO2015148099A1 (en) | 2014-03-27 | 2015-03-10 | Lock elision with binary translation based processors |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106030522A CN106030522A (zh) | 2016-10-12 |
CN106030522B true CN106030522B (zh) | 2019-07-23 |
Family
ID=54190472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580010755.2A Active CN106030522B (zh) | 2014-03-27 | 2015-03-10 | 利用基于二进制翻译的处理器的锁省略 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20150277914A1 (zh) |
EP (1) | EP3123307A4 (zh) |
JP (1) | JP2017509083A (zh) |
KR (1) | KR101970390B1 (zh) |
CN (1) | CN106030522B (zh) |
WO (1) | WO2015148099A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9507938B2 (en) * | 2014-12-23 | 2016-11-29 | Mcafee, Inc. | Real-time code and data protection via CPU transactional memory support |
US20160283247A1 (en) * | 2015-03-25 | 2016-09-29 | Intel Corporation | Apparatuses and methods to selectively execute a commit instruction |
US10162616B2 (en) * | 2015-06-26 | 2018-12-25 | Intel Corporation | System for binary translation version protection |
CN106897123B (zh) * | 2015-12-21 | 2021-07-16 | 阿里巴巴集团控股有限公司 | 数据库操作方法及装置 |
US10169106B2 (en) * | 2016-06-30 | 2019-01-01 | International Business Machines Corporation | Method for managing control-loss processing during critical processing sections while maintaining transaction scope integrity |
US10073687B2 (en) * | 2016-08-25 | 2018-09-11 | American Megatrends, Inc. | System and method for cross-building and maximizing performance of non-native applications using host resources |
US10282109B1 (en) * | 2016-09-15 | 2019-05-07 | Altera Corporation | Memory interface circuitry with distributed data reordering capabilities |
TWI650648B (zh) * | 2018-02-09 | 2019-02-11 | 慧榮科技股份有限公司 | 系統晶片及存取系統晶片中記憶體的方法 |
DE102018122920A1 (de) * | 2018-09-19 | 2020-03-19 | Endress+Hauser Conducta Gmbh+Co. Kg | Verfahren zur Installation eines Programms auf einem eingebetteten System, ein eingebettetes System für ein derartiges Verfahren sowie ein Verfahren zur Erstellung einer Zusatzinformation |
CN111241010B (zh) * | 2020-01-17 | 2022-08-02 | 中国科学院计算技术研究所 | 一种基于缓存划分及回滚的处理器瞬态攻击防御方法 |
CN117407003B (zh) * | 2023-12-05 | 2024-03-19 | 飞腾信息技术有限公司 | 代码翻译处理方法、装置、处理器及计算机设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470627A (zh) * | 2007-12-29 | 2009-07-01 | 北京天融信网络安全技术有限公司 | 一种mips平台下并行多核配置锁的实现方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5872990A (en) * | 1997-01-07 | 1999-02-16 | International Business Machines Corporation | Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment |
US8127121B2 (en) * | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US7120762B2 (en) * | 2001-10-19 | 2006-10-10 | Wisconsin Alumni Research Foundation | Concurrent execution of critical sections by eliding ownership of locks |
US6862664B2 (en) * | 2003-02-13 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for avoiding locks by speculatively executing critical sections |
US7930694B2 (en) * | 2004-09-08 | 2011-04-19 | Oracle America, Inc. | Method and apparatus for critical section prediction for intelligent lock elision |
JP2009508187A (ja) * | 2005-08-01 | 2009-02-26 | サン・マイクロシステムズ・インコーポレーテッド | クリティカルセクションをトランザクション的に実行することによるロックの回避 |
US7844946B2 (en) * | 2006-09-26 | 2010-11-30 | Intel Corporation | Methods and apparatus to form a transactional objective instruction construct from lock-based critical sections |
US8190859B2 (en) * | 2006-11-13 | 2012-05-29 | Intel Corporation | Critical section detection and prediction mechanism for hardware lock elision |
US8201169B2 (en) * | 2009-06-15 | 2012-06-12 | Vmware, Inc. | Virtual machine fault tolerance |
US8402227B2 (en) * | 2010-03-31 | 2013-03-19 | Oracle International Corporation | System and method for committing results of a software transaction using a hardware transaction |
US8479176B2 (en) * | 2010-06-14 | 2013-07-02 | Intel Corporation | Register mapping techniques for efficient dynamic binary translation |
US8799693B2 (en) * | 2011-09-20 | 2014-08-05 | Qualcomm Incorporated | Dynamic power optimization for computing devices |
WO2013115818A1 (en) * | 2012-02-02 | 2013-08-08 | Intel Corporation | A method, apparatus, and system for transactional speculation control instructions |
WO2013115816A1 (en) * | 2012-02-02 | 2013-08-08 | Intel Corporation | A method, apparatus, and system for speculative abort control mechanisms |
US9223550B1 (en) * | 2013-10-17 | 2015-12-29 | Google Inc. | Portable handling of primitives for concurrent execution |
-
2014
- 2014-03-27 US US14/227,014 patent/US20150277914A1/en not_active Abandoned
-
2015
- 2015-03-10 WO PCT/US2015/019562 patent/WO2015148099A1/en active Application Filing
- 2015-03-10 EP EP15768669.2A patent/EP3123307A4/en not_active Withdrawn
- 2015-03-10 KR KR1020167023070A patent/KR101970390B1/ko active IP Right Grant
- 2015-03-10 CN CN201580010755.2A patent/CN106030522B/zh active Active
- 2015-03-10 JP JP2016559164A patent/JP2017509083A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470627A (zh) * | 2007-12-29 | 2009-07-01 | 北京天融信网络安全技术有限公司 | 一种mips平台下并行多核配置锁的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3123307A4 (en) | 2017-10-04 |
EP3123307A1 (en) | 2017-02-01 |
CN106030522A (zh) | 2016-10-12 |
KR101970390B1 (ko) | 2019-04-18 |
JP2017509083A (ja) | 2017-03-30 |
KR20160113651A (ko) | 2016-09-30 |
WO2015148099A1 (en) | 2015-10-01 |
US20150277914A1 (en) | 2015-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106030522B (zh) | 利用基于二进制翻译的处理器的锁省略 | |
JP5255614B2 (ja) | マルチプロセッサ環境におけるトランザクションベースの共有データオペレーション | |
US8881153B2 (en) | Speculative thread execution with hardware transactional memory | |
JP5592015B2 (ja) | ハードウェア制限に基づく調整可能なトランザクション・サイズを利用してコードを動的に最適化する装置、方法およびシステム | |
US8140773B2 (en) | Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM | |
US8495607B2 (en) | Performing aggressive code optimization with an ability to rollback changes made by the aggressive optimizations | |
EP1966697B1 (en) | Software assisted nested hardware transactions | |
RU2501071C2 (ru) | Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle) | |
US20100162247A1 (en) | Methods and systems for transactional nested parallelism | |
US8316366B2 (en) | Facilitating transactional execution in a processor that supports simultaneous speculative threading | |
US20110320776A1 (en) | Mechanism for irrevocable transactions | |
KR20130064792A (ko) | 원자 영역에서 조건부 커미트를 위한 결정 메카니즘 제공 장치, 방법, 및 시스템 | |
CN104598397A (zh) | 使用缓冲存储加速事务的机构 | |
CN109690476A (zh) | 处理针对向量指令的元素间地址危害 | |
Haas et al. | Fault-tolerant execution on cots multi-core processors with hardware transactional memory support | |
US9459963B2 (en) | Safely rolling back transactions in a transactional memory system with concurrent readers | |
US9251074B2 (en) | Enabling hardware transactional memory to work more efficiently with readers that can tolerate stale data | |
Zacharopoulos | Employing hardware transactional memory in prefetching for energy efficiency | |
Nagarajan et al. | Memory Consistency Motivation and Sequential Consistency | |
Munday | Energy efficient memory speculation with memory latency tolerance supporting sequential consistency without a coherence 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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |