CN104335185B - 受限事务执行 - Google Patents

受限事务执行 Download PDF

Info

Publication number
CN104335185B
CN104335185B CN201280073606.7A CN201280073606A CN104335185B CN 104335185 B CN104335185 B CN 104335185B CN 201280073606 A CN201280073606 A CN 201280073606A CN 104335185 B CN104335185 B CN 104335185B
Authority
CN
China
Prior art keywords
affairs
instruction
limited
program
cpu
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
Application number
CN201280073606.7A
Other languages
English (en)
Other versions
CN104335185A (zh
Inventor
D.格雷纳
T.斯莱格尔
C.雅各比
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104335185A publication Critical patent/CN104335185A/zh
Application granted granted Critical
Publication of CN104335185B publication Critical patent/CN104335185B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/463Program control block organisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Peptides Or Proteins (AREA)

Abstract

提供受限事务处理。通过事务开始受限指令的执行来起始受限事务。受限事务具有与之关联的多个限制。缺少受限的违反,所述受限事务将要完成。如果遭遇中止条件,则开始于事务开始指令,重新执行事务。限制的违反可能发生中断。

Description

受限事务执行
技术领域
一个或多个方面大体上关于多处理计算环境,且尤其关于此类计算环境内的事务处理。
背景技术
多处理器编程中的持久挑战为由多个中央处理单元(CPU)对同一储存位置的更新的挑战。更新储存位置的许多指令(甚至包括诸如AND的简单逻辑运算)用对该位置的多次存取来进行该更新。举例而言,首先提取储存位置,且接着储存回已更新结果。
为了使多个CPU安全地更新同一储存位置,序列化对该位置的存取。用先前由国际商业机器公司提供的S/360架构引入的一个指令(TEST AND SET指令)提供储存位置的连锁更新(interlocked update)。连锁更新意谓:如由其他CPU及输入/输出(I/O)子系统(例如,通道子系统)所观察的那样,指令的整个储存存取看来像是自动地发生的一样。稍后,由国际商业机器公司提供的S/370架构引入COMPARE AND SWAP及COMPARE DOUBLE AND SWAP指令,这些指令提供执行连锁更新的较精密方式且允许通常被称为锁定字组(或旗号)的实施。最近新增的指令已提供额外连锁更新能力,包括COMPARE AND SWAP AND PURGE及COMPARE AND SWAP AND STORE。然而,所有这些指令提供用于仅单一储存位置的连锁。
较复杂的程序技术可需要多个储存位置的连锁更新,诸如,当将一元素新增至一双向链接清单(doubly-linked list)时。在此类操作中,前向指针及向后指针两者皆看来像是被同时地更新一样,如由其他CPU及I/O子系统所观察的那样。为了实现此类多重位置更新,强制程序使用分离的单一序列化点,诸如,锁定字组。然而,锁定字组可提供比所保证的序列化层级粗略得多的序列化层级;举例而言,锁定字组可序列化数百万个元素的整个队列,即使仅两个元素正被更新亦如此。程序可结构化数据以使用较精细粒度级序列化(例如,锁定点阶层),但这引入额外问题,诸如,在违反该阶层时的潜在锁死情形,及在程序遭遇错误同时保持一或多个锁定时或在不能获取锁定时的复原问题。
除了以上内容以外,亦存在程序可以执行可能引起或可能不引起异常情况的指令序列的众多情境。若未发生异常情况,则程序继续;然而,若辨识出异常,则程序可采取校正动作以消除异常情况。作为一实例,Java可在(例如)理论式执行、函数的部分内嵌和/或指针空值检查的重新定序中利用此类执行。
在诸如由国际商业机器公司提供的z/OS及其前身的传统操作系统环境中,程序建立复原环境以拦截程序可遭遇的任何程序异常情况。若程序未拦截到异常,则操作系统通常针对操作系统未准备好进行处置的异常而例外地终止程序。建立及利用此类环境是昂贵且复杂的。
发明内容
经由提供一种用于处理计算环境内的事务的计算机程序产品而克服先前技术的缺点且提供优点。该计算机程序产品包括一计算机可读储存介质,该计算机可读储存介质可由一处理电路读取且储存指令以供该处理电路执行来执行一方法。举例而言,所述方法包括以下步骤:由处理器在计算环境中执行事务,所述事务有效地延迟将事务存储交付至主存储器,直到选择的事务完成为止;基于执行所述事务而确定已经出现中止条件;检查所述事务是否为受限事务,所述受限事务具有与之关联的一个或多个限制;以及基于确定所述中止条件和所述检查指示所述事务是受限事务,返回到所述事务的开始以重新执行所述事务。
本文亦描述及主张与一个或多个实施例相关的方法及系统。另外,本文亦描述且可主张与一个或多个实施例相关的服务。
贯穿全文实现额外特征及优点。其他实施例及方面在本文中得以详细地描述且被看作本发明的部分。
附图说明
在本说明书完结时于权利要求中将一个或多个方面特定地指出且清楚地主张为实例。前述及其他目标、特征及优点自结合附图而进行的以下详细描述变得显而易见,在这些图中:
图1描绘计算环境的一实施例;
图2A描绘事务开始(TBEGIN)指令的一实例;
图2B描绘图2A的TBEGIN指令的字段的另外细节的一实施例;
图3A描绘事务开始受限(TBEGINC)指令的一实例;
图3B描绘图3A的TBEGINC指令的字段的另外细节的一实施例;
图4描绘事务结束(TEND)指令的一实例;
图5描绘事务中止(TABORT)指令的一实例;
图6描绘嵌套事务的一实例;
图7描绘NONTRANSACTIONAL STORE(NTSTG)指令的一实例;
图8描绘EXTRACT TRANSACTION NESTING DEPTH(ETND)指令的一实例;
图9描绘事务诊断区块的一实例;
图10描绘中止的实例原因,连同关联中止码及条件码;
图11描绘与创建受限或非受限事务关联的逻辑的一实施例;
图12描绘与执行事务,并且具体地说,与取决于事务的类型而处理中止条件关联的逻辑的一实施例;
图13描绘与执行TBEGINC指令相关联的逻辑的一实施例;
图14描绘与采取动作以便于受限事务的完成相关联的逻辑的一实施例;
图15A至图15B描绘将队列元素插入至队列元素双向链接清单中的实例;
图16描绘计算机程序产品的一实施例;
图17描绘主机计算机系统的一实施例;
图18描绘计算机系统的另外实例;
图19描绘包含计算机网络的计算机系统的另一实例;
图20描绘计算机系统的各种元件的一实施例;
图21A描绘图20的计算机系统的执行单元的一实施例;
图21B描绘图20的计算机系统的分支单元的一实施例;
图21C描绘图20的计算机系统的载入/储存单元的一实施例;及
图22描绘模拟主机计算机系统的一实施例。
具体实施方式
根据一个方面,提供一种事务执行(TX)设施。此设施提供用于指令的事务处理,且在一个或多个实施例中提供如下文所描述的不同执行模式,以及事务处理的嵌套层级。
事务执行设施引入被称作事务执行(TX)模式的CPU状态。在CPU重设之后,CPU并不处于TX模式。CPU藉由TRANSACTION BEGIN指令进入TX模式。CPU藉由(a)最外部TRANSACTIONEND指令(关于内部指令及外部指令的更多细节如下)或(b)正被中止的事务而离开TX模式。虽然处于TX模式,但由CPU进行的储存存取看来像是区块并行的一样,如由其他CPU及I/O子系统所观察的那样。储存存取(a)在最外部事务在无中止的情况下结束时被交付至存储器(亦即,例如,在CPU本地的高速缓存或缓冲器中进行的更新经传播及储存于真实存储器中且可为其他CPU所见),或(b)在事务中止时被舍弃。
事务可为嵌套。亦即,在CPU处于TX模式时,CPU可执行另一TRANSACTION BEGIN指令。使CPU进入TX模式的指令被称作最外部TRANSACTION BEGIN;相似地,程序据称处于最外部事务。
TRANSACTION BEGIN的后续执行被称作内部指令;且程序正执行内部事务。模型提供最小嵌套深度及模型相依最大嵌套深度。EXTRACTTRANSACTION NESTING DEPTH指令传回当前嵌套深度值,且在一另外实施例中可传回最大嵌套深度值。此技术使用被称作“扁平化嵌套(flattened nesting)”的模型,其中任何嵌套深度处的中止条件造成事务的所有层级中止,且控制传回至在最外部TRANSACTION BEGIN之后的指令。
在事务的处理期间,由一个CPU进行的事务存取据称与(a)由另一CPU进行的事务存取或非事务存取冲突,或与(b)由I/O子系统进行的非事务存取冲突(若两种存取是针对同一高速缓存行内的任何位置,且这些存取中的一个或两个为储存)。换言之,为了使事务执行有生产力,CPU不应被观察到进行事务存取直至事务存取交付为止。此编程模型在某些环境中可以高度地有效;例如,数百万个元素的双向链接清单中的两个点的更新。然而,若针对正被事务地存取的储存位置存在许多争用,则该编程模型可能较不有效。
在一个事务执行模型(在本文中被称作非受限事务)中,当事务中止时,程序可尝试重新驱动事务以希望不再出现中止情况,或程序可“后退”至等效非事务路径。在另一事务执行模型(在本文中被称作受限事务)中,已中止事务由CPU自动地重新驱动;在不存在限制违反时,受限事务确保最终完成。
当起始事务时,程序可指定各种控制,诸如:(a)在事务中止时哪些通用寄存器恢复为其原始内容;(b)是否允许事务修改浮点寄存器上下文,包括(例如)浮点寄存器及浮点控制寄存器;(c)是否允许事务修改存取寄存器(AR);及(d)是否将封锁某些程序异常情况免于造成中断。若非受限事务中止,则可提供各种诊断信息。举例而言,起始非受限事务的最外部TBEGIN指令可指明程序指定事务诊断区块(TDB)。另外,若事务分别归因于程序中断或造成解译性执行结束的情况而中止,则亦可使用CPU的前置区域中或由主机的状态描述指明的TDB。
上文指示各种类型的寄存器。本文进一步详细地解释这些寄存器。通用寄存器可用作一般算术及逻辑运算中的累加器。在一个实施例中,每一寄存器含有64个位的位置,且存在16个通用寄存器。这些通用寄存器由数字0至15识别,且由一指令中的四位R字段指明。一些指令规定藉由具有若干R字段来寻址多个通用寄存器。对于一些指令,特定通用寄存器的使用被暗示,而非由该指令的R字段明确地指明。
除了作为一般算术及逻辑运算中的累加器的使用以外,16个通用寄存器中的15个寄存器亦在地址产生中用作基底地址及索引寄存器。在此等状况下,这些寄存器由一指令中的四位B字段或X字段指明。该B或X字段中的值0指定出将不应用基底或索引,且因此,通用寄存器0将不被指明为含有基底地址或索引。
浮点指令使用浮点寄存器集合。在一实施例中,CPU具有16个浮点寄存器。这些浮点寄存器由数字0至15识别,且由浮点指令中的四位R字段指明。每一浮点寄存器为64个位长,且可含有短(32位)浮点操作数或长(64位)浮点操作数。
浮点控制(FPC)寄存器为含有屏敝位、标志位、数据异常码及舍位模式位的32位寄存器,且在浮点运算的处理期间被使用。
另外,在一个实施例中,CPU具有16个控制寄存器,每一控制寄存器具有64个位的位置。这些寄存器中的位的位置指派至系统中的特定设施,诸如,程序事件记录(PER)(下文所论述),且用以指定出可进行操作,或用以供给由该设施需要的特殊信息。在一个实施例中,对于事务设施,使用CR0(位8及9)及CR2(位61至63),如下文所描述。
举例而言,CPU具有被编号为0至15的16个存取寄存器。一个存取寄存器由含有地址空间控制元素(ASCE)的间接规格的32个位的位置组成。地址空间控制元素为由动态地址转译(DAT)机制使用以将参考转译至对应地址空间的参数。当CPU处于被称作存取寄存器模式的模式(由程序状态字组(PSW)中的位控制)时,用以指定针对储存操作数参考的逻辑地址的指令B字段指明存取寄存器,且由存取寄存器指定的地址空间控制元素由DAT用于正被进行的参考。对于一些指令,使用R字段而非B字段。提供指令以用于载入及储存存取寄存器的内容且用于将一个存取寄存器的内容移动至另一存取寄存器。
存取寄存器1至15中每一个可指明任何地址空间。存取寄存器0指明主要指令空间。当存取寄存器1至15中的一个用以指明地址空间时,CPU判定藉由转译存取寄存器的内容而指明哪一地址空间。当存取寄存器0用以指明地址空间时,CPU将该存取寄存器视为指明主要指令空间,且CPU并不检验该存取寄存器的实际内容。因此,16个存取寄存器可在任一时间指明主要指令空间及15个其他空间的最大值。
在一个实施例中,存在多个类型的地址空间。一个地址空间为整数(虚拟地址)的连续序列,连同允许每一数字与存储器中的字节位置相关联的特定变换参数。该序列以0开始且自左侧至右侧进行。
举例而言,在z/Architecture中,当虚拟地址是由CPU使用以存取主存储器(又名,主存储器)时,虚拟地址首先凭借动态地址转译(DAT)而转换至真实地址,且接着凭借加前缀(prefixing)而转换至绝对地址。DAT可使用表的一个至五个层级(页、区段、区第三、区第二及区第一)作为变换参数。用于特定地址空间的最高层级表的指明(原点及长度)被称作地址空间控制元素,且该指明被发现供DAT用于控制寄存器中或如由存取寄存器所指定。或者,用于地址空间的地址空间控制元素可为真实空间指明,其指示出DAT用以简单地藉由将虚拟地址视为真实地址且不使用任何表来转译虚拟地址。
DAT在不同时间使用不同控制寄存器中或由存取寄存器指定的地址空间控制元素。选择由当前PSW中指定的转译模式判定。四个转译模式是可用的:主要空间模式、次要空间模式、存取寄存器模式及本籍空间模式(home space mode)。取决于转译模式,不同地址空间是可寻址的。
在CPU处于主要空间模式或次要空间模式时的任何时刻,CPU可转译属于两个地址空间(主要地址空间及第二地址空间)的虚拟地址。在CPU处于存取寄存器模式时的任何时刻,CPU可转译高达16个地址空间(主要地址空间及高达15个AR指定地址空间)的虚拟地址。在CPU处于本籍空间模式时的任何时刻,CPU可转译本籍地址空间的虚拟地址。
主要地址空间因而被识别,这是因为其由主要虚拟地址组成,这些主要虚拟地址凭借主要地址空间控制元素(ASCE)而转译。相似地,次要地址空间由凭借次要ASCE转译的次要虚拟地址组成;AR指定地址空间由凭借AR指定ASCE转译的AR指定虚拟地址组成;且本籍地址空间由凭借本籍ASCE转译的本籍虚拟地址组成。主要ASCE及次要ASCE分别处于控制寄存器1及7中。AR指定ASCE处于使用控制寄存器2、5及8经由被称作存取寄存器转译(ART)的处理而定位的ASN第二表项中。本籍ASCE处于控制寄存器13中。
参看图1来描述用以并入及使用本文所描述的事务设施的一个或多个方面的计算环境的一个实施例。
参看图1,在一实例中,计算环境100基于由纽约州阿蒙克市的国际商业机器公司提供的z/Architecture。2010年8月第九版的名为“z/Architecture-Principles of Operation”的IBM公开案(公开案第SA22-7932-08号)中描述z/Architecture,该公开案的全文据此以引用方式并入本文中。
Z/ARCHITECTURE、IBM以及Z/OS及Z/VM(下文所参考)为纽约州阿蒙克市的国际商业机器公司的注册商标。本文所使用的其他名称可为国际商业机器公司或其他公司的注册商标、商标或产品名称。
作为一实例,计算环境100包括经由一个或多个控制单元108耦接至一个或多个输入/输出(I/O)器件106的中央处理器复合体(central processor complex,CPC)102。举例而言,中央处理器复合体102包括一个或多个中央处理器110、一个或多个分割区112(例如,逻辑分割区(LP))、逻辑分割区超管理器(hypervisor)114及输入/输出子系统115,其中每一者在下文予以描述。
中央处理器110为分配给逻辑分割区的实体处理器资源。详言之,每一逻辑分割区112具有一个或多个逻辑处理器,其中每一逻辑处理器表示分配给该分割区的实体处理器110的全部或份额。特定分割区112的逻辑处理器可专用于该分割区,使得底层处理器资源110针对那个分割区而保留;或这些逻辑处理器可与另一分割区共用,使得该底层处理器资源潜在地可用于另一分割区。
逻辑分割区充当分离系统且具有一个或多个应用程序,且视情况在其中具有驻留操作系统,该驻留操作系统针对每一逻辑分割区可不同。在一实施例中,操作系统为由纽约州阿蒙克市的国际商业机器公司提供的z/OS操作系统、z/VM操作系统、z/Linux操作系统或TPF操作系统。逻辑分割区112由逻辑分割区超管理器114管理,逻辑分割区超管理器114由处理器110上运行的固件实施。如本文所使用,固件包括(例如)处理器的微码(microcode)和/或毫码(millicode)。举例而言,固件包括在较高层级机器码的实施中使用的硬件层级指令和/或数据结构。在一实施例中,举例而言,固件包括通常作为包括受信任软件的微码或特定于底层硬件的微码进行递送且控制对系统硬件的操作系统存取的专属码。
逻辑分割区及逻辑分割区超管理器各自包含驻留于与中央处理器相关联的中央存储器的各别分割区中的一个或多个程序。逻辑分割区超管理器114的一个实例为由纽约州阿蒙克市的国际商业机器公司提供的Processor Resource/System Manager(PR/SM)。
输入/输出子系统115在输入/输出器件106与主存储器(又名,主存储器)之间引导信息流动。输入/输出子系统耦接至中央处理复合体,此在于:输入/输出子系统可为中央处理器复合体的部分或与中央处理器复合体分离。I/O子系统使中央处理器减轻直接地与输入/输出器件通信的任务的负担,且准许数据处理与输入/输出处理并行地进行。为了提供通信,I/O子系统使用I/O通信适配器。存在各种类型的通信适配器,包括(例如)通道、I/O适配器、PCI卡、乙太网卡、小型计算机储存接口(SCSI)卡等等。在本文所描述的特定实例中,I/O通信适配器为通道,且因此,I/O子系统在本文中被称作通道子系统。然而,此情形仅为一实例。可使用其他类型的I/O子系统。
I/O子系统使用一个或多个输入/输出路径作为通信链路来管理至或自输入/输出器件106的信息流动。在此特定实例中,此等路径被称作通道路径,这是因为通信适配器为通道。
上文所描述的计算环境仅为可使用的计算环境的一个实例。可使用包括但不限于非分割环境、其他分割环境和/或模拟环境的其他环境;实施例并不限于任一环境。
根据一个或多个方面,事务执行设施为CPU增强,其提供可用来使CPU执行指令序列(被称作事务)的方式,这些指令可存取多个储存位置,包括那些位置的更新。如由其他CPU及I/O子系统所观察,事务是(a)整体上作为单一不可部分完成操作而完成,或(b)中止,从而潜在地不留下事务曾经执行的迹象(惟本文所描述的某些条件除外)。因此,成功完成的事务可在没有在传统多处理模型中需要的任何特殊锁定的情况下更新众多储存位置。
举例而言,事务执行设施包括一个或多个控制、一个或多个指令、包括受限执行及非受限执行的事务处理及中止处理,其中每一个在下文予以进一步描述。
在一个实施例中,使用以下各者以控制事务执行设施:三个特殊用途控制,包括事务中止程序状态字组(PSW)、事务诊断区块(TDB)地址及事务嵌套深度;五个控制寄存器位;及六个一般指令,包括TRANSACTION BEGIN(受限及非受限)、TRANSACTION END、EXTRACTTRANSACTION NESTING DEPTH、TRANSACTION ABORT及NONTRANSACTIONAL STORE。当该设施被安装时,该设施安装于(例如)配置中的所有CPU中。一个设施指示(在一实施中为位73)在为1时指示事务执行设施被安装。
当事务执行设施被安装时,该配置提供非受限事务执行设施且视情况提供受限事务执行设施,其中每一设施在下文予以描述。作为实例,当设施指示50及73皆为1时,受限事务执行设施被安装。两个设施指示皆在指定位置处储存于存储器中。
如本文所使用,指令名称TRANSACTION BEGIN指代具有助记符TBEGIN(用于非受限事务的事务开始)及TBEGINC(用于受限事务的事务开始)的指令。关于特定指令的论述由指令名称继之以圆括号或括号中的助记符指示,或简单地由助记符指示。
图2A至图2B中描绘TRANSACTION BEGIN(TBEGIN)指令的格式的一实施例。作为一实例,TBEGIN指令200包括:操作码字段202,其包括指定事务开始非受限操作的操作码;基本字段(B1)204;位移字段(D1)206;及立即字段(I2)208。当B1字段为非零时,将由B1204指定的通用寄存器的内容添加至D1206以获得第一操作数地址。
当B1字段为非零时,以下内容适用:
·当事务嵌套深度最初为0时,第一操作数地址指明被称作TBEGIN指定的TDB(下文进一步所描述)的256字节事务诊断区块的位置,若事务中止,则各种诊断信息可储存至TBEGIN指定的TDB中。当CPU处于主要空间模式或存取寄存器模式时,第一操作数地址指明主要地址空间中的位置。当CPU处于次要空间模式或本籍空间模式时,第一操作数地址分别指明次要地址空间或本籍地址空间中的位置。当DAT关断时,事务诊断区块(TDB)地址(TDBA)指明真实存储器中的位置。
判定对第一操作数的储存可存取性。若为可存取,则操作数的逻辑地址置放至事务诊断区块地址(TDBA)中,且TDBA有效。
·当CPU已经处于非受限事务执行模式时,TDBA未被修改,且不可预测的是第一操作数是否针对可存取性而被测试。
当B1字段为0时,针对第一操作数未侦测到存取异常,且对于最外部TBEGIN指令,TDBA无效。
在一实例中,I2字段的位被定义如下:
通用寄存器储存屏敝(GRSM)210(图2B):I2字段的位0至7含有通用寄存器储存屏敝(GRSM)。GRSM的每一位表示通用寄存器的偶奇对,其中位0表示寄存器0及1,位1表示寄存器2及3,等等。当最外部TBEGIN指令的GRSM中的位为0时,不储存对应寄存器对。当最外部TBEGIN指令的GRSM中的位为1时,将对应寄存器对储存于不能由程序直接地存取的依赖于模型的位置中。
若事务中止,则当执行最外部TBEGIN指令时,将已储存寄存器对恢复为其内容。当事务中止时,不恢复所有其他(未储存)通用寄存器的内容。
在惟最外部TBEGIN除外的所有TBEGIN上忽略通用寄存器储存屏敝。
允许AR修改(A)212:A控制(I2字段的位12)控制是否允许事务修改存取寄存器。有效允许AR修改控制为针对当前嵌套层级及针对所有外部层级的TBEGIN指令中的A控制的逻辑AND。
若有效A控制为0,则在尝试修改任何存取寄存器时事务将用中止码11(受限定指令)进行中止。若有效A控制为1,则在存取寄存器被修改(不存在任何其他中止条件)时事务将不中止。
允许浮点运算(F)214:F控制(I2字段的位13)控制是否允许事务执行指定浮点指令。有效允许浮点运算控制为针对当前嵌套层级及针对所有外部层级的TBEGIN指令中的F控制的逻辑AND。
若有效F控制为0,则(a)在尝试执行浮点指令时事务将用中止码11(受限定指令)进行中止,且(b)浮点控制寄存器(FPCR)的字节2中的数据异常码(DXC)将不由任何数据异常程序异常情况设定。若有效F控制为1,则(a)在尝试执行浮点指令(不存在任何其他中止条件)时事务将不中止,且(b)FPCR中的DXC可由数据异常程序异常情况设定。
程序中断筛选控制(PIFC)216:I2字段的位14至15为程序中断筛选控制(PIFC)。PIFC控制在CPU处于事务执行模式时发生的某些类别的程序异常情况(例如,寻址异常、数据异常、操作异常、保护异常等等)是否引起中断。
有效PIFC为针对当前嵌套层级及针对所有外部层级的TBEGIN指令中的PIFC的最高值。当有效PIFC为0时,所有程序异常情况引起中断。当有效PIFC为1时,具有事务执行类别1及2的程序异常情况引起中断。(取决于异常的严重性,每一程序异常情况被指派至少一事务执行类别。严重性基于在事务的重复执行期间复原的可能性,及操作系统是否需要查看中断。)当有效PIFC为2时,具有事务执行类别1的程序异常情况引起中断。保留为3的PIFC。
I2字段的位8至11(指令的位40至43)被保留且应含有0;否则,程序在未来可不相容地操作。
参看图3A至图3B来描述事务开始受限(TBEGINC)指令的格式的一实施例。在一实例中,TBEGINC 300包括:操作码字段302,其包括指定事务开始受限操作的操作码;基本字段(B1)304;位移字段(D1)306;及立即字段(I2)308。将由B1304指定的通用寄存器的内容添加至D1306以获得第一操作数地址。然而,在用事务开始受限指令的情况下,第一操作数地址不用以存取存储器。取而代之,指令的B1字段包括0;否则,辨识出规格异常。
在一实施例中,I2字段包括各种控制,这些控制的实例在图3B中予以描绘。
在一实例中,I2字段的位被定义如下:
通用寄存器储存屏敝(GRSM)310:I2字段的位0至7含有通用寄存器储存屏敝(GRSM)。GRSM的每一位表示通用寄存器的偶奇对,其中位0表示寄存器0及1,位1表示寄存器2及3,等等。当GRSM中的位为0时,不储存对应寄存器对。当GRSM中的位为1时,将对应寄存器对储存于不能由程序直接地存取的依赖于模型的位置中。
若事务中止,则当执行最外部TRANSACTION BEGIN指令时,将已储存寄存器对恢复为其内容。当受限事务中止时,不恢复所有其他(未储存)通用寄存器的内容。
当TBEGINC用以在非受限事务执行模式下继续执行时,忽略通用寄存器储存屏敝。
允许AR修改(A)312:A控制(I2字段的位12)控制是否允许事务修改存取寄存器。有效允许AR修改控制为针对当前嵌套层级及针对任何外部TBEGIN或TBEGINC指令的TBEGINC指令的A控制中的逻辑AND。
若有效A控制为0,则在尝试修改任何存取寄存器时事务将用中止码11(受限定指令)进行中止。若有效A控制为1,则在存取寄存器被修改(不存在任何其他中止条件)时事务将不中止。
I2字段的位8至11及13至15(指令的位40至43及45至47)被保留且应含有0。
事务开始指令的结束由TRANSACTION END(TEND)指令指定,该TRANSACTION END(TEND)指令的格式在图4中予以描绘。作为一实例,TEND指令400包括操作码字段402,操作码字段402包括指定事务结束操作的操作码。
关于事务执行设施而使用多个术语,且因此,仅出于方便起见,下文以按字母排序次序提供术语清单。在一实施例中,这些术语具有以下定义:
中止:当事务在引起事务嵌套深度为0的TRANSACTION END指令之前结束时,事务中止。在一实施例中,当事务中止时,发生以下情形:
·由事务的任何及所有层级进行的事务储存存取被舍弃(亦即,未被交付)。
·由事务的任何及所有层级进行的非事务储存存取被交付。
·由最外部TRANSACTION BEGIN指令的通用寄存器储存屏敝(GRSM)指明的寄存器在事务执行之前恢复为其内容(亦即,恢复为其在执行最外部TRANSACTION BEGIN指令时的内容)。未由最外部TRANSACTION BEGIN指令的通用寄存器储存屏敝指明的通用寄存器未被恢复。
·存取寄存器、浮点寄存器及浮点控制寄存器未被恢复。当事务中止时,保持在事务执行期间对这些寄存器进行的任何改变。
事务可归因于多种原因而中止,这些原因包括受限定指令的已尝试执行、受限定资源的已尝试修改、事务冲突、超过各种CPU资源、任何解译性执行拦截条件、任何中断、TRANSACTION ABORT指令及其他原因。事务中止码提供事务为何可中止的特定原因。
参看图5来描述TRANSACTION ABORT(TABORT)指令的格式的一实例。作为一实例,TABORT指令500包括:操作码字段502,其包括指定事务中止操作的操作码;基本字段(B2)504;及位移字段(D2)506。当B2字段为非零时,将由B2504指定的通用寄存器的内容添加至D2506以获得第二操作数地址;否则,第二操作数地址仅由D2字段形成,且忽略B2字段。第二操作数地址不用以寻址数据;取而代之,该地址形成在中止处理期间置放于事务诊断区块中的事务中止码。用于第二操作数地址的地址计算遵循地址算术规则:在24位寻址模式下,将位0至29设定为0;在31位寻址模式下,将位0至32设定为0。
交付:在最外部TRANSACTION END指令完成时,CPU交付由事务进行的储存存取(亦即,最外部事务及任何嵌套层级),使得这些储存存取可为其他CPU及I/O子系统所见。如由其他CPU且由I/O子系统所观察,当发生交付时,由事务的所有嵌套层级进行的所有提取及储存存取看来像是作为单一并行操作而发生。
通用寄存器、存取寄存器、浮点寄存器及浮点控制寄存器的内容未藉由交付程序修改。当交付事务的储存时,保持在事务执行期间对这些寄存器进行的任何改变。
冲突:由一个CPU进行的事务存取与(a)由另一CPU进行的事务存取或非事务存取冲突,或与(b)由I/O子系统进行的非事务存取冲突(若两种存取针对同一高速缓存行内的任何位置,且这些存取中的一个或多个为储存)。
冲突可藉由CPU对指令的理论式执行而侦测,即使冲突不可以概念序列被侦测亦如此。
受限事务:受限事务为在受限事务执行模式下执行且经受以下限制的事务:
·一般指令的子集可用。
·可执行有限数目个指令。
·可存取有限数目个储存操作数位置。
·事务限于单一嵌套层级。
在不存在重复中断或与其他CPU或I/O子系统的冲突时,受限事务最终完成,因此无需中止处理例程。下文详细地描述受限事务。
当在CPU已经处于非受限事务执行模式时执行TRANSACTION BEGIN受限(TBEGINC)指令时,执行作为嵌套非受限事务而继续。
受限事务执行模式:当事务嵌套深度为0且事务由TBEGINC指令起始时,CPU进入受限事务执行模式。在CPU处于受限事务执行模式时,事务嵌套深度为1。
嵌套事务:当在CPU处于非受限事务执行模式时发出TRANSACTIONBEGIN指令时,事务为嵌套。
事务执行设施使用被称作扁平化嵌套的模型。在扁平化嵌套模式下,由内部事务进行的储存不能由其他CPU及I/O子系统观察直至最外部事务交付其储存为止。相似地,若事务中止,则所有嵌套事务中止,且舍弃所有嵌套事务的所有事务储存。
图6中描绘嵌套事务的一实例。如图所示,第一TBEGIN 600启动最外部事务601,TBEGIN 602启动第一嵌套事务,且TBEGIN 604启动第二嵌套事务。在此实例中,TBEGIN 604及TEND 606定义最内部事务608。当TEND 610执行时,针对最外部事务及所有内部事务交付(612)事务储存。
非受限事务:非受限事务为在非受限事务执行模式下执行的事务。尽管非受限事务并不以如同受限事务的方式受到限制,但非受限事务仍可归因于多种原因而中止。
非受限事务执行模式:当事务由TBEGIN指令起始时,CPU进入非受限事务执行模式。在CPU处于非受限事务执行模式时,事务嵌套深度可自1至最大事务嵌套深度而变化。
非事务存取:非事务存取为由CPU在不处于事务执行模式时进行的储存操作数存取(亦即,在事务外的传统储存存取)。另外,由I/O子系统进行的存取为非事务存取。另外,NONTRANSACTIONAL STORE指令可用以在CPU处于非受限事务执行模式时造成非事务储存存取。
参看图7来描述NONTRANSACTIONAL STORE指令的格式的一实施例。作为一实例,NONTRANSACTIONAL STORE指令700包括:复数个操作码字段702a、702b,其指定指明非事务储存操作的操作码;寄存器字段(R1)704,其指定寄存器,该寄存器的内容被称作第一操作数;索引字段(X2)706;基本字段(B2)708;第一位移字段(DL2)710;及第二位移字段(DH2)712。将由X2字段及B2字段指明的通用寄存器的内容添加至DH2字段及DL2字段的内容的串连的内容以形成第二操作数地址。当X2字段或B2字段中任一个或两个为0时,对应寄存器不参与该添加。
使64位第一操作数在第二操作数位置处非事务地置于不变。
由DH2字段及DL2字段的串连形成的位移被视为20位带正负号二进位整数。
第二操作数用以在双字组边界上对准;否则,辨识出规格异常且抑制操作。
外部/最外部事务:具有较低编号事务嵌套深度的事务为外部事务。具有为1的事务嵌套深度值的事务为最外部事务。
最外部TRANSACTION BEGIN指令为在事务嵌套深度最初为0时执行的指令。最外部TRANSACTION END指令为使事务嵌套深度自1转变至0的指令。在此实施例中,受限事务为最外部事务。
程序中断筛选:当事务归因于某些程序异常情况而中止时,程序可视情况防止发生中断。此技术被称作程序中断筛选。程序中断筛选经受中断的事务类别、来自TRANSACTION BEGIN指令的有效程序中断筛选控制及控制寄存器0中的事务执行程序中断筛选覆写。
事务:在CPU处于事务执行模式时,事务包括所进行的储存操作数存取及所变更的选择的通用寄存器。对于非受限事务,储存操作数存取可包括事务存取及非事务存取两者。对于受限事务,储存操作数存取限于事务存取。如由其他CPU及I/O子系统所观察,由CPU在处于事务执行模式时进行的所有储存操作数存取看来像是作为单一并行操作而发生。若事务中止,则舍弃事务储存存取,且使由最外部TRANSACTION BEGIN指令的通用寄存器储存屏敝指明的任何寄存器恢复为其在事务执行之前的内容。
事务存取:事务存取为在CPU处于事务执行模式时进行的储存操作数存取,惟由NONTRANSACTIONAL STORE指令进行的存取除外。
事务执行模式:术语事务执行模式描述非受限事务执行模式及受限事务执行模式两者的共同操作。因此,当描述该操作时,术语非受限及受限用以限定事务执行模式。
当事务嵌套深度为0时,CPU不处于事务执行模式(亦被称作非事务执行模式)。
如由CPU所观察,在事务执行模式下进行的提取及储存并非不同于在不处于事务执行模式时进行的提取及储存。
在z/Architecture的一实施例中,事务执行设施在控制寄存器0的位8至9、控制寄存器2的位61至63、事务嵌套深度、事务诊断区块地址及事务中止程序状态字组(PSW)的控制下。
在初始CPU重设之后,将控制寄存器0的位的位置8至9、控制寄存器2的位的位置62至63及事务嵌套深度的内容设定为0。当事务执行控制(控制寄存器0的位8)为0时,不能将CPU置于事务执行模式。
下文描述关于各种控制的另外细节。
如所指示,事务执行设施由控制寄存器0中的两个位及控制寄存器2中的三个位控制。举例而言:
控制寄存器0位:在一实施例中,位指派如下:
事务执行控制(TXC):控制寄存器0的位8为事务执行控制。此位提供可用来使控制程序(例如,操作系统)指示事务执行设施是否可由该程序使用的机制。位8将为1以成功地进入事务执行模式。
当控制寄存器0的位8为0时,EXTRACT TRANSACTION NESTING DEPTH、TRANSACTIONBEGIN及TRANSACTION END指令的已尝试执行引起特殊操作执行。
参看图8来描述EXTRACT TRANSACTION NESTING DEPTH指令的格式的一实施例。作为一实例,EXTRACT TRANSACTION NESTING DEPTH指令800包括:操作码字段802,其指定指示撷取事务嵌套深度操作的操作码;及寄存器字段R1804,其指明通用寄存器。
将当前事务嵌套深度置于通用寄存器R1的位48至63中。该寄存器的位0至31保持不变,且将该寄存器的位32至47设定为0。
在一另外实施例中,亦将最大事务嵌套深度置于通用寄存器R1中,诸如,位16至31中。
事务执行程序中断筛选覆写(PIFO):控制寄存器0的位9为事务执行程序中断筛选覆写。此位提供可用来使控制程序确保在CPU处于事务执行模式时发生的任何程序异常情况引起中断而不管由TRANSACTION BEGIN指令指定或暗示的有效程序中断筛选控制的机制。
控制寄存器2位:在一实施例中,指派如下:
事务诊断范畴(TDS):控制寄存器2的位61控制该寄存器的位62至63中的事务诊断控制(TDC)的适用性,如下:
TDS
值 含义
0 TDC适用而不管CPU处于问题状态或监督状态。
1 仅当CPU处于问题状态时TDC才适用。当CPU处于监督状态时,处理如同TDC含有0一样。
事务诊断控制(TDC):控制寄存器2的位62至63为可用以使事务出于诊断目的而随机地中止的2位无正负号整数。在一实例中,TDC的编码如下:
TDC
值 含义
0 正常操作;事务并不由于TDC而中止。
1 在随机指令处但在最外部TRANSACTION END指令的执行之前中止每一事务。
2 在随机指令处中止随机事务。
3 保留
当事务归因于非零TDC而中止时,则可发生以下情形中任一者:
·将中止码设定为码7至11、13至16或255中任一个,其中该码的值由CPU随机地选择;将条件码设定成对应于中止码。下文进一步描述中止码。
·对于非受限事务,将条件码设定为1。在此状况下,中止码不适用。
这是依赖于是否实施TDC值1的模型。若未实施,则为1的值起作用就如同指定2一样。
对于受限事务,处理为1的TDC值就如同指定为2的TDC值一样。
若指定为3的TDC值,则结果是不可预测的。
事务诊断区块地址(TDBA)
当最外部TRANSACTION BEGIN(TBEGIN)指令的B1字段为非零时,自该指令的第一操作数地址设定有效事务诊断区块地址(TDBA)。当CPU处于主要空间模式或存取寄存器模式时,TDBA指明主要地址空间中的位置。当CPU处于次要空间模式或本籍空间模式时,TDBA分别指明次要地址空间或本籍地址空间中的位置。当DAT(动态地址转译)关断时,TDBA指明真实存储器中的位置。
若事务随后中止,则TDBA由CPU使用以定位事务诊断区块(被称作TBEGIN指定的TDB)。TDBA的最右侧三个位为0,此意谓TBEGIN指定的TDB处于双字组边界上。
当最外部TRANSACTION BEGIN(TBEGIN)指令的B1字段为0时,事务诊断区块地址无效,且若事务随后中止,则不储存TBEGIN指定的TDB。
事务中止PSW(TAPSW)
在嵌套深度最初为0时TRANSACTION BEGIN(TBEGIN)指令的执行期间,将事务中止PSW设定为当前PSW的内容;且事务中止PSW的指令地址指明下一循序指令(亦即,在最外部TBEGIN之后的指令)。在嵌套深度最初为0时TRANSACTION BEGIN受限(TBEGINC)指令的执行期间,将事务中止PSW设定为当前PSW的内容,惟事务中止PSW的指令地址指明TBEGINC指令(而非在TBEGINC之后的下一循序指令)除外。
当事务中止时,用指示中止情况的严重性的码来取代事务中止PSW中的条件码。随后,若事务归因于不引起中断的原因而中止,则自事务中止PSW载入PSW;若事务归因于引起中断的原因而中止,则将事务中止PSW储存为中断旧PSW。
在任何内部TRANSACTION BEGIN指令的执行期间不变更事务中止PSW。
事务嵌套深度(TND)
举例而言,事务嵌套深度为每当用条件码0来完成TRANSACTION BEGIN指令时累加且每当完成TRANSACTION END指令时递减的16位无正负号值。当事务中止时或由CPU重设时,将事务嵌套深度重设至0。
在一实施例中,实施为为15之最大TND。
在一实施中,当CPU处于受限事务执行模式时,事务嵌套深度为1。另外,尽管最大TND可被表示为4位值,但TND经定义为16位值以促进其在事务诊断区块中的检测。
事务诊断区块(TDB)
当事务中止时,各种状态信息可储存于事务诊断区块(TDB)中,如下:
1.TBEGIN指定的TDB:对于非受限事务,当最外部TBEGIN指令的B1字段为非零时,该指令的第一操作数地址指明TBEGIN指定的TDB。此地址为可由应用程序的中止处理例程检验的应用程序指定位置。
2.程序中断(PI)TDB:若非受限事务归因于非筛选程序异常情况而中止时,或若受限事务归因于任何程序异常情况(亦即,引起正被辨识的程序中断的任何情况)而中止时,将PI-TDB储存至前置区域中的位置中。此情形可用于使操作系统在其可提供的任何诊断报告中进行检测及登出。
3.拦截TDB:若事务归因于引起拦截的任何程序异常情况而中止(亦即,该情况造成解译性执行结束且造成控制传回至主机程序),则TDB储存至用于访客操作系统的状态描述区块中指定的位置中。
在一实施例中,当TDB地址有效时(亦即,当最外部TBEGIN指令的B1字段为非零时),仅储存TBEGIN指定的TDB。
对于归因于未筛选程序异常情况的中止,将储存PI-TDB或拦截TDB中仅一者。因此,可存在针对一中止而储存的零个、一个或两个TDB。
下文描述关于TDB中每一个的一实例的另外细节:
TBEGIN指定之TDB:由有效事务诊断区块地址指定的256字节位置。当事务诊断区块地址有效时,事务中止时储存TBEGIN指定的TDB。TBEGIN指定的TDB经受在执行最外部TRANSACTION BEGIN指令时有效的所有储存保护机制。用于TBEGIN指定的TDB的任何部分的PER(程序事件记录)储存变更事件在执行最外部TBEGIN期间而非在事务中止处理期间被侦测。
PER的一个目的是协助对程序进行除错。作为实例,PER准许向程序提醒以下类型的事件:
·执行成功分支指令。提供使事件仅在分支目标位置处于已指明储存区域内时才发生的选项。
·自已指明储存区域提取指令。
·变更已指明储存区域的内容。提供使事件仅在储存区域处于已指明地址空间内时才发生的选项。
·执行STORE USING REAL ADDRESS指令。
·执行TRANSACTION END指令。
程序可选择地指定出以上类型的事件中的一个或多个被辨识,惟用于STOREUSING REAL ADDRESS的事件可仅与储存变更事件一起被指定除外。关于PER事件的信息系凭借程序中断而提供至程序,其中该中断的原因是在中断码中被识别。
当事务诊断区块地址无效时,不储存TBEGIN指定的TDB。
程序中断TDB:真实位置6,144至6,399(1800至18FF十六进位)。当事务归因于程序中断而中止时,储存程序中断TDB。当事务归因于其他原因而中止时,程序中断TDB的内容是不可预测的。
程序中断TDB不经受任何保护机制。当在程序中断期间储存程序中断TDB时,PER储存变更事件不针对程序中断TDB被侦测。
拦截TDB:由状态描述的位置488至495指定的256字节主机真实位置。当已中止事务引起访客程序中断拦截(亦即,拦截码8)时,储存拦截TDB。当事务归因于其他原因而中止时,拦截TDB的内容是不可预测的。拦截TDB不经受任何保护机制。
如图9所描绘,在一实施例中,事务诊断区块900的字段如下:
格式902:字节0含有有效性及格式指示,如下:
格式字段为零的TDB被称作空值TDB。
标志904:字节1含有各种指示,如下:
冲突令牌有效性(CTV):当事务归因于提取或储存冲突(亦即,分别为中止码9或10)而中止时,字节1的位0为冲突令牌有效性指示。当CTV指示为1时,TDB的字节16至23中的冲突令牌910含有冲突被侦测的逻辑地址。当CTV指示为0时,TDB的字节16至23是不可预测的。
当事务归因于不同于撷取或储存冲突的任何原因而中止时,将字节1的位0储存为0。
受限事务指示(CTI):当CPU处于受限事务执行模式时,将字节1的位1设定为1。当CPU处于非受限事务执行模式时,将字节1的位1设定为0。
保留:保留字节1的位2至7且将其储存为0。
事务嵌套深度(TND)906:当事务中止时,字节6至7含有事务嵌套深度。
事务中止码(TAC)908:字节8至15含有64位无正负号事务中止码。每一码点指示事务被中止的原因。
这是依赖于当事务归因于不同于程序中断的条件而中止时事务中止码是否储存于程序中断TDB的模型。
冲突令牌910:对于归因于提取或储存冲突(亦即,分别为中止码9及10)而中止的事务,字节16至23含有冲突被侦测的储存位置的逻辑地址。当CTV位(字节1的位0)为1时,冲突令牌有意义。
当CTV位为0时,字节16至23是不可预测的。
由于由CPU进行的理论式执行,冲突令牌可指明将未必由事务的概念执行序列存取的储存位置。
已中止事务指令地址(ATIA)912:字节24至31含有识别在侦测到中止时正执行的指令的指令地址。当事务归因于中止码2、5、6、11、13或256或更高的中止码而中止时,或当事务归因于中止码4或13而中止且程序异常情况正设为空值时,ATIA直接地指向正被执行的指令。当事务归因于中止码4或12而中止且程序异常情况未设为空值时,ATIA越过正被执行的指令。
当事务归因于中止码7至10、14至16或255而中止时,ATIA未必指示造成中止的确切指令,但可指向事务内的较早或较迟指令。
取决于如上文所描述的中止码,若事务归因于为执行类型指令的目标的指令而中止,则ATIA识别执行类型指令,从而指向或越过该指令。ATIA并不指示执行类型指令的目标。
当事务中止时,ATIA经受寻址模式。在24位寻址模式下,字段的位0至40含有0。在31位寻址模式下,字段的位0至32含有0。
这是依赖于当事务归因于不同于程序中断之条件而中止时,已中止事务指令地址是否储存于程序中断TDB中的模型。
当事务归因于中止码4或12而中止且程序异常情况未设为空值时,ATIA并不指向造成中止的指令。藉由自ATIA减去由中断长度码(ILC)指示的半字组的数目,在正抑制或终止的情况下或针对正完成的非PER事件可识别造成中止的指令。当事务归因于PER事件而中止且不存在其他程序异常情况时,ATIA是不可预测的。
当事务诊断区块地址有效时,可在TBEGIN指定的TDB的字节36至39中的程序中断识别(PIID)中检验ILC。当筛选不适用时,可在真实存储器中的位置140至143处的PIID中检验ILC。
异常存取识别(EAID)914:对于归因于某些已筛选程序异常情况而中止的事务,TBEGIN指定的TDB的字节32含有异常存取识别。在z/Architecture的一实例中,当异常情况引起中断时,EAID的格式及EAID被储存的状况相同于真实位置160中描述的EAID的格式及EAID被储存的状况,如上文以引用方式并入的操作原理中所描述。
对于出于其他原因(包括引起程序中断的任何异常情况)而中止的事务,字节32是不可预测的。在程序中断TDB中,字节32是不可预测的。
此字段仅储存于由事务诊断区块地址指明的TDB中;否则,保留该字段。EAID仅针对存取清单控制或DAT保护、ASCE类型、页转译、区第一转译、区第二转译、区第三转译及区段转译程序异常情况被储存。
数据异常码(DXC)916:对于归因于已筛选数据异常程序异常情况而中止的事务,TBEGIN指定的TDB的字节33含有数据异常码。在z/Architecture的一实例中,当异常情况引起中断时,DXC的格式及DXC被储存的状况相同于真实位置147中描述的DXC的格式及DXC被储存的状况,如上文以引用方式并入的操作原理中所描述。在一实例中,位置147包括DXC。
对于出于其他原因(包括引起程序中断的任何异常情况)而中止的事务,字节33是不可预测的。在程序中断TDB中,字节33是不可预测的。
此字段仅储存于由事务诊断区块地址指明的TDB中;否则,保留该字段。仅针对数据程序异常情况而储存DXC。
程序中断识别(PIID)918:对于归因于已筛选程序异常情况而中止的事务,TBEGIN指定的TDB的字节36至39含有程序中断识别。在z/Architecture的一实例中,当情况引起中断时,PIID的格式相同于真实位置140至143中描述的PIID的格式(如上文以引用方式并入的操作原理中所描述),惟PIID的位13至14中的指令长度码各别于异常情况被侦测的指令除外。
对于出于其他原因(包括引起程序中断的异常情况)而中止的事务,字节36至39是不可预测的。在程序中断TDB中,字节36至39是不可预测的。
此字段仅储存于由事务诊断区块地址指明的TDB中;否则,保留该字段。程序中断识别仅针对程序异常情况被储存。
转译异常识别(TEID)920:对于归因于以下已筛选程序异常情况中任一者而中止的事务,TBEGIN指定的TDB之字节40至47含有转译异常识别。
·存取清单控制或DAT保护
·ASCE类型
·页转译
·区第一转译
·区第二转译
·区第三转译
·区段转译异常
在z/Architecture的一实例中,当情况引起中断时,TEID的格式相同于真实位置168至175中描述的TEID的格式,如上文以引用方式并入的操作原理中所描述。
对于出于其他原因(包括引起程序中断之异常情况)而中止的事务,字节40至47是不可预测的。在程序中断TDB中,字节40至47是不可预测的。
此字段仅储存于由事务诊断区块地址指明的TDB中;否则,保留该字段。
中断事件(breaking event)地址922:对于归因于已筛选程序异常情况而中止的事务,TBEGIN指定的TDB的字节48至55含有中断事件地址。在z/Architecture的一实例中,当条件引起中断时,中断事件地址的格式相同于真实位置272至279中描述的中断事件地址的格式,如上文以引用方式并入的操作原理中所描述。
对于出于其他原因(包括引起程序中断的异常情况)而中止的事务,字节48至55是不可预测的。在程序中断TDB中,字节48至55是不可预测的。
此字段仅储存于由事务诊断区块地址指明的TDB中;否则,保留该字段。
下文描述关于中断事件的另外细节。
在z/Architecture的一实施例中,当安装PER-3设施时,PER-3设施向程序提供最后指令的地址以造成CPU的循序执行的中断。中断事件地址记录可用作针对万用分支侦测的除错协助。举例而言,此设施提供CPU中的64位寄存器,其被称作中断事件地址寄存器。每当不同于TRANSACTION ABORT的指令造成循序指令执行的中断(亦即,PSW中的指令地址被取代,而非被累加该指令的长度)时,将那个指令的地址置放于中断事件地址寄存器中。只要发生程序中断,无论是否指示PER,皆将中断事件地址寄存器的当前内容置放于真实储存位置272至279中。
若造成中断事件的指令为执行类型指令(EXECUTE或EXECUTE RELATIVE LONG)的目标,则将用以提取执行类型指令的指令地址置放于中断事件地址寄存器中。
在z/Architecture的一实施例中,只要以下指令中之一者造成分支,就认为发生中断事件:BRANCH AND LINK(BAL,BALR);BRANCH AND SAVE(BAS,BASR);BRANCH AND SAVEAND SET MODE(BASSM);BRANCH AND SET MODE(BSM);BRANCH AND STACK(BAKR);BRANCH ONCONDITION(BC,BCR);BRANCH ON COUNT(BCT,BCTR,BCTG,BCTGR);BRANCH ON INDEX HIGH(BXH,BXHG);BRANCH ON INDEX LOW OR EQUAL(BXLE,BXLEG);BRANCH RELATIVE ONCONDITION(BRC);BRANCH RELATIVE ON CONDITION LONG(BRCL);BRANCH RELATIVE ONCOUNT(BRCT,BRCTG);BRANCH RELATIVE ON INDEX HIGH(BRXH,BRXHG);BRANCH RELATIVEON INDEX LOW OR EQUAL(BRXLE,BRXLG);COMPARE AND BRANCH(CRB,CGRB);COMPARE ANDBRANCH RELATIVE(CRJ,CGRJ);COMPARE IMMEDIATE AND BRANCH(CIB,CGIB);COMPAREIMMEDIATE AND BRANCH RELATIVE(CIJ,CGIJ);COMPARE LOGICAL AND BRANCH(CLRB,CLGRB);COMPARE LOGICAL AND BRANCH RELATIVE(CLRJ,CLGRJ);COMPARE LOGICALIMMEDIATE AND BRANCH(CLIB,CLGIB);及COMPARE LOGICAL IMMEDIATE AND BRANCHRELATIVE(CLIJ,CLGIJ)。
只要以下指令中之一者完成,就亦认为发生中断事件:BRANCH AND SETAUTHORITY(BSA);BRANCH IN SUBSPACE GROUP(BSG);BRANCH RELATIVE AND SAVE(BRAS);BRANCH RELATIVE AND SAVE LONG(BRASL);LOAD PSW(LPSW);LOAD PSW EXTENDED(LPSWE);PROGRAM CALL(PC);PROGRAM RETURN(PR);PROGRAM TRANSFER(PT);PROGRAM TRANSFERWITH INSTANCE(PTI);RESUME PROGRAM(RP);及TRAP(TRAP2,TRAP4)。
由于事务中止(隐含地或由于TRANSACTION ABORT指令)而不认为发生中断事件。
依赖于模型的诊断信息924:字节112至127含有依赖于模型的诊断信息。
对于惟12(已筛选程序中断)除外的所有中止码,将依赖于模型的诊断信息储存于所储存的每一TDB中。
在一实施例中,依赖于模型的诊断信息包括以下各者:
·字节112至119含有被称作事务执行分支指示(TXBI)的64个位的向量。该向量的前63个位中每一者指示在CPU处于事务执行模式时执行分支指令的结果,如下:
值 含义
0 指令在无分支的情况下完成。
1 指令在有分支的情况下完成。
位0表示第一此类分支指令的结果,位1表示第二此类指令的结果,等等。
若在CPU处于事务执行模式时执行少于63个的分支指令,则将不对应于分支指令的最右侧位设定为0(包括位63)。当执行多于63个的分支指令时,将TXBI的位63设定为1。
TXBI中的位由如上文所列出的能够造成中断事件的指令设定,惟以下各者除外:
-任何受限定指令并不使位设定于TXBI中。
-对于(例如)z/Architecture的指令,当BRANCH ON CONDITION、BRANCH RELATIVEON CONDITION或BRANCH RELATIVE ON CONDITION LONG指令的M1字段为0时,或当以下指令的R2字段为0时,这是依赖于该指令的执行是否使位设定于TXBI的模型。
·BRANCH AND LINK(BALR);BRANCH AND SAVE(BASR);BRANCH AND SAVE AND SETMODE(BASSM);BRANCH AND SET MODE(BSM);BRANCH ON CONDITION(BCR);及BRANCH ONCOUNT(BCTR,BCTGR)
·对于由主机存取异常造成的中止条件,将字节127的位的位置0设定为1。对于所有其他中止条件,将字节127的位的位置0设定为0。
·对于由载入/储存单元(LSU)侦测的中止条件,字节127的最右侧五个位含有原因的指示。对于未由LSU侦测的中止条件,保留字节127。
通用寄存器930:字节128至255含有在事务中止时的通用寄存器0至15的内容。这些寄存器以升序被储存,其以字节128至135中的通用寄存器0开始,接着为字节136至143中的通用寄存器1,等等。
保留:保留所有其他字段。除非另有指示,否则保留字段的内容是不可预测的。
如由其他CPU及I/O子系统所观察,在事务中止期间储存TDB为在任何非事务储存之后发生的多重存取参考。
事务可归因于在事务执行的立即配置的范畴外的原因而中止。举例而言,由超管理器(诸如,LPAR或z/VM)辨识的瞬态事件可造成事务中止。
提供于事务诊断区块中的信息意欲用于诊断目的且实质上正确。然而,因为中止可能已由在立即配置的范畴外的事件造成,所以诸如中止码或程序中断识别的信息可能不准确地反映该配置内的情况,且因此不应被用来判定程序动作。
除了储存于TDB中的诊断信息以外,当事务归因于任何数据异常程序异常情况而中止且AFP寄存器控制(控制寄存器0的位45)及有效允许浮点运算控制(F)两者皆为1时,将数据异常码(DXC)置放至浮点控制寄存器(FPCR)的字节2中,而不管筛选是否应用于程序异常情况。当事务中止且AFP寄存器控制或有效允许浮点运算控制中之一个或两个为0时,不将DXC置放至FPCR中。
在一实施例中,如本文所指示,当安装事务执行设施时,提供以下一般指令。
·EXTRACT TRANSACTION NESTING DEPTH
·NONTRANSACTIONAL STORE
·TRANSACTION ABORT
·TRANSACTION BEGIN
·TRANSACTION END
当CPU处于事务执行模式时,某些指令的已尝试执行受到限定且造成事务中止。
当在受限事务执行模式下发出时,受限定指令的已尝试执行亦可引起事务限制程序中断,或可如同事务不受到限制一样引起执行进行。
在z/Architecture的一实例中,作为实例,受限定指令包括以下非特殊权限指令:COMPARE AND SWAP AND STORE;MODIFY RUNTIME INSTRUMENTATION CONTROLS;PERFORMLOCKED OPERATION;PREFETCH DATA(RELATIVE LONG),此时M1字段中的码为6或7;STORECHARACTERS UNDER MASK HIGH,此时M3字段为0且R1字段中的码为6或7;STORE FACILITYLIST EXTENDED;STORE RUNTIME INSTRUMENTATION CONTROLS;SUPERVISOR CALL;及TESTRUNTIME INSTRUMENTATION CONTROLS。
在以上清单中,COMPARE AND SWAP AND STORE及PERFORM LOCKED OPERATION为可藉由在TX模式下使用基本指令而更有效率地实施的复杂指令。针对PREFETCH DATA及PREFETCH DATA RELATIVE LONG的状况受到限定,这是由于为6及7的码释放高速缓存行,从而使潜在地在事务完成之前交付数据成为必要。SUPERVISOR CALL受到限定,这是由于其造成中断(此情形造成事务中止)。
在下文所列出的条件下,以下指令受到限定:
·BRANCH AND LINK(BALR)、BRANCH AND SAVE(BASR)及BRANCH AND SAVE ANDSET MODE,此时指令的R2字段为非零且分支追踪被启用。
·BRANCH AND SAVE AND SET MODE及BRANCH AND SET MODE,此时R2字段为非零且模式追踪被启用;SET ADDRESSING MODE,此时模式追踪被启用。
·MONITOR CALL,此时监视事件情况被辨识。
以上清单包括可形成追踪项的指令。若这些指令被允许事务地执行且形成追踪项,且事务随后中止,则将推进控制寄存器12中的追踪表指针,但将舍弃至追踪表的储存。此情形将在追踪表中留下不一致间隙。因此,指令在其将形成追踪项的状况下受到限定。
当CPU处于事务执行模式时,这是依赖于以下指令是否受到限定的模型:CIPHERMESSAGE;CIPHER MESSAGE WITH CFB;CIPHER MESSAGE WITH CHAINING;CIPHER MESSAGEWITH COUNTER;CIPHER MESSAGE WITH OFB;COMPRESSION CALL;COMPUTE INTERMEDIATEMESSAGE DIGEST;COMPUTE LAST MESSAGE DIGEST;COMPUTE MESSAGE AUTHENTICATIONCODE;CONVERT UNICODE-16TO UNICODE-32;CONVERT UNICODE-16TO UNICODE-8;CONVERTUNICODE-32TO UNICODE-16;CONVERT UNICODE-32 TO UNICODE-8;CONVERT UNICODE-8TOUNICODE-16;CONVERT UNICODE-8TO UNICODE-32;PERFORM CRYPTOGRAPHIC COMPUTATION;RUNTIME INSTRUMENTATION OFF;及RUNTIME INSTRUMENTATION ON。
以上指令中每一个当前由硬件共处理器实施,或已处于过去机器中,且因此被认为受到限定。
当有效允许AR修改(A)控制为0时,以下指令受到限定:COPY ACCESS;LOAD ACCESSMULTIPLE;LOAD ADDRESS EXTENDED;及SET ACCESS。
以上指令中每一个造成存取寄存器的内容被修改。若TRANSACTION BEGIN指令中的A控制为0,则程序已明确地指示出将不允许存取寄存器修改。
当有效允许浮点运算(F)控制为0时,浮点指令受到限定。
在某些情况下,以下指令可受到限定:EXTRACT CPU TIME;EXTRACT PSW;STORECLOCK;STORE CLOCK EXTENDED;及STORE CLOCK FAST。
以上指令中每一个经受解译性执行状态描述中的拦截控制。若超管理器已设定针对此等指令的拦截控制,则这些指令的执行可归因于超管理器实施而被拖延;因此,若发生拦截,可认为这些指令受到限定。
当非受限事务由于受限定指令的已尝试执行而中止时,将事务诊断区块中的事务中止码设定为11(受限定指令),且将条件码设定为3,惟如下情形除外:当非受限事务归因于原本将会引起特殊权限操作异常的指令的已尝试执行而中止时,无论将中止码设定为11(受限定指令)或4(由特殊权限操作程序中断的辨识引起的未筛选程序中断)而都是不可预测的。当非受限事务归因于在M1字段中的码为6或7时PREFETCH DATA(RELATIVE LONG)的已尝试执行或在M3字段为0且R1字段中的码为6或7时STORE CHARACTERS UNDER MASK HIGH的已尝试执行而中止时,无论将中止码设定为11(受限定指令)或16(高速缓存其他)而都是不可预测的。当非受限事务归因于MONITOR CALL的已尝试执行而中止且存在监视事件情况及规格异常情况两者时,无论将中止码设定为11或4或(在程序中断被筛选时)12而都是不可预测的。
额外指令可在受限事务中受到限定。尽管这些指令当前经定义为在非受限事务中不受到限定,但这些指令可在某些情况下在未来处理器上的非受限事务中受到限定。
可在未来处理器上的事务执行模式下允许某些受限定指令。因此,程序不应依赖于归因于受限定指令的已尝试执行而中止的事务。TRANSACTION ABORT指令应被用以可靠地造成事务中止。
在非受限事务中,程序应提供替代性非事务码路径以适应归因于受限定指令而中止的事务。
在操作中,当事务嵌套深度为0时,引起条件码0的TRANSACTION BEGIN(TBEGIN)指令的执行使CPU进入非受限事务执行模式。当事务嵌套深度为0时,引起条件码0的TRANSACTION BEGIN受限(TBEGINC)指令的执行使CPU进入受限事务执行模式。
除了另有明确提及以外,应用于非事务执行的所有规则亦应用于事务执行。下文为在CPU处于事务执行模式时进行处理的额外特性。
当CPU处于非受限事务执行模式时,引起条件码0的TRANSACTION BEGIN指令的执行使CPU保持于非受限事务执行模式。
如由CPU所观察,在事务执行模式下进行的提取及储存并非不同于在不处于事务执行模式时进行的提取及储存。如由其他CPU及I/O子系统所观察,在CPU处于事务执行模式时进行的所有储存操作数存取看来像是单一区块并行存取。亦即,对半字组、字组、双字组或四倍字组内的所有字节的存取经指定以看来像是区块并行,如由其他CPU及I/O(例如,通道)程序所观察。半字组、字组、双字组或四倍字组在此章节中被称作区块。当提取类型参考经指定以在区块内看来像是并行时,在该区块中含有的字节正被提取的时间期间不准许由另一CPU或I/O程序对该区块的储存存取。当储存类型参考经指定以在区块内看来像是并行时,在该区块内的字节正被储存的时间期间不准许由另一CPU或I/O程序对该区块的存取(提取或储存)。
针对指令的储存存取以及DAT及ART(存取寄存器表)表提取遵循非事务规则。
CPU凭借使事务嵌套深度转变至0的TRANSACTION END指令而正常地离开事务执行模式,在该状况下,事务完成。
当CPU凭借TRANSACTION END指令的完成而离开事务执行模式时,交付在处于事务执行模式时进行的所有储存;亦即,这些储存看来像是作为单一区块并行操作而发生,如由其他CPU及I/O子系统所观察。
事务可出于多种原因而隐含地中止,或事务可由TRANSACTION ABORT指令明确地中止。下文描述事务中止、对应中止码及置放至事务中止PSW中的条件码的实例可能原因。
外部中断:将事务中止码设定为2,且将事务中止PSW中的条件码设定为2。作为外部中断处理的部分,将事务中止PSW储存为外部旧PSW。
程序中断(未筛选):引起中断的程序异常情况(亦即,未筛选条件)使事务用码4而中止。将事务中止PSW中的条件码设定为特定于程序中断码。作为程序中断处理的部分,将事务中止PSW储存为程序旧PSW。
原本将会引起事务归因于操作异常而中止的指令可得到替代结果:对于非受限事务,事务可代替地用中止码11(受限定指令)而中止;对于受限事务,可辨识事务限制程序中断,而非操作例外。
当PER(程序事件记录)事件结合任何其他未筛选程序异常情况被辨识时,将条件码设定为3。
机器检查中断:将事务中止码设定为5,且将事务中止PSW中的条件码设定为2。作为机器检查中断处理的部分,将事务中止PSW储存为机器检查旧PSW。
I/O中断:将事务中止码设定为6,且将事务中止PSW中的条件码设定为2。作为I/O中断处理的部分,将事务中止PSW储存为I/O旧PSW。
提取溢出:当事务尝试自多于CPU所支持的位置的位置进行提取时,侦测提取溢出条件。将事务中止码设定为7,且将条件码设定为2或3。
储存溢出:当事务尝试储存至多于CPU所支持的位置的位置时,侦测储存溢出条件。将事务中止码设定为8,且将条件码设定为2或3。
回应于提取或储存溢出中止而允许条件码为2或3会允许CPU指示潜在可重试情形(例如,条件码2指示事务的重新执行可有生产力;而条件码3并不建议重新执行)。
提取冲突:当另一CPU或I/O子系统尝试储存至已由此CPU事务地提取的位置中时,侦测提取冲突条件。将事务中止码设定为9,且将条件码设定为2。
储存冲突:当另一CPU或I/O子系统尝试存取在由此CPU进行的事务执行期间已被储存的位置时,侦测储存冲突条件。将事务中止码设定为10,且将条件码设定为2。
受限定指令:当CPU处于事务执行模式时,受限定指令的已尝试执行造成事务中止。将事务中止码设定为11,且将条件码设定为3。
当CPU处于受限事务执行模式时,无论受限定指令的已尝试执行引起事务限制程序中断或归因于受限定指令的中止而都是不可预测的。事务仍中止,但中止码可指示任一原因。
程序异常情况(已筛选):不引起中断的程序异常情况(亦即,已筛选的情况)造成事务用为12的事务中止码而中止。将条件码设定为3。
嵌套深度超过:当事务嵌套深度处于该配置的最大可允许值且执行TRANSACTIONBEGIN指令时,侦测嵌套深度超过条件。使事务用为13的事务中止码而中止,且将条件码设定为3。
高速缓存提取相关条件:由CPU的高速缓存电路侦测与由事务提取的储存位置相关的条件。用为14的事务中止码而使事务中止,且将条件码设定为2或3。
高速缓存储存相关条件:由CPU的高速缓存电路侦测与由事务储存的储存位置相关的条件。用为15的事务中止码而使事务中止,且将条件码设定为2抑或3。
高速缓存其他条件:由CPU的高速缓存电路侦测高速缓存其他条件。用为16的事务中止码而使事务中止,且将条件码设定为2或3。
在事务执行期间,若CPU使用映射至相同绝对地址的不同逻辑地址来存取指令或储存操作数,则这是依赖于事务是否中止的模型。若事务归因于使用映射至相同绝对地址的不同逻辑地址的存取而中止,则取决于条件,设定中止码14、15或16。
杂项条件:杂项条件为造成事务中止的由CPU辨识的任何其他条件。将事务中止码设定为255,且将条件码设定为2抑或3。
当多个配置正在同一机器(例如,逻辑分割区或虚拟机)中执行时,事务可归因于不同组态中发生的外部机器检查或I/O中断而中止。
尽管上文提供实例,但可提供具有对应中止码及条件码的事务中止的其他原因。举例而言,一个原因可为重新启动中断,其中将事务中止码设定为1,且将事务中止PSW中的条件码设定为2。作为重新启动处理的部分,将事务中止PSW储存为重新启动旧PSW。作为一另外实例,一个原因可为监督呼叫条件,其中将中止码设定为3,且将事务中止PSW中的条件码设定为3。其他或不同实例也是可能的。
备注:
1.杂项条件可由以下各者中任一者引起:
·诸如在z/Architecture中的指令COMPARE AND REPLACE DAT TABLE ENTRY、COMPARE AND SWAP AND PURGE、INVALIDATE DAT TABLE ENTRY、INVALIDATE PAGE TABLEENTRY、NQ控制为0且SK控制为1的PERFORM FRAME MANAGEMENT FUNCTION、NQ控制为0的SETSTORAGE KEY EXTENDED,它是由该配置中的另一CPU执行;将条件码设定为2。
·在CPU上执行诸如重设、重新启动或停止的运算子函数,或等效SIGNALPROCESSOR命令。
·上文未列举的任何其他条件;将条件码设定为2或3。
2.提取及储存冲突被侦测的位置可为同一高速缓存行内的任何地方。
3.在某些条件下,CPU可不能区分相似中止条件。举例而言,提取或储存溢出可不能与各别提取或储存冲突区分开。
4.由CPU对多个指令路径的理论式执行可引起事务归因于冲突或溢出条件而中止,即使此类条件并不以概念序列而发生亦如此。在处于受限事务执行模式时,CPU可临时地禁止理论式执行,从而允许事务尝试在不理论式地侦测此类冲突或溢出的情况下完成。
TRANSACTION ABORT指令的执行造成事务中止。自第二操作数地址设定事务中止码。取决于第二操作数地址的位63为0或1,将条件码分别设定为2或3。
图10概述储存于事务诊断区块中的实例中止码及对应条件码(CC)。图10中的描述说明一特定实施。值的其他实施及编码是可能的。
在一实施例中且如上文所提及,事务设施规定受限事务以及与其相关联的处理。
受限事务在无后退路径的情况下执行于事务模式下。其为用于紧凑函数的处理的模式。下面描述关于受限事务的进一步细节。
在不存在重复中断或与其他CPU或I/O子系统的冲突(亦即,由将不允许事务成功地完成的条件造成)时,受限事务最终将完成;因此,无需且不指定中止处理例程。举例而言,在不存在以下各者时,事务最终将完成:不能处理的条件(例如,除以0)的违反、不允许事务完成的条件(例如,不允许指令执行的计时器中断、热I/O等等),或与受限事务相关联的限定或限制的违反。
当事务嵌套深度最初为0时,受限事务由TRANSACTION BEGIN受限(TBEGINC)指令起始。在一实施例中,受限事务经受以下限制。
1.事务执行不多于32个指令,不包括TRANSACTION BEGIN受限(TBEGINC)及TRANSACTION END指令。
2.事务中的所有指令将在存储器的256个连续字节内,包括TRANSACTION BEGIN受限(TBEGINC)及任何TRANSACTION END指令。
3.除了受限定指令以外,以下限定亦应用于受限事务。
a.指令限于被称作一般指令的指令,包括(例如)加法、减法、乘法、除法、移位、旋转等等。
b.分支指令限于以下各者(在一实例中,所列出的指令属于z/Architecture):
·BRANCH RELATIVE ON CONDITION,其中M1为非零且RI2字段含有正值。
·BRANCH RELATIVE ON CONDITION LONG,其中M1字段为非零,且RI2字段含有不造成地址环绕的正值。
·COMPARE AND BRANCH RELATIVE、COMPARE IMMEDIATE AND BRANCH RELATIVE、COMPARE LOGICAL AND BRANCH RELATIVE,及COMPARE LOGICAL IMMEDIATE AND BRANCHRELATIVE,其中M3字段为非零且RI4字段含有正值。(亦即,仅具有非零分支屏敝的前向分支。)
c.除了TRANSACTION END及造成已指定操作数序列化的指令以外,造成序列化功能的指令受到限定。
d.存储器间操作(SS-)及具有延伸操作码的存储器间操作(SSE-)指令受到限定。
e.所有以下一般指令(在此实例中,其属于z/Architecture)受到限定:CHECKSUM;CIPHER MESSAGE;CIPHER MESSAGE WITH CFB;CIPHER MESSAGE WITH CHAINING;CIPHERMESSAGE WITH COUNTER;CIPHER MESSAGE WITH OFB;COMPARE AND FORM CODEWORD;COMPARE LOGICAL LONG;COMPARE LOGICAL LONG EXTENDED;COMPARE LOGICAL LONGUNICODE;COMPARE LOGICAL STRING;COMPARE UNTIL SUBSTRING EQUAL;COMPRESSIONCALL;COMPUTE INTERMEDIATE MESSAGE DIGEST;COMPUTE LAST MESSAGE DIGEST;COMPUTEMESSAGE AUTHENTICATION CODE;CONVERT TO BINARY;CONVERT TO DECIMAL;CONVERTUNICODE-16TO UNICODE-32;CONVERT UNICODE-16TO UNICODE-8;CONVERT UNICODE-32TOUNICODE-16;CONVERT UNICODE-32 TO UNICODE-8;CONVERT UNICODE-8TO UNICODE-16;CONVERT UNICODE-8TO UNICODE-32;DIVIDE;DIVIDE LOGICAL;DIVIDE SINGLE;EXECUTE;EXECUTE RELATIVE LONG;EXTRACT CACHE ATTRIBUTE;EXTRACT CPU TIME;EXTRACT PSW;EXTRACT TRANSACTION NESTING DEPTH;LOAD AND ADD;LOAD AND ADD LOGICAL;LOAD ANDAND;LOAD AND EXCLUSIVE OR;LOAD AND OR;LOAD PAIR DISJOINT;LOAD PAIR FROMQUADWORD;MONITOR CALL;MOVE LONG;MOVE LONG EXTENDED;MOVE LONG UNICODE;MOVESTRING;NON-TRANSACTIONAL STORE;PERFORM CRYPTOGRAPHIC COMPUTATION;PREFETCHDATA;PREFETCH DATA RELATIVE LONG;RUNTIME INSTRUMENTATION EMIT;RUNTIMEINSTRUMENTATION NEXT;RUNTIME INSTRUMENTATION OFF;RUNTIME INSTRUMENTATION ON;SEARCH STRING;SEARCH;STRING UNICODE;SET ADDRESSING MODE;STORE CHARACTERSUNDER MASK HIGH,此时M3字段为0且R1字段中的码为6或7;STORE CLOCK;STORE CLOCKEXTENDED;STORE CLOCK FAST;STORE FACILITY LIST EXTENDED;STORE PAIR TOQUADWORD;TEST ADDRESSING MODE;TRANSACTION ABORT;TRANSACTION BEGIN(TBEGIN及TBEGINC两者);TRANSLATE AND TEST EXTENDED;TRANSLATE AND TEST REVERSE EXTENDED;TRANSLATE EXTENDED;TRANSLATE ONE TO ONE;TRANSLATE ONE TO TWO TRANSLATE TWO TOONE;及TRANSLATE TWO TO TWO。
4.事务的储存操作数存取不多于四个八倍字组。备注:LOAD ON CONDITION及STORE ON CONDITION被看作参考存储器而不管条件码。举例而言,八倍字组为32字节边界上的32个连续字节的群组。
5.在此CPU上执行的事务或由其他CPU或I/O子系统进行的储存并不存取任何4K字节区块中的储存操作数,这些4K字节区块含有存储器的256个字节,其以TRANSACTIONBEGIN受限(TBEGINC)指令开始。
6.事务不使用映射至相同绝对地址的不同逻辑地址来存取指令或储存操作数。
7.由事务进行的操作数参考将在单一双字组内,惟对于LOAD ACCESS MULTIPLE、LOAD MULTIPLE、LOAD MULTIPLE HIGH、STORE ACCESS MULTIPLE、STORE MULTIPLE及STOREMULTIPLE HIGH除外,操作数参考将在单一八倍字组内。
若受限事务违反上文所列出之限制1至7中任一者,则(a)辨识事务限制程序中断,或(b)执行如同事务未受到限制一样行进,惟另外限制违反仍可引起事务受限程序中断除外。采取哪一动作是不可预测的,且所采取的动作可基于哪一限制被违反而不同。
在不存在限制违反、重复中断或与其他CPU或I/O子系统的冲突时,受限事务最终将完成,如上文所描述。
1.若事务满足以下准则,则成功地完成受限事务的机会改良:
a.所发出的指令少于为32之最大值。
b.储存操作数参考少于为4个八倍字组的最大值。
c.储存操作数参考处于同一高速缓存行上。
d.对相同位置的储存操作数参考藉由所有事务以相同次序而发生。
2.受限事务未必确信在其第一执行时成功地完成。然而,若未违反所列出限制中任一者的受限事务中止,则CPU使用确保事务的重复执行随后成功的电路。
3.在受限事务内,TRANSACTION BEGIN为受限定指令,因此,受限事务不能为嵌套。
4.由受限事务违反以上限制1至7中任一者可引起程序循环。
5.受限事务的限制相似于比较及交换循环的限制。由于来自其他CPU及I/O子系统的潜在干扰,不存在COMPARE AND SWAP指令将用条件码0永远完成的架构确信。受限事务可遭受呈提取或储存冲突中止或热中断的形式的相似干扰。
CPU使用公平演算法以确保在不存在任何限制违反时受限事务最终完成。
6.为了判定完成受限事务所需要的重复反复的数目,程序可在不经受通用寄存器储存屏敝的通用寄存器中使用计数器。下文展示一实例。
*R15现在含有重复事务尝试的计数。
应注意,在此实例中,两个寄存器14及15皆未被恢复。亦应注意,在一些模型上,若CPU在TBEGINC指令完成之后但在AHI指令完成之前侦测到中止条件,则通用寄存器15中的计数可低。
如由CPU所观察,在事务执行模式下进行的提取及储存并非不同于在不处于事务执行模式时进行的提取及储存。
在一实施例中,使用者(亦即,建立事务的使用者)选择事务是否将受到限制。参照图11描述用于进行该确定的逻辑的一个实施例。初始地,用户考虑是否事务将受到限制(步骤1100)。例如,用户判断与受限事务关联的限制是否是可接受的。如果是(询问1102),则创建受限事务(步骤1104)。这包括:使用TBEGINC指令以开始受限事务,包括在TBEGINC之后的一个或多个指令,并且以TEND结束事务。否则,如果不创建受限事务,则在一个实施例中,创建非受限事务(步骤1106)。这包括:使用TBEGIN以开始非受限事务,包括一个或多个指令,并且以TEND结束。
作为另一实施例,处理器关于是否使用受限事务而对于用户进行推荐。推荐是基于可由处理器可存取的所存储的受限规则(例如限制)的。例如,处理器存取规则并且确定所有限制是否为可接受的。如果是,则处理器推荐受限事务;否则,推荐非受限事务。
参照图12描述与事务关联的中止处理的概述。初始地,处理器获得(例如提取、接收等)事务(例如TBEGIN或TBEGINC)(步骤1200),并且处理器关于事务是否受到限制而进行确定(询问1202)。例如,关于起始事务的指令的操作码(或在另一实施例中,指令的另一字段)是否指定TBEGINC事务而进行确定。如果是,则将事务处理为受限事务(步骤1204)。对于受限事务,事务中止PSW设置为指向开始事务的TBEGINC指令。然后,如果达到中止条件(询问1206),则控制传送到该PSW,其指向TBEGINC指令,并且条件码设置为指示是否期望条件是可恢复的。对于受限事务,(除了返回到TBEGINC之外)不调用中止处理程序,而是反而处理通过TBEGINC指令的重新执行而继续。如果未达到中止条件,则在一个实施例中,由TRANSACTION END指令完成事务。
然而,如果事务不受限制(询问1202),则将事务处理为非受限事务(步骤1208)。对于非受限事务,事务中止PSW设置为指向跟随TBEGIN指令的指令。对于非受限事务的期望用途是:跟随TBEGIN的指令将是分支指令,如果条件码为非零,则其将把控制传送到某中止处理程序例程。因此,如果达到中止条件(询问1210),则对于非受限事务,处理进入在TBEGIN指令之后的指令(步骤1212)。否则,处理以TRANSACTION END指令而完成。
在另一实施例中,进行附加检查以查看事务是否应处理为受限事务。例如,如果操作码指示其为受限事务,但其是嵌套事务,则在一个实施例中,事务执行为非受限事务。也可以进行其它检查。
参看图13来描述关于受限事务的处理尤其是与TBEGINC指令相关联的处理的进一步细节。TBEGINC指令的执行使CPU进入受限事务执行模式或保持于非受限执行模式。执行TBEGINC的CPU(亦即,处理器)执行图13的逻辑。
参看图13,基于TBEGINC指令的执行,执行序列化功能(步骤1300)。序列化功能或操作包括在发生概念上后续的储存存取(及相关参考位及改变位设定)之前由CPU完成所有概念上先前的储存存取(及作为一实例,对于z/Architecture,相关参考位及改变位设定),如由其他CPU及I/O子系统所观察。序列化影响对存储器及对存储器金钥的所有CPU存取的序列,惟与ART表项及DAT表项提取相关联的存取除外。
如由处于事务执行模式的CPU所观察,序列化正常地操作(如上文所描述)。如由其他CPU及I/O子系统所观察,由于使事务嵌套深度递减至零(正常结束)的TRANSACTION END指令或由于正被中止的事务,在CPU处于事务执行模式时执行的序列化操作在CPU离开事务执行模式时发生。
在执行序列化之后,进行关于是否辨识异常的判定(查询1302)。若是,则处置异常(步骤1104)。举例而言,若事务执行控制(控制寄存器0的位8)为0,则辨识出特殊操作异常且抑制操作。作为另外实例,若B1字段(指令的位16至19)为非零,则辨识出规格异常且抑制操作;若TBEGINC为执行类型指令的目标,则辨识出执行异常且抑制操作;且若于配置中未安装事务执行设施,则辨识出操作异常且抑制操作。若CPU已经处于受限事务执行模式,则辨识出事务受限异常程序异常且抑制操作。另外,若事务嵌套深度在累加1时将超过依赖于模型的最大事务嵌套深度,则用中止码13而中止事务。可辨识及处置其他或不同异常。
然而,若不存在异常,则进行关于事务嵌套深度是否为0的判定(查询1306)。若事务嵌套深度为0,则将事务诊断区块地址看作无效(步骤1308);自当前PSW的内容设定事务中止PSW,惟事务中止PSW的指令地址指明TBEGINC指令而非下一循序指令除外(步骤1310);且将如由通用寄存器储存屏敝指明的通用寄存器对的内容储存于不能由程序直接地存取的模型相依位置中(步骤1312)。另外,将嵌套深度设定为1(步骤1314)。另外,将允许浮点运算(F)及程序中断筛选控制(PIFC)的有效值设定为0(步骤1316)。另外,判定允许AR修改(A)控制(指令的I2字段的位12字段)的有效值(步骤1318)。举例而言,有效A控制为针对当前层级及针对任何外部TBEGIN指令的TBEGINC指令中的A控制的逻辑AND。
返回至查询1306,若事务嵌套深度大于0,则使嵌套深度累加1(步骤1320)。另外,将允许浮点运算(F)的有效值设定为0,且程序中断筛选控制(PIFC)的有效值不变(步骤1322)。处理接着继续步骤1318。在一实施例中,事务的成功起始引起条件码0。此情形推断出与执行TBEGINC指令相关联的逻辑的一实施例。
在一实施例中,上文所提供的异常检查可以变化次序而发生。用于异常检查的一特定次序如下:
优先权相同于针对一般状况的程序中断条件的优先权的异常。
归因于含有非零值的B1字段的规格异常。
归因于超过事务嵌套深度的中止。
归因于正常完成的条件码0。
另外,以下各者在一个或多个实施例中适用:
1.若事务并不在事务凭借TRANSACTION END而正常地结束时中止,则仅恢复经指明为由通用寄存器储存屏敝储存的寄存器。在中止时仅恢复由最外部TRANSACTION BEGIN指令的GRSM指明的寄存器。
I2字段应指明提供由受限事务改变的输入值的所有寄存器对。因此,若事务中止,则当重新执行受限事务时,输入寄存器值将恢复为其原始内容。
2.在大多数模型上,既在TRANSACTION BEGIN上又在事务中止时,可藉由指定在通用寄存器储存屏敝中进行储存及恢复所需要的寄存器的最小数目而实现改良型效能。
3.以下情形说明基于当前事务嵌套深度(TND)且在TND为非零时的TRANSACTIONBEGIN指令(TBEGIN及TBEGINC两者)的结果,而无论CPU处于非受限事务执行模式或受限事务执行模式:
如本文所描述,根据一个方面,假定受限事务不含有使其不能够完成的条件,则受限事务确信完成。为了确保受限事务完成,执行该事务的处理器(例如,CPU)可采取某些动作。举例而言,若受限事务具有中止条件,则CPU可临时地:
(a)禁止无序执行;
(b)禁止其他CPU存取冲突储存位置;
(c)诱发中止处理之随机延迟;和/或
(d)调用其他措施以促进成功完成。
参照图14描述关于与采取动作以促进受限事务的完成关联的处理的其它细节。
初始地,处理器执行TBEGINC指令所开始的受限事务(步骤1400)。如果遭遇不产生中断的中止条件(询问1402),则处理器可选地(例如取决于中止的数量和/或中止原因)采取一个或多个动作,如在此所描述的那样,以确保完成(步骤1404)。此外,处理器重新执行TBEGINC指令(步骤1406),并且处理继续于步骤1400。
返回到询问1402,如果不存在中止条件或存在产生中断的中止条件,则处理继续,直到存在事务的完成(例如TEND)或中断(询问1408)。如果中断,则CPU加载与中断的类型关联的PSW。基于完成或中断,事务结束;否则,其继续处理。
在一个实施例中,当事务中止时是否执行动作和/或选择待执行的动作的判断是基于中止计数器的值的,中止计数器提供事务已经中止的频度的计数。
每当中止事务时,计数器就增加计数,而在事务的成功完成或导致事务的不再重新执行的中断时,其重置为零。如果计数达到阈值(例如63次计数),则中断出现,事务执行是不成功的,并且计数器被重置。然而,在计数达到阈值之前,可以采取多个动作以增加成功执行事务的机会。这些动作包括待在执行事务的处理器内执行的动作和/或对抗冲突处理器(CPU)而待执行的动作。
在同一处理器内,可以取决于中止计数和用于具有相同或重叠中止计数的动作的选择准则而采取以下动作中的一个或多个:重新执行事务(计数1-3);经由例如切换禁用分支预测(计数8-20);禁用超越当前指令的高速缓存线边界的理论式指令提取,其在一个示例中是通过仅允许当流水线的后端是空的时在指令提取时穿过的高速缓存线边界而得以实现的(计数8-20);经由例如切换禁用超级标量分派(super-scalar dispatching)(计数8-20);经由例如切换禁用无序执行(计数8-20);甚至对于仅提取请求,专门提取所有高速缓存失误(计数8-20);在贯穿整个流水线时执行单个指令(计数21-23);禁用超级标量分派(计数24-28);以及在贯穿整个流水线时执行单条指令,并且专门提取所有高速缓存失误(计数32-63)。在采用这些动作中的一些中,在重复事务中止时,处理器流水线的理论式进攻性成功地受限。基于事务的成功完成或不再导致事务重试的中断来恢复处理器流水线的完全理论式进攻性。
在一个实施例中,例如同时地执行用于特定计数的所有动作。在另一实施例中,当存在重叠时,基于例如按顺序从列表选择,基于选择功能的随机选择或其它技术压制一个动作而选取另一动作。
此外,在一个示例中,当进入中止计数的下一级别时,所选择的动作替代先前动作。例如,启用先前所禁用的所有东西,并且采取新的动作。然而,在另一实施例中,新的动作加入到先前动作。因此,如在此所使用的那样,另一动作替代先前动作,加入先前动作,或其某种组合。此外,其可以与先前动作是相同或不同的动作。
作为一个示例,由设置启用特殊处理模式(例如禁用分支预测等)的硬件位的固件来执行动作。在计数器重置的相同条件下,硬件自动地重置该位。
倘若事务在执行上述动作中的一个或多个之后中止并且计数达到所选择的值或级别,则可以采取对抗冲突处理器的动作。例如,在中止4-15,可以执行随机延迟(即事务的重新执行被延迟特定时间量或多个机器周期);在中止16-23,可以获取旗号(semaphore),以用于该处理器正执行的分区(例如LPAR区带)的其它处理器,因此终止在其它处理器处的操作。相似地,在计数24-63,可以对于整个系统获取旗号,其中,系统中的所有处理器将要终止操作,直到旗号清除。在该处理模式下,基于达到所选择的将要获得旗号的级别,使用例如比较和交换机制来调用固件例程以获得旗号。当获得旗号时,将中断广播到适当的处理器(例如同一分区内的处理器或系统或某另外子集的所有处理器)。然后,处理器离开固件例程并且重新执行事务一次或多次,直到成功完成或中断。当事务已经成功地完成或其将不再被重试时,旗号重置。
虽然在以上实施例中,基于中止计数来采取动作,但在另一实施例中,基于中止的原因和/或基于计数来采取动作。因此,也就是说,基于条件为计数、中止原因或计数和中止原因的组合的中止条件来采取动作。例如,处理器可以检测中止是归因于另一CPU,然后获取旗号。这也可以与计数进行组合,例如,“如果中止>16并且中止归因于与另一CPU的冲突->获取旗号”。很多变形和可能性存在。
在一个实施例中,使用以上用于受限事务的技术确保事务的成功完成,假设该完成是可能的(例如,不违反受限限制或某种其他违反)。
概言之,受限事务的处理如下:
·若已经处于受限TX模式,则辨识事务受限异常。
·若当前TND(事务嵌套深度)>0,则执行如同非受限事务一样行进
ο将有效F控制设定为0
ο有效PIFC不变
ο允许外部非受限TX呼叫可或可不使用受限TX的服务功能。
·若当前TND=0,则:
ο事务诊断区块地址无效。
-中止时未储存指令指定的TDB
ο将事务中止PSW设定为TBEGINC的地址
-并非下一循序指令
ο储存于不能由程序存取的依赖于模型的位置中的由GRSM指明的通用寄存器对
ο视情况而形成(自D2操作数)的事务令牌。事务令牌为事务的识别符。事务令牌可等于储存操作数地址或另一值。
·有效A=TBEGINC A及任何外部A
·累加TND
ο若TND自0转变至1,则CPU进入受限TX模式
ο否则,CPU操持于非受限TX模式
·指令用CC0而完成
·异常:
ο在B1字段为非零时的规格异常(PIC(程序中断码)0006)
ο在事务执行控制(CR0.8)为0时的特殊操作异常(PIC 0013十六进位)
ο在受限TX模式下发出时的事务受限异常(PIC 0018十六进位)
ο在未安装受限事务执行设施时的操作异常(PIC 0001)
ο在指令为执行类型指令的目标时的执行异常(PIC 0003)
ο在嵌套深度超过时的中止码13
·受限事务中的中止条件:
ο中止PSW指向TBEGINC指令
-并非在TBEGINC指令之后的指令
-中止条件造成整个TX被重新驱动
*无失败路径
οCPU采取特殊措施以确保在重新驱动时的成功完成
ο假定无持久冲突、中断或受限违反,则事务确信最终完成。
·限制违反:
οPIC 0018十六进位—指示事务限制的违反
ο或,事务如同非受限一样执行
以上提供在无传统(粗糙粒度级)序列化(诸如,锁定)的情况下更新存储器中的多个不连续对象的有效率方式,该方式提供显著多处理器效能改良的潜能。亦即,多个不连续对象在无藉由诸如锁定及旗号的传统技术提供的更粗糙粒度级储存存取排序的增强的情况下予以更新。提供受限事务以用于简单的小使用量更新。
事务执行可用于多种情境中,包括但不限于锁定省略。参照图15A-15B以及以下所提供的码片段来描述锁定省略的使用的一个示例。
图15A描绘多个队列元素1502a至1502d的双向链接清单1500。新队列元素1502e将插入至队列元素的双向链接清单1500中。每一队列元素1502a至1502e包括前向指针1504a至1504e及向后指针1506a至1506e。如图15B所示,为了将队列元素1502e添加于队列元素1502b与队列元素1502c之间,(1)将向后指针1506e设定为指向队列元素1502b、(2)将前向指针1504e设定为指向队列元素1502c、(3)将向后指针1506c设定为指向队列元素1502e,且(4)将前向指针1504b设定为指向队列元素1502e。
对应于图15A至图15B的实例码片段如下:
*R1-待插入的新队列元素的地址。
*R2-插入点的地址;新元素插入于由R2指向的元素之前。
在一实例中,若事务用于锁定省略,但后退路径使用锁定,则事务将至少提取锁定字组以查看锁定字组是否可用。若另一CPU非事务地存取锁定,则处理器确保事务中止。
如本文所使用,互换地使用存储器、中央存储器、主存储器、存储器及主存储器,除非藉由使用隐含地或明确地另有提及。另外,虽然在一实施例中事务有效地延迟包括延迟将事务储存交付至主存储器直至选择的事务完成;但在另一实施例中,事务有效地延迟包括允许对存储器的事务更新,但保持旧值且在中止时使存储器恢复为旧值。
本领域的技术人员应了解,一个或多个方面可被体现为一系统、方法或计算机程序产品。因而,一个或多个方面可采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微码等等)或组合软件与硬件方面的实施例的形式,这些实施例在本文中皆可通称为“电路”、“模块”或“系统”。此外,一个或多个实施例可采取以一个或多个计算机可读介质体现的计算机程序产品的形式,该一个或多个计算机可读介质具有体现于其上的计算机可读程序码。
可利用一个或多个计算机可读介质的任何组合。计算机可读介质可为计算机可读储存介质。举例而言,计算机可读储存介质可为但不限于电子、磁性、光学、电磁、红外线或半导体系统、装置或器件,或前述各者的任何合适组合。计算机可读储存介质的更特定实例(非详尽清单)包括以下各者:具有一个或多个电线的电连接、携带型计算机磁片、硬碟、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便携型光碟只读存储器(CD-ROM)、光学储存器件、磁性储存器件或前述各者的任何合适组合。在此文件的上下文中,计算机可读储存介质可为可含有或储存供指令执行系统、装置或器件使用或结合指令执行系统、装置或器件而使用的程序的任何有形介质。
现在参看图16,在一实例中,计算机程序产品1600包括(例如)一个或多个非瞬态计算机可读储存介质1602以在其上储存计算机可读程序码构件或逻辑1604,以提供及促进一个或多个实施例。
可使用适当介质(包括但不限于无线、有线、光纤缆线、RF等等,或前述各者的任何合适组合)传输体现于计算机可读介质上的程序码。
可以一种或多种编程语言的任何组合来撰写用于进行一个或多个实施例的操作的计算机程序码,该一种或多种编程语言包括诸如Java、Smalltalk、C++或其类似者的面向对象的编程语言,及诸如“C”编程语言、汇编程序或相似编程语言的传统过程性编程语言。程序码可完全地在使用者计算机上执行、部分地在使用者计算机上执行、作为独立封装软件而执行、部分地在使用者计算机上执行且部分地在远端计算机上执行,或完全地在远端计算机或伺服器上执行。在后者情境中,远端计算机可经由任何类型的网络(包括局域网(LAN)或广域网(WAN))而连接至使用者的计算机,或可连接至外部计算机(例如,使用因特网服务提供者而经由因特网进行连接)。
本文参考方法、装置(系统)及计算机程序产品的流程图说明和/或方块图来描述一个或多个实施例。应理解,可藉由计算机程序指令来实施这些流程图说明和/或方块图的每一方块及这些流程图说明和/或方块图中的方块的组合。可将这些计算机程序指令提供至一般用途计算机、特殊用途计算机或其他可程序化数据处理装置的一处理器以产生一机器,使得经由该计算机或其他可程序化数据处理装置的该处理器而执行的指令产生用于实施在该或这些流程图和/或方块图方块中指定的功能/动作的构件。
亦可将这些计算机程序指令储存于一计算机可读介质中,其可指导计算机、其他可程序化数据处理装置或其他器件以特定方式起作用,使得储存于该计算机可读介质中的指令产生一制品,该制品包括实施在该或这些流程图和/或方块图方块中指定的功能/动作的指令。
亦可将这些计算机程序指令载入至计算机、其他可程序化数据处理装置或其他器件上,以使一系列操作步骤在该计算机、其他可程序化装置或其他器件上执行以产生一计算机实施程序,使得在该计算机或其他可程序化装置上执行的指令提供用于实施在该或这些流程图和/或方块图方块中指定的功能/动作的程序。
这些图中的流程图及方块图说明根据各种实施例的系统、方法及计算机程序产品的可能实施的架构、功能性及操作。就此而言,流程图或方块图中的每一方块可表示程序码的一模块、区段或部分,其包含用于实施指定的逻辑功能的一个或多个可执行指令。亦应注意,在一些替代性实施中,区块中所提到的功能可不以诸图中所提到的次序而发生。举例而言,取决于所涉及的功能性,连续展示的两个区块实际上可实质上并行地执行,或这些区块有时可以相反次序执行。亦应注意,可藉由执行指定的功能或动作的基于特殊用途硬件的系统或特殊用途硬件及计算机指令的组合来实施方块图和/或流程图说明的每一方块及方块图和/或流程图说明中的方块的组合。
除了以上内容以外,一个或多个方面亦可由提供客户环境的管理的服务提供者提供、部署、管理、服务等等。举例而言,服务提供者可为一个或多个客户建立、维持、支援等等执行一个或多个方面的计算机程序码和/或计算机基础结构。作为回报,作为实例,服务提供者可在订用和/或收费协议下向客户收取付款。或者或另外,服务提供者可根据广告内容至一个或多个第三方的销售而收取付款。
在一个方面中,可部署用于执行一个或多个实施例的应用程序。作为一实例,应用程序的部署包含提供可操作以执行一个或多个实施例的计算机基础结构。
作为一另外方面,可部署一计算基础结构,其包含将计算机可读程序码整合至计算系统中,其中与该计算系统组合的程序码能够执行一个或多个实施例。
作为又一方面,可提供用于整合计算基础结构的程序,其包含将计算机可读程序码整合至计算机系统中。计算机系统包含计算机可读介质,其中计算机介质包含一个或多个实施例。与该计算机系统组合的程序码能够执行一个或多个实施例。
尽管上文描述各种实施例,但这些实施例仅为实例。举例而言,其他架构的计算环境可用以并入及使用一个或多个实施例。另外,可使用不同指令、指令格式、指令字段和/或指令值。此外,可提供/使用不同、其他和/或额外限制/局限。许多变化是可能的。
另外,其他计算环境类型可有益且被使用。作为一实例,适合于储存和/或执行程序码的数据处理系统是可用的,其包括直接地或经由系统总线间接地耦接至存储器元件的至少两个处理器。存储器元件包括(例如)在程序码的实际执行期间使用的本地存储器、大容量存储器及高速缓存,该高速缓存提供至少某一程序码的临时储存以便减少在执行期间必须自大容量存储器撷取程序码的次数。
输入/输出或I/O器件(包括但不限于键盘、显示器、指针器件、DASD、磁带、CD、DVD、随身碟(thumb drive)及其他存储器介质等等)可直接地或经由介入I/O控制器耦接至该系统。网络适配器亦可耦接至系统以使数据处理系统能够经由介入的私用或公用网络耦接至其他数据处理系统或远端打印机或储存器件。调制解调器、缆线调制解调器及乙太网卡仅为可用网络适配器类型中的少数几种。
参看图17,描绘实施一个或多个实施例的主机计算机系统5000的代表性组件。代表性主机计算机5000包含与计算机存储器(亦即,中央存储器)5002通信的一个或多个CPU5001,以及用于与其他计算机或SAN及其类似者通信的至储存介质器件5011及网络5010的I/O接口。CPU 5001符合具有架构化的指令集及架构化的功能性的架构。CPU 5001可具有包括ART后备缓冲器(ALB)5013的存取寄存器转译(ART)5012,该存取寄存器转译(ART)5012用于选择待由动态地址转译(DAT)5003使用的地址空间从而将程序地址(虚拟地址)变换成存储器的真实地址。DAT通常包括用于对转译进行高速缓存,使得对计算机存储器5002的区块的稍后存取并不需要地址转译的延迟的转译后备缓冲器(TLB)5007。通常,高速缓存5009用于计算机存储器5002与处理器5001之间。高速缓存5009可为阶层式高速缓存,从而具有可用于一个以上CPU的大高速缓存及大高速缓存与每一CPU之间的较小的更快(较低层级)高速缓存。在一些实施中,较低层级高速缓存经分隔以提供分离的低层级高速缓存以用于指令提取及数据存取。在一实施例中,对于TX设施,事务诊断区块(TDB)5100及一个或多个缓冲器5101可储存于高速缓存5009及存储器5002中的一个或多者中。在一实例中,在TX模式下,数据最初储存于TX缓冲器中,且当TX模式结束(例如,最外部TEND)时,缓冲器中的数据储存(交付)至存储器,或若存在中止,则舍弃缓冲器中的数据。
在一实施例中,经由高速缓存5009藉由指令提取单元5004自存储器5002提取指令。指令在指令解码单元5006中被解码,且分派(在一些实施例中用其他指令)至指令执行单元5008。通常,使用若干执行单元5008,例如,算术执行单元、浮点执行单元及分支指令执行单元。另外,在TX设施的一实施例中,可使用各种TX控制5110。指令由执行单元执行,从而在需要时自指令指定的寄存器或存储器存取操作数。若将自存储器5002存取(载入或储存)操作数,则载入/储存单元5005通常在正被执行的指令控制下处置存取。指令可在硬件电路中或在内部微码(固件)中或由此两者的组合执行。
根据TX设施的一个方面,处理器5001亦包括PSW(例如,TX和/或中止PSW)5102、嵌套深度5104、TDBA 5106及一个或多个控制寄存器5108。
如所提及,计算机系统包括本地(或主)存储器中的信息,以及寻址、保护以及参考及改变记录。寻址的一些方面包括地址的格式、地址空间的概念、各种地址类型,及一地址类型经转译至另一地址类型的方式。主存储器中的一些包括永久指派的储存位置。主存储器向系统提供数据的可直接寻址的快速存取储存。数据及程序两者在其可被处理之前将载入至主存储器中(自输入器件)。
主存储器可包括有时被称作高速缓存的一个或多个较小较快存取缓冲存储器。高速缓存通常与CPU或I/O处理器实体地相关联。除了效能以外,相异储存介质的实体构造及使用的效应通常不能由程序观察。
可维持用于指令且用于数据操作数的分离高速缓存。高速缓存内的信息维持于被称作高速缓存区块或高速缓存行(或简称为行)的整体边界上的连续字节中。模型可提供传回高速缓存行的以字节为单位的大小的EXTRACT CACHE ATTRIBUTE指令。模型亦可提供PREFETCH DATA及PREFETCH DATA RELATIVE LONG指令,其实现存储器至数据或指令高速缓存中的预取或数据自高速缓存的释放。
存储器被视作长水平位字串。对于大多数操作,对存储器的存取以自左侧至右侧序列而行进。将位字串再分成八个位的单元。八位单元被称作字节,字节为所有信息格式的基本建置区块。存储器中的每一字节位置藉由唯一非负整数识别,该非负整数为该字节位置的地址,或简称为字节地址。邻近字节位置具有连续地址,其在左侧以0开始且以自左侧至右侧序列而行进。地址为无正负号二进位整数,且为24、31或64个位。
在存储器与CPU或通道子系统之间一次一个字节或字节群组而传输信息。除非另有指定,否则在(例如)z/Architecture中,存储器中的字节群组由该群组的最左侧字节寻址。群组中字节的数目由待执行的操作暗示或明确地指定。当用于CPU操作中时,字节群组被称作字段。在每一字节群组内,在(例如)z/Architecture中,位以自左侧至右侧序列被编号。在z/Architecture中,最左侧位有时被称作“高阶”位,且最右侧位被称作“低阶”位。然而,位号码并非储存地址。可仅寻址字节。为了对存储器中的字节的个别位进行操作,存取整个字节。字节中的位自左侧至右侧被编号为0至7(在(例如)z/Architecture中)。地址中的位对于24位地址可被编号为8至31或40至63,或对于31位地址可被编号为1至31或33至63;地址中的位对于64位地址被编号为0至63。在一实例中,位8至31及1至31应用于处于为32个位宽的位置(例如,寄存器)中的地址,而位40至63及33至63应用于处于64位宽位置中的地址。在多个字节的任何其他固定长度格式内,构成该格式的位自0开始进行连续地编号。出于错误侦测的目的,且较佳地出于校正起见,可用每一字节或用一字节群组来传输一个或多个检查位。此类检查位由机器自动地产生且不能直接地受到程序控制。以字节的数目来表达储存容量。当储存操作数字段的长度由指令的操作码暗示时,字段据称具有固定长度,该固定长度可为一个、两个、四个、八个或十六个字节。较大字段可针对一些指令进行暗示。当储存操作数字段的长度未被暗示而是被明确地陈述时,字段据称具有可变长度。可变长度操作数长度可以一字节的增量(或用一些指令,以两个字节的倍数或其他倍数)发生变化。当将信息置放于存储器中时,包括于指定字段中的仅那些字节位置的内容被取代,即使至存储器的实体路径的宽度可大于正被储存的字段的长度亦如此。
信息的某些单元将在存储器中的整体边界上。当储存地址为以字节为单位的单元的长度的倍数时,边界对于信息单元被称作整体。向整体边界上的2、4、8、16及32字节的字段提供特殊名称。半字组为二字节边界上的两个连续字节的群组,且为指令的基本建置区块。字组为四字节边界上的四个连续字节的群组。双字组为八字节边界上的八个连续字节的群组。四倍字组为16字节边界上的16个连续字节的群组。八倍字组为32字节边界上的32个连续字节的群组。当储存地址指明半字组、字组、双字组、四倍字组及八倍字组时,地址的二进位表示分别含有一个、两个、三个、四个或五个最右侧零位。指令将处于二字节整体边界上。大多数指令的储存操作数并不具有边界对准要求。
在实施用于指令及数据操作数的分离高速缓存的器件上,若将程序储存至供随后提取指令的高速缓存行中,则可经历显著延迟,而不管储存是否变更随后被提取的指令。
在一实例中,实施例可由软件(有时指代已授权内码、固件、微码、毫码、皮码及其类似者,前述各者中任一者将与一个或多个实施例一致)实践。参看图17,体现一个或多个方面的软件程序码可由主机系统5000的处理器5001自诸如CD-ROM驱动器、磁带机或硬盘驱动器的长期储存介质器件5011存取。软件程序码可体现于多种已知介质中任一者上以供数据处理系统使用,诸如,磁片、硬盘驱动器或CD-ROM。程序码可散布于此类介质上,或可自计算机存储器5002散布至使用者或经由网络5010自一计算机系统的存储器散布至其他计算机系统以供此类其他系统的使用者使用。
软件程序码包括控制各种计算机组件与一个或多个应用程序的功能及互动的操作系统。程序码正常地自储存介质器件5011传呼至程序码可用于由处理器5001进行处理的相对较高速度计算机存储器5002。用于将软件程序码体现于存储器中、实体介质上和/或经由网络散布软件码的技术及方法是熟知的,且在本文中将不予以进一步论述。程序码在建立及储存于有形介质(包括但不限于电子存储器模块(RAM)、快闪存储器、光碟(CD)、DVD、磁带及其类似者)上常常常被称作“计算机程序产品”。计算机程序产品介质通常可由较佳地在计算机系统中的处理电路读取以供处理电路执行。
图18说明可实践一个或多个实施例的代表性工作站或伺服器硬件系统。图18的系统5020包含包括选用周边器件的代表性基本计算机系统5021,诸如,个人计算机、工作站或伺服器。基本计算机系统5021包括一个或多个处理器5026,及用以根据已知技术在处理器5026与系统5021的其他组件之间进行连接及启用处理器5026与其他组件之间的通信的总线。举例而言,总线将处理器5026连接至存储器5025及长期存储器5027,长期存储器5027可包括硬盘驱动器(包括(例如)磁性介质、CD、DVD及快闪存储器中任一者)或磁带机。系统5021可能亦包括使用者接口适配器,其经由总线将微处理器5026连接至一个或多个接口器件,诸如,键盘5024、鼠标5023、打印机/扫描器5030和/或其他接口器件,这些其他接口器件可为诸如触敏式屏幕、数字化键入板(entry pad)等等的任何使用者接口器件。总线亦经由显示适配器将诸如LCD屏幕或监视器的显示器件5022连接至微处理器5026。
系统5021可凭借能够与网络5029通信5028的网络适配器而与其他计算机或计算机的网络通信。实例网络适配器为通信通道、令牌环、乙太网或调制解调器。或者,系统5021可使用诸如CDPD(蜂窝式数字封包数据)卡的无线接口进行通信。系统5021可与局域网(LAN)或广域网(WAN)中的此类其他计算机相关联,或系统5021可为具有另一计算机的用户端/伺服器配置中的用户端等等。在此项技术中知晓所有这些配置以及适当通信硬件及软件。
图19说明可实践一个或多个实施例的数据处理网络5040。数据处理网络5040可包括多个个别网络,诸如,无线网络及有线网络,这些网络中每一者可包括多个个别工作站5041、5042、5043、5044。另外,本领域的技术人员应了解,可包括一个或多个LAN,其中LAN可包含耦接至主机处理器的多个智能工作站。
仍参看图19,网络亦可包括大型主机计算机或伺服器,诸如,网关计算机(用户端伺服器5046)或应用程序伺服器(可存取数据储存库且亦可直接地自工作站5045进行存取的远端伺服器5048)。网关计算机5046充当至每一个别网络中的进入点。当将一个网络连接协定连接至另一网络连接协定时需要网关。网关5046可较佳地凭借通信链路耦接至另一网络(例如,因特网5047)。网关5046亦可使用通信链路直接地耦接至一个或多个工作站5041、5042、5043、5044。网关计算机可利用可购自国际商业机器公司的IBM eServer System z伺服器予以实施。
同时参看图18及图19,可体现一个或多个方面的软件编程码5031可由系统5020的处理器5026自诸如CD-ROM驱动器或硬盘驱动器的长期储存介质5027存取。软件编程码可体现于多种已知介质中任一者上以供数据处理系统使用,诸如,磁片、硬盘驱动器或CD-ROM。程序码可散布于此类介质上,或可自存储器散布至使用者5050、5051或经由网络自一计算机系统的存储器散布至其他计算机系统以供此类其他系统的使用者使用。
或者,编程码可体现于存储器5025中,且由处理器5026使用处理器总线而存取。此类编程码包括控制各种计算机组件与一个或多个应用程序5032的功能及互动的操作系统。程序码正常地自储存介质5027传呼至程序码可用于由处理器5026进行处理的高速度存储器5025。用于将软件编程码体现于存储器中、实体介质上和/或经由网络散布软件码的技术及方法是熟知的,且在本文中将不予以进一步论述。程序码在建立及储存于有形介质(包括但不限于电子存储器模块(RAM)、快闪存储器、光碟(CD)、DVD、磁带及其类似者)上时常常被称作“计算机程序产品”。计算机程序产品介质通常可由较佳地在计算机系统中的处理电路读取以供处理电路执行。
最易于可用于处理器的高速缓存(相比于处理器的其他高速缓存通常较快且较小)为最低(L1或层级1)高速缓存,且主存储器(主存储器)为最高层级高速缓存(若存在3个层级,则为L3)。最低层级高速缓存常常被划分成保持待执行的机器指令的指令高速缓存(I高速缓存),及保持数据操作数的数据高速缓存(D高速缓存)。
参看图20,描绘用于处理器5026的例示性处理器实施例。通常,高速缓存5053的一个或多个层级用以缓冲存储器区块以便改良处理器效能。高速缓存5053为保持最可能使用的存储器数据的高速缓存行的高速度缓冲器。典型高速缓存行为64、128或256个字节的存储器数据。分离高速缓存除了用于高速缓存数据以外亦常常用于高速缓存指令。高速缓存连贯性(存储器及高速缓存中行的复本的同步)常常由本领浴公知的各种“窥探”演算法提供。处理器系统的主存储器存储器5025常常被称作高速缓存。在具有高速缓存5053的4个层级的处理器系统中,主存储器5025有时被称作层级5(L5)高速缓存,这是因为处理器系统通常较快且仅保持可用于计算机系统的非挥发性存储器(DASD、磁带等等)的部分。主存储器5025“高速缓存”由操作系统分页进及分页出主存储器5025的数据页。
程序计数器(指令计数器)5061追踪待执行的当前指令的地址。z/Architecture处理器中的程序计数器为64个位,且可被截断为31或24个位以支援先前寻址极限。程序计数器通常体现于计算机的PSW(程序状态字组)中,使得程序计数器在上下文切换期间持续。因此,具有程序计数器值的在进展中的程序可由(例如)操作系统中断(自程序环境至操作系统环境的上下文切换)。程序的PSW在程序未处于作用中时维持程序计数器值,且操作系统的程序计数器(在PSW中)在操作系统正执行时被使用。通常,使程序计数器累加等于当前指令的字节的数目的量。RISC(精简指令集计算)指令通常具有固定长度,而CISC(复杂指令集计算)指令通常具有可变长度。IBM z/Architecture的指令为具有2、4或6个字节的长度的CISC指令。举例而言,程序计数器5061系藉由上下文切换操作或分支指令的分支采取操作而修改。在上下文切换操作中,当前程序计数器值连同关于正被执行的程序的其他状态信息(诸如,条件码)一起储存于程序状态字组中,且载入新程序计数器值从而指向待执行的新程序模块的指令。分支采取操作经执行以便藉由将分支指令的结果载入至程序计数器5061中来准许程序作出决策或在程序内循环。
通常,指令提取单元5055用以以处理器5026的名义来提取指令。提取单元提取“下一循序指令”、分支采取指令的目标指令或在上下文切换之后的程序的第一指令。现代指令提取单元常常使用预取技术以基于可能使用已预取指令的可能性来理论式地预取指令。举例而言,提取单元可提取包括下一循序指令的指令的16个字节及另外循序指令的额外字节。
已提取指令接着由处理器5026执行。在一实施例中,已提取指令传递至提取单元的分派单元5056。该分派单元解码指令,且将关于已解码指令的信息转递至适当单元5057、5058、5060。执行单元5057通常将自指令提取单元5055接收关于已解码算术指令的信息,且将根据指令的操作码而对操作数执行算术运算。操作数较佳地自存储器5025、架构化寄存器5059或自正被执行的指令的立即字段提供至执行单元5057。执行的结果在被储存时储存于存储器5025、寄存器5059中或其他机器硬件(诸如,控制寄存器、PSW寄存器及其类似者)中。
虚拟地址使用动态地址转译5062且视情况使用存取寄存器转译5063而转译成真实地址。
处理器5026通常具有一个或多个单元5057、5058、5060以用于执行指令的功能。参看图21A,执行单元5057可凭借接口逻辑5071而与架构化通用寄存器5059、解码/分派单元5056、载入储存单元5060及其他处理器单元5065通信5071。执行单元5057可使用若干寄存器电路5067、5068、5069以保持算术逻辑单元(ALU)5066将进行运算的信息。ALU执行诸如加法、减法、乘法及除法的算术运算,以及诸如与、或及互斥或(XOR)、旋转及移位的逻辑功能。较佳地,ALU支援设计相依的特殊化运算。举例而言,其他电路可提供包括条件码及复原支援逻辑的其他架构化设施5072。通常,ALU运算的结果保持于输出寄存器电路5070中,输出寄存器电路5070可将结果转递至多种其他处理功能。存在处理器单元的许多配置,但本描述仅意欲提供一实施例的代表性理解。
ADD指令(例如)将在具有算术及逻辑功能性的执行单元5057中执行,而浮点指令(例如)将在具有特殊化浮点能力的浮点执行中执行。较佳地,执行单元藉由对由指令识别的操作数执行操作码定义功能而对操作数进行运算。举例而言,ADD指令可由执行单元5057对在由该指令的寄存器字段识别的两个寄存器5059中发现的操作数执行。
执行单元5057对两个操作数执行算术加法,且将结果储存于第三操作数中,其中第三操作数可为第三寄存器或两个来源寄存器中的一个。执行单元较佳地利用算术逻辑单元(ALU)5066,ALU 5066能够执行诸如移位、旋转、与、或及XOR的多种逻辑功能,以及包括加法、减法、乘法、除法中任一者的多种代数功能。一些ALU 5066经设计成用于纯量运算且一些ALU 5066经设计成用于浮点。取决于架构,数据可为字节由大到小(Big Endian)(其中最低有效字节处于最高字节地址)或字节由小到大(Little Endian)(其中最低有效字节处于最低字节地址)。IBM z/Architecture为字节由大到小。取决于架构,带正负号字段可为正负号及量值、1的补数,或2的补数。2的补数有利之处在于:ALU无需设计减法能力,这是因为2的补数中的负值或正值仅需要在ALU内的加法。举例而言,常常以速记法来描述数字,其中12位字段定义4,096字节区块的地址,且通常被描述为4千字节区块。
参看图21B,用于执行分支指令的分支指令信息通常发送至分支单元5058,分支单元5058常常使用诸如分支历史表5082的分支预测演算法以在其他条件操作完成之前预测分支的结果。当前分支指令的目标将被提取,且在条件操作完成之前被理论式地执行。当完成条件操作时,理论式执行的分支指令基于条件操作的条件及所理论结果而被完成或舍弃。典型分支指令可测试条件码,且在条件码满足分支指令的分支要求时分支至目标地址,目标地址可基于(例如)包括在寄存器字段或指令的立即字段中发现的数字的若干数字予以计算。分支单元5058可使用ALU 5074,ALU 5074具有多个输入寄存器电路5075、5076、5077及输出寄存器电路5080。举例而言,分支单元5058可与通用寄存器5059、解码分派单元5056或其他电路5073通信5081。
举例而言,指令群组的执行可由于多种原因而中断,这些原因包括由操作系统起始的上下文切换、造成上下文切换的程序异常或错误、造成上下文切换的I/O中断信号,或多个程序的多线程活动(在多线程化环境中)。较佳地,上下文切换动作储存关于当前执行程序的状态信息,且接着载入关于正被调用的另一程序的状态信息。举例而言,状态信息可储存于硬件寄存器中或存储器中。状态信息较佳地包含指向待执行的下一指令的程序计数器值、条件码、存储器转译信息,及架构化寄存器内容。上下文切换活动可由硬件电路、应用程序、操作系统程序或固件码(微码、皮码或已授权内码(LIC))单独地或组合地演练。
处理器根据指令定义方法而存取操作数。指令可使用指令的部分的值来提供立即操作数,可提供明确地指向一般用途寄存器或特殊用途寄存器(例如,浮点寄存器)的一个或多个寄存器字段。指令可利用由操作码字段识别的所暗示寄存器作为操作数。指令可将存储器位置用于操作数。如由z/Architecture长位移设施所例示,操作数的存储器位置可由寄存器、立即字段或寄存器与立即字段的组合提供,其中指令定义基底寄存器、索引寄存器及立即字段(位移字段),前述三者加在一起以提供(例如)操作数在存储器中的地址。本文中的位置通常暗示主存储器(主存储器)中的位置,除非另有指示。
参看图21C,处理器使用载入/储存单元5060来存取存储器。载入/储存单元5060可藉由获得目标操作数在存储器5053中的地址且将操作数载入于寄存器5059或另一存储器5053的位置而执行载入操作,或可藉由获得目标操作数在存储器5053中的地址且将自寄存器5059或另一存储器5053的位置获得的数据储存于存储器5053中的目标操作数位置中而执行储存操作。载入/储存单元5060可为理论式,且可以相对于指令序列无序的序列存取存储器,然而,载入/储存单元5060对程序维持指令被按次序执行的外观。载入/储存单元5060可与通用寄存器5059、解码/分派单元5056、高速缓存/存储器接口5053或其他元件5083通信5084,且包含各种寄存器电路5086、5087、5088及5089、ALU 5085及控制逻辑5090以计算储存地址且提供管线定序以使操作按次序。一些操作可无序,但载入/储存单元提供使无序操作对于程序看来像是已按次序被执行的功能性,如本领域中所公知的那样。
较佳地,应用程序所“查看”的地址常常被称作虚拟地址。虚拟地址有时被称作“逻辑地址”及“有效地址”。这些虚拟地址为虚拟之处在于:其藉由多种动态地址转译(DAT)技术中的一个重新引导至实体存储器位置,这些技术包括但不限于简单地用偏移值来加前缀于虚拟地址、经由一个或多个转译表转译虚拟地址,转译表较佳单独地或组合地至少包含区段表及页表,较佳地,区段表具有指向页表的项。在z/Architecture中,提供转译阶层,包括区第一表、区第二表、区第三表、区段表及选用页表。常常藉由利用转译后备缓冲器(TLB)来改良地址转译的效能,该TLB包含将虚拟地址映射至关联实体存储器位置的项。当DAT使用转移译来转译虚拟地址时建立这些项。虚拟地址的后续使用接着可利用快速TLB的项而非缓慢循序转译表存取。TLB内容可由包括LRU(最近最少使用)的多种取代演算法管理。
在处理器为多处理器系统的处理器的状况下,每一处理器具有使诸如I/O、高速缓存、TLB及存储器的共用资源出于一致性而保持连锁的职责。通常,“窥探”技术将用来维持高速缓存一致性。在窥探环境中,可将每一高速缓存行标示为处于共用状态、独占状态、已改变状态、无效状态及其类似者中任一者以便促进共用。
举例而言,I/O单元5054(图20)向处理器提供用于附接至包括磁带、碟片、打印机、显示器及网络的周边器件的构件。I/O单元常常由软件驱动程序呈现给计算机程序。在诸如可购自的System z的大型主机中,通道适配器及开放系统适配器为在操作系统与周边器件之间提供通信的大型主机的I/O单元。
另外,其他计算环境类型可受益于一个或多个方面。作为一实例,环境可包括模拟器(例如,软件或其他模拟机制),其中特定架构(包括(例如)指令执行、架构化功能(诸如,地址转译)及架构化寄存器)或其子集被模拟(例如,在具有处理器及存储器的原生计算机系统上)。在此类环境中,模拟器的一个或多个模拟功能可实施一个或多个实施例,即使执行该模拟器的计算机可具有不同于正被模拟的能力的架构亦如此。作为一实例,在模拟模式下,解码正被模拟的特定指令或操作,且建置适当模拟功能以实施个别指令或操作。
在一模拟环境中,主机计算机包括(例如):存储器,其储存指令及数据;指令提取单元,其自存储器提取指令,且视情况提供用于已提取指令的本地缓冲;指令解码单元,其接收已提取指令且判定已被提取的指令类型;及指令执行单元,其执行这些指令。执行可包括将数据自存储器载入至寄存器中;将数据自寄存器储存回至存储器;或执行某一算术或逻辑运算类型,如由解码单元所判定。在一实例中,以软件来实施每一单元。举例而言,由这些单元执行的操作被实施为模拟器软件内的一个或多个子例程。
更特定而言,在大型主机中,架构化机器指令常常凭借编译器应用程序供程序员(通常现今为“C”程序员)使用。储存于储存介质中的这些指令可原生地在z/Architecture伺服器中或者在执行其他架构的机器中执行。指令可在现有及未来大型主机伺服器中且在的其他机器(例如,Power System伺服器及System x伺服器)上进行模拟。指令可在使用由 AMD及其他制造商制造的硬件的各种各样的机器上执行Linux的机器中执行。除了在依据z/Architecture的该硬件上的执行以外,亦可使用Linux以及数个使用由Hercules、UMX或FSI(Fundamental Software公司)进行的模拟的机器,在这些机器处执行通常处于模拟模式。在模拟模式下,模拟软件由原生处理器执行以对模拟处理器的架构进行模拟。
原生处理器通常执行模拟软件,该模拟软件包含固件或原生操作系统以执行模拟处理器的模拟。模拟软件负责提取及执行模拟处理器架构的指令。模拟软件维持模拟程序计数器以追踪指令边界。模拟软件一次可提取一个或多个模拟机器指令,且将该一个或多个模拟机器指令转换成原生机器指令的对应群组以供原生处理器执行。这些已转换指令可被高速缓存,使得可实现较快转换。然而,模拟软件仍维持模拟处理器架构的架构规则以便确信针对模拟处理器撰写的操作系统及应用程序正确地操作。此外,模拟软件将提供由模拟处理器结构识别的资源,使得经设计成在模拟处理器上执行的操作系统或应用程序可在具有模拟软件的原生处理器上执行,这些资源包括但不限于控制寄存器、一般用途寄存器、浮点寄存器、包括(例如)区段表及页表的动态地址转译函数、中断机制、上下文切换机制、当日时间(TOD)时钟及至I/O子系统的架构化接口。
解码正被模拟的指定指令,且呼叫子例程以执行个别指令的功能。对模拟处理器的功能进行模拟的模拟软件功能以(例如)以下各者予以实施:“C”子例程或驱动程序,或提供用于特定硬件的驱动程序的某一其他方法,此在理解较佳实施例的描述之后将在本领域技术人员的技艺内。包括但不限于以下各者的各种软件及硬件模拟专利说明多种已知方法来达成针对不同机器架构化的指令格式的模拟以用于可用于本领域技术人员的目标机器:Beausoleil等人的名为“Multiprocessor for Hardware Emulation”的美国专利证书第5,551,013号;及Scalzi等人的名为“Preprocessing of Stored Target Routines forEmulating Incompatible Instructions on a Target Processor”的美国专利证书第6,009,261号;及Davidian等人的名为“Decoding Guest Instruction to Directly AccessEmulation Routines that Emulate the Guest Instructions”的美国专利证书第5,574,873号;及Gorishek等人的名为“Symmetrical Multiprocessing Bus and Chipset Usedfor Coprocessor Support Allowing Non-Native Code to Run in a System”的美国专利证书第6,308,255号;及Lethin等人的名为“Dynamic Optimizing Object CodeTranslator for Architecture Emulation and Dynamic Optimizing Object CodeTranslation Method”的美国专利证书第6,463,582号;及Eric Traut的名为“Method forEmulating Guest Instructions on a Host Computer Through Dynamic Recompilationof Host Instructions”的美国专利证书第5,790,825号,前述专利证书中每一个的全文据此以引用方式并入本文中;及许多其他专利证书。
在图22中,提供模拟主机计算机系统5092的实例,其模拟主机架构的主机计算机系统5000'。在模拟主机计算机系统5092中,主机处理器(CPU)5091为模拟主机处理器(或虚拟主机处理器),且包含具有不同于主机计算机5000'的处理器5091的原生指令集架构的原生指令集架构的模拟处理器5093。模拟主机计算机系统5092具有对于模拟处理器5093可存取的存储器5094。在实例实施例中,存储器5094经分割成主机计算机存储器5096部分及模拟例程5097部分。主机计算机存储器5096根据主机计算机架构可用于模拟主机计算机5092的程序。模拟处理器5093执行不同于模拟处理器5091的架构的架构的架构化的指令集的原生指令,这些原生指令自模拟例程存储器5097获得;且可藉由使用在序列与存取/解码例程中获得的一个或多个指令来自主机计算机存储器5096中的程序存取主机指令以供执行,序列与存取/解码例程可解码所存取的主机指令以判定用于模拟所存取的主机指令的功能的原生指令执行例程。举例而言,针对主机计算机系统5000'的架构定义的其他设施可藉由架构化的设施例程来模拟,包括作为一般用途寄存器、控制寄存器、动态地址转译及I/O子系统支援及处理器高速缓存的此类设施。模拟例程亦可利用在模拟处理器5093中可用的功能(诸如,通用寄存器及虚拟地址的动态转译)以改良模拟例程的效能。专用硬件及卸载引擎亦可经提供以在模拟主机计算机5000'的功能中协助处理器5093。
本文所使用的术语仅出于描述特定实施例的目的,且并不意欲为限制性的。如本文所使用,除非上下文另有清楚指示,否则单数形式“一”及“该”意欲亦包括复数形式。应进一步理解,术语“包含”在用于本说明书中时指定存在所叙述特征、整数、步骤、操作、元件和/或组件,但并不排除存在或添加一种或多种其他特征、整数、步骤、操作、元件、组件和/或其群组。
以下申请专利范围中的所有构件或步骤附加功能元件的对应结构、材料、动作及等效者(若有)意欲包括用于结合如特定主张的其他所主张元件执行功能的任何结构、材料或动作。出于说明及描述的目的已呈现一或多个实施例的描述,但该描述并不意欲为详尽的或将本发明限于所揭示的形式。许多修改及变化对于本领域技术人员将显而易见。选择及描述实施例以便最佳地解释各种方面及实践应用,且使其他本领域技术人员能够理解具有如适合于所涵盖的特定用途的各种修改的各种实施例。

