CN102929702A - 事务存储器中的并行嵌套事务 - Google Patents

事务存储器中的并行嵌套事务 Download PDF

Info

Publication number
CN102929702A
CN102929702A CN2012103992527A CN201210399252A CN102929702A CN 102929702 A CN102929702 A CN 102929702A CN 2012103992527 A CN2012103992527 A CN 2012103992527A CN 201210399252 A CN201210399252 A CN 201210399252A CN 102929702 A CN102929702 A CN 102929702A
Authority
CN
China
Prior art keywords
lock
affairs
write
versioned
stage
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
Application number
CN2012103992527A
Other languages
English (en)
Other versions
CN102929702B (zh
Inventor
M·M·马格鲁德
D·德特勒夫
J·J·达菲
G·格雷费
V·K·格罗弗
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN102929702A publication Critical patent/CN102929702A/zh
Application granted granted Critical
Publication of CN102929702B publication Critical patent/CN102929702B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details

Abstract

本发明公开了用于支持事务存储器系统中的并行嵌套事务的各种技术和方法。为单个父事务创建多个封闭嵌套事务,并且这些封闭嵌套事务作为并行嵌套事务来并发执行。使用各种技术来确保对父事务之外的其他事务隐藏并行嵌套事务的影响直到该父事务提交。例如,就并行嵌套事务使用版本化写锁。当事务存储器字从写锁变为版本化写锁时,在全局版本化写锁映射中形成一条目以存储指向该版本化写锁所替换的写日志条目的指针。当在事务处理期间遇到该版本化写锁时,咨询全局版本化写锁映射以便将该版本化写锁转换成指向写日志条目的指针。

Description

事务存储器中的并行嵌套事务
本申请是申请日:2008.09.16,申请号为200880107300.2(国际申请号为PCT//US2008/076563),名称为“事务存储器中的并行嵌套事务”的申请的分案申请。
背景
软件事务存储器(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的系统的一个实现的处理流程图,其示出就并行嵌套事务使用写中止补偿映射所涉及的各阶段。
详细描述
此处的技术和方法可以在事务存储器系统的一般上下文中描述,但本系统也用作除此之外的其它目的。在一个实现中,此处所描述的一个或多个技术可被实现为诸如微软
Figure BDA00002272697200041
.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中的V/C对中的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 (4)

1.一种用于就并行嵌套事务使用版本化写锁的方法,所述方法包括以下步骤:
当事务存储器字从写锁变为版本化写锁时,在全局版本化写锁映射中形成一条目以存储指向所述版本化写锁替换的写日志条目的指针(344);以及
当在事务处理期间遇到所述版本化写锁时,咨询所述全局版本化写锁映射以便将所述版本化写锁转换成指向所述写日志条目的指针(346)。
2.如权利要求1所述的方法,其特征在于,通过使用所述版本化写锁,并行嵌套事务能够获取和释放父事务所持有的锁以便适当地同步而不打破所述父事务的隔离边界(352)。
3.如权利要求1所述的方法,其特征在于,存储在所述事务存储器字中的版本号始终递增,无论是保持在版本计数对还是所述版本化写锁中(348)。
4.如权利要求1所述的方法,其特征在于,还包括以下步骤:
在获取悲观读取时,将所述事务存储器字切换至所述版本化写锁以便提供用于存储悲观读取者的计数的空间,且所述版本化写锁现在指示兄弟事务可能已经执行对父事务已经写锁定的对象的悲观读取(796)。
CN201210399252.7A 2007-09-18 2008-09-16 事务存储器中的并行嵌套事务 Active CN102929702B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/901,647 US7890472B2 (en) 2007-09-18 2007-09-18 Parallel nested transactions in transactional memory
US11/901,647 2007-09-18
CN2008801073002A CN101889266B (zh) 2007-09-18 2008-09-16 事务存储器中的并行嵌套事务

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN2008801073002A Division CN101889266B (zh) 2007-09-18 2008-09-16 事务存储器中的并行嵌套事务

Publications (2)

Publication Number Publication Date
CN102929702A true CN102929702A (zh) 2013-02-13
CN102929702B CN102929702B (zh) 2016-04-27

Family

ID=40455684

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201210399252.7A Active CN102929702B (zh) 2007-09-18 2008-09-16 事务存储器中的并行嵌套事务
CN2008801073002A Active CN101889266B (zh) 2007-09-18 2008-09-16 事务存储器中的并行嵌套事务

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN2008801073002A Active CN101889266B (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) CN102929702B (zh)
BR (1) BRPI0814455A2 (zh)
HK (1) HK1179718A1 (zh)
TW (1) TWI431474B (zh)
WO (1) WO2009039118A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984379A (zh) * 2020-07-14 2020-11-24 上海金仕达软件科技有限公司 读写事务控制方法、系统、终端设备及存储介质

Families Citing this family (45)

* Cited by examiner, † Cited by third party
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
US9417881B2 (en) * 2012-01-30 2016-08-16 Nvidia Corporation Parallel dynamic memory allocation using a lock-free pop-only FIFO
US9542227B2 (en) 2012-01-30 2017-01-10 Nvidia Corporation Parallel dynamic memory allocation using a lock-free FIFO
US9870384B2 (en) 2012-03-30 2018-01-16 International Business Machines Corporation Database system transaction management
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
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
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers 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
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
US9146774B2 (en) 2013-12-12 2015-09-29 International Business Machines Corporation Coalescing memory transactions
US9158573B2 (en) 2013-12-12 2015-10-13 International Business Machines Corporation Dynamic predictor 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
US10019476B2 (en) * 2015-05-27 2018-07-10 Microsoft Technology Licensing, Llc Multi-version data system nested transactions isolation
US10067960B2 (en) * 2015-06-04 2018-09-04 Microsoft Technology Licensing, Llc Controlling atomic updates of indexes using hardware transactional memory
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
CN114661816B (zh) * 2020-12-24 2023-03-24 金篆信科有限责任公司 数据同步方法、装置、电子设备、存储介质
CN116244041B (zh) * 2022-12-02 2023-10-27 湖南亚信安慧科技有限公司 一种数据库子事务的性能优化方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778179A (en) * 1991-12-26 1998-07-07 Kabushiki Kaisha Toshiba System for flexible distributed processing and transaction processing suitable for nested transaction
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
CN101196829A (zh) * 2007-12-27 2008-06-11 电子科技大学 协同编辑中数据冲突模块的加锁方法

Family Cites Families (98)

* Cited by examiner, † Cited by third party
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
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
EP0613083B1 (en) * 1993-02-25 2002-01-23 Sun Microsystems, Inc. Transaction management in object oriented systems
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
US5835757A (en) * 1994-03-30 1998-11-10 Siemens Telecom Networks Distributed database management system for servicing application requests in a telecommunications switching system
US5687363A (en) * 1994-03-30 1997-11-11 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
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
WO1999038095A1 (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
CA2416909A1 (en) * 2000-07-28 2002-02-07 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
US7328316B2 (en) * 2002-07-16 2008-02-05 Sun Microsystems, Inc. Software transactional memory for dynamically sizable 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
BRPI0419126B1 (pt) 2004-11-30 2018-05-08 Telefonaktiebolaget Lm Ericsson Publ “Método para automaticamente distribuir uma mensagem, terminal capaz de processar mensagens e sistema para automaticamente processar e distribuir mensagens”
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
EP1872555A4 (en) * 2005-04-18 2008-07-02 Research In Motion Ltd TRANSACTION MANAGEMENT SYSTEM AT TANK LEVEL 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
US8266609B2 (en) * 2005-12-07 2012-09-11 Microsoft Corporation Efficient placement of software transactional memory operations around procedure calls
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
US7890707B2 (en) * 2007-06-27 2011-02-15 Microsoft Corporation Efficient retry for transactional memory
US8719514B2 (en) * 2007-06-27 2014-05-06 Intel Corporation Software filtering in a transactional memory system
US7899999B2 (en) * 2007-06-27 2011-03-01 Microsoft Corporation Handling falsely doomed parents of nested transactions
US7962456B2 (en) * 2007-06-27 2011-06-14 Microsoft Corporation Parallel nested transactions in transactional memory
US7516365B2 (en) * 2007-07-27 2009-04-07 Sun Microsystems, Inc. System and method for split hardware transactions
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
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778179A (en) * 1991-12-26 1998-07-07 Kabushiki Kaisha Toshiba System for flexible distributed processing and transaction processing suitable for nested transaction
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
CN101196829A (zh) * 2007-12-27 2008-06-11 电子科技大学 协同编辑中数据冲突模块的加锁方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KUNAL, AGRAWAL ET AL.: "Nested Parallelism in Transactional Mmemory", 《THE SECOND ACM SIGPLAN WORKSHOP ON TRANSACTIONAL COMPUTING》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984379A (zh) * 2020-07-14 2020-11-24 上海金仕达软件科技有限公司 读写事务控制方法、系统、终端设备及存储介质
CN111984379B (zh) * 2020-07-14 2023-04-07 上海金仕达软件科技股份有限公司 读写事务控制方法、系统、终端设备及存储介质

Also Published As

Publication number Publication date
EP2191372A2 (en) 2010-06-02
EP2191372B1 (en) 2018-04-11
US20130018860A1 (en) 2013-01-17
BRPI0814455A2 (pt) 2015-01-06
WO2009039118A2 (en) 2009-03-26
JP2010539609A (ja) 2010-12-16
EP2191372A4 (en) 2011-11-02
TWI431474B (zh) 2014-03-21
US20090077083A1 (en) 2009-03-19
CN102929702B (zh) 2016-04-27
WO2009039118A3 (en) 2009-05-28
CN101889266B (zh) 2013-06-12
TW200915071A (en) 2009-04-01
CN101889266A (zh) 2010-11-17
HK1179718A1 (zh) 2013-10-04
US7890472B2 (en) 2011-02-15
US8271465B2 (en) 2012-09-18
US9411635B2 (en) 2016-08-09
US20110138145A1 (en) 2011-06-09

Similar Documents

Publication Publication Date Title
CN101889266B (zh) 事务存储器中的并行嵌套事务
US7962456B2 (en) Parallel nested transactions in transactional memory
US8271464B2 (en) Parallel nested transactions in transactional memory
US8065490B2 (en) Hardware acceleration of strongly atomic software transactional memory
Harris et al. Transactional memory
CN101542437B (zh) 软件事务性存储器操作的优化
JP5608738B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
EP2150900B1 (en) Transactional memory using buffered writes and enforced serialization order
US20100122073A1 (en) Handling exceptions in software transactional memory systems
US9280397B2 (en) Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
US8627292B2 (en) STM with global version overflow handling
CN102741806A (zh) 使用缓冲存储加速事务的机构
US20110125973A1 (en) System and Method for Performing Dynamic Mixed Mode Read Validation In a Software Transactional Memory
US20110314230A1 (en) Action framework in software transactional memory
US20100180257A1 (en) Testing stm using non-stm code
US8688921B2 (en) STM with multiple global version counters
US8769514B2 (en) Detecting race conditions with a software transactional memory system
JP2015008008A (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
Choi Formal Verification of Chase-Lev Deque in Concurrent Separation Logic
JP6318440B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
US20100228929A1 (en) Expedited completion of a transaction in stm

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1179718

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150729

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150729

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1179718

Country of ref document: HK