CN1755635B - 事务型存储器访问的混合硬件软件实现 - Google Patents

事务型存储器访问的混合硬件软件实现 Download PDF

Info

Publication number
CN1755635B
CN1755635B CN2005101078095A CN200510107809A CN1755635B CN 1755635 B CN1755635 B CN 1755635B CN 2005101078095 A CN2005101078095 A CN 2005101078095A CN 200510107809 A CN200510107809 A CN 200510107809A CN 1755635 B CN1755635 B CN 1755635B
Authority
CN
China
Prior art keywords
affairs
memory
pattern
read
hardware
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.)
Expired - Fee Related
Application number
CN2005101078095A
Other languages
English (en)
Other versions
CN1755635A (zh
Inventor
桑吉夫·库马
克里斯托弗·休斯
帕萨·肯杜
安东尼·纳古炎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1755635A publication Critical patent/CN1755635A/zh
Application granted granted Critical
Publication of CN1755635B publication Critical patent/CN1755635B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Abstract

本发明的实施方案涉及在计算机系统中事务型存储器访问的混合硬件软件实现。包括事务型缓存和常规缓存在内的处理器被用在包括策略管理器的计算机系统中,所述策略管理器选择第一模式(硬件模式)和第二模式(软件模式)之一来实现事务型存储器访问。在硬件模式中,事务型缓存被用来执行读写存储器操作,在软件模式中,常规缓存被用来执行读写存储器操作。

Description

事务型存储器访问的混合硬件软件实现
技术领域
本发明的实施方案涉及事务型存储器(transactional memory)的领域。更具体地说,本发明的实施方案涉及事务型存储器访问的混合硬件软件实现。
背景技术
事务型存储器服务允许应用、程序、模块等,更具体地说是允许应用程序接口(API)以原子式的、一致的并且隔离的方式来访问存储器。例如,事务型存储器可被用作用于管理持久性的指针丰富型数据结构(例如数据库)和目录服务的运行时引擎的一部分。
API可以被认为是由应用、程序、模块等用来与系统程序(例如操作系统或数据库管理系统(DBMS))通信的语言或消息格式。API可以通过在程序中写入函数调用来实现,所述函数调用提供了到特定子例程的链接以供执行。因此,API意味着某个程序模块或例程已经就位,或者被链接,以便执行函数调用所请求的任务。
事务型存储器使得写并行程序变得更容易,并且事务型存储器的使用允许不同的线程同时进行,从而获得极高的处理效率。然而,目前程序员不得不在使用事务型存储器时做出困难的选择。
一种选择是使用事务型存储器应用程序接口(API)的单独硬件实现,其中程序员负责跟踪程序的硬件资源需求,并确保它们不超过可用的硬件资源。在这种方法下,事务型存储器(此后称为TM)的可适用性和可利用性是受限的。一种替换方案是使用TM API的单独软件实现,这是很容易编程的(因为实际上没有资源限制),但是软件方法要忍受很高的执行时间开销。
进一步观察事务型存储器(TM),TM是从数据库事务中产生的。在数据库中,事务是必须满足被称为ACID属性的四种属性的一组操作。第一种ACID属性是原子性(atomicity)。原子性要求数据库事务以要么全有要么全无的方式来执行。事务可能因为程序异常终止(abort)或者由于错误而异常终止。原子性要求事务的所有操作要么全都执行,要么全都不执行。第二种ACID属性是一致性。一致性要求如果数据库在事务执行前处于一致状态中,那么数据库应当被保留在一致状态中。第三种ACID属性是隔离性。隔离性属性是指所有将要执行的事务看上去必须是以某种串行顺序来完成(即,它们应当是可串行化的)。符合ACID要求的最后一种也是第四种属性是持久性。持久性要求事务在机器崩溃时也要存活下来。也就是说,事务在可被提交(commit)之前必须被写入一个稳定的存储设备(例如,盘)。然而,应当注意的是,并非TM的所有实现都要求事务满足上述所有四种属性。例如,在一些实现中,持久性不是一种要求。
除了遵从全部或部分上述ACID属性之外,通常还要求利用事务型存储器的事务和数据库支持并发执行、死锁自由度、以及非阻挡塞性.一般情况下,事务型存储器系统支持非冲突事务的并发执行.一些数据库实现使用锁(例如,二相锁定)来实现这些类型的事务.因此,在这些情形中就可能发生死锁.一旦检测到死锁,就简单地异常终止某些事务而从死锁中恢复,藉此在事务型存储器系统中实现死锁自由度.非阻塞或者说无阻碍属性被用来在事务型存储器系统中防止某一线程妨碍其他线程的前进.
到目前为止,有两种常见的方法来实现使用应用程序接口(API)的事务型存储器访问:一种是纯硬件实现;另一种是纯软件实现。硬件实现是基于以下文献中阐述的多处理器体系结构,所述文献名为“事务型存储器:对无锁数据结构的体系结构支持”(MauriceHerlihy,J.Eliot B.Moss:Transactional Memory:Architectural Support for Lock-Free DataStructure,国际计算机及其应用协会(ISCA)1993:289-300)。这种方法此后将被称为“纯硬件方法”。
纯硬件方法提供了一种有效并且易于使用的无锁(lock-free)同步方法。纯硬件方法除了保证免受一般与基于锁的同步方法相关联的优先级倒置、护送(convoying)和死锁等困扰外,还避免了与并行编程相关联的很多精细校正问题。
不幸的是,纯硬件方法需要由程序员来进行小心的资源管理。这样一来,纯硬件方法就很难用众多更先进的处理器结构来实现。一般地,要求软件可在在处理器实现之间进行移植,并且如此小心地在应用层上调节资源限制了纯硬件方法的使用。此外,在实际操作中,纯硬件方法只使用事务型存储器中的事务型缓存(cache),由于该资源有限,所以不能保证处理线程完成,从而导致程序故障。
另一种常见的用API来实现事务型存储器访问的方法是使用纯软件方法,例如在以下文献中所阐述的,该文献名为“用于动态大小的数据结构的软件事务型存储器”(MauriceHerlihy,Victor Luchangco,Mark Moir,William N.Scherer III,Software Transactional Memoryfor Dynamic-Sized Data Structures,Principles of Distributed Computing(PODC)2003。)这种方法此后将被称为纯软件方法。纯软件方法的效用在于程序员可以完全不管用来提供事务型存储器语义的具体技术,并且API特别易于编程。不幸的是,在操作中,纯软件方法技术将导致因软件开销引起的很大减速。
发明内容
本发明的实施方案涉及在计算机系统中事务型存储器访问的混合硬件软件实现。根据本发明的一个方面,提供了一种装置,包括:包括事务型缓存和常规缓存在内的处理器;和选择第一模式和第二模式之一来实现事务型存储器访问的策略管理器;其中,在第一模式中,所述事务型缓存被用来执行读写存储器操作,而在第二模式中,所述常规缓存被用来执行读写存储器操作。
根据本发明的另一个方面,提供了一种方法,包括:选择第一模式和第二模式之一来实现事务型存储器访问;利用事务型缓存,在第一模式中执行读写存储器操作;以及利用常规缓存,在第二模式中执行读写存储器操作。
根据本发明的又一个方面,提供了一种其上存储有指令的机器可读介质,所述指令在被机器执行时使得所述机器执行以下操作,其中包括:选择第一模式和第二模式之一来实现事务型存储器访问;利用事务型缓存,在第一模式中执行读写存储器操作;以及利用常规缓存,在第二模式中执行读写存储器操作。
根据本发明的再一个方面,提供了一种计算机系统,包括:包括事务型缓存和常规缓存在内的处理器;和选择第一模式或第二模式之一,以响应于在数据库中访问存储器的应用程序接口请求来实现事务型存储器访问的策略管理器;其中,在第一模式中,所述事务型缓存被用来执行读写存储器操作,而在第二模式中,所述常规缓存被用来执行读写存储器操作.
附图说明
图1是可以实现本发明实施方案的计算机系统配置的实施例的部分框图。
图2根据本发明的一个实施方案提供了事务型存储器对象的图示。
图3是根据本发明的一个实施方案,图示了实现硬件/软件事务型存储器事务的指令集体系结构的表。
图4A是根据本发明的一个实施方案,图示了用于事务型存储器访问的混合硬件软件实现的过程的流程图。
图4B是根据本发明的一个实施方案,具体图示了监视孤儿事务的过程的流程图。
图5是根据本发明的一个实施方案,图示了利用硬件/软件事务ISA来有效实现锁的过程的流程图。
具体实施方式
在以下说明书部分中,将详细描述本发明的各种实施方案。然而,将这些细节包括进来是为了帮助理解本发明,并且描述用于实现本发明的示例性实施方案。这些细节不应用来将本发明限制为所描述的具体实施方式,因为在本发明的范围内,其他变体和实施方式也是可能的。此外,虽然阐述了大量细节以便提供对本发明实施方案的完整理解,但是本领域的技术人员将清楚,这些具体细节不是实现本发明的实施方案所必需的。此外,诸如公知的方法、数据类型、协议、过程、元件、电结构和电路等细节都没有详细描述,也没有以框图形式示出,以免模糊了本发明。此外,本发明的实施方案将在具体实施方式中描述,但是可以用硬件、软件、固件。中间件或其组合来实现。
本发明的实施方案提供了事务型存储器(TM)访问的混合硬件软件实现,例如和应用程序接口(API)一起用来通过利用处理器的嵌入式硬件支持,然后如果硬件资源耗尽的话,则转向软件方案,从而实现高性能的访问。因而同时实现了硬件TM访问和软件TM访问的益处。
在一个实施方案中,如下面所讨论的,在多数常见情况下通过修改原始事务对象以实现硬件TM辅助,从而大大减小与TM API软件方法相关联的性能损失。因此,利用嵌入式硬件支持(例如,事务型存储器缓存)来处理常见的情形以获得高性能,如果出现问题,那么在硬件资源耗尽的情况下转向软件TM方案。
图1示出了其中可以实现本发明的实施方案的计算机系统配置100的实施例的部分框图。系统配置100包括诸如中央处理单元(CPU)的至少一个处理器101、芯片组103、系统存储器件105、与一个或多个输入/输出(I/O)设备113接口的一个或多个接口111、以及网络接口107。
芯片组103可以包括存储器控制中心(MCH)和/或I/O控制中心.芯片组103可以是对于在处理器101和计算机系统100的其他组件之间的数据传输起到中心或内核作用的一个或多个集成电路芯片.此外,计算机系统100可以包括附加的组件(未示出),例如其他处理器(例如,在多处理器系统中)、协处理器以及其他组件等——这仅仅是计算机系统一个非常简单的实施例.
用在本说明书中,术语“处理器”或“CPU”是指能够执行指令序列,并且应被视为包括但不限于通用微处理器、专用微处理器、专用集成电路(ASIC)、多媒体控制器、信号处理器和微控制器等的任何机器。在一个实施方案中,CPU 101是能够执行Intel体系结构指令集的通用高速微处理器。例如,CPU 101可以是
Figure G2005101078095D00041
系列处理器,例如
Figure G2005101078095D00042
体系结构32位(IA-32)处理器(例如
Figure G2005101078095D00043
4M)。
CPU 101、芯片组103和其他组件经由芯片组103来访问系统存储器件105。芯片组103例如与存储器控制中心一起使用,可以服务于指向系统存储器件105的存储器事务。
系统存储器件105可以包括适于存储数字信息的任何存储器件,例如静态随机访问存储器(SRAM)、动态随机访问存储器(DRAM)、同步动态随机访问存储器(SDRAM)和/或双数据率(DDR)SDRAM或DRAM等。因此,在一个实施方案中,系统存储器件105包括易失性存储器。此外,系统存储器件还可以包括非易失性存储器,例如只读存储器(ROM)。
此外,系统存储器件105还可以包括其他存储设备以及适当的接口,所述其他存储设备例如是硬盘驱动器、软盘驱动器、光盘驱动器等。
另外,系统存储器件105可以在非易失性存储器中存储硬件/软件事务型存储器(TM)引擎程序,供处理器101运行来实现根据本发明实施方案的技术,以由在处理器101上实现的混合硬件/软件TM引擎在计算机系统100内实现事务型存储器访问和事务(此后,术语“访问”和“事务”可以互换使用)。
系统存储器件还可以包括专用于利用数据库108来实现事务型存储器事务的存储器区域。例如,数据库108可以包括诸如企业数据库、财务数据库、规划管理数据库、目录服务之类的数据库,还可以包括一般与事务型存储器类事务一起使用的其他指针丰富型数据结构。
此外,计算机系统100可以包括与I/O设备113接口的适当接口111,所述I/O设备113例如包括盘驱动器、监视器、键盘、调制解调器、打印机、或任何其他类型的适当I/O设备。
计算机系统100还可以包括使计算机系统100与网络109相接口的网络接口107,所述网络109例如是局域网(LAN)、广域网(WAN)、因特网等。
图1中的基本计算机系统配置100是可用来实现事务型存储器访问的混合硬件软件实施方案的一类计算机系统的实施例。本领域的技术人员将会理解,图1中示例性的计算机系统配置100仅仅是基本计算机系统的一个实施例,很多其他的类型和变体都是可能的。此外,本领域的技术人员将会认识到,在图1中示出的示例性环境并不想限制本发明的实施方案。此外,应当明白,除了单个计算机系统配置100之外,或取而代之,多群或其他组的(与计算机系统配置100类似或不同的)计算机可以用来实现本发明的实施方案。
更具体地说,如图1所示,利用事务型引擎118的处理器101可以实施混合硬件/软件TM访问方法。具体地说,事务型引擎118包括标准TM功能,加上由事务型引擎118实现的增强型TM指令集体系结构(ISA),后面将更详细地讨论,用以实现与混合硬件/软件TM引擎有关的本发明的实施方案。另外,处理器101包括可以相互耦合在一起的事务型缓存132和常规存储器缓存134。
正如后面将详细讨论的那样,用事务型引擎118来实现的TM ISA使得混合硬件/软件TM引擎能够与例如API一同用来在“硬件模式”中使用硬件支持(例如,事务型缓存132)而获得高性能,并且在硬件缓存132耗尽的情况下转向软件方案(或“软件模式”).按照这种方式,向存储器105和数据库108读写数据的API请求116被优化.应当注意,此后“硬件模式”是指主要利用事务型缓存132获得高性能,而“软件模式”是指主要利用常规缓存134以及其他存储器资源,这些资源的性能较慢,但却是耗之不尽的.
虽然将在具体实施方案中描述本发明的实施方式及其各种功能组件,但是应当明白,这些方面和功能可以用硬件、软件、固件、中间件或其组合来实现。
现在看图2,图2是根据本发明的一个实施方案,提供了事务型存储器对象的图示说明的图。如图2所示,事务型存储器(TM)对象202通过定位符204来标识。每个不是只读的共享数据对象都被放入TM对象202所示的容器。在事务期间,所有TM对象202在被访问前都被打开。这将对象与事务关联起来,使得底层软件系统可以检测到事务之间的冲突。典型地,线程用API打开对象,所述API指定了是否将以只读方式访问所述对象。一旦对象已被打开,就可以对事务型对象内的数据进行操纵。
定位符204起到事务型对象定位符的作用。对于每个事务型对象而言,无论同时访问该对象的线程数量为多少,都只有一个事务型对象定位符是活动的。状态列表206存储当前正在以软件模式访问对象的事务的状态的存储器地址。典型地,事务状态是以下之一:ACTIVE、COMMITTED或ABORTED(214)。每个事务只有一个状态。处于硬件模式的事务也具有状态,但是它们从不出现在状态列表206中,下面将会讨论。
TM定位符204还存储对象210的新版本的内容218和对象212的旧版本的内容220的存储器地址。当事务打开TM对象以获取内容的最新版本时,它获得的版本取决于前面打开对象以写入(即,不是只读的)的最后一个事务的状态。如果最后写入者的状态214是ACTIVE或ABORTED,那么正在打开对象的事务将接收到旧版本220。如果最后写入者的状态214是COMMITTED,则正在打开对象的事务将接收到新版本218。
当软件模式的事务打开TM对象202以写入时,它将最新版本(如上面定义的)的地址放入TM定位符对象204的旧对象字段212。事务制作最新内容的拷贝,并将这一拷贝的地址放入TM定位符204的新对象字段210。在由软件模式的事务提交之前,对象的新拷贝不被任何其他线程访问,因此是局部的。一旦由事务提交,TM对象的新版本就变为共享对象,并且不能再被修改。当硬件模式的事务打开TM对象202以写入时,它不制作内容的拷贝。硬件模式的事务直接修改对象的最新版本,它依赖硬件来缓冲推测式的写操作,后面将讨论。
TM对象202还包括模式字段208,其指示了TM对象202是处于读模式还是写模式.当软件模式的事务打开处于读模式或写模式208的TM对象时,它将其状态变量214的地址加入状态列表206.这允许其他(处于软件模式和硬件模式的)线程异常终止所述事务,并且消除一度在个体对象上完成验证操作的需要.可以单纯通过检查保持事务状态(状态214)的一个位置来验证该事务.当事务打开TM对象202并且它的模式字段208被设置为只读时,如果所述对象正在以只读模式打开,则不需要明确地异常终止任何事务;然而,如果所述对象正在以写模式打开,则状态列表206中的所有事务在它们的状态214为ACTIVE时都需要被异常终止.当事务打开TM对象202并且模式字段208已被设置为由状态列表206中的单个事务(当前写入者)设置来写时,如果该单个事务的值是ACTIVE214,则该事务需要被异常终止,无论TM对象202正在以只读模式还是以写模式打开.
在这个实现中,TM对象202在给定的时间上只接纳单个读出者或单个写入者。在一些实施方案中,可以通过在状态列表206中允许多个事务字段存在,从而接纳并发的读出者,藉此来减缓这种限制。这允许在任何给定的时间上有多个(但却是受限的)事务打开对象。可以逐个对象地来设置这一限制。正如将会讨论的,TM对象202使得事务型存储器事务更倾向于通过硬件/软件混合方案来实现。
本发明的实施方案提供了允许以“硬件模式”或“软件模式”来实现事务型存储器事务的硬件/软件事务指令集体系结构(ISA)。当以硬件描述执行事务型存储器访问时,主要利用事务型缓存132(图1)来完成。按照这种方式,可以向事务提供非常高的性能,然而,硬件资源有时会耗尽。此外,在硬件模式中,处理器需要跟踪被访问的所有存储器位置。在硬件模式中,同时执行的事务之间的冲突被检测出来,并且发生冲突的事务之一被异常终止。一旦异常终止,在该事务期间被写入的数据就被无效,并且在提交时,该数据必须原子地是存储器状态的一部分。
更具体地说,本发明的实施方案涉及计算机系统中事务型存储器访问的混合硬件软件实现。包括事务型缓存和常规缓存在内的处理器被用在计算机系统中。策略管理器选择第一模式(此后称为“硬件模式”)或第二模式(此后称为“软件模式”)之一来响应于访问存储器的应用程序接口(API)请求而实现事务型存储器访问。在硬件模式中,事务型缓存被用来执行读写存储器操作,在软件模式中,常规缓存被用来执行大多数读写存储器操作(只有一个位置被存储在事务型缓存中,下面将讨论)。
策略管理器首先选择硬件模式,以在事务型缓存中使用事务型读写指令来执行读写操作。如果有足够的存储器资源存在于事务型缓存中用于执行读写操作,则发出提交指令以完成事务型存储器访问。然而,如果在事务型缓存中检测到冲突的事务型读写操作,或者检测到没有足够的存储器资源,则发出异常终止指令。如果对于第一模式发出了异常终止指令,则策略管理器可以选择软件模式,在该模式中,在常规缓存中使用常规的读写指令来执行常规的读写操作。
当纯粹用硬件来实现事务型存储器事务时,对于单个事务可以访问的存储器位置有数量上的限制。如果事务超过了这个限制,根据本发明的一个实施方案,该事务以“软件模式”重新启动。下面将会讨论,当硬件事务被无效时,该线程所执行的下一存储器操作将引发例外。这可以防止被无效的硬件事务继续进行并破坏存储器。在发生例外并进入软件模式之后,主要由常规缓存及其他存储器资源(见图1)来执行事务型存储器访问。
为了实施事务型存储器访问的这种混合硬件软件实现方案,本发明的实施方案提供了新颖的、非显而易见的事务型存储器指令集体系结构(ISA)。参考图3,图3是根据本发明的一个实施方案,图示了实现硬件/软件事务型存储器事务的指令集的表。
如图3所示,硬件/软件事务ISA 300包括具有两种模式的开始事务302。“开始事务(全部)”(Begin Transaction All)用于指定“硬件模式”事务,而“开始事务(选择)”(Begin Transaction Select)被用于“软件模式”事务。具体地说,开始事务指令302标记事务的启动。用于“硬件模式”的“开始事务(全部)”默认使所有的存储器访问成为事务型的(例如,使用事务型缓存),而“开始事务(选择)”只完成被明确指定为事务型的存储器操作。
应当注意,硬件事务不能被嵌套(与基于软件的事务相反)。因此,在前一事务已被提交或异常终止之前,新的硬件事务不能开始。通过执行异常终止事务指令306或者在遇到数据冲突时,异常终止一个事务,下面将会讨论。
提交指令304被用来标记事务的结束,并允许包括事务型缓存在内的事务型存储器的所有内容成为体系结构性的。具体地说,允许事务型存储来修改系统状态,并且事务型加载被从事务型缓存中清除出去。如果在先指令前面未被启动,则无法让提交指令开始。
异常终止事务指令306异常终止当前事务,并丢弃先前被缓冲的所有事务型写数据。如果先前没有任何事务被启动,那么将发生错误。
此外,硬件/软件事务ISA 300还包括加载/存储事务指令308,用以执行事务型存储器加载/存储操作。
硬件/软件事务ISA 300此外还包括加载/存储常规指令,用以执行非事务型的存储器加载/存储操作。
还提供了检查点和恢复状态指令312。检查点指令对当前寄存器状态进行检查点操作并存入存储器。恢复指令从存储器中恢复当前寄存器状态。
硬件/软件事务ISA 300还包括孤儿事务例外指令314。一个事务如果不能提交的话,就被定义为孤儿事务。例如,如果另一个处理已对它已进行事务型读的位置进行写操作,那么这就可能发生。在这种情况下,孤儿事务可以发现存储器处于不一致状态中,并可以让程序引发例外,例如除以零,或者访问超范围的存储器地址。更坏的是,它可能将错误的值写入有效的存储器位置,并破坏系统状态。
孤儿事务例外指令避免了这些复杂问题。具体地说,在某一线程的事务已变为孤儿后,由该线程执行的第一加载指令将生成孤儿事务例外指令314,后面将会讨论。
现在看图4A,图4A是根据本发明的一个实施方案,图示了用于事务型存储器访问的混合硬件软件实现的过程400的流程图。过程400利用了以下事实,即,当针对大多数正常情形用“硬件模式”来实现(例如,主要利用处理器的事务型缓存)时,事务型存储器访问是以非常快速并且最优的方式来完成的。然而,该过程也考虑到,当在硬件模式下由处理器来实现时,事务也许不能完成,因此,它返回到“软件模式”中,软件模式总能保证完成事务。相反的是,“软件模式”主要使用常规缓存和其他存储器资源。下面将会讨论,当硬件事务被无效时,下一存储器操作引发孤儿事务例外,其防止被无效的硬件事务继续进行并破坏存储器。
具体阅读过程400,在框402,事务(例如,从API)开始。在框404,策略管理器选择硬件模式或软件模式之一来开始所述事务。在一个实施方案中,首先选择硬件模式以(例如,经由事务型缓存)利用快速硬件处理的优势,而软件模式可以用作后备。
在选择了硬件模式之后,发起来自硬件/软件事务ISA 300的Begin Transaction All指令302,使得模式被设置为硬件。进一步地,来自硬件/软件事务ISA的加载事务指令308也被发起,以加载事务型存储器状态。接着,在框408,如前所述,使用事务型读写操作,在适当之处对TM对象执行事务的读写操作。如果硬件事务可以完成(例如,如果有足够的硬件资源可以用事务型缓存来完成事务),那么生成提交事务指令,并且如框410所示,状态被设置为提交,并且事务被提交。对事务的处理就这样被提交了(框415)。
然而,如果事务不能用硬件来提交(例如,在事务型缓存中没有足够的硬件资源),则发起异常终止事务指令,并且状态被设置为异常终止,并且事务被异常终止(框420).于是,过程被异常终止(框422).
当事务被异常终止时,生成孤儿事务例外指令424。这可能是由于冲突的事务型读写操作或硬件资源不够引起的。在任一种情形中,事务型存储器被清理,并且事务被重试(框426)。一般,如果在硬件模式中发生故障,那么对于下一次尝试,策略管理器将选择软件模式。
简要地说,将更详细地讨论提交和异常终止指令。具体地说,如前所述,可以使用事务型缓存来实现事务型存储器。例如,如图1所示,处理器101可以包括事务型缓存132和常规缓存134。使用来自硬件/软件事务ISA 300的加载和存储事务308进行读写的所有位置都被存储在事务型缓存中。所有的事务型写都保留在事务型缓存中,直到事务提交为止。如果事务型缓存中曾被所述事务读取的位置被另一个线程写,那么所述事务变成一个孤儿,并且最终将被异常终止。
提交事务指令304标记事务的结束,并且使得事务型缓存的所有内容变为体系结构性的(例如,事务型存储被允许修改系统状态,并且事务型加载被从事务型缓存中清除出去)。
如果某一事务不能提交的话,它就被定义为一个孤儿。举例来说,一个事务可能成为孤儿,如果另一个线程写它读过的位置的话。孤儿事务可以发现存储器处于不一致状态中,并可以让处理器引发例外,例如除以零,或者访问范围以外的存储器位置。更坏的是,它有可能将错误的值写入有效的存储器位置,并破坏系统状态。因此,当这发生时,就发起孤儿事务例外指令314,并使动作异常终止422。
因此,过程400和硬件/软件事务ISA 300允许例外被异步使用,以通知一个线程它正在执行的事务是否已变为孤儿。一旦事务已变为孤儿,则让所述线程异常终止,并且不允许该线程使用从来自存储器的新加载操作所返回的数据。
为了完成这一目标,在每次加载上使用特殊的例外。具体地说,在某一线程成为孤儿后的第一次加载在该加载上强制一个例外,并且该线程被异常终止。然后,例外处理者(handler)负责分支回到事务的开端,这可以如前面的清理和重试框426所述来完成。因此,用异常终止事务指令306实现的用户例外处理者负责异常终止事务,展开堆栈,以及利用清理和重试426来重新启动被异常终止的事务。
简要参考图4B,图4B是具体图示了监视孤儿事务的过程448的流程图。在框450,在发生加载事务后,状态标记被设置为事务有效。接着,过程448监视由另一个处理器或线程引发的冲突(框452)。如果在框454没有检测到冲突,则继续处理(框456)。然而,如果在框454检测到冲突,则状态标记被重置为事务无效,用以标志该事务已被异常终止(框460)。在第一次加载事务后的所有加载都检查状态标记,以在提交(例如,将数据返回处理器)前验证它被设置为事务有效。另一方面,如果状态标记被重置,则不允许所述加载被提交,并且发生如前所述的异常终止过程。
返回图4A,假设硬件事务由于发生冲突的事务读写操作或硬件资源耗尽而已被异常终止,那么策略管理器在框404处可以选择“软件模式”来确保事务的完成。在框430,从硬件/软件事务ISA 300发起Begin Transaction Select指令302,使得模式被设置为软件,并且事务状态被加载.应当注意,当运行在软件模式时,处理器并不将所有的存储器访问都视为事务型的.对于每个事务,只有一个位置是以事务型方式(例如,使用加载事务指令308)来访问的——即,包含所述事务的状态的位置.
接着,在框432,通过拷贝并使用常规读写操作(例如,加载/存储常规指令310),对事务执行读写操作。此外,使用常规缓存和其他存储器资源,而不是事务型缓存。如果对事务的读写操作可以执行的话,则发起提交事务指令304,并状态被设置为提交(框434)。于是,对存储器的读写操作被提交(框415)。
另一方面,如果检测到冲突的事务型写操作,则过程可以被异常终止,并且状态被设置为异常终止(框436)。于是,事务在框422处被异常终止,并且基于发生冲突的写事务的例外438,处于软件模式的过程400可以在软件模式中再次清理并重试(框440)事务型操作。
在本发明的另一个实施方案中,前面所讨论的硬件/软件事务ISA 300可以用来有效地实现锁。简要地说,当调用锁获取函数时,处理器试图使用事务型存储器扩展,以硬件模式来执行临界区(例如,在锁获取和接下来的锁释放之间的代码),并且如果失败的话,过程将转回到软件模式。
有三种可能的原因致使临界区可能无法以硬件模式完成。例如,可能发生资源耗尽,其中用来保存事务型状态的事务型缓存溢出。或者,可能存在数据上的冲突。例如,如果两个线程想要以硬件模式执行它们的临界区,并且试图对同一数据执行冲突的操作,这也可能引发故障。举例来说,一个线程可能要写另一个线程已经读过的缓存行。另外,在向软件模式转移时也可能发生故障。例如,如果某一线程在软件模式中夺取了锁,那么所有需要这个锁并且处于临界区中间的其他线程都将被异常终止。
应当注意,对于任何锁,在硬件模式中,多个线程可以处于临界区中,或者在软件模式中,单个线程可以正在持有该锁。为了在硬件模式中进入锁的临界区,线程进行检查以确信锁是可获得的,并且进入临界区而不将其标记为锁定。为了在软件模式中进入锁的临界区,线程进行检查以确信锁是可获得的,并将其标记为锁定。这将在硬件模式中异常终止任何已处于临界区中的线程,并将在硬件或软件模式中阻止任何新的线程进入临界区。
看图5,图5是根据本发明的一个实施方案,图示了使用硬件/软件事务ISA 300来有效实现锁的过程500的流程图。在框502,锁被获取或发起。在框504,策略管理器选择一种模式。典型地,如前所述,首先选择硬件模式,从而尝试最有效地完成事务型存储器事务。如果硬件模式无法完成事务的话,则转向软件模式。
接着,在框506,锁被开启,并且模式被事务ISA 300的“开始事务(全部)”指令302设置为硬件。在框508,使用事务型读写操作(例如,加载/存储事务308),对所述事务执行读写操作(例如,在事务型缓存中)。如果事务完成,则锁被释放(框510),并且事务被提交。
然而,如果存在因冲突的事务型读写操作520引起的例外,则锁被异常终止。然后发起清理和重试操作(框522),并且以软件模式来尝试锁。因此,在框504,策略管理器选择软件模式。
在这种情形中,锁以软件模式开始,并且锁的状态被设置为锁定(框530).接着(框532),使用常规读写操作(例如,加载和存储常规指令310)来执行读写操作.在软件模式中,锁一般总是被完成,然后锁被释放,并且锁定状态被设置为解锁(在框534).这结束了过程500.
为了获得进一步的性能改进,处理器可以执行冲突解决。具体地说,当检测到数据冲突时,处理器可以解决冲突,并允许事务之一完成。剩下的发生冲突的事务可以被推迟或异常终止,这取决于它们曾读取的存储器位置中是否有哪一个位置已被另一个线程写入。此外,当如前所述已发生例外520(例如,孤儿事务例外)时,可以记录事务是否因资源耗尽或因数据冲突而成为孤儿。然后,例外处理器可被修改为:只有当资源耗尽时才返回软件模式。当只发生了数据冲突时,可以采用以下修改,即再次以硬件模式来重试事务,而不是自动切换到软件模式。
虽然已在具体实施方案中描述了本发明的实施方案及其各种功能组件,但是应当理解,可以用硬件、软件、固件、中间件或它们的组合来实现本发明的实施方案,并且本发明的实施方案可以用在多种系统、子系统、组件或其子组件中。当用软件或固件来实现时,本发明的单元是用于执行必要任务的指令/代码段。程序或代码段可被存储在机器可读介质(例如,处理器可读介质或计算机程序产品)中,或者在传输介质或通信链路中,通过包含在载波或由载波调制的信号中的计算机数据信号来传输。机器可读介质可以包括可存储或传输机器(例如,处理器、计算机等)可读并可执行形式的信息的任何介质。机器可读介质的例子包括电子线路、半导体存储器件、ROM、闪存、可擦除可编程ROM(EPROM)、软盘、压缩盘(CD-ROM)、光盘、硬盘、光纤介质、射频(RF)链路等。计算机数据信号可以包括可在传输介质上传播的任何信号,所述传输介质例如是电子网络信道、光纤、空气、电磁介质、射频(RF)链路、条形码等。代码段可以经由因特网、企业内部网等网络来下载。
此外,虽然已参考示意性的实施方案描述了本发明的实施方式,但是这些描述不想被理解为限制性的。对本发明实施方案所属技术领域的技术人员来说很清楚的对示意性实施方案的各种修改、以及本发明的其他实施方案都被视为落入本发明的精神和范围内。

Claims (21)

1.一种用于事务性存储器访问的装置,包括:
包括事务型缓存和常规缓存在内的处理器,所述事务型缓存专用于事务型读写存储器操作;以及
选择硬件模式和软件模式之一来实现事务型存储器访问的策略管理器;
其中,在硬件模式中,所述事务型缓存被用来基于事务型读写指令执行事务型读写存储器操作,而在软件模式中,所述常规缓存被用来基于常规读写指令执行常规读写存储器操作。
2.如权利要求1所述的装置,其中,如果在所述事务型缓存中存在足够的存储器资源用于执行事务型读写操作,则发出提交指令,以完成所述事务型存储器访问。
3.如权利要求1所述的装置,其中,如果检测到发生冲突的事务型读写操作,则发出异常终止指令。
4.如权利要求1所述的装置,其中,如果在所述事务型缓存中检测不到足够的存储器资源,则发出异常终止指令。
5.如权利要求4所述的装置,其中,如果对于硬件模式发出了异常终止指令,则所述策略管理器选择软件模式,在软件模式中,在所述常规缓存中使用常规读写指令来执行常规读写操作。
6.如权利要求5所述的装置,其中,运行在软件模式中,如果检测到发生冲突的写事务,则发出异常终止指令。
7.如权利要求5所述的装置,其中,如果未检测到发生冲突的写事务,则发出提交指令以完成所述存储器访问。
8.一种用于事务性存储器访问的方法,包括:
选择硬件模式和软件模式之一来实现事务型存储器访问,所述事务型缓存专用于事务型读写存储器操作;
基于事务型读写指令,利用事务型缓存在硬件模式中执行事务型读写存储器操作;以及
基于常规读写指令,利用常规缓存在软件模式中执行常规读写存储器操作。
9.如权利要求8所述的方法,其中,如果在所述事务型缓存中存在足够的存储器资源用于执行事务型读写操作,则还包括:发出提交指令,以完成所述事务型存储器访问。
10.如权利要求8所述的方法,其中,如果检测到发生冲突的事务型读写操作,则还包括:发出异常终止指令。
11.如权利要求8所述的方法,其中,如果在所述事务型缓存中检测不到足够的存储器资源,则还包括:发出异常终止指令。
12.如权利要求11所述的方法,其中,如果在硬件模式中发出了异常终止指令,那么还包括:
选择软件模式;以及
使用常规读写指令,在所述常规缓存中执行常规读写操作。
13.如权利要求12所述的方法,其中,当运行在软件模式中时,如果检测到发生冲突的写事务,则还包括:发出异常终止指令。
14.如权利要求12所述的方法,其中,如果未检测到发生冲突的写事务,则还包括:发出提交指令以完成所述存储器访问.
15.一种计算机系统,包括:
包括事务型缓存和常规缓存在内的处理器,所述事务型缓存专用于事务型读写存储器操作;以及
选择硬件模式或软件模式之一,以响应于在数据库中访问存储器的应用程序接口请求来实现事务型存储器访问的策略管理器;
其中,在硬件模式中,所述事务型缓存被用来基于事务型读写指令执行事务型读写存储器操作,而在软件模式中,所述常规缓存被用来基于常规读写指令执行常规读写存储器操作。
16.如权利要求15所述的计算机系统,其中,如果在所述事务型缓存中存在足够的存储器资源用于执行事务型读写操作,则发出提交指令,以完成所述事务型存储器访问。
17.如权利要求15所述的计算机系统,其中,如果检测到发生冲突的事务型读写操作,则发出异常终止指令。
18.如权利要求15所述的计算机系统,其中,如果在所述事务型缓存中检测不到足够的存储器资源,则发出异常终止指令。
19.如权利要求18所述的计算机系统,其中,如果对于硬件模式发出了异常终止指令,则所述策略管理器选择软件模式,在软件模式中,在所述常规缓存中使用常规读写指令来执行常规读写操作。
20.如权利要求19所述的计算机系统,其中,运行在软件模式中,如果检测到发生冲突的写事务,则发出异常终止指令。
21.如权利要求19所述的计算机系统,其中,如果未检测到发生冲突的写事务,则发出提交指令以完成所述存储器访问。
CN2005101078095A 2004-09-30 2005-09-30 事务型存储器访问的混合硬件软件实现 Expired - Fee Related CN1755635B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/956,179 US7856537B2 (en) 2004-09-30 2004-09-30 Hybrid hardware and software implementation of transactional memory access
US10/956,179 2004-09-30

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201010144199.7A Division CN101807169B (zh) 2004-09-30 2005-09-30 事务型存储器访问的混合硬件软件实现

Publications (2)

Publication Number Publication Date
CN1755635A CN1755635A (zh) 2006-04-05
CN1755635B true CN1755635B (zh) 2010-05-12

Family

ID=35519767

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201010144199.7A Expired - Fee Related CN101807169B (zh) 2004-09-30 2005-09-30 事务型存储器访问的混合硬件软件实现
CN2005101078095A Expired - Fee Related CN1755635B (zh) 2004-09-30 2005-09-30 事务型存储器访问的混合硬件软件实现

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201010144199.7A Expired - Fee Related CN101807169B (zh) 2004-09-30 2005-09-30 事务型存储器访问的混合硬件软件实现

Country Status (5)

Country Link
US (6) US7856537B2 (zh)
JP (1) JP4774056B2 (zh)
CN (2) CN101807169B (zh)
DE (1) DE112005002402B4 (zh)
WO (1) WO2006039174A1 (zh)

Families Citing this family (126)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7921407B2 (en) * 2004-08-10 2011-04-05 Oracle America, Inc. System and method for supporting multiple alternative methods for executing transactions
US7856537B2 (en) 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
US7685365B2 (en) * 2004-09-30 2010-03-23 Intel Corporation Transactional memory execution utilizing virtual memory
US7984248B2 (en) * 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
USRE45632E1 (en) * 2005-01-03 2015-07-28 O'shantel Software L.L.C. Memory-controller-embedded apparatus and procedure for achieving system-directed checkpointing without operating-system kernel support
US7630991B2 (en) * 2005-10-27 2009-12-08 Microsoft Corporation Compiling join patterns using software transactional memories
US8225297B2 (en) 2005-12-07 2012-07-17 Microsoft Corporation Cache metadata identifiers for isolation and sharing
US8001538B2 (en) 2005-12-07 2011-08-16 Microsoft Corporation Software accessible cache metadata
US8813052B2 (en) 2005-12-07 2014-08-19 Microsoft Corporation Cache metadata for implementing bounded transactional memory
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US7730286B2 (en) * 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US20070186056A1 (en) * 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US8898652B2 (en) * 2006-03-23 2014-11-25 Microsoft Corporation Cache metadata for accelerating software transactional memory
US8180967B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US8180977B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US8108627B2 (en) * 2006-03-31 2012-01-31 Intel Corporation Array comparison and swap operations
US7792805B2 (en) * 2006-05-30 2010-09-07 Oracle America, Inc. Fine-locked transactional memory
US20080005504A1 (en) * 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US20080040524A1 (en) * 2006-08-14 2008-02-14 Zimmer Vincent J System management mode using transactional memory
US9798590B2 (en) * 2006-09-07 2017-10-24 Intel Corporation Post-retire scheme for tracking tentative accesses during transactional execution
US8924653B2 (en) * 2006-10-31 2014-12-30 Hewlett-Packard Development Company, L.P. Transactional cache memory system
US8806495B2 (en) * 2006-11-20 2014-08-12 Microsoft Corp. Lightweight transactional memory for data parallel programming
US8522223B2 (en) * 2006-11-22 2013-08-27 Intel Corporation Automatic function call in multithreaded application
US8060482B2 (en) * 2006-12-28 2011-11-15 Intel Corporation Efficient and consistent software transactional memory
US7802136B2 (en) 2006-12-28 2010-09-21 Intel Corporation Compiler technique for efficient register checkpointing to support transaction roll-back
US7689733B2 (en) * 2007-03-09 2010-03-30 Microsoft Corporation Method and apparatus for policy-based direct memory access control
US8185698B2 (en) * 2007-04-09 2012-05-22 Bratin Saha Hardware acceleration of a write-buffering software transactional memory
US7908255B2 (en) * 2007-04-11 2011-03-15 Microsoft Corporation Transactional memory using buffered writes and enforced serialization order
US9009452B2 (en) 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US8095750B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory system with fast processing of common conflicts
US8688920B2 (en) * 2007-05-14 2014-04-01 International Business Machines Corporation Computing system with guest code support of transactional memory
US8117403B2 (en) * 2007-05-14 2012-02-14 International Business Machines Corporation Transactional memory system which employs thread assists using address history tables
US8095741B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory computing system with support for chained transactions
US7644238B2 (en) 2007-06-01 2010-01-05 Microsoft Corporation Timestamp based transactional memory
US8458724B2 (en) 2007-06-15 2013-06-04 Microsoft Corporation Automatic mutual exclusion
US8266387B2 (en) * 2007-06-27 2012-09-11 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization emulation
US8140773B2 (en) 2007-06-27 2012-03-20 Bratin Saha Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM
US9043553B2 (en) * 2007-06-27 2015-05-26 Microsoft Technology Licensing, Llc Leveraging transactional memory hardware to accelerate virtualization and emulation
US8176253B2 (en) * 2007-06-27 2012-05-08 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization and emulation
US9280397B2 (en) * 2007-06-27 2016-03-08 Intel Corporation Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
US8612643B2 (en) * 2007-06-30 2013-12-17 Microsoft Corporation Interfaces for digital media processing
CN101452400B (zh) * 2007-11-29 2011-12-28 国际商业机器公司 处理多处理器系统中事务缓冲器溢出的方法和系统
US7966459B2 (en) * 2007-12-31 2011-06-21 Oracle America, Inc. System and method for supporting phased transactional memory modes
US8140497B2 (en) * 2007-12-31 2012-03-20 Oracle America, Inc. System and method for implementing nonblocking zero-indirection transactional memory
WO2009097586A1 (en) * 2008-01-31 2009-08-06 Bea Systems, Inc. System and method for transactional cache
US8533663B2 (en) * 2008-05-12 2013-09-10 Oracle America, Inc. System and method for utilizing available best effort hardware mechanisms for supporting transactional memory
CN101587447B (zh) * 2008-05-23 2013-03-27 国际商业机器公司 基于预测的事务执行系统和方法
US9047139B2 (en) * 2008-06-27 2015-06-02 Microsoft Technology Licensing, Llc Primitives for software transactional memory
US8166481B2 (en) * 2008-10-20 2012-04-24 Microsoft Corporation Transaction processing in transactional memory
US8776063B2 (en) * 2008-11-26 2014-07-08 Oracle America, Inc. Method and system for hardware feedback in transactional memory
US8789057B2 (en) * 2008-12-03 2014-07-22 Oracle America, Inc. System and method for reducing serialization in transactional memory using gang release of blocked threads
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8312219B2 (en) 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
US8250331B2 (en) 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
US8161247B2 (en) * 2009-06-26 2012-04-17 Microsoft Corporation Wait loss synchronization
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US8356166B2 (en) * 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US20100332768A1 (en) * 2009-06-26 2010-12-30 Microsoft Corporation Flexible read- and write-monitored and buffered memory blocks
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8566524B2 (en) * 2009-08-31 2013-10-22 International Business Machines Corporation Transactional memory system with efficient cache support
US9639392B2 (en) * 2013-12-17 2017-05-02 Intel Corporation Unbounded transactional memory with forward progress guarantees using a hardware global lock
US20110113409A1 (en) * 2009-11-10 2011-05-12 Rodrick Evans Symbol capabilities support within elf
US8533440B2 (en) * 2009-12-15 2013-09-10 Microsoft Corporation Accelerating parallel transactions using cache resident transactions
US8402218B2 (en) * 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US8539465B2 (en) 2009-12-15 2013-09-17 Microsoft Corporation Accelerating unbounded memory transactions using nested cache resident transactions
US9092253B2 (en) * 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8739164B2 (en) * 2010-02-24 2014-05-27 Advanced Micro Devices, Inc. Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof
US8464261B2 (en) 2010-03-31 2013-06-11 Oracle International Corporation System and method for executing a transaction using parallel co-transactions
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
US8214560B2 (en) 2010-04-20 2012-07-03 International Business Machines Corporation Communications support in a transactional memory
US8719515B2 (en) 2010-06-21 2014-05-06 Microsoft Corporation Composition of locks in software transactional memory
US9411634B2 (en) 2010-06-21 2016-08-09 Microsoft Technology Licensing, Llc Action framework in software transactional memory
US9110691B2 (en) * 2010-11-16 2015-08-18 Advanced Micro Devices, Inc. Compiler support technique for hardware transactional memory systems
US9043363B2 (en) * 2011-06-03 2015-05-26 Oracle International Corporation System and method for performing memory management using hardware transactions
US9870384B2 (en) * 2012-03-30 2018-01-16 International Business Machines Corporation Database system transaction management
US20130332778A1 (en) * 2012-06-07 2013-12-12 Vmware, Inc. Performance-imbalance-monitoring processor features
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9298469B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
US9298631B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Managing transactional and non-transactional store observability
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9015419B2 (en) 2012-06-15 2015-04-21 International Business Machines Corporation Avoiding aborts due to associativity conflicts in a transactional environment
US9262320B2 (en) * 2012-06-15 2016-02-16 International Business Machines Corporation Tracking transactional execution footprint
US8688661B2 (en) * 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9223687B2 (en) 2012-06-15 2015-12-29 International Business Machines Corporation Determining the logical address of a transaction abort
US10095557B2 (en) * 2012-06-29 2018-10-09 Intel Corporation System and method to provide single thread access to a specific memory region
US9058282B2 (en) 2012-12-31 2015-06-16 Intel Corporation Dynamic cache write policy
US9032152B2 (en) 2013-03-22 2015-05-12 Applied Micro Circuits Corporation Cache miss detection filter
WO2015009275A1 (en) 2013-07-15 2015-01-22 Intel Corporation Improved transactional memory management techniques
US9183043B2 (en) 2013-07-16 2015-11-10 Oracle International Corporation Systems and methods for adaptive integration of hardware and software lock elision techniques
US9558229B2 (en) * 2013-11-26 2017-01-31 Sap Se Transaction private log buffering for high performance of transaction processing
JP6244916B2 (ja) 2014-01-06 2017-12-13 富士通株式会社 演算処理装置,演算処理装置の制御方法及び情報処理装置
US9471371B2 (en) * 2014-02-27 2016-10-18 International Business Machines Corporation Dynamic prediction of concurrent hardware transactions resource requirements and allocation
US9971627B2 (en) 2014-03-26 2018-05-15 Intel Corporation Enabling maximum concurrency in a hybrid transactional memory system
JP6023765B2 (ja) * 2014-09-01 2016-11-09 インテル・コーポレーション 無制限トランザクショナルメモリ(utm)システムの最適化
US10061583B2 (en) 2014-12-24 2018-08-28 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
US10387156B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061589B2 (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
US10387158B2 (en) * 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10180921B2 (en) * 2015-06-26 2019-01-15 International Business Machines Corporation Non-interfering transactions
US10445271B2 (en) * 2016-01-04 2019-10-15 Intel Corporation Multi-core communication acceleration using hardware queue device
JP6318440B2 (ja) * 2016-10-07 2018-05-09 インテル・コーポレーション 無制限トランザクショナルメモリ(utm)システムの最適化
US10929033B2 (en) 2018-04-25 2021-02-23 Micron Technology, Inc. Allocating variable media types of memory devices in a memory system
US11010309B2 (en) * 2018-05-18 2021-05-18 Intel Corporation Computer system and method for executing one or more software applications, host computer device and method for a host computer device, memory device and method for a memory device and non-transitory computer readable medium
US10754776B2 (en) 2018-07-30 2020-08-25 International Business Machines Corporation Cache balance when using hardware transactional memory
US20230342157A1 (en) * 2021-01-11 2023-10-26 Next Silicon Ltd Optimizing reconfigurable hardware using data sampling
US11741007B2 (en) * 2021-01-15 2023-08-29 Neo4J Sweden Ab Memory guards for continuous load-adaptive processing of transactions in databases
CN113778330B (zh) * 2021-08-05 2023-04-25 无锡融卡科技有限公司 一种基于Flash存储器的事务处理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
EP1416387A2 (en) * 2002-10-31 2004-05-06 Lg Electronics Inc. System and method for maintaining transaction cache consistency in mobile computing environment

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5347428A (en) * 1992-12-03 1994-09-13 Irvine Sensors Corporation Module comprising IC memory stack dedicated to and structurally combined with an IC microprocessor chip
US6425060B1 (en) * 1999-01-05 2002-07-23 International Business Machines Corporation Circuit arrangement and method with state-based transaction scheduling
US6360231B1 (en) * 1999-02-26 2002-03-19 Hewlett-Packard Company Transactional memory for distributed shared memory multi-processor computer systems
JP2003167765A (ja) 2001-11-30 2003-06-13 Canon Inc 情報処理装置及び方法
US7328316B2 (en) * 2002-07-16 2008-02-05 Sun Microsystems, Inc. Software transactional memory for dynamically sizable shared data structures
US6976131B2 (en) 2002-08-23 2005-12-13 Intel Corporation Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
US7213248B2 (en) * 2002-10-10 2007-05-01 International Business Machines Corporation High speed promotion mechanism suitable for lock acquisition in a multiprocessor data processing system
US20040163082A1 (en) * 2003-02-13 2004-08-19 Marc Tremblay Commit instruction to support transactional program execution
US7587615B2 (en) * 2003-09-12 2009-09-08 International Business Machines Corporation Utilizing hardware transactional approach to execute code after initially utilizing software locking by employing pseudo-transactions
US20050086446A1 (en) * 2003-10-04 2005-04-21 Mckenney Paul E. Utilizing software locking approach to execute code upon failure of hardware transactional approach
US7856537B2 (en) * 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US7792805B2 (en) * 2006-05-30 2010-09-07 Oracle America, Inc. Fine-locked transactional memory
US7793052B2 (en) * 2007-12-31 2010-09-07 Oracle America, Inc. System and method for implementing hybrid single-compare-single-store operations
US7966459B2 (en) * 2007-12-31 2011-06-21 Oracle America, Inc. System and method for supporting phased transactional memory modes
US20090177847A1 (en) * 2008-01-09 2009-07-09 International Business Machines Corporation System and method for handling overflow in hardware transactional memory with locks
US7908265B2 (en) * 2008-02-19 2011-03-15 Microsoft Corporation Transactional memory with dynamic separation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
EP1416387A2 (en) * 2002-10-31 2004-05-06 Lg Electronics Inc. System and method for maintaining transaction cache consistency in mobile computing environment

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
附图1.

Also Published As

Publication number Publication date
CN101807169A (zh) 2010-08-18
US10268579B2 (en) 2019-04-23
DE112005002402B4 (de) 2020-11-05
US10102123B2 (en) 2018-10-16
DE112005002402T5 (de) 2007-08-16
WO2006039174A1 (en) 2006-04-13
JP4774056B2 (ja) 2011-09-14
US20140136783A1 (en) 2014-05-15
CN101807169B (zh) 2014-06-25
JP2008515055A (ja) 2008-05-08
US9529715B2 (en) 2016-12-27
US20060085591A1 (en) 2006-04-20
US20110055837A1 (en) 2011-03-03
US10180903B2 (en) 2019-01-15
US20170206159A1 (en) 2017-07-20
US20170039068A1 (en) 2017-02-09
US8661206B2 (en) 2014-02-25
US20170206160A1 (en) 2017-07-20
CN1755635A (zh) 2006-04-05
US7856537B2 (en) 2010-12-21

Similar Documents

Publication Publication Date Title
CN1755635B (zh) 事务型存储器访问的混合硬件软件实现
Memaripour et al. Atomic in-place updates for non-volatile main memories with kamino-tx
JP2505939B2 (ja) デ―タのキャストアウトを制御する方法
Levandoski et al. High performance transactions in deuteronomy
CN101556559B (zh) 利用虚拟存储器的事务型存储器执行
US5197148A (en) Method for maintaining data availability after component failure included denying access to others while completing by one of the microprocessor systems an atomic transaction changing a portion of the multiple copies of data
Bobba et al. Tokentm: Efficient execution of large transactions with hardware transactional memory
US5276835A (en) Non-blocking serialization for caching data in a shared cache
US5428761A (en) System for achieving atomic non-sequential multi-word operations in shared memory
US5537574A (en) Sysplex shared data coherency method
US8095731B2 (en) Mutable object caching
JPH04155465A (ja) ファイル共用方法
Dong et al. Fine-Grained Re-Execution for Efficient Batched Commit of Distributed Transactions
JP3107094B2 (ja) 共用バッファのロック期間短縮処理方法及び装置
Fu et al. Hardware transactional memory: A high performance parallel programming model
Krogh et al. Reducing Locking Issues
Traue Fine-grained Transactions for NVRAM
Ichii et al. Hardware Transactional Memory with Delayed-Committing
Ichii et al. A Lazy-Updating Snoop Cache Protocol for Transactional Memory
Kamakoti et al. Thread Synchronization: From Mutual Exclusion to Transactional Memory
JPH0683702A (ja) データ転送及びデータ除去のための制御方法並びにコンピュータ・システム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100512

Termination date: 20210930

CF01 Termination of patent right due to non-payment of annual fee