CN104350463B - 在事务执行中的受限指令 - Google Patents
在事务执行中的受限指令 Download PDFInfo
- Publication number
- CN104350463B CN104350463B CN201380027504.6A CN201380027504A CN104350463B CN 104350463 B CN104350463 B CN 104350463B CN 201380027504 A CN201380027504 A CN 201380027504A CN 104350463 B CN104350463 B CN 104350463B
- Authority
- CN
- China
- Prior art keywords
- affairs
- instruction
- register
- code
- 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.)
- Active
Links
- 238000003860 storage Methods 0.000 claims description 173
- 230000015654 memory Effects 0.000 claims description 129
- 238000000034 method Methods 0.000 claims description 63
- 230000008859 change Effects 0.000 claims description 44
- 230000004048 modification Effects 0.000 claims description 27
- 238000012986 modification Methods 0.000 claims description 27
- 238000007667 floating Methods 0.000 claims description 18
- 230000002035 prolonged effect Effects 0.000 claims 2
- 230000006870 function Effects 0.000 description 39
- 238000004590 computer program Methods 0.000 description 24
- 230000002159 abnormal effect Effects 0.000 description 21
- 238000006243 chemical reaction Methods 0.000 description 21
- 238000012545 processing Methods 0.000 description 20
- 238000003745 diagnosis Methods 0.000 description 18
- 238000013519 translation Methods 0.000 description 18
- 230000014616 translation Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 17
- 239000000284 extract Substances 0.000 description 16
- 230000000875 corresponding effect Effects 0.000 description 15
- 230000007246 mechanism Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 14
- 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 13
- 238000005192 partition Methods 0.000 description 13
- 239000000872 buffer Substances 0.000 description 12
- 238000001914 filtration Methods 0.000 description 12
- 238000006073 displacement reaction Methods 0.000 description 11
- 230000006399 behavior Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000000717 retained effect Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 9
- 230000004224 protection Effects 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 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 6
- 238000004364 calculation method Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 235000013399 edible fruits Nutrition 0.000 description 5
- 230000014759 maintenance of location Effects 0.000 description 5
- 238000011084 recovery Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 230000005291 magnetic effect Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000005611 electricity Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 230000001276 controlling effect Effects 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000005055 memory storage Effects 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
- 230000003287 optical effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000010926 purge Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000000153 supplemental effect Effects 0.000 description 2
- 210000003813 thumb Anatomy 0.000 description 2
- 230000001052 transient effect Effects 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
- 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
- 102100040160 Rabankyrin-5 Human genes 0.000 description 1
- 101710086049 Rabankyrin-5 Proteins 0.000 description 1
- 101100274534 Rattus norvegicus Clec2d11 gene Proteins 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 206010000210 abortion Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 210000003811 finger Anatomy 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 244000144985 peep Species 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor 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
- 238000010977 unit operation Methods 0.000 description 1
- 238000004804 winding Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/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
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
- G06F9/528—Mutual exclusion algorithms by using speculative mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
受限指令被禁止在事务内执行。存在与事务的类型无关地被限制的指令的类别:被约束或非被约束。存在仅在被约束事务中被限制的指令,并且存在基于用于启动事务的指令上指定的控件对于给定的事务选择性地被限制的指令。
Description
技术领域
一个或多个方面总体上涉及多处理计算环境,并且具体地说涉及在这样的计算环境内的事务处理。
背景技术
在多处理器编程中的一个持久挑战是由多个中央处理单元(CPU)对于同一存储位置的更新的持久挑战。包括诸如与的甚至简单的逻辑运算的、更新存储位置的许多指令通过对于该位置的多个访问来如此进行。例如,首先,获取存储位置,并且然后,存储回更新的结果。
为了多个CPU安全地更新同一存储位置,对于该位置的访问被串行化。使用由先前提供的S/360架构引入的一个指令TEST AND SET指令提供了存储位置的联锁更新。联锁更新表示,如其他CPU和输入/输出(I/O)子系统(例如,信道子系统)所观察,指令的整体存储访问看起来原子地出现。后来,由IBM提供的S/370架构引入了COMPARE AND SWAP(比较和交换)和COMPARE DOUBLE AND SWAP(比较加倍和交换)指令,该指令提供了执行联锁更新的更复杂的手段,并且允许通常被称为锁字(或信号量)的部分的实现。近来增加的指令已经提供了另外的联锁更新能力,包括COMPARE AND SWAP AND PURGE(比较和交换和清除)和COMPARE AND SWAP AND STORE(比较和交换和商店)。然而,所有这些指令提供了仅用于单个存储位置的联锁。
更复杂的程序技术可能例如当向双向链表增加元素时要求多个存储位置的联锁更新。在这样的操作中,正向和反向指针都看起来同时被更新,如其他CPU和I/O子系统所观察的那样。为了进行这样的多位置更新,强制程序使用独立的单串行点,诸如锁字。然而,锁字可以提供比所保证者更粗糙的串行水平;例如,锁字串行化以百万计的元素的整个队列,即使仅在更新两个元素。该程序可以将数据结构化以使用更细粒度的串行化(例如,锁点的分级),但是那引入了另外的问题,诸如:如果该分级被违反则导致的可能死锁情况;以及,如果在保持一个或多个锁的同时该程序遭遇错误或如果不能获取该锁则导致的恢复问题。
除了上面的情况之外,也存在多个情况,其中,程序可以执行可能或可能不导致异常情况的指令的序列。如果未出现异常情况,则该程序继续;然而,如果识别了异常,则该程序可以采取校正行为来消除异常情况。作为一个示例,可以在例如推测执行、功能的部分联机和/或指针空检查的重新排序中利用这样的执行。Java和所有基于Java的商标和徽标是Oracle和/或其附属公司的商标或注册商标。
在诸如由国际商业机器公司提供的IBM z/和其前任的经典操作系统环境中,程序建立恢复环境以截取它可能遇到的任何程序异常情况。通过该程序未截取到异常,则该操作系统通常因为该操作系统未准备好处理的异常而异常地结束该程序。建立和利用这样的环境成本大并且复杂。IBM、z/OS、z/(下面引用)、z/(下面引用)、Processor Resource/Systems ManagerTM(下面引用)、Power SystemsTM(下面引用)和System(下面引用)是在世界上许多辖区中注册的国际商业机器公司的商标。
因此,在本领域中需要处理上述问题。
发明内容
现有技术的缺陷被克服,并且通过提供用于在计算环境中执行与事务执行相关联的处理的计算机程序产品来提供优点。该计算机程序产品包括计算机可读存储介质,其能够被处理电路读取,并且存储用于由用于执行方法的处理电路执行的指令。所述方法包括例如:处理器获得作为事务的一部分要执行的指令,所述事务有效地延迟向主存储器提交事务存储,直到完成了所选择的事务;从由一个或多个事务开始指令设置的一个或多个控件计算一个或多个有效控件;所述处理器确定所述指令是否是被禁止在所述事务内执行的选择性受限的指令,所述确定基于所述计算的一个或多个有效控件;并且,基于所述指令是否被选择性地限制而执行与所述指令相关联的处理。
从第一方面看,本发明提供了用于在计算环境中执行与事务执行相关联的处理的方法,所述方法包括:处理器获得作为事务的一部分要执行的指令,所述事务有效地延迟向主存储器提交事务存储,直到完成了所选择的事务;从由一个或多个事务开始指令设置的一个或多个控件计算一个或多个有效控件;所述处理器确定所述指令是否是被禁止在所述事务内执行的选择性受限的指令,所述确定基于所述计算的一个或多个有效控件;并且,基于所述指令是否被选择性地限制而执行与所述指令相关联的处理。
从另一个方面看,本发明提供了一种用于在计算环境中执行与事务执行相关联的处理的计算机系统,所述计算机系统包括:存储器;以及,与所述存储器进行通信的处理器,其中,所述计算机系统被配置为执行一种方法,所述方法包括:处理器获得作为事务的一部分要执行的指令,所述事务有效地延迟向主存储器提交事务存储,直到完成了所选择的事务;从由一个或多个事务开始指令设置的一个或多个控件计算一个或多个有效控件;所述处理器确定所述指令是否是被禁止在所述事务内执行的选择性受限的指令,所述确定基于所述计算的一个或多个有效控件;并且,基于所述指令是否被选择性地限制而执行与所述指令相关联的处理。
从另一个方面看,本发明提供了一种用于在计算环境中执行与事务执行相关联的处理的计算机程序产品,所述计算机程序产品包括:计算机可读存储介质,其能够被处理电路读取并且存储用于由用于执行方法的处理电路执行的指令,所述方法包括:处理器获得作为事务的一部分要执行的指令,所述事务有效地延迟向主存储器提交事务存储,直到完成了所选择的事务;从由一个或多个事务开始指令设置的一个或多个控件计算一个或多个有效控件;所述处理器确定所述指令是否是被禁止在所述事务内执行的选择性受限的指令,所述确定基于所述计算的一个或多个有效控件;并且,基于所述指令是否被选择性地限制而执行与所述指令相关联的处理。
从另一个方面看,本发明提供了一种用于在计算环境中执行与事务执行相关联的处理的计算机程序产品,所述计算机程序产品包括计算机可读存储介质,其能够被处理电路读取并且存储用于由用于执行用于执行本发明的步骤的方法的处理电路执行的指令。
从另一个方面看,本发明提供了一种计算机程序,所述计算机程序被存储在计算机可读介质上,并且可加载到数字计算机的内部存储器内,所述计算机程序包括软件代码部分,所述软件代码部分当所述程序在计算机上运行时用于执行本发明的步骤。
在此也描述和要求保护与一个或多个实施例相关的方法和系统。而且,也描述和在此可以要求保护与一个或多个实施例相关的服务。
另外的特征和优点被实现。其他实施例和方面在此被详细描述,并且被看作所要求保护的发明的一部分。
附图说明
现在参考在下面的附图中图示的优选实施例仅通过示例来描述本发明:
图1描述了根据现有技术其中可以实现本发明的一个优选实施例的计算环境的一个实施例;
图2A描述了根据本发明的一个优选实施例的事务开始(TBEGIN)指令的一个示例;
图2B描述了根据本发明的一个优选实施例的、图2A的TBEGIN指令的字段的另外的细节的一个实施例;
图3A描述了根据本发明的一个优选实施例的事务开始被约束(TBEGINC)指令的一个示例;
图3B描述了根据本发明的一个优选实施例的、图3A的TBEGINC指令的字段的另外的细节的一个实施例;
图4描述了根据本发明的一个优选实施例的事务结束(TEND)指令的一个示例;
图5描述了根据本发明的一个优选实施例的事务中止(TABORT)指令的一个示例;
图6描述了根据本发明的一个优选实施例的嵌套事务的一个示例;
图7描述了根据本发明的一个优选实施例的NONTRANSACTIONAL STORE(非事务存储)(NTSTG)指令的一个示例;
图8描述了根据本发明的一个优选实施例的EXTRACT TRANSACTION NESTINGDEPTH(提取事务嵌套深度)(ETND)指令的一个示例;
图9描述了根据本发明的一个优选实施例的事务诊断块的一个示例;
图10描述了根据本发明的一个优选实施例的中止的示例原因连同相关联的中止代码和条件代码;
图11描述了根据本发明的一个优选实施例的与执行TBEGINC指令相关联的逻辑的一个实施例;
图12描述了根据本发明的一个优选实施例的与执行TBEGIN指令相关联的逻辑的一个实施例;
图13描述了根据本发明的一个优选实施例的与执行TEND指令相关联的逻辑的一个实施例;
图14A-14B描述了根据本发明的一个优选实施例的、与在事务内的处理受限指令相关联的逻辑的一个示例;
图14C描述了根据本发明的一个优选实施例的用于更新控件以选择性地允许受限指令的逻辑的一个示例;
图15A-15B描述了根据本发明的一个优选实施例向队列元素的双向链表内插入队列元素的示例;
图16描述了根据现有技术并且其中可以实现本发明的一个优选实施例的计算机程序产品的一个实施例;
图17描述了根据本发明的一个优选实施例的主计算机系统的一个实施例;
图18描述了根据现有技术并且其中可以实现本发明的一个优选实施例的计算机系统的另一个示例。
图19描述了根据现有技术并且其中可以实现本发明的一个优选实施例的、包括计算机网络的计算机系统的另一个示例;
图20描述了根据本发明的一个优选实施例的计算机系统的各个元件的一个实施例;
图21A描述了根据本发明的一个优选实施例的图20的计算机系统的执行单元的一个实施例;
图21B描述了根据本发明的一个优选实施例的图20的计算机系统的分支单元的一个实施例;
图21C描述了根据本发明的一个优选实施例的图20的计算机系统的加载/存储单元的一个实施例;以及
图22描述了根据本发明的一个优选实施例的模拟主计算机系统的一个实施例。
具体实施方式
根据一个方面,提供了一种事务执行(TX)设施。该设施提供了用于指令的事务处理,并且在一个或多个实施例中,提供了如下所述的不同执行模式以及事务处理的嵌套层。
事务执行能力引入了被称为事务执行(TX)模式的CPU状态。在CPU复位后,CPU不在TX模式中。CPU通过TRANSACTION BEGIN(事务开始)指令进入TX模式。CPU通过下述方式通过下述部分来离开TX模式:(a)最外TRANSACTION END(事务结束)指令(关于内部和外部的更多的细节在下面),或(b)事务被中止。在TX模式中,如其他CPU和I/O子系统所看到的那样,由CPU进行的存储访问看起来是同时阻挡的。该存储访问或者(a)当最外事务结束而没有被中止时被提交到存储器(即,例如,在CPU本地的高速缓存或缓冲器中进行的更新被传播并且被存储在真实存储器中并且为其他CPU可见),或者(b)如果事务被中止则被丢弃。
可以嵌套事务。即,在CPU在TX模式中的同时,它可以执行另一个TRANSACTIONBEGIN指令。使得CPU进入TX模式中的指令被称为最外TRANSACTION BEGIN;类似地,该程序被称为在最外事务中。TRANSACTION BEGIN的随后执行被称为内部指令;并且,该程序在执行内部事务。该模型提供最小嵌套深度和模型相关的最大嵌套深度。EXTRACT TRANSACTIONNESTING DEPTH(提取事务嵌套深度)指令返回当前嵌套深度值,并且在另一个实施例中,可以返回最大嵌套深度值。该技术使用被称为“扁平嵌套”的模型,其中,在任何嵌套深度处的中止条件使得中止所有的事务水平,并且将控制返回到在最外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个访问寄存器。访问寄存器由32个比特位置构成,该32个比特位置包含地址空间控制元素(ASCE)的间接指定。地址空间控制元素是由动态在转换(DAT)机制使用来将参考转换为对应的地址空间的参数。当CPU在被称为访问寄存器模式(被在程序状态字(PSW)中的比特控制)的模式中时,用于指定用于存储器操作数参考的逻辑地址的指令B字段指定访问寄存器,并且由该访问寄存器指定的地址空间控制元素被DAT使用来用于所进行的参考。对于一些指令,使用R字段来取代B字段。指令被提供来安装和存储访问寄存器的内容,并且将一个访问寄存器的内容向另一个移动。
访问寄存器1-15的每一个可以指定任何地址空间。访问寄存器0指定主指令空间。当通用寄存器1-15之一用于指定地址空间时,CPU通过转换访问寄存器的内容来确定指定哪个地址空间。当访问寄存器0用于指定地址空间时,CPU将该访问寄存器看作指定主指令空间,并且它不检查该访问寄存器的实际内容。因此,该16个访问寄存器可以在任何一个时间指定主指令空间和最多15个其他空间。
在一个实施例中,存在多个类型的地址空间。地址空间是整数编号(虚拟地址)的连续序列连同允许每一个编号与在存储器中的字节位置相关联的特定转换参数。该序列在0处开始,并且从左向右进行。
在例如IBM z/Architecture中,当CPU使用虚拟地址来访问主存储器(也称为主内存)时,它首先通过动态地址转换(DAT)被转换为真实地址,并且然后通过加前缀被转换为绝对地址。DAT可以使用表格的从1至5级(页、段、第三区、第二区和第一区)作为转换参数。用于特定地址空间的最高级表格的指定(原点和深度)被称为地址空间控制元素,并且它被发现在控制寄存器中或如方法指定由DAT使用。
替代地,用于地址空间的地址空间控制元素可以是真实空间指定,其指示DAT要通过将虚拟地址看作真实地址来简单地转换虚拟地址,而不使用任何表格。
DAT在不同的时间使用在不同的控制寄存器中或由地址寄存器指定的地址空间控制元素。通过在当前PSW中指定的转换模式来确定该选择。可获得四个转换模式:主空间模式、辅助空间模式、访问寄存器模式和原籍空间模式。能够根据转换模式来编址不同的地址空间。
在当CPU在主空间模式或辅助空间模式中时的任何时刻,CPU可以转换属于两个地址空间——主地址空间和辅助地址空间——的虚拟地址。在当CPU在地址寄存器模式中时的任何时刻,它可以转换多达16个地址空间——主地址空间和多达15个AR指定的地址空间——的虚拟地址。在当CPU在原籍空间模式中时的任何时刻,它可以转换原籍地址空间的虚拟地址。
主地址空间被如此标识,因为它由主虚拟地址构成,该主虚拟地址通过主地址空间控制元素(ASCE)被转换。类似地,辅助地址空间由通过辅助ASCE转换的辅助虚拟地址构成;AR指定的地址空间由通过AR指定的ASCE转换的AR指定虚拟地址构成;并且,原籍地址空间由通过原籍ASEC转换的原籍虚拟地址构成。主和辅助ASCE分别在控制寄存器1和7中。AR指定的ASCE是通过使用控制寄存器2、5和8的被称为访问寄存器转换(ART)的处理定位的ASN第二表格条目中。原籍ASCE在控制寄存器13中。
在此参考图1来描述用于包含和使用在此描述的事务设施的一个或多个方面的计算环境的一个实施例。
参见图1,在一个示例中,计算环境100基于z/Architecture。在下文中描述了该z/Architecture:IBM Publication entitled“z/Architecture–Principles ofOperation,”Publication No.SA22-7932-08,9th Edition,August 2010。
在此使用的其他名称可以是国际商业机器公司或其他公司的注册商标、商标或产品名称。
作为一个示例,计算环境100包括中央处理器复合体(CPC)102,其经由一个或多个控制单元108耦合到一个或多个输入/输出(I/O)装置106。中央处理器复合体102包括例如一个或多个中央处理器110、一个或多个分区112(例如,逻辑分区(LP))、逻辑分区管理程序114和输入/输出子系统115,其每一个在下面被描述。
中央处理器110是向逻辑分区分配的物理处理器资源。具体地说,每一个逻辑分区112具有一个或多个逻辑处理器,其每一个表示向该分区分配的物理处理器110的全部或部分。特定分区112的逻辑处理器可以:或者专用于该分区,以便对于那个分区保留基础处理器资源110;或者被与另一个分区共享,使得基础处理器可能可用于另一个分区。
逻辑分区作为独立的系统,并且具有一个或多个应用,并且选用地在其中具有驻留的操作系统,该操作系统可以对于每一个逻辑分区不同。在一个实施例中,该操作系统是由IBM提供的z/OS操作系统、z/VM操作系统、z/Linux操作系统或TPF操作系统。
逻辑分区112被通过在处理器110上运行的固件实现的逻辑分区管理程序114管理。如在此使用,固件包括例如处理器的微码和/或毫码。它包括例如在高级机器码的实现中使用的硬件级指令和/或数据结构。在一个实施例中,它包括例如专有代码,它一般作为包括可信软件的微码或对于基础硬件特定的微码被输送,并且控制对于系统硬件的操作系统访问。
逻辑分区和逻辑分区管理程序每一个包括在与中央处理器相关联的中央存储器的相应的分区中驻留的一个或多个程序。逻辑分区管理程序114的一个示例是IBM处理器资源/系统管理器(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)地址和事务嵌套深度;5个控制寄存器比特;已经,6个一般指令,包括TRANSACTION BEGIN(事务开始)(被约束和未约束)、TRANSACTION END(事务结束)、EXTRACT TRANSACTION NESTING DEPTH(调整事务嵌套深度)、TRANSACTIONABORT(事务中止)和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字段不是零时,向D1206加上由B1204指定的通用寄存器的内容以获得第一操作数地址。
当B1字段不是零时,下面的部分适用:
●当事务嵌套深度初始为0时,第一操作数地址指定被称为TBEGIN指定的TDB(下面进一步描述)的256字节事务诊断块的位置,如果事务被中止,则可以向该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上存储通用寄存器存储掩蔽。
允许AR修改(A)212:A控件I2字段的比特12控制是否允许事务修改访问寄存器。有效允许AR修改控件是在用于当前嵌套层和用于所有外层的TBEGIN指令中的A控件的逻辑与。
如果有效A控件是0,则如果进行尝试修改任何访问寄存器,则使用中止代码11(受限指令)中止事务。如果有效A控件是1,则如果修改了访问寄存器(没有任何其他中止条件),则将不中止事务。
允许浮点操作(F)214:F控件I2字段的比特13控制是否允许事务执行指定的浮点指令。该有效允许浮点操作控件是在用于当前嵌套层和用于所有外层的TBEGIN指令中的F控件的逻辑与。
如果该有效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的程序异常条件导致中断。保留PIFC 3。
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控件的逻辑与。
如果有效A控件是0,则如果进行尝试修改任何访问寄存器,则使用中止代码11(受限指令)中止事务。如果有效A控件是1,则如果修改了访问寄存器(没有任何其他中止条件),则将不中止事务。
I2字段的比特8-11和13-15(指令的比特40-43和45-47)被保留,并且应当包含0。
通过其格式在图4中被描述的TRANSACTION END(TEND)指令来指定事务开始指令的结束。作为一个示例,TEND指令400包括操作码字段402,该操作码字段402包括用于指定事务结束操作的操作码。
相对于事务执行设施使用多个术语,并且因此,完全为了方便,在下面以字母顺序提供术语的列表。在一个实施例中,这些术语具有下面的定义:
中止:当在导致0的事务嵌套深度的TRANSACTION END(事务结束)指令之前事务结束时,事务中止。在一个实施例中,当事务中止时,下面的部分出现。
●丢弃(即,不提交)由事务的任何和全部级进行的事务存储访问。
●提交由事务的任何和全部级进行的非事务存储访问。
●由最外TRANSACTION BEGIN指令的通用寄存器存储掩蔽(GRSM)指定的寄存器恢复到在事务执行之前的它们的内容(即,到在最外TRANSACTION BEGIN指令的执行时的它们的内容)。不恢复未被最外TRANSACTION BEGIN指令的通用寄存器存储掩蔽指定的通用寄存器。
●不恢复访问寄存器、浮点寄存器和浮点控制寄存器。当事务中止时,保留在事务执行期间对于这些寄存器进行的任何改变。
可能因为多种原因而中止事务,该多种原因包括受限指令的尝试执行、受限资源的尝试修改、事务冲突、超过各种CPU资源、任何解释执行中断条件、任何中断、TRANSACTIONABORT(事务中止)指令和其他原因。事务中止代码提供了为什么可以将事务中止的特定原因。
参考图5来描述TRANSACTION ABORT(TABORT)指令的格式的一个示例。作为一个示例,TABORT指令500包括:操作码字段502,其包括用于指定事务中止操作的操作码;基本字段(B2)504;以及,位移字段(D2)506。当B2字段不是0时,由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已经在未约束事务执行模式中的同时执行被约束的事务开始(TBEGINCC)指令时,执行作为嵌套未约束事务继续。
被约束设置执行模式:当设置嵌套深度是0,并且通过TBEGINC指令来开始事务时,CPU进入被约束事务执行模式。在CPU在被约束事务执行模式中的同时,事务嵌套深度是1。
嵌套事务:当在CPU在未约束设置执行模式中的同时发出事务开始指令时,该事务被嵌套。
设置执行设施使用被称为扁平嵌套的模型。在扁平嵌套模式中,由内部事务进行的存储不能被其他CPU和I/O子系统观察到,直到最外事务提交其存储。类似地,如果事务中止,则所有嵌套的事务中止,并且丢弃所有嵌套的事务的所有事务存储。
在图6中描述了嵌套事务的一个示例。如所示,第一TBEGIN 600开始最外事务601,TBEGIN 602开始第一嵌套事务,并且TBEGIN 604开始第二嵌套事务。在这个示例中,TBEGIN604和TEND 606限定了最内事务608。当TEND 610执行时,对于最外事务和所有内部事务提交612事务存储。
未约束事务:未约束事务是在未约束事务执行模式中执行的事务。虽然未以与被约束事务一样的方式限制未约束事务,但是仍然可能因为多种原因而将未约束事务中止。
未约束事务执行模式:当通过TBEGIN指令来开始事务时,CPU进入未约束事务执行模式。在CPU在未约束事务执行模式中的同时,事务嵌套深度可以从1向最大事务嵌套深度改变。
非事务访问:非事务访问是由CPU当它不在事务执行模式中时进行的存储器操作数访问(即,在事务之外的经典存储器访问)。而且,由I/O子系统进行的访问是非事务访问。另外,NONTRANSACTIONAL STORE(非事务存储)指令可以用于在CPU在未约束事务执行模式中的同时引起非事务存储访问。
参考图7描述非事务存储指令的格式的一个实施例。作为一个示例,非事务存储指令700包括:多个操作码字段702a、702b,用于指定用于指定非事务存储操作的操作码;寄存器字段R1704,用于指定寄存器,其内容被称为第一操作数;索引字段(X2)706;基本字段(B2)708;第一位移字段(DL2)710;以及,第二位移字段(DH2)712。由X2和B2字段指定的通用寄存器的内容被加到DH2和DL2字段的内容的级联的内容,以形成第二操作数地址。当X2或B2字段的任何一个或两者是0时,对应的寄存器不参与该相加。
该64比特第一操作数被不变地、非事务处理地布置在第二操作数位置处。
通过DH2和DL2字段的级联形成的位移被看作20比特带符号二进制整数。
第二操作数要在双字边界上对齐;否则,识别指定异常,并且抑制操作。
外/最外事务:具有低编号的事务嵌套深度的事务是外事务。具有1的事务嵌套深度值的事务是最外事务。
最外事务开始指令是当事务嵌套深度初始为0时执行的那个。最外事务结束指令是使得事务嵌套深度从1向0转换的那个。在这个实施例中,被约束事务是最外事务。
程序中断过滤:当因为某些异常条件导致事务中止时,该程序可以选用地防止中断出现。该技术被称为程序中断过滤。程序中断过滤受到中断的事务类别、来自事务开始指令的有效程序中断过滤控制和在控制寄存器0中的事务执行程序中断过滤覆盖的支配。
事务:事务包括在CPU在事务执行模式中的同时进行存储器操作数访问和改变所选择的通用寄存器。对于未约束事务,存储器操作数访问可以包括事务访问和非事务访问。对于被约束事务,存储器操作数访问限于事务访问。如其他CPU和I/O子系统所观察,由CPU在事务执行模式中的同时进行的所有存储器操作数访问看起来作为单个同时操作出现。如果中止事务,则丢弃事务存储访问,并且由最外事务开始指令的通用寄存器存储掩蔽指定的任何寄存器被恢复到在事务执行之前的它们的内容。
事务访问:事务访问是除了由非事务存储指令进行的访问之外的、在CPU在事务执行模式中的同时进行的存储器操作数访问。
事务执行模式:术语事务执行模式(也称为事务执行模式)描述了未约束和被约束事务执行模式两者的共同操作。因此,当描述该操作时,使用术语未约束和被约束来限制事务执行模式。
当事务嵌套深度为0时,CPU不在事务执行模式(也称为非事务执行模式)中。
如CPU所观察,在事务执行模式中进行的获取和存储与在不在事务执行模式中的同时进行的那些不同。
在z/Architecture的一个实施例中,事务执行设施在控制器寄存器0的比特8-9、控制寄存器2的比特61-63、事务嵌套深度、事务诊断块地址和事务中止程序状态字(PSW)的控制下。
在初始CPU复位后,控制寄存器的比特位置8-9、控制寄存器2的比特位置62-63和事务嵌套深度的内容被设置为0。当事务执行控件控制寄存器0的比特8是0时,不能将CPU置于事务执行模式内。
下面描述关于各个控件的另外的细节。
如所示,通过在控制寄存器0中的两个比特和在控制寄存器2中的三个比特来控制事务执行设施。例如:
控制寄存器0比特:在一个实施例中。比特指配如下:
事务执行控件(TXC):控制寄存器0的比特8是事务执行控件。该比特提供了一种机制,通过其,控制程序(例如,操作系统)可以指示事务执行设施是否能够被该程序使用。比特8要是1,以成功地进入事务执行模式。
当控制寄存器0的比特8是0时,EXTRACT TRANSACTION NESTING DEPTH(提取事务嵌套深度)、TRANSACTION BEGIN(事务开始)和TRANSACTION END(事务结束)指令的尝试执行导致特殊的操作执行。
参考图8描述EXTRACT TRANSACTION NESTING DEPTH(提取事务嵌套深度)指令的格式的一个实施例。作为一个示例,EXTRACT TRANSACTION NESTING DEPTH(指令800包括:操作码字段802,用于指定操作码,该操作码指示提取事务嵌套深度操作;以及,寄存器字段R1804,其指定通用寄存器。
当前的事务嵌套深度被布置在通用寄存器R1的比特48-63中。寄存器的比特0-31保持不变,并且寄存器的比特32-47被设置为0。
在另一个实施例中,最大事务嵌套深度也被布置在通用寄存器R1中,诸如在比特16-31中。
事务执行程序中断过滤覆盖(PIFO):控制寄存器0的比特9是事务执行程序中断过滤覆盖。该比特提供了一种记住,通过其,控制程序可以保证在CPU在事务执行模式中的同时出现的任何程序异常条件导致中断,而与由事务开始指令指定或暗示的有效程序中断过滤控制无关。
控制寄存器2比特:在一个实施例中,该指配如下:
事务诊断范围(TDS):控制寄存器2的比特61控制在寄存器的比特62-63中的事务诊断控制(TDC)的适用性如下:
TDS
事务诊断控制(TDC):控制寄存器2的比特62-63是2比特无符号整数,其可以用于使得任意中止事务以用于诊断目的。在一个示例中,TDC的编码如下:
TDC
当因为非零TDC而中止事务时,则下面的部分的任何一个可能出现:
●中止代码被设置为代码7-11、13-16或255的任何一个,并且该代码的值被CPU任意选择;与中止代码对应地设置条件代码。下面进一步描述中止代码。
●对于未约束事务,条件代码被设置为1。在该情况下,中止代码不适用。
是否实现TDC值是模型相关的。如果未实现,则1的值就像指定2那样作为。
对于被约束事务,处理1的TDC值,就像指定TDC值2。
如果指定TDC值3,则结果不可预测。
事务诊断块地址(TDBA)
当指令的B1字段不是0时,从最外事务开始(TBEGIN)指令的第一操作数地址设置有效事务诊断块地址(TDMA)。当CPU在主空间或访问寄存器模式中时,TDBA指定在主地址空间中的位置。当CPU在辅助空间或原籍空间模式中时,TDBA分别指定在辅助或原籍地址空间中的位置。当DAT(动态地址转换)关断时,TDBA指定在真实存储器中的位置。
如果随后中止事务,则CPU使用TDBA来定位被称为TBEGIN指定的TDB的事务诊断块。TDBA的最右三个比特是0,意味着TBEGIN指定的TDB在双字边界上。
当最外事务开始(TBEGIN)指令的B1字段是0时,事务诊断块地址无效,并且如果随后中止事务,则不存储TBEGIN指定的TDB。
事务中止PSW(TAPSW)
在当嵌套深度初始为0时的事务开始(TBEGIN)指令的执行期间,该设置中止PSW被设置为当前PSW的内容;并且,事务中止PSW的指令地址指定下一个顺序指令(即,在最外TBEGIN后的指令)。在当嵌套深度初始为0时的被约束的事务开始(TBEGINC)指令的执行期间,事务中止PSW被设置为当前PSW的内容,除了事务中止PSW的指令地址指定TBEGINC指令(而不是在TBEGINC后的下一个顺序指令)。
当中止事务时,将在事务中止PSW中的条件代码替换为用于指示中止条件的严重性的代码。随后,如果因为不导致中断的情况而中止事务,则从事务中止PSW加载PSW;如果因为导致中断的起因而中止事务,则事务中止PSW被存储为中断旧PSW。
在任何内部事务开始指令的执行期间不改变事务中止PSW。
事务嵌套深度(TND)
事务嵌套深度例如是每次使用条件代码0来完成事务开始指令时递增并且每次完成事务结束指令时递减的16比特无符号值。当中止事务时或通过CPU复位来将事务嵌套深度复位为0。
在一个实施例中,实现最大TND 15。
在一种实现方式中,当CPU在被约束事务执行模式中时,事务嵌套深度是1。另外,虽然最大TND可以被表示为4比特值,TND被定义为16比特值,以促进在事务诊断块中的其检查。
事务诊断块(TDB)
当中止事务时,可以在事务诊断块(TDB)中存储各种状态信息如下:
1.TBEGIN指定TDB:对于未约束事务,当最外TBEGIN指令的B1字段不是0时,该指令的第一操作数地址指定TBEGIN指定的TDB。这是可以被应用的中止处理器查看的应用程序指定位置。
2.程序中断(PI)TDB:如果因为未过滤的程序执行条件而中止未约束事务,或者如果因为任何程序异常条件(即,导致程序中断被识别的任何条件)导致中止被约束事务,则PI-TDB被存储到在前缀区域中的位置内。这可用于操作系统查看和退出它可以提供的任何诊断报告。
3.中断TDB:如果因为导致中断的任何程序异常条件(即,使得解释执行结束并且使得控制返回到主程序的条件)导致事务中止,则将TDB存储到在用于客户操作系统的状态描述块中指定的位置内。
在一个实施例中,当TDB地址有效时(也就是说,当最外TBEGIN指令的B1字段非零时),仅存储TBEGIN指定的TDB。
对于因为未过滤的程序异常条件导致的中止,仅存储PI-TDB或中断TDB之一。因此,可以有对于中止存储的0、1或2个TDB。
下面描述关于TDB的每一个的一个示例的另外的细节:
TBEGIN指定的TDB:由有效事务诊断块地址指定的256字节的位置。当事务诊断块地址有效时,在事务中止上存储TBEGIN指定的TDB。TBEGIN指定的TDB受到在最外事务开始指令的执行时有效的所有存储保护机制的支配。在最外TBEGIN的执行期间而不在在事务中止处理期间检测用于TBEGIN指定的TDB的任何部分的PER(程序事件记录)存储改变事件。
PER的一个目的是帮助调试程序。它允许向作为示例的下面类型的事件警告程序:
●成功分支指令的执行。提供了仅当分支目标位置在指定的存储区域内时使得事件出现的选择。
●从指定的存储区域获取指令。
●指定存储区域的内容的改变。提供了仅当存储区域在指定的存储空间内时使得事件出现的选择。
●STORE USING REAL ADDRESS(使用真实地址存储)指令的执行。
●TRANSACTION END(事务结束)指令的执行
程序可以选择性地指定要识别的上面类型的事件的一个或多个,除了可以仅仅可以与存储改变事件一起指定用于STORE USING REAL ADDRESS的事件。通过程序中断来向程序提供关于PER事件的信息,并且在中断代码中识别中断的起因。
当事务诊断块地址无效时,不存储TBEGIN指定的TDB。
程序中断TDB:真实位置6,144-6,399(16进制1800-18FF)。当因为程序中断导致事务中止时存储程序中断TDB。当因为其他原因导致事务中止时,程序中断TDB的内容不可预测。
程序中断TDB不受到任何保护机制的支配。当程序中断TDB在程序中断期间被存储时未对于其检测到PER存储改变事件。
截取TDB:由状态说明的位置488-495指定的256字节的主真实位置。当中止的事务导致客户程序中断截取(即,截取代码8)时,存储截取TDB。当因为其他原因导致事务中止时,截取TDB的内容不可预测。截取TDB不受到任何保护机制的支配。
如图9中所述,在一个实施例中,事务诊断块900的字段如下:
格式902:字节0包含有效性和格式指示如下:
其中格式字段是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包含在其检测到冲突的存储位置的逻辑地址。当字节1的CTV比特比特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的格式和它被存储的情况与如在上面的操作原理中所述的、当异常条件导致中断时在真实位置160中描述的那些相同。
对于因为包括导致程序中断的任何异常条件的其他原因中止的事务,字节32不可预测。字节32在程序中断TDB中不可预测。
该字段仅被存储在由事务诊断块地址指定的TDB中;否则,该字段被保留。仅对于访问列表控制的或DAT保护、ASCE类型、页面转换、第一区域转换、第二区域转换、第三区域转换和分段转换程序异常条件存储EAID。
数据异常代码(DXC)916:对于因为被过滤的数据异常程序异常条件导致中止的事务,TBEGIN指定的TDB的字节33包含数据异常代码。在z/Architecture的一个示例中,DXC的格式和其被存储的情况与在上面的操作原理中所述的、当异常条件导致中断时在真实位置147中描述的那些相同。在一个示例中,位置147包括DXC。
对于因为包括导致程序中断的任何异常条件的其他原因中止的事务,字节33不可预测。字节33在程序中断TDB中不可预测。
该字段仅被存储在由事务诊断块地址指定的TDB中;否则,该字段被保留。仅对于数据程序异常条件存储DXC。
程序中断标识(PIID)918:对于因为被过滤的数据异常条件导致中止的事务,TBEGIN指定的TDB的字节36-39包含数据中断标识。在z/Architecture的一个示例中,PIID的格式与(在上面的操作原理中所述的)当条件导致中断时在真实位置140-143中描述的那个相同,除了在PIID的比特13-14中的指令长度代码对于在其检测到异常条件的指令是各自的。
对于因为包括导致程序中断的异常条件的其他原因中止的事务,字节36-39不可预测。字节36-39在程序中断TDB中不可预测。
该字段仅被存储在由事务诊断块地址指定的TDB中;否则,该字段被保留。仅对于数据程序异常条件存储程序中断标识。
转换异常标识(TEID)920:对于因为下面的被过滤的程序异常条件导致中止的事务,TBEGIN指定的TDB的字节40-47包含转换异常标识。
●访问列表控制的或DAT保护
●ASCE类型
●页面转换
●第一区域转换
●第二区域转换
●第三区域转换
●分段转换异常
在z/Architecture的一个示例中,TEID的格式与在上面的操作原理中所述的、当该条件导致中断时在真实位置168-175中描述的那个相同。
对于因为包括导致程序中断的异常条件的其他原因中止的事务,字节40-47不可预测。字节40-47在程序中断TDB中不可预测。
该字段仅被存储在由事务诊断块地址指定的TDB中;否则,该字段被保留。
断开的事件地址922:对于因为被过滤的数据异常条件导致中止的事务,TBEGIN指定的TDB的字节48-55包含断开的事件地址。在z/Architecture的一个示例中,断开的事件地址的格式与在上面的操作原理中所述的、当该条件导致中断时在真实位置272-279中描述的那个相同。
对于因为包括导致程序中断的异常条件的其他原因中止的事务,字节48-55不可预测。字节48-55在程序中断TDB中不可预测。
该字段仅被存储在由事务诊断块地址指定的TDB中;否则,该字段被保留。
下面描述与断开的事件相关的另外的细节。
在z/Architecture的一个实施例中,当安装PER-3设施时,它向程序提供最后指令的地址,以引起在CPU的顺序执行中的断开。断开的事件地址记录可以被用作用于野分支检测的调试辅助。该设施提供了例如被称为断开的事件地址寄存器的、在CPU中的64比特寄存器。每次除了事务中止之外的指令在顺序指令执行中引起断开时(即,在PSW中的指令地址被更换,而不是递增指令的长度),将那个指令的地址布置在断开的事件地址寄存器中。么激荡程序中断出现时,不论是否指示PER,在真实存储器位置272-279中布置断开的事件地址寄存器的当前内容。
如果引起断开的事件的指令是执行类型指令(EXECUTE(执行)或EXECUTERELATIVE LONG(执行较长))的目标,则用于获取执行类型的指令的指令地址被布置在断开的事件地址寄存器中。
在z/Architecture的一个实施例中,将断开的事件看作每当下面的指令之一引起分支时出现:BRANCH AND LINK(BAL、BALR);BRANCH AND SAVE(BAS、BASR);BRANCH ANDSAVE AND SET MODE(BASSM);BRANCH AND SET MODE(BSM);BRANCH AND STACK(BAKR);BRANCH ON CONDITION(BC、BCR);BRANCH ON COUNT(BCT、BCTR、BCTG、BCTGR);BRANCH ONINDEX HIGH(BXH、BXHG);BRANCH ON INDEX LOW OR EQUAL(BXLE、BXLEG);BRANCH RELATIVEON CONDITION(BRC);BRANCH RELATIVE ON CONDITION LONG(BRCL);BRANCH RELATIVE ONCOUNT(BRCT、BRCTG);BRANCH RELATIVE ON INDEX HIGH(BRXH、BRXHG);BRANCH RELATIVEON INDEX LOW OR EQUAL(BRXLE、BRXLG);COMPARE AND BRANCH(CRB、CGRB);COMPARE ANDBRANCH RELATIVE(CRJ、CGRJ);COMPARE IMMEDIATE AND BRANCH(CIB、CGIB);COMPAREIMMEDIATE AND BRANCH RELATIVE(CIJ、CGIJ);COMPARE LOGICAL AND BRANCH (CLRB、CLGRB);COMPARE LOGICAL AND BRANCH RELATIVE(CLRJ、CLGRJ);COMPARE LOGICALIMMEDIATE AND BRANCH(CLIB、CLGIB);以及COMPARE LOGICAL IMMEDIATE AND BRANCHRELATIVE (CLIJ、CLGIJ)。
也将断开的事件看作每当下面的指令之一完成时出现:BRANCH AND SETAUTHORITY(BSA);BRANCH IN SUBSPACE GROUP(BSG);BRANCH RELATIVE AND SAVE(BRAS);BRANCH RELATIVE AND SAVE LONG (BRASL);LOAD PSW(LPSW);LOAD PSW EXTENDED(LPSWE);PROGRAM CALL(PC);PROGRAM RETURN(PR);PROGRAM TRANSFER (PT);PROGRAMTRANSFER WITH INSTANCE(PTI);RESUME PROGRAM(RP);以及TRAP(TRAP2、TRAP4)。
作为事务中止的结果(例如,隐含地或作为事务中止指令的结果),不将断开的事件看作出现。
模型相关的诊断信息924:字节112-127包含模型相关的诊断信息。
对于除了12之外的所有中止代码(过滤的程序中断),在被存储的每一个TDB中存储该模型相关的诊断信息。
在一个实施例中,该模型相关的诊断信息包括下面的内容:
●字节112-119包含被称为事务执行分支指示(TXBI)的64比特的向量。该向量的前63比特的每一个指示在CPU在事务执行模式中的同时执行分支指令的结果如下:
比特0表示第一这样的分支指令的结果,并且,比特1表示第二这样的指令的结果,等等。
如果在CPU在事务执行模式中的同时执行少于63个分支指令,则将不对应于分支指令的最后的比特被设置为0(包括比特63)。当执行超过63个分支指令时,TXBI的比特63被设置为1。
通过能够引起断开的事件的指令来设置在TXBI中的比特,如上列出,除了下面的内容之外:
-任何受限指令不使得在TXBI中设置比特。
-对于例如z/Architecture的指令,当BRANCH ON CONDITION、BRANCH RELATIVEON CONDITION或BRANCH RELATIVE ON CONDITION LONG指令的M1字段是0时,或者当下面的指令的R2字段是0时,它是模型相关的,不论指令的执行是否申请在TXBI中设置比特。
●BRANCH AND LINK(BALR);BRANCH AND SAVE(BASR);BRANCH AND SAVE AND SETMODE(BASSM);BRANCH AND SET MODE(BSM);BRANCH ON CONDITION(BCR);and BRANCH ONCOUNT(BCTR、BCTGR)
●对于由主机访问异常引起的中止条件,字节127的比特位置0被在为1。对于所有其他中止条件,字节127的比特位置0被设置为0。对于被加载/存储单元(LSU)检测的中止条件,字节127的最右5个比特包含起因的指示。对于未被LSU检测到的中止条件,保留字节127。
一般寄存器930:字节128-255包含在中止事务时的通用寄存器0-15的内容。以在字节128-135中的通用寄存器0和在字节136-143中的通用寄存器1等开始,以升序来存储寄存器。
保留:保留所有其他的字段。除非另外指示,保留的字段的内容不可预测。
如其他CPU和I/O子系统所观察,在事务中止期间的TDB的存储是在任何非事务存储后出现的多访问参考。
可能因为在其中事务执行的立即配置的范围之外的起因导致中止该事务。例如,由管理程序(诸如LPAR或z/VM)识别的瞬态事件可能使得事务中止。
在事务诊断块中提供的信息意欲用于诊断目的,并且大体正确。然而,因为中止可能被在立即配置的范围之外的事件引起,所以诸如中止代码或程序中断标识的信息可能未正确地反映在该配置内的条件,并且因此,不应当用在确定程序行为中。
除了在TDB中存储的诊断信息之外,当因为任何数据异常程序异常条件导致事务中止并且APF寄存器控制控制寄存器0的比特45和有效允许浮点操作控制(F)都是1时,将数据异常代码(DXC)布置到浮点控制寄存器(FPCR)的字节2内,而与过滤是否适用于程序异常条件无关。当事务中止,并且APF寄存器控制或有效允许浮点操作控制两者都是0时,不将DXC布置到FPCR内。
在一个实施例中,如在此所示,当安装事务执行设施时,提供了下面的一般指令。
●EXTRACT TRANSACTION NESTING DEPTH
●NONTRANSACTIONAL STORE
●TRANSACTION ABORT
●TRANSACTION BEGIN
●TRANSACTION END
当CPU在事务执行模式中时,特定指令的尝试执行被限制,并且使得事务中止。
当在被约束的事务执行模式中被发出时,受限指令的尝试执行也可能导致设置约束程序中断,或者可能导致执行进行,就像事务未约束。
在z/Architecture的一个示例中,受限指令包括作为示例的下面的非特权指令:COMPARE AND SWAP AND STORE;MODIFY RUNTIME INSTRUMENTATION CONTROLS;PERFORMLOCKED OPERATION;当在M1字段中的代码是6或7时,PREFETCH DATA(RELATIVE LONG);当M3字段是0并且在R1字段中的代码是6或7时,STORE CHARACTERS UNDER MASK HIGH;STOREFACILITY LIST EXTENDED;STORE RUNTIME INSTRUMENTATION CONTROLS;SUPERVISORCALL;以及TEST RUNTIME INSTRUMENTATION CONTROLS。
在上面的列表中,COMPARE AND SWAP AND STORE和PERFORM LOCKED OPERATION是可以通过利用在TX模式中的基本指令更有效地实现的复杂指令。当代码6和7释放高速缓存线时,PREFETCH DATA和PREFETCH DATA RELATIVE LONG的情况被限制,使得在事务完成之前的数据的提交可能必要化。SUPERVISOR CALL当它引起中断(其引起中止事务)时被限制。
在下面列出的条件下,限制下面的指令:
●当指令的R2字段不是零并且使能分支跟踪时,BRANCH AND LINK(BALR)、BRANCHAND SAVE(BASR)和BRANCH AND SAVE AND SET MODE。
●当指令的R2字段不是零并且使能分支跟踪时,RANCH AND SAVE AND SET MODE和BRANCH AND SET MODE;当使能模式跟踪时,SET ADDRESSING MODE。
●当识别监控器事件条件时,MONITOR CALL。
上面的列表包括可以形成跟踪条目的指令。如果允许这些指令执行事务处理地和形成的跟踪条目,并且随后中止事务,则在控制寄存器12中的跟踪表格指针将被向前,但是向跟踪表格的存储将被丢弃。这将在跟踪表格中留下不一致的间隙;因此,在指令将形成跟踪条目的情况下限制该指令。
当CPU在事务执行模式中时,它是模型相关的,而不论是否限制下面的指令:CIPHER MESSAGE;CIPHER MESSAGE WITH CFB;CIPHER MESSAGE WITH CHAINING;CIPHERMESSAGE WITH COUNTER;CIPHER MESSAGE WITH OFB;COMPRESSION CALL;COMPUTEINTERMEDIATE MESSAGE DIGEST;COMPUTE LAST MESSAGE DIGEST;COMPUTE MESSAGEAUTHENTICATION CODE;CONVERT UNICODE-16TO UNICODE-32;CONVERT UNICODE-16TOUNICODE-8;CONVERT UNICODE-32TO UNICODE-16;CONVERT UNICODE-32TO UNICODE-8;CONVERT UNICODE-8TO UNICODE-16;CONVERT UNICODE-8TO UNICODE-32;PERFORMCRYPTOGRAPHIC COMPUTATION;RUNTIME INSTRUMENTATION OFF;以及,RUNTIMEINSTRUMENTATION ON。
上面的指令的每一个或者当前被硬件协处理器实现,或者已经在过去的机器中,并且因此被看作受限。
当有效允许AR修改(A)控件是0时,限制下面的指令:COPY ACCESS;LOAD ACCESSMULTIPLE;LOAD ADDRESS EXTENDED;以及,SET ACCESS。
上面的指令的每一个使得修改访问寄存器的内容。如果在事务控制指令中的A控件是0,则该程序已经明确地指示,不允许访问寄存器修改。
当有效允许浮点操作(F)控件是0时,浮点指令被限制。
在特定情况下,可以限制下面的指令:EXTRACT CPU TIME;EXTRACT PSW;STORECLOCK;STORE CLOCK EXTENDED;以及,STORE CLOCK FAST。
上面的指令的每一个受到在解释执行状态描述中的增强控件的支配。如果管理程序已经对于这些指令设置了中断控件,则可能因为管理程序实现方式而延长它们的执行;因此,如果中断出现,则它们被看作受限。
当因为受限指令的尝试执行导致未约束事务被中止时,在事务诊断块中的事务中止代码被设置为11(受限指令),并且条件代码被设置为3,除了下面的部分:当因为否咱导致特权的操作异常的指令的尝试执行导致中止未约束事务时,不可预测的是,中止代码是否被设置为11(受限指令)或4(源自特权操作程序中断的识别的未过滤程序中断)。当因为当在M1字段中的代码是6或7时的PREFETCH DATA(RELATIVE LONG)或当M3字段是0并且在R1字段中的代码是6或7时的STORE CHARACTERS UNDER MASK HIGH的尝试执行导致未约束事务被中止时,不可预测的是,中止代码是否被设置为11(受限指令)或16(高速缓存其他)。当因为MONITOR CALL的尝试执行导致将未约束事务中止并且监控器事件条件和指定异常条件两者都存在时,不可预测的是,中止代码是否被设置为11或4,或者如果程序中断被过滤,则是否被设置为12。
可以在被约束事务中限制另外的指令。虽然这些指令当前未被定义为在未约束事务中被限制,但是可以在未来的处理器上的未约束事务中在特定情况下限制它们。
可以在未来处理器上的事务执行模式中允许特定的受限指令。因此,程序不应当依赖于因为受限指令的尝试执行导致中止的事务。TRANSACTION ABORT指令应当用于可靠地使得事务被中止。
在未约束事务中,程序应当提供替代的非事务代码路径,以容纳因为受限指令导致中止的事务。
在运行中,当事务嵌套深度是0时,导致条件代码0的事务开始(TBEGIN)指令的执行使得CPU进入未约束事务执行模式。当事务嵌套深度是0时,导致条件代码0的被约束的事务开始(TBEGINC)指令的执行使得CPU进入被约束事务执行模式。
除了另外明确地指示,索引非事务执行的所有规则也适用于事务执行。下面是在CPU在事务执行模式中的同时的处理的另外的特性。
当CPU在未约束事务执行模式中时,导致条件代码0的事务开始指令的执行使得CPU保持在未约束事务执行模式中。
如CPU所观察,在事务执行模式中进行的获取和存储与在不在事务执行模式中的同时进行的那些不是不同。如其他CPU和I/O子系统所观察,在CPU在事务执行模式中的同时进行的所有存储器操作数访问看起来是单个块同时访问。即,对于在半字、字、双字或四倍长字内的所有字节的访问被指定为看起来是块同时的,如其他CPU和I/O(例如,信道)程序所观察。半字、字、双字或四倍长字在该部分中被称为块。当获取类型参考被指定为看起来在块内是同时的时,在正在获取在块中包含的字节的时间期间不允许由另一个CPU或I/O程序对于块的存储访问。当存储类型参考被指定为看起来在块内同时时,在块内的字节正在被存储的时间期间另一个CPU或I/O程序不允许对于块的访问,或者是获取或者是存储。
对于指令的存储访问和DAT和ART(访问寄存器表格)表格获取遵循非事务规则。
CPU通过TRANSACTION END(事务结束)指令正常地离开事务执行模式,该指令使得事务嵌套深度转换为0,在该情况下,事务完成。
当CPU通过TRANSACTION END(事务结束)指令的完成离开事务执行模式时,当在事务执行模式中的同时进行的所有存储被提交;即,存储看起来作为单个块同时操作而出现,如其他CPU和I/O子系统所观察。
可能因为多种原因隐含地中止事务,或者,可能通过事务中止指令来明确地中止事务。下面描述事务中止、对应的中止代码和被布置到事务中止PSW内的条件代码的示例可能原因。
外部中断:事务中止代码被设置为2,并且在事务中止PSW中的条件代码被设置为2。事务中止PSW被存储为作为外部中断处理的一部分的外部旧PSW。
程序中断(未过滤):导致中断的程序异常条件(即,未过滤条件)使得使用代码4将事务中止。对于程序中断代码特定地设置在事务中止PSW中的条件代码。事务中止PSW被存储为作为程序中断处理的一部分的程序旧PSW。
否则导致因为操作异常而将事务中止的指令可以获得替代的结果:对于未约束事务,事务可以取代使用中止代码11(受限指令)中止;对于被约束事务,可以取代操作异常而识别事务约束程序中断。
当与任何其他未过滤程序异常条件相结合地识别PER(程序事件记录)时,条件代码被设置为3。
机器查看中断:事务中止代码被设置为5,并且在事务中止PSW中的条件代码被设置为2。事务中止PSW被存储为作为机器查看中断处理的一部分的机器查看旧PSW。
I/O中断:事务中止代码被设置为6,并且,在事务中止PSW中的条件代码被设置为2。事务中止PSW被存储为作为I/O中断处理的一部分的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。
超过嵌套深度:当事务嵌套深度在该配置的最大可允许值处并且执行事务开始指令时检测到超过嵌套深度条件。使用事务中止代码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。作为另一个示例,原因可以是管理程序调用条件,其中,中止代码被设置为3,并且在事务中止PSW中的条件代码被设置为3。其他或不同的示例也是可能的。
注释:
1.该其他条件可能源自下面部分的任何一种:
●指令,诸如在z/Architecture中的、由在该配置中的另一个CPU执行的COMPAREAND REPLACE DAT TABLE ENTRY、COMPARE AND SWAP AND PURGE、INVALIDATE DAT TABLEENTRY、INVALIDATE PAGE TABLE ENTRY、其中NQ控件是0并且SK控件是1的PERFORM FRAMEMANAGEMENT FUNCTION、、其中NQ控件是0的SET STORAGE KEY EXTENDED;条件代码被设置为2。
●在CPU上执行操作员功能,诸如复位、重启或停止或者等同的信号处理器命令。
●上面未枚举的任何其他条件;条件代码被设置为2或3
2.在其检测到获取和存储冲突的位置可以是在同一高速缓存线内的任何位置。
3.在特定条件下,CPU可能不能在类似的中止条件之间区分。例如,不能从相应的获取或存储冲突区分获取或存储溢出。
4.由CPU进行的多个指令路径的推测执行可能导致因为冲突或溢出条件导致事务被中止,即使这样的条件在概念序列中不出现。在被约束事务执行模式中的同时,CPU可能暂时禁止推测执行,允许事务尝试完成,而不推测地检测这样的冲突或溢出。
事务中止指令的执行使得事务中止。从第二操作数地址设置事务中止代码。分别根据第二操作数地址的比特63是否是0或1,条件代码被设置为2或3。
图10汇总了在事务诊断块中存储的示例中止代码和对应的条件代码(CC)。在图10中的说明图示了一种具体实现方式。其他实现方式和值的编码是可能的。
在一个实施例中,并且如上所述,事务设施用于被约束事务和未约束事务两者以及与其相关联的处理。初始,讨论被约束事务,然后讨论未约束事务。
被约束事务在事务描述中执行,而没有落回路径。它是有益于紧凑功能的处理模式。在没有重复的中断或与其他CPU或I/O子系统的冲突(即,由不允许事务成功地完成的条件引起)的情况下,被约束事务将最终完成;因此,中止处理器例程不被需要,并且不被指定。例如,在不违反不能被编址(例如,除以0)的条件、不允许事务完成的条件(例如,不允许指令运行的定时器中断;热I/O等)或与被约束事务相关联的限制或约束的违反的情况下,事务将最终完成。
当事务嵌套深度初始为0时,通过被约束的事务开始(TBEGINC)指令来开始被约束事务。在一个实施例中,被约束事务受到下面的约束的限制。
1.事务执行不超过32个指令,该指令不包括被约束的事务开始(TBEGINC)和事务结束指令。
2.在事务中的所有指令要在存储器的256个连续字节内,包括被约束的事务开始(TBEGINC)和任何事务结束指令。
3.除了受限指令之外,下面的指令适用于被约束事务。
a.指令限于被称为一般指令的那些,包括例如加、减、乘、除、移位、旋转等。
b.分支指令限于下面的部分(所列出的指令在一个示例中是z/Architecture的):
●BRANCH RELATIVE ON CONDITION,其中,M1不是零,并且RI2字段包含正值。
●BRANCH RELATIVE ON CONDITION LONG,其中,M1字段不是0,并且RI2字段包含不引起地址越界的正值。
●COMPARE AND BRANCH RELATIVE、COMPARE IMMEDIATE AND BRANCH RELATIVE、COMPARE LOGICAL AND BRANCH RELATIVE和COMPARE LOGICAL IMMEDIATE AND BRANCHRELATIVE,其中,M3字段不是0,并且RI4字段包含正值(将,仅具有非零分支掩蔽的正向分支)。
c.除了事务结束和引起指定的操作数串行化的指令之外,限制引起串行化功能的指令。
d.存储和存储操作(SS-)与具有扩展的操作码的存储和存储操作(SSE-)指令被限制。
e.限制下面的一般指令(它们在这个示例中为z/Architecture的)的全部:CHECKSUM;CIPHER MESSAGE;CIPHER MESSAGE WITH CFB;CIPHER MESSAGE WITH CHAINING;CIPHER MESSAGE WITH COUNTER;CIPHER MESSAGE WITH OFB;COMPARE AND FORMCODEWORD;COMPARE LOGICAL LONG;COMPARE LOGICAL LONG EXTENDED;COMPARE LOGICALLONG UNICODE;COMPARE LOGICAL STRING;COMPARE UNTIL SUBSTRING EQUAL;COMPRESSIONCALL;COMPUTE INTERMEDIATE MESSAGE DIGEST;COMPUTE LAST MESSAGE DIGEST;COMPUTEMESSAGE AUTHENTICATION CODE;CONVERT TO BINARY;CONVERT TO DECIMAL;CONVERTUNICODE-16TO UNICODE-32;CONVERT UNICODE-16TO UNICODE-8;CONVERT UNICODE-32TOUNICODE-16;CONVERT UNICODE-32TO UNICODE-8;CONVERT UNICODE-8TO UNICODE-16;CONVERT UNICODE-8TO UNICODE-32;DIVIDE;DIVIDE LOGICAL;DIVIDE SINGLE;EXECUTE;EXECUTE RELATIVE LONG;EXTRACT CACHE ATTRIBUTE;EXTRACT CPU TIME;EXTRACT PSW;EXTRACT TRANSACTION NESTING DEPTH;LOAD AND ADD;LOAD AND ADD LOGICAL;LOAD ANDAND;LOAD AND EXCLUSIVE OR;LOAD AND OR;LOAD PAIR DISJOINT;LOAD PAIR FROMQUADWORD;MONITOR CALL;MOVE LONG;MOVE LONG EXTENDED;MOVE LONG UNICODE;MOVESTRING;NON-TRANSACTIONAL STORE;PERFORM CRYPTOGRAPHIC COMPUTATION;PREFETCHDATA;PREFETCH DATA RELATIVE LONG;RUNTIME INSTRUMENTATION EMIT;RUNTIMEINSTRUMENTATION NEXT;RUNTIME INSTRUMENTATION OFF;RUNTIME INSTRUMENTATION ON;SEARCH STRING;SEARCH;STRING UNICODE;SET ADDRESSING MODE;当M3字段是0并且在R1字段中的代码是6或7时的STORE CHARACTERS UNDER MASK HIGH;STORE CLOCK;STORE CLOCKEXTENDED;STORE CLOCK FAST;STORE FACILITY LIST EXTENDED;STORE PAIR TOQUADWORD;TEST ADDRESSING MODE;TRANSACTION ABORT;TRANSACTION BEGIN(both TBEGINand TBEGINC);TRANSLATE AND TEST EXTENDED;TRANSLATE AND TEST REVERSE EXTENDED;TRANSLATE EXTENDED;TRANSLATE ONE TO ONE;TRANSLATE ONE TO TWO TRANSLATE TWO TOONE;以及,TRANSLATE TWO TO TWO。
4.事务的存储器操作数访问不超过4个八倍长字。注意,LOAD ON CONDITION和STORE ON CONDITION被看作参考存储器,而与条件代码无关。八倍长字例如是在32字节边界上的一组32个连续字节。
5.在这个CPU上执行的事务或由其他CPU或I/O子系统进行的存储不访问在任何4K字节块中的存储器操作数,该任何4K字节块包含以被约束的事务开始(TBEGINC)指令开始的存储器的256字节。
6.事务不使用被映射到同一绝对地址的不同逻辑地址来访问指令或存储器操作数。
7.由事务进行的事务参考要在单个双字内,除了对于LOAD ACCESS MULTIPLE、LOAD MULTIPLE、LOAD MULTIPLE HIGH、STORE ACCESS MULTIPLE、STORE MULTIPLE和STOREMULTIPLE HIGH,操作数参考要在单个八倍长字内。
如果被约束事务违反上面列出的任何约束1-7,则(a)识别事务约束程序中断,或者(b)执行进行,就像事务未约束,除了另外的约束违反仍然导致事务被约束程序中断。不可预测的是要采取哪种行为,并且所采取的行为可以基于违反那个约束而不同。
在没有约束违反、重复的中断或与其他CPU或I/O子系统的冲突的情况下,被约束事务最终完成,如上所述。
1.如果事务满足下面的标准,则成功地完成被约束事务的机会改善:
a.所发出的指令比最大32更少。
b.存储器操作数参考比最大4个八倍长字更少。
c.存储器操作数参考在同一高速缓存线上。
d.对于相同位置的存储器操作数参考通过所有的事务在同一阶上出现。
2.被约束事务不必然保证在其第一执行上成功地完成。然而,如果中止不违反所列出的约束的任何一个的被约束事务,则CPU使用电路来保证事务的重复执行随后成功。
3.在被约束事务内,事务开始是受限指令,因此,不能嵌套被约束事务。
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子系统所观察,作为将事务嵌套深度递减到0的事务结束指令的结果(正常结束)或作为事务被中止的结果,当CPU离开事务执行模式时,在CPU在事务执行模式中的同时执行的串行化操作出现。
在执行串行化之后,进行确定关于是否识别了异常,查询1102。如果如此,则处理异常,步骤1104。例如,识别特殊操作异常,并且如果事务执行控件控制寄存器0的比特8是9,则抑制操作。作为另外的示例,如果B1字段指令的比特16-19不是0,则识别指定异常,并且抑制操作;如果TBEGINC是执行类型指令的目标,则识别执行异常并且抑制操作;并且,如果未在配置中安装事务执行设施,则识别操作异常并且抑制操作。如果CPU已经在被约束事务执行模式中,则识别事务被被约束异常程序异常,并且抑制该操作。而且,如果事务嵌套深度当递增1时超过模型相关的最大事务嵌套深度,则使用中止代码13来将事务中止。可以识别和处理其他或不同的异常。
然而,如果没有异常,则进行确定关于事务嵌套深度是否是0,查询1106。如果事务嵌套深度是0,则将事务诊断块地址看作无效,步骤1108;从当前PSW的内容设置事务中止PSW,除了事务中止PSW的指令地址指定TBEGINC指令,而不是下一个顺序指令,步骤1110;并且,由通用寄存器存储掩蔽指定的通用寄存器对的内容被存储在程序不能字节访问的模型相关的位置中,步骤1112。而且,嵌套深度被设置为1,步骤1114。另外,允许浮点操作(F)的有效值和程序中断过滤控件(PIFC)被设置为0,步骤1116。而且,确定允许AR修改(A)控件的有效值,指令的I2字段的比特12字段,步骤1118。例如,有效A控件是在用于当前水平和用于任何外部TBEGIN指令的TBEGINC指令中的A控件的逻辑与。
返回到查询1106,如果事务嵌套深度大于0。则嵌套深度递增1,步骤1120。而且,允许浮点操作(F)的有效值被设置为0,并且,程序中断过滤控件(PIFC)的有效值不变,步骤1122。处理然后继续步骤1118。在一个实施例中,事务的成功开始导致条件代码0。这结束了与执行TBEGINC指令相关联的立即的一个实施例。
在一个实施例中,上面提供的异常查看可以以不同的顺序出现。用于异常查看的一种具体顺序如下。
具有与用于一般情况的程序中断条件的优先级相同的优先级的异常。
因为包含非零值的B1字段导致的指定异常。
因为超过事务嵌套深度导致的中止。
因为正常完成导致的条件代码0。
另外,在一个或多个实施例中下面的部分适用:
1.如果事务中止,而不是当事务通过事务结束正常地结束时,则仅恢复被通用寄存器存储掩蔽指定为要被存储的寄存器。仅在中止时恢复由最外事务开始指令的GRSM指定的寄存器。
I2字段应当指定所有的寄存器对,该所有的寄存器对提供通过被约束事务改变的输入值。因此,如果事务被中止,则当重新执行被约束事务时将输入寄存器值恢复到它们的原始内容。
2.在大多数模型上,通过执行需要在通用寄存器存储掩蔽中存储和恢复的寄存器的最小数量,可以在事务开始时和当事务中止时实现改善的性能。
下面说明基于当前事务嵌套深度(TND)的事务开始指令(TBEGIN和TBEGINC)和当TND不是0时CPU是否在未约束或约束的事务执行模式中的结果。
说明:
CTX CPU在被约束的事务执行模式中
NTX CPU在未约束的事务执行模式中
TND 在指令的开始处的事务嵌套深度
如在此所述,在一个方面中,假定被约束事务不包含使得它不能完成的条件,它保证完成。为了保证它完成,执行事务的处理器(例如,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
●递增TND
○如果TND从0向1转换,则CPU进入被约束的TDM模式
○否则,CPU保持在未约束的TX模式中
●指令使用CC0完成
●异常:
○如果B1字段不是0的指定异常(PIC(程序中断代码)0006)
○如果事务执行控件(CR0.8)是0的特殊操作异常(PIC十六进制的0013)
○如果未安装被约束事务执行设施的操作异常(PIC 0001)
○如果指令是执行类型指令的目标的执行异常(PIC 0003)
○如果超过嵌套深度的中止代码13
●在被约束事务中的中止条件:
○异常PSW指向TBEGINC指令
-不是跟随其的指令
-中止条件使得重新驱动整个TX
*无失败路径
○CPU采取特殊措施来保证在重新驱动时的成功的完成
○假定没有一致的冲突、中断或被约束的违反,事务保证最终的完成。
●约束违反:
○PIC十六进制0018–指示事务约束的违反
○或者,事务就像未约束那样运行
如上所述,除了选用的被约束事务处理,在一个实施例中,事务设施也提供了未约束事务处理。关于未约束事务的处理,并且具体地说,参考图12描述与TBEGIN指令相关联的处理。TBEGIN指令的执行使得CPU或者进入或者保持在未约束事务执行模式中。执行TBEGIN的CPU(即,处理器)执行图12的逻辑。
参见图12,基于TBEGIN指令的执行,执行串行化功能(如上所述),步骤1200。在执行串行化后,确定关于是否识别了异常,查询1202。如果如此,则处理异常,步骤1204。例如,如果事务异常控件控制寄存器0的比特8是0,则识别特殊操作异常并且抑制操作。而且,如果程序中断过滤控件指令的I2字段的比特14-15包含值3或者第一操作数地址未指定双字边界,则识别指定异常,并且抑制操作。如果在配置中未安装事务执行设施,则识别操作异常并且抑制操作;并且,如果TBEGIN是执行类型指令的目标,则识别执行异常并且抑制操作。另外,如果CPU在被约束的事务执行模式中,则识别事务约束的异常程序异常,并且抑制该操作。而且,如果事务嵌套深度当递增1时超过模型相关的最大事务嵌套深度,则使用中止代码13来中止事务。
而且,当指令的B1字段不是0,并且CPU不在为事务执行模式中,即,事务嵌套深度是0时,则确定对于第一操作数的存储可访问性。如果不能为了存储而访问第一操作数,则识别访问异常,并且根据特定访问异常条件来将操作无效、抑制或结束。另外,识别用于第一操作数的任何PER存储改变事件。当B1字段不是0并且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控件的逻辑与。另外,确定允许浮点操作(F)控件的有效值,指令的I2字段的比特13,步骤1220。有效F控件是在用于当前层和用于所有外层的TBEGIN指令中的F控件的逻辑与。而且,确定程序中断过滤控件(PIFC)的有效值,指令的I2字段的比特14-15,步骤1222。有效PIFC值是在用于当前层和用于所有外层的TBEGIN指令中的最高值。
另外,向事务嵌套深度加上值1,步骤1224,并且,指令使用设置条件代码0来完成,步骤1226。如果事务嵌套深度从0转换为1,则CPU进入未约束事务执行模式;否则,CPU保持在未约束事务执行模式中。
返回到查询1210,如果B1等于0,则事务诊断块地址无效,步骤1211,并且处理继续步骤1218。类似地,如果CPU在事务执行模式中,查询1206,则处理继续步骤1218。
TBEGIN的执行的结果产生的条件代码包括例如:
0 事务启动成功
1 --
2 --
3 --
程序异常包括例如:
●访问(存储,第一操作数)
●操作(未安装事务执行设施)
●特殊操作
●指定
●事务约束(因为受限指令)
在一个实施例中,上面提供的异常查看可以以不同的顺序出现。对于异常查看的一种具体顺序如下:
●具有与用于一般情况的程序中断条件的优先级相同的优先级的异常。
●因为保留的PIFC值导致的指定异常。
●因为不在双字边界上的第一操作数地址导致的指定异常。
●访访问异常(当B1字段不是0时)
●因为超过最大事务嵌套深度导致的中止
●因为正常的完成导致的条件代码0
注释:
1.当B1字段不是0时,下面的部分适用:
●当启动最外事务时,要提供可访问的事务诊断块(TDB),即使事务从不中止。
●因为不可预测是否对于嵌套的事务测试TDB的可访问性,应当对于任何嵌套的TBEGIN指令提供可访问的TDB。
●其中B1字段不是0的任何TBEGIN的性能和对于由其中B1字段不是0的最外TBEGIN启动的事务出现的任何中止处理的性能可能比当B1字段是0时更慢。
2.在一个实施例中,如果事务中止,而不是当事务通过事务结束而正常结束时,仅恢复由通用寄存器存储掩蔽指定存储的寄存器。仅在中止时恢复由最外事务开始指令的GRSM指定的寄存器。
I2字段应当指定所有的寄存器对,该所有的寄存器对提供了被事务改变的输入值。因此,如果中止事务,则当进入中止处理器时将输入寄存器值恢复到它们的原始内容。
3.预期事务开始(TBEGIN)指令被条件分支指令跟随,该条件分支指令将确定事务是否被成功地启动。
4.如果因为不导致中断的条件导致中止事务,则由事务中止PSW指定的指令接收控制(即,在最外事务开始(TBEGIN)之后的指令)。除了由事务开始(TBEGIN)指令设置的条件代码之外,当事务中止时也设置条件代码1-3。
因此,在最外事务开始(TBEGIN)指令之后的指令序列应当能够容纳所有四个条件代码,即使在这个示例中TBEGIN指令仅设置代码0。
5.在大多数模型上,通过指定在通用寄存器存储掩蔽中需要存储和恢复的寄存器的最小数量,可以在事务开始时和当事务中止时实现改善的性能。
6.在未约束事务执行模式中的同时,程序可以调用服务功能,服务功能可以改变访问寄存器或浮点寄存器(包括浮点控制寄存器)。虽然这样的服务例程可以在进入时存储改变的寄存器并且在退出时恢复它们,但是可以在该例程的正常退出之前将事务中止。如果调用程序在CPU在未约束事务执行模式中的同时未保留这些寄存器,则它可能不能容许服务功能的寄存器的改变。
为了在未约束事务执行模式中的同时防止访问寄存器的无意的改变,该程序可以将允许AR修改控件,事务开始指令的I2字段的比特12设置为0。类似地,为了防止浮点寄存器的无意改变,该程序可以将允许浮点操作控件,TBEGIN指令的I2字段的比特13设置为0。
7.在事务开始(TBEGIN)指令的执行期间识别的程序异常条件受到被任何外部TBEGIN指令设置的有效程序中断过滤控件的支配。在最外TBEGIN指令的执行期间识别的程序异常条件不进行过滤。
8.为了以串行化的方式更新多个存储位置,常规代码序列可以使用锁定字(信号量)。如果(a)事务执行用于实现多个存储位置的更新,(b)如果事务中止则该程序也提供要调用的“落回”路径,并且(c)落回路径使用锁定字,则事务执行路径也应当测试锁定的可获得性,并且如果不可获得锁定,则通过事务结束指令来结束事务,并且分支到落回路径。这保证了对于串行的资源的一致访问,而与它们是否被事务处理地更新无关。
替代地,如果不可获得锁定,则程序可以中止,然而,该中止处理可以比经由TEND简单地结束事务显著地慢。
9.如果有效程序中断过滤控件(PIFC)大于0,则CPU过滤大多数数据异常程序中断。如果有效允许浮点操作(F)控件是0,则作为因为数据异常程序异常条件导致的中止的结果,不在浮点控制寄存器中设置数据异常代码(DXC)。在该情况(过滤适用并且有效F控件是0)下,仅其中查看DXC的位置在TBEGIN指定的TDB中。如果程序的中止处理器要在这样的情况下查看DXC,则通用寄存器B1应当不是0,使得设置有效事务诊断块地址(TDBA)。
10.如果对于最外TBEGIN指令的TBEGIN指定的TDB存在PER存储改变或零地址检测条件,并且PER事件抑制不适用,则在指令的执行期间识别PER事件,因此使得立即中止事务,而与是否存在任何其他中止条件无关。
在一个实施例中,TBEGIN指令隐含地将事务中止地址设置为跟随TBEGIN的下一个顺序指令。该地址意欲是条件分支指令,其根据条件代码(CC)来确定是否分支。成功的TBEGIN设置CC0,而中止的事务设置CC1、CC2或CC3。
在一个实施例中,TBEGIN指令提供了选用的存储器操作数,其指定事务诊断块(TDB)的地址,如果事务被中止则向该地址内存储信息。
而且,它提供了包括下述部分的立即操作数:
通用寄存器存储掩蔽(GRSM),用于指示在事务执行的开始存储多对通用寄存器,并且如果事务被中止,则将其恢复。
比特(A),用于如果事务修改访问寄存器则允许事务的中止。
比特(F),用于如果事务尝试执行浮点指令,则允许事务的中止;以及
程序中断过滤控件(PIFC),如果事务被中止,则其允许独立的事务层绕过程序中断的实际提供。
A、F和PIFC控件可以在各种嵌套层处不同,并且当结束内部事务层时恢复到前一个层。
而且,TBEGIN(或在另一个实施例中,TBEGINC)用于形成事务权标。选用地,可以将该权标与由TEND指令形成的权标匹配。对于每一个TBEGIN(或TBEGINC)指令,作为示例,从第一操作数地址形成权标。可以独立于基本寄存器是否是0来形成该权标(不像仅当基本寄存器不是0时出现的TDB地址设置那样)。对于使用非零基本寄存器执行的每一个事务结束指令,从其存储器操作数形成类似的权标。如果权标不匹配,则可以识别程序异常以警告不成对的指令的程序。
权标匹配提供了一种机制,该机制意欲通过保证TEND声明与TBEGIN(或TBEGINC)适当地配对来改善软件可靠性。当在特定嵌套层处执行TBEGIN指令时,从识别事务的该情况的存储器操作数地址形成权标。当执行对应的TEND指令时,从指令的存储器操作数地址形成权标,并且,CPU将用于嵌套层的开始权标与结束权标作比较。如果权标不匹配,则识别异常条件。模型可以仅对于某个数量的嵌套层(或不对于嵌套层)实现权标匹配。该权标可以不包含存储器操作数地址的所有比特,或者,。可以经由散列或其他方法来组合比特。可以通过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后的指令接收控制时:
-由CC0指示的TBEGIN成功
-由非零CC指示的中止的事务
●异常:
○如果超过嵌套深度,中止代码13
○如果B1字段不是零并且不能对于存储操作访问存储器操作数的,访问异常(各个PIC之一),
○如果TBEGIN指令是执行类型指令的目标,执行异常(PIC0003)
○如果未安装事务执行设施,操作异常(PIC 0003)
○如果下述的任何一种,PIC 0006
-PIFC有效(3的值)
-第二操作数地址不双字对齐
○如果事务执行控件(CR0.8)是9,PIC十六进制0013
○如果在被约束的TM模式中发出,PIC十六进制0018
如上所述,或者被约束或未约束的事务可以通过事务结束(TEND)指令结束。参考图13来描述关于事务结束(TEND)指令的处理的另外的细节。执行TEND的CPU(即,处理器)执行图13的逻辑。
参见图13,初始,基于处理器获得(例如,获取、接收等)TEND指令,执行各种异常查看,并且如果存在异常,查询1300,则处理异常,步骤1302。例如,如果事务结束是执行类型指令的目标,则抑制操作,并且识别执行异常;并且,如果事务执行控件CR0的别8是0,则识别特殊化操作异常并且抑制操作。而且,如果未在配置中安装事务执行设施,则识别操作异常,并且抑制操作。
返回到查询1300,如果未识别异常,则将事务嵌套深度递减(例如,1),步骤1304。在递减后,进行确定关于事务嵌套深度是否是0,查询1306。如果事务嵌套深度是0,则提交由该事务(和在嵌套的事务内的其他事务,如果有的话,其中,该事务是其一部分)进行的所有存储访问,步骤1308。而且,CPU离开事务执行模式,步骤1310,并且,指令完成,步骤1312。
返回到查询1306,如果事务嵌套深度不等于0,则事务结束指令仅完成。
如果CPU在操作的开始时在事务执行模式中,则条件代码被设置为0;否则,条件代码被设置为2。
注意,有效允许浮点操作(F)控件、允许AR修改(A)控件和程序中断过滤控件(PIFC)在结束启动该层的事务开始指令之前复位到它们各自的值。而且,在操作的完成时执行串行化功能。
在最外事务结束指令的完成时识别的PER指令获取和事务结束事件不导致事务被中止。
在一个示例中,TEND指令也包括基本字段B2和位移字段D2,它们组合(或者,相加)以产生第二操作数地址。在这个示例中,可以执行权标匹配。例如,当B2不是零时,相对于由对应的TBEGIN形成的事务权标匹配第二操作数地址的所选择的比特。如果存在不匹配,则存在异常(例如,PIC 0006)。
根据一个方面,限制在事务内的某些指令的执行。即,在一个实施例中,允许每一个指令事务处理地执行不实用,因为例如:
●指令可以访问很宽范围的存储器——在事务执行设施的能力之外,以在提交结果之前缓冲改变。
●在由一个CPU的事务执行期间,可以延迟由其他CPU和I/O子系统节点的存储器访问。指令可以执行比对于延迟由CPU或信道(或其他I/O子系统组件)进行的其他访问实用的更长的时间段。
●可以通过不能执行事务存储访问的CPU(诸如协处理器)的组件来实现指令。
因为这一点,在事务执行期间限制某些指令。而且,因为在被约束事务中的最后完成的保证,在被约束事务中限制另外的指令。使用TBEGIN和TBEGINC的说明上述了关于这些限制的另外的细节。
在一个实施例中,可以将受限指令分类为多个类别,包括例如:控制和I/O指令(即,特权和半特权指令);引起跟踪或监控器事件计数的指令;SUPERVISOR CALL指令;使用硬件协处理器辅助的指令(例如,消息安全辅助、压缩调用);以及,由管理程序截取的指令。而且,基于对于TBEGIN/TBEGINC的控制来选择性地限制一些类型的指令。这些指令包括修改访问寄存器的指令和浮点指令。如果在事务中遇到受限指令,则事务被中止(例如,中止代码11)。
参考图14A-14C来描述与管理在事务处理中的受限指令相关联的逻辑的一个实施例。通过处理器来执行该逻辑。可以以不同的顺序来执行所执行的操作,并且/或者,可以选用地或隐含地执行操作的一个或多个。
初始参见图14A,通过例如TBEGIN或TBEGINC指令来启动事务的执行,步骤1400。进行确定关于被启动的事务的类型,即,未约束或被约束的事务,如例如事务开始指令的操作码所示,步骤1402。然后进行确定关于是否限制指令,而与事务的类型无关,即,未约束或被约束的事务,如下进一步所述,查询1406。如果与事务的类型无关地限制指令,则进行进一步确定关于事务是否是被约束事务(例如,被TBEGINC启动),查询1408。如果它是被约束事务,则使用事务约束未过滤程序中断中止代码来将事务中止(并且提供中断),步骤1410。否则,使用受限指令中止代码来将事务中止,步骤1412。
返回到查询1406,如果与事务的类型无关的不限制指令,则进行进一步确定关于是否仅对于被约束事务限制指令,查询1414。可以通过将指令的操作码与用于被约束事务的受限操作码的列表作比较或通过其他机制来进行该确定。如果对于任何一种类型的事务不限制指令,则执行该指令,步骤1416。否则,如果仅对于被约束事务限制指令,则进行确定关于事务是否是被约束事务,查询1418。如果它是未约束事务,则执行该指令。然而,如果它是被约束事务,则进行查看关于是否可以执行被约束事务,就像它是未约束事务,查询1420。如果可以将被约束事务看作未约束事务,则执行该指令,步骤1416。否则,处理继续步骤1410,并且指令被中止。
参考图14B来描述确定是否与事务的类型无关地限制指令的另外的细节。初始,进行确定关于指令是否在受限指令的类别中,查询1430,即,是被指示为与事务类型无关的受限指令的指令。在一个实施例中,受限指令的类别包括:控制和/I/O指令;引起跟踪或监控器事件计数的指令;SUPERVISOR CALL指令;使用硬件协处理器辅助的指令;以及,由管理程序截取的指令。而且,基于对于TBEGIN/TBEGINC的控制来选择性地限制一些类型的指令。这些指令包括修改访问寄存器的指令和浮点指令。如果在事务中遇到受限指令,则事务被中止(例如,中止代码11)。可以通过将指令的操作码与在受限指令的类别内的操作码或在受限指令的列表内的操作码作比较来进行该确定。其他机制也是可能的。
如果该指令在受限指令的一个类别中,则它被限制,步骤1434。然而,如果指令不在受限指令的类别中,则进行基于一个或多个事务开始来自的控制来进一步确定关于该指令是否被选择性地指示为受限,查询1432。即,进行确定关于有效允许访问寄存器修改控制或有效允许浮点操作控制是否指示该指令被限制。如果如此指示,则事务被限制,步骤1434。否则,指令不被看作限制的,而与事务的类型无关,步骤1436,并且处理继续查询1414(图14A)以确定是否仅对于被约束事务限制指令。
如上所述,事务开始指令的一个或多个控件用于选择性地确定是否可以在给定的事务内执行特定类型的指令。例如,因为在事务中止时未恢复诸如访问寄存器、浮点寄存器和/或浮点控制寄存器的某些类型的寄存器,事务的中止处理器恢复例程不能适应这样的寄存器的修改或者甚至浮点环境的指令的执行。如在此使用,浮点环境包括可以查看或改变浮点寄存器或浮点控制寄存器的任何指令。因此,使用机制来指示是否容许这样的修改/访问。具体地说,因为中止处理器表示在最外层处的处理,并且因为访问寄存器修改或浮点操作可能已经在内部嵌套层处出现,所以提供了用于指示是否允许寄存器的修改或环境指令的执行的机制。该机制包括例如对于事务开始指令的控件。
在一个实施例中,该控件包括:“A”控件,它是允许访问寄存器修改控件;以及,“F”控件,其是允许浮点操作控件。可以嵌套事务,并且因此,存在用于每一个嵌套层的一组控件。有效A和F控件是在所有嵌套层处的同一类型的所有控件的逻辑与。因此,有效控件是当前嵌套层和所有下层的最小允许。然而,在嵌套事务中,每次执行事务结束指令时,将有效控件恢复到下面的嵌套层的有效控件。例如,一系列嵌套TBEGIN指令可以在嵌套层1、2、3、4和5中将A控件设置为1、1、0、1和0。因此,在嵌套深度1和2,允许访问寄存器修改,但是在嵌套层3和更高处,不允许访问寄存器修改。当程序从从嵌套层3转换回2,访问寄存器修改再一次变得被允许。类似的操作适用于F控件。
参考图14C来描述当嵌套层减少时更新控件的一个实施例。在一个示例中,处理器执行该逻辑。初始,基于例如执行事务开始指令来启动事务,步骤1450。该事务可以或可以不是嵌套的事务的一部分。事务开始指令包括用于指示是否可以更新某些寄存器并且因此是否可以执行某些指令的一个或多个控件。例如,TBEGIN指令包括A和F控件,其每一个分别地如果不允许适当的修改/访问则被设置为0或者如果允许修改/访问则被设置为1。而且,TBEGIN指令包括A控件,其类似地被设置为0或1。基于事务开始指令的执行来使用这些控件的值,以确定A控件的有效值和/或F控件的有效值,如上所述,步骤1452。
在每一个点处,事务可以结束,步骤1454。进行确定关于是否这是最外事务的结尾(即,嵌套的事务的最外事务或不是嵌套的事务的一部分的事务的结尾),查询1456。如果它不是最外事务的结尾,则更新一个或多个有效控件,步骤1458。在一个示例中,通过重新计算不包括来自已经结束的事务的控件的有效控件来更新控件。返回到查询1456,如果是最外事务的结尾,则处理完成。
上面描述了用于限制在事务内的某些指令的执行的机制。作为示例,限制某些类别的指令,并且/或者,提供选择性地指示是否允许执行特定类型的指令的控件。例如,提供了下述控件,该控件指示是否可以修改访问寄存器,并且因此是否可以执行修改这样的寄存器的指令。作为另一个示例,提供了指示是否可以执行浮点操作的控件。
而且,上面提供了更新在存储器中的多个不连续对象的有效手段,而没有经典的(粗粒度的)串行化,诸如锁定,其提供了用于显著的多处理器性能改善的可能。即,更新多个不连续对象,而不强制通过诸如锁定和信号量的经典技术提供的更粗粒度的存储器访问排序。提供了推测执行,而没有繁重的恢复设置,并且提供被约束事务以用于简单的小足迹更新。
可以在多种情况中使用事务执行,该多种情况包括但是不限于部分联机、推测处理和锁定省略。在部分联机中,在TBEGIN/TEND中缠绕要在执行的路径中包括的部分区域。可以在其中包括TABORT以回滚在侧退出上的状态。对于诸如在Java中的推测,在解除引用的指针上的空检查可以通过使用事务来被延迟到循环边缘。如果指针无效,则事务可以使用在TBEGIN/TEND内包括的TABORT安全地中止。
关于锁定省略,参考图15A-15B和下面提供的代码段来描述锁定省略的使用的一个示例。
图15A描述了多个队列元素1502a-1502d的双向链表1500。要向队列元素1500的双向链表内插入新的队列元素1502e。每一个队列元素1502a-1502e包括前向指针1504a-1504e和反向指针1506a-1506e。如图15B中所示,为了在队列元素1502b和1502c之间增加队列元素1502e,(1)反向指针1506e被设置为指向队列元素1502b,(2)前向指针1504e被设置为指向队列元素1502c,(3)反向指针1506c被设置为指向队列元素1502e,并且(4)前向指针1504b被设置为指向队列元素1502e。
与图15A-15B对应的示例代码段如下:
*R1——要插入的新的队列元素的地址。
*R2——插入点的地址;在被R2指向的原始之前插入新的元素。
在一个示例中,如果事务用于锁定省略,但是落回路径使用锁定,则该事务至少获取锁定字以看它是可获得的。处理器保证如果另一个CPU非事务处理地访问锁定,则事务中止。
如在此使用,可交换地使用存储器、中央存储器、主存储器、内存和主内存,除非另外通过使用隐含地或明确地注释。而且,在一个实施例中时,事务有效地延迟包括:延迟将事务存储提交到主内存,直到所选择的事务的完成;在另一个实施例中,事务有效地延迟包括允许对于内存的事务更新,但是保持旧值并且在中止时将内存恢复到该旧值。
所属技术领域的技术人员知道,一个或多个方面可以实现为系统、方法或计算机程序产品。因此,一个或多个方面可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
现在参考图16,在一个例子中,计算机程序产品1600包括,例如,一个或多个非瞬时性计算机可读存储介质1602,在其上存储有计算机可读的程序代码装置或逻辑1604,以提供并方便一个或多个实施例。
体现在计算机可读介质上的程序代码可以用任何适当的介质传输,所述介质包括但不限于:无线、有线、光缆、RF等,或上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行一个或多个实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本文中将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述一个或多个实施例。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图显示了根据多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除了上述,一个或多个方面可由服务提供商提供、许诺(offer)、部署、管理、服务等,该服务提供商提供用户环境的管理。例如,服务提供商可创建、维持、支持等计算机代码和/或计算机基础设施,其为一个或多个用户执行一个或多个方面。反过来,服务提供商可例如根据预订和/或费用协议从用户接受付费。额外地或可替换地,服务提供商可从向一个或多个第三方销售广告内容接受付费。
在一个方面,可部署用于执行本发明的一个或多个实施例。作为一个例子,部署应用包括提供计算机基础设施,其可操作以执行一个或多个实施例。
作为又一个方面,可部署计算基础设施,其包括将计算机可读代码集成到计算机系统,其中与计算系统结合的代码能够执行一个或多个实施例。
作为再一个方面,可提供用于集成计算基础设施包括将计算机可读码集成到计算机系统的过程。计算机系统包括计算机可读介质,其中计算机介质包括一个或多个实施例。与计算机系统结合的代码能够执行一个或多个实施例。
虽然上述了各个实施例,但是这些仅是示例。例如,其他架构的计算环境可以用于包含和使用一个或多个实施例。而且,可以使用不同的指令、指令格式、指令字段和/或指令值。而且,可以提供/使用不同的其他和/或另外的限制/约束。许多变化是可能的。
而且,其他类型的计算环境可受益并适用。作为例子,可使用适于存储和/或执行程序代码的数据处理系统,其包括至少两个通过系统总线直接或间接耦合到存储元件的处理器。存储器元件包括,例如,在程序代码的实际执行期间使用的本地存储器、大容量存储器以及高速缓冲存储器,其提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储器取回代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备、DASD、磁带、CD、DVD、拇指驱动器(thumb drive)以及其他的存储介质等)可直接或通过介于其间的I/O控制器被耦合到系统。网络适配器也可被耦合到系统以使得数据处理系统能够通过介于其间的私有或公共网络而耦合到其他的数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是一些可获得的网络适配器类型。
参考图17,其描述了实施本发明的一个或多个实施例的主机计算机系统5000的代表性组件。代表性主机计算机5000包括与计算机存储器(即,中央存储器)5002通信的一个或多个CPU 5001,以及到存储介质设备5011和网络5010的I/O接口,以用于与其他计算机或SAN等通信。CPU 5001符合具有架构指令集和架构功能的架构。CPU 5001可具有访问寄存器转换(ART)5012,其包含一个ART旁视缓冲器(ALB)5013,用于选择一个可被动态地址转换(DAT)5003使用的地址空间,其中该DAT 5003用于将程序地址(虚拟地址)转变为存储器的真实地址。DAT典型地包括用于高速缓存转换的转换后备缓冲器(TLB)5007,这样稍后对计算机存储器5002块的访问不需要地址转换的延迟。典型地,高速缓存5009被使用在计算机存储器5002和处理器5001之间。高速缓存5009可以是分层的,具有可被多于一个的CPU获得的大高速缓存,以及大高速缓存和每个CPU之间的较小、较快(较低级)的高速缓存。在一些实施方式中,较低级的高速缓存被拆分以为指令获取和数据访问提供单独的低级高速缓存。在一个实施例中,对于TX设施,可以在高速缓存5009和存储器5002的一个或多个中存储事务诊断块(TDB)5100和一个或多个缓冲器5101。在一个示例中,在TX模式中,初始在TX缓冲器中存储数据,并且当TX模式结束(例如,最外TEND)时,向存储器存储(提交)在缓冲器中的数据,或者如果有中止,则丢弃在缓冲器中的数据。
在一个实施例中,由指令获取单元5004经由高速缓存5009从存储器5002获取指令。指令在指令解码单元5006中被解码,且(在一些实施例中与其他指令一起)被发送到一个或多个指令执行单元5008。典型地,使用若干执行单元5008,例如算术执行单元、浮点执行单元和分支指令执行单元。进一步,在TX设备的一个实施例中,可使用各种TX控制5110。指令被执行单元执行,如需要,从指令指定的寄存器或存储器访问操作数。如果将从存储器5002访问(加载或存储)操作数,加载/存储单元5005典型地在被执行的指令的控制下处理该访问。指令可在硬件电路或内部微代码(固件)中或其组合中被执行。
根据TX设施的一个方面,处理器5001也包括PSW 5102(例如,TX和/或中止PSW)、嵌套深度5104、TDBA 5106和一个或多个控制寄存器5108。
需注意的是,计算机系统包括本地(或主)存储器中的信息,以及寻址、保护以及引用和改变记录。寻址的一些方面包括地址格式、地址空间的概念、地址的各种类型和其中一种类型的地址被转换为另一种类型的地址的方式。一些主存储器包括永久分配的存储位置。主存储器向系统提供直接可被寻址的快速访问的数据存储。数据和程序在可被处理之前都将(从输入设备)被加载到主存储器。
主存储器可包括一个或多个更小、更快速访问的缓冲存储器,有时候被称为高速缓存。高速缓存典型地与CPU或I/O处理器物理地关联。物理结构以及不同存储介质的使用的效果,除了在性能上,通常不会被程序观察到。
可维护用于指令和数据操作数的单独的高速缓存。高速缓存中的信息可被维护为相邻的字节,所述字节位于被称为高速缓存块或高速缓存线(或简称为线)的整数界限上。模型可提供EXTRACT CACHE ATTRIBUTE(提取高速缓存属性)指令,其返回高速缓存线的字节大小。模型也可提供PREFETCH DATA(预取数据)和PREFETCH DATA RELATIVE LONG(预取较长数据)指令,其实现存储到数据或指令高速缓存中的预取,或数据从高速缓存的释放。
存储器被视为位的长水平串。对于大部分操作来说,以从左到右的顺序进行对存储器的访问。位串被细分为八个位的单位。八位单位被称为字节,其是所有信息格式的基本构件。存储器中的每个字节位置由唯一的非负整数标识,该非负整数是该字节位置的地址,或简称为字节地址。相邻的字节位置具有连续的地址,在左边从0开始且以从左到右的顺序进行。地址是无符号二进制整数,且是24、31或64位。
信息一次一个字节或一组字节地在存储器和CPU或通道子系统之间传递。除非另有指定,例如在z/中,存储器中的一组字节由该组的最左边的字节寻址。组中的字节的数量可由将被执行的操作暗示或显式地指定。当在CPU操作中使用时,一组字节被称为字段。在字节的每个组内,例如在z/中,位以从左到右的顺序被编号。在z/中,最左边的位有时候被称为“高阶”位且最右边的位被称为“低阶”位。但是,位数不是存储器地址。仅字节可被寻址。为了操作存储器中的字节的单个位,访问整个字节。字节上的位从左到右被编号为0到7(例如在z/中)。对于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字节的字段。半字是两字节边界上的一组两个连续的字节,且是指令的基本构件。字是四倍长字节边界上的一组四个连续的字节。双字是八倍长字节边界上一组八个连续的字节。四倍长字(quadword)是16字节边界上的一组16个连续的字节。八倍长字(octoword)是32字节边界上的一组32个连续的字节。当存储器地址指定半字、字、双字、四倍长字和八倍长字时,地址的二进制表示分别包括一个、两个、三个、四个或五个最右边的零位。指令将位于二字节整数边界上。大多数指令的存储器操作数不具有界限对准要求。
在为指令和数据操作数实现单独的高速缓存的设备上,如果程序在高速缓存线中存储且指令被随后从该高速缓存线获取,可经历显著的延迟,不管该存储是否改变随后被获取的指令。
在一个实例中,本实施例可被软件(有时候被称为许可的内部代码、固件、微代码、毫代码、微微代码(pico-code)等,其任何一个都将符合一个或多个实施例)实施。参考图17,体现一个或多个方面的软件程序代码可由主系统5000的处理器5001从长期存储介质设备5011(诸如CD-ROM驱动器、磁带驱动或硬盘驱动器)访问。软件程序代码可体现在与数据处理系统一起使用的各种已知介质(诸如软磁盘、硬盘驱动或CD-ROM)中的任何一个上。代码可在这样的介质上被分发,或可从一个计算机系统的计算机存储器5002或存储设备通过网络5010被分发给其他计算机系统的用户,以由这样的其他系统的用户使用。
软件程序代码包括操作系统,其控制各种计算机组件和一个或多个应用程序的功能和交互。程序代码通常可从存储介质设备5011调页到相对更高速的计算机存储器5002,在此它对于处理器5001是可用的。用于在存储器中、物理介质上体现软件程序代码和/或经由网络分发软件代码的技术和方法是熟知的,且不会在此被进一步讨论。当程序代码被创建并存储在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上时,其经常被称为“计算机程序产品”。计算机程序产品介质典型地可由优选地位于计算机系统中的处理电路读取以由处理电路执行。
图18示出了可在其中实施一个或多个实施例的代表性工作站或服务器硬件系统。图18的系统5020包括代表性基本计算机系统(base computer system)5021,诸如个人计算机、工作站或服务器,包括可选的外围设备。根据已知技术,基本计算机系统5021包括一个或多个处理器5026以及被用于连接并使能处理器5026和系统5021的其他组件之间的通信的总线。总线将处理器5026连接到存储器5025以及可包括例如硬盘驱动器(例如,包括磁介质、CD、DVD和闪存中的任何一个)或磁带驱动器的长期存储器5027。系统5021也可包括用户接口适配器,其经由总线将微处理器5026连接到一个或多个接口设备,诸如键盘5024、鼠标5023、打印机/扫描仪5030和/或其他接口设备,其可以是任何用户接口设备,诸如触摸敏感屏、数字化输入垫(digitized entry pad)等。总线也可经由显示适配器将诸如LCD屏幕或监视器的显示设备5022连接到微处理器5026。
系统5021可通过能与网络5029通信5028的网络适配器与其他计算机或计算机网络通信。示例性网络适配器是通信通道、令牌环网、以太网或调制解调器。或者,系统5021可使用诸如CDPD(蜂窝数字分组数据)卡的无线接口来通信。系统5021可与局域网(LAN)或广域网(WAN)中的这样的其他计算机关联,或系统5021可以是与另一个计算机的客户端/服务器安排中的客户端等。所有这些配置以及合适的通信硬件和软件在本领域中是已知的。
图19示出了其中一个或多个实施例的数据处理网络5040。数据处理网络5040可包括多个单独的网络,诸如无线网和有线网,其每个可包括多个单独的工作站5041、5042、5043、5044。此外,本领域技术人员将理解,可包括一个或多个LAN,其中LAN可包括多个耦合到主处理机的智能工作站。
仍然参考图19,网络也可包括大型计算机或服务器,诸如网关计算机(客户端服务器5046)或应用服务器(远程服务器5048,其可访问数据储存库,且也可直接从工作站5045被访问)。网关计算机5046用作到每个单独网络的进入点。当将一个联网协议连接到另一个时,需要网关。网关5046可通过通信链路优选地耦合到另一个网络(例如因特网5047)。也可使用通信链路将网关5046直接耦合到一个或多个工作站5041、5042、5043、5044。可以利用可从国际商业机器公司获得的IBM eServerTMSystem服务器来实现网关计算机。
同时参考图18和19,可体现本发明的软件编程代码5031可被系统5020的处理器5026从诸如CD-ROM驱动器或硬盘驱动器的长期存储介质5027访问。软件编程代码可被体现在与数据处理系统一起使用的各种已知介质(诸如软盘、硬盘驱动器或CD-ROM)中的任一个上。代码可在这样的介质上被分发,或从一个计算机系统的存储器或存储设备通过网络被分发到其他计算机系统的用户5050、5051,以供这样的其他系统的用户使用。
或者,编程代码可体现在存储器5025中,且由处理器5026使用处理器总线访问。这样的编程代码包括操作系统,其控制各种计算机组件和一个或多个应用程序5032的功能和交互。程序代码通常从存储介质5027调页到高速存储器5025,在此它可用于由处理器5026进行处理。用于在存储器中、在物理介质上体现软件编程代码和/或经由网络分发软件代码的技术和方法是公知的,不会在此进一步讨论。程序代码,当其被创建且在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上存储时,通常被称为“计算机程序产品”。计算机程序产品介质典型地可以被优选地位于计算机系统中的处理电路读取以由处理电路执行。
最容易被处理器使用的高速缓存(通常比处理器的其他高速缓存更快更小)是最低级(L1或级别1)高速缓存,且主存储(主存储器)是最高级高速缓存(如果有三个级别的话是L3)。最低级高速缓存经常被分为保持将被执行的机器指令的指令缓存(I-高速缓存),和保持数据操作数的数据高速缓存(D-高速缓存)。
参考图20,为处理器5026示出了示例性处理器实施例。典型地,使用一个或多个级别的高速缓存5053来缓冲存储器块,以便改善处理器性能。高速缓存5053是高速缓冲器,其保持很可能被使用的存储器数据的高速缓存线。典型的高速缓存线是64、128或256字节的存储器数据。通常使用单独的高速缓存以用于缓存指令而不是缓存数据。高速缓存一致性(存储器和高速缓存中的线的副本的同步)通常由本领域中熟知的各种“窥探”算法提供。处理器系统的主存储器5025通常被称为高速缓存。在具有4个级别的高速缓存5053的处理器系统中,主存储器5025有时候被称为级别5(L5)高速缓存,因为它典型地更快,且仅保持可被计算机系统使用的非易失性存储器(DASD、磁带等)的一部分。主存储器5025可“高速缓存”由操作系统向主存储器5025调页入或从其调页出的数据页。
程序计数器(指令计数器)5061保持跟踪将被执行的当前指令的地址。z/Architecture处理器中的程序计数器是64位的,且可被截短为31或24位以支持先前的寻址界限。程序计数器典型地体现在计算机的PSW(程序状态字)中,这样它可在上下文转换中持续。因此,具有程序计数器值的进行中的程序可被例如操作系统中断(从程序环境到操作系统环境的上下文转换)。当程序不活动时,程序的PSW维持程序计数器值,且在操作系统执行时,操作系统的(PSW中的)程序计数器被使用。典型地,程序计数器以等于当前指令的字节数的量增量。RISC(精简指令集计算)指令典型地是固定长度,而CISC(复杂指令集计算)指令典型地是可变长度。IBMz/的指令是具有长度为2、4或6字节的CISC指令。程序计数器5061被例如上下文转换操作或分支指令的分支采取操作修改。在上下文转换操作中,当前的程序计数器值与关于正被执行的程序的其他状态信息(诸如条件码)一起被保存在程序状态字中,且新程序计数器值被载入并指向将被执行的新程序模块的指令。执行分支采取操作,以通过将分支指令的结果加载到程序计数器5061中而允许程序进行决定或在程序内循环。
典型地,使用指令获取单元5055代表处理器5026获取指令。获取单元可获取“下一序列指令”、分支采取指令的目标指令或上下文转换后的程序的第一指令。现在的指令获取单元通常使用预取技术基于被预取的指令将被使用的可能性来推测性地预取指令。例如,获取单元可获取16字节的指令,其包括下一顺序指令以及进一步的顺序指令的额外字节。
获取的指令随后被处理器5026执行。在一实施例中,获取的指令被传递给获取单元的分派单元5056。分派单元解码指令并将关于解码的指令的信息转送给合适的单元5057、5058、5060。执行单元5057将典型地从指令获取单元5055接收关于解码的算术指令的信息,并将根据指令的操作码对操作数执行算术操作。优选地从存储器5025、架构寄存器5059或从正被执行的指令的立即字段(immediate field)向执行单元5057提供操作数。执行的结果,当被存储时,被存储在存储器5025、寄存器5059或其他机器硬件(诸如控制寄存器、PSW寄存器等)中。
使用动态地址转换5062并且选用地使用访问寄存器转换5063来将虚拟地址转换为真实地址。
处理器5026典型地具有一个或多个用于执行指令的功能的单元5057、5058、5060。参考图21A,执行单元5057可通过接口逻辑5071与架构通用寄存器5059、解码/分派单元5056、加载存储单元5060和其他5065处理器单元通信5071。执行单元5057可使用几个寄存器电路5067、5068、5069来保持算术逻辑单元(ALU)5066将操作的信息。ALU执行诸如加减乘除的算术操作,以及诸如和、或以及异或(XOR)、旋转和移位的逻辑运算。优选地,ALU支持依赖于设计的专门操作。其他电路可提供其他架构工具5072,例如包括条件码和恢复支持逻辑。典型地,ALU操作的结果被保持在输出寄存电路5070中,该输出寄存器电路可将结果转送到多种其他处理功能。有许多处理器单元安排,本说明书仅旨在提供对一个实施例的代表性理解。
例如,ADD指令将在具有算术和逻辑功能的执行单元5057中被执行,而例如浮点指令将在具有专用浮点能力的浮点执行中被执行。优选地,执行单元通过在操作数上执行操作码定义的功能在由指令标识的操作数上操作。例如,ADD指令可被执行单元5057在由指令的寄存器字段标识的两个寄存器5059中发现的操作数上执行。
执行单元5057对两个操作数执行算术加法,并在第三操作数中存储结果,其中第三操作数可以是第三寄存器或两个源寄存器中的一个。执行单元优选地利用算术逻辑单元(ALU)5066,其能执行多种逻辑功能,诸如移位、旋转、和、或、异或,以及多种代数函数,包括加减乘除中的任何一个。有些ALU 5066被设计为用于标量运算,有些用于浮点。根据架构,数据可以是大端(big endien)(其中最低有效字节位于最高字节地址)或小端(littleendien)(其中最低有效字节位于最低字节地址)。IBM z/是大端。根据架构,带符号字段可以是符号和幅度、1的补码或2的补码。2的补码数是有利的,其在于ALU不需要设计减法能力,因为不管是2的补码中的负值还是正值,都仅要求ALU中的加法。数字通常以速记描述,其中12位的字段定义了4096字节块的地址,且通常被描述为例如4Kbyte(千字节)块。
参考图21B,用于执行分支指令的分支指令信息典型地被发送到分支单元5058,该分支单元经常使用诸如分支历史表5082的分支预测算法,在其他条件运算完成前预测分支结果。在条件运算完成前,当前分支指令的目标将被获取并推测性地执行。当条件运算完成时,基于条件运算的条件和推测的结果,推测性执行的分支指令或被完成或被丢弃。典型的分支指令可测试条件码,以及如果条件码满足分支指令的分支要求,分支到目标地址,分支地址可基于若干数被计算,所述数包括例如在寄存器字段或是指令的立即字段中找到的数。分支单元5058可利用具有多个输入寄存器电路5075、5076、5077和一个输出寄存器电路5080的ALU 5074。分支单元5058可与例如通用寄存器5059、解码分派单元5056或其他电路5073通信5081。
一组指令的执行可由于多个原因中断,所述原因包括例如由操作系统发起的上下文转换、引起上下文转换的程序异常或错误、引起上下文转换的I/O中断信号或多个程序(在多线程环境中)的多线程活动。优选地,上下文转换动作保存关于当前执行的程序的状态信息,且随后加载关于正被调用的另一个程序的状态信息。状态信息可被存储在例如硬件寄存器或存储器中。状态信息优选地包括指向将被执行的下一个指令的程序计数器值、条件码、存储器转换信息和架构寄存器内容。上下文转换活动可被硬件电路、应用程序、操作系统程序或固件代码(微代码、微微代码或许可内部码(LIC))单独地或其组合实现。
处理器根据指令定义的方法而访问操作数。指令可使用指令的一部分的值提供立即操作数,可提供一个或多个寄存器字段,其显式地指向通用寄存器或专用寄存器(例如浮点寄存器)。指令可利用由操作码字段确定的暗示的寄存器作为操作数。指令可利用用于操作数的存储器位置。可由寄存器、立即字段或寄存器和立即字段的组合提供操作数的存储器位置,如由z/长位移工具(facility)所例示的,其中该指令定义了基寄存器、索引寄存器和立即字段(位移字段),它们加到一起,以提供例如存储器中的操作数的地址。除非另外指明,此处的位置典型地意味着主存储器(主存储设备)中的位置。
参考图21C,处理器使用加载/存储单元5060访问存储器。加载/存储单元5060可以通过获取存储器5053中的目标操作数的地址并将操作数加载到寄存器5059或其他存储器5053位置中,来执行加载操作,或可以通过获取存储器5053中的目标操作数的地址并将从寄存器5059或另一个存储器5053位置获得的数据存储在存储器5053中的目标操作数位置,来执行存储操作。加载/存储单元5060可以是推测性的,且可以以相对于指令顺序来说无序的顺序访问存储器,但是加载/存储单元5060将向程序维持指令按顺序执行的外观。加载/存储单元5060可与通用寄存器5059、解密/分派单元5056、高速缓存/存储器接口5053或其他元件5083通信5084,且包括各种寄存器电路5086、5087、5088和5089,ALU 5085和控制逻辑5090以计算存储器地址并提供流水线顺序以使操作保持次序。一些操作可不按顺序,但加载/存储单元提供功能以使不按顺序执行的操作对程序看起来如已按顺序执行一样,如本领域所熟知的。
优选地,应用程序“看到的”地址通常被称为虚拟地址。虚拟地址有时候被称为“逻辑地址”和“有效地址”。这些虚拟地址之所以虚拟,在于它们由多种动态地址转换(DAT)技术中的一种重定向到物理存储器位置,所述动态地址转换技术包括但不限于简单地给用偏移值给虚拟地址加前缀、经由一个或多个转换表转换虚拟地址,所述转换表优选地包括至少一个段表和一个页表(单独地或组合地),优选地,段表具有指向页表的项。在z/Architecture中,提供转换分级结构,包括区域第一表、区域第二表、区域第三表、段表和可选的页表。地址转换的性能通常通过利用转换后备缓冲器(TLB)被改善,该转换后备缓冲器包括将虚拟地址映射到相关的物理存储位置的项。当DAT使用转换表转换虚拟地址时,创建项。于是,虚拟地址的随后使用可利用快的TLB的项,而不是慢的顺序转换表访问。TLB内容可由包括LRU(最少最近使用)的多个替换算法来管理。
在处理器是多处理器系统的处理器的情况下,每个处理器具有保持共享资源的责任,所述共享资源诸如I/O、高速缓存、TLB和存储器,它们互锁以实现一致性。典型地,“窥探”技术将被用于维持高速缓存一致性。在窥探环境中,每个高速缓存线可被标记为正处于共享状态、独占状态、改变状态、无效状态等中的一个,以便有助于共享。
I/O单元5054(图20)向处理器提供用于附加到例如包括磁带、盘、打印机、显示器和网络的外围设备的装置。I/O单元通常由软件驱动器向计算机程序呈现。在诸如来自的System的大型计算机中,通道适配器和开放系统适配器是提供操作系统和外围设备之间的通信的大型计算机的I/O单元。
而且,其他类型的计算环境可受益于一个或多个方面。作为例子,环境可包括仿真器(例如,软件或其他仿真机制),其中特定架构(包括例如指令执行、诸如地址转换的架构功能、以及架构寄存器)或其子集被仿真(例如,在具有处理器和存储器的本机计算机系统中)。在这样的环境中,仿真器的一个或多个仿真功能可实施一个或多个方面的实施例,即使执行仿真器的计算机可具有与正被仿真的能力不同的架构。作为一个例子,在仿真模式中,解码正被仿真的特定指令或操作,且建立合适的仿真功能以实施单个指令或操作。
在仿真环境中,主计算机包括例如存储器以存储指令和数据;指令获取单元以从存储器获取指令,且可选地,提供用于获取的指令的本地缓冲;指令解码单元以接收获取的指令并确定已被获取的指令的类型;以及指令执行单元以执行该指令。执行可包括将数据从存储器加载到寄存器;从寄存器将数据存储回存储器;或执行如由解码单元确定的某些类型的算术或逻辑运算。在一个例子中,每个单元在软件中实现。例如,被所述单元执行的操作被实现为仿真器软件中的一个或多个子例程。
更具体地,在大型计算机中,程序员(通常是如今的“C”程序员)一般通过编译器应用使用架构机器指令。存储在存储介质中的这些指令可以在z/Architecture IBM服务器中本机地执行,或在执行其他架构的机器中执行。它们可在现有的和未来的IBM大型计算机服务器以及的其他机器(例如,IBM Power SystemsTM服务器和IBM System服务器)中被仿真。它们可在使用由AMDTM等制造的硬件的各种机器上运行的机器中被执行。除了在z/下的该硬件上执行,也可被用于这样的机器,其使用由TurboHercules(www.trubohercules.com/)、Hercule、UMX或FSI(Fundamental Software,Inc)(其中一般地执行是处于仿真模式中)提供的仿真。在仿真模式中,仿真软件由本机处理器执行以仿真被仿真处理器的架构。Intel是因特尔公司或其子公司在美国和其他国家的商标或注册商标。Linux是林纳斯·托瓦兹在美国与/或其他国家的注册商标。
本机处理器典型地执行仿真软件,其包括固件或本机操作系统,以执行被仿真处理器的仿真程序。仿真软件负责获取并执行被仿真处理器架构的指令。仿真软件维护仿真的程序计数器以保持跟踪指令界限。仿真软件可一次获取一个或多个仿真的机器指令,并将所述一个或多个仿真的机器指令转换为对应的本机机器指令组,以由本机处理器执行。这些转换的指令可被高速缓存,这样可完成更快的转换。仿真软件将维持被仿真的处理器架构的架构规则以保证为被仿真处理器编写的操作系统和应用正确操作。而且,仿真软件将提供由被仿真的处理器架构确定的资源,包括但不限于控制寄存器、通用寄存器、浮点寄存器、例如包括段表和页表的动态地址转换功能、中断机制、上下文转换机制、日中时间(TOD)时钟和到I/O子系统的架构接口,这样被设计为在被仿真处理器上运行的操作系统或应用程序可在具有仿真软件的本机处理器上运行。
解码正被仿真的特定指令,且调用子例程以执行该单个指令的功能。仿真被仿真处理器的功能的仿真软件功能例如在“C”子例程或驱动器中实现,或由提供用于特定硬件的驱动器的其他方法实现,如本领域技术人员在理解优选实施例的描述后将理解的。包括但不限于Beausoleil等人的标题为“Multiprocessor for Hardware Emulation”的美国专利证书号5,551,013;以及Scalzi等人的标题为“Preprocessing of Stored TargetRoutines for Emulating Incompatible Instructions on a Target Processor”的美国专利证书号6,009,261;以及Davidian等人的标题为“Decoding Guest Instruction toDirectly Access Emulation Routines that Emulate the Guest Instructions”的美国专利证书号,5,574,873;以及Gorishek等人的标题为“Symmetrical Multiprocessing Busand Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in aSystem”的美国专利证书号6,308,255;以及Lethin等人的标题为“Dynamic OptimizingObject Code Translator for Architecture Emulation and Dynamic OptimizingObject Code Translation Method”的美国专利证书号6,463,582,;以及Eric Traut的标题为“Method for Emulating Guest Instructions on a Host Computer ThroughDynamic Recompilation of Host Instructions”的美国专利证书号5,790,825;以及许多其他专利的各种软件和硬件仿真专利示出各种已知的方式来实现针对可为本领域技术人员获得的目标机器对为不同机器进行架构设计的指令格式的仿真。
在图22中,提供了仿真主计算机系统5092的例子,其仿真主架构的主计算机系统5000’。在仿真主计算机系统5092中,主处理器(CPU)5091是仿真主处理器(或虚拟主处理器),并包括具有与主计算机5000’的处理器5091不同的本机指令集架构的仿真处理器5093。仿真主计算机系统5092具有可被仿真处理器5093访问的存储器5094。在示例性实施例中,存储器5094被分区为主计算机存储器5096部分和仿真例程5097部分。根据主计算机架构,主计算机存储器5096对于仿真主计算机5092的程序来说是可用的。仿真处理器5093执行与被仿真处理器5091不同架构的架构指令集的本机指令(即来自仿真程序处理器5097的本机指令),且可通过使用从顺序和访问/解码例程获得的一个或多个指令从主计算机存储器5096中的程序访问用于执行的主机指令,所述顺序和访问/解码例程可解码访问的主机指令,以确定用于仿真被访问的主机指令的功能的本机指令执行例程。被定义用于主计算机系统5000’架构的其他工具可被架构工具例程仿真,所述架构工具例程包括诸如通用寄存器、控制寄存器、动态地址转换和I/O子系统支持和处理器高速缓存等工具。仿真例程也可利用在仿真处理器5093中可获得的功能(诸如通用寄存器和虚拟地址的动态转换)以改善仿真例程的性能。也可提供专用硬件和卸载引擎以辅助处理器5093来仿真主计算机5000’的功能。
在此使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚地指明。还将理解,当在说明书中使用时,术语“包括”和/或“包含”指明存在所述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件和/或组件。
所附权利要求书中的所有装置或步骤加功能元件的相应结构、材料、操作以及等价物,如有的话,旨在包括用于结合如特别要求保护的其他所要求保护的元件来执行所述功能的任何结构、材料或操作。呈现一个或多个实施例的说明是为了示出和描述的作用,但不是穷尽性的或将本发明限制于所公开的形式。许多修改和变化对本领域普通技术人员来说是明显的。选择和描述实施例是为了最佳地解释本发明的多个方面和实际应用,并使得本领域普通技术人员能针对适于考虑的特定用途的具有各种修改的各种实施例理解本发明。
Claims (14)
1.一种用于在计算环境中执行与事务执行相关联的处理的方法,所述方法包括:
执行多个事务开始指令以启动多个事务,所述多个事务建立嵌套的事务;
处理器获得作为嵌套的事务中的一个事务的一部分要执行的指令,所述事务有效地延迟向主存储器提交事务存储,直到完成了所选择的事务;
从由所述多个事务开始指令设置的一个或多个控件计算一个或多个有效控件,所述一个或多个有效控件指示一个或多个特定类型的指令是否被允许执行,其中,所述一个或多个有效控件包括用于指示是否允许修改访问寄存器的有效允许访问寄存器修改控件和用于指示是否允许执行指定的浮点指令的有效允许浮点操作控件的至少一个,以及,其中,所述计算一个或多个有效控件包括确定所述有效允许访问寄存器修改控件的值,其中,所述确定所述有效允许访问寄存器修改控件的值包括执行所述多个事务开始指令的所述允许访问寄存器修改控件的逻辑与;
所述处理器确定所述指令是否是被禁止在所述事务内执行的选择性受限的指令,所述确定基于所述计算的一个或多个有效控件;并且,
基于所述指令是否被选择性地限制而执行与所述指令相关联的处理。
2.根据权利要求1所述的方法,其中,所述执行包括基于所述指令是受限指令来中止所述事务。
3.根据权利要求2所述的方法,其中,所述执行进一步包括:基于中止所述事务,在由所述多个事务开始指令的一个事务开始指令标识的事务诊断块中存储中止代码,并且设置条件代码。
4.根据权利要求1所述的方法,其中,所述执行包括:基于用于指示所述指令不是受限指令的确定来执行所述指令。
5.根据权利要求1所述的方法,其中,所述指令在下述方面被选择性地限制:它对于一个事务被限制,但是对于另一个事务不被限制。
6.根据权利要求1所述的方法,其中,所述方法进一步包括:获得要在所述事务中执行的另一个指令,并且查看所述另一个指令是否是用于事务处理的受限指令,其中,所述执行处理基于所述另一个指令被限制而中止所述事务。
7.根据权利要求6所述的方法,其中,所述方法进一步包括确定所述事务是被约束的事务还是未约束的事务,并且其中,所述确定所述另一个指令是否被限制基于所述事务是被约束还是未约束。
8.根据权利要求7所述的方法,其中,所述方法进一步包括:基于对于被约束的事务排他地限制所述另一个指令来作为未约束的事务执行所述被约束的事务。
9.根据权利要求1所述的方法,其中,所述方法进一步包括:
确定所述事务是被约束事务还是未约束的事务;并且
基于所述事务是被约束事务以及所述指令被限制来提供中断。
10.一种用于在计算环境中执行与事务执行相关联的处理的计算机系统,所述计算机系统包括:
存储器;以及,
与所述存储器进行通信的处理器,其中,所述计算机系统被配置为执行一种方法,所述方法包括:
执行多个事务开始指令以启动多个事务,所述多个事务建立嵌套的事务;
处理器获得作为嵌套的事务中的一个事务的一部分要执行的指令,所述事务有效地延迟向主存储器提交事务存储,直到完成了所选择的事务;
从由所述多个事务开始指令设置的一个或多个控件计算一个或多个有效控件,所述一个或多个有效控件指示一个或多个特定类型的指令是否被允许执行,其中,所述一个或多个有效控件包括用于指示是否允许修改访问寄存器的有效允许访问寄存器修改控件和用于指示是否允许执行指定的浮点指令的有效允许浮点操作控件的至少一个,以及,其中,所述计算一个或多个有效控件包括确定所述有效允许访问寄存器修改控件的值,其中,所述确定所述有效允许访问寄存器修改控件的值包括执行所述多个事务开始指令的所述允许访问寄存器修改控件的逻辑与;
所述处理器确定所述指令是否是被禁止在所述事务内执行的选择性受限的指令,所述确定基于所述计算的一个或多个有效控件;并且,
基于所述指令是否被选择性地限制而执行与所述指令相关联的处理。
11.根据权利要求10所述的计算机系统,其中,所述执行包括基于所述指令是受限指令来中止所述事务,并且其中,所述执行进一步包括:基于中止所述事务,在由所述多个事务开始指令的一个事务开始指令标识的事务诊断块中存储中止代码,并且设置条件代码。
12.根据权利要求10所述的计算机系统,其中,所述方法进一步包括:获得要在所述事务中执行的另一个指令,并且查看所述另一个指令是否是用于事务处理的受限指令,其中,所述执行处理基于所述另一个指令被限制而中止所述事务。
13.根据权利要求12所述的计算机系统,所述方法进一步包括确定所述事务是被约束的事务还是未约束的事务,并且其中,所述确定所述另一个指令是否被限制基于所述事务是被约束还是未约束。
14.根据权利要求10所述的计算机系统,其中,所述方法进一步包括:
确定所述事务是被约束事务还是未约束的事务;并且
基于所述事务是被约束事务以及所述指令被限制来提供中断。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/524,765 US9448796B2 (en) | 2012-06-15 | 2012-06-15 | Restricted instructions in transactional execution |
US13/524,765 | 2012-06-15 | ||
PCT/EP2013/060297 WO2013186013A1 (en) | 2012-06-15 | 2013-05-17 | Restricted instructions in transactional execution |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104350463A CN104350463A (zh) | 2015-02-11 |
CN104350463B true CN104350463B (zh) | 2017-06-23 |
Family
ID=48483062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380027504.6A Active CN104350463B (zh) | 2012-06-15 | 2013-05-17 | 在事务执行中的受限指令 |
Country Status (6)
Country | Link |
---|---|
US (6) | US9448796B2 (zh) |
JP (1) | JP6218815B2 (zh) |
CN (1) | CN104350463B (zh) |
DE (1) | DE112013001941B4 (zh) |
GB (1) | GB2513508B (zh) |
WO (1) | WO2013186013A1 (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
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 |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9772854B2 (en) * | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9792124B2 (en) | 2015-02-13 | 2017-10-17 | International Business Machines Corporation | Speculative branch handling for transaction abort |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US10210323B2 (en) * | 2016-05-06 | 2019-02-19 | The Boeing Company | Information assurance system for secure program execution |
US10579377B2 (en) * | 2017-01-19 | 2020-03-03 | International Business Machines Corporation | Guarded storage event handling during transactional execution |
US10725685B2 (en) | 2017-01-19 | 2020-07-28 | International Business Machines Corporation | Load logical and shift guarded instruction |
US10732858B2 (en) | 2017-01-19 | 2020-08-04 | International Business Machines Corporation | Loading and storing controls regulating the operation of a guarded storage facility |
US10496311B2 (en) * | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Run-time instrumentation of guarded storage event processing |
US10496292B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Saving/restoring guarded storage controls in a virtualized environment |
US10452288B2 (en) | 2017-01-19 | 2019-10-22 | International Business Machines Corporation | Identifying processor attributes based on detecting a guarded storage event |
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 |
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 |
EP3462308B1 (en) | 2017-09-29 | 2022-03-02 | ARM Limited | Transaction nesting depth testing instruction |
GB2571996B (en) * | 2018-03-16 | 2020-09-09 | Advanced Risc Mach Ltd | Branch target variant of branch-with-link instruction |
US10824429B2 (en) | 2018-09-19 | 2020-11-03 | Microsoft Technology Licensing, Llc | Commit logic and precise exceptions in explicit dataflow graph execution architectures |
GB2579246B (en) | 2018-11-28 | 2021-10-13 | Advanced Risc Mach Ltd | Apparatus and data processing method for transactional memory |
US11686911B2 (en) | 2020-09-17 | 2023-06-27 | Panduit Corp. | Optical distribution and splice frame including enclosures |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101410797A (zh) * | 2006-03-30 | 2009-04-15 | 英特尔公司 | 无序处理器中的事务存储器 |
Family Cites Families (284)
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 |
EP0470322B1 (en) | 1990-08-07 | 1996-04-03 | BULL HN INFORMATION SYSTEMS ITALIA S.p.A. | Message-based debugging method |
DE4216871C2 (de) | 1991-05-21 | 2001-09-06 | Digital Equipment Corp | Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen |
US5701480A (en) | 1991-10-17 | 1997-12-23 | Digital Equipment Corporation | Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing |
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 |
WO1994027215A1 (en) | 1993-05-07 | 1994-11-24 | Apple Computer, Inc. | Method for decoding guest instructions for a host computer |
US5925125A (en) | 1993-06-24 | 1999-07-20 | International Business Machines Corporation | Apparatus and method for pre-verifying a computer instruction set to prevent the initiation of the execution of undefined instructions |
US5551013A (en) | 1994-06-03 | 1996-08-27 | International Business Machines Corporation | Multiprocessor for hardware emulation |
US5748964A (en) | 1994-12-20 | 1998-05-05 | Sun Microsystems, Inc. | Bytecode program interpreter apparatus and method with pre-verification of data type restrictions |
US5655100A (en) | 1995-03-31 | 1997-08-05 | Sun Microsystems, Inc. | Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system |
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 |
EP0944081B1 (en) | 1998-03-17 | 2009-05-13 | Panasonic Corporation | Data transmission apparatus and method thereof using command adapted thereto |
US6202067B1 (en) | 1998-04-07 | 2001-03-13 | Lucent Technologies, Inc. | Method and apparatus for correct and complete transactions in a fault tolerant distributed database system |
US6119129A (en) | 1998-05-14 | 2000-09-12 | Sun Microsystems, Inc. | Multi-threaded journaling in a configuration database |
US6308255B1 (en) | 1998-05-26 | 2001-10-23 | Advanced Micro Devices, Inc. | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system |
EP0992907B1 (en) | 1998-10-06 | 2005-09-28 | Texas Instruments Inc. | Trace fifo management |
EP0992916A1 (en) | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Digital signal processor |
US6151669A (en) * | 1998-10-10 | 2000-11-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Methods and apparatus for efficient control of floating-point status register |
US20020147969A1 (en) | 1998-10-21 | 2002-10-10 | Richard A. Lethin | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
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 |
WO2002013068A1 (en) | 2000-08-04 | 2002-02-14 | Carr Scott Software Incorporated | Automatic transaction management |
SG99941A1 (en) | 2000-08-30 | 2003-11-27 | Ibm | Transaction support on logical disks |
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 |
US6938130B2 (en) | 2003-02-13 | 2005-08-30 | Sun Microsystems Inc. | Method and apparatus for delaying interfering accesses from other threads during transactional program execution |
US6862664B2 (en) | 2003-02-13 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for avoiding locks by speculatively executing critical sections |
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 |
US7269693B2 (en) | 2003-02-13 | 2007-09-11 | Sun Microsystems, Inc. | Selectively monitoring stores to support transactional program execution |
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 |
WO2004104819A1 (ja) | 2003-05-23 | 2004-12-02 | Nippon Telegraph And Telephone Corporation | 並列処理装置及び並列処理方法 |
EP1498815A3 (en) | 2003-06-30 | 2006-11-29 | Gravic, Inc. | Methods for ensuring referential integrity in multi-threaded replication engines |
US7836450B2 (en) | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7197586B2 (en) | 2004-01-14 | 2007-03-27 | International Business Machines Corporation | Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler |
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 |
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 |
US7206903B1 (en) | 2004-07-20 | 2007-04-17 | Sun Microsystems, Inc. | Method and apparatus for releasing memory locations during transactional execution |
US7395382B1 (en) | 2004-08-10 | 2008-07-01 | Sun Microsystems, Inc. | Hybrid software/hardware transactional memory |
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控制器及数据传输方法 |
JP2009508187A (ja) | 2005-08-01 | 2009-02-26 | サン・マイクロシステムズ・インコーポレーテッド | クリティカルセクションをトランザクション的に実行することによるロックの回避 |
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 |
US7810072B2 (en) | 2006-01-06 | 2010-10-05 | International Business Machines Corporation | Exception thrower |
US20070186056A1 (en) | 2006-02-07 | 2007-08-09 | Bratin Saha | Hardware acceleration for a software transactional memory system |
US7617383B2 (en) | 2006-02-16 | 2009-11-10 | Vns Portfolio Llc | Circular register arrays of a computer |
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 |
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 |
US20080012688A1 (en) * | 2006-07-06 | 2008-01-17 | Ha Dong S | Secure rfid based ultra-wideband time-hopped pulse-position modulation |
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 |
US7825760B2 (en) * | 2006-09-07 | 2010-11-02 | Bird Mark D | Conical magnet |
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 |
ATE441022T1 (de) | 2006-11-06 | 2009-09-15 | Gm Global Tech Operations Inc | Verfahren zum betreiben eines partikelfilters, programm für einen rechner und dafür vorgesehene regelvorrichtung |
CN101178787A (zh) | 2006-11-10 | 2008-05-14 | 上海市卢湾区东南医院 | 用于社区老干部保健管理的信息沟通方法 |
US7669040B2 (en) | 2006-12-15 | 2010-02-23 | Sun Microsystems, Inc. | Method and apparatus for executing a long transaction |
JP2008165370A (ja) | 2006-12-27 | 2008-07-17 | Internatl Business Mach Corp <Ibm> | オンライントランザクション処理を分割し、分散環境で実行するための方法および装置。 |
US8086827B2 (en) | 2006-12-28 | 2011-12-27 | Intel Corporation | Mechanism for irrevocable transactions |
US7802136B2 (en) | 2006-12-28 | 2010-09-21 | Intel Corporation | Compiler technique for efficient register checkpointing to support transaction roll-back |
US7627743B2 (en) | 2007-01-12 | 2009-12-01 | Andes Technology Corporation | Method and circuit implementation for multiple-word transfer into/from memory subsystems |
US20080244544A1 (en) | 2007-03-29 | 2008-10-02 | Naveen Neelakantam | Using hardware checkpoints to support software based speculation |
US8332374B2 (en) | 2007-04-13 | 2012-12-11 | Oracle America, Inc. | Efficient implicit privatization of transactional memory |
US8117403B2 (en) | 2007-05-14 | 2012-02-14 | International Business Machines Corporation | Transactional memory system which employs thread assists using address history tables |
US9009452B2 (en) | 2007-05-14 | 2015-04-14 | International Business Machines Corporation | Computing system with transactional memory using millicode assists |
US7814378B2 (en) | 2007-05-18 | 2010-10-12 | Oracle America, Inc. | Verification of memory consistency and transactional memory |
US20080320282A1 (en) | 2007-06-22 | 2008-12-25 | Morris Robert P | Method And Systems For Providing Transaction Support For Executable Program Components |
US8266387B2 (en) | 2007-06-27 | 2012-09-11 | Microsoft Corporation | Leveraging transactional memory hardware to accelerate virtualization emulation |
US7779232B2 (en) | 2007-08-28 | 2010-08-17 | International Business Machines Corporation | Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches |
US8209689B2 (en) | 2007-09-12 | 2012-06-26 | Intel Corporation | Live lock free priority scheme for memory transactions in transactional memory |
US7904434B2 (en) | 2007-09-14 | 2011-03-08 | Oracle International Corporation | Framework for handling business transactions |
US7890472B2 (en) | 2007-09-18 | 2011-02-15 | Microsoft Corporation | Parallel nested transactions in transactional memory |
US20090127332A1 (en) | 2007-11-16 | 2009-05-21 | Kyung Yang Park | System for processing payment employing off-line transaction approval mode of mobile card and method thereof |
US20090138890A1 (en) | 2007-11-21 | 2009-05-28 | Arm Limited | Contention management for a hardware transactional memory |
CN101170747A (zh) | 2007-11-30 | 2008-04-30 | 中兴通讯股份有限公司 | 中继状态调节方法和装置 |
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 |
US8065491B2 (en) | 2007-12-30 | 2011-11-22 | Intel Corporation | Efficient non-transactional write barriers for strong atomicity |
US8706982B2 (en) | 2007-12-30 | 2014-04-22 | Intel Corporation | Mechanisms for strong atomicity in a transactional memory system |
US8140497B2 (en) | 2007-12-31 | 2012-03-20 | Oracle America, Inc. | System and method for implementing nonblocking zero-indirection transactional memory |
US7966459B2 (en) | 2007-12-31 | 2011-06-21 | Oracle America, Inc. | System and method for supporting phased transactional memory modes |
US20090182983A1 (en) | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Compare and Branch Facility and Instruction Therefore |
US8041900B2 (en) | 2008-01-15 | 2011-10-18 | Oracle America, Inc. | Method and apparatus for improving transactional memory commit latency |
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 |
US20100002370A1 (en) * | 2008-07-02 | 2010-01-07 | Yi-Jen Cheng | Digital video recorder with an ejector frame assembly |
US7996686B2 (en) | 2008-07-07 | 2011-08-09 | International Business Machines Corporation | Branch trace methodology |
US8407455B2 (en) | 2008-07-28 | 2013-03-26 | Advanced Micro Devices, Inc. | Coexistence of advanced hardware synchronization and global locks |
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 |
US10210018B2 (en) | 2008-12-24 | 2019-02-19 | Intel Corporation | Optimizing quiescence in a software transactional memory (STM) system |
US9274855B2 (en) | 2008-12-24 | 2016-03-01 | Intel Corporation | Optimization for safe elimination of weak atomicity overhead |
US8914620B2 (en) | 2008-12-29 | 2014-12-16 | Oracle America, Inc. | Method and system for reducing abort rates in speculative lock elision using contention management mechanisms |
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 |
US20120014412A1 (en) * | 2009-03-17 | 2012-01-19 | Panasonic Corporation | Positioning system and positioning method |
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 |
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 |
DE112009005006T5 (de) | 2009-06-26 | 2013-01-10 | Intel Corporation | Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM) |
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 |
US8095824B2 (en) | 2009-12-15 | 2012-01-10 | Intel Corporation | Performing mode switching in an unbounded transactional memory (UTM) system |
US9092253B2 (en) | 2009-12-15 | 2015-07-28 | Microsoft Technology Licensing, Llc | Instrumentation of hardware assisted transactional memory system |
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 |
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 |
US8464261B2 (en) | 2010-03-31 | 2013-06-11 | Oracle International Corporation | System and method for executing a transaction using parallel co-transactions |
US8402227B2 (en) | 2010-03-31 | 2013-03-19 | Oracle International Corporation | System and method for committing results of a software transaction using a hardware transaction |
US8631223B2 (en) | 2010-05-12 | 2014-01-14 | International Business Machines Corporation | Register file supporting transactional processing |
US9626187B2 (en) | 2010-05-27 | 2017-04-18 | International Business Machines Corporation | Transactional memory system supporting unbroken suspended execution |
US20110302143A1 (en) | 2010-06-02 | 2011-12-08 | Microsoft Corporation | Multi-version concurrency with ordered timestamps |
US9880848B2 (en) | 2010-06-11 | 2018-01-30 | Advanced Micro Devices, Inc. | Processor support for hardware transactional memory |
US8560816B2 (en) | 2010-06-30 | 2013-10-15 | Oracle International Corporation | System and method for performing incremental register checkpointing in transactional memory |
US8479053B2 (en) | 2010-07-28 | 2013-07-02 | Intel Corporation | Processor with last branch record register storing transaction indicator |
US8561033B2 (en) | 2010-07-30 | 2013-10-15 | International Business Machines Corporation | Selective branch-triggered trace generation apparatus and method |
US8549504B2 (en) | 2010-09-25 | 2013-10-01 | Intel Corporation | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region |
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 |
US8788794B2 (en) | 2010-12-07 | 2014-07-22 | Advanced Micro Devices, Inc. | Programmable atomic memory using stored atomic procedures |
US9122476B2 (en) * | 2010-12-07 | 2015-09-01 | Advanced Micro Devices, Inc. | Programmable atomic memory using hardware validation agent |
US8442962B2 (en) | 2010-12-28 | 2013-05-14 | Sap Ag | Distributed transaction management using two-phase commit optimization |
US8818867B2 (en) | 2011-11-14 | 2014-08-26 | At&T Intellectual Property I, L.P. | Security token for mobile near field communication transactions |
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 |
US9311101B2 (en) | 2012-06-15 | 2016-04-12 | International Business Machines Corporation | Intra-instructional transaction abort handling |
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 |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US8966324B2 (en) | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
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,765 patent/US9448796B2/en active Active
-
2013
- 2013-03-04 US US13/783,572 patent/US9448797B2/en active Active
- 2013-05-17 GB GB1414238.4A patent/GB2513508B/en active Active
- 2013-05-17 DE DE112013001941.8T patent/DE112013001941B4/de active Active
- 2013-05-17 WO PCT/EP2013/060297 patent/WO2013186013A1/en active Application Filing
- 2013-05-17 CN CN201380027504.6A patent/CN104350463B/zh active Active
- 2013-05-17 JP JP2015516531A patent/JP6218815B2/ja active Active
-
2016
- 2016-08-16 US US15/238,270 patent/US9851978B2/en active Active
- 2016-08-16 US US15/238,306 patent/US9858082B2/en active Active
-
2017
- 2017-12-08 US US15/836,019 patent/US10558465B2/en active Active
- 2017-12-08 US US15/836,133 patent/US10684863B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101410797A (zh) * | 2006-03-30 | 2009-04-15 | 英特尔公司 | 无序处理器中的事务存储器 |
Also Published As
Publication number | Publication date |
---|---|
WO2013186013A1 (en) | 2013-12-19 |
US9448797B2 (en) | 2016-09-20 |
DE112013001941B4 (de) | 2017-07-20 |
US10558465B2 (en) | 2020-02-11 |
US20130339685A1 (en) | 2013-12-19 |
US9448796B2 (en) | 2016-09-20 |
JP2015525406A (ja) | 2015-09-03 |
GB201414238D0 (en) | 2014-09-24 |
US9858082B2 (en) | 2018-01-02 |
US20180107488A1 (en) | 2018-04-19 |
GB2513508A (en) | 2014-10-29 |
US20130339674A1 (en) | 2013-12-19 |
US20160357553A1 (en) | 2016-12-08 |
GB2513508B (en) | 2015-03-25 |
JP6218815B2 (ja) | 2017-10-25 |
US20160357570A1 (en) | 2016-12-08 |
US10684863B2 (en) | 2020-06-16 |
DE112013001941T9 (de) | 2015-03-19 |
DE112013001941T5 (de) | 2014-12-24 |
CN104350463A (zh) | 2015-02-11 |
US20180101386A1 (en) | 2018-04-12 |
US9851978B2 (en) | 2017-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104350463B (zh) | 在事务执行中的受限指令 | |
CN104335164B (zh) | 事务中止处理 | |
CN104335165B (zh) | 用于在计算环境中执行机器指令的方法和计算机系统 | |
CN103514032B (zh) | 用于促进计算环境内的处理的方法和计算机系统 | |
CN103513960B (zh) | 促进事务重复中止之后的事务完成的方法和计算机系统 | |
CN104335185B (zh) | 受限事务执行 | |
CN104350462B (zh) | 事务中止指令 | |
CN104364772B (zh) | 控制一计算环境中的事务执行的方法及系统 | |
CN104364778B (zh) | 在事务处理中保存/恢复选择的寄存器 | |
CN104412232B (zh) | 事务处理方法、系统、介质 | |
CN104350468B (zh) | 非事务储存指令 | |
CN104335184B (zh) | 事务执行分支指示 | |
CN104335177B (zh) | 有选择地控制事务处理中的指令执行 | |
CN104380246B (zh) | 用于管理计算环境中的中断的方法、系统及介质 | |
CN104335181B (zh) | 事务诊断区块 | |
CN104350474B (zh) | 用于控制计算环境中的事务的执行的装置、系统和方法 | |
CN104335186B (zh) | 处理器辅助设施 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |