CN101308462A - 管理对共享存储器单元的存储器访问的方法和计算系统 - Google Patents
管理对共享存储器单元的存储器访问的方法和计算系统 Download PDFInfo
- Publication number
- CN101308462A CN101308462A CN200810092377.9A CN200810092377A CN101308462A CN 101308462 A CN101308462 A CN 101308462A CN 200810092377 A CN200810092377 A CN 200810092377A CN 101308462 A CN101308462 A CN 101308462A
- Authority
- CN
- China
- Prior art keywords
- instruction
- affairs
- aig
- transaction
- 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
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
Abstract
本发明涉及一种管理对共享存储器单元的存储器访问的方法和计算系统。计算系统处理用于并行处理多个执行线程的存储器事务,通过支持所述并行处理多个执行线程而无需应用了解此情况。该计算系统的事务存储器支持在存储器中提供了事务表,以及提供了快速检测在多个事务之间的潜在冲突的方法。专用指令可标记事务的边界,以及标识适用于事务的存储器单元。可作为主数据存储的存储器单元的一部分直接寻址的“事务专用”(PTRAN)标签能够快速检测与所述计算系统的另一线程上并发执行的其他事务的潜在冲突。所述标签指示存储器中的数据表项是否为系统中当前激活的未提交事务的预测存储器状态的一部分。
Description
技术领域
本发明涉及计算机系统,更具体地,涉及具有事务存储器优化支持的计算系统。
背景技术
现在的多处理器和多线程计算系统能使得单个软件应用的性能扩大为单线程应用的可用性能的许多倍。现在的软件和硬件系统提供了多个执行线程的并行处理。软件应用可以使用现有的线程库,例如POSIX pthread线程库,以控制多个并行执行线程的创建。多个线程的使用能很好地用于涉及容易划分的任务和数据的应用。可使用过程粒度锁(course grain lock)来控制对为数不多的共享数据结构的访问,以防止在多个线程的数据更新之间造成的不常发生的冲突。
许多软件应用包含必须在多个线程之间共享的数据结构,并具有对共享数据结构的频繁并发检查以及更新。这些应用需要额外的修改,以在使用大量线程时获得较好的伸缩。使用访问共享数据结构的多个执行线程的应用目前需要使用专用的数据锁定例程,以产生不受死锁或损坏数据影响的可靠结果。大多数这种类型的现有多线程应用使用细粒度(fine grained)软件锁来实现良好性能和正确运行。编写使用细粒度软件锁的高性能多线程程序非常困难,而且需要专家级的编程技能。在软件业中对这些技能的匮乏极大地限制了需要使用共享数据结构的多线程应用的生产,因此限制了含有多种形式事务处理的用于某些应用类的多线程和多处理器计算系统的效用。
已经提出并建立各种“事务存储器”系统,以提供更简单的编程模型,用于构建需要控制对共享数据结构的访问的多线程应用。这些系统允许软件运行在一个执行线程上,从而可以乐观地假设可以在不与其他执行线程的访问和更新冲突的情况下更新共享数据结构。对存储器的预测(speculative)更新保持“未决”,直到事务存储器系统确定不存在与其他线程的存储访问的冲突。在检测到多个线程的存储访问之间的冲突时,事务存储器系统必须能够放弃未决的预测更新。现有的事务存储器系统既包括完全依靠新软件构造的系统,也包括为了获得合理性能而依靠硬件和软件配合的系统。在为支持所需的事务存储器行为而执行的指令数量方面,一些现有的系统具有很大的开销。其他现有的系统具有的限制涉及在高速缓存中保存对存储器的“未决”更新的复杂数据高速缓存结构。基于高速缓存的系统使用许多附加的高速缓存一致性状态,从而使得用于这些系统的设计和仿真工作大量增加。
近来,已经提出如第US2007/0028056号的微软美国专利申请公开所述的事务存储器系统,其使用与事务所访问的存储器单元关联的软件“加入记录”。微软系统在“加入记录”中还使用“版本值”。第US2007/0028056号公开的图3包括“对存储器单元的加入记录定位”的操作。图3的正文描述给出在引用的存储器地址处作为软件对象一部分的加入记录的实例。从第US2007/0028056号公开的第24段可以看出,微软发明人TimothyL.Harris指出使用“软件事务存储器接口”来创建加入记录。微软的第US2007/0028056号公开使用与每一加入记录相关的版本号,并且需要处理版本号超过加入记录所支持的最大数的情况。事后,在了解了我们发明的细节之后,会发现在事务存储器系统中近来发展的这些特征不再是必需的,并且可以对其进行改进。
初期(对于现在而言很早以前),在2005年4月8日,由威斯康星(Wisconsin)大学事务存储器工作室的David A.Wood概括的快节奏计算系统开发的发展中指出,(如在801存储:架构和编程中描述的)是IBM的Chang和Mergen提出了使用与虚拟存储器的每一个段关联的锁定位。他们的系统提供了检测多个线程对存储单元的并发访问的能力,但是也限制了在事务锁定机制激活时可以运行在任意一个虚拟存储器段上的并发线程的总数。Chang和Mergen需要用于执行并发线程的较大虚拟存储器页表不仅使得那些执行事务的执行线程,而且还使得使用虚拟存储器的所有执行线程都出现性能损失,所以Chang和Mergen的提议也变成了现有技术中的趣事,正如Wood所说“似乎没有人注意他们学到了什么”。本发明使用一种与系统的虚拟存储器页表截然不同的“事务表”。
Wood所不知道的是,在Chang和Mergen的IBM约克镇研究室中,已经正在进行与事务存储器系统相关的实验室开发,最终的作品是如题为“Architecture Support of Best-Effort Atomic Transactions forMultiprocessor Systems”的于2005年6月20日提交的Xiaowei Shen的序列号为11/156913的美国专利申请所述的最新事务存储器系统。
Shen描述了一种事务存储器系统,其重点是使用“作为由原子事务访问的数据的缓冲区的高速缓存”。在系统检测到“缓冲区溢出”时,XiaofeiShen强行设置为事务失败,但是没有提出如何解决从高速缓存驱逐预测数据的情况。如果太多的事务加载或存储将同一高速缓存作为目标,则会导致缓冲区溢出。溢出高速缓存和失败的事务的百分比与事务中包含的加载和存储数成比例。较长事务更容易失败。
还提出了使用高速缓存来实施冲突检测方案以及捕获溢出高速缓存的预测数据的其他系统。我们发现,其实并不期望主要依靠数据的高速缓存状态来进行冲突检测。所需的专用高速缓存状态导致所不希望的复杂度增加,也使得向现有多处理器高速缓存一致性设计增加所需的检测和隔离机制变得困难。尽管如此,除了Xiaowei Shen的开发之外,同样存在对充分利用已试过的高速缓存的许多尝试,包括Moore等,在他们的论文“LogTM:Log-based Transactional Memory”中描述了使用“前像日志”(before-image log)。Moore使用高速缓存一致性状态来实现冲突检测方案。另一种此类系统,Ananian等描述了使用一个“未分类线性数组数据结构”来捕获溢出数据高速缓存的预测数据的事务存储器系统。他们使用用于每一高速缓存组的附加位,“O”位来指示该组是否“溢出”,使用用于每一高速缓存表项的另一位,“T”位来指示该表项保存了预测数据。线性数组数据结构确实提供了支持较长事务的能力,但是没有提供本发明的快速检测能力。需要在Ananian的线性数组中搜索以“溢出”的组为目标的任意高速缓存访问。对于产生许多溢出的事务而言,这是较长的过程。Rajwar、Herlihy和Lai在他们的论文“Virtualizing Transactional Memory”中采用了与Ananian类似的方式。Rajwar也使用数据高速缓存作为用于跟踪与事务相关的预测状态的主要机制。将强行排出高速缓存的预测数据转移到虚拟存储器中的XADT溢出区。检测与是XADT一部分的地址的可能冲突需要对XADT进行较慢的线性搜索。Rajwar描述了使用过滤器来消除这些搜索中的某些搜索,但还是存在仍旧进行多个这样搜索的情况。
除了上文中概括的本领域中的发展之外,还提出了用于支持事务存储器的许多软件接口和指令集修改。论文“Architectural Semantics forPractical Transactional Memory”(2006年,斯坦福大学计算机系统实验室的McDonald等,在我们的IDS中记载的此论文在此一并提交,并在此引入作为参考)比较了某些提议和提供了许多其他参考,并在此引入作为参考。
发明内容
通过一种计算系统来克服现有技术的缺点,以及提供一些附加优点,所述计算系统使用附加到真实系统存储器的每一增量的“事务专用”(PTRAN)标签以及用于提供事务存储器系统的改进实现的预测加载和存储日志的组合。本发明使用的日志具有实现为“事务专用”(PTRAN)标签的附加标记位,并且与真实系统存储器的每一个增量关联。提供硬件,以快速检测在多个执行线程上运行的事务的存储访问之间的冲突。存储器中的标签与在本发明中包含的相关冲突检测硬件的使用提供了在与现有系统相比时具有更少开销的更快事务存储器系统。在使用冲突检测的附加高速缓存一致性状态方面,特别是对于具有大量处理器和关联的互连的系统来说,本发明的复杂度低于现有尝试。
本发明使用计算系统的主存储器阵列来保持预测数据,并且可支持更长的事务。本发明可以在使用数据高速缓存的情况下获益,但是本发明并不需要使用数据高速缓存。本发明提供了无需通常情况下的漫长搜索过程即可检查新存储器访问的地址的能力。同样,由于冲突检测和存储器中标签的使用消除了与跟踪事务预测状态关联的某些软件开销,所以较之仅使用软件的事务存储器系统是一种改进。本发明还提供了以非常细致的级别(降到一个字节)检测存储冲突的能力,与之相比,现有软件系统跟踪整个软件对象(可能为几百或几千个字节)的更新。现有软件系统在尝试跟踪对软件对象的单个组件的更新时,或者频繁地给出过多的潜在数据冲突指示,或者带来较大的软件路径长度损失。
为了支持事务存储器,提出了许多软件接口和指令集修改。本发明可以与其中的任何一种结合使用,以便在不大量增加硬件或软件复杂度的情况下提供高性能的事务存储器操作。描述了用于PowerPC构架的优选实施例,但是本领域普通技术人员可以将同样方法应用于任何其他构架,例如具有P3、P4、P5处理器的IBM zSeries、IBM pSeries,并且即使是具有65位存储操作的IBM System 38和它的AS/400也可以得到本发明的支持,此外还包括其他计算机系统,例如Sun Mcrosystem的SPARC、Intel的IA32等。本领域普通技术人员可以扩展本发明,从而可以与为其他专用版本的事务存储器实现而创建的其他应用编程接口(API)一起使用。
本发明使用与所有存储器单元(而不只是那些当前作为激活事务的一部分的存储器单元)关联的一个或多个硬件位。本发明使用一个或多个添加的硬件位来提供比使用第US2007/0028056号的微软公开所获得的事务执行更快的事务执行。本发明使用改进的事务表作为日志来优化存储器的使用,并提供了比其他系统(如微软方案)使用更少存储器的系统,但是本发明仍可执行为微软方案所开发的应用。本发明为每一个存储增量提供一个或多个PTRAN位。在本发明中不需要“定位”PTRAN位的间接方法。由于PTRAN位是可直接寻址的要标记的存储器单元的一部分,所以本发明可提供更快的潜在冲突表示。本发明不需要微软型接口,并且可通过使用软件和固件更新和重设PTRAN位来实现其优点。本发明不需要应用软件知晓一个或多个PTRAN位的状态,尽管需要的情况下可提供直接接口。本发明还被优化,以用于较短的提交处理时间。本发明不需要使用用于每一个存储单元的版本号。
在上文中我们提到在现有技术中变成趣事的Chang和Mergen的提议,正如Wood所说“似乎没有人注意他们学到了什么”。本发明的优点在于,使用了一种与系统的虚拟存储器页表截然不同的“事务表”。从而使得本发明能够处理大量事务,并提供降到一个字节的冲突检测。本发明没有限制可同时访问同一虚拟存储器段中的存储器单元的并发线程数。本发明对物理存储器地址(或真实地址)执行冲突检测,并且仅以此冲突检测粒度限制同时访问。此粒度对于本发明的各种实现可以不同,但是通常在字节的量级。如果Chang和Mergen的系统尝试使用大量并发线程,则该系统将不能提供类似的效果,除非使用极大的虚拟页表格式,因此出现了性能损失。本发明并没有出现这种性能损失。
这里还描述和主张了使用上文概括的方法实现事务的系统和计算机程序产品。通常,计算机程序产品作为计算机程序介质来发布,所述计算机程序介质是经由CD-Rom、计算机盘驱动器、到另一系统的连接来传送指令的程序的有形实现,或向对这种系统提供支持的计算系统传送程序信号的信号的有形实现,所有这些都称为计算机程序介质。计算机程序介质可作为在运行期间在计算系统存储器中安装的单独软件介质来提供,或作为在计算系统存储器自身中实现的固件来安装。
通过本发明的技术实现了其他特征和优点。这里详细描述了本发明的各个其他实施例和方面,它们被视为要求保护的发明的一部分。为了更好的理解具有优点和特征的本发明,请参照说明书和附图。
技术效果
作为所概括的本发明的结果,我们在技术上实现了与现有系统相比提供了更快事务存储器系统以及更低开销的解决方案。本发明也改进了依赖对高速缓存一致性协议的改变的现有基于硬件的事务存储器系统。本发明使得硬件系统能够处理足够长以使得平均大小的高速缓存溢出的事务,并且不涉及现有方案的虚拟存储器管理开销。本发明具有更低级别的硬件复杂度,并且更容易实现以及通过模拟验证。本发明还具有以比紧密连接于数据高速缓存的现有技术系统的高速缓存线粒度更精细的粒度检测冲突的能力。本发明还允许嵌套事务的快速执行。
附图说明
在说明书的结论部分,特别指出作为本发明的主题,并且在权利要求书部分明确主张。根据结合附图的以下详细描述,本发明的上述和其他目标、特征和优点变得清楚,其中:
图1示出使用物理存储器的具有优化事务存储器的我们的计算系统;
图2示出我们的真实系统存储器事务表;
图3示出我们的加载处理的流程图;
图4示出我们的存储处理的流程图;
图5示出我们的提交处理的流程图;
图6示出我们的返转(rollback)处理的流程图;
图7示出在嵌套原子指令组(AIG)中使用的新专用指令和原子指令组(AIG)指令;以及
图8是示出在使用本发明的计算系统中解码和执行指令的流程的概括流程图。
具体实施方式
根据参照附图的实例,详细的说明书描述了本发明的优选实施例及其优点和特点。
现在,转到更详细的附图,可以看出,图1中有一个示出我们发明的实施例的计算系统,其具有经由互连元件(110)连接至物理存储器阵列(120)的一个或多个微处理器(100、101、102)。该物理存储器阵列存储事务数据(121)以及与真实系统存储器的每一个增量关联的“事务专用”(PTRAN)标签(122)。互连元件(110)可作为共享总线或交叉开关来实现。本发明也应用于使用将物理存储器与可在一个或多个芯片中实现的多处理器系统互连的任何其他方案的系统。存储器可分成更小的部分,并通过专用连接分配到每一个CPU芯片,如使用Power4微处理器的IBM系统或基于AMD Opteron的服务器那样。微处理器和存储控制器可共同位于一个硅芯片上,或者它们可分散在多个芯片上。
计算系统的物理存储器被分为n个增量。为n个增量中的每一个提供与真实系统存储器的每一个增量关联的一个或多个“事务专用”位(PTRAN)。本发明允许选择任意存储器增量大小,并且最佳选择将取决于目标系统中的工作负荷特性、硬件成本和数据缓存结构。在所示实施例中使用了16字节的增量。一个或多个PTRAN位用于指示存储器中的数据表项是否为系统中当前激活的未提交事务的预测存储状态的一部分。
由图7的嵌套AIG编码序列所示的专用新指令(BEGIN_AIG、ENG_AIG)用于标记一组指令的开始和结束。在专用新指令之间执行的多个指令称为“原子指令组”(AIG),如图7中的AIG指令所示(指令A0、指令A1、指令A2)。在处理器执行作为原子指令组一部分的指令时,使用附加的存储访问规则。在存储器中以原子方式更新由AIG组的指令修改的所有存储单元。对存储单元的更新将保持“未决”,直到处理器和/或软件应用指示它们应被“提交”时为止。或者立即将所有更新提交至“正常”存储器,或者将它们丢弃。在硬件和/或软件检测到在多处理器系统中并发执行的多个AIG的存储访问之间有冲突时,丢弃这些结果。本发明提供了由硬件快速检测在多个AIG的存储访问之间的潜在冲突的方式。尽管本发明使用专用新指令来标记事务的边界,但是任何其他方式也可以用来标识将要以原子方式更新的一组存储器单元。本发明与可用于实现事务存储器系统的任意多个软件接口兼容。本发明为尝试提供多个存储单元的原子更新的任意系统提供同样快速的冲突检测。本发明还应用于以任何其他方式(包括产生附加到其他指令的提示的编译器、由内部微码或毫码(millicode)产生的内部微处理器命令)标记指令组边界的系统。
PTRAN标签是为了由原子指令组的一部分的指令所产生的所有存储器访问而设置的与存储器中的增量关联的一个或多个位。处理器在尝试设置位之前对其进行检查;从而能够快速检测与在其他线程上并发执行的其他AIG之间的潜在冲突。对位的设置可通过(如IBM z/构架操作原理所述的)IBM z/构架的TS“测试和设置”操作或能在多线程或多处理器系统中进行原子更新的任何其他等效操作来实现。
现在转到图2,可以看出,创建事务表(230,231)作为在这里示出为物理存储器的真实系统存储器(220)的一部分。也可以在逻辑或虚拟存储器中创建事务表。可使用能将逻辑系统存储器映射到物理系统存储器的任意系统,并且存在现有技术中已知可用的多个实例,例如在IBM zSeries、IBM pSeries、Sun微系统的SPARC、Intel的IA32等中的那些实例。在作为原子指令组的一部分的指令导致对存储器单元进行检查或更新时,将形成事务表的表项。线程ID(203、213)与每一个事务表关联。下一表项寄存器(202、212)用作事务表的索引,并指示接下来应写入哪一个表项。表起始地址(201、211)指示用于它的线程(203、213)的事务表的第一表项的地址。事务表用于保存除了关于与已经被检查或更新的存储器单元关联的一个或多个PTRAN标签位的简单信息之外的附加信息。这种附加信息涉及与原子指令组关联的预测状态。在我们这里描述的所示IBMzSeries或pSeries CPU(100、101、102)的实施例中,我们更喜欢使用一个PTRAN位。在这种情况下,事务表包含关于预测状态的所有附加信息,因此PTRAN位仅指示在AIG中包含物理地址。由此,对于事务表A(230)示出为地址(240)、事务信息标识符(241)和旧或新数据(242)。本发明的其他实施例可使用附加PTRAN位,所述位能够由硬件或软件用于加速处理在处理原子指令组中涉及的某些事件或任何其他事务存储器系统的预测状态。在存储器中仅使用一个位并且将该位与事务表中事务状态的更完整描述关联的组合提供了一种需要很小硬件开销的事务存储器系统,而不会出现如现有技术的软件事务存储器系统中的性能损失。
再回到图2,可以看出,例如在事务表A(230)中的表项包括在AIG中已检查或更新的地址(240)、事务信息字段(241)和数据字段(242)。作为AIG的一部分的存储指令使得系统将“旧”数据值从原始存储单元复制到该地址的事务表表项,并将新预测数据放在主存储单元中。
如果需要,本发明也可在事务表中保存新值。优选实施例将“旧”数据值放在事务表中。这允许针对大部分事务成功的情况优化系统。在通过改变指向事务表的指针或通过清除事务表的内容而将事务永久提交至存储器时,也就是说,在不再需要旧数据时可将其快速丢弃。事务表表项的事务信息字段(241)包括作出关于需要产生事务失败的详细判断所需的任何事务信息。它还提供附加信息,以能够有效支持嵌套事务、虚拟化事务或事务存储器架构的其他扩展。在优选实施例中,事务信息字段包括关联地址(240)的存储访问是加载类型访问还是存储类型访问的指示。事务信息字段(240)还指示在系统中该地址是否在多个AIG之间共享。
图3示出使用PTRAN位和事务表跟踪预测状态的操作的加载处理流程图。在处理器尝试加载类型访问时,做出初始判断(310),以确定加载访问地址是否为AIG的一部分,以及是否适用AIG访问的专用存储访问规则。如果为否,则适用正常处理,并按照正常加载处理(320)操作。在判断处理步骤(310)中,可以以许多不同方式确定加载类型访问是否为AIG的一部分。可以在处理器管线中或在加载/存储单元中设置一模式位,以指示操作的专用AIG模式被激活。该模式可以是处理器的物理状态或虚拟处理器的逻辑状态的一部分。如果操作的专用模式没有激活,则将加载看作是正常加载(320)。
可提供这种“AIG激活模式”的“覆写”(override)。覆写可以与含有目标地址的逻辑存储器段或逻辑存储器页关联。覆写强行使得系统将存储请求看作正常请求,尽管实际上该请求是AIG的一部分。如果覆写激活,则判断(310)的结果将导致发生正常处理(320)。假设AIG激活而覆写未激活,则在检查步骤(330)检查关联PTRAN位。在检查时,在AIG中的加载指令检测PTRAN位的状态。在已经设置PTRAN位时,原因可能是同一处理器上或在另一处理器上执行的另一线程的操作。如果在检查步骤330发现PTRAN位没有被设置(340),则在设置PTRAN步骤(340),处理器设置PTRAN位,并通过向事务表添加的方式来在激活AIG的事务表(230)中形成访问记录,然后整个的加载过程继续(360)。如果PTRAN位已经设置,则将会产生这种潜在冲突的地址与在处理器事务表中已经输入的地址相比较。如果在检查步骤(330)由同一AIG中更早的另一加载测试时设置了PTRAN位,则它已经是如所测试和确定(350)的AIG的一部分,然后整个的加载可继续(360)。每一事务表(230、231)包含用于特定AIG的地址。因此,如果地址已经不是如所测试和确定(350)的AIG的一部分,则在处理器的事务表中不会找到用于加载的地址,然后处理器在用于AIG共享的确定步骤(370)中检查该地址是否能在AIG中共享。如果该地址当前不能在多个AIG之间共享,则在确定在AIG中是否能共享的步骤(370)中,处理器向系统中的其他处理器发信号,以请求对该地址的“共享AIG访问”。如果在系统中没有其他AIG预测性地写入存储单元,则可许可共享访问。如果没有许可共享访问,则AIG失败(380),否则(390),将加载地址添加到事务表(230),并更新事务信息字段(241)以指示该地址是在系统中多个AIG之间共享的加载访问。
图4的存储处理流程图示出用于处理作为AIG一部分的存储的操作。当处理器尝试存储类型访问时,做出初始存储判断(400),以确定该访问是否为AIG的一部分,以及AIG访问的专用存储访问规则是否适用。以类似于对加载访问的先前描述的方式检查处理器的模式。如果AIG访问的专用访问规则适用的专用操作模式没有激活,则将该存储看作正常存储(440)。假设AIG激活,则在存储处理检查步骤(410)检查关联的PTRAN位。如果PTRAN位没有设置,则在存储事务步骤(450)设置PTRAN位,并将新表项添加到事务表(230)。将“旧数据”移至该事务表表项(242),将地址写入新表项(240),并更新事务信息字段(241)。标记事务信息字段(241),以指示与该表项关联的访问是存储类型访问。在完成PTRAN位的设置之后,将新存储数据写入存储器。如果PTRAN位的检查(410)指示该位已经设置,则基于当前存储地址是否为处理器中激活的AIG的一部分来做出判断(420)。检查处理器的事务表(230),如果确定地址存在于事务表中,则检查该表项的事务信息(241),并做出关于共享访问表项(460)的判断。如果事务信息指示该表项是在多个AIG之间共享的加载类型访问表项,则事务失败(430),否则更新关联表项的事务信息字段,以指示存储类型访问并处理存储(470)。
现在转到图5的提交处理流程图,可以看出,本发明包括,在根据测试步骤(500)的初始判断已经处理了AIG中的最终指令并且准备将整个组永久“提交”至存储器时所完成的一组操作。如果测试步骤(500)的判断为否,则处理以AIG模式继续(550)。在根据图3和图4的流程图处理AIG的加载和存储没有导致事务失败时,将AIG提交至存储器。在AIG成功,然后测试(500)确定在AIG中的最终指令已经被处理的情况下,准备将整个组永久“提交”至存储器。然后,检查(510、520)事务表,并且在事务表提交步骤(530)确定过程中读取要提交AIG的每一表项以及在存储器中重设其关联的PTRAN位。
专用硬件引擎可用于完成这种提交操作的执行。处理器高速缓存、多处理器一致性操作以及本发明的组合可用于提供一种软件,其具有这样的假象:针对单个AIG的所有存储器更新同时发生,尽管主存储器的存储阵列没有同时更新。在提交处理期间,PTRAN位的重设继续,直到已经确定到达事务表中的最终有效表项时为止(530)。此刻,认为AIG被提交,因此完成了引擎的执行(540)。
某些条件妨碍AIG的完成。在执行AIG时的加载处理期间(380)或在执行AIG时的存储处理期间(430)检测这些条件。还存在可能需要放弃AIG处理的许多其他可能的处理器条件。这些条件包括在系统中检测的错误条件,以及可能需要大量附加硬件支持以使得处理器能够对其正确处理的其他条件。许多现有技术的事务存储器构架提供了事务放弃和随后重试。现有技术的软件结构可以与本发明一起使用,以消除提供硬件来解决所有可能的特殊情况的需求。简单的实例是在处理AIG过程中定时器中断的情况。这种中断可使得处理器花费大量时间运行不是已部分完成的AIG的一部分的代码。此时可能不期望处理器保持AIG激活。系统可对于在发生定时器中断时当前执行的任何AIG强制事务失败。对于在处理器中发生的任何其他特殊情况事件可使用类似的方式。
根据在图6中所示的用于“返转”处理的返转处理流程图的过程来解决事务失败或强行重试。现在转到图6,可以看出,没有事务失败条件(600)则允许处理器以AIG激活模式继续(650)。本发明的优选实施例对于检测事务失败和产生事务返转使用“积极”(eager)策略。此外,本发明也可以用于当等待事务结束时再进行返转所需操作的系统中。作为原子指令组的一部分执行的存储器更新或者在同时提交给正常的主存储(图5),或者随“返转”操作丢弃(620-640)。
在发现事务失败条件(600)失败时,需要几个附加步骤(610、620)。返转事务表的处理表项步骤提供了检查用于AIG的事务表(230),以及将任何“旧”数据(242)写回在该表项中指示的主存储器地址(240)。重设用于关联地址的PTRAN位。返转处理(620)继续,直到处理了表中的最终有效表项为止(630)。在处理了表中的最终有效表项之后,返转完成(640)。此时由处理器采用的操作根据用于事务存储器的各种软件构架而有所不同。可以使用在背景技术中描述的任意事务存储器构架。在某些情况下,从开始就重试AIG。在其他情况下,将调用专用软件句柄来处理事务失败。本发明可与任意的这些不同构架一起使用。
本发明支持“嵌套”事务的执行。第二AIG可包括在第一AIG的范围中,如图7所示。每一BEGIN_AIG专用指令(图7)语句使得系统创建事务表(230),以及将该表与AIG关联。关于存储地址是否属于AIG的判断(350)可包括内部AIG(A)或内部和外部AIG(A和B)的组合。END_AIG专用指令语句(图7)是事务序列的结束,但是如图所示,专用事务(事务B)的序列可以嵌套在另一事务(事务A)中。多个事务表(230)的使用可以支持用于事务存储器的嵌套构架。“旧数据”的多个版本可以以任意嵌套深度存储在任意多个事务表(230)中。依赖数据高速缓存来保存预测状态的现有技术事务存储器系统,在不向高速缓存目录添加附加状态信息和不对高速缓存一致性协议增加额外复杂度的情况下,则不能够提供用于嵌套事务的类似支持。在现有技术系统上的嵌套支持将对那些设计带来较大的硬件复杂度负担。本发明也可以被扩展为包括一种含有内部AIG(指令B0、指令B1)和外部AIG(指令A0、指令A1、指令A2)的表项的组合事务表。这种组合事务表可用于代替单独的事务表,或除了单独的事务表以外,还可以使用这种组合事务表。
存在有可添加到本发明以加速事务表控制的处理和PTRAN位(多个)的设置与重设的许多附加硬件特征。由于PTRAN位是主存储数据的一部分,所以它可以缓存在系统的正常数据高速缓存中。事务表也是主存储的一部分并且也可以被缓存。可向数据高速缓存添加附加控制信息,以指示专用地址是否能够用于“共享AIG访问”,并因此消除在某些情况下搜索事务表的需求。
上述的本发明的功能可以用软件、固件、硬件以及软件和固件的某种组合来实现。
作为一个实例,本发明的一个或多个方面可包括在具有例如计算机可用介质的制品(例如,一个或多个计算机程序产品)中。在介质中可实现例如用于提供和方便本发明功能的计算机可读程序代码装置。这里描述的计算系统能检测信号,以及恢复在其中实现的计算机程序。计算机程序是在例如硬盘驱动器或计算机存储器的物理介质上实现,还是在CD上实现,又或者是在数据信号中实现,并没有区别。基础程序可以由计算系统用于执行为计算机可读存储器所描述的步骤,从而执行编码功能,而与编码程序的原始格式以及该格式是盘还是信号无关。
所述制品可属于计算机系统的一部分或单独购买。
此外,可提供由机器可读的、用于有形地实施由机器可执行的至少一个指令程序的至少一个程序存储设备,来执行本发明的功能。
图8示出在使用本发明的计算系统中对指令解码和执行的流程。本发明优选实施例使用BEGIN_AIG指令表示AIG的开始,使用END_AIG指令表示AIG的结束。也可以使用用于标记一组指令的开始和结束的任何其他适合的方法。可由程序员用高级语言显式地将指令或标记插入到代码中,或由编译器或转换器作为高级锁定功能的实现来添加指令或标记。可通过库函数调用来添加指令和标记,或通过在运行时环境下的专用事件来包括指令和标记。可通过固件、硬件或两者组合响应于对指令的特定序列的解码或接收用于进入新执行模式的专用命令,来产生指令和标记。
优选实施例在指令的解码(800)之后识别AIG的开始。如果确定BEGIN_AIG指令已被解码(805),则处理器进入新执行模式,AIG MODE(815),否则照常执行指令(810),并且继续处理下一指令(800)。
在进入AIG MODE之前,与在IBM ZSeries构架中处理传统程序调用相同,保存处理器的构架状态。任何类似的状态保存机制可用于任何其他处理器构架上。如果AIG失败,则处理器可直接返回此保存的状态,或可以在调用了一系列其他错误处理例程之后返回此状态。在AIG MODE时,指令的解码继续(820)。如果加载或存储被解码(825),则需要这些加载和存储的专用处理(840)。处理AIG中的加载所需的步骤在图3中描述,处理AIG中的存储所需的步骤在图4中描述。在处理了AIG中的加载和存储之后,确定(850)是否存在如图3和图4的描述中所述的AIG失败。如果存在失败,则调用专用句柄(860)。用于事务失败的专用句柄的操作可根据使用本发明的系统构架而有所不同。在现有技术中已经描述了用于处理事务失败的许多方法,其中的任一个都可以用于此目的。可用的方法包括:从设置的一组尝试的开始重试事务、等待使得失败改变的条件、调用专用软件例程来解决线程之间的冲突等。这些可用的失败句柄可需要产生失败的AIG返转(860)。如果没有检测到失败,则确定加载或存储是否为AIG的最终指令(855)。如果该指令是AIG中的最终指令,则使用图5中所述的过程提交AIG(865)。然后,处理器退出AIGMODE,继续处理在该AIG之后的下一后续指令(800)。
除了在AIG中的加载和存储之外的指令解码不一定需要专用处理(830)。如果该指令不是加载或存储类型指令,则确定该指令是否是另一BEGIN_AIG(830)。嵌套的AIG指令需要专用处理(835)。现有技术包含用于处理嵌套事务的许多不同方式。本发明可用于支持其中的任一方式。用于优选实施例的嵌套AIG句柄将“内部”AIG指令添加到“外部”AIG,以创建一个更大的AIG。本发明的其他实施例可提供用于处理作为内部嵌套事务一部分的加载和存储的不同规则,以及用于处理内部嵌套事务的提交和失败的专用规则。如果确定该指令不是BEGIN_AIG,则执行该指令(845),并接下来确定(855)该指令是否为AIG的最终指令。优选实施例使用END_AIG指令的解码来指示已经到达AIG的最终指令。如果已经到达了AIG的最终指令,则将AIG提交至存储器,并且处理器退出AIG MODE的运行(865)。
这里描述的流程图仅是实例。在不脱离本发明的精神的情况下,可以对其中描述的这些示图或步骤(或操作)进行多种修改。例如,可以以不同顺序执行这些步骤,或者可以添加、删除或修改这些步骤。所有的这些修改都看作是由本发明权利要求所限定的一部分。
尽管已经描述了本发明的优选实施例,但是可以理解的是,本领域普通技术人员,包括现在的和将来的,都可以进行各种改进和加强,这些均落入随后的权利要求的范围内。这些权利要求应理解为,主张对首先描述的本发明的适当保护。
Claims (28)
1.一种由计算系统上的事务程序使用的方法,该方法针对第一线程的事务数据管理对共享存储器单元的存储器访问,所述共享存储器单元能够由所述第一线程和第二线程访问,该方法包括以下步骤:
从用于完成所述第一线程的事务的一串指令中的一个指令开始,执行所述一串指令;和
确定所述一个指令是否为与所述第一线程的所述事务关联的激活原子指令组AIG指令的一部分,
如果所述一个指令是激活AIG的一部分,则在所述AIG的激活模式下定位提供多个表项的事务表,其中由所述激活AIG的多个指令检查或修改的所有存储单元保持未决,直到所述计算系统指示所述存储单元应被提交时为止,和
如果所述一个指令不是激活AIG的一部分,则在正常执行模式下执行下一个指令。
2.根据权利要求1的方法,其中
在所述AIG的所述激活模式下执行时,作为原子指令组之一的下一个指令确定所述下一个指令是用于加载的指令、用于存储的指令,还是用于原子指令组的开始或结束的专用指令。
3.根据权利要求2的方法,其中位是主数据存储的一部分,并且所述位能够被缓存在所述系统的正常数据高速缓存中。
4.根据权利要求1的方法,其中在处理指令时,所述计算系统检查与用于加载或存储的共享存储器单元的指定地址关联的位,以确定所述地址是否具有激活事务表,以及确定此类地址是否与在所述计算系统的另一线程上并发执行的另一AIG具有潜在冲突。
5.根据权利要求1的方法,其中所述第一和第二线程的事务处理所使用的共享存储器的n个增量中的每一个具有与共享存储器增量关联的“事务专用PTRAN”标签,并且在检查或更新所述共享存储器增量时将检查所述标签以确定是否存在与所述共享存储器增量关联的激活事务。
6.根据权利要求5的方法,其中在确定所述共享存储器增量的指定地址不具有激活事务表时,将更新所述PTRAN标签,以表明存储器存储增量是与所述第一线程的所述事务关联的激活原子指令组指令的一部分,并且其中如果确定所述指定地址具有激活事务表,则确定所述共享存储器单元的所述地址是否已经为由所述AIG检查或修改的指令所使用的地址的一部分。
7.根据权利要求1的方法,其中在处理指令时,所述计算系统检查与用于加载或存储的共享存储器单元的指定地址关联的位,以确定所述地址是否具有激活的“事务专用PTRAN”标签,所述PTRAN标签与正被检查或更新的共享存储器单元的地址关联,并用于指示存储器中的数据表项是否为所述系统中当前激活的未提交事务的预测存储器状态的一部分。
8.根据权利要求1的方法,其中在处理指令时,所述计算系统检查“事务专用PTRAN”标签,该PTRAN标签是针对由原子指令组的一部分的指令所产生的所有存储器访问而设置的与存储器中的增量关联的一个或多个位。
9.根据权利要求1的方法,其中在处理指令时,所述计算系统在尝试设置“事务专用PTRAN”标签之前对其进行检查。
10.根据权利要求1的方法,其中将所述计算系统的物理存储器分为n个增量,并且为所述n个增量中的每一个提供与真实系统存储器的每一个增量关联的一个或多个“事务专用PTRAN”位。
11.根据权利要求1的方法,还包括以下步骤:标识将要由与特定激活事务关联的原子指令组AIG指令以原子方式更新的一组存储器单元,并且其中将要由所述激活原子指令组的指令修改的所有存储单元保持未决,直到所述计算系统指示与所述事务的所述第一线程相关的所述存储单元应被提交时为止。
12.根据权利要求1的方法,还包括以下步骤:标识将要由与所述特定激活事务关联的原子指令组AIG指令以原子方式更新的一组存储器单元,以及标记具有专用指令的所述特定激活事务的边界,以向所述计算系统标识在所述边界中的指令是用于所述事务的所述激活原子指令组指令的一部分,并且其中将要由所述激活原子指令组指令修改的所有存储单元保持未决,直到所述计算系统指示与所述事务的所述第一线程相关的所述存储单元应被提交时为止。
13.根据权利要求1的方法,其中将用于被处理的事务的数据存储到事务表中,在作为原子指令组的一部分的指令导致对存储器单元进行检查或更新时,将在所述事务表中形成表项。
14.根据权利要求1的方法,其中将用于被处理的事务的数据存储到事务表中,所述事务表不同于所述系统的虚拟存储器页表,并且在作为原子指令组的一部分的指令导致对存储器单元进行检查或更新时,将在所述事务表中形成表项。
15.根据权利要求14的方法,其中专用指令标记事务的边界,以标识被以原子方式更新的一组存储器单元。
16.根据权利要求13的方法,其中线程标识值与所述事务表关联;下一表项寄存器用作对所述事务表的索引并指示接下来应写入哪一个表项;并且表起始值指示用于与所述事务表关联的线程的所述事务表的第一表项的地址。
17.根据权利要求1的方法,其中在检查与表项关联的位之后,将用于被处理的事务的数据存储到事务表中,其中在作为原子指令组的一部分的指令导致对存储器单元进行更新时将形成所述表项,其中所述位是主存储数据的一部分并且所述位能够缓存在所述系统的正常数据高速缓存中,所述事务表也是主存储的一部分并且也能够被缓存。
18.根据权利要求17的方法,其中添加至所述数据高速缓存的控制信息指示特定地址是否已经能够在AIG之间共享。
19.根据权利要求1的方法,其中所述事务表保存涉及与原子指令组关联的预测状态的附加信息。
20.根据权利要求19的方法,其中所述事务表包含所有关于所述预测状态的附加信息,并且PTRAN标签指示在原子指令组中包含物理地址。
21.根据权利要求1的方法,其中在存储器中以原子方式更新所有由所述原子指令组修改的存储单元。
22.一种计算机可读的计算机程序介质,其有形地实施用于执行以下计算机处理的计算机可执行指令,所述计算机处理包括:从用于完成多个线程中的第一线程的事务的一串指令中的一个指令开始,执行所述一串指令;和
确定所述一个指令是否为与所述第一线程的所述事务关联的激活原子指令组AIG指令的一部分,
如果所述一个指令是激活AIG的一部分,则在所述AIG的激活模式下定位提供多个表项的事务表,其中由所述激活AIG的激活原子指令检查或修改的所有存储单元保持未决,直到所述计算系统指示所述存储单元应被提交时为止,和
如果所述一个指令不是激活AIG的一部分,则在正常执行模式下执行下一个指令。
23.一种计算系统,包括:
多个处理器和共享存储器,在所述计算系统针对被处理的事务管理对共享存储器单元的存储器访问时,一个或多个所述处理器可以访问所述共享存储器,所述共享存储器单元能够由第一线程和第二线程访问,
所述计算系统的共享存储器具有:标识的“事务专用”标签,其用于标识系统存储器的每一个增量;和事务表,其用于所述被处理的事务的第一线程的加载和存储。
24.根据权利要求23的计算系统,其中处理事务的应用软件不需要测试用于标识系统存储器的每一个增量的“事务专用”标签的状态。
25.一种用于事务处理中的加载处理的方法,所述事务处理采用计算系统中的事务存储器,所述方法包括以下步骤:
针对在多个线程中被处理的事务确定加载指令是否为激活指令组的一部分,所述激活指令组包含原子指令组,所述多个线程由使用所述事务存储器的所述计算系统执行;和
在确定所述加载指令是激活指令组的一部分时,设置专用事务位并在与所述专用事务位关联的事务表中形成表项。
26.一种用于事务处理中的存储处理的方法,所述事务处理采用计算系统中的事务存储器,所述方法包括以下步骤:
针对在多个线程中被处理的事务确定存储指令是否为激活指令组的一部分,所述激活指令组包含原子指令组,所述多个线程由使用所述事务存储器的所述计算系统执行;和
在确定所述存储指令是激活指令组的一部分时,设置专用事务位并在与所述专用事务位关联的事务表中形成表项。
27.根据权利要求1的方法,其中在已处理了AIG中的所有组指令,并且已确定在处理所述AIG中的所有加载和存储期间没有事务失败时,将提交事务。
28.根据权利要求1的方法,其中在出现冲突的AIG,并且一个AIG的指令尝试修改另一个AIG的共享存储器单元时,将发生返转。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/748,044 US8321637B2 (en) | 2007-05-14 | 2007-05-14 | Computing system with optimized support for transactional memory |
US11/748,044 | 2007-05-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101308462A true CN101308462A (zh) | 2008-11-19 |
CN101308462B CN101308462B (zh) | 2010-06-16 |
Family
ID=40028702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810092377.9A Expired - Fee Related CN101308462B (zh) | 2007-05-14 | 2008-04-24 | 管理对共享存储器单元的存储器访问的方法和计算系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8321637B2 (zh) |
CN (1) | CN101308462B (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101872299A (zh) * | 2010-07-06 | 2010-10-27 | 浙江大学 | 冲突预测实现方法及所用冲突预测处理装置事务存储器 |
CN102279807A (zh) * | 2010-06-09 | 2011-12-14 | 李尔公司 | 更新共享存储器的方法和系统 |
CN102754069A (zh) * | 2010-02-18 | 2012-10-24 | 国际商业机器公司 | 加载/存储分离设施及其指令 |
CN103299272A (zh) * | 2010-12-07 | 2013-09-11 | 超威半导体公司 | 使用存储的原子程序的可编程原子内存 |
US9122476B2 (en) | 2010-12-07 | 2015-09-01 | Advanced Micro Devices, Inc. | Programmable atomic memory using hardware validation agent |
CN104903864A (zh) * | 2012-11-02 | 2015-09-09 | 惠普发展公司,有限责任合伙企业 | 选择性错误校正码和存储器访问粒度切换 |
CN105980979A (zh) * | 2014-12-13 | 2016-09-28 | 上海兆芯集成电路有限公司 | 用于检测暂停的逻辑分析器 |
CN106133686A (zh) * | 2014-03-14 | 2016-11-16 | 国际商业机器公司 | 条件指令结束机器指令 |
CN106662998A (zh) * | 2014-12-31 | 2017-05-10 | 华为技术有限公司 | 事务冲突检测方法、装置及计算机系统 |
WO2017129036A1 (zh) * | 2016-01-29 | 2017-08-03 | 华为技术有限公司 | 处理节点、计算机系统及事务冲突检测方法 |
CN108885548A (zh) * | 2016-02-10 | 2018-11-23 | 优普梅姆公司 | 用于加法和边界检查的组合指令 |
CN109328341A (zh) * | 2016-07-01 | 2019-02-12 | 英特尔公司 | 识别引起远程事务执行中止的存储的处理器、方法和系统 |
CN109791521A (zh) * | 2016-09-28 | 2019-05-21 | Arm有限公司 | 提供数据访问的原子集的装置及方法 |
TWI665605B (zh) * | 2017-01-12 | 2019-07-11 | International Business Machines Corporation | 用於暫時抑制受約束儲存器運算元請求之處理之電腦程式產品、電腦實施方法及電腦系統 |
CN110249302A (zh) * | 2017-02-06 | 2019-09-17 | 微软技术许可有限责任公司 | 在处理器核上同时执行多个程序 |
US10572387B2 (en) | 2018-01-11 | 2020-02-25 | International Business Machines Corporation | Hardware control of CPU hold of a cache line in private cache where cache invalidate bit is reset upon expiration of timer |
US10621090B2 (en) | 2017-01-12 | 2020-04-14 | International Business Machines Corporation | Facility for extending exclusive hold of a cache line in private cache |
CN111201518A (zh) * | 2017-05-02 | 2020-05-26 | Arm有限公司 | 用于管理能力元数据的设备和方法 |
TWI760756B (zh) * | 2019-11-05 | 2022-04-11 | 聯發科技股份有限公司 | 共用代碼之系統與代碼共用方法 |
CN115083112A (zh) * | 2022-08-22 | 2022-09-20 | 枫树谷(成都)科技有限责任公司 | 一种智能预警应急管理系统及其部署方法 |
WO2023165318A1 (zh) * | 2022-03-03 | 2023-09-07 | 阿里巴巴(中国)有限公司 | 资源处理系统以及方法 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8095741B2 (en) * | 2007-05-14 | 2012-01-10 | International Business Machines Corporation | Transactional memory computing system with support for chained transactions |
US8321637B2 (en) | 2007-05-14 | 2012-11-27 | International Business Machines Corporation | Computing system with optimized support for transactional memory |
US8117403B2 (en) * | 2007-05-14 | 2012-02-14 | International Business Machines Corporation | Transactional memory system which employs thread assists using address history tables |
US9009452B2 (en) * | 2007-05-14 | 2015-04-14 | International Business Machines Corporation | Computing system with transactional memory using millicode assists |
US8688920B2 (en) * | 2007-05-14 | 2014-04-01 | International Business Machines Corporation | Computing system with guest code support of transactional memory |
US8095750B2 (en) * | 2007-05-14 | 2012-01-10 | International Business Machines Corporation | Transactional memory system with fast processing of common conflicts |
US7890472B2 (en) * | 2007-09-18 | 2011-02-15 | Microsoft Corporation | Parallel nested transactions in transactional memory |
US9128750B1 (en) * | 2008-03-03 | 2015-09-08 | Parakinetics Inc. | System and method for supporting multi-threaded transactions |
US8250315B2 (en) * | 2009-01-02 | 2012-08-21 | International Business Machines Corporation | Dynamic nest level determination for nested transactional memory rollback |
US10013277B2 (en) * | 2009-05-29 | 2018-07-03 | Red Hat, Inc. | Rolling back state changes in distributed transactions |
US8566524B2 (en) | 2009-08-31 | 2013-10-22 | International Business Machines Corporation | Transactional memory system with efficient cache support |
US8516202B2 (en) * | 2009-11-16 | 2013-08-20 | International Business Machines Corporation | Hybrid transactional memory system (HybridTM) and method |
US8214560B2 (en) | 2010-04-20 | 2012-07-03 | International Business Machines Corporation | Communications support in a transactional memory |
US8533699B2 (en) * | 2011-03-31 | 2013-09-10 | Oracle International Corporation | System and method for optimizing a code section by forcing a code section to be executed atomically |
US9038080B2 (en) * | 2012-05-09 | 2015-05-19 | Nvidia Corporation | Method and system for heterogeneous filtering framework for shared memory data access hazard reports |
US9244846B2 (en) | 2012-07-06 | 2016-01-26 | International Business Machines Corporation | Ensuring causality of transactional storage accesses interacting with non-transactional storage accesses |
US9805074B2 (en) * | 2012-11-28 | 2017-10-31 | Sap Ag | Compressed representation of a transaction token |
US9977683B2 (en) * | 2012-12-14 | 2018-05-22 | Facebook, Inc. | De-coupling user interface software object input from output |
US9619364B2 (en) | 2013-03-14 | 2017-04-11 | Nvidia Corporation | Grouping and analysis of data access hazard reports |
US9886736B2 (en) | 2014-01-20 | 2018-02-06 | Nvidia Corporation | Selectively killing trapped multi-process service clients sharing the same hardware context |
US9465746B2 (en) | 2014-01-24 | 2016-10-11 | International Business Machines Corporation | Diagnostics for transactional execution errors in reliable transactions |
US9323568B2 (en) | 2014-01-24 | 2016-04-26 | International Business Machines Corporation | Indicating a low priority transaction |
US9304935B2 (en) | 2014-01-24 | 2016-04-05 | International Business Machines Corporation | Enhancing reliability of transaction execution by using transaction digests |
US9424071B2 (en) | 2014-01-24 | 2016-08-23 | International Business Machines Corporation | Transaction digest generation during nested transactional execution |
US9317379B2 (en) | 2014-01-24 | 2016-04-19 | International Business Machines Corporation | Using transactional execution for reliability and recovery of transient failures |
US10120681B2 (en) | 2014-03-14 | 2018-11-06 | International Business Machines Corporation | Compare and delay instructions |
US9454370B2 (en) | 2014-03-14 | 2016-09-27 | International Business Machines Corporation | Conditional transaction end instruction |
US9501411B2 (en) | 2014-08-29 | 2016-11-22 | International Business Machines Corporation | Cache backing store for transactional memory |
US10474576B2 (en) * | 2015-11-10 | 2019-11-12 | International Business Machines Corporation | Prefetch protocol for transactional memory |
CN110399976B (zh) * | 2018-04-25 | 2022-04-05 | 华为技术有限公司 | 计算装置和计算方法 |
GB2573558B (en) * | 2018-05-10 | 2020-09-02 | Advanced Risc Mach Ltd | A technique for managing a cache structure in a system employing transactional memory |
Family Cites Families (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3686641A (en) * | 1970-09-30 | 1972-08-22 | Burroughs Corp | Multiprogram digital processing system with interprogram communication |
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
JP2500101B2 (ja) * | 1992-12-18 | 1996-05-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 共用変数の値を更新する方法 |
US5438761A (en) * | 1993-09-16 | 1995-08-08 | Krumszyn; Luba M. | Rotatable carpenter's level |
US5701432A (en) * | 1995-10-13 | 1997-12-23 | Sun Microsystems, Inc. | Multi-threaded processing system having a cache that is commonly accessible to each thread |
US5963922A (en) * | 1996-02-29 | 1999-10-05 | Helmering; Paul F. | System for graphically mapping related elements of a plurality of transactions |
US5974438A (en) * | 1996-12-31 | 1999-10-26 | Compaq Computer Corporation | Scoreboard for cached multi-thread processes |
US6035379A (en) * | 1997-01-09 | 2000-03-07 | Microsoft Corporation | Transaction processing for user data employing both logging and shadow copying |
US5946711A (en) * | 1997-05-30 | 1999-08-31 | Oracle Corporation | System for locking data in a shared cache |
DE19750916A1 (de) * | 1997-11-17 | 1999-05-20 | Roche Diagnostics Gmbh | Verbessertes Verfahren zum Nachweis von PSA-ACT-Komplexen |
US6205519B1 (en) * | 1998-05-27 | 2001-03-20 | Hewlett Packard Company | Cache management for a multi-threaded processor |
US6209066B1 (en) * | 1998-06-30 | 2001-03-27 | Sun Microsystems, Inc. | Method and apparatus for memory allocation in a multi-threaded virtual machine |
US6360220B1 (en) * | 1998-08-04 | 2002-03-19 | Microsoft Corporation | Lock-free methods and systems for accessing and storing information in an indexed computer data structure having modifiable entries |
US6874065B1 (en) * | 1999-02-26 | 2005-03-29 | Hewlett-Packard Development Company, L.P. | Cache-flushing engine for distributed shared memory multi-processor computer systems |
US6360231B1 (en) * | 1999-02-26 | 2002-03-19 | Hewlett-Packard Company | Transactional memory for distributed shared memory multi-processor computer systems |
US6496925B1 (en) * | 1999-12-09 | 2002-12-17 | Intel Corporation | Method and apparatus for processing an event occurrence within a multithreaded processor |
US7000234B1 (en) * | 2000-01-20 | 2006-02-14 | Sun Microsystems, Inc. | Maintaining a double-ended queue as a linked-list with sentinel nodes and delete flags with concurrent non-blocking insert and remove operations using a double compare-and-swap primitive |
US6651146B1 (en) * | 2000-02-24 | 2003-11-18 | International Business Machines Corporation | Method and apparatus for managing access contention to a linear list without the use of locks |
US7017160B2 (en) * | 2000-04-18 | 2006-03-21 | Sun Microsystems, Inc. | Concurrent shared object implemented using a linked-list with amortized node allocation |
AU2001259089A1 (en) * | 2000-04-18 | 2001-11-07 | Sun Microsystems, Inc. | Lock-free implementation of concurrent shared object with dynamic node allocation and distinguishing pointer value |
US6611906B1 (en) * | 2000-04-30 | 2003-08-26 | Hewlett-Packard Development Company, L.P. | Self-organizing hardware processing entities that cooperate to execute requests |
US7117502B1 (en) * | 2000-11-10 | 2006-10-03 | Sun Microsystems, Inc. | Linked-list implementation of a data structure with concurrent non-blocking insert and remove operations |
US6779049B2 (en) * | 2000-12-14 | 2004-08-17 | International Business Machines Corporation | Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism |
US6879981B2 (en) * | 2001-01-16 | 2005-04-12 | Corigin Ltd. | Sharing live data with a non cooperative DBMS |
US6738837B1 (en) * | 2001-02-02 | 2004-05-18 | Cradle Technologies, Inc. | Digital system with split transaction memory access |
US6880071B2 (en) * | 2001-04-09 | 2005-04-12 | Sun Microsystems, Inc. | Selective signalling of later reserve location memory fault in compound compare and swap |
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 |
US6900527B1 (en) * | 2001-09-19 | 2005-05-31 | Amkor Technology, Inc. | Lead-frame method and assembly for interconnecting circuits within a circuit module |
US20030066056A1 (en) * | 2001-09-28 | 2003-04-03 | Petersen Paul M. | Method and apparatus for accessing thread-privatized global storage objects |
US7120762B2 (en) * | 2001-10-19 | 2006-10-10 | Wisconsin Alumni Research Foundation | Concurrent execution of critical sections by eliding ownership of locks |
US6981110B1 (en) * | 2001-10-23 | 2005-12-27 | Stephen Waller Melvin | Hardware enforced virtual sequentiality |
EP1451714B1 (en) * | 2001-11-01 | 2018-05-02 | Verisign, Inc. | Method and system for updating a remote database |
JP3884990B2 (ja) * | 2002-04-26 | 2007-02-21 | 富士通株式会社 | マルチプロセッサ装置 |
US9052944B2 (en) * | 2002-07-16 | 2015-06-09 | Oracle America, Inc. | Obstruction-free data structures and mechanisms with separable and/or substitutable contention management mechanisms |
US8244990B2 (en) * | 2002-07-16 | 2012-08-14 | Oracle America, Inc. | Obstruction-free synchronization for shared data structures |
US6938130B2 (en) * | 2003-02-13 | 2005-08-30 | Sun Microsystems Inc. | Method and apparatus for delaying interfering accesses from other threads during transactional program execution |
US6862664B2 (en) * | 2003-02-13 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for avoiding locks by speculatively executing critical sections |
US7089374B2 (en) * | 2003-02-13 | 2006-08-08 | Sun Microsystems, Inc. | Selectively unmarking load-marked cache lines during transactional program execution |
US7584474B2 (en) * | 2003-02-25 | 2009-09-01 | Bea Systems, Inc. | Systems and methods for transaction chaining |
US7178062B1 (en) | 2003-03-12 | 2007-02-13 | Sun Microsystems, Inc. | Methods and apparatus for executing code while avoiding interference |
US7395278B2 (en) * | 2003-06-30 | 2008-07-01 | Microsoft Corporation | Transaction consistent copy-on-write database |
US7587615B2 (en) * | 2003-09-12 | 2009-09-08 | International Business Machines Corporation | Utilizing hardware transactional approach to execute code after initially utilizing software locking by employing pseudo-transactions |
US20050086446A1 (en) * | 2003-10-04 | 2005-04-21 | Mckenney Paul E. | Utilizing software locking approach to execute code upon failure of hardware transactional approach |
US7865701B1 (en) * | 2004-09-14 | 2011-01-04 | Azul Systems, Inc. | Concurrent atomic execution |
US7657883B2 (en) * | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor |
US7577657B2 (en) * | 2005-03-18 | 2009-08-18 | Microsoft Corporation | System and method for updating objects in a multi-threaded computing environment |
US7350034B2 (en) * | 2005-06-20 | 2008-03-25 | International Business Machines Corporation | Architecture support of best-effort atomic transactions for multiprocessor systems |
US7536517B2 (en) * | 2005-07-29 | 2009-05-19 | Microsoft Corporation | Direct-update software transactional memory |
US7415580B2 (en) * | 2005-08-01 | 2008-08-19 | Hewlett-Packard Development Company, L.P. | System for determining the position of an element in memory |
US20070186056A1 (en) * | 2006-02-07 | 2007-08-09 | Bratin Saha | Hardware acceleration for a software transactional memory system |
US7792805B2 (en) * | 2006-05-30 | 2010-09-07 | Oracle America, Inc. | Fine-locked transactional memory |
US8321637B2 (en) | 2007-05-14 | 2012-11-27 | International Business Machines Corporation | Computing system with optimized support for transactional memory |
-
2007
- 2007-05-14 US US11/748,044 patent/US8321637B2/en not_active Expired - Fee Related
-
2008
- 2008-04-24 CN CN200810092377.9A patent/CN101308462B/zh not_active Expired - Fee Related
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102754069A (zh) * | 2010-02-18 | 2012-10-24 | 国际商业机器公司 | 加载/存储分离设施及其指令 |
US8850166B2 (en) | 2010-02-18 | 2014-09-30 | International Business Machines Corporation | Load pair disjoint facility and instruction therefore |
CN102754069B (zh) * | 2010-02-18 | 2014-12-24 | 国际商业机器公司 | 用于处理加载/存储分离指令的方法和系统 |
US9052889B2 (en) | 2010-02-18 | 2015-06-09 | International Business Machines Corporation | Load pair disjoint facility and instruction therefor |
CN102279807A (zh) * | 2010-06-09 | 2011-12-14 | 李尔公司 | 更新共享存储器的方法和系统 |
CN101872299A (zh) * | 2010-07-06 | 2010-10-27 | 浙江大学 | 冲突预测实现方法及所用冲突预测处理装置事务存储器 |
CN103299272B (zh) * | 2010-12-07 | 2016-04-27 | 超威半导体公司 | 使用存储的原子程序的可编程原子内存 |
CN103299272A (zh) * | 2010-12-07 | 2013-09-11 | 超威半导体公司 | 使用存储的原子程序的可编程原子内存 |
US9122476B2 (en) | 2010-12-07 | 2015-09-01 | Advanced Micro Devices, Inc. | Programmable atomic memory using hardware validation agent |
CN104903864A (zh) * | 2012-11-02 | 2015-09-09 | 惠普发展公司,有限责任合伙企业 | 选择性错误校正码和存储器访问粒度切换 |
US10318365B2 (en) | 2012-11-02 | 2019-06-11 | Hewlett Packard Enterprise Development Lp | Selective error correcting code and memory access granularity switching |
CN104903864B (zh) * | 2012-11-02 | 2018-09-04 | 慧与发展有限责任合伙企业 | 选择性错误校正码和存储器访问粒度切换 |
CN106133686A (zh) * | 2014-03-14 | 2016-11-16 | 国际商业机器公司 | 条件指令结束机器指令 |
CN106133686B (zh) * | 2014-03-14 | 2019-08-06 | 国际商业机器公司 | 用于在计算环境中执行机器指令的系统和方法 |
CN105980979A (zh) * | 2014-12-13 | 2016-09-28 | 上海兆芯集成电路有限公司 | 用于检测暂停的逻辑分析器 |
CN105980979B (zh) * | 2014-12-13 | 2018-11-20 | 上海兆芯集成电路有限公司 | 用于检测暂停的逻辑分析器 |
CN106662998A (zh) * | 2014-12-31 | 2017-05-10 | 华为技术有限公司 | 事务冲突检测方法、装置及计算机系统 |
US10733101B2 (en) | 2016-01-29 | 2020-08-04 | Huawei Technologies Co., Ltd. | Processing node, computer system, and transaction conflict detection method |
WO2017129036A1 (zh) * | 2016-01-29 | 2017-08-03 | 华为技术有限公司 | 处理节点、计算机系统及事务冲突检测方法 |
CN108885548A (zh) * | 2016-02-10 | 2018-11-23 | 优普梅姆公司 | 用于加法和边界检查的组合指令 |
CN109328341A (zh) * | 2016-07-01 | 2019-02-12 | 英特尔公司 | 识别引起远程事务执行中止的存储的处理器、方法和系统 |
CN109328341B (zh) * | 2016-07-01 | 2023-07-18 | 英特尔公司 | 识别引起远程事务执行中止的存储的处理器、方法和系统 |
CN109791521A (zh) * | 2016-09-28 | 2019-05-21 | Arm有限公司 | 提供数据访问的原子集的装置及方法 |
CN109791521B (zh) * | 2016-09-28 | 2023-02-28 | Arm有限公司 | 提供数据访问的原子集的装置及方法 |
US11366759B2 (en) | 2017-01-12 | 2022-06-21 | International Business Machines Corporation | Temporarily suppressing processing of a restrained storage operand request |
TWI665605B (zh) * | 2017-01-12 | 2019-07-11 | International Business Machines Corporation | 用於暫時抑制受約束儲存器運算元請求之處理之電腦程式產品、電腦實施方法及電腦系統 |
US10521351B2 (en) | 2017-01-12 | 2019-12-31 | International Business Machines Corporation | Temporarily suppressing processing of a restrained storage operand request |
US10621090B2 (en) | 2017-01-12 | 2020-04-14 | International Business Machines Corporation | Facility for extending exclusive hold of a cache line in private cache |
US10956337B2 (en) | 2017-01-12 | 2021-03-23 | International Business Machines Corporation | Temporarily suppressing processing of a restrained storage operand request |
CN110249302A (zh) * | 2017-02-06 | 2019-09-17 | 微软技术许可有限责任公司 | 在处理器核上同时执行多个程序 |
CN111201518A (zh) * | 2017-05-02 | 2020-05-26 | Arm有限公司 | 用于管理能力元数据的设备和方法 |
CN111201518B (zh) * | 2017-05-02 | 2023-10-20 | Arm有限公司 | 用于管理能力元数据的设备和方法 |
US10572387B2 (en) | 2018-01-11 | 2020-02-25 | International Business Machines Corporation | Hardware control of CPU hold of a cache line in private cache where cache invalidate bit is reset upon expiration of timer |
TWI760756B (zh) * | 2019-11-05 | 2022-04-11 | 聯發科技股份有限公司 | 共用代碼之系統與代碼共用方法 |
WO2023165318A1 (zh) * | 2022-03-03 | 2023-09-07 | 阿里巴巴(中国)有限公司 | 资源处理系统以及方法 |
CN115083112A (zh) * | 2022-08-22 | 2022-09-20 | 枫树谷(成都)科技有限责任公司 | 一种智能预警应急管理系统及其部署方法 |
CN115083112B (zh) * | 2022-08-22 | 2022-11-22 | 枫树谷(成都)科技有限责任公司 | 一种智能预警应急管理系统及其部署方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101308462B (zh) | 2010-06-16 |
US20080288727A1 (en) | 2008-11-20 |
US8321637B2 (en) | 2012-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101308462B (zh) | 管理对共享存储器单元的存储器访问的方法和计算系统 | |
CN102483704B (zh) | 具有高效的高速缓存支持的事务内存系统 | |
US8095741B2 (en) | Transactional memory computing system with support for chained transactions | |
US9009452B2 (en) | Computing system with transactional memory using millicode assists | |
US8200909B2 (en) | Hardware acceleration of a write-buffering software transactional memory | |
US8117403B2 (en) | Transactional memory system which employs thread assists using address history tables | |
JP4388916B2 (ja) | 複数の順序ベクトルで複数のメモリ順序モデルを実施する方法及び装置 | |
RU2501071C2 (ru) | Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle) | |
CN102622276B (zh) | 多处理器环境中基于事务的共享数据操作 | |
US8190859B2 (en) | Critical section detection and prediction mechanism for hardware lock elision | |
US20100162247A1 (en) | Methods and systems for transactional nested parallelism | |
CN101950259B (zh) | 用于执行事务的装置、系统及方法 | |
US8688920B2 (en) | Computing system with guest code support of transactional memory | |
TWI483180B (zh) | 重疊原子區域執行的方法 | |
JP2017509083A (ja) | バイナリトランザクションベースのプロセッサによるロックエリジョン |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100616 |
|
CF01 | Termination of patent right due to non-payment of annual fee |