CN101889266A - 事务存储器中的并行嵌套事务 - Google Patents
事务存储器中的并行嵌套事务 Download PDFInfo
- Publication number
- CN101889266A CN101889266A CN2008801073002A CN200880107300A CN101889266A CN 101889266 A CN101889266 A CN 101889266A CN 2008801073002 A CN2008801073002 A CN 2008801073002A CN 200880107300 A CN200880107300 A CN 200880107300A CN 101889266 A CN101889266 A CN 101889266A
- Authority
- CN
- China
- Prior art keywords
- affairs
- lock
- write
- nested transactions
- father
- 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.)
- Granted
Links
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
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2329—Optimistic concurrency control using versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了用于支持事务存储器系统中的并行嵌套事务的各种技术和方法。为单个父事务创建多个封闭嵌套事务,并且这些封闭嵌套事务作为并行嵌套事务来并发执行。使用各种技术来确保对父事务之外的其他事务隐藏并行嵌套事务的影响直到该父事务提交。例如,就并行嵌套事务使用版本化写锁。当事务存储器字从写锁变为版本化写锁时,在全局版本化写锁映射中形成一条目以存储指向该版本化写锁所替换的写日志条目的指针。当在事务处理期间遇到该版本化写锁时,咨询全局版本化写锁映射以便将该版本化写锁转换成指向写日志条目的指针。
Description
背景
软件事务存储器(STM)是类似于数据库事务的、用于在并发计算中控制对共享存储器的访问的并发控制机制。事务存储器的上下文中的事务是对共享存储器执行一系列读取和写入的一段代码。换言之,事务访问一个或多个对象中的数据。事务存储器的上下文中的对象是作为一个实体来锁定的一组连接的存储单元。该上下文中的对象也可能是静态变量,或一组这样的变量,或者该对象可能是一组高速缓存线。
STM用作传统锁定机制的替换。STM允许更简单地编写并发程序。事务指定应当如同其隔离执行一样地执行的代码序列。这一隔离错觉可以通过对象的细粒度锁定,以及通过以在发现事务与某一其它事务相冲突的情况下允许回退该事务的副作用的模式执行来实现。如果对于数据访问所生成的代码被修改成包括对这些锁定和回退机制的支持,则可以说该访问被“事务化”。
事务可以进行嵌套,并且可被分类为开放或封闭嵌套。如果一线程当前正在执行一事务并且到达一新原子块的开头,则该原子块作为当前执行的父事务的封闭嵌套子事务来执行。该嵌套事务与封闭事务在同一隔离边界内执行,并且就像封闭事务中所访问的其他存储器那样,嵌套事务的影响将只在该封闭事务提交时变得可见。换言之,有效地挂起父事务,并且允许封闭嵌套事务运行至在继续父事务中的处理之前完成。在嵌套事务回退时,其临时影响被撤消并且父事务的状态恢复到该嵌套事务开始的点处。
给定线程正在执行的“最外面的”事务是不嵌套的;称之为顶层事务。该顶层事务必须原子地执行,因此嵌套事务变成其一部分。如果某些抽象A和B各自具有即使在由并发线程使用时它们也想要维护的内部表示不变量,则可能引发嵌套,并且这些抽象由此在实现其方法时使用原子块以确保并发访问不违反这些不变量。现在假设某一更高级的抽象C在其实现时使用A和B的实例,并且具有使这些A和B实例相关的某些不变量。C的方法可能使用事务来确保不违反该不变量。如果在C的事务内部使用A和B方法,则A和B方法中的事务将进行嵌套(在这种情况下)。
现有事务存储器系统不允许将在一个事务的隔离边界内执行的工作分布在多个并发执行线程之间。在现有系统中,事务只可具有一个嵌套子事务。这些系统的语义简单地不允许事务内的这样的并行性,并且一次执行不止一个嵌套事务的尝试将导致嵌套事务日志条目在父事务的日志中无序混合和其他错误,以及用于提供隔离错觉的基本的底层细粒度锁定协议的崩溃。
概述
公开了用于支持事务存储器系统中的并行嵌套事务的各种技术和方法。为单个父事务创建多个封闭嵌套事务,并且将这些封闭嵌套事务作为并行嵌套事务来并发执行。使用各种技术来确保对父事务之外的其他事务隐藏并行嵌套事务的影响直到该父事务提交。
在一个实现中,就并行嵌套事务使用版本化写锁。当事务存储器字从写锁变为版本化写锁时,在全局版本化写锁映射中形成一条目以存储指向该版本化写锁所替换的写日志条目的指针。当在事务处理期间遇到该版本化写锁时,咨询全局版本化写锁映射以便将该版本化写锁转换成指向写日志条目的指针。
在另一实现中,对于并行事务支持释放重复写锁以便回退。在并行嵌套事务的回退处理期间,遇到表示写锁的第一写日志条目。如果该写锁被确定为是重复的,则获取全局锁并使用该全局锁来同步对全局版本化写锁映射的访问。
在又一实现中,对并行嵌套事务支持乐观读取确认。在乐观读取确认期间,如果版本化写锁指示来自兄弟并行嵌套事务的冲突,则咨询信息以确定是否应破坏并行嵌套事务。在一个实现中,该信息被包含在版本化写锁和全局版本化写锁映射中。
在又一其他实现中,对并行嵌套事务支持写锁获取。在试图获取并行嵌套事务的写锁时,读取并分析事务存储器字以确定是否能够获取该写锁。如果事务存储器字指示版本化写锁,则访问全局版本化写锁映射以取回指向第一写日志条目的写日志条目指针。
在又一实现中,对并行嵌套事务支持悲观读取。为并行嵌套事务创建悲观重复检测数据结构。将对应于并行嵌套事务中的每一悲观读取的条目形成到该数据结构中。在提交并行嵌套事务时,将新的悲观读锁传递给直接父事务,并且在兄弟事务之间同步的情况下将一条目形成到直接父事务的单独的悲观重复检测数据结构中。该悲观重复检测数据结构还可用于从悲观读取到写锁的升级。
在另一实现中,对并行嵌套事务支持重试操作。在作为并行嵌套事务或并行嵌套事务的子事务的事务执行重试时,为该重试注册事务读取集合。当决定将该重试传播通过该事务的并行嵌套父事务时,该读取集合保持注册并成为父事务读取集合的一部分。
在又一实现中,写中止补偿映射可以就并行嵌套事务使用以检测和处理错误破坏的父事务。当在回退期间释放并行嵌套事务的新写锁时,创建写中止补偿映射。在并行嵌套事务回退时,在写中止补偿映射中创建对应于所释放的每一个新写锁的条目。
提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附图简述
图1是一个实现的计算机系统的图示。
图2是在图1的计算机系统上操作的一个实现的事务存储器应用程序的图示。
图3是图1的系统的一个实现的处理流程图,其示出允许在单个父事务下嵌套多个并行事务所涉及的各阶段。
图4是图1的系统的一个实现的处理流程图,其示出在提前知道并行嵌套事务的数量时分配父日志中的并行嵌套事务条目所涉及的各阶段。
图5是图1的系统的一个实现的处理流程图,其示出在不提前知道并行嵌套事务的数量时分配父日志中的并行嵌套事务条目所涉及的各阶段。
图6示出了一个实现的事务存储器字的示例结构。
图7是图1的系统的一个实现的处理流程图,其示出使用版本化写锁来确保并行嵌套事务适当地嵌套和合成所涉及的各阶段。
图8和9是图1的系统的一个实现的处理流程图,其示出适当地处理嵌套事务获取写锁所涉及的各阶段。
图10是图1的系统的一个实现的处理流程图,其示出适当地处理嵌套事务释放任一种写锁以便提交所涉及的各阶段。
图11是图1的系统的一个实现的处理流程图,其示出适当地处理嵌套事务释放新写锁以便回退所涉及的各阶段。
图12是图1的系统的一个实现的处理流程图,其示出适当地处理嵌套事务释放重复写锁以便回退所涉及的各阶段。
图13是图1的系统的一个实现的处理流程图,其示出执行乐观读锁获取。
图14A-14D是图1的系统的一个实现的处理流程图,这些流程图示出执行乐观读取确认。
图15是图1的系统的一个实现的处理流程图,其示出确保对并行嵌套事务的正确的悲观读取操作所涉及的各阶段。
图16是图1的系统的一个实现的处理流程图,其示出将悲观读锁升级到写锁所涉及的各阶段。
图17A-17D是图1的系统的一个实现的处理流程图,这些流程图示出执行悲观读锁获取。
图18是图1的系统的一个实现的处理流程图,其示出就并行嵌套事务允许重试正确地工作所涉及的各阶段。
图19是图1的系统的一个实现的处理流程图,其示出就并行嵌套事务使用写中止补偿映射所涉及的各阶段。
详细描述
此处的技术和方法可以在事务存储器系统的一般上下文中描述,但本系统也用作除此之外的其它目的。在一个实现中,此处所描述的一个或多个技术可被实现为诸如微软.NET框架等框架程序内的、或来自为开发者提供开发软件应用程序的平台的任何其它类型的程序或服务的特征。在另一实现中,此处所描述的一个或多个技术被实现为处理开发在并发环境中执行的应用程序的其它应用程序的特征。
如在背景部分中所描述的,如果嵌套事务的影响是与其包含(即,父)事务相同的隔离边界的一部分,则该嵌套事务被认为是封闭的。使用此处所描述的各种技术和方法,事务可同时具有多个封闭嵌套事务。这些封闭嵌套事务被称为“并行嵌套事务(PNT)”。单个封闭事务下的所有PNT都被称为该事务的“并行子事务”,并且该封闭事务被称为“并行父事务”。该并行父事务及其子事务被称为“并行嵌套”。PNT的“兄弟”是封闭(处在某一嵌套级)在同一并行父事务中的另一PNT。在一个实现中,每一个PNT与普通封闭嵌套事务非常像地执行:其影响被隔离在封闭事务内并且只在并行父事务提交时才在并行嵌套之外变得可见。然而,每一个PNT都与其兄弟隔离,就像它是顶层事务那样。PNT的影响只在它提交时才变得对其兄弟可见。
如图1所示,用于实现本系统的一个或多个部分的示例性计算机系统包括诸如计算设备100等计算设备。在其最基本的配置中,计算设备100通常包括至少一个处理单元102和存储器104。取决于计算设备的确切配置和类型,存储器104可以是易失性的(如RAM)、非易失性的(如ROM、闪存等)或是两者的某种组合。该最基本配置在图1中由虚线106来示出。
另外,设备100还可具有附加特征/功能。例如,设备100还可包含附加存储(可移动和/或不可移动),包括但不限于磁盘、光盘或磁带。这样的附加存储在图1中由可移动存储108和不可移动存储110示出。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。存储器104、可移动存储108和不可移动存储110都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或者可用于存储所需信息并且可由设备100访问的任何其它介质。任何这样的计算机存储介质都可以是设备100的一部分。
计算设备100包括允许计算设备100与其它计算机/应用程序115进行通信的一个或多个通信连接114。设备100还可以具有诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等输入设备112。还可以包括诸如显示器、扬声器、打印机等输出设备111。这些设备在本领域中公知且无需在此处详细讨论。在一个实现中,计算设备100包括事务存储器应用程序200。事务存储器应用程序200将在图2中更详细地描述。
现在转向图2并继续参考图1,示出了在计算设备100上操作的事务存储器应用程序200。事务存储器应用程序200是驻留在计算设备100上的应用程序中的一个。然而,可以理解,事务存储器应用程序200可另选地或另外地被具体化为一个或多个计算机上的计算机可执行指令和/或与图1所示的不同变型。另选地或另外地,事务存储器应用程序200的一个或多个部分可以是系统存储器104的一部分、可以在其它计算机和/或应用程序115上、或可以是计算机软件领域的技术人员能想到的其它此类变型。
事务存储器应用程序200包括负责执行在此描述的技术中的部分或全部的程序逻辑204。程序逻辑204包括用于允许在单个父事务下嵌套多个并行事务的逻辑206(如以下参考图3所描述的);用于允许并行嵌套事务正确地与其他封闭嵌套事务嵌套和合成的逻辑208(如以下参考图7-14所描述的);用于允许并行嵌套事务在具有独立日志的情况下执行并且在低争用的情况下将锁所有权和日志传递给父事务的逻辑210(如以下参考图4-5所描述的);用于启用并行嵌套事务以便在同一事务中进行乐观和悲观读取的逻辑212(如以下参考图15-17所描述的);用于启用并行嵌套事务来进行就地或缓冲写入的逻辑214(如以下参考图7、11和12所描述的);用于就并行嵌套事务允许重试正确地工作的逻辑216(如以下参考图18所描述的);用于就并行嵌套事务允许写中止补偿映射工作的逻辑218(如以下参考图19所描述的);以及用于操作应用程序的其他逻辑220。
现在转向图3-19并继续参考图1-2,更详细地描述了用于实现事务存储器应用程序200的一个或多个实现的各阶段。在某些实现中,图3-19的过程至少部分地在计算设备100的操作逻辑中实现。图3示出了允许在单个父事务下嵌套多个并行事务所涉及的各阶段的一个实现。该过程开始于起始点240,在那里提供将创建准备好执行的一组并行嵌套事务的功能或其他特征(阶段242)。全部一次性或惰性地在需要时为给定父事务创建一组并行嵌套事务(阶段244)。使用特殊逻辑来事务性地执行、提交、回退、重新执行和重试并行嵌套事务(阶段246)。当并行嵌套事务完成时,必须在该并行嵌套事务及其所有并行兄弟都已完成后破坏该事务(阶段248)。该过程在结束点250处结束。
图4和5示出了如何分配父日志中的并行嵌套事务条目。并行嵌套事务能够在具有独立日志的情况下执行并且在根据图4和5所描述的分配技术中的一种来分配后在低争用的情况下将锁所有权、日志和其他数据传递给父事务。现在转向图4,示出了用于在提前知道并行嵌套事务的数量时分配父日志中的并行嵌套事务条目的一个实现。该过程开始于起始点270,在那里因为提前知道并行嵌套事务的数量,所以在任何并行嵌套事务(PNT)开始执行之前为嵌套中的每一个PNT创建一个并行嵌套事务条目(PNTE)(阶段272)。当在回退或提交处理期间需要时,并行嵌套事务在进行最小同步的情况下从父事务中取回并行嵌套事务条目。。在一个实现中,预先分配的PNTE被保持在父事务中的阵列中。PNT可通过对下一可用并行嵌套事务索引的简单的比较和交换操作来获取指向下一可用PNTE的指针(阶段274)。比较和交换(CAS)是原子地执行给定值和给定存储单元的内容之间的比较并且如果它们匹配,则将给定的新值存储在该存储单元中的操作。如果它们不匹配,则不采取动作。存在许多用于在许多不同的CPU和操作系统上执行CAS操作的方法,一些是硬件,一些是软件。如此处所使用的,术语CAS意指一般覆盖所有这些方法。
并行嵌套事务用信息来填充父日志中的并行嵌套事务条目(阶段276)。在一个实现中,该信息包括指向子事务的日志的指针和指向子事务的写中止补偿映射和/或悲观读取对象表(在适当时)的指针。该写中止补偿映射在图19中更详细地描述。悲观读取对象表在图15中更详细地描述。该过程在结束点278处结束。
图5示出了在不提前知道并行嵌套事务的数量时分配父日志中的并行嵌套事务条目所涉及的各阶段的一个实现。该过程开始于起始点290,在那里在创建并行嵌套事务时为新并行嵌套事务条目分配父日志中的空间(阶段292)。当并行嵌套事务提交时,在父日志中创建并行嵌套事务条目(阶段294)。同步对父日志的访问以移动该父事务的当前日志点以便获取对并行嵌套事务条目的下一可用空间的访问(阶段296)。并行嵌套事务用信息来填充父日志中的并行嵌套事务条目(阶段298)。在一个实现中,该信息包括指向子事务的日志的指针和指向子事务的写中止补偿映射和/或悲观读取对象表(在适当时)的指针。该写中止补偿映射在图19中更详细地描述。悲观读取对象表在图15中更详细地描述。该过程在结束点300处结束。
图6示出了一个实现的事务存储器字(TMW)的示例结构320,该结构具有用于标记各种锁定状态的各个位322。在一个实现中,TMW与每一对象相关联。在一个实现中,使用单个硬件字表示;但允许存储锁定信息的对TMW的众多其他表示是可能的。在此处所描述的示例结构中,TMW可指示相关联的对象是写锁定的或者不是写锁定的。TMW中的一个位专用于该区别。如果TMW不是写锁定的,则它包含被称为版本/计数对324(V/C对)的版本号和悲观读取者计数。在该状态中,TMW中的某数量的位记录对象的版本号,而其余位表示当前保持该对象上的悲观读锁的事务数量的计数。当事务保持对象中的写锁时,该锁可具有两种类型(通过TMW中的另一位来进行区分)。通常,写锁定的TMW中的其余位包含指向锁定事务的写日志中的条目326;该写日志条目(WLE)包含关于对象和锁定的其他信息。例如,WLE可能包含在获取写锁之前的对象的TMW值;在另一实现中,该WLE可能包含对其作出未提交修改的对象的“影子副本”。在另一状态中,写锁定的TMW包含版本化写锁(VWL)。此处,TMW中的其余位(被称为VWL[V/C]328)表示在该TMW仍旧是写锁定时的对象的版本号以及悲观读取者的计数,这类似于V/C对。
在继续至关于如何使用版本化写锁的更多详细讨论之前,让我们首先探查将帮助示出对版本化写锁(VWL)的需求的示例。假设存在就地STM系统,以及获取对对象O1的写锁的顶层事务Tx1。O1的TMW被设为WLE1,其是Tx1的日志中表示Tx1的对O1的写锁的写日志条目。现在,假设引入两个PNT,即Tx2和Tx3,且Tx1作为父并行事务。Tx2和Tx3是并行嵌套中的兄弟事务并且并发执行。Tx2和Tx3可访问被Tx1锁定的数据,但它们必须彼此隔离。因此,虽然Tx2和Tx3都可访问O1,但它们必须不被允许同时这样做。现在,假设Tx3希望从O1读取。它执行乐观读操作,从而在其日志中创建将O1的值记录为WLE1的乐观读日志条目。接着,假设Tx2对O1写入。Tx2将获取对O1的写锁,并将O1的TMW设为WLE2,这作为Tx2的日志中的写日志条目。WLE2记录WLE1是O1的TMW的前一值。Tx2现在可对O1的各字段写入,并且以就地写入的方式这样做。当Tx2继续执行时,它读取包含来自Tx2的未提交写入的O1的各字段。Tx3通过定义来破坏并且应当回退。然而,如果出于任何原因Tx2在Tx3试图提交之前回退,则Tx2必须释放其对O1的写锁。为此,Tx2通常将O1的TMW设回为WLE1。但现在当Tx3试图提交时,它将看到O1的TMW包含在Tx3首先读取O1时所设置的相同的值。在这种情况下,Tx3将表现为有效,并且将无法识别它从Tx2读取了未提交的写入。因此,当Tx2回退时它必须将O1的TMW设为除WLE1之外的某个值,并且它必须以确保该系统中的其他事务(PNT兄弟或其他顶层事务)识别出O1仍旧被Tx1写锁定的方式这样做。这通过将O1的TMW设为版本化写锁(VWL)并在全局版本化写锁映射(VWLM)中形成指示Tx1持有对O1的写锁的条目来实现。VWL和VWLM的细节和用途在下文中描述。该示例示出了其中VWL是必需的一种情况。然而,本领域的普通技术人员将会理解,存在众多其中可使用VWL的情况,如随着在本章节的其余部分中详细描述用于锁获取和释放的各过程将变得显而易见的。
图7示出了使用版本化写锁来确保并行嵌套事务适当地嵌套和合成所涉及的各阶段的一个实现。该过程开始于起始点340,在那里提供可以是版本/计数对、写日志条目(WLE)或版本化写锁(VWL)中的一个的事务存储器字(阶段342)。当事务存储器字(TMW)变为版本化写锁时,在全局版本化写锁映射(VWLM)中形成涉及版本化写锁所替换的旧写日志条目指针的条目,该条目通过对象地址来索引(阶段344)。当看到版本化写锁时,咨询全局版本化写锁映射以便将该版本化写锁转换成写日志条目指针,并且对写日志条目指针进行普通处理(阶段346)。无论是保持在V/C对还是版本化写锁中,事务存储器字中的版本号在提交或中止处理期间都始终递增(阶段348)。就在将版本化写锁放置在事务存储器字中之前在全局版本化写锁映射中形成一条目,并且只要该事务存储器字包含该版本化写锁,该条目就保留(阶段350)。在任何时刻,事务都必须获取访问全局版本化写锁映射的全局锁(阶段352)。该过程在结束点354处结束。
图8和9示出了适当地处理嵌套事务获取写锁所涉及的各阶段的一个实现。新写锁是在事务嵌套中首次获取的锁,而重复写锁是嵌套事务可获取的对先辈事务当前已写锁定的对象的写锁。该过程开始于起始点370,在那里嵌套事务读取事务存储器字(阶段372)。如果该事务存储器字不是V/C对(判定点374),则该过程继续至在下一节中描述的图9阶段404。如果事务存储器字是V/C对且C(悲观读取者的计数)大于0(判定点375),则执行图16的过程以处理悲观读取到写锁的升级。如果事务存储器字是V/C对且C等于0(判定点375),则这指示该事务存储器字未被悲观地锁定以供任何事务读取或写入,因此允许获取新写锁。为此,该系统形成新的写日志条目以记录版本号并将该写日志条目附加到该事务的写日志(阶段376)。然后执行比较和交换以便将事务存储器字值从V/C对切换至写日志条目指针(例如,WLE*)(阶段378)。如果比较和交换成功(判定点380),则成功获取锁(阶段382)。如果比较和交换不成功(判定点380),则存在冲突(阶段384)并且未成功获取锁。该过程在结束点386处结束。
继续至图9,如果TMW不是V/C对(图8上的判定点374),并且如果事务存储器字不是版本化写锁(判定点404),则它是指向WLEA的WLE*并且该过程在阶段408处继续。如果事务存储器字是版本化写锁(判定点404),则使用全局版本写锁映射来取回指向WLEA的底层WLE*(阶段406)。如果WLEA不被任何先辈事务所拥有(判定点408),则存在冲突(阶段410)并且该过程在结束点420处结束。如果WLEA被一先辈拥有(判定点408),则形成新WLEB以记录WLEA并且将WLEB附加到事务的写日志(阶段412)。然后执行比较和交换以便将事务存储器字值从WLEA*切换至WLEB*(阶段414)。如果比较和交换成功(判定点416),则成功获取锁(阶段418)。如果比较和交换不成功(判定点416),则存在冲突(阶段410)并且未成功获取锁。该过程在结束点420处结束。
图10示出了适当地处理嵌套事务释放任一种写锁以便提交所涉及的各阶段的一个实现。该过程开始于起始点440,在那里在提交处理期间在事务写日志中遇到WLEX(阶段442)。简单地将写锁的所有权和WLEX传递给直接父事务(阶段444)。通过在提交时将所有权从并行嵌套事务传递给父事务,其他兄弟事务现在发现它们现在能够为自己获取写锁。同样,获取重复写锁的动作防止兄弟事务能够为它们自己获取写锁。该过程在结束点446处结束。
图11示出了适当地处理嵌套事务释放新写锁以便回退所涉及的各阶段的一个实现。该过程开始于起始点460,在那里在回退处理期间在事务写日志中遇到WLEX(阶段462)。系统检查以查看WLEX表示什么类型的写锁(阶段464)。如果WLEX不表示新写锁(判定点466),则执行用于释放重复写锁的逻辑(阶段471),如在图12中参考一个实现所描述的。如果WLEX表示新写锁(判定点466),则取回存储在WLEX中的前一版本号(阶段468)。从WLEX中取回事务存储器字的位置并且使用普通存储操作来释放写锁以便将事务存储器字值改为适用于该系统类型(就地或缓冲)的V/C对(阶段470)。在缓冲系统的一个实现中,将事务存储器字值改回到表示原始版本号。在就地系统的一个实现中,则将事务存储器字值改为表示原始版本号加一。该过程在结束点472处结束。
图12示出了适当地处理嵌套事务释放重复写锁以便回退所涉及的各阶段的一个实现。在一个实现中,该过程仅用于在回退时递增对象的版本号的系统,即就地系统。在缓冲系统的某些实现中,不在回退期间增加版本号。在这些系统中,用于释放新写锁的过程(图11)可用于释放重复写锁。该过程开始于起始点490,在那里在回退处理期间在事务写日志中遇到WLEX(阶段492)。系统检查以查看WLEX表示什么类型的写锁(阶段494)。如果锁不是重复写锁(判定点496),则执行用于释放新写锁的逻辑(阶段511),如在图11中参考一个实现所描述的。如果锁是重复写锁,则获取用于同步对全局版本化写锁映射的访问的全局锁(阶段498)。从WLEX中取回原始写日志条目指针WLEY*和事务存储器字的位置(阶段500)。形成对应于涉及WLEY的对象的新的全局版本化写锁映射条目(阶段502)。然后释放用于同步对全局版本化写锁映射的访问的全局锁(阶段504)。从WLEX中取回原始版本号(阶段506),并且形成作为原始版本号+1的新版本化写锁值(阶段508)。使用普通存储操作来释放写锁以便将事务存储器字值从WLEX*改为新版本化写锁(阶段510)。该过程在结束点512处结束。
图13是图1的系统的一个实现的处理流程图,其示出执行乐观读锁获取。该过程开始于起始点530,在那里在事务执行对对象的乐观读取时读取对象的当前TMW值(阶段532)。创建乐观读日志条目(阶段534)并且用当前TMW值和该TMW的位置来填充该读日志条目(阶段536)。将读日志条目附加到事务的读日志(阶段538)。在一个实现中,该过程对于以下所有类型的事务都是相同的:顶层、简单嵌套或者并行嵌套事务。该过程在结束点540处结束。
图14A-14D是图1的系统的一个实现的处理流程图,这些流程图示出执行乐观读取确认。该过程开始于起始点560,在那里在试图提交事务或以其他方式确定该事务是否有效时考虑该事务的读日志中的每一个乐观读日志条目(阶段562)。从读日志条目中取回原始TMW值(阶段564),并且读取当前TMW值(阶段566)。注意,在每一种情况下,如果系统正在使用写中止补偿映射(WACM)(在图19中描述),则只要在两个版本号中存在差异,就咨询当前聚集WACM(在确认或提交处理期间形成)。如果原始TMW是V/C对(判定点568),则执行图14B中所描述的过程。如果原始TMW是WLE*(判定点570),则执行图14C中所描述的过程。如果原始TMW既不是V/C对也不是WLE*,则该原始TMW是VWL(阶段572),并且执行图14D的过程。让我们更详细地看一下这些情况中的每一种。
图14B涵盖了关于当原始TMW是V/C对时(判定点568)的一个实现中的在乐观读取确认期间执行的示例性过程的更多细节。如果当前TMW是V/C对(判定点590),并且原始TMW和当前TMW中的版本号匹配(判定点592),则事务有效(阶段594)。如果当前TMW是V/C对(判定点590),并且原始TMW和当前TMW中的版本号不匹配(判定点592),则事务无效(阶段596)。
如果当前TMW改为是WLE*(判定点598),并且如果事务拥有WLE,并且WLE中的已保存的版本号匹配旧TMW(判定点600),则该事务有效(阶段594)。如果当前TMW不是V/C对(判定点590),并且当前TMW不是WLE*(判定点598),则TMW是VWL(阶段602)。使用已锁定对象的地址来在VWLM中进行同步查找。如果不存在VWLM条目(判定点604),则事务无效(阶段596)。如果存在条目(判定点604),则使用该VWLM条目来取回VWL所替换的WLE*。如果事务拥有WLE,并且WLE中的已保存的版本号匹配旧TMW(判定点606),则事务有效(阶段594)。否则,事务无效(阶段596)。该过程在结束点608处结束。
现在转向图14C,示出了当原始TMW是WLE*时的一个实现中的在乐观读取确认期间执行的示例性过程。如果当前TMW是V/C对(判定点620),则当前事务无效(阶段630)。如果当前TMW不是V/C对(判定点620),而改为是WLE*(判定点624),则系统检查以查看原始和当前TMW是否匹配,以及当前事务或任何先辈事务是否拥有WLE(判定点626)。如果满足这两个准则,则事务有效(阶段628)。否则,事务无效(阶段630)。
如果当前TMW不是V/C对(判定点620),并且不是WLE*(判定点624),则当前TMW是VWL(阶段632)。如果该事务或任何先辈事务拥有来自原始TMW的WLE,并且如果保存在该WLE中的版本号匹配VWL中的版本号(判定点634),则事务有效(628)。否则,事务无效(阶段630)。该过程在结束点636处结束。
现在转向图14D,示出了当原始TMW是VWL时的一个实现中的在乐观读取确认期间执行的示例性过程。如果当前TMW是V/C对(判定点650),则事务由于冲突而无效(阶段660)。如果当前TMW不是V/C对(判定点650),而改为是WLE*(判定点654),则系统检查以查看当前事务或任何先辈事务是否拥有WLE,以及存储在该WLE中的版本号是否匹配VWL中的版本(判定点656)。如果满足这两个准则,则事务有效(阶段658)。否则,事务无效(阶段660)。
如果当前TMW不是V/C对(判定点650),并且当前TMW不是WLE*(判定点654),则当前TMW是VWL(阶段662)。在VWLM中执行查找以便将VWL转换成WLE*(阶段664)。如果未找到条目(判定点666),则事务无效(阶段660)。否则,如果找到条目(判定点666),则系统检查以查看原始和当前VWL的版本号是否匹配,以及该事务或任何先辈事务是否拥有在VWLM中找到的对应于TMW的WLE(判定点668)。如果满足这两个准则,则事务有效(阶段658)。否则,事务无效(阶段660)。该过程在结束点670处结束。
具有简单的封闭嵌套事务的系统中的正确的悲观读取操作需要使用被称为悲观读取对象表(PROT)的重复检测数据结构。每一个顶层事务在事务开始时或者惰性地在首次悲观读取操作时创建PROT。当该事务或任何后代事务试图获取对一对象的悲观读锁时,该事务咨询PROT以确定是否已经获取悲观读锁。如果该对象在PROT中,则该对象已被事务嵌套读锁定。如果该对象不在PROT中,并且如果该对象当前未被另一事务写锁定,则使用CAS操作递增存储在该对象的TMW中的WC对中的C(悲观读取者的计数)来获取悲观读锁。如果该CAS操作成功,则在PROT中形成一条目以记录该嵌套现在已锁定该对象以便进行悲观读取的事实。当释放悲观读锁时,在顶层提交或回退期间,递减C(再次用CAS),并且移除PROT条目。让我们现在看一下如何就并行嵌套事务使用PROT。
图15示出了确保对于并行嵌套事务的正确的悲观读取操作所涉及的各阶段的一个实现。该过程开始于起始点690,在那里并行嵌套事务在初始化期间,或者惰性地在并行嵌套事务获取第一个悲观读锁期间创建悲观重复检测数据结构(被称为PROT,如上所述)(阶段692)。在事务试图将悲观读锁升级到写锁时,系统使用该数据结构。将对应于并行嵌套事务或任何后续子事务所作出的对对象的首次悲观读取的条目形成到PROT中(阶段694)。在提交时,将新的悲观读锁传递给直接父事务,并且形成适当的父PROT条目(阶段696)。释放重复读锁以允许兄弟事务在并行子事务提交后获取写访问(阶段698)。系统然后破坏与重复的悲观读锁相关联的日志条目(阶段700)。在提交后,可以用其余事务来破坏子事务的PROT(阶段702)。该过程在结束点704处结束。
图16示出了将悲观读锁升级到写锁所涉及的各阶段的一个实现。该过程开始于起始点720,在那里发现所需要的对对象的写锁已经对悲观读取开放(阶段722)。查询子事务的PROT(阶段724)以查看读取者的当前计数并且决定当前事务是否能够计入(account for)所有这些读取(阶段726)。如果结果计入所有悲观读取者,则子事务可试图照常升级至写锁(阶段728)。如果仍旧存在未计入的读取者,则子事务必须查询所有先辈事务的PROT以确定其是否可以升级到写锁(阶段730)。如果任何先辈事务是并行父事务,则必须考虑该并行父事务的PROT以及已经提交的任何并行兄弟事务的PROT。这些兄弟事务的PROT经由PNTE保持在并行父事务的日志中。需要适当的同步来确保存在对这些兄弟事务的PROT的无竞争访问。该同步通过确保PNT不在将其PROT放置在相关联的PNTE中后访问该PROT来实现。如果先辈事务和任何已提交的并行兄弟事务补偿额外的悲观读取者,则子事务可尝试照常升级至写锁(阶段732)。在一个实现中,升级如下实现。形成新的写日志并将其添加到PNT的日志。将当前TMW值放置在WLE中以便在回退和提交处理期间使用。如果当前TMW值是VWL,则在进行适当的同步的情况下使用VWLM来首先将VWL转换成WLE*。使用CAS来获取写锁。如果CAS成功,则升级奏效,否则存在冲突。该过程在结束点734处结束。
现在是时候描述图17A-17D所示的用于在处于并行嵌套事务中时执行悲观读锁获取的示例性过程。该过程开始于17A,在那里读取当前TMW(阶段752)。如果TMW是V/C对(判定点754),则执行图17B中所描述的过程。如果TMW是WLE*(判定点756),则执行图17C中所描述的过程。如果TMW不是V/C对(判定点754),并且不是WLE*(判定点756),则TMW是VWL(阶段758),并且执行图17D中所描述的过程。现在将更详细地看一下这些情况中的每一种。
现在转向图17B,如果TMW是V/C对,则咨询事务的PROT以确定该事务是否已经持有对对象的悲观读锁(判定点769)。如果存在PROT条目,则该过程在结束点776处结束。如果不存在PROT条目(判定点769),在使用比较和交换(CAS)来递增悲观读取者的计数C(阶段770)。如果CAS成功(判定点772),则获取锁并且形成PROT条目(阶段774)。如果CAS失败(判定点772),则重试,这通过参考图17A的阶段752示出。
如图17C所示,如果TMW是WLE*,并且当前事务或任何先辈事务拥有该WLE(判定点790),则系统确定拥有该WLE的事务在并行父事务之下还是之上(判定点792)。如果拥有该WLE的事务在并行父事务之下(判定点792),则悲观读取成功(阶段794)。如果拥有该WLE的事务在并行父事务之上(判定点792),则系统将TMW切换至VWL以便与兄弟事务进行协调。为此,在进行适当同步的情况下形成VWLM条目以记录WLE*(阶段796),并且从存储在VWL中的版本号中形成VWL且将C(悲观读取者的计数)设为1(阶段798)。用CAS来在TMW中设置新VWL(阶段800)。如果CAS成功,则形成PROT条目并且获取悲观读锁(阶段806)。如果CAS不成功,则移除VWLM条目(阶段804),并且通过返回到图17A的阶段752来重试。该过程在结束点810处结束。
如图17D所示,如果TMW是VWL,则在进行适当同步的情况下经由VWLM将VWL转换成WLE*(阶段820)。如果该事务或任何先辈事务拥有该WLE(判定点822),则使用CAS来递增TMW中的VWL中的C(悲观读取者的计数)(阶段824)。如果CAS成功(判定点826),则形成PROT条目并且获取锁。如果CAS失败,则通过继续至图17A的阶段752来重试。如果该事务或任何先辈事务不拥有该WLE(判定点822),则存在冲突(阶段830)。该过程在结束点832处结束。
图18示出了就并行嵌套事务允许重试正确地工作所涉及的各阶段的一个实现。在深入研究图18的细节以及讨论就并行嵌套事务允许重试工作之前,首先有必要提供关于一个实现的重试操作的某些背景信息。重试操作允许在事务之间进行基本通信。在事务执行重试操作时,回退该事务的影响并挂起执行直到该事务读取的某物改变。当检测到改变时,重新执行事务。重试操作可用于某些非常常见的数据结构,如阻塞队列。例如,事务可检查以查看队列是否为空并且如果该队列为空,则重试,或者如果该队列不为空,则移除一元素。该事务将在队列保持不变时阻塞并且在队列状态改变时重新执行,这给予了该事务另一次完成机会。
在一个实现中,在事务执行重试操作时,系统为对待重试事务的读取集合中的每一读取注册。重试事务等待读取集合中的某物已改变的通知。从释放写锁的特定事务发出等待通知。事务以两种方式中的一种知道是否需要通知。以第一种方式,如果事务存储器字在写锁获取期间包含等待者位,则在释放期间在对象等待者映射中查找事务存储器字,并发信号通知每一等待事务。以第二种方式,如果写事务在释放所有写锁后发现等待事务的全局计数大于0,则该写事务将使用事务等待者映射来确定哪些事务(如果有的话)正在等待写入位置并需要发信号通知。在每一种情况下,使用普通存储操作来释放写锁。
在另一实现中,以回退仅重试嵌套事务和等待其读取集合来开始渐进式重试操作。在等待某一特定时间或者满足某一其他条件后,执行退避过程以回退重试事务的直接父事务,从而增加原始等待集合的大小。重复该退避过程直到回退最顶层的父事务,以便增加对每一个下一父事务的附加等待。该聚集等待集合与最顶层的父事务相关联并且任何通知都将导致重新执行该最顶层的父事务。
现在参考图18,现在将讨论对如何能够就并行嵌套事务使用重试的解释。该过程开始于起始点850,当并行嵌套事务或任何顺序后代执行重试时,系统照常为重试注册事务的读取集合(阶段852)。该系统包括用于确定在将重试操作扩展成包括事务的先辈事务中的某一子集之前重试事务应等待多久的试探法(阶段854)。调整这些对于并行嵌套事务的试探法并允许延长的等待时间,只要其他并行兄弟事务是活动的。如果超出该延长的等待时间,则将重试操作扩展成包括父事务(阶段856)。在进一步传播之前考虑兄弟事务的状态(阶段858)。当决定将重试传播通过并行嵌套父事务时,破坏所有子事务,并且然后必须在回退重试父事务之前完成(阶段860)。当决定将重试传播通过父事务时,并行嵌套事务的读取集合保持注册并成为父事务读取集合的一部分(阶段862)。注意,将已被提交到父事务中的任何并行兄弟事务的读取集合与该父事务的读取集合一起成为等待集合的一部分。被将重试传播至父事务的决定中止的任何并行兄弟事务不对该等待集合作出贡献。该过程在结束点864处结束。
图19示出了在就并行嵌套事务使用写中止补偿映射所涉及的各阶段的一个实现。在深入研究图19的细节以及如何能够就并行嵌套事务使用写中止补偿映射之前,有必要提供关于一个实现的写中止补偿映射的某些背景信息。
写中止补偿映射可用于检测使用就地写入的事务存储器系统中的嵌套子事务的遭错误破坏的父事务。写中止补偿映射(或其他存储机制)跟踪为回退的每一嵌套事务所释放的每一个锁的释放计数。嵌套事务释放写锁定的次数被记录在它们相应的写中止补偿映射中。可以在父事务的确认期间使用释放计数来确定明显无效的乐观读取实际上是否是有效的。
在一个实现中,在处理父事务日志时,所看到的对于嵌套子事务的任何写中止补偿映射被组合到父事务中的聚集的写中止补偿映射中。如果乐观读取由于版本号不匹配而未能确认,则咨询聚集的写中止补偿映射来取回对于嵌套子事务的特定变量的写锁释放计数。如果版本号差与嵌套子事务的写锁释放计数正好匹配,则乐观读取是有效的。
现在返回到图19,让我们看一下如何能够就并行嵌套事务使用写中止补偿映射。该过程开始于起始点880,在那里在回退并行嵌套事务期间释放新写锁时创建写中止补偿映射(WACM)(阶段882)。当嵌套事务回退时,它为所释放的每一个新写锁创建WACM条目(阶段884)。当在提交期间将并行嵌套事务的日志的所有权传递给父事务时,在逻辑上将WACM放在该日志的前面(阶段886)。如上所述,就像任何其他嵌套事务的WACM那样将在父事务回退期间使用这些PNT WACM,并且这些PNT WACM将确保对父事务乐观读取的正确确认(阶段888)。该过程在结束点890处结束。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。落入在此所述和/或所附权利要求所描述的实现的精神的范围内的所有等效方案、更改和修正都期望受到保护。
例如,计算机软件领域普通技术人员将认识到,此处所讨论的示例可以在一个或多个计算机上不同地组织来包括比这些示例中所描绘的更少或更多选项或特征。
Claims (15)
1.一种具有用于使得计算机执行以下步骤的计算机可执行指令的计算机可读介质,所述步骤包括:
为单个父事务创建多个封闭嵌套事务(206);以及
将所述封闭嵌套事务作为并行嵌套事务来并发执行(208)。
2.如权利要求1所述的计算机可读介质,其特征在于,所述并行嵌套事务是一次性全部创建的(244)。
3.如权利要求2所述的计算机可读介质,其特征在于,并行嵌套事务条目是在创建时在所述单个父事务的日志中为所述并行嵌套事务中的每一个创建的(272)。
4.如权利要求3所述的计算机可读介质,其特征在于,相应的并行嵌套事务条目由所述并行嵌套事务中的相应事务使用对下一个可用并行嵌套事务索引的比较和交换操作来从所述单个父事务的日志中取回(274)。
5.如权利要求1所述的计算机可读介质,其特征在于,当在提交处理期间在给定并行嵌套事务的日志中遇到锁条目时,将锁的所有权和日志条目传递给所述单个父事务(444)。
6.如权利要求1所述的计算机可读介质,其特征在于,所述并行嵌套事务是在需要时创建的(244)。
7.如权利要求6所述的计算机可读介质,其特征在于,在创建每一个相应的并行嵌套事务时,在所述单个父事务的日志中为相应的并行嵌套事务条目分配空间(292)。
8.如权利要求7所述的计算机可读介质,其特征在于,在每一个相应的并行嵌套事务提交时,在所述单个父事务的日志中创建所述相应的并行嵌套事务条目(294)。
9.如权利要求7所述的计算机可读介质,其特征在于,所述单个父事务的日志在兄弟并行嵌套事务之间同步以便访问(296)。
10.如权利要求1所述的计算机可读介质,其特征在于,还具有用于使得计算机执行以下步骤的计算机可执行指令,所述步骤包括:
对所述父事务之外的其他事务隐藏所述并行嵌套事务的影响直到所述父事务提交(208)。
11.如权利要求10所述的计算机可读介质,其特征在于,还具有用于使得计算机执行以下步骤的计算机可执行指令,所述步骤包括:
对所述父事务的其他并行嵌套事务隐藏给定并行嵌套事务的影响直到所述给定并行嵌套事务被提交至所述父事务中(444)。
12.一种用于就并行嵌套事务使用版本化写锁的方法,所述方法包括以下步骤:
当事务存储器字从写锁变为版本化写锁时,在全局版本化写锁映射中形成一条目以存储指向所述版本化写锁替换的写日志条目的指针(344);以及
当在事务处理期间遇到所述版本化写锁时,咨询所述全局版本化写锁映射以便将所述版本化写锁转换成指向所述写日志条目的指针(346)。
13.如权利要求12所述的方法,其特征在于,通过使用所述版本化写锁,并行嵌套事务能够获取和释放父事务所持有的锁以便适当地同步而不打破所述父事务的隔离边界(352)。
14.如权利要求12所述的方法,其特征在于,存储在所述事务存储器字中的版本号始终递增,无论是保持在版本计数对还是所述版本化写锁中(348)。
15.如权利要求12所述的方法,其特征在于,还包括以下步骤:
在获取悲观读取时,将所述事务存储器字切换至所述版本化写锁以便提供用于存储悲观读取者的计数的空间,且所述版本化写锁现在指示兄弟事务可能已经执行对父事务已经写锁定的对象的悲观读取(796)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210399252.7A CN102929702B (zh) | 2007-09-18 | 2008-09-16 | 事务存储器中的并行嵌套事务 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/901,647 | 2007-09-18 | ||
US11/901,647 US7890472B2 (en) | 2007-09-18 | 2007-09-18 | Parallel nested transactions in transactional memory |
PCT/US2008/076563 WO2009039118A2 (en) | 2007-09-18 | 2008-09-16 | Parallel nested transactions in transactional memory |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210399252.7A Division CN102929702B (zh) | 2007-09-18 | 2008-09-16 | 事务存储器中的并行嵌套事务 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101889266A true CN101889266A (zh) | 2010-11-17 |
CN101889266B CN101889266B (zh) | 2013-06-12 |
Family
ID=40455684
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008801073002A Active CN101889266B (zh) | 2007-09-18 | 2008-09-16 | 事务存储器中的并行嵌套事务 |
CN201210399252.7A Active CN102929702B (zh) | 2007-09-18 | 2008-09-16 | 事务存储器中的并行嵌套事务 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210399252.7A Active CN102929702B (zh) | 2007-09-18 | 2008-09-16 | 事务存储器中的并行嵌套事务 |
Country Status (8)
Country | Link |
---|---|
US (3) | US7890472B2 (zh) |
EP (1) | EP2191372B1 (zh) |
JP (1) | JP2010539609A (zh) |
CN (2) | CN101889266B (zh) |
BR (1) | BRPI0814455A2 (zh) |
HK (1) | HK1179718A1 (zh) |
TW (1) | TWI431474B (zh) |
WO (1) | WO2009039118A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714836A (zh) * | 2013-12-12 | 2015-06-17 | 国际商业机器公司 | 用于聚结内存事务的方法和系统 |
CN107667364A (zh) * | 2015-06-04 | 2018-02-06 | 微软技术许可有限责任公司 | 使用硬件事务存储器控制索引的原子更新 |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7756846B2 (en) * | 2005-07-01 | 2010-07-13 | Sap Aktiengesellschaft | Methods and systems for propagating locks through nested logical units of work |
US7962456B2 (en) * | 2007-06-27 | 2011-06-14 | Microsoft Corporation | Parallel nested transactions in transactional memory |
US7890472B2 (en) * | 2007-09-18 | 2011-02-15 | Microsoft Corporation | Parallel nested transactions in transactional memory |
US7840530B2 (en) * | 2007-09-18 | 2010-11-23 | Microsoft Corporation | Parallel nested transactions in transactional memory |
US8555016B2 (en) * | 2008-12-17 | 2013-10-08 | Intel Corporation | Unified optimistic and pessimistic concurrency control for a software transactional memory (STM) system |
US8935703B2 (en) * | 2009-12-11 | 2015-01-13 | Red Hat, Inc. | Performance counter inheritance |
US8756361B1 (en) * | 2010-10-01 | 2014-06-17 | Western Digital Technologies, Inc. | Disk drive modifying metadata cached in a circular buffer when a write operation is aborted |
US8954664B1 (en) | 2010-10-01 | 2015-02-10 | Western Digital Technologies, Inc. | Writing metadata files on a disk |
US8793429B1 (en) * | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
US8756382B1 (en) | 2011-06-30 | 2014-06-17 | Western Digital Technologies, Inc. | Method for file based shingled data storage utilizing multiple media types |
US8612706B1 (en) | 2011-12-21 | 2013-12-17 | Western Digital Technologies, Inc. | Metadata recovery in a disk drive |
US9542227B2 (en) | 2012-01-30 | 2017-01-10 | Nvidia Corporation | Parallel dynamic memory allocation using a lock-free FIFO |
US9417881B2 (en) * | 2012-01-30 | 2016-08-16 | Nvidia Corporation | Parallel dynamic memory allocation using a lock-free pop-only FIFO |
US9870384B2 (en) | 2012-03-30 | 2018-01-16 | International Business Machines Corporation | Database system transaction management |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within 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 |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US8966324B2 (en) | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9953294B2 (en) * | 2012-10-15 | 2018-04-24 | Sap Se | Enabling an in-memory transactional application |
US20150074219A1 (en) * | 2013-07-12 | 2015-03-12 | Brocade Communications Systems, Inc. | High availability networking using transactional memory |
US9348522B2 (en) | 2013-12-12 | 2016-05-24 | International Business Machines Corporation | Software indications and hints for coalescing memory transactions |
US9292337B2 (en) | 2013-12-12 | 2016-03-22 | International Business Machines Corporation | Software enabled and disabled coalescing of memory transactions |
US9348523B2 (en) | 2013-12-12 | 2016-05-24 | International Business Machines Corporation | Code optimization to enable and disable coalescing of memory transactions |
US9158573B2 (en) | 2013-12-12 | 2015-10-13 | International Business Machines Corporation | Dynamic predictor for coalescing memory transactions |
US10019476B2 (en) | 2015-05-27 | 2018-07-10 | Microsoft Technology Licensing, Llc | Multi-version data system nested transactions isolation |
WO2017095388A1 (en) * | 2015-11-30 | 2017-06-08 | Hewlett-Packard Enterprise Development LP | Managing an isolation context |
US10223268B2 (en) * | 2016-02-23 | 2019-03-05 | International Business Systems Corporation | Transactional memory system including cache versioning architecture to implement nested transactions |
US11113262B2 (en) * | 2019-04-01 | 2021-09-07 | Sap Se | Time-efficient lock release in database systems |
CN111984379B (zh) * | 2020-07-14 | 2023-04-07 | 上海金仕达软件科技股份有限公司 | 读写事务控制方法、系统、终端设备及存储介质 |
CN114661816B (zh) * | 2020-12-24 | 2023-03-24 | 金篆信科有限责任公司 | 数据同步方法、装置、电子设备、存储介质 |
CN116244041B (zh) * | 2022-12-02 | 2023-10-27 | 湖南亚信安慧科技有限公司 | 一种数据库子事务的性能优化方法 |
Family Cites Families (101)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5251318A (en) * | 1988-09-02 | 1993-10-05 | Hitachi, Ltd. | Multiprocessing system comparing information copied from extended storage before and after processing for serializing access to shared resource |
US5305196A (en) * | 1989-05-01 | 1994-04-19 | Credit Verification Corporation | Check transaction processing, database building and marketing method and system utilizing automatic check reading |
US5263155A (en) * | 1991-02-21 | 1993-11-16 | Texas Instruments Incorporated | System for selectively registering and blocking requests initiated by optimistic and pessimistic transactions respectively for shared objects based upon associated locks |
US5287501A (en) * | 1991-07-11 | 1994-02-15 | Digital Equipment Corporation | Multilevel transaction recovery in a database system which loss parent transaction undo operation upon commit of child transaction |
US5701480A (en) | 1991-10-17 | 1997-12-23 | Digital Equipment Corporation | Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing |
JPH05173988A (ja) * | 1991-12-26 | 1993-07-13 | Toshiba Corp | 分散処理方式および該分散処理に適用されるトランザクション処理方式 |
US5241675A (en) | 1992-04-09 | 1993-08-31 | Bell Communications Research, Inc. | Method for enforcing the serialization of global multidatabase transactions through committing only on consistent subtransaction serialization by the local database managers |
US5335343A (en) | 1992-07-06 | 1994-08-02 | Digital Equipment Corporation | Distributed transaction processing using two-phase commit protocol with presumed-commit without log force |
DE69429686T2 (de) * | 1993-02-25 | 2003-04-30 | Sun Microsystems Inc | Transaktionsverwaltung in objektorientiertem System |
US5687363A (en) * | 1994-03-30 | 1997-11-11 | Siemens Stromberg-Carlson | Distributed database architecture and distributed database management system for open network evolution |
US5835757A (en) * | 1994-03-30 | 1998-11-10 | Siemens Telecom Networks | Distributed database management system for servicing application requests in a telecommunications switching system |
US5764977A (en) * | 1994-03-30 | 1998-06-09 | Siemens Stromberg-Carlson | Distributed database architecture and distributed database management system for open network evolution |
US5721909A (en) * | 1994-03-30 | 1998-02-24 | Siemens Stromberg-Carlson | Distributed database architecture and distributed database management system for open network evolution |
EP0758114A4 (en) * | 1995-02-28 | 1998-08-26 | Ntt Data Tsushin Kk | COOPERATIVE DISTRIBUTED SYSTEM, NEWSPAPER PROCESSING AND RECOVERY PROCESSING IN THE SAME |
US5581729A (en) * | 1995-03-31 | 1996-12-03 | Sun Microsystems, Inc. | Parallelized coherent read and writeback transaction processing system for use in a packet switched cache coherent multiprocessor system |
US6647510B1 (en) | 1996-03-19 | 2003-11-11 | Oracle International Corporation | Method and apparatus for making available data that was locked by a dead transaction before rolling back the entire dead transaction |
GB2312766A (en) * | 1996-05-01 | 1997-11-05 | Ibm | Transactional layer for object management system |
JP3672208B2 (ja) | 1996-07-02 | 2005-07-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 階層化トランザクション処理方法 |
FR2751106B1 (fr) * | 1996-07-11 | 1999-01-08 | Alsthom Cge Alcatel | Methode de planification de transactions distribuees |
US5903891A (en) * | 1997-02-25 | 1999-05-11 | Hewlett-Packard Company | Hierarchial information processes that share intermediate data and formulate contract data |
US5878206A (en) * | 1997-03-25 | 1999-03-02 | Hewlett-Packard Company | Commit scope control in hierarchical information processes |
CA2285019A1 (en) | 1998-01-26 | 1999-07-29 | Telenor As | Database management system and method for conditional conflict serializability of transactions and for combining meta-data of varying degrees of reliability |
US5983225A (en) * | 1998-01-26 | 1999-11-09 | Telenor As | Parameterized lock management system and method for conditional conflict serializability of transactions |
US6148300A (en) * | 1998-06-19 | 2000-11-14 | Sun Microsystems, Inc. | Hybrid queue and backoff computer resource lock featuring different spin speeds corresponding to multiple-states |
US6182186B1 (en) * | 1998-06-30 | 2001-01-30 | Sun Microsystems, Inc. | Method and apparatus that utilizes lock states to lock resources |
US6295610B1 (en) * | 1998-09-17 | 2001-09-25 | Oracle Corporation | Recovering resources in parallel |
US6298478B1 (en) | 1998-12-31 | 2001-10-02 | International Business Machines Corporation | Technique for managing enterprise JavaBeans (™) which are the target of multiple concurrent and/or nested transactions |
US6457065B1 (en) * | 1999-01-05 | 2002-09-24 | International Business Machines Corporation | Transaction-scoped replication for distributed object systems |
TW429705B (en) | 1999-05-15 | 2001-04-11 | Via Tech Inc | Shared memory allocation method to improve the accessing efficiency |
JP2001216259A (ja) * | 2000-02-04 | 2001-08-10 | Hitachi Ltd | マルチプロセッサシステム及びそのトランザックション制御方法 |
US6651073B1 (en) * | 2000-05-23 | 2003-11-18 | International Business Machines Corporation | Method and apparatus for insuring database data integrity without data recovery logging |
AU7286301A (en) * | 2000-07-28 | 2002-02-13 | Xymphonic Systems As | Method, system and data structures for implementing nested databases |
US6671686B2 (en) * | 2000-11-02 | 2003-12-30 | Guy Pardon | Decentralized, distributed internet data management |
US6772154B1 (en) * | 2000-11-16 | 2004-08-03 | Sun Microsystems, Inc. | Implementation of nested databases using flexible locking mechanisms |
JP3621641B2 (ja) * | 2000-11-20 | 2005-02-16 | 株式会社東芝 | トランザクション処理の管理方法 |
US6993523B1 (en) * | 2000-12-05 | 2006-01-31 | Silicon Graphics, Inc. | System and method for maintaining and recovering data consistency in a data base page |
US6850938B1 (en) | 2001-02-08 | 2005-02-01 | Cisco Technology, Inc. | Method and apparatus providing optimistic locking of shared computer resources |
US7346632B2 (en) * | 2001-02-22 | 2008-03-18 | International Business Machines Corporation | Mechanism for executing nested transactions in an execution environment supporting flat transactions only |
JP3732113B2 (ja) | 2001-05-14 | 2006-01-05 | 株式会社八十二銀行 | トランザクション制御システム、方法及びプログラム |
US6983395B2 (en) * | 2001-05-23 | 2006-01-03 | Hewlett-Packard Development Company, L.P. | Multi-agent cooperative transaction method and system |
US6901491B2 (en) | 2001-10-22 | 2005-05-31 | Sun Microsystems, Inc. | Method and apparatus for integration of communication links with a remote direct memory access protocol |
GB0130399D0 (en) | 2001-12-19 | 2002-02-06 | Ibm | Message ordering in a messaging system |
US6754737B2 (en) * | 2001-12-24 | 2004-06-22 | Hewlett-Packard Development Company, L.P. | Method and apparatus to allow dynamic variation of ordering enforcement between transactions in a strongly ordered computer interconnect |
US6785779B2 (en) | 2002-01-09 | 2004-08-31 | International Business Machines Company | Multi-level classification method for transaction address conflicts for ensuring efficient ordering in a two-level snoopy cache architecture |
US7234076B2 (en) * | 2002-02-15 | 2007-06-19 | Sun Microsystems, Inc. | Multi-level undo of main-memory and volatile resources |
US6990503B1 (en) * | 2002-04-12 | 2006-01-24 | Ncr Corporation | Rescheduling transactions in a database system |
US9886309B2 (en) | 2002-06-28 | 2018-02-06 | Microsoft Technology Licensing, Llc | Identity-based distributed computing for device resources |
GB0215808D0 (en) * | 2002-07-09 | 2002-08-14 | Ibm | A system and method for managing transactions in a messaging system |
US8244990B2 (en) * | 2002-07-16 | 2012-08-14 | Oracle America, Inc. | Obstruction-free synchronization for shared data structures |
US7076508B2 (en) | 2002-08-12 | 2006-07-11 | International Business Machines Corporation | Method, system, and program for merging log entries from multiple recovery log files |
US7089253B2 (en) | 2002-09-13 | 2006-08-08 | Netezza Corporation | Computer method and system for concurrency control using dynamic serialization ordering |
JP2004157776A (ja) | 2002-11-06 | 2004-06-03 | Nec Corp | アプリケーションの処理方法およびシステム |
US7116011B2 (en) | 2002-12-31 | 2006-10-03 | Intel Corporation | CPU surge reduction and protection |
US6898685B2 (en) | 2003-03-25 | 2005-05-24 | Emc Corporation | Ordering data writes from a local storage device to a remote storage device |
US7289992B2 (en) * | 2003-05-01 | 2007-10-30 | International Business Machines Corporation | Method, system, and program for lock and transaction management |
US7496574B2 (en) * | 2003-05-01 | 2009-02-24 | International Business Machines Corporation | Managing locks and transactions |
US7418706B1 (en) * | 2003-05-08 | 2008-08-26 | Teradota Us, Inc. | Rescheduling table scan transactions |
US7673307B2 (en) * | 2003-05-29 | 2010-03-02 | International Business Machines Corporation | Managing transactions in a messaging system |
US7739252B2 (en) | 2003-07-14 | 2010-06-15 | Oracle America, Inc. | Read/write lock transaction manager freezing |
TW200532560A (en) | 2003-11-13 | 2005-10-01 | Qualcomm Inc | System and method for dynamically simulating devices at a computing device |
US7240054B2 (en) * | 2004-02-27 | 2007-07-03 | International Business Machines Corporation | Techniques to preserve data constraints and referential integrity in asynchronous transactional replication of relational tables |
US7574274B2 (en) | 2004-04-14 | 2009-08-11 | Nvidia Corporation | Method and system for synchronizing audio processing modules |
GB0409326D0 (en) | 2004-04-27 | 2004-06-02 | Ibm | Locker manager for managing access to shared resources |
US7428539B2 (en) | 2004-06-21 | 2008-09-23 | Microsoft Corporation | Method, system, and apparatus for managing access to a data object |
US7266571B2 (en) * | 2004-07-27 | 2007-09-04 | International Business Machines Corporation | Method and system for scheduling a partial ordered transactions for event correlation |
US7685365B2 (en) * | 2004-09-30 | 2010-03-23 | Intel Corporation | Transactional memory execution utilizing virtual memory |
ITMI20041957A1 (it) * | 2004-10-15 | 2005-01-15 | St Microelectronics Srl | Dispositivo di memoria |
US7318064B2 (en) * | 2004-10-28 | 2008-01-08 | International Business Machines Corporation | Using MD4 checksum as primary keys to link transactions across machines |
CN101069395B (zh) | 2004-11-30 | 2013-07-24 | 艾利森电话股份有限公司 | 用于共享多媒体能力分发的方法 |
US8363730B2 (en) | 2004-12-16 | 2013-01-29 | Intel Corporation | Local macroblock information buffer |
US7490215B2 (en) | 2004-12-22 | 2009-02-10 | Intel Corporation | Media memory system and method for providing concurrent memory access to a plurality of processors through separate translation table information |
US7593943B2 (en) | 2005-01-14 | 2009-09-22 | Microsoft Corporation | Method and system for synchronizing multiple user revisions to a shared object |
US7376675B2 (en) | 2005-02-18 | 2008-05-20 | International Business Machines Corporation | Simulating multi-user activity while maintaining original linear request order for asynchronous transactional events |
US7334076B2 (en) | 2005-03-08 | 2008-02-19 | Microsoft Corporation | Method and system for a guest physical address virtualization in a virtual machine environment |
US7949551B2 (en) * | 2005-04-06 | 2011-05-24 | International Business Machines Corporation | Processing of compensation scopes in workflow management systems |
US7925252B2 (en) * | 2005-04-18 | 2011-04-12 | Research In Motion Limited | Container-level transaction management system and method therefor |
US7756846B2 (en) | 2005-07-01 | 2010-07-13 | Sap Aktiengesellschaft | Methods and systems for propagating locks through nested logical units of work |
US7702686B2 (en) | 2005-07-29 | 2010-04-20 | Microsoft Corporation | Retrieving and persisting objects from/to relational databases |
US7747565B2 (en) * | 2005-12-07 | 2010-06-29 | Microsoft Corporation | Garbage collector support for transactional memory |
US20070136725A1 (en) | 2005-12-12 | 2007-06-14 | International Business Machines Corporation | System and method for optimized preemption and reservation of software locks |
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 |
US8065499B2 (en) * | 2006-02-22 | 2011-11-22 | Oracle America, Inc. | Methods and apparatus to implement parallel transactions |
US8099538B2 (en) | 2006-03-29 | 2012-01-17 | Intel Corporation | Increasing functionality of a reader-writer lock |
US7840540B2 (en) * | 2006-04-20 | 2010-11-23 | Datascout, Inc. | Surrogate hashing |
US7792805B2 (en) * | 2006-05-30 | 2010-09-07 | Oracle America, Inc. | Fine-locked transactional memory |
US7478210B2 (en) * | 2006-06-09 | 2009-01-13 | Intel Corporation | Memory reclamation with optimistic concurrency |
US7434010B2 (en) * | 2006-08-04 | 2008-10-07 | Microsoft Corporation | Combined pessimistic and optimisitic concurrency control |
US7650371B2 (en) * | 2006-12-14 | 2010-01-19 | Microsoft Corporation | Finalizable object usage in software transactions |
US7669040B2 (en) * | 2006-12-15 | 2010-02-23 | Sun Microsystems, Inc. | Method and apparatus for executing a long transaction |
US8321637B2 (en) * | 2007-05-14 | 2012-11-27 | International Business Machines Corporation | Computing system with optimized support for transactional memory |
US7899999B2 (en) * | 2007-06-27 | 2011-03-01 | Microsoft Corporation | Handling falsely doomed parents of nested transactions |
US7890707B2 (en) * | 2007-06-27 | 2011-02-15 | Microsoft Corporation | Efficient retry for transactional memory |
US7962456B2 (en) * | 2007-06-27 | 2011-06-14 | Microsoft Corporation | Parallel nested transactions in transactional memory |
US8719514B2 (en) * | 2007-06-27 | 2014-05-06 | Intel Corporation | Software filtering in a transactional memory system |
US7516365B2 (en) * | 2007-07-27 | 2009-04-07 | Sun Microsystems, Inc. | System and method for split hardware transactions |
US7840530B2 (en) * | 2007-09-18 | 2010-11-23 | Microsoft Corporation | Parallel nested transactions in transactional memory |
US7890472B2 (en) | 2007-09-18 | 2011-02-15 | Microsoft Corporation | Parallel nested transactions in transactional memory |
CN100568184C (zh) * | 2007-12-27 | 2009-12-09 | 电子科技大学 | 协同编辑中数据冲突模块的加锁方法 |
US10210018B2 (en) | 2008-12-24 | 2019-02-19 | Intel Corporation | Optimizing quiescence in a software transactional memory (STM) system |
US8095824B2 (en) * | 2009-12-15 | 2012-01-10 | Intel Corporation | Performing mode switching in an unbounded transactional memory (UTM) system |
-
2007
- 2007-09-18 US US11/901,647 patent/US7890472B2/en active Active
-
2008
- 2008-08-18 TW TW097131472A patent/TWI431474B/zh not_active IP Right Cessation
- 2008-09-16 WO PCT/US2008/076563 patent/WO2009039118A2/en active Application Filing
- 2008-09-16 CN CN2008801073002A patent/CN101889266B/zh active Active
- 2008-09-16 CN CN201210399252.7A patent/CN102929702B/zh active Active
- 2008-09-16 BR BRPI0814455-9A2A patent/BRPI0814455A2/pt not_active IP Right Cessation
- 2008-09-16 JP JP2010525101A patent/JP2010539609A/ja active Pending
- 2008-09-16 EP EP08832590.7A patent/EP2191372B1/en active Active
-
2011
- 2011-02-15 US US13/027,938 patent/US8271465B2/en active Active
-
2012
- 2012-09-18 US US13/622,164 patent/US9411635B2/en active Active
-
2013
- 2013-06-07 HK HK13106756.6A patent/HK1179718A1/zh unknown
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714836A (zh) * | 2013-12-12 | 2015-06-17 | 国际商业机器公司 | 用于聚结内存事务的方法和系统 |
CN104714836B (zh) * | 2013-12-12 | 2018-01-05 | 国际商业机器公司 | 用于聚结内存事务的方法和系统 |
CN107667364A (zh) * | 2015-06-04 | 2018-02-06 | 微软技术许可有限责任公司 | 使用硬件事务存储器控制索引的原子更新 |
CN107667364B (zh) * | 2015-06-04 | 2022-04-26 | 微软技术许可有限责任公司 | 使用硬件事务存储器控制索引的原子更新 |
Also Published As
Publication number | Publication date |
---|---|
EP2191372A4 (en) | 2011-11-02 |
US9411635B2 (en) | 2016-08-09 |
CN102929702B (zh) | 2016-04-27 |
WO2009039118A2 (en) | 2009-03-26 |
HK1179718A1 (zh) | 2013-10-04 |
US20090077083A1 (en) | 2009-03-19 |
CN101889266B (zh) | 2013-06-12 |
US8271465B2 (en) | 2012-09-18 |
TWI431474B (zh) | 2014-03-21 |
WO2009039118A3 (en) | 2009-05-28 |
US20130018860A1 (en) | 2013-01-17 |
US7890472B2 (en) | 2011-02-15 |
US20110138145A1 (en) | 2011-06-09 |
EP2191372B1 (en) | 2018-04-11 |
CN102929702A (zh) | 2013-02-13 |
TW200915071A (en) | 2009-04-01 |
EP2191372A2 (en) | 2010-06-02 |
BRPI0814455A2 (pt) | 2015-01-06 |
JP2010539609A (ja) | 2010-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101889266B (zh) | 事务存储器中的并行嵌套事务 | |
US7962456B2 (en) | Parallel nested transactions in transactional memory | |
US8271464B2 (en) | Parallel nested transactions in transactional memory | |
CN101542437B (zh) | 软件事务性存储器操作的优化 | |
US8065490B2 (en) | Hardware acceleration of strongly atomic software transactional memory | |
CN101652761B (zh) | 使用缓存写和强制串行化次序的事务存储器 | |
US8533663B2 (en) | System and method for utilizing available best effort hardware mechanisms for supporting transactional memory | |
US8627292B2 (en) | STM with global version overflow handling | |
CN102741806A (zh) | 使用缓冲存储加速事务的机构 | |
US20100325630A1 (en) | Parallel nested transactions | |
US9411634B2 (en) | Action framework in software transactional memory | |
CN102460376A (zh) | 无约束事务存储器(utm)系统的优化 | |
CN101310258A (zh) | 在软件事务内存系统中保护共享变量 | |
JP2009523271A (ja) | ソフトウェアトランザクショナルメモリ動作の最適化 | |
CN100397344C (zh) | 切换在系统复位异常时锁定页表项的锁定位组合的方法 | |
US8688921B2 (en) | STM with multiple global version counters | |
US8769514B2 (en) | Detecting race conditions with a software transactional memory system | |
Choi | Formal Verification of Chase-Lev Deque in Concurrent Separation Logic | |
BRPI0805218A2 (pt) | esquema de omissão de trava por hardware hìbrida de retirada prévia-posterior | |
Vafeiadis | Proving linearisability of lock-free algorithms |
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 | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150513 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150513 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |