专利摘要:
save/restore selected registers in transactional processing. a start transaction instruction initiates the execution of a transaction and includes a general register save mask which has bits which, when set, indicate registers to be saved in the case where the transaction is aborted. at the beginning of the transaction, the contents of the registers are saved in memory not accessible to the program and, if the transaction is aborted, the saved contents are copied to the registers.
公开号:BR112014031415B1
申请号:R112014031415-2
申请日:2012-11-26
公开日:2021-08-10
发明作者:Dan Greiner;Christian Jacobi;Timothy Slegel
申请人:International Business Machines Corporation;
IPC主号:
专利说明:

BACKGROUND
[0001] One or more aspects refer, in general, to multiprocessing computing environments and, in particular, to transactional processing within such computing environments.
[0002] A persistent challenge in multiprocessor programming is that of updates at the same location in memory by multiple central processing units (CPUs). Many instructions that update locations in memory, including even simple logical operations such as AND, do this with multiple accesses to the location. For example, first the memory location is fetched and then the updated result is stored again.
[0003] In order for multiple CPUs to safely update the same location in memory, 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 a wired update of a location in memory. The wired update means that, as noted by the other CPUs and the input/output (I/O) subsystem (eg, channel subsystem), all instruction memory 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 which provide a more sophisticated means of performing interlinked updates and allow for the implementation of what is commonly known as a lock word. ) (or traffic light). The newly added instructions provided additional linked upgrade capabilities, including COMPARE AND SWAP AND PURGE and COMPARE AND SWAP AND STORE. However, all of these instructions allow linking to only a single location in memory.
[0004] More complex program techniques may require the linked update of multiple locations in memory, such as when adding an element to a doubly linked list. In such an operation, both a forward and backward pointer must appear to be updated simultaneously, as noted by the other CPUs and the I/O subsystem. To perform a multiple-site update, the program is required to use a separate serialization point, such as a lock word. However, block words can provide a much higher level of serialization than necessary; for example, lock words can serialize an entire queue of millions of elements, even if only two elements are being updated. The program can structure the data to use more detailed serialization (eg a hierarchy of lockpoints), but this introduces additional problems, such as potential deadlock situations if the hierarchy is violated and recovery problems if the program encounters an error. while executing one or more locks or if the lock cannot be acquired.
[0005] In addition to the above, there are several situations where a program may execute a sequence of instructions that may or may not result in an exception condition. If no exception condition occurs, 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 such execution, for example, in speculative execution, partial integration of a function, and/or in null pointer check resequencing.
[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 typically abnormally terminates the program for exceptions that the operating system is not prepared to handle. Establishing and exploiting such an environment is costly and complicated. BRIEF SUMMARY
[0007] The deficiencies of the prior art are overcome and advantages are provided by providing a computer program product to facilitate transactional processing 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 execute a method. The method includes, for example, determining, by a processor, from information provided by an instruction, one or more selected registers to be saved in transactional processing, the instruction starting execution of a transaction, the transaction effectively deferring the commit (committ ) from transactional memories in main memory until completion of a selected transaction and the one or more selected registers being less than all registers used by the transaction in executing the transaction; and saving the contents of one or more selected registers based on the execution of the instructions.
[0008] Methods and systems related to one or more embodiments are also described and claimed herein. In addition, services related to one or more embodiments are also described and can be claimed here.
[0009] Additional features and advantages are obtained. Other embodiments and aspects are described in detail herein and are considered part of the claimed invention. BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
[0010] One or more aspects are particularly highlighted and distinctly claimed as examples in the claims at the conclusion of the descriptive report. The foregoing objectives, characteristics and advantages and others are evident from the following detailed description, together with the attached drawings, in which: Figure 1 represents an embodiment of a computing environment; Figure 2A represents an example of a Start Transaction (TBEGIN) instruction; Figure 2B represents an embodiment of more details of a field of the TBEGIN instruction of Figure 2A; Figure 3A represents an example of a restricted Start Transaction (TBEGINC) instruction; Figure 3B represents an embodiment of more details of a field of the TBEGINC instruction of Figure 3A; Figure 4 represents an example of a Terminate Transaction (TEND) instruction; Figure 5 represents an example of an Abort Transaction (TABORT) instruction; Figure 6 represents an example of grouped transactions; Figure 7 represents an example of a NON TRANSACTIONAL MEMORY (NTSTG) statement; Figure 8 represents an example of an EXTRACT TRANSACTION GROUP DEPTH (ETND) statement; Figure 9 represents an example of a diagnostic block of transaction; Figure 10 represents exemplary reasons for aborting, along with abort codes and condition codes; Figure 11 represents an embodiment of the lot. logic associated with the execution of a TBEGINC instruction; Figure 12 represents an embodiment of the logic associated with the execution of a TBEGIN instruction; Figures 13A-13B depict embodiments of the logic associated with saving/restoring selected registers in transactional processing; Figures 14A-14B depict an example of inserting a queue element into a doubly linked list of queue elements; Figure 15 represents an embodiment of a computer program product; Figure 16 represents an embodiment of a host computer system; Figure 17 represents a further example of a computer system; Figure 18 represents another example of a computer system comprising a computer network; Figure 19 represents an embodiment of multiple elements of a computer system; Figure 20A represents an embodiment of the execution unit of the computer system of Figure 19; Figure 20B represents an embodiment of the branch unit of the computer system. the computer of Figure 19; Figure 20C represents an embodiment of the loading/storage unit. the computer system of Figure 19; and Figure 21 represents an embodiment of an emulated host computer system. DETAILED DESCRIPTION
[0011] According to an aspect, a transactional execution unit (TX) is provided. This unit allows for transactional processing of instructions and, in one or more embodiments, offers different modes of execution, as described below, as well as grouped levels of transactional processing.
[0012] The transactional execution unit introduces a CPU state called the transactional execution mode (TX). After a CPU reset, the CPU is not in TX mode. The CPU enters TX mode through a START TRANSACTION instruction. The CPU leaves TX mode by either (a) an outermost END TRANSACTION instruction (more details on internal and external below) or (b) aborting the transaction. While in TX mode, memory accesses by the CPU appear to be concurrent in blocks, as noted by the other CPUs and the I/O subsystem. Memory accesses are (a) committed to memory when the outermost transition 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.
[0013] Transactions can be grouped. That is, while the CPU is in TX mode, it can execute another START TRANSACTION instruction. The instruction that causes the CPU to enter TX mode is called the outermost START TRANSACTION; likewise, the program is said to be in the outermost transaction. Subsequent executions of START TRANSACTION 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 CLUSTER DEPTH statement returns the current wrapping depth value and, in another embodiment, may return a maximum wrapping depth value. This technique uses a model called "flat grouping", in which an abort condition at any depth of grouping causes all levels of the transaction to be aborted and control is returned to the statement after the outermost START TRANSACTION statement.
[0014] During the processing of a transaction, a transactional access made by one CPU is said to conflict with (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 anywhere within the same cache line and one or both accesses is memory. In other words, for transactional execution to be productive, the CPU must not be observed making transactional accesses until they are committed. 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 will be less effective if there is a lot of contention for locations in memory that are being accessed transactionally.
[0015] In a transactional execution model (referred to as an unrestricted transaction here), when a transaction is aborted, the program may try to proceed with the transaction again in the hope that the abort condition is no longer present or the program may " fallback" to an equivalent non-transactional path. In another transactional execution model (referred to here as a constrained transaction), an aborted transaction is automatically resumed by the CPU; in the absence of restriction violations, an eventual completion of the restricted transaction is assured.
[0016] 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 allowed to modify the register context point of floating point registers including, for example, floating point registers and the floating point control register, (c) whether the transaction is allowed to modify access registers (ARs) and (d) whether certain should be avoided program exception conditions cause an interrupt. If an unrestricted transaction is aborted, various diagnostic information can be provided. For example, the outermost TBEGIN statement that initiates an unrestricted transaction might designate a transaction diagnostic block (TDB) specified by the program. In addition, the TDB in the CPU prefix area or designated by the host state description can also be used if the transaction is aborted due to a program interrupt or a condition that causes interpretive execution to terminate, respectively.
[0017] Various types of registers are indicated above. These are explained in more detail here. General registers can be used as accumulators in general arithmetic and logic 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 allow 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.
[0018] In addition to their use as accumulators in general arithmetic and logic 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 an 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.
[0019] Floating-point instructions use a set of floating-point registers. The CPU has 16 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 long and can contain a short (32-bit) or long (64-bit) floating-point operand.
[0020] A floating-point control register (FPC) is a 32-bit register that contains mask bits, flag bits, a data exception code, and rounding mode bits and is used during data processing. floating point operations.
[0021] Furthermore, in one embodiment, the CPU has 16 control registers, each having 64-bit positions. Bit positions in registers are assigned to particular units in the system, such as Program Event Write (discussed below), and are used to specify that an operation can be performed or provide special information required by the unit. . In one embodiment, for the transactional unit, CR0 (bits 8 and 9) and CR2 (bits 61-63) are used, as described below.
[0022] The CPU has, for example, 16 access registers numbered 0-15. An access register consists of 32-bit positions that contain 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 a mode called access register mode (controlled by bits in the Program Status Word (PSW)), an instruction B field, used to specify a logical address for a memory operand reference , designates an access register and the address space control element specified by the access register is used by the DAT for the reference being made. For some instructions, an R field is used instead of a B field. Instructions are provided for loading and storing the contents of access registers and for moving the contents from one access register to another.
[0023] Each of access registers 1-15 may designate any one 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 manages the access register by 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.
[0024] In one embodiment, there are multiple types of address spaces. An address space is a consecutive sequence of integer numbers (virtual addresses), along with specific transformation parameters which allow each number to be associated with a location of bytes in memory. The sequence starts at zero and proceeds from left to right.
[0025] For example, in z/Architecture, when a virtual address is used by a CPU to access main memory (also known as primary memory), it is first translated using Dynamic Address Translation (DAT ), to a real address and, through prefixing, 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 top-level table for a specific address space is called an address space control element and is found for use, by the DAT, in a control register or as specified by an access register . Alternatively, the address space control element for an address space can be a real space designation, which indicates that the DAT should translate the virtual address simply by treating it as a real address and without using any tables.
[0026] The 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 translation mode specified in the current PSW. Four translation modes are available: primary space mode, secondary space mode, access logger mode and home space mode. Different address spaces are addressable depending on the translation mode.
[0027] At any time when the CPU is in primary space mode or secondary space mode, the CPU can translate virtual addresses belonging to two address spaces: the primary address space and the secondary address space. At any time when the CPU is in access register mode, it can translate virtual addresses from up to 16 address spaces - the primary address space and up to 15 address spaces specified by the AR. At any time when the CPU is in home space mode, it can translate virtual addresses from home address space.
[0028] The primary address space is identified as such because it consists of primary virtual addresses, which are translated via the primary address space (ASCE) control element. 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 specified ASCEs; and the home address space consists of home virtual addresses translated through home ASCEs. The primary and secondary ASCEs are in control registers 1 and 7, respectively. The AR-specified ASCEs are in secondary ASN table entries that are located through a process called Access Register Translation (ART) using control registers 2, 5, and 8. The home ASCE is in the register of control 13.
[0029] An embodiment of a computing environment for incorporating and using one or more aspects of the transactional unit described here is described with reference to Figure 1.
[0030] Referring to Figure 1, in an example, computing environment 100 is based on z/Architecture, offered by International Business Machines (IBM®) Corporation, Armonk, New York. z/Architecture is described in an IBM publication entitled "z/Architecture - Principles of Operation", Publication No. SA22-7932-08, 9th Edition, August 2010.
[0031] Z/ARCHITECTURE, IBM and Z/OS and Z/VM (cited below) are registered trademarks of International Business Machines Corporation, Armonk, New York. Other names used herein may be trademarks, registered trademarks or product names of International Business Machines Corporation or other companies.
[0032] As an example, computing environment 100 includes a central processor complex (CPC) 102 coupled to one or more input/output (I/O) devices 106 via one or more units controller 108. The central processor complex 102 includes, for example, one or more central processors 110, one or more partitions 112 (e.g., logical partitions (LPs)), a logical partition hypervisor 114, and a subsystem input/output 115, each of which is described below.
[0033] Central processors 110 are committed physical processor resources for 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 committed to the partition. The logical processors of a particular partition 112 may be dedicated to the partition such that the underlying processor resource 110 is reserved for this partition; or shared with another partition, so that the underlying processor resource is potentially available to another partition.
[0034] A logical partition functions as a separate system and has one or more applications and optionally a resident operating system, which may differ 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 partitions 112 are managed by a logical partition hypervisor 114, which is implemented by firmware running on processors 110. As used herein, firmware includes, for example, processor microcode and/or milcode. It includes, for example, the hardware level instructions and/or data structures used in implementing the higher level machine code. In one embodiment, it includes, for example, proprietary code that is normally distributed as microcode that includes trusted software or microcode specific to the underlying hardware and controls operating system access to system hardware.
The logical partitions and the logical partition hypervisor comprise one or more programs that reside in respective central memory partitions associated with 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.
[0036] Input/output subsystem 115 directs the flow of information between input/output devices 106 and main memory (also known as primary memory). It is coupled to the central processing complex in that it can be part of the central processing complex or separate from it. 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 allow communications, the I/O subsystem employs I/O communications adapters. There are multiple types of communication adapters including, for example, channels, I/O adapters, PCI cards, Ethernet cards, Small Computer Memory Interface (SCSI) cards, etc. In the specific example described here, the I/O communication adapters are channels and therefore the I/O subsystem is referred to here as a channel subsystem. However, this is just an example. Other types of I/O subsystems can be used.
[0037] 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.
[0038] 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.
[0039] According to one or more aspects, the transactional execution unit is an enhanced CPU that constitutes the means by which the CPU can execute a sequence of instructions - known as a transaction - that can access multiple locations in memory, including the update these locations. As noted by other CPUs and the I/O subsystem, the transaction is (a) completed in full as a single atomic operation or (b) aborted, potentially leaving no evidence that it has been executed (except for certain conditions described here). Thus, a successfully completed transaction can update multiple locations in memory without any special locks that are needed in the classic multiprocessing model.
[0040] The transactional execution unit includes, for example, one or more controls; one or more instructions; transactional processing, including restricted and unrestricted execution; and abortion processing, each of which is further described below.
[0041] In one embodiment, three special purpose controls, including a transaction abort Program Status Word (PSW), a Transaction Diagnostic Block (TDB) address, and a transaction grouping depth; five bits of control register; and six general instructions, including START TRANSACTION (restricted and unrestricted), END TRANSACTION, EXTRACT TRANSACTION BLOCK DEPTH, ABORT TRANSACTION, and NON TRANSACTIONAL MEMORY, are used to control the transactional execution unit. When the unit is installed, it is installed, for example, on all CPUs in the configuration. A unit indication, bit 73 in an implementation, when one, indicates that the transactional execution unit is installed.
[0042] When the transactional execution unit is installed, the configuration constitutes an unrestricted transactional execution unit and, optionally, a restricted transactional execution unit, each of which is described below. When unit indications 50 and 73, as examples, are both one, the restricted transaction execution unit is installed. Both unit indications are stored in memory at specified locations.
[0043] As used here, the statement name START TRANSACTION refers to statements that have the mnemonics TBEGIN (Start Transaction for a non-restricted transaction) and TBEGINC (Start Transaction for a restricted transaction). Discussions relating to a specific instruction are indicated by the name of the instruction, followed by the mnemonic in parentheses or square brackets, or simply by the mnemonic.
[0044] One embodiment of a format of a START TRANSACTION (TBEGIN) instruction is shown in Figures 2A-2B. As an example, a TBEGIN 200 instruction includes an opcode field 202 that includes an opcode that specifies an unrestricted transaction start operation; a base field (B1) 204; a displacement field (D1) 206; and an immediate field (E) 208. When field B1 is nonzero, the contents of the general register specified by B1 204 are added to D1 206 to obtain the first operand address.
[0045] When field B1 is non-zero, the following applies:
[0046] • When the transaction grouping depth is initially zero, the first operand address designates the location of the 256-byte transaction diagnostic block, termed the TDB specified by TBEGIN (further described below) 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 mode or home space mode, the first operand address designates a location in the secondary or home address space, respectively. When DAT is disabled, the transaction diagnostic block (TDB) address designates a location in real memory.
[0047] Memory accessibility for the first operand is determined. If accessible, the logical address of the operand is placed in the address of the transaction diagnostic block (TDBA) and the TDBA is valid.
[0048] • When the CPU is already in the unrestricted transactional execution mode, the TDBA is not modified and it cannot be predicted whether the first operand is tested for accessibility.
[0049] When field B1 is zero, no access exception is detected for the first operand and, for the outermost TBEGIN instruction, the TDBA is invalid.
[0050] The bits of the I2 field are defined as follows, in an example:
[0051] General Register Save Mask (GRSM) 210 (Figure 2B): Bits 0-7 of the I2 field contain the general register save mask (GRSM). Each bit of GRSM represents an odd-even 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 register pair is saved in a template-dependent location that is not directly accessible by the program.
[0052] If the transaction is aborted, the saved register pairs are restored to their contents when the outermost TBEGIN instruction was executed. The contents of all other general (unsaved) registers are not restored when a transaction is aborted.
[0053] The general register save mask is ignored in all TBEGINs except the outermost one.
[0054] Allow Modification by AR (A) 212: Control A, bit 12 of field I2, controls whether the transaction is allowed to modify an access register. The control allow modification by effective AR is the logical AND logic of control A in the TBEGIN instruction for the current grouping level and for all external levels.
[0055] If effective control A is zero, the transaction will be aborted with abort code 11 (restricted instruction) if an attempt is made to modify any access register. If effective A control is one, the transaction will not be aborted if an access register is modified (absence of any abort condition).
[0056] Allow Floating Point Operation (F) 214: Control F, bit 13 of field I2, controls whether the transaction is allowed to execute specific floating point instructions. The effective floating-point operation control is the AND logic of the F control in the TBEGIN instruction for the current grouping level and for all external levels.
[0057] If the effective F control is zero, then (a) the transaction will be aborted with abort 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 program exception condition by data exception. If the effective F control is one, then (a) the transaction will not be aborted if an attempt is made to execute a floating point instruction (absence of any other abort condition) and (b) the DXC in the FPCR can be configured by a program exception condition by data exception.
[0058] Program Interrupt Filter Control (PIFC) 216: Bits 14-15 of the I2 field are the program interrupt filter control (PIFC). PIFC 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 transactional execution mode result in an interrupt .
[0059] The effective PIFC is the highest PIFC value in the TBEGIN instruction for the current grouping level and for all external levels. When the effective PIFC is zero, all program exception conditions result in an interrupt. When the effective PIFC is one, program exception conditions that have 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 transactional execution and whether the operating system needs to see the interruption). When the effective PIFC is two, program exception conditions that have a transactional execution class of 1 result in an interrupt. A PIFC of 3 is reserved.
[0060] Bits 8-11 of the I2 field (bits 40-43 of the instructions) are reserved and must contain zeros; otherwise, the program may not work compatibly in the future.
[0061] One embodiment of a format of a restricted Start Transaction (TBEGINC) instruction is described with reference to Figures 3A-3B. In one example, TBEGINC 300 includes an opcode field 302 that includes an opcode that specifies a restricted transaction start 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 to D1 306 to obtain the first operand address. However, with the restricted transaction start instruction, the first operand address is not used to access memory. Instead, the B1 field of the instruction includes zeros; otherwise, a specification exception is recognized.
[0062] In one embodiment, the I2 field includes several controls, an example of which is represented in Figure 3B.
[0063] The bits of the I2 field are defined as follows in an example:
[0064] General Register Save Mask (GRSM) 310: Bits 0-7 of the I2 field contain the General Register Save Mask (GRSM). Each bit of GRSM represents an odd-even 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 template-dependent location that is not directly accessible by the program.
[0065] If the transaction is aborted, the saved register pairs are restored to their contents when the outermost START TRANSACTION instruction was executed. The contents of all other general (unsaved) registers are not restored when a restricted transaction is aborted.
[0066] When TBEGINC is used to continue execution in non-constrained transaction execution mode, the general register save mask is ignored.
[0067] Allow Modification by AR (A) 312: Control A, bit 12 of field I2, controls whether the transaction is allowed to modify an access register. The effective control to allow modification by AR is the AND logic of control A in the TBEGINC instruction for the current grouping level and for any external TBEGIN or TBEGINC instructions.
[0068] If effective control A is zero, the transaction will be aborted with abort code 11 (restricted instruction) if an attempt is made to modify any access register. If effective A control is one, the transaction will not be aborted if an access register is modified (absence of any other abort condition).
[0069] Bits 8-11 and 13-15 of the I2 field (bits 40-43 and 45-47 of the instructions) are reserved and must contain zeros.
[0070] The end of a Start Transaction instruction is specified by a END TRANSACTION (TEND) instruction, the format of which is depicted in Figure 4. As an example, a TEND 400 instruction includes an opcode field 402 that includes a code of operation that specifies an operation to terminate transaction.
[0071] A number of terms are used in relation to the transactional execution unit and therefore, just for convenience, a list of terms is provided below in alphabetical order. In one embodiment, these terms have the following definition:
[0072] Abort: A transaction is aborted when it ends before a END TRANSACTION statement that results in a zero transaction wrap depth. When a transaction is aborted, the following occurs, in one embodiment:
[0073] • Transactional memory accesses made by any and all levels of the transaction are discarded (ie, uncommitted).
[0074] • Non-transactional memory accesses made by any and all levels of the transaction are committed.
[0075] • The registers designated by the general register save mask (GRSM) of the outermost START TRANSACTION instruction are restored to their contents before transactional execution (that is, to their contents in the outermost START TRANSACTION instruction execution). General registers not designated by the general register save mask of the outermost START TRANSACTION statement are not restored.
[0076] • The access registers, floating point registers and floating point control register are not reset. Any changes made to these registers during transaction execution are retained when the transaction is aborted.
[0077] A transaction can be aborted due to a variety of reasons, including attempted execution of a restricted instruction, attempted modification of a restricted resource, transaction conflict, exceeding multiple CPU resources, any interpretation interception condition, and execution, any interrupt, an ABORT TRANSACTION statement, and other reasons. A transaction abort code provides specific reasons why a transaction may be aborted.
[0078] An example of a format of an ABORT TRANSACTION (TABORT) instruction is described with reference to Figure 5. As an example, a TABORT 500 instruction includes an operation code field 502 that includes an operation code that specifies an operation of transaction abortion; a base field (B2) 504; and a shift field (D2) 506. When field B2 is non-zero, the contents of the general register specified by B2 504 are added to D2 506 to obtain a second operand address; otherwise, the second operand address is formed solely from field D2 and field B2 is ignored. The second operand address is not used to address data; instead, the address forms the transaction abort code which 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 31-bit addressing mode, bits 0-32 are set to zeros.
[0079] Commit: Upon completion of an outermost END TRANSACTION instruction, the CPU commits the memory accesses made by the transaction (that is, the outermost transition and grouped levels) so that they are visible to other CPUs and the I/O subsystem. As noted by other CPUs and the I/O subsystem, all memory fetch and write accesses made by all grouped levels of the transaction appear as a single simultaneous operation when the commit occurs.
[0080] The contents of the general registers, access registers, floating point registers and the floating point control register are not modified by the commit process. Any changes made to these registers during transaction execution are retained when transactional memories are committed.
[0081] Conflict: A transactional access made by a CPU conflict with (a) a transactional access or non-transactional access made by another CPU or (b) the non-transactional access made by the I/O subsystem, if both accesses are anywhere within the same cache line and one or more of the hits is memory.
[0082] A conflict can be detected by the speculative execution of instructions from a CPU, even if the conflict is not detected in the conceptual sequence.
[0083] Restricted Transaction: A restricted transaction is a transaction that runs in restricted transactional execution mode and is subject to the following limitations:
[0084] • A subset of the general instructions is available.
[0085] • A limited number of instructions can be executed.
[0086] • A limited number of memory operand locations can be accessed.
[0087] • The transaction is limited to a single grouping level.
[0088] In the absence of repeated interrupts or conflicts with other CPUs or the I/O subsystem, a constrained transaction eventually completes, so a routine to handle an abort is not needed. Restricted transactions are described in detail below.
[0089] When a BEGIN CONSTRAINED TRANSACTION (TBEGINC) instruction is executed while the CPU is already in non-constrained transaction execution mode, execution continues as a bundled non-constrained transaction.
[0090] Restricted Transactional Execution Mode: When the transaction wrapping 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 pooling depth is one.
[0091] Wrapped Transaction: When the START TRANSACTION instruction is issued while the CPU is in non-constrained transactional execution mode, the transaction is wrapped.
[0092] The transactional execution unit uses a model called flat grouping. In flat cluster mode, memory made by an internal transaction is not observable by other CPUs and the I/O subsystem until the outermost transaction commits its memory. Likewise, if a transaction is aborted, all merged transactions are aborted and all transactional memories of all merged transactions are discarded.
[0093] An example of grouped transactions is represented in Figure 6. As shown, a first TBEGIN 600 starts an outermost transaction 601, TBEGIN 602 starts a first grouped transaction and TBEGIN 604 starts a second grouped transaction. In this example, TBEGIN 604 and TEND 606 define an innermost transaction 608. When TEND 610 is executed, transactional memories are committed 612 for the outermost transaction and all inner transactions.
[0094] Unrestricted Transaction: An unrestricted transaction is a transaction that runs in unrestricted transactional execution mode. Although an unconstrained transaction is not constrained in the way a constrained transaction is, it can still be aborted due to a variety of causes.
[0095] 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 wrapping depth can range from one to the maximum transaction wrapping depth.
[0096] Non-Transactional Access: Non-transactional accesses are accesses to the memory operand made by the CPU when it is not in transactional execution mode (that is, classic memory accesses outside of a transaction). Furthermore, the accesses made by the I/O subsystem are non-transactional accesses. Additionally, the NON TRANSACTIONAL MEMORY instruction can be used to cause a non-transactional memory access while the CPU is in non-restricted transactional execution mode.
[0097] One embodiment of a format of a NON TRANSACTIONAL MEMORY instruction is described with reference to Figure 7. As an example, a NON TRANSACTIONAL MEMORY 700 instruction includes a plurality of opcode fields 702a, 702b that specify an opcode which designates a non-transactional memory operation; a register field (R1) 704 that specifies a register whose contents are called the first operand; an index field (X2) 706; a base field (B2) 708; a first displacement 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 contents of fields DH2 and DL2 to form the second operand address. When one or both fields X2 or B2 are zero, the corresponding register does not participate in the addition.
[0098] The first 64-bit operand remains unchanged non-transactionally in the second operand location.
[0099] The offset, formed by the concatenation of the DH2 and DL2 fields, is treated as a 20-bit signed binary integer.
[0100] The second operand must be aligned on a doubleword boundary; otherwise, the specification exception is recognized and the operation is suppressed.
[0101] External/Most External Transaction: A transaction with a smaller number transaction grouping depth is an external transaction. A transaction with a transaction grouping depth value of one is the outermost transaction.
[0102] An outermost START TRANSACTION statement is one that is executed when the transaction wrapping depth is initially zero. An outermost END TRANSACTION statement is one that causes the transaction wrapping depth to change from one to zero. A restricted transaction is the outermost transaction in this merger.
[0103] 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 the interrupt transactional class, the effective program interrupt filtering control of the START TRANSACTION instruction, and the transactional execution program interrupt filtering override in control register 0.
[0104] Transaction: A transaction includes memory operand accesses made and selected general registers changed while the CPU is in transaction execution mode. For an unrestricted transaction, memory operand accesses can include transactional accesses and non-transactional accesses. For a restricted transaction, memory operand accesses are limited to transactional accesses. As noted by other CPUs and the I/O subsystem, all accesses to the memory operand made by the CPU while in transaction execution mode appear as a single concurrent operation. If a transaction is aborted, transactional memory accesses are discarded and any registers designated by the general register save mask of the outermost START TRANSACTION instruction are restored to their contents prior to transactional execution.
[0105] Transactional Accesses: Transactional accesses are accesses to the memory operand made while the CPU is in transactional execution mode, with the exception of accesses made by the NON TRANSACTIONAL MEMORY instruction.
[0106] Transactional Execution Mode: The term transactional execution mode (also known as transactional execution mode) describes the common operation of unconstrained and constrained transactional execution modes. Thus, when the operation is described, the terms unrestricted and constrained are used to qualify the transactional execution mode.
[0107] When transaction wrapping depth is zero, the CPU is not in transactional execution mode (also called non-transactional execution mode).
[0108] As noted by the CPU, memory fetches and writes done in transactional execution mode are no different from those done while not in transactional execution mode.
[0109] In one embodiment of the z/Architecture, the transactional execution unit is under the control of bits 8-9 of control register 0, bits 61-63 of control register 2, the transaction cluster depth, the address of the transaction diagnostic block and the program status word (PSW) of abort transaction.
[0110] After an initial CPU reset, the contents of bit positions 8-9 of control register 0, bit positions 62-63 of control register 2, and the transaction grouping depth are set to zero. When transactional execution control, bit 8 of control register 0, is zero, the CPU cannot be placed in transactional execution mode.
[0111] More details on the various controls are described below.
[0112] As indicated, the transactional execution unit is controlled by two bits in control register zero and three bits in control register two. For example:
[0113] 0 Bit Control Register: The bit assignments are as follows in one embodiment:
[0114] Transactional Execution Control (TXC): Bit 8 of the zero control register is transactional execution control. This bit is a mechanism by which the control program (eg operating system) can indicate whether or not the transactional execution unit is usable by the program. Bit 8 must be one to successfully enter transactional execution mode.
[0115] When bit 8 of control register 0 is zero, attempting to execute the EXTRACT TRANSACTION BLOCK DEPTH, START TRANSACTION, and END TRANSACTION instructions results in a special operation execution.
[0116] One embodiment of a format of an EXTRACT TRANSACTION BUNDLE DEPTH instruction is described with reference to Figure 8. As an example, an EXTRACT TRANSACTION BUNDLE DEPTH 800 instruction includes an operation code field 802 that specifies a operation code that indicates the operation of extracting transaction pool depth; and an R1 register field 804 that designates a general register.
[0117] The current transaction grouping depth is placed in bits 48-63 of general register R1. Bits 0-31 of the register remain unchanged and bits 32-47 of the register are set to zero.
[0118] In another embodiment, the maximum transaction grouping depth is also placed in general register R1, such as in bits 16-31.
[0119] Transactional Execution Program Interrupt Filtering Override (PIFO): Bit 9 of the zero control register is the transactional execution program interrupt filtering override. This bit constitutes 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 actual program interrupt filtering control specified or implied by the START TRANSACTION statement.
[0120] 2-Bit Control Register: Assignments are as follows in one embodiment:
[0121] Transaction Diagnostic Scope (TDS): Bit 61 of control register 2 controls the applicability of transaction diagnostic control (TDC) in bits 6263 of register as follows:
[0122] TDSValue Meaning0 TDC applies regardless of whether theCPU is in trouble or supervisor state.1 TDC only applies when the CPU is in trouble state. When the CPU is in the supervisor state, processing is as if the TDC contains zero.
[0123] Transaction Diagnostic Control (TDC): Bits 62-63 of control register 2 are a 2-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:
[0124] TDCValue Meaning0 Normal operation; transactions are not aborted as a result of TDC.1 Abort each transaction in a random statement, but before executing the outermost END TRANSACTION statement. 2 Abort random transactions in a random statement.3 Reserved
[0125] When a transaction is aborted due to a TDC other than zero, one of the following situations can occur:
[0126] • Abort code is set to any of codes 7-11, 13-16 or 255, with the code value chosen randomly by the CPU; the condition code is set corresponding to the abort code. Abort codes are further described below.
[0127] • For an unrestricted transaction, the condition code is set to one. In this case, the abortion code is not applicable.
[0128] It depends on the model whether a TDC value of 1 is implemented. If not implemented, a value of 1 acts as if 2 were specified.
[0129] For a restricted transaction, a TDC value of 1 is treated as if a TDC value of 2 were specified.
[0130] If a TDC value of 3 is specified, the results are unpredictable.
[0131] Transaction Diagnostic Block Address (TDBA)
[0132] A valid transaction diagnostic block (TDBA) address is set from the first operand address of the outermost START TRANSACTION (TBEGIN) instruction when the B1 field of the instruction is non-zero. When the CPU is in primary space mode or access register mode, the TDBA designates a location in the primary address space. When the CPU is in secondary space mode or indoor space mode, the TDBA designates a location in the secondary or home address space, respectively. When DAT (Dynamic Address Translation) is disabled, TDBA assigns a location in real memory.
[0133] The TDBA is used by the CPU to find the transaction diagnostic block - named TDB specified by TBEGIN - if the transaction is later aborted. The rightmost three bits of the TDBA are zero, which means that the TDB specified by TBEGIN is on a doubleword boundary.
[0134] When the B1 field of an outermost START TRANSACTION (TBEGIN) instruction is zero, the transaction diagnostic block address is invalid and no TDB specified by TBEGIN is stored if the transaction is later aborted.
[0135] Abort Transaction PSW (TAPSW)
[0136] During START TRANSACTION (TBEGIN) instruction execution when the wrap depth is initially zero, the abort transaction PSW is set to the contents of the current PSW; and the PSW's abort transaction instruction address designates the next sequential instruction (ie, the instruction after the outermost TBEGIN). During execution of the restricted START TRANSACTION (TBEGINC) instruction when the wrap depth is initially zero, the abort transaction PSW is set to the contents of the current PSW, except that the instruction address of the abort transaction PSW designates the TBEGINC instruction (in instead of the next sequential instruction after TBEGINC).
[0137] When a transaction is aborted, the condition code in the PSW of abort transaction is replaced with a code that indicates the severity of the abort condition. Subsequently, if the transaction was aborted due to causes that do not result in an interrupt, the PSW is loaded from the abort transaction PSW; if the transaction was aborted due to causes that result in an interrupt, the abort transaction PSW is stored as the old interrupt PSW.
[0138] The Abort Transaction PSW is not changed during the execution of any internal START TRANSACTION statement.
[0139] Transaction Grouping Depth (TND)
[0140] Transaction wrapping depth is, for example, a 6-bit unsigned value that is incremented each time a START TRANSACTION instruction completes with condition code 0 and decremented each time a END TRANSACTION instruction completes . The transaction wrapping depth is reset to zero when a transaction is aborted or when the CPU restarts.
[0141] In one embodiment, a maximum TND of 15 is implemented.
[0142] In an implementation, when the CPU is in constrained transactional execution mode, the transaction pooling depth is one. Also, although the maximum TND can be represented as a 4-bit value, the TND is defined as a 16-bit value to facilitate its inspection in the transaction diagnostic block.
[0143] Transaction Diagnostic Block (TDB)
[0144] When a transaction is aborted, multiple state information can be saved in a transaction diagnostic block (TDB) as follows:1. TDB specified by TBEGIN: For an unrestricted transaction, when the B1 field of the outermost TBEGIN instruction is non-zero, the first operand address of the instruction designates a TDB specified by TBEGIN. This is a location specified by the application program that can be examined by the application abort handler.2. Program Interrupt (PI) TDB: If an unrestricted transaction is aborted due to an unfiltered program exception condition or if a restricted transaction is aborted due to any program exception condition (ie, any condition that result in a program interrupt being acknowledged), the PI-TDB is stored in locations in the prefix area. This is available for the operating system to inspect and log out any diagnostic reports it may provide.3. Intercept TDB: If the transaction is aborted due to any program exception condition that results in an interception (that is, the condition causes interpretive execution to terminate and control to return to the host program), a TDB is stored in a location specified in the state description block for the guest operating system.
[0145] The TDB specified by TBEGIN is only stored, in one embodiment, when the TDB address is valid (that is, when the B1 field of the TBEGIN instruction is non-zero).
[0146] For aborts due to unfiltered program exception conditions, only one of the PI-TDB or Trap TDB will be stored. So there can be zero, one or two TDBs stored for an abort.
[0147] More details on an example of each of the TDBs are described below:
[0148] TDB specified by TBEGIN: The 256-byte location specified by a valid transaction diagnostic block address. When the transaction diagnostic block address is valid, the TDB specified by TBEGIN is stored in a transaction abort. The TDB specified by TBEGIN is subject to all memory protection mechanisms that are in effect when executing the outermost START TRANSACTION statement. A PER (Program Event Record) memory change event for any part of the TDB specified by TBEGIN is detected during the execution of the outermost TBEGIN, not during transaction abort processing.
[0149] One purpose of PER is to aid in debugging programs. It allows the program to be alerted to the following types of events as examples:[0001] Successful execution of a branch instruction. The option is provided if an event only occurs when the branch target location is within the designated storage area.[0002] Search for an instruction from the designated storage area.[0003] Changing the contents of the designated storage area. The option is provided if an event only occurs when the storage area is within designated address spaces.[0004] Execution of a STORE statement USING ACTUAL ADDRESS.[0005] Execution of the END TRANSACTION statement.
[0150] The program can selectively specify that one or more of the above event types are acknowledged, except that the STORE USING REAL ADDRESS event can only be specified together with the memory change event. Information relating to a PER event is provided to the program via a program interrupt, with the cause of the interrupt being identified in the interrupt code.
[0151] When the transaction diagnostic block address is not valid, a TDB specified by TBEGIN is not stored.
[0152] TDB by Program Interrupt: Actual locations 6.144-6,399 (1800-18FF hex). The program interruption TDB is stored when a transaction is interrupted due to a program interruption. When a transaction is interrupted due to other causes, the contents of the TDB by program interruption are unpredictable.
[0153] Program interrupt TDB is not subject to any protection mechanism. Memory change PER events are not detected for the TDB by program interrupt when it is stored during a program interrupt.
[0154] Intercept TDB: The 256-byte actual host location specified by locations 488-495 of the state description. The intercept TDB is stored when an aborted transaction results in a guest program interrupt intercept (ie, intercept code 8). When a transaction is aborted due to other causes, the contents of the intercept TDB are unpredictable. Intercept TDB is not subject to any protection mechanism.
[0155] As illustrated in Figure 9, the fields of a transaction diagnostic block 900 are as follows in one embodiment:
[0156] Format 902: Byte 0 contains an indication of validity and format as follows:
[0157] Value Meaningi. The remaining TDB fields are unpredictable.ii. A Format 1 TDB, the remaining fields of which are described below.
[0158] 2-255 Reserved
[0159] A TDB whose format field is zero is said to be a null TDB.
[0160] Flags 904: Byte 1 contains multiple indications as follows:
[0161] Conflict Token Validity (CTV): When a transaction is aborted due to a memory fetch or write conflict (ie abort codes 9 or 10, respectively), bit 0 of byte 1 is a conflict token validity indication. When the CTV indication is one, the conflict token 910 in bytes 16-23 of the TDB contains the logical address at which the conflict was detected. When the CTV indication is zero, bytes 16, 23 of the TDB are unpredictable.
[0162] When a transaction is aborted for any reason other than a memory seek or write conflict, bit 0 of byte 1 is stored as zero.
[0163] Restricted Transaction Indication (CTI): When the CPU is in restricted transactional execution mode, bit 1 of byte 1 is set to one. When the CPU is in unconstrained transactional execution mode, bit 1 of byte 1 is set to zero.
[0164] Reserved: Bits 2-7 of byte 1 are reserved and stored as zeros.
[0165] Transaction Wrap Depth (TND) 906: Bytes 6-7 contain the transaction wrap depth when the transaction was aborted.
[0166] Transaction Abort Code (TAC) 908: Bytes 8-15 contain an unsigned 64-bit transaction abort code. Each code point indicates a reason for the transaction to be aborted.
[0167] It depends on the model whether transaction abort code is stored in the program interrupt TDB when a transaction is aborted due to conditions other than a program interrupt.
[0168] Conflict Token 910: For transactions that are aborted due to memory fetch or write conflicts (ie abort codes 9 and 10, respectively), bytes 16-23 contain the logical address of the location in the memory in which the conflict was detected. The conflict token is significant when the CTV bit, bit 0 of byte 1, is one.
[0169] When CTV bit is zero, bytes 16-23 are unpredictable.
[0170] Due to speculative execution by the CPU, the conflict token may designate a location in memory that is not necessarily accessed by the transaction's conceptual execution sequence.
[0171] Transaction Aborted Instruction Address (ATIA) 912: Bytes 24-31 contain an instruction address that identifies the instruction that was executing when an abort was detected. When a transaction is aborted due to abort codes 2, 5, 6, 11, 13 or 256 or greater or when a transaction is aborted due to abort codes 4 or 13 and the program exception condition is null, the ATIA points directly to the instruction being executed. When a transaction is aborted due to abort codes 4 or 12 and the program exception condition is not null, ATIA points to the instruction that was being executed.
[0172] When a transaction is aborted due to abort codes 7-10, 14-16 or 255, ATIA does not necessarily indicate the exact instruction that caused the abort, but may indicate an earlier or later instruction within the transaction.
[0173] If a transaction is aborted due to an instruction that is the target of an execution type instruction, ATIA identifies the execution type instruction by pointing to the instruction or passing it, depending on the abort code as described above . ATIA does not indicate the target of the execution type instruction.
[0174] 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.
[0175] It depends on the model whether the address of the aborted transaction instruction is stored in the program interrupt TDB when a transaction is aborted due to conditions other than a program interrupt.
[0176] When a transaction is aborted due to abort code 4 or 12 and the program exception condition is not null, ATIA will not point to the instruction that caused the abort. By subtracting the number of half-words indicated by the ATIA Interrupt Length Code (ILC), the statement causing the abort can be identified in conditions that are being suppressed or terminated or for non-PER events that are being completed . When a transaction is aborted due to a PER event and no other program exception conditions are present, ATIA is unpredictable.
[0177] When the transaction diagnostic block address is valid, the ILC can be examined from the Program Interrupt Identification (PHD) in bytes 36-39 of the TDB specified by TBEGIN. When filtering does not apply, the ILC can be examined in the PHD at location 140-143 in real memory.
[0178] Exception Access ID (EAID) 914: For transactions that are aborted due to certain filtered program exception conditions, byte 32 of the TDB specified by TBEGIN contains the exception access ID. In an example from z/Architecture, the format of the EAID and the cases for 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 Principles of Operation above incorporated by reference.
[0179] 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 by program interrupt.
[0180] This field is only stored in the TDB designated by the transaction diagnostic block address; otherwise, the field is reserved. EAID is stored only for controlled access list or DAT protection, ASCE type, page translation, region first translation, region second translation, region third translation, and segment translation program exception conditions.
[0181] Data Exception Code (DXC) 916: For transactions that are aborted due to program exception conditions by filtered data exception, byte 33 of the TDB specified by TBEGIN contains the data exception code. In an example from z/Architecture, the DXC format and the cases for which it is stored are the same as those described in actual location 147 when the exception condition results in an interruption, as described in Principles of Operation above incorporated by reference. In one example, location 147 includes DXC.
[0182] 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 by program interrupt.
[0183] This field is only stored in the TDB designated by the transaction diagnostic block address; otherwise, the field is reserved. DXC is only stored for data program exception conditions.
[0184] Program Interrupt Identification (PHD) 918: For transactions that are aborted due to filtered program interrupt conditions, bytes 36-39 of the TDB specified by TBEGIN contain the program exception identification. In an example from z/Architecture, the PHD format is the same as that described at actual locations 140-143 when the condition results in an interrupt (as described in Principles of Operation above incorporated by reference), except the length code instruction in bits 13-14 of the PHD corresponds to the instruction in which the exception condition was detected.
[0185] 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 by program interrupt.
[0186] This field is only stored in the TDB designated by the transaction diagnostic block address; otherwise, the field is reserved. Program interrupt identification is stored for program exception conditions only.
[0187] Translation Exception ID (TEID) 920: For transactions that are aborted due to one of the filtered program exception conditions below, bytes 40-47 of the TDB specified by TBEGIN contain the translation exception ID. The. Controlled access list or DATb protection. Type ASCEc. Translation of page First region translatione. Region second translationf. Third Region Translationg. Segment translation exception
[0188] In an example from z/Architecture, the format of the TEID is the same as that described in actual locations 168-175 when the condition results in an interrupt, as described in Principles of Operation above incorporated by reference.
[0189] 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 TDB by program interrupt.
[0190] This field is only stored in the TDB designated by the transaction diagnostic block address; otherwise, the field is reserved.
[0191] Break Event Address 922: For transactions that are aborted due to filtered program exception conditions, bytes 48-55 of the TDB specified by TBEGIN contain the break event address. In an example from z/Architecture, the format of the break event address is the same as that described in actual locations 272-279 when the condition results in an interruption, as described in Principles of Operation above incorporated by reference.
[0192] 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 by program interrupt.
[0193] This field is only stored in the TDB designated by the transaction diagnostic block address; otherwise, the field is reserved.
[0194] More details on burst events are described below.
[0195] In one embodiment of the z/Architecture, when the PER-3 unit is installed, it provides the program with the address of the last instruction that caused an interrupt in the sequential execution of the CPU. The Burst Event Address Register can be used as a debugging aid for wild branch detection. This unit 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 an interruption in the execution of the sequential instruction (that is, the instruction address in the PSW is substituted, rather than incremented by the instruction length), the address of this instruction is placed in the address register of break event. Whenever a program interruption occurs, whether or not PER is indicated, the current contents of the break event address register are recorded at locations 272-279 in real memory.
[0196] If the instruction causing the break event is the target of an execution type instruction (EXECUTE or EXECUTE RELATIVE LONG), then the instruction address used to fetch the execution type instruction is placed in the address register of break event.
[0197] In an implementation of z/Architecture, it is considered that a break event occurs whenever one of the following instructions causes 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, CLGIJ).
[0198] A break event is also considered to occur whenever one of the following instructions 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).
[0199] A crash event is not considered to occur as a result of a transaction abort (implicit or as a result of the ABORT TRANSACTION statement).
[0200] Model Dependent Diagnostic Information 924: Bytes 112-127 contain model dependent diagnostic information.
[0201] For all abort codes except 12 (filtered program interrupt), model dependent diagnostic information is saved in each TDB that is stored.
[0202] In one embodiment, the model dependent diagnostic information includes the following:[0001] Bytes 112-119 contain a 64-bit vector called transactional execution branch indications (TXBI). Each of the first 63 bits of the array indicates the results of executing a branch instruction while the CPU was in transactional execution mode as follows:
[0203] Value Meaningi. Instructions complete without branch.ii. Instructions completed with branch.
[0204] Bit 0 represents the result of the first of such branch instructions, bit 1 represents the result of the second of such branch instructions, and so on.
[0205] If fewer than 63 branch instructions were executed while the CPU was in transactional execution mode, the rightmost bits that do not match the branch instructions are set to zeros (including bit 63). When more than 63 branch instructions have been executed, bit 63 of the TXBI is set to one.
[0206] Bits in TXBI are defined by instructions that are capable of causing a burst event as listed above, except as follows:
[0207] - Any restricted instruction does not cause a bit to be set in the TXBI.
[0208] - For instructions, for example, from z/Architecture, when the M1 DE BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION, or BRANCH RELATIVE ON CONDITION LONG field is zero or when the R2 field of the following instructions is zero, it depends on the model if instruction execution causes a bit to be set in the TXBI. [0001] BRANCH AND LINK (BALR);BRANCH AND SAVE (BASR); BRANCH AND SAVE AND SET MODE (BASSM); BRANCH AND SET MODE (BSM); BRANCH ON CONDITION (BCR); e BRANCH ON COUNT (BCTR, BCTGR)[0002] For 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 position 0 of byte 127 is set to zero.[0003] For abort conditions that have been detected by the load/storage unit (LSU), the rightmost five bits of byte 127 contain an indication of the cause. For abort conditions that were not detected by the LSU, byte 127 is reserved.
[0209] General registers 930: Bytes 128-255 contain the contents of general registers 0 15 at the time the transaction was aborted. Registers are stored in ascending order, starting with general register 0 at bytes 128-135, general register 1 at bytes 136-143, and so on.
[0210] Reserved: All other fields are reserved. Unless otherwise noted, the content of reserved fields is unpredictable.
[0211] 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 the non-transactional memories.
[0212] A transaction can be aborted due to causes that are outside the scope of the immediate configuration in which it is executed. For example, transient events recognized by a hypervisor (such as LPAR or z/VM) can cause a transaction to be aborted.
[0213] The information provided in the transaction diagnostic block is for diagnostic purposes and is substantially correct. However, since an abort may have been caused by an event outside the scope of the immediate configuration, information such as the abort code or program interrupt identification may not accurately reflect conditions within the configuration and thus they should not be used in determining program action.
[0214] In addition to the diagnostic information saved in the TDB, when a transaction is aborted due to any data exception program exception condition and AFP register control, bit 45 of control register 0 and operation control effective floating point (F) are one, the data exception code (DXC) is placed in byte 2 of the floating point control register (FPCR), regardless of whether filtering applies to the exception condition of program. When a transaction is aborted and either or both of the AFP register control or effective floating point operation control is zero, the DXC is not placed in the FPCR.
[0215] In one embodiment, as indicated here, when the transactional execution unit is installed, the following general instructions are provided.[0001] EXTRACT TRANSACTION GROUP DEPTH [0002] NON TRANSACTION MEMORY[0003] ABORT TRANSACTION[0004] START TRANSACTION[0005] END TRANSACTION
[0216] When the CPU is in transactional execution mode, the attempt to execute certain instructions is restricted and causes the transaction to be aborted.
[0217] When issued in constrained transactional execution mode, the attempt to execute constrained instructions may also result in a program interrupt per transaction constraint or may result in continuing execution as if the transaction were not constrained.
[0218] In an example from z/Architecture, the restricted instructions include, as examples, the following unprivileged instructions: COMPARE AND SWAP AND STORE; MODIFY RUNTIME INSTRUMENTATION CONTROLS; PERFORM LOCKED OPERATION; PREFETCH DATA (RELATIVE LONG), when the code in field M1 is 6 or 7; STORE CHARACTERS UNDER MASK HIGH when field M3 is zero and the code in field R1 is 6 or 7; STORE FACILITY LIST EXTENDED; STORE RUNTIME INSTRUMENTATION CONTROLS; CALL SUPERVISOR; and TEST RUNTIME INSTRUMENTATION CONTROLS.
[0219] In the list above, COMPARE AND SWAP AND STORE and PERFORM LOCKED OPERATION are complex instructions that can be implemented more efficiently using basic instructions in TX mode. The cases for PREFETCH DATA and PREFETCH DATA RELATIVE LONG are eliminated because codes 6 and 7 free a row of cache, potentially requiring data commit before a transaction completes. SUPERVISOR CALL is restricted because it causes an interrupt (which causes a transaction to be aborted).
[0220] Under the conditions listed below, the following instructions are restricted:[0001] BRANCH AND LINK (BALR), BRANCH AND SAVE (BASR) and BRANCH AND SAVE AND SET MODE when the R2 field of the instruction is non-zero and the branch tracking is enabled.[0002] BRANCH AND SAVE AND SET MODE and BRANCH AND SET MODE when the R2 field is non-zero and tracking mode is enabled; SET ADDRESSING MODE when tracking mode is enabled.[0003] MONITOR CALL when a monitor event condition is acknowledged.
[0221] The above list includes instructions that can form trace entries. If these instructions are allowed to execute transactionally and form tracking entries, and the transaction is later aborted, the tracking table pointer in control register 12 would be advanced, but the memories in the tracking table would be discarded. This would leave an inconsistent gap in the tracking table; thus, instructions are restricted in cases where they form trace entries.
[0222] When the CPU is in transactional execution mode, it depends on the model whether the following instructions are restricted: 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.
[0223] Each of the above instructions is currently implemented by the hardware coprocessor, or was previously on the machine and is therefore considered restricted.
[0224] When the control allow modification by AR(A) effective is zero, the following instructions are restricted: COPY ACCESS; LOAD ACCESS MULTIPLE; LOAD ADDRESS EXTENDED; and SET ACCESS.
[0225] Each of the above instructions causes the contents of an access register to be modified. If control A in the START TRANSACTION statement is zero, the program has explicitly indicated that modification of the access register should not be allowed.
[0226] When effective floating point operation control (F) is zero, floating point instructions are restricted.
[0227] Under certain circumstances, the following instructions may be restricted: EXTRACT CPU TIME; EXTRACT PSW; STORE CLOCK; STORE CLOCK EXTENDED; and STORE CLOCK FAST.
[0228] Each of the above instructions is subject to an intercept control in the interpretive execution state description. If the hypervisor has set intercept control for these instructions, then their execution may be prolonged due to the hypervisor's implementation; therefore, they are considered restricted if an intercept occurs.
[0229] When an unrestricted attempt is aborted due to an attempt to execute a restricted instruction, the transaction abort code in the transaction diagnostic block is set to 11 (restricted instruction) and the condition code is set to 3 , except as follows: when an unrestricted transaction is aborted due to an attempt to execute an instruction which would otherwise result in a privileged operation exception, it is unpredictable if the abort code is set to 11 (instruction restricted) or 4 (unfiltered program interrupt resulting from recognition of program interrupt by privileged operation). When an unrestricted transaction is aborted due to an attempt to execute PREFETCH DATA (RELATIVE LONG) when the code in field M1 is 6 or 7 or STORE CHARACTERS UNDER MASK HIGH when field M3 is zero and the code in field R1 is 6 or 7, it is unpredictable whether the abort code is set to 11 (restricted instruction) or 16 (other cache). When an unrestricted transaction is aborted due to an attempt to execute MONITOR CALL, and both a monitor event condition and a specification exception condition are present, it is unpredictable whether the abort code is set to 11 or 4 or , if the program interrupt is filtered, 12.
[0230] Additional instructions may be restricted in a restricted transaction. Although these instructions are not currently defined as restricted in an unconstrained transaction, they may be restricted under certain circumstances in an unconstrained transaction on future processors.
[0231] Certain restricted instructions may be allowed in transactional execution mode on future processors. Therefore, the program must not rely on the transaction to be aborted due to an attempt to execute a restricted instruction. The ABORT TRANSACTION statement should be used to cause a transaction to be reliably aborted.
[0232] In an unconstrained transaction, the program must provide an alternative non-transactional code path to accommodate a transaction that is aborted due to a constrained instruction.
[0233] In operation, when transaction wrapping depth is zero, execution of the START TRANSACTION (TBEGIN) instruction that results in a zero condition code causes the CPU to enter non-constrained transactional execution mode. When the transaction wrapping depth is zero, execution of the START TRANSACTION (TBEGINC) instruction that results in a zero condition code causes the CPU to enter constrained transactional execution mode.
[0234] Except where explicitly stated otherwise, all rules that apply to non-transactional execution also apply to transactional execution. Below are additional features of processing while the CPU is in transactional execution mode.
[0235] When the CPU is in unconstrained transactional execution mode, execution of the START TRANSACTION instruction that results in a zero condition code causes the CPU to remain in unconstrained transactional execution mode.
[0236] As noted by the CPU, memory fetches and writes done in transactional execution mode are no different from those done while not in transactional execution mode. As noted by other CPUs and the I/O subsystem, all memory operand accesses made while a CPU is in transactional execution mode appear as a single concurrent block access. That is, accesses to all bytes within a half word, word, double word, or quad word are specified to appear to be concurrent within the block, as observed by other CPUs and I/O programs (eg, channel). The half word, word, keyword or quad word is spoken in this section as a block. When a fetch type reference is specified to appear to be concurrent within a block, no memory access to the block by another CPU or I/O program is allowed for as long as the bytes contained in the block are being fetched. When a memory-type reference is specified to appear to be concurrent within a block, no access to the block, either fetching or writing to memory, is allowed by another CPU or I/O program for as long as the bytes within the block are being written to memory.
[0237] Instruction memory accesses and DAT and ART table lookups (Access Register Table) follow non-transactional rules.
[0238] The CPU exits transactional execution mode normally via a END TRANSACTION instruction which causes the transaction wrapping depth to change to zero, in which case the transaction completes.
[0239] When the CPU exits transactional execution mode by completing a END TRANSACTION instruction, all memory writes made in transactional execution mode are committed; that is, memory writes appear to occur as a single concurrent operation within a block, as observed by other CPUs and the I/O subsystem.
[0240] A transaction may be aborted implicitly for a variety of causes or may be aborted explicitly by the ABORT TRANSACTION statement. Possible exemplary causes for aborting a transaction, the corresponding abort code and the condition code that is placed in the abort transaction PSW are described below.
[0241] External Interrupt: Transaction abort code is set to 2 and condition code in transaction abort PSW is set to 2. Transaction abort PSW is stored as external old PSW as part of external interrupt processing .
[0242] 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 PSW of abort transaction is defined specifically for program interrupt code. The transaction abort PSW is stored as the old program PSW as part of program interrupt processing.
[0243] A statement which would otherwise result in a transaction aborting due to an operation exception may produce alternative results: for an unrestricted transaction, the transaction may instead abort with abort code 11 (restricted instruction); for a constrained transaction, a transaction-constrained program interrupt may be recognized instead of the operation exception.
[0244] When a PER event (Program Event Record) is recognized together with any other unfiltered program exception condition, the condition code is set to 3.
[0245] Machine Check Abort: Transaction abort code is set to 5 and condition code in transaction abort PSW is set to 2. Transaction abort PSW is stored as old machine check PSW as part of machine check interrupt processing.
[0246] I/O abort: Transaction abort code is set to 6 and condition code in transaction abort PSW is set to 2. Transaction abort PSW is stored as old I/O PSW as part of I/O interrupt processing.
[0247] Overfetch: An overfetch condition is detected when the transaction tries to get more locations than the CPU supports. Transaction abort code is set to 7 and condition code is set to 2 or 3.
[0248] Memory Overflow: A memory overflow condition is detected when the transaction tries to store in more locations than the CPU supports. Transaction abort code is set to 8 and condition code is set to 2 or 3.
[0249] Allowing the condition code to be 2 or 3 in response to an abort from over-fetch or memory overflow allows the CPU to indicate potentially repeatable situations (eg, condition code 2 indicates that rerun transaction may be productive, while condition code 3 does not recommend rerun).
[0250] Fetch Conflict: A fetch conflict condition is detected when another CPU or I/O subsystem tries to store in a location that has been transactionally processed by this CPU. The transaction abort code is set to 9 and the condition code is set to 2.
[0251] Memory Conflict: A memory conflict condition is detected when another CPU or I/O subsystem tries to access a location that was written to memory during transactional execution by this CPU. The transaction abort code is set to 10 and the condition code is set to 2.
[0252] Restricted Instruction: When the CPU is in transactional execution mode, the execution attempt of a restricted instruction causes the transaction to be aborted. The transaction abort code is set to 11 and the condition code is set to 3.
[0253] When the CPU is in constrained transactional execution mode, it is unpredictable whether the attempt to execute a constrained instruction will result in a program interrupt due to transaction constraint or an abort due to a constrained instruction. The transaction is still aborted, but the abort code can indicate any cause.
[0254] Program Exception 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. O condition code is set to 3.
[0255] Wrap Depth Exceeded: Wrap depth exceeded condition is detected when the transaction wrap depth is at the maximum value allowed for the setting and a START TRANSACTION statement is executed. The transaction is stopped with a transaction abort code of 13 and the condition code is set to 3.
[0256] Cache Fetch Related Condition: A condition related to the storage locations obtained by the transaction is detected by the CPU's cache circuits. The transaction is aborted with a transaction abort code of 14 and the condition code is set to 2 or 3.
[0257] Cache Memory Related Condition: A condition related to memory locations written by the transaction is detected by the CPU's cache circuitry. The transaction is aborted with a transaction abort code of 15 and the condition code is set to 2 or 3.
[0258] Other Cache Condition: Another cache condition is detected by the CPU cache circuitry. The transaction is aborted with a transaction abort code of 16 and the condition code is set to 2 or 3.
[0259] During transactional execution, whether the CPU accesses memory instructions or operands using different logical addresses that are mapped to the same absolute address, it depends on the model whether the transaction is aborted. 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.
[0260] Miscellaneous Conditions: A miscellaneous condition is any other condition recognized by the CPU that causes the transaction to be aborted. The transaction abort code is set to 255 and the condition code is set to 2 or 3.
[0261] When multiple configurations are running on the same machine (eg logical partitions or virtual machines), a transaction may be aborted due to an external machine check or an I/O interrupt that occurred in a different configuration.
[0262] Although examples are provided above, other causes for aborting a transaction with corresponding abort codes and condition codes can be provided. For example, a cause might be a Restart Abort, where the transaction abort code is set to 1 and the condition code in the transaction abort PSW is set to 2. The transaction abort PSW is stored as the transaction PSW old reboot as a part of the reboot process. As an additional example, a cause could be a Call by Supervisor condition, in which the abort code is set to 3 and the condition code in the PSW of abort transaction is set to 3. Additional or different examples are also possible.
[0263] Notes:1. The miscellaneous condition can result from any of the following:[0002] Instructions, such as, in z/Architecture, COMPARE AND REPLACE DAT TABLE ENTRY, COMPARE AND SWAP AND PURGE, INVALIDATE DAT TABLE ENTRY, INVALIDATE PAGE TABLE ENTRY, PERFORM FRAME MANAGEMENT FUNCTION where control NQ is zero and control SK is one, SET STORAGE KEY EXTENDED where control NQ is zero, performed by another CPU in the configuration; the condition code is set to 2.[0003] An operator function such as reset, restart or stop, or the equivalent SIGNAL PROCESSOR order is performed on the CPU.[0004] Any other condition not listed above; the condition code is set to 2 or 3.
[0264] 2. The location where memory seek and write conflicts are detected can be anywhere within the same cache line.
[0265] 3. Under certain conditions, the CPU may not be able to distinguish between similar abort conditions. For example, an excess of fetches or memory overflows may be indistinguishable from a conflict of fetching or writing to memory.
[0266] 4. Speculative execution of multiple instruction paths by the CPU may result in a transaction aborting due to deadlock or overflow conditions, even if such conditions do not occur in the conceptual sequence. While in constrained transactional execution mode, the CPU can temporarily inhibit speculative execution, allowing the attempt to complete without detecting such conflicts or overflows speculatively.
[0267] Executing an ABORT TRANSACTION statement causes the transaction to be aborted. The transaction abort code is set from the second operand address. The condition code is set to 2 or 3, depending on whether bit 63 of the second operand address is zero or one, respectively.
[0268] Figure 10 summarizes the sample abort codes stored in the transaction diagnostic block and the corresponding condition code (CC). The description in Figure 10 illustrates a specific implementation. Other implementations and value encodings are possible.
[0269] In one embodiment as mentioned above, the transactional unit allows for restricted transactions and unrestricted transactions, as well as processing associated with them. Initially, restricted transactions are discussed and then unrestricted transactions.
[0270] A restricted transaction runs in transactional mode without a fail-back path. This is a useful processing mode for compact functions. In the absence of repeated interrupts or conflicts with other CPUs or the I/O subsystem (that is, caused by conditions that will not allow the transaction to complete successfully), a constrained transaction will eventually complete; therefore, a routine for handling an abortion is neither required nor specified. For example, in the absence of a violation of an unaddressable condition (eg divide by 0); a condition that does not allow the transaction to complete (for example, a timer interrupt that does not allow an instruction to execute; a warm I/O; etc.); or a violation of a restriction or restriction associated with a restricted transaction, the transaction will eventually complete.
[0271] A restricted transaction is started by a BEGIN CONSTRAINED TRANSACTION (TBEGINC) statement when the transaction wrap depth is initially zero. A restricted transaction is subject to the following restrictions on an implementation.1. The transaction does not execute more than 32 statements, not including the restricted START TRANSACTION (TBEGINC) and END TRANSACTION statements. 2. All instructions in the transaction must be within 256 contiguous bytes of memory, including the restricted START TRANSACTION (TBEGINC) and END TRANSACTION instructions. In addition to the restricted instructions, the following restrictions apply to a restricted transaction.i. Instructions are limited to those referred to as General Instructions including, for example, add, subtract, multiply, divide, change, rotate, etc.ii. Branch instructions are limited to the following (instructions listed are from z/Architecture in an example):[0002] BRANCH RELATIVE ON CONDITION where M1 is non-zero and field RI2 contains a positive value.[0003] BRANCH RELATIVE ON CONDITION LONG where the M1 field is non-zero and the RI2 field contains a positive value that does not cause address overlap.[0004] COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE, and COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE, where field M3 is non-zero and field RI4 contains a positive value. (That is, only direct branches with non-zero branch masks).
[0272] c. Except for the END TRANSACTION instruction and instructions which cause a specified operand serialization, the instructions that cause a serialization function are restricted.
[0273] d. Instructions for store-and-storage (SS-) operations and open source store-and-storage (SSE-) operations are restricted.
[0274] e. All of the following general statements (which are from z/Architecture in this example) are restricted: CHECKSUM; CIPHER MESSAGE; CIPHER MESSAGE WITH CFB; CIPHER MESSAGE WITH CHAINING; CIPHER MESSAGE WITH COUNTER; CIPHER MESSAGE WITH OFB; COMPARE AND FORM CODEWORD; COMPARE LOGICAL LONG; COMPARE LOGICAL LONG EXTENDED; COMPARE LOGICAL LONG UNICODE; COMPARE LOGICAL STRING; COMPARE UNTIL SUBSTRING EQUAL; COMPRESSION CALL; COMPUTE INTERMEDIATE MESSAGE DIGEST; COMPUTE LAST MESSAGE DIGEST; COMPUTE MESSAGE AUTHENTICATION CODE; CONVERT TO BINARY; CONVERT TO DECIMAL; 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; DIVIDE; LOGICAL DIVIDE; SINGLE DIVIDE; EXECUTE; EXECUTE RELATIVE LONG; EXTRACT CACHE ATTRIBUTE; EXTRACT CPU TIME; EXTRACT PSW; EXTRACT TRANSACTION NESTING DEPTH; LOAD AND ADD; LOAD AND ADD LOGICAL; LOAD AND AND; LOAD AND EXCLUSIVE OR; LOAD AND OR; LOAD PAIR DISJOINT; LOAD PAIR FROM QUAD WORD; MONITOR CALL; MOVE LONG; MOVE LONG EXTENDED; MOVE LONG UNICODE; MOVE STRING; NON-TRANSACTIONAL STORE; PERFORM CRYPTOGRAPHIC COMPUTATION; PREFETCH DATE; PREFETCH DATA RELATIVE LONG; RUNTIME INSTRUMENTATION EMIT; RUNTIME INSTRUMENTATION NEXT; RUNTIME INSTRUMENTATION OFF; RUNTIME INSTRUMENTATION ON; SEARCH STRING; SEARCH; UNICODE STRING; SET ADDRESSING MODE; STORE CHARACTERS UNDER MASK HIGH, when field M3 is zero and the code in field R1 is 6 or 7; STORE CLOCK; STORE CLOCK EXTENDED; STORE CLOCK FAST; STORE FACILITY LIST EXTENDED; STORE PAIR TO QUAD WORD; TEST ADDRESSING MODE; TRANSACTION ABORT; TRANSACTION BEGIN (both TBEGIN and TBEGINC); TRANSLATE AND TEST EXTENDED; TRANSLATE AND TEST REVERSE EXTENDED; TRANSLATE EXTENDED; TRANSLATE ONE TO ONE; TRANSLATE ONE TO TWO TRANSLATE TWO TO ONE; and TRANSLATE TWO TO TWO.
[0275] 4. The transaction memory operands access no more than four words.
[0276] Note: LOAD ON CONDITION and STORE ON CONDITION are considered as reference storage regardless of the condition code. An octoword is, for example, a group of 32 consecutive bytes on a 32-byte boundary.
[0277] 5. The transaction running on this CPU, or stored by other CPUs or the I/O subsystem, does not access the memory operands in any 4-byte blocks that contain the 256 bytes of memory that begin with the START instruction RESTRICTED TRANSACTION (TBEGINC).
[0278] 6. The transaction does not access memory instructions or operands using different logical addresses that are mapped to the same absolute address.
[0279] 7. The operand references made by the transaction must be within a single double word, except for LOAD ACCESS MULTIPLE, LOAD MULTIPLE, LOAD MULTIPLE HIGH, STORE ACCESS MULTIPLE, STORE MULTIPLE and STORE MULTIPLE HIGH, the operand references must be within a single octoword.
[0280] If a constrained transaction violates any of the constraints 1-7 listed above, then (a) a transaction constraint program interrupt is acknowledged or (b) execution proceeds as if the transaction were not constrained, except that other constraint violations may still result in a transaction-constrained program interruption. It is unpredictable what action will be taken and the action taken may vary depending on the violation of the constraint.
[0281] In the absence of constraint violations, interrupts, or repeated conflicts with other CPUs or with the I/O subsystem, a constrained transaction will eventually complete, as described above.1. The chance of successfully completing a restricted transaction improves if the transaction meets the following criteria: i. Instructions issued are less than the maximum of 32.ii. Memory operand references are less than the maximum of 4 octowords.iii. Memory operand references are on the same line as cache.iv. Memory operand references to the same locations occur in the same order across all transactions.2. The completion of a restricted transaction is not necessarily ensured with success on its first execution. However, if a restricted transaction that does not violate any of the listed restrictions is aborted, the CPU employs circuitry to ensure that a repeated execution of the transaction is subsequently successful. Within a restricted transaction, the START TRANSACTION statement is a restricted statement, so a restricted transaction cannot be grouped.4. Violation of any of the restrictions 1-7 above by a constrained transaction may result in a program loop.5. The limitations of a constrained transaction are similar to those of a COMPARE-AND-SWAP loop. Due to potential interference from other CPUs and the I/O subsystem, there is no architectural guarantee that a COMPARE-AND-SWAP instruction will never complete with condition code 0. A constrained transaction can experience similar interference in the form of aborts by search or memory conflicts or hot interrupts.
[0282] The CPU employs equity algorithms to ensure that, in the absence of constraint violations, a constrained transaction is eventually completed.
[0283] 6. To determine the number of repeated iterations required to complete a restricted transaction, the program may employ a counter in a general register that is not subject to the general register save mask. An example is shown below.
[0284]
[0285] LH 1
[0286] 5.0
[0287] Detective counter zero.
[0288] oop
[0289] BEGINC
[0290] (0).X 'FE00'
[0291] Preserve GRs 0-13
[0292]
[0293] HI
[0294] 5.1
[0295] Increment counter
[0296]
[0297]. .
[0298]
[0299]
[0300]
[0301]. .
[0302] Restricted transaction execution code
[0303]
[0304]. .
[0305]
[0306]
[0307]
[0308] END
[0309]
[0310] End of transaction
[0311] Note that both registers 14 and 15 are not reset in this example. Also note that, on some models, the count in general register 15 can be low if the CPU detects the abort condition after the completion of the TBEGINC instruction, but before the completion of the AHI instruction.
[0312] As noted by the CPU, memory fetches and writes done in transactional execution mode are no different from those done while not in transactional execution mode.
[0313] In one embodiment, the user (ie, the one who creates the transaction) chooses whether or not a transaction should be restricted. One embodiment of the logic associated with constrained transactional processing, and in particular processing associated with a TBEGINC instruction, is described with reference to Figure 11. Execution of the TBEGINC instruction causes the CPU to enter the restricted transactional execution mode or remain in the mode. of unrestricted execution. The CPU (ie, the processor) that runs TBEGINC runs the logic in Figure 11.
[0314] Referring to Figure 11, based on the execution of a TBEGINC instruction, a serialization function is executed, STEP 1100. A serialization function or operation includes completing all conceptually prior memory accesses (and, for az/Architecture , as an example, reference bit and change bit settings) by the CPU, as observed by other CPUs and the I/O subsystem, before conceptually subsequent memory accesses (and reference bit and change bit settings) occur ). Serialization affects the fairness of all CPU accesses to memory and memory keys, except those associated with fetching ART table entries and DAT table entries.
[0315] When observed by a CPU in transactional execution mode, serialization works normally (as described above). When observed by other CPUs and the I/O subsystem, a serialization operation performed while a CPU is in transactional execution mode occurs when the CPU exits transactional execution mode as a result of a END TRANSACTION instruction that decreases the depth of grouping transactions to zero (normal termination) or as a result of transaction abort.
[0316] After performing the serialization, a determination is made whether an exception is recognized, REFER 1102. If so, the exception is handled, STEP 1104. For example, a special operation exception is recognized and the operation is suppressed if the transactional execution control, bit 8 of control register 0, is 0. As other examples, a specification exception is recognized and the operation is suppressed if field B1, bits 16 19 of the instruction, is not zero; an execution exception is recognized and the operation is suppressed if TBEGINC is the target of an execute instruction; and an operation exception is recognized and the operation is suppressed if the transactional execution unit is not installed in the configuration. If the CPU is already in constrained transactional execution mode, one program exception per exception with transaction restrictions is recognized and the operation is suppressed. Also, if the transaction wrapping depth, when incremented by 1, exceeds a model-dependent maximum transaction wrapping depth, the transaction is aborted with abort code 13. Additional or different exceptions can be recognized and handled.
[0317] However, if there is no exception, then a determination is made whether the transaction wrapping depth is zero, REFERENCE 1106. If the transaction wrapping depth is zero, the transaction diagnostic block address will be considered invalid, STEP 1108; the abort transaction PSW is defined from the contents of the current PSW, except that the instruction address of the abort transaction PSW designates the TBEGINC instruction, rather than the next sequential instruction, STEP 1110; and the contents of the general register pairs as designated by the general register save mask are saved in a template-dependent location that is not directly accessible by the program, STEP 1112. Also, the grouping depth is set to 1, STEP 1114. In addition, the effective value of the controls allow floating point operation (F) and program interrupt filtering (PIFC) are set to zero, STEP 1116. Also, the effective value of the control allow AR modification (A ), 12-bit field of the I2 field of the instruction is determined, STEP 1118. For example, the effective A control is the AND logic of the A control in the TBEGINC instruction for the current level and for all external TBEGIN instructions.
[0318] Returning to QUERY 1106, if the transaction wrapping depth is greater than zero, then the wrapping depth is incremented by 1, STEP 1120. Also, the effective value of the floating point operation (F) is set to zero and the effective value of the program interrupt filtering control (PIFC) is unchanged, STEP 1122. Processing continues with STEP 1118. In one embodiment, a successful start of the transaction results in the code of condition 0. This completes an embodiment of the logic associated with executing a TBEGINC instruction.
[0319] In one embodiment, the exception checking provided above can occur on multiple orders. A specific order for exception checking is as follows:
[0320] Exceptions with the same priority as the priority of program interrupt conditions for the general case.
[0321] Specification exception because field B1 contains a non-zero value.
[0322] Abortion due to exceeding transaction grouping depth.
[0323] In addition, the following applies to one or more embodiments:1. Registers designated to be saved by the general register save mask are only restored if the transaction is aborted and not when the transaction ends normally by END TRANSACTION. Only the GRSM-designated registers of the outermost START TRANSACTION statement are reset upon an abort.
[0324] Field I2 shall designate all pairs of registers that provide input values that are changed by a restricted transaction. Thus, if the transaction is aborted, the input register values will be restored to their original contents when the restricted transaction is executed again.
[0325] 2. On most models, improved performance can be achieved both at START TRANSACTION and when a transaction is aborted by specifying the minimum number of registers required to be saved and restored in the general register save mask.
[0326] 3. The following illustrates the results of the START TRANSACTION statement (TBEGIN and TBEGINC) based on the current transaction wrapping depth (TND) and, when TND is non-zero, if the CPU is in mode of restricted or unrestricted transactional execution.
[0327] Instruction
[0328] TND = 0
[0329] TBEGIN
[0330] Introduces restricted transactional execution no mode
[0331] TBEGINC
[0332] Introduces restricted transactional execution mode
[0333]Inst ruction
[0334] TND > 0
[0335]IN TBEG
[0336] NTX Mode
[0337] CTX Mode
[0338]
[0339] Continuous in unrestricted transactional execution mode
[0340] Transaction restriction exception
[0341]INC TBEG
[0342] Continues in run mode
[0343] Exception by transactional restriction not transactional restricted
[0344] Explanation:
[0345] CTX CPU is in restricted transactional execution mode
[0346] NTX CPU is in unrestricted transactional execution mode
[0347] TND Transaction wrap depth at instruction start
[0348] As described here, in one aspect, the completion of a restricted transaction is ensured by ensuring that it does not contain a condition that makes it unable to complete. To ensure that it completes, the processor (eg CPU) executing the transaction can take certain steps. For example, if a restricted transaction has an abort condition, the CPU might temporarily:1. inhibit out-of-order execution;2. prevent other CPUs from accessing conflicting locations in memory;3. induce random delays in abortion processing; and/or4. invoke other measures to facilitate completion.
[0349] To summarize, the processing of a restricted transaction is as follows:[0001] If it is already in restricted TX mode, a transaction restriction exception is recognized.[0002] If current TND (Transaction Grouping Depth) > 0, execution proceeds as if an unrestricted transaction
[0350] ° Effective F control set to zero
[0351] ° Effective PIFC is unchanged
[0352] ° Allows external unrestricted TX to call the service function that may or may not use restricted TX. [0001] If current TND = 0:
[0353] ° Transaction diagnostic block address is invalid
[0354] - No TDB specified by statement stored on abort
[0355] ° PSW to abort transaction set to TBEGINC address
[0356] - It is not the next sequential instruction
[0357] ° General register pairs are signed by GRSM saved in a model-dependent location not accessible by the program
[0358] ° Optionally formed transaction token (from operand D2). The transaction token is an identifier of the transaction. It can be the same as the memory operand address or another value.[0001] Effective A = TBEGINC A & any external A[0002] TND incremented
[0359] ° If TND changes from 0 to 1, the CPU enters restricted TX mode
[0360] ° Otherwise the CPU remains in unrestricted TX mode[0001] The instruction completes with CC0[0002] Exceptions:
[0361] ° Specification exception (PIC (Program Interrupt Code) 0006) if field B1 is different from zero
[0362] ° Special operation exception (PIC 0013 hex) if transactional execution control (CR0.8) is zero
[0363] ° Transaction restriction exception (PIC 0018hex) if issued in restricted TX mode
[0364] ° Operation exception (PIC 0001) if the restricted transactional execution unit is not installed
[0365] ° Execute exception (PIC 0003) if the instruction is the target of an execute instruction
[0366] ° Abort code 13 if the grouping depth is exceeded[0001] Conditions for abort in restricted transaction:
[0367] ° Abort PSW points to TBEGINC statement
[0368] - Not the next instruction
[0369] - Abort condition causes the entire TX to be reset. No failure path
[0370] ° CPU takes special measures to ensure successful completion when reboot
[0371] ° Assuming there is no persistent conflict, outage, or breach of constraint, eventual completion of a transaction is assured.[0001] Restriction violation:
[0372] ° PIC 0018 hex - indicates transaction restriction violation
[0373] As described above, in addition to restricted transaction processing, which is optional, in one embodiment, the transactional unit also allows non-constrained transaction processing. Further details about unconstrained transaction processing, and in particular processing associated with a TBEGIN instruction, are described with reference to Figure 12. Executing the TBEGIN instruction causes the CPU to enter or remain in unconstrained transactional execution mode. The CPU (ie, the processor) that runs TBEGIN runs the logic in Figure 12.
[0374] Referring to Figure 12, based on the execution of the TBEGIN instruction, a serialization function (described above), STEP 1200, is executed. After execution of the serialization, a determination is made whether an exception is acknowledged, QUERY 1202. If if so, then the exception is handled, STEP 1204. For example, a special operation exception is recognized and the operation is suppressed if transactional execution control, bit 8 of control register 0, is zero. In addition, a specification exception is recognized and the operation is suppressed if the program interrupt filtering control, bits 14-15 of the instruction field I2 contains the value 3; or the first operand address does not designate a doubleword boundary. An operation exception is recognized and the operation is suppressed if the transactional execution unit is not installed in the configuration; and an execution exception is recognized and the operation is suppressed if TBEGIN is targeted by an execution instruction. Also, if the CPU is in constrained transactional execution mode, a program exception per transaction constraint exception is recognized and the operation is suppressed. Also, if the transaction wrapping depth, when incremented by 1, exceeds a model-dependent maximum transaction wrapping depth, the transaction is aborted with abort code 13.
[0375] Also, when the B1 field of the instruction is nonzero and the CPU is not in transactional execution mode, that is, the transaction cluster depth is zero, then the accessibility of memory by the first operand is determined . If the first operand is not accessed, then an access exception is recognized and the operation is voided, suppressed, or terminated, depending on the specific access exception condition. In addition, any PER memory change event for the first operand is acknowledged. When the B1 field is non-zero and the CPU is already in transactional execution mode, it cannot be predicted whether memory accessibility by the first operand is determined and PER memory change events are detected for the first operand. If field B1 is zero, then the first operand will not be accessed.
[0376] In addition to exception checking, it is determined whether the CPU is in transactional execution mode (ie, transaction grouping depth is zero), QUERY 1206. If the CPU is not in transactional execution mode then the contents of the selected general register pairs are saved, STEP 1208. In particular, the contents of the general register pairs designated by the general register save mask are saved in a model-dependent location that is not directly accessible by the program.
[0377] In addition, a determination is made whether field B1 of the instruction is zero, QUERY 1210. If field B1 is not equal to zero, the first operand address is placed in the transaction diagnostic block address, STEP 1214 and the transaction diagnostic block address is valid. In addition, the transaction abort PSW is defined from the contents of the current PSW, STEP 1216. The transaction abort PSW instruction address designates the next sequential instruction (ie, the instruction after the outermost TBEGIN).
[0378] In addition, the effective value of the control allow modification of AR (A) is determined, bit 12 of the I2 field of the instruction, STEP 1218. The effective control A is the AND logic of control A in the TBEGIN instruction for level current and for all external levels. In addition, an effective value of the floating point operation control (F), bit 13 of the instruction's I2 field, is discarded, STEP 1220. The effective F control is the AND logic of the F control in the TBEGIN instruction for the current level and for all external levels. In addition, an effective value of the program interrupt filtering control (PIFC), bits 14-15 of the instruction's I2 field, is determined, STEP 1222. The effective PIFC value is the highest value in the TBEGIN instruction for the current level and for all external levels.
[0379] In addition, a value of one is added to the transaction wrapping depth, STEP 1224, and the instruction completes with configuration condition code 0, STEP 1226. If the transaction wrapping depth changes from zero to one, the CPU enters restricted transactional execution mode; otherwise, the CPU remains in unconstrained transactional execution mode.
[0380] Returning to QUERY 1210, if B1 is equal to zero, the transaction diagnostic block address is invalid, STEP 1211 and processing continues with STEP 1218. Likewise, if the CPU is in transactional execution mode, CONSULT 1206, processing continues with STEP 1218.
[0381] The resulting TBEGIN Execution Condition Code includes, for example: i. Successful transaction start iv. -
[0382] Program exceptions include, for example:[0001] Access (memory, first operand)[0002] Operation (transactional execution unit not installed)[0003] Special operation[0004] Specification[0005] Transaction constraint (by virtue of of restricted instructions)
[0383] In one embodiment, the exception checking provided above may occur in a different order. A specific order for exception checking is as follows:[0001] Exceptions with the same priority as the priority of program interrupt conditions for the general case.[0002] Specification exception due to reserved PIFC value. [0003] Specification exception because the first operand address is not on a doubleword boundary.[0004] Abortion due to exceeding the maximum transaction grouping depth.[0005] Condition code 0 due to normal completion.
[0384] Notes:1. When field B1 is non-zero, the following applies:[0002] An accessible transaction diagnostic block (TDB) must be provided when an outermost transition is initiated - even if the transaction is never aborted.[0003 ] Since it is unpredictable whether TDB accessibility is tested for wrapped transactions, an accessible TDB must be provided for any wrapped TBEGIN statement.[0004] The performance of any TBEGIN where the B1 field is nonzero and the performance of any abort processing that occurs for a transaction initiated by an external TBEGIN where the B1 field is nonzero may be slower than when the field B1 is zero.
[0385] 2. Registers designated to be saved by the general register save mask are restored, in one embodiment, if the transaction is aborted, not when the transaction normally ends by END TRANSACTION. Only the GRSM-designated registers of the outermost START TRANSACTION statement are reset upon an abort.
[0386] The I2 field must designate all pairs of registers that provide input values that are changed by the transaction. Thus, if the transaction is aborted, the input register values will be restored to their original contents when the abort manager is introduced.
[0387] 3. The START TRANSACTION (TBEGIN) statement must be followed by a conditional branch statement that will determine if the transaction started successfully.
[0388] 4. If a transaction is aborted due to conditions that do not result in an interrupt, the instructions designated by the PSW to abort transaction are given control (that is, the instructions that follow the outermost START TRANSACTION (TBEGIN)). In addition to the condition code defined by the START TRANSACTION (TBEGIN) statement, condition codes 13 are also defined when a transaction is aborted.
[0389] Therefore, the sequence of instructions following the outermost START TRANSACTION (TBEGIN) instruction must be able to accommodate all four condition codes, even though the TBEGIN instruction sets only code 0 in this example.
[0390] 5. On most models, improved performance can be achieved, both in START TRANSACTION and when a transaction is aborted, by specifying the minimum number of registers that need to be saved and restored in the general register save mask.
[0391] 6. While in unrestricted transactional execution mode, a program may call a service function that can change access registers or floating point registers (including the floating point control register). Although such a service routine can save changed registers on input and restore them on output, the transaction can be aborted before the routine's normal exit. If the calling program does not anticipate the preservation of these registers while the CPU is in unrestricted transactional execution mode, it may not be able to tolerate changing the registers service function.
[0392] To avoid inadvertently changing access registers while in unrestricted transactional execution mode, the program can set the allow AR modification control, bit 12 of field I2 of the START TRANSACTION instruction, to zero. Likewise, to avoid inadvertently changing the floating-point registers, the program can set the floating-point enable control, bit 13 of the I2 field of the TBEGIN instruction, to zero.
[0393] 7. Program exception conditions recognized during the execution of the START TRANSACTION (TBEGIN) instruction are subject to the effective program interrupt filtering control defined by any external TBEGIN instructions. Program exception conditions recognized during the execution of the outermost TBEGIN instruction are not subject to filtering.
[0394] 8. To update multiple locations in memory serially, conventional code sequences can employ a lock word (semaphore). If (a) transactional execution is used to implement updates from multiple locations in memory, (b) the program also provides a fall-back path to be invoked if the transaction is aborted and (c) the fall-back path " employs a lock word, so the transactional execution path must also test lock availability and, if the lock is not available, end the transaction via the END TRANSACTION statement and branch to the "fall-back" path . This ensures consistent access to serialized resources regardless of whether they are transactionally updated.
[0395] Alternatively, the program may abort if the lock is not available, however abort processing may be significantly slower than simply ending the transaction via TEND.
[0396] 9. If the effective program interrupt filtering control (PIFC) is greater than zero, the CPU filters most program interrupts by data exception. If the effective floating point operation control (F) is zero, the data exception code (DXC) will not be set in the floating point control register as a result of an abort due to an exception condition of program by data exception. In this scenario (filtering applies and effective F control is zero), the only place the DXC is inspected is in the TDB specified by TBEGIN. If the program's abort manager inspects the DXC in such a situation, general register B1 must be non-zero so that a valid transaction diagnostic block (TDBA) address is defined.
[0397] 10. If there is a PER memory change or zero address detection condition for the TDB specified by TBEGIN of the outermost TBEGIN instruction, and PER event suppression does not apply, the PER event is acknowledged during instruction execution, causing the transaction to abort immediately, regardless of whether or not any other abort conditions exist.
[0398] In one embodiment, the TBEGIN instruction implicitly sets the transaction abort address to the next sequential instruction after TBEGIN. This address is intended to be a conditional branching instruction which determines whether or not to branch depending on the condition code (CC). A successful TBEGIN sets CC0, while an aborted transaction sets CC1, CC2 or CC3.
[0399] In one embodiment, the TBEGIN instruction provides an optional memory operand that designates the address of a transaction diagnostic block (TDB) in which information is stored if the transaction is aborted.
[0400] In addition, it provides an immediate operand that includes the following:
[0401] - a general register save mask (GRSM) that indicates which pairs of general registers should be saved at the start of transactional execution and restored if the transaction is aborted;
[0402] - a bit (A) to allow transaction abort if transaction modifies access registers;
[0403] - a bit (F) to allow transaction abort if transaction attempts to execute floating point instructions; and
[0404] - a program interrupt filter control (PIFC) that allows individual transaction levels to bypass the actual presentation of a program interrupt if a transaction is aborted.
[0405] Controls A, F and PIFC can be different at multiple levels of grouping and restored to the previous level when the internal transaction levels are terminated.
[0406] In addition, TBEGIN (or, in another embodiment, TBEGINC) is used to form a transaction token. Optionally, the token can be combined with a token formed by the TEND statement. For each TBEGIN (or TBEGINC) instruction, as an example, a token is formed from the first operand address. This token can be formed independently if the base register is zero (unlike the TDB address definition which occurs only when the base register is non-zero). For each END TRANSACTION instruction executed with a nonzero base register, a similar token is formed from its memory operand. If the tokens do not match, a program exception can be recognized to alert the program to an unshared instruction.
[0407] A matching token is a mechanism designed to improve software reliability by ensuring that a TEND definition is properly paired with a TBEGIN (or TBEGINC). When a TBEGIN instruction is executed at a certain grouping level, a token is formed from the memory operand address that identifies this case of a transaction. When a corresponding TEND instruction is executed, a token is formed from the instruction's memory operand address and the CPU compares the starting token for the collation level with the ending token. If the tokens do not match, an exception condition is recognized. A template can implement token matching for only a certain number of levels of grouping (or for no level of grouping at all). The token may not involve all bits of the memory operand address, or the bits may be combined through hashing or other methods. A token can be formed by the TBEGIN instruction even if its memory operand is not accessed.
[0408] To summarize, processing an unrestricted transaction is as follows:[0001] If TND = 0:
[0409] ° If B1 Φ 0, transaction diagnostic block address defined from the first operand address.
[0410] ° PSW of abort transaction set to address of next sequential instruction.
[0411] ° Pairs of general registers designated by field I2 are saved in the template dependent location.
[0412] - Not directly accessible by the program.[0001] Calculated effective PIFC, A, & F commands
[0413] ° Effective A = TBEGIN A & any external A
[0414] ° Effective F = TBEGIN F & any external F
[0415] ° Effective PIFC = max (TBEGIN PIFC, any external PIFC)[0001] Transaction grouping depth(TND) incremented[0002] If TND changes from 0 to 1, the CPU enters transactional execution mode[0003] Set condition code to zero
[0416] ° When instruction after TBEGIN receives control:
[0417] - TBEGIN successfully indicated by CC0
[0418] - Aborted transaction indicated by nonzero CC[0001] Exceptions:
[0419] ° Abort code 13 if the grouping depth is exceeded
[0420] ° Access exception (one of several PICs) if field B1 is non-zero and memory operand cannot be accessed for a store operation
[0421] ° Execute exception (PIC 0003) if the TBEGIN instruction is the target of an execute instruction
[0422] ° Operation exception (PIC 0001) if transactional execution unit is not installed
[0423] ° PIC 0006 if
[0424] - PIFC is invalid (value of 3)
[0425] - Second operand address not aligned in double word
[0426] ° PIC 0013 hex if transactional execution control (CR0.8) is zero
[0427] As noted above, in an implementation, selected registers can be saved at the start of transactional execution and then restored in the event of a transaction abort. An embodiment of the logic associated with the save/restore selected registers operation in general is described with reference to Figure 13A. Other embodiments are then described with reference to Figure 13B. As an example, a processor is executing such logic.
[0428] Referring to Figure 13A, a determination is made about one or more selected registers to be saved, STEP 1300. In one example, this determination is made by checking the defined bits of a GRSM indicated by a START TRANSACTION instruction. However, in other embodiments, other techniques can be used to indicate selected registers to be saved. The contents of the selected registers are stored in a predefined location in memory which, in one embodiment, is not accessible by programs, STEP 1302.
[0429] Then, if there is an abort of a transaction associated with the registers, QUERY 1304, the selected registers are restored, STEP 1306. For example, the contents stored in the predefined location in memory are loaded into the appropriate registers.
[0430] In a particular embodiment, the registers to be stored are specified by an outermost START TRANSACTION statement, as described with reference to Figure 13B. In this embodiment, a START TRANSACTION instruction (e.g., received, fetched, etc.) is obtained by a processor, STEP 1350. A determination is made as to whether it is an outermost START TRANSACTION instruction, Query 1352. If the START instruction TRANSACTION is not started within another transaction and is therefore an outermost START TRANSACTION instruction, a determination is made using the GRSM of the instruction of the one or more registers to be saved, STEP 1354. In this example, the registers are general registers and , as above, they are saved by copying their contents, before using the registers (eg at the beginning of instruction execution), to a predefined location in memory, STEP 1356.
[0431] Going back to QUERY 1352, if it is not an outermost START TRANSACTION instruction, then the GRSM is ignored in this embodiment.
[0432] After saving any registers to be saved, transaction processing continues and, if the transaction is aborted, either because such specified transaction is aborted or, in this embodiment, an abort of an inner pooled transaction causes this transaction to be aborted , QUERY 1358, the selected registers are restored by copying the contents to the predefined location in memory for the registers, STEP 1360. This completes processing.
[0433] Embodiments to save/restore registers, such as general registers, on an abort (ie abnormal termination) are described above. When a transaction is aborted, transactional memories executed during transaction execution are discarded. However, unless otherwise specified, the contents of the general registers are not restored. The contents of the access registers and floating point context are also not restored, in an example, if a transaction is aborted. By not saving the registers unless the program specifically requires it, the processing speed of executing the outermost START TRANSACTION instruction is increased.
[0434] In one embodiment, the general registers specified by the program are saved during the execution of an outermost START TRANSACTION statement and these registers are restored if the transaction is aborted. In another embodiment, registers other than general registers, such as floating point registers and/or access registers, are saved and/or restored. In addition, individual general registers and/or groups of general registers can be saved/restored. Also, in one embodiment, a general-purpose register that specifies a bitmask is used to specify which registers to define.
[0435] In yet another embodiment, one or more of the save/restore operations are performed in transactional environments that implement non-flattened grouping. In such an environment, when a transaction within a transaction pool is aborted, the other transactions within the transaction pool may not be aborted. In such an environment, each grouping level has an indication of which registers should be saved and/or restored.
[0436] Provided above is an efficient means to update multiple and discontinuous objects in memory without classic (refined) serialization, such as locking, which offers the potential for significant multiprocessor performance improvement. That is, multiple discontinuous objects are updated without forcing a more refined memory access ordering that is provided by classical techniques such as locks and semaphores. Speculative execution is provided without an expensive recovery setup and restricted transactions are offered for simple, small-scale upgrades.
[0437] Transactional execution can be used in a variety of situations including, but not limited to, partial integration, speculative processing, and lock suppression. In particular, the partial region to be included in the executed path is superimposed on TBEGIN/TEND. TABORT can be included in it to reverse the state on a side output. For speculations, such as in Java, null checks on reference pointers can be delayed to loop edge using a transaction. If the pointer is null, the transaction can be safely aborted using TABORT, which is included in TBEGIN/TEND.
[0438] As for blocking suppression, an example of its use is described with reference to Figures 14A-14B and the code snippet provided below.
[0439] Figure 14A represents a doubly linked list 1400 of a plurality of row elements 1402a-1402d. A new row element 1402e must be inserted into the doubly linked list of row elements 1400. Each row element 1402a-1402e includes a forward pointer 1404a-1404e and a backward pointer 1406a-1406e. As shown in Figure 14B, to add row element 1402e between row elements 1402b and 1402c, (1) backward pointer 1406e is configured to point to row element 1402b, (2) forward pointer 1404e is configured to point to row element 1402c, (3) backward pointer 1406c is configured to point to row element 1402e, and (4) forward pointer 1404b is configured to point to row element 1402e.
[0440] An example code fragment corresponding to Figures 14A-14B is below: a. R1 - address of the new queue element to be inserted.b. R2 - insertion point address; new element is inserted before the element pointed to by R2.
[0441] EW
[0442] SING
[0443] EL, R1
[0444]
[0445] URR
[0446] SING
[0447] EL, R2
[0448]
[0449]
[0450] HI
[0451] 15, 10
[0452] Load repeat count.
[0453] OOP
[0454] BEGIN
[0455] DB, X'C000'
[0456] Start transaction(save GRs 0-3)
[0457]
[0458] NZ
[0459] BORNADO
[0460] Start transaction(save GRs 0-3)
[0461]
[0462] G
[0463] 3, CURR.BWD
[0464] Points to the previous element.
[0465] REV
[0466] SINg
[0467] EL, R3
[0468] Makes it addressable.
[0469]
[0470] TG
[0471] PREV.FWD
[0472] Updates previous forward pointer
[0473]
[0474] TG
[0475] 1, CURR.BWD
[0476] Update to current back pointer
[0477]
[0478] TG
[0479] 2, NEW.FWD
[0480] Update new forward pointer
[0481]
[0482] TG
[0483] 3, NEW.BWD
[0484] Updates new backhand.
[0485]
[0486] END
[0487] finish transaction
[0488]
[0489]
[0490] . .
[0491]
[0492]
[0493]
[0494] BORTED JO
[0495] BORTED JO
[0496] CC3: abort not retryable
[0497]
[0498] CT
[0499] 15, LOOP
[0500] Try transaction multiple times
[0501]
[0502]
[0503] THE RETRY
[0504] Unsuccessful after 10x; makes it harder
[0505] In one example, if the transaction is used for lock suppression, but the "fall-back" path uses a lock, the transaction must at least look up the lock word to see if it is available. The processor guarantees that the transaction will be aborted if another CPU accesses the lock non-transactionally.
[0506] As used here, memory, core memory, main memory, memory, and primary memory are used interchangeably unless otherwise indicated, implicitly by usage, or explicitly. Furthermore, although, in one embodiment, a transaction that is effectively delayed includes delaying committing transactional memories in main memory until a selected transaction completes, in another embodiment, effectively delaying a transaction includes providing transactional memory updates but maintaining the old values and restore memory to the old aborted values.
[0507] As will be appreciated by those skilled in the art, one or more aspects of the present invention may be embodied as a system, method or computer program product. Thus, one or more aspects of the present invention may take the form of an all-hardware embodiment, an all-software embodiment (including firmware, resident software, microcode, etc.) or an embodiment that combines the software and hardware aspects that they can all be generally referred to here as a "circuit", "module" or "system". In addition, one or more aspects of the present invention may take the form of a computer program product incorporated in one or more computer readable media having computer readable program code incorporated therein.
[0508] Any combination of one or more computer readable media may be used. The computer-readable medium may be a computer-readable storage medium. A computer-readable storage medium may 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 the foregoing. More specific examples (a non-exhaustive list) of computer readable storage media include the following: an electrical connection that has one or more wires, a portable computer floppy disk, a hard disk, a random access memory (RAM ), one read-only memory (in English, Read-Only Memory - ROM), one programmable and erasable read-only memory (in English, Erasable Programmable Read-Only Memory - EPROM or flash memory), one optical fiber, one memory portable compact disc (Compact Disc Read-Only Memory - CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the above. In the context of this document, a computer-readable storage medium can be any tangible medium that can contain or store a program for use by or in connection with a system, apparatus or device that executes an instruction.
[0509] Referring now to Figure 15, in one example, a computer program product 1500 includes, for example, one or more non-transient computer readable storage media 1502 for storing computer readable program code media or logic. 1504 therein to provide and facilitate one or more aspects of the present invention.
[0510] Program code embedded in a computer readable medium may be transmitted using an appropriate medium including, but not limited to, wireless devices, cables, fiber optic cables, RF, etc., or any suitable combination of the foregoing.
[0511] Computer program code for performing operations for one or more aspects of the present invention may be written in any combination of one or more programming languages, including an object-oriented programming language such as Java, Smalltalk, C++ or similar, and conventional procedural programming languages such as the "C" programming language, Assembler or similar programming languages. Program code can run entirely on the user's computer, partially on the user's computer as a standalone software package, partially on the user's computer, and partially 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 (Wide Area Network). - WAN), or the connection can be made to an external computer (eg over the Internet using an Internet Service Provider).
[0512] One or more aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions can be supplied to a general purpose computer processor, a special purpose computer or other programmable data processing apparatus to produce a machine such that the instructions which are executed through the processor of the computer or other programmable data processing apparatus, create means to implement the functions/acts specified in the block or blocks of the flowchart and/or block diagram.
[0513] These computer program instructions may also be stored on a computer readable medium that can control a computer, other programmable data processing apparatus or other devices to function in a particular way, so that the instructions stored on the medium computer readable produce an article of manufacture that includes instructions that implement the function/act specified in the block or block of the flowchart and/or block diagram.
[0514] 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 computer-implemented process, so that instructions that are executed on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the block or blocks of the flowchart and/or block diagram.
[0515] 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 of one or more aspects of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment or piece of code that comprises one or more executable instructions to implement the specified logical function(s). It should also be noted that, in some alternative embodiments, the functions indicated in the block may occur outside the order noted in the figures. For example, two blocks shown in succession can actually run substantially simultaneously or the blocks can sometimes run in reverse order, depending on the functionality involved. It should also be noted that each block of block diagrams and/or flowchart illustration, and combinations of blocks in block diagrams and/or flowchart illustration, can be implemented by special-purpose hardware-based systems that perform functions or specified acts or combinations of special purpose hardware and computer instructions.
[0516] In addition to the above, one or more aspects of the present invention may be provided, offered, deployed, managed, maintained, etc. by a service provider that offers management of customer environments. For example, the service provider may create, maintain, support, etc., computer code and/or a computer infrastructure that performs one or more aspects of the present invention for one or more customers. In return, 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 party companies.
[0517] In one aspect of the present invention, an application may be deployed to execute one or more aspects of the present invention. As an example, deploying an application comprises providing operable computer infrastructure to execute one or more aspects of the present invention.
[0518] As another aspect of the present invention, a computing infrastructure can be implemented comprising the integration of computer readable code into a computing system, wherein the code, in combination with the computing system, is capable of executing a or more aspects of the present invention.
[0519] As yet another aspect of the present invention, a process for the integration of computing infrastructure comprising the integration of computer readable code into a computer system can be provided. The computer system comprises a computer readable medium, wherein the computer readable medium comprises one or more aspects of the present invention. The code, in combination with the computer system, is capable of executing one or more aspects of the present invention.
[0520] Although several embodiments are described above, these are just examples. For example, computing environments of other architectures may incorporate and use one or more aspects of the present invention. Furthermore, although certain fields and/or bits are described, others can also be used. Also, some steps in flowcharts can be performed in parallel or in a different order. Many modifications and/or additions can be made without departing from the scope of the present invention.
[0521] In addition, other types of computing environments can benefit from one or more aspects of the present invention. As an example, a data processing system suitable for storing and/or executing program code is usable, which 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 the actual execution of program code, mass memory, and cache memory that allows temporary storage of at least some program code, so as to reduce the number of times the code must be retrieved from bulk memory during execution.[0001] Input/Output Devices (Input/Output - I/O) (including, but not limited to, keyboards, monitors, pointing devices, DASD, tape, CDs, DVDs, flash drives and other memory media, etc.) can be attached to the system 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 data processing systems or remote printers or storage devices through the intervention of private or public networks. Modems, cable modems and Ethernet cards are just some of the available types of network adapters.
[0522] Referring to Figure 16, representative components of a host computer system 5000 for implementing one or more aspects of the present invention are depicted. Representative host computer 5000 comprises one or more CPUs 5001 in communication with computer memory (i.e., core memory) 5002, as well as the I/O interfaces to storage media devices 5011 and networks 5010 to communicate with others. computers or SANs, and so on. The 5001 CPU supports an architecture that has a defined architected instruction and architected functionality. The CPU 5001 may have a translation access register (ART) 5012 that includes an ART Lookaside (ALB) buffer 5013 for selecting an address space to be used by dynamic address translation (DAT) 5003 for transforming program addresses ( virtual addresses) into real memory addresses. DAT generally includes a separate Translation Lookaside Buffer (TLB) 5007 for caching translations so that later accesses to the memory block of computer 5002 will not require address translation delay. Typically, a 5009 cache is employed between the 5002 computer memory and the 5001 processor. The 5009 cache can be hierarchical, having a large cache available to more than one CPU and smaller, faster (lower tier) caches between the large cache and each CPU. In some implementations, lower-level caches are split to provide separate lower-level caches for instruction fetching and data accesses. In one embodiment, for the TX unit, a transaction diagnostic block (TDB) 5100 and one or more buffers 5101 may be stored in one or more of cache 5009 and memory 5002. In one example, in TX mode, the data is initially stored in a TX buffer and when the TX mode ends (eg, external TEND), the buffered data is stored (committed) in memory, or if there is an abort, the buffered data is discarded.
[0523] 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 sent (with other instructions in some embodiments) for instruction execution unit or units 5008. Typically, several execution units 5008 are employed, for example, an arithmetic execution unit, a floating-point execution unit, and a branch instruction execution unit. The instruction is executed by the execution unit when accessing operands from specified instruction registers or memory as needed. If an operand is to be accessed (loaded or stored) from memory 5002, typically, the load/store unit 5005 processes the access under the control of the instruction being executed. Instructions can be executed in hardware circuits or in internal microcode (firmware) or by a combination of both.
[0524] In accordance with an aspect of the TX unit, the 5001 processor also includes a 5102 PSW (eg TX PSW and/or abort), a 5104 nesting depth, a 5106 TDBA, and one or more 5108 control registers .
[0525] As noted, a computer system includes information in local (or main) memory, as well as addressing, protection, and reference and recording register. Some aspects of addressing 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 converted to another type of address. Some of the main memories include permanently assigned storage locations. Main memory allows the system to quickly access directly addressable data storage. Both data and programs must be loaded into main memory (from input devices) before they can be processed.
[0526] Main memory can include one or more smaller, faster-access buffers, sometimes called caches. A cache is typically physically associated with a processor or an I/O processor. The effects, except for performance, of physical construction and use of distinct storage media are generally not observable by the program.
[0527] Separate caches can be maintained for instructions and data operands. Information within a cache is held in contiguous bytes on an integral boundary called a cache block or cache line (or line, for short). A template can provide an EXTRACT ATTRIBUTE FROM CACHE statement which returns the size of a cache row in bytes. A template can also provide PREFET DATA and PREFET DATA RELATIVELY LONG instructions that perform memory prefetching from the data or instruction cache or flushing data from the cache.
[0528] Memory is considered to be a long horizontal string of bits. For most operations, memory accesses are processed 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 memory is identified by a unique non-negative integer, which is the byte location address, or simply the byte address. Adjacent byte locations have consecutive addresses, starting with a left 0 and proceeding in a left-to-right sequence. Addresses are unsigned binary integers and are 24, 31, or 64 bits long.
[0529] Information is transmitted between memory and a CPU or channel subsystem one byte, or a group of bytes, at a time. Unless otherwise specified, for example in z/Architecture, a group of bytes in memory 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, for example in z/Architecture, bits are counted in a left-to-right sequence. In z/Architecture, the leftmost bits are often referred to as the "higher order" bits and the rightmost bits as the "lower order" bits. Bit numbers are not storage addresses, however. Only bytes can be addressed. To operate on individual bits of a byte in memory, the entire byte is accessed. Bits of a byte are numbered from 0 to 7, from left to right (for example, in z/Architecture) . Bits of an address can be numbered 8-31 or 40-63 for 24-bit addresses or 131 or 33-63 for 31-bit addresses; they are numbered 063 for 64-bit addresses. Within any other multi-byte fixed-length format, the bits making up the format are numbered consecutively starting from 0. For error detection purposes and preferably for correction, 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 store-operand field is implied by the opcode of an instruction, the field is said to have a fixed length, which can be one, two, four, eight, or sixteen bytes. Larger fields may be implied for some instructions. When the length of an operand storage field is not implied but 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 the information is placed in memory, only the contents of the byte locations that are included in the designated area are replaced, even though the width of the physical memory path may be greater than the length of the field to be stored.
[0530] Certain units of information must be over an integral limit in memory. A threshold 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 given given to 2, 4, 8, and 16 byte fields 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. A quad word is a group of 16 consecutive bytes on a 16-byte boundary. When storage addresses designate half words, words, double words and quad words, the binary representation of the address contains one, two, three, four or more trailing zero bits, respectively. Instructions must be over two-byte integral limits. The storage operands of most instructions do not have boundary alignment requirements.
[0531] In 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 obtained, regardless of whether the memory changes the instructions that are later fetched.
[0532] In one embodiment, the invention may be practiced by software (sometimes referred to as licensed internal code, firmware, microcode, milcode, picocode, and so on, any of which would be consistent with one or more aspects of the present. invention). Referring to Figure 10, software program code embodying one or more aspects of the present invention may be accessed by processor 5001 of host system 5000 from long-term storage media devices 5011, such as a CD drive. -ROM, tape drive 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 from computer memory 5002 or memory of one computer system over a network 5010 to other computer systems for use by users of those other systems.
[0533] 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 typically is paged from storage media device 5011 to relatively higher speed computer memory 5002, where it is available for processing by processor 5001. Techniques and Methods for Incorporating Software Program Code into Memory , in physical media and/or distribution 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 (RAM) modules, flash memory, compact discs (CDs), DVDs, magnetic tapes, and so on, is often said as a “computer program product.” The computer program product medium is typically read by a processing circuit, preferably in a computer system, for execution by the processing circuit.
[0534] Figure 17 illustrates a representative server or workstation hardware system in which one or more aspects of the present invention can be practiced. System 5020 of Figure 17 comprises a representative base computer system 5021, such as a personal computer, a workstation or a server, including optional peripheral devices. Base computer system 5021 includes one or more processors 5026 and a bus used 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 5026 processor to 5025 memory and 5027 long-term memory, which may include a hard disk drive (including any of magnetic media, CD, DVD and flash memory, for example) or a tape drive, for example. example. System 5021 may also include a user interface adapter, which connects microprocessor 5026 over the bus to one or more interface devices, such as a keyboard 5024, a mouse 5023, a printer/scanner 5030, and/or other devices. interface, which can be any user interface device, such as a touch screen, digitized input pad, etc. The bus also connects a 5022 display device, such as an LCD screen or monitor, to the 5026 microprocessor via a display adapter.
[0535] The 5021 system can communicate with other computers or computer networks through a network adapter capable of communicating with a 5029 network. Examples of 5028 network adapters are communication channels, Token Ring, Ethernet, or modems. Alternatively, the 5021 system can communicate using a wireless interface, such as a cellular digital packet data card (CDPD). The 5021 system can be associated with these other computers on a local area network (LAN) or a wide area network (WAN), or the 5021 system can be a client in a client/server configuration with another computer, etc. All such configurations, as well as suitable communication hardware and software, are known in the art.
[0536] Figure 18 illustrates a data processing network 5040 in which one or more aspects of the present invention 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. Furthermore, as those skilled in the art will recognize, one or more local networks may be included, where a LAN may comprise a plurality of intelligent workstations coupled to a host processor.
[0537] Still referring to Figure 18, networks can also include computers or mainframe servers, such as a gateway computer (5046 client server) or application server (remote server 5048 which 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. An input port is required when connecting from one network protocol to another. Gateway 5046 may preferably be coupled to another network (Internet 5047, for example) 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 gateway computer can be deployed using an IBM eServer™ System z® server available from International Business Machines Corporation.
[0538] Referring simultaneously to Figure 17 and Figure 18, software programming code which may embody one or more aspects of the present invention may be accessed by processor 5026 of system 5020 from long-term storage media 5027, such as a CD-ROM drive or hard drive. Software programming 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 those other systems.
[0539] Alternatively, programming code may be embedded in memory 5025 and accessed by the 5026 processor using the processor bus. Such programming code includes an operating system that controls the function and interaction of the various computer components and one or more application programs 5032. Program code typically is paged from storage media 5027 to high-speed memory 5025, where it is available for processing by processor 5026. Techniques and methods for embedding software programming code in memory, on media, and/or distribution software code over networks are well known and will not be further discussed here. Program code, when created and stored on a material medium (including, but not limited to, electronic memory (RAM) modules, flash memory, compact discs (CDs), DVDs, magnetic tape, and so on is often referred to as a “computer program product.” The computer program product medium is typically readable by a processing circuit, preferably a computer system, for execution by the processing circuit.
[0540] The cache that is most readily available to the processor (typically faster and smaller than other processor caches) is the lowest level cache (L1 or level one) and main memory (main memory) is the L1 cache. highest level (L3 if there are three levels). The lowest level cache is often divided into an instruction cache (I-Cache) which contains machine instructions to be executed and a data cache (D-Cache) which contains data operands.
[0541] Referring to Figure 19, an exemplary processor embodiment is depicted for processor 5026. Typically, one or more levels of cache 5053 are employed to temporarily store memory blocks in order to improve processor performance. The 5053 cache is a high-speed buffer that contains cache lines of memory data that are likely to be used. Typical cache lines have 64, 128, or 256 bytes of memory data. Separate caches are often used to get caching instructions rather than storing data. Cache coherence (synchronization of in-memory copies of rows and caches) is often provided by various "snoop" algorithms well known in the art. Storage in the 5025 main memory of a processor system is often referred to as a cache. On a processor system that has 4 levels of 5053 cache, the 5025 main memory is sometimes referred to as the level 5 (L5) cache, as it is typically faster and contains only a portion of the nonvolatile memory. (DASD, tape, etc.) that is available to a computer system. The 5025 main memory "stores" pages of data paged in and out of the 5025 main memory by the operating system.
[0542] A program counter (statement counter) 5061 keeps track of the address of the current instruction being executed. A program counter on the az/Architecture processor is 64 bits long and can be truncated to 31 or 24 bits to support earlier addressing limits. A program counter is typically embedded in a computer's Program Status Word (PSW) so that it persists during context switching. Thus, a running program that has a program counter value can be stopped, for example, the operating system (context switch from program environment to operating system environment). The program's PSW maintains the program counter value while the program is not active, and the program counter (in the 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 in the current instruction. RISC (Reduced Instruction Set Computing) instructions are typically of fixed length, while CISC (Complex Instruction Set Computing) instructions are typically of variable length. IBM z/Architecture instructions are CISC instructions that have a length of 2, 4, or 6 bytes. Program counter 5061 is modified by a context switch operation or a branch taking 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 which points to an instruction of a new program module to be executed. A branching operation is performed in order to allow the program to make decisions or "loop" within the program by loading the result of the branch instruction into program counter 5061.
[0543] Typically, an instruction fetch unit 5055 is employed to fetch instructions on behalf of the processor 5026. The fetch unit retrieves "next sequential instructions", target instructions of branch taking instructions or first instructions of a program after a context switch. Modem instruction fetch units often employ prefetch techniques speculatively based on the probability that the prefetch instructions can be used. For example, a fetch unit can fetch 16 bytes of instruction that includes the next sequential instruction and additional bytes of other sequential instructions.
[0544] The fetched instructions are then executed by the processor 5026. In one embodiment, the fetched instruction(s) is/are passed to a send unit 5056 of the fetch unit. The sending unit decodes the instruction(s) and forwards information about the decoded instruction(s) to appropriate units 5057, 5058, 5060. An execution unit 5057 will typically receive information on arithmetic instructions decoded from instruction fetch unit 5055 and will perform arithmetic operations on operands in accordance with the opcode of the instruction. Operands are provided to the execution unit 5057, preferably from memory 5025, architected registers 5059 or from an immediate field 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 so on).
[0545] Virtual addresses are transformed into real addresses using dynamic address translation 5062 and optionally using translation access register 5063.
[0546] A processor 5026 typically has one or more units 5057, 5058, 5060 to execute the instruction function. Referring to Figure 20A, an execution unit 5057 can communicate with general architected registers 5059, a decode/send unit 5056, a load storage unit 5060, and other processor units 5065 via a logical interface 5071. execution unit 5057 can employ various register circuits 5067, 5068, 5069 to store information on which Arithmetic Logic Unit (ALU) 5066 will operate. The ALU performs arithmetic operations such as add, subtract, multiply, and divide, as well as logical function such as AND, OR, and unique-OR (XOR), rotate, and shift. Preferably, the ALU supports specialized operations which are design dependent. Other circuits may check other installations architected 5072, including condition codes and recovery support logic, for example. Typically, the result of an operation on the ALU is maintained in an output register circuit 5070 which can transmit the result to a variety of other processing functions. There are many processor unit configurations; the present description is only intended to provide a representative understanding of an embodiment.
[0547] An ADD instruction, for example, would execute in a 5057 execution unit that has arithmetic and logic functionality, while a floating-point instruction, for example, would execute in a floating-point unit that has floating-point capability specialized. Preferably, an execution unit operates on operands identified by an instruction by executing an opcode function defined on the operands. For example, an ADD instruction can be executed by an execution unit 5057 on operands found in two 5059 registers identified by register fields of the instruction.
[0548] 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 source registers. The execution unit preferably uses a logic and arithmetic 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 of add, subtract, multiply, divide. Some 5066 ALUs are designed for scalar operations and some for floating point. The data can be Big Endian (where the least significant byte is the highest 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 either sign and magnitude, 1's complement, or 2's complement, depending on the architecture. The 2's complement number is advantageous in that the ALU does not need to design a subtraction capability, since a negative value or a positive 2's complement value requires only one addition within the ALU. Numbers are commonly described in abbreviated form, where a 12-bit field defines an address of a 4,096-byte block and is commonly described as a 4-Kbyte (kilo-byte) block, for example.
[0549] Referring to Fig. 20B, the branch instruction information for executing a branch instruction is typically sent to a branch unit 5058 which often employs a branch prediction algorithm such as a table. of branch history 5082, to predict the outcome of the branch before other conditional operations complete. The target of the current branch instruction will be obtained and speculatively executed before the conditional operations complete. When the conditional operations complete, the speculatively executed branch instructions are either completed or discarded based on the conditional operation conditions and the speculated result. The typical branch instruction can test condition codes and branch to a destination address if the condition codes meet the branch instruction's branch requirement, a destination address can be calculated based on various numbers, including those found in fields register or an immediate field of the instruction, for example. Bypass unit 5058 may employ an ALU 5074 which has a plurality of input register circuits 5075, 5076, 5077 and an output register circuit 5080. Bypass unit 5058 can communicate with general registers 5059, decode unit 5056 or other 5073 circuits, for example.
[0550] The execution of a group of instructions can be interrupted for a variety of reasons, including a context switch initiated by an operating system, a program exception or error that causes a context switch, an I/O interrupt signal that causes a context switch or multi-threading activity of a plurality of programs (in a multi-threaded environment), 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. The state information preferably comprises a program counter value that points to a next instruction to be executed, condition codes, memory conversion information and architected register contents. 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.
[0551] A processor accesses operands according to defined instruction methods. The instruction can provide an immediate operand using the value of a portion of the instruction, it can provide one or more register fields that explicitly point to general purpose registers or special purpose registers (floating point registers, for example). The instruction may use implicit registers identified by an opcode field as operands. The instruction can use memory locations for operands. A memory location of an operand can be provided by a register, an immediate field, or a combination of registers and immediate fields, as exemplified by the z/Architecture long offset facility, where the instruction defines a base register, a register index 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 storage), unless otherwise noted.
[0552] Referring to Figure 20C, a processor accesses memory using a load/storage unit 5060. Load/storage unit 5060 can perform a load operation by obtaining the address of the target operand in memory 5053 and loading of the operand in a register 5059 or other location memory 5053, or may perform a store operation by obtaining the address of the destination operand in memory 5053 and storing data obtained from a register 5059 or other location in memory 5053 in the location of the target operand in memory 5053. Load/storage unit 5060 can be speculative and may access memory in a sequence that is out of order with respect to instruction sequence, however load/storage unit 5060 must maintain the appearance to programs that the instructions were executed in order. A 5060 load/storage unit can communicate with general registers 5059, decode/send unit 5056, cache/memory interface 5053 or other 5083 elements and comprises various register circuits, ALUs 5085 and control logic 5090 to calculate addresses of storage and allow concatenated sequencing to maintain the order of operations. Some operations may be out of order, but the load/storage unit provides the functionality to make the out of order operations appear to the program as having been performed in order, as is well known in the art.
[0553] Preferably, addresses that an application program "see" 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 the physical memory location via one of a variety of dynamic address translation (DAT) technologies including, but not limited to, simply prefixing a virtual address with a offset value, converting the virtual address via one or more translation tables, the translation tables preferably comprising at least one segment table and one page table individually or in combination, preferably the segment table having an entry that points to the page table. In z/Architecture, a translation hierarchy is provided, including a region first table, a region second table, a region third table, a segment table, and an optional page table. Address translation performance is often improved by using a separate translation buffer (TLB) that comprises entries that map a virtual address to an associated physical memory location. Entries are created when DAT translates a virtual address using translation tables. Subsequent use of the virtual address can then use the fast TLB entry instead of accessing the slow sequential translation table. TLB content can be managed by a variety of replacement algorithms, including LRU (Least Recently Used).
[0554] 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 coherency. In a "snoop" environment, each cache line can be marked as any one of a shared state, an exclusive state, a changed state, an invalid state, and so on, in order to facilitate sharing.
[0555] 5054 I/O Units (Figure 19) provide the processor with a means to connect to peripheral devices, including tape, disk, printers, monitors, and networks, for example. I/O units are often presented to the computer program via software drivers. In host computers, such as the IBM® System z®, channel adapters and open system adapters are host I/O units that enable communications between the operating system and peripheral devices.
[0556] In addition, other types of computing environments can benefit from one or more aspects of the present invention. As an example, as mentioned here, an environment may include an emulator (for example, software or other emulation mechanisms), in which a particular architecture (including, for example, instruction execution, architected functions, such as address translation, and architected registers) or a subset thereof is emulated (eg, on a native computer system that has a processor and memory). In such an environment, one or more emulation functions of the emulator may implement one or more aspects of the present invention, even though a computer running the emulator may have a different architecture than the capabilities to be emulated. As an example, in emulation mode, the specific instruction or operation to be emulated is decoded and an appropriate emulation function is built to implement the individual instruction or operation.
[0557] In an emulation environment, a host computer includes, for example, a memory to store instructions and data; an instruction fetch unit to fetch instructions from memory and optionally provide local temporary storage for the fetched instruction; an instruction decoding unit for receiving the fetched instructions and determining the type of instruction that was fetched; and an instruction execution unit for executing the instructions. Execution may include loading data into a register from memory; storing data back in a register's memory; or performing some kind of arithmetic or logical operation, as determined by the decoding unit.
[0558] In one example, each unit is implemented in software. For example, operations performed by units are implemented as one or more subroutines within the emulator software.
[0559] More particularly, on a mainframe, architected machine instructions are used by programmers, usually today "C" programmers, often through a compiler application.
[0560] These instructions stored on the storage medium can run natively on az/Architecture® IBM® Server or, alternatively, on machines running other architectures. They can be emulated on existing and future IBM® mainframe servers and other IBM machines (eg Power Systems servers and System x 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 this hardware under the z/Architecture, Linux can be used, as well as machines that use emulation by Hercules, UMX or FSI (Fundamental Software, Inc.), where generally running is in an emulation mode. In emulation mode, emulation software is run by a native processor to emulate the architecture of an emulated processor.
[0561] The native processor typically runs emulation software that comprises 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 take one or more emulated machine instructions at a time and convert them into one or more emulated machine instructions for a corresponding group of native machine instructions for execution by the native processor. These instructions can be converted to cache so that a faster conversion can be achieved. However, the emulation software contains the architecture rules of the emulated processor architecture in order to ensure that operating systems and applications written for the emulated processor work correctly. In addition, the emulation software provides 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 page tables , for example, interrupt mechanisms, context switching mechanisms, time and date clocks (in English, Time Of Day - TOD) and architected interfaces 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 that has the emulation software.
[0562] The specific instruction to be emulated is decoded and a subroutine is called to perform the function of the individual instruction. An emulation software function that emulates a function of an emulated processor is implemented, for example, in a subroutine or "C" driver or any other method of providing a driver for the specific hardware, as is within the capability of those skilled in the art after understanding the description of the preferred embodiment. Various software and hardware emulation patents including, but not limited to, United States Patent No. 5,551,013 entitled "Multiprocessor for Hardware Emulation", by Beausoleil et al.; and United States Patent No. 6,009,261 entitled "Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor", by scalzi et al.; and United States Patent No. 5,574,873 entitled "Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions", by Davidian et al.; and United States Patent No. 6,308,255 entitled "Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System", by Gorishek et al.; and United States Patent No. 6,463,582 entitled "Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method", by Lethin et al.; and U.S. Patent No. 5,790,825 entitled "Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions", by Eric Traut, and many others, illustrate a variety of known ways to achieve emulation of a format instruction architected for a different machine to a target machine available to those skilled in the art.
[0563] In Figure 21, an example of an emulated host computer system 5092 is provided that emulates a host computer system 5000' of a host architecture. In the emulated host computer system 5092, the host processor (CPU) 5091 is an emulated central processor (or virtual host processor) and comprises an emulation processor 5093 that has a different native instruction set than the host computer processor 5091 5000'. . The 5092 emulated host computer system has a 5094 memory accessible to the 5093 emulation processor.
[0564] In the exemplary embodiment, memory 5094 is divided into a host computer memory portion 5096 and a portion of emulation routines 5097. Host computer memory 5096 is available to emulated host computer programs 5092 according to the architecture from the host computer. Emulation processor 5093 executes native instructions from a set of instructions architected of a different architecture than emulated processor 5091, native instructions obtained from emulation routines in memory 5097, and can access a host instruction for executing a program from the memory of the host computer 5096 by employing one or more instructions obtained in a sequence & access/decoding routine which can decode the instruction(s) of the host accessed to determine a native instruction execution routine to emulate the function of the host instruction accessed. Other functions that are defined for the 5000' host computer system architecture can be emulated by architected function routines, including functions such as general purpose registers, control registers, dynamic address translation, and I/O subsystem support and server cache. processor, for example. Emulation routines can also take advantage of functions available on the 5093 emulation processor (such as general registers and dynamic virtual address translation) to improve the performance of the emulation routines. Special hardware and off-load mechanisms may also be provided to help the 5093 processor emulate the function of the 5000' host computer.
[0565] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms "a", "an", "o" and "a" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms "comprises" and/or "comprising", when used in this descriptive report, specify the presence of characteristics, integers, steps, operations, elements and/or components indicated, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components and/or groups thereof.
[0566] The corresponding structures, materials, acts and equivalents of all means or steps plus the function of elements in the claims below, if applicable, are intended to include any structure, material or act to perform the function in combination with others claimed elements as specifically claimed. The description of one or more aspects of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or to limit the invention as described. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the invention. The embodiment has been chosen and described so as to better explain the principles of the invention and its practical application and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as appropriate for the particular use envisaged.
权利要求:
Claims (5)
[0001]
1. Method to facilitate transaction processing within a computing environment, said method characterized by the fact that it comprises the steps of: obtaining an instruction to start the transaction (200), the instruction to start the transaction comprising a code of operation (202), which specifies an instruction to start the transaction of a specific type, and a field that indicates a general register save mask (210) that has a plurality of bits, each of which represents an even-odd pair. of the general registers, and when the bit has a value, the corresponding even-odd register pair is saved and when the bit has another value, the corresponding even-odd register pair is not saved, the instruction to start the transaction starts a transaction, as well as the general register save mask, thus explicitly specifying one or more records selected from the general register set to be saved at a transaction start, the transaction effectively delaying the storage of transactional commitments to main memory until a selected transaction completes; and executing the instruction to begin the transaction, executing the instruction to begin the transaction comprising determining (1300) the selected register pairs to be saved and saving (1302) the contents of one or more registers selected from the set of general registers explicitly specified in the general register save mask of the instruction to start the transaction, where the save only saves contents of the one or more selected registers from the set of general registers explicitly specified in the general register save mask, and starts the transaction execution.
[0002]
2. Method according to claim 1, characterized in that the method further comprises: determining (1304) that the transaction was aborted; and based on the determination that the transaction was aborted and one or more register pairs selected from the general registers specified by the register save mask, restore (1306) the one or more selected registers.
[0003]
3. Method according to claim 2, characterized in that the saving comprises copying the contents of one or more pairs of selected registers to a designated memory location, and wherein the restoration comprises copying the contents of the memory location assigned to the one or more selected registrars.
[0004]
4. Method according to claim 1, characterized in that the instruction is an instruction to start the nested transaction outside of a nested transaction, and in which the method further comprises aborting the transaction of the nested transaction, and based on abort, restore (1306) the one or more selected registers for the contents written based on the execution of the instruction to start the outer nested transaction.
[0005]
5. System characterized in that it comprises means adapted to carry out all the steps of the method as defined in any one of claims 1 to 4.
类似技术:
公开号 | 公开日 | 专利标题
US9792125B2|2017-10-17|Saving/restoring selected registers in transactional processing
US10185588B2|2019-01-22|Transaction begin/end instructions
EP2862070B1|2019-04-17|Transactional processing
US9983881B2|2018-05-29|Selectively controlling instruction execution in transactional processing
BR112014031432B1|2021-07-27|NON TRANSACTIONAL STORAGE INSTRUCTION
EP2834739B1|2018-08-22|Transaction diagnostic block
EP2862081B1|2018-10-17|Transactional execution branch indications
US9336007B2|2016-05-10|Processor assist facility
US10430199B2|2019-10-01|Program interruption filtering in transactional execution
US9223687B2|2015-12-29|Determining the logical address of a transaction abort
BR112014031353B1|2021-09-28|PROCESSOR ASSISTANCE FACILITY
BR112014031435B1|2021-11-09|RANDOMIZED TEST WITHIN TRANSACTIONAL EXECUTION
BR112014031437B1|2021-11-09|TRANSACTIONAL EXECUTION BRANCH INDICATIONS
BR112014031350B1|2021-09-21|FILTERING PROGRAM INTERRUPTION IN TRANSACTIONAL RUN
同族专利:
公开号 | 公开日
EP2862092A1|2015-04-22|
CA2874179C|2020-02-18|
JP6086406B2|2017-03-01|
ES2720133T3|2019-07-18|
US20160266907A1|2016-09-15|
HRP20190671T1|2019-05-31|
US9367324B2|2016-06-14|
MX347774B|2017-05-12|
US20130339642A1|2013-12-19|
LT2862092T|2019-04-25|
AU2012382778A1|2014-12-11|
MX2014015351A|2015-07-06|
WO2013186603A1|2013-12-19|
CA2874179A1|2013-12-19|
KR101625323B1|2016-05-27|
DK2862092T3|2019-04-29|
SI2862092T1|2019-05-31|
HUE044044T2|2019-09-30|
ZA201408073B|2017-08-30|
EP2862092B1|2019-03-13|
PL2862092T3|2019-06-28|
US9361115B2|2016-06-07|
KR20150016234A|2015-02-11|
EP2862092A4|2017-06-14|
RU2562424C2|2015-09-10|
IL236250D0|2015-01-29|
US20130339704A1|2013-12-19|
HK1207700A1|2016-02-05|
AU2012382778B2|2016-08-18|
JP2015526790A|2015-09-10|
PT2862092T|2019-05-13|
CN104364778B|2017-02-08|
SG11201407471TA|2015-01-29|
US9792125B2|2017-10-17|
RU2012148585A|2014-05-20|
CN104364778A|2015-02-18|
TWI559225B|2016-11-21|
BR112014031415A2|2017-06-27|
TW201413581A|2014-04-01|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题

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|
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|
US5937199A|1997-06-03|1999-08-10|International Business Machines Corporation|User programmable interrupt mask with timeout for enhanced resource locking efficiency|
JP3546678B2|1997-09-12|2004-07-28|株式会社日立製作所|Multi-OS configuration method|
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|
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|
EP0992916A1|1998-10-06|2000-04-12|Texas Instruments Inc.|Digital signal processor|
EP0992907B1|1998-10-06|2005-09-28|Texas Instruments Inc.|Trace fifo management|
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|
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|
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|
US6738892B1|1999-10-20|2004-05-18|Transmeta Corporation|Use of enable bits to control execution of selected instructions|
JP3776653B2|1999-11-24|2006-05-17|富士通株式会社|Arithmetic processing unit|
US6754809B1|1999-12-30|2004-06-22|Texas Instruments Incorporated|Data processing apparatus with indirect register file access|
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|
US7111141B2|2000-10-17|2006-09-19|Igt|Dynamic NV-RAM|
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|
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|
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|
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|
US7269693B2|2003-02-13|2007-09-11|Sun Microsystems, Inc.|Selectively monitoring stores to support transactional program execution|
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|
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|
US7398355B1|2003-02-13|2008-07-08|Sun Microsystems, Inc.|Avoiding locks by transactionally executing critical sections|
US7398359B1|2003-04-30|2008-07-08|Silicon Graphics, Inc.|System and method for performing memory operations in a computing system|
CA2472887A1|2003-06-30|2004-12-30|Gravic, Inc.|Methods for ensuring referential integrity in multithreaded replication engines|
US8131739B2|2003-08-21|2012-03-06|Microsoft Corporation|Systems and methods for interfacing application programs with an item-based storage platform|
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|
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|
US20070005828A1|2005-06-30|2007-01-04|Nimrod Diamant|Interrupts support for the KCS manageability interface|
CN1713164A|2005-07-21|2005-12-28|复旦大学|DMA controller and data transmission with multi-transaction discretionary process|
US7870369B1|2005-09-28|2011-01-11|Oracle America, Inc.|Abort prioritization in a trace-based processor|
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|
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|
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|
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|
US7802136B2|2006-12-28|2010-09-21|Intel Corporation|Compiler technique for efficient register checkpointing to support transaction roll-back|
US8086827B2|2006-12-28|2011-12-27|Intel Corporation|Mechanism for irrevocable transactions|
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|
US8117403B2|2007-05-14|2012-02-14|International Business Machines Corporation|Transactional memory system which employs thread assists using address history tables|
US9009452B2|2007-05-14|2015-04-14|International Business Machines Corporation|Computing system with transactional memory using millicode assists|
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|
US8195898B2|2007-12-27|2012-06-05|Intel Corporation|Hybrid transactions for low-overhead speculative parallelization|
US8706982B2|2007-12-30|2014-04-22|Intel Corporation|Mechanisms for strong atomicity in a transactional memory system|
US8065491B2|2007-12-30|2011-11-22|Intel Corporation|Efficient non-transactional write barriers for strong atomicity|
US7966459B2|2007-12-31|2011-06-21|Oracle America, Inc.|System and method for supporting phased transactional memory modes|
US8140497B2|2007-12-31|2012-03-20|Oracle America, Inc.|System and method for implementing nonblocking zero-indirection transactional memory|
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|
US8176279B2|2008-02-25|2012-05-08|International Business Machines Corporation|Managing use of storage by multiple pageable guests of a computing environment|
US8161273B2|2008-02-26|2012-04-17|Oracle America, Inc.|Method and apparatus for programmatically rewinding a register inside a transaction|
US8380907B2|2008-02-26|2013-02-19|International Business Machines Corporation|Method, system and computer program product for providing filtering of GUEST2 quiesce requests|
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|
US8688628B2|2008-02-29|2014-04-01|Red Hat, Inc.|Nested queued transaction manager|
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|
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|
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|
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|
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|
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|
US9092253B2|2009-12-15|2015-07-28|Microsoft Technology Licensing, Llc|Instrumentation of hardware assisted transactional memory system|
US8095824B2|2009-12-15|2012-01-10|Intel Corporation|Performing mode switching in an unbounded transactional memory system|
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|
US8301849B2|2009-12-23|2012-10-30|Intel Corporation|Transactional memory in out-of-order processors with XABORT having immediate argument|
KR101639672B1|2010-01-05|2016-07-15|삼성전자주식회사|Unbounded transactional memory system and method for operating thereof|
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|
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|
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|
US9772854B2|2012-06-15|2017-09-26|International Business Machines Corporation|Selectively controlling instruction execution in transactional processing|
US9317460B2|2012-06-15|2016-04-19|International Business Machines Corporation|Program event recording within a transactional environment|
US8880959B2|2012-06-15|2014-11-04|International Business Machines Corporation|Transaction diagnostic block|
US9448796B2|2012-06-15|2016-09-20|International Business Machines Corporation|Restricted instructions in transactional execution|
US8966324B2|2012-06-15|2015-02-24|International Business Machines Corporation|Transactional execution branch indications|
US9361115B2|2012-06-15|2016-06-07|International Business Machines Corporation|Saving/restoring selected registers in transactional processing|
US9367323B2|2012-06-15|2016-06-14|International Business Machines Corporation|Processor assist facility|
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|
US9384004B2|2012-06-15|2016-07-05|International Business Machines Corporation|Randomized testing within transactional execution|
US8682877B2|2012-06-15|2014-03-25|International Business Machines Corporation|Constrained transaction execution|
US9348642B2|2012-06-15|2016-05-24|International Business Machines Corporation|Transaction begin/end instructions|
US20130339680A1|2012-06-15|2013-12-19|International Business Machines Corporation|Nontransactional store instruction|
US9442737B2|2012-06-15|2016-09-13|International Business Machines Corporation|Restricting processing within a processor to facilitate transaction completion|
US9311101B2|2012-06-15|2016-04-12|International Business Machines Corporation|Intra-instructional transaction abort handling|
US9740549B2|2012-06-15|2017-08-22|International Business Machines Corporation|Facilitating transaction completion subsequent to repeated aborts of the transaction|
US10437602B2|2012-06-15|2019-10-08|International Business Machines Corporation|Program interruption filtering in transactional execution|
US9436477B2|2012-06-15|2016-09-06|International Business Machines Corporation|Transaction abort instruction|US9448796B2|2012-06-15|2016-09-20|International Business Machines Corporation|Restricted instructions in transactional execution|
US9740549B2|2012-06-15|2017-08-22|International Business Machines Corporation|Facilitating transaction completion subsequent to repeated aborts of the transaction|
US9361115B2|2012-06-15|2016-06-07|International Business Machines Corporation|Saving/restoring selected registers in transactional processing|
US10437602B2|2012-06-15|2019-10-08|International Business Machines Corporation|Program interruption filtering in transactional execution|
US9384004B2|2012-06-15|2016-07-05|International Business Machines Corporation|Randomized testing within transactional execution|
US9348642B2|2012-06-15|2016-05-24|International Business Machines Corporation|Transaction begin/end instructions|
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|
US9436477B2|2012-06-15|2016-09-06|International Business Machines Corporation|Transaction abort instruction|
US9336046B2|2012-06-15|2016-05-10|International Business Machines Corporation|Transaction abort processing|
US9898330B2|2013-11-11|2018-02-20|Intel Corporation|Compacted context state management|
GB2528115B|2014-07-11|2021-05-19|Advanced Risc Mach Ltd|Dynamic saving of registers in transactions|
US9672354B2|2014-08-18|2017-06-06|Bitdefender IPR Management Ltd.|Systems and methods for exposing a result of a current processor instruction upon exiting a virtual machine|
US10061746B2|2014-09-26|2018-08-28|Intel Corporation|Instruction and logic for a vector format for processing computations|
US9501386B2|2014-12-26|2016-11-22|Microsoft Technology Licensing, Llc|System testing using nested transactions|
GB2549774B|2016-04-28|2019-04-10|Imagination Tech Ltd|Method for handling exceptions in exception-driven system|
US20180004511A1|2016-07-01|2018-01-04|Roman Dementiev|Apparatus and method for reentering a transactional sequence with hardware transactional memory|
US10831509B2|2017-02-23|2020-11-10|Ab Initio Technology Llc|Dynamic execution of parameterized applications for the processing of keyed network data streams|
US10489382B2|2017-04-18|2019-11-26|International Business Machines Corporation|Register restoration invalidation based on a context switch|
US10552164B2|2017-04-18|2020-02-04|International Business Machines Corporation|Sharing snapshots between restoration and recovery|
US10838733B2|2017-04-18|2020-11-17|International Business Machines Corporation|Register context restoration based on rename register recovery|
US10564977B2|2017-04-18|2020-02-18|International Business Machines Corporation|Selective register allocation|
US10963261B2|2017-04-18|2021-03-30|International Business Machines Corporation|Sharing snapshots across save requests|
US10572265B2|2017-04-18|2020-02-25|International Business Machines Corporation|Selecting register restoration or register reloading|
US11010192B2|2017-04-18|2021-05-18|International Business Machines Corporation|Register restoration using recovery buffers|
US10540184B2|2017-04-18|2020-01-21|International Business Machines Corporation|Coalescing store instructions for restoration|
US10649785B2|2017-04-18|2020-05-12|International Business Machines Corporation|Tracking changes to memory via check and recovery|
US10740108B2|2017-04-18|2020-08-11|International Business Machines Corporation|Management of store queue based on restoration operation|
US10782979B2|2017-04-18|2020-09-22|International Business Machines Corporation|Restoring saved architected registers and suppressing verification of registers to be restored|
US10545766B2|2017-04-18|2020-01-28|International Business Machines Corporation|Register restoration using transactional memory register snapshots|
US10534609B2|2017-08-18|2020-01-14|International Business Machines Corporation|Code-specific affiliated register prediction|
US11036654B2|2018-04-14|2021-06-15|Microsoft Technology Licensing, Llc|NOP sled defense|
US11113061B2|2019-09-26|2021-09-07|Advanced Micro Devices, Inc.|Register saving for function calling|
法律状态:
2018-01-23| B11A| Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing|
2018-05-15| B04C| Request for examination: application reinstated [chapter 4.3 patent gazette]|
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-29| B09A| Decision: intention to grant [chapter 9.1 patent gazette]|
2021-08-10| B16A| Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]|Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 26/11/2012, OBSERVADAS AS CONDICOES LEGAIS. |
优先权:
申请号 | 申请日 | 专利标题
US13/524,882|US9361115B2|2012-06-15|2012-06-15|Saving/restoring selected registers in transactional processing|
US13/524,882|2012-06-15|
PCT/IB2012/056733|WO2013186603A1|2012-06-15|2012-11-26|Saving/restoring selected registers in transactional processing|
[返回顶部]