Claims (11)

1.一种用于处理计算环境内的事务的方法,所述方法包括以下步骤:
由处理器获得机器指令,所述机器指令用于起始指定类型的事务,所述指定类型在所述机器指令的字段中明确地指示;
由处理器执行由所述机器指令起始的事务,所述事务有效地延迟将事务存储交付至主存储器,直到选择的事务完成为止;
基于执行所述事务而确定已经出现中止条件;
检查所述指定类型的事务是否为受限事务,所述受限事务具有与之关联的一个或多个限制,并且所述检查包括:检查所述机器指令的字段以确定所述事务是否为受限事务;以及
基于确定所述中止条件并且取决于指定类型的事务来执行处理,其中基于所述检查指示所述事务是受限事务,所述执行处理包括返回到所述事务的开始以重新执行所述事务。
2.如权利要求1所述的方法,其中,所述执行基于执行开始事务指令,所述开始事务指令指示所述事务是否是受限的。
3.如权利要求2所述的方法,其中,所述返回到所述事务的开始包括:返回到所述开始事务指令。
4.如权利要求1所述的方法,其中,所述方法还包括:重新执行所述事务,其中,所述重新执行包括:执行一个或多个动作以促进所述事务的完成。
5.如权利要求4所述的方法,其中,所述一个或多个动作包括以下各项中的至少一个:
禁止无序执行;
禁止其它处理器存取与所述事务冲突的存储器位置;或
在中止处理中引起随机延迟。
6.如权利要求1所述的方法,其中,在所述事务的完成或中断之前,所述返回到所述事务的开始执行一次或多次。
7.如权利要求1所述的方法,其中,所述方法还包括:
基于所述检查指示所述事务是受限事务而确定是否已经出现所述一个或多个限制中的一个限制的违反;以及
基于确定已经出现所述违反而引起中断。
8.如权利要求1所述的方法,其中,所述一个或多个限制包括以下各项中的至少一个:
所述事务内的有限数量的指令;
所述事务内的指令处于存储器的预定义区域内;
特定预先指定的指令可以被包括在所述事务内,其它指令受限;
对所述事务的存储操作数进行的存取的限制;
所述事务不存取包含存储器的所述预定义的区域的存储器的区块中的存储操作数;
所述事务不使用映射到同一绝对地址的不同逻辑地址来存取指令或存储操作数;以及
所述事务进行的操作数参考处于所指定的大小内。
9.如权利要求1所述的方法,其中,除了返回到所述事务的开始之外,不提供失败路径以处理所述中止条件。
10.如权利要求1所述的方法,其中,所述事务将要更新多个不连续存储器位置。
11.一种用于处理计算环境内的事务的系统,包括适用于执行如权利要求1-10的任一项权利要求所述的方法的装置。
CN201280073606.7A 2012-06-15 2012-11-26 受限事务执行 Active CN104335185B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/524,788 2012-06-15
US13/524,788 US8682877B2 (en) 2012-06-15 2012-06-15 Constrained transaction execution
PCT/IB2012/056734 WO2013186604A1 (en) 2012-06-15 2012-11-26 Constrained transaction execution

