CN104364772B - 控制一计算环境中的事务执行的方法及系统 - Google Patents

控制一计算环境中的事务执行的方法及系统 Download PDF

Info

Publication number
CN104364772B
CN104364772B CN201380027244.2A CN201380027244A CN104364772B CN 104364772 B CN104364772 B CN 104364772B CN 201380027244 A CN201380027244 A CN 201380027244A CN 104364772 B CN104364772 B CN 104364772B
Authority
CN
China
Prior art keywords
affairs
instruction
event
per
address
Prior art date
Application number
CN201380027244.2A
Other languages
English (en)
Other versions
CN104364772A (zh
Inventor
D.格雷纳
C.雅各比
T.斯莱格尔
D.L.奥西赛克
Original Assignee
国际商业机器公司
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
Priority to US13/524,903 priority Critical patent/US9317460B2/en
Priority to US13/524,903 priority
Application filed by 国际商业机器公司 filed Critical 国际商业机器公司
Priority to PCT/EP2013/062171 priority patent/WO2013186270A1/en
Publication of CN104364772A publication Critical patent/CN104364772A/zh
Application granted granted Critical
Publication of CN104364772B publication Critical patent/CN104364772B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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

Abstract

在一计算环境中起始一事务,并且基于检测到程序事件记录事件,对于该事务呈现中断。在中断之后,基于检测到另一程序事件记录PER事件,设置一个或多个控制以禁止另一中断的呈现。其后,重新执行该事务,并且忽略在该事务的执行期间检测到的PER事件。

Description

控制一计算环境中的事务执行的方法及系统

技术领域

[0001] -个或多个方面大体上关于多处理计算环境,且尤其关于此类计算环境内的事务 处理。

背景技术

[0002] 多处理器编程中的持久挑战为由多个中央处理单元(CPU)对同一储存位置的更新 的挑战。更新储存位置的许多指令(甚至包括诸如AND的简单逻辑运算)用对该位置的多次 存取来进行该更新。举例而言,首先提取储存位置,且接着储存回已更新结果。

[0003] 为了使多个CPU安全地更新同一储存位置,序列化对该位置的存取。用先前由国际 商业机器公司提供的S/360架构引入的一个指令(TEST AND SET指令)提供储存位置的连锁 更新(interlocked update)。连锁更新意谓:如由其他CPU及输入/输出(I/O)子系统(例如, 通道子系统)所观察的那样,指令的整个储存存取看来像是自动地发生的一样。稍后,由国 际商业机器公司提供的S/370架构引入COMPARE AND SWAP及COMPARE DOUBLE AND SWAP指 令,这些指令提供执行连锁更新的较精密方式且允许通常被称为锁定字组(或旗号)的实 施。最近新增的指令已提供额外连锁更新能力,包括⑶MPARE AND SWAP AND PURGE及 COMPARE AND SWAP AND STORE。然而,所有这些指令提供用于仅单一储存位置的连锁。

[0004] 较复杂的程序技术可需要多个储存位置的连锁更新,诸如,当将一元素新增至一 双向链接清单(doubly-linked list)时。在此类操作中,前向指针及向后指针两者皆看来 像是被同时地更新一样,如由其他CHJ及1/0子系统所观察的那样。为了实现此类多重位置 更新,强制程序使用分离的单一序列化点,诸如,锁定字组。然而,锁定字组可提供比所保证 的序列化层级粗略得多的序列化层级;举例而言,锁定字组可序列化数百万个元素的整个 队列,即使仅两个元素正被更新亦如此。程序可结构化数据以使用较精细粒度级序列化(例 如,锁定点阶层),但这引入额外问题,诸如,在违反该阶层时的潜在锁死情形,及在程序遭 遇错误同时保持一或多个锁定时或在不能获取锁定时的复原问题。

[0005] 除了以上内容以外,亦存在程序可以执行可能引起或可能不引起异常情况的指令 序列的众多情境。若未发生异常情况,则程序继续;然而,若辨识出异常,则程序可采取校正 动作以消除异常情况。作为一实例,Java可在(例如)理论式执行、函数的部分内嵌和/或指 针空值检查的重新定序中利用此类执行。

[0006] 在诸如由国际商业机器公司提供的z/0S及其前身的传统操作系统环境中,程序建 立复原环境以拦截程序可遭遇的任何程序异常情况。若程序未拦截到异常,则操作系统通 常针对操作系统未准备好进行处置的异常而例外地终止程序。建立及利用此类环境是昂贵 且复杂的。

发明内容

[0007] 经由提供一种用于在计算环境中控制事务执行的计算机程序产品而克服先前技 术的缺点且提供优点。该计算机程序产品包括一计算机可读储存介质,该计算机可读储存 介质可由一处理电路读取且储存指令以供该处理电路执行来执行一方法。举例而言,该方 法包括:由一处理器起始计算环境内一事务,该事务有效地延迟将事务储存交付至主存储 器直至一选择的事务完成为止;基于检测到程序事件记录(PER)事件而对于该事件呈现中 断,PER被限定为基于检测到PER事件而呈现中断,该中断使得待执行的下一事务指令的地 址被保存;基于该中断,基于检测到另一PER事件,设置一个或多个控制以禁止呈现另一中 断;然后,重新执行该事务;及在重新执行期间抑制PER事件检测。

[0008] 本文亦描述及主张与一个或多个实施例相关的方法及系统。另外,本文亦描述且 可主张与一个或多个实施例相关的服务。

[0009] 贯穿全文实现额外特征及优点。其他实施例及方面在本文中得以详细地描述且被 看作本发明的部分。

附图说明

[0010] 在本说明书完结时于权利要求中将一个或多个方面特定地指出且清楚地主张为 实例。前述及其他目标、特征及优点自结合附图而进行的以下详细描述变得显而易见,在这 些图中:

[0011]图1描绘计算环境的一实施例;

[0012]图2A描绘事务开始(TBEGIN)指令的一实例;

[0013]图2B描绘图2A的TBEGIN指令的字段的另外细节的一实施例;

[0014]图3A描绘事务开始受限(TBEGINC)指令的一实例;

[0015]图3B描绘图3A的TBEGINC指令的字段的另外细节的一实施例;

[0016]图4描绘事务结束(TEND)指令的一实例;

[0017]图5描绘事务中止(TAB0RT)指令的一实例;

[0018]图6描绘嵌套事务的一实例;

[0019]图7描绘NONTRANSACTIONAL STCREWTSTG)指令的一实例;

[0020]图8描绘EXTRACT TRANSACTION NESTING DEPTH(ETND)指令的一实例;

[0021] 图9描绘事务诊断区块的一实例;

[0022] 图10描绘中止的实例原因,连同关联中止码及条件码;

[0023]图11描绘与执行TBEGINC指令相关联的逻辑的一实施例;

[0024]图12描绘与执行TBEGIN指令相关联的逻辑的一实施例;

[0025]图13描绘与执行TEND指令相关联的逻辑的一实施例;

[0026] 图14描绘与事务中止处理相关联的逻辑的一实施例;

[0027] 图15描绘与在事务环境中处理程序事件记录事件相关联的逻辑的一实施例;

[0028] 图16A至图16B描绘将队列元素插入至队列元素双向链接清单中的实例;

[0029] 图17描绘计算机程序产品的一实施例;

[0030] 图18描绘主机计算机系统的一实施例;

[0031] 图19描绘计算机系统的另外实例;

[0032] 图20描绘包含计算机网络的计算机系统的另一实例;

[0033]图21描绘计算机系统的各种元件的一实施例;

[0034]图22A描绘图21的计算机系统的执行单元的一实施例;

[0035]图22B描绘图21的计算机系统的分支单元的一实施例;

[0036]图22C描绘图21的计算机系统的载入/储存单元的一实施例;及

[0037]图23描绘模拟主机计算机系统的一实施例。

具体实施方式

[0038]根据一个方面,提供一种事务执行(TX)设施。此设施提供用于指令的事务处理,且 在一个或多个实施例中提供如下文所描述的不同执行模式,以及事务处理的嵌套层级。 [0039]事务执行设施引入被称作事务执行(TX)模式的CPU状态。在CPU重设之后,CPU并不 处于TX模式。CPU藉由TRANSACTION BEGIN指令进入TX模式。CPU藉由(a)最外部TRANSACTION END指令(关于内部指令及外部指令的更多细节如下)或(b)正被中止的事务而离开TX模式。 虽然处于TX模式,但由CPU进行的储存存取看来像是区块并行的一样,如由其他CPU及I/O子 系统所观察的那样。储存存取(a)在最外部事务在无中止的情况下结束时被交付至存储器 (亦即,例如,在CPU本地的高速缓存或缓冲器中进行的更新经传播及储存于真实存储器中 且可为其他CHJ所见),或(b)在事务中止时被舍弃。

[0040] 事务可为嵌套。亦即,在CPU处于TX模式时,CPU可执行另一TRANSACTION BEGIN指 令。使CPU进入TX模式的指令被称作最外部TRANSACTION BEGIN;相似地,程序据称处于最外 部事务。TRANSACTION BEGIN的后续执行被称作内部指令;且程序正执行内部事务。模型提 供最小嵌套深度及模型相依最大嵌套深度。EXTRACT TRANSACTION NESTING DEPTH指令传 回当前嵌套深度值,且在一另外实施例中可传回最大嵌套深度值。此技术使用被称作"扁平 化嵌套(flattened nesting)"的模型,其中任何嵌套深度处的中止条件造成事务的所有层 级中止,且控制传回至在最外部TRANSACTION BEGIN之后的指令。

[0041] 在事务的处理期间,由一个CPU进行的事务存取据称与(a)由另一CPU进行的事务 存取或非事务存取冲突,或与(b)由1/0子系统进行的非事务存取冲突(若两种存取是针对 同一高速缓存行内的任何位置,且这些存取中的一个或两个为储存)。换言之,为了使事务 执行有生产力,CPU不应被观察到进行事务存取直至事务存取交付为止。此编程模型在某些 环境中可以高度地有效;例如,数百万个元素的双向链接清单中的两个点的更新。然而,若 针对正被事务地存取的储存位置存在许多争用,则该编程模型可能较不有效。

[0042] 在一个事务执行模型(在本文中被称作非受限事务)中,当事务中止时,程序可尝 试重新驱动事务以希望不再出现中止情况,或程序可"后退"至等效非事务路径。在另一事 务执行模型(在本文中被称作受限事务)中,已中止事务由CPU自动地重新驱动;在不存在 限制违反时,受限事务确保最终完成。

[0043] 当起始事务时,程序可指定各种控制,诸如:(a)在事务中止时哪些一般寄存器恢 复为其原始内容;(b)是否允许事务修改浮点寄存器上下文,包括(例如)浮点寄存器及浮点 控制寄存器;(c)是否允许事务修改存取寄存器(AR);及(d)是否将封锁某些程序异常情况 免于造成中断。若非受限事务中止,则可提供各种诊断信息。举例而言,起始非受限事务的 最外部TBEGIN指令可指明程序指定事务诊断区块(TDB)。另外,若事务分别归因于程序中断 或造成解译性执行结束的情况而中止,则亦可使用CPU的前置区域中或由主机的状态描述 指明的TDB。

[0044] 上文指示各种类型的寄存器。本文进一步详细地解释这些寄存器。一般寄存器可 用作一般算术及逻辑运算中的累加器。在一个实施例中,每一寄存器含有64个位的位置,且 存在16个一般寄存器。这些一般寄存器由数字0至15识别,且由一指令中的四位R字段指明。 一些指令规定藉由具有若干R字段来寻址多个一般寄存器。对于一些指令,特定一般寄存器 的使用被暗示,而非由该指令的R字段明确地指明。

[0045]除了作为一般算术及逻辑运算中的累加器的使用以外,16个一般寄存器中的15个 寄存器亦在地址产生中用作基底地址及索引寄存器。在此等状况下,这些寄存器由一指令 中的四位B字段或X字段指明。该B或X字段中的值0指定出将不应用基底或索引,且因此,一 般寄存器0将不被指明为含有基底地址或索引。

[0046]浮点指令使用浮点寄存器集合。在一实施例中,CPU具有16个浮点寄存器。这些浮 点寄存器由数字〇至15识别,且由浮点指令中的四位R字段指明。每一浮点寄存器为64个位 长,且可含有短(32位)浮点操作数或长(64位)浮点操作数。

[0047]浮点控制(FPC)寄存器为含有屏敝位、标志位、数据异常码及舍位模式位的32位寄 存器,且在浮点运算的处理期间被使用。

[0048]另外,在一个实施例中,CPU具有16个控制寄存器,每一控制寄存器具有64个位的 位置。这些寄存器中的位的位置指派至系统中的特定设施,诸如,程序事件记录(PER)(下文 所论述),且用以指定出可进行操作,或用以供给由该设施需要的特殊信息。在一个实施例 中,对于事务设施,使用CR0 (位8及9)及CR2 (位61至63),如下文所描述。

[0049] 举例而言,CPU具有被编号为0至15的16个存取寄存器。一个存取寄存器由含有地 址空间控制元素(ASCE)的间接规格的32个位的位置组成。地址空间控制元素为由动态地址 转译(DAT)机制使用以将参考转译至对应地址空间的参数。当CPU处于被称作存取寄存器模 式的模式(由程序状态字组(PSW)中的位控制)时,用以指定针对储存操作数参考的逻辑地 址的指令B字段指明存取寄存器,且由存取寄存器指定的地址空间控制元素由DAT用于正被 进行的参考。对于一些指令,使用R字段而非B字段。提供指令以用于载入及储存存取寄存器 的内容且用于将一个存取寄存器的内容移动至另一存取寄存器。

[0050] 存取寄存器1至15中每一个可指明任何地址空间。存取寄存器0指明主要指令空 间。当存取寄存器1至15中的一个用以指明地址空间时,CPU判定藉由转译存取寄存器的内 容而指明哪一地址空间。当存取寄存器0用以指明地址空间时,CPU将该存取寄存器视为指 明主要指令空间,且CPU并不检验该存取寄存器的实际内容。因此,16个存取寄存器可在任 一时间指明主要指令空间及15个其他空间的最大值。

[0051 ]在一个实施例中,存在多个类型的地址空间。一个地址空间为整数(虚拟地址)的 连续序列,连同允许每一数字与存储器中的字节位置相关联的特定变换参数。该序列以〇开 始且自左侧至右侧进行。

[0052] 举例而言,在z/Architecture中,当虚拟地址是由CPU使用以存取主存储器(又名, 主存储器)时,虚拟地址首先凭借动态地址转译(DAT)而转换至真实地址,且接着凭借加前 缀(prefixing)而转换至绝对地址。DAT可使用表的一个至五个层级(页、区段、区第三、区第 二及区第一)作为变换参数。用于特定地址空间的最高层级表的指明(原点及长度)被称作 地址空间控制元素,且该指明被发现供DAT用于控制寄存器中或如由存取寄存器所指定。或 者,用于地址空间的地址空间控制元素可为真实空间指明,其指示出DAT用以简单地藉由将 虚拟地址视为真实地址且不使用任何表来转译虚拟地址。

[0053] DAT在不同时间使用不同控制寄存器中或由存取寄存器指定的地址空间控制元 素。选择由当前PSW中指定的转译模式判定。四个转译模式是可用的:主要空间模式、次要空 间模式、存取寄存器模式及本籍空间模式(home space mode)。取决于转译模式,不同地址 空间是可寻址的。

[0054]在CPU处于主要空间模式或次要空间模式时的任何时刻,CPU可转译属于两个地址 空间(主要地址空间及第二地址空间)的虚拟地址。在CPU处于存取寄存器模式时的任何时 刻,CPU可转译高达16个地址空间(主要地址空间及高达15个AR指定地址空间)的虚拟地址。 在CPU处于本籍空间模式时的任何时刻,CPU可转译本籍地址空间的虚拟地址。

[0055] 主要地址空间因而被识别,这是因为其由主要虚拟地址组成,这些主要虚拟地址 凭借主要地址空间控制元素(ASCE)而转译。相似地,次要地址空间由凭借次要ASCE转译的 次要虚拟地址组成;AR指定地址空间由凭借AR指定ASCE转译的AR指定虚拟地址组成;且本 籍地址空间由凭借本籍ASCE转译的本籍虚拟地址组成。主要ASCE及次要ASCE分别处于控制 寄存器1及7中。AR指定ASCE处于使用控制寄存器2、5及8经由被称作存取寄存器转译(ART) 的处理而定位的ASN第二表项中。本籍ASCE处于控制寄存器13中。

[0056] 参看图1来描述用以并入及使用本文所描述的事务设施的一个或多个方面的计算 环境的一个实施例。

