CN101432702A - 在事务处理码内对存储器分配和解除分配的系统和方法 - Google Patents
在事务处理码内对存储器分配和解除分配的系统和方法 Download PDFInfo
- Publication number
- CN101432702A CN101432702A CNA2007800155299A CN200780015529A CN101432702A CN 101432702 A CN101432702 A CN 101432702A CN A2007800155299 A CNA2007800155299 A CN A2007800155299A CN 200780015529 A CN200780015529 A CN 200780015529A CN 101432702 A CN101432702 A CN 101432702A
- Authority
- CN
- China
- Prior art keywords
- issued transaction
- transaction
- distribution
- issued
- memory
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Executing Machine-Instructions (AREA)
Abstract
方法和系统提供用于在事务处理码中,包括在嵌套事务处理码中时管理存储器分配和解除分配。方法和系统通过使用诸如序号等标识符管理事务处理存储器操作以处理事务处理中的存储器管理。方法和系统也保持在事务处理中止和提交时要执行的延迟动作列表。与一个或多个事务处理相关联的多个存储器管理例程检查当前事务处理的事务处理序号,操控提交和/或撤消日志,以及设置/使用相关联对象的事务处理序号,但并不限于此。方法和系统在保留事务处理语义的同时,提供用于事务处理码内的存储器分配和解除分配。本文也描述和声明了其他实施例。
Description
背景技术
为满足日益增长的用户需求,计算系统要以越来越快的速率高效地操作,相关联停机时间不存在或很少。在努力满足这些需求的过程中,程序员开发了可包括具有许多指令的多个指令“线程”的程序。这些线程控制在系统上运行的程序(或应用)的操作和流程。在一些计算体系结构中,一个处理器可使用单个处理器执行多个线程。在其它计算体系结构中,多个线程可由多个处理器执行,其中每个处理器可支持不同的线程。
结合多线程程序,程序员使用包括嵌套事务处理(transaction)的事务处理编码来改进计算同步和效率。事务处理是减轻多核体系结构上编程的关键技术。事务处理可描述为在线程上执行的步骤顺序。因为事务处理一般是提交或中止,因此,事务处理也被认为是“原子”。例如,在线程宣布事务处理开始,执行操作序列并随后尝试提交事务处理时,一个事务处理模型便开始了。如果提交成功,则事务处理操作在存储器(memory)中生效;如果未成功,则操作可被丢弃。事务处理程序调用在内部使用事务处理的库代码时,嵌套事务处理会在它们中发生。潜在冲突限制在大事务处理的一小部分内时,嵌套事务处理也允许程序员避免昂贵的回滚。
常规计算系统允许程序对存储器进行动态分配和解除分配。但是,为保持语义,这些常规计算系统不从事务处理码组(包括嵌套事务处理)内对存储器进行分配和解除分配。不包括事务处理的常规计算系统可在程序调用存储器分配例程,如标准Malloc例程时分配存储器块。Malloc例程找到可用存储器块,将其标记为已分配,并且将指针返回到与已分配块对应的程序。程序可使用指针存储数据到该存储器块。在不再需要该块时,程序可例如使用标准释放例程,释放该存储器块。释放例程将该存储器块标记为可用,以便该块可另行分配。如上所述,由于在使用标准malloc和释放例程时不可保留与事务处理码相关联的语义,因此,目前这些标准或常规存储器分配和解除分配技术未结合事务处理码组使用。
附图说明
图1是根据实施例,包括具有事务处理功能的存储器管理系统的计算装置方框图。
图2是根据实施例,具有事务处理功能的存储器管理的方框图。
图3是在实施例的情况下,在事务处理中时用于管理存储器的流程图。
具体实施方式
方法和系统实施例提供用于在事务处理码中,包括在嵌套事务处理码中时用于管理存储器分配和解除分配。通过使用诸如一个或多个序号(sequence number)的一个或多个唯一标识符来处理事务处理中的存储器管理,各种实施例提供了事务处理存储器管理。实施例也保持在事务处理中止和提交时要执行的延迟动作列表。与一个或多个事务处理相关联的多个存储器管理例程检查当前事务处理的事务处理序号,操控提交和/或撤消日志,以及设置/使用相关联对象的事务处理序号,但并不限于此。在事务处理和其它设置中处理其它事件时,可应用本文所述用于处理在事务处理中,包括在嵌套事务处理中的存储器管理的事务处理存储器管理技术。本文所述事务处理技术为减轻在多核和其它体系结构上编程提供了有效和宝贵的工具。
事务处理码体现了一种功能强大的构造,可用于管理并发以消除死锁,使编撰原子原语更容易及自动提供细粒(fine-grained)并发。事务处理可以硬件、软件或其组合的形式实现。软件实现可能更具程序员友好性,对事务处理实行有限大小约束并允许嵌套事务处理。在事务处理提交时,事务处理期间所作的更改一般存储在存储器中。事务处理中止时,分配和/或解除分配可能需要撤消或“回滚”。
在下面的说明中,介绍了许多特定的细节以提供系统和方法实施例的详尽理解和实现对这些实施例的描述。但相关领域的技术人员将认识到,这些实施例可在这些特定细节一处或多处不存在的情况下实践,或者可通过其它组件、系统等实践。在其它情况下,熟知的结构或操作未示出,或者未详细描述以避免混淆公开实施例的方面。
图1示出根据实施例,包括事务处理存储器管理系统101的计算装置100,系统具有相关联存储器管理器102和事务处理储存(transactional104。如下所述,事务处理储存104包括用于管理与事务处理相关联操作的多个例程或模块,但并不限于此。如通过如图2所示事务处理存储器管理系统200、存储器管理器204和存储器支持库206所述,事务处理存储器管理系统101、存储器管理器102和事务处理储存104在下面进行了详细描述。
存储器管理器102可以在一个或多个处理器上运行的软件算法、固件和硬件的任意组合形式实现,其中,软件可存储在任何适合的计算机可读介质上,如存储在半导体芯片中、计算机可读磁盘上等的微代码。虽然存储器管理器102和计算装置100可示为处于相同位置,但实施例并不限于此。各种备选实施例的存储器管理器102可在计算装置100或其它系统任何数量和/或类型的组件、模块和/或电路中分配一个或多个功能。
计算装置100包括任何计算系统,如手持式、移动计算系统、台式计算系统、膝上型计算系统、图形特定计算系统及其它计算系统。计算装置100一般包括至少一个处理单元和系统存储器108。在其它实施例中,计算装置100可包括多个处理器和其它组件。视计算装置的配置和类型而定,系统存储器108可以为易失性(如随机存取存储器(RAM)或其它动态存储装置(storage))、非易失性(如只读存储器(ROM)、闪存等)或某一组合。系统存储器108也可包括实现为软件、硬件或其组合的事务处理存储器功能。
系统存储器108可包括操作系统110和一个或多个应用112。计算装置100可包括另外的计算机存储装置114,如磁性存储装置、光存储装置等。计算机存储装置包括但不限于RAM、ROM、电可擦除可编程只读存储装置(EEPROM)、闪存或其它存储器技术、压缩盘ROM(CD-ROM)、数字多功能磁盘(DVD)或其它光存储装置、磁带盒、磁带、磁存储装置或其它磁性存储装置或可用于存储信息的任何其它介质。计算装置100也可包括一个或多个输入装置116和一个或多个输出装置118。计算装置100也可包含允许计算装置100如通过有线和/或无线网络或其它网络与其它计算装置122、处理器和/或系统通信的通信连接120。
图2是根据实施例的事务处理存储器管理系统200方框图。虽然图2中示出了应用202,但事务处理存储器管理系统200可与其它客户端(例如,驱动程序、装置等)交互。事务处理存储器管理系统200的描述将包括用于说明的“C”编程构造(construct),但实施例并不限于此。
如下面进一步详细所述的一样,事务处理存储器管理系统200能够在事务处理码组中,包括在嵌套事务处理码组中时对存储器进行分配和解除分配,但并不限于此。在程序或应用中,事务处理一般指应以原子方式执行的代码段。在一些情况下,在执行事务处理码的同时,只可暂时而非永久性更改存储器。在完成事务处理码后,如果确定执行以原子方式发生,则可通过使存储器更改变为永久性来提交事务处理。否则,如果与另一事务处理有冲突,则事务处理可能被中止,并且对存储器所做的暂时更改可能被丢弃。
事务处理存储器管理系统200包括与软件事务处理存储器(STM)库206、应用202和已分配对象205交互的存储器管理器204。根据实施例,已分配对象指与使用事务处理存储器管理系统200的分配或解除分配过程相关联的虚拟存储器块。例如,应用202可使用存储器管理器204,基于下述各种标准为对象205进行分配和/或解除分配。
如图2所示,已分配对象可包括两个区域:由应用202用于存储数据的第一区域205a和用于存储“序号”(序号字段)的第二区域205b。在各种实施例中,序号字段可以为对象头部的一部分、单独的表或线程本地存储装置(thread-local storage)208,这取决于特定的实现。如下所述,在确定对象是否是前瞻(speculatively)分配、前瞻释放、均衡(balanced)释放等时可使用序号和其它信息。前瞻分配和解除分配可有助于降低存储器等待时间,如果相关联操作只有在确定操作是否要进行时才发出,可能产生存储器等待时间存储器。虽然图2示出了事务处理存储器管理系统200的一种配置,但可使用其它配置。
线程本地存储装置(TLS)208提供了存储装置,用于存储与一个或多个软件线程相关联信息,包括任何相关联事务处理。在实施例中,每个软件线程在存储器中具有唯一的线程本地存储空间。线程本地存储装置208可以为诸如RAM等系统存储器108的一部分,但并不限于此。线程本地存储装置208包括线程状态210,该状态与包括嵌套事务处理在内的一个或多个事务处理和其它信息相关联。
根据实施例,线程状态210包括顺序计数器210a、事务处理序号210b、撤消日志210c、提交日志210d、其它事务处理状态210e及用于嵌套事务处理状态210f的堆栈。为在提交和中止点保持正确的语义,可能需要撤消的操作记录在撤消日志210c和提交日志210d中。撤消日志210c是在事务处理中止事件时可能需要撤消的所有事务处理的日志。要撤消分配,可释放存储器,但并不限于此。提交日志210d是在以后的提交前未保证执行且因此必须延迟的所有解除分配日志。要提交解除分配,可释放存储器,但并不限于此。
如下进一步所述,诸如一个或多个序号等一个或多个指示器可由系统200用于有效地确定何时可安全地释放存储器分配。序号可以是线程本地值,该值可增大以在线程上所有事务处理(包括嵌套事务处理)之间提供唯一排序。可使用n比特序号(例如,64比特),这可防止序号溢出。在执行解除分配时,要解除分配的对象205b的序号与当前事务处理的序号210b进行比较。序号之间的关系确定释放操作是“均衡释放”还是“前瞻释放”。序号之间的关系也确定分配是否“前瞻”。
例如,可能存在如下所示与事务处理相关联的三种事务处理状态。
//最初,seq(trans)=0在事务处理之外
x=malloc(size);//seq=0
transaction{//seq(trans)=1
y=malloc(size);//seq=1
z=malloc(size);//seq=1
//A点
free(x);//(1>0)为真,因此为前瞻释放
//B点
free(y);//(1>1)为假,因此为均衡释放
}//提交时,事务处理编号弹出->seq(trans)=0
//撤消日志被取消
//处理提交日志(包含free(x))
//(0>0)为假,因此free(x)成为均衡释放
//C点
free(z);//(0>1)为假,因此为均衡释放
end
在A点,y和z均被认为是前瞻分配。也就是说,如果在此点发生事务处理中止,y必须解除分配以便将状态回滚到事务处理的开始。在B点,x被认为是前瞻释放。也就是说,如果在此点发生事务处理中止,则x指向的存储器必须保持有效。换而言之,x的解除分配应延迟。与此相反,y的解除分配可能不需要延迟,这是因为y的最终状态已解除分配而无论是否发生事务处理提交或中止。y的此状态称为均衡。也就是说,在达到释放操作后,事务处理将提交或中止。如果事务处理中止,则由于事务处理操作回滚,因此,存储器好象在最初位置从未分配过一样。如果事务处理提交,则分配和释放均将提交,并且存储器块仍被释放。因此,无论事务处理是否提交,该块均将空闲。在C点,假设未遇到中止,由于分配已提交,因此,z不再是前瞻分配。
如在各种实施例说明中所使用一样,但并不限于此:
1)事务处理内的malloc称为前瞻分配。
2)在seq(对象)<seq(事务处理)时释放事务处理内的对象称为前瞻释放。
3)在seq(对象)>=seq(事务处理)时释放事务处理内的对象称为均衡释放。
4)事务处理中止:在该事务处理中前瞻分配的对象(根据seq(对象)>=seq(事务处理)检测到)被释放(空闲)
5)事务处理提交:在该事务处理中前瞻释放、在包含的事务处理上下文中非前瞻释放的对象(根据pop(seq(transaction))后seq(对象)>=seq(事务处理)检测到)被释放(空闲)
下面提供了各种状态的其它示例。
前瞻分配的示例描述如下:
transaction{
x=malloc(size);
//A点
}
//B点
在此示例中,存储器分配发生在事务处理内。如果事务处理提交,则存储器已分配。另一方面,如果事务处理中止,则状态为好象分配从未发生一样,并且分配应撤消(释放)。在A点的存储器状态称为前瞻分配。在事务处理提交后(例如,在B点),分配被提交,并且状态不再是前瞻分配。
前瞻释放状态的示例描述如下:
x=malloc(size);
transaction{
free(x);
//A点
}
//B点
在此示例中,存储器分配在事务处理开始之前发生,因此,分配是非前瞻的。但是,释放操作在事务处理内发生。如果事务处理提交,则存储器应被释放。另一方面,如果事务处理中止,则存储器应保持已分配状态。在A点的存储器状态称为前瞻释放。在事务处理提交后(例如,在B点),释放被提交(也“被均衡”),并且不再是前瞻释放。
均衡释放示例描述如下:
transaction{
x=malloc(size);
//A点
free(x);
//B点
}
在此示例中,存储器分配和对应的解除分配均发生在事务处理内。在存储器第一次分配(A点)时,情况与上述前瞻分配情况相同。但是,一旦释放已执行(B点),释放现在便被均衡。也就是说,如果事务处理中止,则由于事务处理操作回滚到以前状态,因此,分配或释放均未发生。相应地,存储器空闲,如同在事务处理中分配之前一样。类似地,如果事务处理提交,则malloc和释放均被提交,因此,最终结果仍是存储器块空闲。另外,它不再考虑(在B点)事务处理是提交还是中止(无论如何存储器空闲)。因此,释放被均衡,并且可容易处理。另外,如下所述,相关联存储器块一旦已变为均衡释放,但不再出现在提交或撤消日志中。
均衡释放状态是一个重要考虑因素。下面的情况是又一个示例:
transaction{
for(i=0;i<really_big_number;i++){
x=malloc(size);
free(x);
}
}
在此示例中,在每次循环迭代中分配的存储器在该循环迭代结束时被均衡,并且易于释放。存储器管理器204可在事务处理期间但在事务处理结束之前分配。如果存储器管理器204延迟释放操作,直至事务处理结束,则此循环可使用无限量的存储器,这不是存储器管理器204所希望的结果。
下面提供了说明性嵌套事务处理示例:
//在事务处理之外,seq=0
x=malloc(size);//seq=0
z=NULL;
transaction{//seq=1
y=malloc(size);//seq=1
transaction{//seq=2
free(x);//2>0->前瞻释放
free(y);//2>1->前瞻释放
z=malloc(size);//seq=2
}
//1>0真->free(x)仍为前瞻释放
//1>1假->free(y)在提交后均衡
//z的记录在最终提交前仍存在于撤消日志中
transaction{//seq=3
free(z);//3>2,因此,释放是前瞻的(只添加到提交日志)
abort();//提交日志回滚到在事务处理开始时所取检验点,取消z的前瞻释放。注意,x在此检验点之前被释放,因此,释放不在此处取消。//
}
abort();//提交日志回滚到在事务处理开始时所取检验点位置,取消x的前瞻释放。撤消日志回滚,直至seq(对象)=seq(事务处理),从而一直释放前瞻分配(在此示例中为z)//
}
图3是在实施例的情况下,在诸如事务处理码组等事务处理中时用于管理存储器的流程图。在图3流程描述中将参考图2。例如,应用(或程序)202可指定一个或多个码组为事务处理码组,这些码组可包括嵌套事务处理。应用202可通过调用例如在软件事务处理存储器库206中诸如开始事务处理例程212等例程,描述事务处理的开始。事务处理从300开始。
在302-306,调用的例程设置事务处理状态210e,并向事务处理分配序号210b。状态随后可保存到线程本地存储装置208。在本文中使用时,事务处理的序号称为“seq(事务处理)”,并在下述各种操作中使用。根据实施例,事务处理的序号210b设为线程本地顺序计数器210a的增大值。如果在嵌套事务处理内,则作为操作的一部分,例程将事务处理状态,包括与此状态相关联的原事务处理序号或前事务处理序号推送到嵌套事务处理堆栈210f。术语“弹出”和“推送”指在诸如嵌套事务处理栈210f等堆栈数据结构上执行的操作。嵌套事务处理堆栈210f也可用于支持嵌套事务处理,而独立于使用序号。堆栈操作包括但不限于创建新堆栈,将新项目推送到堆栈和/或将项目弹出堆栈。
在308,流程继续确定事务处理是否在尝试分配或解除分配过程。也就是说,事务处理码组可包括代码结构内的一个或多个分配或解除分配调用。在实施例中,存储器管理器204提供接口,以便应用202在事务处理中,包括在嵌套事务处理中时对存储器区或块进行分配和解除分配。如下所述,存储器管理器204可在诸如分配和解除分配过程期间从软件事务处理存储器库206调用各种例程。
如果事务处理包括分配过程调用,则存储器管理器204可在用于分配过程的软件事务处理存储器库206中调用诸如分配例程214等例程。在310,除分配对象205(例如,存储器块)外,可分配的对象205序号205b设为当前事务处理的序号210b(例如,当前事务处理的序号置于已分配对象的序号字段中)。在本文中使用时,对象的序号称为“seq(对象)”,并在下述各种操作中使用。在312,对象205的记录插入撤消日志210c中。
在实施例中,分配例程214在被调用时,执行如下:
malloc(size_tsize){
p=typical_malloc_actions(size);
if(in_transaction){
sequence_number(p)=sequence_number(current_transaction);
insert_undo_log_entry(p);
flagged_for_transactional_malloc=TRUE;
}
return p;
}.
如果事务处理包括解除分配过程调用,则存储器管理器204可在用于解除分配过程的软件事务处理存储器库206中调用诸如解除分配例程216等例程。在314,对象205的序号205b与事务处理序号210b进行比较。这些序号之间的关系确定释放是否为均衡释放,或者对象205是否为前瞻释放。如果对象205的序号205b小于事务处理序号210b,则对象205可能在当前事务处理之外已分配,并且在316,对象205被插入提交日志210d中。在该点,对象205为前瞻释放,并且相关联存储器块的释放可延迟至以后的点。相反地,如果对象205的序号205b大于或等于事务处理序号210b,则在318-320,对象205将从撤消日志210c中删除,并且对象205可安全地释放。
在实施例中,解除分配(释放)例程216在被调用时执行如下:
free(pointer p){
if(in_transaction){
if(sequence_number(p)>=
sequence_number(current_transaction)){
remove_undo_undo_entry(p);
free_for_real(p);
}else{
insert_commit__log_entry(p);
flagged_for_transactional_malloc=TRUE;
}
}else{
free_for_real(p);}
}
在321,同样地确定事务处理是否在尝试分配或解除分配过程。如果事务处理在尝试另一分配或解除分配过程,则流程返回308并如上所述继续。如果事务处理未尝试另一分配或解除分配过程,则流程继续到322。在322,应用202可提交或中止事务处理。例如,应用202可描述何时通过调用软件事务处理存储器库206中诸如提交例程218或中止例程220等例程提交或中止事务处理。另外,如果发现另一事务处理或操作在请求的提交时已违反事务处理的原子性,则也可中止事务处理。提交例程218或中止例程220可在适当时使用存储器管理器204调用相关联提交或中止钩子(hook)以便处理提交日志210d和/或撤销日志210c。
如果在324事务处理提交,则在从嵌套事务处理返回时,父事务处理的序号作为软件事务处理存储器库206操作的一部分从堆栈210f弹出。另外,对于顶层(top-level)提交,分配所有前瞻分配对象,包括重置或清空撤消日志210c。也就是说,一旦事务处理提交,便将无需撤消事务处理。在326,处理提交日志210d,并将其中的条目序号与父事务处理的序号进行比较。此比较确定提交日志210d中的一个或多个对象是否保持前瞻释放或者已变为均衡释放。如果诸如对象205等对象已变为均衡释放,则它从提交日志210d删除并被释放。
在实施例中,提交例程218在被调用时执行如下:
commit(){
perform_typical_commit_actions();
if(flagged_for_transactional_malloc){
pop_sequence_number();
for_each object in commit_log scanning backwards{
if(object==commit_log_checkpoint){
break;
}
if(sequence__number(object)>=
sequence_number(transaction)){
free_for_real(object);
}
}
if(nesting_depth==0){
reset_undo_log();
flagged_for_transactional_malloc=FALSE;
}
pop_commit_log_checkpoint();
}
}.
如果除软件事务处理存储器库206中止动作外,事务处理中止,则可检查撤消日志210c和提交日志210d。在实施例中,反向扫描撤消日志210c,比较序号以确定是否在被中止的事务处理内前瞻分配了任何对象。随后,任何已中止分配可被回滚和释放。另外,放弃在已中止事务处理期间插入的提交日志210d中的任何条目,由此将提交日志210d恢复到已中止事务处理前的状态。在328,对于对象的序号大于或等于事务处理序号210b的情况,释放撤消日志条目。在330,在从嵌套事务处理返回时,父事务处理的序号作为软件事务处理存储器库206操作一部分从堆栈210f弹出。
在实施例中,中止例程220在被调用时执行如下:
abort(){
perform_typical_abort_actions();
if(flagged_for_transactional_malloc){
for_each object in undo_log scanning backwards{
if(sequence_number(object)<
sequence_number(transaction)){
break;
}
free_for_real(object);
}
restore_commit_log_to_checkpoint();
pop_sequence_number();
flagged_for_transactional_malloc=FALSE;
}
}.
本文所述方法和系统的各方面可实现为编程到任意各种电路中的功能,包括诸如现场可编程门阵列(“FPGA”)、可编程阵列逻辑(“PAL”)器件、电可编程逻辑和存储器件和基于单元的标准器件等可编程逻辑器件(“PLD”)及专用集成电路。实现也可包括具有存储器(如EEPROM)的微控制器、嵌入式微处理器、固件、软件等。此外,各方面可在具有基于软件的电路仿真的微处理器、离散逻辑(时序和组合)、定制器件(custom device)、模糊(神经)逻辑、量子器件及任何上述装置类型混合体中实施。当然,底层器件(underlying device)技术可在多种组件类型中提供,如象互补型金属氧化半导体(“CMOS”)的金属氧化半导体场效晶体管(“MOSFET”)技术、象发射极耦合逻辑(“ECL”)的双极技术、聚合物技术(例如,含硅共轭聚合物和金属共轭聚合物-金属结构)、混合模拟和数字等。
术语“处理器”如在本文中通用的一样,指任何逻辑处理单元,如一个或多个中央处理器(“CPU”)、数字信号处理器(“DSP”)、专用集成电路(“ASIC”)等。虽然术语“组件”在本文通用,但要理解,“组件”包括电路、组件、模块和/或如这些术语在本领域所熟知的电路、组件和/或模块的任何组合。
本文公开的各种组件和/或功能可通过使用硬件、固件和/或包含在各种机器可读或计算机可读介质中的数据和/或指令的任何数量组合,根据其行为、寄存器传送、逻辑组件和/或其它特征进行描述。其中可包含此类格式化数据和/或指令的计算机可读介质包括但不限于各种形式的非易失性存储介质(例如,光、磁性或半导体存储介质)和可用于通过无线、光或有线信令介质或其任何组合传输此类格式化数据和/或指令的载波。通过载波传输此类格式化数据和/或指令的示例包括但不限于经一个或多个数据传送协议,通过因特网和/或其它计算机网络传输(上载、下载、电子邮件等)。
除非上下文明确要求,否则,在说明书和权利要求书通篇中字词“包括”及诸如此类要理解为有包含意义而不是排它或详尽意义,也就是说,有“包括但不限于”的意义。使用单数或复数的字词也分别包括复数或单数的意义。另外,字词“在本文”、“在下文”、“上述”、“下面”及类似的导入字词应将本申请作为一个整体参考而不是参考本申请的任何特定部分。在有关两个或更多项目的序列中使用字词“或”时,该字词包含所有以下字词解释:序列中的任何项目、序列中的所有项目及序列中项目的任何组合。
所示实施例的上述说明无意详尽或受限于公开内容。虽然为便于说明而在本文描述了系统和方法的特定实施例和示例,但相关领域的技术人中将认识到可能实现各种相当的修改。本文提供的示教可应用于其它系统和方法,而不只是用于上述系统和方法。上述各种实施例的要素和动作可组合以提供其它实施例。鉴于上述详细说明,可对方法和系统实现这些和其它更改。
通常,在下面的权利要求书中,使用的术语不应视为限于说明书和权利要求书中公开的特定实施例,而应视为包括在权利要求书指引下操作的所有系统和方法。相应地,方法和系统并不受公开内容限制,范围要完全根据权利要求书确定。虽然下面以某些权利要求项形式显示了某些方面,但发明者以任意数量的权利要求项形式考虑不同方面。例如,虽然只有一个方面叙述为包含在机器可读介质中,但其它方面可类似地包含在机器可读介质中。相应地,发明者可保留在提交申请后添加其它权利要求项的权利,以便也为其它方面采取此类另外的权利要求项形式。
Claims (20)
1.一种用于管理事务处理的系统,包括:
存储器管理器,所述存储器管理器管理事务处理分配和解除分配,其中,所述存储器管理器包括至少一个指示器,以跟踪每个分配的对象并评估所述事务处理分配和解除分配;
事务处理储存,所述事务处理储存包括管理与所述事务处理相关联操作的至少一个模块,其中管理与所述事务处理相关联操作的所述至少一个模块使用至少一个指示器跟踪和评估所述事务处理分配和解除分配;以及
存储装置,所述存储装置存储与所述事务处理相关联信息。
2.如权利要求1所述的系统,其中所述存储装置还包括线程本地存储装置,所述线程本地存储装置存储与软件线程相关联的信息,所述信息包括与所述软件线程相关联的事务处理状态。
3.如权利要求2所述的系统,其中所述事务处理状态还包括至少事务处理序号、提交日志和撤消日志之一。
4.如权利要求3所述的系统,还包括分配模块,其中所述分配模块使用所述事务处理序号确定分配状态。
5.如权利要求4所述的系统,其中所述解除分配模块使用所述事务处理序号确定解除分配状态。
6.如权利要求1所述的系统,还包括一个或多个事务处理模块,其中所述一个或多个事务处理模块比较事务处理序号与对象序号以确定至少事务处理分配和事务处理解除分配之一的状态。
7.如权利要求6所述的系统,还包括线程序号,其中所述线程序号增大以跟踪线程的多个事务处理。
8.如权利要求1所述的系统,其中所述事务处理储存包括至少事务处理分配模块、解除分配模块、提交模块和中止模块之一。
9.一种系统,包括:
事务处理分配模块,所述事务处理分配模块管理与一个或多个事务处理相关联的分配操作,其中所述事务处理分配模块要至少部分基于与已分配对象相关联的事务处理指示器来确定分配状态;以及
事务处理解除分配模块,所述事务处理解除分配模块管理与所述一个或多个事务处理相关联解除分配操作,其中所述事务处理解除分配模块要至少部分基于与所述已分配对象相关联的所述事务处理指示器来确定是否对所述已分配对象解除分配。
10.如权利要求9所述的系统,还包括事务处理提交模块,所述事务处理提交模块管理与所述一个或多个事务处理相关联的提交操作。
11.如权利要求9所述的系统,还包括事务处理中止模块,所述事务处理中止模块管理与所述一个或多个事务处理相关联的中止操作。
12.如权利要求9所述的系统,其中所述系统还包括事务处理存储器管理系统。
13.如权利要求12所述的系统,还包括存储器管理器,所述存储器管理器管理事务处理分配和解除分配。
14.如权利要求9所述的系统,还包括:
撤消日志,所述撤消日志在事务处理中止的事件发生时记录用于撤消过程的分配;以及
提交日志,所述提交日志记录延迟的解除分配。
15.一种用于管理存储器的方法,包括:
启动与事务处理码组相关联的事务处理;
指配第一指示器以识别与所述事务处理相关联的至少一个操作;
使用所述第一指示器识别至少事务处理分配和事务处理解除分配之一的状态;
确定所述事务处理是否成功;以及
基于所述成功确定来提供结果。
16.如权利要求15所述的方法,还包括在与所述事务处理相关联的所述至少一个操作未成功时中止所述事务处理。
17.如权利要求15所述的方法,还包括指配第二指示器以在所述事务处理将分配对象时识别要分配的所述对象。
18.如权利要求17所述的方法,还包括在所述事务处理将对对象解除分配时比较所述第一指示器与所述第二指示器,其中所述比较确定解除分配状态。
19.如权利要求15所述的方法,还包括在所述线程包括多个事务处理时使用所述第一指示器监视线程的事务处理。
20.如权利要求15所述的方法,还包括在所述事务处理码组的操作成功时提交所述事务处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210277726.0A CN102929785B (zh) | 2006-05-02 | 2007-05-01 | 在事务处理码内对存储器分配和解除分配的系统和方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/415,523 US7636829B2 (en) | 2006-05-02 | 2006-05-02 | System and method for allocating and deallocating memory within transactional code |
US11/415,523 | 2006-05-02 | ||
PCT/US2007/010483 WO2007130367A2 (en) | 2006-05-02 | 2007-05-01 | System and method for allocating and deallocating memory within transactional code |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210277726.0A Division CN102929785B (zh) | 2006-05-02 | 2007-05-01 | 在事务处理码内对存储器分配和解除分配的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101432702A true CN101432702A (zh) | 2009-05-13 |
CN101432702B CN101432702B (zh) | 2012-09-26 |
Family
ID=38662303
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800155299A Active CN101432702B (zh) | 2006-05-02 | 2007-05-01 | 在事务处理码内对存储器分配和解除分配的系统和方法 |
CN201210277726.0A Active CN102929785B (zh) | 2006-05-02 | 2007-05-01 | 在事务处理码内对存储器分配和解除分配的系统和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210277726.0A Active CN102929785B (zh) | 2006-05-02 | 2007-05-01 | 在事务处理码内对存储器分配和解除分配的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (3) | US7636829B2 (zh) |
EP (1) | EP2024837B1 (zh) |
CN (2) | CN101432702B (zh) |
WO (1) | WO2007130367A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289393A (zh) * | 2010-06-21 | 2011-12-21 | 微软公司 | 软件事务存储器中的锁的组成 |
CN102449613A (zh) * | 2009-06-03 | 2012-05-09 | 美光科技公司 | 固态装置中的面向对象的存储器 |
CN103562874A (zh) * | 2011-06-10 | 2014-02-05 | 国际商业机器公司 | 解除配置存储级内存命令 |
US9411634B2 (en) | 2010-06-21 | 2016-08-09 | Microsoft Technology Licensing, Llc | Action framework in software transactional memory |
Families Citing this family (115)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7636829B2 (en) | 2006-05-02 | 2009-12-22 | Intel Corporation | System and method for allocating and deallocating memory within transactional code |
CN101681282A (zh) * | 2006-12-06 | 2010-03-24 | 弗森多系统公司(dba弗森-艾奥) | 用于共享的、前端、分布式raid的装置、系统和方法 |
US8489817B2 (en) | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
US8719807B2 (en) * | 2006-12-28 | 2014-05-06 | Intel Corporation | Handling precompiled binaries in a hardware accelerated software transactional memory system |
US7802136B2 (en) * | 2006-12-28 | 2010-09-21 | Intel Corporation | Compiler technique for efficient register checkpointing to support transaction roll-back |
US8132158B2 (en) * | 2006-12-28 | 2012-03-06 | Cheng Wang | Mechanism for software transactional memory commit/abort in unmanaged runtime environment |
US8185698B2 (en) * | 2007-04-09 | 2012-05-22 | Bratin Saha | Hardware acceleration of a write-buffering software transactional memory |
US8396937B1 (en) * | 2007-04-30 | 2013-03-12 | Oracle America, Inc. | Efficient hardware scheme to support cross-cluster transactional memory |
US8140773B2 (en) | 2007-06-27 | 2012-03-20 | Bratin Saha | Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM |
US9280397B2 (en) * | 2007-06-27 | 2016-03-08 | Intel Corporation | Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata |
US9519540B2 (en) | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US7904668B2 (en) * | 2007-12-31 | 2011-03-08 | Oracle America, Inc. | Optimistic semi-static transactional memory implementations |
US7966459B2 (en) * | 2007-12-31 | 2011-06-21 | Oracle America, Inc. | System and method for supporting phased transactional memory modes |
US20090204969A1 (en) * | 2008-02-11 | 2009-08-13 | Microsoft Corporation | Transactional memory with dynamic separation |
US7908265B2 (en) * | 2008-02-19 | 2011-03-15 | Microsoft Corporation | Transactional memory with dynamic separation |
US8352557B2 (en) * | 2008-08-11 | 2013-01-08 | Centurylink Intellectual Property Llc | Message filtering system |
US8245244B2 (en) * | 2008-08-26 | 2012-08-14 | Intel Corporation | Device, system, and method of executing a call to a routine within a transaction |
US8812796B2 (en) | 2009-06-26 | 2014-08-19 | Microsoft Corporation | Private memory regions and coherence optimizations |
US8250331B2 (en) * | 2009-06-26 | 2012-08-21 | Microsoft Corporation | Operating system virtual memory management for hardware transactional memory |
US8161247B2 (en) * | 2009-06-26 | 2012-04-17 | Microsoft Corporation | Wait loss synchronization |
US8489864B2 (en) * | 2009-06-26 | 2013-07-16 | Microsoft Corporation | Performing escape actions in transactions |
US8370577B2 (en) | 2009-06-26 | 2013-02-05 | Microsoft Corporation | Metaphysically addressed cache metadata |
US8356166B2 (en) * | 2009-06-26 | 2013-01-15 | Microsoft Corporation | Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers |
US8229907B2 (en) * | 2009-06-30 | 2012-07-24 | Microsoft Corporation | Hardware accelerated transactional memory system with open nested transactions |
US9459963B2 (en) * | 2009-09-03 | 2016-10-04 | International Business Machines Corporation | Safely rolling back transactions in a transactional memory system with concurrent readers |
WO2011031796A2 (en) | 2009-09-08 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for caching data on a solid-state storage device |
WO2011031903A2 (en) | 2009-09-09 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for allocating storage |
US9122579B2 (en) | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
US9223514B2 (en) | 2009-09-09 | 2015-12-29 | SanDisk Technologies, Inc. | Erase suspend/resume for memory |
US8289801B2 (en) | 2009-09-09 | 2012-10-16 | Fusion-Io, Inc. | Apparatus, system, and method for power reduction management in a storage device |
US8402218B2 (en) * | 2009-12-15 | 2013-03-19 | Microsoft Corporation | Efficient garbage collection and exception handling in a hardware accelerated transactional memory system |
US8539465B2 (en) | 2009-12-15 | 2013-09-17 | Microsoft Corporation | Accelerating unbounded memory transactions using nested cache resident transactions |
US8533440B2 (en) * | 2009-12-15 | 2013-09-10 | Microsoft Corporation | Accelerating parallel transactions using cache resident transactions |
US9092253B2 (en) * | 2009-12-15 | 2015-07-28 | Microsoft Technology Licensing, Llc | Instrumentation of hardware assisted transactional memory system |
WO2011143628A2 (en) | 2010-05-13 | 2011-11-17 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
WO2012016089A2 (en) | 2010-07-28 | 2012-02-02 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
US8725934B2 (en) | 2011-12-22 | 2014-05-13 | Fusion-Io, Inc. | Methods and appratuses for atomic storage operations |
US9658877B2 (en) | 2010-08-23 | 2017-05-23 | Empire Technology Development Llc | Context switching using a context controller and on-chip context cache |
US8984216B2 (en) | 2010-09-09 | 2015-03-17 | Fusion-Io, Llc | Apparatus, system, and method for managing lifetime of a storage device |
US9047178B2 (en) | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
US9218278B2 (en) | 2010-12-13 | 2015-12-22 | SanDisk Technologies, Inc. | Auto-commit memory |
US9208071B2 (en) | 2010-12-13 | 2015-12-08 | SanDisk Technologies, Inc. | Apparatus, system, and method for accessing memory |
WO2012082792A2 (en) | 2010-12-13 | 2012-06-21 | Fusion-Io, Inc. | Apparatus, system, and method for auto-commit memory |
US10817421B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent data structures |
US10817502B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent memory management |
WO2012083308A2 (en) | 2010-12-17 | 2012-06-21 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
US9213594B2 (en) | 2011-01-19 | 2015-12-15 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing out-of-service conditions |
US9201677B2 (en) | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
US9141527B2 (en) | 2011-02-25 | 2015-09-22 | Intelligent Intellectual Property Holdings 2 Llc | Managing cache pools |
WO2012129191A2 (en) | 2011-03-18 | 2012-09-27 | Fusion-Io, Inc. | Logical interfaces for contextual storage |
US9563555B2 (en) | 2011-03-18 | 2017-02-07 | Sandisk Technologies Llc | Systems and methods for storage allocation |
US9043363B2 (en) * | 2011-06-03 | 2015-05-26 | Oracle International Corporation | System and method for performing memory management using hardware transactions |
US9058243B2 (en) | 2011-06-10 | 2015-06-16 | International Business Machines Corporation | Releasing blocks of storage class memory |
US9021179B2 (en) | 2011-06-10 | 2015-04-28 | International Business Machines Corporation | Store storage class memory information command |
US9021180B2 (en) | 2011-06-10 | 2015-04-28 | International Business Machines Corporation | Clearing blocks of storage class memory |
US9116788B2 (en) | 2011-06-10 | 2015-08-25 | International Business Machines Corporation | Using extended asynchronous data mover indirect data address words |
US9116634B2 (en) | 2011-06-10 | 2015-08-25 | International Business Machines Corporation | Configure storage class memory command |
US9021226B2 (en) | 2011-06-10 | 2015-04-28 | International Business Machines Corporation | Moving blocks of data between main memory and storage class memory |
US9116789B2 (en) | 2011-06-10 | 2015-08-25 | International Business Machines Corporation | Chaining move specification blocks |
US9058275B2 (en) | 2011-06-10 | 2015-06-16 | International Business Machines Corporation | Data returned responsive to executing a start subchannel instruction |
EP2756406B1 (en) | 2011-09-14 | 2020-07-22 | Hewlett-Packard Enterprise Development LP | Imparting durability to a transactional memory system |
US9274937B2 (en) | 2011-12-22 | 2016-03-01 | Longitude Enterprise Flash S.A.R.L. | Systems, methods, and interfaces for vector input/output operations |
US9251086B2 (en) | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US8682877B2 (en) * | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US8688661B2 (en) * | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US8966324B2 (en) | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
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 |
US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
US10515141B2 (en) | 2012-07-18 | 2019-12-24 | Software Ag Usa, Inc. | Systems and/or methods for delayed encoding of XML information sets |
US9922089B2 (en) | 2012-07-18 | 2018-03-20 | Software Ag Usa, Inc. | Systems and/or methods for caching XML information sets with delayed node instantiation |
US9760549B2 (en) * | 2012-07-18 | 2017-09-12 | Software Ag Usa, Inc. | Systems and/or methods for performing atomic updates on large XML information sets |
US10346095B2 (en) | 2012-08-31 | 2019-07-09 | Sandisk Technologies, Llc | Systems, methods, and interfaces for adaptive cache persistence |
US10318495B2 (en) | 2012-09-24 | 2019-06-11 | Sandisk Technologies Llc | Snapshots for a non-volatile device |
US10509776B2 (en) | 2012-09-24 | 2019-12-17 | Sandisk Technologies Llc | Time sequence data management |
JP2014085896A (ja) * | 2012-10-25 | 2014-05-12 | International Business Maschines Corporation | トランザクション処理方法、プログラム及びシステム |
US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US9274840B2 (en) * | 2013-03-15 | 2016-03-01 | International Business Machines Corporation | Dynamic memory management with thread local storage usage |
US10558561B2 (en) | 2013-04-16 | 2020-02-11 | Sandisk Technologies Llc | Systems and methods for storage metadata management |
US10102144B2 (en) | 2013-04-16 | 2018-10-16 | Sandisk Technologies Llc | Systems, methods and interfaces for data virtualization |
US9842128B2 (en) | 2013-08-01 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for atomic storage operations |
US10019320B2 (en) | 2013-10-18 | 2018-07-10 | Sandisk Technologies Llc | Systems and methods for distributed atomic storage operations |
US10073630B2 (en) | 2013-11-08 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for log coordination |
KR102225525B1 (ko) | 2014-04-08 | 2021-03-09 | 삼성전자 주식회사 | 하드웨어 기반 메모리 관리 장치 및 메모리 관리 방법 |
US10048865B2 (en) * | 2014-10-24 | 2018-08-14 | Microsoft Technology Licensing, Llc | Disk partition stitching and rebalancing using a partition table |
US9946607B2 (en) | 2015-03-04 | 2018-04-17 | Sandisk Technologies Llc | Systems and methods for storage error management |
US10180921B2 (en) | 2015-06-26 | 2019-01-15 | International Business Machines Corporation | Non-interfering transactions |
US10318430B2 (en) | 2015-06-26 | 2019-06-11 | International Business Machines Corporation | System operation queue for transaction |
US9514006B1 (en) | 2015-12-16 | 2016-12-06 | International Business Machines Corporation | Transaction tracking within a microprocessor |
US11487755B2 (en) * | 2016-06-10 | 2022-11-01 | Sap Se | Parallel query execution |
US11734070B2 (en) * | 2019-11-19 | 2023-08-22 | Verizon Patent And Licensing Inc. | Systems and methods for providing a compare and swap platform for sequence number generation in a cloud computing environment |
US11586439B2 (en) | 2020-10-20 | 2023-02-21 | Micron Technology, Inc. | Detecting infinite loops in a programmable atomic transaction |
US20230251894A1 (en) * | 2020-10-20 | 2023-08-10 | Micron Technology, Inc. | Method of executing programmable atomic unit resources within a multi-process system |
US11403023B2 (en) | 2020-10-20 | 2022-08-02 | Micron Technology, Inc. | Method of organizing a programmable atomic unit instruction memory |
US11740929B2 (en) | 2020-10-20 | 2023-08-29 | Micron Technology, Inc. | Registering a custom atomic operation with the operating system |
US11436187B2 (en) | 2020-10-20 | 2022-09-06 | Micron Technology, Inc. | Method of notifying a process or programmable atomic operation traps |
US11693690B2 (en) | 2020-10-20 | 2023-07-04 | Micron Technology, Inc. | Method of completing a programmable atomic transaction by ensuring memory locks are cleared |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US2832508A (en) * | 1954-07-01 | 1958-04-29 | Wittgenstein Gerard Francis | Seed-sowing machines |
US5455944A (en) * | 1993-03-16 | 1995-10-03 | International Business Machines Corporation | Method for managing logging and locking of page free space information in a transaction processing system |
US5832508A (en) | 1996-09-18 | 1998-11-03 | Sybase, Inc. | Method for deallocating a log in database systems |
US6141585A (en) * | 1998-05-08 | 2000-10-31 | Intermedics Inc. | Implantable cardiac stimulator with electrode-tissue interface characterization |
US6185663B1 (en) * | 1998-06-15 | 2001-02-06 | Compaq Computer Corporation | Computer method and apparatus for file system block allocation with multiple redo |
US6353829B1 (en) * | 1998-12-23 | 2002-03-05 | Cray Inc. | Method and system for memory allocation in a multiprocessing environment |
JP3763992B2 (ja) | 1999-03-30 | 2006-04-05 | 富士通株式会社 | データ処理装置及び記録媒体 |
US6490671B1 (en) * | 1999-05-28 | 2002-12-03 | Oracle Corporation | System for efficiently maintaining translation lockaside buffer consistency in a multi-threaded, multi-processor virtual memory system |
US6529948B1 (en) | 1999-08-31 | 2003-03-04 | Accenture Llp | Multi-object fetch component |
US6427195B1 (en) * | 2000-06-13 | 2002-07-30 | Hewlett-Packard Company | Thread local cache memory allocator in a multitasking operating system |
US20020087734A1 (en) | 2000-12-29 | 2002-07-04 | Marshall Donald Brent | System and method for managing dependencies in a component-based system |
US7299242B2 (en) * | 2001-01-12 | 2007-11-20 | Sun Microsystems, Inc. | Single-word lock-free reference counting |
US6848033B2 (en) * | 2001-06-07 | 2005-01-25 | Hewlett-Packard Development Company, L.P. | Method of memory management in a multi-threaded environment and program storage device |
US7299269B2 (en) * | 2001-06-19 | 2007-11-20 | Sun Microsystems, Inc. | Dynamically allocating data buffers to a data structure based on buffer fullness frequency |
WO2003038683A1 (en) * | 2001-11-01 | 2003-05-08 | Verisign, Inc. | Transactional memory manager |
US7069396B2 (en) * | 2002-06-27 | 2006-06-27 | Hewlett-Packard Development Company, L.P. | Deferred memory allocation for application threads |
US7043509B2 (en) * | 2003-02-19 | 2006-05-09 | Sun Microsystems, Inc. | Parallel non-contiguous allocation and card parsing |
US7185167B2 (en) * | 2003-06-06 | 2007-02-27 | Microsoft Corporation | Heap allocation |
US7243088B2 (en) | 2003-08-06 | 2007-07-10 | Oracle International Corporation | Database management system with efficient version control |
US7952496B2 (en) * | 2004-08-31 | 2011-05-31 | Research In Motion Limited | Handheld electronic device and associated method employing a multiple-axis input device and reinitiating a text disambiguation session upon returning to a delimited word |
US20070083482A1 (en) * | 2005-10-08 | 2007-04-12 | Unmesh Rathi | Multiple quality of service file system |
US7636829B2 (en) | 2006-05-02 | 2009-12-22 | Intel Corporation | System and method for allocating and deallocating memory within transactional code |
-
2006
- 2006-05-02 US US11/415,523 patent/US7636829B2/en active Active
-
2007
- 2007-05-01 CN CN2007800155299A patent/CN101432702B/zh active Active
- 2007-05-01 EP EP07794436.1A patent/EP2024837B1/en active Active
- 2007-05-01 CN CN201210277726.0A patent/CN102929785B/zh active Active
- 2007-05-01 WO PCT/US2007/010483 patent/WO2007130367A2/en active Application Filing
-
2009
- 2009-11-10 US US12/615,565 patent/US7908456B2/en active Active
-
2011
- 2011-03-14 US US13/047,257 patent/US8190845B2/en active Active
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102449613A (zh) * | 2009-06-03 | 2012-05-09 | 美光科技公司 | 固态装置中的面向对象的存储器 |
CN102449613B (zh) * | 2009-06-03 | 2015-04-15 | 美光科技公司 | 固态装置中的面向对象的存储器 |
CN102289393A (zh) * | 2010-06-21 | 2011-12-21 | 微软公司 | 软件事务存储器中的锁的组成 |
US9411634B2 (en) | 2010-06-21 | 2016-08-09 | Microsoft Technology Licensing, Llc | Action framework in software transactional memory |
CN103562874A (zh) * | 2011-06-10 | 2014-02-05 | 国际商业机器公司 | 解除配置存储级内存命令 |
CN103562874B (zh) * | 2011-06-10 | 2017-04-26 | 国际商业机器公司 | 解除配置存储级内存命令 |
Also Published As
Publication number | Publication date |
---|---|
EP2024837B1 (en) | 2013-12-18 |
US20120066457A1 (en) | 2012-03-15 |
US7636829B2 (en) | 2009-12-22 |
CN101432702B (zh) | 2012-09-26 |
CN102929785B (zh) | 2016-02-10 |
US8190845B2 (en) | 2012-05-29 |
CN102929785A (zh) | 2013-02-13 |
WO2007130367A2 (en) | 2007-11-15 |
WO2007130367A3 (en) | 2007-12-27 |
US20100122060A1 (en) | 2010-05-13 |
EP2024837A2 (en) | 2009-02-18 |
EP2024837A4 (en) | 2011-01-26 |
US20070260608A1 (en) | 2007-11-08 |
US7908456B2 (en) | 2011-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101432702B (zh) | 在事务处理码内对存储器分配和解除分配的系统和方法 | |
US6813623B2 (en) | Method and apparatus for chunk based transaction logging with asynchronous input/output for a database management system | |
CN105612503B (zh) | 持久性数据结构 | |
CN100573446C (zh) | 执行存储器消歧的技术 | |
CN100576170C (zh) | 连续流程处理器流水线 | |
Wu et al. | Transaction healing: Scaling optimistic concurrency control on multicores | |
CA2610180C (en) | Managing memory pages | |
CN107256196A (zh) | 基于闪存阵列的支持零拷贝的缓存系统及方法 | |
CN100418052C (zh) | 使用循环计数实现增强循环队列的方法和装置 | |
CN103886109B (zh) | 一种实现数据库行锁的方法及装置 | |
CN1996258A (zh) | 一种动态内存池的实现方法 | |
US11880318B2 (en) | Local page writes via pre-staging buffers for resilient buffer pool extensions | |
US5369732A (en) | Method and apparatus for goal processing memory management | |
CN1510567A (zh) | 用于使用记录板机制处理加载锁定指令的方法和装置 | |
US8095731B2 (en) | Mutable object caching | |
CN104115127B (zh) | 存储系统和数据管理方法 | |
US7849110B2 (en) | Database garbage collector | |
US8990537B2 (en) | System and method for robust and efficient free chain management | |
CN112487472A (zh) | 基于交互式查询的自适应差分隐私预算分配方法及其系统 | |
CN111125070A (zh) | 一种数据交换方法及平台 | |
CN112035503B (zh) | 交易数据更新方法及装置 | |
US11741007B2 (en) | Memory guards for continuous load-adaptive processing of transactions in databases | |
US9606829B2 (en) | Suspending transactional-memory transactions without stack corruption | |
WO2023075910A1 (en) | Local page writes via pre-staging buffers for resilient buffer pool extensions | |
CN118140217A (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 |