Publications (2)

Publication Number Publication Date
CN104335185A CN104335185A (zh) 2015-02-04
CN104335185B true CN104335185B (zh) 2017-07-07

Family

ID=49756860

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280073606.7A Active CN104335185B (zh) 2012-06-15 2012-11-26 受限事务执行

Country Status (15)

Country Link
US (2) US8682877B2 (zh)
EP (1) EP2862082A4 (zh)
JP (1) JP6238248B2 (zh)
KR (1) KR101625324B1 (zh)
CN (1) CN104335185B (zh)
AU (1) AU2012382779B2 (zh)
BR (1) BR112014031383A2 (zh)
CA (1) CA2874181C (zh)
HK (1) HK1207444A1 (zh)
IL (1) IL236247A0 (zh)
MX (1) MX348648B (zh)
RU (1) RU2549112C2 (zh)
SG (1) SG11201407465TA (zh)
TW (1) TWI533218B (zh)
WO (1) WO2013186604A1 (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9367323B2 (en) * 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9384148B2 (en) * 2013-12-17 2016-07-05 Intel Corporation Detection of unauthorized memory modification and access using transactional memory
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
US9558032B2 (en) 2014-03-14 2017-01-31 International Business Machines Corporation Conditional instruction end operation
US9195493B2 (en) * 2014-03-27 2015-11-24 International Business Machines Corporation Dispatching multiple threads in a computer
US10310857B2 (en) 2014-04-29 2019-06-04 Ampere Computing Llc Systems and methods facilitating multi-word atomic operation support for system on chip environments
US10289414B2 (en) 2014-06-02 2019-05-14 International Business Machines Corporation Suppressing branch prediction on a repeated execution of an aborted transaction
US10503538B2 (en) 2014-06-02 2019-12-10 International Business Machines Corporation Delaying branch prediction updates specified by a suspend branch prediction instruction until after a transaction is completed
US10261826B2 (en) 2014-06-02 2019-04-16 International Business Machines Corporation Suppressing branch prediction updates upon repeated execution of an aborted transaction until forward progress is made
US10235172B2 (en) 2014-06-02 2019-03-19 International Business Machines Corporation Branch predictor performing distinct non-transaction branch prediction functions and transaction branch prediction functions
US9477469B2 (en) * 2014-06-02 2016-10-25 International Business Machines Corporation Branch predictor suppressing branch prediction of previously executed branch instructions in a transactional execution environment
US9448939B2 (en) 2014-06-30 2016-09-20 International Business Machines Corporation Collecting memory operand access characteristics during transactional execution
US9710271B2 (en) * 2014-06-30 2017-07-18 International Business Machines Corporation Collecting transactional execution characteristics during transactional execution
GB2533414B (en) * 2014-12-19 2021-12-01 Advanced Risc Mach Ltd Apparatus with shared transactional processing resource, and data processing method
US20160179662A1 (en) * 2014-12-23 2016-06-23 David Pardo Keppel Instruction and logic for page table walk change-bits
US9792124B2 (en) 2015-02-13 2017-10-17 International Business Machines Corporation Speculative branch handling for transaction abort
US10241700B2 (en) * 2015-08-21 2019-03-26 International Business Machines Corporation Execution of program region with transactional memory
US10031694B2 (en) * 2015-09-29 2018-07-24 International Business Machines Corporation Asynchronously clearing page frames
KR102574257B1 (ko) 2015-10-30 2023-09-01 삼성전자주식회사 Soh 추정 장치 및 방법과, soh 추정 모델 생성 장치 및 방법
US10579377B2 (en) * 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
KR102287758B1 (ko) * 2018-03-05 2021-08-09 삼성전자주식회사 부채널 공격으로부터 캐시를 보호하는 시스템
CN112256328B (zh) * 2020-10-19 2023-04-07 海光信息技术股份有限公司 随机指令的生成方法及装置、存储介质以及电子装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195744B1 (en) * 1995-10-06 2001-02-27 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscaler processor
CN102144218A (zh) * 2008-07-28 2011-08-03 超威半导体公司 可虚拟化的先进同步设备

Family Cites Families (221)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US695744A (en) 1901-05-16 1902-03-18 John T Lesher Stove.
CA1174370A (en) 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
US4488227A (en) 1982-12-03 1984-12-11 Honeywell Information Systems Inc. Program counter stacking method and apparatus for nested subroutines and interrupts
US4740893A (en) 1985-08-07 1988-04-26 International Business Machines Corp. Method for reducing the time for switching between programs
US5063497A (en) 1987-07-01 1991-11-05 Digital Equipment Corporation Apparatus and method for recovering from missing page faults in vector data processing operations
US5321823A (en) 1988-07-20 1994-06-14 Digital Equipment Corporation Digital processor with bit mask for counting registers for fast register saves
US5117498A (en) 1988-08-19 1992-05-26 Motorola, Inc. Processer with flexible return from subroutine
JPH0437927A (ja) 1990-06-01 1992-02-07 Sony Corp プロセッサの処理方法
US5471591A (en) 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
JPH05197604A (ja) 1991-05-21 1993-08-06 Digital Equip Corp <Dec> マルチプロセッサ・コンピュータ及びその動作方法
US5701480A (en) * 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
US5274817A (en) 1991-12-23 1993-12-28 Caterpillar Inc. Method for executing subroutine calls
US5359608A (en) 1992-11-24 1994-10-25 Amdahl Corporation Apparatus for activation and deactivation of instruction tracing through use of conditional trace field in branch instructions
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5925125A (en) 1993-06-24 1999-07-20 International Business Machines Corporation Apparatus and method for pre-verifying a computer instruction set to prevent the initiation of the execution of undefined instructions
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5748964A (en) 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US5655100A (en) 1995-03-31 1997-08-05 Sun Microsystems, Inc. Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
TW384447B (en) 1996-01-22 2000-03-11 Infinite Technology Inc Processor with reconfigurable arithmetic data path
JPH103416A (ja) 1996-06-14 1998-01-06 Canon Inc 情報処理装置およびその方法
US6035313A (en) 1997-03-24 2000-03-07 Motorola, Inc. Memory address generator for an FFT
US5870582A (en) 1997-03-31 1999-02-09 International Business Machines Corporation Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
US5937199A (en) 1997-06-03 1999-08-10 International Business Machines Corporation User programmable interrupt mask with timeout for enhanced resource locking efficiency
JP3546678B2 (ja) 1997-09-12 2004-07-28 株式会社日立製作所 マルチos構成方法
US6094730A (en) 1997-10-27 2000-07-25 Hewlett-Packard Company Hardware-assisted firmware tracing method and apparatus
US7076784B1 (en) 1997-10-28 2006-07-11 Microsoft Corporation Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment
US6000029A (en) 1997-11-03 1999-12-07 Motorola, Inc. Method and apparatus for affecting subsequent instruction processing in a data processor
US5938778A (en) 1997-11-10 1999-08-17 International Business Machines Corporation System and method for tracing instructions in an information handling system without changing the system source code
KR100246537B1 (ko) 1997-11-25 2000-03-15 정선종 코드분할 다중접속 시스템에서 파일럿 심벌을 이용한 동기식이중 채널 큐피에스케이 송수신기의 구조
SE9704476L (sv) 1997-12-02 1999-06-23 Ericsson Telefon Ab L M Utökad instruktionsavkodning
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6202067B1 (en) 1998-04-07 2001-03-13 Lucent Technologies, Inc. Method and apparatus for correct and complete transactions in a fault tolerant distributed database system
US6119129A (en) 1998-05-14 2000-09-12 Sun Microsystems, Inc. Multi-threaded journaling in a configuration database
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
EP0992907B1 (en) 1998-10-06 2005-09-28 Texas Instruments Inc. Trace fifo management
EP0992916A1 (en) 1998-10-06 2000-04-12 Texas Instruments Inc. Digital signal processor
US6151669A (en) 1998-10-10 2000-11-21 Institute For The Development Of Emerging Architectures, L.L.C. Methods and apparatus for efficient control of floating-point status register
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
AR029173A1 (es) * 1999-07-20 2003-06-18 Diebold Inc Metodo para el desarrollo de cajeros automaticos
US6543006B1 (en) * 1999-08-31 2003-04-01 Autodesk, Inc. Method and apparatus for automatic undo support
US6732307B1 (en) 1999-10-01 2004-05-04 Hitachi, Ltd. Apparatus and method for storing trace information
US7761857B1 (en) 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US6604188B1 (en) 1999-10-20 2003-08-05 Transmeta Corporation Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction
US6738892B1 (en) 1999-10-20 2004-05-18 Transmeta Corporation Use of enable bits to control execution of selected instructions
JP3776653B2 (ja) 1999-11-24 2006-05-17 富士通株式会社 演算処理装置
US6754809B1 (en) 1999-12-30 2004-06-22 Texas Instruments Incorporated Data processing apparatus with indirect register file access
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6665863B1 (en) 2000-05-31 2003-12-16 Microsoft Corporation Data referencing within a database graph
US6826682B1 (en) 2000-06-26 2004-11-30 Transmeta Corporation Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state
AU2001283163A1 (en) 2000-08-04 2002-02-18 Carr Scott Software Incorporated Automatic transaction management
US6886094B1 (en) 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
US6671686B2 (en) * 2000-11-02 2003-12-30 Guy Pardon Decentralized, distributed internet data management
US7346632B2 (en) 2001-02-22 2008-03-18 International Business Machines Corporation Mechanism for executing nested transactions in an execution environment supporting flat transactions only
US6963919B1 (en) 2001-02-28 2005-11-08 Agilent Technologies, Inc. Method and system for improving computer network performance
US6745272B2 (en) 2001-04-04 2004-06-01 Advanced Micro Devices, Inc. System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system
US7185234B1 (en) 2001-04-30 2007-02-27 Mips Technologies, Inc. Trace control from hardware and software
US7305678B2 (en) 2001-05-17 2007-12-04 International Business Machines Corporation Method and system for reducing synchronization waits when allocating sequenced identifiers in a multi-threaded server
US7613762B2 (en) 2001-05-25 2009-11-03 Sun Microsystems, Inc. Floating point remainder with embedded status information
KR100625595B1 (ko) 2001-05-28 2006-09-20 한국전자통신연구원 트랜잭션 처리 시스템의 병렬 로깅 방법 및 트랜잭션 로그 처리 시스템
US6826681B2 (en) 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US7185183B1 (en) 2001-08-02 2007-02-27 Mips Technologies, Inc. Atomic update of CPO state
US20060218556A1 (en) 2001-09-28 2006-09-28 Nemirovsky Mario D Mechanism for managing resource locking in a multi-threaded environment
US7174463B2 (en) 2001-10-04 2007-02-06 Lenovo (Singapore) Pte. Ltd. Method and system for preboot user authentication
US7313734B2 (en) 2002-01-14 2007-12-25 International Business Machines Corporation Method and system for instruction tracing with enhanced interrupt avoidance
US7546446B2 (en) 2002-03-08 2009-06-09 Ip-First, Llc Selective interrupt suppression
US7496494B2 (en) 2002-09-17 2009-02-24 International Business Machines Corporation Method and system for multiprocessor emulation on a multiprocessor host system
US6892286B2 (en) 2002-09-30 2005-05-10 Sun Microsystems, Inc. Shared memory multiprocessor memory model verification system and method
US7103597B2 (en) 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
US7634638B1 (en) 2002-10-22 2009-12-15 Mips Technologies, Inc. Instruction encoding for system register bit set and clear
US7568023B2 (en) 2002-12-24 2009-07-28 Hewlett-Packard Development Company, L.P. Method, system, and data structure for monitoring transaction performance in a managed computer network environment
US7089374B2 (en) 2003-02-13 2006-08-08 Sun Microsystems, Inc. Selectively unmarking load-marked cache lines during transactional program execution
US7269717B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Method for reducing lock manipulation overhead during access to critical code sections
US6862664B2 (en) 2003-02-13 2005-03-01 Sun Microsystems, Inc. Method and apparatus for avoiding locks by speculatively executing critical sections
US7269693B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring stores to support transactional program execution
US7398355B1 (en) 2003-02-13 2008-07-08 Sun Microsystems, Inc. Avoiding locks by transactionally executing critical sections
US7398359B1 (en) 2003-04-30 2008-07-08 Silicon Graphics, Inc. System and method for performing memory operations in a computing system
CA2472887A1 (en) * 2003-06-30 2004-12-30 Gravic, Inc. Methods for ensuring referential integrity in multithreaded replication engines
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7197586B2 (en) 2004-01-14 2007-03-27 International Business Machines Corporation Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler
US7206903B1 (en) 2004-07-20 2007-04-17 Sun Microsystems, Inc. Method and apparatus for releasing memory locations during transactional execution
US7703098B1 (en) 2004-07-20 2010-04-20 Sun Microsystems, Inc. Technique to allow a first transaction to wait on condition that affects its working set
US7395382B1 (en) 2004-08-10 2008-07-01 Sun Microsystems, Inc. Hybrid software/hardware transactional memory
US8544020B1 (en) 2004-09-14 2013-09-24 Azul Systems, Inc. Cooperative preemption
US20060064508A1 (en) 2004-09-17 2006-03-23 Ramesh Panwar Method and system to store and retrieve message packet data in a communications network
US7373554B2 (en) 2004-09-24 2008-05-13 Oracle International Corporation Techniques for automatic software error diagnostics and correction
US7856537B2 (en) 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
EP1657118A1 (en) 2004-11-11 2006-05-17 IEE INTERNATIONAL ELECTRONICS &amp; ENGINEERING S.A. Collision recognition device for a vehicle
US7984248B2 (en) 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US7631073B2 (en) 2005-01-27 2009-12-08 International Business Machines Corporation Method and apparatus for exposing monitoring violations to the monitored application
US20060212757A1 (en) 2005-03-15 2006-09-21 International Business Machines Corporation Method, system, and program product for managing computer-based interruptions
US7421544B1 (en) 2005-04-04 2008-09-02 Sun Microsystems, Inc. Facilitating concurrent non-transactional execution in a transactional memory system
US7496726B1 (en) 2005-04-18 2009-02-24 Sun Microsystems, Inc. Controlling contention via transactional timers among conflicting transactions issued by processors operating in insistent or polite mode
US7464161B2 (en) 2005-06-06 2008-12-09 International Business Machines Corporation Enabling and disabling byte code inserted probes based on transaction monitoring tokens
US7350034B2 (en) 2005-06-20 2008-03-25 International Business Machines Corporation Architecture support of best-effort atomic transactions for multiprocessor systems
US7882339B2 (en) 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US20070005828A1 (en) 2005-06-30 2007-01-04 Nimrod Diamant Interrupts support for the KCS manageability interface
CN1713164A (zh) 2005-07-21 2005-12-28 复旦大学 可自主处理多事务传输要求的dma控制器及数据传输方法
JP2009508187A (ja) 2005-08-01 2009-02-26 サン・マイクロシステムズ・インコーポレーテッド クリティカルセクションをトランザクション的に実行することによるロックの回避
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
US20070136289A1 (en) 2005-12-14 2007-06-14 Intel Corporation Lock elision with transactional memory
US20070143755A1 (en) 2005-12-16 2007-06-21 Intel Corporation Speculative execution past a barrier
US8117605B2 (en) 2005-12-19 2012-02-14 Oracle America, Inc. Method and apparatus for improving transactional memory interactions by tracking object visibility
US7730286B2 (en) 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US7810072B2 (en) 2006-01-06 2010-10-05 International Business Machines Corporation Exception thrower
US20070186056A1 (en) 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US7669015B2 (en) 2006-02-22 2010-02-23 Sun Microsystems Inc. Methods and apparatus to implement parallel transactions
US8099538B2 (en) 2006-03-29 2012-01-17 Intel Corporation Increasing functionality of a reader-writer lock
US8180967B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US8180977B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US7930695B2 (en) 2006-04-06 2011-04-19 Oracle America, Inc. Method and apparatus for synchronizing threads on a processor that supports transactional memory
US7636829B2 (en) * 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US7594094B2 (en) 2006-05-19 2009-09-22 International Business Machines Corporation Move data facility with optional specifications
US7707394B2 (en) 2006-05-30 2010-04-27 Arm Limited Reducing the size of a data stream produced during instruction tracing
US7849446B2 (en) 2006-06-09 2010-12-07 Oracle America, Inc. Replay debugging
MY149658A (en) 2006-06-12 2013-09-30 Mobile Money Internat Sdn Bhd Transaction server
US20070300013A1 (en) 2006-06-21 2007-12-27 Manabu Kitamura Storage system having transaction monitoring capability
US20080005504A1 (en) 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US20080016325A1 (en) 2006-07-12 2008-01-17 Laudon James P Using windowed register file to checkpoint register state
US7617421B2 (en) 2006-07-27 2009-11-10 Sun Microsystems, Inc. Method and apparatus for reporting failure conditions during transactional execution
US7748618B2 (en) 2006-08-21 2010-07-06 Verizon Patent And Licensing Inc. Secure near field transaction
US7865885B2 (en) 2006-09-27 2011-01-04 Intel Corporation Using transactional memory for precise exception handling in aggressive dynamic binary optimizations
US20080086516A1 (en) 2006-10-04 2008-04-10 Oracle International Automatically changing a database system's redo transport mode to dynamically adapt to changing workload and network conditions
DE602006008802D1 (de) 2006-11-06 2009-10-08 Gm Global Tech Operations Inc Verfahren zum Betreiben eines Partikelfilters, Programm für einen Rechner und dafür vorgesehene Regelvorrichtung
CN101178787A (zh) 2006-11-10 2008-05-14 上海市卢湾区东南医院 用于社区老干部保健管理的信息沟通方法
US7669040B2 (en) 2006-12-15 2010-02-23 Sun Microsystems, Inc. Method and apparatus for executing a long transaction
JP2008165370A (ja) 2006-12-27 2008-07-17 Internatl Business Mach Corp <Ibm> オンライントランザクション処理を分割し、分散環境で実行するための方法および装置。
US7802136B2 (en) 2006-12-28 2010-09-21 Intel Corporation Compiler technique for efficient register checkpointing to support transaction roll-back
US8086827B2 (en) 2006-12-28 2011-12-27 Intel Corporation Mechanism for irrevocable transactions
US7627743B2 (en) 2007-01-12 2009-12-01 Andes Technology Corporation Method and circuit implementation for multiple-word transfer into/from memory subsystems
US20080244544A1 (en) 2007-03-29 2008-10-02 Naveen Neelakantam Using hardware checkpoints to support software based speculation
US8332374B2 (en) * 2007-04-13 2012-12-11 Oracle America, Inc. Efficient implicit privatization of transactional memory
US9009452B2 (en) 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US8117403B2 (en) 2007-05-14 2012-02-14 International Business Machines Corporation Transactional memory system which employs thread assists using address history tables
US7814378B2 (en) 2007-05-18 2010-10-12 Oracle America, Inc. Verification of memory consistency and transactional memory
US20080320282A1 (en) 2007-06-22 2008-12-25 Morris Robert P Method And Systems For Providing Transaction Support For Executable Program Components
US8266387B2 (en) 2007-06-27 2012-09-11 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization emulation
US7779232B2 (en) 2007-08-28 2010-08-17 International Business Machines Corporation Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches
US8209689B2 (en) 2007-09-12 2012-06-26 Intel Corporation Live lock free priority scheme for memory transactions in transactional memory
US7904434B2 (en) 2007-09-14 2011-03-08 Oracle International Corporation Framework for handling business transactions
US7890472B2 (en) 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
US20090127332A1 (en) 2007-11-16 2009-05-21 Kyung Yang Park System for processing payment employing off-line transaction approval mode of mobile card and method thereof
US20090138890A1 (en) 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory
CN101170747A (zh) 2007-11-30 2008-04-30 中兴通讯股份有限公司 中继状态调节方法和装置
US20090177530A1 (en) 2007-12-14 2009-07-09 Qualcomm Incorporated Near field communication transactions in a mobile environment
US8195898B2 (en) 2007-12-27 2012-06-05 Intel Corporation Hybrid transactions for low-overhead speculative parallelization
US8706982B2 (en) 2007-12-30 2014-04-22 Intel Corporation Mechanisms for strong atomicity in a transactional memory system
US8065491B2 (en) 2007-12-30 2011-11-22 Intel Corporation Efficient non-transactional write barriers for strong atomicity
US7966459B2 (en) 2007-12-31 2011-06-21 Oracle America, Inc. System and method for supporting phased transactional memory modes
US8140497B2 (en) 2007-12-31 2012-03-20 Oracle America, Inc. System and method for implementing nonblocking zero-indirection transactional memory
US20090182983A1 (en) 2008-01-11 2009-07-16 International Business Machines Corporation Compare and Branch Facility and Instruction Therefore
US8041900B2 (en) 2008-01-15 2011-10-18 Oracle America, Inc. Method and apparatus for improving transactional memory commit latency
US8176279B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Managing use of storage by multiple pageable guests of a computing environment
US8380907B2 (en) 2008-02-26 2013-02-19 International Business Machines Corporation Method, system and computer program product for providing filtering of GUEST2 quiesce requests
US8161273B2 (en) 2008-02-26 2012-04-17 Oracle America, Inc. Method and apparatus for programmatically rewinding a register inside a transaction
US8688628B2 (en) 2008-02-29 2014-04-01 Red Hat, Inc. Nested queued transaction manager
EP2096564B1 (en) 2008-02-29 2018-08-08 Euroclear SA/NV Improvements relating to handling and processing of massive numbers of processing instructions in real time
US8316366B2 (en) 2008-04-02 2012-11-20 Oracle America, Inc. Facilitating transactional execution in a processor that supports simultaneous speculative threading
US20090260011A1 (en) * 2008-04-14 2009-10-15 Microsoft Corporation Command line transactions
JP5385545B2 (ja) 2008-04-17 2014-01-08 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションの実行を制御する装置及び方法
US9367363B2 (en) 2008-05-12 2016-06-14 Oracle America, Inc. System and method for integrating best effort hardware mechanisms for supporting transactional memory
US8612950B2 (en) 2008-06-19 2013-12-17 Intel Corporation Dynamic optimization for removal of strong atomicity barriers
US7996686B2 (en) 2008-07-07 2011-08-09 International Business Machines Corporation Branch trace methodology
US9449314B2 (en) 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
US8191046B2 (en) 2008-10-06 2012-05-29 Microsoft Corporation Checking transactional memory implementations
US20100122073A1 (en) 2008-11-10 2010-05-13 Ravi Narayanaswamy Handling exceptions in software transactional memory systems
JP4702962B2 (ja) 2008-11-12 2011-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリ制御装置、プログラム及び方法
US8789057B2 (en) 2008-12-03 2014-07-22 Oracle America, Inc. System and method for reducing serialization in transactional memory using gang release of blocked threads
US20100153776A1 (en) 2008-12-12 2010-06-17 Sun Microsystems, Inc. Using safepoints to provide precise exception semantics for a virtual machine
US9274855B2 (en) 2008-12-24 2016-03-01 Intel Corporation Optimization for safe elimination of weak atomicity overhead
US10210018B2 (en) 2008-12-24 2019-02-19 Intel Corporation Optimizing quiescence in a software transactional memory (STM) system
US8914620B2 (en) 2008-12-29 2014-12-16 Oracle America, Inc. Method and system for reducing abort rates in speculative lock elision using contention management mechanisms
US9785462B2 (en) * 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8799582B2 (en) 2008-12-30 2014-08-05 Intel Corporation Extending cache coherency protocols to support locally buffered data
CN101710433A (zh) 2008-12-31 2010-05-19 深圳市江波龙电子有限公司 一种电子支付卡的交易方法及电子支付卡
US9170844B2 (en) 2009-01-02 2015-10-27 International Business Machines Corporation Prioritization for conflict arbitration in transactional memory management
CN101819518B (zh) 2009-02-26 2013-09-11 国际商业机器公司 在事务内存中快速保存上下文的方法和装置
US8266107B2 (en) 2009-03-11 2012-09-11 International Business Machines Corporation Method for mirroring a log file by threshold driven synchronization
US9940138B2 (en) 2009-04-08 2018-04-10 Intel Corporation Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations
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
US8489864B2 (en) 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US8973004B2 (en) 2009-06-26 2015-03-03 Oracle America, Inc. Transactional locking with read-write locks in transactional memory systems
KR101370314B1 (ko) 2009-06-26 2014-03-05 인텔 코포레이션 언바운디드 트랜잭션 메모리 (utm) 시스템의 최적화
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8281185B2 (en) 2009-06-30 2012-10-02 Oracle America, Inc. Advice-based feedback for transactional execution
US8688964B2 (en) 2009-07-20 2014-04-01 Microchip Technology Incorporated Programmable exception processing latency
GB2472620B (en) * 2009-08-12 2016-05-18 Cloudtran Inc Distributed transaction processing
US8392694B2 (en) 2009-09-15 2013-03-05 International Business Machines Corporation System and method for software initiated checkpoint operations
GB2474446A (en) 2009-10-13 2011-04-20 Advanced Risc Mach Ltd Barrier requests to maintain transaction order in an interconnect with multiple paths
US8327188B2 (en) 2009-11-13 2012-12-04 Oracle America, Inc. Hardware transactional memory acceleration through multiple failure recovery
US8516202B2 (en) 2009-11-16 2013-08-20 International Business Machines Corporation Hybrid transactional memory system (HybridTM) and method
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
US8095824B2 (en) 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system
US8290991B2 (en) * 2009-12-15 2012-10-16 Juniper Networks, Inc. Atomic deletion of database data categories
US9092253B2 (en) 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8301849B2 (en) 2009-12-23 2012-10-30 Intel Corporation Transactional memory in out-of-order processors with XABORT having immediate argument
KR101639672B1 (ko) 2010-01-05 2016-07-15 삼성전자주식회사 무한 트랜잭션 메모리 시스템 및 그 동작 방법
US8549468B2 (en) 2010-02-08 2013-10-01 National Tsing Hua University Method, system and computer readable storage device for generating software transaction-level modeling (TLM) model
US8850166B2 (en) 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
US20110208921A1 (en) 2010-02-19 2011-08-25 Pohlack Martin T Inverted default semantics for in-speculative-region memory accesses
US8438568B2 (en) 2010-02-24 2013-05-07 International Business Machines Corporation Speculative thread execution with hardware transactional memory
US8739164B2 (en) * 2010-02-24 2014-05-27 Advanced Micro Devices, Inc. Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof
US8464261B2 (en) 2010-03-31 2013-06-11 Oracle International Corporation System and method for executing a transaction using parallel co-transactions
US8402227B2 (en) 2010-03-31 2013-03-19 Oracle International Corporation System and method for committing results of a software transaction using a hardware transaction
US8631223B2 (en) 2010-05-12 2014-01-14 International Business Machines Corporation Register file supporting transactional processing
US9626187B2 (en) 2010-05-27 2017-04-18 International Business Machines Corporation Transactional memory system supporting unbroken suspended execution
US20110302143A1 (en) 2010-06-02 2011-12-08 Microsoft Corporation Multi-version concurrency with ordered timestamps
US9880848B2 (en) 2010-06-11 2018-01-30 Advanced Micro Devices, Inc. Processor support for hardware transactional memory
US8560816B2 (en) * 2010-06-30 2013-10-15 Oracle International Corporation System and method for performing incremental register checkpointing in transactional memory
US8479053B2 (en) 2010-07-28 2013-07-02 Intel Corporation Processor with last branch record register storing transaction indicator
US8561033B2 (en) 2010-07-30 2013-10-15 International Business Machines Corporation Selective branch-triggered trace generation apparatus and method
US8549504B2 (en) 2010-09-25 2013-10-01 Intel Corporation Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
US9552206B2 (en) 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US9122476B2 (en) 2010-12-07 2015-09-01 Advanced Micro Devices, Inc. Programmable atomic memory using hardware validation agent
US8442962B2 (en) 2010-12-28 2013-05-14 Sap Ag Distributed transaction management using two-phase commit optimization
US8818867B2 (en) 2011-11-14 2014-08-26 At&T Intellectual Property I, L.P. Security token for mobile near field communication transactions
US9442824B2 (en) 2012-03-16 2016-09-13 International Business Machines Corporation Transformation of a program-event-recording event into a run-time instrumentation event
US9158660B2 (en) 2012-03-16 2015-10-13 International Business Machines Corporation Controlling operation of a run-time instrumentation facility
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195744B1 (en) * 1995-10-06 2001-02-27 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscaler processor
CN102144218A (zh) * 2008-07-28 2011-08-03 超威半导体公司 可虚拟化的先进同步设备

Also Published As

Publication number Publication date
US20130339325A1 (en) 2013-12-19
RU2549112C2 (ru) 2015-04-20
CA2874181A1 (en) 2013-12-19
US9740521B2 (en) 2017-08-22
KR101625324B1 (ko) 2016-05-27
MX2014015359A (es) 2015-07-21
HK1207444A1 (zh) 2016-01-29
TW201411490A (zh) 2014-03-16
EP2862082A4 (en) 2015-11-25
EP2862082A1 (en) 2015-04-22
RU2012148581A (ru) 2014-05-20
JP2015523654A (ja) 2015-08-13
CN104335185A (zh) 2015-02-04
IL236247A0 (en) 2015-01-29
CA2874181C (en) 2020-03-24
AU2012382779B2 (en) 2016-09-29
AU2012382779A1 (en) 2014-12-11
SG11201407465TA (en) 2014-12-30
JP6238248B2 (ja) 2017-11-29
US20130339967A1 (en) 2013-12-19
US8682877B2 (en) 2014-03-25
TWI533218B (zh) 2016-05-11
KR20150004839A (ko) 2015-01-13
WO2013186604A1 (en) 2013-12-19
MX348648B (es) 2017-06-21
BR112014031383A2 (pt) 2017-06-27

Similar Documents

Publication Publication Date Title
CN104335185B (zh) 受限事务执行
CN104335184B (zh) 事务执行分支指示
CN104412232B (zh) 事务处理方法、系统、介质
CN104350462B (zh) 事务中止指令
CN104335177B (zh) 有选择地控制事务处理中的指令执行
CN104364778B (zh) 在事务处理中保存/恢复选择的寄存器
CN104335181B (zh) 事务诊断区块
CN104350468B (zh) 非事务储存指令
CN104364772B (zh) 控制一计算环境中的事务执行的方法及系统
CN104380246B (zh) 用于管理计算环境中的中断的方法、系统及介质
CN104335186B (zh) 处理器辅助设施
CN104350474B (zh) 用于控制计算环境中的事务的执行的装置、系统和方法
CN104350463B (zh) 在事务执行中的受限指令
CN103514032B (zh) 用于促进计算环境内的处理的方法和计算机系统
CN104205064B (zh) 将程序事件记录事件向运行时间检测事件变换的系统及方法
CN103513960B (zh) 促进事务重复中止之后的事务完成的方法和计算机系统
CN104335164B (zh) 事务中止处理
CN104335165B (zh) 用于在计算环境中执行机器指令的方法和计算机系统
CN104364771A (zh) 修改来自较小特权状态的运行时间仪表控制
CN108701050A (zh) 事务的优先级
CN104380265B (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
GR01 Patent grant
GR01 Patent grant