[0057] 参看图1,在一实例中,计算环境100基于由纽约州阿蒙克市的国际商业机器 (1£^41<)公司提供的2/^1'(:11;^6(31:1^6。2010年8月第九版的名为"2/^1'(311;^6(31:1^6-Principles of Operation" 的 IBM公开案(公开案第SA22-7932-08号)中描述z/ Architecture,该公开案的全文据此以引用方式并入本文中。

[0058] Z/ARCHITECTURE、IBM以及Z/0S及Z/VM(下文所参考)为纽约州阿蒙克市的国际商 业机器公司的注册商标。本文所使用的其他名称可为国际商业机器公司或其他公司的注册 商标、商标或产品名称。

[0059] 作为一实例,计算环境100包括经由一个或多个控制单元108耦接至一个或多个输 入/输出(1/0)器件106的中央处理器复合体(central processor complex,CPC) 102。举例 而言,中央处理器复合体102包括一个或多个中央处理器110、一个或多个分割区112(例如, 逻辑分割区(LP))、逻辑分割区超管理器(hyp erviS〇r)114及输入/输出子系统115,其中每 一者在下文予以描述。

[0060] 中央处理器110为分配给逻辑分割区的实体处理器资源。详言之,每一逻辑分割区 112具有一个或多个逻辑处理器,其中每一逻辑处理器表示分配给该分割区的实体处理器 110的全部或份额。特定分割区112的逻辑处理器可专用于该分割区,使得底层处理器资源 110针对那个分割区而保留;或这些逻辑处理器可与另一分割区共用,使得该底层处理器资 源潜在地可用于另一分割区。

[0061] 逻辑分割区充当分离系统且具有一个或多个应用程序,且视情况在其中具有驻 留操作系统,该驻留操作系统针对每一逻辑分割区可不同。在一实施例中,操作系统为由纽 约州阿蒙克市的国际商业机器公司提供的Z/0S操作系统、z/VM操作系统、z/Linux操作系统 或TPF操作系统。逻辑分割区112由逻辑分割区超管理器114管理,逻辑分割区超管理器114 由处理器110上运行的固件实施。如本文所使用,固件包括(例如)处理器的微码 (microcode)和/或毫码(millicode)。举例而言,固件包括在较高层级机器码的实施中使用 的硬件层级指令和/或数据结构。在一实施例中,举例而言,固件包括通常作为包括受信任 软件的微码或特定于底层硬件的微码进行递送且控制对系统硬件的操作系统存取的专属 码。

[0062] 逻辑分割区及逻辑分割区超管理器各自包含驻留于与中央处理器相关联的中央 存储器的各别分割区中的一个或多个程序。逻辑分割区超管理器114的一个实例为由纽约 州阿蒙克市的国际商业机器公司提供的Processor Resource/System Manager(PR/SM) 〇

[0063] 输入/输出子系统115在输入/输出器件106与主存储器(又名,主存储器)之间引导 信息流动。输入/输出子系统耦接至中央处理复合体,此在于:输入/输出子系统可为中央处 理器复合体的部分或与中央处理器复合体分离。I/O子系统使中央处理器减轻直接地与输 入/输出器件通信的任务的负担,且准许数据处理与输入/输出处理并行地进行。为了提供 通信,I/O子系统使用I/O通信适配器。存在各种类型的通信适配器,包括(例如)通道、I/O适 配器、PCI卡、乙太网卡、小型计算机储存接口(SCSI)卡等等。在本文所描述的特定实例中, I/O通信适配器为通道,且因此,I/O子系统在本文中被称作通道子系统。然而,此情形仅为 一实例。可使用其他类型的I/O子系统。

[0064] I/O子系统使用一个或多个输入/输出路径作为通信链路来管理至或自输入/输出 器件106的信息流动。在此特定实例中,此等路径被称作通道路径,这是因为通信适配器为 通道。

[0065] 上文所描述的计算环境仅为可使用的计算环境的一个实例。可使用包括但不限于 非分割环境、其他分割环境和/或模拟环境的其他环境;实施例并不限于任一环境。

[0066] 根据一个或多个方面,事务执行设施为CPU增强,其提供可用来使CPU执行指令序 列(被称作事务)的方式,这些指令可存取多个储存位置,包括那些位置的更新。如由其他 CPU及I/O子系统所观察,事务是(a)整体上作为单一不可部分完成操作而完成,或(b)中 止,从而潜在地不留下事务曾经执行的迹象(惟本文所描述的某些条件除外)。因此,成功完 成的事务可在没有在传统多处理模型中需要的任何特殊锁定的情况下更新众多储存位置。

[0067] 举例而言,事务执行设施包括一个或多个控制、一个或多个指令、包括受限执行及 非受限执行的事务处理及中止处理,其中每一个在下文予以进一步描述。

[0068] 在一个实施例中,使用以下各者以控制事务执行设施:三个特殊用途控制,包括事 务中止程序状态字组(PSW)、事务诊断区块(TDB)地址及事务嵌套深度;五个控制寄存器位; 及六个一般指令,包括TRANSACTION BEGIN(受限及非受限)、TRANSACTI0N END、EXTRACT TRANSACTION NESTING DEPTH、TRANSACTION ABORT及NONTRANSACTIONAL STORE。当该设施 被安装时,该设施安装于(例如)配置中的所有CPU中。一个设施指示(在一实施中为位73)在 为1时指示事务执行设施被安装。

[0069] 当事务执行设施被安装时,该配置提供非受限事务执行设施且视情况提供受限事 务执行设施,其中每一设施在下文予以描述。作为实例,当设施指示50及73皆为1时,受限事 务执行设施被安装。两个设施指示皆在指定位置处储存于存储器中。

[0070] 如本文所使用,指令名称TRANSACTION BEGIN指代具有助记符TBEGIN(用于非受限 事务的事务开始)及TBEGINC(用于受限事务的事务开始)的指令。关于特定指令的论述由指 令名称继之以圆括号或括号中的助记符指示,或简单地由助记符指示。

[0071] 图2A至图2B中描绘TRANSACTION BEGIN(TBEGIN)指令的格式的一实施例。作为一 实例,TBEGIN指令200包括:操作码字段202,其包括指定事务开始非受限操作的操作码;基 本字段(BO204;位移字段(DJ206;及立即字段(12)208。当出字段为非零时,将由出204指定 的一般寄存器的内容添加至DU06以获得第一操作数地址。

[0072]当出字段为非零时,以下内容适用:

[0073] •当事务嵌套深度最初为0时,第一操作数地址指明被称作TBEGIN指定的TDB(下 文进一步所描述)的256字节事务诊断区块的位置,若事务中止,则各种诊断信息可储存至 TBEGIN指定的TDB中。当CPU处于主要空间模式或存取寄存器模式时,第一操作数地址指明 主要地址空间中的位置。当CPU处于次要空间模式或本籍空间模式时,第一操作数地址分 别指明次要地址空间或本籍地址空间中的位置。当DAT关断时,事务诊断区块(TDB)地址 (TDBA)指明真实存储器中的位置。

[0074]判定对第一操作数的储存可存取性。若为可存取,则操作数的逻辑地址置放至事 务诊断区块地址(TDBA)中,且TDBA有效。

[0075] •当CPU已经处于非受限事务执行模式时,TDBA未被修改,且不可预测的是第一 操作数是否针对可存取性而被测试。

[0076]当仏字段为0时,针对第一操作数未侦测到存取异常,且对于最外部TBEGIN指令, IDBA无效。

[0077]在一实例中,12字段的位被定义如下:

[0078] 一般寄存器储存屏敝(GRSM)210(图2B):I2字段的位0至7含有一般寄存器储存屏 敝(GRSMhGRSM的每一位表示一般寄存器的偶奇对,其中位0表示寄存器0及1,位1表示寄存 器2及3,等等。当最外部TBEGIN指令的GRSM中的位为0时,不储存对应寄存器对。当最外部 TBEGIN指令的GRSM中的位为1时,将对应寄存器对储存于不能由程序直接地存取的依赖于 模型的位置中。

[0079]若事务中止,则当执行最外部TBEGIN指令时,将已储存寄存器对恢复为其内容。当 事务中止时,不恢复所有其他(未储存)一般寄存器的内容。

[0080] 在惟最外部TBEGIN除外的所有TBEGIN上忽略一般寄存器储存屏敝。

[0081] 允许AR修改(A)212: A控制(12字段的位12)控制是否允许事务修改存取寄存器。有 效允许AR修改控制为针对当前嵌套层级及针对所有外部层级的TBEGIN指令中的A控制的逻 辑 AND。

[0082] 若有效A控制为0,则在尝试修改任何存取寄存器时事务将用中止码11 (受限定指 令)进行中止。若有效A控制为1,则在存取寄存器被修改(不存在任何其他中止条件)时事务 将不中止。

[0083] 允许浮点运算(F)214:F控制(12字段的位13)控制是否允许事务执行指定浮点指 令。有效允许浮点运算控制为针对当前嵌套层级及针对所有外部层级的TBEGIN指令中的F 控制的逻辑AND。

[0084] 若有效F控制为0,则(a)在尝试执行浮点指令时事务将用中止码11(受限定指令) 进行中止,且(b)浮点控制寄存器(FPCR)的字节2中的数据异常码(DXC)将不由任何数据异 常程序异常情况设定。若有效F控制为1,则(a)在尝试执行浮点指令(不存在任何其他中止 条件)时事务将不中止,且(b)FPCR中的DXC可由数据异常程序异常情况设定。

[0085] 程序中断筛选控制(PIFC)216:I2字段的位14至15为程序中断筛选控制(PIFC)。 PIFC控制在CPU处于事务执行模式时发生的某些类别的程序异常情况(例如,寻址异常、数 据异常、操作异常、保护异常等等)是否引起中断。

[0086]有效PIFC为针对当前嵌套层级及针对所有外部层级的TBEGIN指令中的PIFC的最 高值。当有效PIFC为0时,所有程序异常情况引起中断。当有效PIFC为1时,具有事务执行类 另IJ1及2的程序异常情况引起中断。(取决于异常的严重性,每一程序异常情况被指派至少一 事务执行类别。严重性基于在事务执行的重复执行期间复原的可能性,及操作系统是否需 要查看中断。)当有效PIFC为2时,具有事务执行类别1的程序异常情况引起中断。保留为3的 PIFC〇

[0087] 12字段的位8至11(指令的位40至43)被保留且应含有0;否则,程序在未来可不相 容地操作。

[0088]参看图3A至图3B来描述事务开始受限(TBEGINC)指令的格式的一实施例。在一实 例中,TBEGINC 300包括:操作码字段302,其包括指定事务开始受限操作的操作码;基本字 段(BO304;位移字段(DJ306;及立即字段(1 2)308。将由也304指定的一般寄存器的内容添 加至Di 306以获得第一操作数地址。然而,在用事务开始受限指令的情况下,第一操作数地 址不用以存取存储器。取而代之,指令的也字段包括0;否则,辨识出规格异常。

[0089]在一实施例中,12字段包括各种控制,这些控制的实例在图3B中予以描绘。

[0090]在一实例中,12字段的位被定义如下:

[0091] -般寄存器储存屏敝(GRSM)310:I2字段的位0至7含有一般寄存器储存屏敝 (GRSMhGRSM的每一位表示一般寄存器的偶奇对,其中位0表示寄存器0及1,位1表示寄存器 2及3,等等。当GRSM中的位为0时,不储存对应寄存器对。当GRSM中的位为1时,将对应寄存器 对储存于不能由程序直接地存取的依赖于模型的位置中。

[0092] 若事务中止,则当执行最外部TRANSACTION BEGIN指令时,将已储存寄存器对恢复 为其内容。当受限事务中止时,不恢复所有其他(未储存)一般寄存器的内容。

[0093]当TBEGINC用以在非受限事务执行模式下继续执行时,忽略一般寄存器储存屏敝。

[0094] 允许AR修改(A)312: A控制(12字段的位12)控制是否允许事务修改存取寄存器。有 效允许AR修改控制为针对当前嵌套层级及针对任何外部TBEGIN或TBEGINC指令的TBEGINC 指令的A控制中的逻辑AND。

[0095] 若有效A控制为0,则在尝试修改任何存取寄存器时事务将用中止码11 (受限定指 令)进行中止。若有效A控制为1,则在存取寄存器被修改(不存在任何其他中止条件)时事务 将不中止。

[0096] 12字段的位8至11及13至15(指令的位40至43及45至47)被保留且应含有0。

[0097] 事务开始指令的结束由TRANSACTION END(TEND)指令指定,该TRANSACTION END (TEND)指令的格式在图4中予以描绘。作为一实例,TEND指令400包括操作码字段402,操作 码字段402包括指定事务结束操作的操作码。

[0098] 关于事务执行设施而使用多个术语,且因此,仅出于方便起见,下文以按字母排序 次序提供术语清单。在一实施例中,这些术语具有以下定义:

[0099] 中止:当事务在引起事务嵌套深度为0的TRANSACTION END指令之前结束时,事务 中止。在一实施例中,当事务中止时,发生以下情形:

[0100] •由事务的任何及所有层级进行的事务储存存取被舍弃(亦即,未被交付)。

[0101] •由事务的任何及所有层级进行的非事务储存存取被交付。

[0102] •由最外部TRANSACTION BEGIN指令的一般寄存器储存屏敝(GRSM)指明的寄存 器在事务执行之前恢复为其内容(亦即,恢复为其在执行最外部TRANSACTION BEGIN指令时 的内容)。未由最外部TRANSACTION BEGIN指令的一般寄存器储存屏敝指明的一般寄存器未 被恢复。

[0103] •存取寄存器、浮点寄存器及浮点控制寄存器未被恢复。当事务中止时,保持在 事务执行期间对这些寄存器进行的任何改变。

[0104] 事务可归因于多种原因而中止,这些原因包括受限定指令的已尝试执行、受限定 资源的已尝试修改、事务冲突、超过各种CHJ资源、任何解译性执行拦截条件、任何中断、 TRANSACTION ABORT指令及其他原因。事务中止码提供事务为何可中止的特定原因。

[0105] 参看图5来描述TRANSACTION ABORT(TABORT)指令的格式的一实例。作为一实例, TAB0RT指令500包括:操作码字段502,其包括指定事务中止操作的操作码;基本字段(B 2) 504;及位移字段(02)506。当出字段为非零时,将由B2 504指定的一般寄存器的内容添加至 D2 506以获得第二操作数地址;否则,第二操作数地址仅由02字段形成,且忽略出字段。第二 操作数地址不用以寻址数据;取而代之,该地址形成在中止处理期间置放于事务诊断区块 中的事务中止码。用于第二操作数地址的地址计算遵循地址算术规则:在24位寻址模式下, 将位0至29设定为0;在31位寻址模式下,将位0至32设定为0。

[0106] 交付:在最外部TRANSACTION END指令完成时,CPU交付由事务进行的储存存取(亦 即,最外部事务及任何嵌套层级),使得这些储存存取可为其他CHJ及1/0子系统所见。如由 其他CPU且由1/0子系统所观察,当发生交付时,由事务的所有嵌套层级进行的所有提取及 储存存取看来像是作为单一并行操作而发生。

[0107] -般寄存器、存取寄存器、浮点寄存器及浮点控制寄存器的内容未藉由交付程序 修改。当交付事务的储存时,保持在事务执行期间对这些寄存器进行的任何改变。

[0108] 冲突:由一个CPU进行的事务存取与(a)由另一CPU进行的事务存取或非事务存取 冲突,或与(b)由1/0子系统进行的非事务存取冲突(若两种存取针对同一高速缓存行内的 任何位置,且这些存取中的一个或多个为储存)。

[0109] 冲突可藉由CPU对指令的理论式执行而侦测,即使冲突不可以概念序列被侦测亦 如此。

[0110] 受限事务:受限事务为在受限事务执行模式下执行且经受以下限制的事务:

[0111] •-般指令的子集可用。

[0112] •可执行有限数目个指令。

[0113] •可存取有限数目个储存操作数位置。

[0114] •事务限于单一嵌套层级。

[0115] 在不存在重复中断或与其他CPU或1/0子系统的冲突时,受限事务最终完成,因此 无需中止处理例程。下文详细地描述受限事务。

[0116] 当在CPU已经处于非受限事务执行模式时执行TRANSACTION BEGIN受限(TBEGINC) 指令时,执行作为嵌套非受限事务而继续。

[0117] 受限事务执行模式:当事务嵌套深度为0且事务由TBEGINC指令起始时,CPU进入受 限事务执行模式。在CHJ处于受限事务执行模式时,事务嵌套深度为1。

[0118] 嵌套事务:当在CPU处于非受限事务执行模式时发出TRANSACTION BEGIN指令时, 事务为嵌套。

[0119] 事务执行设施使用被称作扁平化嵌套的模型。在扁平化嵌套模式下,由内部事务 进行的储存不能由其他CPU及I/O子系统观察直至最外部事务交付其储存为止。相似地,若 事务中止,则所有嵌套事务中止,且舍弃所有嵌套事务的所有事务储存。

[0120]图6中描绘嵌套事务的一实例。如图所示,第一TBEGIN 600启动最外部事务601, TBEGIN 602启动第一嵌套事务,且TBEGIN 604启动第二嵌套事务。在此实例中,TBEGIN 604 及TEND 606定义最内部事务608。当TEND 610执行时,针对最外部事务及所有内部事务交付 (612)事务储存。

[0121] 非受限事务:非受限事务为在非受限事务执行模式下执行的事务。尽管非受限事 务并不以如同受限事务的方式受到限制,但非受限事务仍可归因于多种原因而中止。

[0122] 非受限事务执行模式:当事务由TBEGIN指令起始时,CHJ进入非受限事务执行模 式。在CPU处于非受限事务执行模式时,事务嵌套深度可自1至最大事务嵌套深度而变化。

[0123] 非事务存取:非事务存取为由CPU在不处于事务执行模式时进行的储存操作数存 取(亦即,在事务外的传统储存存取)。另外,由I/O子系统进行的存取为非事务存取。另外, NONTRANSACTIONAL STORE指令可用以在CPU处于非受限事务执行模式时造成非事务储存存 取。

[0124] 参看图7来描述NONTRANSACTIONAL STORE指令的格式的一实施例。作为一实例, NONTRANSACTIONAL STORE指令700包括:复数个操作码字段702a、702b,其指定指明非事务 储存操作的操作码;寄存器字段(Ri) 704,其指定寄存器,该寄存器的内容被称作第一操作 数;索引字段(X2)706;基本字段(B2)708;第一位移字段(DL 2)710;及第二位移字段(DH2) 712。将由X2字段及出字段指明的一般寄存器的内容添加至DH 2字段及DL2字段的内容的串连 的内容以形成第二操作数地址。当X2字段或出字段中任一个或两个为0时,对应寄存器不参 与该添加。

[0125] 使64位第一操作数在第二操作数位置处非事务地置于不变。

[0126] 由DH2字段及DL2字段的串连形成的位移被视为20位带正负号二进位整数。

[0127] 第二操作数用以在双字组边界上对准;否则,辨识出规格异常且抑制操作。

[0128] 外部/最外部事务:具有较低编号事务嵌套深度的事务为外部事务。具有为1的事 务嵌套深度值的事务为最外部事务。

[0129] 最外部TRANSACTION BEGIN指令为在事务嵌套深度最初为0时执行的指令。最外部 TRANSACTION END指令为使事务嵌套深度自1转变至0的指令。在此实施例中,受限事务为最 外部事务。

[0130] 程序中断筛选:当事务归因于某些程序异常情况而中止时,程序可视情况防止发 生中断。此技术被称作程序中断筛选。程序中断筛选经受中断的事务类别、来自 TRANSACTION BEGIN指令的有效程序中断筛选控制及控制寄存器0中的事务执行程序中断 筛选覆与。

[0131] 事务:在CPU处于事务执行模式时,事务包括所进行的储存操作数存取及所变更的 选择的一般寄存器。对于非受限事务,储存操作数存取可包括事务存取及非事务存取两者。 对于受限事务,储存操作数存取限于事务存取。如由其他CPU及1/0子系统所观察,由CPU在 处于事务执行模式时进行的所有储存操作数存取看来像是作为单一并行操作而发生。若事 务中止,则舍弃事务储存存取,且使由最外部TRANSACTION BEGIN指令的一般寄存器储存屏 敝指明的任何寄存器恢复为其在事务执行之前的内容。

[0132] 事务存取:事务存取为在CHJ处于事务执行模式时进行的储存操作数存取,惟由 NONTRANSACTIONAL STORE指令进行的存取除外。

[0133] 事务执行模式:术语事务执行模式描述非受限事务执行模式及受限事务执行模式 两者的共同操作。因此,当描述该操作时,术语非受限及受限用以限定事务执行模式。

[0134] 当事务嵌套深度为0时,CPU不处于事务执行模式(亦被称作非事务执行模式)。

[0135] 如由CPU所观察,在事务执行模式下进行的提取及储存并非不同于在不处于事务 执行模式时进行的提取及储存。

[0136] 在z/Architecture的一实施例中,事务执行设施在控制寄存器0的位8至9、控制寄 存器2的位61至63、事务嵌套深度、事务诊断区块地址及事务中止程序状态字组(PSW)的控 制下。

[0137] 在初始CPU重设之后,将控制寄存器0的位的位置8至9、控制寄存器2的位的位置 62至63及事务嵌套深度的内容设定为0。当事务执行控制(控制寄存器0的位8)为0时,不能 将CPU置于事务执行模式。

[0138] 下文描述关于各种控制的另外细节。

[0139] 如所指示,事务执行设施由控制寄存器0中的两个位及控制寄存器2中的三个位控 制。举例而目:

[0140] 控制寄存器0位:在一实施例中,位指派如下:

[0141 ]事务执行控制(TXC):控制寄存器0的位8为事务执行控制。此位提供可用来使控制 程序(例如,操作系统)指示事务执行设施是否可由该程序使用的机制。位8将为1以成功地 进入事务执行模式。

[0142] 当控制寄存器0的位8为0时,EXTRACT TRANSACTION NESTING DEPTH、TRANSACTION BEGIN及TRANSACTION END指令的已尝试执行引起特殊操作执行。

[0143] 参看图8来描述EXTRACT TRANSACTION NESTING DEPTH(ETND)指令的格式的一实 施例。作为一实例,EXTRACT TRANSACTION NESTING DEPTH指令800包括:操作码字段802,其 指定指示撷取事务嵌套深度操作的操作码;及寄存器字段R: 804,其指明一般寄存器。

[0144] 将当前事务嵌套深度置于一般寄存器心的位48至63中。该寄存器的位0至31保持 不变,且将该寄存器的位32至47设定为0。

[0145] 在一另外实施例中,亦将最大事务嵌套深度置于一般寄存器心中,诸如,位16至31 中。

[0146] 事务执行程序中断筛选覆写(PIF0):控制寄存器0的位9为事务执行程序中断筛选 覆写。此位提供可用来使控制程序确保在CPU处于事务执行模式时发生的任何程序异常情 况引起中断而不管由TRANSACTION BEGIN指令指定或暗示的有效程序中断筛选控制的机 制。

[0147]控制寄存器2位:在一实施例中,指派如下:

[0148]事务诊断范畴(TDS):控制寄存器2的位61控制该寄存器的位62至63中的事务诊断 控制(TDC)的适用性,如下:

[0149] TDS

[0150]值含义

[0151] 〇 TDC适用而不管CPU处于问题状态或监督状态。

[0152] 1 仅当CPU处于问题状态时TDC才适用。当CPU处于监督状态时,处理如同TDC# 有〇-样。

[0153] 事务诊断控制(TDC):控制寄存器2的位62至63为可用以使事务出于诊断目的而随 机地中止的2位无正负号整数。在一实例中,TDC的编码如下:

[0154] TDC

[0155]值含义

[0156] 〇 正常操作;事务并不由于TDC而中止。

[0157] 1 在随机指令处但在最外部TRANSACTION END指令的执行之前中止每一事务。

[0158] 2 在随机指令处中止随机事务。

[0159] 3 保留

[0160] 当事务归因于非零TDC而中止时,则可发生以下情形中任一者:

[0161] •将中止码设定为码7至11、13至16或255中任一个,其中该码的值由CPU随机地 选择;将条件码设定成对应于中止码。下文进一步描述中止码。

[0162] •对于非受限事务,将条件码设定为1。在此状况下,中止码不适用。

[0163] 这是依赖于是否实施TDC值1的模型。若未实施,则为1的值起作用就如同指定2- 样。

[0164] 对于受限事务,处理为1的TDC值就如同指定为2的TDC值一样。

[0165] 若指定为3的IDC值,则结果是不可预测的。

[0166] 事务诊断区块地址(TDBA)

[0167] 当最外部TRANSACTION BEGIN(TBEGIN)指令的也字段为非零时,自该指令的第一 操作数地址设定有效事务诊断区块地址(TDBA)。当CPU处于主要空间模式或存取寄存器模 式时,TDBA指明主要地址空间中的位置。当CPU处于次要空间模式或本籍空间模式时,TDBA 分别指明次要地址空间或本籍地址空间中的位置。当DAT(动态地址转译)关断时,TDBA指明 真实存储器中的位置。

[0168] 若事务随后中止,则TDBA由CHJ使用以定位事务诊断区块(被称作TBEGIN指定的 TDBhTDBA的最右侧三个位为0,此意谓TBEGIN指定的TDB处于双字组边界上。

[0169] 当最外部TRANSACTION BEGIN(TBEGIN)指令的也字段为0时,事务诊断区块地址无 效,且若事务随后中止,则不储存TBEGIN指定的TDB。

[0170] 事务中止 PSW(TAPSW)

[0171] 在嵌套深度最初为0时TRANSACTION BEGIN(TBEGIN)指令的执行期间,将事务中止 PSW设定为当前PSW的内容;且事务中止PSW的指令地址指明下一循序指令(亦即,在最外部 TBEGIN之后的指令)。在嵌套深度最初为0时TRANSACTION BEGIN受限(TBEGINC)指令的执行 期间,将事务中止PSW设定为当前PSW的内容,惟事务中止PSW的指令地址指明TBEGINC指令 (而非在TBEGINC之后的下一循序指令)除外。

[0172] 当事务中止时,用指示中止情况的严重性的码来取代事务中止PSW中的条件码。随 后,若事务归因于不引起中断的原因而中止,则自事务中止PSW载入PSW;若事务归因于引起 中断的原因而中止,则将事务中止PSW储存为中断旧PSW。

[0173] 在任何内部TRANSACTION BEGIN指令的执行期间不变更事务中止PSW。

[0174] 事务嵌套深度(TND)

[0175] 举例而言,事务嵌套深度为每当用条件码0来完成TRANSACTION BEGIN指令时累加 且每当完成TRANSACTION END指令时递减的16位无正负号值。当事务中止时或由CPU重设 时,将事务嵌套深度重设至〇。

[0176] 在一实施例中,实施为为15之最大TND。

[0177] 在一实施中,当CPU处于受限事务执行模式时,事务嵌套深度为1。另外,尽管最大 TND可被表示为4位值,但TND经定义为16位值以促进其在事务诊断区块中的检测。

[0178] 事务诊断区块(TDB)

[0179] 当事务中止时,各种状态信息可储存于事务诊断区块(TDB)中,如下:

[0180] 1.TBEGIN指定的TDB:对于非受限事务,当最外部TBEGIN指令的也字段为非零时, 该指令的第一操作数地址指明TBEGIN指定的TDB。此地址为可由应用程序的中止处理例程 检验的应用程序指定位置。

[0181] 2.程序中断(PI)TDB:若非受限事务归因于非筛选程序异常情况而中止时,或若受 限事务归因于任何程序异常情况(亦即,引起正被辨识的程序中断的任何情况)而中止时, 将PI-TDB储存至前置区域中的位置中。此情形可用于使操作系统在其可提供的任何诊断报 告中进行检测及登出。

[0182] 3.拦截TDB:若事务归因于引起拦截的任何程序异常情况而中止(亦即,该情况造 成解译性执行结束且造成控制传回至主机程序),则TDB储存至用于访客操作系统的状态 描述区块中指定的位置中。

[0183] 在一实施例中,当TDB地址有效时(亦即,当最外部TBEGIN指令的h字段为非零 时),仅储存TBEGIN指定的TDB。

[0184] 对于归因于未筛选程序异常情况的中止,将储存PI-TDB或拦截TDB中仅一者。因 此,可存在针对一中止而储存的零个、一个或两个TDB。

[0185] 下文描述关于TDB中每一个的一实例的另外细节:

[0186] TBEGIN指定之TDB:由有效事务诊断区块地址指定的256字节位置。当事务诊断区 块地址有效时,事务中止时储存TBEGIN指定的TDB。TBEGIN指定的TDB经受在执行最外部 TRANSACTION BEGIN指令时有效的所有储存保护机制。用于TBEGIN指定的TDB的任何部分的 PER(程序事件记录)储存变更事件在执行最外部TBEGIN期间而非在事务中止处理期间被侦 测 。

[0187] PER的一个目的是协助对程序进行除错。作为实例,PER准许向程序提醒以下类型 的事件:

[0188] •执行成功分支指令。提供使事件仅在分支目标位置处于已指明储存区域内时 才发生的选项。

[0189] •自已指明储存区域提取指令。

[0190] •变更已指明储存区域的内容。提供使事件仅在储存区域处于已指明地址空间 内时才发生的选项。

[0191] •执行STORE USING REAL ADDRESS指令。

[0192] •执行TRANSACTION END指令。

[0193] 程序可选择地指定出以上类型的事件中的一个或多个被辨识,惟用于STORE USING REAL ADDRESS的事件可仅与储存变更事件一起被指定除外。关于PER事件的信息系 凭借程序中断而提供至程序,其中该中断的原因是在中断码中被识别。

[0194] 当事务诊断区块地址无效时,不储存TBEGIN指定的TDB。

[0195] 程序中断TDB:真实位置6,144至6,399(1800至18FF十六进位)。当事务归因于程序 中断而中止时,储存程序中断TDB。当事务归因于其他原因而中止时,程序中断TDB的内容是 不可预测的。

[0196] 程序中断TDB不经受任何保护机制。当在程序中断期间储存程序中断TDB时,PER储 存变更事件不针对程序中断TDB被侦测。

[0197] 拦截TDB:由状态描述的位置488至495指定的256字节主机真实位置。当已中止事 务引起访客程序中断拦截(亦即,拦截码8)时,储存拦截TDB。当事务归因于其他原因而中止 时,拦截TDB的内容是不可预测的。拦截TDB不经受任何保护机制。

[0198] 如图9所描绘,在一实施例中,事务诊断区块900的字段如下:

[0199] 格式902:字节0含有有效性及格式指示,如下:

[0200]值 含义

[0201] 0 TDB的剩余字段是不可预测的。

[0202] 1 格式1TDB,其剩余字段在下文予以描述。

[0203] 2至255 保留

[0204]格式字段为零的TDB被称作空值TDB。

[0205] 标志904:字节1含有各种指示,如下:

[0206] 冲突令牌有效性(CTV):当事务归因于提取或储存冲突(亦即,分别为中止码9或 10)而中止时,字节1的位0为冲突令牌有效性指示。当CTV指示为1时,TDB的字节16至23中的 冲突令牌910含有冲突被侦测的逻辑地址。当CTV指示为0时,TDB的字节16至23是不可预测 的。

[0207] 当事务归因于不同于撷取或储存冲突的任何原因而中止时,将字节1的位0储存为 0〇

[0208]受限事务指示(CTI):当CPU处于受限事务执行模式时,将字节1的位1设定为1。当 CHJ处于非受限事务执行模式时,将字节1的位1设定为0。

[0209]保留:保留字节1的位2至7且将其储存为0。

[0210] 事务嵌套深度(TND)906:当事务中止时,字节6至7含有事务嵌套深度。

[0211] 事务中止码(TAC)908:字节8至15含有64位无正负号事务中止码。每一码点指示事 务被中止的原因。

[0212] 这是依赖于当事务归因于不同于程序中断的条件而中止时事务中止码是否储存 于程序中断TDB的模型。

[0213] 冲突令牌910:对于归因于提取或储存冲突(亦即,分别为中止码9及10)而中止的 事务,字节16至23含有冲突被侦测的储存位置的逻辑地址。当CTV位(字节1的位0)为埘,冲 突令牌有意义。

[0214] 当CTV位为0时,字节16至23是不可预测的。

[0215] 由于由CPU进行的理论式执行,冲突令牌可指明将未必由事务的概念执行序列存 取的储存位置。

[0216] 已中止事务指令地址(ATIA)912:字节24至31含有识别在侦测到中止时正执行的 指令的指令地址。当事务归因于中止码2、5、6、11、13或256或更高的中止码而中止时,或当 事务归因于中止码4或13而中止且程序异常情况正设为空值时,ATIA直接地指向正被执行 的指令。当事务归因于中止码4或12而中止且程序异常情况未设为空值时,ATIA越过正被执 行的指令。

[0217] 当事务归因于中止码7至10、14至16或255而中止时,ATIA未必指示造成中止的确 切指令,但可指向事务内的较早或较迟指令。

[0218]取决于如上文所描述的中止码,若事务归因于为执行类型指令的目标的指令而中 止,则ATIA识别执行类型指令,从而指向或越过该指令。ATIA并不指示执行类型指令的目 标。

[0219]当事务中止时,ATIA经受寻址模式。在24位寻址模式下,字段的位0至40含有0。在 31位寻址模式下,字段的位0至32含有0。

[0220] 这是依赖于当事务归因于不同于程序中断之条件而中止时,已中止事务指令地址 是否储存于程序中断1DB中的模型。

[0221] 当事务归因于中止码4或12而中止且程序异常情况未设为空值时,ATIA并不指向 造成中止的指令。藉由自ATIA减去由中断长度码(ILC)指示的半字组的数目,在正抑制或终 止的情况下或针对正完成的非PER事件可识别造成中止的指令。当事务归因于PER事件而中 止且不存在其他程序异常情况时,ATIA是不可预测的。

[0222] 当事务诊断区块地址有效时,可在TBEGIN指定的TDB的字节36至39中的程序中断 识别(PIID)中检验ILC。当筛选不适用时,可在真实存储器中的位置140至143处的PIID中检 验 ILC〇

[0223] 异常存取识别(EAID)914:对于归因于某些已筛选程序异常情况而中止的事务, TBEGIN指定的TDB的字节32含有异常存取识别。在z/Architecture的一实例中,当异常情况 引起中断时,EAID的格式及EAID被储存的状况相同于真实位置160中描述的EAID的格式及 EAID被储存的状况,如上文以引用方式并入的操作原理中所描述。

[0224] 对于出于其他原因(包括引起程序中断的任何异常情况)而中止的事务,字节32是 不可预测的。在程序中断1DB中,字节32是不可预测的。

[0225] 此字段仅储存于由事务诊断区块地址指明的TDB中;否则,保留该字段。EAID仅针 对存取清单控制或DAT保护、ASCE类型、页转译、区第一转译、区第二转译、区第三转译及区 段转译程序异常情况被储存。

[0226]数据异常码(DXC)916:对于归因于已筛选数据异常程序异常情况而中止的事务, TBEGIN指定的TDB的字节33含有数据异常码。在z/Architecture的一实例中,当异常情况引 起中断时,DXC的格式及DXC被储存的状况相同于真实位置147中描述的DXC的格式及DXC被 储存的状况,如上文以引用方式并入的操作原理中所描述。在一实例中,位置147包括DXC。

[0227] 对于出于其他原因(包括引起程序中断的任何异常情况)而中止的事务,字节33是 不可预测的。在程序中断1DB中,字节33是不可预测的。

[0228] 此字段仅储存于由事务诊断区块地址指明的TDB中;否则,保留该字段。仅针对数 据程序异常情况而储存DXC。

[0229] 程序中断识别(PIID)918:对于归因于已筛选程序异常情况而中止的事务,TBEGIN 指定的TDB的字节36至39含有程序中断识别。在z/Architecture的一实例中,当情况引起中 断时,PIID的格式相同于真实位置140至143中描述的PIID的格式(如上文以引用方式并入 的操作原理中所描述),惟PIID的位13至14中的指令长度码各别于异常情况被侦测的指令 除外。

[0230]对于出于其他原因(包括引起程序中断的异常情况)而中止的事务,字节36至39是 不可预测的。在程序中断1DB中,字节36至39是不可预测的。

[0231]此字段仅储存于由事务诊断区块地址指明的TDB中;否则,保留该字段。程序中断 识别仅针对程序异常情况被储存。

[0232]转译异常识别(TEID)920:对于归因于以下已筛选程序异常情况中任一者而中止 的事务,TBEGIN指定的TDB之字节40至47含有转译异常识别。

[0233] •存取清单控制或DAT保护

[0234] • ASCE 类型

[0235] •页转译

[0236] •区第一转译

[0237] •区第二转译

[0238] •区第三转译

[0239] •区段转译异常

[0240] 在z/Architecture的一实例中,当情况引起中断时,TEID的格式相同于真实位置 168至175中描述的TEID的格式,如上文以引用方式并入的操作原理中所描述。

[0241]对于出于其他原因(包括引起程序中断之异常情况)而中止的事务,字节40至47是 不可预测的。在程序中断1DB中,字节40至47是不可预测的。

[0242] 此字段仅储存于由事务诊断区块地址指明的TDB中;否则,保留该字段。

[0243] 中断事件(breaking event)地址922:对于归因于已筛选程序异常情况而中止的 事务,TBEGIN指定的TDB的字节48至55含有中断事件地址。在z/Architecture的一实例中, 当条件引起中断时,中断事件地址的格式相同于真实位置272至279中描述的中断事件地址 的格式,如上文以引用方式并入的操作原理中所描述。

[0244]对于出于其他原因(包括引起程序中断的异常情况)而中止的事务,字节48至55是 不可预测的。在程序中断1DB中,字节48至55是不可预测的。

[0245] 此字段仅储存于由事务诊断区块地址指明的TDB中;否则,保留该字段。

[0246] 下文描述关于中断事件的另外细节。

[0247] 在z/Architecture的一实施例中,当安装PER-3设施时,PER-3设施向程序提供最 后指令的地址以造成CPU的循序执行的中断。中断事件地址记录可用作针对万用分支侦测 的除错协助。举例而言,此设施提供CPU中的64位寄存器,其被称作中断事件地址寄存器。每 当不同于TRANSACTION ABORT的指令造成循序指令执行的中断(亦即,PSW中的指令地址被 取代,而非被累加该指令的长度)时,将那个指令的地址置放于中断事件地址寄存器中。只 要发生程序中断,无论是否指示PER,皆将中断事件地址寄存器的当前内容置放于真实储存 位置272至279中。

[0248] 若造成中断事件的指令为执行类型指令(EXECUTE或EXECUTE RELATIVE LONG)的 目标,则将用以提取执行类型指令的指令地址置放于中断事件地址寄存器中。

[0249] 在z/Architecture的一实施例中,只要以下指令中之一者造成分支,就认为发生 中断事件:BRANCH AND LINK(BAL,BALR);BRANCH AND SAVE(BAS,BASR);BRANCH AND SAVE AND SET MODE(BASSM);BRANCH AND SET MODE(BSM);BRANCH AND STACK(BAKR);BRANCH ON C0NDITI0N(BC,BCR);BRANCH ON ⑶UNT(BCT,BCTR,BCTG,BCTGR);BRANCH ON INDEX HIGH (BXH,BXHG);BRANCH ON INDEX LOW OR EQUAL(BXLE,BXLEG);BRANCH RELATIVE ON ⑶NDITION(BRC);BRANCH RELATIVE ON ⑶NDITION LONG(BRCL);BRANCH RELATIVE ON COUNT(BRCT,BRCTG);BRANCH RELATIVE ON INDEX HIGH(BRXH,BRXHG);BRANCH RELATIVE ON INDEX LOW OR EQUAL(BRXLE,BRXLG);COMPARE AND BRANCH(CRB,CGRB);COMPARE AND BRANCH RELATIVE(CRJ,CGRJ);COMPARE IMMEDIATE AND BRANCH(CIB,CGIB)COMPARE IMMEDIATE AND BRANCH RELATIVE(CIJ,CGIJ);C0MPARE LOGICAL AND BRANCH(CLRB, CLGRB);COMPARE LOGICAL AND BRANCH RELATIVE(CLRJ,CLGRJ);COMPARE LOGICAL IMMEDIATE AND BRANCH(CLIB,CLGIB);及⑶MPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE(CLIJ,CLGIJ)〇

[0250]只要以下指令中之一者完成,就亦认为发生中断事件:BRANCH AND SET AUTHORITY(BSA);BRANCH IN SUBSPACE GROUP(BSG);BRANCH RELATIVE AND SAVE(BRAS); BRANCH RELATIVE AND SAVE LONG(BRASL);LOAD PSff(LPSff);L0AD PSff EXTENDED(LPSWE); PROGRAM CALL(PC);PROGRAM RETURN(PR);PROGRAM TRANSFER(PT);PROGRAM TRANSFER WITH INSTANCE(PTI);RESUME PROGRAM(RP);及TRAP(TRAP2,TRAP4)。

[0251] 由于事务中止(隐含地或由于TRANSACTION ABORT指令)而不认为发生中断事件。

[0252] 依赖于模型的诊断信息924:字节112至127含有依赖于模型的诊断信息。

[0253] 对于惟12(已筛选程序中断)除外的所有中止码,将依赖于模型的诊断信息储存于 所储存的每一 TDB中。

[0254] 在一实施例中,依赖于模型的诊断信息包括以下各者:

[0255] •字节112至119含有被称作事务执行分支指示(TXBI)的64个位的向量。该向量 的前63个位中每一者指示在CPU处于事务执行模式时执行分支指令的结果,如下:

[0256]值含义

[0257] 〇 指令在无分支的情况下完成。

[0258] 1 指令在有分支的情况下完成。

[0259] 位0表示第一此类分支指令的结果,位1表示第二此类指令的结果,等等。

[0260]若在CPU处于事务执行模式时执行少于63个的分支指令,则将不对应于分支指令 的最右侧位设定为〇(包括位63)。当执行多于63个的分支指令时,将TXBI的位63设定为1。 [0261] TXBI中的位由如上文所列出的能够造成中断事件的指令设定,惟以下各者除外:

[0262] -任何受限定指令并不使位设定于TXBI中。

[0263] -对于(例如"/Architecture 的指令,当 BRANCH ON C0NDITI0N、BRANCH RELATIVE ON CONDITION或BRANCH RELATIVE ON CONDITION LONG指令的Mi字段为0时,或 当以下指令的R2字段为〇时,这是依赖于该指令的执行是否使位设定于TXBI的模型。

[0264] • BRANCH AND LINK(BALR);BRANCH AND SAVE(BASR);BRANCH AND SAVE AND SET MODE(BASSM);BRANCH AND SET MODE(BSM);BRANCH ON CONDITION(BCR);及BRANCH ON COUNT(BCTR,BCTGR)

[0265] •对于由主机存取异常造成的中止条件,将字节127的位的位置0设定为1。对于 所有其他中止条件,将字节127的位的位置0设定为0。

[0266] •对于由载入/储存单元(LSU)侦测的中止条件,字节127的最右侧五个位含有原 因的指示。对于未由LSU侦测的中止条件,保留字节127。

[0267] 一般寄存器930:字节128至255含有在事务中止时的一般寄存器0至15的内容。这 些寄存器以升序被储存,其以字节128至135中的一般寄存器0开始,接着为字节136至143中 的一般寄存器1,等等。

[0268] 保留:保留所有其他字段。除非另有指示,否则保留字段的内容是不可预测的。

[0269] 如由其他CPU及1/0子系统所观察,在事务中止期间储存TDB为在任何非事务储存 之后发生的多重存取参考。

[0270] 事务可归因于在事务执行的立即配置的范畴外的原因而中止。举例而言,由超管 理器(诸如,LPAR或z/VM)辨识的瞬态事件可造成事务中止。

[0271] 提供于事务诊断区块中的信息意欲用于诊断目的且实质上正确。然而,因为中止 可能已由在立即配置的范畴外的事件造成,所以诸如中止码或程序中断识别的信息可能不 准确地反映该配置内的情况,且因此不应被用来判定程序动作。

[0272] 除了储存于TDB中的诊断信息以外,当事务归因于任何数据异常程序异常情况而 中止且AFP寄存器控制(控制寄存器0的位45)及有效允许浮点运算控制(F)两者皆为1时, 将数据异常码(DXC)置放至浮点控制寄存器(FPCR)的字节2中,而不管筛选是否应用于程序 异常情况。当事务中止且AFP寄存器控制或有效允许浮点运算控制中之一个或两个为0时, 不将DXC置放至FPCR中。

[0273] 在一实施例中,如本文所指示,当安装事务执行设施时,提供以下一般指令。

[0274] • EXTRACT TRANSACTION NESTING DEPTH

[0275] • N0NTRANSACTI0NAL STORE

[0276] • TRANSACTION ABORT

[0277] • TRANSACTION BEGIN

[0278] • TRANSACTION END

[0279] 当CPU处于事务执行模式时,某些指令的已尝试执行受到限定且造成事务中止。

[0280] 当在受限事务执行模式下发出时,受限定指令的已尝试执行亦可引起事务限制程 序中断,或可如同事务不受到限制一样引起执行进行。

[0281]在z/Architecture的一实例中,作为实例,受限定指令包括以下非特殊权限指令: COMPARE AND SWAP AND STORE;MODIFY RUNTIME INSTRUMENTATION CONTROLS;PERFORM 100^0 0?£1^1'1(^;?1^?£1010厶1厶(1^1^1'1¥£10呢),此时]\11字段中的码为6或7 ;51'01^ CHARACTERS UNDER MASK HIGH,此时M3字段为0且Ri字段中的码为6或7;STORE FACILITY LIST EXTENDED;STORE RUNTIME INSTRUMENTATION CONTROLS;SUPERVISOR CALL;及TEST RUNTIME INSTRUMENTATION CONTROLS。

[0282]在以上清单中,COMPARE AND SWAP AND STORE及PERFORM LOCKED OPERATION为可 藉由在TX模式下使用基本指令而更有效率地实施的复杂指令。针对PREFETCH DATA及 PREFETCH DATA RELATIVE LONG的状况受到限定,这是由于为6及7的码释放高速缓存行,从 而使潜在地在事务完成之前交付数据成为必要。SUPERVISOR CALL受到限定,这是由于其造 成中断(此情形造成事务中止)。

[0283] 在下文所列出的条件下,以下指令受到限定:

[0284] • BRANCH AND LINK(BALR)、BRANCH AND SAVE(BASR)及BRANCH AND SAVE AND SET MODE,此时指令的R2字段为非零且分支追踪被启用。

[0285] • BRANCH AND SAVE AND SET MODE及BRANCH AND SET MODE,此时R2字段为非零 且模式追踪被启用;SET ADDRESSING MODE,此时模式追踪被启用。

[0286] • MONITOR CALL,此时监视事件情况被辨识。

[0287] 以上清单包括可形成追踪项的指令。若这些指令被允许事务地执行且形成追踪 项,且事务随后中止,则将推进控制寄存器12中的追踪表指针,但将舍弃至追踪表的储存。 此情形将在追踪表中留下不一致间隙。因此,指令在其将形成追踪项的状况下受到限定。

[0288] 当CHJ处于事务执行模式时,这是依赖于以下指令是否受到限定的模型:CIPHER MESSAGE;CIPHER MESSAGE WITH CFB;CIPHER MESSAGE WITH CHAINING;CIPHER MESSAGE WITH COUNTER;CIPHER MESSAGE WITH 0FB;COMPRESSION CALL;COMPUTE INTERMEDIATE MESSAGE DIGEST;⑶MPUTE LAST MESSAGE DIGEST;COMPUTE MESSAGE AUTHENTICATION CODE;CONVERT UNICODE-16 TO UNICODE-32;CONVERT UNICODE-16 TO UNICODE-8;CONVERT UNICODE-32 TO UNICODE-16;CONVERT UNICODE-32 TO UNICODE-8;CONVERT UNICODE-8 TO UNICODE-16;CONVERT UNICODE-8 TO UNICODE-32;PERFORM CRYPTOGRAPHIC COMPUTATION; RUNTIME INSTRUMENTATION OFF;及RUNTIME INSTRUMENTATION ON。

[0289] 以上指令中每一个当前由硬件共处理器实施,或已处于过去机器中,且因此被认 为受到限定。

[0290] 当有效允许AR修改(A)控制为0时,以下指令受到限定:COPY ACCESS;LOAD ACCESS MULTIPLE;LOAD ADDRESS EXTENDED;及SET ACCESS。

[0291] 以上指令中每一个造成存取寄存器的内容被修改。若TRANSACTION BEGIN指令中 的A控制为0,则程序已明确地指示出将不允许存取寄存器修改。

[0292] 当有效允许浮点运算(F)控制为0时,浮点指令受到限定。

[0293] 在某些情况下,以下指令可受到限定:EXTRACT CPU TME;EXTRACT PSW;ST0RE CLOCK;STORE CLOCK EXTENDED;及STORE CLOCK FAST。

[0294]以上指令中每一个经受解译性执行状态描述中的拦截控制。若超管理器已设定针 对此等指令的拦截控制,则这些指令的执行可归因于超管理器实施而被拖延;因此,若发生 拦截,可认为这些指令受到限定。

[0295]当非受限事务由于受限定指令的已尝试执行而中止时,将事务诊断区块中的事务 中止码设定为11(受限定指令),且将条件码设定为3,惟如下情形除外:当非受限事务归因 于原本将会引起特殊权限操作异常的指令的已尝试执行而中止时,无论将中止码设定为11 (受限定指令)或4(由特殊权限操作程序中断的辨识引起的未筛选程序中断)而都是不可预 测的。当非受限事务归因于在Mi字段中的码为6或7时PREFETCH DATA(RELATIVE LONG)的已 尝试执行或在M3字段为0且Ri字段中的码为6或7时STORE CHARACTERS UNDER MASK HIGH的 已尝试执行而中止时,无论将中止码设定为11(受限定指令)或16(高速缓存其他)而都是不 可预测的。当非受限事务归因于MONITOR CALL的已尝试执行而中止且存在监视事件情况及 规格异常情况两者时,无论将中止码设定为11或4或(在程序中断被筛选时)12而都是不可 预测的。

[0296] 额外指令可在受限事务中受到限定。尽管这些指令当前经定义为在非受限事务中 不受到限定,但这些指令可在某些情况下在未来处理器上的非受限事务中受到限定。

[0297] 可在未来处理器上的事务执行模式下允许某些受限定指令。因此,程序不应依赖 于归因于受限定指令的已尝试执行而中止的事务。TRANSACTION ABORT指令应被用以可靠 地造成事务中止。

[0298] 在非受限事务中,程序应提供替代性非事务码路径以适应归因于受限定指令而中 止的事务。

[0299] 在操作中,当事务嵌套深度为0时,引起条件码0的TRANSACTION BEGIN(TBEGIN)指 令的执行使CPU进入非受限事务执行模式。当事务嵌套深度为0时,引起条件码0的 TRANSACTION BEGIN受限(TBEGINC)指令的执行使CPU进入受限事务执行模式。

[0300] 除了另有明确提及以外,应用于非事务执行的所有规则亦应用于事务执行。下文 为在CPU处于事务执行模式时进行处理的额外特性。

[0301] 当CPU处于非受限事务执行模式时,引起条件码0的TRANSACTION BEGIN指令的执 行使CPU保持于非受限事务执行模式。

[0302] 如由CPU所观察,在事务执行模式下进行的提取及储存并非不同于在不处于事务 执行模式时进行的提取及储存。如由其他CPU及1/0子系统所观察,在CPU处于事务执行模式 时进行的所有储存操作数存取看来像是单一区块并行存取。亦即,对半字组、字组、双字组 或四倍字组内的所有字节的存取经指定以看来像是区块并行,如由其他CPU及1/0(例如,通 道)程序所观察。半字组、字组、双字组或四倍字组在此章节中被称作区块。当提取类型参考 经指定以在区块内看来像是并行时,在该区块中含有的字节正被提取的时间期间不准许由 另一 CPU或1/0程序对该区块的储存存取。当储存类型参考经指定以在区块内看来像是并行 时,在该区块内的字节正被储存的时间期间不准许由另一CPU或1/0程序对该区块的存取 (提取或储存)。

[0303] 针对指令的储存存取以及DAT及ART(存取寄存器表)表提取遵循非事务规则。

[0304] CPU凭借使事务嵌套深度转变至0的TRANSACTION END指令而正常地离开事务执行 模式,在该状况下,事务完成。

[0305]当CPU凭借TRANSACTION END指令的完成而离开事务执行模式时,交付在处于事务 执行模式时进行的所有储存;亦即,这些储存看来像是作为单一区块并行操作而发生,如由 其他CPU及1/0子系统所观察。

[0306] 事务可出于多种原因而隐含地中止,或事务可由TRANSACTION ABORT指令明确地 中止。下文描述事务中止、对应中止码及置放至事务中止PSW中的条件码的实例可能原因。

[0307] 外部中断:将事务中止码设定为2,且将事务中止PSW中的条件码设定为2。作为外 部中断处理的部分,将事务中止PSW储存为外部旧PSW。

[0308]程序中断(未筛选):引起中断的程序异常情况(亦即,未筛选条件)使事务用码4而 中止。将事务中止PSW中的条件码设定为特定于程序中断码。作为程序中断处理的部分,将 事务中止PSW储存为程序旧PSW。

[0309] 原本将会引起事务归因于操作异常而中止的指令可得到替代结果:对于非受限事 务,事务可代替地用中止码11(受限定指令)而中止;对于受限事务,可辨识事务限制程序中 断,而非操作例外。

[0310] 当PER(程序事件记录)事件结合任何其他未筛选程序异常情况被辨识时,将条件 码设定为3。

[0311] 机器检查中断:将事务中止码设定为5,且将事务中止PSW中的条件码设定为2。作 为机器检查中断处理的部分,将事务中止PSW储存为机器检查旧PSW。

[0312] I/O中断:将事务中止码设定为6,且将事务中止PSW中的条件码设定为2。作为I/O 中断处理的部分,将事务中止PSW储存为I/0旧PSW。

[0313] 提取溢出:当事务尝试自多于CPU所支持的位置的位置进行提取时,侦测提取溢出 条件。将事务中止码设定为7,且将条件码设定为2或3。

[0314]储存溢出:当事务尝试储存至多于CPU所支持的位置的位置时,侦测储存溢出条 件。将事务中止码设定为8,且将条件码设定为2或3。

[0315] 回应于提取或储存溢出中止而允许条件码为2或3会允许CPU指示潜在可重试情形 (例如,条件码2指示事务的重新执行可有生产力;而条件码3并不建议重新执行)。

[0316] 提取冲突:当另一CPU或I/O子系统尝试储存至已由此CPU事务地提取的位置中时, 侦测提取冲突条件。将事务中止码设定为9,且将条件码设定为2。

[0317] 储存冲突:当另一CPU或I/O子系统尝试存取在由此CPU进行的事务执行期间已被 储存的位置时,侦测储存冲突条件。将事务中止码设定为10,且将条件码设定为2。

[0318] 受限定指令:当CHJ处于事务执行模式时,受限定指令的已尝试执行造成事务中 止。将事务中止码设定为11,且将条件码设定为3。

[0319] 当CPU处于受限事务执行模式时,无论受限定指令的已尝试执行引起事务限制程 序中断或归因于受限定指令的中止而都是不可预测的。事务仍中止,但中止码可指示任一 原因。

[0320]程序异常情况(已筛选):不引起中断的程序异常情况(亦即,已筛选的情况)造成 事务用为12的事务中止码而中止。将条件码设定为3。

[0321] 嵌套深度超过:当事务嵌套深度处于该配置的最大可允许值且执行TRANSACTION BEGIN指令时,侦测嵌套深度超过条件。使事务用为13的事务中止码而中止,且将条件码设 定为3。

[0322] 高速缓存提取相关条件:由CPU的高速缓存电路侦测与由事务提取的储存位置相 关的条件。用为14的事务中止码而使事务中止,且将条件码设定为2或3。

[0323] 高速缓存储存相关条件:由CPU的高速缓存电路侦测与由事务储存的储存位置相 关的条件。用为15的事务中止码而使事务中止,且将条件码设定为2抑或3。

[0324] 高速缓存其他条件:由CPU的高速缓存电路侦测高速缓存其他条件。用为16的事务 中止码而使事务中止,且将条件码设定为2或3。

[0325] 在事务执行期间,若CPU使用映射至相同绝对地址的不同逻辑地址来存取指令或 储存操作数,则这是依赖于事务是否中止的模型。若事务归因于使用映射至相同绝对地址 的不同逻辑地址的存取而中止,则取决于条件,设定中止码14、15或16。

[0326] 杂项条件:杂项条件为造成事务中止的由CPU辨识的任何其他条件。将事务中止码 设定为255,且将条件码设定为2抑或3。

[0327] 当多个配置正在同一机器(例如,逻辑分割区或虚拟机)中执行时,事务可归因于 不同组态中发生的外部机器检查或I/O中断而中止。

[0328] 尽管上文提供实例,但可提供具有对应中止码及条件码的事务中止的其他原因。 举例而言,一个原因可为重新启动中断,其中将事务中止码设定为1,且将事务中止PSW中的 条件码设定为2。作为重新启动处理的部分,将事务中止PSW储存为重新启动旧PSW。作为一 另外实例,一个原因可为监督呼叫条件,其中将中止码设定为3,且将事务中止PSW中的条件 码设定为3。其他或不同实例也是可能的。

[0329] 备注:

[0330] 1.杂项条件可由以下各者中任一者引起:

[0331] •诸如在z/Architecture中的指令COMPARE AND REPLACE DAT TABLE ENTRY、 COMPARE AND SWAP AND PURGE、INVALIDATE DAT TABLE ENTRY、INVALIDATE PAGE TABLE ENTRY、NQ控制为0且SK控制为 1 的PERFORM FRAME MANAGEMENT FUNCTI0N、NQ控制为0的SET STORAGE KEY EXTENDED,它是由该配置中的另一CPU执行;将条件码设定为2。

[0332] •在CPU上执行诸如重设、重新启动或停止的运算子函数,或等效SIGNAL PROCESSOR 命令。

[0333] •上文未列举的任何其他条件;将条件码设定为2或3。

[0334] 2.提取及储存冲突被侦测的位置可为同一高速缓存行内的任何地方。

[0335] 3.在某些条件下,CPU可不能区分相似中止条件。举例而言,提取或储存溢出可不 能与各别提取或储存冲突区分开。

[0336] 4.由CPU对多个指令路径的理论式执行可引起事务归因于冲突或溢出条件而中 止,即使此类条件并不以概念序列而发生亦如此。在处于受限事务执行模式时,CPU可临时 地禁止理论式执行,从而允许事务尝试在不理论式地侦测此类冲突或溢出的情况下完成。

[0337] TRANSACTION ABORT指令的执行造成事务中止。自第二操作数地址设定事务中止 码。取决于第二操作数地址的位63为0或1,将条件码分别设定为2或3。

[0338] 图10概述储存于事务诊断区块中的实例中止码及对应条件码(CC)。图10中的描述 说明一特定实施。值的其他实施及编码是可能的。

[0339] 在一实施例中且如上文所提及,事务设施规定受限事务及非受限事务两者,以及 与其相关联的处理。最初论述受限事务,且接着论述非受限事务。

[0340] 受限事务在无后退路径的情况下执行于事务模式下。其为用于紧凑函数的处理的 模式。在不存在重复中断或与其他CHJ或1/0子系统的冲突(亦即,由将不允许事务成功地完 成的条件造成)时,受限事务最终将完成;因此,无需且不指定中止处理例程。举例而言,在 不存在以下各者时,事务最终将完成:不能处理的条件(例如,除以〇)的违反、不允许事务完 成的条件(例如,不允许指令执行的计时器中断、热1/0等等),或与受限事务相关联的限定 或限制的违反。

[0341] 当事务嵌套深度最初为0时,受限事务由TRANSACTION BEGIN受限(TBEGINC)指令 起始。在一实施例中,受限事务经受以下限制。

[0342] 1 .事务执行不多于32个指令,不包括TRANSACTION BEGIN受限(TBEGINC)及 TRANSACTION END指令。

[0343] 2.事务中的所有指令将在存储器的256个连续字节内,包括TRANSACTION BEGIN受 限(TBEGINC)及任何TRANSACTION END指令。

[0344] 3.除了受限定指令以外,以下限定亦应用于受限事务。

[0345] a.指令限于被称作一般指令的指令,包括(例如)加法、减法、乘法、除法、移位、旋 车专等等。

[0346] b.分支指令限于以下各者(在一实例中,所列出的指令属于z/Architecture):

[0347] • BRANCH RELATIVE ON CONDITION,其中Mi为非零且RI2字段含有正值。

[0348] • BRANCH RELATIVE ON CONDITION LONG,其中Mi字段为非零,且RI2字段含有不 造成地址环绕的正值。

[0349] • COMPARE AND BRANCH RELATIVE、COMPARE IMMEDIATE AND BRANCH RELATIVE、 COMPARE LOGICAL AND BRANCH RELATIVE,及⑶MPARE LOGICAL MMEDIATE AND BRANCH RELATIVE,其中M3字段为非零且Rl4字段含有正值。(亦即,仅具有非零分支屏敝的前向分 支。)

[0350] c.除了TRANSACTION END及造成已指定操作数序列化的指令以外,造成序列化功 能的指令受到限定。

[0351] d.存储器间操作(SS-)及具有延伸操作码的存储器间操作(SSE-)指令受到限定。

[0352] e •所有以下一般指令(在此实例中,其属于z/Architecture)受到限定:CHECKSUM; CIPHER MESSAGE;CIPHER MESSAGE WITH CFB;CIPHER MESSAGE WITH CHAINING;CIPHER MESSAGE WITH ⑶UNTER;CIPHER MESSAGE WITH 0FB;COMPARE AND FORM CODEWORD; COMPARE LOGICAL LONG;COMPARE LOGICAL LONG EXTENDED;COMPARE LOGICAL LONG UNI⑶DE;COMPARE LOGICAL STRING;COMPARE UNTIL SUBSTRING EQUAL COMPRESSION CALL;COMPUTE INTERMEDIATE MESSAGE DIGEST;COMPUTE LAST MESSAGE DIGEST;COMPUTE MESSAGE AUTHENTICATION ⑶DE;CONVERT TO BINARY;CONVERT TO DECIMAL;CONVERT UNI⑶DE-16 TO UNICODE-32;CONVERT UNICODE-16 TO UNICODE-8;CONVERT UNICODE-32 TO UNICODE-16;CONVERT UNICODE-32 TO UNICODE-8;⑶NVERT UNICODE-8 TO UNI⑶DE-16;C0NVERT UNI⑶DE-8 TO UNI⑶DE-32;DIVIDE;DIVIDE L0GICAL;DIVIDE SINGLE; EXECUTE;EXECUTE RELATIVE LONG;EXTRACT CACHE ATTRIBUTE;EXTRACT CPU TIME; EXTRACT PSff;EXTRACT TRANSACTION NESTING DEPTH;L0AD AND ADD;L0AD AND ADD L0GICAL;L0AD AND AND;L0AD AND EXCLUSIVE 0R;L0AD AND 0R;L0AD PAIR DISJOINT; LOAD PAIR FROM QUADWORD;MONITOR CALL;MOVE LONG;MOVE LONG EXTENDED;MOVE LONG UNIC0DE;M0VE STRING;N0N-TRANSACTI0NAL STORE;PERFORM CRYPTOGRAPHIC COMPUTATION PREFETCH DATA;PREFETCH DATA RELATIVE LONG;RUNTIME INSTRUMENTATION EMIT;RUNTIME INSTRUMENTATION NEXT;RUNTIME INSTRUMENTATION OFF;RUNTIME INSTRUMENTATION ON;SEARCH STRING;SEARCH;STRING UNICODE;SET ADDRESSING MODE; STORE CHARACTERS UNDER MASK HIGH,此时M3字段为0且Ri字段中的码为6或7; STORE CLOCK;STORE CLOCK EXTENDED;STORE CLOCK FAST;STORE FACILITY LIST EXTENDED; STORE PAIR TO QUADWORD;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 TO ONE;及TRANSLATE TWO TO TWO。

[0353] 4.事务的储存操作数存取不多于四个八倍字组。备注:LOAD ON CONDITION及 STORE ON CONDITION被看作参考存储器而不管条件码。举例而言,八倍字组为32字节边界 上的32个连续字节的群组。

[0354] 5.在此CPU上执行的事务或由其他CPU或I/O子系统进行的储存并不存取任何4K字 节区块中的储存操作数,这些4K字节区块含有存储器的256个字节,其以TRANSACTION BEGIN受限(TBEGINC)指令开始。

[0355] 6.事务不使用映射至相同绝对地址的不同逻辑地址来存取指令或储存操作数。

[0356] 7.由事务进行的操作数参考将在单一双字组内,惟对于LOAD ACCESS MULTIPLE、 LOAD MULTIPLE、L0AD MULTIPLE HIGH、ST0RE ACCESS MULTIPLE、STORE MULTIPLE及STORE MULTIPLE HIGH除外,操作数参考将在单一八倍字组内。

[0357] 若受限事务违反上文所列出之限制1至7中任一者,则(a)辨识事务限制程序中断, 或(b)执行如同事务未受到限制一样行进,惟另外限制违反仍可引起事务受限程序中断除 外。采取哪一动作是不可预测的,且所采取的动作可基于哪一限制被违反而不同。

[0358] 在不存在限制违反、重复中断或与其他CPU或1/0子系统的冲突时,受限事务最终 将完成,如上文所描述。

[0359] 1.若事务满足以下准则,则成功地完成受限事务的机会改良:

[0360] a.所发出的指令少于为32之最大值。

[0361] b.储存操作数参考少于为4个八倍字组的最大值。

[0362] c.储存操作数参考处于同一高速缓存行上。

[0363] d.对相同位置的储存操作数参考藉由所有事务以相同次序而发生。

[0364] 2 .受限事务未必确信在其第一执行时成功地完成。然而,若未违反所列出限制中 任一者的受限事务中止,则CPU使用确保事务的重复执行随后成功的电路。

[0365] 3.在受限事务内,TRANSACTION BEGIN为受限定指令,因此,受限事务不能为嵌套。

[0366] 4.由受限事务违反以上限制1至7中任一者可引起程序循环。

[0367] 5.受限事务的限制相似于比较及交换循环的限制。由于来自其他CPU及1/0子系统 的潜在干扰,不存在COMPARE AND SWAP指令将用条件码0永远完成的架构确信。受限事务可 遭受呈提取或储存冲突中止或热中断的形式的相似干扰。

[0368] CPU使用公平演算法以确保在不存在任何限制违反时受限事务最终完成。

[0369] 6.为了判定完成受限事务所需要的重复反复的数目,程序可在不经受一般寄存器 储存屏敝的一般寄存器中使用计数器。下文展示一实例。

[0370]

Figure CN104364772BD00271

[0371] *R15现在含有重复事务尝试的计数。

[0372] 应注意,在此实例中,两个寄存器14及15皆未被恢复。亦应注意,在一些模型上,若 CPU在TBEGINC指令完成之后但在AHI指令完成之前侦测到中止条件,则一般寄存器15中的 计数可低。

[0373] 如由CPU所观察,在事务执行模式下进行的提取及储存并非不同于在不处于事务 执行模式时进行的提取及储存。

[0374] 在一实施例中,使用者(亦即,建立事务的使用者)选择事务是否将受到限制。参看 图11来描述与受限事务的处理相关联的逻辑且尤其是与TBEGINC指令相关联的处理的一实 施例。TBEGINC指令的执行使CPU进入受限事务执行模式或保持于非受限执行模式。执行 TBEGINC的CPU(亦即,处理器)执行图11的逻辑。

[0375] 参看图11,基于TBEGINC指令的执行,执行序列化功能(步骤1100)。序列化功能或 操作包括在发生概念上后续的储存存取(及相关参考位及改变位设定)之前由CPU完成所有 概念上先前的储存存取(及作为一实例,对于z/Architecture,相关参考位及改变位设定), 如由其他CPU及I/O子系统所观察。序列化影响对存储器及对存储器金钥的所有CPU存取的 序列,惟与ART表项及DAT表项提取相关联的存取除外。

[0376] 如由处于事务执行模式的CPU所观察,序列化正常地操作(如上文所描述)。如由其 他CPU及I/O子系统所观察,由于使事务嵌套深度递减至零(正常结束)的TRANSACTION END 指令或由于正被中止的事务,在CPU处于事务执行模式时执行的序列化操作在CPU离开事务 执行模式时发生。

[0377] 在执行序列化之后,进行关于是否辨识异常的判定(查询1102)。若是,则处置异常 (步骤1104)。举例而言,若事务执行控制(控制寄存器0的位8)为0,则辨识出特殊操作异常 且抑制操作。作为另外实例,若也字段(指令的位16至19)为非零,则辨识出规格异常且抑制 操作;若TBEGINC为执行类型指令的目标,则辨识出执行异常且抑制操作;且若于配置中未 安装事务执行设施,则辨识出操作异常且抑制操作。若CPU已经处于受限事务执行模式,则 辨识出事务受限异常程序异常且抑制操作。另外,若事务嵌套深度在累加1时将超过依赖于 模型的最大事务嵌套深度,则用中止码13而中止事务。可辨识及处置其他或不同异常。

[0378] 然而,若不存在异常,则进行关于事务嵌套深度是否为0的判定(查询1106)。若事 务嵌套深度为〇,则将事务诊断区块地址看作无效(步骤1108);自当前PSW的内容设定事务 中止PSW,惟事务中止PSW的指令地址指明TBEGINC指令而非下一循序指令除外(步骤1110); 且将如由一般寄存器储存屏敝指明的一般寄存器对的内容储存于不能由程序直接地存取 的模型相依位置中(步骤1112)。另外,将嵌套深度设定为1(步骤1114)。另外,将允许浮点运 算(F)及程序中断筛选控制(PIFC)的有效值设定为0(步骤1316)。另外,判定允许AR修改(A) 控制(指令的12字段的位12字段)的有效值(步骤1118)。举例而言,有效A控制为针对当前层 级及针对任何外部TBEGIN指令的TBEGINC指令中的A控制的逻辑AND。

[0379] 返回至查询1106,若事务嵌套深度大于0,则使嵌套深度累加1(步骤1120)。另外, 将允许浮点运算(F)的有效值设定为0,且程序中断筛选控制(PIFC)的有效值不变(步骤 1122)。处理接着继续步骤1118。在一实施例中,事务的成功起始引起条件码0。此情形推断 出与执行TBEGINC指令相关联的逻辑的一实施例。

[0380]在一实施例中,上文所提供的异常检查可以变化次序而发生。用于异常检查的一 特定次序如下:

[0381]优先权相同于针对一般状况的程序中断条件的优先权的异常。

[0382]归因于含有非零值的出字段的规格异常。

[0383] 归因于超过事务嵌套深度的中止。

[0384] 归因于正常完成的条件码0。

[0385] 另外,以下各者在一个或多个实施例中适用:

[0386] 1.若事务并不在事务凭借TRANSACTION END而正常地结束时中止,则仅恢复经指 明为由一般寄存器储存屏敝储存的寄存器。在中止时仅恢复由最外部TRANSACTION BEGIN 指令的GRSM指明的寄存器。

[0387] 12字段应指明提供由受限事务改变的输入值的所有寄存器对。因此,若事务中止, 则当重新执行受限事务时,输入寄存器值将恢复为其原始内容。

[0388] 2.在大多数模型上,既在TRANSACTION BEGIN上又在事务中止时,可藉由指定在一 般寄存器储存屏敝中进行储存及恢复所需要的寄存器的最小数目而实现改良型效能。

[0389] 3.以下情形说明基于当前事务嵌套深度(TND)且在TND为非零时的TRANSACTION BEGIN指令(TBEGIN及TBEGINC两者)的结果,而无论CPU处于非受限事务执行模式或受限事 务执行模式:

Figure CN104364772BD00281

[0390]

[0391]

[0392]如本文所描述,在一个方面中,假定受限事务不含有使其不能够完成的条件,则受 限事务确信完成。为了确保受限事务完成,执行该事务的处理器(例如,CPU)可采取某些动 作。举例而言,若受限事务具有中止条件,则CPU可临时地:

[0393] (a)禁止无序执行;

[0394] (b)禁止其他CPU存取冲突储存位置;

[0395] (c)诱发中止处理之随机延迟;和/或

[0396] (d)调用其他措施以促进成功完成。

[0397] 概言之,受限事务的处理如下:

[0398] •若已经处于受限TX模式,则辨识事务受限异常。

[0399] •若当前TND(事务嵌套深度)>0,则执行如同非受限事务一样行进

[0400] ◦将有效F控制设定为0

[0401 ]。有效PIFC不变

[0402] 〇允许外部非受限TX呼叫可或可不使用受限TX的服务功能。

[0403] •若当前 TND = 0,则:

[0404] 〇事务诊断区块地址无效。

[0405]-中止时未储存指令指定的TDB [0406] 〇将事务中止PSW设定为TBEGINC的地址 [0407]-并非下一循序指令

[0408] 〇储存于不能由程序存取的依赖于模型的位置中的由GRSM指明的一般寄存器对

[0409] 〇视情况而形成(自D2操作数)的事务令牌。事务令牌为事务的识别符。事务令牌 可等于储存操作数地址或另一值。

[0410] •有效A = TBEGINC A及任何外部A

[0411] •累加TND

[0412] 。若TND自0转变至1,则CPU进入受限TX模式

[0413] 。否则,CPU操持于非受限TX模式

[0414] •指令用CC0而完成

[0415] •异常:

[0416] 〇在出字段为非零时的规格异常(PIC(程序中断码)0006)

[0417] 。在事务执行控制(CR0.8)为0时的特殊操作异常(PIC 0013十六进位)

[0418] 〇在受限TX模式下发出时的事务受限异常(PIC 0018十六进位)

[0419] 。在未安装受限事务执行设施时的操作异常(PIC 0001)

[0420] 〇在指令为执行类型指令的目标时的执行异常(PIC 0003)

[0421] 〇在嵌套深度超过时的中止码13

[0422] •受限事务中的中止条件:

[0423] 〇中止PSW指向TBEGINC指令

[0424] -并非在TBEGINC指令之后的指令

[0425] -中止条件造成整个TX被重新驱动

[0426] *无失败路径

[0427] 〇 CPU采取特殊措施以确保在重新驱动时的成功完成

[0428] 。假定无持久冲突、中断或受限违反,则事务确信最终完成。

[0429] •限制违反:

[0430] 〇 PIC 0018十八进位一指不事务限制的违反

[0431] 〇或,事务如同非受限一样执行

[0432] 如上文所描述,除了为选用的受限事务处理以外,在一实施例中,事务设施亦提供 非受限事务处理。参看图12来描述关于非受限事务的处理且尤其是与TBEGIN指令相关联的 处理的另外细节。TBEGIN指令的执行使CPU进入或保持于非受限事务执行模式。执行TBEGIN 的CPU(亦即,处理器)执行图12的逻辑。

[0433]参看图12,基于TBEGIN指令的执行,执行序列化功能(上文所描述)(步骤1200)。在 执行序列化之后,进行关于是否辨识出异常的判定(查询1202)。若是,则处置异常(步骤 1204)。举例而言,若事务执行控制(控制寄存器0的位8)为0,则辨识出特殊操作异常且抑 制操作。另外,若程序中断筛选控制(指令的1 2字段的位14至15)含有值3,则辨识出规格异 常且抑制操作;或第一操作数地址并不指明双字组边界。若于配置中未安装事务执行设施, 则辨识出操作异常且抑制操作;且若TBEGI为执行类型指令的目标,则辨识出执行异常且抑 制操作。另外,若CHJ处于受限事务执行模式,贝辨识出事务受限异常程序异常且抑制操作。 另外,若事务嵌套深度在累加1时将超过依赖于模型的最大事务嵌套深度,则用中止码13而 中止事务。

[0434]再者,当指令的m字段为非零且CPU并不处于事务执行模式(亦即,事务嵌套深度 为〇)时,则判定对第一操作数的储存可存取性。取决于特定存取异常情况,若第一操作数不 能被存取以进行储存,则辨识出存取异常且操作被设为空值、抑制或终止。另外,辨识用于 第一操作数的任何PER储存变更事件。当m字段为非零且CPU已经处于事务执行模式时,是 否判定对第一操作数的储存可存取性是不可预测的,且针对第一操作数侦测PER储存变更 事件。若也字段为0,则不存取第一操作数。

[0435]除了异常检查以外,亦进行关于CPU是否处于事务执行模式(亦即,事务嵌套深度 是否为〇)的判定(查询1206)。若CPU并不处于事务执行模式,则储存选择的一般寄存器对的 内容(步骤1208)。详言之,将由一般寄存器储存屏敝指明的一般寄存器对的内容储存于不 能由程序直接地存取的依赖于模型的位置中。

[0436]另外,进行关于指令的也字段是否为0的判定(查询1210)。若也字段不等于0,则将 第一操作数地址置放于事务诊断区块地址中(步骤1214),且事务诊断区块地址有效。另外, 自当前PSW的内容设定事务中止PSW(步骤1216)。事务中止PSW的指令地址指明下一循序指 令(亦即,在最外部TBEGIN之后的指令)。

[0437] 此外,判定允许AR修改(A)控制(指令的12字段的位12)的有效值(步骤1218)。有效 A控制为针对当前层级及针对所有外部层级的TBEGIN指令中的A控制的逻辑AND。另外,判定 允许浮点运算(F)控制(指令的1 2字段的位13)的有效值(步骤1220)。有效F控制为针对当前 层级及针对所有外部层级的TBEGIN指令中的F控制的逻辑AND。另外,判定程序中断筛选控 制(PIFC)(指令的1 2字段的位14至15)的有效值(步骤1222)。有效PIFC值为针对当前层级及 针对所有外部层级的TBEGIN指令中的最高值。

[0438] 另外,将为1的值添加至事务嵌套深度(步骤1224),且指令用设定条件码0而完成 (步骤1226)。若事务嵌套深度自0转变至1,则CPU进入非受限事务执行模式;否则,CPU保持 于非受限事务执行模式。

[0439] 返回至查询1210,若&等于0,则事务诊断区块地址无效(步骤1211),且处理继续 步骤1218。相似地,若CPU处于事务执行模式(查询1206 ),则处理继续步骤1218。

[0440]举例而言,TBEGIN的执行的所得条件码包括:

[0441] 0事务起始成功

[0442] 1 -

[0443] 2 -

[0444] 3 -

[0445] 举例而言,程序异常包括:

[0446] •存取(储存,第一操作数)

[0447] •操作(未安装事务执行设施)

[0448] •特殊操作

[0449] •规格

[0450] •事务限制(归因于受限定指令)

[0451] 在一实施例中,上文所提供的异常检查可以变化次序而发生。异常检查的一特定 次序如下:

[0452] •优先权相同于针对一般状况的程序中断条件的优先权的异常。

[0453] •归因于保留PIFC值的规格异常。

[0454] •归因于不在双字组边界上的第一操作数地址的规格异常。

[0455] •存取异常(当出字段为非零时)。

[0456] •归因于超过最大事务嵌套深度的中止。

[0457] •归因于正常完成的条件码0。

[0458] 备注:

[0459] 1.当出字段为非零时,以下内容适用:

[0460] •当起始最外郃事务时,将提供可存取事务诊断区块(TDB) -即使事务从未中止 亦如此。

[0461] •因为TDB的可存取性是否针对嵌套事务被测试是不可预测的,所以应针对任何 嵌套TBEGIN指令提供可存取TDB。

[0462] •相比于仏字段为0时的情形,以下两者的执行可较慢:Bi字段为非零的任何 TBEGIN;及针对由也字段为非零的最外部TBEGIN起始的事务而发生的任何中止处理。

[0463] 2.在一实施例中,若事务并不在事务凭借TRANSACTION END而正常地结束时中止, 则仅恢复经指明以由一般寄存器储存屏敝储存的寄存器。在中止时仅恢复由最外部 TRANSACTION BEGIN指令的GRSM指明的寄存器。

[0464] 12字段应指明提供由事务改变的输入值的所有寄存器对。因此,若事务中止,则当 进入中止处理例程时,输入寄存器值将恢复为其原始内容。

[0465] 3.TRANSACTION BEGIN(TBEGIN)指令被预期为继之以条件分支指令,该条件分支 指令将判定事务是否被成功地起始。

[0466] 4.若事务归因于并未引起中断的条件而中止,则由事务中止PSW指明的指令接收 控制(亦即,在最外部TRANSACTION BEGIN(TffiGIN)之后的指令)。除了由TRANSACTION BEGIN(TBEGIN)指令设定的条件码以外,当事务中止时亦设定条件码1至3。

[0467] 因此,在最外部TRANSACTION BEGIN(TBEGIN)指令之后的指令序列应能够适应所 有四个条件码,即使在此实例中TBEGIN指令仅设定码0亦如此。

[0468] 5.在大多数模型上,既在TRANSACTION BEGIN上又当事务中止时,可藉由指定在一 般寄存器储存屏敝中进行储存及恢复所需要的寄存器的最小数目而实现改良型效能。

[0469] 6 .在处于非受限事务执行模式时,程序可呼叫可变更存取寄存器或浮点寄存器 (包括浮点控制寄存器)的服务功能。尽管此类服务例程可将已变更寄存器储存于项上且在 结束时恢复这些寄存器,但事务可在例程的正常结束之前中止。若呼叫程序在CHJ处于非受 限事务执行模式时未为了保留这些寄存器而做好准备,则呼叫程序可不能容许这些寄存器 的服务功能变更。

[0470] 为了在处于非受限事务执行模式时防止存取寄存器的非故意变更,程序可将允许 AR修改控制(TRANSACT I ON BEG IN指令的12字段的位12)设定为0。相似地,为了防止浮点寄 存器的非故意变更,程序可将允许浮点运算控制(TBEGIN指令的12字段的位13)设定为0。 [0471 ] 7.在TRANSACTION BEGIN(TBEGIN)指令的执行期间辨识的程序异常情况经受由任 何外部TBEGIN指令设定的有效程序中断筛选控制。在最外部TBEGIN指令的执行期间辨识 的程序异常情况不经受筛选。

[0472] 8.为了以序列化方式更新多个储存位置,传统码序列可使用锁定字组(旗号)。若 (a)事务执行用以实施多个储存位置的更新、(b)程序亦提供「后退」路径以在事务中止时被 调用,且(c)后退路径使用锁定字组,则事务执行路径亦应针对锁定的可用性进行测试,且 若锁定不可用,则凭借TRANSACTIONEND指令来结束事务且分支至后退路径。此情形确保对 序列化资源的一致存取,而不管这些资源是否被事务地更新。

[0473] 或者,若锁定不可用,则程序可中止;然而,中止处理可显著地慢于经由TEND简单 地结束事务。

[0474] 9.若有效程序中断筛选控制(PIFC)大于0,则CPU筛选大多数数据异常程序中断。 若有效允许浮点运算(F)控制为0,则数据异常码(DXC)将由于归因于数据例外程序异常情 况的中止而不在浮点控制寄存器中进行设定。在此情境(筛选适用且有效F控制为0)中,DXC 被检测的唯一位置处于TBEGIN指定的TDB中。若程序的中止处理例程在此类情形中检测 DXC,则一般寄存器B1应为非零,使得设定有效事务诊断区块地址(TDBA)。

[0475] 10.若PER储存变更或零地址侦测条件针对最外部TBEGIN指令的TBEGIN指定的TDB 而存在,且PER事件抑制并不适用,则在指令的执行期间辨识PER事件,因此造成事务立即中 止,而不管是否存在任何其他中止条件。

[0476] 在一实施例中,TBEGIN指令将事务中止地址隐含地设定为在TBEGIN之后的下一循 序指令。此地址意欲为条件分支指令,该条件分支指令取决于条件码(CC)而判定是否进行 分支。成功TBEGIN设定CC0,而已中止事务设定CC1、CC2或CC3。

[0477] 在一实施例中,TBEGIN指令提供指明事务诊断区块(TDB)的地址的选用储存操作 数,若事务中止,则信息储存至该事务诊断区块(TDB)中。

[0478]另外,TBEGIN指令提供包括以下各者的立即操作数:

[0479] -般寄存器储存屏敝(GRSM),其指示一般寄存器的哪些对将在事务执行开始时被 储存且在事务中止时被恢复;

[0480]允许事务在事务修改存取寄存器时中止的位(A);

[0481 ]允许事务在事务尝试执行浮点指令时中止的位(F);及

[0482]程序中断筛选控制(PIFC),其在事务中止时允许个别事务层级略过程序中断的实 际呈现。

[0483] A、F及PIFC控制在各种嵌套层级处可不同,且在内部事务层级结束时恢复为先前 层级。

[0484] 此外,TBEGIN(或在另一实施例中,TBEGINC)用以形成事务令牌。视情况,可使该令 牌与藉由TEND指令形成的令牌匹配。对于每一TBEGIN(或TBEGINC)指令,作为一实例,令牌 由第一操作数地址形成。此令牌可独立于基底寄存器是否为〇而形成(不同于仅在基底寄存 器为非零时发生的TDB地址设定)。对于用非零基底寄存器而执行的每一TRANSACTION END 指令,相似令牌由其储存操作数形成。若令牌并不匹配,则可辨识程序异常以向程序提醒未 配对指令。

[0485] 令牌匹配提供意欲藉由确保TEND陈述式与TBEGIN(或TBEGINC)适当地配对而改良 软件可靠性的机制。当TBEGIN指令在特定嵌套层级处执行时,令牌由识别事务的此执行个 体的储存操作数地址形成。当执行对应TEND指令时,令牌由指令的储存操作数地址形成,且 CPU比较用于嵌套层级的开始令牌与结束令牌。若令牌并不匹配,则辨识出异常情况。模型 可针对仅某一数目个嵌套层级(或不针对嵌套层级)实施令牌匹配。令牌可不涉及储存操作 数地址的所有位,或位可经由杂凑或其他方法而组合。令牌可藉由TBEGIN指令形成,即使不 存取TBEGIN指令的储存操作数亦如此。

[0486] 概言之,非受限事务的处理如下:

[0487] •若 TND = 0:

[0488] 。若出辛0,则自第一操作数地址设定事务诊断区块地址。

[0489] 。将事务中止PSW设定为下一循序指令地址。

[0490] 〇将由12字段指明的一般寄存器对储存于依赖于模型的位置中。

[0491 ]-不能由程序直接地存取。

[0492] •计算有效PIFC、A及F控制

[0493] 〇有效A = TBEGIN A及任何外部A

[0494] 。有效F = TBEGIN F及任何外部F

[0495] 。有效PIFC=max(TBEGIN PIFC,任何外部PIFC)

[0496] •累加事务嵌套深度(TND)

[0497] •若TND自0转变至1,则CPU进入事务执行模式

[0498] •将条件码设定为0

[0499] 〇当在TBEGIN之后的指令接收控制时:

[0500] - TBEGIN成功由CC0指示 [0501 ]-已中止事务由非零CC指示 [0502] •异常:

[0503] 〇在嵌套深度超过时的中止码13

[0504] 〇在也字段为非零且储存操作数不能被存取以进行储存操作时的存取异常(各种 PIC中的一个)

[0505] 。在TBEGIN指令为执行类型指令的目标时的执行异常(PIC 0003)

[0506] 。在未安装事务执行设施时的操作异常(PIC 0001)

[0507] 〇在以下任一情形时的PIC 0006

[0508] _ PIFC无效(为3的值)

[0509]-第二操作数地址未双字组对准

[0510]。在事务执行控制(CR0.8)为0时的PIC 0013十六进位

[0511] 〇在受限TX模式下发出时的PIC 0018十六进位

[0512] 如上文所指示,事务(受限或非受限)可由TRANSACTION END(TEND)指令结束。参看 图13来描述与事务结束(TEND)指令的处理相关的另外细节。执行TEND的CPU(亦即,处理器) 执行图13的逻辑。

[0513]参看图13,最初,基于处理器获得(例如,提取、接收等等)TEND指令,执行各种异常 检查,且若存在异常(查询1300),则处置异常(步骤1302)。举例而言,若TRANSACTION END为 执行类型指令的目标,则抑制操作且辨识出执行异常;且若事务执行控制(CR0的位8)为0, 则辨识出特殊操作异常且抑制操作。再者,若于配置中未安装事务执行设施,则辨识出操作 异常且抑制操作。

[0514] 返回至查询1300,若未辨识出异常,则使事务嵌套深度递减(例如,减1)(步骤 1304)。进行关于事务嵌套深度在递减之后是否为0的判定(查询1306)。若事务嵌套深度为 〇,则交付由事务(及事务嵌套内的其他事务(若存在),此事务为事务嵌套的部分)进行的所 有储存存取(步骤1308)。另外,CPU离开事务执行模式(步骤1310),且指令完成(步骤1312)。

[0515] 返回至查询1306,若事务嵌套深度不等于0,则TRANSACTION END指令恰好完成。

[0516] 若CPU在操作开始时处于事务执行模式,则将条件码设定为0;否则,将条件码设定 为2〇

[0517] 应注意,有效允许浮点运算(F)控制、允许AR修改(A)控制及程序中断筛选控制 (PIFC)经重设至其在起始正被结束的层级的TRANSACTION BEGIN指令之前的各别值。另外, 在操作完成时执彳丁序列化功能。

[0518] 在最外部TRANSACTION END指令完成时辨识的PER指令提取及事务结束事件不会 引起事务中止。

[0519] 在一实例中,TEND指令亦包括基本字段B2及位移字段D2,该两个字段经组合(例如, 添加)以建立第二操作数地址。在此实例中,可执行令牌匹配。举例而言,当出为非零时,第 二操作数地址的选择的位与藉由对应TBEGIN形成的事务令牌匹配。若存在失配,则存在异 常(例如,PIC 0006)。

[0520] 除了以上内容以外,事务可由TRANSACTION ABORT指令隐含地或明确地中止。由 TAB0RT或以其他方式使事务中止包括执行数个步骤。一般而言,参看图14来描述用于中止 处理的步骤的实例。若基于中止由TAB0RT或以其他方式起始而存在处理差异,则在以下描 述中指示该差异。在一实例中,处理器(例如,CPU)正执行图14的逻辑。

[0521] 参看图14,最初,基于TAB0RT指令或隐含中止的执行,交付在CPU处于事务执行模 式时进行的非事务储存存取(步骤1400)。舍弃在CPU处于事务执行模式时进行的其他储存 (例如,事务储存)(步骤1402)。

[0522] CPU离开事务执行模式(步骤1404),且后续储存非事务地发生。当前PSW用事务中 止PSW的内容取代,惟条件码如上文所描述而被设定除外(不同于以下情形,其中若TDBA有 效但区块为不可存取的,则CC=1)(步骤1406)。作为中止处理的部分或在中止处理之后,处 理分支至事务中止PSW指定位置以执行动作。在事务为受限事务的一实例中,位置为 TBEGINC指令,且动作为该指令的重新执行;且在事务为非受限事务的另外实例中,位置为 在TBEGIN之后的指令,且动作为该指令的执行,其可为(例如)至中止处理例程的分支。 [0523]紧接着,进行关于事务诊断区块地址是否有效的判定(查询1408)。当事务诊断区 块地址有效时,将识别中止的原因的诊断信息及一般寄存器的内容储存于TBEGIN指定事务 诊断区块中(步骤1410)。上文参考事务诊断区块来描述所储存的TDB字段及TDB字段被储存 的条件。

[0524]若事务诊断区块地址有效,但区块已变得不可存取,则在执行最外部TBEGIN指令 之后,不存取该区块且条件码1适用。

[0525] 对于归因于引起中断的程序异常情况而中止的事务,储存程序中断TDB。

[0526] 返回至查询1408,若事务诊断区块地址无效,则不储存TBEGIN指定的TDB且条件码 2或3适用,此取决于中止的原因。

[0527] 除了以上内容以外,亦将事务嵌套深度设定为等于0(步骤1412)。另外,恢复经指 定以由最外部TBEGIN指令储存的任何一般寄存器对(步骤1414)。当事务中止时,不恢复未 经指明以由最外部TBEGIN指令储存的一般寄存器对。

[0528] 另外,执行序列化功能(步骤1416)。序列化功能或操作包括:在发生概念上后续的 储存存取(及相关参考位及改变位设定)之前,由CPU完成所有概念上先前的储存存取(且作 为一实例,对于z/Archi tecture,相关参考位及改变位设定),如由其他CPU及I/O子系统所 观察。序列化实现对存储器及对存储器金钥的所有CPU存取的序列,惟与ART表项及DAT表项 提取相关联的存取除外。

[0529]如由处于事务执行模式的CPU所观察,序列化正常地操作(如上文所描述)。如由其 他CPU及I/O子系统所观察,由于使事务嵌套深度递减至0(正常结束)的TRANSACTION END指 令或由于正被中止的事务,在CPU处于事务执行模式时执行的序列化操作在CPU离开事务执 行模式时发生。

[0530]对于以除了由TAB0RT以外的其他方式起始的中止处理,若事务归因于引起中断的 异常情况而中止(查询1418),则将与中断相关联的中断码或参数储存于对应于中断类型的 已指派储存位置处(步骤1420)。另外,如上文所设定,将当前PSW储存至中断旧PSW中(步骤 1422)。此后,或若事务并未归因于引起中断的异常情况而中止,则指令以条件码0而结束。 [0531 ] 除了以上内容以外,亦在针对z/Archi tecture的解译性执行的一实施例中,当CPU 处于事务执行模式且发生将正常地引起拦截码4、12、44、56、64、68或72的访客条件时,并不 发生拦截。实情为,CPU保持于解译性执行模式,且向访客指示中止条件如下:

[0532] •对于非受限事务,事务归因于受限定指令而中止(中止码11)。若侦测到并行PER 事件且针对PER而启动CPU,则程序中断以中断码0280十六进制而发生。

[0533] •对于受限事务,辨识事务限制异常。若侦测到并行TOR事件且针对TOR而启动 CPU,则程序中断以中断码0298十六进制而发生。

[0534]当事务归因于程序异常情况而中止时,程序中断筛选可禁止中断的实际呈现。对 于可引起拦截的程序中断,筛选亦禁止拦截。

[0535] 在一个实施例中,为了便于失败事务的错误确定,调试包括受限和非受限事务的 事务(即,程序调试器单步调试事务以看它是如何执行的)。存在设施以单步调试待测码,包 括作为z/Architecture的一部分由国际商业机器公司提供的程序事件记录(PER)设施。然 而,如当前限定的那样,PER不使其自身调试事务,因为PER事件导致引起事务中止的程序中 断。因此,根据一个实施例,提供控制以便于事务的调试。详言之,提供PER控制以便于使用 PER来调试事务。

[0536] 在一个特定实施例中,提供两个PER控制,如下所示:

[0537] 事务结束事件控制:当未安装事务执行设施时,或者当安装设施且控制寄存器9的 位38为0时,未识别出事务结束事件。当安装事务执行设施且位38为1时,作为最外部 TRANSACTION END指令完成的结果,识别出事务结束事件。

[0538] 事务抑制(ES)控制:当CPU处于事务执行模式时,控制寄存器9的位41在为1时指定 忽略例如寄存器的位32-34、36、37和39中的PER事件屏蔽并假定包含0。当CPU不处于事务执 行模式时,或者当寄存器的位41为0时,所有PER事件屏蔽如限定的那样操作。在一个实施例 中,可以抑制的PER事件的含义如下:

[0539] *位32:成功分支事件;

[0540] *位33:1 (指令)提取事件;

[0541 ] *位34:储存变更事件;

[0542] *位36:使用真实地址存储事件;

[0543] *位37:零地址检测事件;或

[0544] *位39:1提取无效事件。

[0545] 当执行最外部TRANSACTION BEGIN指令且ES控制为1时,抑制任意PER存储变更或 对于TBEGIN指定的TDB的零地址检测事件以及任意指令提取基本事件;然而,如果发生最外 部TRANSACTION BEGIN,不抑制指令提取无效事件。

[0546] 可能设置(控制寄存器10-11中的)PER地址的范围的操作系统调试器可以使用事 务结束事件控制和事件抑制控制以便于程序调试,其中所述范围包括事务执行的代码,如 参照图15所述。在一实例中,处理器(如执行待调试的事务的处理器)正在执行该逻辑。

[0547] 参看图15,最初,例如,经由TBEGIN或TBEGINC而起始事务(步骤1500)。

[0548] 在事务的执行期间,若识别出PER事件(查询1502),则中断事务(步骤1504)。在一 实例中,中断使得待执行的事务内的下一指令的地址被保存。

[0549] 为了在事务(受限或非受限)的执行期间防止识别出的PER事件之后的连续循环, 控制程序可以重新分派事务,其中事务结束事件和事件抑制控制(控制寄存器9的位38和 41)二者设为1(步骤1506-1508)。在重新分派中,在一实例中,在事务的开始处(如,在 TRANSACTION BEGIN指令处)开始执行。设置控制使得事务中的任何其他PER事件(相同事件 或其他事件)被忽略,直到TRANSACTION END指令(即,最外部TEND)为止(询问1512),此时通 过通知控制程序以重设位38和41为0,PER事务结束事件便于正常PER操作的恢复。

[0550] 事件抑制控制允许控制程序的程序中断处置器快速地禁止所有PER事件(除了事 务结束事件),而不需要对于其中维持当前PER设置的任何任务结构的存取。或者,如果控制 程序具有对这种结构的存取,则可以重新驱动事务(如,受限事务),仅禁止识别出的PER事 件并保持其他事件。

[0551]在下文中在标题程序-事件记录之下描述关于由国际商业机器公司提供的PER设 施的进一步细节。进一步,尽管在一个实施例中,正在抑制PER事件,但是在其他实施例中, 可以抑制其他事件,包括但不限于引起中断的其他事件。PER事件仅为一个实例。

[0552]事务执行可用于多种情境中,包括但不限于部分内嵌、理论式处理及锁定省略。在 部分内嵌中,待包括于执行路径中的部分区包覆于TBEGIN/TEND中。TAB0RT可包括于其中以 在侧向出口(side-exit)上回复状态。对于理论,诸如,以Java,对已取值指针的空值检查可 藉由使用事务而延迟至循环边缘。若指针为空值,则事务可使用TAB0RT而安全地中止, TAB0RT 包括于 TBEGIN/TEND 内。

[0553] 至于锁定省略,参看图16A至图16B及下文所提供的码片段来描述锁定省略的使用 的一实例。

[0554] 图16A描绘多个队列元素1602a至1602d的双向链接清单1600。新队列元素1602e将 插入至队列元素的双向链接清单1600中。每一队列元素1602a至1602e包括前向指针1604a 至1604e及向后指针1606a至1606e。如图16B所示,为了将队列元素1602e添加于队列元素 1602b与队列元素1602c之间,(1)将向后指针1606e设定为指向队列元素1602b、(2)将前向 指针1604e设定为指向队列元素1602c、(3)将向后指针1606c设定为指向队列元素1602e, 且(4)将前向指针1604b设定为指向队列元素1602e。

[0555] 对应于图16A至图16B的实例码片段如下:

[0556]

Figure CN104364772BD00371

[0557]在一实例中,若事务用于锁定省略,但后退路径使用锁定,则事务将至少提取锁定 字组以查看锁定字组是否可用。若另一 CPU非事务地存取锁定,则处理器确保事务中止。 [0558]如本文所使用,互换地使用存储器、中央存储器、主存储器、存储器及主存储器,除 非藉由使用隐含地或明确地另有提及。另外,虽然在一实施例中事务有效地延迟包括延迟 将事务储存交付至主存储器直至选择的事务完成;但在另一实施例中,事务有效地延迟包 括允许对存储器的事务更新,但保持旧值且在中止时使存储器恢复为旧值。

[0559] 程序事件记录(PER)

[0560]下面描述如对于由国际商业机器公司提供的z/Architecture限定的PER的一个实 施例。

[0561] PER的目的在于协助调试程序。它允许程序变更为下面几种类型的事件。

[0562] *成功的分支指令的执行。提供具有仅当分支目标位置在指明的存储区域内时发 生的事件的选项。

[0563] *从指明的存储区域的指令的提取。

[0564] *指明的存储区域的内容的变更。提供具有仅当存储区域在指明的地址空间内时 发生的事件的选项。

[0565] * STORE USING REAL ADDRESS指令的执行。

[0566] 程序可以选择性地指定一种或多种类型的事件被识别,除了对于STORE USING REAL ADDRESS的事件仅可以与储存变更事件一起指定之外。藉由程序中断将关于PER事件 的信息提供到程序,其中在中断码中识别中断的原因。

[0567] PER指令提取无效

[0568] 在实施z/Architecture的模型上PER-3设施可以可用,并且在z/Architecture架 构模式中可用。当安装该设施时,控制寄存器9的位39当为1时指定PER指令提取事件强制无 效。当控制寄存器9的位33,指令提取PER事件屏蔽位,也为1时,为了该目的,位39有效。当位 33为0时,未识别出PER指令提取事件,并且位39没有效果。当PER-3设施未安装或位39为0 时,PER指令提取事件不强制无效。将强制无效的PER指令提取事件称为PER指令提取无效事 件。将不强制无效的PER事件称为PER基本事件。

[0569]当安装PER-3设施,并且位39为1时,在执行提取的指令之前出现由PER指令取回事 件引起的中断,指示PER指令提取无效事件,报告没有其他PER事件并且没有其他程序中断 条件,并且无效指令的执行。当未安装PER-3设施,或者位39为0时,不强制无效,指示PER指 令提取基本事件,可以同时报告其他PER事件和其他程序中断条件,并且可以完成、终止、抑 制或无效指令的执行。在不存在其他条件时,在提取的指令或其操作单元的执行完成之后, 出现由PER指令提取基本事件引起的中断。

[0570] 控制寄存器分配和地址空间控制元素

[0571] 用于控制PER的信息驻留于控制寄存器9、10和11和地址空间控制元素中。控制寄 存器中的信息具有如下格式:

[0572] 在一个实施例中,控制寄存器9包括:

[0573] PER事件屏蔽(EM):位32-34和36指定识别何种类型的事件。当安装PER-3设施时, 还使用PER事件屏蔽的位39。在一实例中,分配各位如下:

[0574]位32:成功分支事件

[0575] 位33:指令提取事件

[0576] 位34:储存变更事件

[0577] 位36:使用真实地址存储事件(位34也将是1)

[0578]位39:指令提取无效事件(位33将是1)

[0579] 位32-34和位36在为1时指定识别出对应类型的事件。然而,当位34也为1时,为了 该目的,位36有效。当位34为1时,识别出储存变更事件。当位34和36为1时,识别出储存变更 事件和使用真实地址存储事件二者。当位为〇时,未识别出对应类型的事件。当位34为0时, 未识别出储存变更事件和使用真实地址存储事件二者。

[0580] 当未安装PER-3设施时,忽略位39。当位33也为1时,位39有效。当位33为1,并且安 装PER-3设施,并且位39为1时,识别出PER指令提取无效事件。当位33为1且位39为0(或者未 安装PER-3设施)时,识别出PER指令提取基本事件。当位33为0时,既未识别出PER指令提取 基本事件也未识别出PER指令提取无效事件。

[0581 ]分支地址控制(B):控制寄存器9的位40在为1时指定仅对于至指明的存储区域内 的位置的分支出现成功分支事件。当位40为0时,无论分支目标地址如何,都出现成功分支 事件。

[0582]存储变更空间控制(S):控制寄存器9的位42在为1时指定作为对于仅位于指明的 地址空间内的指明的存储区域的参照的结果而出现储存变更事件。将地址空间指明为藉由 用于转译对于地址空间的参考的地址空间控制元素中储存变更事件位而出现储存变更事 件的地址空间。当DAT(动态地址转译)不有效或位42为0时,储存变更事件不受限于仅对于 特定地址空间出现。

[0583] 在一个实施例中,控制寄存器10包括:

[0584] PER开始地址:控制寄存器10的位0-63是指明存储区域的开始的地址。

[0585] 在一个实施例中,控制寄存器11包括:

[0586] PER结束地址:控制寄存器11的位0-63是指明存储区域的结束的地址。

[0587] 地址空间控制元素具有如下格式之一:

[0588] (A)区表或区段表指明(R = 0),在一个实施例中,其包括:区表或区段表原点(位 0-51);子空间群组控制(G),位54;私有空间控制(P),位55;储存变更事件控制(S),位56;切 换事件控制(X),位57;真实空间控制(R),位58;指明类型控制(DT),位60-61;以及区表或区 段表长度(TL),位62-63。

[0589] (B)真实空间指明(R = 1 ),在一个实施例中,其包括真实空间令牌原点(位0-51); G;P;S;X;以及R。

[0590] 储存变更事件位(S):当控制寄存器9中的储存变更空间控制为1时,地址空间控制 元素的位56在为1时指定由地址空间控制元素限定的地址空间是可以出现储存变更事件的 地址空间。当地址空间控制元素用于执行对于存储操作数存储参考的动态地址转译时,检 验位56。地址空间控制元素可以分别是控制寄存器1、7或13中的PASCE(主要ASCE)、SASCE (次要ASCE)或HASCE (本籍ASCE),或者可以在存取寄存器转译期间从ASN第二表项获得。代 替从主储存器中的ASN第二表项获得,位56可以从ART后备缓冲器(ALB)中的ASN第二表项获 得。当储存变更空间控制为〇时,忽略位56。

[0591] 编程备注:

[0592] 使能CPU用于PER指令提取无效可以用以在由控制寄存器10和11指明的储存区域 内的任意指令的执行之前确定CPU的状态。无效的指令可以是在成功分支之后、LOAD PSW之 后或LOAD PSW EXTENDED之后的第一指令;或者可以是在存储区域中且在循序执行的处理 中存取的执行类型指令或最左侧指令的目标。在记录期望的信息以便允许CPU执行该指令 之后,CPU将被禁止用于指令提取无效或,或者控制寄存器10和11将被改变以指明不同的储 存区域。这可以与使能用于相同储存区域内的PER成功分支相比较,其使得PER事件仅在以 上所述的第一情况中被报告,但是不需要特殊动作来继续。

[0593]

[0594] PER处于PSW的位1,PER屏蔽的控制下。当PER屏蔽和特定PER事件屏蔽位均为1时, 使能CHJ用于对应类型的事件;否则,禁止它。然而,当储存变更屏蔽位和使用真实地址存储 屏蔽位二者为1时,CPU被使能用于使用真实地址存储事件。

[0595] 当安装PER-3设施时,然后当指令提取事件屏蔽位,指令提取无效事件屏蔽位和 PER屏蔽均为1时,使能CPU用于PER指令提取无效事件。归因于PER指令提取无效事件的中断 引起使得事件无效的指令的执行。

[0596] 归因于PER基本事件的中断通常在造成该事件的指令的执行之后出现。事件的出 现不影响指令的执行,其可以完成、部分完成、终止、抑制或无效。然而,储存变更事件的识 别使得不多于4K字节储存于引起事件的字节开始,而这可能导致中断指令的部分完成。

[0597] 在造成事件的指令执行之前出现对于指令提取无效事件的中断,并且无效操作。

[0598] 当在特定PER事件发生时CPU被禁止用于特定PER事件时,通过PSW中的PER屏蔽或 者通过控制寄存器9中的屏蔽,未识别出事件。

[0599] 对于PSW中的PER屏蔽或控制寄存器9、10和11中PER控制字段的改变影响PER以紧 接下来的指令的执行开始。因此,如果作为改变的结果,指令提取无效事件应用于紧接下来 的指令,则将无效该指令的执行并且将报告指令提取无效事件。

[0600] 对于控制寄存器1、7或13中的地址空间控制元素中的储存变更事件位的改变也影 响PER以紧接下来的指令的执行开始。在主储存器或ALB中ASN第二表项的存取寄存器转译 期间,可以获得的对于地址空间控制元素中的储存变更事件位的改变不一定对于PER具有 立即影响,如果有的话。然而,在清除ALB的PURGE ALB或COMPARE AND SWAP AND PURGE执行 之后PER被立即影响。

[0601 ]如果在对于该种类型的事件将CPU从被使能改变为被禁止的指令的执行期间出现 PER基本事件,那么识别出该PER事件。

[0602] PER基本事件可以在指令的试验执行中被识别,并且在指令之后,DAT表项和操作 数可以对于实际执行重新提取。如果在试验执行和实际执行之间通过另一 CPU或者通过信 道程序来修改任意重新提取的字段,则指示的PER事件用于试验还是实际执行是不可预测 的。

[0603]原因的识别

[0604] PER的程序中断将中断码的位8设置为1,并将识别信息放置在真实存储位置ISO-159。 当 PER 事件是储存变更事件 ,也将信息存储在位置 161。通过程序旧 PSW 和 ILC(中断长度 码)中的指令地址来提供额外信息。

[0605] 在一实例中,位置150-151包括:

[0606] PER码:由位的位置0-2、4和7中的1来指示PER事件的出现。在一个实施例中,对于 特定类型的事件的PER码中的位的位置如下:

[0607]

Figure CN104364772BD00411

[0608] 位置150的位位置2中的1和位位置4中的0指示储存变更事件,而位位置2和4中的1 指示使用真实地址存储事件。当程序中断发生时,可以同时指示多于一种类型的PER基本事 件。另外,如果存在另一程序中断条件,则用于程序中断的中断码可以指示PER基本事件和 其他条件二者。

[0609] 当对于PER指令提取无效事件出现程序中断时,在PER码中,位1和7设置为1。不能 同时指示其他PER事件。

[0610] 位置150-151的位位置3和6中存储0。当未安装PER-3时,将0储存在位位置7中。

[0611] 寻址和转译模式标识(ATMID):在指示PER事件时的程序中断期间,引起事件的指 令的执行开始时的PSW的位31、32、5、16和17可以分别储存在真实位置150-151的位位置8和 10-13中。如果存储位31、32、5、16和17,那么1位储存在位置150-151的位位置9中。如果未储 存位31、32、5、16和17,那么0位储存在位置150-151的位位置8中。

[0612] 真实位置150-151的位8-13命名为寻址和转译模式标识(ATMID)。位9命名为ATMID 有效位。当位9为0时,指示存储了无效ATMID(所有0)。

[0613]在一个实施例中,有效ATMID的各位的含义如下:

[0614]

Figure CN104364772BD00412

[0615] 只有在PER事件由以下指令之一引起时才必须储存有效ATMID:

[0616] BRANCH AND SAVE AND SET MODE(BASSM).BRANCH AND SET AUTHORITY(BSA), BRANCH AND SET MODE(BSM),BRANCH IN SUBSPACE GROUP(BSG),LOAD PSW(LPWS),LOAD PSW EXTENDED(LPWSE),PROGRAM CALL(PC).PROGRAM RETURN(PR).PROGRAM TRANSFER(PT), PROGRAM TRANSFER WITH INSTANCE(PTI),RESUME PROGRAM(RP),SET ADDRESS SPACE CONTROL(SAC),SET ADDRESS SPACE CONTROL FAST(SACF),SET ADDRESSING MODE(SAM24, SAM31,SAM64),SET SYSTEM MASK(SSM),STORE THEN AND SYSTEM MASK(STNSM),STORE THEN OR SYSTEM MASK(STOSM),SUPERVISOR CALL(SVC),and TRAP(TRAP2,TRAP4)〇

[0617] 如果PER事件由任何其他指令引起,则有效ATMID是否存储是不可预测的。PER指令 提取无效事件屏蔽位的值不影响ATMID字段的内容。

[0618] PER ASCE标识(AI):在一实例中,如果PER码包含储存变更事件(位2是1且位4是0) 的指示,并且当DAT启动时事件出现,则位置150-151的位14和15被设置以识别用以转译引 起事件的参考的地址空间控制元素(ASCE),如下:

[0619]

Figure CN104364772BD00421

[0620] 通过识别使用存取列表项令牌(ALET)00000000或00000001十六进制或ALET通过 存取列表项指明包含ASCE或本籍ASCE的ASN第二表项,CPU可以避免将位14和15设置为01。

[0621] 如果作为STORE HALFWORD RELATIVE LONG或STORE RELATIVE LONG的结果而出现 PER储存变更事件,则位14和15对应于用以提取指令的ASCE:当CPU处于主要空间模式或存 取寄存器模式时〇〇,而当CPU处于本籍空间模式时11。

[0622] 如果以下任意为真,将0储存在位置150-151的位位置14和15中。

[0623] * ASCE不用于转译引起事件的参考。

[0624] * PER码指示储存变更事件和使用真实地址储存事件均不发生(即,码的位2为0)。

[0625] 备注:当DAT关闭时或者当限定操作数以包含真实地址时(如对于INVALIDATE DAT TABLE ENTRY,INVALIDATE PAGE TABLE ENTRY,LOAD USING REAL ADDRESS和STORE USING REAL ADDRESS的情况那样)ASCE不用于转译参考。当限定操作数以包含真实或绝对地址时 (如对于PERFORM FRAME MANAGEMENT FUNCTION的情况那样)ASCE也不用于转译参考。

[0626] PER地址:位置152-159处的PER地址字段包含用以提取造成识别出的(一个或多 个)PER事件的指令的指令地址。

[0627] 当指令是执行类型指令(EXECUTE或者EXECUTE RELATIVE LONG)的目标时,将用以 提取执行类型指令的指令地址放置于PER地址字段中。

[0628] PER存取标识(PAID):如果在PER码中指示储存变更事件,并且PERASCE标识(AI,位 置150-151的位14-15)包含01二进制,则将事件应用的地址空间的指示储存在位置161。使 用的存取寄存器的数量储存在位置161的位位置4-7中,并且0储存在位位置0-3中。当PER ASCE标识不含有01二进制时,位置161的内容是不可预测的。

[0629] 指令地址:程序旧PSW中的指令地址是本来接下来要执行的指令的地址,除非还指 示另一程序条件,在这种情况下,指令地址是由归因于该条件的指令结束所确定的指令地 址。当识别出PER指令提取无效事件时,程序旧PSW中的指令地址是造成事件的指令的地址。 这是真实储存位置152-159中PER地址字段中储存的相同地址。

[0630] ILC:对于PER指令无效事件,ILC为0。对于PER基本事件,ILC指示由PER地址指明的 指令的长度,除了当由为〇的ILC的LOAD PSW,LOAD PSW EXTENDED,PROGRAM RETURN或监督 呼叫中断组引入的PSW的同时规格异常时。

[0631] 备注:

[0632] 1.PSW位13时扩展寻址模式位,且PSW位32是基本寻址模式位。当PSW位31和32二者 为1时,它们指定寻址模式。当PSW位31为0时,如果PSW 32为0,则该位指定24位寻址模式,而 如果该位为1,则指示31位寻址模式。PSW位5是DAT模式位,并且PSW位16和17是地址空间控 制位。

[0633] 2.有效ATMID允许程序处理PER事件以确定提取引起事件的指令的地址空间,并且 还确定何种转译模式应用于指令的储存操作数参考,如果有的话。必须储存有效ATMID的每 一条指令可以改变一个或多个PSW位5、16和17,结果是由于PER事件而存储的程序旧PSW中 那些位的值不一定是引起事件的指令的执行开始处存在的值。必须储存有效ATMID的指令 仅为可以改变PSW位5、16和17的任意一个的指令。

[0634] 3.如果指示储存变更PER事件且当事件发生时DAT启动,则由PER ASCE标识,真实 位置150-151的位14和15给出用以转译引起事件的参考的地址空间控制元素的指示。如果 位14和15指示使用指定AR的地址空间控制元素,则可以使用真实位置161中的PER存取标 识,以确定参考的地址空间。为了确定D A T是否启动,处理TO R事件的程序应该首先检验 ATMID有效位以确定是否存储有效ATMID,并且如果存储了有效ATMID,则检验ATMID中的DAT 模式位。如果未存储有效ATMID,则程序应该检验程序旧PSW中的DAT模式位。

[0635] 4.如果存储了有效ATMID,则也允许处理PER事件的程序确定对于引起PER事件的 指令存在的寻址模式(24位、31位或64位)。寻址模式的该知识允许程序在没有错误机会的 情况下确定指令的储存操作数(如果有的话)和指令的地址的位位置0-39中的一位的含义, 从而精确地确定指令和操作数的位置。注意,通过PER地址是真实位置152-159,不一定无错 误地提供指令的地址,因为该地址可能是执行类型指令的地址,其中目标指令的地址仍然 要从指定执行类型指令的第二操作数地址的字段确定。还要注意,错误的另一可能源是,在 24位或31位寻址模式中,通过分别刚好在16M字节或2G字节边界以下开始,指令或操作数在 存储器中可能环绕。

[0636] 5.对于可以改变寻址模式位的所有指令必须储存有效ATMID。然而,ATMID机构不 提供可以精确地定位引起PER事件的指令并且指令的操作数的完全确信,这是因为LOAD CONTROL和LOAD ADDRESS SPACE PARAMETERS可以改变用以提取指令的地址空间控制元素。

[0637]指示的优先级

[0638]当识别出PER指令提取无效事件且其他程序中断条件存在时,指示具有最高优先 级的程序中断条件。

[0639]当指示PER指令提取无效事件时,不指示其他PER事件。当不指示PER指令提取无效 事件时,可以识别并报告多于一个的PER基本事件。该部分的剩余应用于这些情况。

[0640] 当程序中断出现且已经识别出多于一个的PER基本事件时,在PER码中同时指示所 有识别出的PER事件。另外,如果另一程序中断条件同时存在,则用于程序中断的中断码指 示PER条件和其他条件二者。

[0641 ]在用于SUPERVISOR CALL的指令提取基本事件的情况下,程序中断紧接着监督呼 叫中断之后出现。

[0642]如果在指令的执行期间识别出PER基本事件,该指令也引入具有之前识别出的PSW 格式错误的类型的新PSW,则在程序中断的中断码中同时指示规格异常和PER二者。如果PSW 格式错误是之后识别出的类型,则在中断码中仅指示PER。在两种情况下,将无效PSW储存为 程序旧PSW。

[0643] PER基本事件的识别通常不影响指令执行的结束。然而,在下面的情况中,通常不 完成可中断指令的执行:

[0644] 1.当指令归因于异步条件(1/0、外部、重启或可抑制机器检验条件)中断时,在普 通优先级顺序中,首先出现对于PER事件的程序中断,接下来出现其他中断(经历新PSW中的 屏蔽位)。

[0645] 2.当执行停止功能时,指示PER事件的程序中断在CPU进入停止状态之前出现。

[0646] 3.当识别出任意程序异常时,同时指示对于该指令执行识别出的PER事件。

[0647] 4.取决于模型,在特定情形中,PER事件的识别可以出现以使得指令过早地中断, 而没有程序异常的同时指示,没有对于任何异步条件的中断且没有CPU进入停止状态。特别 地,储存变更事件的识别使得不多于4K字节以引起事件的字节开始地储存。

[0648] 在以上情况1和2中,如果已经识别出的唯一PER事件是指令提取基本事件,并且 指令的操作的另一单元仍然被执行,则可以舍弃事件,结果是不出现程序中断。是否舍弃事 件是不可预测的。

[0649] PER指令提取无效事件的识别使得造成该事件的指令的执行无效。

[0650] 备注:

[0651] 1.在下面的情况下,指令可以引起对于PER基本事件的程序中断,并且改变控制用 于PER事件的中断的字段的值。原始的字段值确定对于PER事件是否发生程序中断。

[0652] A•指令LOAD,PSW,LOAD PSW EXTENDED,SET SYSTEM MASK和SUPERVISOR CALL可以 引起指令提取事件并禁止CPU用于PER中断。另外,STORE THEN AND SYSTEM MASK可以引起 指示储存变更事件。在所有这些情况下,与用于PER事件的程序中断相关联的的程序旧PSW 可以指示CHJ被禁止用于PER事件。

[0653] B.在改变控制寄存器9中的PER事件屏蔽的值或控制指令提取事件的指示的控制 寄存器10和11中的地址的值的LOAD C0NT0RL指令的执行期间,可以识别指令提取事件。 [0654] C.在存取寄存器模式中,由ASN第二表项(由存取列表项指明)中地址空间控制元 素中储存变更事件位的1值允许的储存变更事件可以由任意储存类型指令引起,所述储存 类型指令将位的值从1改变到0。

[0655] 2.当在可中断指令的执行期间出现用于PER基本事件的PER中断时,ILC适当地指 示该指令的长度或执行类型指令的长度。当作为LOAD PSW,LOAD PSW EXTENDED,PROGRAM RETURN或SUPERVISOR CALL的结果而出现用于PER基本事件的PER中断时,ILC适当的指示该 指令的长度或指明中断的类型的指令作为其目标的执行类型指令的长度,除非对于〇的ILC 的LOAD PSW,LOAD PSW EXTENDED或PROGRAM RETURN呼叫的同时规格异常。

[0656] 3.当通过分支引起PER中断时,PER地址识别分支指令(或适当地,执行类型指令), 而旧PSW指向待执行的下一指令。当在可中断指令的执行期间出现中断时,PER地址和旧PSW 中的指令地址相同。

[0657] 储存区域指明

[0658]在一个实施例中,两种类型的PER事件指令提取和储存变更方式包括存储器中区 域的指明。成功分支事件可以包括该指明。储存区域在由控制寄存器10中的开始地址指明 的位置处开始,并且延伸至且包括由控制寄存器11中的结束地址指明的位置。区域延伸至 开始地址的右侧。

[0659] 只要从指明区域提取指令的第一字节或者目标或执行类型指令的第一字节,就出 现指令提取事件。当通过使用限定为逻辑或虚拟地址的操作数地址来对于指明区域进行储 存存取时,出现储存变更事件。然而,当DAT启动且控制寄存器9中的储存变更空间控制为1 时,储存区域在地址空间控制元素中储存变更事件位为1的地址空间内。对于以限定为真实 地址的操作数地址进行的储存存取,不出现储存变更事件。当控制寄存器9中的分支地址控 制为1时,成功分支事件当分支目标指令的第一字节在指明区域内时出现。

[0660] 对于成功分支、指令提取和储存变更事件指明的地址组在地址264_1处环绕;即,认 为地址0在地址2 64_1之后。当开始地址小于结束地址时,区域是连续的。当开始地址大于结 束地址时,指明的位置组包括从地址0到且包括结束地址的区域。当开始地址等于结束地址 时,仅指明那一个位置。

[0661] 通过使用64位地址来执行对于成功分支、指令提取和储存变更事件的地址比较。 这在24位或31位寻址模式下通过在将左侧的虚拟、逻辑或指令地址与开始和结束地址比较 之前,通过以40或33个0来延伸左侧的虚拟、逻辑或指令地址来完成。

[0662] 编程备注:在一些模型中,通过对于TLB中每一页表项的延伸来帮助地址范围检验 的性能。在这种设施中,当成功分支、指令提取或储存变更事件屏蔽为1时,改变控制寄存器 10和11中的内容,或者设置这些PER事件屏蔽的任意一个为1可以引起TLB清除各项。即使当 CPU被禁止用于PER事件时也可以实践该降级。因此,当可能时,程序应该避免加载控制寄存 器9、10或11。

[0663] PER 事件

[0664] 成功分支

[0665] 当控制寄存器9中的分支地址控制为0时,依赖于分支目标地址,出现成功分支事 件。当分支地址控制为1时,仅当分支目标指令的第一字节在由控制寄存器10和11指明的储 存区域中时出现成功分支事件。

[0666] 经历分支地址控制的影响,只要如下指令之一引起分支就出现成功分支事件: BRANCH AND LINK(BAL,BALR);BRANCH AND SAVE(BAS,BASR);BRANCH AND SAVE AND SET MODE(BASSM);BRANCH AND SET AUTHORITY(BSA);BRANCH AND SET MODE(BSM);BRANCH AND STACK(BAKR);BRANCH IN SUBSPACE GROUP(BSG);BRANCH ON CONDITION(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 AND SAVE (BRAS);BRANCH RELATIVE AND SAVE LONG(BRASL);BRANCH RELATIVE ON CONDITION(BRC);BRANCH RELATIVE ON CONDITION LONG(BRCL);BRANCH RELATIVE ON COUNT(BRCT);BRANCH RELATIVE ON COUNT HIGH(BRCTH);BRANCH RELATIVE ON INDEX HIGH(BRXH,BRXHG);BRANCH RELATIVE ON INDEX LOW OR EQUAL(BRXLE,BRXLG);COMPARE AND BRANCH(CRB,CGRB);COMPARE AND BRANCH RELATIVE(CRJ,CGRJ);COMPARE IMMEDIATE AND BRANCH(CIB,CGIB)COMPARE IMMEDIATE AND BRANCH RELATIVE(CIJ,CGIJ);COMPARE LOGICAL AND BRANCH(CLRB, CLGRB);COMPARE LOGICAL AND BRANCH RELATIVE(CLRJ,CLGRJ);COMPARE LOGICAL IMMEDIATE AND BRANCH(CLIB,CLGIB);COMPARE LOGICALIMMEDIATE AND BRANCH RELATIVE (CLIJ,CLGIJ);RESUME PROGRAM(RP)和TRAP(TRAP2,TRAP4)。

[0667] 经历分支地址控制的影响,只要如下指令之一引起分支就也出现成功分支事件: PROGRAM CALL (PC); PROGRAM RETURN (PREPROGRAM TRANSFER (PT);和PROGRAM TRANSFER WITH INSTANCE(PTI)〇

[0668] 对于PROGRAM CALL,PROGRAM RETURN,PROGRAM TRANSFER,和PROGRAM TRANSFER WITH INSTANCE,将分支目标地址认为是通过指令置放于PSW中的新指令地址。

[0669]如果PER事件屏蔽的位32为1且PSW中的PER屏蔽为1,则成功分支事件使得PER成功 分支事件被识别。

[0670]通过将位0或PER码设置为1来指示PER成功分支事件。

[0671] 指令提取

[0672] 如果指令的第一字节在由控制寄存器10和11指明的储存区域内,则出现指令提取 事件。如果执行类型指令的目标的第一字节在指明的储存区域内,则也出现指令提取事件。 [0673]指令提取基本事件:如果PSW中的PSW屏蔽为1且PER事件屏蔽的33为1且未安装 PER-3设施或PER事件屏蔽的位39为0,则指令提取事件使得PER指令提取基本事件被识别。 [0674]如果指令提取基本事件是对于可中断指令识别出的唯一 PER事件,所述可中断指 令由于异步条件(1/0、外部、重启或可抑制机器检验条件)或停止功能的性能而中断,并且 如果指令的操作的单元仍然被执行,则可以舍弃指令提取事件,并且是否舍弃是不可预测 的。

[0675] 通过将PER码的位1和PER码的位7设置为0来指示PER指令提取基本事件。

[0676]指令提取无效事件:如果PSW中的TOR屏蔽为1且TOR事件屏蔽的位33为1且安装 PER-3设施且PER事件屏蔽的位39为1,则指令提取事件使得PER指令提取无效事件被识别。 [0677]通过将PER码的位1和7设置为1来指示PER指令提取无效事件。

[0678] 储存变更

[0679]只要CPU通过使用逻辑或虚拟地址来在没有存取异常的情况下对于由控制寄存器 1 〇和11指明的储存区域进行储存存取,就出现储存变更事件。然而,当DAT启动且控制寄存 器9中的储存变更空间控制为1时,只有当地址空间控制元素中的储存变更事件位为1时才 出现事件,所述地址空间控制元素由DAT使用以转译对于储存区域的参考。

[0680] 只要CPU执行了使得操作数的全部或部分储存在指明的储存区域内的指令,就认 为存储器的内容已经被变更。只要认为为了指示保护异常的目的而发生储存,就认为发生 变更,除了对于通过信道程序的数据的储存不出现识别。即使存储的值在原始值上相同,存 储构成用于PER目的的变更。

[0681] 在执行中断的处理中或在跟踪项的形成中,不监控由CPU参照的暗示位置。这种位 置包括PSW和中断码位置以及由控制寄存器12指明的跟踪项。然而,当通过一指令将信息明 确地存储在那儿时,监控这些位置。类似地,监控不应用于通过信道程序的数据的储存。监 控通过联动栈上操作的指令而存储进入的联动栈中的暗示位置。

[0682] 仅当储存实际发生时,认为I/O指令变更第二操作数位置。

[0683] 储存变更不应用于操作数被指定以具有真实或绝对地址的指令。因此,储存变更 不应用于INVALIDATE DAT TABLE ENTRY(无效和清除操作),INVALIDATE PAGE TABLE ENTRY,PAGE IN,PERFORM FRAME MANAGEMENT FUNCTION,RESET REFERENCE BIT EXTENDED, RESET REFERENCE BITS MULTIPLE,SET STORAGE KEY EXTENDED,STORE USING REAL ADDRESS,TEST BLOCK和TEST PENDING INTERRUPTION当有效地址为0时)。储存变更不应用 于通过STORE FACILITY LIST的、至真实位置200的储存,也不应用于通过引起跟踪发生的 指令的、至跟踪表的储存。

[0684] 如果PER事件屏蔽的位34为1且PSW中的PER屏蔽为1,则储存变更事件引起PER储存 变更事件被识别。当确定PER储存变更事件是否被识别时忽略PER事件屏蔽的位36。

[0685] 通过将PER码的位2设置为1且将PER码的位4设置为0来指示PER储存变更事件。

[0686] 使用真实地址储存

[0687] 只要执行STORE USING REAL ADDRESS指令,就出现使用真实地址储存事件。

[0688] 在使用真实地址储存事件与指明的储存区域之间没有关系。

[0689] 如果PER事件屏蔽的位34和36为1且PSW中的PER屏蔽为1,则使用真实地址储存事 件使得PER使用真实地址储存事件被识别。

[0690]通过将PER码的位2和4设置为1来指示PER使用真实地址储存事件。

[0691]与其他中断条件同时的PER事件的指示

[0692]当报告PER指令提取无效事件时,不报告其他PER事件和其他程序中断条件。

[0693] 如下规则管理由同样引起程序异常、监控事件、空间切换事件或监督呼叫中断的 指令引起的PER基本事件的指不。

[0694] 1.指令提取基本事件的指示不依赖于指令的执行是否完成、终止、抑制或无效。然 而,抑制和无效的特殊情况如下:

[0695] A.当由PSW中的奇数指令地址指明指令时,不指示指令提取事件。

[0696] B.当存取异常应用于指令的第一、第二或第三半字,且安装PER-3设施时,不指示 指令提取事件。然而,如果不安装PER-3,则是否指示指令提取事件是不可预测的。

[0697] C.当EXECUTE的目标地址是奇数,或者存取异常应用于目标指令的第一、第二或第 三半字,并且安装PER-3设施时,对于目标位置,未指示指令提取事件。然而,如果未安装 PER-3设施,则对于目标指令是否指示指令提取事件是不可预测的,并且对于执行指令是 否指示该事件是不可预测的。

[0698] 2.当完成或部分完成操作时,指示事件,无论是否也识别出任何程序异常、空间切 换事件或监控事件。

[0699] 3.对于一操作,不指示成功分支、储存变更和使用真实地址储存,或者万一,对于 被抑制或无效的操作的单元,指令可中断。

[0700] 4.当终止指令的执行时,只要已经出现事件,就指示储存变更。如果本应该出现的 事件已经完成了指令的执行,则模型可以指示事件,即使变更结果字段的内容视操作数值 而定。为了该限定的目的,允许终止(寻址、保护和数据)的那些异常的出现被认为引起终 止。

[0701] 5•当LOAD PSW,LOAD PSW EXTENDED,PROGRAM RETURN,SET SYSTEM MASK,STORE THEN OR SYSTEM MASK或者SUPERVISOR CALL引起PER基本条件,并且同时引入具有紧接在 PSW变为有效之后识别出的PSW格式错误的类型的新PSW时,中断码识别PER基本条件和规格 异常二者。

[0702] 6•当LOAD PSW,LOAD PSW EXTENDED,PROGRAM RETURN或SUPERVISOR CALL引起PER 条件且同时引入具有作为下面指令执行的部分而识别出的PSW格式错误的类型的新PSW时, 将引入的PSW存储为旧PSW,而不提取下面的指令并且不识别规格异常。

[0703] 编程备注:

[0704] 1.可中断指令⑶MPARE AND FORM ⑶DEW0RD,COMPARE LOGICAL LONG,COMPARE UNTIL SUBSTRING EQUAL COMPRESSION CALL, MOVE LONG, TEST BLOCK 和 UPDATE TREE 的执 行可以使得事件用于指令提取。可中断指令PERFORM FRAME MANAGEMENT FUNCTI0N(当安装 高级DAT设施并且帧大小的码指明1M字节帧时)、SET STORAGE KEY EXTENDED(当安装高级 DAT设施并且多块控制为1时)和TEST BLOCK的执行可以引起事件用于指令提取。 COMPRESSION CALL,MOVE LONG和UPDATE TREE可以用于指令提取和储存变更事件。

[0705]这种指令的中断可以使得PER基本事件被多于一次地指示。因此,程序必须从PER 数据移除冗余的事件指示。在一实例中,在这些指令的执行期间,如下规则管理可应用事件 的指示:

[0706] A.只要提取指令用于执行,就指示指令提取基本事件,无论是初始执行还是再继 续,除了如果事件是待指示的唯一 PER事件,中断归因于异步中断条件或停止功能的性能并 且指令的操作的单元仍然被执行,则可以舍弃它。

[0707] B.仅当通过以上一次起始开始且以中断之前传送的最后字节结束的操作的部分, 在指明的储存区域中已经存储了数据时指示储存变更事件。在事件的再继续时,关于事件 是否将再次出现的过早中断不提供特殊指示。当指明的储存区域是单个字节位置时,在 MOVE LONG或COMPRESSION CALL的执行中仅识别一次储存变更事件,但是对于UPDATE TREE 可以识别多于一次。

[0708] 2.如下是程序将要采取以删除可中断指令的PER数据中PER基本事件的多项以便 获得指令的每一完整执行的唯一一项的普通动作的概要:

[0709] A.检验以了解PER地址是否等于旧PSW中的指令地址并且执行的上一指令是否可 中断。

[071 0] B.如果两个条件都满足,则删除指令提取事件。

[0711] C.如果两个条件都满足且事件是储存变更,则如果剩余目的地操作数的某部分在 指明的储存区域内,则删除事件。

[0712] 尽管以上描述了 PER设施的一个实施例,但是其他实施例也是可能的。可以进行很 多改变和变化。

[0713] 本领域的技术人员应了解,一个或多个方面可被体现为一系统、方法或计算机程 序产品。因而,一个或多个方面可采取完全硬件实施例、完全软件实施例(包括固件、驻留软 件、微码等等)或组合软件与硬件方面的实施例的形式,这些实施例在本文中皆可通称为 "电路"、"模块"或"系统"。此外,一个或多个方面可采取以一个或多个计算机可读介质体现 的计算机程序产品的形式,该一个或多个计算机可读介质具有体现于其上的计算机可读程 序码。

[0714] 可利用一个或多个计算机可读介质的任何组合。计算机可读介质可为计算机可读 储存介质。举例而言,计算机可读储存介质可为但不限于电子、磁性、光学、电磁、红外线或 半导体系统、装置或器件,或前述各者的任何合适组合。计算机可读储存介质的更特定实例 (非详尽清单)包括以下各者:具有一个或多个电线的电连接、携带型计算机磁片、硬碟、随 机存取存储器(RAM)、只读存储器(R0M)、可擦除可编程只读存储器(EPROM或快闪存储器)、 光纤、便携型光碟只读存储器(CD-ROM)、光学储存器件、磁性储存器件或前述各者的任何 合适组合。在此文件的上下文中,计算机可读储存介质可为可含有或储存供指令执行系统、 装置或器件使用或结合指令执行系统、装置或器件而使用的程序的任何有形介质。

[0715] 现在参看图17,在一实例中,计算机程序产品1700包括(例如)一个或多个非瞬态 计算机可读储存介质1702以在其上储存计算机可读程序码构件或逻辑1704,以提供及促进 一个或多个实施例。

[0716] 可使用适当介质(包括但不限于无线、有线、光纤缆线、RF等等,或前述各者的任何 合适组合)传输体现于计算机可读介质上的程序码。

[0717] 可以一种或多种编程语言的任何组合来撰写用于进行一个或多个实施例的操作 的计算机程序码,该一种或多种编程语言包括诸如Java、Smalltalk、C++或其类似者的面向 对象的编程语言,及诸如"C"编程语言、汇编程序或相似编程语言的传统过程性编程语言。 程序码可完全地在使用者计算机上执行、部分地在使用者计算机上执行、作为独立封装软 件而执行、部分地在使用者计算机上执行且部分地在远端计算机上执行,或完全地在远端 计算机或伺服器上执行。在后者情境中,远端计算机可经由任何类型的网络(包括局域网 (LAN)或广域网(WAN))而连接至使用者的计算机,或可连接至外部计算机(例如,使用因特 网服务提供者而经由因特网进行连接)。

[0718] 本文参考方法、装置(系统)及计算机程序产品的流程图说明和/或方块图来描述 一个或多个实施例。应理解,可藉由计算机程序指令来实施这些流程图说明和/或方块图的 每一方块及这些流程图说明和/或方块图中的方块的组合。可将这些计算机程序指令提供 至一般用途计算机、特殊用途计算机或其他可程序化数据处理装置的一处理器以产生一机 器,使得经由该计算机或其他可程序化数据处理装置的该处理器而执行的指令产生用于实 施在该或这些流程图和/或方块图方块中指定的功能/动作的构件。

[0719] 亦可将这些计算机程序指令储存于一计算机可读介质中,其可指导计算机、其他 可程序化数据处理装置或其他器件以特定方式起作用,使得储存于该计算机可读介质中的 指令产生一制品,该制品包括实施在该或这些流程图和/或方块图方块中指定的功能/动作 的指令。

[0720] 亦可将这些计算机程序指令载入至计算机、其他可程序化数据处理装置或其他器 件上,以使一系列操作步骤在该计算机、其他可程序化装置或其他器件上执行以产生一计 算机实施程序,使得在该计算机或其他可程序化装置上执行的指令提供用于实施在该或 这些流程图和/或方块图方块中指定的功能/动作的程序。

[0721] 这些图中的流程图及方块图说明根据各种实施例的系统、方法及计算机程序产品 的可能实施的架构、功能性及操作。就此而言,流程图或方块图中的每一方块可表示程序码 的一模块、区段或部分,其包含用于实施指定的逻辑功能的一个或多个可执行指令。亦应注 意,在一些替代性实施中,区块中所提到的功能可不以诸图中所提到的次序而发生。举例而 言,取决于所涉及的功能性,连续展示的两个区块实际上可实质上并行地执行,或这些区块 有时可以相反次序执行。亦应注意,可藉由执行指定的功能或动作的基于特殊用途硬件的 系统或特殊用途硬件及计算机指令的组合来实施方块图和/或流程图说明的每一方块及方 块图和/或流程图说明中的方块的组合。

[0722] 除了以上内容以外,一个或多个方面亦可由提供客户环境的管理的服务提供者提 供、部署、管理、服务等等。举例而言,服务提供者可为一个或多个客户建立、维持、支援等等 执行一个或多个方面的计算机程序码和/或计算机基础结构。作为回报,作为实例,服务提 供者可在订用和/或收费协议下向客户收取付款。或者或另外,服务提供者可根据广告内容 至一个或多个第三方的销售而收取付款。

[0723] 在一方面中,可部署用于执行一个或多个实施例的应用程序。作为一实例,应用程 序的部署包含提供可操作以执行一个或多个实施例的计算机基础结构。

[0724] 作为一另外方面,可部署一计算基础结构,其包含将计算机可读程序码整合至计 算系统中,其中与该计算系统组合的程序码能够执行一个或多个实施例。

[0725] 作为又一方面,可提供用于整合计算基础结构的程序,其包含将计算机可读程序 码整合至计算机系统中。计算机系统包含计算机可读介质,其中计算机介质包含一个或多 个实施例。与该计算机系统组合的程序码能够执行一个或多个实施例。

[0726] 尽管上文描述各种实施例,但这些实施例仅为实例。举例而言,其他架构的计算环 境可用以并入及使用一个或多个实施例。另外,可使用不同指令、指令格式、指令字段和/或 指令值。此外,可抑制不同、其他和/或额外事件。许多变化是可能的。

[0727] 另外,其他计算环境类型可有益且被使用。作为一实例,适合于储存和/或执行程 序码的数据处理系统是可用的,其包括直接地或经由系统总线间接地耦接至存储器元件的 至少两个处理器。存储器元件包括(例如)在程序码的实际执行期间使用的本地存储器、大 容量存储器及高速缓存,该高速缓存提供至少某一程序码的临时储存以便减少在执行期间 必须自大容量存储器撷取程序码的次数。

[0728] 输入/输出或I/O器件(包括但不限于键盘、显示器、指针器件、DASD、磁带、⑶、DVD、 随身碟(thumb drive)及其他存储器介质等等)可直接地或经由介入I/O控制器親接至该系 统。网络适配器亦可耦接至系统以使数据处理系统能够经由介入的私用或公用网络耦接至 其他数据处理系统或远端打印机或储存器件。调制解调器、缆线调制解调器及乙太网卡仅 为可用网络适配器类型中的少数几种。

[0729] 参看图18,描绘实施一个或多个实施例的主机计算机系统5000的代表性组件。代 表性主机计算机5000包含与计算机存储器(亦即,中央存储器)5002通信的一个或多个CPU 5001,以及用于与其他计算机或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)时,缓冲器中的数据 储存(交付)至存储器,或若存在中止,则舍弃缓冲器中的数据。

[0730]在一实施例中,经由高速缓存5009藉由指令提取单元5004自存储器5002提取指 令。指令在指令解码单元5006中被解码,且分派(在一些实施例中用其他指令)至指令执行 单元5008。通常,使用若干执行单元5008,例如,算术执行单元、浮点执行单元及分支指令执 行单元。另外,在TX设施的一实施例中,可使用各种TX控制5110。指令由执行单元执行,从而 在需要时自指令指定的寄存器或存储器存取操作数。若将自存储器5002存取(载入或储存) 操作数,则载入/储存单元5005通常在正被执行的指令控制下处置存取。指令可在硬件电路 中或在内部微码(固件)中或由此两者的组合执行。

[0731] 根据TX设施的一个方面,处理器5001亦包括PSW 5102(例如,TX和/或中止PSW)、嵌 套深度5104、TDBA 5106及一个或多个控制寄存器5108。

[0732] 如所提及,计算机系统包括本地(或主)存储器中的信息,以及寻址、保护以及参考 及改变记录。寻址的一些方面包括地址的格式、地址空间的概念、各种地址类型,及一地址 类型经转译至另一地址类型的方式。主存储器中的一些包括永久指派的储存位置。主存储 器向系统提供数据的可直接寻址的快速存取储存。数据及程序两者在其可被处理之前将载 入至主存储器中(自输入器件)。

[0733] 主存储器可包括有时被称作高速缓存的一个或多个较小较快存取缓冲存储器。高 速缓存通常与CPU或I/O处理器实体地相关联。除了效能以外,相异储存介质的实体构造及 使用的效应通常不能由程序观察。

[0734] 可维持用于指令且用于数据操作数的分离高速缓存。高速缓存内的信息维持于被 称作高速缓存区块或高速缓存行(或简称为行)的整体边界上的连续字节中。模型可提供传 回高速缓存行的以字节为单位的大小的EXTRACT CACHE ATTRIBUTE指令。模型亦可提供 PREFETCH DATA及PREFETCH DATA RELATIVE LONG指令,其实现存储器至数据或指令高速缓 存中的预取或数据自高速缓存的释放。

[0735] 存储器被视作长水平位字串。对于大多数操作,对存储器的存取以自左侧至右侧 序列而行进。将位字串再分成八个位的单元。八位单元被称作字节,字节为所有信息格式的 基本建置区块。存储器中的每一字节位置藉由唯一非负整数识别,该非负整数为该字节位 置的地址,或简称为字节地址。邻近字节位置具有连续地址,其在左侧以〇开始且以自左侧 至右侧序列而行进。地址为无正负号二进位整数,且为24、31或64个位。

[0736]在存储器与CPU或通道子系统之间一次一个字节或字节群组而传输信息。除非另 有指定,否则在(例如^/Architecture中,存储器中的字节群组由该群组的最左侧字节寻 址。群组中字节的数目由待执行的操作暗示或明确地指定。当用于CPU操作中时,字节群组 被称作字段。在每一字节群组内,在(例如)z/Architecture中,位以自左侧至右侧序列被编 号。在z/Archi tecture中,最左侧位有时被称作"高阶"位,且最右侧位被称作"低阶"位。然 而,位号码并非储存地址。可仅寻址字节。为了对存储器中的字节的个别位进行操作,存取 整个字节。字节中的位自左侧至右侧被编号为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开始进行连续地编 号。出于错误侦测的目的,且较佳地出于校正起见,可用每一字节或用一字节群组来传输一 个或多个检查位。此类检查位由机器自动地产生且不能直接地受到程序控制。以字节的数 目来表达储存容量。当储存操作数字段的长度由指令的操作码暗示时,字段据称具有固定 长度,该固定长度可为一个、两个、四个、八个或十六个字节。较大字段可针对一些指令进行 暗示。当储存操作数字段的长度未被暗示而是被明确地陈述时,字段据称具有可变长度。可 变长度操作数长度可以一字节的增量(或用一些指令,以两个字节的倍数或其他倍数)发生 变化。当将信息置放于存储器中时,包括于指定字段中的仅那些字节位置的内容被取代,即 使至存储器的实体路径的宽度可大于正被储存的字段的长度亦如此。

[0737]信息的某些单元将在存储器中的整体边界上。当储存地址为以字节为单位的单元 的长度的倍数时,边界对于信息单元被称作整体。向整体边界上的2、4、8、16及32字节的字 段提供特殊名称。半字组为二字节边界上的两个连续字节的群组,且为指令的基本建置区 块。字组为四字节边界上的四个连续字节的群组。双字组为八字节边界上的八个连续字节 的群组。四倍字组为16字节边界上的16个连续字节的群组。八倍字组为32字节边界上的32 个连续字节的群组。当储存地址指明半字组、字组、双字组、四倍字组及八倍字组时,地址的 二进位表示分别含有一个、两个、三个、四个或五个最右侧零位。指令将处于二字节整体边 界上。大多数指令的储存操作数并不具有边界对准要求。

[0738] 在实施用于指令及数据操作数的分离高速缓存的器件上,若将程序储存至供随后 提取指令的高速缓存行中,则可经历显著延迟,而不管储存是否变更随后被提取的指令。

[0739] 在一实例中,实施例可由软件(有时指代已授权内码、固件、微码、毫码、皮码及其 类似者,前述各者中任一者将与一个或多个实施例一致)实践。参看图18,体现一个或多个 方面的软件程序码可由主机系统5000的处理器5001自诸如⑶-ROM驱动器、磁带机或硬盘驱 动器的长期储存介质器件5011存取。软件程序码可体现于多种已知介质中任一者上以供数 据处理系统使用,诸如,磁片、硬盘驱动器或CD-ROM。程序码可散布于此类介质上,或可自计 算机存储器5002散布至使用者或经由网络5010自一计算机系统的存储器散布至其他计算 机系统以供此类其他系统的使用者使用。

[0740] 软件程序码包括控制各种计算机组件与一个或多个应用程序的功能及互动的操 作系统。程序码正常地自储存介质器件5011传呼至程序码可用于由处理器5001进行处理的 相对较高速度计算机存储器5002。用于将软件程序码体现于存储器中、实体介质上和/或经 由网络散布软件码的技术及方法是熟知的,且在本文中将不予以进一步论述。程序码在建 立及储存于有形介质(包括但不限于电子存储器模块(RAM)、快闪存储器、光碟(CD)、DVD、磁 带及其类似者)上常常常被称作"计算机程序产品"。计算机程序产品介质通常可由较佳地 在计算机系统中的处理电路读取以供处理电路执行。

[0741] 图19说明可实践一个或多个实施例的代表性工作站或伺服器硬件系统。图19的系 统5020包含包括选用周边器件的代表性基本计算机系统5021,诸如,个人计算机、工作站或 伺服器。基本计算机系统5021包括一个或多个处理器5026,及用以根据已知技术在处理器 5026与系统5021的其他组件之间进行连接及启用处理器5026与其他组件之间的通信的总 线。举例而言,总线将处理器5026连接至存储器5025及长期存储器5027,长期存储器5027可 包括硬盘驱动器(包括(例如)磁性介质、CD、DVD及快闪存储器中任一者)或磁带机。系统 5021可能亦包括使用者接口适配器,其经由总线将微处理器5026连接至一个或多个接口器 件,诸如,键盘5024、鼠标5023、打印机/扫描器5030和/或其他接口器件,这些其他接口器件 可为诸如触敏式屏幕、数字化键入板(entry pad)等等的任何使用者接口器件。总线亦经由 显示适配器将诸如IXD屏幕或监视器的显示器件5022连接至微处理器5026。

[0742] 系统5021可凭借能够与网络5029通信5028的网络适配器而与其他计算机或计算 机的网络通信。实例网络适配器为通信通道、令牌环、乙太网或调制解调器。或者,系统5021 可使用诸如CDPD(蜂窝式数字封包数据)卡的无线接口进行通信。系统5021可与局域网 (LAN)或广域网(WAN)中的此类其他计算机相关联,或系统5021可为具有另一计算机的用户 端/伺服器配置中的用户端等等。在此项技术中知晓所有这些配置以及适当通信硬件及软 件。

[0743] 图20说明可实践一个或多个实施例的数据处理网络5040。数据处理网络5040可包 括多个个别网络,诸如,无线网络及有线网络,这些网络中每一者可包括多个个别工作站 5041、 5042、5043、5044。另外,本领域的技术人员应了解,可包括一个或多个LAN,其中LAN可 包含耦接至主机处理器的多个智能工作站。

[0744] 仍参看图20,网络亦可包括大型主机计算机或伺服器,诸如,网关计算机(用户端 伺服器5046)或应用程序伺服器(可存取数据储存库且亦可直接地自工作站5045进行存取 的远端伺服器5048)。网关计算机5046充当至每一个别网络中的进入点。当将一个网络连接 协定连接至另一网络连接协定时需要网关。网关5046可较佳地凭借通信链路耦接至另一网 络(例如,因特网5047)。网关5046亦可使用通信链路直接地耦接至一个或多个工作站5041、 5042、 5043、5044。网关计算机可利用可购自国际商业机器公司的11^6361'¥61378丨61112伺 服器予以实施。

[0745] 同时参看图19及图20,可体现一个或多个方面的软件编程码5031可由系统5020的 处理器5026自诸如⑶-ROM驱动器或硬盘驱动器的长期储存介质5027存取。软件编程码可体 现于多种已知介质中任一者上以供数据处理系统使用,诸如,磁片、硬盘驱动器或⑶-ROM。 程序码可散布于此类介质上,或可自存储器散布至使用者5050、5051或经由网络自一计算 机系统的存储器散布至其他计算机系统以供此类其他系统的使用者使用。

[0746] 或者,编程码可体现于存储器5025中,且由处理器5026使用处理器总线而存取。此 类编程码包括控制各种计算机组件与一个或多个应用程序5032的功能及互动的操作系统。 程序码正常地自储存介质5027传呼至程序码可用于由处理器5026进行处理的高速度存储 器5025。用于将软件编程码体现于存储器中、实体介质上和/或经由网络散布软件码的技术 及方法是熟知的,且在本文中将不予以进一步论述。程序码在建立及储存于有形介质(包 括但不限于电子存储器模块(RAM)、快闪存储器、光碟(CD)、DVD、磁带及其类似者)上时常常 被称作"计算机程序产品"。计算机程序产品介质通常可由较佳地在计算机系统中的处理电 路读取以供处理电路执行。

[0747]最易于可用于处理器的高速缓存(相比于处理器的其他高速缓存通常较快且较 小)为最低(L1或层级1)高速缓存,且主存储器(主存储器)为最高层级高速缓存(若存在3个 层级,则为L3)。最低层级高速缓存常常被划分成保持待执行的机器指令的指令高速缓存(I 高速缓存),及保持数据操作数的数据高速缓存(D高速缓存)。

[0748] 参看图21,描绘用于处理器5026的例示性处理器实施例。通常,高速缓存5053的一 个或多个层级用以缓冲存储器区块以便改良处理器效能。高速缓存5053为保持最可能使用 的存储器数据的高速缓存行的高速度缓冲器。典型高速缓存行为64、128或256个字节的存 储器数据。分离高速缓存除了用于高速缓存数据以外亦常常用于高速缓存指令。高速缓存 连贯性(存储器及高速缓存中行的复本的同步)常常由本领浴公知的各种"窥探"演算法提 供。处理器系统的主存储器存储器5025常常被称作高速缓存。在具有高速缓存5053的4个层 级的处理器系统中,主存储器5025有时被称作层级5(L5)高速缓存,这是因为处理器系统通 常较快且仅保持可用于计算机系统的非挥发性存储器(DASD、磁带等等)的部分。主存储器 5025 "高速缓存"由操作系统分页进及分页出主存储器5025的数据页。

[0749] 程序计数器(指令计数器)5061追踪待执行的当前指令的地址。z/Architecture处 理器中的程序计数器为64个位,且可被截断为31或24个位以支援先前寻址极限。程序计数 器通常体现于计算机的PSW(程序状态字组)中,使得程序计数器在上下文切换期间持续。因 此,具有程序计数器值的在进展中的程序可由(例如)操作系统中断(自程序环境至操作系 统环境的上下文切换)。程序的PSW在程序未处于作用中时维持程序计数器值,且操作系统 的程序计数器(在PSW中)在操作系统正执行时被使用。通常,使程序计数器累加等于当前指 令的字节的数目的量。RISC(精简指令集计算)指令通常具有固定长度,而CISC(复杂指令集 计算)指令通常具有可变长度。1812/^1'〇11;^6〇1:11^的指令为具有2、4或6个字节的长度的 CISC指令。举例而言,程序计数器5061系藉由上下文切换操作或分支指令的分支采取操作 而修改。在上下文切换操作中,当前程序计数器值连同关于正被执行的程序的其他状态信 息(诸如,条件码)一起储存于程序状态字组中,且载入新程序计数器值从而指向待执行的 新程序模块的指令。分支采取操作经执行以便藉由将分支指令的结果载入至程序计数器 5061中来准许程序作出决策或在程序内循环。

[0750]通常,指令提取单元5055用以以处理器5026的名义来提取指令。提取单元提取"下 一循序指令"、分支采取指令的目标指令或在上下文切换之后的程序的第一指令。现代指令 提取单元常常使用预取技术以基于可能使用已预取指令的可能性来理论式地预取指令。举 例而言,提取单元可提取包括下一循序指令的指令的16个字节及另外循序指令的额外字

[0751]已提取指令接着由处理器5026执行。在一实施例中,已提取指令传递至提取单元 的分派单元5056。该分派单元解码指令,且将关于已解码指令的信息转递至适当单元5057、 5058、5060。执行单元5057通常将自指令提取单元5055接收关于已解码算术指令的信息,且 将根据指令的操作码而对操作数执行算术运算。操作数较佳地自存储器5025、架构化寄存 器5059或自正被执行的指令的立即字段提供至执行单元5057。执行的结果在被储存时储存 于存储器5025、寄存器5059中或其他机器硬件(诸如,控制寄存器、PSW寄存器及其类似者) 中。

[0752] 虚拟地址使用动态地址转译5062且视情况使用存取寄存器转译5063而转译成真 实地址。

[0753] 处理器5026通常具有一个或多个单元5057、5058、5060以用于执行指令的功能。参 看图22A,执行单元5057可凭借接口逻辑5071而与架构化一般寄存器5059、解码/分派单元 5056、载入储存单元5060及其他处理器单元5065通信。执行单元5057可使用若干寄存器电 路5067、5068、5069以保持算术逻辑单元(ALU)5066将进行运算的信息。ALU执行诸如加法、 减法、乘法及除法的算术运算,以及诸如与、或及互斥或(X0R)、旋转及移位的逻辑功能。较 佳地,ALU支援设计相依的特殊化运算。举例而言,其他电路可提供包括条件码及复原支援 逻辑的其他架构化设施5072。通常,ALU运算的结果保持于输出寄存器电路5070中,输出寄 存器电路5070可将结果转递至多种其他处理功能。存在处理器单元的许多配置,但本描述 仅意欲提供一实施例的代表性理解。

[0754] ADD指令(例如)将在具有算术及逻辑功能性的执行单元5057中执行,而浮点指令 (例如)将在具有特殊化浮点能力的浮点执行中执行。较佳地,执行单元藉由对由指令识别 的操作数执行操作码定义功能而对操作数进行运算。举例而言,ADD指令可由执行单元5057 对在由该指令的寄存器字段识别的两个寄存器5059中发现的操作数执行。

[0755]执行单元5057对两个操作数执行算术加法,且将结果储存于第三操作数中,其中 第三操作数可为第三寄存器或两个来源寄存器中的一个。执行单元较佳地利用算术逻辑单 元(ALU)5066,ALU 5066能够执行诸如移位、旋转、与、或及X0R的多种逻辑功能,以及包括加 法、减法、乘法、除法中任一者的多种代数功能。一些ALU 5066经设计成用于纯量运算且一 些ALU 5066经设计成用于浮点。取决于架构,数据可为字节由大到小(Big Endian)(其中最 低有效字节处于最高字节地址)或字节由小到大(Little Endian)(其中最低有效字节处于 最低字节地址)JBM z/Architecture为字节由大到小。取决于架构,带正负号字段可为正 负号及量值、1的补数,或2的补数。2的补数有利之处在于:ALU无需设计减法能力,这是因为 2的补数中的负值或正值仅需要在ALU内的加法。举例而言,常常以速记法来描述数字,其中 12位字段定义4,096字节区块的地址,且通常被描述为4千字节区块。

[0756]参看图22B,用于执行分支指令的分支指令信息通常发送至分支单元5058,分支单 元5058常常使用诸如分支历史表5082的分支预测演算法以在其他条件操作完成之前预测 分支的结果。当前分支指令的目标将被提取,且在条件操作完成之前被理论式地执行。当完 成条件操作时,理论式执行的分支指令基于条件操作的条件及所理论结果而被完成或舍 弃。典型分支指令可测试条件码,且在条件码满足分支指令的分支要求时分支至目标地址, 目标地址可基于(例如)包括在寄存器字段或指令的立即字段中发现的数字的若干数字予 以计算。分支单元5058可使用ALU 5074,ALU 5074具有多个输入寄存器电路5075、5076、 5077及输出寄存器电路5080。举例而言,分支单元5058可与一般寄存器5059、解码分派单元 5056或其他电路5073通信5081。

[0757] 举例而言,指令群组的执行可由于多种原因而中断,这些原因包括由操作系统起 始的上下文切换、造成上下文切换的程序异常或错误、造成上下文切换的I/O中断信号,或 多个程序的多线程活动(在多线程化环境中)。较佳地,上下文切换动作储存关于当前执行 程序的状态信息,且接着载入关于正被调用的另一程序的状态信息。举例而言,状态信息可 储存于硬件寄存器中或存储器中。状态信息较佳地包含指向待执行的下一指令的程序计 数器值、条件码、存储器转译信息,及架构化寄存器内容。上下文切换活动可由硬件电路、应 用程序、操作系统程序或固件码(微码、皮码或已授权内码(LIC))单独地或组合地演练。

[0758] 处理器根据指令定义方法而存取操作数。指令可使用指令的部分的值来提供立即 操作数,可提供明确地指向一般用途寄存器或特殊用途寄存器(例如,浮点寄存器)的一个 或多个寄存器字段。指令可利用由操作码字段识别的所暗示寄存器作为操作数。指令可将 存储器位置用于操作数。如由z/Architecture长位移设施所例示,操作数的存储器位置可 由寄存器、立即字段或寄存器与立即字段的组合提供,其中指令定义基底寄存器、索引寄存 器及立即字段(位移字段),前述三者加在一起以提供(例如)操作数在存储器中的地址。本 文中的位置通常暗示主存储器(主存储器)中的位置,除非另有指示。

[0759] 参看图22C,处理器使用载入/储存单元5060来存取存储器。载入/储存单元5060可 藉由获得目标操作数在存储器5053中的地址且将操作数载入于寄存器5059或另一存储器 5053的位置而执行载入操作,或可藉由获得目标操作数在存储器5053中的地址且将自寄存 器5059或另一存储器5053的位置获得的数据储存于存储器5053中的目标操作数位置中而 执行储存操作。载入/储存单元5060可为理论式,且可以相对于指令序列无序的序列存取存 储器,然而,载入/储存单元5060对程序维持指令被按次序执行的外观。载入/储存单元5060 可与一般寄存器5059、解码/分派单元5056、高速缓存/存储器接口 5053或其他元件5083通 信5084,且包含各种寄存器电路5086、5087、5088及5089、ALU5085及控制逻辑5090以计算储 存地址且提供管线定序以使操作按次序。一些操作可无序,但载入/储存单元提供使无序操 作对于程序看来像是已按次序被执行的功能性,如本领域中所公知的那样。

[0760] 较佳地,应用程序所"查看"的地址常常被称作虚拟地址。虚拟地址有时被称作"逻 辑地址"及"有效地址"。这些虚拟地址为虚拟之处在于:其藉由多种动态地址转译(DAT)技 术中的一个重新引导至实体存储器位置,这些技术包括但不限于简单地用偏移值来加前缀 于虚拟地址、经由一个或多个转译表转译虚拟地址,转译表较佳单独地或组合地至少包含 区段表及页表,较佳地,区段表具有指向页表的项。在z/Architecture中,提供转译阶层,包 括区第一表、区第二表、区第三表、区段表及选用页表。常常藉由利用转译后备缓冲器 (TLB)来改良地址转译的效能,该TLB包含将虚拟地址映射至关联实体存储器位置的项。当 DAT使用转移译来转译虚拟地址时建立这些项。虚拟地址的后续使用接着可利用快速TLB的 项而非缓慢循序转译表存取。TLB内容可由包括LRU(最近最少使用)的多种取代演算法管 理。

[0761] 在处理器为多处理器系统的处理器的状况下,每一处理器具有使诸如1/0、高速缓 存、TLB及存储器的共用资源出于一致性而保持连锁的职责。通常,"窥探"技术将用来维持 高速缓存一致性。在窥探环境中,可将每一高速缓存行标示为处于共用状态、独占状态、已 改变状态、无效状态及其类似者中任一者以便促进共用。

[0762] 举例而言,I/O单元5054(图21)向处理器提供用于附接至包括磁带、碟片、打印机、 显示器及网络的周边器件的构件。I/O单元常常由软件驱动程序呈现给计算机程序。在诸如 可购自z的大型主机中,通道适配器及开放系统适配器为在操作系统与周 边器件之间提供通信的大型主机的I/O单元。

[0763] 另外,其他计算环境类型可受益于一个或多个方面。作为一实例,环境可包括模拟 器(例如,软件或其他模拟机制),其中特定架构(包括(例如)指令执行、架构化功能(诸如, 地址转译)及架构化寄存器)或其子集被模拟(例如,在具有处理器及存储器的原生计算机 系统上)。在此类环境中,模拟器的一个或多个模拟功能可实施一个或多个实施例,即使执 行该模拟器的计算机可具有不同于正被模拟的能力的架构亦如此。作为一实例,在模拟模 式下,解码正被模拟的特定指令或操作,且建置适当模拟功能以实施个别指令或操作。

[0764] 在一模拟环境中,主机计算机包括(例如):存储器,其储存指令及数据;指令提取 单元,其自存储器提取指令,且视情况提供用于已提取指令的本地缓冲;指令解码单元,其 接收已提取指令且判定已被提取的指令类型;及指令执行单元,其执行这些指令。执行可包 括将数据自存储器载入至寄存器中;将数据自寄存器储存回至存储器;或执行某一算术或 逻辑运算类型,如由解码单元所判定。在一实例中,以软件来实施每一单元。举例而言,由这 些单元执行的操作被实施为模拟器软件内的一个或多个子例程。

[0765] 更特定而言,在大型主机中,架构化机器指令常常凭借编译器应用程序供程序员 (通常现今为"C"程序员)使用。储存于储存介质中的这些指令可原生地在z/Architecture IBM®伺服器中或者在执行其他架构的机器中执行。指令可在现有及未来IBM ®大型主机 伺服器中且在IBM®的其他机器(例如,Power System伺服器及System x伺服器)上进行模 拟。指令可在使用由IBM®、Inte丨R、AMD及其他制造商制造的硬件的各种各样的机器上执 行Linux的机器中执行。除了在依据z/Architecture的该硬件上的执行以外,亦可使用 1^111«以及数个使用由1161'(311168、1]]\1?(或?31(?1111(1311161^313〇;1^¥316公司)进行的模拟的机 器,在这些机器处执行通常处于模拟模式。在模拟模式下,模拟软件由原生处理器执行以对 模拟处理器的架构进行模拟。

[0766] 原生处理器通常执行模拟软件,该模拟软件包含固件或原生操作系统以执行模拟 处理器的模拟。模拟软件负责提取及执行模拟处理器架构的指令。模拟软件维持模拟程序 计数器以追踪指令边界。模拟软件一次可提取一个或多个模拟机器指令,且将该一个或多 个模拟机器指令转换成原生机器指令的对应群组以供原生处理器执行。这些已转换指令可 被高速缓存,使得可实现较快转换。然而,模拟软件仍维持模拟处理器架构的架构规则以便 确信针对模拟处理器撰写的操作系统及应用程序正确地操作。此外,模拟软件将提供由模 拟处理器结构识别的资源,使得经设计成在模拟处理器上执行的操作系统或应用程序可在 具有模拟软件的原生处理器上执行,这些资源包括但不限于控制寄存器、一般用途寄存器、 浮点寄存器、包括(例如)区段表及页表的动态地址转译函数、中断机制、上下文切换机制、 当日时间(T0D)时钟及至I/O子系统的架构化接口。

[0767]解码正被模拟的指定指令,且呼叫子例程以执行个别指令的功能。对模拟处理器 的功能进行模拟的模拟软件功能以(例如)以下各者予以实施:"C"子例程或驱动程序,或提 供用于特定硬件的驱动程序的某一其他方法,此在理解较佳实施例的描述之后将在本领域 技术人员的技艺内。包括但不限于以下各者的各种软件及硬件模拟专利说明多种已知方法 来达成针对不同机器架构化的指令格式的模拟以用于可用于本领域技术人员的目标机器: Beausoleil等人的名为"Multiprocessor for Hardware Emulation" 的美国专利证书第5, 551,013号;及Scalzi等人的名为"Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor" 的美国专利证书第6, 009,261 号;及Davidian等人的名为"Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions"的美国专利证书第5,574, 873号;及Gorishek等人的名为"Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System" 的美国专 利证书第6,308,255 号;及Lethin等人的名为"Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method"的美国专利证书第6,463,582号;及Eric Traut的名为"Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions"的美国专利证书第5,790,825号,前述专利证书中每一个的全文据 此以引用方式并入本文中;及许多其他专利证书。

[0768]在图23中,提供模拟主机计算机系统5092的实例,其模拟主机架构的主机计算机 系统5000'。在模拟主机计算机系统5092中,主机处理器(CPU)5091为模拟主机处理器(或虚 拟主机处理器),且包含具有不同于主机计算机5000'的处理器5091的原生指令集架构的原 生指令集架构的模拟处理器5093。模拟主机计算机系统5092具有对于模拟处理器5093可存 取的存储器5094。在实例实施例中,存储器5094经分割成主机计算机存储器5096部分及模 拟例程5097部分。主机计算机存储器5096根据主机计算机架构可用于模拟主机计算机5092 的程序。模拟处理器5093执行不同于模拟处理器5091的架构的架构的架构化的指令集的原 生指令,这些原生指令自模拟例程存储器5097获得;且可藉由使用在序列与存取/解码例程 中获得的一个或多个指令来自主机计算机存储器5096中的程序存取主机指令以供执行,序 列与存取/解码例程可解码所存取的主机指令以判定用于模拟所存取的主机指令的功能的 原生指令执行例程。举例而言,针对主机计算机系统5000'的架构定义的其他设施可藉由架 构化的设施例程来模拟,包括作为一般用途寄存器、控制寄存器、动态地址转译及1/0子系 统支援及处理器高速缓存的此类设施。模拟例程亦可利用在模拟处理器5093中可用的功能 (诸如,一般寄存器及虚拟地址的动态转译)以改良模拟例程的效能。专用硬件及卸载引擎 亦可经提供以在模拟主机计算机5000'的功能中协助处理器5093。

[0769]本文所使用的术语仅出于描述特定实施例的目的,且并不意欲为限制性的。如本 文所使用,除非上下文另有清楚指示,否则单数形式"一"及"该"意欲亦包括复数形式。应进 一步理解,术语"包含"在用于本说明书中时指定存在所叙述特征、整数、步骤、操作、元件 和/或组件,但并不排除存在或添加一种或多种其他特征、整数、步骤、操作、元件、组件和/ 或其群组。

[0770]以下申请专利范围中的所有构件或步骤附加功能元件的对应结构、材料、动作及 等效者(若有)意欲包括用于结合如特定主张的其他所主张元件执行功能的任何结构、材料 或动作。出于说明及描述的目的已呈现一或多个实施例的描述,但该描述并不意欲为详尽 的或将本发明限于所揭示的形式。许多修改及变化对于本领域技术人员将显而易见。选择 及描述实施例以便最佳地解释各种方面及实践应用,且使其他本领域技术人员能够理解具 有如适合于所涵盖的特定用途的各种修改的各种实施例。

Claims (11)

1. 一种控制一计算环境中的事务执行的方法,该方法包含如下步骤: 由一处理器起始一计算环境内的事务,该事务有效地延迟将事务储存交付至主存储器 直至一选择的事务完成为止,并且其中由一个或多个控制来管理该事务的中断的呈现,该 一个或多个控制具有与该事务关联的状态; 基于检测到程序事件记录PER事件和具有第一值的状态,对于该事务呈现中断,PER被 限定为基于检测到PER事件呈现中断,所述中断使得待执行的下一事务指令的地址被保存; 及 基于具有第二值的状态来抑制所述事务的PER事件检测,其中所述抑制包括忽略用以 对于所述处理器控制一个或多个PER事件的一个或多个PER事件屏蔽,所述忽略防止在所述 处理器的事务执行模式期间所述一个或多个PER事件如限定的那样操作,通过最外部事务 开始执行进入所述事务执行模式且通过最外部事务结束指令退出所述事务执行模式。
2. 如权利要求1所述的方法,其中所述方法基于所述中断进一步重新执行所述事务,并 且其中所述状态具有指示PER事件检测的抑制的第二值,其中防止基于另一 PER事件的另一 中断的呈现。
3. 如权利要求1所述的方法,其中该一个或多个控制包括事件抑制控制以指定选择的 PER事件的抑制,以及事务结束事件控制以指定选择的PER事件的抑制,直到选择的事务结 束为止。
4. 如权利要求3所述的方法,其中选择的PER事件包括如下事件的一个或多个事件:成 功分支事件、指令提取事件、储存变更事件、使用真实地址储存事件或零地址检测事件。
5. 如权利要求4所述的方法,其中基于所述事务不是最外部事务,所述如下事件进一步 包括指令提取无效事件。
6. 如权利要求3所述的方法,其中所述方法进一步包括: 基于被设置的事件抑制控制,除了事务结束事件,独立于其中维持当前PER设置的存取 任务结构而禁止PER事件。
7. 如权利要求1所述的方法,其中所述方法进一步包括:对于选择的事务,检测事务结 束的执行,其中基于检测,重设所述一个或多个控制。
8. 如权利要求7所述的方法,其中选择的事务包括最外部事务。
9. 如权利要求1所述的方法,其中在所述处理器的控制寄存器中维持所述一个或多个 控制。
10. 如权利要求2所述的方法,其中所述另一个PER事件是与所述PER事件相同的事件或 与所述PER事件不同的事件。
11. 一种控制一计算环境中的事务执行的系统,包含适配于执行根据上述任一项方法 权利要求的方法的所有步骤的装置。
CN201380027244.2A 2012-06-15 2013-06-12 控制一计算环境中的事务执行的方法及系统 CN104364772B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US13/524,903 US9317460B2 (en) 2012-06-15 2012-06-15 Program event recording within a transactional environment
US13/524,903 2012-06-15
PCT/EP2013/062171 WO2013186270A1 (en) 2012-06-15 2013-06-12 Program event recording within a transactional environment

Publications (2)

Publication Number Publication Date
CN104364772A CN104364772A (zh) 2015-02-18
CN104364772B true CN104364772B (zh) 2016-12-28

Family

ID=48628659

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380027244.2A CN104364772B (zh) 2012-06-15 2013-06-12 控制一计算环境中的事务执行的方法及系统

Country Status (8)

Country Link
US (2) US9317460B2 (zh)
EP (1) EP2862080B1 (zh)
JP (1) JP6176637B2 (zh)
CN (1) CN104364772B (zh)
HK (1) HK1207702A1 (zh)
MX (1) MX338377B (zh)
SI (1) SI2862080T1 (zh)
WO (1) WO2013186270A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
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
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9535851B2 (en) * 2014-02-04 2017-01-03 Netronome Systems, Inc. Transactional memory that performs a programmable address translation if a DAT bit in a transactional memory write command is set
US20150220446A1 (en) * 2014-02-04 2015-08-06 Netronome Systems, Inc. Transactional memory that is programmable to output an alert if a predetermined memory write occurs
DE112014007090T5 (de) * 2014-10-24 2017-07-13 Google Inc. AUTOMATIC TAGGING METHOD AND SYSTEMS DUE TO SOFTWARE EXECUTION TRACES
CN104536893B (zh) * 2015-01-05 2018-01-30 中国农业银行股份有限公司 一种批量处理程序容报错处理方法及装置
GB2536871A (en) 2015-03-04 2016-10-05 Advanced Risc Mach Ltd An apparatus and method to generate trace data in response to transactional execution
US9542290B1 (en) 2016-01-29 2017-01-10 International Business Machines Corporation Replicating test case data into a cache with non-naturally aligned data boundaries
US10789405B2 (en) 2016-03-04 2020-09-29 Montana Systems Inc. Event-driven design simulation
US10747930B2 (en) * 2016-03-04 2020-08-18 Montana Systems Inc. Event-driven design simulation
US10169180B2 (en) 2016-05-11 2019-01-01 International Business Machines Corporation Replicating test code and test data into a cache with non-naturally aligned data boundaries
US10055320B2 (en) 2016-07-12 2018-08-21 International Business Machines Corporation Replicating test case data into a cache and cache inhibited memory
US10223225B2 (en) 2016-11-07 2019-03-05 International Business Machines Corporation Testing speculative instruction execution with test cases placed in memory segments with non-naturally aligned data boundaries
US10831509B2 (en) 2017-02-23 2020-11-10 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US10261878B2 (en) 2017-03-14 2019-04-16 International Business Machines Corporation Stress testing a processor memory with a link stack
US10755014B2 (en) 2018-03-14 2020-08-25 Montana Systems Inc. Event-driven design simulation
US10838631B2 (en) 2019-02-25 2020-11-17 International Business Machines Corporation Detection of alteration of storage keys used to protect memory

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1547701A (zh) * 2001-08-29 2004-11-17 模拟设备公司 通过响应高速缓存缺失而切换任务来提高基于高速缓存的嵌入式处理器的处理能力的方法和装置

Family Cites Families (175)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JPH02191041A (en) * 1989-01-20 1990-07-26 Hitachi Micro Comput Eng Ltd Data processor
US5471591A (en) 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
DE4216871C2 (de) 1991-05-21 2001-09-06 Digital Equipment Corp Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen
US5701480A (en) 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
AU6629894A (en) 1993-05-07 1994-12-12 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
JP3720371B2 (ja) 1995-10-06 2005-11-24 アドバンスト・マイクロ・デバイシズ・インコーポレイテッド スーパースケーラープロセッサにおけるout−of−order実行のための統一化された機能オペレーションスケジューラ
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
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
US5937199A (en) 1997-06-03 1999-08-10 International Business Machines Corporation User programmable interrupt mask with timeout for enhanced resource locking efficiency
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
SE9704476L (sv) 1997-12-02 1999-06-23 Ericsson Telefon Ab L M Extended instruction decoding
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
EP0992916A1 (en) 1998-10-06 2000-04-12 Texas Instruments France 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
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
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
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
US6665863B1 (en) 2000-05-31 2003-12-16 Microsoft Corporation Data referencing within a database graph
US7246123B2 (en) 2000-08-04 2007-07-17 Carr Scott Software Incorporated Automatic transaction management
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
KR100625595B1 (ko) 2001-05-28 2006-09-20 한국전자통신연구원 트랜잭션 처리 시스템의 병렬 로깅 방법 및 트랜잭션 로그 처리 시스템
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
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
US7269717B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Method for reducing lock manipulation overhead during access to critical code 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
EP1498815A3 (en) 2003-06-30 2006-11-29 Gravic, Inc. Methods for ensuring referential integrity in multi-threaded 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
US7395382B1 (en) 2004-08-10 2008-07-01 Sun Microsystems, Inc. Hybrid software/hardware transactional memory
US7836280B1 (en) 2004-09-14 2010-11-16 Azul Systems, Inc. Dynamic concurrent atomic execution
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
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
US20070005828A1 (en) 2005-06-30 2007-01-04 Nimrod Diamant Interrupts support for the KCS manageability interface
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
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
US20070198979A1 (en) 2006-02-22 2007-08-23 David Dice Methods and apparatus to implement parallel transactions
US8099538B2 (en) 2006-03-29 2012-01-17 Intel Corporation Increasing functionality of a reader-writer lock
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
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
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
JP4892406B2 (ja) * 2007-05-23 2012-03-07 株式会社日立製作所 情報処理装置のトランザクション管理方法及び情報処理装置
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
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 中兴通讯股份有限公司 中继状态调节方法和装置
US9391789B2 (en) 2007-12-14 2016-07-12 Qualcomm Incorporated Method and system for multi-level distribution information cache management in a mobile environment
US8195898B2 (en) 2007-12-27 2012-06-05 Intel Corporation Hybrid transactions for low-overhead speculative parallelization
US8065491B2 (en) 2007-12-30 2011-11-22 Intel Corporation Efficient non-transactional write barriers for strong atomicity
US8706982B2 (en) 2007-12-30 2014-04-22 Intel Corporation Mechanisms for strong atomicity in a transactional memory system
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
US8176280B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US8161273B2 (en) 2008-02-26 2012-04-17 Oracle America, Inc. Method and apparatus for programmatically rewinding a register inside a transaction
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
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
US20090260011A1 (en) 2008-04-14 2009-10-15 Microsoft Corporation Command line transactions
JP5385545B2 (ja) 2008-04-17 2014-01-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクションの実行を制御する装置及び方法
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
US20100023703A1 (en) 2008-07-28 2010-01-28 Christie David S Hardware transactional memory support for protected and unprotected shared-memory accesses in a speculative section
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
JP4702962B2 (ja) 2008-11-12 2011-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Maschines Corporation メモリ制御装置、プログラム及び方法
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
US10210018B2 (en) 2008-12-24 2019-02-19 Intel Corporation Optimizing quiescence in a software transactional memory (STM) system
US9274855B2 (en) 2008-12-24 2016-03-01 Intel Corporation Optimization for safe elimination of weak atomicity overhead
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
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 深圳市江波龙电子有限公司 一种电子支付卡的交易方法及电子支付卡
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
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
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
US9092253B2 (en) 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
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
US8301849B2 (en) 2009-12-23 2012-10-30 Intel Corporation Transactional memory in out-of-order processors with XABORT having immediate argument
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
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
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1547701A (zh) * 2001-08-29 2004-11-17 模拟设备公司 通过响应高速缓存缺失而切换任务来提高基于高速缓存的嵌入式处理器的处理能力的方法和装置

Also Published As

Publication number Publication date
EP2862080A1 (en) 2015-04-22
JP2015526787A (ja) 2015-09-10
JP6176637B2 (ja) 2017-08-09
CN104364772A (zh) 2015-02-18
US20130339562A1 (en) 2013-12-19
SI2862080T1 (sl) 2018-12-31
US20130339561A1 (en) 2013-12-19
US9317460B2 (en) 2016-04-19
MX2014015291A (es) 2015-04-13
US9311259B2 (en) 2016-04-12
EP2862080B1 (en) 2018-10-17
WO2013186270A1 (en) 2013-12-19
HK1207702A1 (zh) 2016-02-05
MX338377B (es) 2016-04-13

Similar Documents

Publication Publication Date Title
Long et al. Automatic runtime error repair and containment via recovery shepherding
US10353759B2 (en) Facilitating transaction completion subsequent to repeated aborts of the transaction
US9442824B2 (en) Transformation of a program-event-recording event into a run-time instrumentation event
US9983883B2 (en) Transaction abort instruction specifying a reason for abort
Shye et al. PLR: A software approach to transient fault tolerance for multicore architectures
JP6218433B2 (ja) トランザクションの完了を容易にするためのプロセッサ内での処理の制限
US10360033B2 (en) Conditional transaction end instruction
US9811337B2 (en) Transaction abort processing
US10558465B2 (en) Restricted instructions in transactional execution
US9400657B2 (en) Dynamic management of a transaction retry indication
JP6058020B2 (ja) トランザクション実行モードでのランタイム・インスツルメンテーション・サンプリングを実現するためのコンピュータ・プログラム・プロダクト、方法、およびシステム(トランザクション実行モードでのランタイム・インスツルメンテーション・サンプリング)
US10185588B2 (en) Transaction begin/end instructions
CN102906722B (zh) 将消息信号中断转换为i/o适配器事件通知
Lucia et al. Atom-aid: Detecting and surviving atomicity violations
CN106133683B (zh) 计算系统中的架构模式配置
RU2606878C2 (ru) Обработка транзакций
JP6238248B2 (ja) 制約付きトランザクションの実行
US9286076B2 (en) Intra-instructional transaction abort handling
RU2562424C2 (ru) Сохранение/восстановление выбранных регистров при транзакционной обработке
JP5427742B2 (ja) コンピュータのメモリを参照する方法およびコンピュータ
RU2577487C2 (ru) Способ и система для управления выполнением внутри вычислительной среды
JP6253065B2 (ja) Selective control of instruction execution in transaction processing
US10599435B2 (en) Nontransactional store instruction
US10223214B2 (en) Randomized testing within transactional execution
Lucia et al. ColorSafe: architectural support for debugging and dynamically avoiding multi-variable atomicity violations

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant