CN104350474A - 事务执行内的随机测试 - Google Patents
事务执行内的随机测试 Download PDFInfo
- Publication number
- CN104350474A CN104350474A CN201380028460.9A CN201380028460A CN104350474A CN 104350474 A CN104350474 A CN 104350474A CN 201380028460 A CN201380028460 A CN 201380028460A CN 104350474 A CN104350474 A CN 104350474A
- Authority
- CN
- China
- Prior art keywords
- affairs
- instruction
- transaction
- control
- program
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 23
- 238000003860 storage Methods 0.000 claims description 127
- 238000000034 method Methods 0.000 claims description 121
- 238000003745 diagnosis Methods 0.000 claims description 110
- 230000015654 memory Effects 0.000 claims description 63
- 238000004590 computer program Methods 0.000 claims description 39
- 230000009471 action Effects 0.000 claims description 21
- 238000004364 calculation method Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 description 73
- 230000008569 process Effects 0.000 description 58
- 230000002159 abnormal effect Effects 0.000 description 33
- 238000004088 simulation Methods 0.000 description 30
- 238000012216 screening Methods 0.000 description 29
- 239000000284 extract Substances 0.000 description 26
- 238000012545 processing Methods 0.000 description 26
- 238000013519 translation Methods 0.000 description 22
- 230000008859 change Effects 0.000 description 19
- 238000000605 extraction Methods 0.000 description 19
- 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 17
- 238000007667 floating Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 230000007246 mechanism Effects 0.000 description 13
- 230000000875 corresponding effect Effects 0.000 description 12
- 230000001276 controlling effect Effects 0.000 description 9
- 238000006073 displacement reaction Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 230000001360 synchronised effect Effects 0.000 description 6
- 230000001186 cumulative effect Effects 0.000 description 5
- 238000007689 inspection Methods 0.000 description 5
- 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
- 230000002441 reversible effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000001427 coherent effect Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 230000014759 maintenance of location Effects 0.000 description 4
- 230000000717 retained effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000002708 enhancing effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 239000000654 additive Substances 0.000 description 2
- 230000000996 additive effect Effects 0.000 description 2
- 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
- 238000007906 compression Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 2
- 239000010931 gold Substances 0.000 description 2
- 229910052737 gold Inorganic materials 0.000 description 2
- 230000006872 improvement 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
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000013507 mapping 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
- 239000002245 particle Substances 0.000 description 2
- 238000010926 purge Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001052 transient effect Effects 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
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012937 correction Methods 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
- 238000005469 granulation Methods 0.000 description 1
- 230000003179 granulation Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002085 persistent effect Effects 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
- 238000001583 randomness test Methods 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
- 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
- 230000001629 suppression Effects 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/87—Monitoring of transactions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
提供任务特定诊断控制以促进特定类型的中止状况的调试。可以设置诊断控制以使得有选择地中止事务,允许事务驱动其中止句柄例程,以用于测试目的。所述控制包括例如事务诊断范围和事务诊断控制。所述事务诊断范围指示何时将要应用所述事务诊断控制,所述事务诊断控制指示是否将要有选择地中止事务。
Description
技术领域
一个或多个方面大体上关于多处理计算环境,且尤其关于此类计算环境内的事务处理。
背景技术
多处理器编程中的持久挑战为由多个中央处理单元(CPU)对同一储存位置的更新的挑战。更新储存位置的许多指令(甚至包括诸如AND的简单逻辑运算)用对该位置的多次存取来进行该更新。举例而言,首先提取储存位置,且接着储存回已更新结果。
为了使多个CPU安全地更新同一储存位置,序列化对该位置的存取。用先前由国际商业机器公司提供的S/360架构引入的一个指令(TEST AND SET指令)提供储存位置的连锁更新(interlocked update)。连锁更新意谓:如由其他CPU及输入/输出(I/O)子系统(例如,通道子系统)所观察的那样,指令的整个储存存取看来像是自动地发生的一样。稍后,由国际商业机器公司提供的S/370架构引入COMPARE AND SWAP及COMPARE DOUBLE AND SWAP指令,这些指令提供执行连锁更新的较精密方式且允许通常被称为锁定字组(或旗号)的实施。最近新增的指令已提供额外连锁更新能力,包括COMPAREAND SWAP AND PURGE及COMPARE AND SWAP AND STORE。然而,所有这些指令提供用于仅单一储存位置的连锁。
较复杂的程序技术可需要多个储存位置的连锁更新,诸如,当将一元素新增至一双向链接清单(doubly-linked list)时。在此类操作中,前向指针及向后指针两者皆看来像是被同时地更新一样,如由其他CPU及I/O子系统所观察的那样。为了实现此类多重位置更新,强制程序使用分离的单一序列化点,诸如,锁定字组。然而,锁定字组可提供比所保证的序列化层级粗略得多的序列化层级;举例而言,锁定字组可序列化数百万个元素的整个队列,即使仅两个元素正被更新亦如此。程序可结构化数据以使用较精细粒度级序列化(例如,锁定点阶层),但这引入额外问题,诸如,在违反该阶层时的潜在锁死情形,及在程序遭遇错误同时保持一或多个锁定时或在不能获取锁定时的复原问题。
除了以上内容以外,亦存在程序可以执行可能引起或可能不引起异常情况的指令序列的众多情境。若未发生异常情况,则程序继续;然而,若辨识出异常,则程序可采取校正动作以消除异常情况。作为一实例,Java可在(例如)理论式执行、函数的部分内嵌和/或指针空值检查的重新定序中利用此类执行。
在诸如由国际商业机器公司提供的z/OS及其前身的传统操作系统环境中,程序建立复原环境以拦截程序可遭遇的任何程序异常情况。若程序未拦截到异常,则操作系统通常针对操作系统未准备好进行处置的异常而例外地终止程序。建立及利用此类环境是昂贵且复杂的。
发明内容
经由提供一种用于控制事务在一计算环境中的执行的计算机程序产品而克服先前技术的缺点且提供优点。该计算机程序产品包括一计算机可读储存介质,该计算机可读储存介质可由一处理电路读取且储存指令以供该处理电路执行来执行一方法。举例而言,该方法包括:在计算环境中发起事务,所述事务有效地延迟将事务储存交付至主存储器,直到完成选择的事务为止;以及由处理器确定是否将要中止所述事务,所述确定采用所述处理器所使用的控制寄存器的一个或多个控制,所述一个或多个控制用于指示是否将要有选择地中止事务。
本文亦描述及主张与一个或多个实施例相关的方法及系统。另外,本文亦描述且可主张与一个或多个实施例相关的服务。
贯穿全文实现额外特征及优点。其他实施例及方面在本文中得以详细地描述且被看作本发明的部分。
附图说明
在本说明书完结时于权利要求中将一个或多个方面特定地指出且清楚地主张为实例。前述及其他目标、特征及优点自结合附图而进行的以下详细描述变得显而易见,在这些图中:
图1描绘计算环境的一实施例;
图2A描绘事务开始(TBEGIN)指令的一实例;
图2B描绘图2A的TBEGIN指令的字段的另外细节的一实施例;
图3A描绘事务开始受限(TBEGINC)指令的一实例;
图3B描绘图3A的TBEGINC指令的字段的另外细节的一实施例;
图4描绘事务结束(TEND)指令的一实例;
图5描绘事务中止(TABORT)指令的一实例;
图6描绘嵌套事务的一实例;
图7描绘NONTRANSACTIONAL STORE(NTSTG)指令的一实例;
图8描绘EXTRACT TRANSACTION NESTING DEPTH(ETND)指令的一实例;
图9描绘事务诊断区块的一实例;
图10描绘中止的实例原因,连同关联中止码及条件码;
图11描绘与执行TBEGINC指令相关联的逻辑的一实施例;
图12描绘与执行TBEGIN指令相关联的逻辑的一实施例;
图13描绘与事务中止处理相关联的逻辑的一实施例;
图14描绘与随机测试相关联的逻辑的一实施例;
图15描绘计算机程序产品的一实施例;
图16描绘主机计算机系统的一实施例;
图17描绘计算机系统的另外实例;
图18描绘包含计算机网络的计算机系统的另一实例;
图19描绘计算机系统的各种元件的一实施例;
图20A描绘图19的计算机系统的执行单元的一实施例;
图20B描绘图19的计算机系统的分支单元的一实施例;
图20C描绘图19的计算机系统的载入/储存单元的一实施例;及
图21描绘模拟主机计算机系统的一实施例。
具体实施方式
根据一个方面,提供一种事务执行(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,该公开案的全文据此以引用方式并入本文中。
Z/ARCHITECTURE、IBM以及Z/OS及Z/VM(下文所参考)为纽约州阿蒙克市的国际商业机器公司的注册商标。本文所使用的其他名称可为国际商业机器公司或其他公司的注册商标、商标或产品名称。
作为一实例,计算环境100包括经由一个或多个控制单元108耦接至一个或多个输入/输出(I/O)器件106的中央处理器复合体(central processor complex,CPC)102。举例而言,中央处理器复合体102包括一个或多个中央处理器110、一个或多个分割区112(例如,逻辑分割区(LP))、逻辑分割区超管理器(hypervisor)114及输入/输出子系统115,其中每一者在下文予以描述。
中央处理器110为分配给逻辑分割区的实体处理器资源。详言之,每一逻辑分割区112具有一个或多个逻辑处理器,其中每一逻辑处理器表示分配给该分割区的实体处理器110的全部或份额。特定分割区112的逻辑处理器可专用于该分割区,使得底层处理器资源110针对那个分割区而保留;或这些逻辑处理器可与另一分割区共用,使得该底层处理器资源潜在地可用于另一分割区。
逻辑分割区充当分离系统且具有一个或多个应用程序,且视情况在其中具有驻留操作系统,该驻留操作系统针对每一逻辑分割区可不同。在一实施例中,操作系统为由纽约州阿蒙克市的国际商业机器公司提供的z/OS操作系统、z/VM操作系统、z/Linux操作系统或TPF操作系统。逻辑分割区112由逻辑分割区超管理器114管理,逻辑分割区超管理器114由处理器110上运行的固件实施。如本文所使用,固件包括(例如)处理器的微码(microcode)和/或毫码(millicode)。举例而言,固件包括在较高层级机器码的实施中使用的硬件层级指令和/或数据结构。在一实施例中,举例而言,固件包括通常作为包括受信任软件的微码或特定于底层硬件的微码进行递送且控制对系统硬件的操作系统存取的专属码。
逻辑分割区及逻辑分割区超管理器各自包含驻留于与中央处理器相关联的中央存储器的各别分割区中的一个或多个程序。逻辑分割区超管理器114的一个实例为由纽约州阿蒙克市的国际商业机器公司提供的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,其指定指明非事务储存操作的操作码;寄存器字段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(ETND)指令的格式的一实施例。作为一实例,EXTRACT TRANSACTION NESTINGDEPTH指令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
当事务归因于非零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含有有效性及格式指示,如下:
格式字段为零的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-16 TOUNICODE-32;CONVERT UNICODE-16 TO UNICODE-8;CONVERTUNICODE-32TO UNICODE-16;CONVERT UNICODE-32TO UNICODE-8;CONVERT UNICODE-8 TO UNICODE-16;CONVERT UNICODE-8 TOUNICODE-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子系统所观察。
事务可出于多种原因而隐含地中止,或事务可由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.如果事务执行,控制寄存器的位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可能不可在所有情况下区分提取/存储溢出和提取/存储冲突。
在一实施例中且如上文所提及,事务设施规定受限事务及非受限事务两者,以及与其相关联的处理。最初论述受限事务,且接着论述非受限事务。
受限事务在无后退路径的情况下执行于事务模式下。其为用于紧凑函数的处理的模式。在不存在重复中断或与其他CPU或I/O子系统的冲突(亦即,由将不允许事务成功地完成的条件造成)时,受限事务最终将完成;因此,无需且不指定中止处理例程。举例而言,在不存在以下各者时,事务最终将完成:不能处理的条件(例如,除以0)的违反、不允许事务完成的条件(例如,不允许指令执行的计时器中断、热I/O等等),或与受限事务相关联的限定或限制的违反。
当事务嵌套深度最初为0时,受限事务由TRANSACTION BEGIN受限(TBEGINC)指令起始。在一实施例中,受限事务经受以下限制。
1.事务执行不多于32个指令,不包括TRANSACTION BEGIN受限(TBEGINC)及TRANSACTION END指令。
2.事务中的所有指令将在存储器的256个连续字节内,包括TRANSACTION BEGIN受限(TBEGINC)及任何TRANSACTION END指令。
3.除了受限定指令以外,以下限定亦应用于受限事务。
a.指令限于被称作一般指令的指令,包括(例如)加法、减法、乘法、除法、移位、旋转等等。
b.分支指令限于以下各者(在一实例中,所列出的指令属于z/Architecture):
●BRANCH RELATIVE ON CONDITION,其中M1为非零且RI2字段含有正值。
●BRANCH RELATIVE ON CONDITION LONG,其中M1字段为非零,且RI2字段含有不造成地址环绕的正值。
●COMPARE AND BRANCH RELATIVE、COMPARE IMMEDIATEAND BRANCH RELATIVE、COMPARE LOGICAL AND BRANCHRELATIVE,及COMPARE LOGICAL IMMEDIATE AND BRANCHRELATIVE,其中M3字段为非零且RI4字段含有正值。(亦即,仅具有非零分支屏敝的前向分支。)
c.除了TRANSACTION END及造成已指定操作数序列化的指令以外,造成序列化功能的指令受到限定。
d.存储器间操作(SS-)及具有延伸操作码的存储器间操作(SSE-)指令受到限定。
e.所有以下一般指令(在此实例中,其属于z/Architecture)受到限定:CHECKSUM;CIPHER MESSAGE;CIPHER MESSAGE WITH CFB;CIPHERMESSAGE WITH CHAINING;CIPHER MESSAGE WITH COUNTER;CIPHER MESSAGE WITH OFB;COMPARE AND FORM CODEWORD;COMPARE LOGICAL LONG;COMPARE LOGICAL LONG EXTENDED;COMPARE LOGICAL LONG UNICODE;COMPARE LOGICAL STRING;COMPARE UNTIL SUBSTRING EQUAL;COMPRESSION CALL;COMPUTEINTERMEDIATE MESSAGE DIGEST;COMPUTE LAST MESSAGEDIGEST;COMPUTE MESSAGE AUTHENTICATION CODE;CONVERT TOBINARY;CONVERT TO DECIMAL;CONVERT UNICODE-16 TOUNICODE-32;CONVERT UNICODE-16 TO UNICODE-8;CONVERTUNICODE-32TO UNICODE-16;CONVERT UNICODE-32TO UNICODE-8;CONVERT UNICODE-8 TO UNICODE-16;CONVERT UNICODE-8 TOUNICODE-32;DIVIDE;DIVIDE LOGICAL;DIVIDE SINGLE;EXECUTE;EXECUTE RELATIVE LONG;EXTRACT CACHE ATTRIBUTE;EXTRACTCPU TIME;EXTRACT PSW;EXTRACT TRANSACTION NESTING DEPTH;LOAD AND ADD;LOAD AND ADD LOGICAL;LOAD AND AND;LOADAND EXCLUSIVE OR;LOAD AND OR;LOAD PAIR DISJOINT;LOAD PAIRFROM QUADWORD;MONITOR CALL;MOVE LONG;MOVE LONGEXTENDED;MOVE LONG UNICODE;MOVE STRING;NON-TRANSACTIONAL STORE;PERFORM CRYPTOGRAPHICCOMPUTATION;PREFETCH DATA;PREFETCH DATA RELATIVE LONG;RUNTIME INSTRUMENTATION EMIT;RUNTIME INSTRUMENTATIONNEXT;RUNTIME INSTRUMENTATION OFF;RUNTIMEINSTRUMENTATION ON;SEARCH STRING;SEARCH;STRING UNICODE;SET ADDRESSING MODE;STORE CHARACTERS UNDER MASK HIGH,此时M3字段为0且R1字段中的码为6或7;STORE CLOCK;STORE CLOCKEXTENDED;STORE CLOCK FAST;STORE FACILITY LIST EXTENDED;STORE PAIR TO QUADWORD;TEST ADDRESSING MODE;TRANSACTION ABORT;TRANSACTION BEGIN(TBEGIN及TBEGINC两者);TRANSLATE AND TEST EXTENDED;TRANSLATE AND TESTREVERSE EXTENDED;TRANSLATE EXTENDED;TRANSLATE ONE TOONE;TRANSLATE ONE TO TWO TRANSLATE TWO TO ONE;及TRANSLATE TWO TO TWO。
4.事务的储存操作数存取不多于四个八倍字组。备注:LOAD ONCONDITION及STORE ON CONDITION被看作参考存储器而不管条件码。举例而言,八倍字组为32字节边界上的32个连续字节的群组。
5.在此CPU上执行的事务或由其他CPU或I/O子系统进行的储存并不存取任何4K字节区块中的储存操作数,这些4K字节区块含有存储器的256个字节,其以TRANSACTION BEGIN受限(TBEGINC)指令开始。
6.事务不使用映射至相同绝对地址的不同逻辑地址来存取指令或储存操作数。
7.由事务进行的操作数参考将在单一双字组内,惟对于LOADACCESS MULTIPLE、LOAD MULTIPLE、LOAD MULTIPLE HIGH、STOREACCESS MULTIPLE、STORE MULTIPLE及STORE MULTIPLE HIGH除外,操作数参考将在单一八倍字组内。
若受限事务违反上文所列出之限制1至7中任一者,则(a)辨识事务限制程序中断,或(b)执行如同事务未受到限制一样行进,惟另外限制违反仍可引起事务受限程序中断除外。采取哪一动作是不可预测的,且所采取的动作可基于哪一限制被违反而不同。
在不存在限制违反、重复中断或与其他CPU或I/O子系统的冲突时,受限事务最终将完成,如上文所描述。
1.若事务满足以下准则,则成功地完成受限事务的机会改良:
a.所发出的指令少于为32之最大值。
b.储存操作数参考少于为4个八倍字组的最大值。
c.储存操作数参考处于同一高速缓存行上。
d.对相同位置的储存操作数参考藉由所有事务以相同次序而发生。
2.受限事务未必确信在其第一执行时成功地完成。然而,若未违反所列出限制中任一者的受限事务中止,则CPU使用确保事务的重复执行随后成功的电路。
3.在受限事务内,TRANSACTION BEGIN为受限定指令,因此,受限事务不能为嵌套。
4.由受限事务违反以上限制1至7中任一者可引起程序循环。
5.受限事务的限制相似于比较及交换循环的限制。由于来自其他CPU及I/O子系统的潜在干扰,不存在COMPARE AND SWAP指令将用条件码0永远完成的架构确信。受限事务可遭受呈提取或储存冲突中止或热中断的形式的相似干扰。
CPU使用公平演算法以确保在不存在任何限制违反时受限事务最终完成。
6.为了判定完成受限事务所需要的重复反复的数目,程序可在不经受一般寄存器储存屏敝的一般寄存器中使用计数器。下文展示一实例。
*R15现在含有重复事务尝试的计数。
应注意,在此实例中,两个寄存器14及15皆未被恢复。亦应注意,在一些模型上,若CPU在TBEGINC指令完成之后但在AHI指令完成之前侦测到中止条件,则一般寄存器15中的计数可低。
如由CPU所观察,在事务执行模式下进行的提取及储存并非不同于在不处于事务执行模式时进行的提取及储存。
在一实施例中,使用者(亦即,建立事务的使用者)选择事务是否将受到限制。参看图11来描述与受限事务的处理相关联的逻辑且尤其是与TBEGINC指令相关联的处理的一实施例。TBEGINC指令的执行使CPU进入受限事务执行模式或保持于非受限执行模式。执行TBEGINC的CPU(亦即,处理器)执行图11的逻辑。
参看图11,基于TBEGINC指令的执行,执行序列化功能(步骤1100)。序列化功能或操作包括在发生概念上后续的储存存取(及相关参考位及改变位设定)之前由CPU完成所有概念上先前的储存存取(及作为一实例,对于z/Architecture,相关参考位及改变位设定),如由其他CPU及I/O子系统所观察。序列化影响对存储器及对存储器金钥的所有CPU存取的序列,惟与ART表项及DAT表项提取相关联的存取除外。
如由处于事务执行模式的CPU所观察,序列化正常地操作(如上文所描述)。如由其他CPU及I/O子系统所观察,由于使事务嵌套深度递减至零(正常结束)的TRANSACTION END指令或由于正被中止的事务,在CPU处于事务执行模式时执行的序列化操作在CPU离开事务执行模式时发生。
在执行序列化之后,进行关于是否辨识异常的判定(查询1102)。若是,则处置异常(步骤1104)。举例而言,若事务执行控制(控制寄存器0的位8)为0,则辨识出特殊操作异常且抑制操作。作为另外实例,若B1字段(指令的位16至19)为非零,则辨识出规格异常且抑制操作;若TBEGINC为执行类型指令的目标,则辨识出执行异常且抑制操作;且若于配置中未安装事务执行设施,则辨识出操作异常且抑制操作。若CPU已经处于受限事务执行模式,则辨识出事务受限异常程序异常且抑制操作。另外,若事务嵌套深度在累加1时将超过依赖于模型的最大事务嵌套深度,则用中止码13而中止事务。可辨识及处置其他或不同异常。
然而,若不存在异常,则进行关于事务嵌套深度是否为0的判定(查询1106)。若事务嵌套深度为0,则将事务诊断区块地址看作无效(步骤1108);自当前PSW的内容设定事务中止PSW,惟事务中止PSW的指令地址指明TBEGINC指令而非下一循序指令除外(步骤1110);且将如由一般寄存器储存屏敝指明的一般寄存器对的内容储存于不能由程序直接地存取的模型相依位置中(步骤1112)。另外,将嵌套深度设定为1(步骤1114)。另外,将允许浮点运算(F)及程序中断筛选控制(PIFC)的有效值设定为0(步骤1316)。另外,判定允许AR修改(A)控制(指令的I2字段的位12字段)的有效值(步骤1118)。举例而言,有效A控制为针对当前层级及针对任何外部TBEGIN指令的TBEGINC指令中的A控制的逻辑AND。
返回至查询1106,若事务嵌套深度大于0,则使嵌套深度累加1(步骤1120)。另外,将允许浮点运算(F)的有效值设定为0,且程序中断筛选控制(PIFC)的有效值不变(步骤1122)。处理接着继续步骤1118。在一实施例中,事务的成功起始引起条件码0。此情形推断出与执行TBEGINC指令相关联的逻辑的一实施例。
在一实施例中,上文所提供的异常检查可以变化次序而发生。用于异常检查的一特定次序如下:
优先权相同于针对一般状况的程序中断条件的优先权的异常。
归因于含有非零值的B1字段的规格异常。
归因于超过事务嵌套深度的中止。
归因于正常完成的条件码0。
另外,以下各者在一个或多个实施例中适用:
1.若事务并不在事务凭借TRANSACTION END而正常地结束时中止,则仅恢复经指明为由一般寄存器储存屏敝储存的寄存器。在中止时仅恢复由最外部TRANSACTION BEGIN指令的GRSM指明的寄存器。
I2字段应指明提供由受限事务改变的输入值的所有寄存器对。因此,若事务中止,则当重新执行受限事务时,输入寄存器值将恢复为其原始内容。
2.在大多数模型上,既在TRANSACTION BEGIN上又在事务中止时,可藉由指定在一般寄存器储存屏敝中进行储存及恢复所需要的寄存器的最小数目而实现改良型效能。
3.以下情形说明基于当前事务嵌套深度(TND)且在TND为非零时的TRANSACTION BEGIN指令(TBEGIN及TBEGINC两者)的结果,而无论CPU处于非受限事务执行模式或受限事务执行模式:
指令 TND=0
TBEGIN 进入非受限事务执行模式
TBEGINC进入受限事务执行模式
如本文所描述,在一个方面中,假定受限事务不含有使其不能够完成的条件,则受限事务确信完成。为了确保受限事务完成,执行该事务的处理器(例如,CPU)可采取某些动作。举例而言,若受限事务具有中止条件,则CPU可临时地:
(a)禁止无序执行;
(b)禁止其他CPU存取冲突储存位置;
(c)诱发中止处理之随机延迟;和/或
(d)调用其他措施以促进成功完成。
概言之,受限事务的处理如下:
●若已经处于受限TX模式,则辨识事务受限异常。
●若当前TND(事务嵌套深度)>0,则执行如同非受限事务一样行进
○将有效F控制设定为0
○有效PIFC不变
○允许外部非受限TX呼叫可或可不使用受限TX的服务功能。
●若当前TND=0,则:
○事务诊断区块地址无效。
-中止时未储存指令指定的TDB
○将事务中止PSW设定为TBEGINC的地址
-并非下一循序指令
○储存于不能由程序存取的依赖于模型的位置中的由GRSM指明的一般寄存器对
○视情况而形成(自D2操作数)的事务令牌。事务令牌为事务的识别符。事务令牌可等于储存操作数地址或另一值。
●有效A=TBEGINC A及任何外部A
●累加TND
○若TND自0转变至1,则CPU进入受限TX模式
○否则,CPU操持于非受限TX模式
●指令用CC0而完成
●异常:
○在B1字段为非零时的规格异常(PIC(程序中断码)0006)
○在事务执行控制(CR0.8)为0时的特殊操作异常(PIC 0013十六进位)
○在受限TX模式下发出时的事务受限异常(PIC 0018十六进位)
○在未安装受限事务执行设施时的操作异常(PIC 0001)
○在指令为执行类型指令的目标时的执行异常(PIC 0003)
○在嵌套深度超过时的中止码13
●受限事务中的中止条件:
○中止PSW指向TBEGINC指令
-并非在TBEGINC指令之后的指令
-中止条件造成整个TX被重新驱动
*无失败路径
○CPU采取特殊措施以确保在重新驱动时的成功完成
○假定无持久冲突、中断或受限违反,则事务确信最终完成。
●限制违反:
○PIC 0018十六进位—指示事务限制的违反
○或,事务如同非受限一样执行
如上文所描述,除了为选用的受限事务处理以外,在一实施例中,事务设施亦提供非受限事务处理。参看图12来描述关于非受限事务的处理且尤其是与TBEGIN指令相关联的处理的另外细节。TBEGIN指令的执行使CPU进入或保持于非受限事务执行模式。执行TBEGIN的CPU(亦即,处理器)执行图12的逻辑。
参看图12,基于TBEGIN指令的执行,执行序列化功能(上文所描述)(步骤1200)。在执行序列化之后,进行关于是否辨识出异常的判定(查询1202)。若是,则处置异常(步骤1204)。举例而言,若事务执行控制(控制寄存器0的位8)为0,则辨识出特殊操作异常且抑制操作。另外,若程序中断筛选控制(指令的I2字段的位14至15)含有值3,则辨识出规格异常且抑制操作;或第一操作数地址并不指明双字组边界。若于配置中未安装事务执行设施,则辨识出操作异常且抑制操作;且若TBEGI为执行类型指令的目标,则辨识出执行异常且抑制操作。另外,若CPU处于受限事务执行模式,则辨识出事务受限异常程序异常且抑制操作。另外,若事务嵌套深度在累加1时将超过依赖于模型的最大事务嵌套深度,则用中止码13而中止事务。
再者,当指令的B1字段为非零且CPU并不处于事务执行模式(亦即,事务嵌套深度为0)时,则判定对第一操作数的储存可存取性。取决于特定存取异常情况,若第一操作数不能被存取以进行储存,则辨识出存取异常且操作被设为空值、抑制或终止。另外,辨识用于第一操作数的任何PER储存变更事件。当B1字段为非零且CPU已经处于事务执行模式时,是否判定对第一操作数的储存可存取性是不可预测的,且针对第一操作数侦测PER储存变更事件。若B1字段为0,则不存取第一操作数。
除了异常检查以外,亦进行关于CPU是否处于事务执行模式(亦即,事务嵌套深度是否为0)的判定(查询1206)。若CPU并不处于事务执行模式,则储存选择的一般寄存器对的内容(步骤1208)。详言之,将由一般寄存器储存屏敝指明的一般寄存器对的内容储存于不能由程序直接地存取的依赖于模型的位置中。
另外,进行关于指令的B1字段是否为0的判定(查询1210)。若B1字段不等于0,则将第一操作数地址置放于事务诊断区块地址中(步骤1214),且事务诊断区块地址有效。另外,自当前PSW的内容设定事务中止PSW(步骤1216)。事务中止PSW的指令地址指明下一循序指令(亦即,在最外部TBEGIN之后的指令)。
此外,判定允许AR修改(A)控制(指令的I2字段的位12)的有效值(步骤1218)。有效A控制为针对当前层级及针对所有外部层级的TBEGIN指令中的A控制的逻辑AND。另外,判定允许浮点运算(F)控制(指令的I2字段的位13)的有效值(步骤1220)。有效F控制为针对当前层级及针对所有外部层级的TBEGIN指令中的F控制的逻辑AND。另外,判定程序中断筛选控制(PIFC)(指令的I2字段的位14至15)的有效值(步骤1222)。有效PIFC值为针对当前层级及针对所有外部层级的TBEGIN指令中的最高值。
另外,将为1的值添加至事务嵌套深度(步骤1224),且指令用设定条件码0而完成(步骤1226)。若事务嵌套深度自0转变至1,则CPU进入非受限事务执行模式;否则,CPU保持于非受限事务执行模式。
返回至查询1210,若B1等于0,则事务诊断区块地址无效(步骤1211),且处理继续步骤1218。相似地,若CPU处于事务执行模式(查询1206),则处理继续步骤1218。
举例而言,TBEGIN的执行的所得条件码包括:
举例而言,程序异常包括:
●存取(储存,第一操作数)
●操作(未安装事务执行设施)
●特殊操作
●规格
●事务限制(归因于受限定指令)
在一实施例中,上文所提供的异常检查可以变化次序而发生。异常检查的一特定次序如下:
●优先权相同于针对一般状况的程序中断条件的优先权的异常。
●归因于保留PIFC值的规格异常。
●归因于不在双字组边界上的第一操作数地址的规格异常。
●存取异常(当B1字段为非零时)。
●归因于超过最大事务嵌套深度的中止。
●归因于正常完成的条件码0。
备注:
1.当B1字段为非零时,以下内容适用:
●当起始最外部事务时,将提供可存取事务诊断区块(TDB)—即使事务从未中止亦如此。
●因为TDB的可存取性是否针对嵌套事务被测试是不可预测的,所以应针对任何嵌套TBEGIN指令提供可存取TDB。
●相比于B1字段为0时的情形,以下两者的执行可较慢:B1字段为非零的任何TBEGIN;及针对由B1字段为非零的最外部TBEGIN起始的事务而发生的任何中止处理。
2.在一实施例中,若事务并不在事务凭借TRANSACTION END而正常地结束时中止,则仅恢复经指明以由一般寄存器储存屏敝储存的寄存器。在中止时仅恢复由最外部TRANSACTION BEGIN指令的GRSM指明的寄存器。
I2字段应指明提供由事务改变的输入值的所有寄存器对。因此,若事务中止,则当进入中止处理例程时,输入寄存器值将恢复为其原始内容。
3.TRANSACTION BEGIN(TBEGIN)指令被预期为继之以条件分支指令,该条件分支指令将判定事务是否被成功地起始。
4.若事务归因于并未引起中断的条件而中止,则由事务中止PSW指明的指令接收控制(亦即,在最外部TRANSACTION BEGIN(TBEGIN)之后的指令)。除了由TRANSACTION BEGIN(TBEGIN)指令设定的条件码以外,当事务中止时亦设定条件码1至3。
因此,在最外部TRANSACTION BEGIN(TBEGIN)指令之后的指令序列应能够适应所有四个条件码,即使在此实例中TBEGIN指令仅设定码0亦如此。
5.在大多数模型上,既在TRANSACTION BEGIN上又当事务中止时,可藉由指定在一般寄存器储存屏敝中进行储存及恢复所需要的寄存器的最小数目而实现改良型效能。
6.在处于非受限事务执行模式时,程序可呼叫可变更存取寄存器或浮点寄存器(包括浮点控制寄存器)的服务功能。尽管此类服务例程可将已变更寄存器储存于项上且在结束时恢复这些寄存器,但事务可在例程的正常结束之前中止。若呼叫程序在CPU处于非受限事务执行模式时未为了保留这些寄存器而做好准备,则呼叫程序可不能容许这些寄存器的服务功能变更。
为了在处于非受限事务执行模式时防止存取寄存器的非故意变更,程序可将允许AR修改控制(TRANSACTION BEGIN指令的I2字段的位12)设定为0。相似地,为了防止浮点寄存器的非故意变更,程序可将允许浮点运算控制(TBEGIN指令的I2字段的位13)设定为0。
7.在TRANSACTION BEGIN(TBEGIN)指令的执行期间辨识的程序异常情况经受由任何外部TBEGIN指令设定的有效程序中断筛选控制。在最外部TBEGIN指令的执行期间辨识的程序异常情况不经受筛选。
8.为了以序列化方式更新多个储存位置,传统码序列可使用锁定字组(旗号)。若(a)事务执行用以实施多个储存位置的更新、(b)程序亦提供「后退」路径以在事务中止时被调用,且(c)后退路径使用锁定字组,则事务执行路径亦应针对锁定的可用性进行测试,且若锁定不可用,则凭借TRANSACTIONEND指令来结束事务且分支至后退路径。此情形确保对序列化资源的一致存取,而不管这些资源是否被事务地更新。
或者,若锁定不可用,则程序可中止;然而,中止处理可显著地慢于经由TEND简单地结束事务。
9.若有效程序中断筛选控制(PIFC)大于0,则CPU筛选大多数数据异常程序中断。若有效允许浮点运算(F)控制为0,则数据异常码(DXC)将由于归因于数据例外程序异常情况的中止而不在浮点控制寄存器中进行设定。在此情境(筛选适用且有效F控制为0)中,DXC被检测的唯一位置处于TBEGIN指定的TDB中。若程序的中止处理例程在此类情形中检测DXC,则一般寄存器B1应为非零,使得设定有效事务诊断区块地址(TDBA)。
10.若PER储存变更或零地址侦测条件针对最外部TBEGIN指令的TBEGIN指定的TDB而存在,且PER事件抑制并不适用,则在指令的执行期间辨识PER事件,因此造成事务立即中止,而不管是否存在任何其他中止条件。
在一实施例中,TBEGIN指令将事务中止地址隐含地设定为在TBEGIN之后的下一循序指令。此地址意欲为条件分支指令,该条件分支指令取决于条件码(CC)而判定是否进行分支。成功TBEGIN设定CC0,而已中止事务设定CC1、CC2或CC3。
在一实施例中,TBEGIN指令提供指明事务诊断区块(TDB)的地址的选用储存操作数,若事务中止,则信息储存至该事务诊断区块(TDB)中。
另外,TBEGIN指令提供包括以下各者的立即操作数:
一般寄存器储存屏敝(GRSM),其指示一般寄存器的哪些对将在事务执行开始时被储存且在事务中止时被恢复;
允许事务在事务修改存取寄存器时中止的位(A);
允许事务在事务尝试执行浮点指令时中止的位(F);及
程序中断筛选控制(PIFC),其在事务中止时允许个别事务层级略过程序中断的实际呈现。
A、F及PIFC控制在各种嵌套层级处可不同,且在内部事务层级结束时恢复为先前层级。
此外,TBEGIN(或在另一实施例中,TBEGINC)用以形成事务令牌。视情况,可使该令牌与藉由TEND指令形成的令牌匹配。对于每一TBEGIN(或TBEGINC)指令,作为一实例,令牌由第一操作数地址形成。此令牌可独立于基底寄存器是否为0而形成(不同于仅在基底寄存器为非零时发生的TDB地址设定)。对于用非零基底寄存器而执行的每一TRANSACTION END指令,相似令牌由其储存操作数形成。若令牌并不匹配,则可辨识程序异常以向程序提醒未配对指令。
令牌匹配提供意欲藉由确保TEND陈述式与TBEGIN(或TBEGINC)适当地配对而改良软件可靠性的机制。当TBEGIN指令在特定嵌套层级处执行时,令牌由识别事务的此执行个体的储存操作数地址形成。当执行对应TEND指令时,令牌由指令的储存操作数地址形成,且CPU比较用于嵌套层级的开始令牌与结束令牌。若令牌并不匹配,则辨识出异常情况。模型可针对仅某一数目个嵌套层级(或不针对嵌套层级)实施令牌匹配。令牌可不涉及储存操作数地址的所有位,或位可经由杂凑或其他方法而组合。令牌可藉由TBEGIN指令形成,即使不存取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进入事务执行模式
●将条件码设定为0
○当在TBEGIN之后的指令接收控制时:
-TBEGIN成功由CC0指示
-已中止事务由非零CC指示
●异常:
○在嵌套深度超过时的中止码13
○在B1字段为非零且储存操作数不能被存取以进行储存操作时的存取异常(各种PIC中的一个)
○在TBEGIN指令为执行类型指令的目标时的执行异常(PIC 0003)
○在未安装事务执行设施时的操作异常(PIC 0001)
○在以下任一情形时的PIC 0006
-PIFC无效(为3的值)
-第二操作数地址未双字组对准
○在事务执行控制(CR0.8)为0时的PIC 0013十六进位
○在受限TX模式下发出时的PIC 0018十六进位
如这里所指示,通过TRANSACTION ABORT指令可以隐含地或明确地中止事务。通过TABORT指令或别的方式来中止事务包括多个步骤。一般而言,用于中止处理的各步骤的实例参照图13来描述。如果基于是否由TABORT或别的方式来起始,处理中存在差异,则在下面的描述中指示。在一实例中,处理器(即,CPU)正执行图13的逻辑。
参照图13,初始地,基于TABORT指令或暗示的中止的执行,交付在CPU处于事务执行模式下进行的非事务储存(步骤1300)。在CPU处于事务执行模式下进行的其他储存(如,事务储存)被舍弃(步骤1302)。
CPU离开事务执行模式(步骤1304),非事务地发生接下来的储存。除了如上所述设置条件码之外(除了以下情形,其中如果TDBA有效但区块不可存取,则CC=1),以事务中止PSW的内容替换当前PSW(步骤1306)。作为中止处理的一部分或后续于中止处理,处理分支到事务中止PSW指定的位置以执行动作。在事务为受限事务的一实例中,位置为TBEGINC指令,并且动作是该指令的重新执行;以及在事务为非受限事务的另一实例中,位置为TBEGIN之后的指令,并且动作是该指令的执行,其例如可以是到中止处理程序的分支。
接下来,进行关于事务诊断区块地址(TDBA)是否有效的确定(询问1308)。当事务诊断区块地址有效时,将标识中止原因的诊断信息和一般寄存器的内容储存到TBEGIN指定的事务诊断区块(步骤1310)。参照事务诊断区块在以上描述了储存的TDB字段和储存它们的条件。
紧接着,进行关于事务诊断区块地址(TDBA)是否有效的判定(查询1308)。当事务诊断区块地址有效时,将识别中止的原因的诊断信息及一般寄存器的内容储存于TBEGIN指定事务诊断区块中(步骤1310)。上文参考事务诊断区块来描述所储存的TDB字段及TDB字段被储存的条件。
若事务诊断区块地址有效,但区块已变得不可存取,则在执行最外部TBEGIN指令之后,不存取该区块且条件码1适用。
对于归因于引起中断的程序异常情况而中止的事务,储存程序中断TDB。
返回至查询1308,若事务诊断区块地址无效,则不储存TBEGIN指定的TDB且条件码2或3适用,此取决于中止的原因。
除了以上内容以外,亦将事务嵌套深度设定为等于0(步骤1312)。另外,恢复经指定以由最外部TBEGIN指令储存的任何一般寄存器对(步骤1314)。当事务中止时,不恢复未经指明以由最外部TBEGIN指令储存的一般寄存器对。
另外,执行序列化功能(步骤1316)。序列化功能或操作包括:在发生概念上后续的储存存取(及相关参考位及改变位设定)之前,由CPU完成所有概念上先前的储存存取(且作为一实例,对于z/Architecture,相关参考位及改变位设定),如由其他CPU及I/O子系统所观察。序列化实现对存储器及对存储器金钥的所有CPU存取的序列,惟与ART表项及DAT表项提取相关联的存取除外。
如由处于事务执行模式的CPU所观察,序列化正常地操作(如上文所描述)。如由其他CPU及I/O子系统所观察,由于使事务嵌套深度递减至0(正常结束)的TRANSACTION END指令或由于正被中止的事务,在CPU处于事务执行模式时执行的序列化操作在CPU离开事务执行模式时发生。
对于以除了由TABORT以外的其他方式起始的中止处理,若事务归因于引起中断的异常情况而中止(查询1318),则将与中断相关联的中断码或参数储存于对应于中断类型的已指派储存位置处(步骤1320)。另外,如上文所设定,将当前PSW储存至中断旧PSW中(步骤1322)。此后,或若事务并未归因于引起中断的异常情况而中止,则指令以条件码0而结束。
在一个实施例中,为了促进特定类型的中止条件的调试,事务执行设施提供任务特定诊断控制。如在此使用的那样,任务特定表示控制处于与任务的分派一致而切换的寄存器中(又称为处理或可分派单元)。任务包括一个或多个事务的执行,并且与给定用户关联。可以(例如由操作系统基于给定用户所提供的信息)设置诊断控制以使得有选择地或随机地(例如非预测性地)中止事务,因此允许事务驱动其中止处理器程序例程,以用于测试目的。在一个实施例中,有选择地包括例如有效地发布中止事件的机器依赖机制(例如不直接与指令执行同步的计数器或定时器)进行的选择。在其它实施例中,可以使用其它选择机制或准则。控制包括例如事务诊断范围(TDS)和事务诊断控制(TDC),其中的每一个如上所述。
参照图14描述使用诊断控制以随机地中止事务的一个实施例。诸如执行一个或多个事务的处理器之类的处理器(例如CPU)执行图14的逻辑。
参照图14,初始地,经由例如处理器所执行的TRANSACTION BEGIN指令来起始事务(步骤1400)。此后,检查处理器的状态(例如其处于问题还是监督状态下)以及事务诊断范围(TDS)的值(步骤1402)。基于处理器的状态和TDS值,关于是否将要应用事务诊断控制(TDC)进行确定(询问1404)。例如,如果事务诊断范围控制设置为零,则无论CPU的状态如何,事务诊断控制都应用。然而,如果事务诊断范围控制设置为1,则在该示例中,仅当CPU处于问题状态下时,事务诊断控制应用。如果事务诊断控制不应用,则处理完成,并且不执行选择性或随机性测试。
然而,如果处理器的事务诊断范围和/或状态指示将要应用事务诊断控制(询问1404),则检查事务诊断控制(步骤1406)。此后,可以基于事务诊断控制而中止或不中止事务(步骤1408)。例如,如果事务诊断控制为零,则作为事务诊断控制的结果,不中止事务。然而,如果事务诊断控制设置为1,则作为在最外部TRANSACTION END指令的执行之前在所选择的或随机的指令处的控制的结果,中止每个事务。例如,选择控制可以用于选择事务内待中止的指令。该控制可以指定例如第n指令;其可以使用任何其他类型的计算以确定在哪条指令处将要中止每个事务;或其可以使用有效地发布中止事件的机器依赖机制。此外,选择控制对于每个事务可以是相同或不同的。
此外,如果事务诊断控制设置为零,则在所选择的或随机的指令处中止所选择的或随机的事务。此外,任何选择控制可以用于确定将要中止哪些事务以及在这些事务内的哪些指令处。当事务基于事务诊断控制而中止时,事务可以驱动其中止处理程序例程,以用于测试目的。例如,假设存在将更新队列并且还具有如果事务重复地中止则将使用类锁定协议的后退路径的事务。2的TDC值将使得事务中止(但在其它场合时也继续)。因此,事务码和非事务中止处理程序码都将得到练习。
作为另一示例,1的TDC值将使得事务总是中止,因此事务码的部分将受测试,但从不成功完成;此外,出于各种中止原因,中止处理程序码将受测试。
在另一实施例中,可以提供其它TDC值。例如,可以提供值以在嵌套事务内的选择事务处中止。其它实例也是可能的。
如上所述,在一个示例中,提供用于通过操作系统控制(例如通过系统调试器)有选择地或随机地中止事务以谨慎地使得事务中止的能力。所述控制处于对于所分派的每个任务切换的寄存器中,因此其处于用户的上下文内。所述控制使得处理器能够在所述事务正执行的同时有选择地或随机地仿真中止,以促进调试特定类型的中止条件。
进一步,以上提供了在无传统(粗糙粒度级)序列化(诸如,锁定)的情况下更新存储器中的多个不连续对象的有效率方式,该方式提供显著多处理器效能改良的潜能。亦即,多个不连续对象在无藉由诸如锁定及旗号的传统技术提供的更粗糙粒度级储存存取排序的增强的情况下予以更新。在无费力复原设定的情况下提供理论式执行,且提供受限事务以用于简单的小使用量更新。
事务执行可用于多种情境中,包括但不限于部分内嵌、理论式处理及锁定省略。在部分内嵌中,待包括于执行路径中的部分区包覆于TBEGIN/TEND中。TABORT可包括于其中以在侧向出口(side-exit)上回复状态。对于理论,诸如,以Java,对已取值指针的空值检查可藉由使用事务而延迟至循环边缘。若指针为空值,则事务可使用TABORT而安全地中止,TABORT包括于TBEGIN/TEND内。
以下提供描述具有事务性和非事务执行的锁定省略的示例码片段:
*功能:
* ADD_QEL
*
*输入:
*输出:
如本文所使用,互换地使用存储器、中央存储器、主存储器、存储器及主存储器,除非藉由使用隐含地或明确地另有提及。另外,虽然在一实施例中有效地延迟包括延迟将事务储存交付至主存储器直至选择的事务完成;但在另一实施例中,事务有效地延迟包括允许对存储器的事务更新,但保持旧值且在中止时使存储器恢复为旧值。
本领域的技术人员应了解,一个或多个方面可被体现为一系统、方法或计算机程序产品。因而,一个或多个方面可采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微码等等)或组合软件与硬件方面的实施例的形式,这些实施例在本文中皆可通称为“电路”、“模块”或“系统”。此外,一个或多个实施例可采取以一个或多个计算机可读介质体现的计算机程序产品的形式,该一个或多个计算机可读介质具有体现于其上的计算机可读程序码。
可利用一个或多个计算机可读介质的任何组合。计算机可读介质可为计算机可读储存介质。举例而言,计算机可读储存介质可为但不限于电子、磁性、光学、电磁、红外线或半导体系统、装置或器件,或前述各者的任何合适组合。计算机可读储存介质的更特定实例(非详尽清单)包括以下各者:具有一个或多个电线的电连接、携带型计算机磁片、硬碟、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便携型光碟只读存储器(CD-ROM)、光学储存器件、磁性储存器件或前述各者的任何合适组合。在此文件的上下文中,计算机可读储存介质可为可含有或储存供指令执行系统、装置或器件使用或结合指令执行系统、装置或器件而使用的程序的任何有形介质。
现在参看图15,在一实例中,计算机程序产品1500包括(例如)一个或多个非瞬态计算机可读储存介质1502以在其上储存计算机可读程序码构件或逻辑1504,以提供及促进一个或多个实施例。
可使用适当介质(包括但不限于无线、有线、光纤缆线、RF等等,或前述各者的任何合适组合)传输体现于计算机可读介质上的程序码。
可以一种或多种编程语言的任何组合来撰写用于进行一个或多个实施例的操作的计算机程序码,该一种或多种编程语言包括诸如Java、Smalltalk、C++或其类似者的面向对象的编程语言,及诸如“C”编程语言、汇编程序或相似编程语言的传统过程性编程语言。程序码可完全地在使用者计算机上执行、部分地在使用者计算机上执行、作为独立封装软件而执行、部分地在使用者计算机上执行且部分地在远端计算机上执行,或完全地在远端计算机或伺服器上执行。在后者情境中,远端计算机可经由任何类型的网络(包括局域网(LAN)或广域网(WAN))而连接至使用者的计算机,或可连接至外部计算机(例如,使用因特网服务提供者而经由因特网进行连接)。
本文参考方法、装置(系统)及计算机程序产品的流程图说明和/或方块图来描述一个或多个实施例。应理解,可藉由计算机程序指令来实施这些流程图说明和/或方块图的每一方块及这些流程图说明和/或方块图中的方块的组合。可将这些计算机程序指令提供至一般用途计算机、特殊用途计算机或其他可程序化数据处理装置的一处理器以产生一机器,使得经由该计算机或其他可程序化数据处理装置的该处理器而执行的指令产生用于实施在该或这些流程图和/或方块图方块中指定的功能/动作的构件。
亦可将这些计算机程序指令储存于一计算机可读介质中,其可指导计算机、其他可程序化数据处理装置或其他器件以特定方式起作用,使得储存于该计算机可读介质中的指令产生一制品,该制品包括实施在该或这些流程图和/或方块图方块中指定的功能/动作的指令。
亦可将这些计算机程序指令载入至计算机、其他可程序化数据处理装置或其他器件上,以使一系列操作步骤在该计算机、其他可程序化装置或其他器件上执行以产生一计算机实施程序,使得在该计算机或其他可程序化装置上执行的指令提供用于实施在该或这些流程图和/或方块图方块中指定的功能/动作的程序。
这些图中的流程图及方块图说明根据各种实施例的系统、方法及计算机程序产品的可能实施的架构、功能性及操作。就此而言,流程图或方块图中的每一方块可表示程序码的一模块、区段或部分,其包含用于实施指定的逻辑功能的一个或多个可执行指令。亦应注意,在一些替代性实施中,区块中所提到的功能可不以诸图中所提到的次序而发生。举例而言,取决于所涉及的功能性,连续展示的两个区块实际上可实质上并行地执行,或这些区块有时可以相反次序执行。亦应注意,可藉由执行指定的功能或动作的基于特殊用途硬件的系统或特殊用途硬件及计算机指令的组合来实施方块图和/或流程图说明的每一方块及方块图和/或流程图说明中的方块的组合。
除了以上内容以外,一个或多个方面亦可由提供客户环境的管理的服务提供者提供、部署、管理、服务等等。举例而言,服务提供者可为一个或多个客户建立、维持、支援等等执行一个或多个方面的计算机程序码和/或计算机基础结构。作为回报,作为实例,服务提供者可在订用和/或收费协议下向客户收取付款。或者或另外,服务提供者可根据广告内容至一个或多个第三方的销售而收取付款。
在一实施例中,可部署用于执行一个或多个实施例的应用程序。作为一实例,应用程序的部署包含提供可操作以执行一个或多个实施例的计算机基础结构。
作为一另外方面,可部署一计算基础结构,其包含将计算机可读程序码整合至计算系统中,其中与该计算系统组合的程序码能够执行一个或多个实施例。
作为又一方面,可提供用于整合计算基础结构的程序,其包含将计算机可读程序码整合至计算机系统中。计算机系统包含计算机可读介质,其中计算机介质包含一个或多个实施例。与该计算机系统组合的程序码能够执行一个或多个实施例。
尽管上文描述各种实施例,但这些实施例仅为实例。举例而言,其他架构的计算环境可用以并入及使用一个或多个实施例。另外,可使用不同指令、指令格式、指令字段和/或指令值。此外,可提供/使用不同、其他和/或额外限制/局限。许多变化是可能的。
另外,其他计算环境类型可有益且被使用。作为一实例,适合于储存和/或执行程序码的数据处理系统是可用的,其包括直接地或经由系统总线间接地耦接至存储器元件的至少两个处理器。存储器元件包括(例如)在程序码的实际执行期间使用的本地存储器、大容量存储器及高速缓存,该高速缓存提供至少某一程序码的临时储存以便减少在执行期间必须自大容量存储器撷取程序码的次数。
输入/输出或I/O器件(包括但不限于键盘、显示器、指针器件、DASD、磁带、CD、DVD、随身碟(thumb drive)及其他存储器介质等等)可直接地或经由介入I/O控制器耦接至该系统。网络适配器亦可耦接至系统以使数据处理系统能够经由介入的私用或公用网络耦接至其他数据处理系统或远端打印机或储存器件。调制解调器、缆线调制解调器及乙太网卡仅为可用网络适配器类型中的少数几种。
参看图16,描绘实施一个或多个实施例的主机计算机系统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个连续字节的群组。当储存地址指明半字组、字组、双字组、四倍字组及八倍字组时,地址的二进位表示分别含有一个、两个、三个、四个或五个最右侧零位。指令将处于二字节整体边界上。大多数指令的储存操作数并不具有边界对准要求。
在实施用于指令及数据操作数的分离高速缓存的器件上,若将程序储存至供随后提取指令的高速缓存行中,则可经历显著延迟,而不管储存是否变更随后被提取的指令。
在一实例中,实施例可由软件(有时指代已授权内码、固件、微码、毫码、皮码及其类似者,前述各者中任一者将与一个或多个实施例一致)实践。参看图16,体现一个或多个方面的软件程序码可由主机系统5000的处理器5001自诸如CD-ROM驱动器、磁带机或硬盘驱动器的长期储存介质器件5011存取。软件程序码可体现于多种已知介质中任一者上以供数据处理系统使用,诸如,磁片、硬盘驱动器或CD-ROM。程序码可散布于此类介质上,或可自计算机存储器5002散布至使用者或经由网络5010自一计算机系统的存储器散布至其他计算机系统以供此类其他系统的使用者使用。
软件程序码包括控制各种计算机组件与一个或多个应用程序的功能及互动的操作系统。程序码正常地自储存介质器件5011传呼至程序码可用于由处理器5001进行处理的相对较高速度计算机存储器5002。用于将软件程序码体现于存储器中、实体介质上和/或经由网络散布软件码的技术及方法是熟知的,且在本文中将不予以进一步论述。程序码在建立及储存于有形介质(包括但不限于电子存储器模块(RAM)、快闪存储器、光碟(CD)、DVD、磁带及其类似者)上常常常被称作“计算机程序产品”。计算机程序产品介质通常可由较佳地在计算机系统中的处理电路读取以供处理电路执行。
图17说明可实践一个或多个实施例的代表性工作站或伺服器硬件系统。图17的系统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可为具有另一计算机的用户端/伺服器配置中的用户端等等。在此项技术中知晓所有这些配置以及适当通信硬件及软件。
图18说明可实践一个或多个实施例的数据处理网络5040。数据处理网络5040可包括多个个别网络,诸如,无线网络及有线网络,这些网络中每一者可包括多个个别工作站5041、5042、5043、5044。另外,本领域的技术人员应了解,可包括一个或多个LAN,其中LAN可包含耦接至主机处理器的多个智能工作站。
仍参看图18,网络亦可包括大型主机计算机或伺服器,诸如,网关计算机(用户端伺服器5046)或应用程序伺服器(可存取数据储存库且亦可直接地自工作站5045进行存取的远端伺服器5048)。网关计算机5046充当至每一个别网络中的进入点。当将一个网络连接协定连接至另一网络连接协定时需要网关。网关5046可较佳地凭借通信链路耦接至另一网络(例如,因特网5047)。网关5046亦可使用通信链路直接地耦接至一个或多个工作站5041、5042、5043、5044。网关计算机可利用可购自国际商业机器公司的IBM eServer System z伺服器予以实施。
同时参看图17及图18,可体现一个或多个方面的软件编程码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高速缓存)。
参看图19,描绘用于处理器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以用于执行指令的功能。参看图20A,执行单元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千字节区块。
参看图20B,用于执行分支指令的分支指令信息通常发送至分支单元5058,分支单元5058常常使用诸如分支历史表5082的分支预测演算法以在其他条件操作完成之前预测分支的结果。当前分支指令的目标将被提取,且在条件操作完成之前被理论式地执行。当完成条件操作时,理论式执行的分支指令基于条件操作的条件及所理论结果而被完成或舍弃。典型分支指令可测试条件码,且在条件码满足分支指令的分支要求时分支至目标地址,目标地址可基于(例如)包括在寄存器字段或指令的立即字段中发现的数字的若干数字予以计算。分支单元5058可使用ALU 5074,ALU 5074具有多个输入寄存器电路5075、5076、5077及输出寄存器电路5080。举例而言,分支单元5058可与一般寄存器5059、解码分派单元5056或其他电路5073通信5081。
举例而言,指令群组的执行可由于多种原因而中断,这些原因包括由操作系统起始的上下文切换、造成上下文切换的程序异常或错误、造成上下文切换的I/O中断信号,或多个程序的多线程活动(在多线程化环境中)。较佳地,上下文切换动作储存关于当前执行程序的状态信息,且接着载入关于正被调用的另一程序的状态信息。举例而言,状态信息可储存于硬件寄存器中或存储器中。状态信息较佳地包含指向待执行的下一指令的程序计数器值、条件码、存储器转译信息,及架构化寄存器内容。上下文切换活动可由硬件电路、应用程序、操作系统程序或固件码(微码、皮码或已授权内码(LIC))单独地或组合地演练。
处理器根据指令定义方法而存取操作数。指令可使用指令的部分的值来提供立即操作数,可提供明确地指向一般用途寄存器或特殊用途寄存器(例如,浮点寄存器)的一个或多个寄存器字段。指令可利用由操作码字段识别的所暗示寄存器作为操作数。指令可将存储器位置用于操作数。如由z/Architecture长位移设施所例示,操作数的存储器位置可由寄存器、立即字段或寄存器与立即字段的组合提供,其中指令定义基底寄存器、索引寄存器及立即字段(位移字段),前述三者加在一起以提供(例如)操作数在存储器中的地址。本文中的位置通常暗示主存储器(主存储器)中的位置,除非另有指示。
参看图20C,处理器使用载入/储存单元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(图19)向处理器提供用于附接至包括磁带、碟片、打印机、显示器及网络的周边器件的构件。I/O单元常常由软件驱动程序呈现给计算机程序。在诸如可购自的System z的大型主机中,通道适配器及开放系统适配器为在操作系统与周边器件之间提供通信的大型主机的I/O单元。
另外,其他计算环境类型可受益于一个或多个方面。作为一实例,环境可包括模拟器(例如,软件或其他模拟机制),其中特定架构(包括(例如)指令执行、架构化功能(诸如,地址转译)及架构化寄存器)或其子集被模拟(例如,在具有处理器及存储器的原生计算机系统上)。在此类环境中,模拟器的一个或多个模拟功能可实施一个或多个实施例,即使执行该模拟器的计算机可具有不同于正被模拟的能力的架构亦如此。作为一实例,在模拟模式下,解码正被模拟的特定指令或操作,且建置适当模拟功能以实施个别指令或操作。
在一模拟环境中,主机计算机包括(例如):存储器,其储存指令及数据;指令提取单元,其自存储器提取指令,且视情况提供用于已提取指令的本地缓冲;指令解码单元,其接收已提取指令且判定已被提取的指令类型;及指令执行单元,其执行这些指令。执行可包括将数据自存储器载入至寄存器中;将数据自寄存器储存回至存储器;或执行某一算术或逻辑运算类型,如由解码单元所判定。在一实例中,以软件来实施每一单元。举例而言,由这些单元执行的操作被实施为模拟器软件内的一个或多个子例程。
更特定而言,在大型主机中,架构化机器指令常常凭借编译器应用程序供程序员(通常现今为“C”程序员)使用。储存于储存介质中的这些指令可原生地在z/Architecture伺服器中或者在执行其他架构的机器中执行。指令可在现有及未来大型主机伺服器中且在的其他机器(例如,PowerSystem伺服器及System x伺服器)上进行模拟。指令可在使用由AMD及其他制造商制造的硬件的各种各样的机器上执行Linux的机器中执行。除了在依据z/Architecture的该硬件上的执行以外,亦可使用Linux以及数个使用由Hercules、UMX或FSI(Fundamental Software公司)进行的模拟的机器,在这些机器处执行通常处于模拟模式。在模拟模式下,模拟软件由原生处理器执行以对模拟处理器的架构进行模拟。
原生处理器通常执行模拟软件,该模拟软件包含固件或原生操作系统以执行模拟处理器的模拟。模拟软件负责提取及执行模拟处理器架构的指令。模拟软件维持模拟程序计数器以追踪指令边界。模拟软件一次可提取一个或多个模拟机器指令,且将该一个或多个模拟机器指令转换成原生机器指令的对应群组以供原生处理器执行。这些已转换指令可被高速缓存,使得可实现较快转换。然而,模拟软件仍维持模拟处理器架构的架构规则以便确信针对模拟处理器撰写的操作系统及应用程序正确地操作。此外,模拟软件将提供由模拟处理器结构识别的资源,使得经设计成在模拟处理器上执行的操作系统或应用程序可在具有模拟软件的原生处理器上执行,这些资源包括但不限于控制寄存器、一般用途寄存器、浮点寄存器、包括(例如)区段表及页表的动态地址转译函数、中断机制、上下文切换机制、当日时间(TOD)时钟及至I/O子系统的架构化接口。
解码正被模拟的指定指令,且呼叫子例程以执行个别指令的功能。对模拟处理器的功能进行模拟的模拟软件功能以(例如)以下各者予以实施:“C”子例程或驱动程序,或提供用于特定硬件的驱动程序的某一其他方法,此在理解较佳实施例的描述之后将在本领域技术人员的技艺内。包括但不限于以下各者的各种软件及硬件模拟专利说明多种已知方法来达成针对不同机器架构化的指令格式的模拟以用于可用于本领域技术人员的目标机器:Beausoleil等人的名为“Multiprocessor for Hardware Emulation”的美国专利证书第5,551,013号;及Scalzi等人的名为“Preprocessing of Stored Target Routines forEmulating Incompatible Instructions on a Target Processor”的美国专利证书第6,009,261号;及Davidian等人的名为“Decoding Guest Instruction to 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号,前述专利证书中每一个的全文据此以引用方式并入本文中;及许多其他专利证书。
在图21中,提供模拟主机计算机系统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。
本文所使用的术语仅出于描述特定实施例的目的,且并不意欲为限制性的。如本文所使用,除非上下文另有清楚指示,否则单数形式“一”及“该”意欲亦包括复数形式。应进一步理解,术语“包含”在用于本说明书中时指定存在所叙述特征、整数、步骤、操作、元件和/或组件,但并不排除存在或添加一种或多种其他特征、整数、步骤、操作、元件、组件和/或其群组。
以下申请专利范围中的所有构件或步骤附加功能元件的对应结构、材料、动作及等效者(若有)意欲包括用于结合如特定主张的其他所主张元件执行功能的任何结构、材料或动作。出于说明及描述的目的已呈现一或多个实施例的描述,但该描述并不意欲为详尽的或将本发明限于所揭示的形式。许多修改及变化对于本领域技术人员将显而易见。选择及描述实施例以便最佳地解释各种方面及实践应用,且使其他本领域技术人员能够理解具有如适合于所涵盖的特定用途的各种修改的各种实施例。
权利要求书(按照条约第19条的修改)
1.一种用于控制计算环境中的事务的执行的计算机程序产品,所述计算机程序产品包括:
计算机可读存储介质,可由处理电路读取并且存储用于由所述处理电路执行的指令,以用于执行一方法,所述方法包括:
在计算环境中起始事务,所述事务有效地延迟将事务存储交付至主存储器,直到选择的事务完成为止;以及
由处理器确定是否将要中止所述事务,所述确定采用所述处理器所使用的控制寄存器的一个或多个控制,所述一个或多个控制用于指示是否将要有选择地中止事务,以用于测试目的,所述一个或多个控制是用于有选择地或随机地选择待中止的特定事务以允许所述特定事务驱动其中止处理程序以用于测试目的的任务特定诊断控制,其中,有选择地采用不与指令执行直接同步的计数器或定时器以选择所述特定事务的指令以中止,并且其中,所述任务特定诊断控制处于与任务的分派一致地切换的所述控制寄存器中,所述任务包括一个或多个事务并且与用户关联,所述一个或多个事务包括基于所述任务特定诊断控制来进行用于中止的确定的所述事务。
2.如权利要求1所述的计算机程序产品,其中,所述控制寄存器包括事务诊断控制,其中,所述事务诊断控制的第一值指示基于所述事务诊断控制将不中止事务,所述事务诊断控制的第二值指示基于所述事务诊断控制将要中止每个事务,所述事务诊断控制的第三值指示将要有选择地中止事务。
3.如权利要求2所述的计算机程序产品,其中,所述控制寄存器还包括事务诊断范围,用于指示是否将要应用所述事务诊断控制。
4.如权利要求3所述的计算机程序产品,其中,所述事务诊断范围的第一值指示基于所述处理器处于问题状态或监督状态下将要应用所述事务诊断控制,所述事务诊断范围的第二值指示专门对于所述处理器处于所述问题状态下而应用所述事务诊断控制。
5.如权利要求1所述的计算机程序产品,其中,所述确定包括:基于指示将要有选择地中止事务的一个或多个控制,确定是否将要选择所述事务用于中止,并且其中,所述方法还包括:基于确定指示将要选择所述事务用于中止,中止所述事务。
6.如权利要求5所述的计算机程序产品,其中,所述确定是否将要选择所述事务用于中止包括:
检查所述控制寄存器的事务诊断控制的值,以及
基于所述值指示基于所述事务诊断控制将要中止每个事务,选择所述事务用于中止;以及
基于所述值指示将要有选择地中止事务,所述处理器进一步基于选择控制而确定是否将要选择所述事务用于中止。
7.如权利要求5所述的计算机程序产品,其中,所述中止包括:在所述事务内的所选择的指令处中止所述事务。
8.如权利要求5所述的计算机程序产品,其中,所述中止还包括:执行中止处理程序以提供与所述中止关联的测试。
9.如权利要求1所述的计算机程序产品,其中,所述一个或多个控制是任务特定的,在于:所述一个或多个控制用于特定任务,并且是基于用户所提供的信息而设置的,所述特定任务包括所述事务。
10.一种用于控制计算环境中的事务的执行的计算机系统,所述计算机系统包括:
存储器;以及
处理器,与所述存储器进行通信,其中,所述计算机系统被配置为执行一方法,所述方法包括:
在计算环境中起始事务,所述事务有效地延迟将事务存储交付至主存储器,直到所选择的事务完成为止;以及
由处理器确定是否将要中止所述事务,所述确定采用所述处理器所使用的控制寄存器的一个或多个控制,所述一个或多个控制用于指示是否将要有选择地中止事务,以用于测试目的,所述一个或多个控制是用于有选择地或随机地选择待中止的特定事务以允许所述特定事务驱动其中止处理程序以用于测试目的的任务特定诊断控制,其中,有选择地采用不与指令执行直接同步的计数器或定时器以选择所述特定事务的指令以中止,并且其中,所述任务特定诊断控制处于与任务的分派一致地切换的所述控制寄存器中,所述任务包括一个或多个事务并且与用户关联,所述一个或多个事务包括基于所述任务特定诊断控制来进行用于中止的确定的所述事务。
11.如权利要求10所述的计算机系统,其中,所述控制寄存器包括事务诊断控制,其中,所述事务诊断控制的第一值指示基于所述事务诊断控制将不中止事务,所述事务诊断控制的第二值指示基于所述事务诊断控制将要中止每个事务,所述事务诊断控制的第三值指示将要有选择地中止事务。
12.如权利要求11所述的计算机系统,其中,所述控制寄存器还包括事务诊断范围,用于指示是否将要应用所述事务诊断控制。
13.如权利要求12所述的计算机系统,其中,所述事务诊断范围的第一值指示基于所述处理器处于问题状态或监督状态下将要应用所述事务诊断控制,所述事务诊断范围的第二值指示专门对于所述处理器处于所述问题状态下而应用所述事务诊断控制。
14.如权利要求10所述的计算机系统,其中,所述确定包括:基于指示将要有选择地中止事务的一个或多个控制,确定是否将要选择所述事务用于中止,并且其中,所述方法还包括:基于确定指示将要选择所述事务用于中止,中止所述事务。
15.如权利要求14所述的计算机系统,其中,所述确定是否将要选择所述事务用于中止包括:
检查所述控制寄存器的事务诊断控制的值,以及
基于所述值指示基于所述事务诊断控制将要中止每个事务,选择所述事务用于中止;以及
基于所述值指示将要有选择地中止事务,所述处理器进一步基于选择控制而确定是否将要选择所述事务用于中止。
16.如权利要求14所述的计算机系统,其中,所述中止还包括:执行中止处理程序以提供与所述中止关联的测试。
17.如权利要求10所述的计算机系统,其中,所述一个或多个控制是任务特定的,在于:所述一个或多个控制用于特定任务,并且是基于用户所提供的信息而设置的,所述特定任务包括所述事务。
18.一种用于控制计算环境中的事务的执行的方法,所述方法包括:
在计算环境中起始事务,所述事务有效地延迟将事务存储交付至主存储器,直到选择的事务完成为止;以及
由处理器确定是否将要中止所述事务,所述确定采用所述处理器所使用的控制寄存器的一个或多个控制,所述一个或多个控制用于指示是否将要有选择地中止事务,以用于测试目的,所述一个或多个控制是用于有选择地或随机地选择待中止的特定事务以允许所述特定事务驱动其中止处理程序以用于测试目的的任务特定诊断控制,其中,有选择地采用不与指令执行直接同步的计数器或定时器以选择所述特定事务的指令以中止,并且其中,所述任务特定诊断控制处于与任务的分派一致地切换的所述控制寄存器中,所述任务包括一个或多个事务并且与用户关联,所述一个或多个事务包括基于所述任务特定诊断控制来进行用于中止的确定的所述事务。
19.如权利要求18所述的方法,其中,所述控制寄存器包括事务诊断控制,其中,所述事务诊断控制的第一值指示基于所述事务诊断控制将不中止事务,所述事务诊断控制的第二值指示基于所述事务诊断控制将要中止每个事务,所述事务诊断控制的第三值指示将要有选择地中止事务。
20.如权利要求19所述的方法,其中,所述控制寄存器还包括:事务诊断范围,用于指示是否将要应用所述事务诊断控制,并且其中,所述事务诊断范围的第一值指示将要基于所述处理器处于问题状态或监督状态下而应用所述事务诊断控制,所述事务诊断范围的第二值指示将要专门对于所述处理器处于所述问题状态下而应用所述事务诊断控制。
Claims (20)
1.一种用于控制计算环境中的事务的执行的计算机程序产品,所述计算机程序产品包括:
计算机可读存储介质,可由处理电路读取并且存储用于由所述处理电路执行的指令,以用于执行一方法,所述方法包括:
在计算环境中起始事务,所述事务有效地延迟将事务存储交付至主存储器,直到选择的事务完成为止;以及
由处理器确定是否将要中止所述事务,所述确定采用所述处理器所使用的控制寄存器的一个或多个控制,所述一个或多个控制用于指示是否将要有选择地中止事务。
2.如权利要求1所述的计算机程序产品,其中,所述控制寄存器包括事务诊断控制,其中,所述事务诊断控制的第一值指示基于所述事务诊断控制将不中止事务,所述事务诊断控制的第二值指示基于所述事务诊断控制将要中止每个事务,所述事务诊断控制的第三值指示将要有选择地中止事务。
3.如权利要求2所述的计算机程序产品,其中,所述控制寄存器还包括事务诊断范围,用于指示是否将要应用所述事务诊断控制。
4.如权利要求3所述的计算机程序产品,其中,所述事务诊断范围的第一值指示基于所述处理器处于问题状态或监督状态下将要应用所述事务诊断控制,所述事务诊断范围的第二值指示专门对于所述处理器处于所述问题状态下而应用所述事务诊断控制。
5.如权利要求1所述的计算机程序产品,其中,所述确定包括:基于指示将要有选择地中止事务的一个或多个控制,确定是否将要选择所述事务用于中止,并且其中,所述方法还包括:基于确定指示将要选择所述事务用于中止,中止所述事务。
6.如权利要求5所述的计算机程序产品,其中,所述确定是否将要选择所述事务用于中止包括:
检查所述控制寄存器的事务诊断控制的值,以及
基于所述值指示基于所述事务诊断控制将要中止每个事务,选择所述事务用于中止;以及
基于所述值指示将要有选择地中止事务,所述处理器进一步基于选择控制而确定是否将要选择所述事务用于中止。
7.如权利要求5所述的计算机程序产品,其中,所述中止包括:在所述事务内的所选择的指令处中止所述事务。
8.如权利要求5所述的计算机程序产品,其中,所述中止还包括:执行中止处理程序以提供与所述中止关联的测试。
9.如权利要求1所述的计算机程序产品,其中,所述一个或多个控制是任务特定的,在于:所述一个或多个控制用于特定任务,并且是基于用户所提供的信息而设置的,所述特定任务包括所述事务。
10.一种用于控制计算环境中的事务的执行的计算机系统,所述计算机系统包括:
存储器;以及
处理器,与所述存储器进行通信,其中,所述计算机系统被配置为执行一方法,所述方法包括:
在计算环境中起始事务,所述事务有效地延迟将事务存储交付至主存储器,直到所选择的事务完成为止;以及
由处理器确定是否将要中止所述事务,所述确定采用所述处理器所使用的控制寄存器的一个或多个控制,所述一个或多个控制用于指示是否将要有选择地中止事务。
11.如权利要求10所述的计算机系统,其中,所述控制寄存器包括事务诊断控制,其中,所述事务诊断控制的第一值指示基于所述事务诊断控制将不中止事务,所述事务诊断控制的第二值指示基于所述事务诊断控制将要中止每个事务,所述事务诊断控制的第三值指示将要有选择地中止事务。
12.如权利要求11所述的计算机系统,其中,所述控制寄存器还包括事务诊断范围,用于指示是否将要应用所述事务诊断控制。
13.如权利要求12所述的计算机系统,其中,所述事务诊断范围的第一值指示基于所述处理器处于问题状态或监督状态下将要应用所述事务诊断控制,所述事务诊断范围的第二值指示专门对于所述处理器处于所述问题状态下而应用所述事务诊断控制。
14.如权利要求10所述的计算机系统,其中,所述确定包括:基于指示将要有选择地中止事务的一个或多个控制,确定是否将要选择所述事务用于中止,并且其中,所述方法还包括:基于确定指示将要选择所述事务用于中止,中止所述事务。
15.如权利要求14所述的计算机系统,其中,所述确定是否将要选择所述事务用于中止包括:
检查所述控制寄存器的事务诊断控制的值,以及
基于所述值指示基于所述事务诊断控制将要中止每个事务,选择所述事务用于中止;以及
基于所述值指示将要有选择地中止事务,所述处理器进一步基于选择控制而确定是否将要选择所述事务用于中止。
16.如权利要求14所述的计算机系统,其中,所述中止还包括:执行中止处理程序以提供与所述中止关联的测试。
17.如权利要求10所述的计算机系统,其中,所述一个或多个控制是任务特定的,在于:所述一个或多个控制用于特定任务,并且是基于用户所提供的信息而设置的,所述特定任务包括所述事务。
18.一种用于控制计算环境中的事务的执行的方法,所述方法包括:
在计算环境中起始事务,所述事务有效地延迟将事务存储交付至主存储器,直到选择的事务完成为止;以及
由处理器确定是否将要中止所述事务,所述确定采用所述处理器所使用的控制寄存器的一个或多个控制,所述一个或多个控制用于指示是否将要有选择地中止事务。
19.如权利要求18所述的方法,其中,所述控制寄存器包括事务诊断控制,其中,所述事务诊断控制的第一值指示基于所述事务诊断控制将不中止事务,所述事务诊断控制的第二值指示基于所述事务诊断控制将要中止每个事务,所述事务诊断控制的第三值指示将要有选择地中止事务。
20.如权利要求19所述的方法,其中,所述控制寄存器还包括:事务诊断范围,用于指示是否将要应用所述事务诊断控制,并且其中,所述事务诊断范围的第一值指示将要基于所述处理器处于问题状态或监督状态下而应用所述事务诊断控制,所述事务诊断范围的第二值指示将要专门对于所述处理器处于所述问题状态下而应用所述事务诊断控制。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/524,796 | 2012-06-15 | ||
US13/524,796 US9384004B2 (en) | 2012-06-15 | 2012-06-15 | Randomized testing within transactional execution |
PCT/EP2013/059205 WO2013185978A1 (en) | 2012-06-15 | 2013-05-03 | Randomized testing within transactional execution |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104350474A true CN104350474A (zh) | 2015-02-11 |
CN104350474B CN104350474B (zh) | 2016-12-28 |
Family
ID=48483028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380028460.9A Active CN104350474B (zh) | 2012-06-15 | 2013-05-03 | 用于控制计算环境中的事务的执行的装置、系统和方法 |
Country Status (9)
Country | Link |
---|---|
US (4) | US9384004B2 (zh) |
EP (1) | EP2862079B1 (zh) |
JP (1) | JP6168537B2 (zh) |
CN (1) | CN104350474B (zh) |
AU (1) | AU2013276800B2 (zh) |
BR (1) | BR112014031435B1 (zh) |
CA (1) | CA2928277C (zh) |
HK (1) | HK1207445A1 (zh) |
WO (1) | WO2013185978A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
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 |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
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 |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9384148B2 (en) * | 2013-12-17 | 2016-07-05 | Intel Corporation | Detection of unauthorized memory modification and access using transactional memory |
US9304935B2 (en) | 2014-01-24 | 2016-04-05 | International Business Machines Corporation | Enhancing reliability of transaction execution by using transaction digests |
US9465746B2 (en) * | 2014-01-24 | 2016-10-11 | International Business Machines Corporation | Diagnostics for transactional execution errors in reliable transactions |
US20160179548A1 (en) * | 2014-12-22 | 2016-06-23 | Intel Corporation | Instruction and logic to perform an inverse centrifuge operation |
US10218562B2 (en) | 2016-11-09 | 2019-02-26 | Bank Of America Corporation | Parsing and optimizing runtime infrastructure alerts |
US10831509B2 (en) | 2017-02-23 | 2020-11-10 | Ab Initio Technology Llc | Dynamic execution of parameterized applications for the processing of keyed network data streams |
US11947978B2 (en) | 2017-02-23 | 2024-04-02 | Ab Initio Technology Llc | Dynamic execution of parameterized applications for the processing of keyed network data streams |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0470322A1 (en) * | 1990-08-07 | 1992-02-12 | BULL HN INFORMATION SYSTEMS ITALIA S.p.A. | Message-based debugging method |
US20070162246A1 (en) * | 2006-01-06 | 2007-07-12 | Roland Barcia | Exception thrower |
US20110145498A1 (en) * | 2009-12-15 | 2011-06-16 | Microsoft Corporation | Instrumentation of hardware assisted transactional memory system |
Family Cites Families (282)
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 |
US4764861A (en) | 1984-02-08 | 1988-08-16 | Nec Corporation | Instruction fpefetching device with prediction of a branch destination for each branch count instruction |
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 |
US5163140A (en) | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
JPH0437927A (ja) | 1990-06-01 | 1992-02-07 | Sony Corp | プロセッサの処理方法 |
US5283873A (en) | 1990-06-29 | 1994-02-01 | Digital Equipment Corporation | Next line prediction apparatus for a pipelined computed system |
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 |
US5423011A (en) | 1992-06-11 | 1995-06-06 | International Business Machines Corporation | Apparatus for initializing branch prediction information |
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 |
US7301541B2 (en) | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
WO1997013201A1 (en) | 1995-10-06 | 1997-04-10 | 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 |
JPH10333908A (ja) | 1997-05-30 | 1998-12-18 | Mitsubishi Electric Corp | 分岐予測方法 |
US5937199A (en) | 1997-06-03 | 1999-08-10 | International Business Machines Corporation | User programmable interrupt mask with timeout for enhanced resource locking efficiency |
US6073230A (en) | 1997-06-11 | 2000-06-06 | Advanced Micro Devices, Inc. | Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches |
US6772419B1 (en) | 1997-09-12 | 2004-08-03 | Hitachi, Ltd. | Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS |
JP3546678B2 (ja) | 1997-09-12 | 2004-07-28 | 株式会社日立製作所 | マルチos構成方法 |
US6094730A (en) * | 1997-10-27 | 2000-07-25 | Hewlett-Packard Company | Hardware-assisted firmware tracing method and apparatus |
US7076784B1 (en) | 1997-10-28 | 2006-07-11 | Microsoft Corporation | Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment |
US6000029A (en) | 1997-11-03 | 1999-12-07 | Motorola, Inc. | Method and apparatus for affecting subsequent instruction processing in a data processor |
US5938778A (en) | 1997-11-10 | 1999-08-17 | International Business Machines Corporation | System and method for tracing instructions in an information handling system without changing the system source code |
KR100246537B1 (ko) | 1997-11-25 | 2000-03-15 | 정선종 | 코드분할 다중접속 시스템에서 파일럿 심벌을 이용한 동기식이중 채널 큐피에스케이 송수신기의 구조 |
SE9704476L (sv) | 1997-12-02 | 1999-06-23 | Ericsson Telefon Ab L M | Utökad instruktionsavkodning |
US6009261A (en) | 1997-12-16 | 1999-12-28 | International Business Machines Corporation | Preprocessing of stored target routines for emulating incompatible instructions on a target processor |
US6519656B2 (en) | 1998-03-17 | 2003-02-11 | Matsushita Electric Industrial Co., Ltd. | Method for data transmission with a list of auxiliary information by appending a corresponding ID codes with respective auxiliary information |
US6202067B1 (en) | 1998-04-07 | 2001-03-13 | Lucent Technologies, Inc. | Method and apparatus for correct and complete transactions in a fault tolerant distributed database system |
US6119129A (en) | 1998-05-14 | 2000-09-12 | Sun Microsystems, Inc. | Multi-threaded journaling in a configuration database |
US6308255B1 (en) | 1998-05-26 | 2001-10-23 | Advanced Micro Devices, Inc. | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system |
EP0992916A1 (en) | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Digital signal processor |
EP0992907B1 (en) | 1998-10-06 | 2005-09-28 | Texas Instruments Inc. | Trace fifo management |
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 |
JP3504519B2 (ja) | 1998-12-04 | 2004-03-08 | 富士通株式会社 | 取引支援システム及びこのシステムに接続される情報端末装置 |
US7065633B1 (en) | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
US6732307B1 (en) | 1999-10-01 | 2004-05-04 | Hitachi, Ltd. | Apparatus and method for storing trace information |
US7761857B1 (en) | 1999-10-13 | 2010-07-20 | Robert Bedichek | Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts |
US6604188B1 (en) | 1999-10-20 | 2003-08-05 | Transmeta Corporation | Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction |
US6738892B1 (en) | 1999-10-20 | 2004-05-18 | Transmeta Corporation | Use of enable bits to control execution of selected instructions |
JP3776653B2 (ja) | 1999-11-24 | 2006-05-17 | 富士通株式会社 | 演算処理装置 |
US6601149B1 (en) | 1999-12-14 | 2003-07-29 | International Business Machines Corporation | Memory transaction monitoring system and user interface |
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 |
US6581138B2 (en) | 2000-02-29 | 2003-06-17 | Stmicroelectronics, Inc. | Branch-prediction driven instruction prefetch |
US6665863B1 (en) | 2000-05-31 | 2003-12-16 | Microsoft Corporation | Data referencing within a database graph |
US6826682B1 (en) | 2000-06-26 | 2004-11-30 | Transmeta Corporation | Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state |
AU2001283163A1 (en) | 2000-08-04 | 2002-02-18 | Carr Scott Software Incorporated | Automatic transaction management |
SG99941A1 (en) | 2000-08-30 | 2003-11-27 | Ibm | Transaction support on logical disks |
JP3760748B2 (ja) | 2000-09-20 | 2006-03-29 | 株式会社日立製作所 | 密閉形電動圧縮機 |
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 |
US7165168B2 (en) | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
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 |
US6874081B2 (en) | 2001-05-17 | 2005-03-29 | Broadcom Corporation | Selection of link and fall-through address using a bit in a branch address for the selection |
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 |
US6898699B2 (en) | 2001-12-21 | 2005-05-24 | Intel Corporation | Return address stack including speculative return address buffer with back pointers |
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 |
US20040049666A1 (en) | 2002-09-11 | 2004-03-11 | Annavaram Murali M. | Method and apparatus for variable pop hardware return address stack |
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 |
US7149862B2 (en) | 2002-11-18 | 2006-12-12 | Arm Limited | Access control in a data processing apparatus |
US8332464B2 (en) | 2002-12-13 | 2012-12-11 | Anxebusiness Corp. | System and method for remote network access |
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 |
US6862664B2 (en) | 2003-02-13 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for avoiding locks by speculatively executing critical sections |
US6938130B2 (en) | 2003-02-13 | 2005-08-30 | Sun Microsystems Inc. | Method and apparatus for delaying interfering accesses from other threads during transactional program execution |
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 |
US7143273B2 (en) | 2003-03-31 | 2006-11-28 | Intel Corporation | Method and apparatus for dynamic branch prediction utilizing multiple stew algorithms for indexing a global history |
US7398359B1 (en) | 2003-04-30 | 2008-07-08 | Silicon Graphics, Inc. | System and method for performing memory operations in a computing system |
US7480785B2 (en) | 2003-05-23 | 2009-01-20 | Nippon Telegraph And Telephone Corporation | Parallel processing device and parallel processing method |
US7801851B2 (en) | 2003-06-30 | 2010-09-21 | Gravic, Inc. | Method for ensuring referential integrity in multi-threaded replication engines |
US7836450B2 (en) | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7197586B2 (en) | 2004-01-14 | 2007-03-27 | International Business Machines Corporation | Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler |
CN1947144A (zh) | 2004-02-24 | 2007-04-11 | 第一数据公司 | 事务处理的系统和方法 |
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 |
US7401202B1 (en) | 2004-09-14 | 2008-07-15 | Azul Systems, Inc. | Memory addressing |
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 |
GB0509738D0 (en) | 2005-05-12 | 2005-06-22 | Cambridge Consultants | Processor and interface |
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 |
US7702825B2 (en) | 2005-06-29 | 2010-04-20 | Intel Corporation | Enhancements to universal serial bus (USB) suspend and resume operations |
US20070005828A1 (en) | 2005-06-30 | 2007-01-04 | Nimrod Diamant | Interrupts support for the KCS manageability interface |
CN1713164A (zh) | 2005-07-21 | 2005-12-28 | 复旦大学 | 可自主处理多事务传输要求的dma控制器及数据传输方法 |
WO2007015925A1 (en) | 2005-08-01 | 2007-02-08 | Sun Microsystems, Inc. | Avoiding locks by transactionally executing critical sections |
US20070061555A1 (en) | 2005-09-15 | 2007-03-15 | St Clair Michael | Call return tracking technique |
US7870369B1 (en) | 2005-09-28 | 2011-01-11 | Oracle America, Inc. | Abort prioritization in a trace-based processor |
CN100365604C (zh) | 2005-12-02 | 2008-01-30 | 北京中星微电子有限公司 | 一种中断控制处理装置和方法 |
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 |
US7870545B2 (en) | 2005-12-16 | 2011-01-11 | Intel Corporation | Protecting shared variables in a software transactional memory system |
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 |
US20070186056A1 (en) | 2006-02-07 | 2007-08-09 | Bratin Saha | Hardware acceleration for a software transactional memory system |
US7617383B2 (en) | 2006-02-16 | 2009-11-10 | Vns Portfolio Llc | Circular register arrays of a computer |
JP4670676B2 (ja) | 2006-02-17 | 2011-04-13 | 日本電気株式会社 | スイッチ及びネットワークブリッジ装置 |
US20070198979A1 (en) | 2006-02-22 | 2007-08-23 | David Dice | Methods and apparatus to implement parallel transactions |
US7533798B2 (en) | 2006-02-23 | 2009-05-19 | Rockwell Automation Technologies, Inc. | Data acquisition and processing system for risk assessment |
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 |
US9009452B2 (en) | 2007-05-14 | 2015-04-14 | International Business Machines Corporation | Computing system with transactional memory using millicode assists |
US8117403B2 (en) | 2007-05-14 | 2012-02-14 | International Business Machines Corporation | Transactional memory system which employs thread assists using address history tables |
US7814378B2 (en) * | 2007-05-18 | 2010-10-12 | Oracle America, Inc. | Verification of memory consistency and transactional memory |
US20080320282A1 (en) | 2007-06-22 | 2008-12-25 | Morris Robert P | Method And Systems For Providing Transaction Support For Executable Program Components |
US8266387B2 (en) | 2007-06-27 | 2012-09-11 | Microsoft Corporation | Leveraging transactional memory hardware to accelerate virtualization emulation |
US7779232B2 (en) | 2007-08-28 | 2010-08-17 | International Business Machines Corporation | Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches |
US8209689B2 (en) | 2007-09-12 | 2012-06-26 | Intel Corporation | Live lock free priority scheme for memory transactions in transactional memory |
US7904434B2 (en) | 2007-09-14 | 2011-03-08 | Oracle International Corporation | Framework for handling business transactions |
US7890472B2 (en) | 2007-09-18 | 2011-02-15 | Microsoft Corporation | Parallel nested transactions in transactional memory |
US20090127332A1 (en) | 2007-11-16 | 2009-05-21 | Kyung Yang Park | System for processing payment employing off-line transaction approval mode of mobile card and method thereof |
US20090138890A1 (en) | 2007-11-21 | 2009-05-28 | Arm Limited | Contention management for a hardware transactional memory |
CN101170747A (zh) | 2007-11-30 | 2008-04-30 | 中兴通讯股份有限公司 | 中继状态调节方法和装置 |
US20090177530A1 (en) | 2007-12-14 | 2009-07-09 | Qualcomm Incorporated | Near field communication transactions in a mobile environment |
US8145878B2 (en) * | 2007-12-17 | 2012-03-27 | Intel Corporation | Accessing control and status register (CSR) |
US8195898B2 (en) | 2007-12-27 | 2012-06-05 | Intel Corporation | Hybrid transactions for low-overhead speculative parallelization |
US8706982B2 (en) | 2007-12-30 | 2014-04-22 | Intel Corporation | Mechanisms for strong atomicity in a transactional memory system |
US8065491B2 (en) | 2007-12-30 | 2011-11-22 | Intel Corporation | Efficient non-transactional write barriers for strong atomicity |
US7966459B2 (en) | 2007-12-31 | 2011-06-21 | Oracle America, Inc. | System and method for supporting phased transactional memory modes |
US8140497B2 (en) | 2007-12-31 | 2012-03-20 | Oracle America, Inc. | System and method for implementing nonblocking zero-indirection transactional memory |
US20090182983A1 (en) | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Compare and Branch Facility and Instruction Therefore |
US8041900B2 (en) | 2008-01-15 | 2011-10-18 | Oracle America, Inc. | Method and apparatus for improving transactional memory commit latency |
US20090187906A1 (en) | 2008-01-23 | 2009-07-23 | Sun Microsystems, Inc. | Semi-ordered transactions |
US8176280B2 (en) | 2008-02-25 | 2012-05-08 | International Business Machines Corporation | Use of test protection instruction in computing environments that support pageable guests |
US8380907B2 (en) | 2008-02-26 | 2013-02-19 | International Business Machines Corporation | Method, system and computer program product for providing filtering of GUEST2 quiesce requests |
US8161273B2 (en) | 2008-02-26 | 2012-04-17 | Oracle America, Inc. | Method and apparatus for programmatically rewinding a register inside a transaction |
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 |
US8688628B2 (en) | 2008-02-29 | 2014-04-01 | Red Hat, Inc. | Nested queued transaction manager |
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 |
EP2332043B1 (en) | 2008-07-28 | 2018-06-13 | Advanced Micro Devices, Inc. | Virtualizable advanced synchronization facility |
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 |
US20100205628A1 (en) | 2009-02-12 | 2010-08-12 | Davis Bruce L | Media processing methods and arrangements |
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 |
US9274855B2 (en) | 2008-12-24 | 2016-03-01 | Intel Corporation | Optimization for safe elimination of weak atomicity overhead |
US10210018B2 (en) | 2008-12-24 | 2019-02-19 | Intel Corporation | Optimizing quiescence in a software transactional memory (STM) system |
US8914620B2 (en) | 2008-12-29 | 2014-12-16 | Oracle America, Inc. | Method and system for reducing abort rates in speculative lock elision using contention management mechanisms |
US9785462B2 (en) | 2008-12-30 | 2017-10-10 | Intel Corporation | Registering a user-handler in hardware for transactional memory event handling |
US8799582B2 (en) | 2008-12-30 | 2014-08-05 | Intel Corporation | Extending cache coherency protocols to support locally buffered data |
CN101710433A (zh) | 2008-12-31 | 2010-05-19 | 深圳市江波龙电子有限公司 | 一种电子支付卡的交易方法及电子支付卡 |
US9170844B2 (en) | 2009-01-02 | 2015-10-27 | International Business Machines Corporation | Prioritization for conflict arbitration in transactional memory management |
CN101819518B (zh) | 2009-02-26 | 2013-09-11 | 国际商业机器公司 | 在事务内存中快速保存上下文的方法和装置 |
US8266107B2 (en) | 2009-03-11 | 2012-09-11 | International Business Machines Corporation | Method for mirroring a log file by threshold driven synchronization |
US9940138B2 (en) | 2009-04-08 | 2018-04-10 | Intel Corporation | Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations |
US20100307689A1 (en) | 2009-06-06 | 2010-12-09 | Michael James Huebner | Pivoting tape dispenser |
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 |
CN102460376B (zh) | 2009-06-26 | 2016-05-18 | 英特尔公司 | 无约束事务存储器(utm)系统的优化 |
US8973004B2 (en) | 2009-06-26 | 2015-03-03 | Oracle America, Inc. | Transactional locking with read-write locks in transactional memory systems |
US8489864B2 (en) | 2009-06-26 | 2013-07-16 | Microsoft Corporation | Performing escape actions in transactions |
US8281185B2 (en) * | 2009-06-30 | 2012-10-02 | Oracle America, Inc. | Advice-based feedback for transactional execution |
US8229907B2 (en) * | 2009-06-30 | 2012-07-24 | Microsoft Corporation | Hardware accelerated transactional memory system with open nested transactions |
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 |
US8290991B2 (en) | 2009-12-15 | 2012-10-16 | Juniper Networks, Inc. | Atomic deletion of database data categories |
US8521995B2 (en) | 2009-12-15 | 2013-08-27 | Intel Corporation | Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode |
US8316194B2 (en) | 2009-12-15 | 2012-11-20 | Intel Corporation | Mechanisms to accelerate transactions using buffered stores |
US8095824B2 (en) | 2009-12-15 | 2012-01-10 | Intel Corporation | Performing mode switching in an unbounded transactional memory (UTM) system |
US8473921B2 (en) | 2009-12-15 | 2013-06-25 | Microsoft Corporation | Debugging mechanisms in a cache-based memory isolation 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 | 삼성전자주식회사 | 무한 트랜잭션 메모리 시스템 및 그 동작 방법 |
CN101826000A (zh) | 2010-01-29 | 2010-09-08 | 北京龙芯中科技术服务中心有限公司 | 流水线微处理器的中断响应确定方法、装置及微处理器核 |
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 |
US9552206B2 (en) | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
US9122476B2 (en) | 2010-12-07 | 2015-09-01 | Advanced Micro Devices, Inc. | Programmable atomic memory using hardware validation agent |
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 |
US9454462B2 (en) | 2012-03-16 | 2016-09-27 | International Business Machines Corporation | Run-time instrumentation monitoring for processor characteristic changes |
US8966324B2 (en) | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
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 |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US9311101B2 (en) | 2012-06-15 | 2016-04-12 | International Business Machines Corporation | Intra-instructional transaction abort handling |
US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US8964390B2 (en) | 2012-11-08 | 2015-02-24 | International Business Machines Corporation | Sectioned manifolds facilitating pumped immersion-cooling of electronic components |
US9348522B2 (en) | 2013-12-12 | 2016-05-24 | International Business Machines Corporation | Software indications and hints for coalescing memory transactions |
-
2012
- 2012-06-15 US US13/524,796 patent/US9384004B2/en active Active
-
2013
- 2013-03-03 US US13/783,357 patent/US9378024B2/en active Active
- 2013-05-03 BR BR112014031435-7A patent/BR112014031435B1/pt active IP Right Grant
- 2013-05-03 CN CN201380028460.9A patent/CN104350474B/zh active Active
- 2013-05-03 AU AU2013276800A patent/AU2013276800B2/en active Active
- 2013-05-03 CA CA2928277A patent/CA2928277C/en active Active
- 2013-05-03 JP JP2015516523A patent/JP6168537B2/ja active Active
- 2013-05-03 EP EP13724529.6A patent/EP2862079B1/en active Active
- 2013-05-03 WO PCT/EP2013/059205 patent/WO2013185978A1/en active Application Filing
-
2015
- 2015-08-20 HK HK15108090.5A patent/HK1207445A1/zh unknown
-
2016
- 2016-06-24 US US15/192,565 patent/US10223214B2/en active Active
-
2018
- 2018-12-07 US US16/213,165 patent/US10719415B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0470322A1 (en) * | 1990-08-07 | 1992-02-12 | BULL HN INFORMATION SYSTEMS ITALIA S.p.A. | Message-based debugging method |
US20070162246A1 (en) * | 2006-01-06 | 2007-07-12 | Roland Barcia | Exception thrower |
US20110145498A1 (en) * | 2009-12-15 | 2011-06-16 | Microsoft Corporation | Instrumentation of hardware assisted transactional memory system |
Also Published As
Publication number | Publication date |
---|---|
US10223214B2 (en) | 2019-03-05 |
HK1207445A1 (zh) | 2016-01-29 |
US9378024B2 (en) | 2016-06-28 |
US20130339705A1 (en) | 2013-12-19 |
BR112014031435B1 (pt) | 2021-11-09 |
US20190114234A1 (en) | 2019-04-18 |
CA2928277A1 (en) | 2013-12-19 |
EP2862079A1 (en) | 2015-04-22 |
CN104350474B (zh) | 2016-12-28 |
JP2015528935A (ja) | 2015-10-01 |
US20160306718A1 (en) | 2016-10-20 |
US20130339675A1 (en) | 2013-12-19 |
BR112014031435A2 (pt) | 2017-06-27 |
AU2013276800B2 (en) | 2016-08-18 |
US10719415B2 (en) | 2020-07-21 |
EP2862079B1 (en) | 2019-12-25 |
AU2013276800A1 (en) | 2014-12-11 |
JP6168537B2 (ja) | 2017-07-26 |
US9384004B2 (en) | 2016-07-05 |
CA2928277C (en) | 2021-12-28 |
WO2013185978A1 (en) | 2013-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104364772B (zh) | 控制一计算环境中的事务执行的方法及系统 | |
CN104364778A (zh) | 在事务处理中保存/恢复选择的寄存器 | |
CN104412232A (zh) | 事务处理 | |
CN104335185B (zh) | 受限事务执行 | |
CN104350474A (zh) | 事务执行内的随机测试 | |
CN104350462B (zh) | 事务中止指令 | |
CN104335177A (zh) | 有选择地控制事务处理中的指令执行 | |
CN104335181A (zh) | 事务诊断区块 | |
CN104350468B (zh) | 非事务储存指令 | |
CN104335184A (zh) | 事务执行分支指示 | |
CN104380246B (zh) | 用于管理计算环境中的中断的方法、系统及介质 | |
CN104335186A (zh) | 处理器辅助设施 | |
CN103514032B (zh) | 用于促进计算环境内的处理的方法和计算机系统 | |
CN104350463B (zh) | 在事务执行中的受限指令 | |
CN103513960A (zh) | 促进事务重复中止之后的事务完成的方法和计算机系统 | |
CN104205064A (zh) | 将程序事件记录事件向运行时间检测事件的变换 | |
CN104335164A (zh) | 事务中止处理 | |
CN104335165A (zh) | 事务开始/结束指令 | |
US20130339616A1 (en) | Managing transactional and non-transactional store observability | |
CN104169889A (zh) | 在事务执行模式中的运行时间检测采样 | |
CN104364769A (zh) | 处理器特性的运行时间检测监控 | |
CN104380265A (zh) | 运行时间检测控制发出指令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |