CN104350462A - 事务中止指令 - Google Patents
事务中止指令 Download PDFInfo
- Publication number
- CN104350462A CN104350462A CN201380028454.3A CN201380028454A CN104350462A CN 104350462 A CN104350462 A CN 104350462A CN 201380028454 A CN201380028454 A CN 201380028454A CN 104350462 A CN104350462 A CN 104350462A
- Authority
- CN
- China
- Prior art keywords
- affairs
- instruction
- code
- program
- field
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 113
- 238000003860 storage Methods 0.000 claims description 102
- 238000004590 computer program Methods 0.000 claims description 26
- 238000003745 diagnosis Methods 0.000 claims description 24
- 238000006073 displacement reaction Methods 0.000 claims description 20
- 230000006870 function Effects 0.000 description 64
- 230000015654 memory Effects 0.000 description 59
- 230000008569 process Effects 0.000 description 48
- 238000012216 screening Methods 0.000 description 38
- 230000002159 abnormal effect Effects 0.000 description 36
- 238000004088 simulation Methods 0.000 description 30
- 238000012545 processing Methods 0.000 description 26
- 239000000284 extract Substances 0.000 description 23
- 238000013519 translation Methods 0.000 description 22
- 230000000875 corresponding effect Effects 0.000 description 16
- 238000000605 extraction Methods 0.000 description 16
- CZPAJVBVULSLGG-UHFFFAOYSA-N 4-[(3r)-3-(trifluoromethyl)diazirin-1-ium-3-yl]benzoate Chemical compound C1=CC(C(=O)O)=CC=C1C1(C(F)(F)F)N=N1 CZPAJVBVULSLGG-UHFFFAOYSA-N 0.000 description 14
- 230000009471 action Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 14
- 238000007667 floating Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 230000008859 change Effects 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 9
- 238000007689 inspection Methods 0.000 description 6
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 238000000926 separation method Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000001276 controlling effect Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 230000002547 anomalous effect Effects 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007787 long-term memory Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- VIKNJXKGJWUCNN-XGXHKTLJSA-N norethisterone Chemical compound O=C1CC[C@@H]2[C@H]3CC[C@](C)([C@](CC4)(O)C#C)[C@@H]4[C@@H]3CCC2=C1 VIKNJXKGJWUCNN-XGXHKTLJSA-N 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000010926 purge Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004804 winding Methods 0.000 description 2
- 102100032303 26S proteasome non-ATPase regulatory subunit 2 Human genes 0.000 description 1
- 101000590272 Homo sapiens 26S proteasome non-ATPase regulatory subunit 2 Proteins 0.000 description 1
- 101001093690 Homo sapiens Protein pitchfork Proteins 0.000 description 1
- 102000004137 Lysophosphatidic Acid Receptors Human genes 0.000 description 1
- 108090000642 Lysophosphatidic Acid Receptors Proteins 0.000 description 1
- 101100496104 Mus musculus Clec2d gene Proteins 0.000 description 1
- 102100036065 Protein pitchfork Human genes 0.000 description 1
- 101100274534 Rattus norvegicus Clec2d11 gene Proteins 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 238000005469 granulation Methods 0.000 description 1
- 230000003179 granulation Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000007430 reference method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000007873 sieving Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
Abstract
TRANSACTION ABORT指令用于中止在计算环境中正执行的事务。TRANSACTION ABORT指令包括用于指定指示用于中止事务的具体原因的用户限定的中止码的至少一个字段。基于执行所述TRANSACTION ABORT指令,提供指示是否推荐所述事务的重新执行的条件码。
Description
技术领域
一个或多个方面大体上关于多处理计算环境,且尤其关于此类计算环境内的事务处理。
背景技术
多处理器编程中的持久挑战为由多个中央处理单元(CPU)对同一储存位置的更新的挑战。更新储存位置的许多指令(甚至包括诸如AND的简单逻辑运算)用对该位置的多次存取来进行该更新。举例而言,首先提取储存位置,且接着储存回已更新结果。
为了使多个CPU安全地更新同一储存位置,序列化对该位置的存取。用先前由提供的S/360架构引入的一个指令(TEST AND SET指令)提供储存位置的连锁更新(interlocked update)。连锁更新意谓:如由其他CPU及输入/输出(I/O)子系统(例如,通道子系统)所观察的那样,指令的整个储存存取看来像是自动地发生的一样。稍后,由IBM提供的S/370架构引入COMPAREAND SWAP及COMPARE DOUBLE AND SWAP指令以及COMPAREDOUBLE AND SWAP指令,这些指令提供执行连锁更新的较精密方式且允许通常被称为锁定字组(或旗号)的实施。最近新增的指令已提供额外连锁更新能力,包括COMPARE AND SWAP AND PURGE及COMPARE AND SWAP ANDSTORE。然而,所有这些指令提供用于仅单一储存位置的连锁。
较复杂的程序技术可需要多个储存位置的连锁更新,诸如,当将一元素新增至一双向链接清单(doubly-linked list)时。在此类操作中,前向指针及向后指针两者皆看来像是被同时地更新一样,如由其他CPU及I/O子系统所观察的那样。为了实现此类多重位置更新,强制程序使用分离的单一序列化点,诸如,锁定字组。然而,锁定字组可提供比所保证的序列化层级粗略得多的序列化层级;举例而言,锁定字组可序列化数百万个元素的整个队列,即使仅两个元素正被更新亦如此。程序可结构化数据以使用较精细粒度级序列化(例如,锁定点阶层),但这引入额外问题,诸如,在违反该阶层时的潜在锁死情形,及在程序遭遇错误同时保持一或多个锁定时或在不能获取锁定时的复原问题。
除了以上内容以外,亦存在程序可以执行可能引起或可能不引起异常情况的指令序列的众多情境。若未发生异常情况,则程序继续;然而,若辨识出异常,则程序可采取校正动作以消除异常情况。作为一实例,Java可在(例如)理论式执行、函数的部分内嵌和/或指针空值检查的重新定序中利用此类执行。Java和所有基于Java的商标和标志是Oracle和/或其附属机构的商标或注册商标。
在诸如由IBM提供的IBM及其前身的传统操作系统环境中,程序建立复原环境以拦截程序可遭遇的任何程序异常情况。若程序未拦截到异常,则操作系统通常针对操作系统未准备好进行处置的异常而例外地终止程序。建立及利用此类环境是昂贵且复杂的。IBM、z/OS、(以下引用)、(以下引用)、Processor Resource/Systems ManagerTM(以下引用)、Power SystemsTM(以下引用)以及System(以下引用)是在全球很多司法界注册的国际商业机器公司的商标。
因此,本领域需要解决前述问题。
发明内容
经由提供一种用于执行计算环境内的指令的计算机程序产品而克服先前技术的缺点且提供优点。该计算机程序产品包括一计算机可读储存介质,该计算机可读储存介质可由一处理电路读取且储存指令以供该处理电路执行来执行一方法。举例而言,所述方法包括:由处理器获得用于执行的机器指令,所述机器指令是根据计算机架构而对于计算机执行所限定的,所述机器指令包括:操作码,用于指定事务中止操作;以及至少一个字段,用于指定中止码;以及由所述处理器执行所述机器指令,所述执行包括:中止正执行的事务,其中,所述事务在完成之前结束;以及基于所述中止,提供条件码,所述条件码用于指示是否推荐所述事务的重新执行。
从第一方面可见,本发明提供用于执行计算环境内的指令的方法,所述方法包括:由处理器获得用于执行的机器指令,所述机器指令是根据计算机架构而对于计算机执行所限定的,所述机器指令包括:操作码,用于指定事务中止操作;以及至少一个字段,用于指定中止码;以及由所述处理器执行所述机器指令,所述执行包括:中止正执行的事务,其中,所述事务在完成之前结束;以及基于所述中止,提供条件码,所述条件码用于指示是否推荐所述事务的重新执行。
从另一方面可见,本发明提供一种用于执行计算环境内的指令的计算机系统,所述计算机系统包括:存储器;以及处理器,与所述存储器进行通信,其中,所述计算机系统被配置为执行方法,所述方法包括:由处理器获得用于执行的机器指令,所述机器指令是根据计算机架构而对于计算机执行所限定的,所述机器指令包括:操作码,用于指定事务中止操作;以及至少一个字段,用于指定中止码;以及由所述处理器执行所述机器指令,所述执行包括:中止正执行的事务,其中,所述事务在完成之前结束;以及基于所述中止,提供条件码,所述条件码用于指示是否推荐所述事务的重新执行。
从另一方面可见,本发明提供一种用于执行计算环境内的指令的计算机程序产品,所述计算机程序产品包括:计算机可读存储介质,可由处理电路读取并且存储用于所述处理电路执行的指令,以用于执行用于执行本发明的各步骤的方法。
从另一方面可见,本发明提供一种计算机程序,存储在计算机可读介质上,并且可加载到数字计算机的内部存储器中,当所述程序运行在计算机上时包括软件码部分,用于执行本发明的各步骤。
从另一方面可见,本发明提供一种用于执行计算环境内的指令的计算机程序产品,所述计算机程序产品包括:计算机可读存储介质,可由处理电路读取并且存储用于所述处理电路执行的指令,以用于执行方法,所述方法包括:由处理器获得用于执行的机器指令,所述机器指令是根据计算机架构而对于计算机执行所限定的,所述机器指令包括:操作码,用于指定事务中止操作;以及至少一个字段,用于指定中止码;以及由所述处理器执行所述机器指令,所述执行包括:中止正执行的事务,其中,所述事务在完成之前结束;以及基于所述中止,提供条件码,所述条件码用于指示是否推荐所述事务的重新执行。
本文亦描述及主张与一个或多个实施例相关的方法及系统。另外,本文亦描述且可主张与一个或多个实施例相关的服务。
贯穿全文实现额外特征及优点。其他实施例及方面在本文中得以详细地描述且被看作本发明的部分。
附图说明
现将如以下附图所示,参照优选实施例仅通过示例的方式描述本发明:
图1描绘根据现有技术的并且可以实现本发明优选实施例的计算环境的一个实施例;
图2A描绘根据本发明优选实施例的事务开始(TBEGIN)指令的一实例;
图2B描绘根据本发明优选实施例的图2A的TBEGIN指令的字段的其它细节的一个实施例;
图3A描绘根据本发明优选实施例的事务开始受限(TBEGINC)指令的一实例;
图3B描绘根据本发明优选实施例的图3A的TBEGINC指令的字段的其它细节的一个实施例;
图4描绘根据本发明优选实施例的事务结束(TEND)指令的一实例;
图5描绘根据本发明优选实施例的事务中止(TABORT)指令的一实例;
图6描绘根据本发明优选实施例的嵌套事务的一实例;
图7描绘根据本发明优选实施例的NONTRANSACTIONAL STORE(NTSTG)指令的一实例;
图8描绘根据本发明优选实施例的EXTRACT TRANSACTIONNESTING DEPTH(ETND)指令的一实例;
图9描绘根据本发明优选实施例的事务诊断区块的一实例;
图10描绘根据本发明优选实施例的中止的实例原因,连同关联中止码及条件码;
图11描绘根据本发明优选实施例的与事务中止处理关联的逻辑的一个实施例;
图12描绘根据本发明优选实施例的有效程序中断筛选控制(PIFC)和事务执行程序中断类的列表的一实例;
图13A–图13B描绘根据本发明优选实施例的用于各个程序异常情况的事务执行类的一实例;
图14描绘根据本发明优选实施例的中止条件的优先级的一实例;
图15A-图15B描绘根据本发明优选实施例的程序中断条件的优先级的一实例;
图16A-图16B描绘根据本发明优选实施例的将队列元素插入到队列元素的双向链表中的实例;
图17描绘根据本发明优选实施例的主机计算机系统的一个实施例;
图18描绘根据现有技术的并且可以实现本发明优选实施例的主机计算机系统的一个实施例;
图19描绘计算机系统的另一示例;
图20描绘根据现有技术的并且可以实现本发明优选实施例的包括计算机网络的计算机系统的另一实例;
图21描绘根据本发明优选实施例的计算机系统的各个元件的一个实施例;
图22A描绘根据本发明优选实施例的图21的计算机系统的执行单元的一个实施例;
图22B描绘根据本发明优选实施例的图21的计算机系统的分支单元的一个实施例;
图22C描绘根据本发明优选实施例的图21的计算机系统的加载/存储单元的一个实施例;以及
图23描绘根据本发明优选实施例的模拟主机计算机系统的一个实施例。
具体实施方式
根据一个方面,提供一种事务执行(TX)设施。此设施提供用于指令的事务处理,且在一个或多个实施例中提供如下文所描述的不同执行模式,以及事务处理的嵌套层级。
事务执行设施引入被称作事务执行(TX)模式的CPU状态。在CPU重设之后,CPU并不处于TX模式。CPU藉由TRANSACTION BEGIN指令进入TX模式。CPU藉由(a)最外部TRANSACTION END指令(关于内部指令及外部指令的更多细节如下)或(b)正被中止的事务而离开TX模式。虽然处于TX模式,但由CPU进行的储存存取看来像是区块并行的一样,如由其他CPU及I/O子系统所观察的那样。储存存取(a)在最外部事务在无中止的情况下结束时被交付至存储器(亦即,例如,在CPU本地的高速缓存或缓冲器中进行的更新经传播及储存于真实存储器中且可为其他CPU所见),或(b)在事务中止时被舍弃。
事务可为嵌套。亦即,在CPU处于TX模式时,CPU可执行另一TRANSACTION BEGIN指令。使CPU进入TX模式的指令被称作最外部TRANSACTION BEGIN;相似地,程序据称处于最外部事务。TRANSACTIONBEGIN的后续执行被称作内部指令;且程序正执行内部事务。模型提供最小嵌套深度及模型相依最大嵌套深度。EXTRACT TRANSACTION NESTINGDEPTH指令传回当前嵌套深度值,且在一另外实施例中可传回最大嵌套深度值。此技术使用被称作“扁平化嵌套(flattened nesting)”的模型,其中任何嵌套深度处的中止条件造成事务的所有层级中止,且控制传回至在最外部TRANSACTION BEGIN之后的指令。
在事务的处理期间,由一个CPU进行的事务存取据称与(a)由另一CPU进行的事务存取或非事务存取冲突,或与(b)由I/O子系统进行的非事务存取冲突(若两种存取是针对同一高速缓存行内的任何位置,且这些存取中的一个或两个为储存)。换言之,为了使事务执行有生产力,CPU不应被观察到进行事务存取直至事务存取交付为止。此编程模型在某些环境中可以高度地有效;例如,数百万个元素的双向链接清单中的两个点的更新。然而,若针对正被事务地存取的储存位置存在许多争用,则该编程模型可能较不有效。
在一个事务执行模型(在本文中被称作非受限事务)中,当事务中止时,程序可尝试重新驱动事务以希望不再出现中止情况,或程序可“后退”至等效非事务路径。在另一事务执行模型(在本文中被称作受限事务)中,已中止事务由CPU自动地重新驱动;在不存在限制违反时,受限事务确保最终完成。
当起始事务时,程序可指定各种控制,诸如:(a)在事务中止时哪些一般寄存器恢复为其原始内容;(b)是否允许事务修改浮点寄存器上下文,包括(例如)浮点寄存器及浮点控制寄存器;(c)是否允许事务修改存取寄存器(AR);及(d)是否将封锁某些程序异常情况免于造成中断。若非受限事务中止,则可提供各种诊断信息。举例而言,起始非受限事务的最外部TBEGIN指令可指明程序指定事务诊断区块(TDB)。另外,若事务分别归因于程序中断或造成解译性执行结束的情况而中止,则亦可使用CPU的前置区域中或由主机的状态描述指明的TDB。
上文指示各种类型的寄存器。本文进一步详细地解释这些寄存器。一般寄存器可用作一般算术及逻辑运算中的累加器。在一个实施例中,每一寄存器含有64个位的位置,且存在16个一般寄存器。这些一般寄存器由数字0至15识别,且由一指令中的四位R字段指明。一些指令规定藉由具有若干R字段来寻址多个一般寄存器。对于一些指令,特定一般寄存器的使用被暗示,而非由该指令的R字段明确地指明。
除了作为一般算术及逻辑运算中的累加器的使用以外,16个一般寄存器中的15个寄存器亦在地址产生中用作基底地址及索引寄存器。在此等状况下,这些寄存器由一指令中的四位B字段或X字段指明。该B或X字段中的值0指定出将不应用基底或索引,且因此,一般寄存器0将不被指明为含有基底地址或索引。
浮点指令使用浮点寄存器集合。在一实施例中,CPU具有16个浮点寄存器。这些浮点寄存器由数字0至15识别,且由浮点指令中的四位R字段指明。每一浮点寄存器为64个位长,且可含有短(32位)浮点操作数或长(64位)浮点操作数。
浮点控制(FPC)寄存器为含有屏敝位、标志位、数据异常码及舍位模式位的32位寄存器,且在浮点运算的处理期间被使用。
另外,在一个实施例中,CPU具有16个控制寄存器,每一控制寄存器具有64个位的位置。这些寄存器中的位的位置指派至系统中的特定设施,诸如,程序事件记录(PER)(下文所论述),且用以指定出可进行操作,或用以供给由该设施需要的特殊信息。在一个实施例中,对于事务设施,使用CR0(位8及9)及CR2(位61至63),如下文所描述。
举例而言,CPU具有被编号为0至15的16个存取寄存器。一个存取寄存器由含有地址空间控制元素(ASCE)的间接规格的32个位的位置组成。地址空间控制元素为由动态地址转译(DAT)机制使用以将参考转译至对应地址空间的参数。当CPU处于被称作存取寄存器模式的模式(由程序状态字组(PSW)中的位控制)时,用以指定针对储存操作数参考的逻辑地址的指令B字段指明存取寄存器,且由存取寄存器指定的地址空间控制元素由DAT用于正被进行的参考。对于一些指令,使用R字段而非B字段。提供指令以用于载入及储存存取寄存器的内容且用于将一个存取寄存器的内容移动至另一存取寄存器。
存取寄存器1至15中每一个可指明任何地址空间。存取寄存器0指明主要指令空间。当存取寄存器1至15中的一个用以指明地址空间时,CPU判定藉由转译存取寄存器的内容而指明哪一地址空间。当存取寄存器0用以指明地址空间时,CPU将该存取寄存器视为指明主要指令空间,且CPU并不检验该存取寄存器的实际内容。因此,16个存取寄存器可在任一时间指明主要指令空间及15个其他空间的最大值。
在一个实施例中,存在多个类型的地址空间。一个地址空间为整数(虚拟地址)的连续序列,连同允许每一数字与存储器中的字节位置相关联的特定变换参数。该序列以0开始且自左侧至右侧进行。
举例而言,在z/Architecture中,当虚拟地址是由CPU使用以存取主存储器(又名,主存储器)时,虚拟地址首先凭借动态地址转译(DAT)而转换至真实地址,且接着凭借加前缀(prefixing)而转换至绝对地址。DAT可使用表的一个至五个层级(页、区段、区第三、区第二及区第一)作为变换参数。用于特定地址空间的最高层级表的指明(原点及长度)被称作地址空间控制元素,且该指明被发现供DAT用于控制寄存器中或如由存取寄存器所指定。或者,用于地址空间的地址空间控制元素可为真实空间指明,其指示出DAT用以简单地藉由将虚拟地址视为真实地址且不使用任何表来转译虚拟地址。
DAT在不同时间使用不同控制寄存器中或由存取寄存器指定的地址空间控制元素。选择由当前PSW中指定的转译模式判定。四个转译模式是可用的:主要空间模式、次要空间模式、存取寄存器模式及本籍空间模式(home spacemode)。取决于转译模式,不同地址空间是可寻址的。
在CPU处于主要空间模式或次要空间模式时的任何时刻,CPU可转译属于两个地址空间(主要地址空间及第二地址空间)的虚拟地址。在CPU处于存取寄存器模式时的任何时刻,CPU可转译高达16个地址空间(主要地址空间及高达15个AR指定地址空间)的虚拟地址。在CPU处于本籍空间模式时的任何时刻,CPU可转译本籍地址空间的虚拟地址。
主要地址空间因而被识别,这是因为其由主要虚拟地址组成,这些主要虚拟地址凭借主要地址空间控制元素(ASCE)而转译。相似地,次要地址空间由凭借次要ASCE转译的次要虚拟地址组成;AR指定地址空间由凭借AR指定ASCE转译的AR指定虚拟地址组成;且本籍地址空间由凭借本籍ASCE转译的本籍虚拟地址组成。主要ASCE及次要ASCE分别处于控制寄存器1及7中。AR指定ASCE处于使用控制寄存器2、5及8经由被称作存取寄存器转译(ART)的处理而定位的ASN第二表项中。本籍ASCE处于控制寄存器13中。
参看图1来描述用以并入及使用本文所描述的事务设施的一个或多个方面的计算环境的一个实施例。
参看图1,在一实例中,计算环境100基于z/Architecture。2010年8月第九版的名为“z/Architecture-Principles of Operation”的IBM公开案(公开案第SA22-7932-08号)中描述z/Architecture,该公开案的全文据此以引用方式并入本文中。
本文所使用的其他名称可为国际商业机器公司或其他公司的注册商标、商标或产品名称。
作为一实例,计算环境100包括经由一个或多个控制单元108耦接至一个或多个输入/输出(I/O)器件106的中央处理器复合体(central processor complex,CPC)102。举例而言,中央处理器复合体102包括一个或多个中央处理器110、一个或多个分割区112(例如,逻辑分割区(LP))、逻辑分割区超管理器(hypervisor)114及输入/输出子系统115,其中每一者在下文予以描述。
中央处理器110为分配给逻辑分割区的实体处理器资源。详言之,每一逻辑分割区112具有一个或多个逻辑处理器,其中每一逻辑处理器表示分配给该分割区的实体处理器110的全部或份额。特定分割区112的逻辑处理器可专用于该分割区,使得底层处理器资源110针对那个分割区而保留;或这些逻辑处理器可与另一分割区共用,使得该底层处理器资源潜在地可用于另一分割区。
逻辑分割区充当分离系统且具有一个或多个应用程序,且视情况在其中具有驻留操作系统,该驻留操作系统针对每一逻辑分割区可不同。在一实施例中,操作系统为由纽约州阿蒙克市的国际商业机器公司提供的z/OS操作系统、z/VM操作系统、z/Linux操作系统或TPF操作系统。逻辑分割区112由逻辑分割区超管理器114管理,逻辑分割区超管理器114由处理器110上运行的固件实施。如本文所使用,固件包括(例如)处理器的微码(microcode)和/或毫码(millicode)。举例而言,固件包括在较高层级机器码的实施中使用的硬件层级指令和/或数据结构。在一实施例中,举例而言,固件包括通常作为包括受信任软件的微码或特定于底层硬件的微码进行递送且控制对系统硬件的操作系统存取的专属码。
逻辑分割区及逻辑分割区超管理器各自包含驻留于与中央处理器相关联的中央存储器的各别分割区中的一个或多个程序。逻辑分割区超管理器114的一个实例为由纽约州阿蒙克市的国际商业机器公司提供的ProcessorResource/System Manager(PR/SM)。
输入/输出子系统115在输入/输出器件106与主存储器(又名,主存储器)之间引导信息流动。输入/输出子系统耦接至中央处理复合体,此在于:输入/输出子系统可为中央处理器复合体的部分或与中央处理器复合体分离。I/O子系统使中央处理器减轻直接地与输入/输出器件通信的任务的负担,且准许数据处理与输入/输出处理并行地进行。为了提供通信,I/O子系统使用I/O通信适配器。存在各种类型的通信适配器,包括(例如)通道、I/O适配器、PCI卡、乙太网卡、小型计算机储存接口(SCSI)卡等等。在本文所描述的特定实例中,I/O通信适配器为通道,且因此,I/O子系统在本文中被称作通道子系统。然而,此情形仅为一实例。可使用其他类型的I/O子系统。
I/O子系统使用一个或多个输入/输出路径作为通信链路来管理至或自输入/输出器件106的信息流动。在此特定实例中,此等路径被称作通道路径,这是因为通信适配器为通道。
上文所描述的计算环境仅为可使用的计算环境的一个实例。可使用包括但不限于非分割环境、其他分割环境和/或模拟环境的其他环境;实施例并不限于任一环境。
根据一个或多个方面,事务执行设施为CPU增强,其提供可用来使CPU执行指令序列(被称作事务)的方式,这些指令可存取多个储存位置,包括那些位置的更新。如由其他CPU及I/O子系统所观察,事务是(a)整体上作为单一不可部分完成操作而完成,或(b)中止,从而潜在地不留下事务曾经执行的迹象(惟本文所描述的某些条件除外)。因此,成功完成的事务可在没有在传统多处理模型中需要的任何特殊锁定的情况下更新众多储存位置。
举例而言,事务执行设施包括一个或多个控制、一个或多个指令、包括受限执行及非受限执行的事务处理及中止处理,其中每一个在下文予以进一步描述。
在一个实施例中,使用以下各者以控制事务执行设施:三个特殊用途控制,包括事务中止程序状态字组(PSW)、事务诊断区块(TDB)地址及事务嵌套深度;五个控制寄存器位;及六个一般指令,包括TRANSACTION BEGIN(受限及非受限)、TRANSACTION END、EXTRACT TRANSACTION NESTINGDEPTH、TRANSACTION ABORT及NONTRANSACTIONAL STORE。当该设施被安装时,该设施安装于(例如)配置中的所有CPU中。一个设施指示(在一实施中为位73)在为1时指示事务执行设施被安装。
当事务执行设施被安装时,该配置提供非受限事务执行设施且视情况提供受限事务执行设施,其中每一设施在下文予以描述。作为实例,当设施指示50及73皆为1时,受限事务执行设施被安装。两个设施指示皆在指定位置处储存于存储器中。
如本文所使用,指令名称TRANSACTION BEGIN指代具有助记符TBEGIN(用于非受限事务的事务开始)及TBEGINC(用于受限事务的事务开始)的指令。关于特定指令的论述由指令名称继之以圆括号或括号中的助记符指示,或简单地由助记符指示。
图2A至图2B中描绘TRANSACTION BEGIN(TBEGIN)指令的格式的一实施例。作为一实例,TBEGIN指令200包括:操作码字段202,其包括指定事务开始非受限操作的操作码;基本字段(B1)204;位移字段(D1)206;及立即字段(I2)208。当B1字段为非零时,将由B1204指定的一般寄存器的内容添加至D1206以获得第一操作数地址。
当B1字段为非零时,以下内容适用:
·当事务嵌套深度最初为0时,第一操作数地址指明被称作TBEGIN指定的TDB(下文进一步所描述)的256字节事务诊断区块的位置,若事务中止,则各种诊断信息可储存至TBEGIN指定的TDB中。当CPU处于主要空间模式或存取寄存器模式时,第一操作数地址指明主要地址空间中的位置。当CPU处于次要空间模式或本籍空间模式时,第一操作数地址分别指明次要地址空间或本籍地址空间中的位置。当DAT关断时,事务诊断区块(TDB)地址(TDBA)指明真实存储器中的位置。
判定对第一操作数的储存可存取性。若为可存取,则操作数的逻辑地址置放至事务诊断区块地址(TDBA)中,且TDBA有效。
·当CPU已经处于非受限事务执行模式时,TDBA未被修改,且不可预测的是第一操作数是否针对可存取性而被测试。
当B1字段为0时,针对第一操作数未侦测到存取异常,且对于最外部TBEGIN指令,TDBA无效。
在一实例中,I2字段的位被定义如下:
一般寄存器储存屏敝(GRSM)210(图2B):I2字段的位0至7含有一般寄存器储存屏敝(GRSM)。GRSM的每一位表示一般寄存器的偶奇对,其中位0表示寄存器0及1,位1表示寄存器2及3,等等。当最外部TBEGIN指令的GRSM中的位为0时,不储存对应寄存器对。当最外部TBEGIN指令的GRSM中的位为1时,将对应寄存器对储存于不能由程序直接地存取的依赖于模型的位置中。
若事务中止,则当执行最外部TBEGIN指令时,将已储存寄存器对恢复为其内容。当事务中止时,不恢复所有其他(未储存)一般寄存器的内容。
在惟最外部TBEGIN除外的所有TBEGIN上忽略一般寄存器储存屏敝。
允许AR修改(A)212:A控制(I2字段的位12)控制是否允许事务修改存取寄存器。有效允许AR修改控制为针对当前嵌套层级及针对所有外部层级的TBEGIN指令中的A控制的逻辑AND。
若有效A控制为0,则在尝试修改任何存取寄存器时事务将用中止码11(受限定指令)进行中止。若有效A控制为1,则在存取寄存器被修改(不存在任何其他中止条件)时事务将不中止。
允许浮点运算(F)214:F控制(I2字段的位13)控制是否允许事务执行指定浮点指令。有效允许浮点运算控制为针对当前嵌套层级及针对所有外部层级的TBEGIN指令中的F控制的逻辑AND。
若有效F控制为0,则(a)在尝试执行浮点指令时事务将用中止码11(受限定指令)进行中止,且(b)浮点控制寄存器(FPCR)的字节2中的数据异常码(DXC)将不由任何数据异常程序异常情况设定。若有效F控制为1,则(a)在尝试执行浮点指令(不存在任何其他中止条件)时事务将不中止,且(b)FPCR中的DXC可由数据异常程序异常情况设定。
程序中断筛选控制(PIFC)216:I2字段的位14至15为程序中断筛选控制(PIFC)。PIFC控制在CPU处于事务执行模式时发生的某些类别的程序异常情况(例如,寻址异常、数据异常、操作异常、保护异常等等)是否引起中断。
有效PIFC为针对当前嵌套层级及针对所有外部层级的TBEGIN指令中的PIFC的最高值。当有效PIFC为0时,所有程序异常情况引起中断。当有效PIFC为1时,具有事务执行类别1及2的程序异常情况引起中断。(取决于异常的严重性,每一程序异常情况被指派至少一事务执行类别。严重性基于在事务的重复执行期间复原的可能性,及操作系统是否需要查看中断。)当有效PIFC为2时,具有事务执行类别1的程序异常情况引起中断。保留为3的PIFC。
I2字段的位8至11(指令的位40至43)被保留且应含有0;否则,程序在未来可不相容地操作。
参看图3A至图3B来描述事务开始受限(TBEGINC)指令的格式的一实施例。在一实例中,TBEGINC 300包括:操作码字段302,其包括指定事务开始受限操作的操作码;基本字段(B1)304;位移字段(D1)306;及立即字段(I2)308。将由B1304指定的一般寄存器的内容添加至D1306以获得第一操作数地址。然而,在用事务开始受限指令的情况下,第一操作数地址不用以存取存储器。取而代之,指令的B1字段包括0;否则,辨识出规格异常。
在一实施例中,I2字段包括各种控制,这些控制的实例在图3B中予以描绘。
在一实例中,I2字段的位被定义如下:
一般寄存器储存屏敝(GRSM)310:I2字段的位0至7含有一般寄存器储存屏敝(GRSM)。GRSM的每一位表示一般寄存器的偶奇对,其中位0表示寄存器0及1,位1表示寄存器2及3,等等。当GRSM中的位为0时,不储存对应寄存器对。当GRSM中的位为1时,将对应寄存器对储存于不能由程序直接地存取的依赖于模型的位置中。
若事务中止,则当执行最外部TRANSACTION BEGIN指令时,将已储存寄存器对恢复为其内容。当受限事务中止时,不恢复所有其他(未储存)一般寄存器的内容。
当TBEGINC用以在非受限事务执行模式下继续执行时,忽略一般寄存器储存屏敝。
允许AR修改(A)312:A控制(I2字段的位12)控制是否允许事务修改存取寄存器。有效允许AR修改控制为针对当前嵌套层级及针对任何外部TBEGIN或TBEGINC指令的TBEGINC指令的A控制中的逻辑AND。
若有效A控制为0,则在尝试修改任何存取寄存器时事务将用中止码11(受限定指令)进行中止。若有效A控制为1,则在存取寄存器被修改(不存在任何其他中止条件)时事务将不中止。
I2字段的位8至11及13至15(指令的位40至43及45至47)被保留且应含有0。
事务开始指令的结束由TRANSACTION END(TEND)指令指定,该TRANSACTION END(TEND)指令的格式在图4中予以描绘。作为一实例,TEND指令400包括操作码字段402,操作码字段402包括指定事务结束操作的操作码。
关于事务执行设施而使用多个术语,且因此,仅出于方便起见,下文以按字母排序次序提供术语清单。在一实施例中,这些术语具有以下定义:
中止:当事务在引起事务嵌套深度为0的TRANSACTION END指令之前结束时,事务中止。在一实施例中,当事务中止时,发生以下情形:
·由事务的任何及所有层级进行的事务储存存取被舍弃(亦即,未被交付)。
·由事务的任何及所有层级进行的非事务储存存取被交付。
·由最外部TRANSACTION BEGIN指令的一般寄存器储存屏敝(GRSM)指明的寄存器在事务执行之前恢复为其内容(亦即,恢复为其在执行最外部TRANSACTION BEGIN指令时的内容)。未由最外部TRANSACTIONBEGIN指令的一般寄存器储存屏敝指明的一般寄存器未被恢复。
·存取寄存器、浮点寄存器及浮点控制寄存器未被恢复。当事务中止时,保持在事务执行期间对这些寄存器进行的任何改变。
事务可归因于多种原因而中止,这些原因包括受限定指令的已尝试执行、受限定资源的已尝试修改、事务冲突、超过各种CPU资源、任何解译性执行拦截条件、任何中断、TRANSACTION ABORT指令及其他原因。事务中止码提供事务为何可中止的特定原因。
参看图5来描述TRANSACTION ABORT(TABORT)指令的格式的一实例。作为一实例,TABORT指令500包括:操作码字段502,其包括指定事务中止操作的操作码;基本字段(B2)504;及位移字段(D2)506。当B2字段为非零时,将由B2504指定的一般寄存器的内容添加至D2506以获得第二操作数地址;否则,第二操作数地址仅由D2字段形成,且忽略B2字段。第二操作数地址不用以寻址数据;取而代之,该地址形成在中止处理期间置放于事务诊断区块中的事务中止码。用于第二操作数地址的地址计算遵循地址算术规则:在24位寻址模式下,将位0至29设定为0;在31位寻址模式下,将位0至32设定为0。
交付:在最外部TRANSACTION END指令完成时,CPU交付由事务进行的储存存取(亦即,最外部事务及任何嵌套层级),使得这些储存存取可为其他CPU及I/O子系统所见。如由其他CPU且由I/O子系统所观察,当发生交付时,由事务的所有嵌套层级进行的所有提取及储存存取看来像是作为单一并行操作而发生。
一般寄存器、存取寄存器、浮点寄存器及浮点控制寄存器的内容未藉由交付程序修改。当交付事务的储存时,保持在事务执行期间对这些寄存器进行的任何改变。
冲突:由一个CPU进行的事务存取与(a)由另一CPU进行的事务存取或非事务存取冲突,或与(b)由I/O子系统进行的非事务存取冲突(若两种存取针对同一高速缓存行内的任何位置,且这些存取中的一个或多个为储存)。
冲突可藉由CPU对指令的理论式执行而侦测,即使冲突不可以概念序列被侦测亦如此。
受限事务:受限事务为在受限事务执行模式下执行且经受以下限制的事务:
·一般指令的子集可用。
·可执行有限数目个指令。
·可存取有限数目个储存操作数位置。
·事务限于单一嵌套层级。
在不存在重复中断或与其他CPU或I/O子系统的冲突时,受限事务最终完成,因此无需中止处理例程。下文详细地描述受限事务。
当在CPU已经处于非受限事务执行模式时执行TRANSACTION BEGIN受限(TBEGINC)指令时,执行作为嵌套非受限事务而继续。
受限事务执行模式:当事务嵌套深度为0且事务由TBEGINC指令起始时,CPU进入受限事务执行模式。在CPU处于受限事务执行模式时,事务嵌套深度为1。
嵌套事务:当在CPU处于非受限事务执行模式时发出TRANSACTIONBEGIN指令时,事务为嵌套。
事务执行设施使用被称作扁平化嵌套的模型。在扁平化嵌套模式下,由内部事务进行的储存不能由其他CPU及I/O子系统观察直至最外部事务交付其储存为止。相似地,若事务中止,则所有嵌套事务中止,且舍弃所有嵌套事务的所有事务储存。
图6中描绘嵌套事务的一实例。如图所示,第一TBEGIN 600启动最外部事务601,TBEGIN 602启动第一嵌套事务,且TBEGIN 604启动第二嵌套事务。在此实例中,TBEGIN 604及TEND 606定义最内部事务608。当TEND 610执行时,针对最外部事务及所有内部事务交付(612)事务储存。
非受限事务:非受限事务为在非受限事务执行模式下执行的事务。尽管非受限事务并不以如同受限事务的方式受到限制,但非受限事务仍可归因于多种原因而中止。
非受限事务执行模式:当事务由TBEGIN指令起始时,CPU进入非受限事务执行模式。在CPU处于非受限事务执行模式时,事务嵌套深度可自1至最大事务嵌套深度而变化。
非事务存取:非事务存取为由CPU在不处于事务执行模式时进行的储存操作数存取(亦即,在事务外的传统储存存取)。另外,由I/O子系统进行的存取为非事务存取。另外,NONTRANSACTIONAL STORE指令可用以在CPU处于非受限事务执行模式时造成非事务储存存取。
参看图7来描述NONTRANSACTIONAL STORE指令的格式的一实施例。作为一实例,NONTRANSACTIONAL STORE指令700包括:复数个操作码字段702a、702b,其指定指明非事务储存操作的操作码;寄存器字段(R1)704,其指定寄存器,该寄存器的内容被称作第一操作数;索引字段(X2)706;基本字段(B2)708;第一位移字段(DL2)710;及第二位移字段(DH2)712。将由X2字段及B2字段指明的一般寄存器的内容添加至DH2字段及DL2字段的串连的内容以形成第二操作数地址。当X2字段或B2字段中任一个或两个为0时,对应寄存器不参与该添加。
使64位第一操作数在第二操作数位置处非事务地置于不变。
由DH2字段及DL2字段的串连形成的位移被视为20位带正负号二进位整数。
第二操作数用以在双字组边界上对准;否则,辨识出规格异常且抑制操作。
外部/最外部事务:具有较低编号事务嵌套深度的事务为外部事务。具有为1的事务嵌套深度值的事务为最外部事务。
最外部TRANSACTION BEGIN指令为在事务嵌套深度最初为0时执行的指令。最外部TRANSACTION END指令为使事务嵌套深度自1转变至0的指令。在此实施例中,受限事务为最外部事务。
程序中断筛选:当事务归因于某些程序异常情况而中止时,程序可视情况防止发生中断。此技术被称作程序中断筛选。程序中断筛选经受中断的事务类别、来自TRANSACTION BEGIN指令的有效程序中断筛选控制及控制寄存器0中的事务执行程序中断筛选覆写。
事务:在CPU处于事务执行模式时,事务包括所进行的储存操作数存取及所变更的选择的一般寄存器。对于非受限事务,储存操作数存取可包括事务存取及非事务存取两者。对于受限事务,储存操作数存取限于事务存取。如由其他CPU及I/O子系统所观察,由CPU在处于事务执行模式时进行的所有储存操作数存取看来像是作为单一并行操作而发生。若事务中止,则舍弃事务储存存取,且使由最外部TRANSACTION BEGIN指令的一般寄存器储存屏敝指明的任何寄存器恢复为其在事务执行之前的内容。
事务存取:事务存取为在CPU处于事务执行模式时进行的储存操作数存取,惟由NONTRANSACTIONAL STORE指令进行的存取除外。
事务执行模式:术语事务执行模式描述非受限事务执行模式及受限事务执行模式两者的共同操作。因此,当描述该操作时,术语非受限及受限用以限定事务执行模式。
当事务嵌套深度为0时,CPU不处于事务执行模式(亦被称作非事务执行模式)。
如由CPU所观察,在事务执行模式下进行的提取及储存并非不同于在不处于事务执行模式时进行的提取及储存。
在z/Architecture的一实施例中,事务执行设施在控制寄存器0的位8至9、控制寄存器2的位61至63、事务嵌套深度、事务诊断区块地址及事务中止程序状态字组(PSW)的控制下。
在初始CPU重设之后,将控制寄存器0的位的位置8至9、控制寄存器2的位的位置62至63及事务嵌套深度的内容设定为0。当事务执行控制(控制寄存器0的位8)为0时,不能将CPU置于事务执行模式。
下文描述关于各种控制的另外细节。
如所指示,事务执行设施由控制寄存器0中的两个位及控制寄存器2中的三个位控制。举例而言:
控制寄存器0位:在一实施例中,位指派如下:
事务执行控制(TXC):控制寄存器0的位8为事务执行控制。此位提供可用来使控制程序(例如,操作系统)指示事务执行设施是否可由该程序使用的机制。位8将为1以成功地进入事务执行模式。
当控制寄存器0的位8为0时,EXTRACT TRANSACTION NESTINGDEPTH、TRANSACTION BEGIN及TRANSACTION END指令的已尝试执行引起特殊操作执行。
参看图8来描述EXTRACT TRANSACTION NESTING DEPTH指令的格式的一实施例。作为一实例,EXTRACT TRANSACTION NESTING DEPTH指令800包括:操作码字段802,其指定指示撷取事务嵌套深度操作的操作码;及寄存器字段R1804,其指明一般寄存器。
将当前事务嵌套深度置于一般寄存器R1的位48至63中。该寄存器的位0至31保持不变,且将该寄存器的位32至47设定为0。
在一另外实施例中,亦将最大事务嵌套深度置于一般寄存器R1中,诸如,位16至31中。
事务执行程序中断筛选覆写(PIFO):控制寄存器0的位9为事务执行程序中断筛选覆写。此位提供可用来使控制程序确保在CPU处于事务执行模式时发生的任何程序异常情况引起中断而不管由TRANSACTION BEGIN指令指定或暗示的有效程序中断筛选控制的机制。
控制寄存器2位:在一实施例中,指派如下:
事务诊断范畴(TDS):控制寄存器2的位61控制该寄存器的位62至63中的事务诊断控制(TDC)的适用性,如下:
TDS
值 含义
0 TDC适用而不管CPU处于问题状态或监督状态。
1 仅当CPU处于问题状态时TDC才适用。当CPU处于监督状态时,处理如同TDC含有0一样。
事务诊断控制(TDC):控制寄存器2的位62至63为可用以使事务出于诊断目的而随机地中止的2位无正负号整数。在一实例中,TDC的编码如下:
TDC
值 含义
0 正常操作;事务并不由于TDC而中止。
1 在随机指令处但在最外部TRANSACTION END指令的执行之前中止每一事务。
2 在随机指令处中止随机事务。
3 保留
当事务归因于非零TDC而中止时,则可发生以下情形中任一者:
·将中止码设定为码7至11、13至16或255中任一个,其中该码的值由CPU随机地选择;将条件码设定成对应于中止码。下文进一步描述中止码。
·对于非受限事务,将条件码设定为1。在此状况下,中止码不适用。
这是依赖于是否实施TDC值1的模型。若未实施,则为1的值起作用就如同指定2一样。
对于受限事务,处理为1的TDC值就如同指定为2的TDC值一样。
若指定为3的TDC值,则结果是不可预测的。
事务诊断区块地址(TDBA)
当最外部TRANSACTION BEGIN(TBEGIN)指令的B1字段为非零时,自该指令的第一操作数地址设定有效事务诊断区块地址(TDBA)。当CPU处于主要空间模式或存取寄存器模式时,TDBA指明主要地址空间中的位置。当CPU处于次要空间模式或本籍空间模式时,TDBA分别指明次要地址空间或本籍地址空间中的位置。当DAT(动态地址转译)关断时,TDBA指明真实存储器中的位置。
若事务随后中止,则TDBA由CPU使用以定位事务诊断区块(被称作TBEGIN指定的TDB)。TDBA的最右侧三个位为0,此意谓TBEGIN指定的TDB处于双字组边界上。
当最外部TRANSACTION BEGIN(TBEGIN)指令的B1字段为0时,事务诊断区块地址无效,且若事务随后中止,则不储存TBEGIN指定的TDB。
事务中止PSW(TAPSW)
在嵌套深度最初为0时TRANSACTION BEGIN(TBEGIN)指令的执行期间,将事务中止PSW设定为当前PSW的内容;且事务中止PSW的指令地址指明下一循序指令(亦即,在最外部TBEGIN之后的指令)。在嵌套深度最初为0时TRANSACTION BEGIN受限(TBEGINC)指令的执行期间,将事务中止PSW设定为当前PSW的内容,惟事务中止PSW的指令地址指明TBEGINC指令(而非在TBEGINC之后的下一循序指令)除外。
当事务中止时,用指示中止情况的严重性的码来取代事务中止PSW中的条件码。随后,若事务归因于不引起中断的原因而中止,则自事务中止PSW载入PSW;若事务归因于引起中断的原因而中止,则将事务中止PSW储存为中断旧PSW。
在任何内部TRANSACTION BEGIN指令的执行期间不变更事务中止PSW。
事务嵌套深度(TND)
举例而言,事务嵌套深度为每当用条件码0来完成TRANSACTIONBEGIN指令时累加且每当完成TRANSACTION END指令时递减的16位无正负号值。当事务中止时或由CPU重设时,将事务嵌套深度重设至0。
在一实施例中,实施为为15之最大TND。
在一实施中,当CPU处于受限事务执行模式时,事务嵌套深度为1。另外,尽管最大TND可被表示为4位值,但TND经定义为16位值以促进其在事务诊断区块中的检测。
事务诊断区块(TDB)
当事务中止时,各种状态信息可储存于事务诊断区块(TDB)中,如下:
1.TBEGIN指定的TDB:对于非受限事务,当最外部TBEGIN指令的B1字段为非零时,该指令的第一操作数地址指明TBEGIN指定的TDB。此地址为可由应用程序的中止处理例程检验的应用程序指定位置。
2.程序中断(PI)TDB:若非受限事务归因于非筛选程序异常情况而中止时,或若受限事务归因于任何程序异常情况(亦即,引起正被辨识的程序中断的任何情况)而中止时,将PI-TDB储存至前置区域中的位置中。此情形可用于使操作系统在其可提供的任何诊断报告中进行检测及登出。
3.拦截TDB:若事务归因于引起拦截的任何程序异常情况而中止(亦即,该情况造成解译性执行结束且造成控制传回至主机程序),则TDB储存至用于访客操作系统的状态描述区块中指定的位置中。
在一实施例中,当TDB地址有效时(亦即,当最外部TBEGIN指令的B1字段为非零时),仅储存TBEGIN指定的TDB。
对于归因于未筛选程序异常情况的中止,将储存PI-TDB或拦截TDB中仅一者。因此,可存在针对一中止而储存的零个、一个或两个TDB。
下文描述关于TDB中每一个的一实例的另外细节:
TBEGIN指定之TDB:由有效事务诊断区块地址指定的256字节位置。当事务诊断区块地址有效时,事务中止时储存TBEGIN指定的TDB。TBEGIN指定的TDB经受在执行最外部TRANSACTION BEGIN指令时有效的所有储存保护机制。用于TBEGIN指定的TDB的任何部分的PER(程序事件记录)储存变更事件在执行最外部TBEGIN期间而非在事务中止处理期间被侦测。
PER的一个目的是协助对程序进行除错。作为实例,PER准许向程序提醒以下类型的事件:
·执行成功分支指令。提供使事件仅在分支目标位置处于已指明储存区域内时才发生的选项。
·自已指明储存区域提取指令。
·变更已指明储存区域的内容。提供使事件仅在储存区域处于已指明地址空间内时才发生的选项。
·执行STORE USING REAL ADDRESS指令。
·执行TRANSACTION END指令。
程序可选择地指定出以上类型的事件中的一个或多个被辨识,惟用于STORE USING REAL ADDRESS的事件可仅与储存变更事件一起被指定除外。关于PER事件的信息系凭借程序中断而提供至程序,其中该中断的原因是在中断码中被识别。
当事务诊断区块地址无效时,不储存TBEGIN指定的TDB。
程序中断TDB:真实位置6,144至6,399(1800至18FF十六进位)。当事务归因于程序中断而中止时,储存程序中断TDB。当事务归因于其他原因而中止时,程序中断TDB的内容是不可预测的。
程序中断TDB不经受任何保护机制。当在程序中断期间储存程序中断TDB时,PER储存变更事件不针对程序中断TDB被侦测。
拦截TDB:由状态描述的位置488至495指定的256字节主机真实位置。当已中止事务引起访客程序中断拦截(亦即,拦截码8)时,储存拦截TDB。当事务归因于其他原因而中止时,拦截TDB的内容是不可预测的。拦截TDB不经受任何保护机制。
如图9所描绘,在一实施例中,事务诊断区块900的字段如下:
格式902:字节0含有有效性及格式指示,如下:
值 含义
0 TDB的剩余字段是不可预测的。
1 格式1TDB,其剩余字段在下文予以描述。
2至255保留
格式字段为零的TDB被称作空值TDB。
标志904:字节1含有各种指示,如下:
冲突令牌有效性(CTV):当事务归因于提取或储存冲突(亦即,分别为中止码9或10)而中止时,字节1的位0为冲突令牌有效性指示。当CTV指示为1时,TDB的字节16至23中的冲突令牌910含有冲突被侦测的逻辑地址。当CTV指示为0时,TDB的字节16至23是不可预测的。
当事务归因于不同于撷取或储存冲突的任何原因而中止时,将字节1的位0储存为0。
受限事务指示(CTI):当CPU处于受限事务执行模式时,将字节1的位1设定为1。当CPU处于非受限事务执行模式时,将字节1的位1设定为0。
保留:保留字节1的位2至7且将其储存为0。
事务嵌套深度(TND)906:当事务中止时,字节6至7含有事务嵌套深度。
事务中止码(TAC)908:字节8至15含有64位无正负号事务中止码。每一码点指示事务被中止的原因。
这是依赖于当事务归因于不同于程序中断的条件而中止时事务中止码是否储存于程序中断TDB的模型。
冲突令牌910:对于归因于提取或储存冲突(亦即,分别为中止码9及10)而中止的事务,字节16至23含有冲突被侦测的储存位置的逻辑地址。当CTV位(字节1的位0)为1时,冲突令牌有意义。
当CTV位为0时,字节16至23是不可预测的。
由于由CPU进行的理论式执行,冲突令牌可指明将未必由事务的概念执行序列存取的储存位置。
已中止事务指令地址(ATIA)912:字节24至31含有识别在侦测到中止时正执行的指令的指令地址。当事务归因于中止码2、5、6、11、13或256或更高的中止码而中止时,或当事务归因于中止码4或13而中止且程序异常情况正设为空值时,ATIA直接地指向正被执行的指令。当事务归因于中止码4或12而中止且程序异常情况未设为空值时,ATIA越过正被执行的指令。
当事务归因于中止码7至10、14至16或255而中止时,ATIA未必指示造成中止的确切指令,但可指向事务内的较早或较迟指令。
取决于如上文所描述的中止码,若事务归因于为执行类型指令的目标的指令而中止,则ATIA识别执行类型指令,从而指向或越过该指令。ATIA并不指示执行类型指令的目标。
当事务中止时,ATIA经受寻址模式。在24位寻址模式下,字段的位0至40含有0。在31位寻址模式下,字段的位0至32含有0。
这是依赖于当事务归因于不同于程序中断之条件而中止时,已中止事务指令地址是否储存于程序中断TDB中的模型。
当事务归因于中止码4或12而中止且程序异常情况未设为空值时,ATIA并不指向造成中止的指令。藉由自ATIA减去由中断长度码(ILC)指示的半字组的数目,在正抑制或终止的情况下或针对正完成的非PER事件可识别造成中止的指令。当事务归因于PER事件而中止且不存在其他程序异常情况时,ATIA是不可预测的。
当事务诊断区块地址有效时,可在TBEGIN指定的TDB的字节36至39中的程序中断识别(PIID)中检验ILC。当筛选不适用时,可在真实存储器中的位置140至143处的PIID中检验ILC。
异常存取识别(EAID)914:对于归因于某些已筛选程序异常情况而中止的事务,TBEGIN指定的TDB的字节32含有异常存取识别。在z/Architecture的一实例中,当异常情况引起中断时,EAID的格式及EAID被储存的状况相同于真实位置160中描述的EAID的格式及EAID被储存的状况,如上文以引用方式并入的操作原理中所描述。
对于出于其他原因(包括引起程序中断的任何异常情况)而中止的事务,字节32是不可预测的。在程序中断TDB中,字节32是不可预测的。
此字段仅储存于由事务诊断区块地址指明的TDB中;否则,保留该字段。EAID仅针对存取清单控制或DAT保护、ASCE类型、页转译、区第一转译、区第二转译、区第三转译及区段转译程序异常情况被储存。
数据异常码(DXC)916:对于归因于已筛选数据异常程序异常情况而中止的事务,TBEGIN指定的TDB的字节33含有数据异常码。在z/Architecture的一实例中,当异常情况引起中断时,DXC的格式及DXC被储存的状况相同于真实位置147中描述的DXC的格式及DXC被储存的状况,如上文以引用方式并入的操作原理中所描述。在一实例中,位置147包括DXC。
对于出于其他原因(包括引起程序中断的任何异常情况)而中止的事务,字节33是不可预测的。在程序中断TDB中,字节33是不可预测的。
此字段仅储存于由事务诊断区块地址指明的TDB中;否则,保留该字段。仅针对数据程序异常情况而储存DXC。
程序中断识别(PIID)918:对于归因于已筛选程序异常情况而中止的事务,TBEGIN指定的TDB的字节36至39含有程序中断识别。在z/Architecture的一实例中,当情况引起中断时,PIID的格式相同于真实位置140至143中描述的PIID的格式(如上文以引用方式并入的操作原理中所描述),惟PIID的位13至14中的指令长度码各别于异常情况被侦测的指令除外。
对于出于其他原因(包括引起程序中断的异常情况)而中止的事务,字节36至39是不可预测的。在程序中断TDB中,字节36至39是不可预测的。
此字段仅储存于由事务诊断区块地址指明的TDB中;否则,保留该字段。程序中断识别仅针对程序异常情况被储存。
转译异常识别(TEID)920:对于归因于以下已筛选程序异常情况中任一者而中止的事务,TBEGIN指定的TDB之字节40至47含有转译异常识别。
·存取清单控制或DAT保护
·ASCE类型
·页转译
·区第一转译
·区第二转译
·区第三转译
·区段转译异常
在z/Architecture的一实例中,当情况引起中断时,TEID的格式相同于真实位置168至175中描述的TEID的格式,如上文以引用方式并入的操作原理中所描述。
对于出于其他原因(包括引起程序中断之异常情况)而中止的事务,字节40至47是不可预测的。在程序中断TDB中,字节40至47是不可预测的。
此字段仅储存于由事务诊断区块地址指明的TDB中;否则,保留该字段。
中断事件(breaking event)地址922:对于归因于已筛选程序异常情况而中止的事务,TBEGIN指定的TDB的字节48至55含有中断事件地址。在z/Architecture的一实例中,当条件引起中断时,中断事件地址的格式相同于真实位置272至279中描述的中断事件地址的格式,如上文以引用方式并入的操作原理中所描述。
对于出于其他原因(包括引起程序中断的异常情况)而中止的事务,字节48至55是不可预测的。在程序中断TDB中,字节48至55是不可预测的。
此字段仅储存于由事务诊断区块地址指明的TDB中;否则,保留该字段。
下文描述关于中断事件的另外细节。
在z/Architecture的一实施例中,当安装PER-3设施时,PER-3设施向程序提供最后指令的地址以造成CPU的循序执行的中断。中断事件地址记录可用作针对万用分支侦测的除错协助。举例而言,此设施提供CPU中的64位寄存器,其被称作中断事件地址寄存器。每当不同于TRANSACTION ABORT的指令造成循序指令执行的中断(亦即,PSW中的指令地址被取代,而非被累加该指令的长度)时,将那个指令的地址置放于中断事件地址寄存器中。只要发生程序中断,无论是否指示PER,皆将中断事件地址寄存器的当前内容置放于真实储存位置272至279中。
若造成中断事件的指令为执行类型指令(EXECUTE或EXECUTERELATIVE LONG)的目标,则将用以提取执行类型指令的指令地址置放于中断事件地址寄存器中。
在z/Architecture的一实施例中,只要以下指令中之一者造成分支,就认为发生中断事件:BRANCH AND LINK(BAL,BALR);BRANCH AND SAVE(BAS,BASR);BRANCH AND SAVE AND SET MODE(BASSM);BRANCHAND SET MODE(BSM);BRANCH AND STACK(BAKR);BRANCH ONCONDITION(BC,BCR);BRANCH ON COUNT(BCT,BCTR,BCTG,BCTGR);BRANCH ON INDEX HIGH(BXH,BXHG);BRANCH ON INDEXLOW OR EQUAL(BXLE,BXLEG);BRANCH RELATIVE ON CONDITION(BRC);BRANCH RELATIVE ON CONDITION LONG(BRCL);BRANCHRELATIVE ON COUNT(BRCT,BRCTG);BRANCH RELATIVE ON INDEXHIGH(BRXH,BRXHG);BRANCH RELATIVE ON INDEX LOW OR EQUAL(BRXLE,BRXLG);COMPARE AND BRANCH(CRB,CGRB);COMPAREAND BRANCH RELATIVE(CRJ,CGRJ);COMPARE IMMEDIATE ANDBRANCH(CIB,CGIB);COMPARE IMMEDIATE AND BRANCH RELATIVE(CIJ,CGIJ);COMPARE LOGICAL AND BRANCH(CLRB,CLGRB);COMPARE LOGICAL AND BRANCH RELATIVE(CLRJ,CLGRJ);COMPARELOGICAL IMMEDIATE AND BRANCH(CLIB,CLGIB);及COMPARELOGICAL IMMEDIATE AND BRANCH RELATIVE(CLIJ,CLGIJ)。
只要以下指令中之一者完成,就亦认为发生中断事件:BRANCH ANDSET AUTHORITY(BSA);BRANCH IN SUBSPACE GROUP(BSG);BRANCHRELATIVE AND SAVE(BRAS);BRANCH RELATIVE AND SAVE LONG(BRASL);LOAD PSW(LPSW);LOAD PSW EXTENDED(LPSWE);PROGRAM CALL(PC);PROGRAM RETURN(PR);PROGRAM TRANSFER(PT);PROGRAM TRANSFER WITH INSTANCE(PTI);RESUME PROGRAM(RP);及TRAP(TRAP2,TRAP4)。
由于事务中止(隐含地或由于TRANSACTION ABORT指令)而不认为发生中断事件。
依赖于模型的诊断信息924:字节112至127含有依赖于模型的诊断信息。
对于惟12(已筛选程序中断)除外的所有中止码,将依赖于模型的诊断信息储存于所储存的每一TDB中。
在一实施例中,依赖于模型的诊断信息包括以下各者:
·字节112至119含有被称作事务执行分支指示(TXBI)的64个位的向量。该向量的前63个位中每一者指示在CPU处于事务执行模式时执行分支指令的结果,如下:
值 含义
0 指令在无分支的情况下完成。
1 指令在有分支的情况下完成。
位0表示第一此类分支指令的结果,位1表示第二此类指令的结果,等等。
若在CPU处于事务执行模式时执行少于63个的分支指令,则将不对应于分支指令的最右侧位设定为0(包括位63)。当执行多于63个的分支指令时,将TXBI的位63设定为1。
TXBI中的位由如上文所列出的能够造成中断事件的指令设定,惟以下各者除外:
-任何受限定指令并不使位设定于TXBI中。
-对于(例如)z/Architecture的指令,当BRANCH ON CONDITION、BRANCH RELATIVE ON CONDITION或BRANCH RELATIVE ONCONDITION LONG指令的M1字段为0时,或当以下指令的R2字段为0时,这是依赖于该指令的执行是否使位设定于TXBI的模型。
·BRANCH AND LINK(BALR);BRANCH AND SAVE(BASR);BRANCH AND SAVE AND SET MODE(BASSM);BRANCH AND SETMODE(BSM);BRANCH ON CONDITION(BCR);及BRANCH ON COUNT(BCTR,BCTGR)
·对于由主机存取异常造成的中止条件,将字节127的位的位置0设定为1。对于所有其他中止条件,将字节127的位的位置0设定为0。
·对于由载入/储存单元(LSU)侦测的中止条件,字节127的最右侧五个位含有原因的指示。对于未由LSU侦测的中止条件,保留字节127。
一般寄存器930:字节128至255含有在事务中止时的一般寄存器0至15的内容。这些寄存器以升序被储存,其以字节128至135中的一般寄存器0开始,接着为字节136至143中的一般寄存器1,等等。
保留:保留所有其他字段。除非另有指示,否则保留字段的内容是不可预测的。
如由其他CPU及I/O子系统所观察,在事务中止期间储存TDB为在任何非事务储存之后发生的多重存取参考。
事务可归因于在事务执行的立即配置的范畴外的原因而中止。举例而言,由超管理器(诸如,LPAR或z/VM)辨识的瞬态事件可造成事务中止。
提供于事务诊断区块中的信息意欲用于诊断目的且实质上正确。然而,因为中止可能已由在立即配置的范畴外的事件造成,所以诸如中止码或程序中断识别的信息可能不准确地反映该配置内的情况,且因此不应被用来判定程序动作。
除了储存于TDB中的诊断信息以外,当事务归因于任何数据异常程序异常情况而中止且AFP寄存器控制(控制寄存器0的位45)及有效允许浮点运算控制(F)两者皆为1时,将数据异常码(DXC)置放至浮点控制寄存器(FPCR)的字节2中,而不管筛选是否应用于程序异常情况。当事务中止且AFP寄存器控制或有效允许浮点运算控制中之一个或两个为0时,不将DXC置放至FPCR中。
在一实施例中,如本文所指示,当安装事务执行设施时,提供以下一般指令。
·EXTRACT TRANSACTION NESTING DEPTH
·NONTRANSACTIONAL STORE
·TRANSACTION ABORT
·TRANSACTION BEGIN
·TRANSACTION END
当CPU处于事务执行模式时,某些指令的已尝试执行受到限定且造成事务中止。
当在受限事务执行模式下发出时,受限定指令的已尝试执行亦可引起事务限制程序中断,或可如同事务不受到限制一样引起执行进行。
在z/Architecture的一实例中,作为实例,受限定指令包括以下非特殊权限指令:COMPARE AND SWAP AND STORE;MODIFY RUNTIMEINSTRUMENTATION CONTROLS;PERFORM LOCKED OPERATION;PREFETCH DATA(RELATIVE LONG),此时M1字段中的码为6或7;STORECHARACTERS UNDER MASK HIGH,此时M3字段为0且R1字段中的码为6或7;STORE FACILITY LIST EXTENDED;STORE RUNTIMEINSTRUMENTATION CONTROLS;SUPERVISOR CALL;及TEST RUNTIMEINSTRUMENTATION CONTROLS。
在以上清单中,COMPARE AND SWAP AND STORE及PERFORMLOCKED OPERATION为可藉由在TX模式下使用基本指令而更有效率地实施的复杂指令。针对PREFETCH DATA及PREFETCH DATA RELATIVE LONG的状况受到限定,这是由于为6及7的码释放高速缓存行,从而使潜在地在事务完成之前交付数据成为必要。SUPERVISOR CALL受到限定,这是由于其造成中断(此情形造成事务中止)。
在下文所列出的条件下,以下指令受到限定:
·BRANCH AND LINK(BALR)、BRANCH AND SAVE(BASR)及BRANCH AND SAVE AND SET MODE,此时指令的R2字段为非零且分支追踪被启用。
·BRANCH AND SAVE AND SET MODE及BRANCH AND SETMODE,此时R2字段为非零且模式追踪被启用;SET ADDRESSING MODE,此时模式追踪被启用。
·MONITOR CALL,此时监视事件情况被辨识。
以上清单包括可形成追踪项的指令。若这些指令被允许事务地执行且形成追踪项,且事务随后中止,则将推进控制寄存器12中的追踪表指针,但将舍弃至追踪表的储存。此情形将在追踪表中留下不一致间隙。因此,指令在其将形成追踪项的状况下受到限定。
当CPU处于事务执行模式时,这是依赖于以下指令是否受到限定的模型:CIPHER MESSAGE;CIPHER MESSAGE WITH CFB;CIPHER MESSAGEWITH CHAINING;CIPHER MESSAGE WITH COUNTER;CIPHERMESSAGE WITH OFB;COMPRESSION CALL;COMPUTE INTERMEDIATEMESSAGE DIGEST;COMPUTE LAST MESSAGE DIGEST;COMPUTEMESSAGE AUTHENTICATION CODE;CONVERT UNICODE-16TOUNICODE-32;CONVERT UNICODE-16TO UNICODE-8;CONVERTUNICODE-32TO UNICODE-16;CONVERT UNICODE-32TO UNICODE-8;CONVERT UNICODE-8TO UNICODE-16;CONVERT UNICODE-8TOUNICODE-32;PERFORM CRYPTOGRAPHIC COMPUTATION;RUNTIMEINSTRUMENTATION OFF;及RUNTIME INSTRUMENTATION ON。
以上指令中每一个当前由硬件共处理器实施,或已处于过去机器中,且因此被认为受到限定。
当有效允许AR修改(A)控制为0时,以下指令受到限定:COPY ACCESS;LOAD ACCESS MULTIPLE;LOAD ADDRESS EXTENDED;及SET ACCESS。
以上指令中每一个造成存取寄存器的内容被修改。若TRANSACTIONBEGIN指令中的A控制为0,则程序已明确地指示出将不允许存取寄存器修改。
当有效允许浮点运算(F)控制为0时,浮点指令受到限定。
在某些情况下,以下指令可受到限定:EXTRACT CPU TIME;EXTRACTPSW;STORE CLOCK;STORE CLOCK EXTENDED;及STORE CLOCKFAST。
以上指令中每一个经受解译性执行状态描述中的拦截控制。若超管理器已设定针对此等指令的拦截控制,则这些指令的执行可归因于超管理器实施而被拖延;因此,若发生拦截,可认为这些指令受到限定。
当非受限事务由于受限定指令的已尝试执行而中止时,将事务诊断区块中的事务中止码设定为11(受限定指令),且将条件码设定为3,惟如下情形除外:当非受限事务归因于原本将会引起特殊权限操作异常的指令的已尝试执行而中止时,无论将中止码设定为11(受限定指令)或4(由特殊权限操作程序中断的辨识引起的未筛选程序中断)而都是不可预测的。当非受限事务归因于在M1字段中的码为6或7时PREFETCH DATA(RELATIVE LONG)的已尝试执行或在M3字段为0且R1字段中的码为6或7时STORE CHARACTERS UNDERMASK HIGH的已尝试执行而中止时,无论将中止码设定为11(受限定指令)或16(高速缓存其他)而都是不可预测的。当非受限事务归因于MONITOR CALL的已尝试执行而中止且存在监视事件情况及规格异常情况两者时,无论将中止码设定为11或4或(在程序中断被筛选时)12而都是不可预测的。
额外指令可在受限事务中受到限定。尽管这些指令当前经定义为在非受限事务中不受到限定,但这些指令可在某些情况下在未来处理器上的非受限事务中受到限定。
可在未来处理器上的事务执行模式下允许某些受限定指令。因此,程序不应依赖于归因于受限定指令的已尝试执行而中止的事务。TRANSACTIONABORT指令应被用以可靠地造成事务中止。
在非受限事务中,程序应提供替代性非事务码路径以适应归因于受限定指令而中止的事务。
在操作中,当事务嵌套深度为0时,引起条件码0的TRANSACTIONBEGIN(TBEGIN)指令的执行使CPU进入非受限事务执行模式。当事务嵌套深度为0时,引起条件码0的TRANSACTION BEGIN受限(TBEGINC)指令的执行使CPU进入受限事务执行模式。
除了另有明确提及以外,应用于非事务执行的所有规则亦应用于事务执行。下文为在CPU处于事务执行模式时进行处理的额外特性。
当CPU处于非受限事务执行模式时,引起条件码0的TRANSACTIONBEGIN指令的执行使CPU保持于非受限事务执行模式。
如由CPU所观察,在事务执行模式下进行的提取及储存并非不同于在不处于事务执行模式时进行的提取及储存。如由其他CPU及I/O子系统所观察,在CPU处于事务执行模式时进行的所有储存操作数存取看来像是单一区块并行存取。亦即,对半字组、字组、双字组或四倍字组内的所有字节的存取经指定以看来像是区块并行,如由其他CPU及I/O(例如,通道)程序所观察。半字组、字组、双字组或四倍字组在此章节中被称作区块。当提取类型参考经指定以在区块内看来像是并行时,在该区块中含有的字节正被提取的时间期间不准许由另一CPU或I/O程序对该区块的储存存取。当储存类型参考经指定以在区块内看来像是并行时,在该区块内的字节正被储存的时间期间不准许由另一CPU或I/O程序对该区块的存取(提取或储存)。
针对指令的储存存取以及DAT及ART(存取寄存器表)表提取遵循非事务规则。
CPU凭借使事务嵌套深度转变至0的TRANSACTION END指令而正常地离开事务执行模式,在该状况下,事务完成。
当CPU凭借TRANSACTION END指令的完成而离开事务执行模式时,交付在处于事务执行模式时进行的所有储存;亦即,这些储存看来像是作为单一区块并行操作而发生,如由其他CPU及I/O子系统所观察。
以下提供关于包括与分别经由TBEGINC和TBEGIN起始事务关联的处理的、与受限和非受限事务关联的处理的其它细节。
在一实例中,与经由例如TBEGINC起始受限事务关联的处理如下:
*如果已经在受限TX模式下,则识别出事务受限异常。
*如果当前TND(事务嵌套深度)>0,则执行继续,就好像非受限事务一样
)有效F控制设置为零
)有效PIFC不变
)允许外部非受限TX调用可以使用或可以不使用受限TX的服务功能。
*如果当前TND=0,则:
)事务诊断区块地址是无效的
-在中止时不存储指令指定的TDB
)事务中止PSW设置为TBEGINC的地址
-没有下一顺序指令
)程序不可存取的、依赖于模型的位置中所保存的GRSM所指明的通用寄存器对
)(从D2操作数)可选地形成事务令牌。事务令牌是事务的标识符。其可以等于存储操作数地址或另一值。
*有效A=TBEGINC A&任何外部A
*TND增加
)如果TND从0转变到1,则CPU进入受限TX模式
)否则,CPU保持在非受限TX模式下
*指令以CC0完成
*异常:
)如果B1字段为非零,则规格异常(PIC(程序中断码)0006)
)如果事务执行控制(CR0.8)为零,则特殊操作异常(PIC 0013hex)
)如果在受限TX模式下发放,则事务受限异常(PIC 0018hex)
)如果未安装受限事务执行设施,则操作异常(PIC 0001)
)如果指令是执行类型指令的目标,则执行异常(PIC 0003)
)如果嵌套深度超过,则中止码13
*在受限事务中的中止条件:
)中止PSW指向TBEGINC指令
-没有跟随它的指令
-中止条件使得整个TX重新驱动
*没有失败路径
)CPU采取特殊措施以确保在重新驱动时的成功完成
)假设没有持续冲突、中断或受限违反,则事务得以确保最终完成。
*受限违反:
)PIC 0018hex-指示事务受限的违反
.)或事务运转,仿佛无约束
此外,在一个实施例中,与经由例如TBEGIN起始非受限事务关联的处理如下:
*如果TND=0,则:
)如果B1≠0,则事务诊断区块地址从第一操作数地址设置。
)事务中止PSW设置为下一顺序指令地址。
)在依赖于模型的位置中保存I2字段所指明的通用寄存器对。
-不可由程序直接存取
*所计算的有效PIFC,A&F控制
)有效A=TBEGIN A&任何外部A
)有效F=TBEGIN F&任何外部F
)有效PIFC=max(TBEGIN PIFC,任何外部PIFC)
*事务嵌套深度(TND)增加
*如果TND从0转变到1,则CPU进入事务执行模式
*条件码设置为零
)当跟随TBEGIN的指令接收控制时:
-CC0所指示TBEGIN成功
-非零CC指示中止的事务
*异常:
)如果嵌套深度超过,则中止码13
)如果B1字段为非零,则存取异常(各个PIC之一),并且对于存储操作不能存取存储操作数
)如果TBEGIN指令是执行类型指令的目标,则执行异常(PIC 0003)
)如果未安装事务执行设施,则操作异常(PIC 0001)
)PIC 0006,如果:
-PIFC无效(3的值),或者
-第二操作数地址不是双字对准的
)如果事务执行控制(CR0.8)为零,则PIC 0013hex
)如果在受限TX模式下发放,则PIC 0018hex
事务可出于多种原因而隐含地中止,或事务可由TRANSACTION ABORT指令明确地中止。下文描述事务中止、对应中止码及置放至事务中止PSW中的条件码的实例可能原因。
外部中断:将事务中止码设定为2,且将事务中止PSW中的条件码设定为2。作为外部中断处理的部分,将事务中止PSW储存为外部旧PSW。
程序中断(未筛选):引起中断的程序异常情况(亦即,未筛选条件)使事务用码4而中止。将事务中止PSW中的条件码设定为特定于程序中断码。作为程序中断处理的部分,将事务中止PSW储存为程序旧PSW。
原本将会引起事务归因于操作异常而中止的指令可得到替代结果:对于非受限事务,事务可代替地用中止码11(受限定指令)而中止;对于受限事务,可辨识事务限制程序中断,而非操作例外。
当PER(程序事件记录)事件结合任何其他未筛选程序异常情况被辨识时,将条件码设定为3。
机器检查中断:将事务中止码设定为5,且将事务中止PSW中的条件码设定为2。作为机器检查中断处理的部分,将事务中止PSW储存为机器检查旧PSW。
I/O中断:将事务中止码设定为6,且将事务中止PSW中的条件码设定为2。作为I/O中断处理的部分,将事务中止PSW储存为I/O旧PSW。
提取溢出:当事务尝试自多于CPU所支持的位置的位置进行提取时,侦测提取溢出条件。将事务中止码设定为7,且将条件码设定为2或3。
储存溢出:当事务尝试储存至多于CPU所支持的位置的位置时,侦测储存溢出条件。将事务中止码设定为8,且将条件码设定为2或3。
回应于提取或储存溢出中止而允许条件码为2或3会允许CPU指示潜在可重试情形(例如,条件码2指示事务的重新执行可有生产力;而条件码3并不建议重新执行)。
提取冲突:当另一CPU或I/O子系统尝试储存至已由此CPU事务地提取的位置中时,侦测提取冲突条件。将事务中止码设定为9,且将条件码设定为2。
储存冲突:当另一CPU或I/O子系统尝试存取在由此CPU进行的事务执行期间已被储存的位置时,侦测储存冲突条件。将事务中止码设定为10,且将条件码设定为2。
受限定指令:当CPU处于事务执行模式时,受限定指令的已尝试执行造成事务中止。将事务中止码设定为11,且将条件码设定为3。
当CPU处于受限事务执行模式时,无论受限定指令的已尝试执行引起事务限制程序中断或归因于受限定指令的中止而都是不可预测的。事务仍中止,但中止码可指示任一原因。
程序异常情况(已筛选):不引起中断的程序异常情况(亦即,已筛选的情况)造成事务用为12的事务中止码而中止。将条件码设定为3。
嵌套深度超过:当事务嵌套深度处于该配置的最大可允许值且执行TRANSACTION BEGIN指令时,侦测嵌套深度超过条件。使事务用为13的事务中止码而中止,且将条件码设定为3。
高速缓存提取相关条件:由CPU的高速缓存电路侦测与由事务提取的储存位置相关的条件。用为14的事务中止码而使事务中止,且将条件码设定为2或3。
高速缓存储存相关条件:由CPU的高速缓存电路侦测与由事务储存的储存位置相关的条件。用为15的事务中止码而使事务中止,且将条件码设定为2抑或3。
高速缓存其他条件:由CPU的高速缓存电路侦测高速缓存其他条件。用为16的事务中止码而使事务中止,且将条件码设定为2或3。
在事务执行期间,若CPU使用映射至相同绝对地址的不同逻辑地址来存取指令或储存操作数,则这是依赖于事务是否中止的模型。若事务归因于使用映射至相同绝对地址的不同逻辑地址的存取而中止,则取决于条件,设定中止码14、15或16。
杂项条件:杂项条件为造成事务中止的由CPU辨识的任何其他条件。将事务中止码设定为255,且将条件码设定为2抑或3。
当多个配置正在同一机器(例如,逻辑分割区或虚拟机)中执行时,事务可归因于不同组态中发生的外部机器检查或I/O中断而中止。
尽管上文提供实例,但可提供具有对应中止码及条件码的事务中止的其他原因。举例而言,一个原因可为重新启动中断,其中将事务中止码设定为1,且将事务中止PSW中的条件码设定为2。作为重新启动处理的部分,将事务中止PSW储存为重新启动旧PSW。作为一另外实例,一个原因可为监督呼叫条件,其中将中止码设定为3,且将事务中止PSW中的条件码设定为3。其他或不同实例也是可能的。
备注:
1.杂项条件可由以下各者中任一者引起:
·诸如在z/Architecture中的指令COMPARE AND REPLACE DATTABLE ENTRY、COMPARE AND SWAP AND PURGE、INVALIDATE DATTABLE ENTRY、INVALIDATE PAGE TABLE ENTRY、NQ控制为0且SK控制为1的PERFORM FRAME MANAGEMENT FUNCTION、NQ控制为0的SETSTORAGE KEY EXTENDED,它是由该配置中的另一CPU执行;将条件码设定为2。
·在CPU上执行诸如重设、重新启动或停止的运算子函数,或等效SIGNAL PROCESSOR命令。
·上文未列举的任何其他条件;将条件码设定为2或3。
2.提取及储存冲突被侦测的位置可为同一高速缓存行内的任何地方。
3.在某些条件下,CPU可不能区分相似中止条件。举例而言,提取或储存溢出可不能与各别提取或储存冲突区分开。
4.由CPU对多个指令路径的理论式执行可引起事务归因于冲突或溢出条件而中止,即使此类条件并不以概念序列而发生亦如此。在处于受限事务执行模式时,CPU可临时地禁止理论式执行,从而允许事务尝试在不理论式地侦测此类冲突或溢出的情况下完成。
当多个中止条件应用时,CPU报告哪个中止码是不可预测的。
如以上所指示的那样,事务可以是暗示地中止或明确地中止的。如果CPU处于非受限执行模式下,则可以通过TRANSACTION ABORT指令的执行来明确地中止事务。通过当B2字段为非零时组合B2字段和D2所指定的寄存器的内容所形成的指令的第二操作数地址并不用于对数据进行寻址;反之,B2和D2字段所指定的地址形成事务中止码,其在中止处理期间放置在事务诊断区块中。当B2字段为零时,单单从D2字段形成第二操作数地址。用于第二操作数地址的地址计算服从地址运算的规则:在24位寻址模式下,位0-39设置为零:在31位寻址模式下,位0-32设置为零。分别取决于第二操作数地址的位63是零还是1,事务中止PSW中的条件码设置为2或3。
当TRANSACTION ABORT是执行类型指令的目标时,抑制操作并且识别出执行异常。
如果第二操作数地址处于0至255之间,则识别出规格异常并且抑制操作。
如果在指令的开始时CPU并不处于事务执行模式下,则识别出特殊操作异常并且抑制操作。
如果CPU处于受限事务执行模式下,则识别出事务受限程序异常情况。
条件码:该码保持不变。然而,将通过后续的事务中止处理来设置事务中止PSW的条件码。
程序异常:
*执行
*操作(事务执行设施未安装)
*特殊操作
*规格
*事务受限(归因于受限指令)
备注:
1.如果事务执行控制,控制寄存器0的位8为零,则CPU无法处于事务执行模式下;在此情况下尝试TRANSACTIONAL ABORT的执行导致特殊操作异常。
2.对于CPU暗示地中止的事务保留中止码0-255。如果程序指定TRANSACTION ABORT指令中的任何这些码,则识别出规格异常,并且中止事务,其中,所得中止码指示程序中断(码4)或程序中断条件(码12)。
3.程序中断经受有效程序中断筛选控制。
4.TABORT的执行可能导致高竞争,这进而可能导致其它中止情况。
5.跟随TABORT指令,程序执行在事务中止PSW所指明的指令处继续进行。
图10概述储存于事务诊断区块中的实例中止码及对应条件码(CC)。图10中的描述说明一特定实施。值的其他实施及编码是可能的。
如图10所示,在一个实施例中,保留中止码1、3和17-254用于潜在增强。这种增强可能引起条件码2或3的设置。此外,在该实施例中,保留中止码0,并且将不分配给有意义的中止指示。取决于模型,CPU可以能够在特定中止原因之间区分。例如,在所有情况下,提取/储存溢出和提取/储存冲突是不能够由CPU区分的。由TABORT指令或其它方式中止(即,非正常地终止)事务包括执行多个步骤。一般而言,参照图11描述用于中止处理的步骤的实例。若基于中止由TABORT或以其他方式起始而存在处理差异,则在以下描述中指示该差异。在一实例中,处理器(例如,CPU)正执行图11的逻辑。
参看图11,最初,基于TABORT指令或隐含中止的执行,交付在CPU处于事务执行模式时进行的非事务储存存取(步骤1100)。舍弃在CPU处于事务执行模式时进行的其他储存(例如,事务储存)(步骤1102)。
CPU离开事务执行模式(步骤1104),且后续储存非事务地发生。当前PSW用事务中止PSW的内容取代,惟条件码如上文所描述而被设定除外(不同于以下情形,其中若TDBA有效但区块为不可存取的,则CC=1)(步骤1106)。作为中止处理的部分或在中止处理之后,处理分支至事务中止PSW指定位置以执行动作。在事务为受限事务的一实例中,位置为TBEGINC指令,且动作为该指令的重新执行;且在事务为非受限事务的另外实例中,位置为在TBEGIN之后的指令,且动作为该指令的执行,其可为(例如)至中止处理例程的分支。
紧接着,进行关于事务诊断区块地址是否有效的判定(查询1108)。当事务诊断区块地址有效时,将识别中止的原因的诊断信息及一般寄存器的内容储存于TBEGIN指定事务诊断区块中(步骤1110)。上文参考事务诊断区块来描述所储存的TDB字段及TDB字段被储存的条件。
若事务诊断区块地址有效,但区块已变得不可存取,则在执行最外部TBEGIN指令之后,不存取该区块且条件码1适用。
对于归因于引起中断的程序中断情况而中止的事务,储存程序中断TDB。
返回至查询1108,若事务诊断区块地址无效,则不储存TBEGIN指定的TDB且条件码2或3适用,此取决于中止的原因。
除了以上内容以外,亦将事务嵌套深度设定为等于0(步骤1112)。另外,恢复经指定以由最外部TBEGIN指令储存的任何一般寄存器对(步骤1114)。当事务中止时,不恢复未经指明以由最外部TBEGIN指令储存的一般寄存器对。
另外,执行序列化功能(步骤1116)。序列化功能或操作包括:在发生概念上后续的储存存取(及相关参考位及改变位设定)之前,由CPU完成所有概念上先前的储存存取(且作为一实例,对于z/Architecture,相关参考位及改变位设定),如由其他CPU及I/O子系统所观察。序列化实现对存储器及对存储器金钥的所有CPU存取的序列,惟与ART表项及DAT表项提取相关联的存取除外。
如事务执行模式下CPU所观测的那样,序列化正常地操作(如上所述)。如其它CPU以及I/O子系统所观测的那样,作为事务嵌套深度减少到零(正常结束)的TRANSACTION END指令的结果,或作为事务被中止的结果,当CPU离开事务执行模式时在CPU处于事务执行模式下的同时所执行的序列化操作产生。
对于以除了由TABORT以外的其他方式起始的中止处理,若事务归因于引起中断的异常情况而中止(查询1118),则将与中断相关联的中断码或参数储存于对应于中断类型的已指派储存位置处(步骤1120)。另外,如上文所设定,将当前PSW储存至中断旧PSW中(步骤1122)。此后,或若事务并未归因于引起中断的异常情况而中止,则指令以条件码0而结束。
除了以上内容以外,亦在针对z/Architecture的解译性执行的一实施例中,当CPU处于事务执行模式且发生将正常地引起拦截码4、12、44、56、64、68或72的访客条件时,并不发生拦截。实情为,CPU保持于解译性执行模式,且向访客指示中止条件如下:
对于非受限事务,事务归因于受限定指令而中止(中止码11)。若侦测到并行PER事件且针对PER而启动CPU,则程序中断以中断码0280十六进制而发生。
对于受限事务,辨识事务限制异常。若侦测到并行PER事件且针对PER而启动CPU,则程序中断以中断码0298十六进制而发生。
当事务归因于程序中断情况而中止时,程序中断筛选可禁止中断的实际呈现。对于可引起拦截的程序中断,筛选亦禁止拦截。
对于并非TABORT起始的中止处理,对于所有其他拦截条件,以中止码255和条件码2来中止事务。
此外,在z/Architecture的一个实施例中,以下应用:
1.对于并非TABORT所起始的中止处理,在处于事务执行模式下的同时的非受限SUPERVISOR CALL指令的所尝试的执行导致事务归因于受限指令而中止。在此情况下,SVC中断并不产生。
2.当事务中止时,并不恢复存取寄存器、浮点寄存器、浮点控制寄存器以及并非由最外部TRANSACTION BEGIN指令的通用寄存器保存屏蔽所指定的任何通用寄存器。
3.当CPU处于非受限事务执行模式下时,事务中止PSW的指令地址指明跟随最外部TRANSACTION BEGIN(TBEGIN)指令的存储位置。即使失败事务仅引起设置码1、2和3,在该位置处的指令的序列也应能够容纳所有四个条件码。条件码意义的总结如下:
CC 意义
0 成功地起始事务
1 事务归因于混杂状况而中止。不能存储事务诊断区块。事务的重新运行未必有成效。
2 事务归因于瞬时状况而中止。事务的重新执行可能有成效。
3 事务归因于持续状况而中止。在当前状况下的事务的重新执行未必有成效。如果状况改变,例如事务性地受操控的数据被重排,则重新执行可能是更有成效的。
对于并非TABORT起始的中止处理,当CPU处于受限事务执行模式下时,事务中止PSW的指令地址指明TRANSACTION BEGIN受限(TBEGINC)指令。通过限定,受限事务并不提供中止处理程序例程(除了返回到TBEGINC指令)。
4.当使用嵌套事务时,内部事务可能使得中止条件产生,其可能另外在最外部事务中无法产生。这些状况的示例包括以下:
*内部事务可以发放TRANSACTION ABORT指令,指定非预期的中止码。
*内部事务可以产生非预期的程序中断情况。
.*内部事务可以对最外部事务未筛选的程序中断情况进行筛选,因此产生不同的中止码。
任何事务中止处理程序例程能够容纳在内部事务内产生的非预期的中止和异常情况,即使它们在最外部事务中从不产生。
事务中止时的程序中断筛选
在处于事务执行模式下的同时所识别的程序异常情况导致事务中止。对于非受限事务,程序可以可选地指定特定程序异常情况不导致中断。该动作被称为程序中断筛选。在一个实施例中,程序中断过滤经受以下控制:
*事务执行程序中断筛选覆盖,控制寄存器0的位9。
*有效程序中断筛选控制(PIFC)。
*产生的异常情况
当事务执行程序中断筛选覆盖为零时,程序通过程序中断筛选控制(PIFC)、TRANSACTION BEGIN(TBEGIN)指令的I2字段的位14-15指定将要筛选异常情况的哪些类。有效PIFC是用于当前嵌套等级以及所有外部等级的TBEGIN指令中的PIFC中的最高值。
对于多数程序异常情况,存在对于异常情况所限定并且在处理器内所保存的对应事务执行类。作为实例,有效PIFC和事务执行类如下交互:
有效
PIFC 基于事务运行类的结果
0 程序中断筛选不产生。具有类1、2或3的异常条件导致中断。
1 有限程序中断筛选产生。具有类1或2的异常条件导致中断,具有类3的条件不导致中断。
2 中等程序中断筛选产生。仅具有类1的异常条件导致中断,具有类2或3的条件不导致中断。
TRANSACTION BEGIN受限(TBEGINC)指令不提供明确程序中断筛选控制;对于TBEGINC假设零的暗示PIFC。因此,当作为TBEGINC的结果,CPU进入受限事务执行模式时,有效PIFC为零;当作为TBEGINC的结果,CPU保持在非受限事务执行模式下时,有效PIFC不变。
图12概述有效PIFC、程序中断筛选的类型、事务执行类以及异常是否导致中断的关系的一实例。此外,图13A-13B列出程序异常情况、对应事务执行类以及当事务归因于程序中断情况而中止时所设置的条件码的一实例。
当程序异常情况不导致中断(即状况被筛选)时,不加载程序新PSW,并且不存储与程序中断关联的所分配的存储位置;这些位置包括程序中断标识、突发事件地址、程序旧PSW,并且当可应用时,数据异常码、PER码、PER地址、异常存取标识、PER存取标识、操作数存取标识以及转译异常标识。当程序异常情况导致中断(即状况是未筛选的)时,与程序中断关联的多数所分配的存储位置如常而存储;然而,程序中断标识的位13-14中的指令长度码分别对于检测到异常情况的指令,且事务中止PSW存储为程序旧PSW。
在一个示例中,当结合任何其它筛选的程序异常情况识别PER事件时,以下应用:
*用于PER事件的事务类和条件码应用。在此情况下,无法筛选PER异常情况,条件码设置为3。
*前缀区域中的程序中断码不包括非PER异常情况,也不包括前缀区域中所存储的任何其它非PER程序中断参数。
当事务执行程序中断筛选覆盖(控制寄存器0的位9)为1时,程序异常情况不经受程序中断筛选。在此情况下,执行继续进行,仿佛有效PIFC为零。
在一个实施例中,在提取指令期间所识别的存取异常状况并不经受程序中断筛选。在这些情况下,异常情况导致事务中止以及程序中断。
除了表示中断的原因的程序中断码之外,在真实位置142-143处的程序中断码的位6也设为1,指示程序中断在事务执行期间产生。如上所描述的那样设置程序旧PSW的字段。
此外,在一个实施例中:
1.将另外产生监控事件的MONITOR CALL指令是受限指令。因此,在CPU处于事务执行模式下时,监控事件程序中断不产生,因此,当事务中止时,不存储在真实位置176-183处的监控码。
相似地,由于产生这些异常的指令是受限制的,因此具有不可应用事务类(-)以及条件码的图13A-图13B中所列出的任何其它程序异常情况无法产生。因此,程序中断标识和任何其它辅助程序中断信息都不存储在前缀区域中的真实位置中。
2.以下实例示出用于起始并且结束事务的指令。注意,如果事务中止,则在一个实例中,其在最终在标记NO-RETRY处分支进入非事务后退路径之前重试若干次。
3.程序中断筛选在出于各种原因而延迟数据的验证的程序中可能是有用的——有时被称为理论式执行。并非建立潜在复杂的恢复环境,程序简单地执行有效程序中断筛选控制(PIFC)为非零的非受限事务。这允许程序的中止处理程序例程直接接收用于特定类型的程序执行情况的控制——而没有操作系统介入。
1的有效PIFC指示受限筛选待由CPU执行;这在非预期数据或算术异常的识别方面可能是有用的。2的有效PIFC指示待执行中等筛选;这在不可存取的存储位置的识别方面可能是有用的。
然而,应注意,如果程序归因于各种类型的筛选的存取异常而中止,则如果程序尝试非事务执行,那么其不一定指示位置将是不可存取的。例如,程序可以指定2的PIFC,随后归因于页面转译异常而中止。这种异常可以指示存储位置不是虚拟地址空间的一部分,或其可以简单地指示存储块已经页上溢。
在事务执行期间,多个中止条件可能同时出现。图14中描述用于每个中止条件的优先级的一实例。
此外,在一个实施例中,具有对应中断的中止条件按以下顺序兑现:
紧急机器检查条件具有最高优先级。当其产生时,当前操作终止或无效。可以消除本应作为当前操作的结果而产生的程序和监督调用中断。可以通过紧急机器检查中断来指示任何挂起可抑制机器检查状况。进行每一合理尝试以限制紧急机器检查条件的副作用,而且对外部、I/O以及重启中断的请求正常地保持不受影响。
在缺少紧急机器检查条件时,在操作的单元的结束时同时存在的中断请求如下按优先级的降序兑现:
*监督调用
*程序
*可抑制机器检查
*外部
*输入/输出
*重启
除了受限指令中止条件之外,不与中断对应的中止条件可以按任何顺序产生。受限指令中止条件的优先级等同于描述程序中断条件的优先级的一个实例的图15A-图15B所示的程序中断优先级7.D。
总之,对于事务中止动作:
*多数事务活动舍弃:
)事务存储舍弃
)GRSM所指明的通用寄存器恢复为在最外部事务之前的值
*随后于中止,以下延续:
)非事务存储(NTSTG(指令))
)存取寄存器和浮点寄存器保留任何修改
)GRSM未指明的通用寄存器保留任何修改
*从TX中止PSW设置PSW
)指向跟随TBEGIN指令的指令
)条件码设置为指示原因
)当归因于中断而中止时,TX中止PSW存储为中断旧PSW(其中,CC指示原因)
*如果最外部TBEGIN B1字段为非零,则存储TDB
*对于非受限事务,跟随TBEGIN的指令接收控制
)CC1-不应产生(TDB不可存取)
)CC2-瞬时状况;事务的重新执行可以是成功的
-可能想要限制重新驱动的数量
)CC3-持久状况;事务的重新执行未必是成功的
-可能想要分支进入使用传统序列化技术的后退路径
-备注:如果后退路径使用比较和交换类型锁定,则事务还应接触这些锁定字位置
如上所述,提供指令的操作数是基本寄存器和位移的形式的TRANSACTION ABORT指令,并且按存储操作数分辨率的规则形成作为一个实施例中用户限定的中止码的值。因此,中止码基于基本寄存器的内容和/或位移而可以是可变的。此外,事务中止码保存在起始事务的TRANSACTIONBEGIN(TBEGIN)指令所指明的事务诊断区块中,而非在状态寄存器中。根据中止码的最右位来设置条件码。
在一个实例中,处理器从机器PSW所指定的程序地址获得TRANSACTION ABORT指令。随后于执行TRANSACTION ABORT,PSW的程序地址为从分离并且不同的事务PSW获得的另一程序地址所替代。然后,以在另一程序地址处的指令开始的指令的执行继续进行。
事务执行可用于多种情境中,包括但不限于部分内嵌、理论式处理及锁定省略。在部分内嵌中,待包括于执行路径中的部分区包覆于TBEGIN/TEND中。TABORT可包括于其中以在侧向出口(side-exit)上回复状态。对于理论,诸如,以Java,对已取值指针的空值检查可藉由使用事务而延迟至循环边缘。若指针为空值,则事务可使用TABORT而安全地中止,TABORT包括于TBEGIN/TEND内。
至于锁定省略,参看图16A至图16B及下文所提供的码片段来描述锁定省略的使用的一实例。
图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。
对应于图16A至图16B的实例码片段如下:
*R1-待插入的新队列元素的地址。
*R2-插入点的地址;新元素插入于由R2指向的元素之前。
在一实例中,若事务用于锁定省略,但后退路径使用锁定,则事务将至少提取锁定字组以查看锁定字组是否可用。若另一CPU非事务地存取锁定,则处理器确保事务中止。
如本文所使用,互换地使用存储器、中央存储器、主存储器、存储器及主存储器,除非藉由使用隐含地或明确地另有提及。另外,虽然在一实施例中事务有效地延迟包括延迟将事务储存交付至主存储器直至选择的事务完成;但在另一实施例中,事务有效地延迟包括允许对存储器的事务更新,但保持旧值且在中止时使存储器恢复为旧值。
本领域的技术人员应了解,一个或多个方面可被体现为一系统、方法或计算机程序产品。因而,一个或多个方面可采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微码等等)或组合软件与硬件方面的实施例的形式,这些实施例在本文中皆可通称为“电路”、“模块”或“系统”。此外,一个或多个方面可采取以一个或多个计算机可读介质体现的计算机程序产品的形式,该一个或多个计算机可读介质具有体现于其上的计算机可读程序码。
可利用一个或多个计算机可读介质的任何组合。计算机可读介质可为计算机可读储存介质。举例而言,计算机可读储存介质可为但不限于电子、磁性、光学、电磁、红外线或半导体系统、装置或器件,或前述各者的任何合适组合。计算机可读储存介质的更特定实例(非详尽清单)包括以下各者:具有一个或多个电线的电连接、携带型计算机磁片、硬碟、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便携型光碟只读存储器(CD-ROM)、光学储存器件、磁性储存器件或前述各者的任何合适组合。在此文件的上下文中,计算机可读储存介质可为可含有或储存供指令执行系统、装置或器件使用或结合指令执行系统、装置或器件而使用的程序的任何有形介质。
现在参看图17,在一实例中,计算机程序产品1700包括(例如)一个或多个非瞬态计算机可读储存介质1702以在其上储存计算机可读程序码构件或逻辑1704,以提供及促进一个或多个实施例。
可使用适当介质(包括但不限于无线、有线、光纤缆线、RF等等,或前述各者的任何合适组合)传输体现于计算机可读介质上的程序码。
可以一种或多种编程语言的任何组合来撰写用于进行一个或多个实施例的操作的计算机程序码,该一种或多种编程语言包括诸如Java、Smalltalk、C++或其类似者的面向对象的编程语言,及诸如“C”编程语言、汇编程序或相似编程语言的传统过程性编程语言。程序码可完全地在使用者计算机上执行、部分地在使用者计算机上执行、作为独立封装软件而执行、部分地在使用者计算机上执行且部分地在远端计算机上执行,或完全地在远端计算机或伺服器上执行。在后者情境中,远端计算机可经由任何类型的网络(包括局域网(LAN)或广域网(WAN))而连接至使用者的计算机,或可连接至外部计算机(例如,使用因特网服务提供者而经由因特网进行连接)。
本文参考方法、装置(系统)及计算机程序产品的流程图说明和/或方块图来描述一个或多个实施例。应理解,可藉由计算机程序指令来实施这些流程图说明和/或方块图的每一方块及这些流程图说明和/或方块图中的方块的组合。可将这些计算机程序指令提供至一般用途计算机、特殊用途计算机或其他可程序化数据处理装置的一处理器以产生一机器,使得经由该计算机或其他可程序化数据处理装置的该处理器而执行的指令产生用于实施在该或这些流程图和/或方块图方块中指定的功能/动作的构件。
亦可将这些计算机程序指令储存于一计算机可读介质中,其可指导计算机、其他可程序化数据处理装置或其他器件以特定方式起作用,使得储存于该计算机可读介质中的指令产生一制品,该制品包括实施在该或这些流程图和/或方块图方块中指定的功能/动作的指令。
亦可将这些计算机程序指令载入至计算机、其他可程序化数据处理装置或其他器件上,以使一系列操作步骤在该计算机、其他可程序化装置或其他器件上执行以产生一计算机实施程序,使得在该计算机或其他可程序化装置上执行的指令提供用于实施在该或这些流程图和/或方块图方块中指定的功能/动作的程序。
这些图中的流程图及方块图说明根据各种实施例的系统、方法及计算机程序产品的可能实施的架构、功能性及操作。就此而言,流程图或方块图中的每一方块可表示程序码的一模块、区段或部分,其包含用于实施指定的逻辑功能的一个或多个可执行指令。亦应注意,在一些替代性实施中,区块中所提到的功能可不以诸图中所提到的次序而发生。举例而言,取决于所涉及的功能性,连续展示的两个区块实际上可实质上并行地执行,或这些区块有时可以相反次序执行。亦应注意,可藉由执行指定的功能或动作的基于特殊用途硬件的系统或特殊用途硬件及计算机指令的组合来实施方块图和/或流程图说明的每一方块及方块图和/或流程图说明中的方块的组合。
除了以上内容以外,一个或多个方面亦可由提供客户环境的管理的服务提供者提供、部署、管理、服务等等。举例而言,服务提供者可为一个或多个客户建立、维持、支援等等执行一个或多个方面的计算机程序码和/或计算机基础结构。作为回报,作为实例,服务提供者可在订用和/或收费协议下向客户收取付款。或者或另外,服务提供者可根据广告内容至一个或多个第三方的销售而收取付款。
在一方面中,可部署用于执行一个或多个实施例的应用程序。作为一实例,应用程序的部署包含提供可操作以执行一个或多个实施例的计算机基础结构。
作为一另外方面,可部署一计算基础结构,其包含将计算机可读程序码整合至计算系统中,其中与该计算系统组合的程序码能够执行一个或多个实施例。
作为又一方面,可提供用于整合计算基础结构的程序,其包含将计算机可读程序码整合至计算机系统中。计算机系统包含计算机可读介质,其中计算机介质包含一个或多个实施例。与该计算机系统组合的程序码能够执行一个或多个实施例。
尽管上文描述各种实施例,但这些实施例仅为实例。举例而言,其他架构的计算环境可用以并入及使用一个或多个实施例。另外,可使用不同指令、指令格式、指令字段和/或指令值。此外,可提供/使用不同、其他和/或额外限制/局限。许多变化是可能的。
另外,其他计算环境类型可有益且被使用。作为一实例,适合于储存和/或执行程序码的数据处理系统是可用的,其包括直接地或经由系统总线间接地耦接至存储器元件的至少两个处理器。存储器元件包括(例如)在程序码的实际执行期间使用的本地存储器、大容量存储器及高速缓存,该高速缓存提供至少某一程序码的临时储存以便减少在执行期间必须自大容量存储器撷取程序码的次数。
输入/输出或I/O器件(包括但不限于键盘、显示器、指针器件、DASD、磁带、CD、DVD、随身碟(thumb drive)及其他存储器介质等等)可直接地或经由介入I/O控制器耦接至该系统。网络适配器亦可耦接至系统以使数据处理系统能够经由介入的私用或公用网络耦接至其他数据处理系统或远端打印机或储存器件。调制解调器、缆线调制解调器及乙太网卡仅为可用网络适配器类型中的少数几种。
参看图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)时,缓冲器中的数据储存(交付)至存储器,或若存在中止,则舍弃缓冲器中的数据。
在一实施例中,经由高速缓存5009藉由指令提取单元5004自存储器5002提取指令。指令在指令解码单元5006中被解码,且分派(在一些实施例中用其他指令)至指令执行单元5008。通常,使用若干执行单元5008,例如,算术执行单元、浮点执行单元及分支指令执行单元。另外,在TX设施的一实施例中,可使用各种TX控制5110。指令由执行单元执行,从而在需要时自指令指定的寄存器或存储器存取操作数。若将自存储器5002存取(载入或储存)操作数,则载入/储存单元5005通常在正被执行的指令控制下处置存取。指令可在硬件电路中或在内部微码(固件)中或由此两者的组合执行。
根据TX设施的一个方面,处理器5001亦包括PSW 5102(例如,TX和/或中止PSW)、嵌套深度5104、TDBA 5106及一个或多个控制寄存器5108。
如所提及,计算机系统包括本地(或主)存储器中的信息,以及寻址、保护以及参考及改变记录。寻址的一些方面包括地址的格式、地址空间的概念、各种地址类型,及一地址类型经转译至另一地址类型的方式。主存储器中的一些包括永久指派的储存位置。主存储器向系统提供数据的可直接寻址的快速存取储存。数据及程序两者在其可被处理之前将载入至主存储器中(自输入器件)。
主存储器可包括有时被称作高速缓存的一个或多个较小较快存取缓冲存储器。高速缓存通常与CPU或I/O处理器实体地相关联。除了效能以外,相异储存介质的实体构造及使用的效应通常不能由程序观察。
可维持用于指令且用于数据操作数的分离高速缓存。高速缓存内的信息维持于被称作高速缓存区块或高速缓存行(或简称为行)的整体边界上的连续字节中。模型可提供传回高速缓存行的以字节为单位的大小的EXTRACTCACHE ATTRIBUTE指令。模型亦可提供PREFETCH DATA及PREFETCHDATA RELATIVE LONG指令,其实现存储器至数据或指令高速缓存中的预取或数据自高速缓存的释放。
存储器被视作长水平位字串。对于大多数操作,对存储器的存取以自左侧至右侧序列而行进。将位字串再分成八个位的单元。八位单元被称作字节,字节为所有信息格式的基本建置区块。存储器中的每一字节位置藉由唯一非负整数识别,该非负整数为该字节位置的地址,或简称为字节地址。邻近字节位置具有连续地址,其在左侧以0开始且以自左侧至右侧序列而行进。地址为无正负号二进位整数,且为24、31或64个位。
在存储器与CPU或通道子系统之间一次一个字节或字节群组而传输信息。除非另有指定,否则在(例如)z/Architecture中,存储器中的字节群组由该群组的最左侧字节寻址。群组中字节的数目由待执行的操作暗示或明确地指定。当用于CPU操作中时,字节群组被称作字段。在每一字节群组内,在(例如)z/Architecture中,位以自左侧至右侧序列被编号。在z/Architecture中,最左侧位有时被称作“高阶”位,且最右侧位被称作“低阶”位。然而,位号码并非储存地址。可仅寻址字节。为了对存储器中的字节的个别位进行操作,存取整个字节。字节中的位自左侧至右侧被编号为0至7(在(例如)z/Architecture中)。地址中的位对于24位地址可被编号为8至31或40至63,或对于31位地址可被编号为1至31或33至63;地址中的位对于64位地址被编号为0至63。在一实例中,位8至31及1至31应用于处于为32个位宽的位置(例如,寄存器)中的地址,而位40至63及33至63应用于处于64位宽位置中的地址。在多个字节的任何其他固定长度格式内,构成该格式的位自0开始进行连续地编号。出于错误侦测的目的,且较佳地出于校正起见,可用每一字节或用一字节群组来传输一个或多个检查位。此类检查位由机器自动地产生且不能直接地受到程序控制。以字节的数目来表达储存容量。当储存操作数字段的长度由指令的操作码暗示时,字段据称具有固定长度,该固定长度可为一个、两个、四个、八个或十六个字节。较大字段可针对一些指令进行暗示。当储存操作数字段的长度未被暗示而是被明确地陈述时,字段据称具有可变长度。可变长度操作数长度可以一字节的增量(或用一些指令,以两个字节的倍数或其他倍数)发生变化。当将信息置放于存储器中时,包括于指定字段中的仅那些字节位置的内容被取代,即使至存储器的实体路径的宽度可大于正被储存的字段的长度亦如此。
信息的某些单元将在存储器中的整体边界上。当储存地址为以字节为单位的单元的长度的倍数时,边界对于信息单元被称作整体。向整体边界上的2、4、8、16及32字节的字段提供特殊名称。半字组为二字节边界上的两个连续字节的群组,且为指令的基本建置区块。字组为四字节边界上的四个连续字节的群组。双字组为八字节边界上的八个连续字节的群组。八倍字组为32字节边界上的32个连续字节的群组。四倍字组为16字节边界上的16个连续字节的群组。当储存地址指明半字组、字组、双字组、四倍字组及八倍字组时,地址的二进位表示分别含有一个、两个、三个、四个或五个最右侧零位。指令将处于二字节整体边界上。大多数指令的储存操作数并不具有边界对准要求。
在实施用于指令及数据操作数的分离高速缓存的器件上,若将程序储存至供随后提取指令的高速缓存行中,则可经历显著延迟,而不管储存是否变更随后被提取的指令。
在一实例中,实施例可由软件(有时指代已授权内码、固件、微码、毫码、皮码及其类似者,前述各者中任一者将与一个或多个实施例一致)实践。参看图18,体现一个或多个方面的软件程序码可由主机系统5000的处理器5001自诸如CD-ROM驱动器、磁带机或硬盘驱动器的长期储存介质器件5011存取。软件程序码可体现于多种已知介质中任一者上以供数据处理系统使用,诸如,磁片、硬盘驱动器或CD-ROM。程序码可散布于此类介质上,或可自计算机存储器5002散布至使用者或经由网络5010自一计算机系统的存储器散布至其他计算机系统以供此类其他系统的使用者使用。
软件程序码包括控制各种计算机组件与一个或多个应用程序的功能及互动的操作系统。程序码正常地自储存介质器件5011传呼至程序码可用于由处理器5001进行处理的相对较高速度计算机存储器5002。用于将软件程序码体现于存储器中、实体介质上和/或经由网络散布软件码的技术及方法是熟知的,且在本文中将不予以进一步论述。程序码在建立及储存于有形介质(包括但不限于电子存储器模块(RAM)、快闪存储器、光碟(CD)、DVD、磁带及其类似者)上常常常被称作“计算机程序产品”。计算机程序产品介质通常可由较佳地在计算机系统中的处理电路读取以供处理电路执行。
图19说明可实践一个或多个实施例的代表性工作站或伺服器硬件系统。图19的系统5020包含包括选用周边器件的代表性基本计算机系统5021,诸如,个人计算机、工作站或伺服器。基本计算机系统5021包括一个或多个处理器5026,及用以根据已知技术在处理器5026与系统5021的其他组件之间进行连接及启用处理器5026与其他组件之间的通信的总线。举例而言,总线将处理器5026连接至存储器5025及长期存储器5027,长期存储器5027可包括硬盘驱动器(包括(例如)磁性介质、CD、DVD及快闪存储器中任一者)或磁带机。系统5021可能亦包括使用者接口适配器,其经由总线将微处理器5026连接至一个或多个接口器件,诸如,键盘5024、鼠标5023、打印机/扫描器5030和/或其他接口器件,这些其他接口器件可为诸如触敏式屏幕、数字化键入板(entrypad)等等的任何使用者接口器件。总线亦经由显示适配器将诸如LCD屏幕或监视器的显示器件5022连接至微处理器5026。
系统5021可凭借能够与网络5029通信5028的网络适配器而与其他计算机或计算机的网络通信。实例网络适配器为通信通道、令牌环、乙太网或调制解调器。或者,系统5021可使用诸如CDPD(蜂窝式数字封包数据)卡的无线接口进行通信。系统5021可与局域网(LAN)或广域网(WAN)中的此类其他计算机相关联,或系统5021可为具有另一计算机的用户端/伺服器配置中的用户端等等。在此项技术中知晓所有这些配置以及适当通信硬件及软件。
图20说明可实践一个或多个实施例的数据处理网络5040。数据处理网络5040可包括多个个别网络,诸如,无线网络及有线网络,这些网络中每一者可包括多个个别工作站5041、5042、5043、5044。另外,本领域的技术人员应了解,可包括一个或多个LAN,其中LAN可包含耦接至主机处理器的多个智能工作站。
仍参看图20,网络亦可包括大型主机计算机或伺服器,诸如,网关计算机(用户端伺服器5046)或应用程序伺服器(可存取数据储存库且亦可直接地自工作站5045进行存取的远端伺服器5048)。网关计算机5046充当至每一个别网络中的进入点。当将一个网络连接协定连接至另一网络连接协定时需要网关。网关5046可较佳地凭借通信链路耦接至另一网络(例如,因特网5047)。网关5046亦可使用通信链路直接地耦接至一个或多个工作站5041、5042、5043、5044。网关计算机可利用可购自国际商业机器公司的IBM eServer System z伺服器予以实施。
同时参看图19及图20,可体现一个或多个实施例的软件编程码5031可由系统5020的处理器5026自诸如CD-ROM驱动器或硬盘驱动器的长期储存介质5027存取。软件编程码可体现于多种已知介质中任一者上以供数据处理系统使用,诸如,磁片、硬盘驱动器或CD-ROM。程序码可散布于此类介质上,或可自存储器散布至使用者5050、5051或经由网络自一计算机系统的存储器散布至其他计算机系统以供此类其他系统的使用者使用。
或者,编程码可体现于存储器5025中,且由处理器5026使用处理器总线而存取。此类编程码包括控制各种计算机组件与一个或多个应用程序5032的功能及互动的操作系统。程序码正常地自储存介质5027传呼至程序码可用于由处理器5026进行处理的高速度存储器5025。用于将软件编程码体现于存储器中、实体介质上和/或经由网络散布软件码的技术及方法是熟知的,且在本文中将不予以进一步论述。程序码在建立及储存于有形介质(包括但不限于电子存储器模块(RAM)、快闪存储器、光碟(CD)、DVD、磁带及其类似者)上时常常被称作“计算机程序产品”。计算机程序产品介质通常可由较佳地在计算机系统中的处理电路读取以供处理电路执行。
最易于可用于处理器的高速缓存(相比于处理器的其他高速缓存通常较快且较小)为最低(L1或层级1)高速缓存,且主存储器(主存储器)为最高层级高速缓存(若存在3个层级,则为L3)。最低层级高速缓存常常被划分成保持待执行的机器指令的指令高速缓存(I高速缓存),及保持数据操作数的数据高速缓存(D高速缓存)。
参看图21,描绘用于处理器5026的例示性处理器实施例。通常,高速缓存5053的一个或多个层级用以缓冲存储器区块以便改良处理器效能。高速缓存5053为保持最可能使用的存储器数据的高速缓存行的高速度缓冲器。典型高速缓存行为64、128或256个字节的存储器数据。分离高速缓存除了用于高速缓存数据以外亦常常用于高速缓存指令。高速缓存连贯性(存储器及高速缓存中行的复本的同步)常常由本领浴公知的各种“窥探”演算法提供。处理器系统的主存储器存储器5025常常被称作高速缓存。在具有高速缓存5053的4个层级的处理器系统中,主存储器5025有时被称作层级5(L5)高速缓存,这是因为处理器系统通常较快且仅保持可用于计算机系统的非挥发性存储器(DASD、磁带等等)的部分。主存储器5025“高速缓存”由操作系统分页进及分页出主存储器5025的数据页。
程序计数器(指令计数器)5061追踪待执行的当前指令的地址。z/Architecture处理器中的程序计数器为64个位,且可被截断为31或24个位以支援先前寻址极限。程序计数器通常体现于计算机的PSW(程序状态字组)中,使得程序计数器在上下文切换期间持续。因此,具有程序计数器值的在进展中的程序可由(例如)操作系统中断(自程序环境至操作系统环境的上下文切换)。程序的PSW在程序未处于作用中时维持程序计数器值,且操作系统的程序计数器(在PSW中)在操作系统正执行时被使用。通常,使程序计数器累加等于当前指令的字节的数目的量。RISC(精简指令集计算)指令通常具有固定长度,而CISC(复杂指令集计算)指令通常具有可变长度。IBM z/Architecture的指令为具有2、4或6个字节的长度的CISC指令。举例而言,程序计数器5061系藉由上下文切换操作或分支指令的分支采取操作而修改。在上下文切换操作中,当前程序计数器值连同关于正被执行的程序的其他状态信息(诸如,条件码)一起储存于程序状态字组中,且载入新程序计数器值从而指向待执行的新程序模块的指令。分支采取操作经执行以便藉由将分支指令的结果载入至程序计数器5061中来准许程序作出决策或在程序内循环。
通常,指令提取单元5055用以以处理器5026的名义来提取指令。提取单元提取“下一循序指令”、分支采取指令的目标指令或在上下文切换之后的程序的第一指令。现代指令提取单元常常使用预取技术以基于可能使用已预取指令的可能性来理论式地预取指令。举例而言,提取单元可提取包括下一循序指令的指令的16个字节及另外循序指令的额外字节。
已提取指令接着由处理器5026执行。在一实施例中,已提取指令传递至提取单元的分派单元5056。该分派单元解码指令,且将关于已解码指令的信息转递至适当单元5057、5058、5060。执行单元5057通常将自指令提取单元5055接收关于已解码算术指令的信息,且将根据指令的操作码而对操作数执行算术运算。操作数较佳地自存储器5025、架构化寄存器5059或自正被执行的指令的立即字段提供至执行单元5057。执行的结果在被储存时储存于存储器5025、寄存器5059中或其他机器硬件(诸如,控制寄存器、PSW寄存器及其类似者)中。
虚拟地址使用动态地址转译5062且视情况使用存取寄存器事务5063而转译成真实地址。
处理器5026通常具有一个或多个单元5057、5058、5060以用于执行指令的功能。参看图22A,执行单元5057可凭借接口逻辑5071而与架构化一般寄存器5059、解码/分派单元5056、载入储存单元5060及其他处理器单元5065通信5071。执行单元5057可使用若干寄存器电路5067、5068、5069以保持算术逻辑单元(ALU)5066将进行运算的信息。ALU执行诸如加法、减法、乘法及除法的算术运算,以及诸如与、或及互斥或(XOR)、旋转及移位的逻辑功能。较佳地,ALU支援设计相依的特殊化运算。举例而言,其他电路可提供包括条件码及复原支援逻辑的其他架构化设施5072。通常,ALU运算的结果保持于输出寄存器电路5070中,输出寄存器电路5070可将结果转递至多种其他处理功能。存在处理器单元的许多配置,但本描述仅意欲提供一实施例的代表性理解。
ADD指令(例如)将在具有算术及逻辑功能性的执行单元5057中执行,而浮点指令(例如)将在具有特殊化浮点能力的浮点执行中执行。较佳地,执行单元藉由对由指令识别的操作数执行操作码定义功能而对操作数进行运算。举例而言,ADD指令可由执行单元5057对在由该指令的寄存器字段识别的两个寄存器5059中发现的操作数执行。
执行单元5057对两个操作数执行算术加法,且将结果储存于第三操作数中,其中第三操作数可为第三寄存器或两个来源寄存器中的一个。执行单元较佳地利用算术逻辑单元(ALU)5066,ALU 5066能够执行诸如移位、旋转、与、或及XOR的多种逻辑功能,以及包括加法、减法、乘法、除法中任一者的多种代数功能。一些ALU 5066经设计成用于纯量运算且一些ALU 5066经设计成用于浮点。取决于架构,数据可为字节由大到小(Big Endian)(其中最低有效字节处于最高字节地址)或字节由小到大(Little Endian)(其中最低有效字节处于最低字节地址)。IBM z/Architecture为字节由大到小。取决于架构,带正负号字段可为正负号及量值、1的补数,或2的补数。2的补数有利之处在于:ALU无需设计减法能力,这是因为2的补数中的负值或正值仅需要在ALU内的加法。举例而言,常常以速记法来描述数字,其中12位字段定义4,096字节区块的地址,且通常被描述为4千字节区块。
参看图22B,用于执行分支指令的分支指令信息通常发送至分支单元5058,分支单元5058常常使用诸如分支历史表5082的分支预测演算法以在其他条件操作完成之前预测分支的结果。当前分支指令的目标将被提取,且在条件操作完成之前被理论式地执行。当完成条件操作时,理论式执行的分支指令基于条件操作的条件及所理论结果而被完成或舍弃。典型分支指令可测试条件码,且在条件码满足分支指令的分支要求时分支至目标地址,目标地址可基于(例如)包括在寄存器字段或指令的立即字段中发现的数字的若干数字予以计算。分支单元5058可使用ALU 5074,ALU 5074具有多个输入寄存器电路5075、5076、5077及输出寄存器电路5080。举例而言,分支单元5058可与一般寄存器5059、解码分派单元5056或其他电路5073通信5081。
举例而言,指令群组的执行可由于多种原因而中断,这些原因包括由操作系统起始的上下文切换、造成上下文切换的程序异常或错误、造成上下文切换的I/O中断信号,或多个程序的多线程活动(在多线程化环境中)。较佳地,上下文切换动作储存关于当前执行程序的状态信息,且接着载入关于正被调用的另一程序的状态信息。举例而言,状态信息可储存于硬件寄存器中或存储器中。状态信息较佳地包含指向待执行的下一指令的程序计数器值、条件码、存储器转译信息,及架构化寄存器内容。上下文切换活动可由硬件电路、应用程序、操作系统程序或固件码(微码、皮码或已授权内码(LIC))单独地或组合地演练。
处理器根据指令定义方法而存取操作数。指令可使用指令的部分的值来提供立即操作数,可提供明确地指向一般用途寄存器或特殊用途寄存器(例如,浮点寄存器)的一个或多个寄存器字段。指令可利用由操作码字段识别的所暗示寄存器作为操作数。指令可将存储器位置用于操作数。如由z/Architecture长位移设施所例示,操作数的存储器位置可由寄存器、立即字段或寄存器与立即字段的组合提供,其中指令定义基底寄存器、索引寄存器及立即字段(位移字段),前述三者加在一起以提供(例如)操作数在存储器中的地址。本文中的位置通常暗示主存储器(主存储器)中的位置,除非另有指示。
参看图22C,处理器使用载入/储存单元5060来存取存储器。载入/储存单元5060可藉由获得目标操作数在存储器5053中的地址且将操作数载入于寄存器5059或另一存储器5053的位置而执行载入操作,或可藉由获得目标操作数在存储器5053中的地址且将自寄存器5059或另一存储器5053的位置获得的数据储存于存储器5053中的目标操作数位置中而执行储存操作。载入/储存单元5060可为理论式,且可以相对于指令序列无序的序列存取存储器,然而,载入/储存单元5060对程序维持指令被按次序执行的外观。载入/储存单元5060可与一般寄存器5059、解码/分派单元5056、高速缓存/存储器接口5053或其他元件5083通信5084,且包含各种寄存器电路5086、5087、5088及5089、ALU5085及控制逻辑5090以计算储存地址且提供管线定序以使操作按次序。一些操作可无序,但载入/储存单元提供使无序操作对于程序看来像是已按次序被执行的功能性,如本领域中所公知的那样。
较佳地,应用程序所“查看”的地址常常被称作虚拟地址。虚拟地址有时被称作“逻辑地址”及“有效地址”。这些虚拟地址为虚拟之处在于:其藉由多种动态地址转译(DAT)技术中的一个重新引导至实体存储器位置,这些技术包括但不限于简单地用偏移值来加前缀于虚拟地址、经由一个或多个转译表转译虚拟地址,转译表较佳单独地或组合地至少包含区段表及页表,较佳地,区段表具有指向页表的项。在z/Architecture中,提供转译阶层,包括区第一表、区第二表、区第三表、区段表及选用页表。常常藉由利用转译后备缓冲器(TLB)来改良地址转译的效能,该TLB包含将虚拟地址映射至关联实体存储器位置的项。当DAT使用转移译来转译虚拟地址时建立这些项。虚拟地址的后续使用接着可利用快速TLB的项而非缓慢循序转译表存取。TLB内容可由包括LRU(最近最少使用)的多种取代演算法管理。
在处理器为多处理器系统的处理器的状况下,每一处理器具有使诸如I/O、高速缓存、TLB及存储器的共用资源出于一致性而保持连锁的职责。通常,“窥探”技术将用来维持高速缓存一致性。在窥探环境中,可将每一高速缓存行标示为处于共用状态、独占状态、已改变状态、无效状态及其类似者中任一者以便促进共用。
举例而言,I/O单元5054(图21)向处理器提供用于附接至包括磁带、碟片、打印机、显示器及网络的周边器件的构件。I/O单元常常由软件驱动程序呈现给计算机程序。在诸如可购自的System z的大型主机中,通道适配器及开放系统适配器为在操作系统与周边器件之间提供通信的大型主机的I/O单元。
另外,其他计算环境类型可受益于一个或多个方面。作为一实例,环境可包括模拟器(例如,软件或其他模拟机制),其中特定架构(包括(例如)指令执行、架构化功能(诸如,地址转译)及架构化寄存器)或其子集被模拟(例如,在具有处理器及存储器的原生计算机系统上)。在此类环境中,模拟器的一个或多个模拟功能可实施一个或多个实施例,即使执行该模拟器的计算机可具有不同于正被模拟的能力的架构亦如此。作为一实例,在模拟模式下,解码正被模拟的特定指令或操作,且建置适当模拟功能以实施个别指令或操作。
在一模拟环境中,主机计算机包括(例如):存储器,其储存指令及数据;指令提取单元,其自存储器提取指令,且视情况提供用于已提取指令的本地缓冲;指令解码单元,其接收已提取指令且判定已被提取的指令类型;及指令执行单元,其执行这些指令。执行可包括将数据自存储器载入至寄存器中;将数据自寄存器储存回至存储器;或执行某一算术或逻辑运算类型,如由解码单元所判定。在一实例中,以软件来实施每一单元。举例而言,由这些单元执行的操作被实施为模拟器软件内的一个或多个子例程。
更特定而言,在大型主机中,架构化机器指令常常凭借编译器应用程序供程序员(通常现今为“C”程序员)使用。储存于储存介质中的这些指令可原生地在z/Architecture IBM伺服器中或者在执行其他架构的机器中执行。指令可在现有及未来大型主机伺服器中且在IBM的其他机器(例如,IBMPower SystemTM伺服器及IBM System伺服器)上进行模拟。指令可在使用由AMD及其他制造商制造的硬件的各种各样的机器上执行的机器中执行。除了在依据z/Architecture的该硬件上的执行以外,亦可使用Linux以及数个使用由Hercules、UMX或FSI(Fundamental Software公司)进行的模拟的机器,在这些机器处执行通常处于模拟模式。在模拟模式下,模拟软件由原生处理器执行以对模拟处理器的架构进行模拟。Intel是美国和其它国家的英特尔公司或其子公司的商标或注册商标。Linux是Linus Torvalds在美国或其它国家或二者的注册商标。
原生处理器通常执行模拟软件,该模拟软件包含固件或原生操作系统以执行模拟处理器的模拟。模拟软件负责提取及执行模拟处理器架构的指令。模拟软件维持模拟程序计数器以追踪指令边界。模拟软件一次可提取一个或多个模拟机器指令,且将该一个或多个模拟机器指令转换成原生机器指令的对应群组以供原生处理器执行。这些已转换指令可被高速缓存,使得可实现较快转换。然而,模拟软件仍维持模拟处理器架构的架构规则以便确信针对模拟处理器撰写的操作系统及应用程序正确地操作。此外,模拟软件将提供由模拟处理器结构识别的资源,使得经设计成在模拟处理器上执行的操作系统或应用程序可在具有模拟软件的原生处理器上执行,这些资源包括但不限于控制寄存器、一般用途寄存器、浮点寄存器、包括(例如)区段表及页表的动态地址转译函数、中断机制、上下文切换机制、当日时间(TOD)时钟及至I/O子系统的架构化接口。
解码正被模拟的指定指令,且呼叫子例程以执行个别指令的功能。对模拟处理器的功能进行模拟的模拟软件功能以(例如)以下各者予以实施:“C”子例程或驱动程序,或提供用于特定硬件的驱动程序的某一其他方法,此在理解较佳实施例的描述之后将在本领域技术人员的技艺内。包括但不限于以下各者的各种软件及硬件模拟专利说明多种已知方法来达成针对不同机器架构化的指令格式的模拟以用于可用于本领域技术人员的目标机器:Beausoleil等人的名为“Multiprocessor for Hardware Emulation”的美国专利证书第5,551,013号;及Scalzi等人的名为“Preprocessing of Stored Target Routines forEmulating Incompatible Instructions on a Target Processor”的美国专利证书第6,009,261号;及Davidian等人的名为“Decoding Guest Instruction to DirectlyAccess Emulation Routines that Emulate the Guest Instructions”的美国专利证书第5,574,873号;及Gorishek等人的名为“Symmetrical Multiprocessing Bus andChipset Used for Coprocessor Support Allowing Non-Native Code to Run in aSystem”的美国专利证书第6,308,255号;及Lethin等人的名为“DynamicOptimizing Object Code Translator for Architecture Emulation and DynamicOptimizing Object Code Translation Method”的美国专利证书第6,463,582号;及Eric Traut的名为“Method for Emulating Guest Instructions on a HostComputer Through Dynamic Recompilation of Host Instructions”的美国专利证书第5,790,825号,前述专利证书中每一个的全文据此以引用方式并入本文中;及许多其他专利证书。
在图23中,提供模拟主机计算机系统5092的实例,其模拟主机架构的主机计算机系统5000'。在模拟主机计算机系统5092中,主机处理器(CPU)5091为模拟主机处理器(或虚拟主机处理器),且包含具有不同于主机计算机5000'的处理器5091的原生指令集架构的原生指令集架构的模拟处理器5093。模拟主机计算机系统5092具有对于模拟处理器5093可存取的存储器5094。在实例实施例中,存储器5094经分割成主机计算机存储器5096部分及模拟例程5097部分。主机计算机存储器5096根据主机计算机架构可用于模拟主机计算机5092的程序。模拟处理器5093执行不同于模拟处理器5091的架构的架构的架构化的指令集的原生指令,这些原生指令自模拟例程存储器5097获得;且可藉由使用在序列与存取/解码例程中获得的一个或多个指令来自主机计算机存储器5096中的程序存取主机指令以供执行,序列与存取/解码例程可解码所存取的主机指令以判定用于模拟所存取的主机指令的功能的原生指令执行例程。举例而言,针对主机计算机系统5000'的架构定义的其他设施可藉由架构化的设施例程来模拟,包括作为一般用途寄存器、控制寄存器、动态地址转译及I/O子系统支援及处理器高速缓存的此类设施。模拟例程亦可利用在模拟处理器5093中可用的功能(诸如,一般寄存器及虚拟地址的动态转译)以改良模拟例程的效能。专用硬件及卸载引擎亦可经提供以在模拟主机计算机5000'的功能中协助处理器5093。
本文所使用的术语仅出于描述特定实施例的目的,且并不意欲为限制性的。如本文所使用,除非上下文另有清楚指示,否则单数形式“一”及“该”意欲亦包括复数形式。应进一步理解,术语“包含”在用于本说明书中时指定存在所叙述特征、整数、步骤、操作、元件和/或组件,但并不排除存在或添加一种或多种其他特征、整数、步骤、操作、元件、组件和/或其群组。
以下申请专利范围中的所有构件或步骤附加功能元件的对应结构、材料、动作及等效者(若有)意欲包括用于结合如特定主张的其他所主张元件执行功能的任何结构、材料或动作。出于说明及描述的目的已呈现一或多个实施例的描述,但该描述并不意欲为详尽的或将本发明限于所揭示的形式。许多修改及变化对于本领域技术人员将显而易见。选择及描述实施例以便最佳地解释各种方面及实践应用,且使其他本领域技术人员能够理解具有如适合于所涵盖的特定用途的各种修改的各种实施例。
Claims (19)
1.一种用于执行计算环境内的指令的方法,所述方法包括:
由处理器获得用于执行的机器指令,所述机器指令是根据计算机架构而对于计算机执行所限定的,所述机器指令包括:
操作码,用于指定事务中止操作;以及
至少一个字段,用于指定中止码;以及
由所述处理器执行所述机器指令,所述执行包括:
中止正执行的事务,其中,所述事务在完成之前结束;以及
基于所述中止,提供条件码,所述条件码用于指示是否推荐所述事务的重新执行。
2.如权利要求1所述的方法,其中,所述至少一个字段包括基本字段和位移字段,并且其中,基于所述基本字段为非零,组合所述基本字段所指定的寄存器的内容与所述位移字段的值,以创建所述中止码。
3.如权利要求2所述的方法,其中,所述组合包括:将所述寄存器的所述内容与所述位移字段的值相加,以创建用户限定的中止码。
4.如前述权利要求中的任一项所述的方法,其中,所述机器指令包括基本字段,并且其中,基于所述基本字段为零,所述至少一个字段用于指定由位移字段组成的所述中止码,其中,所述位移字段的值指定所述中止码。
5.如前述权利要求中的任一项所述的方法,其中,所述中止码提供用户限定的用于中止的具体原因,并且其中,所述机器指令是从机器程序状态字(PSW)指定的程序地址所获得的事务中止指令,并且其中,所述方法还包括:
在执行所述机器指令之后,以从分离并且不同的事务PSW获得的另一程序地址替换所述机器PSW的所述程序地址;以及
继续以所述机器PSW的所述另一程序地址处的指令开始的指令的执行。
6.如前述权利要求中的任一项所述的方法,其中,所述条件码包括基于所述中止码的指定位为一个值的第一值以及基于指定位为另一值的第二值。
7.如权利要求6所述的方法,其中,所述第一值指示推荐重新执行,所述第二值指示不推荐重新执行。
8.如前述权利要求中的任一项所述的方法,其中,所述方法还包括:将所述中止码放置在事务诊断区块中。
9.如权利要求8所述的方法,其中,所述事务诊断区块由起始被中止的事务的指令或起始另一事务的指令之一指定,其中,所述事务和另一事务是嵌套的。
10.如前述权利要求中的任一项所述的方法,其中,所述方法还包括:基于中止所述事务,将非事务储存存取交付至存储器,并且舍弃事务储存存取。
11.一种用于执行计算环境内的指令的计算机系统,所述计算机系统包括:
存储器;以及
处理器,与所述存储器进行通信,其中,所述计算机系统被配置为执行方法,所述方法包括:
由处理器获得用于执行的机器指令,所述机器指令是根据计算机架构而对于计算机执行所限定的,所述机器指令包括:
操作码,用于指定事务中止操作;以及
至少一个字段,用于指定中止码;以及
由所述处理器执行所述机器指令,所述执行包括:
中止正执行的事务,其中,所述事务在完成之前结束;以及
基于所述中止,提供条件码,所述条件码用于指示是否推荐所述事务的重新执行。
12.如权利要求11所述的计算机系统,其中,所述至少一个字段包括基本字段和位移字段,并且其中,基于所述基本字段为非零,组合所述基本字段所指定的寄存器的内容与所述位移字段的值,以创建所述中止码。
13.如权利要求12所述的计算机系统,其中,所述组合包括:将所述寄存器的所述内容与所述位移字段的值相加,以创建用户限定的中止码。
14.如权利要求11所述的计算机系统,其中,所述机器指令包括基本字段,并且其中,基于所述基本字段为零,所述至少一个字段用于指定由位移字段组成的所述中止码,其中,所述位移字段的值指定所述中止码。
15.如权利要求11所述的计算机系统,其中,所述条件码包括基于所述中止码的指定位为一个值的第一值以及基于指定位为另一值的第二值。
16.如权利要求15所述的计算机系统,其中,所述第一值指示推荐重新执行,所述第二值指示不推荐重新执行。
17.如权利要求11所述的计算机系统,其中,所述方法还包括:将所述中止码放置在事务诊断区块中。
18.一种用于执行计算环境内的指令的计算机程序产品,所述计算机程序产品包括:
计算机可读存储介质,可由处理电路读取并且存储用于由所述处理电路执行的指令,以用于执行如权利要求1至10中的任一项所述的方法。
19.一种计算机程序,存储在计算机可读介质上,并且可加载到数字计算机的内部存储器中,当所述程序在计算机上运行时包括软件码部分,用于执行如权利要求1至10中的任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/524,855 | 2012-06-15 | ||
US13/524,855 US9436477B2 (en) | 2012-06-15 | 2012-06-15 | Transaction abort instruction |
PCT/EP2013/060275 WO2013186012A1 (en) | 2012-06-15 | 2013-05-17 | Transaction abort instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104350462A true CN104350462A (zh) | 2015-02-11 |
CN104350462B CN104350462B (zh) | 2017-01-25 |
Family
ID=48470963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380028454.3A Active CN104350462B (zh) | 2012-06-15 | 2013-05-17 | 事务中止指令 |
Country Status (7)
Country | Link |
---|---|
US (4) | US9436477B2 (zh) |
EP (1) | EP2724228B1 (zh) |
JP (1) | JP6206886B2 (zh) |
CN (1) | CN104350462B (zh) |
MX (1) | MX349710B (zh) |
SI (1) | SI2724228T1 (zh) |
WO (1) | WO2013186012A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017121300A1 (en) * | 2016-01-15 | 2017-07-20 | Huawei Technologies Co., Ltd. | Caching structure for nested preemption |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
WO2014129247A1 (ja) * | 2013-02-22 | 2014-08-28 | インターナショナル・ビジネス・マシーンズ・コーポレーション | アボート削減方法、アボート削減装置、及びアボート削減プログラム |
US20140281236A1 (en) * | 2013-03-14 | 2014-09-18 | William C. Rash | Systems and methods for implementing transactional memory |
US9317379B2 (en) | 2014-01-24 | 2016-04-19 | International Business Machines Corporation | Using transactional execution for reliability and recovery of transient failures |
US9558032B2 (en) | 2014-03-14 | 2017-01-31 | International Business Machines Corporation | Conditional instruction end operation |
US9454370B2 (en) | 2014-03-14 | 2016-09-27 | International Business Machines Corporation | Conditional transaction end instruction |
US10120681B2 (en) | 2014-03-14 | 2018-11-06 | International Business Machines Corporation | Compare and delay instructions |
US9632555B2 (en) | 2014-12-09 | 2017-04-25 | Intel Corporation | Techniques to route power to a USB host in dead battery condition |
US9772874B2 (en) * | 2016-01-29 | 2017-09-26 | International Business Machines Corporation | Prioritization of transactions based on execution by transactional core with super core indicator |
US20170371701A1 (en) * | 2016-06-27 | 2017-12-28 | Kshitij A. Doshi | Apparatuses, methods, and systems for granular and adaptive hardware transactional synchronization |
US11151267B2 (en) * | 2019-02-25 | 2021-10-19 | International Business Machines Corporation | Move data and set storage key based on key function control |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1030487A (zh) * | 1987-07-01 | 1989-01-18 | 数字设备公司 | 在向量数据处理运算中从缺页故障中恢复的设备和方法 |
US6499100B1 (en) * | 1997-12-02 | 2002-12-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Enhanced instruction decoding |
US20070005828A1 (en) * | 2005-06-30 | 2007-01-04 | Nimrod Diamant | Interrupts support for the KCS manageability interface |
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 |
US20120131309A1 (en) * | 2010-11-18 | 2012-05-24 | Texas Instruments Incorporated | High-performance, scalable mutlicore hardware and software system |
Family Cites Families (240)
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 |
US4740893A (en) | 1985-08-07 | 1988-04-26 | International Business Machines Corp. | Method for reducing the time for switching between programs |
US5063497A (en) | 1987-07-01 | 1991-11-05 | Digital Equipment Corporation | Apparatus and method for recovering from missing page faults in vector data processing operations |
US5321823A (en) | 1988-07-20 | 1994-06-14 | Digital Equipment Corporation | Digital processor with bit mask for counting registers for fast register saves |
US5117498A (en) | 1988-08-19 | 1992-05-26 | Motorola, Inc. | Processer with flexible return from subroutine |
JPH0437927A (ja) | 1990-06-01 | 1992-02-07 | Sony Corp | プロセッサの処理方法 |
US5471591A (en) | 1990-06-29 | 1995-11-28 | Digital Equipment Corporation | Combined write-operand queue and read-after-write dependency scoreboard |
GB2256514B (en) | 1991-05-21 | 1994-11-16 | Digital Equipment Corp | Commitment ordering for guaranteeing serializability across distributed transactions |
US5701480A (en) | 1991-10-17 | 1997-12-23 | Digital Equipment Corporation | Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing |
US5274817A (en) | 1991-12-23 | 1993-12-28 | Caterpillar Inc. | Method for executing subroutine calls |
US5359608A (en) | 1992-11-24 | 1994-10-25 | Amdahl Corporation | Apparatus for activation and deactivation of instruction tracing through use of conditional trace field in branch instructions |
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 |
EP0870228B1 (en) | 1995-10-06 | 2003-08-13 | Advanced Micro Devices, Inc. | Unified multi-function operation scheduler for out-of-order execution in a superscalar processor |
US5790825A (en) | 1995-11-08 | 1998-08-04 | Apple Computer, Inc. | Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions |
TW384447B (en) | 1996-01-22 | 2000-03-11 | Infinite Technology Inc | Processor with reconfigurable arithmetic data path |
JPH103416A (ja) | 1996-06-14 | 1998-01-06 | Canon Inc | 情報処理装置およびその方法 |
US6035313A (en) | 1997-03-24 | 2000-03-07 | Motorola, Inc. | Memory address generator for an FFT |
US5870582A (en) | 1997-03-31 | 1999-02-09 | International Business Machines Corporation | Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched |
US5937199A (en) | 1997-06-03 | 1999-08-10 | International Business Machines Corporation | User programmable interrupt mask with timeout for enhanced resource locking efficiency |
JP3546678B2 (ja) | 1997-09-12 | 2004-07-28 | 株式会社日立製作所 | マルチos構成方法 |
US6094730A (en) | 1997-10-27 | 2000-07-25 | Hewlett-Packard Company | Hardware-assisted firmware tracing method and apparatus |
US7076784B1 (en) | 1997-10-28 | 2006-07-11 | Microsoft Corporation | Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment |
US6000029A (en) | 1997-11-03 | 1999-12-07 | Motorola, Inc. | Method and apparatus for affecting subsequent instruction processing in a data processor |
US5938778A (en) | 1997-11-10 | 1999-08-17 | International Business Machines Corporation | System and method for tracing instructions in an information handling system without changing the system source code |
KR100246537B1 (ko) | 1997-11-25 | 2000-03-15 | 정선종 | 코드분할 다중접속 시스템에서 파일럿 심벌을 이용한 동기식이중 채널 큐피에스케이 송수신기의 구조 |
US6009261A (en) | 1997-12-16 | 1999-12-28 | International Business Machines Corporation | Preprocessing of stored target routines for emulating incompatible instructions on a target processor |
US6202067B1 (en) | 1998-04-07 | 2001-03-13 | Lucent Technologies, Inc. | Method and apparatus for correct and complete transactions in a fault tolerant distributed database system |
US6119129A (en) | 1998-05-14 | 2000-09-12 | Sun Microsystems, Inc. | Multi-threaded journaling in a configuration database |
US6308255B1 (en) | 1998-05-26 | 2001-10-23 | Advanced Micro Devices, Inc. | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system |
EP0992907B1 (en) | 1998-10-06 | 2005-09-28 | Texas Instruments Inc. | Trace fifo management |
EP0992916A1 (en) | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Digital signal processor |
US6151669A (en) | 1998-10-10 | 2000-11-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Methods and apparatus for efficient control of floating-point status register |
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 |
US6732307B1 (en) | 1999-10-01 | 2004-05-04 | Hitachi, Ltd. | Apparatus and method for storing trace information |
US7761857B1 (en) | 1999-10-13 | 2010-07-20 | Robert Bedichek | Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts |
US6738892B1 (en) | 1999-10-20 | 2004-05-18 | Transmeta Corporation | Use of enable bits to control execution of selected instructions |
US6604188B1 (en) | 1999-10-20 | 2003-08-05 | Transmeta Corporation | Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction |
JP3776653B2 (ja) | 1999-11-24 | 2006-05-17 | 富士通株式会社 | 演算処理装置 |
US6754809B1 (en) | 1999-12-30 | 2004-06-22 | Texas Instruments Incorporated | Data processing apparatus with indirect register file access |
US6934832B1 (en) | 2000-01-18 | 2005-08-23 | Ati International Srl | Exception mechanism for a computer |
US6665863B1 (en) | 2000-05-31 | 2003-12-16 | Microsoft Corporation | Data referencing within a database graph |
US6826682B1 (en) | 2000-06-26 | 2004-11-30 | Transmeta Corporation | Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state |
WO2002013068A1 (en) | 2000-08-04 | 2002-02-14 | Carr Scott Software Incorporated | Automatic transaction management |
US6886094B1 (en) | 2000-09-28 | 2005-04-26 | International Business Machines Corporation | Apparatus and method for detecting and handling exceptions |
US6671686B2 (en) | 2000-11-02 | 2003-12-30 | Guy Pardon | Decentralized, distributed internet data management |
US7346632B2 (en) | 2001-02-22 | 2008-03-18 | International Business Machines Corporation | Mechanism for executing nested transactions in an execution environment supporting flat transactions only |
US6963919B1 (en) | 2001-02-28 | 2005-11-08 | Agilent Technologies, Inc. | Method and system for improving computer network performance |
US6745272B2 (en) | 2001-04-04 | 2004-06-01 | Advanced Micro Devices, Inc. | System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system |
US7185234B1 (en) | 2001-04-30 | 2007-02-27 | Mips Technologies, Inc. | Trace control from hardware and software |
US7305678B2 (en) | 2001-05-17 | 2007-12-04 | International Business Machines Corporation | Method and system for reducing synchronization waits when allocating sequenced identifiers in a multi-threaded server |
US7613762B2 (en) | 2001-05-25 | 2009-11-03 | Sun Microsystems, Inc. | Floating point remainder with embedded status information |
KR100625595B1 (ko) | 2001-05-28 | 2006-09-20 | 한국전자통신연구원 | 트랜잭션 처리 시스템의 병렬 로깅 방법 및 트랜잭션 로그 처리 시스템 |
US6826681B2 (en) | 2001-06-18 | 2004-11-30 | Mips Technologies, Inc. | Instruction specified register value saving in allocated caller stack or not yet allocated callee stack |
US7185183B1 (en) | 2001-08-02 | 2007-02-27 | Mips Technologies, Inc. | Atomic update of CPO state |
US20060218556A1 (en) | 2001-09-28 | 2006-09-28 | Nemirovsky Mario D | Mechanism for managing resource locking in a multi-threaded environment |
US7174463B2 (en) | 2001-10-04 | 2007-02-06 | Lenovo (Singapore) Pte. Ltd. | Method and system for preboot user authentication |
US7313734B2 (en) | 2002-01-14 | 2007-12-25 | International Business Machines Corporation | Method and system for instruction tracing with enhanced interrupt avoidance |
US7546446B2 (en) | 2002-03-08 | 2009-06-09 | Ip-First, Llc | Selective interrupt suppression |
US7496494B2 (en) | 2002-09-17 | 2009-02-24 | International Business Machines Corporation | Method and system for multiprocessor emulation on a multiprocessor host system |
US6892286B2 (en) | 2002-09-30 | 2005-05-10 | Sun Microsystems, Inc. | Shared memory multiprocessor memory model verification system and method |
US7103597B2 (en) | 2002-10-03 | 2006-09-05 | Mcgoveran David O | Adaptive transaction manager for complex transactions and business process |
US7634638B1 (en) | 2002-10-22 | 2009-12-15 | Mips Technologies, Inc. | Instruction encoding for system register bit set and clear |
US7568023B2 (en) | 2002-12-24 | 2009-07-28 | Hewlett-Packard Development Company, L.P. | Method, system, and data structure for monitoring transaction performance in a managed computer network environment |
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 |
US7269717B2 (en) | 2003-02-13 | 2007-09-11 | Sun Microsystems, Inc. | Method for reducing lock manipulation overhead during access to critical code sections |
US7089374B2 (en) | 2003-02-13 | 2006-08-08 | Sun Microsystems, Inc. | Selectively unmarking load-marked cache lines during transactional program execution |
US6862664B2 (en) | 2003-02-13 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for avoiding locks by speculatively executing critical sections |
US7398359B1 (en) | 2003-04-30 | 2008-07-08 | Silicon Graphics, Inc. | System and method for performing memory operations in a computing system |
JP3788804B2 (ja) | 2003-05-23 | 2006-06-21 | 日本電信電話株式会社 | 並列処理装置及び並列処理方法 |
CA2472887A1 (en) | 2003-06-30 | 2004-12-30 | Gravic, Inc. | Methods for ensuring referential integrity in multithreaded replication engines |
US7836450B2 (en) | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7197586B2 (en) | 2004-01-14 | 2007-03-27 | International Business Machines Corporation | Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler |
US8825615B2 (en) | 2004-05-11 | 2014-09-02 | Oracle International Corporation | Simplifying implementation of custom atomic transactions in a programming environment |
US7206903B1 (en) | 2004-07-20 | 2007-04-17 | Sun Microsystems, Inc. | Method and apparatus for releasing memory locations during transactional execution |
US7703098B1 (en) | 2004-07-20 | 2010-04-20 | Sun Microsystems, Inc. | Technique to allow a first transaction to wait on condition that affects its working set |
US7395382B1 (en) | 2004-08-10 | 2008-07-01 | Sun Microsystems, Inc. | Hybrid software/hardware transactional memory |
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 |
EP1657118A1 (en) | 2004-11-11 | 2006-05-17 | IEE INTERNATIONAL ELECTRONICS & ENGINEERING S.A. | Collision recognition device for a vehicle |
US7984248B2 (en) | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
US7631073B2 (en) | 2005-01-27 | 2009-12-08 | International Business Machines Corporation | Method and apparatus for exposing monitoring violations to the monitored application |
US20060212757A1 (en) | 2005-03-15 | 2006-09-21 | International Business Machines Corporation | Method, system, and program product for managing computer-based interruptions |
US7421544B1 (en) | 2005-04-04 | 2008-09-02 | Sun Microsystems, Inc. | Facilitating concurrent non-transactional execution in a transactional memory system |
US7496726B1 (en) | 2005-04-18 | 2009-02-24 | Sun Microsystems, Inc. | Controlling contention via transactional timers among conflicting transactions issued by processors operating in insistent or polite mode |
US7464161B2 (en) | 2005-06-06 | 2008-12-09 | International Business Machines Corporation | Enabling and disabling byte code inserted probes based on transaction monitoring tokens |
US7350034B2 (en) | 2005-06-20 | 2008-03-25 | International Business Machines Corporation | Architecture support of best-effort atomic transactions for multiprocessor systems |
US7882339B2 (en) | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
CN1713164A (zh) | 2005-07-21 | 2005-12-28 | 复旦大学 | 可自主处理多事务传输要求的dma控制器及数据传输方法 |
WO2007015925A1 (en) | 2005-08-01 | 2007-02-08 | Sun Microsystems, Inc. | Avoiding locks by transactionally executing critical sections |
US7870369B1 (en) * | 2005-09-28 | 2011-01-11 | Oracle America, Inc. | Abort prioritization in a trace-based processor |
US20070136289A1 (en) | 2005-12-14 | 2007-06-14 | Intel Corporation | Lock elision with transactional memory |
US20070143755A1 (en) | 2005-12-16 | 2007-06-21 | Intel Corporation | Speculative execution past a barrier |
US8117605B2 (en) | 2005-12-19 | 2012-02-14 | Oracle America, Inc. | Method and apparatus for improving transactional memory interactions by tracking object visibility |
US7730286B2 (en) | 2005-12-30 | 2010-06-01 | Intel Corporation | Software assisted nested hardware transactions |
US7810072B2 (en) | 2006-01-06 | 2010-10-05 | International Business Machines Corporation | Exception thrower |
US20070186056A1 (en) | 2006-02-07 | 2007-08-09 | Bratin Saha | Hardware acceleration for a software transactional memory system |
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 |
US8180967B2 (en) | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory virtualization |
US7930695B2 (en) | 2006-04-06 | 2011-04-19 | Oracle America, Inc. | Method and apparatus for synchronizing threads on a processor that supports transactional memory |
US7636829B2 (en) | 2006-05-02 | 2009-12-22 | Intel Corporation | System and method for allocating and deallocating memory within transactional code |
US7594094B2 (en) | 2006-05-19 | 2009-09-22 | International Business Machines Corporation | Move data facility with optional specifications |
US7707394B2 (en) | 2006-05-30 | 2010-04-27 | Arm Limited | Reducing the size of a data stream produced during instruction tracing |
US7849446B2 (en) | 2006-06-09 | 2010-12-07 | Oracle America, Inc. | Replay debugging |
MY149658A (en) | 2006-06-12 | 2013-09-30 | Mobile Money Internat Sdn Bhd | Transaction server |
US20070300013A1 (en) | 2006-06-21 | 2007-12-27 | Manabu Kitamura | Storage system having transaction monitoring capability |
US20080005504A1 (en) | 2006-06-30 | 2008-01-03 | Jesse Barnes | Global overflow method for virtualized transactional memory |
US20080016325A1 (en) | 2006-07-12 | 2008-01-17 | Laudon James P | Using windowed register file to checkpoint register state |
US7617421B2 (en) | 2006-07-27 | 2009-11-10 | Sun Microsystems, Inc. | Method and apparatus for reporting failure conditions during transactional execution |
US7748618B2 (en) | 2006-08-21 | 2010-07-06 | Verizon Patent And Licensing Inc. | Secure near field transaction |
US7865885B2 (en) | 2006-09-27 | 2011-01-04 | Intel Corporation | Using transactional memory for precise exception handling in aggressive dynamic binary optimizations |
US20080086516A1 (en) | 2006-10-04 | 2008-04-10 | Oracle International | Automatically changing a database system's redo transport mode to dynamically adapt to changing workload and network conditions |
EP1918540B1 (en) | 2006-11-06 | 2009-08-26 | GM Global Technology Operations, Inc. | Operating method for a particulate filter, data processor program product and control apparatus therefore |
CN101178787A (zh) | 2006-11-10 | 2008-05-14 | 上海市卢湾区东南医院 | 用于社区老干部保健管理的信息沟通方法 |
US7669040B2 (en) | 2006-12-15 | 2010-02-23 | Sun Microsystems, Inc. | Method and apparatus for executing a long transaction |
JP2008165370A (ja) | 2006-12-27 | 2008-07-17 | Internatl Business Mach Corp <Ibm> | オンライントランザクション処理を分割し、分散環境で実行するための方法および装置。 |
US8086827B2 (en) | 2006-12-28 | 2011-12-27 | Intel Corporation | Mechanism for irrevocable transactions |
US7802136B2 (en) | 2006-12-28 | 2010-09-21 | Intel Corporation | Compiler technique for efficient register checkpointing to support transaction roll-back |
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 |
US8117403B2 (en) | 2007-05-14 | 2012-02-14 | International Business Machines Corporation | Transactional memory system which employs thread assists using address history tables |
US9009452B2 (en) | 2007-05-14 | 2015-04-14 | International Business Machines Corporation | Computing system with transactional memory using millicode assists |
US7814378B2 (en) | 2007-05-18 | 2010-10-12 | Oracle America, Inc. | Verification of memory consistency and transactional memory |
US20080320282A1 (en) | 2007-06-22 | 2008-12-25 | Morris Robert P | Method And Systems For Providing Transaction Support For Executable Program Components |
US8266387B2 (en) | 2007-06-27 | 2012-09-11 | Microsoft Corporation | Leveraging transactional memory hardware to accelerate virtualization emulation |
US7779232B2 (en) | 2007-08-28 | 2010-08-17 | International Business Machines Corporation | Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches |
US8209689B2 (en) | 2007-09-12 | 2012-06-26 | Intel Corporation | Live lock free priority scheme for memory transactions in transactional memory |
US7904434B2 (en) | 2007-09-14 | 2011-03-08 | Oracle International Corporation | Framework for handling business transactions |
US7890472B2 (en) | 2007-09-18 | 2011-02-15 | Microsoft Corporation | Parallel nested transactions in transactional memory |
US20090127332A1 (en) | 2007-11-16 | 2009-05-21 | Kyung Yang Park | System for processing payment employing off-line transaction approval mode of mobile card and method thereof |
US20090138890A1 (en) | 2007-11-21 | 2009-05-28 | Arm Limited | Contention management for a hardware transactional memory |
CN101170747A (zh) | 2007-11-30 | 2008-04-30 | 中兴通讯股份有限公司 | 中继状态调节方法和装置 |
US20090157512A1 (en) | 2007-12-14 | 2009-06-18 | Qualcomm Incorporated | Near field communication transactions with user profile updates 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 |
US8140497B2 (en) | 2007-12-31 | 2012-03-20 | Oracle America, Inc. | System and method for implementing nonblocking zero-indirection transactional memory |
US7966459B2 (en) | 2007-12-31 | 2011-06-21 | Oracle America, Inc. | System and method for supporting phased transactional memory modes |
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 |
US8316366B2 (en) | 2008-04-02 | 2012-11-20 | Oracle America, Inc. | Facilitating transactional execution in a processor that supports simultaneous speculative threading |
US20090260011A1 (en) | 2008-04-14 | 2009-10-15 | Microsoft Corporation | Command line transactions |
JP5385545B2 (ja) | 2008-04-17 | 2014-01-08 | インターナショナル・ビジネス・マシーンズ・コーポレーション | トランザクションの実行を制御する装置及び方法 |
US9367363B2 (en) | 2008-05-12 | 2016-06-14 | Oracle America, Inc. | System and method for integrating best effort hardware mechanisms for supporting transactional memory |
US8612950B2 (en) | 2008-06-19 | 2013-12-17 | Intel Corporation | Dynamic optimization for removal of strong atomicity barriers |
US7996686B2 (en) | 2008-07-07 | 2011-08-09 | International Business Machines Corporation | Branch trace methodology |
US9449314B2 (en) | 2008-10-02 | 2016-09-20 | International Business Machines Corporation | Virtualization of a central processing unit measurement facility |
US8191046B2 (en) | 2008-10-06 | 2012-05-29 | Microsoft Corporation | Checking transactional memory implementations |
US20100122073A1 (en) | 2008-11-10 | 2010-05-13 | Ravi Narayanaswamy | Handling exceptions in software transactional memory systems |
JP4702962B2 (ja) | 2008-11-12 | 2011-06-15 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メモリ制御装置、プログラム及び方法 |
US8789057B2 (en) | 2008-12-03 | 2014-07-22 | Oracle America, Inc. | System and method for reducing serialization in transactional memory using gang release of blocked threads |
US8672820B2 (en) | 2008-12-04 | 2014-03-18 | Honda Motor Co., Ltd. | Tool stocker, machine tool system, and tool damage detecting apparatus |
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 |
US9785462B2 (en) | 2008-12-30 | 2017-10-10 | Intel Corporation | Registering a user-handler in hardware for transactional memory event handling |
CN101710433A (zh) | 2008-12-31 | 2010-05-19 | 深圳市江波龙电子有限公司 | 一种电子支付卡的交易方法及电子支付卡 |
US9170844B2 (en) | 2009-01-02 | 2015-10-27 | International Business Machines Corporation | Prioritization for conflict arbitration in transactional memory management |
CN101819518B (zh) | 2009-02-26 | 2013-09-11 | 国际商业机器公司 | 在事务内存中快速保存上下文的方法和装置 |
US8266107B2 (en) | 2009-03-11 | 2012-09-11 | International Business Machines Corporation | Method for mirroring a log file by threshold driven synchronization |
US9940138B2 (en) | 2009-04-08 | 2018-04-10 | Intel Corporation | Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations |
US20100307689A1 (en) | 2009-06-06 | 2010-12-09 | Michael James Huebner | Pivoting tape dispenser |
US8973004B2 (en) | 2009-06-26 | 2015-03-03 | Oracle America, Inc. | Transactional locking with read-write locks in transactional memory systems |
US8356166B2 (en) | 2009-06-26 | 2013-01-15 | Microsoft Corporation | Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers |
BRPI0925055A2 (pt) | 2009-06-26 | 2015-07-28 | Intel Corp | "otimizações para um sistema de memória transacional ilimitada (utm)" |
US8489864B2 (en) | 2009-06-26 | 2013-07-16 | Microsoft Corporation | Performing escape actions in transactions |
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 |
US9529839B2 (en) | 2009-12-07 | 2016-12-27 | International Business Machines Corporation | Applying limited-size hardware transactional memory to arbitrarily large data structure |
US8316194B2 (en) | 2009-12-15 | 2012-11-20 | Intel Corporation | Mechanisms to accelerate transactions using buffered stores |
US8521995B2 (en) | 2009-12-15 | 2013-08-27 | Intel Corporation | Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode |
US8095824B2 (en) | 2009-12-15 | 2012-01-10 | Intel Corporation | Performing mode switching in an unbounded transactional memory (UTM) system |
US8290991B2 (en) | 2009-12-15 | 2012-10-16 | Juniper Networks, Inc. | Atomic deletion of database data categories |
US9092253B2 (en) | 2009-12-15 | 2015-07-28 | Microsoft Technology Licensing, Llc | Instrumentation of hardware assisted transactional memory system |
US8301849B2 (en) | 2009-12-23 | 2012-10-30 | Intel Corporation | Transactional memory in out-of-order processors with XABORT having immediate argument |
US20110161371A1 (en) | 2009-12-29 | 2011-06-30 | Microgen Plc | Sql generation |
KR101639672B1 (ko) | 2010-01-05 | 2016-07-15 | 삼성전자주식회사 | 무한 트랜잭션 메모리 시스템 및 그 동작 방법 |
US8549468B2 (en) | 2010-02-08 | 2013-10-01 | National Tsing Hua University | Method, system and computer readable storage device for generating software transaction-level modeling (TLM) model |
US8850166B2 (en) | 2010-02-18 | 2014-09-30 | International Business Machines Corporation | Load pair disjoint facility and instruction therefore |
US20110208921A1 (en) | 2010-02-19 | 2011-08-25 | Pohlack Martin T | Inverted default semantics for in-speculative-region memory accesses |
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 |
US8438568B2 (en) | 2010-02-24 | 2013-05-07 | International Business Machines Corporation | Speculative thread execution with hardware transactional memory |
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 |
US8464261B2 (en) | 2010-03-31 | 2013-06-11 | Oracle International Corporation | System and method for executing a transaction using parallel co-transactions |
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 |
US8424015B2 (en) | 2010-09-30 | 2013-04-16 | International Business Machines Corporation | Transactional memory preemption mechanism |
US9122476B2 (en) | 2010-12-07 | 2015-09-01 | Advanced Micro Devices, Inc. | Programmable atomic memory using hardware validation agent |
US8788794B2 (en) | 2010-12-07 | 2014-07-22 | Advanced Micro Devices, Inc. | Programmable atomic memory using stored atomic procedures |
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 |
US9158660B2 (en) | 2012-03-16 | 2015-10-13 | International Business Machines Corporation | Controlling operation of a run-time instrumentation facility |
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 |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US8966324B2 (en) | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9311101B2 (en) | 2012-06-15 | 2016-04-12 | International Business Machines Corporation | Intra-instructional transaction abort handling |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
-
2012
- 2012-06-15 US US13/524,855 patent/US9436477B2/en active Active
-
2013
- 2013-03-08 US US13/789,999 patent/US9529598B2/en active Active
- 2013-05-17 WO PCT/EP2013/060275 patent/WO2013186012A1/en active Application Filing
- 2013-05-17 SI SI201330053T patent/SI2724228T1/sl unknown
- 2013-05-17 JP JP2015516530A patent/JP6206886B2/ja active Active
- 2013-05-17 EP EP13724242.6A patent/EP2724228B1/en active Active
- 2013-05-17 MX MX2014015356A patent/MX349710B/es active IP Right Grant
- 2013-05-17 CN CN201380028454.3A patent/CN104350462B/zh active Active
-
2016
- 2016-08-09 US US15/232,299 patent/US9983883B2/en active Active
- 2016-08-09 US US15/232,271 patent/US9996360B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1030487A (zh) * | 1987-07-01 | 1989-01-18 | 数字设备公司 | 在向量数据处理运算中从缺页故障中恢复的设备和方法 |
US6499100B1 (en) * | 1997-12-02 | 2002-12-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Enhanced instruction decoding |
US20070005828A1 (en) * | 2005-06-30 | 2007-01-04 | Nimrod Diamant | Interrupts support for the KCS manageability interface |
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 |
CN102144218A (zh) * | 2008-07-28 | 2011-08-03 | 超威半导体公司 | 可虚拟化的先进同步设备 |
US20120131309A1 (en) * | 2010-11-18 | 2012-05-24 | Texas Instruments Incorporated | High-performance, scalable mutlicore hardware and software system |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017121300A1 (en) * | 2016-01-15 | 2017-07-20 | Huawei Technologies Co., Ltd. | Caching structure for nested preemption |
US10366013B2 (en) | 2016-01-15 | 2019-07-30 | Futurewei Technologies, Inc. | Caching structure for nested preemption |
Also Published As
Publication number | Publication date |
---|---|
US20130339709A1 (en) | 2013-12-19 |
US20160350129A1 (en) | 2016-12-01 |
US9529598B2 (en) | 2016-12-27 |
US9996360B2 (en) | 2018-06-12 |
WO2013186012A1 (en) | 2013-12-19 |
JP2015525405A (ja) | 2015-09-03 |
US20130339676A1 (en) | 2013-12-19 |
CN104350462B (zh) | 2017-01-25 |
EP2724228A1 (en) | 2014-04-30 |
US9983883B2 (en) | 2018-05-29 |
EP2724228B1 (en) | 2015-07-01 |
SI2724228T1 (sl) | 2015-10-30 |
JP6206886B2 (ja) | 2017-10-04 |
MX349710B (es) | 2017-08-09 |
MX2014015356A (es) | 2015-07-06 |
US9436477B2 (en) | 2016-09-06 |
US20160350128A1 (en) | 2016-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104350462B (zh) | 事务中止指令 | |
CN104364772B (zh) | 控制一计算环境中的事务执行的方法及系统 | |
CN104350468B (zh) | 非事务储存指令 | |
CN104335185A (zh) | 受限事务执行 | |
CN104412232A (zh) | 事务处理 | |
CN104364778B (zh) | 在事务处理中保存/恢复选择的寄存器 | |
CN104335177A (zh) | 有选择地控制事务处理中的指令执行 | |
CN104335181A (zh) | 事务诊断区块 | |
CN104335184A (zh) | 事务执行分支指示 | |
CN104350474B (zh) | 用于控制计算环境中的事务的执行的装置、系统和方法 | |
CN104380246B (zh) | 用于管理计算环境中的中断的方法、系统及介质 | |
CN104335186A (zh) | 处理器辅助设施 | |
CN104350463B (zh) | 在事务执行中的受限指令 | |
CN103514032B (zh) | 用于促进计算环境内的处理的方法和计算机系统 | |
US9286076B2 (en) | Intra-instructional transaction abort handling | |
CN104335165B (zh) | 用于在计算环境中执行机器指令的方法和计算机系统 | |
US9483276B2 (en) | Management of shared transactional resources | |
CN104335164B (zh) | 事务中止处理 | |
US9378143B2 (en) | Managing transactional and non-transactional store observability | |
CN103513960A (zh) | 促进事务重复中止之后的事务完成的方法和计算机系统 | |
CN104205064A (zh) | 将程序事件记录事件向运行时间检测事件的变换 | |
CN108701050B (zh) | 事务的优先级 | |
CN102906707A (zh) | 管理与硬件事件关联的处理 | |
US9223687B2 (en) | Determining the logical address of a transaction abort |
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 |