![]() NON TRANSACTIONAL STORAGE INSTRUCTION
专利摘要:
non-transactional store instruction. a non-transactional storage instruction, executed in transactional execution mode, holds stores that are held, even if an operation associated with the instruction aborts. the stores include user-specified information that can facilitate debugging an aborted transaction. 公开号:BR112014031432B1 申请号:R112014031432-2 申请日:2012-11-22 公开日:2021-07-27 发明作者:Christian Jacobi;Dan Greiner;Timothy Slegel 申请人:International Business Machines Corporation; IPC主号:
专利说明:
Technical Field [0001] The present invention relates, in general, to multiprocessing computing environments, and in particular, to transactional processing within such computing environments. Background [0002] An ongoing challenge in multiprocessor programming is that of upgrades to the same storage location by multiple central processing units (CPUs). Many instructions that update storage locations, including even simple logical operations such as And, do so with multiple accesses to the location. For example, first the storage location is fetched and then the updated result is stored back. [0003] For multiple CPUs to securely update the same storage location, access to the location is serialized. One instruction, the TEST AND SET instruction, introduced with the S/360 architecture previously offered by the International Business Machines Corporation, provided an interlaced update of a storage location. Interlaced updating means that, as noted by other CPU and input/output (I/O) subsystems (eg, the channel subsystem), all instruction storage access appears to occur atomically. Later, the S/370 architecture offered by International Business Machines Corporation introduced COMPARE AND SWAP and COMPARE DOUBLE AND SWAP instructions that provide a more sophisticated means of performing interlaced update, and allow the implementation of what is commonly known as a lock word (or traffic lights). Recently added instructions have provided additional interlaced update capabilities, including COMPARE AND SWAP AND PURGE, and COMPARE AND SWAP AND STORE. However, all of these instructions provide interlacing for only a single storage location. [0004] More complex programming techniques may require interlaced updating of multiple storage locations, such as when adding an element to a doubly linked list. In such an operation, both a backwards and forwards pointer are appearing to be updated simultaneously, as observed by other CPUs and the I/O subsystem. In order to perform such a multiple location update, the program is forced to use a separate single serialization point, such as a lock word. However, lockwords can provide a much more disciplined level of serialization than is required; for example, lock words can serialize an entire row of millions of elements, although only two elements are being updated. The program can structure the data to use finer-grained serialization (for example, a hierarchy of lockpoints), but that presents additional problems, such as potential deadlock situations if the hierarchy is violated, and recovery problems if the program encounters an error while holding one or more locks or if the lock cannot be acquired. [0005] In addition to the above, there are numerous situations where a program can execute a sequence of instructions that may or may not result in an exception condition. If no exception condition occurs then the program continues; however, if an exception is recognized, then the program can take corrective action to eliminate the exception condition. Java, as an example, can exploit its execution, for example, speculative execution, partial alignment of a function, and/or resequencing the null pointer check. [0006] In classic operating system environments such as z/OS and its predecessors offered by International Business Machines Corporation, the program establishes a recovery environment to intercept any program exception conditions it may encounter. If the program does not catch the exception, the operating system usually abends the program for exceptions that the operating system is not prepared to handle. Establishing and exploiting such an environment is costly and complicated. summary [0007] The deficiencies of the prior art are addressed and advantages are provided by providing a computer program product for the execution of an instruction within a computing environment. The computer program product includes a computer readable storage medium readable by a processing circuit and storing instructions for execution by the processing circuit to carry out a method. The method includes, for example, obtaining, by a processor, a machine instruction for execution, the machine instruction being defined for computer execution according to a computer architecture, the machine instructions including: a code operation to specify a non-transactional storage operation; a first operand; and a second operand to designate a location for the first operand; and execution, by the processor, of the machine instruction, execution including: non-transactionally placing the first operand in the location specified by the second operand, wherein the information stored in the second operand is maintained despite an abort of an associated transaction with the machine instruction, and where non-transactional mode placement is delayed until an end of the processor's transactional execution mode. [0008] Methods and systems related to one or more embodiments are also described and claimed herein. [0009] Additional features and advantages are realized. Other embodiments and aspects are described in detail herein and are considered to be part of the claimed invention. Brief Description of Drawings [0010] Embodiments of the present invention will now be described, for example purposes only, with reference to the accompanying drawings, in which: [0011] Figure 1 represents an embodiment of a computing environment; [0012] Figure 2A shows an example of a Transaction Begin (TBEGIN) instruction; [0013] Fig. 2B shows an embodiment of more details of a TBEGIN instruction field of Fig. 2A; [0014] Figure 3A shows an example of a restricted Transaction Start (TBEGINC) instruction; [0015] Figure 3B represents an embodiment of more details of a TBEGINC instruction field of Figure 3A; [0016] Figure 4 represents an example of an End of Transaction (TEND) instruction; [0017] Figure 5 represents an example of a Transaction Abort (TABORT) instruction; [0018] Figure 6 represents an example of grouped transactions; [0019] Figure 7 shows an example of a Non-Transactional Storage (NTSTG) instruction; [0020] Figure 8 illustrates an example of an Extract the Transaction Nesting Depth (ETND) instruction; [0021] Figure 9 represents an example of a transaction diagnostic block; [0022] Figure 10 illustrates an example of reasons for aborting, along with associated abort codes and condition codes; [0023] Figure 11A shows an example of logic associated with a non-transactional store instruction; [0024] Figure 11B shows an example of additional logic associated with the non-transactional store instruction; [0025] Figure 12 represents an embodiment of a computer program product; [0026] Figure 13 represents an embodiment of a host computer system; [0027] Figure 14 represents another example of a computer system; [0028] Figure 15 shows another example of a computer system comprising a computer network; [0029] Figure 16 represents an embodiment of several elements of a computer system; [0030] Figure 17A shows an embodiment of the execution unit of the computer system of Figure 16; [0031] Figure 17B shows an embodiment of the branch unit of the computer system of Figure 16; [0032] Figure 17C illustrates an embodiment of the loading/storage unit of the computer system of Figure 16; and [0033] Figure 18 represents an embodiment of an emulated host computer system. Detailed Description [0034] According to an embodiment, a transactional execution (TX) facility is provided. This facility provides transactional processing for instructions, and in one or more embodiments, offers different modes of execution, as described below, as well as grouped levels of transactional processing. [0035] Transactional execution setup introduces a CPU state called transactional execution (TX) mode. Following a CPU reset, the CPU is not in TX mode. The CPU enters TX mode via a BEGIN TRANSACTION instruction. The CPU leaves TX mode for either (a) an extreme TRANSACTION END instruction (more details on interior and exterior below), or (b) the transaction being aborted. While in TX mode, storage accesses by the CPU appear to be block concurrent as observed by other CPUs and the I/O subsystem. Storage accesses are either (a) used for storage when the outermost transaction ends without aborting (ie, updates made to a local cache or buffer for the CPU are propagated and stored in real memory and visible to other CPUs) , or (b) discarded if the transaction is aborted. [0036] Transactions can be grouped. That is, while the CPU is in TX mode, it can execute another TRANSACTION BEGIN instruction. The instruction that causes the CPU to enter TX mode is called the outermost TRANSACTION BEGIN; likewise, the program is said to be in the outermost transaction. Executions subsequent to the TRANSACTION BEGIN are called internal statements; and the program is executing an internal transaction. The model provides a minimum nesting depth and a model-dependent maximum nesting depth. An EXTRACT TRANSACTION NESTING DEPTH statement returns the current grouping level value, and in another embodiment, it can return a maximum nesting depth value. This technique uses a model called "flat grouping", in which an abort condition at any depth of nesting causes all levels of the transaction to be aborted, and control is returned to the statement after the outermost TRANSACTION BEGIN. [0037] During the processing of a transaction, a transactional access made by one CPU is said to conflict with either (a) a transactional access or non-transactional access made by another CPU, or (b) a non-transactional access made by the subsystem. I/O, if both accesses are to any location within the same cache memory line, and one or both of the accesses is a store. In other words, in order for transaction execution to be productive, the CPU must not be observed making transactional accesses until it allocates itself. This programming model can be highly effective in certain environments; for example, updating a colon in a doubly linked list of one million elements. However, it can be less effective if there is a large amount of contention for storage locations that are being accessed transactionally. [0038] In a transactional execution model (herein referred to as an unrestricted transaction), when a transaction is aborted, the program can either try to re-boost the transaction in the hope that the abort condition is no longer present, or the program can "branch" to an equivalent non-transactional path. In another transaction execution model (herein referred to as a constrained transaction), an aborted transaction is automatically rolled back by the CPU; in the absence of constraint violations, the restricted transaction is assured of eventual completion. [0039] When initiating a transaction, the program can specify various controls, such as (a) which general registers are restored to their original contents if the transaction is aborted, (b) whether the transaction is authorized to modify the register context of floating-point registers, including, for example, floating-point registers and the floating-point control register, (c) if the transaction is allowed to modify the access registers (ARs), and (d) if certain exception conditions programs are being prevented from causing an interrupt. If a transaction is aborted unrestricted, various diagnostic information can be provided. For example, the outermost TBEGIN statement that initiates an unrestricted transaction might designate a specific program transaction diagnostic block (TDB). In addition, the TDB in the CPU prefix area or designated host state description may also be used, if the transaction is aborted due to a program interrupt or a condition that causes interpretive execution to terminate, respectively. [0040] Indicated above are various types of registers. These are explained in more detail here in detail. General registers can be used as accumulators for general logic and arithmetic operations. In one embodiment, each register contains 64 bit positions, and there are 16 general registers. General registers are identified by the numbers 0-15, and are designated by a four-bit R field in an instruction. Some instructions provide for addressing multiple general registers by having multiple R fields. For some instructions, the use of a specific general register is implied rather than explicitly designated by an R field of the instruction. [0041] In addition to their use as accumulators for general logic and arithmetic operations, 15 of the 16 general registers are also used as base address and index registers in address generation. In these cases, registers are designated by a four-bit B field or X field in an instruction. A value of zero in field B or X specifies that no base or index should be applied, and thus general register 0 should not be designated as containing a base address or index. [0042] Floating point instructions use a set of floating point registers. CPU 16 has floating point registers, in one embodiment. Floating-point registers are identified by the numbers 0-15, and are designated by a four-bit R field in floating-point instructions. Each floating-point register is 64 bits in length and can contain a short (32-bit) or long (64-bit) floating-point operand. [0043] A floating point control register (FPC) is a 32-bit register that contains the mask bits, flag bits, a data exception code, and rounding mode bits, and is used during processing of floating point operations. [0044] Furthermore, in one embodiment, CPU 16 has control registers, each having 64-bit positions. Bit positions in registers are assigned to certain installations in the system, such as program event recording (PER) (discussed below), and are used either to specify that an operation can be established or to provide special information required by the installation. In one embodiment, for transactional setup, CR0 (bits 8 and 9) and CR2 (bits 61-63) are used, as described below. [0045] The CPU has, for example, 16 access registers numbered 0-15. An access register consists of 32-bit positions containing an indirect specification of an address space control element (ASCE). An address space control element is a parameter used by the dynamic address translation (DAT) engine to translate references to a corresponding address space. When the CPU is in an access register mode call mode (controlled by bits in the program state word (PSW)), an instruction field B, used to specify a logical address for a storage operand reference, designates an access register, and the address space control element specified by the access register is used by the DAT to be referenced. For some instructions, an R field is used instead of a B field. Instructions are provided for loading and storing the contents of the access registers and for moving the contents from one access register to another. [0046] Each of access registers 1-15 may designate any address space. Access register 0 designates the primary instruction space. When one of the access registers 1-15 is used to designate an address space, the CPU determines which address space is designated by translating the contents of the access register. When access register 0 is used to designate an address space, the CPU treats the access register as designating the primary instruction space, and does not examine the actual contents of the access register. Therefore, the 16 access registers can designate, at any one time, the primary instruction space and a maximum of 15 other spaces. [0047] In one embodiment, there are several types of address spaces. An address space is a sequence of consecutive integers (virtual addresses), together with specific transformation parameters, that allow each number to be associated with a byte location in storage. The sequence starts at zero and runs from left to right. [0048] For example, in z/Architecture, when a virtual address is used by a CPU to access main storage (aka, main memory), it is translated first, using dynamic address translation (DAT), to a real address, and then, through a prefix, to an absolute address. DAT can use one to five levels of tables (page, segment, third region, second region, and first region) as transformation parameters. The designation (source and length) of the highest level table for a specific address space is called an address space control element, and is found to be used by DAT in a control register or as specified by a register of access. Alternatively, the address space control element for an address space may be a real space designation, which indicates that the DAT is translating the virtual addresses simply by treating it as a real address and without using any tables. [0049] DAT uses, at different times, the address space control elements in different control registers or specified by the access registers. The choice is determined by the mode specified in the current PSW translation. Four translation modes are available: primary space mode, secondary space mode, access register mode and native space mode. Different address spaces are addressable depending on the translation mode. [0050] At any time the processor is in primary space mode or secondary space mode, the CPU can translate virtual addresses that belong to two address spaces - the primary address space and the secondary address space. Anytime the CPU is in access register mode, it can translate the virtual addresses of up to 16 address spaces - the main address space up to 15 specified AR address spaces. Anytime the processor is in native space mode, it can translate virtual addresses from the native address space. [0051] The primary address space is identified as such because it consists of primary virtual addresses, which are translated via the primary address space control element (ASCE). Likewise, the secondary address space consists of secondary virtual addresses translated through the secondary ASCE; AR-specified address spaces consist of AR-specified virtual addresses translated via AR-specified ASCES; and the native address space consists of native virtual addresses translated through native ASCE. The primary and secondary ASCES are in control registers 1 and 7, respectively. AR-specified ASCES are in second ASN table entries that are located through a process called access register translation (ART) using control register 2, 5, and 8. The native ASCE is in control register 13. [0052] An embodiment of a computing environment for incorporating and using one or more aspects of the transactional facility described herein is described with reference to Figure 1. [0053] Referring to figure 1, in an example, computing environment 100 is based on z/Architecture, offered by International Business Machines Corporation (IBM), Armonk, New York. The z/Architecture is described in a publication entitled IBM "z/Architecture - Principles of Operation," Publication No. SA22-7932-08, 9th Edition, August 2010, which is incorporated herein by reference in its entirety. [0054] The Z/ARQUITECTURE, IBM, and Z/OS and z/VM (listed below) marks are registered trademarks of International Business Machines Corporation, Armonk, New York. Other names used herein may be trademarks, trademarks or product names of International Business Machines Corporation or other companies. [0055] As an example, computing environment 100 includes a central processor (CPC) complex 102 coupled to one or more input/output (I/O) devices 106 via one or more control units 108. Central processor complex 102 includes, for example, one or more central processors 110, one or more partitions 112 (e.g., logical partitions (LP)), a logical partition hypervisor 114, and an input/input subsystem. output 115, each of which is described below. [0057] Central Processors 110 are physical processor resources assigned to logical partitions. In particular, each logical partition 112 has one or more logical processors, each of which represents all or a portion of a physical processor 110 allocated to the partition. The logical processors of a specific partition 112 may either be dedicated to the partition, such that the underlying processor resource 101 is reserved for that partition; or shared with another partition, so that the underlying processor resource is potentially available to another partition. [0058] A logical partition functions as a separate system and has one or more applications, and optionally, an operating system residing on it, which can be different for each logical partition. In one embodiment, the operating system is the z / OS operating system, the z / VM operating system, the z / Linux operating system, or the TPF operating system, offered by International Business Machines Corporation, Armonk, New York. Logical 1 partitions 12 are managed by a logical partition hypervisor 114, which is implemented by firmware running on processors 110. As used herein, firmware includes, for example, the microcode and/or millicode of the processor. It includes, for example, the hardware level instructions and/or data structures used in implementing the higher level machine code. In one embodiment, that includes, for example, proprietary code that is normally delivered as microcode that includes software or site-specific microcode for the hardware, and system access operation controls for the underlying system hardware. The logical partitions and logical partition hypervisor each comprise one or more programs residing in respective central storage partitions associated with the central processors. An example of logical partition hypervisor 114 is Processor Resource/System Manager (PR/SM), offered by International Business Machines Corporation, Armonk, New York. [0060] The input/output subsystem 15 directs the flow of information between input/output devices 106 and main storage (a.k.a., the main memory). It is coupled to the central processing complex in that it can be a part of the central processing complex or separate from them. The I/O subsystem relieves central processors of the task of communicating directly with input/output devices and allows data processing to proceed concurrently with input/output processing. To provide communications, the I/O subsystem uses communication I/O adapters. There are several types of communication adapters, including, for example, channels, I/O adapters, PCI cards, Ethernet cards, small computer storage interface (SCSI) cards, and so on. In the particular example described here, the communication I/O adapters are channels and therefore the I/O subsystem is referred to herein as a channel subsystem. However, this is just an example. Other types of I/O subsystems can be used. [0061] The I/O subsystem uses one or more input/output paths as communication links in managing the flow of information to or from input/output devices 106. In this particular example, these paths are called I/O paths. channel, since communication adapters are channels. [0062] The computing environment described above is just one example of a computing environment that can be used. Other environments, including but not limited to non-partitioned environments, other partitioned environments, and/or emulated environments, may be used; embodiments are not limited to any environment. [0063] According to one or more aspects, transactional execution facility is a CPU enhancement that provides the means by which the CPU can execute a sequence of instructions - known as a transaction - that can access multiple storage locations, including updating these locations. As noted by other CPUs and the I/O subsystem, the transaction is either (a) completed in its entirety as a single atomic operation, or (b) aborted, potentially leaving no evidence that it was ever executed (except for certain conditions described here). Thus, a successfully completed operation can update multiple storage locations without any special locks that are required in the classic multiprocessing model. [0064] Transactional execution facility includes, for example, one or more controls; one or more instructions; transactional processing, including restricted and unrestricted execution; and interrupt processing, each of which is further described below. [0065] In one embodiment, three special-purpose controls, including a transaction abort Program Status Word (PSW), a transaction diagnostic block (TDB) address, and a transaction nesting depth; five bits of the control register; and six general instructions, including TRANSACTION BEGIN (restricted and unrestricted), TRANSACTION END, EXTRACT TRANSACTION NESTING DEPTH, TRANSACTION ABORT, and NONTRANSACTIONAL STORE, are used to control transactional execution setup. When the installation is installed, it is installed, for example, on all CPUs in the configuration. An installation indication, bit 73 in one embodiment, when one, indicates that the transaction execution installation is installed. [0066] When the transaction execution facility is installed, the configuration provides an unrestricted transactional execution facility, and optionally a restricted transactional execution facility, each of which is described below. When indications of installations 50 and 73, as examples, are both one, the restricted transactional execution installation is installed. Both installation indications are stored in memory in specific locations. [0067] As used herein, the statement name BEGIN TRANSACTION refers to the mnemonic TBEGIN (Transaction Begin for a non-restricted transaction) and TBEGINC (Transaction Begin for a restricted transaction) service instructions. Discussions pertaining to a specific instruction are indicated by the instruction name followed by the mnemonic in parentheses or square brackets, or simply by the mnemonic. [0068] One embodiment of a format of a TRANSACTION BEGIN (TBEGIN) instruction is depicted in Figures 2A-2B. As an example, a TBEGIN 200 instruction includes an opcode field 202, which includes an opcode specifying an unrestricted operation of initiating the operation; a base field (B1) 204; a displacement field (D1) 206; and an immediate field (I2) 208. When field B1 is nonzero, the contents of the general register specified by B1 204 are added in D1 206 to obtain the first address of the operand. [0069] When field B1 is non-zero, the following applies: • When the transaction nesting depth is initially zero, the first address of the operand designates the location of the 256-byte transaction diagnostic block, called the TDB of specified TBEGIN (described later), in which various diagnostic information can be stored, if the transaction is aborted. When the CPU is in primary space mode or access register mode, the first operand address designates a location in the primary address space. When the CPU is in secondary space or native space mode, the first operand address designates a location in secondary space or native address, respectively. When DAT is off, the transaction diagnostic block (TDB) address (TDBA) designates a location in real storage. Storage accessibility for the first operand is determined. If accessible, the logical address of the operand is placed in the transaction diagnostic address block (TDBA), and the TDBA is valid. • When the CPU is already in unrestricted transactional execution mode, the TDBA is not modified, and is unpredictable whether the first operand is tested for accessibility. [0070] When field B1 is zero, no access exception is detected for the first operand and, for the outermost TBEGIN instruction, the TDBA is invalid. [0071] The bits of the I2 field are defined as follows, in an example: [0072] General Register Save Mask (GRSM) 210 (figure 2B): Bits 0-7 of the I2 field contains the general register save mask (GRSM). Each bit of GRSM represents an even-odd pair of general registers, where bit 0 represents registers 0 and 1, bit 1 represents registers 2 and 3, and so on. When a bit in the GRSM of the outermost TBEGIN instruction is zero, the corresponding register pair is not saved. When a bit in the GRSM of the outermost TBEGIN instruction is one, the corresponding record pair is saved in a location dependent template that is not directly accessible by the program. [0073] If the transaction is aborted, saved record pairs are restored to their contents when the outermost TBEGIN statement was executed. The contents of all other general (unsaved) registers are not restored when the transaction is rolled back. [0074] The general record save mask is ignored in all TBEGINs exceptions for the outermost one. [0075] AR Modify Permit (A) 212: Control A, bit 12 of the I2 field, controls whether the transaction is allowed to modify an access register. The effective permission AR modify control is the E logic of control A in the TBEGIN instruction for the current nesting level and for all outer levels. [0076] If the effective A control is zero, the transaction will be aborted with abort code 11 (restricted instruction) if an attempt is made to modify any access register. If the effective A control is one, the transaction will not be aborted if an access register is modified (absent of any other abort condition). [0077] Floating Point Operation Permission (F) 214: Control F, bit 13 of the I2 field, controls whether the transaction is allowed to execute specified floating point instructions. The effective permission of the floating-point operation control is the logic E of the F control in the TBEGIN instruction for the current nesting level and for all outer levels. [0078] If the effective control F is zero, then (a) the operation will be aborted with interrupt code 11 (restricted instruction) if an attempt is made to execute a floating point instruction, and (b) the exception code data (DXC) in byte 2 of the floating point control register (FPCR) will not be set by any exception condition of the data exception program. If the effective control F is one, then (a) the transaction will not be aborted if an attempt is made to execute a floating point instruction (in the absence of any other abort condition), and (b) the DXC in the FPCR can be defined by a data exception program exception condition. [0079] Program Interrupt Filtering Control (PIFC) 216: Bits 14-15 of the I2 field are the program interrupt filtering control (PIFC). Public finance control controls whether certain classes of program exception conditions (eg addressing exception, data exception, operation exception, protection exception, etc.) that occur while the CPU is in execution mode result transactional in an interrupt. [0080] The effective PIFC is the highest value of the PIFC in the TBEGIN instruction for the current nesting level and for all outer levels. When the effective PIFC is zero, all program exception conditions result in an interrupt. When the effective PIFC is one, program exception conditions having a transactional execution class of 1 and 2 result in an interrupt. (Each program exception condition is assigned at least one transactional execution class, depending on the severity of the exception. Severity is based on the probability of recovery during repeated execution of the transaction, and whether the operating system needs to see the interruption.) When the effective PIFC is two, program exception conditions having a transactional execution class result in an interrupt. A PIFC of 3 is reserved. [0081] Bits 8-11 of the I2 field (bits 40-43 of the instruction) are reserved and must contain zeros; otherwise, the program may not work for compatibility in the future. [0082] One embodiment of a format of a restricted Trasaction Begin (TBEGINC) instruction is described with reference to Figures 3A-3B. In one example, TBEGINC 300 includes an operation code field 302, which includes an operation code specifying a restricted Transaction Begin operation; a base field (B1) 304; a displacement field (D1) 306; and an immediate field (I2) 308. The contents of the general register specified by B1 304 are added in D1 306 to obtain the first address of the operand. However, with the restricted transaction start instruction, the first operand address is not used to access storage. Instead, the B1 field of the instruction includes zeros; otherwise, a specification exception is recognized. [0083] In one embodiment, the I2 field includes several controls, an example of which is represented in Figure 3B. [0084] The bits of the I2 field are defined as follows, in an example: [0085] General Register Save Mask (GRSM) 310: Bits 0-7 of the I2 field contains the general register save mask (GRSM). Each bit of GRSM represents an even-odd pair of general registers, where bit 0 represents registers 0 and 1, bit 1 represents registers 2 and 3, and so on. When a bit in GRSM is zero, the corresponding register pair is not saved. When a bit in GRSM is one, the corresponding register pair is saved in a model-dependent location that is not directly accessible by the program. [0086] If the transaction is aborted, saved record pairs are restored to their contents when the outermost TRANSACTION BEGIN statement is executed. The contents of all other general (unsaved) registers are not restored when a restricted transaction aborts. [0087] When TBEGINC is used to continue execution in non-constrained transaction execution mode, the general record save mask is ignored. [0088] AR Modify Permit (A) 312: Control A, bit 12 of field I2, controls whether the transaction is allowed to modify an access register. The effective AR modify permission control is the AND logic of control A in the TBEGINC instruction for the current nesting level and for any outer TBEGIN or TBEGINC instruction. [0089] If effective A control is zero, the transaction will be aborted with abort code 11 (restricted instruction) if an attempt is made to modify any access register. If the effective A control is one, the transaction will not be aborted if an access register is modified (absent of any other abort condition). [0090] Bits 08-11 and 13-15 of the I2 field (bits 40-43 and 45-47 of the instruction) are reserved and must contain zeros. [0091] In order for a transaction start instruction is specified by a TRANSACTION END (TEND) instructions, a format of which is represented in Figure 4. As an example, a TEND 400 instruction includes an opcode field 402, which includes an operation code specifying a transaction end operation. [0092] A number of terms are used with regard to the transaction execution facility, and therefore, just for convenience, a list of terms is provided below in alphabetical order. In one embodiment, these terms have the following definition: [0093] Abort: A transaction aborts when it ends before an END TRANSACTION statement that results in a transaction nesting depth of zero. When a transaction is aborted, the following occurs, in one embodiment: [0094] Transactional storage accesses made by any and all levels of the transaction are dropped (ie, uncommitted). [0095] Non-transactional storage accesses made by any and all levels of the transaction are compromised. [0096] Registers designated by the general save mask (GRSM) register of the outermost BEGIN TRANSACTION instruction are restored to their contents prior to transactional execution (ie, to their contents at execution of the outermost BEGIN TRANSACTION instruction). General does not register designated by the General Register of economy mask of the outermost transaction start instruction are not restored. [0097] access registers, floating point registers, and the floating point control register are not reset. Any changes made to these registers during transaction execution are retained when the transaction is voided. [0098] A transaction can be aborted due to a variety of reasons, including attempted execution of a restricted instruction, attempted modification of a restricted resource, transactional conflict, bypassing multiple CPU resources, any interpretive execution intercept condition, any interrupt, a transaction ABORT statement, and other reasons. A transaction-abort code provides specific reasons why a transaction can be aborted. [0099] An example of a format of an Abort (TABORT) TRANSACTION instruction is described with reference to Figure 5. As an example, a TABORTO 500 instruction includes an opcode field 502, which includes an opcode specifying an operation abort operation; a base field (B2) 504; and an offset field (D2) 506. When field B2 is non-zero, the contents of the general register covered by B2 504 are added to 506 D2 to obtain a second address of the operand; otherwise, the second address of the operand is formed exclusively from domain D2, and field B2 is ignored. The second address of the operand is not used for sending data; instead, the transaction addresses forms abort code that is placed in a transaction diagnostic block during abort processing. Address computation for the second operand address follows the rules of address arithmetic: in 24-bit addressing mode, bits 0-29 are set to zeros; in bit 31 addressing mode, bits 0-32 are set to zero. [0100] Commit: On completion of an ultra-peripheral TRANSACTION END instruction, the CPU commits the store accesses made by the transaction (ie the outermost transaction and any nested levels) in such a way that they are visible to other CPUs and the I/O subsystem. As noted by other CPUs and the I/O subsystem, all fetching and storing accesses made by all nested levels of the transaction appear to occur as a single simultaneous operation occurs when committing. [0101] The contents of general registers, access registers, floating point registers, and floating point control register are not modified by the commit process. Any changes made to these registers during transactional execution are kept when the transaction stores are compromised. [0102] Conflict: A transactional access performed by a CPU conflict with (a) a transactional access or non-transactional access performed by another CPU, or (b) the non-transactional access performed by the I/O subsystem, if both hits are to any location within the same cache line, and one or more of the hits is a store. [0103] A conflict can be detected by speculatively executing a CPU of instructions, even though the conflict cannot be detected in the conceptual sequence. [0104] Constrained transaction: A constrained transaction is a transaction that runs in restricted transactional execution mode and is subject to the following limitations: [0105] A subset of the general instructions is available. [0106] A limited number of instructions can be executed. [0107] A limited number of operand storage locations can be accessed. [0108] The transaction is limited to a single nesting level. [0109] In the absence of repeated interrupts or conflicts with other CPUs or the I/O subsystem, a constrained transaction eventually completes, so an abort-handler routine is not needed. Restricted transactions are described in detail below. [0110] When a constrained Transaction Begin (TBEGINC) statement is executed while the CPU is already in the unconstrained transaction execution mode, execution continues as a nested unconstrained transaction. [0111] Restricted Transactional Execution Mode: When the transaction nesting depth is zero, and a transaction is started by a TBEGINC instruction, the CPU enters the restricted transactional execution mode. While the CPU is in constrained transactional execution mode, the transaction nesting depth is one. [0112] Nested transaction: When the Transaction Begin statement is issued while the CPU is in non-constrained transactional execution mode, the transaction is nested. [0113] Transactional execution setup uses a model called flat nesting. In flat nesting mode, stores made by an internal transaction are not observable by other CPUs and the I/O subsystem until the outermost transaction commits its stores. Likewise, if a transaction is aborted, all nested transactions are aborted, and all transactional stores of all nested transactions are discarded. [0114] An example of nested transactions is depicted in Figure 6. As shown, a first TBEGIN 600 starts an outermost transaction 601, TBEGIN 602 starts a first nested transaction, and TBEGIN 604 starts a second nested transaction. In this example, TBEGIN 604 and TEND 606 define an innermost transaction 608. When TEND 610 executes, transactional stores are committed 612 to the outermost transaction and all inner transactions. [0115] Unconstrained Transaction: An unconstrained transaction is a transaction that runs in unconstrained transactional execution mode. Although an unrestricted transaction is not limited to the way a restricted transaction is, it can still be aborted due to a variety of causes. [0116] Unconstrained Transactional Execution Mode: When a transaction is initiated by the TBEGIN instruction, the CPU enters unconstrained transactional execution mode. While the CPU is in unconstrained transactional execution mode, the transaction nesting depth can range from one to the maximum transaction nesting depth. [0117] non-transactional Access: non-transactional accesses are operating storage accesses made by the CPU when not in transactional execution mode (ie, classic storage transactional accesses). Furthermore, the accesses made by the I/O subsystem are non-transactional accesses. In addition, the non-transactional storage instruction can be used to cause a non-transactional storage access while the CPU is in transactional non-constrained execution mode. [0118] One embodiment of a format of a non-transactional store instruction is described with reference to Figure 7. As an example, a non-transactional store instruction 700 includes a plurality of opcode fields 702a, 702b, specifying an opcode that designates a non-transactional storage operation; a register field (Ri) 704 specifying a register, the contents of which the first operand is called; an index field (X2) 706; a base field (B2) 708; a first offset field (DL2) 710; and a second offset field (DH2) 712. The contents of the general registers designated by fields X2 and B2 are added to the contents of a concatenation of the contents of the fields of DH2 and DL2 to form the second address of the operand. When one or both of the X2 or B2 fields are equal to zero, the corresponding register does not participate in the addition. [0119] The first 64-bit operand is placed in unchanged transactional form in the second localoperand. [0120] The offset, formed by the concatenation of the DL2 and DH2 fields, is treated as a 20-bit binary signed integer. [0121] The second operand must be aligned on a doubleword boundary; otherwise, exception specification is recognized and the operation is suppressed. [0122] Outer Transaction / Ultra Peripheral: A transaction with a lower number transaction nesting depth is an outer transaction. The transaction with a transaction nesting depth value of one is the outermost transaction. [0123] An outermost transaction start statement is one that is executed when the transaction nesting depth is initially zero. An outermost TRANSACTION END statement is one that causes the transaction nesting depth to transition from one to zero. An operation is restricted to the outermost operation in this embodiment. [0124] Program Interrupt Filtering: When a transaction is aborted due to certain program exception conditions, the program can optionally prevent the interruption from occurring. This technique is called program interrupt filtering. Program interrupt filtering is subject to transactional interrupt class, effective program interrupt control filtering of the transaction start instruction, and transactional execution program interrupt override filtering in control register 0. [0125] Transaction: Transaction includes storing operand accesses made, and general registers selected changed, while the CPU is in transaction execution mode. For an unrestricted transaction, operating storage accesses can include both transactional accesses and non-transactional accesses. For a restricted operation, operand storage accesses are limited to transactional accesses. As noted by other CPUs and by the I/O subsystem, all storage-operating accesses made by the CPU while in transaction execution mode appear to occur as a single concurrent operation. If a transaction is aborted, transactional store accesses are discarded, and any registers designated by the general register save outermost transaction mask BEGIN instructions are restored to their contents before transactional execution. [0126] Transactional Access: transactional accesses are operating storage accesses made while the CPU is in transactional execution mode, with the exception of accesses made by the non-transactional STORE instruction. [0127] Transactional Execution Mode: The term transactional execution mode (aka, transaction execution mode) describes the common operation of both the unrestricted and the restricted transactional execution modes. Thus, when the operation is described, the terms unrestricted and limited are used to qualify the transactional execution mode. [0128] When the transaction nesting depth is zero, the CPU is not in transactional execution mode (also called non-transactional execution mode). [0129] As noted by the CPU, fetches and stores done in transactional execution mode are no different than those done while not in transactional execution mode. [0130] In an embodiment of the z/Architecture architecture, the transactional execution facility is under the control of bits 8-9 of the control register, bits 61-63 of control register 2, the transaction nesting depth, the block address diagnostic transaction, and the transaction abort program status word (PSW). [0131] Following an initial CPU reset, the contents of register 0 control bit positions 8-9, register 2 control bit positions 62-63, and transaction nesting depth are set to zero. When transactional execution control, 8 bits of register 0 control, is zero, the CPU cannot be put into transactional execution mode. [0132] Further details on the various controls are described below. [0133] As indicated, the transactional execution facility is controlled by two register control bits of zero and three register two control bits. For example: [0134] 0 Bit Control Register: Bit assignments are as follows, in one embodiment: [0135] Transactional Execution Control (TXC): Control register bit 8 zero is transactional execution control. This bit provides a mechanism by which the control program (eg operating system) can indicate whether or not the transaction execution facility is usable by the program. Bit 8 is to be one to successfully enter transactional execution mode. [0136] When register 0 control bit 8 is zero, attempted execution of extract OPERATION FROM SETTLE DEPTH, Transaction Begin, and edge transaction instructions results in a special operation execution. [0137] One embodiment of a format of a TRANSACTION EXTRACT DEPTH NESTING instruction is described with reference to Figure 8. As an example, an extract TRANSACTION NESTING DEPTH 800 instruction includes an opcode field 802 specifying an opcode that indicates the operation of transaction nesting depth extraction; and an Ri register field 804 that designates a general register. [0138] The current transaction nesting depth is placed in bits 48-63 of the general register Ri. Bits 0-31 of the register remain unchanged, and bits 32-47 of the register are set to zero. [0139] In another embodiment, the maximum depth nesting operation is also placed in general register Ri, such as in bits 16-31. [0140] Transaction Execution Program Interrupt Filtering Override (Pifo): Zero register control bit 9 is the transactional execution program interrupt filtering override. This bit provides a mechanism by which the control program can ensure that any program exception condition that occurs while the CPU is in transactional execution mode results in an interrupt, regardless of the control program interrupt's effectiveness filtering specified or implied by the Transaction Begin statement(s). [0141] Control Register 2 Bits: The assignments are as follows, in one embodiment: [0142] Transaction Diagnostic Scope (TDS): Bit 61 of control register 2 controls the applicability of the transaction diagnostic control (TDC) in bits 62-63 of the register, as follows: [0143] TDS Value Meaning 0 TDC is applicable regardless of whether the CPU is in trouble or supervisor state. TDC 1 only applies when the processor is in trouble state. When the CPU is in the supervisor state, processing is as if the TDC contained zero. [0144] Transaction Diagnostic Control (TDC): Bits 62-63 of control register 2 is a two-bit unsigned integer that can be used to cause transactions to be randomly aborted for diagnostic purposes. The TDC encoding is as follows, in an example: [0145] TDC Value Meaning 0 Normal operation; operations are not aborted as a result of the TDC. 1 Abort each transaction in a random statement, but before executing the ultra-peripheral TRANSACTION END statement. Abort random operations on a random instruction. 3Reserved [0146] When a transaction is aborted due to a non-zero TDC, then any of the following can occur: [0147] [00126] The interrupt code is defined as any of codes 7-11, 13-16, or 255, with the code value chosen at random by the CPU; the condition code is set corresponding to the abort code. Abort codes are further described below. [0148] For unrestricted operation, the condition code is set to one. In this case, the interrupt code is not applicable. [0149] It is dependent on whether the TDC 1 value model is implemented. If not implemented, a value of 1 acts as if 2 was specified. [0150] For a restricted operation, a TDC value of 1 is treated as if a TDC value of 2 was specified. [0151] If a value of 3 TDC is specified, the results are unpredictable. [0152] Address Block Diagnostic Transaction (TDBA) [0153] The valid transaction diagnostic block address (TDBA) is set from the first operand address of the outermost transaction BEGIN (TBEGIN) instruction when the Bi field of the instruction is non-zero. When the CPU is in access register or main space mode, the TDBA designates a location in the main address space. When the CPU is in secondary space, or native space mode, the TDBA designates a secondary space location or native address, respectively. When DAT (Dynamic Address Translation) is off, TDBA designates a location in real storage. [0154] The TDBA is used by the CPU to find the transaction diagnostic lock - the so-called specified TDB - TBEGIN - if the transaction is later aborted. The rightmost three bits of TDBA are equal to zero, which means that TDB-TBEGIN is specified on a doubleword boundary. [0155] When the Bi field of an outermost transaction BEGIN (TBEGIN) instruction is zero, the transactional diagnostic block address is invalid and not specified by the TBEGIN TDB is stored if the transaction is later aborted. [0156] PSW Abortion Transaction (TAPSW) [0157] During the execution of the BEGIN (TBEGIN) instruction when the nesting depth is initially zero, the PSW abort transaction is set to the contents of the current PSW; and the address of the abort PSW operation instruction designates the next sequential instruction (that is, the instruction following the outermost TBEGIN). During the execution of the BEGIN TRANSACTION restricted instruction (TBEGINC) when the depth of settlement is initially zero, the transaction aborted PSW is defined as the contents of the current PSW, except that the address of the abort PSW operation instruction designates the TBEGIN instruction (instead of the next sequential instruction following the TBEGINC). [0158] When a transaction is aborted, the condition code in the aborted PSW transaction is replaced with a code that indicates the severity of the abort condition. Subsequently, if the operation was aborted due to causes that do not result in an interrupt, the PSW is loaded from the PSW abort transaction; if the operation was aborted due to causes that result in an interrupt, the PSW abort transaction is stored as the old PSW interrupt. [0159] The PSW abort transaction is not changed during the execution of any interior BEGIN TRANSACTION statement. [0160] Settlement Transaction Depth (TND) [0161] Transaction nesting depth is, for example, an unsigned 16-bit value that increments each time a Transaction Begin statement completes with condition code 0 and decrements each time an END TRANSACTION statement completes. The transaction nesting depth is reset when a transaction is aborted or by CPU reset. [0162] In one embodiment, a maximum of TND 15 is implemented. [0163] In one embodiment, when the CPU is in constrained transactional execution mode, the nesting depth is one transaction. Also, although the maximum TND can be represented as a 4-bit value, the TND is defined as being a 16-bit value to facilitate its inspection in the transaction diagnostic block. [0164] Transaction Diagnostic Block (TDB) [0165] When a transaction is aborted, various status information can be saved in a diagnostic transaction block (TDB) as follows: [0166] 1. TBEGIN-specified TDB: For an unrestricted transaction, when the Bi field of the outermost TBEGIN instruction is nonzero, the first operand address of the instruction designates the TBEGIN-specified TDB. This is a specified local application program that can be examined by the application's interrupt handler. [0167] 2. Program interrupt (PI) TDB: If a transaction is aborted unconstrained due to an unfiltered program exception condition, or if a transaction is aborted constrained due to any program exception condition (ie, any condition that results in a program interrupt being acknowledged), the PI-TDB is stored in places in the prefix area. This option is available for the operating system to inspect and log out of any diagnostic reports it can provide. [0168] 3. TDB Interception: If the transaction is aborted due to any program exception condition that results in the interception (ie the condition causes interpretive execution to end and control to return to the host program), the TDB is stored in a location specified in the state block description for the guest operating system. [0169] The TBEGIN-specified TDB is only stored, in one embodiment, when the address is a valid TDB (that is, when the Bi field of the outermost TBEGIN instruction is non-zero). [0170] To abort due to unfiltered program exception conditions, only one of either the PI-TDB or Intercept TDB will be stored. Thus, there cannot be zero, one, two or TDBs stored to abort. [0171] Other details regarding an example of each of the TDBs are described below: [0172] Specified by TBEGIN TDB: The 256-byte location specified by a valid transaction diagnostic block address. When the address of the transaction diagnostic block is valid, the specified TDB-TBEGESf is stored in a transaction abort. The TBEGESi- specified TDB is subject to all storage protection mechanisms that are in effect at the execution of the outermost TRANSACTION BEGIN statement. A PER (Event Recording Program) storage change event for any part of the specified TDB-TBEGIN is detected during execution of the outermost TBEGIN, and not during transaction abort processing. [0173] One of the purposes of PER is to help debug programs. It allows the program to be alerted to the following types of events, as examples: [0174] The execution of a successful branch instruction. The option is provided to have an event occur only when the bypass destination location is within the designated storage area. [0175] Fetching an instruction from the designated storage area. [0176] modification of the contents of the designated storage area. The option is provided to have an event occur only when the storage area is within designated address spaces. [0177] Execution of a Store Using Real Address Instruction. [0178] Execution of the TRANSACTION END statement. [0179] The program can selectively specify that one or more of the above event types be acknowledged, except that the STORE event using the actual address can only be specified together with the storage change event. Information concerning a PER event is provided to the program, via a program interrupt, with the cause of the interrupt being identified in the interrupt code. [0180] When the transaction diagnostic block address is not valid, a specified TDB-TBEGIN is not stored. [0181] TDB Interrupt Program: actual locations 6.144-6,399 (1800-18FF hex). The TDB program interrupt is stored when a transaction is aborted due to program interrupt. When a transaction is aborted due to other causes, the contents of the TDB interrupt program are unpredictable. [0182] TDB program interruption is not subject to any protection mechanism. PER storage change events are not detected by the program interrupt TDB when it is stored during a program interrupt. [0183] Intercept TDB: The actual host 256-byte location specified by locations 488-495 of the state description. The TDB trap is stored when an aborted transaction results in a guest program interrupt trap (ie, trap code 8). When a transaction is aborted due to other causes, the contents of the TDB intercept are unpredictable. The TDB interception is not subject to any protection mechanism. [0184] As depicted in Figure 9, the fields of a diagnostic transaction 900 block are as follows, in one embodiment: [0185] Format 902: Byte 0 contains an indication of validity and format, as follows: [0186] Value Meaning 0 The remaining fields of the TDB are unpredictable. 1 1 A Format-TDB, the remaining fields of which are described below. 2-255 Reserved [0187] A TDB in which the format field is zero is referred to as a null TDB. [0188] Flags 904: Byte 1 contains several indications, as follows: [0189] Conflict Token Validity (CTV): When a transaction is aborted due to a seek or store conflict (ie abort codes 9 or 10, respectively), bit 0 of byte 1 is the conflict token validity indication . When the indication is a CTV, the 910-byte token conflict in TDB 16-23 contains the logical address at which the conflict was detected. When the CTV indication is zero, bytes 16-23 of TDB are unpredictable. [0190] When a transaction is aborted due to any reason other than a seek or store conflict, bit 0 of byte 1 is stored as zero. [0191] Restricted-Transaction Indication (CTI): When the CPU is in restricted transactional execution mode, bit 1 of 1 byte is set to one. When the CPU is in unconstrained transactional execution mode, 1-byte bit 1 is set to zero. [0192] Reserved: Bits 2-7 of 1 byte are reserved, and stored as zeros. [0193] Transaction Nesting Depth (TND) 906: 6-7 Bytes contain the transaction nesting depth when the operation was aborted. [0194] Transaction Abort Code (TAC) 908: 8-15 Bytes contain an unsigned 64-bit transaction abort code. Each code point indicates a reason for a transaction being aborted. [0195] It is dependent on whether the abort template transaction code is stored in the TDB program interrupt when a transaction is aborted due to conditions other than program interrupt. [0196] Conflict Token 910: For transactions that are aborted due to conflict fetch or store (ie abort codes 9 and 10 respectively), bytes 16-23 contain the logical address of the storage location at which the conflict. The conflict token is significant when the CTV bit, bit 0 of byte 1, is one of them. [0197] When CTV bit is zero, bytes 16-23 are unpredictable. [0198] Because of speculative execution by the CPU, the conflict token may designate a storage location that would not necessarily be accessed by the transaction's conceptual execution sequence. [0199] Aborted Instruction Transaction Address (ATIA) 912: 24-31 Bytes contain an instruction address that identifies the instruction that was being executed when an abort was detected. When a transaction is aborted due to aborting codes 2, 5, 6, 11, 13 or 256 or higher, or when a transaction is aborted due to aborting codes 4 or 13 and the program exception condition is aborting, ATIA points directly to the instruction that was being executed. When a transaction is aborted due to aborting codes 4 or 12, and the program exception condition is not aborting, the last Atia points to the instruction that was being executed. [0200] When a transaction is aborted due to abort codes 7-10, 14-16, or 255, ATIA does not necessarily indicate the exact instruction causing the abort, but may point to an instruction earlier or later within the transaction. [0201] If a transaction is aborted due to an instruction that is the target of an execute-type instruction, ATIA identifies executing instructions of the type, either pointing to the instruction or passed, according to the interrupt code, as described above. ATIA does not indicate the target of the execute -type instruction. [0202] ATIA is subject to addressing mode when the transaction is aborted. In 24-bit addressing mode, bits 0-40 of the field contain zeros. In 31-bit addressing mode, bits 0-32 of the field contain zeros. [0203] It is dependent on whether the address of the aborted transaction instruction is stored in the TDB interrupt program when a transaction is aborted due to template conditions other than program interrupt. [0204] When a transaction is aborted due to abort code 4 or 12, and the program exception condition is not aborting, ATIA does not point to the instruction causing the abort. By subtracting the number of half words indicated by the ATIA interrupt length code (ILC), the instruction causing the abort can be identified by conditions that suppress or terminate, or by non-PER events that are completing. When a transaction is aborted due to a by event, and no other program exception conditions are present, ATIA is unpredictable. [0205] When the transaction diagnostic block address is valid, the ILC can be examined in the program exception identification (PUD) in bytes 36-39 of the specified TDB-TBEGIN. When filtering does not apply, the ILC can be examined to the DPU at location 140-143 in real storage. [0206] Exception Access ID (eaid) 914: For transactions that are aborted due to certain filtered program exception conditions, byte 32 of the specified TDB-TBEGIN contains the exception access ID. In an example of the z/Architecture architecture, the format of the eaid, and the cases in which it is stored, are the same as those described in actual location 160, when the exception condition results in an interruption, as described in the above incorporated by reference principles of the Operation. [0207] For transactions that are aborted for other reasons, including any exception conditions that result in a program interrupt, byte 32 is unpredictable. Byte 32 is unpredictable in TDB program interrupt. [0208] This field is only stored in the TDB designated by the address transaction diagnostic block; otherwise, the field is reserved. The eaid is stored only for controlled access list or DAT protection, ASCE type, page translation, region first translation, translation region second, region third translation, and segment translation of program exception conditions. [0209] Data exception code (DXC) 916: For transactions that are aborted due to filtered data exception program exception conditions, byte 33 of the specified TBEGIN TDB contains the data exception code. In an example of the z/Architecture architecture, the DXC format, and the cases in which it is stored, are the same as those described in actual location 147, when the exception condition results in an interrupt, as described in the above incorporated by reference principles of the Operation. In one example, location 147 includes the DXC. [0210] For transactions that are aborted for other reasons, including any exception conditions that result in a program interrupt, byte 33 is unpredictable. Byte 33 is unpredictable in TDB program interrupt. [0211] This field is stored only in the TDB designated by the address transaction diagnostic block; otherwise, the field is reserved. DXC is stored only for program data exception conditions. [0212] Program Interrupt Identification (PUD) 918: For transactions that are aborted due to filtered program exception conditions, bytes 36-39 of the specified TDB-TBEGIN contain the program interrupt identification. In an example of the z/Architecture architecture, the format of the PUD is the same as described in real locations 140-143 when the condition results in an interrupt (as described in the earlier incorporated by reference Operating Principles), except that the instruction length code in bits 13-14 of the PUD is respective to the instruction in which the exception condition was detected. [0213] For transactions that are aborted for other reasons, including exception conditions that result in a program interrupt, bytes 36-39 are unpredictable. Bytes 36-39 are unpredictable in TDB program interrupt. [0214] This field is only stored in the TDB designated by the address transaction diagnostic block; otherwise, the field is reserved. The program interrupt identification is only stored for program exception conditions. [0215] Translation Exception Identification (TEID) 920: For transactions that are aborted due to any of the following filtered program exception conditions, bytes 4047 of the TBEGIN-specified TDB contain the translation exception identification. [0216] DAT protection access list controlled or [0217] ASCE type [0218] Translation Page [0219] Region-first translation [0220] Region of second translation [0221] Region third translation [0222] Segment translation exception [0223] In an example of the z/Architecture architecture, the TEID format is the same as described in actual locations 168-175 when the condition results in an interrupt, as described in the earlier incorporated by reference Operating Principles. [0224] For transactions that are aborted for other reasons, including exception conditions that result in a program interrupt, bytes 40-47 are unpredictable. Bytes 40-47 are unpredictable in program interrupt TDB. [0225] This field is stored only in the TDB designated by the address transaction diagnostic block; otherwise, the field is reserved. [0226] Breaking Event Address 922: For transactions that are aborted due to filtered program exception conditions, bytes 48-55 of the specified TDB-TBEGIN contain the address of the breaking event. In an example of the z/Architecture architecture, the burst event address format is the same as that described in real locations 272-279 when the condition results in an interruption, as described in the above incorporated by reference Operating Principles. [0227] For transactions that are aborted for other reasons, including exception conditions that result in a program interrupt, bytes 48-55 are unpredictable. Bytes 48-55 are unpredictable in TDB program interrupt. [0228] This field is stored only in the TDB designated by the address transaction diagnostic block; otherwise, the field is reserved. [0229] More details regarding burst events are described below. [0230] In an embodiment of the z/Architecture architecture, when the PER-3 installation is installed, it provides the program with the address of the last instructions to cause a break in the sequential execution of the CPU. Breaking event address recording can be used as a debugging aid for wild branch detection. This installation provides, for example, a 64-bit register on the CPU, called the burst event address register. Each time an instruction other than abort transaction causes a break in sequential instruction execution (that is, the instruction address in the PSW is replaced, rather than incremented by the instruction length), the address of which the instruction is placed in the break event log address. Whenever a program interruption occurs, or no PER is indicated, the current contents of the break event address register are placed in real storage locations 272-279. [0231] If the instruction causing the break event is the target of an instruction type execution (RUN or LONG RELATIVE execute), then the instruction address used to fetch the execute type instruction is placed in the address register break event. [0232] In an embodiment of the z/Architecture architecture, a break event is considered to occur whenever one of the following instructions makes a branch: BRANCH AND LINK (BAL, BALR); BRANCH AND SAVE (BAS, BASR); BRANCH AND SAVE AND SET MODE (BASSM); BRANCH AND SET MODE (BSM); BRANCH AND STACK (BAKR); BRANCH ON CONDITION (BC, BCR); BRANCH ON COUNT (BCT, BCTR, BCTG, BCTGR); BRANCH ON INDEX HIGH (BXH, BXHG); BRANCH ON INDEX LOW OR EQUAL (BXLE, BXLEG); BRANCH RELATIVE ON CONDITION (BRC); BRANCH RELATIVE ON CONDITION LONG (BRCL); BRANCH RELATIVE ON COUNT (BRCT, BRCTG); BRANCH RELATIVE ON INDEX HIGH (BRXH, BRXHG); BRANCH RELATIVE ON INDEX LOW OR EQUAL (BRXLE, BRXLG); COMPARE AND BRANCH (CRB, CGRB); COMPARE AND RELATIVE BRANCH (CRJ, CGRJ); COMPARE IMMEDIATE AND BRANCH (CIB, CGIB); COMPARE IMMEDIATE AND RELATIVE BRANCH (CIJ, CGIJ); COMPARE LOGICAL AND BRANCH (CLRB, CLGRB); COMPARE LOGICAL AND RELATIVE BRANCH (CLRJ, CLGRJ); COMPARE LOGICAL IMMEDIATE AND BRANCH (CLIB, CLGIB); and COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE (CLIJ, CLGU). [0233] A break event is also considered to occur whenever one of the following statements completes: BRANCH AND SET AUTHORITY (BSA); BRANCH IN SUBSPACE GROUP (BSG); BRANCH RELATIVE AND SAVE (BRAS); BRANCH RELATIVE AND SAVE LONG (BRAZIL); LOAD PSW (LPSW); LOAD PSW EXTENDED (LPSWE); PROGRAM CALL (PC); PROGRAM RETURN (PR); PROGRAM TRANSFER (PT); PROGRAM TRANSFER WITH INSTANCE (PTI); SUMMARY PROGRAM (RP); and TRAP (TRAP2, TRAP4). [0234] A break event is not considered to occur as a result of (implied statement or as a result of transaction aborting) a transaction being aborted. [0235] Model Dependent Diagnostic Information 924: 112-127 Bytes contain model dependent diagnostic information. [0236] For all codes except 12 (filtered program interrupt) abort, model dependent diagnostic information is saved in each TDB that is stored. [0237] In one embodiment, the dependent diagnostic information model includes the following: [0238] Bytes 112-1 19 contain a 64-bit vector called the Transactional Branch Implementation Statements (TXBI). Each of the first 63 bits of the vector indicates the results of executing a branch instruction while the CPU was in transaction execution mode, as follows: [0239] Meaning Value [0240] The completed instruction with no branch. [0241] 1 Instruction completed with branch. [0242] Bit 0 represents the result of the first such branch instruction, bit 1 represents the result of the second such instruction, and so on. [0243] If less than 63 branch instructions were executed while the CPU was in transaction execution mode, the rightmost bits that do not match the branch instructions are defined as including zeros (63 bits). When more than 63 branch instructions have been executed, bit 63 of the TXBI is set to one. [0244] Bits in TXBI are defined by instructions that are capable of causing a burst event, as listed above, except for the following: [0245] Any restricted instruction does not cause a bit to be set in TXBI. [0246] - For instructions of, for example, in z/Architecture, when the field of the BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION, or BRANCH RELATIVE ON CONDITION LONG LONG instruction is zero, or when the R2 field of the following instructions is zero , it is model dependent if the execution of the instruction causes a bit to be defined in TXBI. [0247] BRANCH AND LINK (BALR);BRANCH AND SAVE(BASR); BRANCH AND SAVE AND SET MODE (BASSM); BRANCH AND SET MODE (BSM); BRANCH ON CONDITION (BCR); and BRANCH ON COUNT (BCTR, BCTGR) [0248] To abort conditions that were caused by a host access exception, bit position 0 of byte 127 is set to one. For all other abort conditions, bit 0 of byte position 127 is set to zero. [0249] To abort conditions that were detected by the load/store unit (LSU), the rightmost five pieces of byte 127 contain the indication of the cause. To abort conditions that were not detected by the LSU, byte 127 is reserved. [0250] General Registers 930: 128-255 Bytes contain the contents of general registers 0-15 at the time the operation was aborted. The registers are stored in ascending order, starting with general register 0 in bytes 128135, general register 1 in bytes 136-143, and so on. [0251] Reserved: All other fields are reserved. Unless otherwise noted, the contents of reserved fields are unpredictable. [0252] As noted by other CPUs and the I/O subsystem, storing the TDB(s) during a transaction abort is a multiple access reference that occurs after all non-transactional stores. [0253] An operation can be aborted due to causes that are outside the scope of the immediate configuration in which it executes. For example, transient events recognized by a hypervisor (such as LPAR or z/VM) can cause a transaction to be aborted. [0254] The information provided in the transaction diagnostic block is intended for diagnostic purposes and is substantially correct. However, because an abort may have been caused by an event outside the scope of immediate configuration, information such as the abort code or program interrupt identification may not accurately reflect conditions within the configuration, and therefore should not be used to determine the program action. [0255] In addition to the diagnostic information saved in the TDB, when a transaction is aborted due to any exception condition, program data exception and both AFP register-control, bit 45 of register control 0, and effective allow control float operation point (F) are one, the data exception code (DXC) is placed in byte 2 of the floating point control register (FPCR), regardless of filtering applies to the program exception condition. When a transaction is aborted, and one or both of the AFP control register or effective floating point operation control allow are zero, the DXC is not placed in the FPCR. [0256] In one embodiment, as indicated here, when the transaction execution facility is installed, the following general instructions are provided. [0257] EXTRACT TRANSACTION NESTING DEPTH [0258] NONTRANSACTIONAL STORE [0259] TRANSACTION ABORT [0260] TRANSACTION BEGF [0261] TRANSACTION END [0262] When the CPU is in transactional execution mode, attempted execution of certain instructions is restricted and causes the operation to be aborted. [0263] When issued in constrained transactional execution mode, attempted execution of constrained instructions may also result in an interruption of the operation restraint program, or may result in process execution as if the transaction was not constrained. [0264] In a z/Architecture example, restricted instructions include, for example, the following unprivileged instructions: Compare and SWAP and store; COMPARE AND SWAP AND STORE; MODIFY RUNTIME INSTRUMENTATION CONTROLS; PERFORM LOCKED OPERATION; PREFETCH DATA (RELATIVE LONG), when the code in the Mi field is 6 or 7; STORE CHARACTERS under HIGH mask, when field M3 is zero and the code in field Ri is 6 or 7; EXTENSION INSTALLATION LIST STORE; RUNTIME STORE INSTRUMENTATION Controls; CALL SUPERVISOR; and TEST RUNTIME INSTRUMENTATION controls. [0265] In the above list compare and SWAP and store and execute the LOCKED operation are complex instructions that can be implemented more efficiently using basic instructions in TX mode. The cases of PREFETCH DATA and PREFETCH LONG relative data are restricted as the flush codes 6 and 7 of a cache row, potentially necessitating the commitment of the data before a transaction completes. SUPERVISOR CALL is restricted as it causes an interrupt (which causes a transaction to be aborted). [0266] Under the conditions listed below, the following instructions are restricted: [0267] BRANCH AND LINK (BALR), branch and SAVE (basr) and branch AND SAVE AND SET MODE, when R2 instruction field is non-zero and branch tracking is enabled. [0268] BRANCH AND SAVE AND SET MODE and BRANCH AND SET MODE, when field R2 is non-zero and tracking mode is enabled; SET addressing mode, when tracking mode is enabled. [0269] call monitor, when a monitor event condition is acknowledged. [0270] The above list includes instructions that can form trace entries. If these statements were authorized to execute trace entries Transactionally and formed, and the transaction subsequently aborted, the trace table pointer in control register 12 would be advanced, but the stores for the trace table would be discarded. This would leave an inconsistent gap in the trace table; thus, statements are restricted in cases where they form trace entries. [0271] When the CPU is in transactional execution mode, it is dependent on whether the following instructions are model constrained: CIPHER MESSAGE; CIPHER MESSAGE WITH CFB; CIPHER MESSAGE WITH CHAINING; CIPHER MESSAGE WITH COUNTER; CIPHER MESSAGE WITH OFB; COMPRESSION CALL; COMPUTE INTERMEDIATE MESSAGE DIGEST; COMPUTE LAST MESSAGE DIGEST; COMPUTE MESSAGE AUTHENTICATION CODE; CONVERT UNICODE-16 TO UNICODE-32; CONVERT UNICODE-16 TO UNICODE-8; CONVERT UNICODE-32 TO UNICODE-16; CONVERT UNICODE-32 TO UNICODE 8; CONVERT UNICODE-8 TO UNICODE-16; CONVERT UNICODE-8 TO UNICODE-32; PERFORM CRYPTOGRAPHIC COMPUTATION; RUNTIME INSTRUMENTATION OFF; and RUNTIME INSTRUMENTATION ON.; [0272] Perform CRYPTOGRAPHIC calculations; RUNTIME INSTRUMENTATION OFF; and runtime INSTRUMENTS ON. [0273] Each of the above instructions is either currently implemented by the hardware coprocessor, or was on machines in the past and is therefore considered restricted. [0274] When (A) an effective control allow AR modification is zero, the following instructions are restricted: access copy; MULTIPLE ACCESS LOAD; CARGO Extended Address; and set access. [0275] Each of the above instructions causes the contents of an access register to be modified. If the A control in the Transaction Begin statement is zero, then the program has explicitly indicated that modifying the access register should not be allowed. [0276] When the allow effective operation of the floating control point (F) is zero, floating point instructions are restricted. [0277] Under certain circumstances, the following instructions may be restricted: TIME EXTRACT CPU; PSW EXTRACT; FIRE STORE; STORE PULSE EXTENSION; and FAST FIRE SHOP. [0278] Each of the above instructions is subject to an intercept control in the interpretive execution state description. If the hypervisor has not defined trap control for these instructions, then their execution may be delayed due to the hypervisor implementation; Thus, they are considered restricted if an intercept occurs. [0279] When an unrestricted transaction is aborted because of an attempt to execute a restricted instruction, the transaction abort code in the diagnostic block transaction is set to 1 1 (restricted instruction), and the condition code is set to 3, with the following exceptions: when an unrestricted transaction is aborted due to an attempt to execute an instruction that would otherwise result in a privileged operation exception, it is unpredictable whether the interrupt code is set to 1 1 (restricted instruction) or 4 ( unfiltered program interrupt resulting from recognition of privileged operation program interrupt). When an unrestricted transaction is aborted due to the attempt to execute PREFETCH DATA (relative LONG) when the code in the Mi field is 6 or 7 or store characters under HIGH mask when the M3 field is zero and the code in the Ri field is 6 or 7, it is unpredictable whether the interrupt code is set to 1 1 (restricted instruction) or 16 (other cache). When an unrestricted transaction is aborted due to the call monitor execution attempt, and both the event monitor condition and a specification exception condition are present it is unpredictable whether the interrupt code is set to 11 or 4, or, if the program interrupt is filtered, 12. [0280] Additional instructions may be restricted in a restricted transaction. Although these instructions are not currently defined to be constrained in an unconstrained transaction, they may be disallowed, under certain circumstances, in an unconstrained transaction on future processors. [0281] Certain restricted instructions may be allowed in transactional execution mode on future processors. Therefore, the program must not rely on the transaction being aborted due to the attempt to execute a restricted instruction. The transaction abort statement should be used to reliably cause a transaction to be aborted. [0282] In an unrestricted transaction, the program must provide an alternative non-transactional code path to accommodate a transaction that aborts due to a restricted instruction. [0283] In operation, when transaction nesting depth is zero, execution of the BEGIN TRANSACTION (TBEGIN) instruction resulting in condition code of zero causes the CPU to enter non-constrained transactional execution mode. When the transaction nesting depth is zero, the execution of the Transaction Begin Constrained Statement (TBEGINC), resulting in condition code of zero causes the CPU to enter constrained transactional execution mode. [0284] Unless expressly stated otherwise, all rules that apply to non-transactional execution also apply to transactional execution. These are additional processing features while the CPU is in transactional execution mode. [0285] When the CPU is in unconstrained transactional execution mode, execution of the BEGIN TRANSACTION instruction resulting in a condition code of zero causes the CPU to remain in unconstrained transactional execution mode. [0286] As noted by the CPU, fetches and stores done in transaction execution mode are no different than those done while not in transaction execution mode. As noted by other CPUs and by the I/O subsystem, all storage operating accesses made while a CPU is in transactional execution mode appear to be a single concurrent access block. That is, accesses for all bytes within a halfword, word, doubleword, or quadword are specified to appear to be concurrent component as observed by other processors and (eg, channel programs) I/O. The halfword, word, doubleword, or quadword is referred to in this section as a block. When a fetch type reference is specified to appear to be concurrent within a block, no store access for the block by another CPU or program I/O is allowed for as long as the bytes contained in the block are being fetched. When a store reference of type is specified to appear to be concurrent within a block, no access to the block, either fetch or store, is allowed by another CPU or program I/O for as long as bytes within the block are being stored. [0287] Storage accesses for instruction and DAT and ART (Access Register Table) Fetch table follow non-transactional rules. [0288] The CPU leaves transactional execution mode normally through an END TRANSACTION Statement that causes the transaction nesting depth to transition to zero, in which case, the transaction is completed. [0289] When the CPU leaves transactional execution mode through the completion of a TRANSACTION END statement, all stores made while in transactional execution mode are committed; that is, the stores appear to occur as a single concurrent operation block as observed by other CPUs and the I/O subsystem. [0290] More details on processing associated with restricted and unrestricted transactions, including processing associated with initiating a transaction via TBEGINC and TBEGIN, respectively, are provided below. [0291] In one example, the processing associated with starting a transaction conditioned by, for example, TBEGINC is, as follows: [0292] If already in TX-restricted mode, an operation restriction exception is recognized. [0293] If current TND (Transaction Settlement Depth) > 0, execution proceeds as if transaction is not restricted [0294] the effective control F set to zero [0295] the effective PIFC remains unchanged [0296] Allows outside unrestricted TX to call the function of services that may or may not use restricted TX. [0297] If current TND = 0: [0298] Transaction diagnostic block address is invalid [0299] - No specified TDB-instruction stored in abort [0300] the Transaction-abortion PSW address set of the TBEGINC [0301] - It is not the next sequential instruction [0302] GRSM designated General-Register pairs saved in a model dependent location not accessible by program [0303] The optionally formed Transaction symbol (from D2 operand). The transaction symbol is an identifier of the transaction. It can be the same as the address of the store operand or another value. [0304] Effective A = TBEGINC A & A any exterior [0305] TND increased [0306] o If TND transitions from 0 to 1, CPU enters restricted TX mode [0307] o Otherwise, CPU remains in unrestricted TX mode [0308] Complete instruction with CCO [0309] Exceptions: [0310] o Exception specification (PIC (Interrupt Code Program) 0006) if field Bi is non-zero [0311] o Special operation exception (PIC 0013 hex) if execution transaction control (CR0.8) is zero [0312] o Transaction constraint exception (PIC 0018 hex) if issued in restricted TX mode [0313] o operation exception (PIC 0001), if the restricted transactional execution facility is not installed [0314] H Execute exception (PIC 0003) if the instruction is the target of an execute-type instruction [0315] Abort code 13 if nest depth exceeded [0316] Abort conditions in restricted operation: [0317] PSW Abortion points to TBEGINC instruction [0318] It is not the instruction that follows [0319] Abort condition causes entire TX to be saw-driven• Do not leave path [0320] CPU takes special measures to ensure successful completion on re-drive [0321] Assuming no persistent conflict, interrupt or restricted breach, the transaction is assured of an eventual conclusion. [0322] Violation of restriction: [0323] o PIC 0018 hex - indicates operation restriction violation o Or, transaction is executed as if not restricted [0324] Furthermore, in one embodiment, the processing associated with initiating an unrestricted transaction through, for example, TBEGIN is, as follows: [0325] If TND = 0: [0326] o Bi If^0, transaction diagnostic block address defined from first operand address. [0327] o Abort PSW transaction set to next sequential address instruction. [0328] The designated byh field general record pairs are saved in location dependent modeling. [0329] - Not directly accessible by the program [0330] Effective PIFC, A&F computerized controls [0331] the effective A = TBEGIN A & A any exterior [0332] the effective F = TBEGIN F & F any outside [0333] the effective PIFC = max (TBEGIN PIFC, any outside PIFC) [0334] transaction nesting depth (TND) increased [0335] If TND transitions from 0 to 1, CPU enters transactional execution mode [0336] Condition Code set to zero [0337] o When the following instruction TBEGIN receives control: [0338] - TBEGIN success indicated by CC0 [0339] - Aborted transaction indicated by CC different from zero [0340] Exceptions: [0341] Abort code 13 if nesting depth exceeded [0342] Exception Access (one of several PICs) if the field is Bi nonzero, and the store operand cannot be accessed by a store operation [0343] o Execute exception (PIC 0003) if the TBEGIN instruction is the target of an instruction type execution [0344] o Operation exception (PIC 0001), if transactional execution facility is not installed [0345] PIC 0006 if any [0346] - PIFC is invalid (value of 3) [0347] - address of second operand not doublewordaligned [0348] PIC 0013 hex if transactional control execution (CR0.8) is zero [0349] PIC 0018 hex if issued in restricted TX mode [0350] An operation may be implicitly aborted for a variety of causes, or it may be explicitly aborted by the abort transaction instruction. Example possible causes of an abort operation, the corresponding interrupt code, and the condition code that is placed in the abort PSW transaction are described below. [0351] The external interrupt: The transaction abort code is set to 2, and the condition code in the transaction abort PSW is set to 2. The transaction abort PSW is stored as the old external PSW as part of the external interrupt processing. [0352] Program Interrupt (unfiltered): A program exception condition that results in an interrupt (ie, an unfiltered condition) causes the transaction to be aborted with code 4. The condition code in the abort PSW transaction is set specific to the interrupt code program. The PSW abort transaction is stored as the old PSW program as part of the program's interrupt processing. [0353] An instruction that would otherwise result in a transaction being aborted due to an operation exception may produce alternative results: for an unconstrained transaction, the transaction may abort with code instead of aborting 1 1 (restricted instruction); for a constrained transaction, a transaction constraint program interrupt may be recognized instead of the operation exception. [0354] When a PER (Event Recording Program) event is recognized in conjunction with any other unfiltered program exception condition, the condition code is set to 3. [0355] Machine Check Interrupt: The transaction abort code is set to 5, and the condition code in the PSW abort transaction is set to 2. The PSW abort transaction is stored as the old machine check PSW as a part of machine check processing interrupt . [0356] I/O interrupt: The abort transaction code is set to 6, and the condition code in the aborted PSW transaction is set to 2. The abort PSW operation is stored as the old I/O PSW as a part of I/ Interrupt processing. [0357] Fetch Overflow: A fetch overflow condition is detected when the transaction tries to fetch from more places than the CPU supports. The transaction abort code is set to 7, and the condition code is set to 2 or 3. [0358] Store Overflow: A store overflow condition is detected when the transaction tries to store to more locations than the CPU supports. The transaction abort code is set to 8, and the condition code is set to 2 or3. [0359] Allowing the condition code to be 2 or 3 in response to a seek or store abort overflow allows the CPU to indicate potentially repeatable situations (eg, condition code 2 indicates re-execution of the operation may be productive, while condition code 3 does not recommend re-execution). [0360] Fetch Conflict: A fetch conflict condition is detected when another CPU or I/O subsystem tries to store to a location that has been transactionally fetched by this processor. The abort transaction code is set to 9, and the condition code is set to 2. [0361] Store Conflict: A store conflict condition is detected when another CPU or I/O subsystem tries to access a location that was stored during transactional execution by this processor. The abort transaction code is set to 10, and the condition code is set to 2. [0362] Restricted Instruction: When the CPU is in transactional execution mode, an attempt to execute a restricted instruction causes the operation to be aborted. The abort transaction code is set to 11, and the condition code is set to 3. [0363] When the CPU is in restricted transactional execution mode, it is unpredictable whether the attempt to execute a restricted access instruction results in a transaction restriction program interrupt or an abort due to a restricted instruction. The transaction is still aborted, but the interrupt code can indicate any cause. [0364] Exception Program Condition (filtered): A program exception condition that does not result in an interrupt (ie, a filtered condition) causes the transaction to be aborted with a transaction abort code of 12. The condition code is set to 3. [0365] Settlement Depth Exceeded: The Settlement Depth Exceeded condition is detected when the transaction nesting depth is at the maximum value allowed for the setting, and a Transaction Begin statement is executed. The transaction is aborted with an abort transaction code of 13 and the condition code is set to 3. [0366] Cache Fetch related condition: A condition related to storage locations fetched by the transaction is detected by the CPU's cache circuit. The transaction is aborted with an abort transaction code of 14, and the condition code is set to 2 or 3. [0367] Store Cache related condition: A condition related to storage locations stored by the transaction is detected by the CPU cache circuit. The transaction is aborted with a transaction abort code of 15, and the condition code is set to 2 or 3. [0368] Cache Other Condition: A cache other condition is detected by the CPU's cache circuits. The transaction is aborted with a transaction abort code of 16, and the condition code is set to 2 or 3. [0369] During transactional execution, whether the CPU accesses storage instructions or operands using different logical addresses that are mapped to the same absolute address is dependent on whether the transaction is aborted template. If the transaction is aborted due to accesses using different logical addresses mapped to the same absolute address, abort code 14, 15, or 16 is set, depending on the condition. [0370] Miscellaneous State: A miscellaneous condition is any other condition recognized by the CPU that causes the transaction to abort. Transaction abort code is 255 and condition code is set to 2 or 3. [0371] When multiple configurations are running on the same machine (eg logical partitions or virtual machines), an operation may be aborted due to an external machine control or I/O interruption that occurred in a different configuration. [0372] Although examples are provided above, other causes of a transaction abort may be provided with corresponding abort codes and condition codes. For example, a cause might be a Reset Abort, where the abort transaction code is set to 1, and the condition code in the aborted PSW transaction is set to 2. The aborted PSW transaction is stored as the old reset PSW as a part of restart processing. As a further example, a cause might be a condition called supervisor, where the interrupt code is set to 3, and the condition code in transaction aborted PSW is set to 3. Other or different examples are also possible. [0373] Notes: [0374] 1. The varied condition may result from any of the following: [0375] Instructions such as, in z/Architecture, compare and REPLACE DAT [0376] Input table, compare and swap and PURGE, invalidate DAT input table, INVALIDATE PAGE input table, execute function MANAGEMENT frame where control NQ is zero and control SK is one, SET STORAGE extended key where NQ control is zero, performed by another processor in the configuration; the condition code is set to 2. [0377] An operator function such as reset, restart or stop, or the equivalent signal PROCESSOR order is performed on the CPU. [0378] Any other condition not listed above; the condition code is set to 2 or 3. [0379] 2. The location at which fetch and store conflicts are detected can be anywhere within the same cache line. [0380] 3. Under certain conditions, the CPU may not be able to distinguish between similar abort conditions. For example, an overflow seek or store may be indistinguishable from a respective seek or store conflict. [0381] 4. Speculative execution of multiple instruction paths by the CPU may result in a transaction being aborted due to deadlock or overflow conditions, even if such conditions do not occur in the conceptual sequence. While in restricted transactional execution mode, the CPU can temporarily inhibit speculative execution, allowing the operation to try to complete without speculatively detecting such conflicts or overflows. [0382] When multiple abort conditions apply, it is unpredictable what abort code is reported by the CPU. [0383] Figure 10 summarizes example abort codes stored in a transaction diagnostic block, and the corresponding condition code (CC). The description in Figure 10 illustrates a particular implementation. Other implementations and value encodings are possible. In one embodiment, abort codes 1, 3, 17-254 and are reserved for potential upgrades. Such accessories may result in any condition code 2 or 3 being set. Furthermore, overriding the reserved code 0 will not be assigned a significant interruption indication in this embodiment. Depending on the model, the CPU may not be able to distinguish between certain reasons for aborting. For example, a seek/store overflow and a seek/store conflict may not be distinguishable by the CPU under all circumstances. [0384] Conflicting accesses by other CPUs or the I/O subsystem to transactional storage locations being accessed by one CPU can cause a transaction to be aborted. When a transaction is aborted, transactional stores held by the transaction are discarded. This can make transactional code debugging extremely difficult. Thus, in one embodiment, an actional NONTRANS STORE (NTSTG) instruction is provided that allows stores performed in transaction mode to be kept even if the transaction is aborted. [0385] As described above with reference to Fig. 7, in one example, the non-transactional store instruction 700 includes a plurality of opcode fields 702a, 702b, specifying an opcode that designates a non-transactional store operation; a register field (Ri) 704 specifying a register, the contents of which the first operand is called; an index field (X2) 706; a base field (B2) 708; a first offset field (DL2) 710; and a second offset field (DH2) 712. The contents of the general registers designated by fields X2 and B2 are added to a value defined by a concatenation of the contents of the fields of DH2 and DL2 to form the second address of the operand. When one or both of the X2 or B2 fields are equal to zero, the corresponding register does not participate in the addition. [0386] The first 64-bit operand is placed in transactionally unchanged form in the second operand location. In one embodiment, the first operand is specified by the user. [0387] The offset, formed by the concatenation of the contents of DL2 and DH2 fields, is treated as a 20-bit binary signed integer. [0388] The second operand must be aligned on a doubleword boundary; otherwise, a specification exception (Program Code Interrupt (PIC) 0006) is recognized and the operation is suppressed. [0389] Status Code: The code remains unchanged. [0390] program exceptions: [0391] Access (store, second operand) [0392] Operation (execution transactional installation is not installed) [0393] Specification [0394] Transaction restriction (due to restricted statement); PIC 0018 hex [0395] Furthermore, in one embodiment: [0396] Non-transactional STORE provides a means by which a program running in non-constrained transactional execution mode can hold stores that will be retained even if the transaction is aborted. This can make it easier to debug the transaction if it is aborted. [0397] When the CPU is not in transaction execution mode, the non-transactional STORE operation is the same as a store instruction, such as the store (STG) of z/Architecture, except that, in one embodiment, the second operand of non-transactional STORE is to be on a doubleword boundary (regardless of transaction execution mode), while the second operand of STG has no alignment requirements. So, in this situation, exception is not given if the processor is not in transactional execution mode, but instead the non-transactional store is executed as if it were a store. [0398] The store instruction, when executed by a processor, places the first operand (for example, the contents of a register specified by an instruction register field) in the second location, operand (formed by adding contents of general registers designated by X2 and B2 fields with a value defined by a concatenation of the content of fields DH2 and DL2). [0399] Depending on the processor model, the performance of non-transactional STORE may be slower than that of STORE (STG). [0400] If a CPU makes transactional and non-transactional stores to the same storage location within a transaction, and the transaction then aborts, the contents of all storage locations changed by any transactional or non-transactional store are unpredictable. [0401] An embodiment of the logic associated with the non-transactional store is described with reference to Fig. 11A. In one embodiment, a processor (e.g., CPU) performs this logic. [0402] Referring to Fig. 11A, based on the execution of the non-transactional STORE instruction, a check is made for certain exceptions, STEP 1100, and if there is an exception, MESSAGE 1102, it is handled, STEP 1104. if the second operand is unaligned over a doubleword boundary, an exception specification is recognized and instruction execution is suppressed. Also, if transaction execution facility is not installed, an exception is acknowledged operation and execution of a statement is suppressed; if the transaction is a constrained operation, a transaction constraint exception is recognized and execution is suppressed; and if there is a problem with the second locating operand (eg protection exception, invalid address, etc.), an access exception is recognized and instruction execution is suppressed. Otherwise, if there are no exceptions, the instruction's first operand is placed in transactionally (ie, stored) form unchanged at a location specified by the second operand, STEP 1106. [0403] In one embodiment, the non-transactional store instruction is executed in transaction execution mode, and placement in transactional form is delayed until the end of the transaction execution mode, such as until the completion of the outermost operation by TEND or abort ends transactional execution mode. (In another embodiment, it is only delayed until the end of a particular transaction in which the instruction is executing.) In addition, there can be multiple non-transactional stores and these appear as concurrent stores to other processors. [0404] In another embodiment, the processing of the non-transactional STORE depends on the execution mode of the processor and/or the type of transaction that is a party, as described with reference to Fig. 11B. [0405] Referring to Figure 11B, in one embodiment, based on the execution of the Non-Transactional Storage Instruction by a processor, a determination is made as to whether the processor is in transaction execution mode (i.e., the depth of settlement operation greater than zero), THE MESSAGE 1 150. If the processor is in transaction execution mode, then another determination is made as to whether the non-transactional store instruction is part of a non-constrained operation (for example , a transaction started by TBEGIN), THE MESSAGE 1 152. If the instruction is part of an unconstrained transaction, then the instruction is executed, as described here, STEP 1154. However, if the instruction is part of a constrained transaction ( eg initiated by TBEGINC and not treated as an unrestricted operation), then a program exception is given and then instruction execution is suppressed, STEP 1156. [0406] Returning to inquiry 1 150, if the processor is not in transactional execution mode, the non-transactional store instruction is treated as a store instruction and continues processing as such, STEP 1158. [0407] Described above is a mode of realizing a capability to explicitly store information, while in transaction execution mode, it persists even after aborting a transaction associated with the instruction (ie, an operation abort that includes directly the statement, or an override of another operation that the transaction that includes the statement is nested within). The information is specified by the user. [0408] In addition, provided above is an efficient means of updating multiple, adjacent objects in memory without classic serialization (grain stroke) such as locking, which provides significant multiprocessor performance improvement potential. That is, multiple, adjacent objects are updated without the application of more than one-course sorting storage access that is provided through classical techniques such as locks and semaphores. Restricted operations are offered for simple, small footprint upgrades. [0409] Transactional execution can be used in a variety of scenarios, including, but not limited to, partial inline, speculative processing, and lock avoidance. In partial inline, the partial zone to be included in the executed path is wrapped in TBEGIN/TEND. TABORTO can be included to revert in an exit-side state. For speculation, such as in Java, nullchecks on de-referenced pointers can be delayed to the loop edge using a transaction. If the pointer is null, the transaction can safely abort using TABORT, which is included within TBEGIN/TEND. [0410] As used herein, storage, central storage, main memory, memory and main memory are used interchangeably, unless otherwise indicated implicitly by usage or explicitly. Furthermore, although in one embodiment, an effective delaying operation includes delaying committing transactional stores to main memory until completion of a selected operation; In another embodiment, an effective delaying operation includes allowing transactional updates to memory, but keeping the old values and restoring the memory to the old values on abort. [0411] As will be appreciated by one of skill in the art, one or more aspects may be embodied as a system, method or computer program product. Thus, one or more aspects may take the form of a fully hardware embodiment, a fully software embodiment (including firmware, resident software, microcode, etc.) or an embodiment of the combination of hardware and software that can all aspects, generally , be referred to herein as a "circuit", "module" or "system". Furthermore, one or more aspects may take the form of a computer program product embedded in one or more computer readable means(s) of having the computer readable program code incorporated therein. [0412] Any combination of one or more computer readable media(s) may be used. The computer-readable medium may be a computer-readable storage medium. A computer readable storage medium can be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared or semiconductor system, an apparatus, or device, or any suitable combination of these materials. More specific examples (a non-exhaustive list) of computer read storage media include the following: an electrical connection with one or more wires, a portable computer floppy disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disk, read-only memory (CD-ROM), an optical storage device, a storage device magnetic, or any suitable combination of the above. In the context of this document, a computer readable storage medium can be any material medium, which can contain or store a program for use by or in connection with an instruction execution system, apparatus or device. [0413] Referring now to Figure 12, in one example, a computer program product 1200 includes, for example, one or more non-transient computer computer readable storage means for storing 1,202 human readable code means program or logic 1204 therein for provide and facilitate one or more embodiments. [0414] Program code embedded in a computer-readable medium may be transmitted through a suitable medium, including but not limited to wireless devices, cable, fiber optic cable, RF, etc., or any suitable combination thereof materials. [0415] Computer program code for performing operations of one or more embodiments may be written in any combination of one or more programming languages, including an object-oriented programming language such as Java, Smalltalk, C++ or the like, and conventional procedural programming languages, such as the "C" programming language, assembler programming languages or the like. The program code can run entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer, and partly on a remote computer, or entirely on the remote computer or server. In the latter case, the remote computer can be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection can be made to an external computer. (eg over the Internet using an Internet Service Provider). [0416] One or more embodiments are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart figures and/or block diagrams, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine such that instructions are executed through the processor. of the computer or other programmable data processing apparatus, create means for performing the functions/acts specified in the flowchart block and/or block or block diagram. [0417] These computer program instructions may also be stored on a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner such that the instructions stored in the computer readable means produce an article of manufacture including instructions that implement the function/act specified in the flowchart block and/or block or block diagram. [0418] Computer program instructions may also be loaded into a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other devices to produce a process computer implemented in such a way that instructions executing on the computer or other programmable equipment provide processes for performing the functions/acts specified in the flowchart and/or block diagram or blocks. [0419] The flowchart and block diagrams in the figures illustrate the architecture, functionality and operation of possible implementations of systems, methods and computer program products according to various embodiments. In this regard, each block in flowcharts or block diagrams can represent a module, segment, or piece of code, which comprises one or more executable instructions to implement the specified logic function(s). It should also be noted that, in some alternative implementations, the functions verified in the block may occur out of the order observed in the figures. For example, two blocks shown in succession may in fact be performed substantially simultaneously, the blocks or may sometimes be performed in reverse order, depending on the functionality involved. It should also be noted that each block in the block diagram and/or illustration flowchart, and combinations of blocks in the block diagrams and/or illustration flowchart, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware instructions and computers. [0420] In addition to the above, one or more aspects may be provided, offered, deployed, managed, serviced, etc. by a service provider offering customer environment management. For example, the service provider can create, maintain, support, etc. computer code and/or a computer infrastructure that runs one or more aspects of one or more clients. In exchange, the service provider may receive payment from the customer under a subscription and/or fee agreement, as examples. Additionally or alternatively, the service provider may receive payment for the sale of advertising content to one or more third parties. [0421] In one aspect, an application can be deployed to perform one or more embodiments. As an example, deploying an application infrastructure comprises providing computer operable to perform one or more embodiments. [0422] In another aspect, a computing infrastructure can be implemented comprising computer integrating human readable code into a computing system, wherein the code in combination with the computing system is capable of executing one or more embodiments. [0423] As yet another aspect, a process for infrastructure integration comprising computing by integrating computer readable code into a computer system may be provided. The computer system comprises a computer readable medium, in which the computer medium comprises one or more embodiments. The code in combination with the computer system is capable of executing one or more embodiments. [0424] Although several embodiments are described above, these are just examples. For example, computing environments from other architectures can be used. Others, different instructions, instruction formats, instruction fields and/or instruction values may be used. In addition, it may be provided / used, different ones, and/or additional restrictions / restrictions. Many variations are possible. [0425] In addition, other types of computing environments can be used. As an example, a data processing system suitable for storing and/or executing program code that can be used includes at least two processors coupled directly or indirectly to memory elements via a system bus. Memory elements include, for example, local memory employed during actual execution of program code, bulk storage, and cache memory rather than providing temporary storage of at least one program code in order to reduce the number of times code must be retrieved from bulk storage during execution. [0426] Input / Output or I/O devices (including but not limited to keyboards, monitors, pointing devices, DASD, tapes, CDs, DVDs, flash drives and other memory media, etc.) can be attached to the system either directly or through intervening I/O controllers. Network adapters can also be coupled to the system to allow the data processing system to become coupled to other remote data processing systems or printers or storage devices through intervening public or private networks. Modems, cable modems and Ethernet cards are just some of the available types of network adapters. [0427] Referring to Figure 13, representative components of a host computer system 5000 for implementing one or more embodiments are depicted. The host representative computer 5000 comprises one or more CPUs 5001 in communication with computer memory (ie, central storage) 5002, as well as I/O interfaces for 5011 media device storage and 5010 networks to communicate with other computers or SANs and the like. The 5001 CPU is compatible with an architecture of having a defined instruction and architected functionality. The CPU 5001 may have access register translation (ART) 5012, which includes an ART lookaside (ALB) buffer 5013, for selecting an address space to be used by dynamic address translation (DAT) 5003 to transform program addresses (virtual addresses) in real memory addresses. A DAT typically includes a Translation Query Buffer (TLB) 5007, cache translations for later access to computer memory block 5002 not requiring the address translation delay. Typically, a 5009 cache is employed between 5002 computer memory and the 5001 processor. The 5009 cache can be hierarchical having a large cache available for more than one CPU and smaller, faster (lower tier) caches across the cache big and every CPU. In some implementations, lower-level caches are split to provide separate low-statement-level caches for fetching and data accesses. In one embodiment, for the TX facility, a transaction diagnostic block (TDB) 5100 and one or more buffers 5101 may be stored in one or more memory caches 5009 and 5002. In one example, in TX mode, it is initially data. stored in a TX buffer, TX and when the mode ends (eg, outermost TEND), the data in the buffer is stored (committed) to the memory, or if there is an abort, the data in the buffer is discarded. [0428] In one embodiment, an instruction is fetched from memory 5002 by an instruction fetch unit 5004 through a cache 5009. The instruction is decoded in an instruction decoding unit 5006 and delivered (with other instructions in some embodiments) for the execution of the instruction or unit Units of 5008. Typically several units of execution 5008 are used, for example, an arithmetic execution unit, a floating-point execution unit and a branch instruction execution unit. Furthermore, in one embodiment of the TX facility, TX controls multiple 5110 may be employed. The instruction is executed by the execution unit, accessing instruction registers or specified memory operands, as needed. If an operand is to be accessed (loaded or stored) from memory 5002, the load/store unit 5005 typically processes the access under control of the instruction to be executed. Instructions can be executed in hardware or in internal microcode circuits (firmware) or by a combination of both. [0429] In accordance with one aspect of the TX installation, the 5001 processor also includes a 5102 PSW (eg, TXe/or PSW abort), a 5104 settling depth, a 5106 TDBA, and one or more 5108 control registers. . [0430] As mentioned, a computer system includes information in local (or main) memory as well as approach, protection, and reference and change recording. Some aspects of the approach include the format of addresses, the concept of address spaces, the various types of addresses, and the way in which one type of address is translated into another type of address. Some main storage includes permanently assigned storage locations. Main storage provides directly addressable data storage system with fast access. Both data and programs that must be loaded into main memory (from input devices) before they can be processed. [0431] Main storage can include one or more smaller, faster-access intermediate stores, sometimes called caches. A cache memory is typically physically associated with a CPU or I/O processor. The effects, other than performance, of physical construction and usage of distinct storage media are generally not visible to the program. [0432] Separate caches can be maintained for instructions and data operands. Information within a cache is kept in contiguous bytes on an integral boundary called a cache block or cache line (or line, for short). A template can provide an ATTRIBUTE EXTRACTO CACHE statement that returns the size of a cache line in bytes. The model can also provide data and PREFETCH PREFETCH DATA instructions relative to long which performs prefetching data or instruction caching or flushing data from the cache. [0433] Storage is seen as a long horizontal string of bits. For most operations, accesses to the storage in a left-to-right sequence. The bit stream is subdivided into eight-bit units. An eight-bit unit is called a byte, which is the basic building block of all information formats. Each byte location in storage is identified by an original non-negative integer, which is the address of that byte location, or simply the byte address. Adjacent byte locations have consecutive addresses starting with 0 on the left and process in a left-to-right sequence. Addresses are unsigned binary integers and are 24, 31, or 64 bits. [0434] Information is transmitted between storage and a CPU or channel subsystem one byte, or a group of bytes, at a time. Unless otherwise specified, in, for example, z/Architecture, a group of storage bytes is addressed by the leftmost byte of the group. The number of bytes in the group is either implicitly or explicitly specified by the operation to be performed. When used in a CPU operation, a group of bytes is called a field. Within each group of bytes, in eg z/Architecture, bits are counted in a left-to-right sequence. In z/Architecture, the leftmost bits are sometimes referred to as "the high-order bits" and the rightmost bits as the "low-order" bits. Bit numbers are not storage addresses, however. Only bytes can be covered. To operate on individual chunks of a byte in storage, the entire byte is accessed. Bits of a byte are numbered from 0 to 7, from left to right (in, for example, z/Architecture). Bits in an address can be numbered 8-31 or 40-63 for 24-bit addresses, or 1-31 or 33-63 for 31-bit addresses; they are numbered 0-63 for 64-bit addresses. In one example, bits 8-31 and 1-31 apply to addresses that are in a location (eg, register) that are 32 bits wide, while bits 40-63 and 33-63 apply to addresses that are at a 64-bit location width. Within any other multi-byte fixed-length format, the bits making up the format are numbered consecutively starting at 0. For error detection purposes, and in preference to correcting, one or more check bits may be transmitted with each byte or with a group of bytes. These check bits are automatically generated by the machine and cannot be directly controlled by the program. Storage capacities are expressed in number of bytes. When the length of a Storage-operating field is implied in the opcode of an instruction, the field is said to have a fixed length, which can be one, two, four, eight, sixteen or bytes. Larger fields may be implied for some instructions. When the length of an operands storage field is not implied but is explicitly stated, the field is said to have a variable length. Variable-length operands can vary in length, in one-byte increments (or with some instructions, in two-byte multiples or other multiples). When information is placed in storage, the contents of only those byte locations that are replaced are included in the designated field, even though the width of the physical path to storage may be greater than the length of the field to be stored. [0435] Certain units of information are being at an integral boundary in storage. A limit is called an integral for a unit of information when its storage address is a multiple of the unit's length in bytes. Special names are given to fields of 2, 4, 8, 16, and 32 bytes in an integral boundary. A halfword is a group of two consecutive bytes on a two-byte boundary and is the basic building block of instructions. A word is a group of four consecutive bytes on a four-byte boundary. A doubleword is a group of eight consecutive bytes on an eight-byte boundary. An octoword is a group of 32 consecutive bytes on a 32-byte boundary. A quadword is a group of 16 consecutive bytes on a 16-byte boundary. When storage addresses designate half words, words, double words, quadwords and octowords, the binary representation of the address contains one, two, three, four or five rightmost zero bits, respectively. Instructions are to be over-two byte integral boundaries. The storage operands of most instructions have no alignment limit requirements. [0436] On devices that implement separate caches for instructions and data operands, a significant delay can be experienced if the program stores in a cache line from which instructions are later fetched, regardless of whether the store changes the instructions that are later fetched. [0437] In one example, embodiments may be practiced by software (sometimes referred to internally licensed code, firmware, microcode, millicode, peak code and the like, any of which would be consistent with one or more embodiments). Referring to Figure 13, software program code incorporating one or more aspects can be accessed by the 5001 processor of the host system 5000 from 5011 long-term storage media devices such as a CD-ROM drive, drive. of tape or hard disk. Software program code can be incorporated into any of a variety of known media for use with a data processing system, such as a floppy disk, hard disk, or CD-ROM. Code may be distributed on such media, or may be distributed to users of computer memory 5002 or storage of one computer system over a network 5010 to other computer systems for use by users of such other systems. [0438] Software program code includes an operating system that controls the function and interaction of various computer components and one or more application programs. Program code is typically paged from the 501 media storage device 1 to the relatively higher speed computer storage 5002, where it is available for processing by the 5001 processor. The techniques and methods for containing the software program code in memory, on physical media, and/or distribution of software code over networks are well known and will not be discussed further here. Program code, when created and stored on a material medium (including, but not limited to, electronic memory modules (RAM), flash memory, compact discs (CDs), DVD, magnetic tape and the like is often referred to as a "product of computer program. The form of the computer program product is typically read by a processing circuit, preferably a computer system for execution by the processing circuit. [0439] Figure 14 illustrates a representative server or workstation hardware system in which one or more embodiments can be practiced. System 5020 of Figure 14 comprises a representative base computer system 5021, such as a personal computer, workstation or server, including optional peripheral devices. Computer system 5021 includes the base of one or more processors 5026 and a bus employed to connect and allow communication between processor(s) 5026 and the other components of system 5021 in accordance with known techniques. The bus connects the processor to memory 5025 5026 and long term storage 5027 which can include a hard disk drive (including any of the magnetic media, CD, DVD and flash memory for example) or a tape drive for example. The 5021 system may also include a user interface board, which connects the 5026 microprocessor via the bus to one or more interface devices, such as a 5024 keyboard, a 5023 mouse, a 5030 printer/scanner and or other devices/interface, which can be any user interface device such as a touch screen, digitized input keyboard, etc. The bus also connects a 5022 display device, such as an LCD screen or monitor, to the 5026 microprocessor via a video adapter. [0440] The 5021 system can communicate with other computers or computer networks through a network adapter capable of communicating with a 5028 network Example of a 5029 network. Adapters are communication channels, Token Ring, Ethernet, or modems. Alternatively, system 5021 can communicate using a wireless interface, such as a CDPD (Cellular Digital Packet Data) card. System 5021 may be associated with such other computers in a local area network (LAN) or a wide area network (WAN), or system 5021 may be a client in a client/server arrangement with another computer, etc. All of these configurations, as well as the appropriate communications hardware and software, are known in the art. [0441] Figure 15 illustrates a 5040 data processing network in which one or more embodiments may be practiced. Data processing network 5040 may include a plurality of individual networks, such as a wireless network and a wired network, each of which may include a plurality of individual workstations 5041, 5042, 5043, 5044. , as those skilled in the art will appreciate, one or more local networks may be included, if it is a LAN it may comprise a plurality of intelligent workstations coupled to a host processor. [0442] Still referring to Figure 15, networks can also include mainframes or servers, such as a gateway computer (5046 client server) or application server (remote server 5048 that can access a data repository and can also be accessed directly from a 5045 workstation). A 5046 gateway computer serves as an entry point into each individual network. A gateway is required when connecting one network protocol to another. Gateway 5046 may preferably be coupled to another network (Internet, e.g. 5047) via a communications link. Gateway 5046 can also be directly coupled to one or more workstations 5041, 5042, 5043, 5044 using a communications link. The computer gateway can be implemented using a z server IBM eServer System available from International Business Machines Corporation. [0443] Referring simultaneously to Figure 14 and Figure 15, software programming code 5031 that may incorporate one or more embodiments can be accessed by processor 5026 of system 5020 of long-term storage media 5027, such as a CD-drive. ROM or hard drive. Programming software code can be incorporated into any of a variety of known media for use with a data processing system, such as a floppy disk, hard disk, or CD-ROM. Code may be distributed on such media, or may be distributed to users 5050, 5051 from the memory or storage of one computer system over a network to other computer systems for use by users of such other systems. [0444] Alternatively, programming code may be embedded in memory 5025, and accessed by processor 5026 using the processor's bus. Such programming code includes an operating system which controls the function and interaction of various computer components and one or more application programs 5032. Code program is normally paged from storage media 5027 to high speed memory 5025 where it is available for processing by processor 5026. Techniques and methods that contain programming code for software in memory, on physical media and/or distribution of software code over networks are well known and will not be discussed further here. Program code, when created and stored on a material medium (including, but not limited to, electronic memory modules (RAM), flash memory, compact discs (CDs), DVD, magnetic tape and the like is often referred to as a "product of computer program. The form of the computer program product is typically read by a processing circuit, preferably a computer system for execution by the processing circuit. [0445] The cache that is most readily available to the processor (usually faster and smaller than other processor caches) is the lowest (LI or level one) cache and main store (main memory) is the cache. highest level (L3 if there are 3 levels). The lowest level cache is often divided into an instruction cache (I-Cache) holding machine instructions to be executed and a data cache (D-Cache) holding data operands. [0446] Referring to Fig. 16, an exemplary embodiment is described processor for processor 5026. Typically one or more cache levels of 5053 are used to buffer memory blocks in order to improve processor performance. The 5053 cache is a high-speed buffer holding lines of memory data cache that are likely to be used. Typical cache lines are 64, 128, or 256 bytes of memory data. Separate caches are often used for caching instructions rather than for caching data. Cache coherence (synchronization of in-memory copy lines and caches) is often provided by various "snoop" algorithms well known in the art. A system's 5025 main memory storage is often referred to as a cache. On a processor system with 4 5053 cache levels, the 5025 main memory is sometimes referred to as the 5 (L5) level cache as it is typically faster and only takes up a portion of non-volatile storage (DASD). , tape, etc.) that is available for a computer system. Main storage 5025 "caches" pages of data paged in and out of main storage 5025 by the operating system. [0447] A 5061 counter (statement counter) program keeps track of the address of the current instruction to be executed. A program counter on the az processor/Architecture is 64 bits and can be truncated to 31 or 24 bits to support previous addressing limits. A program counter is usually embedded in a PSW (Program State Word) of a computer in such a way that it persists during context switching. In this way, a running program, having a program counter value, can be interrupted, for example, by the operating system (context switching from the program environment to the operating system environment). The program PSW maintains the program counter value while the program is not active, and the program counter (in PSW) of the operating system is used while the operating system is running. Typically, the program counter is incremented by a value equal to the number of bytes of the current instruction. RISC (Reduced Instruction Set Computing) instructions are usually of fixed length, while CISC (Complex Instruction Set Computing) instructions are typically variable length. IBM z/Architecture instructions are CISC instructions having a length of 2, 4, or 6 bytes. The Program counter 5061 is modified by either a context change operation or a branch taken operation of a branch instruction, for example. In a context switch operation, the current program counter value is saved in the program status word, along with other status information about the program being executed (such as condition codes), and a new counter value. program is loaded pointing to an instruction of a new program module to be executed. A branch taken operation is performed in order to allow the program to make decisions or cycle within the program, loading the result of the branch instruction into program counter 5061. [0448] Typically a unit 5055 fetch instruction is employed to obtain instructions on behalf of the 5026 processor. The fetch unit either fetches "next sequential instructions", branch target instructions taken instructions, or first instructions of a program following a context switch. Modern instruction fetch units often employ prefetch techniques to speculatively that PREFETCHED instructions can be used probability-based prefetch instructions. For example, a fetch unit can fetch 16 bytes of instruction that includes the next sequential instruction and additional bytes of further sequential instructions. [0449] Instructions are then fetched, executed by processor 5026. In one embodiment, the fetched instruction(s) is passed to a send unit 5056 of the fetch unit. The dispatch unit decodes the instruction(s) and forwards information about the decoded instruction(s) to appropriate units 5057, 5058, 5060. A unit execution of 5057 will typically receive information about arithmetic instructions decoded from the unit 5055 instruction fetch and will perform arithmetic operations on operands according to the operating code of the instruction. Operands are provided to the execution unit preferably 5057, either from memory 5025, 5059 or architected registers from a field immediately of the instruction to be executed. Execution results, when stored, are stored in memory 5025, register 5059 or other machine hardware (such as control registers, PSW registers and the like). [0450] Virtual addresses are transformed into real addresses using dynamic address translation 5062 and optionally using transaction access register 5063. [0451] A 5026 processor typically has one or more units of 5057, 5058, 5060 to perform the instruction's function. Referring to Fig. 17A, an execution unit 5057 can communicate with 5071 general registers architected 5059, a decode/dispatch unit 5056, a load storage unit 5060, and another 5065 processor units via a logical interface 5071. execution unit 5057 may employ various register circuits of 5067, 5068, 5069 to contain the information that arithmetic logic unit (ALU) 5066 will operate. The ALU performs arithmetic operations such as add, subtract, multiply, and divide, as well as logic functions such as and, or and-or-exclusive (XOR), rotate, and shift. [0452] Preferably, the ALU supports specialized operations that are design dependent. Other circuits may provide other 5072 architected facilities, including condition codes and recovery support logic, for example. Typically, the result of an ALU operation is performed on an output register circuit 5070 that can transmit the result of a variety of other processing functions. There are many arrangements of processor units, the present description is only intended to provide a representative understanding of one embodiment. [0453] An ADD instruction for example would be executed in a 5057 execution unit having logical arithmetic and functionality while a floating point instruction for example would be executed in a floating point execution having specialized floating point capability. Preferably, an execution unit operates on operands identified by an instruction to execute a function defined opcode in the operands. For example, an ADD instruction can be executed by an execution unit 5057 on operands found in two registers 5059 identified by the instruction fields register. [0454] Execution unit 5057 performs arithmetic addition on two operands and stores the result in a third operand where the third operand can be a third register or one of the two code registers. The execution unit preferably uses an Arithmetic Logical Unit (ALU) 5066 which is capable of performing a variety of logic functions such as Shift, Rotate, AND, OR and XOR, as well as a variety of algebraic functions, including any one to add, subtract, multiply, divide. Some 5066 ALUs are designed for scalar operations and some for floating point. Data can be either Large Endian (where the least significant byte is the highest in the byte address) or Little Endian (where the least significant byte is the lowest byte address) depending on the architecture. IBM z/Architecture is Big Endian. Signed fields can be sign and magnitude, 1's complement or 2's complement depending on architecture. A 2's complement number is advantageous in that the ALU need not design a capability since subtracting a negative value or a positive 2's complement value only requires one addition within the ULA. Numbers are commonly described in shorthand, where a 12-bit field defines an address of a 4096-byte block and is commonly described as a 4-Kbyte (Kilo-byte) block, for example. [0455] Referring to Fig. 17B, branch instruction information for executing a branch instruction is usually sent to a branch unit 5058 which often employs a branch prediction algorithm such as a branch history table 5082 to predict the branch result before other conditional operations are complete. The target of the current branch instruction will be obtained and speculatively executed before the conditional operations are complete. When the conditional operations are completed the speculatively executed branch instructions are either completed or discarded based on the conditional operation conditions and the speculated results. A typical branch instruction can test condition codes and branch to a destination address if the condition codes meet the branch instruction branch requirement, a destination address can be calculated based on various numbers, including those found in register fields or an immediate field of the instruction for example. Branch unit 5058 may employ an ALU 5074 having a plurality of input register circuits 5075, 5076, 5077 and an output register circuit 5080. Branch unit 5058 may communicate with 5081 general registers 5059, dispatch unit decoding 5056 or other 5073 circuits, for example. [0456] The execution of an instruction set can be interrupted for a variety of reasons, including a context switch initiated by an operating system, a program or error exception causing a context switch, an I/ interrupt signal. What causes a change of context or multiple activities of a plurality of programs (in a multi-threaded environment) -Threading, for example. Preferably, a context switch action saves state information about a currently running program and then loads state information about another program being called. Status information can be saved in hardware registers or in memory, for example. Preference status information comprises a program counter value pointing to a next instruction to be executed, condition codes, the memory translation information and contents of the architected register. Context switching activity can be performed by hardware circuits, application programs, operating system programs, or firmware code (microcode, pico-code, or licensed internal code (LIC)) alone or in combination. [0457] A processor accesses instruction operands according to defined methods. The instruction can provide an immediate operand using the value of a part of the instruction, it can provide one or more register fields explicitly pointing to either general purpose registers or special purpose registers (floating point registers for example). The instruction can use implicit registers identified by an opcode field as operands. The instruction can use memory locations for operands. The memory location of an operand can be provided by a register, an immediate field, or a combination of registers and immediate field as exemplified by the / z long offset installation architecture where the instruction defines a base register, an index register, and an immediate field (offset field), which are added together to provide the address of the operand in memory, for example. Location here typically implies a location in main memory (main memory), unless otherwise noted. [0458] Referring to Figure 17C, a store access processor using a load/store unit 5060. Load/store unit 5060 can perform a load operation, obtaining the address of the target operand in memory 5053 and the loading the operand into register 5059 or another location memory 5053, or may perform a store operation, obtaining the address of the destination operand in memory 5053 and storing data obtained from a register or another memory 5059 5053 location at the target location operating in memory 5053. The load unit / store 5060 can be speculative and can access memory in a sequence that is out of order with respect to the instruction sequence, but the load unit / store 5060 is keeping the appearance of programs that the instructions were executed in order. The load/store unit 5060 can communicate with 5084 general registers 5059, decode/dispatch unit 5056, cache/memory interface 5053 or other elements 5083 and comprises various register circuits 5086, 5087, 5088 and 5089, ALUs 5085 and 5090 control logic to calculate storage addresses and to provide pipeline sequencing to keep operations in order. Some operations may be out of order, but the load/storage unit provides the functionality to make operations out of order in order to appear to the program as having been performed in order, as is well known in the art. [0459] Preferably an application program addresses that "sees" are often referred to as virtual addresses. Virtual addresses are often referred to as "logical addresses" and "effective addresses". These virtual addresses are virtual in that they are redirected to physical memory location by one of a variety of dynamic address translation (DAT) technologies, including, but not limited to, simply prefixing a virtual address with an offset value, to translation of the virtual address via one or more translation tables, the translation tables preferably comprising at least a segment table and a page table alone or in combination, preferably the segment table which has a pointer to the page table entry. In the z/Architecture architecture, a translation hierarchy is provided including a region first table, region second table, region third table, segment table, and optional page table. Address translation performance is often improved through the use of a Translation Query Buffer (TLB) comprising entries mapping a virtual address to an associated physical memory location. Entries are created when DAT translates a virtual address using translation tables. [0460] Subsequent use of the virtual address can then use the entry of the fast TLB instead of the sequential translation table for slow accesses. TLB content can be managed by a variety of replacement algorithms, including LRU (Least Recently Used). [0461] In the case where the processor is a processor of a multiprocessor system, each processor has the responsibility to maintain shared resources, such as I/O, caches, TLBs and memory, interconnected by coherence. Typically, "snoop" technologies will be used to maintain cache consistency. In a Snoop environment, each cache line can be marked as being in any one of a common state, an exclusive state, a changed state, an invalid state, and the like in order to facilitate sharing. [0462] I/O 5054 units (figure 16) provide the processor with a means for attaching to peripheral devices, including tape, disk, printers, monitors, and networks, for example. I/O are often units introduced to the computer program by software drivers. On mainframes such as IBM's System z, channel adapters and open systems adapters are mainframe I/O units that provide the communications between the operating system and peripheral devices. [0463] In addition, other types of computing environments may benefit from one or more aspects. As an example, an environment might include an emulator (eg, software or other emulation mechanisms), in which a particular architecture (including, for example, instruction execution, architected functions, such as address translation, and the architected registers) or a subset thereof is emulated (for example, in a computer system that has a native processor and memory). In such an environment, one or more emulation functions of the emulator may implement one or more embodiments, even though a computer running the emulator may have a different architecture from the capabilities to be emulated. As an example, in emulation mode, the specific instruction or operation being emulated is decoded, and an appropriate emulation function is built to implement the individual instruction or operation. [0464] In an emulation environment, a host computer includes, for example, a memory to store instructions and data; a fetch unit instruction to fetch instructions from memory and optionally provide the local buffer for the fetched instruction; an instruction decoding unit for receiving the obtained instructions and for determining the type of instructions that have been read; and an instruction execution unit for executing the instructions. Execution may include loading data into a memory register; storing data back into a register's memory; or perform some kind of arithmetic or logical operation, as determined by the decoding unit. In one example, each unit is implemented in software. For example, the operations being performed by the units are implemented as one or more subroutines in the emulator software. [0465] [00442] More particularly, from a central unit, architected machine instructions are used by programmers, usually today "C" programmers, often through a compiler application. These instructions stored on the storage medium can be executed natively on the z/Architecture IBM Server, or, alternatively, machines running other architectures. They can be emulated on existing and future IBM® mainframe servers on and on other IBM machines (eg Power Systems servers and X System Servers). They can run on machines running Linux on a wide variety of machines using hardware manufactured by IBM, Intel, AMD, and others. In addition to running on hardware under z/Architecture, Linux can be used, as well as machines using Hercules, UMX, or FSI (Fundamental Software, Inc) emulation where it is usually running in an emulation mode. In emulation mode, emulation software is run by a native processor to emulate the architecture of an emulated processor. [0466] The native processor typically runs emulation software comprising either firmware or a native operating system to perform emulation of the emulated processor. The emulation software is responsible for fetching and executing instructions from the emulated processor architecture. Emulation software maintains an emulated program counter to keep track of instruction limits. Emulation software can fetch one or more emulated machine instructions at a time and convert one or more emulated machine instructions to a corresponding group of native machine instructions for execution by the native processor. These instructions can be converted into cache in such a way that faster conversion can be achieved. Nevertheless, the emulation software is to maintain the architecture rules of the emulated processor architecture, so as to ensure the operating systems and applications written for the emulated processor to operate correctly. In addition, the emulation software is to provide features identified by the emulated processor architecture including, but not limited to, control registers, general purpose registers, floating point registers, dynamic address translation function including segment tables and tables of pages eg interrupt mechanisms, context switching mechanisms, time of day (TOD) clocks and interfaces architected to I/O subsystems so that an operating system or an application program designed to run on the emulated processor, can run on the native processor with the emulation software. [0467] A specific instruction to be emulated is decoded, and a subroutine is called to perform the function of the individual instruction. An emulation software function emulating a function of an emulated processor is implemented, for example, in a "C" or conductor subroutine, or any other method of providing a controller for the specific hardware as will be within the ability of the skilled in the art after understanding the description of the preferred embodiment. Various software and hardware emulation patents, including, but not limited to, Letters US Patent No. 5,551,013 entitled "Multiprocessor to Hardware Emulation", by Beausoleil et al.; and No. US Patent Letters 6,009,261, entitled "Pre-Processing Stored Target Routines for Emulating Incompatible Instructions on a Target Processor", by Scalzi et al; and US Patent Letters No. 5,574,873, entitled "Decoding Guests Instruction to Directly Access Emulation Routines That Emulate Clients Instructions", by Davidian et al; and US Patent Letters No. 6,308,255, entitled "Symmetrical Bus and Chipset Multiprocessing Used to Support Coprocessor Allowing Non-Native Code to Run in a System", by Gorishek et al, and US Patent Letters No. 6,463 .582, entitled "Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimization of Object Code Method Translation", by Lethin et al; and US Patent Letters No. 5,790,825 entitled "Method of Emulating Guest Instructions on a Host Computer by Dynamically Recompiling Host Instructions" by Eric Traut, each of which is incorporated herein by reference in its entirety, and many others illustrate a variety of known ways to achieve emulation of an instruction format architected for a different machine to a target machine available to those skilled in the art. [0468] In Figure 18, an example of an emulated host system 5092 is provided that emulates a host system 5000' host architecture. In emulated host computer system 5092, central processor (CPU) 5091 is an emulated host processor (or virtual host processor) and comprises an emulation processor 5093 having a different native instruction set than host computer processor 5091 5000'. Emulated host computer system 5092 5094 has memory accessible to emulation processor 5093. In the exemplary embodiment, memory 5094 is divided into host computer memory 5096 and a portion emulation routines 5097 portion. 5096 host computer memory is available to emulated 5092 host computer programs according to host computer architecture. Emulation processor 5093 executes native instructions from an instruction set architected of a different architecture than emulated processor 5091, native instructions obtained from memory emulation routines 5097, and may access a host instruction for execution of a program in the memory of a host computer 5096 employing one or more instruction(s) obtained in a sequence and accessing/decoding routine that can decode the accessed host instruction(s) to determine a native instruction execution routine to emulate the operation. of the host instruction accessed. Other installations that are defined for the host computer system 5000' architecture can be emulated by routine architected installations, including installations such as general purpose registers, control registers, dynamic address translation and I/O support subsystem and processor cache, for example. Emulation routines can also take advantage of functions available in the 5093 emulation processor (such as general registers and dynamic virtual address translation) to improve the performance of the emulation routines. Special and no-load hardware engines may also be provided to assist the 5093 processor in emulating the operation of the host computer 5000'. [0469] The terminology used here is for the purpose of describing only particular embodiments and is not intended to be limiting. As used herein, the singular forms "a", "an" and "a" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will further be understood that the terms "comprises" and/or "comprising", when used in this specification, specify the presence of stated aspects, integers, steps, operations, elements and/or components, but do not exclude the presence or addition of one or more other characteristics, integers, steps, operations, elements, components and/or groups thereof. [0470] The corresponding structures, materials, acts and equivalents of all means or step plus the function of elements in the following claims, if applicable, are intended to include any structure, material or act to perform the function in combination with other elements claimed as specifically claimed. The description of one or more embodiments has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the disclosed form. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment has been chosen and described in order to better explain various aspects and practical application, and to enable others skilled in the art to understand various embodiments with various modifications as are appropriate for the particular use contemplated.
权利要求:
Claims (8) [0001] 1. A computer system for executing an instruction in a computing environment, said computer system comprising: a memory; and a processor in communication with memory, wherein the computer system is configured to execute a method, said method comprising: obtaining, by the processing circuit, a machine instruction (700) for execution, the machine instructions being defined to computer execution according to a computer architecture, the machine instructions comprising: an operation code (702a) for specifying a transactional store operation; a field (704) for specifying a record, wherein the contents of the record are a first operand; at least one field (706, 708, 710, 712) for specifying a second operand address, the second operand address for designating a location in memory; and executing, by the processor, the machine instructions, the execution comprising : store, non-transactionally, the first operand in the location specified by the address of the second operand, where the first operand stored in the location is ma nite despite an abort of an operation associated with the machine instruction, and characterized by the fact that non-transactional storage is delayed until an end of the execution mode of the processor's operation. [0002] 2. Computer system according to claim 1, characterized in that the method further comprises: determining whether the processor is in transactional execution mode; based on the processor being in transactional execution mode, determining whether the operation is a restricted operation that is subject to a set of limitations comprising: a limited number of instructions can be executed; a limited number of storage operands can be accessed; and the operation is limited to a single level, or an unrestricted operation that is not subject to the set of limitations; and based on the operation being an unrestricted operation, continue execution of the machine instruction. [0003] 3. Computer system according to claim 2, characterized in that based on the operation constitutes a restricted operation, providing a program exception and terminating the execution of the machine instruction. [0004] 4. Computer system according to claim 2, characterized in that, based on the processor being in the operating execution mode, execute the machine instruction as a store instruction. [0005] 5. Computer system according to claim 1, characterized in that the first operand comprises content of a register specified by the machine instruction, the content is specified by the user, and in which the second operand is formed from a combination of the contents of a register specified by a machine instruction field index, the contents of a register specified by a machine instruction base field, and the contents of at least one displacement field. [0006] 6. Computer system according to claim 1, characterized by the fact that the operation is an unrestricted operation in the nesting of unrestricted transactions. [0007] 7. A method for executing an instruction within a computing environment, said method comprising: obtaining, by a processor, a machine instruction for execution, the machine instruction being defined for computer execution in accordance with a computer architecture , the machine instruction comprising: an opcode (702a) for specifying a transactional store operation; a field (704) for specifying a record, wherein the contents of the record are a first operand; and at least one field (706 , 708, 710, 712) to specify a second operand address, the second operand address to designate a location in memory; and execute, by the processor, the machine instructions, the execution comprising: non-transactionally storing the first operand at the location specified by the address of the second operand, where the first operand stored in the location is kept despite an abort of an operation associated with the instruction. machine, and characterized by the fact that non-transactional storage is delayed until an end of the processor operation execution mode. [0008] 8. Method according to claim 8, characterized in that it further comprises: determining whether the processor is in transactional execution mode; based on the processor being in transactional execution mode, determining whether the operation is a restricted operation that is subject to a set of limitations comprising: a limited number of instructions can be executed; a limited number of storage operands can be accessed; and the operation is limited to a single level, or an unrestricted operation that is not subject to the set of limitations; and based on the operation constitutes an unrestricted operation, continues the execution of the machine instruction.
类似技术:
公开号 | 公开日 | 专利标题 BR112014031432B1|2021-07-27|NON TRANSACTIONAL STORAGE INSTRUCTION AU2012382778B2|2016-08-18|Saving/restoring selected registers in transactional processing AU2013276133B2|2016-06-30|Transactional processing US9983882B2|2018-05-29|Selectively controlling instruction execution in transactional processing US20160357553A1|2016-12-08|Restricted instructions in transactional execution DK2834739T3|2018-10-22|TRANSACTION DIAGNOSTICS BLOCK AU2013276800B2|2016-08-18|Randomized testing within transactional execution BR112014031350B1|2021-09-21|FILTERING PROGRAM INTERRUPTION IN TRANSACTIONAL RUN BR112014031437B1|2021-11-09|TRANSACTIONAL EXECUTION BRANCH INDICATIONS BR112014031435B1|2021-11-09|RANDOMIZED TEST WITHIN TRANSACTIONAL EXECUTION BR112014031353B1|2021-09-28|PROCESSOR ASSISTANCE FACILITY
同族专利:
公开号 | 公开日 DK2834736T3|2017-04-10| US10599435B2|2020-03-24| CN104350468B|2017-11-14| PT2834736T|2017-04-03| US20130339669A1|2013-12-19| CN104350468A|2015-02-11| US20130339680A1|2013-12-19| JP2015523653A|2015-08-13| AU2012382776A1|2014-12-11| US20160124748A1|2016-05-05| BR112014031432A2|2017-06-27| US10606597B2|2020-03-31| KR101625322B1|2016-05-27| PL2834736T3|2017-09-29| EP2834736A1|2015-02-11| RU2012148587A|2014-05-20| WO2013186601A1|2013-12-19| ES2620704T3|2017-06-29| MX355090B|2018-04-04| HRP20170426T1|2017-06-16| RU2568324C2|2015-11-20| AU2012382776B2|2016-08-04| KR20150004829A|2015-01-13| CA2874176A1|2013-12-19| SI2834736T1|2017-04-26| IL236251D0|2015-01-29| CA2874176C|2020-03-10| ZA201408078B|2016-05-25| EP2834736B1|2017-02-22| MX2014015284A|2015-04-13| IL236251A|2018-12-31| HUE033506T2|2017-12-28| LT2834736T|2017-06-12| TWI574207B|2017-03-11| EP2834736A4|2015-05-20| TW201413592A|2014-04-01| JP6091608B2|2017-03-08| SG11201407473XA|2015-01-29|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题 CA1174370A|1980-05-19|1984-09-11|Hidekazu Matsumoto|Data processing unit with pipelined operands| US4488227A|1982-12-03|1984-12-11|Honeywell Information Systems Inc.|Program counter stacking method and apparatus for nested subroutines and interrupts| US4740893A|1985-08-07|1988-04-26|International Business Machines Corp.|Method for reducing the time for switching between programs| US5063497A|1987-07-01|1991-11-05|Digital Equipment Corporation|Apparatus and method for recovering from missing page faults in vector data processing operations| US5321823A|1988-07-20|1994-06-14|Digital Equipment Corporation|Digital processor with bit mask for counting registers for fast register saves| US5117498A|1988-08-19|1992-05-26|Motorola, Inc.|Processer with flexible return from subroutine| JPH0437927A|1990-06-01|1992-02-07|Sony Corp|Processor processing method| US5471591A|1990-06-29|1995-11-28|Digital Equipment Corporation|Combined write-operand queue and read-after-write dependency scoreboard| DE69026379T2|1990-08-07|1996-08-29|Bull Hn Information Syst|Message-oriented troubleshooting procedures| GB2256514B|1991-05-21|1994-11-16|Digital Equipment Corp|Commitment ordering for guaranteeing serializability across distributed transactions| US5701480A|1991-10-17|1997-12-23|Digital Equipment Corporation|Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing| US5274817A|1991-12-23|1993-12-28|Caterpillar Inc.|Method for executing subroutine calls| US5359608A|1992-11-24|1994-10-25|Amdahl Corporation|Apparatus for activation and deactivation of instruction tracing through use of conditional trace field in branch instructions| AU6629894A|1993-05-07|1994-12-12|Apple Computer, Inc.|Method for decoding guest instructions for a host computer| US5925125A|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|1994-06-03|1996-08-27|International Business Machines Corporation|Multiprocessor for hardware emulation| US5748964A|1994-12-20|1998-05-05|Sun Microsystems, Inc.|Bytecode program interpreter apparatus and method with pre-verification of data type restrictions| US5655100A|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| WO1997013201A1|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|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|1996-01-22|2000-03-11|Infinite Technology Inc|Processor with reconfigurable arithmetic data path| JPH103416A|1996-06-14|1998-01-06|Canon Inc|Information processor and its method| US6035313A|1997-03-24|2000-03-07|Motorola, Inc.|Memory address generator for an FFT| US5870582A|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|1997-05-30|1998-12-18|Mitsubishi Electric Corp|Branch prediction method| US5937199A|1997-06-03|1999-08-10|International Business Machines Corporation|User programmable interrupt mask with timeout for enhanced resource locking efficiency| US6073230A|1997-06-11|2000-06-06|Advanced Micro Devices, Inc.|Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches| JP3546678B2|1997-09-12|2004-07-28|株式会社日立製作所|Multi-OS configuration method| US6772419B1|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| US6094730A|1997-10-27|2000-07-25|Hewlett-Packard Company|Hardware-assisted firmware tracing method and apparatus| US7076784B1|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|1997-11-03|1999-12-07|Motorola, Inc.|Method and apparatus for affecting subsequent instruction processing in a data processor| US5938778A|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|1997-11-25|2000-03-15|정선종|Pilot symbol aidea dual channel QPSK for CDMA system| SE9704476L|1997-12-02|1999-06-23|Ericsson Telefon Ab L M|Extended instruction decoding| US6009261A|1997-12-16|1999-12-28|International Business Machines Corporation|Preprocessing of stored target routines for emulating incompatible instructions on a target processor| EP0944081B1|1998-03-17|2009-05-13|Panasonic Corporation|Data transmission apparatus and method thereof using command adapted thereto| US6202067B1|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|1998-05-14|2000-09-12|Sun Microsystems, Inc.|Multi-threaded journaling in a configuration database| US6308255B1|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|1998-10-06|2005-09-28|Texas Instruments Inc.|Trace fifo management| EP0992916A1|1998-10-06|2000-04-12|Texas Instruments Inc.|Digital signal processor| US6151669A|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|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|1998-12-04|2004-03-08|富士通株式会社|Transaction support system and information terminal device connected to the system| US6934832B1|2000-01-18|2005-08-23|Ati International Srl|Exception mechanism for a computer| US6732307B1|1999-10-01|2004-05-04|Hitachi, Ltd.|Apparatus and method for storing trace information| US7761857B1|1999-10-13|2010-07-20|Robert Bedichek|Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts| US6738892B1|1999-10-20|2004-05-18|Transmeta Corporation|Use of enable bits to control execution of selected instructions| US6604188B1|1999-10-20|2003-08-05|Transmeta Corporation|Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction| JP3776653B2|1999-11-24|2006-05-17|富士通株式会社|Arithmetic processing unit| US6601149B1|1999-12-14|2003-07-29|International Business Machines Corporation|Memory transaction monitoring system and user interface| US6754809B1|1999-12-30|2004-06-22|Texas Instruments Incorporated|Data processing apparatus with indirect register file access| SG99941A1|2000-08-30|2003-11-27|Ibm|Transaction support on logical disks| US6581138B2|2000-02-29|2003-06-17|Stmicroelectronics, Inc.|Branch-prediction driven instruction prefetch| US6665863B1|2000-05-31|2003-12-16|Microsoft Corporation|Data referencing within a database graph| US6826682B1|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| AU8316301A|2000-08-04|2002-02-18|Carr Scott Software Inc|Automatic transaction management| US6886094B1|2000-09-28|2005-04-26|International Business Machines Corporation|Apparatus and method for detecting and handling exceptions| US6671686B2|2000-11-02|2003-12-30|Guy Pardon|Decentralized, distributed internet data management| US7346632B2|2001-02-22|2008-03-18|International Business Machines Corporation|Mechanism for executing nested transactions in an execution environment supporting flat transactions only| US6963919B1|2001-02-28|2005-11-08|Agilent Technologies, Inc.|Method and system for improving computer network performance| US6745272B2|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|2001-04-30|2007-02-27|Mips Technologies, Inc.|Trace control from hardware and software| US6874081B2|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| US7305678B2|2001-05-17|2007-12-04|International Business Machines Corporation|Method and system for reducing synchronization waits when allocating sequenced identifiers in a multi-threaded server| US7613762B2|2001-05-25|2009-11-03|Sun Microsystems, Inc.|Floating point remainder with embedded status information| KR100625595B1|2001-05-28|2006-09-20|한국전자통신연구원|Parallel Logging Method of Transaction Processing System| US6826681B2|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|2001-08-02|2007-02-27|Mips Technologies, Inc.|Atomic update of CPO state| US20060218556A1|2001-09-28|2006-09-28|Nemirovsky Mario D|Mechanism for managing resource locking in a multi-threaded environment| US7174463B2|2001-10-04|2007-02-06|Lenovo Pte. Ltd.|Method and system for preboot user authentication| US6898699B2|2001-12-21|2005-05-24|Intel Corporation|Return address stack including speculative return address buffer with back pointers| US7313734B2|2002-01-14|2007-12-25|International Business Machines Corporation|Method and system for instruction tracing with enhanced interrupt avoidance| US7546446B2|2002-03-08|2009-06-09|Ip-First, Llc|Selective interrupt suppression| US20040049666A1|2002-09-11|2004-03-11|Annavaram Murali M.|Method and apparatus for variable pop hardware return address stack| US7496494B2|2002-09-17|2009-02-24|International Business Machines Corporation|Method and system for multiprocessor emulation on a multiprocessor host system| US6892286B2|2002-09-30|2005-05-10|Sun Microsystems, Inc.|Shared memory multiprocessor memory model verification system and method| US7103597B2|2002-10-03|2006-09-05|Mcgoveran David O|Adaptive transaction manager for complex transactions and business process| US7634638B1|2002-10-22|2009-12-15|Mips Technologies, Inc.|Instruction encoding for system register bit set and clear| US7568023B2|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| US7165168B2|2003-01-14|2007-01-16|Ip-First, Llc|Microprocessor with branch target address cache update queue| US7269693B2|2003-02-13|2007-09-11|Sun Microsystems, Inc.|Selectively monitoring stores to support transactional program execution| US7089374B2|2003-02-13|2006-08-08|Sun Microsystems, Inc.|Selectively unmarking load-marked cache lines during transactional program execution| US6862664B2|2003-02-13|2005-03-01|Sun Microsystems, Inc.|Method and apparatus for avoiding locks by speculatively executing critical sections| US6938130B2|2003-02-13|2005-08-30|Sun Microsystems Inc.|Method and apparatus for delaying interfering accesses from other threads during transactional program execution| US7398355B1|2003-02-13|2008-07-08|Sun Microsystems, Inc.|Avoiding locks by transactionally executing critical sections| JP2009508187A|2005-08-01|2009-02-26|サン・マイクロシステムズ・インコーポレーテッド|Avoiding locks by executing critical sections transactionally| US7269717B2|2003-02-13|2007-09-11|Sun Microsystems, Inc.|Method for reducing lock manipulation overhead during access to critical code sections| US7143273B2|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|2003-04-30|2008-07-08|Silicon Graphics, Inc.|System and method for performing memory operations in a computing system| US7480785B2|2003-05-23|2009-01-20|Nippon Telegraph And Telephone Corporation|Parallel processing device and parallel processing method| CA2472887A1|2003-06-30|2004-12-30|Gravic, Inc.|Methods for ensuring referential integrity in multithreaded replication engines| US7836450B2|2003-08-28|2010-11-16|Mips Technologies, Inc.|Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts| US7197586B2|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|2004-02-24|2007-04-11|第一数据公司|System and methods for transaction processing| US8825615B2|2004-05-11|2014-09-02|Oracle International Corporation|Simplifying implementation of custom atomic transactions in a programming environment| US7703098B1|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|2004-07-20|2007-04-17|Sun Microsystems, Inc.|Method and apparatus for releasing memory locations during transactional execution| US7395382B1|2004-08-10|2008-07-01|Sun Microsystems, Inc.|Hybrid software/hardware transactional memory| US7401202B1|2004-09-14|2008-07-15|Azul Systems, Inc.|Memory addressing| US20060064508A1|2004-09-17|2006-03-23|Ramesh Panwar|Method and system to store and retrieve message packet data in a communications network| US7373554B2|2004-09-24|2008-05-13|Oracle International Corporation|Techniques for automatic software error diagnostics and correction| US7856537B2|2004-09-30|2010-12-21|Intel Corporation|Hybrid hardware and software implementation of transactional memory access| EP1657118A1|2004-11-11|2006-05-17|IEE INTERNATIONAL ELECTRONICS & ENGINEERING S.A.|Collision recognition device for a vehicle| US7984248B2|2004-12-29|2011-07-19|Intel Corporation|Transaction based shared data operations in a multiprocessor environment| US7631073B2|2005-01-27|2009-12-08|International Business Machines Corporation|Method and apparatus for exposing monitoring violations to the monitored application| US20060212757A1|2005-03-15|2006-09-21|International Business Machines Corporation|Method, system, and program product for managing computer-based interruptions| US7421544B1|2005-04-04|2008-09-02|Sun Microsystems, Inc.|Facilitating concurrent non-transactional execution in a transactional memory system| US7496726B1|2005-04-18|2009-02-24|Sun Microsystems, Inc.|Controlling contention via transactional timers among conflicting transactions issued by processors operating in insistent or polite mode| US7464161B2|2005-06-06|2008-12-09|International Business Machines Corporation|Enabling and disabling byte code inserted probes based on transaction monitoring tokens| US7350034B2|2005-06-20|2008-03-25|International Business Machines Corporation|Architecture support of best-effort atomic transactions for multiprocessor systems| US7882339B2|2005-06-23|2011-02-01|Intel Corporation|Primitives to enhance thread-level speculation| US7702825B2|2005-06-29|2010-04-20|Intel Corporation|Enhancements to universal serial bus suspend and resume operations| US20070005828A1|2005-06-30|2007-01-04|Nimrod Diamant|Interrupts support for the KCS manageability interface| CA2551045C|2005-06-30|2008-04-22|Hitachi, Ltd.|Input-output control apparatus, input-output control method, process control apparatus and process control method| CN1713164A|2005-07-21|2005-12-28|复旦大学|DMA controller and data transmission with multi-transaction discretionary process| US20070061555A1|2005-09-15|2007-03-15|St Clair Michael|Call return tracking technique| US7870369B1|2005-09-28|2011-01-11|Oracle America, Inc.|Abort prioritization in a trace-based processor| CN100365604C|2005-12-02|2008-01-30|北京中星微电子有限公司|Interrupt control handling apparatus and method| US8799882B2|2005-12-07|2014-08-05|Microsoft Corporation|Compiler support for optimizing decomposed software transactional memory operations| US20070136289A1|2005-12-14|2007-06-14|Intel Corporation|Lock elision with transactional memory| US20070143755A1|2005-12-16|2007-06-21|Intel Corporation|Speculative execution past a barrier| US7870545B2|2005-12-16|2011-01-11|Intel Corporation|Protecting shared variables in a software transactional memory system| US8117605B2|2005-12-19|2012-02-14|Oracle America, Inc.|Method and apparatus for improving transactional memory interactions by tracking object visibility| US7730286B2|2005-12-30|2010-06-01|Intel Corporation|Software assisted nested hardware transactions| US7810072B2|2006-01-06|2010-10-05|International Business Machines Corporation|Exception thrower| US20070186056A1|2006-02-07|2007-08-09|Bratin Saha|Hardware acceleration for a software transactional memory system| US7617383B2|2006-02-16|2009-11-10|Vns Portfolio Llc|Circular register arrays of a computer| US20070198979A1|2006-02-22|2007-08-23|David Dice|Methods and apparatus to implement parallel transactions| US8099538B2|2006-03-29|2012-01-17|Intel Corporation|Increasing functionality of a reader-writer lock| US8180977B2|2006-03-30|2012-05-15|Intel Corporation|Transactional memory in out-of-order processors| US8180967B2|2006-03-30|2012-05-15|Intel Corporation|Transactional memory virtualization| US7930695B2|2006-04-06|2011-04-19|Oracle America, Inc.|Method and apparatus for synchronizing threads on a processor that supports transactional memory| US7636829B2|2006-05-02|2009-12-22|Intel Corporation|System and method for allocating and deallocating memory within transactional code| US7594094B2|2006-05-19|2009-09-22|International Business Machines Corporation|Move data facility with optional specifications| US7707394B2|2006-05-30|2010-04-27|Arm Limited|Reducing the size of a data stream produced during instruction tracing| US7849446B2|2006-06-09|2010-12-07|Oracle America, Inc.|Replay debugging| MY149658A|2006-06-12|2013-09-30|Mobile Money Internat Sdn Bhd|Transaction server| US20070300013A1|2006-06-21|2007-12-27|Manabu Kitamura|Storage system having transaction monitoring capability| US20080005504A1|2006-06-30|2008-01-03|Jesse Barnes|Global overflow method for virtualized transactional memory| US20080016325A1|2006-07-12|2008-01-17|Laudon James P|Using windowed register file to checkpoint register state| US7617421B2|2006-07-27|2009-11-10|Sun Microsystems, Inc.|Method and apparatus for reporting failure conditions during transactional execution| US7748618B2|2006-08-21|2010-07-06|Verizon Patent And Licensing Inc.|Secure near field transaction| US7865885B2|2006-09-27|2011-01-04|Intel Corporation|Using transactional memory for precise exception handling in aggressive dynamic binary optimizations| US20080086516A1|2006-10-04|2008-04-10|Oracle International|Automatically changing a database system's redo transport mode to dynamically adapt to changing workload and network conditions| EP1918540B1|2006-11-06|2009-08-26|GM Global Technology Operations, Inc.|Operating method for a particulate filter, data processor program product and control apparatus therefore| CN101178787A|2006-11-10|2008-05-14|上海市卢湾区东南医院|Information communication method used for community old cadres health supervision| US7669040B2|2006-12-15|2010-02-23|Sun Microsystems, Inc.|Method and apparatus for executing a long transaction| JP2008165370A|2006-12-27|2008-07-17|Internatl Business Mach Corp <Ibm>|Method and device for dividing online transaction processing and executing in distributed environment| US8086827B2|2006-12-28|2011-12-27|Intel Corporation|Mechanism for irrevocable transactions| US7802136B2|2006-12-28|2010-09-21|Intel Corporation|Compiler technique for efficient register checkpointing to support transaction roll-back| US7627743B2|2007-01-12|2009-12-01|Andes Technology Corporation|Method and circuit implementation for multiple-word transfer into/from memory subsystems| US20080244544A1|2007-03-29|2008-10-02|Naveen Neelakantam|Using hardware checkpoints to support software based speculation| US8332374B2|2007-04-13|2012-12-11|Oracle America, Inc.|Efficient implicit privatization of transactional memory| US9009452B2|2007-05-14|2015-04-14|International Business Machines Corporation|Computing system with transactional memory using millicode assists| US8117403B2|2007-05-14|2012-02-14|International Business Machines Corporation|Transactional memory system which employs thread assists using address history tables| US7814378B2|2007-05-18|2010-10-12|Oracle America, Inc.|Verification of memory consistency and transactional memory| US20080320282A1|2007-06-22|2008-12-25|Morris Robert P|Method And Systems For Providing Transaction Support For Executable Program Components| US8266387B2|2007-06-27|2012-09-11|Microsoft Corporation|Leveraging transactional memory hardware to accelerate virtualization emulation| US7779232B2|2007-08-28|2010-08-17|International Business Machines Corporation|Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches| US8209689B2|2007-09-12|2012-06-26|Intel Corporation|Live lock free priority scheme for memory transactions in transactional memory| US7904434B2|2007-09-14|2011-03-08|Oracle International Corporation|Framework for handling business transactions| US7890472B2|2007-09-18|2011-02-15|Microsoft Corporation|Parallel nested transactions in transactional memory| US20090127332A1|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|2007-11-21|2009-05-28|Arm Limited|Contention management for a hardware transactional memory| CN101170747A|2007-11-30|2008-04-30|中兴通讯股份有限公司|Relay state adjusting method and device| US20090157512A1|2007-12-14|2009-06-18|Qualcomm Incorporated|Near field communication transactions with user profile updates in a mobile environment| US8145878B2|2007-12-17|2012-03-27|Intel Corporation|Accessing control and status register | US8195898B2|2007-12-27|2012-06-05|Intel Corporation|Hybrid transactions for low-overhead speculative parallelization| US8065491B2|2007-12-30|2011-11-22|Intel Corporation|Efficient non-transactional write barriers for strong atomicity| US8706982B2|2007-12-30|2014-04-22|Intel Corporation|Mechanisms for strong atomicity in a transactional memory system| US8140497B2|2007-12-31|2012-03-20|Oracle America, Inc.|System and method for implementing nonblocking zero-indirection transactional memory| US7966459B2|2007-12-31|2011-06-21|Oracle America, Inc.|System and method for supporting phased transactional memory modes| US20090182983A1|2008-01-11|2009-07-16|International Business Machines Corporation|Compare and Branch Facility and Instruction Therefore| US8041900B2|2008-01-15|2011-10-18|Oracle America, Inc.|Method and apparatus for improving transactional memory commit latency| US20090187906A1|2008-01-23|2009-07-23|Sun Microsystems, Inc.|Semi-ordered transactions| US8176279B2|2008-02-25|2012-05-08|International Business Machines Corporation|Managing use of storage by multiple pageable guests of a computing environment| US8380907B2|2008-02-26|2013-02-19|International Business Machines Corporation|Method, system and computer program product for providing filtering of GUEST2 quiesce requests| US8161273B2|2008-02-26|2012-04-17|Oracle America, Inc.|Method and apparatus for programmatically rewinding a register inside a transaction| US8688628B2|2008-02-29|2014-04-01|Red Hat, Inc.|Nested queued transaction manager| EP2096564B1|2008-02-29|2018-08-08|Euroclear SA/NV|Improvements relating to handling and processing of massive numbers of processing instructions in real time| US8316366B2|2008-04-02|2012-11-20|Oracle America, Inc.|Facilitating transactional execution in a processor that supports simultaneous speculative threading| US20090260011A1|2008-04-14|2009-10-15|Microsoft Corporation|Command line transactions| JP5385545B2|2008-04-17|2014-01-08|インターナショナル・ビジネス・マシーンズ・コーポレーション|Apparatus and method for controlling execution of transaction| US9367363B2|2008-05-12|2016-06-14|Oracle America, Inc.|System and method for integrating best effort hardware mechanisms for supporting transactional memory| US8612950B2|2008-06-19|2013-12-17|Intel Corporation|Dynamic optimization for removal of strong atomicity barriers| US7996686B2|2008-07-07|2011-08-09|International Business Machines Corporation|Branch trace methodology| WO2010014200A1|2008-07-28|2010-02-04|Advanced Micro Devices, Inc.|Virtualizable advanced synchronization facility| US9449314B2|2008-10-02|2016-09-20|International Business Machines Corporation|Virtualization of a central processing unit measurement facility| US8191046B2|2008-10-06|2012-05-29|Microsoft Corporation|Checking transactional memory implementations| US20100122073A1|2008-11-10|2010-05-13|Ravi Narayanaswamy|Handling exceptions in software transactional memory systems| JP4702962B2|2008-11-12|2011-06-15|インターナショナル・ビジネス・マシーンズ・コーポレーション|MEMORY CONTROL DEVICE, PROGRAM, AND METHOD| US8789057B2|2008-12-03|2014-07-22|Oracle America, Inc.|System and method for reducing serialization in transactional memory using gang release of blocked threads| US20100153776A1|2008-12-12|2010-06-17|Sun Microsystems, Inc.|Using safepoints to provide precise exception semantics for a virtual machine| US10210018B2|2008-12-24|2019-02-19|Intel Corporation|Optimizing quiescence in a software transactional memory system| US9274855B2|2008-12-24|2016-03-01|Intel Corporation|Optimization for safe elimination of weak atomicity overhead| US8914620B2|2008-12-29|2014-12-16|Oracle America, Inc.|Method and system for reducing abort rates in speculative lock elision using contention management mechanisms| US8799582B2|2008-12-30|2014-08-05|Intel Corporation|Extending cache coherency protocols to support locally buffered data| US9785462B2|2008-12-30|2017-10-10|Intel Corporation|Registering a user-handler in hardware for transactional memory event handling| CN101710433A|2008-12-31|2010-05-19|深圳市江波龙电子有限公司|Electronic payment card and transaction method thereof| US9170844B2|2009-01-02|2015-10-27|International Business Machines Corporation|Prioritization for conflict arbitration in transactional memory management| US20100205628A1|2009-02-12|2010-08-12|Davis Bruce L|Media processing methods and arrangements| CN101819518B|2009-02-26|2013-09-11|国际商业机器公司|Method and device for quickly saving context in transactional memory| US8266107B2|2009-03-11|2012-09-11|International Business Machines Corporation|Method for mirroring a log file by threshold driven synchronization| US9940138B2|2009-04-08|2018-04-10|Intel Corporation|Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations| US20100307689A1|2009-06-06|2010-12-09|Michael James Huebner|Pivoting tape dispenser| US8356166B2|2009-06-26|2013-01-15|Microsoft Corporation|Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers| US8489864B2|2009-06-26|2013-07-16|Microsoft Corporation|Performing escape actions in transactions| GB2484416B|2009-06-26|2015-02-25|Intel Corp|Optimizations for an unbounded transactional memory system| US8973004B2|2009-06-26|2015-03-03|Oracle America, Inc.|Transactional locking with read-write locks in transactional memory systems| US8281185B2|2009-06-30|2012-10-02|Oracle America, Inc.|Advice-based feedback for transactional execution| US8229907B2|2009-06-30|2012-07-24|Microsoft Corporation|Hardware accelerated transactional memory system with open nested transactions| US8688964B2|2009-07-20|2014-04-01|Microchip Technology Incorporated|Programmable exception processing latency| GB2472620B|2009-08-12|2016-05-18|Cloudtran Inc|Distributed transaction processing| US8392694B2|2009-09-15|2013-03-05|International Business Machines Corporation|System and method for software initiated checkpoint operations| GB2474446A|2009-10-13|2011-04-20|Advanced Risc Mach Ltd|Barrier requests to maintain transaction order in an interconnect with multiple paths| US8327188B2|2009-11-13|2012-12-04|Oracle America, Inc.|Hardware transactional memory acceleration through multiple failure recovery| US8516202B2|2009-11-16|2013-08-20|International Business Machines Corporation|Hybrid transactional memory system and method| US9529839B2|2009-12-07|2016-12-27|International Business Machines Corporation|Applying limited-size hardware transactional memory to arbitrarily large data structure| US8290991B2|2009-12-15|2012-10-16|Juniper Networks, Inc.|Atomic deletion of database data categories| US8316194B2|2009-12-15|2012-11-20|Intel Corporation|Mechanisms to accelerate transactions using buffered stores| US8095824B2|2009-12-15|2012-01-10|Intel Corporation|Performing mode switching in an unbounded transactional memory system| US9092253B2|2009-12-15|2015-07-28|Microsoft Technology Licensing, Llc|Instrumentation of hardware assisted transactional memory system| US8521995B2|2009-12-15|2013-08-27|Intel Corporation|Handling operating system transitions in an unbounded transactional memory mode| US8301849B2|2009-12-23|2012-10-30|Intel Corporation|Transactional memory in out-of-order processors with XABORT having immediate argument| US20110161371A1|2009-12-29|2011-06-30|Microgen Plc|Sql generation| KR101639672B1|2010-01-05|2016-07-15|삼성전자주식회사|Unbounded transactional memory system and method for operating thereof| CN101826000A|2010-01-29|2010-09-08|北京龙芯中科技术服务中心有限公司|Interrupt response determining method, device and microprocessor core for pipeline microprocessor| US8549468B2|2010-02-08|2013-10-01|National Tsing Hua University|Method, system and computer readable storage device for generating software transaction-level modeling model| US8850166B2|2010-02-18|2014-09-30|International Business Machines Corporation|Load pair disjoint facility and instruction therefore| US20110208921A1|2010-02-19|2011-08-25|Pohlack Martin T|Inverted default semantics for in-speculative-region memory accesses| US8438568B2|2010-02-24|2013-05-07|International Business Machines Corporation|Speculative thread execution with hardware transactional memory| US8739164B2|2010-02-24|2014-05-27|Advanced Micro Devices, Inc.|Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof| US8464261B2|2010-03-31|2013-06-11|Oracle International Corporation|System and method for executing a transaction using parallel co-transactions| US8402227B2|2010-03-31|2013-03-19|Oracle International Corporation|System and method for committing results of a software transaction using a hardware transaction| US8631223B2|2010-05-12|2014-01-14|International Business Machines Corporation|Register file supporting transactional processing| US9626187B2|2010-05-27|2017-04-18|International Business Machines Corporation|Transactional memory system supporting unbroken suspended execution| US20110302143A1|2010-06-02|2011-12-08|Microsoft Corporation|Multi-version concurrency with ordered timestamps| US9880848B2|2010-06-11|2018-01-30|Advanced Micro Devices, Inc.|Processor support for hardware transactional memory| US8560816B2|2010-06-30|2013-10-15|Oracle International Corporation|System and method for performing incremental register checkpointing in transactional memory| US8479053B2|2010-07-28|2013-07-02|Intel Corporation|Processor with last branch record register storing transaction indicator| US8561033B2|2010-07-30|2013-10-15|International Business Machines Corporation|Selective branch-triggered trace generation apparatus and method| US8549504B2|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|2010-09-30|2013-04-16|International Business Machines Corporation|Transactional memory preemption mechanism| US9552206B2|2010-11-18|2017-01-24|Texas Instruments Incorporated|Integrated circuit with control node circuitry and processing circuitry| US9122476B2|2010-12-07|2015-09-01|Advanced Micro Devices, Inc.|Programmable atomic memory using hardware validation agent| US8788794B2|2010-12-07|2014-07-22|Advanced Micro Devices, Inc.|Programmable atomic memory using stored atomic procedures| US8442962B2|2010-12-28|2013-05-14|Sap Ag|Distributed transaction management using two-phase commit optimization| US8818867B2|2011-11-14|2014-08-26|At&T Intellectual Property I, L.P.|Security token for mobile near field communication transactions| US9158660B2|2012-03-16|2015-10-13|International Business Machines Corporation|Controlling operation of a run-time instrumentation facility| US9442824B2|2012-03-16|2016-09-13|International Business Machines Corporation|Transformation of a program-event-recording event into a run-time instrumentation event| US9348642B2|2012-06-15|2016-05-24|International Business Machines Corporation|Transaction begin/end instructions| US8880959B2|2012-06-15|2014-11-04|International Business Machines Corporation|Transaction diagnostic block| US10437602B2|2012-06-15|2019-10-08|International Business Machines Corporation|Program interruption filtering in transactional execution| US9361115B2|2012-06-15|2016-06-07|International Business Machines Corporation|Saving/restoring selected registers in transactional processing| US20130339680A1|2012-06-15|2013-12-19|International Business Machines Corporation|Nontransactional store instruction| US9436477B2|2012-06-15|2016-09-06|International Business Machines Corporation|Transaction abort instruction| US8966324B2|2012-06-15|2015-02-24|International Business Machines Corporation|Transactional execution branch indications| US8682877B2|2012-06-15|2014-03-25|International Business Machines Corporation|Constrained transaction execution| US9772854B2|2012-06-15|2017-09-26|International Business Machines Corporation|Selectively controlling instruction execution in transactional processing| US9448796B2|2012-06-15|2016-09-20|International Business Machines Corporation|Restricted instructions in transactional execution| US9311101B2|2012-06-15|2016-04-12|International Business Machines Corporation|Intra-instructional transaction abort handling| US8688661B2|2012-06-15|2014-04-01|International Business Machines Corporation|Transactional processing| US9336046B2|2012-06-15|2016-05-10|International Business Machines Corporation|Transaction abort processing| US9367323B2|2012-06-15|2016-06-14|International Business Machines Corporation|Processor assist facility| US9442737B2|2012-06-15|2016-09-13|International Business Machines Corporation|Restricting processing within a processor to facilitate transaction completion| US9317460B2|2012-06-15|2016-04-19|International Business Machines Corporation|Program event recording within a transactional environment| US9740549B2|2012-06-15|2017-08-22|International Business Machines Corporation|Facilitating transaction completion subsequent to repeated aborts of the transaction| US9384004B2|2012-06-15|2016-07-05|International Business Machines Corporation|Randomized testing within transactional execution| US8964390B2|2012-11-08|2015-02-24|International Business Machines Corporation|Sectioned manifolds facilitating pumped immersion-cooling of electronic components| US9348522B2|2013-12-12|2016-05-24|International Business Machines Corporation|Software indications and hints for coalescing memory transactions|US9336046B2|2012-06-15|2016-05-10|International Business Machines Corporation|Transaction abort processing| US10437602B2|2012-06-15|2019-10-08|International Business Machines Corporation|Program interruption filtering in transactional execution| US20130339680A1|2012-06-15|2013-12-19|International Business Machines Corporation|Nontransactional store instruction| US9772854B2|2012-06-15|2017-09-26|International Business Machines Corporation|Selectively controlling instruction execution in transactional processing| US9740549B2|2012-06-15|2017-08-22|International Business Machines Corporation|Facilitating transaction completion subsequent to repeated aborts of the transaction| US9348642B2|2012-06-15|2016-05-24|International Business Machines Corporation|Transaction begin/end instructions| US9436477B2|2012-06-15|2016-09-06|International Business Machines Corporation|Transaction abort instruction| US9384004B2|2012-06-15|2016-07-05|International Business Machines Corporation|Randomized testing within transactional execution| US9361115B2|2012-06-15|2016-06-07|International Business Machines Corporation|Saving/restoring selected registers in transactional processing| US9448796B2|2012-06-15|2016-09-20|International Business Machines Corporation|Restricted instructions in transactional execution| US10120681B2|2014-03-14|2018-11-06|International Business Machines Corporation|Compare and delay instructions| US9454370B2|2014-03-14|2016-09-27|International Business Machines Corporation|Conditional transaction end instruction| US9558032B2|2014-03-14|2017-01-31|International Business Machines Corporation|Conditional instruction end operation| US20160179550A1|2014-12-23|2016-06-23|Intel Corporation|Fast vector dynamic memory conflict detection| US20160253118A1|2015-02-26|2016-09-01|Kabushiki Kaisha Toshiba|Electronic device, controlling method, and storage medium| TWI615709B|2016-03-30|2018-02-21|凌陽科技股份有限公司|Method for re-arranging data in memory and micro-processing system using the same| US10579377B2|2017-01-19|2020-03-03|International Business Machines Corporation|Guarded storage event handling during transactional execution| US10803039B2|2017-05-26|2020-10-13|Oracle International Corporation|Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index| US10346315B2|2017-05-26|2019-07-09|Oracle International Corporation|Latchless, non-blocking dynamically resizable segmented hash index| US20200042489A1|2018-08-06|2020-02-06|Oracle International Corporation|One-sided reliable remote direct memory operations| US10977193B2|2018-08-17|2021-04-13|Oracle International Corporation|Remote direct memory operationsfor transactional processing systems|
法律状态:
2018-12-04| B06F| Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]| 2019-12-10| B06U| Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]| 2021-06-22| B09A| Decision: intention to grant [chapter 9.1 patent gazette]| 2021-07-27| B16A| Patent or certificate of addition of invention granted|Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 22/11/2012, OBSERVADAS AS CONDICOES LEGAIS. |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 US13/524,887|2012-06-15| US13/524,887|US20130339680A1|2012-06-15|2012-06-15|Nontransactional store instruction| PCT/IB2012/056625|WO2013186601A1|2012-06-15|2012-11-22|Nontransactional store instruction| 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|