CN101416168B - 阵列比较和交换操作 - Google Patents
阵列比较和交换操作 Download PDFInfo
- Publication number
- CN101416168B CN101416168B CN2007800124498A CN200780012449A CN101416168B CN 101416168 B CN101416168 B CN 101416168B CN 2007800124498 A CN2007800124498 A CN 2007800124498A CN 200780012449 A CN200780012449 A CN 200780012449A CN 101416168 B CN101416168 B CN 101416168B
- Authority
- CN
- China
- Prior art keywords
- storage unit
- group
- value
- parts
- write lock
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
尝试为软件事务存储器(STM)系统的一组存储单元中的每个存储单元获得通过所述STM的实现而提供的写入锁定;如果为所述一组存储单元中的每个存储单元获得了写入锁定,则将所述一组存储单元中的每个存储单元中的值与对应的预期值进行比较;以及如果对于所述一组存储单元中的每个存储单元,所述比较产生相同的预定结果,则将对应的新值存储在每个存储单元中。
Description
背景技术
软件事务存储器(STM)系统是本领域中众所周知的系统。一般来说,这些系统提供对于并行编程和其它应用有用的原语以便允许程序指定一组动作作为事务,因为事务内的动作是自动执行的。通常,原语包括开始事务、正常终止事务、以及异常中止事务并回滚(rollback)所中止的事务的所有效果的命令或调用。已存在多种已知的STM系统的实现。STM系统在软件中实现,因此可以与基于硬件的事务存储器(HTM)系统有所区分。
用于并行程序的有用原语有原子多字比较和交换(MCAS)。该原语自动执行。它将存储器的一组存储单元中的值与所提供的一组对应值进行比较。如果所提供的每个值与存储器中的对应值匹配,则MCAS原语将所提供的一组新值存储到这组存储单元中,并返回指示成功的完成代码;否则,不对存储器做任何改变,并且MCAS返回指示失败的完成代码。诸如Fraser的Practical Lock Freedom(见KeirFraser的博士论文Practical Lock Freedom)的现有的MCAS实现利用指针值以及对更新的日志记录或缓冲(在MCAS操作期间)来确保原子性。该缓冲或日志记录会使这些MCAS增加开销。
附图说明
图1描绘一个实施例中的基于处理器的系统。
图2描绘一个实施例中的处理流程。
具体实施方式
参照图1,如图所示的基于处理器的系统可以包括耦合到总线110的一个或多个处理器105。或者,该系统可以具有一个为多核处理器的处理器,或在其它情况下,可以具有多个多核处理器。在一些实施例中,处理器可以超线程化,或者能够以多核处理器的方式执行(尽管只有单个核)。在一个简单的实例中,总线110可以耦合到系统存储器115、诸如磁盘驱动器或其它存储设备的存储设备120、外围设备145。存储设备120可以存储各种软件或数据。该系统可以经由一个或多个总线系统连接到各种外围设备145。众所周知,这些外围设备可以包括显示器和打印系统等。
图1中的系统只是一个实例,本发明不限于任何特定的体系结构。具有其它体系结构的系统中的特定组件可以包括以下变化:在一些情况下,增加事务存储器作为系统的一个或多个处理器的组件;而在其它情况下,增加的事务存储器可以是总线上连接到处理器的独立组件。在其它实施例中,系统可以具有用于管理无锁定事务的额外指令。在其它实施例中,指令的实际形式或格式可以有所不同。可以存在额外的存储器或存储组件。还可以有大量的其它变化。
在一个实施例中,可以利用为支持通用软件事务存储器(STM)实现而提供的功能性来提供MCAS操作,这种MCAS操作作为系统(例如,如图1中描绘的系统)的软件的一部分。具体来说,MCAS操作可以利用由STM保持的读取器-写入器锁定来实现事务所需的基本的并行性控制。
下面将从高层次描述在该实施例中使用的STM系统的一个实例的一些特征。该STM实现保持读取器-写入器锁定阵列(an array ofreader-writerlock)。读取器-写入器锁定是这样一种锁定:它允许多个读取器获得对该锁定的访问权,然后读取存储单元;但只允许单个写入器获得对该锁定的访问权,然后写入到该存储单元。STM所用的每个存储单元(memory location)映射到唯一的读取器-写入器锁定。STM保持的唯一读取器-写入器锁定的数量取决于映射函数。在一个实例中,实现可以利用屏蔽一个地址的较低位(如6个位)的散列函数作为映射函数来获得对应于该地址处的存储单元的高速缓存行地址。然后,可以利用该高速缓存行地址作为对读取器-写入器锁定阵列的索引。
因此,例如,如果处理器正在执行的程序试图利用STM的服务来从地址A处的存储单元进行事务读取,则STM系统首先计算该存储单元的地址的散列。然后,STM系统计算对应于该散列的读取器-写入器锁定L。接着,系统试图获得L上的读取锁定。如果STM系统成功,则STM系统返回位置A处的值并将STM系统已经获得L上的读取锁定的指示存储到本地事务读集合中。类似地,如果程序试图利用STM的服务来进行到地址A处的存储单元的事务写入,则STM如同之前一样计算读取器-写入器锁定L,然后尝试获得L上的独占写入锁定。如果STM系统成功,则STM系统更新存储单元A并在日志中保留A的旧值的副本,以防必须回滚该事务。此外,STM系统也将STM系统已经获得L上的写入锁定的指示存储到本地事务写集合中。
如果在该实现中通过STM系统的事务实现未能获得读取器或写入器锁定,则STM系统在放弃一段时间之后重新尝试,这段时间可以是随机确定的时间周期。允许重新尝试固定次数,在这之后,STM系统中止事务并解除所有锁定。在一些实施例中,可以使用计数器来跟踪重新尝试的次数。也可以基于STM系统为该事务保持的日志来将在该事务开始之后经过修改的任何存储单元返回到它们的原始值。这种中止机制用于防止死锁。
如果事务成功地获得所有必需的锁定并完成处理,则STM系统解除所有锁定,并丢弃所有记入日志的值。这标志着在该STM系统中成功提交了事务。
如前所述,MCAS原语为程序提供了这样一种原子方法,该方法用于测试存储器中的一组值是否与作为参数提供给MCAS函数的一组预定值匹配,并且如果比较得到肯定的结果,即,所述一组预定值与所述存储器中的一组值相同,则用作为参数传入的一组替换值换出所述存储器中的一组值。在一个实施例中,MCAS原语可以通过一种同样提供STM的系统利用用于实现该STM系统的基本机制来实现。在下文中,在一个实施例中,假定具有读取器-写入器锁定的STM系统(例如,上文描述的STM系统)支持(underlie)MCAS实现。该实施例的一个特征在于,MCAS实现利用与STM机制所用的读取器-写入器锁定相同的读取器-写入器。
该实施例中的实现具有几个特征。首先,该实施例包括MCAS的一般化实现,因为该实施例涉及的实现可以扩展到任意大小的一组单元。其次,该实施例的MCAS实现不存在与现有MCAS实现关联的、由于在执行的中间阶段进行日志记录或缓冲而引起的过度开销。最后,该MCAS实现与基本的STM不干扰地共存,这是因为利用了为STM提供并行控制和同步的相同的锁定机制来实现MCAS,因此,STM事务与MCAS操作之间不太可能出现干扰。
图2中的流程图从高层次描绘该实施例中的利用STM机制的MCAS实现。该图描绘了一种MCAS原语的实现,该MCAS原语可视为具有可以表示成以下函数调用的接口:
Bool MCAS(int k,void*addr[],uint32oldValue[],uint32newValue[]);
用类似C的语法表示的该调用提供了函数MCAS,该函数MCAS取以下项作为参数:整数k;提供将用于MCAS操作的一组k个存储地址的引用或指针参数addr;以及两个值参数,即,用于比较的整数数组oldValue和用于交换到存储器阵列中的整数数组newValue,这两个数组的大小都为k。当该函数执行时,效果如下:如果通过addr中的地址而指定的一组存储单元中的值与数组参数oldValue中的对应值匹配,则函数将数组newValue中的新值存储在通过addr中的地址而指定的这组存储单元中,并返回逻辑值真;否则,函数令存储单元保持不变,并返回假。
为了实现MCAS的功能性,如图2所示的基本操作从215开始,首先,在220,计算在MCAS中涉及的k个单元中的每个单元的读取器-写入器锁定地址。接着,在225,该实现尝试获得所有k个读取器-写入器锁定上的写入锁定。在一些实施例中,如果在第一次尝试时没有获得锁定,则该实现可以进行固定次数的重新尝试以获得锁定,并且可以使用计数器来跟踪尝试次数。如果获得所有锁定235,则该实现检查阵列中的所有k个单元是否都具有预期值(即,在参数oldValue中提供的值)。如果即使在重新尝试(如果有)之后仍没有获得所有锁定(路径235-240),或者如果并非阵列中的所有单元都具有预期值(路径230-240),则在240,解除所获得的所有锁定并且函数返回假值,并在255终止。但是,如果获得了所有锁定并且这k个单元都具有预期值,则在245,存储newValue数组中的新值,并在贯穿流程的该路径中,在250解除所有锁定,函数返回真值,并在255终止。
在该实施例中,还可参照之前描述的读取器-写入器锁定的机制来进一步说明图2中的220处的动作,具体来说,即计算MCAS中涉及的单元的读取器-写入器锁定。在尝试获得锁定时,该MCAS实现执行与基本STM系统相同的动作。具体来说,正如STM一样,该MCAS调用的实现通过以下方法来计算读取器-写入器锁定阵列中的锁定的索引:从通过addr指定的k个存储单元中的每个存储单元的地址开始,首先屏蔽每个存储单元的地址的最低6个位以便获得该单元的高速缓存行地址;然后,该MCAS实现利用该高速缓存行地址作为对读取器-写入器锁定阵列的索引。
上文描述的实现的一个特征在于,该实施例不需要在245写入新值之前对通过addr指定的存储单元中的值作日志记录或进行检查点操作。这是因为,当MCAS实现到达245时,有几个断言可以视为是真的。首先,因为是按值传递参数oldValue和newValue的,所以对于那些参数而言不可能出现地址异常。因为所有比较都完成了,所以该阶段不可能出现算术异常。此外,因为已经使用了通过addr而指定的k个元素的地址集合中的所有地址来计算高速缓存行地址并且因此引用锁定,所以对阵列中的地址的访问不可能产生存储器异常,这是因为锁定阵列计算也已经有效地验证了阵列中的所有地址。因此,可以假设,新值在存储器中阵列中的存储可以无误地完成,因此可以避免在该阶段对旧值作日志记录或进行检查点操作,从而潜在地减少延迟开销。
尽管以上描述是关于上述实施例的,但也可以有许多变化。首先,如上文那样,通常按如下方式描述MCAS函数:通过将存储器中的一组值与传递给该函数的一组预定值的等同性进行比较,并且只有当这组存储单元中的每个值等于作为参数传递的对应值时才交换传递到该函数中的值。但是,在其它实施例中,可以使用类似MCAS的函数,这些函数利用等同性之外的比较。许多此类比较和结果在本领域中已知。例如,技术人员可以容易地设想这样一个操作,在该操作中,存储器中的这组值与参数数组之间的比较是“小于”或“大于”的比较,并且只有在存储器中的值“小于”或“大于”对应参数值时才会发生交换。这种MCAS类函数可以通过与图2中所示的MCAS的处理类似的处理来容易地实现。类似地,还可以有其它比较和随比较结果而定的其它动作。
此外,存储在阵列中的值可以是任意的数据类型,而不限于固定大小的数据。例如,阵列中的每个元素可以是文本串、图形图像、或其它多部分数据类型,对此定义了一些数据相关的比较判定。因此,例如,可以容易地设想用于换出文本串阵列的MCAS类操作。
为通用起见,下文将上述所有改变称为是MCAS类。
此外,尽管参照与STM共享的基本机制描述了以上MCAS和MCAS类操作的实现,但是即使在缺少STM的情况下,参照图2描述的处理仍是可能的。如果满足MCAS操作的要求的读取器-写入器锁定阵列可用,则尽管系统中缺少STM,但仍可实现以上处理。此外,在一些情况下,基于硬件的事务存储器系统可以采用与在上述实施例的描述中由STM实现提供的方式类似的方式来提供实现MCAS所需的锁定机制。
本领域的技术人员将容易地理解,实际上,基于存储地址的读取器-写入器锁定引用的实际计算可以通过无限种方法来完成,其中许多方法与参照上文提到的实施例描述的高速缓存行计算无关。例如,可以使用任意的散列函数和散列表来计算锁定地址并存储存储单元的锁定。
最后,本领域的技术人员应明白,MCAS函数的代表性接口和图2中描绘的处理只是在一个实例性实施例中的接口和处理。众所周知,在表述MCAS的接口时可以有许多语法和命名的变化,此外,可以用无限种方法来改变处理流程,而不会影响软件函数的实现的基本输入-输出功能性。因此,上文论述的MCAS和其它MCAS类原语的实现可以有许多备选方案。
在以上描述中,出于说明的目的,阐述了众多具体细节以便充分理解所描述的实施例,但是,本领域的技术人员将明白,在没有这些具体细节的情况下,也可以实现许多其它实施例。
以上的部分详细描述介绍了基于处理器的系统内对数据位的操作的算法和符号表示。这些算法描述和表示是本领域的技术人员用来向本领域的其它人员最有效地传达他们的工作实质的方式。操作是指那些需要物理量的物理操纵的操作。这些量可以采用电、磁、光、或能够被存储、传送、组合、比较及以其它方式操纵的其它物理信号的形式。已证实很多时候将这些信号称为位、值、元素、符号、字符、项、数字等很方便,这主要是出于惯用的原因。
但是,应记住,所有这些和类似术语将与合适的物理量关联,它们仅仅是适用于这些量的方便的标记。除非另外特外说明,否则从本描述显而易见,诸如“执行”、“处理”、“计算”、“演算”或“确定”等术语可以指操纵在基于处理器的系统的存储设备内表示成物理量的数据并将该数据变换为类似表示的其它数据的基于处理器的系统或类似的电子计算装置、或其它此类信息存储、传输或显示设备的动作和过程。
在对实施例的描述中,可以参照附图。附图中,这几个视图中相同的数字描述基本上类似的组件。可以利用其它实施例,并且可以做出结构、逻辑和电改变。此外,应了解,尽管各个实施例有所不同,但它们不一定相互排斥。例如,在一个实施例中描述的特定特征、结构、或特性可以包含在其它实施例中。
此外,在处理器中实现的实施例的设计可以经历从创建到模拟到制作各个不同阶段。代表设计的数据可以用多种方式来表示这个设计。首先,可以使用硬件描述语言或另一种功能描述语言来表示硬件,这在模拟中有用。另外,可以在设计过程中的某些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,在某个阶段,大部分设计达到表示硬件模型中的各种设备的物理替换的数据级。在使用常规半导体制造技术的情况下,代表硬件模型的数据可以是指定在用来制造集成电路的掩模的不同掩模层上各种特征存在与否的数据。在设计的任意表示中,数据可以存储在任意形式的机器可读介质中。经调制或以其它方式生成而用来传送该信息的光波或电波、存储器、或诸如盘的磁或光存储设备都可以作为机器可读介质。所有这些介质都可以“携带”或“指示”该设计或软件信息。当指示或携带代码或设计的电载波得以传送时,在执行电信号的复制、缓冲或重新传送的意义上,进行新的复制。因此,通信提供者或网络提供者可以复制物品(例如,载波),这些复本构成或表示一个实施例。
实施例可以作为程序产品来提供,该程序产品可以包括其上存储有数据的机器可读介质,当该数据被机器访问时可使机器执行权利要求保护主题所述的方法。机器可读介质可以包括但不限于软盘、光盘、DVD-ROM盘、DVD-RAM盘、DVD-RW盘、DVD+RW盘、CD-R盘、CD-RW盘、CD-ROM盘、及磁-光盘、ROM、RAM、EPROM、EEPROM、磁或光卡、闪速存储器、或其它类型的适于存储电子指令的介质/机器可读介质。此外,实施例也可以作为程序产品下载,其中可以经由通信链路(如调制解调器或网络连接)通过在载波或其它传播介质中实施的数据信号将程序从远程数据源传送给请求的设备。
虽然许多方法是以它们的最基本的形式进行描述的,但是在不偏离所要求保护的主题的基本范围的情况下,可以在其中任何一个方法中增减步骤,并且可以在所描述的任何消息中增减信息。本领域的技术人员将明白,可以做出许多其它修改和改变。提供特定实施例不是为了限制所要求保护的主题,而是为了说明它。所要求保护的主题的范围不是由上文提供的具体实例确定的,而只由随附权利要求确定。
Claims (16)
1.一种用于执行阵列比较和交换操作的方法,包括:
尝试为软件事务存储器STM系统的一组存储单元中的每个存储单元获得通过所述STM系统的实现而提供的写入锁定;
如果为所述一组存储单元中的每个存储单元获得了写入锁定,则将所述一组存储单元中的每个存储单元中的值与对应的预期值进行比较;以及
如果对于所述一组存储单元中的每个存储单元,所述比较产生相同的预定结果,则将对应的新值存储在每个存储单元中。
2.如权利要求1所述的方法,其中:
所述比较还包括检查所述一组存储单元中的每个存储单元中的值是否等于所述对应的预期值;以及
所述比较的预定结果为真。
3.如权利要求1所述的方法,其中尝试为所述一组存储单元中的每个存储单元获得写入锁定还包括:
如果没有为所述一组存储单元中的每个存储单元获得写入锁定,则递增失败尝试次数的计数器;
如果在等待一段时间之后所述计数器不大于预定值,则重复为所述一组存储单元中的每个存储单元获得写入锁定所做的所述尝试;以及
如果所述计数器大于所述预定值,则中止为获得所述写入锁定所做的所述尝试。
4.如权利要求1所述的方法,还包括:
如果对于所述一组存储单元中的每个存储单元,所述比较未能获得相同的预定结果,则解除所获得的所有写入锁定。
5.如权利要求1所述的方法,其中尝试为所述一组存储单元中的每个存储单元获得写入锁定还包括:至少部分地基于相应存储单元的地址来计算对所述一组存储单元中的每个存储单元的唯一读取器-写入器锁定的引用。
6.如权利要求5所述的方法,其中计算所述引用还包括:至少部分地基于相应存储单元的地址来计算散列值;至少部分地利用所述散列值来获得对应于所述存储单元的高速缓存行地址;以及至少部分地利用所述高速缓存行地址来计算对读取器-写入器锁定阵列的索引。
7.如权利要求1所述的方法,其中将对应的新值存储在每个存储单元中还包括:存储所述新值而不在日志和/或缓冲器中保存和/或记录存储在所述存储单元中的先前值。
8.如权利要求7所述的方法,其中尝试为软件事务存储器STM系统的一组存储单元中的每个存储单元获得通过所述STM系统的实现而提供的写入锁定还包括:
至少部分地基于所述一组存储单元中的每个存储单元的地址来计算散列值;
至少部分地利用所述散列值来获得对应于所述一组存储单元中的每个存储单元的高速缓存行地址;以及
至少部分地利用所述高速缓存行地址来计算对所述STM系统的读取器-写入器锁定阵列的索引。
9.一种用于执行阵列比较和交换操作的系统,包括:
尝试为软件事务存储器STM系统的一组存储单元中的每个存储单元获得通过所述STM系统的实现而提供的写入锁定的部件;
如果为所述一组存储单元中的每个存储单元获得了写入锁定,则将所述一组存储单元中的每个存储单元中的值与对应的预期值进行比较的部件;以及
如果对于所述一组存储单元中的每个存储单元,所述比较产生相同的预定结果,则将对应的新值存储在每个存储单元中的部件。
10.如权利要求9所述的系统,其中:
所述将所述一组存储单元中的每个存储单元中的值与对应的预期值进行比较的部件还包括检查所述一组存储单元中的每个存储单元中的值是否等于所述对应的预期值的部件;以及
所述比较的预定结果为真。
11.如权利要求9所述的系统,其中尝试为软件事务存储器STM系统的一组存储单元中的每个存储单元获得通过所述STM系统的实现而提供的写入锁定的部件还包括:
如果没有为所述一组存储单元中的每个存储单元获得写入锁定,则递增失败尝试次数的计数器的部件;
如果在等待一段时间之后所述计数器不大于预定值,则重复为所述一组存储单元中的每个存储单元获得写入锁定所做的所述尝试的部件;以及
如果所述计数器大于所述预定值,则中止为获得所述写入锁定所做的所述尝试的部件。
12.如权利要求9所述的系统,还包括:
如果对于所述一组存储单元中的每个存储单元,所述比较未能获得相同的预定结果,则解除所获得的所有写入锁定的部件。
13.如权利要求9所述的系统,其中尝试为软件事务存储器STM系统的一组存储单元中的每个存储单元获得通过所述STM系统的实现而提供的写入锁定的部件还包括:至少部分地基于相应存储单元的地址来计算对所述一组存储单元中的每个存储单元的唯一读取器-写入器锁定的引用的部件。
14.如权利要求13所述的系统,其中至少部分地基于相应存储单元的地址来计算对所述一组存储单元中的每个存储单元的唯一读取器-写入器锁定的引用的部件还包括:至少部分地基于相应存储单元的地址来计算散列值的部件;至少部分地利用所述散列值来获得对应于所述存储单元的高速缓存行地址的部件;以及至少部分地利用所述高速缓存行地址来计算对读取器-写入器锁定阵列的索引的部件。
15.如权利要求9所述的系统,其中将对应的新值存储在每个存储单元中的部件还包括:存储所述新值而不在日志和/或缓冲器中保存和/或记录存储在所述存储单元中的先前值的部件。
16.如权利要求15所述的系统,其中尝试为软件事务存储器STM系统的一组存储单元中的每个存储单元获得通过所述STM系统的实现而提供的写入锁定的部件还包括:
至少部分地基于所述一组存储单元中的每个存储单元的地址来计算散列值的部件;
至少部分地利用所述散列值来获得对应于所述一组存储单元中的每个存储单元的高速缓存行地址的部件;以及
至少部分地利用所述高速缓存行地址来计算对所述STM系统的读取器-写入器锁定阵列的索引的部件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/395,410 | 2006-03-31 | ||
US11/395,410 US8108627B2 (en) | 2006-03-31 | 2006-03-31 | Array comparison and swap operations |
PCT/US2007/008009 WO2007123756A1 (en) | 2006-03-31 | 2007-03-30 | Array comparison and swap operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101416168A CN101416168A (zh) | 2009-04-22 |
CN101416168B true CN101416168B (zh) | 2011-05-25 |
Family
ID=38560812
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800124498A Active CN101416168B (zh) | 2006-03-31 | 2007-03-30 | 阵列比较和交换操作 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8108627B2 (zh) |
EP (1) | EP2005306B1 (zh) |
CN (1) | CN101416168B (zh) |
WO (1) | WO2007123756A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8108627B2 (en) | 2006-03-31 | 2012-01-31 | Intel Corporation | Array comparison and swap operations |
US8132158B2 (en) | 2006-12-28 | 2012-03-06 | Cheng Wang | Mechanism for software transactional memory commit/abort in unmanaged runtime environment |
US7793052B2 (en) * | 2007-12-31 | 2010-09-07 | Oracle America, Inc. | System and method for implementing hybrid single-compare-single-store operations |
US8055856B2 (en) * | 2008-03-24 | 2011-11-08 | Nvidia Corporation | Lock mechanism to enable atomic updates to shared memory |
US8973004B2 (en) * | 2009-06-26 | 2015-03-03 | Oracle America, Inc. | Transactional locking with read-write locks in transactional memory systems |
US9760658B2 (en) * | 2009-10-08 | 2017-09-12 | Oracle International Corporation | Memory-mapped objects |
US8103937B1 (en) * | 2010-03-31 | 2012-01-24 | Emc Corporation | Cas command network replication |
US8893137B2 (en) | 2012-03-13 | 2014-11-18 | Cisco Technology, Inc. | Transaction-based shared memory protection for high availability environments |
US9652168B2 (en) * | 2015-04-10 | 2017-05-16 | International Business Machines Corporation | Adaptive concurrency control using hardware transactional memory and locking mechanism |
US10067960B2 (en) | 2015-06-04 | 2018-09-04 | Microsoft Technology Licensing, Llc | Controlling atomic updates of indexes using hardware transactional memory |
GB2576330B (en) * | 2018-08-14 | 2020-08-19 | Advanced Risc Mach Ltd | Barrier-free atomic transfer of multiword data |
US10929203B2 (en) * | 2019-01-16 | 2021-02-23 | EMC IP Holding Company LLC | Compare and swap functionality for key-value and object stores |
KR102450133B1 (ko) * | 2019-04-04 | 2022-10-05 | 한국전자통신연구원 | 분산 잠금 관리를 하는 분산 시스템 및 그것의 동작 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2272549A (en) * | 1992-11-03 | 1994-05-18 | Tolsys Ltd | Memory checkpointing |
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
US6772255B2 (en) * | 1998-06-30 | 2004-08-03 | Sun Microsystems, Inc. | Method and apparatus for filtering lock requests |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6644495B2 (en) | 1997-04-22 | 2003-11-11 | Distributed Vending Company | Processing method for vending machine with substitutable magazines |
US6292705B1 (en) | 1998-09-29 | 2001-09-18 | Conexant Systems, Inc. | Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system |
US6823511B1 (en) * | 2000-01-10 | 2004-11-23 | International Business Machines Corporation | Reader-writer lock for multiprocessor systems |
US6967575B1 (en) | 2000-04-28 | 2005-11-22 | Intel Corporation | Methods and apparatus for unattended pickups and deliveries |
US6678772B2 (en) * | 2000-12-19 | 2004-01-13 | International Businesss Machines Corporation | Adaptive reader-writer lock |
US6915522B2 (en) * | 2002-01-23 | 2005-07-05 | Intel Corporation | System and method to synchronize two or more object management systems |
US6854043B2 (en) | 2002-07-05 | 2005-02-08 | Hewlett-Packard Development Company, L.P. | System and method for multi-modal memory controller system operation |
US7124243B2 (en) * | 2003-05-16 | 2006-10-17 | Pillar Data Systems, Inc. | Methods and systems of cache memory management and snapshot operations |
US7856537B2 (en) * | 2004-09-30 | 2010-12-21 | Intel Corporation | Hybrid hardware and software implementation of transactional memory access |
US8108627B2 (en) | 2006-03-31 | 2012-01-31 | Intel Corporation | Array comparison and swap operations |
-
2006
- 2006-03-31 US US11/395,410 patent/US8108627B2/en active Active
-
2007
- 2007-03-30 CN CN2007800124498A patent/CN101416168B/zh active Active
- 2007-03-30 EP EP07754521.8A patent/EP2005306B1/en active Active
- 2007-03-30 WO PCT/US2007/008009 patent/WO2007123756A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
GB2272549A (en) * | 1992-11-03 | 1994-05-18 | Tolsys Ltd | Memory checkpointing |
US6772255B2 (en) * | 1998-06-30 | 2004-08-03 | Sun Microsystems, Inc. | Method and apparatus for filtering lock requests |
Also Published As
Publication number | Publication date |
---|---|
EP2005306A1 (en) | 2008-12-24 |
WO2007123756A1 (en) | 2007-11-01 |
EP2005306B1 (en) | 2013-12-11 |
EP2005306A4 (en) | 2010-10-27 |
CN101416168A (zh) | 2009-04-22 |
US20070233970A1 (en) | 2007-10-04 |
US8108627B2 (en) | 2012-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101416168B (zh) | 阵列比较和交换操作 | |
CN101310258B (zh) | 用于在软件事务内存系统中保护共享变量的方法和系统 | |
Traiger et al. | Transactions and consistency in distributed database systems | |
CN100550010C (zh) | 用于将应用程序与基于项的存储平台接口的系统和方法 | |
US7548920B2 (en) | Systems and methods of accessing and updating recorded data via an inter-object proxy | |
CN100570549C (zh) | 用于基于项目的存储平台中的数据建模的系统和方法 | |
US7752165B2 (en) | Persistent query system for automatic on-demand data subscriptions from mobile devices | |
US7499953B2 (en) | Online recovery of user tables using flashback table | |
JP3512439B2 (ja) | チェックイン・チェックアウトモデルにおける施錠方式 | |
CN101331456A (zh) | 越过障碍的推测性执行 | |
CN104793988A (zh) | 跨数据库分布式事务的实现方法和装置 | |
US6941309B2 (en) | Object integrated management system | |
EP4071648A1 (en) | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network | |
CN1936835A (zh) | 模块化计算机系统以及相关方法 | |
CN100410886C (zh) | 管理任务实例的装置、系统和方法 | |
JP3899104B2 (ja) | システム開発方法及びデータ処理システム | |
CN1739093B (zh) | 同步模式的实现系统 | |
US7325003B2 (en) | Method and system for mapping datasources in a metadata model | |
Ouyang et al. | Checking causal consistency of MongoDB | |
Ammann et al. | A two snapshot algorithm for concurrency control in multi-level secure databases | |
US20050021305A1 (en) | Various methods and apparatuses for interfacing of a protocol monitor to protocol checkers and functional checkers | |
Chen et al. | Hierarchical cache coherence protocol verification one level at a time through assume guarantee | |
CN115033350A (zh) | 一种分布式事务的执行方法及装置 | |
US8000451B1 (en) | System and method for managing network switch transaction dependencies | |
CN112286572A (zh) | 一种业务流程的配置方法及装置 |
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 |