CN102144218A - 可虚拟化的先进同步设备 - Google Patents
可虚拟化的先进同步设备 Download PDFInfo
- Publication number
- CN102144218A CN102144218A CN2009801357742A CN200980135774A CN102144218A CN 102144218 A CN102144218 A CN 102144218A CN 2009801357742 A CN2009801357742 A CN 2009801357742A CN 200980135774 A CN200980135774 A CN 200980135774A CN 102144218 A CN102144218 A CN 102144218A
- Authority
- CN
- China
- Prior art keywords
- affairs
- processor
- instruction
- memory
- group
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims abstract description 197
- 238000000034 method Methods 0.000 claims abstract description 45
- 238000003860 storage Methods 0.000 claims description 112
- 238000012986 modification Methods 0.000 claims description 22
- 230000004048 modification Effects 0.000 claims description 22
- 230000005540 biological transmission Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 9
- 238000012546 transfer Methods 0.000 claims description 6
- 230000007613 environmental effect Effects 0.000 claims description 2
- 230000008878 coupling Effects 0.000 claims 2
- 238000010168 coupling process Methods 0.000 claims 2
- 238000005859 coupling reaction Methods 0.000 claims 2
- 206010000210 abortion Diseases 0.000 abstract 1
- 230000007246 mechanism Effects 0.000 description 84
- 230000009471 action Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 238000001514 detection method Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000011084 recovery Methods 0.000 description 7
- 230000007717 exclusion Effects 0.000 description 6
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 238000011068 loading method Methods 0.000 description 3
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 230000003716 rejuvenation Effects 0.000 description 1
- 238000013519 translation Methods 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/466—Transaction processing
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- 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
-
- 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/468—Specific access rights for resources, e.g. using capability register
-
- 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)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种在事务存储系统中执行事务的系统和方法。该系统包括耦合到共享存储器的多个处理器中的一个处理器,其中该处理器执行相对于多处理器的执行是原子(atomic)事务的代码段,该代码段包括到共享存储器的多个存储器访问操作。根据实施例,处理器确定存储器访问操作是否包括任何一组禁止指令,其中,该组指令包括一个或多个在虚拟计算环境中和现实计算环境中操作不同的指令。如果任何一个存储器访问操作是上述禁止操作之一,那么处理器中止该事务。
Description
背景技术
共享存储器(shared-memory)计算机系统允许多个并发执行的线程访问共享存储器位置。不幸的是,由于协调并发存储访问的复杂性,编制正确的多线程程序是困难的。
传统的,为了确保程序的正确性,编程者已经使用锁(lock)或其他相互排除机制来调整到共享存储器位置的访问。例如,使用传统的锁,一个线程可以被配置为在每一个它需要独占访问的存储器位置上请求并持有一个锁。当该线程持有锁时,没有其他的线程可以请求该锁,并且因此,没有其他的线程能够访问被该锁保护的存储器位置。然而,传统的锁定机制(locking techniques)对多种缺陷来说是易攻击的,包括死锁、竞态条件,优先级翻转,软件复杂度以及性能限制。
一种替代的并发控制方式是事务存储器(transactional memory)。在事务存储器编程模式下,编程者能够指定代码段(一条执行路径或一组代码指令)作为“事务”(transaction),该代码段相对于其他线程的执行应该被原子地(atomically)执行。举例来说,如果该事务包括两个存储器存储操作,那么事务存储系统则要确保所有的其他线程仅仅可以或者看到这两个存储操作的叠加结果或者两个操作结果都看不到,但是不会只看到其中一个存储操作的结果。除了简单的编程模式之外,由于事务存储系统可允许比传统的锁更细粒度的(grained)存储器共享,因此事务存储系统也能够提高应用的性能。
近来已经提出了多种不同的事务存储系统,包括那些以硬件、软件以及结合的方式实现的。然而,许多以前的概念和实现被不同的限制所局限。例如,当基于硬件的事务存储系统(HTM)可能受抑于复杂的实现时,基于软件的事务存储系统(STM:software-based transactional memory system)则需要承受令人不快的性能过载。
发明内容
在事务存储系统中执行事务的系统和方法被公开。该系统包括耦合到共享存储器的多个处理器中的一个处理器。其中该处理器执行相对于多处理器的执行是原子(atomic)事务的代码段,所述代码段包括到共享存储器的多个存储器访问操作。
根据一些实施例,处理器可被配置为确定存储器访问操作是否包括一组禁止指令的任何一个,其中,该组指令包括一个或多个在虚拟计算环境中和原生计算环境中以不同方式操作的指令。如果任何存储器访问操作是上述禁止指令之一,那么处理器中止该事务。
附图说明
图1是根据不同实施例,说明被配置为实现ASF的多处理器计算机系统组件的方块图。
图2是根据一个实施例,说明组成处理器的更详细的组件视图的方块图。
图3是根据不同实施例,说明利用ASF执行事务的方法大致流程图。
图4是根据一个实施例,说明嵌套事务(nested transaction)例子的方块图。
图5是根据一些实施例,说明预测(SPECULATE)指令实现在回退模式(rollback mode)下开始预测段的流程图。
图6是根据一些实施例,说明在条件存储模式下执行开始(BEGIN)指令以开始预测段的步骤的流程图。
图7是根据一些实施例,一组定义了各种ASF实现如何处理数据竞争的规则组成的表。
图8是根据不同实施例,说明在回退模式下ASF机制可执行事务的方法流程图。
图9是根据一些实施例,说明诸如通过执行提交(COMMIT)指令提交事务的方法。
图10是根据一些实施例,说明在条件存储模式下执行事务的方法流程图。
图11是根据一个实施例,说明用于配置基于ASF的事务以用锁代码进行互操作的方法流程图。
图12是说明被配置为实现不同ASF实施例的计算机系统的一个实施例,如此处所述。
尽管此处通过不同的实施例以及所示附图描述本发明,本领域技术人员应该意识到本发明不限于所描述的实施例或附图。可以被理解的是,此处的附图和详细的说明书并不试图将本发明限定在所公开的特定形式上,相反地,应涵盖所附权利要求所限定的所有落于本发明的精神与领域的修改、相等物与替代形式。此处使用的任何标题仅用于组织目的而不意味着限制说明书或权利要求的范围。申请中所使用的单词“可/可以(may)”用来表示许可的意思(也就是可能可以)而不是强制的意思(也就是必须)。同样的,单词“包括(include,including,includes)”意味着包括而不限于。
优选实施方式的详细描述
事务存储系统可允许在多线程系统中的软件线程相对于其他线程原子地(atomically)访问(读和/或写)一组共享存储器位置,而不需要与诸如使用锁的互斥排他的传统同步机制相关的额外系统开销和复杂编程。然而,为了提高事务存储系统的性能,更进一步的技术是必须的。
根据一些实施例,不同的硬件机制可用来实现高效的事务存储机制,如此处描述。在一些实施例中,在计算上很便宜的元语(primitivies)(例如程序指令)可被定义成命令硬件执行不同的同步功能,这些元语可被用来合成更高级的同步机制。此处的硬件机制和/或程序指令可被统称为高级同步工具(ASF:Advanced Synchronization Facility)。
在一些实施例中,一种现有的处理器架构(例如:x86)可被扩充来实现ASF机制。为了清楚的解释这一点,本发明的其余部分会描述公知的64位x86构架AMD64如何用ASF机制扩充来实现事务存储器。然而,这些示例性实施例并不是为了将ASF机制仅限于这种架构中,根据发明的优点,在其他处理器架构中实现ASF机制对本领域技术人员是显而易见的。
图1是根据不同实施例,说明被配置来实现ASF的多处理器计算机系统组件的方块图。根据所示的实施例,计算机系统100可包括多个处理器,如处理器110a和110b。在一些实施例中,处理器110可包括多个物理或逻辑(例如,SMT)的内核并且它们彼此耦合和/或通过互联(interconnect)诸如140耦合到共享存储器150上。在不同的实施例中,可使用不同的互联(interconnect),比如处于不同的拓扑结构(例如,全连接,环形链接等)的共享存储器总线或点到点网络。
根据所示的实施例,每一个处理器110可包括一层或多层存储器缓存(memory cache)130。存储器缓存的层数可被分层设置(例如,L1缓存,L2缓存,L3缓存等)并且用来缓存存储在共享存储器150中的值的本地副本。
在不同的实施例中,存储器缓存130可包括多种缓存一致性机制132。在一个实施例中,缓存一致性机制132可在互联的处理器之间实现缓存一致性通信协议以确保包含在每一个处理器110的存储器缓存130中的值与存储在共享存储器和/或其他处理器的存储器缓存中的值相一致。一些这样的协议已经存在(包括MESI(Illinois协议)和MOESI协议)并且可由多种的实施方式来实现。缓存一致性协议可定义一组消息和规则,通过这些消息和规则处理器可相互通知对共享的数据的修改并因此来确保缓存的一致性。例如,根据MESI协议,每一个存储在缓存中的块必须被标记为四种状态中的一种:修改(modified)、互斥(exclusive)、共享(shared)或无效(invalid)。给定的协议定义一组发送和解释这些状态的消息和规则,通过这些定义处理器维护在每一个块上的正确标记。基于给定的缓存块的状态,处理器可被限制不能执行一些操作。例如,处理器不可以执行依赖于被标记为无效的缓存块的程序指令。在不同的实施例中,缓存一致性机制可通过硬件、软件或其结合来实现。缓存一致性消息可通过互联140来被通信并且可被广播或点到点传播。
根据所示的实施例,每一个处理器110也可以包括实现事务存储的多种ASF机制,如此处所述。在不同的实施例中,更多的处理器110被连接到互联140,并且多种分层的存储器缓存可在多个这样的处理器和/或每一个处理器的多个内核之间共享。
图2是根据一个实施例,说明组成处理器诸如处理器110的组件的更详细视图的方块图。根据图2所示的实施例,处理器200包括寄存器文件210,该文件可包括各种寄存器,其中每个寄存器可以是任意大小的(例如,16-位,32-位,64-位,128-位等等)。例如,寄存器文件210可包括多种现有的x86寄存器,诸如rSP寄存器212(堆栈指针),rIP寄存器214(指令指针),rAX寄存器216(累加器寄存器),和/或rFLAGS寄存器218(指示处理器状态的标志寄存器)。在一些实施例中,寄存器文件210可进一步包括任意数量的通用目的寄存器220和/或浮点指针寄存器222。在一些实施例中,寄存器文件210可包括一个或多个128-位寄存器,诸如XMM寄存器224。在不同的实施例中,寄存器文件210可包括任意数量的其他具有各种大小的寄存器226。
根据所示的实施例,处理器200可包括用来在共享存储器中存储本地副本的存储器缓存230和用来维持分布在共享存储器、缓存和其他缓存中的多个副本的数值的一致性的缓存一致性机制232。处理器200也可包括用来实现事务同步机制的ASF机制240,如此处所述。根据不同的实施例,ASF机制240可包括数据结构和/或逻辑来实现此处所述的存储器事务。在一些实施例中,ASF机制240可包括一个锁定线缓冲器(locked line buffer)242,其可被用在发生中止(abort)时回退由部分已执行的事务对存储器造成的改变,如下所述。在一些实施例中,ASF机制240可包括嵌套层寄存器244,其可存储指示当前事务被嵌套到其他事务中的深度值,如下详细描述。在一些实施例中,ASF机制可包括指示事务是否处于有效状态的标志,诸如事务有效状态标志(transaction active flag)246。在一些实施例中,ASF机制可包括指示事务模式的标志,诸如条件存储模式标志248,设置该标志来指示执行中的事务是否处于条件存储模式或其他模式下。在进一步的实施例中,其他标志和/或寄存器可在ASF机制中实现以支持事务的执行。
图3是根据不同实施例说明利用ASF来执行事务的方法流程图。根据所示的实施例,ASF可允许软件(例如,线程)通过执行表示事务开始的给定指令(或多个指令)来开始一个事务(关键段代码),如步骤310所示。如后讨论的,在不同的实施例中,诸如SPECTULATE或BEGIN的ASF指令可用来指示关键段(critical section)的开始。
在一个事务开始之后,线程可执行包括事务实体的一系列指令,如步骤320所示。该系列指令可包括多个存储器访问(读和/或写)操作,一些存储器访问操作可指定被访问的存储器位置应该是受保护(protected)的。线程可指定给定的存储器位置应该通过使用由ASF提供的一个或多个特定说明符(declarator)指令来被保护。ASF机制可确保到受保护存储器(由说明符指令所指定的)的访问相对于系统中所有其他同时执行的线程原子地(atomically)发生(所有的访问同时发生或没有访问发生)。例如,如果事务包括多个到存储器的受保护的写操作,那么ASF机制可确保没有其他线程可看到那些到存储器的受保护的写操作的仅子集的结果。又例如,根据一些实施例,如果事务包括一个或多个受保护的存储器读操作,那么ASF机制可确保只有在这样的情况下,即在事务完成之前没有其他线程已修改受保护的读位置,事务才成功地完成。在多个实施例中,被说明符操作保护的“存储器位置”可以具有不同的大小,诸如取决于系统的缓存块或其他大小。
根据这样的实施例,ASF可被配置为仅保护已利用指定的说明符指令指定的存储器线。在这样的实施例中,所有其他存储器位置可保持为未受保护的并且可使用标准的x86指令在关键段内被修改。这些到未保护的存储器的修改对其他CPU是在执行时(例如,以程序顺序(program order))即时可见的。在一些实施例中,事务实体(例如,在步骤320中执行的指令)可包括一个或多个其他事务(即,嵌套事务)。
根据多个实施例,如果事务执行的一个或多个条件已经被违背,那么该事务可中止(如步骤330的肯定指向所示)。在不同的实施例中,事务尝试可在任何点由于与其他处理器的竞争、远程控制传输(far control transfer)(诸如由中断或错误引起的)、明确的软件指令ABORT的执行、不足的硬件资源、其他特定的实现条件等等而中止。
在不同的实施例中,当事务尝试中止时,不同的恢复动作可基于事务执行的模式而被采用。在不同的实施例中,ASF可支持回退(rollback)模式的执行和/或条件存储(store-conditional)模式的执行。在一些实施例中,响应于事务尝试的中止,事务执行的模式可确定采取什么样的动作。例如,在一些实施例中,中止回退模式下的事务可造成事务的执行被回退到事务的开始,而中止在条件存储模式下的事务尝试可使得事务继续执行但是事务存储操作却不被执行(即,在没有被中止的事务上执行事务存储是有条件的)。
根据所示的实施例,当执行在回退模式下的事务中止时(如步骤340的肯定指向所示),ASF机制可被配置为执行恢复动作,如步骤350,其包括丢弃(discard)对受保护线的内容的修改。通过丢弃这样的修改,如步骤350,ASF机制可使得该修改对系统中的其他线程是不可见的,因此符合了事务的原子特性。然而,ASF机制可被配置为不回退对未受保护的存储器的修改,诸如那些使用传统x86存储器指令来执行的。在这些实施例中,应用的编程者可提供用于适应这些未受保护的修改的软件,诸如被配置为再次输入通向关键段的初始化序列的软件恢复例程(routine)。
在不同的实施例中,恢复动作350可被配置为仅回退系统寄存器(例如rIP和rSP)的子集而不是回退所有寄存器。在这样的实施例中,不依赖于不同寄存器的内容,当进入到事务执行中时,软件因此可被写入(例如,通过忽略中止事件之后某些寄存器的原始内容和/或在事务执行期间不修改多个寄存器)。
在一些示例中,在中断或异常处理程序(exception handler)返回前,操作系统代码或其他进程可在该间歇执行。进一步,在一些示例中,其他进程甚至已经执行ASF事务,该ASF事务观察和修改作为中断事务目标的位置。在一些实施例中,通过在上下文转换过程中不需要维持任何ASF相关状态,ASF机制从而可排除这些顾虑。而是,在这样的实施例中,当被中断的线程返回到处理器时,ASF机制可被配置为自动中止并重试该事务。
根据所示的实施例,在执行某个或一些恢复动作后,线程可重试事务,如从步骤350到步骤310所示的反馈循环。
在一些实施例中,在条件存储模式下执行的事务中止(如步骤340的否定指向所示)与在回退模式下执行的事务中止(如步骤340的肯定指向所示)是以不同方式处理的。例如,回退模式事务的中止可自动重置到关键段的开始部分(或到其他恢复代码)的执行流程,而条件存储模式下事务的中止可通过如下操作被处理,即:撤消(undo)或以其他方式丢弃由关键段对受保护存储器位置中的数值的造成的修改然后“无效(deactivate)”该事务,如步骤360中所示。在不同实施例中,无效该事务可包括设置指示中止已经发生和/或事务不再有效的状态代码。在条件存储模式下,在事务已经被无效之后(步骤360),系统可继续执行关键段而不需要执行任何到受保护存储器位置的存储操作(步骤370)。例如,在事务被无效后,随后的到受保护存储位置的操作可被看作无操作(no-op)。
在一些实施例中,当中止的事务完成时,状态代码可被设置在寄存器(诸如rAX寄存器216)中以指示事务已经被中止。在一些实施例中,线程可被配置为检测中止状态代码已经被设置并且执行一个或多个恢复操作,如从步骤370到步骤350的反馈循环所示。在不同的实施例中,恢复动作350对在条件存储模式下(即,从步骤370)中止的事务和在回退模式下(即,从步骤340)中止的事务可以是不同的。在回退和条件存储模式下事务的更详细的讨论将在下面论述。
根据所示的实施例,一旦事务实体已经被完成,线程可执行一个或多个指示到ASF机制的事务结束的指令,如在步骤380中所示,诸如提交(COMMIT)指令,将会在下面讨论。在提交事务之后,如在步骤380中,线程可继续执行,如在步骤390中。
在一些实施例中,ASF可支持一个或多个事务与一个或多个其他事务的嵌套。例如,在步骤310中,在一个事务开始之后(例如,通过执行预测(SPECULATE)命令),在步骤320中被执行的事务实体的指令在第一个事务完成之前可开始另一个事务(例如,通过执行另一个预测(SPECTULATE)命令)。在这种情况下,第二个(“子”)事务可被称作“嵌套”在第一个(“父”)事务中。不嵌套在任何其他事务中的事务此处可被称作“顶层”事务。
图4是根据一个实施例说明嵌套事务的例子。根据图4所示,顶层父事务400是一个包括两个嵌套事务的回退模式事务:同样处于回退模式的嵌套父事务410和处于条件存储模式的嵌套事务440。根据所示的实施例,嵌套父事务400包括两个嵌套事务,包括嵌套事务420和嵌套事务430,上述两个事务分别处于回退模式和条件存储模式。
在一些实施例中,ASF机制可被配置为平滑(flatten)嵌套事务(例如,由多个预测-提交对(SPECULATE-COMMIT pair)组成的)为单一事务。在一些实施例中,嵌套事务可共享ASF硬件资源。也就是说,在一些实施例中,在嵌套事务的执行过程中,受父事务保护的存储器位置对子事务也是受保护的。进一步的,在一些实施例中,即使在嵌套事务已经被完成之后,在嵌套事务中被保护的存储器位置可依然在父事务中被保护。这样,在一些实施例中,当处理被子事务保护的存储器位置时,父事务可能需要继续使用保护存储器操作。因此,在这样的实施例中,由父事务在被子事务保护的存储器位置上执行的常规存储器写操作的使用可导致常见的保护错误被引起(#GP异常)。
在一些实施例中,一个或多个条件存储事务可被嵌套在一个或多个回退事务中,在一些实施例中,由于嵌套事务的平滑化,ASF机制可被配置为通过执行顶层父事务的恢复操作来响应于嵌套的条件存储事务的中止(如在步骤350中)。然而,根据一些实施例,在条件存储事务内部,嵌套事务可能被禁止。
为了使能事务执行,ASF机制可定义并公开可以被软件线程调用(invoke)的多个一致性控制指令。由于这些指令在不同实施例中可能被不同地命名,因此多个实施例可公开与下述一个或多个相匹配或相似的一致性控制指令。
图5是根据一些实施例说明预测(SPECULATE)指令的实现。如上所讨论的,在一些实施例中,预测(SPECULATE)指令可通过线程被执行以指示回退模式中事务的开始。根据所示的实施例,执行预测(SPECTULATE)操作可包括检查事务的嵌套是否超过了系统所支持的最大嵌套深度,如在步骤505中。在不同的实施例中,不同的寄存器和/或存储器位置可被用来存储(hold)当前执行事务的深度。如果该事务比系统定义的最大嵌套深度还深的话,如步骤505否定指向所示,那么ASF机制可产生通用保护错误(#GP[0]),如在步骤515中。
根据所示的实施例,执行预测(SPECULATE)指令可进一步包括确定事务是否被嵌套到条件存储事务中,如在步骤510中。在一些事务不能被嵌套到条件存储事务中的实施例中,为了响应于检测到父事务是条件存储事务,如步骤510中肯定指向所示,则ASF机制可被配置为产生一个通用保护错误(或采取其他动作),如在步骤515中。在不同的实施例中,可读出用于指示当前执行模式的寄存器或存储器位置的内容,以此来判断父事务是否在条件存储模式下执行。在进一步的实施例中,事务合法性的其他不同检查也被执行并且如果其中一个或多个条件被违反的话,则产生GP错误。
根据所示的实施例,如果事务是合法的(例如,没有超出最大嵌套深度并且没有嵌套在条件存储事务中),那么rAX寄存器(或其他相应的寄存器)可被重置,诸如将其设置为零值。在一些实施例中,rAX寄存器可存储(hold)不同的数值和代码以指示事务执行的状态,如下所述。
根据所示的实施例,预测(SPECULATE)的执行可确定该事务是否是顶层事务,如在步骤530中。在一些实施例中,这种确定包括根据检查到的增加的嵌套层数的数值来确定当前的事务是否被嵌套。如果该事务是顶层事务,如步骤530中肯定指向所示,则执行预测(SPECULATE)可包括记录检查点(checkpoint),该检查点包括能够在事务被中止时由处理器使用以返回到给定的回退点的信息。在一些实施例中,记录检查点可包括记录在预测(SPECULATE)指令已经被执行之后指令指针(例如,rIP214)和堆栈指针(例如,rSP212)的即时值,如在步骤535和540中。这样,一旦事务被中止,该记录的检查点可被用来传输控制到紧跟在预测(SPECULATE)指令之后的指令上。在一些实施例中,执行预测(SPECULATE)可进一步包括设置或修改一个或多个寄存器中的值以指示处理器状态,诸如在rFLAGS寄存器218中的值。
在一些实施例中,预测(SPECULATE)指令可开始回退模式下的事务,而不同的指令(例如,开始(BEGIN))可在开始条件存储模式下的事务。
图6是根据一些实施例说明执行开始(BEGIN)指令的步骤。通过确定事务的一个或多个合法性条件来开始方法600。在一些实施例中,上述合法性条件与执行预测(SPECULATE)事务时检查的条件是相似的。例如,在方法600中,执行开始(BEGIN)包括确定是否已达到最大嵌套深度(如在步骤605中)并确定当前事务是否被嵌套在另一个条件存储段内(如在步骤610中)。如果任何一个条件成立(如步骤605和步骤610各自的肯定指向所示),那么ASF机制产生GP或其他错误,如在步骤615中。另外,根据方法600,执行开始(BEGIN)可包括重置rAX或其他寄存器(例如,设为0),如在步骤620中,增加嵌套层数(如在步骤625中),并设置当前事务是在条件存储模式下的标志(如在步骤630中),继续事务实体的事务执行(如在步骤635中)。在不同的实施例中,在步骤630中设置的标志可用来确定当前事务是否处于条件存储模式下,诸如在步骤510和610中。
在一些实施例中,ASF机制可定义不同存储器-引用(memory-reference)指令,被称作说明符(delcarators),这些指令用来指定哪些存储器位置应该被保护为事务的一部分(需要原子访问的存储器位置)。例如,在一些实施例中,ASF机制可公开与标准的x86 MOV指令相似的用于读取存储器的说明符存储器访问指令。类似于传统的MOV指令,ASF-定义的LOCK MOV指令可被用来从存储器中加载数据。然而,根据一些实施例,如果一个线程使用LOCK MOV指令读取事务内部的存储器位置,则ASF机制可增加包含引用存储器位置的第一字节的存储器缓存块到受保护的缓存块组。在一些实施例中,软件机制可确保未对准(unaligned)的存储器访问不会跨越(span)受保护和不受保护的缓存线。根据一些实施例,引用受保护的缓存块的说明符指令可像通用存储器引用一样来操作并且不会改变块的受保护状态。在一些实施例中,说明符在关键段外是被禁止的(例如,发生异常)。在一些实施例中,关键段外的说明符可被看作是通用的存储器操作。在一些条件存储模式是可用的实施例中可能会出现这种情况。
在一些实施例中,ASF机制可定义说明符而不是LOCK MOV指令。例如,与x86 PREFETCH和/或PREFETCHW类似的指令可被使用(例如,LOCK PREFETCH,LOCK PREFETCHW)。与x86指令相似的是,LOCK PREFETCH和LOCK PREFETCHW被用来从存储器中提取数值以读(PREFETCH)或写(PREFETCHW)到缓存中。然而,与没有LOCK前缀的标准预取不同的是,LOCKPREFETCH和LOCK PREFETCHW可使得存储器位置被保护。此外,在一些实施例中,LOCK PREFETCH和LOCK PREFETCHW也可校验特定存储器地址的翻译错误和存储器访问权限(读或写,分别地),并在校验不成功的情况时生成页面错误。在一些实施例中,当引用已经被数据断点配置的存储器地址时,LOCK PREFETCH和LOCK PREFETCHW可生成#DB异常。
在一些实施例中,一旦存储器位置已经使用说明符而被保护时,则它在事务中不是以非预测方式而是以预测方式被再次修改。例如,在一些实施例中,在存储器位置已经使用LOCK MOV读指令被读取后,存储在该位置的数值可使用ASF定义的LOCK MOV存储指令被以预测方式修改。根据一些实施例,这种预测的更新可仅在事务被提交时可见。根据这样的实施例,如果事务尝试中止,那么预测的更新则被回退和/或以其他方式丢弃。在一些实施例中,在事务执行期间,已经使用说明符来保护的存储器位置可仅被预测的存储指令修改。在这样的实施例中,如果在事务模式下的线程试图使用传统的非预测存储操作来修改受保护的存储器位置的数值时,则ASF机制可产生异常/错误(例如,#GP(0))。
在一些实施例中,如果预测的存储指令(例如,LOCK MOV)在关键段外被执行,那么异常则可能发生。在其他诸如条件存储模式下是可用的实施例中,关键段外部的预测存储操作可被看作是无操作(no-op)。
在不同的实施例中,说明符存储器指令可参与到系统缓存一致性协议中。例如,如果读取存储器位置的LOCK MOV或LOCKPREFETCH指令在缓存中不中(miss in the cache)时,它可发送非无效探测(probe)到其他处理器,如由系统缓存一致性协议所示。在另一个例子中,如果给定的缓存线没有在本地缓存中以排他/独占状态驻留,则使用LOCM MOV指令修改该缓存线会导致发送无效探测(invalidating probe)到其他处理器,如在系统缓存一致性协议所示。在一些实施例中,执行LOCK PREFETCHW指令可也导致发送无效探测等等。
不同的ASF机制可被用来监测和/或加强受保护的存储器位置(例如,受保护缓存块)。在一些实施例中,ASF机制可包括到一个或多个系统缓存的扩展(例如,存储器缓存230),该扩展用来指示哪些缓存线(块)被保护。例如,在一个实施例中,在给定缓存中的每一个缓存线可包括“被保护”标志,如果在当前执行的事务中缓存线被保护时则设置该标志,反之则不设置。在一些实施例中,被保护的标志可包括一个或多个位。
在一些实施例中,跟踪被保护缓存线的ASF机制可包括锁定线缓冲器(locked line buffer)。在这样的实施例中,当被保护存储器中的数值被修改时(例如,使用LOCK MOV指令),在锁定线缓冲器上增加条目(entry)以指示修改之前的缓冲器所具有的缓存块和数值。在这样的实施例中,当事务中止发生时,锁定缓冲器的条目可被用来将每一个受保护缓存线的事务前(pre-transaction)的数值恢复到本地缓存中。在这样的实施例中,锁定线缓冲器可参与到系统缓存一致性协议中,如下所述。
在另一个实施例中,不是如上面所述的利用锁定线缓冲器来撤消(undo)存储器存储,而是在事务被提交之前,不同的ASF实现可防止到关键段中的受保护存储器位置的存储指令被写入到缓存和/或存储器中。例如,ASF可用来将所有存储器修改保留在内部存储缓冲器中并转发这些缓冲的数值到事务中随后的加载操作。在这样的实施例中,一旦事务被提交,则ASF机制可允许将内部存储缓冲器中被缓冲的存储操作写回到缓存中。
在一些实施例中,由于不同ASF硬件组件的固定容量,可在事务(或嵌套的事务组)执行期间被同时保护的存储器位置的数量上存在不同限制。例如,如上所述,根据一些实施例,在关键段的时间段中,实现可能要求所有被保护存储器位置同时驻留在一个数据缓存中(例如,存储器缓存230)。在这样的实施例中,如果一个受保护的缓存线在事务执行期间被从缓存中逐出的话(例如,由于容量限制),则关键段被中止。例如,当被保护存储器位置N+1(其中所有N+1个存储器位置被映射到N路关联数据缓存中的相同的组)被访问时,因为至少一个被保护的缓存线被从缓存逐出,则碰巧引用N+1存储器位置的关键段可能失败。然而,如果事务执行更加分布的引用模式的话,那么在任何一个缓存索引被超出以及受保护缓存线从数据缓存中被替换之前,事务能够并发保护多于N个的存储器位置。
在不同的实施例中,可能存在不同于缓存关联的容量限制。例如,在使用锁定线缓冲器的实施例中,并发的被保护修改存储器位置的最大数量可由锁定线缓冲器的容量来确定。在另一个采用存储缓冲器机制的实施例中,ASF硬件容量可依赖于存储缓冲器的容量(由系统流水线(pipeline)支持的最大数量的剩余(outstanding)存储)。
在不同的实施例中,只要受保护位置的数量没有超过给定的最小保证容量的话,则ASF机制可保证关键段不会由于硬件容量的问题而失败。在不同的实施例中,不管受保护存储器位置驻留在可缓存的地址空间的何处,上述保证都可实现。例如,在需要所有受保护存储器位置同时驻留在一个数据缓存的实施例中,最小保证容量可依赖于数据缓存的关联性(关联组的大小)。在不同的实施例中,如果事务超出了硬件容量,那么事务尝试可中止。
在一些实施例中,ASF机制可允许执行事务的线程从事务的受保护存储器位置组中删除未修改的受保护存储器位置。在一些实施例中,通过执行由ASF提供的明确的RELEASE指令,线程可完成上述删除操作。在一些实施例中,当受保护的存储器位置被释放时(例如,使用RELEASE指令),则不再监视该位置与其他线程的竞争。例如,在使用受保护标志的实施例中,可修改与被释放的缓存块相关的受保护标志的数值以指示该缓存块不再被保护。因此,通过从受保护存储器位置组中删除未修改的受保护存储器位置,线程可避免与其他线程不必要的数据冲突和/或超出ASF实现的硬件容量,上述冲突和超出容量可导致事务中止。在一些实施例中,RELEASE指令可保证或不保证特定的受保护存储器位置将会被释放。在一些实施例中,只有未被修改的受保护缓存线可被释放。
如上所述,在一些实施例中,如果事务试图保护(利用说明符)比ASF实现容量能够支持的存储器位置更多的存储器位置(例如,缓存块)的话,那么事务可被中止。在另一实施例中,响应于错误的生成,中止也可被执行。
在不同的实施例中,事务中止可由不足的硬件容量之外的其它条件引起。例如,中止可由存储器竞争引起,也就是,是由其他试图访问受保护存储器位置的处理器引起的冲突。在不同的实施例中,ASF机制可被配置为检测与一个或多个受保护缓存线相关的各种缓存一致性消息(例如,无效和/或非无效(non-invalidating)探测)并确定该探测是否指示存在数据冲突。响应于检测到的数据冲突,ASF机制可中止事务尝试。例如,假定第一线程是在事务模式下执行并保护存储器位置(使用说明符指令读取存储器位置)。如果随后第二线程试图对上述被保护的存储器位置进行存储,那么执行第二线程的处理器可发送无效探测到执行第一线程的处理器,依照系统采用的特定缓存一致性协议。如果当存储器位置依然被保护时(例如,在第一线程提交它的事务或以其他方式释放存储器位置之前)第一处理器接收到了该无效探测,那么数据冲突则可能存在。在这样一个例子中,ASF机制可被配置为检测无效探测是与被保护存储器位置相关的并且响应于该检测,中止第一线程的事务。
根据不同的实施例,如果ASF机制检测到与被保护缓存线相关的无效探测被接收时,则中止事务。在一些实施例中,如果ASF机制检测到与被保护缓存线相关的非无效探测被接收时,则事务也被中止。
图7是根据一些实施例,由一组定义不同的ASF实现如何处理数据冲突的规则组成的表。图7的表描述了如下冲突的结果,即,当在第一处理器(CPU A)上执行的第一线程在给定存储器位置上执行给定存储器访问操作时,第二处理器(CPU B)上的第二线程正在执行已经保护该位置的事务。如上所述,不同缓存一致性协议允许存储器缓存具有不同的状态的缓存存储器的值,诸如只读访问的“共享”状态,或者写访问的“独占”或“排他”状态。“保护共享”和“保护独占”列各自对应于共享和独占状态的受保护缓存线。
例如,根据一个实施例,在图7的表中的顶层条目详细描述了如何处理这种状况,其中CPU A正在任意模式中(关键段的内部或外部)执行并且执行对CPU B保护的处于共享或独占状态之一的存储器位置的读操作。根据所示的实施例,如果CPU B保护的位置处于独占状态,那么CPU B的事务中止,反之则CPU B的事务不中止。如果CPU A已经在任意模式中执行预取操作或它已经从事务内部执行LOCK MOV或LOCK PREFETCH操作,那么将生成类似的结果。然而,根据所示的实施例,如果CPU A将在任意模式中执行写或PREFETCHW操作到存储器位置或者在事务模式中执行LOCK PREFETCHW操作到存储器位置的话,那么CPU B将中止事务而不管它所持有的存储器位置是独占还是共享状态。
在一些实施例中,事务可利用ASF定义的ABORT指令被明确的中止。在一些实施例中,由于其试图执行禁止指令(诸如导致远程控制传输的指令),事务可被中止。在不同的实施例中,远程控制传输可包括传输控制到另一段中的位置的指令,诸如通过改变x86实现中的CS寄存器的内容来实现。远程控制传输可包括陷阱(trap),错误,NMIs,SMIs,未遮罩(unmasked)和未延迟(nondeferred)的中断,被转化为异常的禁止指令,等等。在一些实施例中,禁止指令可包括特权化指令,诸如那些必须在高特权层(例如,CPL=0)被执行的、导致远程控制传输或异常的指令以及任何可被安全虚拟机(SVM:secure virtual machine)管理程序(hypervisor)解释的指令。在不同的实施例中,禁止指令可包括:
●FAR JMP,FAR CALL,FAR RET
●SYSCALL,SYSRET,SYSENTER,SYSEXIT
●INT,INTx,IRET,RSM
●BOUND,UD2
●PUSHF,POPF,PAUSE,HLT,CPUID,MONITOR,MWAIT,RDTSC,RDTSCP,RDPMC
●IN,OUT
●所有特权化指令(All privileged instructions)
●所有SVM指令(All SVM instructions)
此处所使用的术语SVM指令指的是虚拟机监视程序和/或虚拟机可用来在虚拟机的边界进行交互的任何指令。在不同的实施例中,这样的指令可包括,但不限于,VMRUN(运行虚拟机),VMLOAD/VMSAVE(加载/保存不同的虚拟机状态到处理器中和/或存储器中的保存区域),和/或VMCALL(执行对虚拟机监视程序的调用)。
在不同的实施例中,虚拟机监视程序可诸如通过截取操作来阻止处理器上一组可配置指令的执行。此处这样的指令被称作“可截取的”。根据一些实施例,多个或所有的SVM指令可以是可截取的。在一些实施例中,事务内部任何可截取的指令的执行会导致事务被中止。
在一些实施例中,ASF机制可禁止事务中的指令在虚拟环境中(例如,虚拟机)和在原生环境中执行不同的操作。通过强加这样的限制,实施例可被完全虚拟化并可被用在虚拟机环境中而不需要忍受来自当在虚拟环境中被执行时这样的指令可能会造成的不可预测或不正确的行为。例如,在一些实施例中,所有可截取的指令在事务内部是被禁止的。在一些实施例中,虚拟机特定指令和/或特权化指令被禁止。
在一些实施例中,试图执行禁止指令或在关键段中引发远程控制传输的指令可生成异常(例如,#GP异常),这会造成事务尝试被中止。在一些实施例中,远程控制传输可在中止之后执行。在这样的实施例中,软件修复规则可基于从远程控制传输(或被禁止事务所引起的异常所调用的错误处理程序)的返回而被执行。
如上所述,在不同的实施例中,基于硬件容量限制,与其他线程的存储器冲突,执行禁止指令的线程(例如,远程控制传输),和/或如果该线程执行明确的ABORT指令,ASF机制可中止事务尝试。
图8是根据不同实施例说明ASF机制在回退模式下执行事务的方法流程图。根据方法800,线程可首先通过执行SPECULATE指令来开始在回退模式下的事务。如图5中所详细描述的,执行SPECULATE可包括检查点(保存)指令和堆栈寄存器值以供以后使用。然而,在一些实施例中,如果事务被嵌套到其他事务中,那么检查点可能已存在并且SPECULATE指令将不会导致其他检查点被记录,如图5所示。
执行SPECULATE指令之后,线程可确定是否已设置中止状态,如在步骤810中,并且如果已经设置的话,则跳转并执行恢复例程,诸如步骤815。在一些实施例,软件可通过检查一个或多个放置多个中止状态代码的寄存器(例如,rAX寄存器)来确定中止状态代码是否已被设置。在一些实施例中,不同的中止状态代码指示之前的事务尝试是否以及因为什么原因被中止。在不同的实施例中,不同的中止状态代码可被设置,诸如那些指示之前的事务尝试的中止或不中止是由竞争,容量限制,禁止指令的执行,远程控制传输或其他原因而引起的。在一些实施例中,恢复例程815可根据确定的中止状态代码来采取不同的恢复操作。例如,在一些例子中,恢复例程815可确定线程不应该使用ASF来重试事务的执行。
根据方法800,线程然后可开始执行事务主体,其可包括保护一定数量的被保护的存储器位置,如在步骤820中。在一些实施例中,保护存储器位置可使用如上描述的不同的说明符指令来实现,诸如LOCK MOV。在一些实施例中,对应于每一个受保护存储器位置的缓存块的受保护的标志可被设置以指示该位置已被保护。根据图8所示的例子,执行事务实体可进一步包括向一个或多个受保护的存储器位置进行写操作,如在步骤825中。在一些实施例中,写操作可通过如上描述的多个预测存储操作来实现,诸如LOCKMOV。在利用锁定线缓冲器的实施例中,向受保护存储器位置的写操作可包括存储未被修改的数值到锁定线缓冲器上然后执行写操作到本地缓存上。
根据方法800,中止条件可在方法执行中被满足,如由步骤830的肯定指向所示。如上所述,在不同的例子中,中止条件可由与其他线程的冲突,容量限制,远程控制传输,禁止指令,和/或由线程执行的明确的ABORT指令来引起。如果中止条件被检测到(步骤830中的肯定指向),那么ASF机制可被配置为丢弃由部分执行的事务造成的到所有受保护存储器位置的修改。
在不同的实施例中,丢弃对所有受保护的存储器位置的修改,如在步骤835中,可以不同的形式来完成,其依赖于所使用的特定的可预测执行机制。例如,在一些实施例中,其中ASF利用存储缓冲器来延迟如上描述的到受保护存储器的存储操作的写回阶段,丢弃修改(如在步骤835中)可包括丢弃正在存储缓冲器中等待的、对受保护存储器位置的任何存储操作。在利用锁定线缓冲器的实施例中,丢弃修改(如在步骤835中)可包括将存储在锁定线缓冲器中的每一个存储器位置的旧值(被事务修改之前的每一个存储器位置处的数值)写回到本地缓存中。
根据方法800,在回退模式下中止事务可进一步包括释放所有受保护的存储器位置,如在步骤840中,这样这些位置就不再被保护。例如,释放受保护的存储器位置可包括重置与被中止的事务保护的每一个存储器位置相关的一个或多个受保护标志。在利用锁定线缓冲器的实施例中,释放受保护存储器位置可进一步包括删除与事务中修改的被保护存储器位置相对应的锁定线缓冲器的条目。
根据所示的实施例,ASF机制然后可确定中止的原因以确定相应的中止状态代码。在一些实施例中,ASF机制可通过编码状态代码到状态寄存器中(例如,rAX寄存器216中)来将中止状态代码与软件机制相通信,如在步骤845中。
在一些实施例中,状态寄存器(例如,rAX寄存器)可用来同时存储多个状态代码。例如,状态寄存器位的一些子集可用来存储中止状态代码,同时其他一个或多个子集也可用来存储其他信息。例如,如果中止是由执行ABORT指令的线程造成的,那么状态寄存器位的子集可存储一个或多个由被调用时线程传送给ABORT指令的数值。在一些实施例中,状态寄存器位的子集也可存储当前事务嵌套深度的指示。在进一步的实施例中,不同的状态寄存器位的子集可存储其他组不同的状态信息。
根据方法800,ASF机制然后可回退操作到事务的开始,诸如通过回退指令和堆栈指针到检查点值,如在步骤850中。在一些例子中,如果事务是顶层事务,那么检查点可能已经作为执行SPECULATE指令的一部分而被记录(如在步骤805中)并且回退执行可导致将控制流程返回到事务实体的开始部分,如从步骤850到步骤810的反馈循环。在另一实施例中,如果事务是嵌套事务,那么检查点可能已被记录在顶层事务中并且回退执行可导致将控制流程返回到顶层事务的实体的开始部分。这样,在一些实施例中,中止嵌套的事务可包括中止所有该嵌套事务嵌套在其中的父事务。
根据方法800,事务实体可被尝试直到它在没有检测到中止条件的情况下完成。如果事务尝试在没有中止的情况下而完成,如步骤830的否定指向所示,那么该线程提交该事务,如在步骤855中。在一些实施例中,提交事务可包括执行COMMIT指令。
图9是根据一些实施例,说明提交事务的方法(诸如通过COMMIT指令)。
图9是根据一些实施例说明ASF机制可中止在条件存储模式下执行的事务的方法流程图。根据所示的实施例,方法900可通过确定事务是否是有效的(active)来开始,如在步骤905中。如果事务是有效的,如步骤905的肯定指向所示,那么事务在执行过程中不中断。这样,在一些实施例中,指示成功执行的代码可被存储在状态寄存器中。例如,在一些实施例中,rAX寄存器可如在步骤910中被清空(诸如通过存储0值到该寄存器中)。
根据方法900提交事务可进一步包括设置指示该执行不是在条件存储模式下的标志,如在步骤915中,并递减指示有效事务的嵌套层数的计数器,如在步骤920中。在一些实施例中,如果被提交的事务是嵌套事务,如步骤925的否定指向所示,那么事务可被结束,如在步骤940中。因此,在这样的实施例中,即使在嵌套事务已被提交之后,被执行在嵌套事务内部的预测存储可依然是可预测的(并且是对冲突敏感的)。
根据图9中的实施例,如果事务是顶层事务,如步骤925的肯定指向所示,那么ASF机制可提交所有的修改到受保护的存储器位置这样它们对系统中的其他线程是全局可见的,如在步骤930中。在不同的实施例中,提交修改到受保护的存储器位置可涉及不同的动作,其依赖于使用的预测机制。例如,在到受保护存储器的预测存储操作在存储缓冲器中被延迟直到事务提交时的实施例中,提交修改可意味着执行写回这些数值到存储器中(例如,到本地缓存和/或主存储器)。在不同的实施例中,提交顶层事务可进一步包括释放所有受保护的存储器位置,如在步骤935中,这样,这些位置就不再被ASF机制所保护。例如,在受保护标志被用来指示受保护缓存块的实施例中,设置与受保护的缓存块相关的标志的值以指示缓存块不再被保护。这样,ASF机制就不需要确保相对于被释放的存储器位置的原子性了。
在一些实施例中,线程试图提交无效(not active)的事务,如步骤905的否定指向所示,那么接下来的操作则依赖于执行的模式是否是条件存储模式还是回退模式。如果执行模式是回退模式,如步骤945的否定指向所示,那么ASF机制可被配置为产生诸如#GP异常的异常。否则,如果执行模式是条件存储(如步骤945的肯定指向所示),那么ASF机制可被配置为存储中止状态代码到状态寄存器(诸如rAX)中(如在步骤955中)并跳转到恢复例程,如在步骤960中。该事务然后可在需要时被再次尝试。
图10是根据一些实施例说明在条件存储模式下执行事务的方法流程图。根据方法1000,在条件存储模式下执行事务可由执行一个BEGIN指令开始,如在步骤1005中。在一些实施例中,执行BEGIN指令可包括执行图6中的方法600。在不同的实施例中,BEGIN指令可设置一个或多个确定执行在条件存储模式下的事务是否是有效的标志。
根据所示的实施例,事务然后可使用说明符指令来保护一个或多个存储器位置,如在步骤1010中。在一些例子中,事务也可试图写入到一个或多个在步骤1010中被保护的存储器位置,如在步骤1015中。
根据方法1000,如果ASF机制没有检测到中止条件(例如,竞争、容量限制超出,远程控制传输,禁止指令,等等),如步骤1025的否定指向所示,那么线程可提交该事务,如在步骤1040中。在一些实施例中,提交事务,如在步骤1025中,可包括执行一个诸如图9中所示的提交指令。
在一些实施例中,如果中止条件在事务执行过程中被检测到,如在步骤1025的肯定指向所示的,那么事务被中止,如在步骤1030中。在一些实施例中,中止事务可包括撤销或丢弃由事务的存储操作造成的到受保护的存储器位置上的任何修改。在一些实施例中,指示导致中止的原因的中止状态代码(例如,冲突,容量,禁止事务,等等)可被作为中止事务的一部分而记录,如在步骤1030中。
根据所示的实施例,事务被中止之后(如在步骤1030中),控制流程可依然保留在事务实体中并且该事务通过排除到受保护存储器位置的预测存储可继续执行,如在步骤1035中。在一些实施例中,在事务尝试被中止之后,在事务实体中出现的说明符指令可被作为常规存储器引用来执行(例如,没有为存储器位置设置保护标志的读取指令)和/或到受保护存储器位置的访问可被忽略(例如,被认为是无操作指令)。
根据一些实施例,在条件存储模式下执行事务的线程可被配置为验证事务是否被中断。例如,在一些实施例中,线程可执行VALIDATE指令,如在步骤1040中,来确定事务是否是有效的(即,还没被中止)。在一些实施例中,该VALIDATE指令是通过拷贝当前中止状态代码到软件可读取的程序可读状态寄存器(例如,到rAX寄存器中)而能执行。如果事务还没有被中止,那么该VALIDATE指令则通过给状态寄存器设置说明该事务依然是有效的值(例如,设置rAX为0值)而能执行。
根据所示的实施例,如果线程执行VALIDATE指令,则线程然后可检查状态寄存器(例如,rAX)来确定事务是否已经被中止。如果事务不是有效的,如在步骤1045的否定指向所示,那么线程可执行一些恢复动作,如在步骤1055中。根据不同的实施例,执行恢复动作可包括释放任何受保护存储器位置和/或将程序的控制返回到事务开始以重新执行。如果事务依然是有效的,如在步骤1045的肯定指向所示,那么线程可继续执行事务和/或提交事务,如在步骤1050中。
根据所示的实施例,一旦线程完成了执行事务,它可试图提交该事务,如在步骤1050中。如上所示,提交事务可包括执行提交指令,如图9中所示的那样。作为执行提交指令的一部分,ASF机制可检测事务是否是有效的(如在步骤905中)并且如果事务不是有效的,则存储一个中止状态到软件可读寄存器中(例如,如在步骤955中的rAX)并且跳转到恢复例程(如在步骤960中),该规则与步骤1055中的恢复动作相似或相同。执行恢复例程可包括释放任何受保护存储器位置和/或为将程序控制返回到事务再次执行的开始。在一些实施例中,如果该段(section)被嵌套到一个或多个回退模式的事务中,那么父事务可被中止并且控制可被返回到最高级的SPECULATIVE指令所采用的检查点,参见如上的图8中所描述的。
在不同的实施例中,编程者可创建利用ASF使能系统的事务存储编程模式的应用。在这样的实施例中,编程者可配置程序以:执行事务开始指令(例如,SPECULATE,BEGIN等)来开始事务,执行一个或多个到受保护存储器的访问(例如,LOCK MOV,等),然后执行一个或多个指令来提交事务(例如,COMMIT)。
在一些实施例中,可编制程序来使得ASF使能的事务存储器编程模式与其他同时存在的诸如非ASF、基于锁代码的控制机制协同工作。例如,假定有一个诸如B-tree的数据结构。共享存储器应用中的并行线程可频繁地执行到B-tree的插入和删除操作,其是在利用基于ASF的事务存储器的事务性且无锁的方式下的。B-tree可能偶尔的由于性能问题需要重新平衡,操作可包括在B-tree的多个存储器位置上的原子性操作。然而,既然这些操作可包括保护多个存储器位置,那么试图作为一个事务完成该操作可导致频繁的中止。例如,冲突中止可能是因为与其他当前正在执行的向B-tree删除和/或插入操作的线程的冲突所导致的。在另一例子中,同时保护如此多的存储器位置可能超出了ASF实现的容量,因此造成事务的容量中止。在这种情况中,如果使用传统的、基于锁的互斥排除操作而不是采用事务存储器来执行重新平衡的操作,则该操作可能会更加有效。例如,锁可能与整个B-treee相关并且可在对该B-tree的互斥访问时需要。在这个例子中,重新平衡操作可通过请求B-tree锁开始,然后执行重新平衡操作,然后释放锁。然而,在这样的例子中,必须谨慎以确保利用基于锁的互斥排除语义的代码与利用基于ASF事务存储器语义的代码安全地互操作。
图11是根据一个实施例,说明配置基于ASF事务与基于锁代码的互操作方法流程图。根据所示实施例,线程可通过执行诸如SPECULATE或BEGIN指令来开始事务,如在步骤1110中,如前所述。
被保护在事务内部的存储器位置组在此可被称作事务的读出组(read-set)。在基于锁代码的表现中,事务的读出组可包括一个或多个与锁相关的存储器位置。任何与锁相关并由锁保护的存储器位置在此被称作锁保护(lock-protected)。
根据所示的实施例,线程可被配置为原子地读取(例如,使用说明符操作)与在事务读出组中每一个锁保护存储器位置相关的每一个锁的值,如在步骤1120中。因此,通过原子地读出锁的值,线程增加锁到事务的读取组(ASF机制监视锁并将其作为事务的一部分加以保护)。例如,在上述的B-tree例子中,事务的插入操作可首先通过原子地读出与整个B-tree结构相关的锁值来开始。在一些实施例中,原子地读出锁值可包括利用说明符操作来读取锁值。
根据所示的实施例,线程然后可确定是否保持(hold)了在步骤1120中被读取的任意一个锁。如果保持了锁的话,如步骤1130肯定指向所示,那么线程可再试事务。在一些实施例中,线程可继续重读每个锁的值直到所有的锁都被释放,如步骤1130的否定指向所示。在一些实施例中,如果具有任意一个锁,那么线程可中止事务(例如,通过执行ABORT指令)并再次试图执行事务。在其他实施例中,如果保存了任何一个锁,则线程可试图回退事务已经在受保护的存储器位置上造成的修改然后提交该事务。
根据所示的实施例,一旦线程检测到未保持从步骤1120中读取的锁,如步骤1130的否定指向所示,则线程可继续执行事务,如在步骤1140中。在所示实施例中,由于不同锁的存储器位置通过说明符操作被保护,任何对锁的值的改变(例如,不同的线程请求锁)可导致事务的冲突中止。因此,中止条件在事务执行过程中被检测到(例如,由于被请求锁的冲突中止),然后ASF机制和/或线程可中止事务并执行一些恢复动作(如在步骤1160中)并再次尝试事务(如从步骤1160到步骤1120的反馈循环)。例如,继续上述的B-tree的例子,如果不同的线程试图请求与B-tree相关的锁时(例如,作为执行重新平衡操作的一部分),那么缓存一致性消息可被发送到正在执行的线程,引起插入操作事务的冲突中止。
根据所示实施例,如果没有中止条件被检测到(如步骤1150的否定指向所示),那么线程可提交事务,如在步骤1160中。
图12说明被配置为实现此处所描述的ASF不同实施例的计算机系统的一个实施例。计算机系统1200可是任何类型的装置,包括但不限于,个人计算机系统,桌面电脑,膝上型电脑或笔记本计算机,主机计算机系统,手持计算机,工作,网络计算机,用户装置,应用服务器,存储装置,串行装置(比如交换机),调制解调器,或者任何类型的通用计算机系统。
计算机系统1200可包括多个处理器1270,每一个处理器都包括多个内核,每一个内核可是单线程或多线程的(例如,并行多处理,HyperthreadingTM,等等)。在一些实施例中,处理器1270可包括动态调度机制1272,像那些能够为实现预测存储缓冲器在加载/存储队列1274中延迟预测存储,如此描述的。在一些实施例中,处理器1270可包括多个加载、存储、和/或加载/存储队列,比如1274,以用于在处理器流水线中保持飞行(in-flight)存储器操作。处理器1270可包括诸如rAX,rFLAGS或其他特定目的寄存器1276,这样的寄存器用来记录事务的嵌套深度,事务模式或状态(有效或无效的)。在一些实施例中,处理器1270可包括任意数量的ASF硬件事务存储器机制1278,如此处描述的。例如,ASF机制1278可包括用于监视被活动事务保护的存储器位置的锁定线缓冲器和/或硬件逻辑。在一些实施例中,处理器1270可包括多个缓存一致性机制1279,该机制可被用来实现不同的缓存一致性协议(例如,MESI,MOESI,等等)以及可通过ASF机制用来检查冲突中止,如此处描述的。
计算机系统1200还可包括一个或多个永久存储装置1260(例如,光盘存储,磁盘存储,硬盘驱动器,磁带驱动器,固体存储器,等等),其可存储文件,例如通过如文件系统1262的文件系统。计算机系统1200可包括被多处理器共享的一个或多个存储器1210(例如,缓存,SRAM,DRAM,RDRAM,EDO RAM,DDR 10RAM,SDRAM,Rambus RAM,EEPROM,等等中的一个或多个)。不同的实施例可包括更少或更多的未示在图12中的组件(例如,显卡,声卡,附加网络接口,串行设备,类似ATM接口,以太网接口,帧延迟接口的网络接口,等等。)
处理器1270,存储装置1260以及共享存储器1210可被耦合到系统互联(interconnect)1250上。一个或多个系统存储器1210可包含程序指令1220。程序指令1220可以平台原生二进制码,任何解释性语言,诸如JavaTM字节-代码,或任何诸如C/C++,JavaTM等其他语言或它们的任何组合被编码。
程序指令1220可包括实现一个或多个基于ASF事务存储器应用1222的可执行程序指令。每一个应用1222可以是多线程的并且可被配置为利用ASF事务存储机制。在一些实施例中,一个或多个应用1222可被配置为既使用ASF事务存储指令又使用互斥锁来操作,如此所述。在这样的实施例中,共享存储器1210可包括多种数据结构和变量1230,任何数据结构和变量可与一个或多个互斥锁1240相关。
在一些实施例中,程序指令1220和/或基于ASF事务存储器应用1222可作为一种计算机可读存储介质的产品而被提供,其中计算机可读存储介质中具有存储在其上的指令并且这些指令可在计算机系统(或其他电子设备)上编程以根据多个实施例执行不同的操作。计算机可读存储介质包括任何以机器(例如,计算机)可读形式(例如,软件,处理应用)存储信息的介质。机器可读存储介质可包括,但并不限于,磁性存储介质(例如,软盘);光盘存储介质(例如,CD-ROM),磁-光存储介质;只读存储器(ROM);随机存储器(RAM);易擦除可编程存储器(例如,EPROM和EEPROM);闪存,电子,或适于存储程序指令的其他有形介质。除此之外,程序指令可使用无形媒介-光,声或其他传输信号的模式(例如,载波,红外信号,数字信号等等)来通信。
尽管上面的实施例已经被尽可能详细描述,但以上所公开的内容一旦理解后,多种变化及修改对本领域技术人员将变得很明显。接下来的权利要求应当被解释为涵盖所有这种变化和修改。
工业实用性
本发明一般可应用于共享存储器计算机系统中。
Claims (15)
1.一种装置,包括:
能够耦合到被一个或多个其他处理器共享的共享存储器的处理器,其中所述处理器被配置为执行相对于所述一个或多个其他处理器是原子事务的代码段,所述代码段包括对所述共享存储器的多个存储器访问操作;
其中所述处理器被配置为确定所述多个存储器访问操作是否包括一组禁止指令中的至少一个,其中所述组禁止指令包括一个或多个在虚拟计算环境和原生计算环境中以不同能够方式操作的指令;
其中所述处理器被配置为响应于所述多个存储器访问操作之一包括所述组禁止指令中的至少一个而中止所述事务。
2.根据权利要求1所述的装置,其中所述组禁止指令包括根据是否在虚拟机内而在所述处理器上以不同方式执行的至少一个指令。
3.根据权利要求1所述的装置,其中所述组禁止指令包括远程控制传输指令,其中所述远程控制传输指令能够执行以通过修改所述处理器的区段寄存器内的值而传输程序控制到不是包含所述指令的存储器区段的存储器区段。
4.根据权利要求1所述的装置,其中所述组禁止指令包括一个或多个仅在所述处理器的最高特权级执行的指令。
5.根据权利要求1所述的装置,其中所述处理器被配置为通过丢弃由所述多个存储器访问操作中的一个或多个的执行对所述共享存储器中的一个或多个值的任何修改来中止所述事务。
6.一种方法,包括
与共享存储器耦合的、多个处理器中的第一处理器执行相对于所述多个处理器是原子事务的代码段,所述代码段包括对共享存储器的多个存储器访问操作;
所述第一处理器确定所述多个存储器访问操作是否包括一组禁止指令中的至少一个,其中所述组禁止指令包括根据是否在虚拟机内执行而以不同方式操作的一个或多个指令;以及
响应于所述多个存储器访问操作包括所述组禁止指令中的至少一个,所述第一处理器中止所述事务。
7.根据权利要求6所述的方法,所述组禁止指令包括远程控制传输指令,其中所述远程控制传输指令能够执行以通过修改所述处理器的区段寄存器内的值而传输程序控制到不是包含所述指令的存储器区段的存储器区段。
8.根据权利要求6所述的方法,其中所述组禁止指令包括仅在所述第一处理器最高特权级执行的指令
9.根据权利要求6所述的方法,其中所述中止操作包括丢弃由所述多个存储器访问操作中的一个或多个的执行对所述共享存储器中的一个或多个值的任何修改。
10.一种系统,包括
共享存储器;
与所述共享存储器耦合的多个处理器;
其中所述多个处理器的第一处理器被配置为执行包括对所述共享存储器的多个存储器访问操作,其中所述第一处理器被配置为相对于所述多个处理器中的其他处理器作为原子事务执行所述多个存储器访问操作;
其中所述第一处理器被配置为确定所述多个存储器访问操作是否包括一组禁止指令中的至少一个指令,其中所述组禁止指令中的至少一个指令的执行是基于所述第一处理器的特权级的;
其中所述第一处理器被配置为响应于所述多个存储器访问操作之一包括所述组禁止指令中的至少一个而中止所述事务。
11.根据权利要求10所述的系统,其中所述组禁止指令包括根据是否在虚拟机内执行而在所述处理器上以不同方式执行的指令。
12.根据权利要求10所述的系统,其中所述组禁止指令包括特权指令。
13.根据权利要求10所述的系统,其中所述组禁止指令包括远程控制传输指令。
14.根据权利要求10所述的系统,其中所述第一处理器被配置为通过丢弃由所述多个存储器访问操作中的一个或多个的执行对所述共享存储器中的一个或多个值的任何修改来中止所述事务。
15.根据权利要求10所述的系统,其中所述组禁止指令包括一个或多个与管理程序相关的指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8400808P | 2008-07-28 | 2008-07-28 | |
US61/084,008 | 2008-07-28 | ||
PCT/US2009/004349 WO2010014200A1 (en) | 2008-07-28 | 2009-07-28 | Virtualizable advanced synchronization facility |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102144218A true CN102144218A (zh) | 2011-08-03 |
Family
ID=41090366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801357742A Pending CN102144218A (zh) | 2008-07-28 | 2009-07-28 | 可虚拟化的先进同步设备 |
Country Status (6)
Country | Link |
---|---|
US (5) | US9372718B2 (zh) |
EP (1) | EP2332043B1 (zh) |
JP (1) | JP2011529603A (zh) |
KR (1) | KR20110044884A (zh) |
CN (1) | CN102144218A (zh) |
WO (1) | WO2010014200A1 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104011669A (zh) * | 2011-12-22 | 2014-08-27 | 英特尔公司 | 用于提交指令的选择性执行的方法、设备和系统 |
CN104050023A (zh) * | 2013-03-14 | 2014-09-17 | 英特尔公司 | 用于实现事务存储器的系统和方法 |
CN104335165A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 事务开始/结束指令 |
CN104335164A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 事务中止处理 |
CN104335177A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 有选择地控制事务处理中的指令执行 |
CN104335185A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 受限事务执行 |
CN104350462A (zh) * | 2012-06-15 | 2015-02-11 | 国际商业机器公司 | 事务中止指令 |
CN104541248A (zh) * | 2012-07-27 | 2015-04-22 | 华为技术有限公司 | 计算系统对屏障命令的处理 |
CN105677526A (zh) * | 2012-06-29 | 2016-06-15 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
CN104364778B (zh) * | 2012-06-15 | 2017-02-08 | 国际商业机器公司 | 在事务处理中保存/恢复选择的寄存器 |
CN106502920A (zh) * | 2016-11-08 | 2017-03-15 | 郑州云海信息技术有限公司 | 一种基于mesi的缓存方法、装置和处理器 |
US10152401B2 (en) | 2012-02-02 | 2018-12-11 | Intel Corporation | Instruction and logic to test transactional execution status |
CN112639728A (zh) * | 2018-11-28 | 2021-04-09 | Arm有限公司 | 用于事务存储器的设备和数据处理方法 |
Families Citing this family (157)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9372718B2 (en) | 2008-07-28 | 2016-06-21 | Advanced Micro Devices, Inc. | Virtualizable advanced synchronization facility |
US8479166B2 (en) * | 2008-08-25 | 2013-07-02 | International Business Machines Corporation | Detecting locking discipline violations on shared resources |
US9021502B2 (en) * | 2008-12-29 | 2015-04-28 | Oracle America Inc. | Method and system for inter-thread communication using processor messaging |
US8812796B2 (en) | 2009-06-26 | 2014-08-19 | Microsoft Corporation | Private memory regions and coherence optimizations |
US8375175B2 (en) * | 2009-12-09 | 2013-02-12 | Oracle America, Inc. | Fast and efficient reacquisition of locks for transactional memory systems |
US8402218B2 (en) * | 2009-12-15 | 2013-03-19 | Microsoft Corporation | Efficient garbage collection and exception handling in a hardware accelerated transactional memory system |
US9092253B2 (en) | 2009-12-15 | 2015-07-28 | Microsoft Technology Licensing, Llc | Instrumentation of hardware assisted transactional memory system |
US8972994B2 (en) * | 2009-12-23 | 2015-03-03 | Intel Corporation | Method and apparatus to bypass object lock by speculative execution of generated bypass code shell based on bypass failure threshold in managed runtime environment |
US8924692B2 (en) * | 2009-12-26 | 2014-12-30 | Intel Corporation | Event counter checkpointing and restoring |
US20110208921A1 (en) * | 2010-02-19 | 2011-08-25 | Pohlack Martin T | Inverted default semantics for in-speculative-region memory accesses |
US9626187B2 (en) | 2010-05-27 | 2017-04-18 | International Business Machines Corporation | Transactional memory system supporting unbroken suspended execution |
US9880848B2 (en) * | 2010-06-11 | 2018-01-30 | Advanced Micro Devices, Inc. | Processor support for hardware transactional memory |
US8904189B1 (en) | 2010-07-15 | 2014-12-02 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time using control flow signatures |
US8782434B1 (en) * | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
US20120079212A1 (en) | 2010-09-23 | 2012-03-29 | International Business Machines Corporation | Architecture for sharing caches among multiple processes |
US8549504B2 (en) | 2010-09-25 | 2013-10-01 | Intel Corporation | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region |
US20120079245A1 (en) * | 2010-09-25 | 2012-03-29 | Cheng Wang | Dynamic optimization for conditional commit |
US8424015B2 (en) * | 2010-09-30 | 2013-04-16 | International Business Machines Corporation | Transactional memory preemption mechanism |
US9110691B2 (en) * | 2010-11-16 | 2015-08-18 | Advanced Micro Devices, Inc. | Compiler support technique for hardware transactional memory systems |
US8468169B2 (en) | 2010-12-01 | 2013-06-18 | Microsoft Corporation | Hierarchical software locking |
US9274962B2 (en) * | 2010-12-07 | 2016-03-01 | Intel Corporation | Apparatus, method, and system for instantaneous cache state recovery from speculative abort/commit |
US9122476B2 (en) | 2010-12-07 | 2015-09-01 | Advanced Micro Devices, Inc. | Programmable atomic memory using hardware validation agent |
US8788794B2 (en) * | 2010-12-07 | 2014-07-22 | Advanced Micro Devices, Inc. | Programmable atomic memory using stored atomic procedures |
US8612694B2 (en) | 2011-03-07 | 2013-12-17 | Advanced Micro Devices, Inc. | Protecting large objects within an advanced synchronization facility |
US8990823B2 (en) | 2011-03-10 | 2015-03-24 | International Business Machines Corporation | Optimizing virtual machine synchronization for application software |
US8533699B2 (en) * | 2011-03-31 | 2013-09-10 | Oracle International Corporation | System and method for optimizing a code section by forcing a code section to be executed atomically |
KR20130022091A (ko) | 2011-08-24 | 2013-03-06 | 주식회사 케이티 | 클라우드 컴퓨팅 서버 시스템의 가상머신 제어 장치 및 방법 |
US8677331B2 (en) * | 2011-09-30 | 2014-03-18 | Oracle International Corporation | Lock-clustering compilation for software transactional memory |
US8954680B2 (en) | 2011-11-20 | 2015-02-10 | International Business Machines Corporation | Modifying data prefetching operation based on a past prefetching attempt |
US20140223140A1 (en) * | 2011-12-23 | 2014-08-07 | Intel Corporation | Systems, apparatuses, and methods for performing vector packed unary encoding using masks |
US20130326196A1 (en) * | 2011-12-23 | 2013-12-05 | Elmoustapha Ould-Ahmed-Vall | Systems, apparatuses, and methods for performing vector packed unary decoding using masks |
US8893094B2 (en) | 2011-12-30 | 2014-11-18 | Intel Corporation | Hardware compilation and/or translation with fault detection and roll back functionality |
US9280398B2 (en) * | 2012-01-31 | 2016-03-08 | International Business Machines Corporation | Major branch instructions |
US9229722B2 (en) * | 2012-01-31 | 2016-01-05 | International Business Machines Corporation | Major branch instructions with transactional memory |
WO2013115816A1 (en) * | 2012-02-02 | 2013-08-08 | Intel Corporation | A method, apparatus, and system for speculative abort control mechanisms |
JPWO2013175858A1 (ja) * | 2012-05-23 | 2016-01-12 | 日本電気株式会社 | ロック管理システム、ロック管理方法およびロック管理用プログラム |
US9411595B2 (en) | 2012-05-31 | 2016-08-09 | Nvidia Corporation | Multi-threaded transactional memory coherence |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US9384004B2 (en) * | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US11538055B2 (en) * | 2012-06-15 | 2022-12-27 | Edatanetworks Inc. | Systems and method for incenting consumers |
US9311101B2 (en) | 2012-06-15 | 2016-04-12 | International Business Machines Corporation | Intra-instructional transaction abort handling |
US8966324B2 (en) | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US9298469B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Management of multiple nested transactions |
US8880959B2 (en) * | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US9223687B2 (en) | 2012-06-15 | 2015-12-29 | International Business Machines Corporation | Determining the logical address of a transaction abort |
US8688661B2 (en) * | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US20130339680A1 (en) * | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US10437602B2 (en) * | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US9298631B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Managing transactional and non-transactional store observability |
US9740549B2 (en) * | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9262320B2 (en) | 2012-06-15 | 2016-02-16 | International Business Machines Corporation | Tracking transactional execution footprint |
WO2014014944A2 (en) * | 2012-07-16 | 2014-01-23 | Sony Corporation | Managing multi-threaded operations in a multimedia authoring environment |
US9274963B2 (en) | 2012-07-20 | 2016-03-01 | International Business Machines Corporation | Cache replacement for shared memory caches |
US8914586B2 (en) | 2012-07-31 | 2014-12-16 | Advanced Micro Devices, Inc. | TLB-walk controlled abort policy for hardware transactional memory |
US8943278B2 (en) | 2012-07-31 | 2015-01-27 | Advanced Micro Devices, Inc. | Protecting large regions without operating-system support |
US9342454B2 (en) | 2012-08-02 | 2016-05-17 | International Business Machines Corporation | Nested rewind only and non rewind only transactions in a data processing system supporting transactional storage accesses |
US9396115B2 (en) | 2012-08-02 | 2016-07-19 | International Business Machines Corporation | Rewind only transactions in a data processing system supporting transactional storage accesses |
US9430166B2 (en) | 2012-08-10 | 2016-08-30 | International Business Machines Corporation | Interaction of transactional storage accesses with other atomic semantics |
US9063721B2 (en) | 2012-09-14 | 2015-06-23 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9471317B2 (en) * | 2012-09-27 | 2016-10-18 | Texas Instruments Deutschland Gmbh | Execution of additional instructions in conjunction atomically as specified in instruction field |
US9612834B2 (en) * | 2012-09-27 | 2017-04-04 | Texas Instruments Deutschland Gmbh | Processor with variable instruction atomicity |
US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
US9081607B2 (en) | 2012-10-24 | 2015-07-14 | International Business Machines Corporation | Conditional transaction abort and precise abort handling |
US9824009B2 (en) | 2012-12-21 | 2017-11-21 | Nvidia Corporation | Information coherency maintenance systems and methods |
US9459877B2 (en) | 2012-12-21 | 2016-10-04 | Advanced Micro Devices, Inc. | Nested speculative regions for a synchronization facility |
US10102142B2 (en) | 2012-12-26 | 2018-10-16 | Nvidia Corporation | Virtual address based memory reordering |
US9569223B2 (en) * | 2013-02-13 | 2017-02-14 | Red Hat Israel, Ltd. | Mixed shared/non-shared memory transport for virtual machines |
US9569385B2 (en) | 2013-09-09 | 2017-02-14 | Nvidia Corporation | Memory transaction ordering |
US9588801B2 (en) * | 2013-09-11 | 2017-03-07 | Intel Corporation | Apparatus and method for improved lock elision techniques |
US9348522B2 (en) | 2013-12-12 | 2016-05-24 | International Business Machines Corporation | Software indications and hints for coalescing memory transactions |
US9348523B2 (en) | 2013-12-12 | 2016-05-24 | International Business Machines Corporation | Code optimization to enable and disable coalescing of memory transactions |
US9146774B2 (en) | 2013-12-12 | 2015-09-29 | International Business Machines Corporation | Coalescing memory transactions |
US9292337B2 (en) | 2013-12-12 | 2016-03-22 | International Business Machines Corporation | Software enabled and disabled coalescing of memory transactions |
US9158573B2 (en) | 2013-12-12 | 2015-10-13 | International Business Machines Corporation | Dynamic predictor for coalescing memory transactions |
US9424072B2 (en) | 2014-02-27 | 2016-08-23 | International Business Machines Corporation | Alerting hardware transactions that are about to run out of space |
US9361041B2 (en) | 2014-02-27 | 2016-06-07 | International Business Machines Corporation | Hint instruction for managing transactional aborts in transactional memory computing environments |
US9524187B2 (en) * | 2014-03-02 | 2016-12-20 | International Business Machines Corporation | Executing instruction with threshold indicating nearing of completion of transaction |
US9558032B2 (en) | 2014-03-14 | 2017-01-31 | International Business Machines Corporation | Conditional instruction end operation |
US9454370B2 (en) * | 2014-03-14 | 2016-09-27 | International Business Machines Corporation | Conditional transaction end instruction |
US10120681B2 (en) | 2014-03-14 | 2018-11-06 | International Business Machines Corporation | Compare and delay instructions |
US9262343B2 (en) | 2014-03-26 | 2016-02-16 | International Business Machines Corporation | Transactional processing based upon run-time conditions |
US9256553B2 (en) | 2014-03-26 | 2016-02-09 | International Business Machines Corporation | Transactional processing based upon run-time storage values |
US20150278123A1 (en) * | 2014-03-28 | 2015-10-01 | Alex Nayshtut | Low-overhead detection of unauthorized memory modification using transactional memory |
US9778949B2 (en) | 2014-05-05 | 2017-10-03 | Google Inc. | Thread waiting in a multithreaded processor architecture |
US10261764B2 (en) * | 2014-05-13 | 2019-04-16 | Oracle International Corporation | Handling value types |
US9348643B2 (en) | 2014-06-30 | 2016-05-24 | International Business Machines Corporation | Prefetching of discontiguous storage locations as part of transactional execution |
US9710271B2 (en) | 2014-06-30 | 2017-07-18 | International Business Machines Corporation | Collecting transactional execution characteristics during transactional execution |
US9448939B2 (en) | 2014-06-30 | 2016-09-20 | International Business Machines Corporation | Collecting memory operand access characteristics during transactional execution |
US9336047B2 (en) | 2014-06-30 | 2016-05-10 | International Business Machines Corporation | Prefetching of discontiguous storage locations in anticipation of transactional execution |
US9600286B2 (en) * | 2014-06-30 | 2017-03-21 | International Business Machines Corporation | Latent modification instruction for transactional execution |
GB2528270A (en) * | 2014-07-15 | 2016-01-20 | Advanced Risc Mach Ltd | Call stack maintenance for a transactional data processing execution mode |
GB2529148B (en) | 2014-08-04 | 2020-05-27 | Advanced Risc Mach Ltd | Write operations to non-volatile memory |
US10462185B2 (en) | 2014-09-05 | 2019-10-29 | Sequitur Labs, Inc. | Policy-managed secure code execution and messaging for computing devices and computing device security |
GB2533414B (en) * | 2014-12-19 | 2021-12-01 | Advanced Risc Mach Ltd | Apparatus with shared transactional processing resource, and data processing method |
GB2533415B (en) * | 2014-12-19 | 2022-01-19 | Advanced Risc Mach Ltd | Apparatus with at least one resource having thread mode and transaction mode, and method |
US10061583B2 (en) * | 2014-12-24 | 2018-08-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10942744B2 (en) * | 2014-12-24 | 2021-03-09 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10303525B2 (en) | 2014-12-24 | 2019-05-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10540524B2 (en) | 2014-12-31 | 2020-01-21 | Mcafee, Llc | Memory access protection using processor transactional memory support |
US10685130B2 (en) | 2015-04-21 | 2020-06-16 | Sequitur Labs Inc. | System and methods for context-aware and situation-aware secure, policy-based access control for computing devices |
US11847237B1 (en) | 2015-04-28 | 2023-12-19 | Sequitur Labs, Inc. | Secure data protection and encryption techniques for computing devices and information storage |
WO2016183504A1 (en) | 2015-05-14 | 2016-11-17 | Sequitur Labs, Inc. | System and methods for facilitating secure computing device control and operation |
US9870253B2 (en) | 2015-05-27 | 2018-01-16 | International Business Machines Corporation | Enabling end of transaction detection using speculative look ahead |
US11228458B2 (en) * | 2015-09-10 | 2022-01-18 | Lightfleet Corporation | Group-coherent memory |
US20170083331A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Memory synchronization in block-based processors |
US9513960B1 (en) * | 2015-09-22 | 2016-12-06 | International Business Machines Corporation | Inducing transactional aborts in other processing threads |
US10558582B2 (en) | 2015-10-02 | 2020-02-11 | Intel Corporation | Technologies for execute only transactional memory |
US9563467B1 (en) * | 2015-10-29 | 2017-02-07 | International Business Machines Corporation | Interprocessor memory status communication |
US10261827B2 (en) | 2015-10-29 | 2019-04-16 | International Business Machines Corporation | Interprocessor memory status communication |
US9916179B2 (en) | 2015-10-29 | 2018-03-13 | International Business Machines Corporation | Interprocessor memory status communication |
US9760397B2 (en) | 2015-10-29 | 2017-09-12 | International Business Machines Corporation | Interprocessor memory status communication |
US9690623B2 (en) * | 2015-11-06 | 2017-06-27 | International Business Machines Corporation | Regulating hardware speculative processing around a transaction |
US9652385B1 (en) * | 2015-11-27 | 2017-05-16 | Arm Limited | Apparatus and method for handling atomic update operations |
US10318295B2 (en) * | 2015-12-22 | 2019-06-11 | Intel Corporation | Transaction end plus commit to persistence instructions, processors, methods, and systems |
US10649773B2 (en) * | 2016-04-07 | 2020-05-12 | MIPS Tech, LLC | Processors supporting atomic writes to multiword memory locations and methods |
US10248564B2 (en) | 2016-06-24 | 2019-04-02 | Advanced Micro Devices, Inc. | Contended lock request elision scheme |
EP3264317B1 (en) * | 2016-06-29 | 2019-11-20 | Arm Ltd | Permission control for contingent memory access program instruction |
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 |
CN107766080B (zh) * | 2016-08-23 | 2021-11-09 | 阿里巴巴集团控股有限公司 | 事务消息处理方法、装置、设备及系统 |
US10802971B2 (en) | 2016-10-13 | 2020-10-13 | International Business Machines Corporation | Cache memory transaction shielding via prefetch suppression |
US10700865B1 (en) | 2016-10-21 | 2020-06-30 | Sequitur Labs Inc. | System and method for granting secure access to computing services hidden in trusted computing environments to an unsecure requestor |
US10402327B2 (en) | 2016-11-22 | 2019-09-03 | Advanced Micro Devices, Inc. | Network-aware cache coherence protocol enhancement |
US10162757B2 (en) * | 2016-12-06 | 2018-12-25 | Advanced Micro Devices, Inc. | Proactive cache coherence |
US20180165073A1 (en) | 2016-12-14 | 2018-06-14 | International Business Machines Corporation | Context information based on type of routine being called |
US10241769B2 (en) | 2016-12-14 | 2019-03-26 | International Business Machines Corporation | Marking sibling caller routines |
US10095493B2 (en) | 2016-12-14 | 2018-10-09 | International Business Machines Corporation | Call sequence generation based on type of routine |
US10152338B2 (en) | 2016-12-14 | 2018-12-11 | International Business Machines Corporation | Marking external sibling caller routines |
US10180827B2 (en) | 2016-12-14 | 2019-01-15 | International Business Machines Corporation | Suppressing storing of context information |
US10235190B2 (en) | 2016-12-14 | 2019-03-19 | International Business Machines Corporation | Executing instructions to store context information based on routine to be executed |
US10452288B2 (en) | 2017-01-19 | 2019-10-22 | International Business Machines Corporation | Identifying processor attributes based on detecting a guarded storage event |
US10496311B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Run-time instrumentation of guarded storage event processing |
US10579377B2 (en) * | 2017-01-19 | 2020-03-03 | International Business Machines Corporation | Guarded storage event handling during transactional execution |
US10725685B2 (en) | 2017-01-19 | 2020-07-28 | International Business Machines Corporation | Load logical and shift guarded instruction |
US10732858B2 (en) | 2017-01-19 | 2020-08-04 | International Business Machines Corporation | Loading and storing controls regulating the operation of a guarded storage facility |
US10496292B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Saving/restoring guarded storage controls in a virtualized environment |
GB201708439D0 (en) | 2017-05-26 | 2017-07-12 | Microsoft Technology Licensing Llc | Compute node security |
KR20200023376A (ko) | 2017-06-28 | 2020-03-04 | 에이알엠 리미티드 | 메모리 영역 로킹 |
GB2564097B (en) * | 2017-06-28 | 2019-10-23 | Advanced Risc Mach Ltd | Memory region locking |
EP3462308B1 (en) | 2017-09-29 | 2022-03-02 | ARM Limited | Transaction nesting depth testing instruction |
GB2567433B (en) | 2017-10-10 | 2020-02-26 | Advanced Risc Mach Ltd | Checking lock variables for transactions in a system with transactional memory support |
US10621103B2 (en) | 2017-12-05 | 2020-04-14 | Arm Limited | Apparatus and method for handling write operations |
US10657057B2 (en) * | 2018-04-04 | 2020-05-19 | Nxp B.V. | Secure speculative instruction execution in a data processing system |
US11403234B2 (en) | 2019-06-29 | 2022-08-02 | Intel Corporation | Cryptographic computing using encrypted base addresses and used in multi-tenant environments |
US11575504B2 (en) | 2019-06-29 | 2023-02-07 | Intel Corporation | Cryptographic computing engine for memory load and store units of a microarchitecture pipeline |
US11580234B2 (en) | 2019-06-29 | 2023-02-14 | Intel Corporation | Implicit integrity for cryptographic computing |
US11144322B2 (en) * | 2019-11-05 | 2021-10-12 | Mediatek Inc. | Code and data sharing among multiple independent processors |
US11693690B2 (en) | 2020-10-20 | 2023-07-04 | Micron Technology, Inc. | Method of completing a programmable atomic transaction by ensuring memory locks are cleared |
US11586439B2 (en) | 2020-10-20 | 2023-02-21 | Micron Technology, Inc. | Detecting infinite loops in a programmable atomic transaction |
US11740929B2 (en) | 2020-10-20 | 2023-08-29 | Micron Technology, Inc. | Registering a custom atomic operation with the operating system |
US11403023B2 (en) | 2020-10-20 | 2022-08-02 | Micron Technology, Inc. | Method of organizing a programmable atomic unit instruction memory |
US11436187B2 (en) * | 2020-10-20 | 2022-09-06 | Micron Technology, Inc. | Method of notifying a process or programmable atomic operation traps |
US11669625B2 (en) | 2020-12-26 | 2023-06-06 | Intel Corporation | Data type based cryptographic computing |
US11580035B2 (en) | 2020-12-26 | 2023-02-14 | Intel Corporation | Fine-grained stack protection using cryptographic computing |
US20210318961A1 (en) * | 2021-06-23 | 2021-10-14 | Intel Corporation | Mitigating pooled memory cache miss latency with cache miss faults and transaction aborts |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021886A (zh) * | 2006-02-14 | 2007-08-22 | 联想(新加坡)私人有限公司 | 防止恶意软件在计算机系统内执行的方法 |
US20070239942A1 (en) * | 2006-03-30 | 2007-10-11 | Ravi Rajwar | Transactional memory virtualization |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5239633A (en) | 1989-03-24 | 1993-08-24 | Mitsubishi Denki Kabushiki Kaisha | Data processor executing memory indirect addressing and register indirect addressing |
US7328316B2 (en) * | 2002-07-16 | 2008-02-05 | Sun Microsystems, Inc. | Software transactional memory for dynamically sizable shared data structures |
US7418577B2 (en) * | 2003-02-13 | 2008-08-26 | Sun Microsystems, Inc. | Fail instruction to support transactional program execution |
US7206903B1 (en) | 2004-07-20 | 2007-04-17 | Sun Microsystems, Inc. | Method and apparatus for releasing memory locations during transactional execution |
US8180977B2 (en) | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory in out-of-order processors |
US20080005504A1 (en) * | 2006-06-30 | 2008-01-03 | Jesse Barnes | Global overflow method for virtualized transactional memory |
US8516201B2 (en) * | 2006-12-05 | 2013-08-20 | Intel Corporation | Protecting private data from cache attacks |
US7516365B2 (en) | 2007-07-27 | 2009-04-07 | Sun Microsystems, Inc. | System and method for split hardware transactions |
US9372718B2 (en) | 2008-07-28 | 2016-06-21 | Advanced Micro Devices, Inc. | Virtualizable advanced synchronization facility |
US8229907B2 (en) | 2009-06-30 | 2012-07-24 | Microsoft Corporation | Hardware accelerated transactional memory system with open nested transactions |
-
2009
- 2009-07-28 US US12/510,905 patent/US9372718B2/en active Active
- 2009-07-28 US US12/510,856 patent/US8621183B2/en active Active
- 2009-07-28 JP JP2011521116A patent/JP2011529603A/ja active Pending
- 2009-07-28 EP EP09789014.9A patent/EP2332043B1/en active Active
- 2009-07-28 CN CN2009801357742A patent/CN102144218A/zh active Pending
- 2009-07-28 KR KR1020117004843A patent/KR20110044884A/ko not_active Application Discontinuation
- 2009-07-28 US US12/510,884 patent/US20100023703A1/en not_active Abandoned
- 2009-07-28 US US12/510,893 patent/US8407455B2/en active Active
- 2009-07-28 WO PCT/US2009/004349 patent/WO2010014200A1/en active Application Filing
-
2010
- 2010-04-20 US US12/764,024 patent/US20100205408A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021886A (zh) * | 2006-02-14 | 2007-08-22 | 联想(新加坡)私人有限公司 | 防止恶意软件在计算机系统内执行的方法 |
US20070239942A1 (en) * | 2006-03-30 | 2007-10-11 | Ravi Rajwar | Transactional memory virtualization |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104011669A (zh) * | 2011-12-22 | 2014-08-27 | 英特尔公司 | 用于提交指令的选择性执行的方法、设备和系统 |
US10261879B2 (en) | 2012-02-02 | 2019-04-16 | Intel Corporation | Instruction and logic to test transactional execution status |
US10248524B2 (en) | 2012-02-02 | 2019-04-02 | Intel Corporation | Instruction and logic to test transactional execution status |
US10223227B2 (en) | 2012-02-02 | 2019-03-05 | Intel Corporation | Instruction and logic to test transactional execution status |
US10210066B2 (en) | 2012-02-02 | 2019-02-19 | Intel Corporation | Instruction and logic to test transactional execution status |
US10210065B2 (en) | 2012-02-02 | 2019-02-19 | Intel Corporation | Instruction and logic to test transactional execution status |
US10152401B2 (en) | 2012-02-02 | 2018-12-11 | Intel Corporation | Instruction and logic to test transactional execution status |
CN104335164B (zh) * | 2012-06-15 | 2017-05-31 | 国际商业机器公司 | 事务中止处理 |
CN104335165A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 事务开始/结束指令 |
CN104335164A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 事务中止处理 |
CN104335177A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 有选择地控制事务处理中的指令执行 |
CN104335185A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 受限事务执行 |
CN104350462A (zh) * | 2012-06-15 | 2015-02-11 | 国际商业机器公司 | 事务中止指令 |
CN104335177B (zh) * | 2012-06-15 | 2017-11-21 | 国际商业机器公司 | 有选择地控制事务处理中的指令执行 |
CN104350462B (zh) * | 2012-06-15 | 2017-01-25 | 国际商业机器公司 | 事务中止指令 |
CN104364778B (zh) * | 2012-06-15 | 2017-02-08 | 国际商业机器公司 | 在事务处理中保存/恢复选择的寄存器 |
CN104335165B (zh) * | 2012-06-15 | 2017-03-01 | 国际商业机器公司 | 用于在计算环境中执行机器指令的方法和计算机系统 |
CN104335185B (zh) * | 2012-06-15 | 2017-07-07 | 国际商业机器公司 | 受限事务执行 |
CN105760140A (zh) * | 2012-06-29 | 2016-07-13 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
CN105760138A (zh) * | 2012-06-29 | 2016-07-13 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
CN105786665A (zh) * | 2012-06-29 | 2016-07-20 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
CN105760140B (zh) * | 2012-06-29 | 2019-09-13 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
CN105786665B (zh) * | 2012-06-29 | 2019-11-05 | 英特尔公司 | 用于测试事务性执行状态的系统 |
CN105760139B (zh) * | 2012-06-29 | 2018-12-11 | 英特尔公司 | 用于测试事务性执行状态的系统 |
CN105677526B (zh) * | 2012-06-29 | 2019-11-05 | 英特尔公司 | 用于测试事务性执行状态的系统 |
CN105760138B (zh) * | 2012-06-29 | 2018-12-11 | 英特尔公司 | 用于测试事务性执行状态的系统 |
CN105760265A (zh) * | 2012-06-29 | 2016-07-13 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
CN105760265B (zh) * | 2012-06-29 | 2019-11-05 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
CN105760139A (zh) * | 2012-06-29 | 2016-07-13 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
CN105677526A (zh) * | 2012-06-29 | 2016-06-15 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
CN104541248A (zh) * | 2012-07-27 | 2015-04-22 | 华为技术有限公司 | 计算系统对屏障命令的处理 |
CN104541248B (zh) * | 2012-07-27 | 2017-12-22 | 华为技术有限公司 | 计算系统对屏障命令的处理 |
CN104050023B (zh) * | 2013-03-14 | 2018-03-30 | 英特尔公司 | 用于实现事务存储器的系统和方法 |
CN104050023A (zh) * | 2013-03-14 | 2014-09-17 | 英特尔公司 | 用于实现事务存储器的系统和方法 |
CN106502920B (zh) * | 2016-11-08 | 2019-09-24 | 郑州云海信息技术有限公司 | 一种基于mesi的缓存方法、装置和处理器 |
CN106502920A (zh) * | 2016-11-08 | 2017-03-15 | 郑州云海信息技术有限公司 | 一种基于mesi的缓存方法、装置和处理器 |
CN112639728A (zh) * | 2018-11-28 | 2021-04-09 | Arm有限公司 | 用于事务存储器的设备和数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20100023706A1 (en) | 2010-01-28 |
EP2332043B1 (en) | 2018-06-13 |
KR20110044884A (ko) | 2011-05-02 |
US20100023704A1 (en) | 2010-01-28 |
US8621183B2 (en) | 2013-12-31 |
EP2332043A1 (en) | 2011-06-15 |
US20100023703A1 (en) | 2010-01-28 |
US20100205408A1 (en) | 2010-08-12 |
JP2011529603A (ja) | 2011-12-08 |
WO2010014200A1 (en) | 2010-02-04 |
US20100023707A1 (en) | 2010-01-28 |
US8407455B2 (en) | 2013-03-26 |
US9372718B2 (en) | 2016-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102144218A (zh) | 可虚拟化的先进同步设备 | |
TWI476595B (zh) | 用於交易式記憶體事件處置之硬體中使用者處置器的登錄 | |
CN102622276B (zh) | 多处理器环境中基于事务的共享数据操作 | |
KR101678133B1 (ko) | 하드웨어 트랜잭션 메모리에서의 자동 중지 및 재개 | |
TWI533218B (zh) | 受限異動執行之方法、電腦程式產品及電腦系統 | |
TWI533219B (zh) | 用於控制一異動在一計算環境中之執行之電腦程式產品、電腦系統及方法 | |
US8180971B2 (en) | System and method for hardware acceleration of a software transactional memory | |
US8612694B2 (en) | Protecting large objects within an advanced synchronization facility | |
US7178062B1 (en) | Methods and apparatus for executing code while avoiding interference | |
CN100447761C (zh) | 用来保护存储器页面的内容的方法和系统 | |
CN106030534B (zh) | 用于挽救部分执行的硬件事务的方法和系统 | |
TWI564808B (zh) | 異動處理中之選擇控制指令執行 | |
TWI584193B (zh) | 處理器協助設施 | |
US20060026371A1 (en) | Method and apparatus for implementing memory order models with order vectors | |
EP2641171B1 (en) | Preventing unintended loss of transactional data in hardware transactional memory systems | |
CN107003896B (zh) | 具有共享事务处理资源的装置和数据处理方法 | |
CN101952807A (zh) | 管理计算环境的多个可分页客户端对存储装置的使用 | |
CN105683906A (zh) | 用于利用锁省略和锁定的选择进行数据共享的自适应处理 | |
TWI742120B (zh) | 用以識別及避免在虛擬機器監控器與客端虛擬機器之間追蹤衝突的處理器延伸的處理系統、晶片上系統及方法 | |
TWI801603B (zh) | 處理獨佔式載入指令的資料處理設備、方法及電腦程式 | |
US9389864B2 (en) | Data processing device and method, and processor unit of same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C05 | Deemed withdrawal (patent law before 1993) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110803 |