DE102013210160A1 - Method for facilitating processing of transaction within multiprocessor data processing environment, involves automatically setting counter to predefined value based on presenting interrupt of transaction when transaction is aborted - Google Patents

Method for facilitating processing of transaction within multiprocessor data processing environment, involves automatically setting counter to predefined value based on presenting interrupt of transaction when transaction is aborted Download PDF

Info

Publication number
DE102013210160A1
DE102013210160A1 DE201310210160 DE102013210160A DE102013210160A1 DE 102013210160 A1 DE102013210160 A1 DE 102013210160A1 DE 201310210160 DE201310210160 DE 201310210160 DE 102013210160 A DE102013210160 A DE 102013210160A DE 102013210160 A1 DE102013210160 A1 DE 102013210160A1
Authority
DE
Germany
Prior art keywords
transaction
abort
instruction
program
counter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE201310210160
Other languages
German (de)
Inventor
Brenton F. Belmar
Christian Jacobi
Randall W. Philley
Timothy J. Slegel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/524,857 external-priority patent/US9740549B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102013210160A1 publication Critical patent/DE102013210160A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit

Abstract

The method involves determining whether a transaction performed with a data processing environment (100) is successfully completed. A counter is automatically set to a predefined value when the transaction is determined to be successfully completed. The counter is automatically set to the predefined value based on reaching by the counter a threshold number of aborts for the transaction causing an interrupt to be presented for the transaction or presenting an interrupt of the transaction in which the transaction is not re-executed when the transaction is determined to be aborted. Independent claims are also included for the following: (1) a computer program product for facilitating processing of transaction within a data processing environment (2) a computer system for facilitating processing of transaction within a data processing environment.

Description

Diese Anmeldung ist eine Fortführung der gleichzeitig anhängigen US-Patentanmeldung mit der Seriennummer 13/524 857, Titel „FACILITATING TRANSACTION COMPLETION SUBSEQUENT TO REPEATED ABORTS OF THE TRANSACTION”, eingereicht am 15. Juni 2012, die hiermit durch Bezugnahme in ihrer Gesamtheit aufgenommen ist.This application is a continuation of copending US Patent Application Serial No. 13/524 857 entitled "FACILITATING TRANSACTION COMPLETION SUBSEQUENT TO REPEATED ABORTS OF THE TRANSACTION" filed Jun. 15, 2012, which is hereby incorporated by reference in its entirety.

HINTERGRUNDBACKGROUND

Ein oder mehrere Aspekte beziehen sich im Allgemeinen auf eine Multiprozessor-Datenverarbeitungsumgebung und insbesondere auf Transaktionsverarbeitungen innerhalb solcher Datenverarbeitungsumgebungen.One or more aspects generally relate to a multiprocessor computing environment, and more particularly to transaction processing within such computing environments.

Ein ständiges Problem bei der Multiprozessorprogrammierung besteht in Aktualisierungen des gleichen Speicherorts durch mehrere Zentraleinheiten (CPUs, Central Processing Units). Viele Anweisungen, die Speicherorte aktualisieren, darunter sogar einfache logische Operationen wie UND, tun dies durch mehrere Zugriffe auf den Speicherort. Beispielsweise wird der Speicherort zunächst abgerufen, und danach wird das aktualisierte Ergebnis in den Speicherort zurückgeschrieben.A persistent problem with multiprocessor programming is that updates to the same location by multiple central processing units (CPUs). Many statements that update locations, including even simple logical operations such as AND, do so through multiple accesses to the location. For example, the location is first retrieved, and then the updated result is written back to the location.

Damit mehrere CPUs den gleichen Speicherort sicher aktualisieren können, wird der Zugriff auf den Speicherort serialisiert. Eine Anweisung, die Anweisung TEST AND SET, wurde mit der S/360-Architektur eingeführt, die früher von der International Business Machines Corporation angeboten wurde, und stellte eine gesperrte Aktualisierung eines Speicherorts bereit. Eine gesperrte Aktualisierung bedeutet, dass der gesamte Speicherzugriff der Anweisung für andere CPUs und das Eingabe/Ausgabe-(E/A-)Teilsystem (z. B. Kanalteilsystem) atomar zu erfolgen scheint. Später führte die von der International Business Machines Corporation angebotene S/370-Architektur die Anweisungen COMPARE AND SWAP und COMPARE DOUBLE AND SWAP ein, die ein ausgeklügelteres Mittel zum Durchführen einer gesperrten Aktualisierung bereitstellen und die Implementierung dessen ermöglicht, was allgemein als Sperrwort (oder Semaphor) bekannt ist. Kürzlich hinzugefügte Anweisungen stellen weitere Funktionen der gesperrten Aktualisierung bereit, darunter COMPARE AND SWAP AND PURGE und COMPARE AND SWAP AND STORE. All diese Anweisungen stellen jedoch eine Sperre für nur einen einzelnen Speicherort bereit.To allow multiple CPUs to securely update the same location, access to the location is serialized. One statement, the TEST AND SET statement, was introduced using the S / 360 architecture, previously offered by International Business Machines Corporation, and provided a locked update of a location. A locked update means that the entire memory access of the instruction for other CPUs and the input / output (I / O) subsystem (eg, channel subsystem) appears to be atomic. Later, the S / 370 architecture offered by International Business Machines Corporation introduced the instructions COMPARE AND SWAP and COMPARE DOUBLE AND SWAP, which provide a more sophisticated means of performing a locked update and enable the implementation of what is commonly referred to as a lockword (or semaphore) ) is known. Recently added instructions provide additional features of the locked update, including COMPARE AND SWAP AND PURGE and COMPARE AND SWAP AND STORE. However, all of these instructions provide a lock on only a single location.

Komplexere Programmtechniken erfordern gegebenenfalls die gesperrte Aktualisierung von mehreren Speicherorten, beispielsweise wenn ein Element zu einer doppelt verknüpften Liste hinzugefügt wird. Bei einer solchen Operation scheinen sowohl ein Vorwärtszeiger als auch ein Rückwärtszeiger gleichzeitig aktualisiert zu werden, wie es durch andere CPUs und das E/A-Teilsystem wahrgenommen wird. Um eine solche mehrfache Speicherortaktualisierung umzusetzen, muss das Programm einen separaten einzelnen Serialisierungspunkt verwenden, z. B. ein Sperrwort. Sperrwörter können jedoch eine viel gröbere Serialisierungshöhe als gerechtfertigt bereitstellen, beispielsweise können die Sperrwörter eine gesamte Warteschlange aus Millionen von Elementen serialisieren, auch wenn nur zwei Elemente aktualisiert werden. Das Programm kann die Daten strukturieren, um eine feinkörnigere Serialisierung (z. B. eine Hierarchie von Sperrpunkten) zu verwenden, aber dies führt zu weiteren Problemen wie beispielsweise zu möglichen Situationen des gegenseitigen Blockierens, wenn die Hierarchie nicht eingehalten wird, und Wiederherstellungsproblemen, wenn das Programm auf einen Fehler stößt, wenn eine oder mehrere Sperren gehalten werden oder wenn die Sperre nicht erfasst werden kann.More complex programming techniques may require the locked refresh of multiple locations, for example, when an item is added to a doubly linked list. In such an operation, both a forward pointer and a backward pointer appear to be updated simultaneously as perceived by other CPUs and the I / O subsystem. To implement such a multiple location update, the program must use a separate single serialization point, e.g. B. a blocking word. However, lockwords can provide a much coarser serialization level than justified, for example, the lockwords can serialize an entire queue of millions of elements, even if only two elements are updated. The program can structure the data to use a finer-grained serialization (eg, a hierarchy of lock points), but this leads to further problems such as possible situations of mutual blocking if the hierarchy is not met and recovery problems if the program encounters an error if one or more locks are held or if the lock can not be detected.

Darüber hinaus gibt es zahlreiche Szenarien, in denen ein Programm eine Anweisungsabfolge ausführen kann, die womöglich zu einer Ausnahmebedingung führt. Wenn keine Ausnahmebedingung auftritt, fährt das Programm fort; wenn jedoch eine Ausnahme erkannt wird, kann das Programm eine Korrekturmaßnahme ergreifen, um die Ausnahmebedingung zu beseitigen. Java beispielsweise kann eine solche Ausführung z. B. in einer spekulativen Ausführung, einem teilweisen Inlining einer Funktion und/oder in der Umordnung einer Zeiger-Null-Prüfung nutzen.In addition, there are numerous scenarios in which a program may execute an instruction sequence that may result in an exception. If no exception occurs, the program continues; however, if an exception is detected, the program may take a corrective action to eliminate the exception. Java, for example, such an execution z. In a speculative implementation, a partial inlining of a function, and / or reordering a pointer-zero check.

Bei klassischen Betriebssystemumgebungen wie z/OS und dessen Vorgänger, die von der International Business Machines Corporation angeboten werden, richtet das Programm eine Wiederherstellungsumgebung ein, um jedwede mögliche Programmausnahmebedingung abzufangen. Wenn das Programm die Ausnahme nicht abfängt, beendet das Betriebssystem das Programm bei Ausnahmen, auf deren Handhabung das Betriebssystem nicht vorbereitet ist, für gewöhnlich nicht normal. Das Einrichten und Nutzen einer solchen Umgebung ist kostspielig und kompliziert.For classic operating system environments, such as z / OS and its predecessors offered by International Business Machines Corporation, the program will establish a recovery environment to intercept any possible program exception. If the program does not catch the exception, the operating system will typically quit the program for exceptions that the operating system is not prepared to handle. Setting up and using such an environment is costly and complicated.

KURZDARSTELLUNG SUMMARY

Nachteile des Standes der Technik werden ausgeräumt, und Vorteile werden durch das Bereitstellen eines Verfahrens zum Erleichtern der Verarbeitung innerhalb einer Datenverarbeitungsumgebung geboten. Das Verfahren beinhaltet beispielsweise ein Verfolgen durch einen Prozessor der Datenverarbeitungsumgebung, wie oft eine innerhalb des Prozessors ausgeführte Transaktion abgebrochen wird, wobei die Transaktion ein Festschreiben von transaktionsorientierten Speichervorgängen in den Hauptspeicher bis zum Ausführen einer ausgewählten Transaktion effektiv verzögert; und das Verfolgen unter Verwendung eines Zählers innerhalb des Prozessors, um die Anzahl von Abbrüchen zu verfolgen; Ermitteln, ob die Transaktion erfolgreich ausgeführt wurde, und auf der Grundlage der erfolgreichen Ausführung der Transaktion automatisches Zurücksetzen des Zählers auf einen vorab festgelegten Wert; und auf der Grundlage des Abbruchs einer Transaktion automatisches Zurücksetzen des Zählers auf einen vorab definierten Wert auf der Grundlage von einem des Folgenden: Erreichen eines Schwellenwerts des Zählers für Abbrüche der Transaktion, die bewirken, dass eine Unterbrechung der Transaktion dargeboten wird; oder Darbieten einer Unterbrechung der Transaktion, wobei die Transaktion nicht erneut ausgeführt wird.Disadvantages of the prior art are eliminated, and advantages are provided by providing a method for facilitating processing within a computing environment. The method includes, for example, tracking by a processor of the computing environment how often a transaction executed within the processor is aborted, the transaction effectively delaying commit of transaction-oriented stores to main memory until a selected transaction is executed; and tracking using a counter within the processor to track the number of aborts; Determining whether the transaction completed successfully and automatically resetting the counter to a predetermined value based on the successful execution of the transaction; and upon the abort of a transaction, automatically resetting the counter to a predefined value based on one of: reaching a threshold value of the transaction abort counter that causes the transaction to be suspended; or presenting an interruption of the transaction, wherein the transaction is not re-executed.

Computerprogrammprodukte und Systeme, die sich auf einen oder mehrere Aspekte beziehen, werden ebenfalls beschrieben und können hier beansprucht werden. Darüber hinaus werden Dienste, die sich auf einen oder mehrere Aspekte beziehen, ebenfalls beschrieben und können hier beansprucht werden.Computer program products and systems relating to one or more aspects are also described and may be claimed herein. In addition, services relating to one or more aspects are also described and may be claimed here.

Weitere Merkmale und Vorteile werden durch die hier beschriebenen Techniken realisiert. Andere Ausführungsformen und Aspekte werden hierin ausführlich beschrieben und als Teil der beanspruchten Erfindung angesehen.Other features and advantages are realized by the techniques described herein. Other embodiments and aspects are described in detail herein and are considered part of the claimed invention.

KURZBESCHREIBUNG DER MEHREREN ANSICHTEN DER ZEICHNUNGENBRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

Ein oder mehrere Aspekte werden besonders hervorgehoben und als Beispiele in den Ansprüchen im Schlussteil der Schrift separat beansprucht. Die vorstehenden und andere Aufgaben, Merkmale und Vorteile der Erfindung gehen aus der folgenden ausführlichen Beschreibung in Zusammenschau mit den beiliegenden Zeichnungen hervor, in denen:One or more aspects are particularly emphasized and claimed separately as examples in the claims in the final part of the specification. The foregoing and other objects, features and advantages of the invention will be apparent from the following detailed description when taken in conjunction with the accompanying drawings, in which:

1 eine Ausführungsform einer Datenverarbeitungsumgebung zeigt; 1 shows an embodiment of a computing environment;

2A ein Beispiel einer Anweisung Transaction Begin (TBEGIN) zeigt; 2A shows an example of a statement Transaction Begin (TBEGIN);

2B eine Ausführungsform mit weiteren Details zu einem Feld der Anweisung TBEGIN von 2A zeigt; 2 B an embodiment with further details of a field of instruction TBEGIN of 2A shows;

3A ein Beispiel einer Anweisung Transaction Begin constrained (TBEGINC) zeigt; 3A shows an example of a statement Transaction Begin constrained (TBEGINC);

3B eine Ausführungsform mit weiteren Details zu einem Feld der Anweisung TBEGINC von 3A zeigt; 3B an embodiment with further details of a field of instruction TBEGINC of 3A shows;

4 ein Beispiel einer Anweisung Transaction End (TEND) zeigt; 4 an example of a statement Transaction End (TEND) shows;

5 ein Beispiel einer Anweisung Transaction Abort (TABORT) zeigt; 5 an example of a statement Transaction Abort (TABORT) shows;

6 ein Beispiel von verschachtelten Transaktionen zeigt; 6 shows an example of nested transactions;

7 ein Beispiel einer Anweisung NONTRANSACTIONAL STORE (NTSTG) zeigt; 7 shows an example of a NONTRANSACTIONAL STORE (NTSTG) instruction;

8 ein Beispiel einer Anweisung EXTRACT TRANSACTION NESTING DEPTH (ETND) zeigt; 8th shows an example of an EXTRACT TRANSACTION NESTING DEPTH (ETND) statement;

9 ein Beispiel eines Transaktionsdiagnoseblocks zeigt; 9 shows an example of a transaction diagnostic block;

10 beispielhafte Gründe für einen Abbruch sowie zugehörige Abbruchcodes und Bedingungscodes zeigt; 10 shows exemplary reasons for aborting and associated abort codes and condition codes;

11 eine Ausführungsform der Logik zeigt, die dem Ausführen einer Anweisung TBEGINC zugehörig ist; 11 shows an embodiment of the logic associated with executing a TBEGINC instruction;

12 eine Ausführungsform der Logik zeigt, die dem Ausführen einer Anweisung TBEGIN zugehörig ist; 12 shows an embodiment of the logic associated with executing a TBEGIN instruction;

13 eine Ausführungsform der Logik zeigt, die dem Ausführen einer Anweisung TEND zugehörig ist; 13 shows an embodiment of the logic associated with executing a TEND instruction;

14 eine Ausführungsform der Logik zeigt, die der Transaktionsabbruchverarbeitung zugehörig ist; 14 shows an embodiment of the logic associated with the transaction abort processing;

15 eine Ausführungsform der Logik zeigt, die dem Durchführen von Aktionen zugehörig ist, mit denen das Ausführen einer eingeschränkten Transaktion erleichtert wird; 15 Figure 4 shows an embodiment of the logic associated with performing actions to facilitate the execution of a constrained transaction;

16A bis 16C Ausführungsformen der Logik zeigen, mit der das Ausführen einer Transaktion nach einem Transaktionsabbruch erleichtert wird; 16A to 16C Show embodiments of the logic that facilitates the execution of a transaction following a transaction abort;

17A bis 17B ein Beispiel für das Einfügen eines Warteschlangenelements in eine doppelt verknüpfte Liste von Warteschlangenelementen zeigen; 17A to 17B show an example of inserting a queue item into a doubly linked list of queue items;

18 eine Ausführungsform eines Computerprogrammprodukts zeigt; 18 shows an embodiment of a computer program product;

19 eine Ausführungsform eines Host-Computersystems zeigt; 19 shows an embodiment of a host computer system;

20 ein weiteres Beispiel für ein Computersystem zeigt; 20 another example of a computer system shows;

21 ein weiteres Beispiel für ein Computersystem zeigt, das ein Computernetz aufweist; 21 another example of a computer system having a computer network;

22 eine Ausführungsform verschiedener Elemente eines Computersystems zeigt; 22 shows an embodiment of various elements of a computer system;

23A eine Ausführungsform der Ausführeinheit des Computersystems von 22 zeigt; 23A an embodiment of the execution unit of the computer system of 22 shows;

23A eine Ausführungsform der Verzweigungseinheit des Computersystems von 22 zeigt; 23A an embodiment of the branch unit of the computer system of 22 shows;

23A eine Ausführungsform der Lade/Speicher-Einheit des Computersystems von 22 zeigt; und 23A an embodiment of the load / store unit of the computer system of 22 shows; and

24 eine Ausführungsform eines emulierten Host-Computersystems zeigt. 24 shows an embodiment of an emulated host computer system.

AUSFÜHRLICHE BESCHREIBUNGDETAILED DESCRIPTION

Bei einem Aspekt wird eine Einrichtung für transaktionsorientierte Ausführung (TX, Transactional Execution) bereitgestellt. Diese Einrichtung stellt eine Transaktionsverarbeitung für Anweisungen bereit und bietet bei einer oder mehreren Ausführungsformen unterschiedliche Ausführungsmodi, wie unten beschrieben, sowie verschachtelte Ebenen der Transaktionsverarbeitung.In one aspect, a Transactional Execution (TX) device is provided. This facility provides transaction processing for instructions and, in one or more embodiments, provides different execution modes, as described below, as well as nested levels of transaction processing.

Die Einrichtung für transaktionsorientierte Ausführung bringt einen CPU-Status ein, der Modus der transaktionsorientierten Ausführung (TX) genannt wird. Nach einem Zurücksetzen der CPU befindet sich die CPU nicht im TX-Modus. Die CPU geht durch eine TRANSACTION BEGIN-Anweisung in den TX-Modus über. Die CPU verlässt den TX-Modus entweder durch (a) eine äußerste Anweisung TRANSACTION END (weitere Details zu außen und innen folgen) oder (b) einen Abbruch der Transaktion. Im TX-Modus scheinen Speicherzugriffe blockgleichzeitig zu erfolgen, wie durch andere CPUs und das E/A-Teilsystem wahrgenommen. Die Speicherzugriffe (a) werden zum Speichern festgeschrieben, wenn die äußerste Transaktion ohne Abbruch endet (d. h. z. B., wenn in einem in Bezug auf die CPU lokalen Cachespeicher oder Pufferspeicher durchgeführte Aktualisierungen weitergeleitet und in einem realem Speicher gespeichert werden und für andere CPUs sichtbar sind) oder (b) werden verworfen, wenn die Transaktion abgebrochen wird.The transaction-oriented execution device introduces a CPU state called the transaction-oriented execution (TX) mode. After a CPU reset, the CPU is not in TX mode. The CPU goes into TX mode through a TRANSACTION BEGIN instruction. The CPU exits the TX mode either by (a) an outermost TRANSACTION END statement (further outside and inside details follow) or (b) aborting the transaction. In TX mode, memory accesses appear to be block-concurrent, as perceived by other CPUs and the I / O subsystem. The memory accesses (a) are committed for storage when the outermost transaction terminates without aborting (ie, when updates passed in a cache local to the CPU or buffer are stored in real memory and visible to other CPUs ) or (b) are discarded when the transaction is aborted.

Transaktionen können verschachtelt werden. D. h., während sich die CPU im TX-Modus befindet, kann sie eine weitere Anweisung TRANSACTION BEGIN ausführen. Die Anweisung, die bewirkt, dass die CPU in den TX-Modus übergeht, wird äußerste TRANSACTION BEGIN genannt; gleichermaßen wird das Programm als in der äußersten Transaktion befindlich bezeichnet. Nachfolgende Ausführungen von TRANSACTION BEGIN werden innere Anweisungen genannt; und das Programm führt eine innere Transaktion aus. Das Modell stellt eine Mindestverschachtelungstiefe und eine modellabhängige maximale Verschachtelungstiefe bereit. Eine Anweisung EXTRACTION TRANSACTION NESTING DEPTH gibt den aktuellen Verschachtelungstiefenwert zurück und kann bei einer weiteren Ausführungsform einen maximalen Verschachtelungstiefenwert zurückgeben. Diese Technik verwendet ein Modell mit der Bezeichnung „reduzierte Verschachtelung” (flattened nesting), wobei eine Abbruchbedingung in einer beliebigen Verschachtelungstiefe einen Abbruch aller Transaktionsebenen bewirkt, und die Steuerung wird an die der äußersten TRANSACTION BEGIN folgenden Anweisung zurückgegeben.Transactions can be nested. That is, while the CPU is in TX mode, it may execute another TRANSACTION BEGIN instruction. The instruction that causes the CPU to go into TX mode is called the outermost TRANSACTION BEGIN; likewise, the program is said to be in the outermost transaction. Subsequent executions of TRANSACTION BEGIN are called internal instructions; and the program executes an inner transaction. The model provides a minimum nesting depth and a model-dependent maximum nesting depth. An EXTRACTION TRANSACTION NESTING DEPTH statement returns the current Nesting depth value, and may return a maximum nesting depth value in another embodiment. This technique uses a model called "flattened nesting", where an abort condition at any nesting depth causes all transaction levels to abort, and control is returned to the statement following the outermost TRANSACTION BEGIN.

Während des Verarbeitens einer Transaktion steht ein von einer CPU durchgeführter transaktionsorientierter Zugriff in Konflikt mit (a) einem von einer anderen CPU durchgeführten transaktionsorientierten Zugriff oder nichttransaktionsorientiertem Zugriff oder (b) einem von dem E/A-Teilsystem durchgeführten nichttransaktionsorientierten Zugriff, wenn beide Zugriffe auf einen beliebigen Speicherort innerhalb der gleichen Cachespeicherzeile erfolgen und ein oder beide Zugriffe ein Speichervorgang ist bzw. sind. Mit anderen Worten, damit eine transaktionsorientierte Ausführung produktiv ist, muss die CPU beim Durchführen von transaktionsorientierten Zugriffen nicht beobachtet werden, bis sie festschreibt. Dieses Programmiermodell kann in gewissen Umgebungen äußerst effektiv sein; beispielsweise beim Aktualisieren von zwei Punkten in einer doppelt verknüpften Liste von Millionen Elementen. Es kann jedoch weniger effektiv sein, wenn viele Konflikte in Bezug auf die Speicherorte vorliegen, auf die transaktionsorientiert zugegriffen wird.During processing of a transaction, a transaction-oriented access performed by a CPU conflicts with (a) a transaction-oriented access or non-transaction-oriented access performed by another CPU, or (b) a non-transaction-oriented access performed by the I / O subsystem when both accesses any storage location within the same cache line and one or both accesses is a storage operation. In other words, for a transaction-oriented execution to be productive, the CPU does not need to be watched while performing transaction-oriented accesses until it commits. This programming model can be extremely effective in certain environments; for example, updating two points in a doubly linked list of millions of items. However, it can be less effective if there are many conflicts regarding the locations that are accessed in a transaction-oriented manner.

Bei einem Modell der transaktionsorientierten Ausführung (hier als nichteingeschränkte Transaktion bezeichnet) kann das Programm im Fall eines Transaktionsabbruchs entweder versuchen, die Transaktion erneut anzusteuern, in der Hoffnung, dass die Abbruchbedingung nicht mehr vorhanden ist, oder das Programm kann auf einen äquivalenten nichttransaktionsorientierten Pfad „ausweichen” („fall back”). Bei einem weiteren Modell der transaktionsorientierten Ausführung (hier als eingeschränkte Transaktion bezeichnet) wird eine abgebrochene Transaktion von der CPU automatisch erneut angesteuert; liegen keine Einschränkungsverletzungen vor, wird sichergestellt, dass die eingeschränkte Transaktion letztendlich durchgeführt wird.In a transaction-oriented execution model (referred to herein as an unrestricted transaction), in the event of a transaction abort, the program may either attempt to re-initiate the transaction in the hope that the abort condition no longer exists, or the program may default to an equivalent non-transactional path. " dodge "(" fall back "). In another model of transaction-oriented execution (referred to here as a restricted transaction), an aborted transaction is automatically re-addressed by the CPU; If there are no restriction violations, it will be ensured that the restricted transaction will ultimately be performed.

Beim Einleiten einer Transaktion kann das Programm verschiedene Steuerungen festlegen, z. B. (a) welche allgemeinen Register auf ihre ursprünglichen Inhalte zurückgesetzt werden, wenn die Transaktion abgebrochen wird, (b) ob die Transaktion den Gleitkommaregister-Kontext ändern darf, darunter z. B. Gleitkommaregister und das Gleitkomma-Steuerregister, (c) ob die Transaktion Zugriffsregister (ARs, Access Registers) ändern darf; und (d) ob bestimmte Programmausnahmebedingungen blockiert werden, so dass sie keine Unterbrechung verursachen. Wenn eine nichteingeschränkte Transaktion abgebrochen wird, können verschiedene Diagnoseinformationen bereitgestellt werden. Beispielsweise kann die äußerste Anweisung TBEGIN, die eine nichteingeschränkte Transaktion einleitet, einen programmspezifischen Transaktionsdiagnoseblock (TDB) ausweisen. Darüber hinaus kann der TDB im Präfixbereich der CPU oder durch die Statusbeschreibung des Host ausgewiesen auch verwendet werden, wenn die Transaktion aufgrund einer Programmunterbrechung oder einer Bedingung abgebrochen wird, die das Beenden einer interpretativen Ausführung bewirkt.When initiating a transaction, the program may specify various controls, e.g. B. (a) which general registers are reset to their original contents when the transaction is aborted, (b) whether the transaction is allowed to change the floating-point register context, including e.g. Floating point registers and the floating point control register; (c) whether the transaction is allowed to change access registers (ARs); and (d) whether certain program exception conditions are blocked so that they do not cause interruption. When an unrestricted transaction is aborted, various diagnostic information can be provided. For example, the outermost instruction TBEGIN, which initiates an unrestricted transaction, may identify a program-specific transaction diagnostic (TDB) block. In addition, the TDB may also be used in the prefix area of the CPU or as indicated by the status description of the host if the transaction is aborted due to a program interruption or a condition that causes the termination of an interpretive execution.

Oben sind verschiedene Registertypen angeführt. Diese werden im Folgenden ausführlicher beschrieben. Allgemeine Register können als Akkumulatoren bei allgemeinen Rechen- und logischen Operationen verwendet werden. Bei einer Ausführungsform enthält jedes Register 64 Bitpositionen, und es liegen 16 allgemeine Register vor. Die allgemeinen Register werden durch die Zahlen 0 bis 15 gekennzeichnet und in einer Anweisung durch ein 4-Bit-R-Feld ausgewiesen. Einige Anweisungen führen zum Adressieren von mehreren allgemeinen Registern, indem sie mehrere R-Felder aufweisen. Bei einigen Anweisungen wird das Verwenden eines spezifischen allgemeinen Registers impliziert und wird nicht explizit durch ein R-Feld der Anweisung ausgewiesen.Above are listed different types of registers. These will be described in more detail below. General registers can be used as accumulators in general computational and logical operations. In one embodiment, each register contains 64 bit positions and there are 16 general registers. The general registers are identified by the numbers 0 to 15 and identified in a statement by a 4-bit R field. Some instructions result in addressing multiple general registers by having multiple R fields. For some statements, using a specific general register is implied and is not explicitly indicated by an R field of the statement.

Neben ihrer Verwendung als Akkumulatoren bei allgemeinen Rechen- und logischen Operationen werden 15 der 16 allgemeinen Register auch als Basisadresse und Indexregister bei der Adresserzeugung verwendet. In diesen Fällen werden die Register durch ein 4-Bit-B-Feld oder -X-Feld in einer Anweisung ausgewiesen. Ein Wert von Null im B- oder X-Feld legt fest, dass keine Basis oder kein Index anzuwenden ist, und somit wird das allgemeine Register 0 nicht als eine Basisadresse oder einen Index enthaltend ausgewiesen.In addition to their use as accumulators in general computational and logical operations, 15 of the 16 general registers are also used as base address and index registers in address generation. In these cases, the registers are identified by a 4-bit B field or X field in a statement. A value of zero in the B or X field specifies that no base or index is to be applied, and thus the general register 0 is not reported as containing a base address or an index.

Gleitkommaanweisungen verwenden einen Satz von Gleitkommaregistern. Die CPU hat bei einer Ausführungsform 16 Gleitkommaregister. Die Gleitkommaregister werden durch die Zahlen 0 bis 15 gekennzeichnet und in einer Gleitkommaanweisung durch ein 4-Bit-R-Feld ausgewiesen. Jedes Gleitkommaregister ist 64 Bit lang und kann entweder einen kurzen (32-Bit-) oder einen langen (64-Bit-)Gleitkommaoperanden enthalten.Floating point instructions use a set of floating point registers. The CPU has 16 floating point registers in one embodiment. The floating point registers are identified by the numbers 0 through 15 and identified in a floating point instruction by a 4-bit R field. Each floating-point register is 64 bits long and may contain either a short (32-bit) or a long (64-bit) floating-point operand.

Ein Gleitkommasteuer-(Floating Point Control, FPC-)Register ist ein 32-Bit-Register, das Maskenbits, Markierungsbits, einen Datenausnahmecode und Rundungsmodusbits enthält und während der Verarbeitung von Gleitkommaoperationen verwendet wird.A floating point control (FPC) register is a 32-bit register containing mask bits, flag bits, a data exception code, and rounding mode bits used during the processing of floating point operations.

Darüber hinaus hat die CPU bei einer Ausführungsform 16 Steuerregister, wobei jedes 64 Bit-Positionen aufweist. Die Bit-Positionen in den Registern sind bestimmten Einrichtungen im System zugewiesen, z. B. Programmereignisaufzeichnung (PER, Program Event Recording) (im Folgenden erörtert), und werden entweder verwendet, um festzulegen, dass eine Operation erfolgen kann, oder um spezifische Informationen zu liefern, die die Einrichtung benötigt. Bei einer Ausführungsform werden für die Transaktionseinrichtung CR0 (Bits 8 und 9) und CR2 (Bits 61 bis 63) verwendet, wie im Folgenden beschrieben. In addition, in one embodiment, the CPU has 16 control registers, each having 64 bit positions. The bit positions in the registers are assigned to certain devices in the system, e.g. Program Event Recording (PER) (discussed below), and are either used to determine that an operation may be made or to provide specific information that the device requires. In one embodiment, for the transaction device, CR0 (bits 8 and 9) and CR2 (bits 61 to 63) are used, as described below.

Die CPU hat beispielsweise 16 Zugriffsregister mit der Nummerierung 0 bis 15. Ein Zugriffsregister besteht aus 32 Bitpositionen, die eine indirekte Spezifikation eines Adressraum-Steuerelements (ASCE, Address Space Control Element) enthalten. Ein Adressraum-Steuerelement ist ein Parameter, der vom Mechanismus der dynamischen Adressumsetzung (DAT, Dynamic Address Translation) verwendet wird, um Verweise auf einen entsprechenden Adressraum umzusetzen. Wenn sich die CPU in einem Modus befindet, der Zugriffsregistermodus genannt wird (von den Bits im Programmstatuswort (PSW) gesteuert), weist ein zum Spezifizieren einer logischen Adresse für einen Speicheroperandenverweis verwendetes Anweisungs-B-Feld ein Zugriffsregister aus, und das vom Zugriffsregister spezifizierte Adressraum-Speicherelement wird von der DAT für den durchgeführten Verweis verwendet. Bei einigen Anweisungen wird ein R-Feld anstatt eines B-Feldes verwendet. Anweisungen werden zum Laden und Speichern der Inhalte der Zugriffsregister und zum Versetzen der Inhalte eines Zugriffsregisters in ein anderes bereitgestellt.For example, the CPU has 16 access registers numbered 0 through 15. An access register consists of 32 bit positions containing an indirect address space control element (ASCE) specification. An address space control is a parameter used by the dynamic address translation (DAT) mechanism to translate references to a corresponding address space. When the CPU is in a mode called access register mode (controlled by the bits in the program status word (PSW)), an instruction B field used to specify a logical address for a memory operand reference has an access register specified by the access register Address space storage element is used by the DAT for the reference made. Some statements use an R field instead of a B field. Instructions are provided for loading and storing the contents of the access registers and for moving the contents of one access register to another.

Jedes der Zugriffsregister 1 bis 15 kann einen beliebigen Adressraum ausweisen. Das Zugriffsregister 0 weist den Primäranweisungsraum aus. Wenn eines der Zugriffsregister 1 bis 15 verwendet wird, um einen Adressraum auszuweisen, ermittelt die CPU, welcher Adressraum ausgewiesen ist, indem sie die Inhalte des Zugriffsregisters umsetzt. Wenn das Zugriffsregister 0 verwendet wird, um einen Adressraum auszuweisen, behandelt die CPU das Zugriffsregister als den Primäranweisungsraum ausweisend und untersucht die tatsächlichen Inhalte des Zugriffsregisters nicht. Aus diesem Grund können die 16 Zugriffsregister den Primäranweisungsraum und maximal 15 andere Räume zu einem beliebigen Zeitpunkt ausweisen.Each of the access registers 1 to 15 may identify any address space. The access register 0 rejects the primary instruction space. When one of the access registers 1 through 15 is used to identify an address space, the CPU determines which address space is designated by translating the contents of the access register. When the access register 0 is used to designate an address space, the CPU treats the access register as having the primary instruction space and does not examine the actual contents of the access register. For this reason, the 16 access registers can identify the primary instruction room and a maximum of 15 other rooms at any one time.

Bei einer Ausführungsform liegen mehrere Adressraumtypen vor. Ein Adressraum ist eine aufeinanderfolgende Abfolge von ganzen Zahlen (virtuelle Adressen) gemeinsam mit den spezifischen Umwandlungsparametern, die ermöglichen, dass jede Zahl einer Byte-Position im Speicher zugeordnet wird. Die Abfolge beginnt bei Null und setzt von links nach rechts fort.In one embodiment, there are multiple types of address spaces. An address space is a consecutive sequence of integers (virtual addresses) along with the specific conversion parameters that allow each number to be assigned to a byte position in memory. The sequence starts at zero and continues from left to right.

Beispielsweise bei der z/Architecture wird, wenn eine virtuelle Adresse von einer CPU zum Zugreifen auf einen Hauptspeicher (auch als Arbeitsspeicher bekannt) verwendet wird, diese zunächst mithilfe einer dynamischen Adressumsetzung (DAT) in einer reale Adresse und danach durch Voranstellen in eine absolute Adresse umgewandelt. Die DAT kann eine bis fünf Tabellenebenen (Seite, Segment, Region drei, Region zwei und Region eins) als Umwandlungsparameter verwenden. Das Ausweisen (Ursprung und Länge) der Tabelle der höchsten Ebene für einen spezifischen Adressraum wird Adressraum-Steuerelement genannt und wird zur Verwendung durch die DAT in einem Steuerregister oder wie von einem Zugriffsregister spezifiziert vorgesehen. Alternativ kann das Adressraum-Steuerelement für einen Adressraum ein Ausweisen eines realen Raums sein, das anzeigt, dass DAT die virtuelle Adresse umsetzen kann, indem sie sie lediglich als eine reale Adresse behandelt und keine Tabellen verwendet.For example, in z / Architecture, when a virtual address is used by a CPU to access a main memory (also known as memory), it first uses dynamic address translation (DAT) in a real address and then prefixing it to an absolute address transformed. The DAT can use one to five table levels (page, segment, region three, region two, and region one) as transformation parameters. The designation (origin and length) of the highest-level table for a specific address space is called an address space control and is provided for use by the DAT in a control register or as specified by an access register. Alternatively, the address space control for an address space may be a real space designation indicating that DAT can translate the virtual address merely by treating it as a real address and not using tables.

Die DAT verwendet die Adressraum-Steuerelemente zu unterschiedlichen Zeitpunkten in unterschiedlichen Steuerregistern oder wie durch die Zugriffsregister spezifiziert. Die Wahl wird durch den Umsetzungsmodus bestimmt, der im aktuellen PSW spezifiziert ist. Es sind weitere Umsetzungsmodi verfügbar: Primärbereichsmodus, Sekundärbereichsmodus, Zugriffsregistermodus und Modus für Ausgangsspeicherbereich. Je nach Umsetzungsmodus sind unterschiedliche Adressräume adressierbar.The DAT uses the address space controls at different times in different control registers or as specified by the access registers. The choice is determined by the conversion mode specified in the current PSW. Other conversion modes are available: primary area mode, secondary area mode, access register mode, and output memory area mode. Depending on the conversion mode, different address spaces can be addressed.

In jedem Fall kann die CPU, wenn sich die CPU im Primärbereichsmodus oder Sekundärbereichsmodus befindet, virtuelle Adressen umsetzen, die zu zwei Adressräumen – dem Primäradressraum und dem Sekundäradressraum – gehören. In jedem Fall kann die CPU, wenn sie sich im Zugriffsregistermodus befindet, virtuelle Adressen von bis zu 16 Adressräumen – dem Primäradressraum und bis zu 15 AR-spezifizierte Adressräume – umsetzen. In jedem Fall kann die CPU, wenn sie sich im Modus für Ausgangsspeicherbereich befindet, virtuelle Adressen des Speicherbereichs für Ausgangsadresse umsetzen.In either case, when the CPU is in primary-range or secondary-range mode, the CPU may implement virtual addresses belonging to two address spaces-the primary address space and the secondary address space. In either case, the CPU, when in the access register mode, can translate virtual addresses of up to 16 address spaces - the primary address space and up to 15 AR-specified address spaces. In either case, the CPU, when in the Outbound Memory Area mode, can translate virtual addresses of the Outbound Address Space.

Der Primäradressraum wird als solcher gekennzeichnet, da er aus primären virtuellen Adressen besteht, die mithilfe des primären Adressraum-Steuerelements (ASCE) umgesetzt werden. Gleichermaßen besteht der Sekundäradressraum aus sekundären virtuellen Adressen, die mithilfe des sekundären ASCE umgesetzt werden; die AR-spezifizierten Adressräume bestehen aus AR-spezifizierten virtuellen Adressen, die mithilfe von AR-spezifizierten ASCEs umgesetzt werden; und der Speicherbereich für Ausgangsadresse besteht aus virtuellen Ausgangsadressen, die mithilfe des Ausgangs-ASCE umgesetzt werden. Die primären und sekundären ASCEs liegen im Steuerregister 1 bzw. 7 vor. AR-spezifizierte ASCEs liegen in Einträgen der zweiten Tabelle für ASN vor, die mithilfe der Steuerregister 2, 5 und 8 über einen Prozess lokalisiert werden, der sich Zugriffsregisterumsetzung (ART, Access Register Translation) nennt. Das Ausgangs-ASCE liegt im Steuerregister 13 vor.The primary address space is identified as such because it consists of primary virtual addresses that are translated using the primary address space control (ASCE). Likewise, the secondary address space consists of secondary virtual addresses that are translated using the secondary ASCE; the AR-specified address spaces consist of AR-specified virtual addresses that implemented using AR-specified ASCEs; and the output address storage area is made up of virtual output addresses that are translated using the output ASCE. The primary and secondary ASCEs are present in control registers 1 and 7, respectively. AR-specified ASCEs are present in entries of the second table for ASN that are located using the control registers 2, 5 and 8 via a process called Access Register Translation (ART). The output ASCE is present in the control register 13.

Eine Ausführungsform einer Datenverarbeitungsumgebung, die eine oder mehrere Aspekte der hier beschriebenen Transaktionseinrichtung integriert und verwendet, wird in Bezug auf 1 beschrieben.An embodiment of a computing environment that integrates and utilizes one or more aspects of the transaction device described herein will be described with reference to FIG 1 described.

Unter Bezugnahme auf 1 beruht eine Datenverarbeitungsumgebung 100 bei einem Beispiel auf der z/Architecture, die von der International Business Machines (IBM®) Corporation, Armonk, New York, angeboten wird. Die z/Architecture ist in einer IBM-Veröffentlichung mit dem Titel „z/Architecture – Principles of Operation”, Veröffentlichungsnummer SA22-7932-08, 9. Ausgabe, August 2010 , beschrieben, die hiermit durch Bezugnahme in ihrer Gesamtheit aufgenommen ist.With reference to 1 is based on a computing environment 100 in an example on z / Architecture offered by International Business Machines ( IBM® ) Corporation, Armonk, New York. The z / Architecture is titled in an IBM publication "Z / Architecture - Principles of Operation", publication number SA22-7932-08, 9th edition, August 2010 , which is hereby incorporated by reference in its entirety.

Z/ARCHITECTURE, IBM, und Z/OS und Z/VM (im Folgenden verwiesen) sind eingetragene Marken der International Business Machines Corporation, Armonk, New York. Andere hier verwendete Namen können eingetragene Marken, Marken oder Produktnamen der International Machines Corporation oder anderer Unternehmen sein.Z / ARCHITECTURE, IBM, and Z / OS and Z / VM (hereinafter referred to) are registered trademarks of International Business Machines Corporation, Armonk, New York. Other names used herein may be registered trademarks, trademarks or product names of International Machines Corporation or other companies.

Beispielsweise enthält die Datenverarbeitungsumgebung 100 einen Zentralprozessorkomplex (CPC, Central Processor Complex) 102, der über eine oder mehrere Steuereinheiten 108 mit einer oder mehreren Eingabe/Ausgabe-(E/A-)Einheiten 106 verbunden ist. Der Zentralprozessorkomplex 102 enthält beispielsweise einen oder mehrere Zentralprozessoren, eine oder mehrere Partitionen 112 (z. B. logische Partitionen, LP), einen Hypervisor 114 für logische Partitionen und ein Eingabe/Ausgabe-Teilsystem 115, die jeweils im Folgenden beschrieben sind.For example, the computing environment contains 100 a central processor complex (CPC) 102 that has one or more control units 108 with one or more input / output (I / O) units 106 connected is. The central processor complex 102 contains, for example, one or more central processors, one or more partitions 112 (eg logical partitions, LP), a hypervisor 114 for logical partitions and an input / output subsystem 115 , which are each described below.

Die Zentralprozessoren 110 sind physische Prozessorressourcen, die den logischen Partitionen zugeordnet sind. Insbesondere hat jede logische Partition 112 einen oder mehrere logische Prozessoren, wobei jeder davon den gesamten der Partition zugeordneten physischen Prozessor 110 oder einen Teil davon repräsentiert. Die logischen Prozessoren einer bestimmten Partition 112 können entweder speziell für die Partition vorgesehen sein, so dass die zugrunde liegende Prozessorressource 110 für diese Partition reserviert ist; oder sie können gemeinsam mit einer anderen Partition genutzt werden, so dass die zugrunde liegende Ressource möglicherweise für eine weitere Partition zur Verfügung steht.The central processors 110 are physical processor resources associated with the logical partitions. In particular, every logical partition has 112 one or more logical processors, each of which is the entire physical processor associated with the partition 110 or part of it. The logical processors of a particular partition 112 can either be dedicated to the partition, so that the underlying processor resource 110 reserved for this partition; or they can be shared with another partition so that the underlying resource may be available for another partition.

Eine logische Partition agiert als separates System und enthält eine oder mehrere Anwendungen und gegebenenfalls ein residentes Betriebssystem, wobei dies bei jeder logischen Partition unterschiedlich sein kann. Bei einer Ausführungsform ist das Betriebssystem das z/OS-Betriebssystem, das z/VM-Betriebssystem, das z/Linux-Betriebssystem oder das TPF-Betriebssystem, das von der International Business Machines Corporation, Armonk, New York, angeboten wird. Die logischen Partitionen 112 werden von einem Hypervisor 114 für logische Partitionen verwaltet, der durch auf Prozessoren 110 ausgeführte Firmware implementiert ist. Wie hier verwendet, beinhaltet Firmware z. B. den Mikrocode und/oder den Millicode des Prozessors. Sie beinhaltet beispielsweise Anweisungen auf Hardware-Ebene und/oder Datenstrukturen, die bei der Implementierung eines Maschinencodes der höheren Ebene verwendet werden. Bei einer Ausführungsform beinhaltet sie beispielsweise einen proprietären Code, der für gewöhnlich als Mikrocode, der eine vertrauenswürdige Software enthält, oder als Mikrocode bereitgestellt wird, der für die zugrunde liegende Hardware spezifisch ist und den Zugriff des Betriebssystems auf die System-Hardware steuert.A logical partition acts as a separate system and contains one or more applications and possibly a resident operating system, which may be different for each logical partition. In one embodiment, the operating system is the z / OS operating system, the z / VM operating system, the z / Linux operating system, or the TPF operating system offered by International Business Machines Corporation of Armonk, New York. The logical partitions 112 be from a hypervisor 114 managed for logical partitions that through on processors 110 implemented firmware is implemented. As used herein, firmware includes, for. As the microcode and / or the millicode of the processor. It includes, for example, hardware-level instructions and / or data structures used in the implementation of higher-level machine code. For example, in one embodiment, it includes proprietary code, usually provided as microcode containing trusted software, or as microcode specific to the underlying hardware and controlling the access of the operating system to the system hardware.

Die logischen Partitionen und der Hypervisor für logische Partitionen weisen jeweils ein oder mehrere Programme auf, die sich in jeweiligen Partitionen eines Zentralspeichers befinden, der den Zentralprozessoren zugehörig ist. Ein Beispiel für den Hypervisor 114 für logische Partitionen ist der Prozessor Resource/System Manager (PR/SM), der von der International Business Machines Corporation, Armonk, New York, angeboten wird.The logical partitions and the logical partition hypervisor each have one or more programs residing in respective partitions of a central memory associated with the central processors. An example of the hypervisor 114 for logical partitions, the processor is Resource / System Manager (PR / SM) offered by International Business Machines Corporation of Armonk, New York.

Das Eingabe/Ausgabe-Teilsystem 115 steuert den Datenfluss zwischen den Eingabe/Ausgabe-Einheiten 106 und dem Hauptspeicher (auch als Arbeitsspeicher bekannt). Es ist mit dem Zentralverarbeitungskomplex dahingehend verbunden, dass es ein Teil des Zentralverarbeitungskomplexes sein oder getrennt davon vorliegen kann. Das E/A-Teilsystem nimmt den Zentralprozessoren die Aufgabe des direkten Datenaustauschs mit den Eingabe/Ausgabe-Einheiten ab und ermöglicht, dass die Datenverarbeitung gleichzeitig mit der Eingabe/Ausgabe-Verarbeitung fortfährt. Um einen Datenaustausch bereitzustellen, verwendet das E/A-Teilsystem E/A-Kommunikationsadapter. Es gibt verschiedene Typen von Kommunikationsadaptern, beispielsweise Kanäle, E/A-Adapter, PCI-Karten, Ethernet-Karten, Small-Computer Storage-Interface-(SCSI-)Karten usw. Bei dem bestimmten hier beschriebenen Beispiel sind die E/A-Kommunikationsadapter Kanäle, und aus diesem Grund wird das E/A-Teilsystem hier als Kanal-Teilsystem bezeichnet. Dies ist jedoch lediglich ein Beispiel. Es können andere Typen von E/A-Teilsystemen verwendet werden.The input / output subsystem 115 controls the flow of data between the input / output units 106 and the main memory (also known as memory). It is connected to the central processing complex in that it may be part of or separate from the central processing complex. The I / O subsystem relieves the central processors of the task of direct data exchange with the I / O devices and allows the data processing to be performed simultaneously with the I / O device Input / output processing continues. To provide data exchange, the I / O subsystem uses I / O communication adapters. There are several types of communication adapters, such as channels, I / O adapters, PCI cards, Ethernet cards, Small Computer Storage Interface (SCSI) cards, etc. For the particular example described here, the I / O Communication Adapter Channels, and therefore the I / O subsystem is referred to herein as a channel subsystem. This is just an example. Other types of I / O subsystems may be used.

Das E/A-Teilsystem verwendet einen oder mehrere Eingabe/Ausgabe-Pfade wie Datenübertragungsverbindungen beim Verwalten des Datenflusses zu den Eingabe/Ausgabe-Einheiten 106 oder von diesen. Bei diesem bestimmten Beispiel werden diese Pfade Kanalpfade genannt, da die Kommunikationsadapter Kanäle sind.The I / O subsystem uses one or more input / output paths, such as data links, in managing the flow of data to the input / output devices 106 or from these. In this particular example, these paths are called channel paths because the communication adapters are channels.

Die oben beschriebene Datenverarbeitungsumgebung ist lediglich ein Beispiel für eine Datenverarbeitungsumgebung, die verwendet werden kann. Andere Umgebungen, beispielsweise nichtpartitionierte Umgebungen, andere partitionierte Umgebungen und/oder emulierte Umgebungen, ohne jedoch auf diese beschränkt zu sein, können verwendet werden und sind nicht auf eine Umgebung beschränkt.The data processing environment described above is merely one example of a computing environment that can be used. Other environments, such as, but not limited to, non-partitioned environments, other partitioned environments, and / or emulated environments may be used and are not limited to one environment.

Gemäß einem oder mehreren Aspekten handelt es sich bei der Einrichtung für transaktionsorientierte Ausführung um eine CPU-Erweiterung, die das Mittel bereitstellt, mit dem die CPU eine Anweisungsabfolge – als Transaktion bekannt – ausführen kann, die gegebenenfalls auf mehrere Speicherorte zugreifen kann, was das Aktualisieren dieser Speicherorte einschließt. Wie durch andere CPUs und das E/A-Teilsystem wahrgenommen, wird die Transaktion entweder (a) in ihrer Gesamtheit als einzelne atomare Operation ausgeführt oder (b) abgebrochen, wobei gegebenenfalls kein Nachweis dafür zurückbleibt, dass sie jemals ausgeführt worden ist (mit Ausnahme bestimmter hier beschriebener Bedingungen). Somit kann eine erfolgreich ausgeführte Transaktion zahlreiche Speicherorte ohne eine spezifische Sperre aktualisieren, die bei einem klassischen Multiprozessormodell erforderlich ist.In one or more aspects, the transaction-oriented execution device is a CPU extension that provides the means by which the CPU may execute an instruction sequence known as a transaction, which may access multiple storage locations, as appropriate, updating this location includes. As perceived by other CPUs and the I / O subsystem, the transaction is either (a) executed in its entirety as a single atomic operation, or (b) aborted, with no evidence that it has ever been executed (except certain conditions described here). Thus, a successfully executed transaction can update numerous storage locations without a specific lock, which is required in a classic multiprocessor model.

Die Einrichtung für transaktionsorientierte Ausführung enthält beispielsweise eine oder mehrere Steuerungen; eine oder mehrere Anweisungen; Transaktionsverarbeitung, darunter eingeschränkte und nichteingeschränkte Ausführung; und Abbruchverarbeitung, die im Folgenden jeweils ausführlicher beschrieben werden.The transaction-oriented execution device includes, for example, one or more controllers; one or more instructions; Transaction processing, including restricted and unrestricted execution; and abort processing, which will be described in more detail below.

Bei einer Ausführungsform werden drei spezielle Steuerungen verwendet, die ein Transaktionsabbruch-Programmstatuswort (PSW), eine Transaktionsdiagnoseblock-(TDB-)Adresse und eine Transaktionsverschachtelungstiefe; fünf Steuerregisterbits; und sechs allgemeine Anweisungen, darunter TRANSACTION BEGIN (eingeschränkt und nichteingeschränkt), TRANSACTION END, EXTRACT TRANSACTION NESTING DEPTH, TRANSACTION ABORT und NONTRANSACTIONAL STORE enthalten, um die Einrichtung für transaktionsorientierte Ausführung zu steuern. Wenn die Einrichtung installiert ist, ist sie beispielsweise in allen CPUs in der Konfiguration installiert. Eine Einrichtungsanzeige zeigt bei einer Implementierung gegebenenfalls durch Bit 73 an, dass die Transaktionsausführeinrichtung installiert ist.In one embodiment, three special controls are used, including a transaction abort program status word (PSW), a transaction diagnostic block (TDB) address, and a transaction nesting depth; five control register bits; and six general statements, including TRANSACTION BEGIN (Restricted and Unrestricted), TRANSACTION END, EXTRACT TRANSACTION, NESTING DEPTH, TRANSACTION ABORT, and NONTRANSACTIONAL STORE, to control the facility for transactional execution. For example, if the device is installed, it is installed in all CPUs in the configuration. A device indicator, in an implementation, optionally through bit 73, indicates that the transaction executor is installed.

Wenn die Einrichtung für transaktionsorientierte Ausführung installiert ist, stellt die Konfiguration eine Einrichtung für nichteingeschränkte transaktionsorientierte Ausführung und gegebenenfalls eine eingeschränkte Einrichtung für transaktionsorientierte Ausführung bereit, die jeweils im Folgenden beschrieben sind. Wenn Einrichtungsanzeigen 50 und 73 beispielsweise beide eins sind, ist die eingeschränkte Einrichtung für transaktionsorientierte Ausführung installiert. Beide Einrichtungsanzeigen werden an spezifizierten Speicherorten im Speicher gespeichert.When the transactional execution facility is installed, the configuration provides a facility for unrestricted transactional execution and, optionally, a restricted transactional execution facility, each of which is described below. For example, if device displays 50 and 73 are both one, the limited facility for transaction-oriented execution is installed. Both device displays are stored in specified locations in memory.

Wie hier verwendet, bezieht sich die Anweisungsbezeichnung TRANSACTION BEGIN auf die Anweisungen mit den mnemonischen Zeichen TBEGIN (Transaction Begin für eine nichteingeschränkte Transaktion) und TBEGINC (Transaction Begin für eine eingeschränkte Transaktion). Erörterungen bezüglich einer spezifischen Anweisung sind durch die Anweisungsbezeichnung, gefolgt von dem mnemonischen Zeichen in runden oder eckigen Klammern, oder einfach durch das mnemonische Zeichen angezeigt.As used herein, the statement name TRANSACTION BEGIN refers to the instructions with the mnemonic characters TBEGIN (Transaction Begin for an unrestricted transaction) and TBEGINC (Transaction Begin for a Restricted Transaction). Discussion of a specific instruction is indicated by the instruction name followed by the mnemonic in round or square brackets, or simply by the mnemonic.

Eine Ausführungsform eines Formats einer Anweisung TRANSACTION BEGIN (TBEGIN) ist in den 2A bis 2B gezeigt. Beispielsweise enthält eine Anweisung TBEGIN 200 ein Operationscodefeld 202, das einen Operationscode beinhaltet, der eine nichteingeschränkte Transaction Begin-Transaktion spezifiziert; ein Basisfeld (B1) 204; ein Verschiebungsfeld (D1) 206 und ein Direktfeld (I2) 208. Wenn das B1-Feld ungleich null ist, werden die von B1 204 spezifizierten Inhalte des allgemeinen Registers zu D1 206 hinzugefügt, um die Adresse des ersten Operanden zu erhalten.An embodiment of a format of a statement TRANSACTION BEGIN (TBEGIN) is in the 2A to 2 B shown. For example, a statement contains TBEGIN 200 an opcode field 202 including an operation code specifying an unconstrained Transaction Begin transaction; a basic field (B 1 ) 204 ; a displacement field (D 1 ) 206 and a direct field (I 2 ) 208 , If the B 1 field is nonzero then those of B 1 204 specified contents of the general register for D 1 206 added to get the address of the first operand.

Wenn das B1-Feld ungleich null ist, gilt Folgendes:

  • * Wenn die Transaktionsverschachtelungstiefe zu Beginn null ist, weist die Adresse des ersten Operanden den Speicherort des 256-Byte-Transaktionsdiagnoseblocks, TBEGIN-spezifizierter TDB genannt (weiter unten beschrieben), aus, in den verschiedene Diagnoseinformationen gespeichert werden können, wenn die Transaktion abgebrochen wird. Wenn sich die CPU im Primärbereichmodus oder Zugriffsregistermodus befindet, weist die Adresse des ersten Operanden einen Speicherort im Primäradressraum aus. Wenn sich die CPU im Sekundärbereichmodus oder Modus für Ausgangsspeicherbereich befindet, weist die Adresse des ersten Operanden einen Speicherort im Sekundäradressraum bzw. im Speicherbereich für Ausgangsadresse aus. Wenn DAT ausgeschaltet ist, weist die Transaktionsdiagnoseblock-(TDB-)Adresse (TDBA) einen Speicherort in einem realen Speicher aus. Es wird die Speicherzugänglichkeit für den ersten Operanden ermittelt. Ist er zugänglich, wird die logische Adresse des Operanden in der Transaktionsdiagnoseblock-Adresse (TBDA) platziert, und die TDBA ist gültig.
  • * Wenn sich die CPU bereits im Modus der nichteingeschränkten transaktionsorientierten Ausführung befindet, wird die TDBA nicht geändert, und es kann nicht vorhergesagt werden, ob der erste Operand auf Zugänglichkeit geprüft wurde.
If the B 1 field is not equal to zero, the following applies:
  • If the transaction nesting depth is initially zero, the address of the first operand rejects the location of the 256-byte transaction diagnostic block, called TBEGIN-specified TDB (described below), into which various diagnostic information can be stored if the transaction is aborted , When the CPU is in primary-range mode or access-register mode, the address of the first operand indicates a location in the primary address space. When the CPU is in Secondary or Outbound Memory mode, the first operand address indicates a location in the secondary address space or in the output address space. When DAT is off, the Transaction Diagnostic Block (TDB) Address (TDBA) identifies a location in real memory. The memory accessibility for the first operand is determined. If it is accessible, the logical address of the operand is placed in the Transaction Diagnostic Block Address (TBDA) and the TDBA is valid.
  • * If the CPU is already in the unrestricted transactional execution mode, the TDBA is not changed, and it can not be predicted whether the first operand has been checked for accessibility.

Wenn das B1-Feld null ist, werden für den ersten Operanden keine Zugriffsausnahmen erkannt, und die TDBA für die äußerste TBEGIN-Anweisung ist ungültig.If the B 1 field is zero, no access exceptions are detected for the first operand, and the TDBA for the outermost TBEGIN statement is invalid.

Die Bits des I2-Felds sind bei einem Beispiel wie folgt definiert:The bits of the I 2 field are defined in one example as follows:

Speichermaske für allgemeine Register (GRSM, General Register Save Mask) 210 (2B): Bits 0 bis 7 des I2-Feldes enthalten die Speichermaske für allgemeine Register (GRSM). Jedes Bit der GRSM stellt ein geradzahliges-ungeradzahliges Paar allgemeiner Register dar, wobei Bit 0 Register 0 und 1 darstellt, Bit 1 Register 2 und 3 darstellt usw. Wenn ein Bit in der GRSM der äußersten TBEGIN-Anweisung null ist, wird das entsprechende Registerpaar nicht gespeichert. Wenn ein Bit in der GRSM der äußersten TBEGIN-Anweisung eins ist, wird das entsprechende Registerpaar in einem modellabhängigen Speicherort gespeichert, der für das Programm nicht direkt zugänglich ist.Memory Mask for General Registers (GRSM, General Register Save Mask) 210 ( 2 B ): Bits 0 to 7 of the I 2 field contain the memory register for general registers (GRSM). Each bit of the GRSM represents an even-odd pair of general registers, where bit 0 represents registers 0 and 1, bit 1 represents registers 2 and 3, and so forth. If a bit in the GRSM of the outermost TBEGIN instruction becomes zero, the corresponding register pair becomes not saved. If a bit in the GRSM of the outermost TBEGIN instruction is one, the corresponding register pair is stored in a model-dependent storage location that is not directly accessible to the program.

Wenn die Transaktion abgebrochen wird, werden gespeicherte Registerpaare wieder auf ihre Inhalte zurückgesetzt, die sie hatten, als die äußerste Anweisung TBEGIN ausgeführt wurde. Die Inhalte aller anderen (nicht gespeicherten) allgemeinen Register werden bei einem Transaktionsabbruch nicht wiederhergestellt.When the transaction is aborted, stored register pairs are reset to their contents that they had when the outermost TBEGIN statement was executed. The contents of all other (non-stored) general registers are not restored in a transaction abort.

Die Speichermaske für allgemeine Register wird bei allen TBEGINs mit Ausnahme der äußersten ignoriert.The memory register for general registers is ignored on all TBEGINs except the outermost ones.

AR-Änderung zulassen (A) 212: Die A-Steuerung, Bit 12 des I2-Felds, steuert, ob die Transaktion ein Zugriffsregister ändern darf. Die effektive Steuerung zum Zulassen einer AR-Änderung ist das logische UND der A-Steuerung in der TBEGIN-Anweisung für die aktuelle Verschachtelungsebene und für alle anderen äußeren Ebenen.Allow AR change (A) 212 The A control, bit 12 of the I 2 field, controls whether the transaction is allowed to modify an access register. The effective control for allowing an AR change is the logical AND of the A control in the TBEGIN statement for the current nest level and for all other outer levels.

Wenn die effektive A-Steuerung null ist, wird die Transaktion mit einem Abbruchcode 11 (eingeschränkte Anweisung) abgebrochen, wenn versucht wird, ein Zugriffsregister zu ändern. Wenn die effektive A-Steuerung eins ist, wird die Transaktion nicht abgebrochen, wenn ein Zugriffsregister geändert wird (bei Fehlen anderer Abbruchsbedingungen).If the effective A-control is zero, the transaction is aborted with an abort code 11 (restricted instruction) when attempting to change an access register. If the effective A-control is one, the transaction is not aborted when an access register is changed (in the absence of other abort conditions).

Gleitkommaoperation zulassen (F) 214: Die F-Steuerung, Bit 13 des I2-Feldes, steuert, ob die Transaktion die spezifizierten Gleitkommaanweisungen ausführen darf. Die effektive Steuerung zum Zulassen einer Gleitkommaoperation ist das logische UND der F-Steuerung in der Anweisung TBEGIN für die aktuelle Verschachtelungsebene und für alle äußeren Ebenen.Allow floating point operation (F) 214 : The F control, bit 13 of the I 2 field, controls whether the transaction is allowed to execute the specified floating point instructions. The effective control for allowing floating point operation is the logical AND of the F control in the TBEGIN instruction for the current nest level and for all outer levels.

Wenn die effektive F-Steuerung null ist, wird (a) die Transaktion mit einem Abbruchcode 11 (eingeschränkte Anweisung) abgebrochen, wenn versucht wird, eine Gleitkommaanweisung auszuführen, und (b) der Datenausnahmecode (DXC, Data Exception Code) in Byte 2 des Gleitkomma-Steuerregisters (FPCR) von keiner Datenausnahme-Programmausnahme-Bedingung gesetzt. Wenn die effektive F-Steuerung eins ist, (a) wird die Transaktion nicht abgebrochen, wenn versucht wird, eine Gleitkommaanweisung auszuführen (wenn keine andere Abbruchbedingung vorliegt), und (b) kann der DXC im FPCR von einer Datenausnahme-Programmausnahme-Bedingung gesetzt werden.If the effective F control is null, (a) the transaction is aborted with an abort code 11 (restricted instruction) when attempting to execute a floating point instruction, and (b) the Data Exception Code (DXC) in byte 2 of the Floating point control register (FPCR) set by no data exception program exception condition. If the effective F control is one, (a) the transaction is not aborted when attempting to execute a floating point instruction (if no other abort condition exists), and (b) the DXC in the FPCR may be set by a Data Exception Program Exception condition become.

Programmunterbrechungsfilterungs-Steuerung (PIFC, Programm Interruption Filtering Control) 216: Bits 14 bis 15 des I2-Feldes sind die Programmunterbrechungsfilterungs-Steuerung (PIFC). Die PIFC steuert, ob gewisse Klassen von Programmausnahmebedingungen (z. B. Adressierausnahme, Datenausnahme, Operationsausnahme, Schutzausnahme usw.), die auftreten, während sich die CPU im Modus der transaktionsorientierten Ausführung befindet, zu einer Unterbrechung führen. Program Interrupt Filtering Control (PIFC, Program Interruption Filtering Control) 216 Bits 14 to 15 of the I 2 field are the Program Interrupt Filtering Control (PIFC). The PIFC controls whether certain classes of program exceptions (e.g., addressing exception, data exception, operation exception, protection exception, etc.) that occur while the CPU is in transactional execution mode result in an interrupt.

Die effektive PIFC ist der höchste Wert der PIFC in der Anweisung TBEGIN für die aktuelle Verschachtelungsebene und für alle äußeren Ebenen. Wenn die effektive PIFC null ist, führen alle Programmausnahmebedingungen zu einer Unterbrechung. Wenn die effektive PIFC eins ist, führen Programmausnahmebedingungen mit einer Klasse 1 und 2 der transaktionsorientierten Ausführung zu einer Unterbrechung. (Jeder Programmausnahmebedingung ist je nach Schweregrad der Ausnahme zumindest eine Klasse der transaktionsorientierten Ausführung zugewiesen. Der Schweregrad beruht auf der Wahrscheinlichkeit einer Wiederherstellung während einer wiederholten Ausführung der transaktionsorientierten Ausführung und darauf, ob das Betriebssystem die Unterbrechung sehen muss.) Wenn die effektive PIFC zwei ist, führen Programmausnahmebedingungen mit einer Klasse 1 der transaktionsorientierten Ausführung zu einer Unterbrechung. Eine PIFC von 3 ist reserviert.The effective PIFC is the highest value of the PIFC in the TBEGIN statement for the current nesting level and for all outer levels. If the effective PIFC is zero, all program exceptions will result in an interrupt. If the effective PIFC is one, program exceptions with classes 1 and 2 of the transaction-oriented execution result in an interrupt. (Each program exception is assigned at least one class of transactional execution, depending on the severity of the exception, based on the likelihood of recovery during repeated execution of the transactional execution and whether the operating system must see the interruption.) If the effective PIFC is two , program exception conditions with class 1 transaction-oriented execution result in an interrupt. A PIFC of 3 is reserved.

Bits 8 bis 11 des I2-Feldes (Bits 40 bis 43 der Anweisung) sind reserviert und sollten Nullen enthalten; andernfalls kann das Programm künftig nicht kompatibel arbeiten.Bits 8 through 11 of the I 2 field (bits 40 through 43 of the instruction) are reserved and should contain zeros; otherwise the program may not work in a compatible way in the future.

Eine Ausführungsform eines Formats einer Anweisung Transaction Begin constrained (TBEGINC) wird unter Bezugnahme auf die 3A bis 3B beschrieben. Beispielsweise enthält eine TBEGINC 300 ein Operationscodefeld 302, das einen Operationscode beinhaltet, der eine Operation Begin constrained Transaktion spezifiziert; ein Basisfeld (B1) 304; ein Verschiebungsfeld (D1) 206 und ein Direktfeld (I2) 308. Die durch B1 304 spezifizierten Inhalte des allgemeinen Registers werden zu D1 306 hinzufügt, um die Adresse des ersten Operanden zu erhalten. Bei der Anweisung Transaction begin constrained wird die Adresse des ersten Operanden jedoch nicht zum Speicherzugriff verwendet. Stattdessen enthält das B1-Feld der Anweisung Nullen; andernfalls wird eine Spezifikationsausnahme erkannt.An embodiment of a format of a statement Transaction Begin constrained (TBEGINC) is described with reference to FIG 3A to 3B described. For example, a TBEGINC contains 300 an opcode field 302 including an operation code specifying an operation Begin constrained transaction; a basic field (B 1 ) 304 ; a displacement field (D 1 ) 206 and a direct field (I 2 ) 308 , The by B 1 304 specified contents of the general register become D 1 306 to get the address of the first operand. However, in the Transaction begin constrained statement, the address of the first operand is not used for memory access. Instead, the B 1 field of the instruction contains zeros; otherwise a specification exception will be detected.

Bei einer Ausführungsform enthält das I2-Feld verschiedene Steuerungen, wobei ein Beispiel davon in 3B gezeigt ist.In one embodiment, the I 2 field includes various controls, an example of which is shown in FIG 3B is shown.

Die Bits des I2-Felds sind bei einem Beispiel wie im Folgenden definiert:
Speichermaske für allgemeine Register (GRSM) 310: Bits 0 bis 7 des I2-Feldes enthalten die Speichermaske für allgemeine Register (GRSM). Jedes Bit der GRSM stellt ein geradzahliges-ungeradzahliges Paar allgemeiner Register dar, wobei Bit 0 Register 0 und 1 darstellt, Bit 1 Register 2 und 3 darstellt usw. Wenn ein Bit in der GRSM null ist, wird das entsprechende Registerpaar nicht gespeichert. Wenn ein Bit in der GRSM null ist, wird das entsprechende Registerpaar in einem modellabhängigen Speicherort gespeichert, der für das Programm nicht direkt zugänglich ist.
The bits of the I 2 field are defined in an example as follows:
Memory mask for general registers (GRSM) 310 : Bits 0 to 7 of the I 2 field contain the memory register for general registers (GRSM). Each bit of the GRSM represents an even-odd pair of general registers, where bit 0 represents registers 0 and 1, bit 1 represents registers 2 and 3, and so on. If a bit in the GRSM is zero, the corresponding register pair is not stored. If a bit in the GRSM is zero, the corresponding register pair is stored in a model-dependent storage location that is not directly accessible to the program.

Wenn die Transaktion abgebrochen wird, werden gespeicherte Registerpaar wieder auf ihre Inhalte zurückgesetzt, die sie hatten, als die äußerste Anweisung TRANSACTION BEGIN ausgeführt wurde. Die Inhalte aller anderen (nicht gespeicherten) allgemeinen Register werden nicht wiederhergestellt, wenn eine eingeschränkte Transaktion abgebrochen wird.When the transaction is aborted, stored register pairs are reset to their contents that they had when the outermost TRANSACTION BEGIN statement was executed. The contents of all other (non-stored) general registers are not restored when a restricted transaction is aborted.

Wenn TBEGINC verwendet wird, um eine Ausführung im Modus der nichteingeschränkten transaktionsorientierten Ausführung fortzusetzen, wird die Speichermaske für allgemeine Register ignoriert.When TBEGINC is used to continue execution in unrestricted transactional execution mode, the general register memory mask is ignored.

AR-Änderung zulassen (A) 312: Die A-Steuerung, Bit 12 des I2-Felds, steuert, ob die Transaktion ein Zugriffsregister ändern darf. Die effektive Steuerung zum Zulassen einer AR-Änderung ist das logische UND der A-Steuerung in der Anweisung TBEGINC für die aktuelle Verschachtelungsebene und für alle äußeren Anweisungen TBEGIN oder TBEGINC.Allow AR change (A) 312 The A control, bit 12 of the I 2 field, controls whether the transaction is allowed to modify an access register. The effective control for allowing an AR change is the logical AND of the A control in the TBEGINC instruction for the current nest level and for all outer TBEGIN or TBEGINC statements.

Wenn die effektive A-Steuerung null ist, wird die Transaktion mit einem Abbruchcode 11 (eingeschränkte Anweisung) abgebrochen, wenn versucht wird, ein Zugriffsregister zu ändern. Wenn die effektive A-Steuerung eins ist, wird die Transaktion nicht abgebrochen, wenn ein Zugriffsregister geändert wird (bei Fehlen anderer Abbruchsbedingungen).If the effective A-control is zero, the transaction is aborted with an abort code 11 (restricted instruction) when attempting to change an access register. If the effective A-control is one, the transaction is not aborted when an access register is changed (in the absence of other abort conditions).

Bits 8 bis 11 und 13 bis 15 des I2-Feldes (Bits 40 bis 43 und 45 bis 47 der Anweisung) sind reserviert und sollten Nullen enthalten.Bits 8 through 11 and 13 through 15 of the I 2 field (bits 40 through 43 and 45 through 47 of the instruction) are reserved and should contain zeros.

Das Ende einer Anweisung Transaction Begin wird durch eine Anweisung TRANSACTION END (TEND) spezifiziert, ein Format, das in 4 gezeigt ist. Eine Anweisung TEND 400 beispielsweise enthält ein Operationscodefeld 402, das einen Operationscode enthält, der eine Transaktionsende-Operation spezifiziert. The end of a Transaction Begin statement is specified by a TRANSACTION END (TEND) statement, a format used in 4 is shown. A statement TEND 400 for example, contains an opcode field 402 containing an operation code specifying a transaction end operation.

In Bezug auf die Einrichtung für transaktionsorientierte Ausführung wird eine Vielzahl von Ausdrücken verwendet, und daher wird im Folgenden der Einfachheit halber eine Liste der Ausdrücke in alphabetischer Reihenfolge bereitgestellt. Bei einer Ausführungsform haben diese Ausdrücke die folgende Definition:With respect to the transaction-oriented execution device, a variety of expressions are used, and therefore, for the sake of convenience, a list of the expressions will be provided in alphabetical order below. In one embodiment, these terms have the following definition:

Abbrechen: Eine Transaktion wird abgebrochen, wenn sie vor einer Anweisung TRANSACTION END beendet wird, die zu einer Transaktionsverschachtelungstiefe von null führt. Wenn eine Transaktion abgebrochen wird, geschieht bei einer Ausführungsform Folgendes:

  • * Transaktionsorientierte Speicherzugriffe, die von jeder und allen Transaktionsebenen durchgeführt werden, werden verworfen (d. h. nicht festgeschrieben).
  • * Nichttransaktionsorientierte Speicherzugriffe, die von jeder und allen Transaktionsebenen durchgeführt werden, werden festgeschrieben.
  • * Von der Speichermaske für allgemeine Register (GRSM) der äußersten Anweisung TRANSACTION BEGIN ausgewiesene Register werden auf ihre Inhalte zurückgesetzt, die sie vor der transaktionsorientierten Ausführung hatten (d. h. auf ihre Inhalte beim Ausführen der äußersten Anweisung TRANSACTION BEGIN). Allgemeine Register, die nicht von der Speichermaske für allgemeine Register der äußersten Anweisung TRANSACTION BEGIN ausgewiesen sind, werden nicht zurückgesetzt.
  • * Zugriffsregister, Gleitkommaregister und das Gleitkomma-Steuerregister werden nicht zurückgesetzt. Jedwede Änderungen, die während der transaktionsorientierten Ausführung an diesen Registern vorgenommen wurden, werden im Fall eines Transaktionsabbruchs beibehalten.
Cancel: A transaction is aborted if it is terminated before a TRANSACTION END statement that results in a transaction nesting depth of zero. When a transaction is aborted, in one embodiment:
  • * Transactional memory accesses performed by each and every transaction level are discarded (ie not committed).
  • * Non-transaction-oriented memory accesses performed by each and every transaction level are committed.
  • * Registers designated by the General Register Memory Mask (GRSM) of the outermost TRANSACTION BEGIN statement are reset to their contents that they had before transactional execution (ie, their contents when executing the outermost TRANSACTION BEGIN statement). General registers that are not identified by the general register memory mask of the outermost TRANSACTION BEGIN statement are not reset.
  • * Access register, floating point register and floating point control register are not reset. Any changes made to these registers during transaction-oriented execution will be retained in the event of a transaction abort.

Eine Transaktion kann aus diversen Gründen abgebrochen werden, beispielsweise ein versuchtes Ausführen einer eingeschränkten Anweisung, ein versuchtes Ändern einer eingeschränkten Ressource, ein Transaktionskonflikt, Übersteigen verschiedener CPU-Ressourcen, eine Abfangbedingung einer interpretativen Ausführung, eine Unterbrechung, eine Anweisung TRANSACTION ABORT und andere Gründe. Ein Transaktionsabbruchcode stellt spezifische Gründe dafür bereit, warum eine Transaktion abgebrochen werden könnte.A transaction may be aborted for a variety of reasons, such as attempting to execute a constrained statement, attempting to modify a restricted resource, a transaction conflict, exceeding various CPU resources, an interpretive trap intercept, an interrupt, a TRANSACTION ABORT statement, and other causes. A transaction abort code provides specific reasons why a transaction could be aborted.

Ein Beispiel für ein Format einer Anweisung TRANSACTION ABORT (TABORT) ist unter Bezugnahme auf 5 beschrieben. Eine Anweisung TABORT 500 beispielsweise enthält ein Operationscodefeld 502, das einen Operationscode enthält, der eine Transaktionsabbruchoperation spezifiziert; ein Basisfeld (B2) 504; und ein Verschiebungsfeld (D2) 506. Wenn das B2-Feld ungleich null ist, werden die durch B2 504 spezifizierten Inhalte des allgemeinen Registers zu D2 506 hinzugefügt, um eine Adresse des zweiten Operanden zu erhalten; andernfalls wird die Adresse des zweiten Operanden lediglich aus dem D2-Feld gebildet, und das B2-Feld wird ignoriert. Die Adresse des zweiten Operanden wird nicht verwendet, um Daten zu adressieren; stattdessen bildet die Adresse den Transaktionsabbruchcode, der während der Abbruchverarbeitung in einem Transaktionsdiagnoseblock platziert wird. Eine Adressberechnung für die Adresse des zweiten Operanden folgt den Regeln der Adressrechnung: im 24-Bit-Adressiermodus werden Bits 0 bis 29 auf Nullen gesetzt; im 31-Bit-Adressiermodus werden Bits 0 bis 32 auf Nullen gesetzt.An example of a format of a statement TRANSACTION ABORT (TABORT) is with reference to 5 described. A statement TABORT 500 for example, contains an opcode field 502 including an operation code specifying a transaction abort operation; a basic field (B 2 ) 504 ; and a displacement field (D 2 ) 506 , If the B 2 field is nonzero then those given by B 2 504 specified contents of the general register for D 2 506 added to obtain an address of the second operand; otherwise, the address of the second operand is formed solely of the D 2 field, and the B 2 field is ignored. The address of the second operand 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. An address calculation for the address of the second operand follows the rules of the address calculation: in the 24-bit addressing mode, bits 0 to 29 are set to zeros; In the 31-bit addressing mode, bits 0 to 32 are set to zeros.

Festschreiben: Beim Ausführen einer äußersten Anweisung TRANSACTION END schreibt die CPU die von der Transaktion (d. h. der äußersten Transaktion und jedweden Verschachtelungsebenen) durchgeführten Speicherzugriffe fest, so dass sie für andere CPUs und das E/A-Teilsystem sichtbar sind. Wie durch andere CPUs und die E/A-Teilsysteme wahrgenommen, scheinen alle Abruf- und Speicherzugriffe, die von allen Verschachtelungsebenen der Transaktion durchgeführt werden, als einzelne gleichzeitige Operation zu erfolgen, wenn das Festschreiben erfolgt.Commit: When executing an outermost TRANSACTION END statement, the CPU commits the memory accesses made by the transaction (i.e., the outermost transaction and any nesting levels) to be visible to other CPUs and to the I / O subsystem. As perceived by other CPUs and the I / O subsystems, all fetch and memory accesses performed by all nesting levels of the transaction appear to be a single concurrent operation when committed.

Die Inhalte der allgemeinen Register, Zugriffsregister, Gleitkommaregister und des Gleitkomma-Steuerregisters werden durch den Festschreibprozess nicht geändert. Jedwede Änderungen, die während der transaktionsorientierten Ausführung an diesen Registern vorgenommen wurden, werden beibehalten, wenn die Speichervorgänge der Transaktion festgeschrieben werden.The contents of the general registers, access registers, floating point registers and the floating point control register are not changed by the commit process. Any changes made to these registers during transaction-oriented execution are preserved when the stores of the transaction are committed.

Konflikt: Ein von einer CPU durchgeführter transaktionsorientierter Zugriff steht im Konflikt mit entweder (a) einem transaktionsorientiertem Zugriff oder einem nichttransaktionsorientiertem Zugriff, der von einer anderen CPU durchgeführt wurde; oder (b) einem vom E/A-Teilsystem durchgeführten nichttransaktionsorientierten Zugriff innerhalb der gleichen Cachespeicherzeile, und bei ein oder mehreren der Zugriffe handelt es sich um einen Speichervorgang.Conflict: Transactional access performed by a CPU conflicts with either (a) transaction-oriented access or non-transactional access performed by another CPU; or (b) a non-transactional access performed by the I / O subsystem within the same cache line, and one or more of the accesses is a store.

Ein Konflikt kann durch eine spekulative Ausführung von Anweisungen durch eine CPU erkannt werden, auch wenn der Konflikt in der konzeptionellen Abfolge eventuell nicht erkannt wird. A conflict can be detected by a speculative execution of instructions by a CPU, even if the conflict in the conceptual sequence may not be recognized.

Eingeschränkte Transaktion: Eine eingeschränkte Transaktion ist eine Transaktion, die im Modus der eingeschränkten transaktionsorientierten Ausführung ausgeführt wird und den folgenden Einschränkungen unterliegt:

  • * Ein Teilsatz der allgemeinen Anweisungen ist verfügbar.
  • * Eine begrenzte Anzahl von Anweisungen kann ausgeführt werden.
  • * Eine begrenzte Anzahl von Speicheroperanden-Speicherorten ist zugänglich.
  • * Die Transaktion ist auf eine einzige Verschachtelungsebene beschränkt.
Restricted Transaction: A restricted transaction is a transaction that is executed in Limited Transactional Execution mode and is subject to the following restrictions:
  • * A subset of the general instructions is available.
  • * A limited number of instructions can be executed.
  • * A limited number of memory operand locations are accessible.
  • * The transaction is limited to a single nesting level.

Wenn keine wiederholten Unterbrechungen oder Konflikte mit anderen CPUs oder dem E/A-Teilsystem vorliegen, wird eine eingeschränkte Transaktion schließlich ausgeführt, wodurch keine Abbruch-Handler-Routine erforderlich ist. Eingeschränkte Transaktionen sind im Folgenden ausführlich beschrieben.If there are no repeated interrupts or conflicts with other CPUs or the I / O subsystem, a restricted transaction will eventually be executed, requiring no abort handler routine. Restricted transactions are described in detail below.

Wenn eine Anweisung TRANSACTION BEGIN constrained (TBEGINC) ausgeführt wird, während sich die CPU bereits im Modus der nichteingeschränkten transaktionsorientierten Ausführung befindet, wird das Ausführen als nichteingeschränkte verschachtelte Transaktion fortgesetzt.If a TRANSACTION BEGIN constrained (TBEGINC) statement is executed while the CPU is already in unrestricted transactional execution mode, execution continues as a non-restricted nested transaction.

Modus der eingeschränkten transaktionsorientierten Ausführung: Wenn die Transaktionsverschachtelungstiefe null ist und eine Transaktion durch eine Anweisung TBEGINC eingeleitet wird, geht die CPU in den Modus der eingeschränkten transaktionsorientierten Ausführung über. Während sich die CPU im Modus der eingeschränkten transaktionsorientierten Ausführung befindet, ist die Transaktionsverschachtelungstiefe eins.Restricted Transactional Execution Mode: When the transaction nesting depth is zero and a transaction is initiated by a TBEGINC instruction, the CPU transitions to Restricted Transactional Execution mode. While the CPU is in restricted transactional execution mode, the transaction nesting depth is one.

Verschachtelte Transaktion: Wenn die Anweisung TRANSACTION BEGIN ausgegeben wird, während sich die CPU im Modus der nichteingeschränkten transaktionsorientierten Ausführung befindet, wird die Transaktion verschachtelt.Nested transaction: If the TRANSACTION BEGIN statement is issued while the CPU is in the unrestricted transactional execution mode, the transaction is nested.

Die Einrichtung für transaktionsorientierte Ausführung verwendet ein Modell mit der Bezeichnung „Reduzierte Verschachtelung”. Im reduzierten Verschachtelungsmodus sind Speichervorgänge, die von einer inneren Transaktion durchgeführt werden, für andere CPUs und das E/A-Teilsystem solange nicht wahrnehmbar, bis die äußerste Transaktion ihre Speichervorgänge festschreibt. Wenn eine Transaktion abgebrochen wird, werden gleichermaßen alle verschachtelten Transaktionen abgebrochen, und alle transaktionsorientierten Speichervorgänge aller verschachtelten Transaktionen werden verworfen.The transaction-oriented execution facility uses a model called "reduced nesting." In the reduced nesting mode, memory operations performed by an inner transaction are imperceptible to other CPUs and the I / O subsystem until the outermost transaction commits its stores. Similarly, when a transaction is aborted, all nested transactions are aborted and all transaction-oriented stores of all nested transactions are discarded.

Ein Beispiel für verschachtelte Transaktionen ist in 6 gezeigt. Wie gezeigt, beginnt eine TBEGIN 600 einer äußerste Transaktion 601, TBEGIN 602 beginnt eine erste verschachtelte Transaktion und TBEGIN 604 beginnt eine zweite verschachtelte Transaktion. In diesem Beispiel definieren TBEGIN 604 und TBEGIN 606 eine innerste Transaktion 608. Wenn TEND 610 ausgeführt wird, werden transaktionsorientierte Speichervorgänge für die äußerste Transaktion und alle inneren Transaktionen festgeschrieben 612.An example of nested transactions is in 6 shown. As shown, a TBEGIN begins 600 an outermost transaction 601 , TBEGIN 602 Begins a first nested transaction and TBEGIN 604 begins a second nested transaction. In this example, define TBEGIN 604 and TBEGIN 606 an innermost transaction 608 , When TEND 610 is executed, transactional stores are committed for the outermost transaction and all internal transactions 612 ,

Nichteingeschränkte Transaktion: Eine nichteingeschränkte Transaktion ist eine Transaktion, die im Modus der nichteingeschränkten transaktionsorientierten Ausführung ausgeführt wird. Auch wenn eine nichteingeschränkte Transaktion nicht auf die Art und Weise wie eine eingeschränkte Transaktion eingeschränkt ist, kann sie dennoch aus diversen Gründen abgebrochen werden.Unconstrained Transaction: An unrestricted transaction is a transaction that is executed in the unrestricted transactional execution mode. Even if an unrestricted transaction is not restricted in the way a restricted transaction is restricted, it can still be aborted for a variety of reasons.

Modus der nichteingeschränkten transaktionsorientierten Ausführung: Wenn eine Transaktion durch die Anweisung TBEGIN eingeleitet wird, geht die CPU in den Modus der nichteingeschränkten transaktionsorientierten Ausführung über. Während sich die CPU im Modus der nichteingeschränkten transaktionsorientierten Ausführung befindet, kann die Transaktionsverschachtelungstiefe von eins bis zur maximalen Transaktionsverschachtelungstiefe variieren.Unrestricted Transactional Execution Mode: When a transaction is initiated by the TBEGIN instruction, the CPU enters the unrestricted transactional execution mode. While the CPU is in the unrestricted transactional execution mode, the transaction nesting depth can vary from one to the maximum transaction nesting depth.

Nichttransaktionsorientierter Zugriff: Nichttransaktionsorientierte Zugriffe sind von der CPU durchgeführte Speicheroperandenzugriffe, während sie sich nicht im Modus der transaktionsorientierten Ausführung befindet (d. h. klassische Speicherzugriffe außerhalb einer Transaktion). Darüber hinaus sind vom E/A-Teilsystem durchgeführte Zugriffe nichttransaktionsorientierte Zugriffe. Ferner kann die Anweisung NONTRANSACTION STORE verwendet werden, um einen nichttransaktionsorientierten Speicherzugriff zu verursachen, während sich die CPU im Modus der nichteingeschränkten transaktionsorientierten Ausführung befindet.Non-Transactional Access: Non-transactional accesses are memory operand accesses performed by the CPU while it is not in transactional execution mode (i.e., classical memory accesses outside a transaction). In addition, accesses made by the I / O subsystem are non-transactional accesses. Further, the NONTRANSACTION STORE statement may be used to cause non-transaction-oriented memory access while the CPU is in the unrestricted transactional-execution mode.

Eine Ausführungsform eines Formats einer Anweisung NONTRANSACTIONAL STORTE wird unter Bezugnahme auf 7 beschrieben. Eine Anweisung NONTRANSACTION STORE 700 beispielsweise enthält eine Vielzahl von Operationscodefeldern 702a, 702b, die einen Operationscode spezifizieren, der eine nichttransaktionsorientierte Speicheroperation ausweist; ein Registerfeld (R1) 704, das ein Register spezifiziert, dessen Inhalt als der erste Operand bezeichnet werden; ein Indexfeld (X2) 706; ein Basisfeld (B2) 708; ein erstes Verschiebungsfeld (DL2) 710; und ein zweites Verschiebungsfeld (DH2) 712. Die durch die X2- und B2-Felder ausgewiesenen Inhalte der allgemeinen Register werden zu den Inhalten einer Verkettung von Inhalten der DH2- und DL2-Felder hinzugefügt, um die Adresse des zweiten Operanden zu bilden. Wenn eines oder beide der X2- oder B2-Felder null sind, wird das entsprechende Register beim Hinzufügen nicht berücksichtigt. An embodiment of a format of a NONTRANSACTIONAL STORTE statement will be described with reference to FIG 7 described. A NONTRANSACTION STORE statement 700 for example, contains a plurality of opcode fields 702a . 702b specifying an operation code identifying a non-transaction-oriented storage operation; a register field (R 1 ) 704 specifying a register whose contents are referred to as the first operand; an index field (X 2 ) 706 ; a basic field (B 2 ) 708 ; a first shift field (DL 2 ) 710 ; and a second displacement field (DH 2 ) 712 , The contents of the general registers designated by the X 2 and B 2 fields are added to the contents of a concatenation of contents of the DH 2 and DL 2 fields to form the address of the second operand. If either or both of the X 2 or B 2 fields are zero, the corresponding register will not be considered upon addition.

Der erste 64-Bit-Operand wird nichttransaktionsorientiert und unverändert am zweiten Operandenspeicherort platziert.The first 64-bit operand is placed non-transaction-oriented and unchanged at the second operand location.

Die durch die Verkettung der DH2- und DL2-Felder gebildete Verschiebung wird als eine binäre vorzeichenbehaftete ganze 20-Bit-Zahl behandelt.The shift formed by the concatenation of the DH 2 and DL 2 fields is treated as a binary signed whole 20 bit number.

Der zweite Operand ist mit einer Doppelwortgrenze auszurichten; andernfalls wird eine Spezifikationsausnahme erkannt, und die Operation wird unterdrückt.The second operand must be aligned with a double word boundary; otherwise, a specification exception is detected and the operation is suppressed.

Äußere/Äußerste Transaktion: Eine Transaktion mit einer niederzahligen Transaktionsverschachtelungstiefe ist eine äußere Transaktion. Eine Transaktion mit einem Transaktionsverschachtelungstiefen-Wert von eins ist die äußerste Transaktion.Outer / Outer Transaction: A transaction with a low transaction depth is an external transaction. A transaction with a transaction nesting depth value of one is the outermost transaction.

Eine äußerste Anweisung TRANSACTION BEGIN ist eine, die ausgeführt wird, wenn die Transaktionsverschachtelungstiefe anfänglich null ist. Eine äußerste Anweisung TRANSACTION END ist eine, die bewirkt, dass die Transaktionsverschachtelungstiefe von eins auf null übergeht. Eine eingeschränkte Transaction ist bei dieser Ausführungsform die äußerste Transaktion.An outermost TRANSACTION BEGIN statement is one that is executed when the transaction nesting depth is initially zero. An outermost TRANSACTION END statement is one that causes the transaction nesting depth to transition from one to zero. A limited transaction is the outermost transaction in this embodiment.

Programmunterbrechungsfilterung: Wenn eine Transaktion aufgrund bestimmter Programmausnahmebedingungen abgebrochen wird, kann das Programm gegebenenfalls verhindern, dass die Unterbrechung auftritt. Diese Technik wird Programmunterbrechungsfilterung genannt. Die Programmunterbrechungsfilterung unterliegt der transaktionsorientierten Klasse der Unterbrechung, der effektiven Programmunterbrechungsfilterungs-Steuerung aus der Anweisung TRANSACTION BEGIN und der transaktionsorientierten Programmunterbrechungsfilterungs-Überschreibung im Steuerregister 0.Program Interrupt Filtering: If a transaction is aborted due to certain program exceptions, the program may be able to prevent the interrupt from occurring. This technique is called program interrupt filtering. The program interruption filtering is subject to the transaction-oriented class of interruption, the effective program interruption filtering control from the statement TRANSACTION BEGIN, and the transaction-oriented program interruption filtering override in the control register O.

Transaktion: Eine Transaktion enthält die durchgeführten Speicheroperandenzugriffe und ausgewählte geänderte allgemeine Register, während sich die CPU im Modus der transaktionsorientierten Ausführung befindet. Bei einer nichteingeschränkten Transaktion können Speicheroperandenzugriffe sowohl transaktionsorientierte als auch nichttransaktionsorientierte Zugriffe beinhalten. Bei einer einschränkten Transaktion sind Speicheroperandenzugriffe auf transaktionsorientierte Zugriffe beschränkt. Wie durch andere CPUs und das E/A-Teilsystem wahrgenommen, scheinen alle von der CPU im Modus der transaktionsorientierten Ausführung durchgeführten Speicheroperandenzugriffe als einzelne gleichzeitige Operation zu erfolgen. Wenn eine Transaktion abgebrochen wird, werden transaktionsorientierte Speicherzugriffe verworfen und sämtliche von der Speichermaske für allgemeine Register der äußersten Anweisung TRANSACTION BEGIN ausgewiesene Register werden auf ihre Inhalte zurückgesetzt, die sie vor Transaktionsausführung hatten.Transaction: A transaction contains the stored operand accesses and selected modified generic registers while the CPU is in transactional execution mode. For a non-restricted transaction, memory operand accesses may include both transaction-oriented and non-transaction-oriented accesses. In a constrained transaction, memory operand accesses are limited to transaction-oriented accesses. As perceived by other CPUs and the I / O subsystem, all memory operand accesses performed by the CPU in transactional execution mode appear to be a single concurrent operation. When a transaction is aborted, transaction-oriented memory accesses are discarded and all registers designated by the general register memory mask of the outermost TRANSACTION BEGIN statement are reset to their contents that they had prior to transaction execution.

Transaktionsorientierte Zugriffe: Transaktionsorientierte Zugriffe sind Speicheroperandenzugriffe, die ausgeführt werden, während sich die CPU im Modus der transaktionsorientierten Ausführung befindet, mit Ausnahme von Zugriffen, die von der Anweisung NONTRANSACTION STORE durchgeführt werden.Transactional Accesses: Transaction-oriented accesses are memory operand accesses that are executed while the CPU is in transactional execution mode, except for accesses made by the NONTRANSACTION STORE statement.

Modus der transaktionsorientierten Ausführung: Der Ausdruck „Modus der transaktionsorientierten Ausführung” (auch Transaktionsausführungsmodus genannt) beschreibt die übliche Operation sowohl des Modus der nichteingeschränkten als auch der eingeschränkten transaktionsorientierten Ausführung. Wenn die Operation beschrieben wird, werden die Ausdrücke „nichteingeschränkt” und „eingeschränkt” verwendet, um den Modus der transaktionsorientierten Ausführung zu qualifizieren.Transactional Execution Mode: The term "transactional execution mode" (also referred to as transaction execution mode) describes the common operation of both the unrestricted and constrained transactional execution modes. When the operation is described, the terms "unrestricted" and "restricted" are used to qualify the mode of transactional execution.

Wenn die Transaktionsverschachtelungstiefe null ist, befindet sich die CPU nicht im Modus der transaktionsorientierten Ausführung (auch als nichttransaktionsorientierter Ausführungsmodus bezeichnet).If the transaction nesting depth is zero, the CPU is not in transactional execution mode (also referred to as a non-transaction execution mode).

Wie durch die CPU wahrgenommen, unterscheiden sich im Modus der transaktionsorientierten Ausführung durchgeführte Abrufe und Speichervorgänge nicht von jenen, die nicht im Modus der transaktionsorientierten Ausführung durchgeführt wurden. As perceived by the CPU, in the transaction-oriented execution mode, fetching and storing operations do not differ from those not performed in the transaction-oriented execution mode.

Bei einer Ausführungsform der z/Architecture steht die Einrichtung für transaktionsorientierte Ausführung unter der Steuerung der Bits 8 bis 9 des Steuerregisters 0, der Bits 61 bis 63 des Steuerregisters 2, der Transaktionsverschachtelungstiefe, der Transaktionsdiagnoseblock-Adresse und des Transaktionsabbruchs-Programmstatuswortes (PSW).In one embodiment of the z / Architecture, the transaction-oriented execution device is under control of bits 8 through 9 of control register 0, bits 61 through 63 of control register 2, transaction nesting depth, transaction diagnostic block address, and transaction abort program status word (PSW).

Nachdem die CPU zunächst zurückgesetzt wurde, werden die Inhalte der Bitpositionen 8 bis 9 des Steuerregisters 0, die Bitpositionen 62 bis 63 des Steuerregisters 2 und die Transaktionsverschachtelungstiefe auf null gesetzt. Wenn die Steuerung der transaktionsorientierten Ausführung, Bit 8 des Steuerregisters 0, null ist, kann die CPU nicht in den Modus der transaktionsorientierten Ausführung gesetzt werden.After the CPU is first reset, the contents of the bit positions 8 to 9 of the control register 0, the bit positions 62 to 63 of the control register 2 and the transaction interleaving depth are set to zero. If the control of the transaction-oriented execution, bit 8 of the control register 0, is zero, the CPU can not be put into the mode of transaction-oriented execution.

Weitere Details bezüglich der verschiedenen Steuerungen sind im Folgenden beschrieben.Further details regarding the various controls are described below.

Wie gezeigt, wird die Einrichtung für transaktionsorientierte Ausführung von zwei Bits im Steuerregister null und drei Bits im Steuerregister zwei gesteuert. Ein Beispiel:
Bits des Steuerregisters 0: Die Bitzuweisungen sind bei einer Ausführungsform wie folgt:
Steuerung der transaktionsorientierten Ausführung (TXC, Transactional Execution Control): Bit 8 des Steuerregisters null ist die Steuerung der transaktionsorientierten Ausführung Dieses Bit stellt einen Mechanismus bereit, mit dem das Steuerprogramm (z. B. Betriebssystem) anzeigen kann, ob die Einrichtung für transaktionsorientierte Ausführung durch das Programm nutzbar ist. Bit 8 muss eins sein, um erfolgreich in den Modus der transaktionsorientierten Ausführung überzugehen.
As shown, the transaction-oriented execution device is controlled by two bits in the control register zero and three bits in the control register two. An example:
Bits of Control Register 0: The bit assignments in one embodiment are as follows:
Transactional Execution Control (TXC): Bit 8 of control register zero is the control of transaction-oriented execution. This bit provides a mechanism by which the control program (e.g., operating system) can indicate whether the device is for transaction-oriented execution usable by the program. Bit 8 must be one to successfully transition to transactional execution mode.

Wenn Bit 8 des Steuerregisters 0 null ist, führt eine versuchte Ausführung der Anweisungen EXTRACT TRANSACTION NESTING, TRANSACTION BEGIN und TRANSACTION END zum Ausführen einer speziellen Operation.If bit 8 of control register 0 is zero, an attempted execution of the EXTRACT TRANSACTION NESTING, TRANSACTION BEGIN, and TRANSACTION END statements will result in the execution of a special operation.

Eine Ausführungsform eines Formats einer Anweisung EXTRACT TRANSACTION NESTING DEPTH ist in Bezug auf 8 beschrieben. Eine Anweisung EXTRACT TRANSACTION NESTING DEPTH 800 beispielsweise enthält ein Operationscodefeld 802, das einen Operationscode spezifiziert, der die Operation des Extrahierens der Transaktionsverschachtelungstiefe anzeigt; und ein Registerfeld R1 804, das ein allgemeines Register ausweist.One embodiment of a format of an EXTRACT TRANSACTION NESTING DEPTH statement is with respect to 8th described. An EXTRACT TRANSACTION NESTING DEPTH statement 800 for example, contains an opcode field 802 specifying an operation code indicating the operation of extracting the transaction interleaving depth; and a register field R 1 804 which has a general register.

Die aktuelle Transaktionsverschachtelungstiefe ist in den Bits 48 bis 63 des allgemeinen Registers R1 platziert. Bits 0 bis 31 des Registers bleiben unverändert und Bits 32 bis 47 des Registers werden auf null gesetzt.The current transaction interleaving depth is placed in bits 48 through 63 of the general register R 1 . Bits 0 to 31 of the register remain unchanged and bits 32 to 47 of the register are set to zero.

Bei einer weiteren Ausführungsform wird die maximale Transaktionsverschachtelungstiefe im allgemeinen Register R1 platziert, z. B. in den Bits 16 bis 31.In another embodiment, the maximum transaction nesting depth is placed in the general register R 1 , e.g. In bits 16 to 31.

Überschreiben der Transaktionsausführungs-Programmunterbrechungsfilterung (PIFO): Bit 9 des Steuerregisters null steht für das Überschreiben der Programmunterbrechungsfilterung der transaktionsorientierten Ausführung. Dieses Bit stellt einen Mechanismus bereit, mit dem das Steuerprogramm sicherstellen kann, dass jede Programmausnahmebedingung, die auftritt, während sich die CPU im Modus der transaktionsorientierten Ausführung befindet, zu einer Unterbrechung führt, unabhängig von der effektiven Programmunterbrechungsfilterungs-Steuerung, die von der einen oder den mehreren Anweisungen TRANSACTION BEGIN spezifiziert oder impliziert wird.Overriding Transaction Execution Program Interrupt Filtering (PIFO): Bit 9 of the control register zero represents the overriding of the program interruption filtering of the transaction-oriented execution. This bit provides a mechanism by which the control program can ensure that any program exception that occurs while the CPU is in transactional execution mode results in an interrupt, regardless of the actual program interruption filtering control that is being used by the one or the other specified or implied by the multiple statements TRANSACTION BEGIN.

Bits des Steuerregisters 2: Die Zuweisungen sind bei einer Ausführungsform wie folgt:
Transaktionsdiagnoseumfang (TDS, Transaction Diagnostic Scope): Bit 61 des Steuerregisters 2 steuert die Anwendbarkeit der Transaktionsdiagnosesteuerung (TDC, Transaction Diagnosis Control) in den Bits 62 bis 63 des Registers wie folgt: TDS Wert Bedeutung 0 Die TDC wird angewendet, unabhängig davon, ob sich die CPU im Fehler- oder Supervisor-Status befindet. 1 Die TDC wird nur dann angewendet, wenn sich die CPU im Fehlerstatus befindet. Wenn sich die CPU im Supervisor-Status befindet, erfolgt die Verarbeitung, als enthielte die TDC null.
Bits of Control Register 2: The assignments in one embodiment are as follows:
Transaction Diagnostic Scope (TDS): Bit 61 of control register 2 controls the applicability of the Transaction Diagnosis Control (TDC) in bits 62 through 63 of the register as follows: TDS value importance 0 The TDC is applied regardless of whether the CPU is in error or supervisor status. 1 The TDC is applied only when the CPU is in error status. If the CPU is in supervisor status, processing is as if the TDC contained zero.

Transaktionsdiagnosesteuerung (TDC): Bits 62 bis 63 des Steuerregisters 2 sind eine vorzeichenlose ganze 2-Bit-Zahl, die verwendet werden kann, um zu bewirken, dass Transaktionen zu Diagnosezwecken zufällig abgebrochen werden. Die Verschlüsselung der TDC ist in einem Beispiel wie folgt: TDC Wert Bedeutung 0 Normaler Betrieb; Transaktionen werden infolge der TDC nicht abgebrochen. 1 Jede Transaktion mit einer zufälligen Anweisung wird abgebrochen, allerdings bevor die äußerste Anweisung TRANSACTION END ausgeführt wird. 2 Zufällige Transaktionen mit einer zufälligen Anweisung werden abgebrochen 3 Reserviert Transaction Diagnostic Control (TDC): Bits 62 through 63 of control register 2 are an unsigned whole 2-bit number that can be used to cause transactions to be accidentally aborted for diagnostic purposes. The encryption of the TDC in one example is as follows: TDC value importance 0 Normal business. Business as usual; Transactions are not canceled as a result of TDC. 1 Any transaction with a random statement is aborted, but before the outermost TRANSACTION END statement is executed. 2 Random transactions with a random statement are aborted 3 Reserved

Wenn eine Transaktion abgebrochen wird, da TDC ungleich null ist, kann eines des Folgenden auftreten:

  • * Der Abbruchcode wird auf einen der Codes 7 bis 11, 13 bis 16 oder 255 gesetzt, wobei der Wert des Codes durch die CPU zufällig gewählt wird; der Bedingungscode wird entsprechend dem Abbruchcode gesetzt. Abbruchcodes sind im Folgenden ausführlicher beschrieben.
  • * Bei einer nichteingeschränkten Transaktion wird der Bedingungscode auf eins gesetzt. In diesem Fall ist der Abbruchcode nicht anwendbar.
If a transaction is aborted because TDC is nonzero, one of the following may occur:
  • * The abort code is set to one of the codes 7 to 11, 13 to 16 or 255, the value of the code being randomly selected by the CPU; the condition code is set according to the abort code. Abort codes are described in more detail below.
  • * For an unrestricted transaction, the condition code is set to one. In this case, the abort code is not applicable.

Es ist modellabhängig, ob der TDC-Wert 1 implementiert wird. Ist er nicht implementiert, agiert ein Wert von 1, als wäre 2 spezifiziert worden.It depends on the model whether the TDC value 1 is implemented. If it is not implemented, a value of 1 acts as if 2 had been specified.

Bei einer eingeschränkten Transaktion wird ein TDC-Wert von 1 so behandelt, als wäre ein TDC-Wert von 2 spezifiziert worden.For a constrained transaction, a TDC value of 1 is treated as if a TDC value of 2 had been specified.

Wenn ein TDC-Wert von 3 spezifiziert ist, sind die Ergebnisse nicht vorhersagbar.If a TDC value of 3 is specified, the results are unpredictable.

Transaktionsdiagnoseblock-Adresse (TDBA)Transaction Diagnostic Block Address (TDBA)

Eine gültige Transaktionsdiagnoseblock-Adresse (TDBA) wird aus der Adresse des ersten Operanden der äußersten Anweisung TRANSACTION BEGIN (TBEGIN) festgelegt, wenn das B1-Feld der Anweisung ungleich null ist. Wenn sich die CPU im Primärbereichmodus oder Zugriffsregistermodus befindet, weist die TDBA einen Speicherort im Primäradressraum aus. Wenn sich die CPU im Sekundärbereichmodus oder Modus für Ausgangsspeicherbereich befindet, weist die TDBA einen Speicherort im Sekundäradressraum bzw. im Speicherbereich für Ausgangsadresse aus. Wenn die DAT (Dynamische Adressumsetzung) ausgeschaltet ist, weist die TDBA einen Speicherort im realen Speicher aus.A valid transaction diagnostic block address (TDBA) is set from the address of the first operand of the outermost TRANSACTION BEGIN (TBEGIN) instruction if the B 1 field of the nonzero instruction is. When the CPU is in primary-range or access-register mode, the TDBA rejects a location in the primary address space. When the CPU is in Secondary or Outbound Storage mode, the TDBA rejects a location in the Secondary Address space or in the Outgoing Address Space. When the DAT (Dynamic Address Translation) is turned off, the TDBA rejects a location in real memory.

Die TDBA wird von der CPU verwendet, um den Transaktionsdiagnoseblock – der TBEGIN-spezifizierte TDB genannt – zu lokalisieren, wenn die Transaktion nachfolgend abgebrochen wird. Die ganz rechten drei Bits der TDBA sind null, d. h., der TBEGIN-spezifizierte TDB liegt auf einer Doppelwortgrenze vor.The TDBA is used by the CPU to locate the transaction diagnostic block - called the TBEGIN-specified TDB - if the transaction is subsequently aborted. The rightmost three bits of the TDBA are zero, d. h., the TBEGIN specified TDB is on a double word boundary.

Wenn das B1-Feld einer äußersten Anweisung TRANSACTION BEGIN (TBEGIN) null ist, ist die Transaktionsdiagnoseblock-Adresse ungültig und kein TBEGIN-spezifizierte TDB wird gespeichert, wenn die Transaktion nachfolgend abgebrochen wird.If the B 1 field of an outermost TRANSACTION BEGIN (TBEGIN) instruction is zero, the transaction diagnostic block address is invalid and no TBEGIN-specified TDB is stored if the transaction is subsequently aborted.

Transaktionsabbruch-PSW (TAPSW) Transaction Cancellation PSW (TAPSW)

Während des Ausführens der Anweisung TRANSACTION BEGIN (TBEGIN) bei einer Verschachtelungstiefe von anfänglich null wird das Transaktionsabbruch-PSW auf die Inhalte des aktuellen PSW gesetzt; und die Anweisungsadresse des Transaktionsabbruch-PSW weist die nächste sequenzielle Anweisung aus (d. h., die Anweisung, die auf die äußerste TBEGIN folgt). Während des Ausführens der Anweisung TRANSACTION BEGIN constrained (TBEGINC) bei einer Verschachtelungstiefe von anfänglich null wird das Transaktionsabbruch-PSW auf die Inhalte des aktuellen PSW gesetzt, ausgenommen, wenn die Anweisungsadresse des Transaktionsabbruch-PSW die Anweisung TBEGINC ausweist (und nicht die nächste sequenzielle Anweisung, die auf die TBEGINC folgt).While executing the TRANSACTION BEGIN (TBEGIN) statement with a nesting depth of initially zero, the transaction abort PSW is set to the contents of the current PSW; and the instruction address of the transaction abort PSW rejects the next sequential instruction (i.e., the instruction following the outermost TBEGIN). During execution of the TRANSACTION BEGIN constrained (TBEGINC) instruction with an initial nesting depth of zero, the transaction abort PSW is set to the contents of the current PSW except when the instruction address of the transaction abort PSW identifies the TBEGINC instruction (not the next sequential instruction following the TBEGINC).

Wenn eine Transaktion abgebrochen wird, wird der Bedingungscode im Transaktionsabbruch-PSW durch einen Code ersetzt, der den Schweregrad der Abbruchsbedingung anzeigt. Danach wird das PSW, wenn die Transaktion aus Gründen abgebrochen wurde, die nicht zu einer Unterbrechung führen, aus dem Transaktionsabbruch-PSW geladen; wenn die Transaktion aus Gründen abgebrochen wurde, die zu einer Unterbrechung führen, wird das Transaktionsabbruch-PSW als altes Unterbrechungs-PSW gespeichert.When a transaction is aborted, the condition code in the transaction abort PSW is replaced with a code indicating the severity of the abort condition. Thereafter, if the transaction has been aborted for reasons that do not cause an interruption, the PSW will be loaded from the transaction abort PSW; if the transaction was aborted for reasons causing an interruption, the transaction abort PSW is stored as an old interrupt PSW.

Das Transaktionsabbruch-PSW wird während des Ausführens einer inneren TRANSACTION BEGIN-Ausführung nicht geändert.The transaction abort PSW is not changed during the execution of an inner TRANSACTION BEGIN execution.

Transaktionsverschachtelungstiefe (TND, Transaction Nesting Depth)Transaction nesting depth (TND)

Die Transaktionsverschachtelungstiefe ist beispielsweise ein vorzeichenloser 16-Bit-Wert, der jedes Mal erhöht wird, wenn eine Anweisung TRANSACTION BEGIN mit Bedingungscode ausgeführt wird, und der jedes Mal verringert wird, wenn eine Anweisung TRANSACTION END ausgeführt wird. Die Transaktionsverschachtelungstiefe wird auf null zurückgesetzt, wenn eine Transaktion abgebrochen wird, oder durch ein Zurücksetzen der CPU.For example, the transaction nesting depth is a 16-bit unsigned value that is incremented each time a TRANSACTION BEGIN statement with condition code is executed, and that is decremented each time a TRANSACTION END statement is executed. The transaction nesting depth is reset to zero when a transaction is aborted, or by a CPU reset.

Bei einer Ausführungsform wird eine maximale TND von 15 implementiert.In one embodiment, a maximum TND of 15 is implemented.

Bei einer Implementierung ist die Transaktionsverschachtelungstiefe eins, wenn sich die CPU im Modus der eingeschränkten transaktionsorientierten Ausführung befindet. Auch wenn die maximale TND als 4-Bit-Wert dargestellt sein kann, ist die TND darüber hinaus als ein 16-Bit-Wert definiert, um dessen Prüfung im Transaktionsdiagnoseblock zu erleichtern.In one implementation, the transaction nesting depth is one when the CPU is in the restricted transactional execution mode. In addition, although the maximum TND may be represented as a 4-bit value, the TND is defined as a 16-bit value to facilitate its review in the transaction diagnostic block.

Transaktionsdiagnoseblock (TDB)Transaction Diagnostic Block (TDB)

Wenn eine Transaktion abgebrochen wird, können verschiedene Statusinformationen im Transaktionsdiagnoseblock (TDB) wie folgt gespeichert werden:

  • 1. TBEGIN-spezifizierter TDB: Bei einer nichteingeschränkten Transaktion, wenn das B1-Feld der äußersten Anweisung TBEGIN ungleich null ist, weist die Adresse des ersten Operanden der Anweisung den TBEGIN-spezifizierten TDB aus. Es handelt sich hierbei um einen vom Anwendungsprogramm spezifizierten Speicherort, der vom Abbruch-Handler der Anwendung untersucht werden kann.
  • 2. Programmunterbrechungs-TDB (Programm Interruption – PI): Wenn eine nichteingeschränkte Transaktion aufgrund einer nichtgefilterten Programmausnahmebedingung abgebrochen wird oder wenn eine eingeschränkte Transaktion aufgrund einer beliebigen Programmausnahmebedingung (d. h. eine Bedingung, die dazu führt, dass eine Programmunterbrechung erkannt wird) abgebrochen wird, wird der PI-TDB an Speicherorten im Präfixbereich gespeichert. Dies steht dem Betriebssystem zur Verfügung, um eine Prüfung durchführen und in Diagnoseberichten, die es bereitstellen kann, zu protokollieren.
  • 3. Abfang-TDB: Wenn die Transaktion aufgrund einer Programmausnahmebedingung abgebrochen wird, die zu einem Abfangen führt (d. h., die Bedingung bewirkt, dass eine interpretative Ausführung endet, und steuert eine Rückkehr zum Host-Programm), wird ein TDB an einem Speicherort gespeichert, der im Statusbeschreibungsblock für das Gäste-Betriebssystem spezifiziert ist.
When a transaction is aborted, various status information can be stored in the Transaction Diagnostic Block (TDB) as follows:
  • 1. TBEGIN-Specified TDB: In an unrestricted transaction, if the B 1 field of the outermost TBEGIN instruction is nonzero, the address of the first operand of the instruction will reject the TBEGIN-specified TDB. It is a location specified by the application program that can be examined by the application's abort handler.
  • 2. Program Interruption (PI): If an unrestricted transaction is aborted due to an unfiltered program exception, or if a restricted transaction is aborted due to any program exception (ie, a condition that causes a program interrupt to be detected), it will be aborted the PI-TDB is stored at locations in the prefix area. This is available to the operating system to audit and log in diagnostic reports that it can provide.
  • 3. Interception TDB: If the transaction is aborted due to a program exception that results in interception (ie, the condition causes an interpretive execution to terminate and controls a return to the host program), a TDB is stored in a storage location specified in the guest OS status description block.

Der TBEGIN-spezifizierte TDB wird bei einer Ausführungsform nur gespeichert, wenn die TDB-Adresse gültig ist (d. h., wenn das B1-Feld der äußersten Anweisung TBEGIN ungleich null ist).The TBEGIN specified TDB is stored in one embodiment only if the TDB address is valid (ie, if the B 1 field of the outermost TBEGIN instruction is not equal to zero).

Bei Abbrüchen, die bedingt durch nichtgefilterte Programmausnahmebedingungen erfolgen, wird nur eines von PI-TBD oder Abfang-TDB gespeichert. Somit können null, ein oder zwei TDBs für einen Abbruch gespeichert werden.For aborts that are due to unfiltered program exceptions, only one of PI TBD or Intercept TDB is stored. Thus, zero, one or two TDBs can be stored for abort.

Weitere Details zu einem Beispiel für jeden der TDBs sind im Folgenden beschrieben:
TBEGIN-spezifizierter TDB: Der von einer gültigen Transaktionsdiagnoseblock-Adresse spezifizierte 256-Byte-Speicherort. Wenn die Transaktionsdiagnoseblock-Adresse gültig ist, wird der TBEGIN-spezifizierte TDB auf einem Transaktionsabbruch gespeichert. Der TBEGIN-spezifizierte TDB unterliegt allen Speicherschutzmechanismen, die beim Ausführen der äußersten Anweisung TRANSACTION BEGIN wirksam sind. Ein PER-(Programmereignisaufzeichnungs-)Speicheränderungsereignis für einen beliebigen Abschnitt des TBEGIN-spezifizierten TDB wird während des Ausführens der äußersten TBEGIN und nicht während der Transaktionsabbruchverarbeitung erkannt.
Further details of an example of each of the TDBs are described below:
TBEGIN-Specified TDB: The 256-byte location specified by a valid transaction diagnostic block address. If the transaction diagnostic block address is valid, the TBEGIN specified TDB is stored on a transaction abort. The TBEGIN-specified TDB is subject to all memory protection mechanisms that are in effect when the outermost TRANSACTION BEGIN statement is executed. A PER (Program Event Log) memory change event for any portion of the TBEGIN specified TDB is detected during execution of the outermost TBEGIN rather than during transaction abort processing.

Ein Zweck der PER besteht darin, Debugging-Programme zu unterstützen. Sie ermöglicht, dass das Programm auf die folgenden beispielhaften Ereignistypen hingewiesen wird:

  • * Ausführen einer erfolgreichen Verzweigungsanweisung. Die Option wird für den Fall bereitgestellt, dass ein Ereignis nur auftritt, wenn sich der Ziel-Verzweigungsspeicherort innerhalb des ausgewiesenen Speicherbereichs befindet.
  • * Abrufen einer Anweisung aus dem ausgewiesenen Speicherbereich.
  • * Ändern der Inhalte des ausgewiesenen Speicherbereichs. Die Option wird für den Fall bereitgestellt, dass ein Ereignis nur auftritt, wenn sich der Speicherbereich innerhalb ausgewiesener Adressräume befindet.
  • * Ausführen einer Anweisung STORE USING REAL ADDRESS.
  • * Ausführen der Anweisung TRANSACTION END.
One purpose of PER is to support debugging programs. It allows the program to be alerted to the following sample event types:
  • * Execute a successful branch instruction. The option is provided in case an event occurs only when the target branch location is within the designated memory area.
  • * Get a statement from the designated space.
  • * Change the contents of the designated memory area. The option is provided in case an event occurs only if the storage area is within designated address spaces.
  • * Execute a STORE USING REAL ADDRESS statement.
  • * Execute the statement TRANSACTION END.

Das Programm kann selektiv spezifizieren, dass ein oder mehrere der obigen Ereignistypen erkannt werden, mit der Ausnahme, dass das Ereignis für STORE USING REAL ADDRESS nur mit dem Speicheränderungsereignis spezifiziert werden kann. Die Informationen bezüglich eines PER-Ereignisses werden dem Programm mithilfe einer Programmunterbrechung zur Verfügung gestellt, wobei die Ursache der Unterbrechung im Unterbrechungscode gekennzeichnet ist.The program may selectively specify that one or more of the above event types be recognized, with the exception that the STORE USING REAL ADDRESS event may be specified only with the memory change event. The information regarding a PER event is provided to the program by means of a program interruption, with the cause of the interrupt being indicated in the interruption code.

Wenn die Transaktionsdiagnoseblock-Adresse ungültig ist, wird ein TBEGIN-spezifizierter TDB nicht gespeichert.If the transaction diagnostic block address is invalid, a TBEGIN-specified TDB will not be stored.

Programmunterbrechungs-TDB: Reale Speicherorte 6.144 bis 6.399 (1800 bis 18FF hex). Der Programmunterbrechungs-TDB wird gespeichert, wenn eine Transaktion aufgrund einer Programmunterbrechung abgebrochen wird. Wenn eine Transaktion aufgrund einer anderen Ursache abgebrochen wird, sind die Inhalte des Programmunterbrechungs-TDB nicht vorhersagbar.Program Interrupt TDB: Real locations 6.144 to 6.399 (1800 to 18FF hex). The program interrupt TDB is stored when a transaction is aborted due to a program interrupt. When a transaction is aborted due to another cause, the contents of the program interruption TDB are unpredictable.

Der Programmunterbrechungs-TDB unterliegt keinen Schutzmechanismen. PER-Speicheränderungsereignisse werden für den Programmunterbrechungs-TDB nicht erkannt, wenn er während einer Programmunterbrechung gespeichert wird.The program interruption TDB is not subject to any protection mechanisms. PER memory change events are not recognized for the program interrupt TDB when it is stored during a program interrupt.

Abfang-TDB: Der von den Speicherorten 488 bis 495 der Statusbeschreibung spezifizierte reale 256-Byte-Host-Speicherort. Der Abfang-TDB wird gespeichert, wenn eine abgebrochene Transaktion zu einem Gäste-Programmunterbrechungsabfangen führt (d. h. Abfangcode 8). Wenn eine Transaktion aufgrund einer anderen Ursache abgebrochen wird, sind die Inhalte des Abfang-TDB nicht vorhersagbar. Der Abfang-TDB unterliegt keinen Schutzmechanismen.Interception TDB: The real 256-byte host location specified by the location description locations 488-495. The interception TDB is stored when an aborted transaction results in guest interruption interception (i.e., intercept code 8). If a transaction is aborted due to another cause, the contents of the interception TDB are unpredictable. The interception TDB is not subject to any protection mechanisms.

Wie in 9 gezeigt, sind die Felder eines Transaktionsdiagnoseblocks 900 bei einer Ausführungsform wie folgt:
Format 902: Byte 0 enthält eine Gültigkeits- und Formatanzeige wie folgt: Wert Bedeutung 0 Die restlichen Felder des TDB sind nicht vorhersagbar. 1 Ein Format-1-TDB, dessen restliche Felder im Folgenden beschrieben sind. 2 bis 255 Reserviert
As in 9 shown are the fields of a transaction diagnostic block 900 in one embodiment, as follows:
format 902 : Byte 0 contains a validity and format indicator as follows: value importance 0 The remaining fields of the TDB are unpredictable. 1 A format 1 TDB whose remaining fields are described below. 2 to 255 Reserved

Ein TDB, bei dem das Formatfeld null ist, wird als Null-TDB bezeichnet.A TDB where the format field is zero is referred to as a zero TDB.

Markierungen 904: Byte 1 enthält verschiedene Anzeigen, wie folgt:
Konflikt-Token-Gültigkeit (CTV, Conflict Token Validity): Wenn eine Transaktion aufgrund eines Abruf- oder Speicherkonflikts abgebrochen wird (d. h. Abbruchcodes 9 bzw. 10), ist Bit 0 von Byte 1 die Konflikt-Token-Gültigkeitsanzeige. Wenn die CTV-Anzeige eins ist, enthält das Konflikt-Token 910 in Bytes 16 bis 23 des TDB die logische Adresse, auf der der Konflikt erkannt wurde. Wenn die CTV-Anzeige null ist, sind Bytes 16 bis 23 des TDB nicht vorhersagbar.
marks 904 : Byte 1 contains various displays, as follows:
Conflict Token Validity (CTV): When a transaction is aborted due to a retrieve or memory conflict (ie, abort codes 9 and 10, respectively), bit 0 of byte 1 is the contention token valid indication. If the CTV display is one, the conflict token is included 910 in bytes 16 to 23 of the TDB the logical address where the conflict was detected. If the CTV display is zero, bytes 16 through 23 of the TDB are unpredictable.

Wenn eine Transaktion aus einem Grund abgebrochen wird, bei dem es sich nicht um einen Abruf- oder Speicherkonflikt handelt, wird Bit 0 von Byte 1 als null gespeichert.If a transaction is aborted for a reason other than a polling or memory conflict, bit 0 of byte 1 is stored as zero.

Anzeige einer eingeschränkten Transaktion (CTI, Constrained-Transaction Indication): Wenn sich die CPU im Modus der eingeschränkten transaktionsorientierten Ausführung befindet, wird Bit 1 von Byte 1 auf eins gesetzt. Wenn sich die CPU im Modus der nichteingeschränkten transaktionsorientierten Ausführung befindet, wird Bit 1 von Byte 1 auf null gesetzt.Constrained-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 the unrestricted transactional execution mode, bit 1 of byte 1 is set to zero.

Reserviert: Bits 2 bis 7 von Byte 1 sind reserviert und als Nullen gespeichert.Reserved: Bits 2 to 7 of byte 1 are reserved and stored as zeros.

Transaktionsverschachtelungstiefe (TND) 906: Bytes 6 bis 7 enthalten die Transaktionsverschachtelungstiefe, wenn die Transaktion abgebrochen wurde.Transaction nesting depth (TND) 906 : Bytes 6 through 7 contain the transaction nesting depth if the transaction was aborted.

Transaktionsabbruchcode (TAC) 908: Bytes 8 bis 15 enthalten einen vorzeichenlosen 64-Bit-Transaktionsabbruchcode. Jeder Codepunkt zeigt einen Grund an, aus dem eine Transaktion abgebrochen wird.Transaction Cancellation Code (TAC) 908 : Bytes 8 through 15 contain an unsigned 64-bit transaction abort code. Each code point indicates a reason why a transaction is aborted.

Es ist modellabhängig, ob der Transaktionsabbruchcode im Programmunterbrechungs-TDB gespeichert wird, wenn eine Transaktion aus anderen Bedingungen als aufgrund einer Programmunterbrechung abgebrochen wird.It depends on the model whether the transaction abort code is stored in the program interrupt TDB when a transaction is aborted due to conditions other than program interruption.

Konflikt-Token 910: Für Transaktionen, die aufgrund eines Abruf- oder Speicherkonflikts abgebrochen werden (d. h. Abbruchcodes 9 bzw. 10) enthalten Bytes 16 bis 23 die logische Adresse des Speicherorts an dem der Konflikt erkannt wurde. Das Konflikt-Token ist von Bedeutung, wenn das CTV-Bit, Bit 0 von Byte 1, eins ist.Conflict token 910 For transactions that are aborted due to a fetch or memory conflict (ie, abort codes 9 and 10, respectively), bytes 16 through 23 contain the logical address of the location where the conflict was detected. The conflict token is significant when the CTV bit, bit 0 of byte 1, is one.

Wenn das CTV-Bit null ist, sind Bytes 16 bis 23 nicht vorhersagbar.If the CTV bit is zero, bytes 16 through 23 are unpredictable.

Aufgrund des spekulativen Ausführens durch die CPU kann das Konflikt-Token einen Speicherort ausweisen, auf den die konzeptionelle Ausführungsabfolge der Transaktion nicht unbedingt zugreift.Due to speculative execution by the CPU, the conflict token may identify a storage location to which the conceptual execution sequence of the transaction does not necessarily access.

Anweisungsadresse für abgebrochene Transaktion (ATIA, Aborted Transaction Instruction Address) 912: Bytes 24 bis 31 enthalten eine Anweisungsadresse, die die Anweisung kennzeichnet, die ausgeführt wurde, als ein Abbruch erkannt wurde. Wenn eine Transaktion aufgrund von Abbruchcodes 2, 5, 6, 11, 13 oder 256 oder höher abgebrochen wird oder wenn eine Transaktion aufgrund von Abbruchcode 4 oder 13 abgebrochen wird und die Programmausnahmebedingung auf Leerwert gesetzt wird, zeigt die ATIA direkt die Anweisung an, die ausgeführt wurde. Wenn eine Transaktion aufgrund von Abbruchcode 4 oder 12 abgebrochen wird und die Programmausnahmebedingung nicht auf Leerwert gesetzt ist, zeigt die ATIA an der Anweisung, die ausgeführt wurde, vorbei.Statement Address for Aborted Transaction (ATIA, Aborted Transaction Instruction Address) 912 Bytes 24 through 31 contain an instruction address identifying the instruction that was executed when an abort was detected. If a transaction is aborted due to abort codes 2, 5, 6, 11, 13 or 256 or higher, or if a transaction is aborted due to abort code 4 or 13 and the program exception is cleared, the ATIA directly displays the instruction that issued was executed. If a transaction aborts due to abort code 4 or 12 and the program exception is not set to blank, the ATIA will miss the instruction that was executed.

Wenn eine Transaktion aufgrund von Abbruchcodes 7 bis 10, 14 bis 16 oder 255 abgebrochen wird, zeigt die ATIA nicht notwendigerweise die den Abbruch verursachende Anweisung an, sondern kann auf eine frühere oder spätere Anweisung innerhalb der Transaktion zeigen.If a transaction is aborted due to abort codes 7 through 10, 14 through 16, or 255, the ATIA does not necessarily indicate the abort-causing instruction, but may point to an earlier or later instruction within the transaction.

Wenn eine Transaktion aufgrund einer Anweisung abgebrochen wird, die das Ziel einer Anweisung vom Ausführungstyp ist, kennzeichnet die ATIA die Anweisung vom Ausführungstyp entweder dadurch, dass sie auf die Anweisung oder an dieser vorbei zeigt, je nach oben beschriebenem Abbruchcode. Die ATIA zeigt das Ziel der Anweisung vom Ausführungstyp nicht an.When a transaction is aborted due to an instruction that is the target of an execution-type instruction, the ATIA identifies the instruction of execution type either by pointing or past the instruction, depending on the abort code described above. The ATIA does not display the destination of the execution type statement.

Die ATIA unterliegt dem Adressiermodus, wenn die Transaktion abgebrochen wird. Im 24-Bit-Adressiermodus enthalten Bits 0 bis 40 des Feldes Nullen. Im 31-Bit-Adressiermodus enthalten Bits 0 bis 32 des Feldes Nullen.The ATIA is subject to addressing mode when the transaction is aborted. In 24-bit addressing mode, bits 0 to 40 of the field contain zeros. In the 31-bit addressing mode, bits 0 to 32 of the field contain zeros.

Es ist modellabhängig, ob die Anweisungsadresse für abgebrochene Transaktion im Programmunterbrechungs-TDB gespeichert wird, wenn eine Transaktion aus anderen Bedingungen als aufgrund einer Programmunterbrechung abgebrochen wird.It is model dependent whether the aborted transaction instruction address is stored in the program interruption TDB when a transaction is aborted due to conditions other than program interruption.

Wenn eine Transaktion aufgrund von Abbruchcode 4 oder 12 abgebrochen wird und die Programmausnahmebedingung nicht auf Leerwert gesetzt ist, zeigt die ATIA nicht auf die Anweisung, die den Abbruch verursacht. Durch Subtrahieren der Anzahl von durch den Unterbrechungslängencode (ILC, Interruption Length Code) angezeigten Halbwörtern von der ATIA kann die den Abbruch verursachende Anweisung unter Bedingungen gekennzeichnet werden, die unterdrückend oder beendend sind, oder für Nicht-PER-Ereignisse, die ausgeführt werden. Wenn eine Transaktion aufgrund eines PER-Ereignisses abgebrochen wird und keine andere Programmausnahmebedingung vorliegt, ist die ATIA nicht vorhersagbar. If a transaction is aborted due to abort code 4 or 12 and the program exception is not set to blank, the ATIA will not point to the statement that caused the abort. By subtracting the number of half words indicated by the Interruption Length Code (ILC) from the ATIA, the instruction causing the abort can be marked under conditions that are suppressive or terminating, or for non-PER events that are executed. If a transaction is aborted due to a PER event and there is no other program exception, the ATIA is unpredictable.

Wenn die Transaktionsdiagnoseblock-Adresse gültig ist, kann der ILC in einer Programmunterbrechungskennzeichnung (PIID, Programm Interruption Identification) in Bytes 36 bis 39 des TBEGIN-spezifizierten TDB untersucht werden. Wenn keine Filterung angewendet wird, kann der ILC in der PIID an Speicherort 140 bis 143 in einem realen Speicher untersucht werden.If the transaction diagnostic block address is valid, the ILC may be examined in a Program Interruption Identification (PIID) in bytes 36-39 of the TBEGIN-specified TDB. If no filtering is applied, the ILC in the PIID at locations 140 through 143 can be examined in real memory.

Ausnahmezugriffskennzeichnung (EAID, Exception Access Identification) 914: Bei Transaktionen, die aufgrund bestimmter gefilterter Programmausnahmebedingungen abgebrochen werden, enthält Byte 32 des TBEGIN-spezifizierten TDB die Ausnahmezugriffskennzeichnung. Bei einem Beispiel der z/Architecture sind das Format der EAID und die Fälle, in Bezug auf welche sie gespeichert wird, gleich wie die in einem realen Speicherort 160 beschriebenen, wenn die Ausnahmebedingung zur einer Unterbrechung führt, wie in dem oben durch Bezugnahme aufgenommenen Principles of Operation.Exception Access Identification (EAID) 914 : For transactions that are aborted due to certain filtered program exceptions, byte 32 of the TBEGIN-specified TDB contains the exception access tag. In one example of the z / Architecture, the format of the EAID and the cases in which it is stored are the same as those described in a real storage location 160 when the exception results in an interrupt, as in the principles incorporated by reference above of operation.

Bei Transaktionen, die aus anderen Gründen abgebrochen werden, beispielsweise aufgrund von Ausnahmebedingungen, die zu einer Programmunterbrechung führen, ist Byte 32 nicht vorhersagbar. Byte 32 ist im Programmunterbrechungs-TDB nicht vorhersagbar.For transactions that are aborted for other reasons, such as exceptions that cause a program interruption, Byte 32 is unpredictable. Byte 32 is unpredictable in the program interrupt TDB.

Dieses Feld wird nur im TDB gespeichert, der von der Transaktionsdiagnoseblock-Adresse ausgewiesen wird; andernfalls ist das Feld reserviert. Die EAID wird nur für zugriffslistengesteuerte oder DAT-Schutz-, ASCE-Typ-, Seitenumsetzungs-, Region-eins-Umsetzungs-, Region-zwei-Umsetzungs-, Region-drei-Umsetzungs- und Segmentumsetzungs-Programmausnahme-Bedingungen gespeichert.This field is stored only in the TDB identified by the transaction diagnostic block address; otherwise the field is reserved. The EAID is stored only for Access List Controlled or DAT Protection, ASCE Type, Page Translation, Region One Translation, Region Two Translation, Region Three Translation, and Segment Translation Program Exception conditions.

Datenausnahmecode (DXC) 916: Bei Transaktionen, die aufgrund von gefilterten Datenausnahme-Programmausnahme-Bedingungen abgebrochen werden, enthält Byte 33 des TBEGIN-spezifizierten TDB den Datenausnahmecode. Bei einem Beispiel der z/Architecture sind das Format der DXC und die Fälle, in Bezug auf welche sie gespeichert wird, gleich wie die in einem realen Speicherort 147 beschriebenen, wenn die Ausnahmebedingung zur einer Unterbrechung führt, wie in dem oben durch Bezugnahme aufgenommenen Principles of Operation. Bei einem Bespiel enthält Speicherort 147 den DXC.Data Exception Code (DXC) 916 For transactions that are aborted due to filtered data exception program exception conditions, byte 33 of the TBEGIN-specified TDB contains the data exception code. In one example of the z / Architecture, the format of the DXC and the cases in which it is stored are the same as those described in a real memory location 147 when the exception results in an interrupt, as in the principles incorporated by reference above of operation. For an example, location 147 contains the DXC.

Bei Transaktionen, die aus anderen Gründen abgebrochen werden, beispielsweise aufgrund von Ausnahmebedingungen, die zu einer Programmunterbrechung führen, ist Byte 33 nicht vorhersagbar. Byte 33 ist im Programmunterbrechungs-TDB nicht vorhersagbar.For transactions that are aborted for other reasons, such as exceptions that cause a program interruption, byte 33 is unpredictable. Byte 33 is unpredictable in the program interruption TDB.

Dieses Feld wird nur im TDB gespeichert, der von der Transaktionsdiagnoseblock-Adresse ausgewiesen wird; andernfalls ist das Feld reserviert. Der DXC wird nur für Datenprogrammausnahme-Bedingungen gespeichert.This field is stored only in the TDB identified by the transaction diagnostic block address; otherwise the field is reserved. The DXC is saved only for data program exception conditions.

Programmunterbrechungskennzeichnung (PIID) 918: Bei Transaktionen, die aufgrund gefilterter Programmausnahmebedingungen abgebrochen werden, enthalten Bytes 36 bis 39 des TBEGIN-spezifizierten TDB die Programmunterbrechungskennzeichnung. Bei einem Beispiel der z/Architecture ist das Format der PIID das gleiche wie das in realen Speicherorten 140 bis 143 beschriebene, wenn die Bedingung zu einer Unterbrechung führt (wie in den oben durch Bezugnahme ausgenommenen Principles of Operation), mit der Ausnahme, dass der Anweisungslängencode in Bits 13 bis 14 der PIID jeweils der Anweisung entspricht, bei der die Ausnahmebedingung erkannt wurde.Program Interrupt Identification (PIID) 918 For transactions that are aborted due to filtered program exceptions, bytes 36 through 39 of the TBEGIN-specified TDB contain the program interruption flag. In one example of the z / architecture, the format of the PIID is the same as that described in real memory locations 140-143 when the condition results in an interrupt (as in the Principles Of Operation, supra), with the exception that the Instruction length code in bits 13 to 14 of the PIID corresponds, respectively, to the instruction at which the exception was detected.

Bei Transaktionen, die aus anderen Gründen abgebrochen werden, beispielsweise aufgrund von Ausnahmebedingungen, die zu einer Programmunterbrechung führen, sind Bytes 36 bis 39 nicht vorhersagbar. Bytes 36 bis 39 sind im Programmunterbrechungs-TDB nicht vorhersagbar.For transactions that are aborted for other reasons, such as exceptions that cause a program interrupt, bytes 36 through 39 are unpredictable. Bytes 36 through 39 are unpredictable in the program interrupt TDB.

Dieses Feld wird nur im TDB gespeichert, der von der Transaktionsdiagnoseblock-Adresse ausgewiesen wird; andernfalls ist das Feld reserviert. Die Programmunterbrechungskennzeichnung wird nur für Programmausnahmebedingungen gespeichert.This field is stored only in the TDB identified by the transaction diagnostic block address; otherwise the field is reserved. The program interruption flag is stored only for program exception conditions.

Umsetzungsausnahmekennzeichnung (TEID, Translation Exception Identification) 920: Bei Transaktionen, die aufgrund beliebiger der folgenden gefilterten Programmausnahmebedingungen abgebrochen werden, enthalten Bytes 40 bis 47 des TBEGIN-spezifizierten TDB die Umsetzungsausnahmekennzeichnung.

  • * Zugriffslistengesteuert oder DAT-Schutz
  • * ASCE-Typ
  • * Seitenumsetzung
  • * Region-eins-Umsetzung
  • * Region-zwei-Umsetzung
  • * Region-drei-Umsetzung
  • * Segmentumsetzungsausnahme
Translation exception identification (TEID, Translation Exception Identification) 920 : For transactions that are aborted due to any of the following filtered program exceptions, bytes 40 through 47 of the TBEGIN-specified TDB contain the conversion exception tag.
  • * Access list controlled or DAT protection
  • * ASCE type
  • * Page conversion
  • * Region One implementation
  • * Region-two-implementation
  • * Region-three-implementation
  • * Segment conversion exception

Bei einem Beispiel der z/Architecture ist das Format der TIED das gleiche wie das in realen Speicherorten 168 bis 175 beschriebenen, wenn die Bedingung zu einer Unterbrechung führt, wie in den oben durch Bezug aufgenommenen Principles of Operation.In one example of the z / Architecture, the format of the TIED is the same as that described in real memory locations 168-175 when the condition results in an interrupt, as in the Principles of Operation, incorporated by reference above.

Bei Transaktionen, die aus anderen Gründen abgebrochen werden, beispielsweise aufgrund von Ausnahmebedingungen, die zu einer Programmunterbrechung führen, sind Bytes 40 bis 47 nicht vorhersagbar. Bytes 40 bis 47 sind im Programmunterbrechungs-TDB nicht vorhersagbar.For transactions that are aborted for other reasons, such as exceptions that cause a program interrupt, bytes 40 through 47 are unpredictable. Bytes 40 through 47 are unpredictable in the program interrupt TDB.

Dieses Feld wird nur im TDB gespeichert, der von der Transaktionsdiagnoseblock-Adresse ausgewiesen wird; andernfalls ist das Feld reserviert.This field is stored only in the TDB identified by the transaction diagnostic block address; otherwise the field is reserved.

Anhalte-Ereignisadresse 922: Bei Transaktionen, die aufgrund gefilterter Programmausnahmebedingungen abgebrochen werden, enthalten Bytes 48 bis 55 des TBEGIN-spezifizierten TDB die Anhalte-Eignisadresse. Bei einem Beispiel der z/Architecture ist das Format der Anhalte-Ereignisadresse das gleiche wie das in realen Speicherorten 272 bis 279 beschriebenen, wenn die Bedingung zu einem Anhalten führt, wie in den oben durch Bezug aufgenommenen Principles of Operation.Stop event address 922 For transactions that are aborted due to filtered program exceptions, bytes 48 through 55 of the TBEGIN-specified TDB contain the suspend address. In one example of z / Architecture, the format of the stall event address is the same as that described in physical locations 272-279 if the condition results in a stall, as in the Principles of Operation, incorporated by reference above.

Bei Transaktionen, die aus anderen Gründen abgebrochen werden, beispielsweise aufgrund von Ausnahmebedingungen, die zu einer Programmunterbrechung führen, sind Bytes 48 bis 55 nicht vorhersagbar. Bytes 48 bis 55 sind im Programmunterbrechungs-TDB nicht vorhersagbar.For transactions that are aborted for other reasons, such as exceptions that cause a program interrupt, bytes 48 through 55 are unpredictable. Bytes 48 through 55 are unpredictable in the program interrupt TDB.

Dieses Feld wird nur im TDB gespeichert, der von der Transaktionsdiagnoseblock-Adresse ausgewiesen wird; andernfalls ist das Feld reserviert.This field is stored only in the TDB identified by the transaction diagnostic block address; otherwise the field is reserved.

Weitere Details zu Anhalte-Ereignissen sind im Folgenden beschrieben.Further details about stopping events are described below.

Bei einer Ausführungsform der z/Architecture stellt die PER-3-Einrichtung, sofern sie installiert ist, die Adresse der letzten Anweisung dem Programm bereit, um ein Anhalten der sequenziellen Ausführung der CPU zu bewirken. Eine Aufzeichnung von Anhalte-Ereignisadressen kann als Debugging-Unterstützung für das Erkennen von fehlerhaften Verzweigungen verwendet werden. Diese Einrichtung stellt beispielsweise ein 64-Bit-Register in der CPU bereit, das Register für Anhalte-Ereignisadressen genannt wird. Jedes Mal, wenn eine Anweisung außer TRANSACTION ABORT ein Anhalten der sequenziellen Anweisungsausführung bewirkt (d. h., die Anweisungsadresse im PSW wird ersetzt, anstatt um die Länge der Anweisung erhöht zu werden), wird die Adresse dieser Anweisung im Register für Anhalte-Ereignisadressen platziert. Jedes Mal, wenn eine Programmunterbrechung erfolgt, werden die aktuellen Inhalte des Registers für Anhalte-Ereignisadressen unabhängig davon, ob PER angezeigt ist, in realen Speicherorten 272 bis 279 platziert.In one embodiment of the z / Architecture, the PER-3 device, if installed, provides the address of the last instruction to the program to cause the sequential execution of the CPU to stop. A record of stopping event addresses can be used as debugging support for detecting bad branches. For example, this facility provides a 64-bit register in the CPU called the Stops Event Address register. Each time an instruction other than TRANSACTION ABORT causes the sequential instruction execution to stop (i.e., the instruction address in the PSW is replaced, rather than incrementing the instruction length), the address of that instruction is placed in the Hold Event Address register. Each time a program interrupt occurs, the current contents of the stall event address register, regardless of whether PER is displayed, are placed in physical locations 272-279.

Wenn die das Unterbrechungsereignis verursachende Anweisung das Ziel einer Anweisung vom Ausführungstyp ist (EXECUTE oder EXECUTE RELATIVE LONG), wird die zum Abrufen der Anweisung vom Ausführungstyp verwendete Anweisungsadresse im Register für Anhalte-Ereignisadressen platziert.If the instruction causing the Interrupt Event is the target of an Execution Type instruction (EXECUTE or EXECUTE RELATIVE LONG), the instruction address used to retrieve the instruction of Execution Type is placed in the Stops Event Address register.

Bei einer Ausführungsform der z/Architecture wird ein Anhalte-Ereignis als aufgetreten angesehen, wenn eine der folgenden Anweisungen zu einer Verzweigung führt: 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 BRANCH RELATIVE (CRJ, CGRJ); COMPARE IMMEDIATE AND BRANCH (CIB, CGIB); COMPARE IMMEDIATE AND BRANCH RELATIVE (CIJ, CGIJ); COMPARE LOGICAL AND BRANCH (CLRB, CLGRB); COMPARE LOGICAL AND BRANCH RELATIVE (CLRJ, CLGRJ); COMPARE LOGICAL IMMEDIATE AND BRANCH (CLIB, CLGIB); und COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE (CLIJ, CLGIJ).In one embodiment of the z / Architecture, a stall event is considered to have occurred when one of the following instructions results in 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 BRANCH RELATIVE (CRJ, CGRJ); COMPARE IMMEDIATE AND BRANCH (CIB, CGIB); COMPARE IMMEDIATE AND BRANCH RELATIVE (CIJ, CGIJ); COMPARE LOGICAL AND BRANCH (CLRB, CLGRB); COMPARE LOGICAL AND BRANCH RELATIVE (CLRJ, CLGRJ); COMPARE LOGICAL IMMEDIATE AND BRANCH (CLIB, CLGIB); and COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE (CLIJ, CLGIJ).

Ein Anhalte-Ereignis wird darüber hinaus als aufgetreten angesehen, wenn eine der folgenden Anweisungen ausgeführt wurde: BRANCH AND SET AUTHORITY (BSA); BRANCH IN SUBSPACE GROUP (BSG); BRANCH RELATIVE AND SAVE (BRAS); BRANCH RELATIVE AND SAVE LONG (BRASL); LOAD PSW (LPSW); LOAD PSW EXTENDED (LPSWE); PROGRAM CALL (PC); PROGRAM RETURN (PR); PROGRAM TRANSFER (PT); PROGRAM TRANSFER WITH INSTANCE (PTI); RESUME PROGRAM (RP); und TRAP (TRAP2, TRAP4).A suspend event is also considered to have occurred when one of the following statements has been executed: BRANCH AND SET AUTHORITY (BSA); BRANCH IN SUBSPACE GROUP (BSG); BRANCH RELATIVE AND SAVE (BRAS); BRANCH RELATIVE AND SAVE LONG (BRASL); LOAD PSW (LPSW); LOAD PSW EXTENDED (LPSWE); PROGRAM CALL (PC); PROGRAM RETURN (PR); PROGRAM TRANSFER (PT); PROGRAM TRANSFER WITH INSTANCE (PTI); RESUME PROGRAM (RP); and TRAP (TRAP2, TRAP4).

Ein Anhalte-Ereignis wird nicht als aufgetreten angesehen, wenn es die Folge eines Transaktionsabbruchs ist (entweder impliziert oder eine Folge der Anweisung TRANSACTION ABORT).A suspend event is not considered to have occurred if it is the result of a transaction abort (either implied or a consequence of the TRANSACTION ABORT statement).

Modellabhängige Diagnoseinformationen 924: Bytes 112 bis 127 enthalten modellabhängige Diagnoseinformationen.Model-dependent diagnostic information 924 : Bytes 112 to 127 contain model-dependent diagnostic information.

Bei allen Abbruchcodes mit Ausnahme von 12 (gefilterte Programmunterbrechung) werden die modellabhängigen Diagnoseinformationen in jedem TDB gespeichert, der gespeichert ist.For all abort codes except 12 (filtered program interrupt), the model-dependent diagnostic information is stored in each TDB that is stored.

Bei einer Ausführungsform enthalten die modellabhängigen Diagnoseinformationen Folgendes:

  • * Bytes 112 bis 119 enthalten einen Vektor von 64 Bit, der transaktionsorientierter Verzeigungshinweis (TXBI) genannt wird. Jedes der ersten 63 Bits des Vektors geben das Ergebnis der Ausführung Verzweigungsanweisung, während sich die CPU im transaktionsorientierten Ausführungsmodus befand, wie folgt an:
Wert Bedeutung 0 Die Anweisung wurde ohne Verzweigung ausgeführt. 1 Die Anweisung wurde mit Verzweigung ausgeführt. In one embodiment, the model-dependent diagnostic information includes:
  • Bytes 112 through 119 contain a 64-bit vector called Transactional Disclaimer (TXBI). Each of the first 63 bits of the vector indicates the result of the branch instruction execution while the CPU was in transaction-oriented execution mode as follows:
value importance 0 The statement was executed without branching. 1 The statement was executed with branching.

Bit 0 stellt das Ergebnis der ersten solchen Verzweigungsanweisung dar, Bit 1 das Ergebnis der zweiten solchen Anweisung usw.Bit 0 represents the result of the first such branch instruction, bit 1 represents the result of the second such instruction, and so on.

Wenn weniger als 63 Verzweigungsanweisungen ausgeführt wurden, während sich die CPU im Modus der transaktionsorientierten Ausführung befand, werden die ganz rechten Bits, die nicht Verzweigungsanweisungen entsprechen, auf Nullen gesetzt (Bit 63 mit eingeschlossen). Wenn mehr als 63 Verzweigungsanweisungen ausgeführt wurden, wird Bit 63 der TXBI auf eins gesetzt.If fewer than 63 branch instructions were executed while the CPU was in transactional execution mode, the rightmost bits that do not correspond to branch instructions are set to zeros (bit 63 included). If more than 63 branch instructions have been executed, bit 63 of the TXBI is set to one.

Bits in der TXBI werden von Anweisungen gesetzt, die in der Lage sind, ein Anhalte-Ereignis zu bewirken, wie oben angeführt, mit Ausnahme des Folgenden:

  • – Eine beschränkte Anweisung bewirkt nicht, dass ein Bit in der TXBI gesetzt wird.
  • – Bei Anweisungen von beispielsweise der z/Architecture, ist es, wenn das M1-Feld der Anweisungen BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION oder BRANCH RELATIVE ON CONDITION LONG null ist oder wenn das R2-Feld der folgenden Anweisungen null ist, modellabhängig, ob das Ausführen der Anweisung ein Setzen eines Bit in der TXBI bewirkt.
  • * BRANCH AND LINK (BALR); BRANCH AND SAVE (BASR); BRANCH AND SAVE AND SET MODE (BASSM); BRANCH AND SET MODE (BSM); BRANCH ON CONDITION (BCR); und BRANCH ON COUNT (BCTR, BCTGR)
  • * Bei Abbruchbedingungen, die durch eine Host-Zugriffsausnahme verursacht wurden, wird Bitposition 0 von Byte 127 auf eins gesetzt. Bei allen anderen Abbruchbedingungen wird Bitposition 0 von Byte 127 auf null gesetzt.
  • * Bei Abbruchbedingungen, die durch die Lade/Speicher-Einheit (LSU, Load/Store Unit) erkannt wurden, enthalten die ganz rechten fünf Bits von Byte 127 eine Anzeige der Ursache. Bei Abbruchbedingungen, die nicht von der LSU erkannt wurden, ist Byte 127 reserviert.
Bits in the TXBI are set by instructions capable of causing a stall event, as noted above, except for the following:
  • - A restricted instruction does not cause a bit to be set in the TXBI.
  • For example, for instructions of the z / architecture, it is when the M 1 field of the instructions BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION, or BRANCH RELATIVE ON CONDITION LONG is zero, or if the R 2 field of the following instructions is null, Depending on the model, whether the execution of the instruction causes a bit to be set in the TXBI.
  • * BRANCH AND LINK (BALR); BRANCH AND SAVE (BASR); BRANCH AND SAVE AND SET MODE (BASSM); BRANCH AND SET MODE (BSM); BRANCH ON CONDITION (BCR); and BRANCH ON COUNT (BCTR, BCTGR)
  • * For abort conditions 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.
  • * At break conditions detected by the load / store 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.

Allgemeine Register 930: Bytes 128 bis 255 enthalten die Inhalte der allgemeinen Register 0 bis 15 zu dem Zeitpunkt, an dem die Transaktion abgebrochen wurde. Die Register werden in ansteigender Reihenfolge gespeichert, beginnend mit dem allgemeinen Register 0 in den Bytes 128 bis 135, dem allgemeinen Register 1 in den Bytes 136 bis 143 usw.General registers 930 : Bytes 128 through 255 contain the contents of the general registers 0 through 15 at the time the transaction was aborted. The registers are in ascending order stored, starting with the general register 0 in the bytes 128 to 135, the general register 1 in the bytes 136 to 143, etc.

Reserviert: Alle anderen Felder sind reserviert. Wenn nicht anderweitig angegeben, sind die Inhalte reservierter Felder nicht vorhersagbar.Reserved: All other fields are reserved. Unless otherwise stated, the contents of reserved fields are unpredictable.

Wie durch andere CPUs und das E/A-Teilsystem wahrgenommen, ist das Speichern der TDB(s) während eines Transaktionsabbruchs ein Mehrfachzugriffsverweis, der nach nichttransaktionsorientierten Speichervorgängen auftritt.As perceived by other CPUs and the I / O subsystem, storing the TDB (s) during a transaction abort is a multiple-accessing pointer that occurs after non-transaction-oriented storage operations.

Eine Transaktion kann aufgrund von Ursachen abgebrochen werden, die außerhalb des Umfangs der Direktkonfiguration liegen, in der sie ausgeführt wird. Beispielsweise können Übergangsereignisse, die von einem Hypervisor (z. B. LPAR oder z/VM) erkannt werden, einen Abbruch einer Transaktion bewirken.A transaction may be aborted due to causes outside the scope of the direct configuration in which it is executed. For example, transient events detected by a hypervisor (such as LPAR or z / VM) can cause a transaction to abort.

Die im Transaktionsdiagnoseblock bereitgestellten Informationen sind für Diagnosezwecke vorgesehen und sind im Wesentlichen korrekt. Da ein Abbruch jedoch außerhalb des Umfangs der Direktkonfiguration von einem Ereignis verursacht werden kann, geben Informationen wie der Abbruchcode oder die Programmunterbrechungskennzeichnung Bedingungen innerhalb der Konfiguration eventuell nicht akkurat wieder und sollten daher nicht beim Ermitteln einer Programmaktion herangezogen werden.The information provided in the transaction diagnostic block is for diagnostic purposes and is essentially correct. However, because an abort may be caused by an event beyond the scope of the direct configuration, information such as the abort code or the program interrupt flag may not accurately reflect conditions within the configuration and should therefore not be used in determining a program action.

Zusätzlich zu den im TDB gespeicherten Diagnoseinformationen wird der Datenausnahmecode (DXC), wenn eine Transaktion aufgrund einer Datenausnahme-Programmausnahme-Bedingung abgebrochen wird und sowohl die AFP-Registersteuerung, Bit 45 von Steuerregister 0, und die effektive Steuerung zum Zulassen einer Gleitkommaoperation (F) eins sind, in Byte 2 des Gleitkomma-Steuerregisters (FPCR) platziert, unabhängig davon, ob eine Filterung für die Programmausnahmebedingung gilt. Wenn eine Transaktion abgebrochen wird und eines oder beide der AFP-Registersteuerung oder effektiven Steuerung zum Zulassen einer Gleitkommaoperation null ist bzw. sind, wird der DXC nicht im FPCR platziert.In addition to the diagnostic information stored in the TDB, the data exception code (DXC) is aborted when a transaction is aborted due to a data exception program exception condition and both the AFP register control, bit 45 of control register 0, and the effective control for permitting a floating point operation (F). are placed in byte 2 of the floating point control register (FPCR), regardless of whether filtering is for the program exception. If a transaction is aborted and one or both of the AFP register control or effective control to allow floating point operation is zero, the DXC is not placed in the FPCR.

Bei einer Ausführungsform, wie hier gezeigt, werden die folgenden allgemeinen Anweisungen bereitgestellt, wenn die Einrichtung für transaktionsorientierte Ausführung installiert ist.

  • * EXTRACT TRANSACTION NESTING DEPTH
  • * NONTRANSACTIONAL STORE
  • * TRANSACTION ABORT
  • * TRANSACTION BEGIN
  • * TRANSACTION END
In one embodiment, as shown here, the following general instructions are provided when the transaction-oriented execution device is installed.
  • * EXTRACT TRANSACTION NESTING DEPTH
  • * NONTRANSACTIONAL STORE
  • * TRANSACTION ABORT
  • * TRANSACTION BEGIN
  • * TRANSACTION END

Wenn sich die CPU im Modus der transaktionsorientierten Ausführung befindet, ist das versuchte Ausführen bestimmter Anweisungen eingeschränkt und bewirkt, dass die Transaktion abgebrochen wird.When the CPU is in transactional execution mode, attempting to execute certain instructions is restricted and causes the transaction to be aborted.

Wenn im Modus der eingeschränkten transaktionsorientierten Ausführung ausgegeben, kann ein versuchtes Ausführen von eingeschränkten Anweisungen auch zu einer Programmunterbrechung durch eine eingeschränkte Transaktion führen oder kann dazu führen, dass das Ausführen fortgesetzt wird, als wäre die Transaktion nicht eingeschränkt.When issued in Restricted Transactional Execution mode, attempting to execute Restricted Statements may also result in a program interruption by a Restricted Transaction, or may result in continued execution as if the Transaction were not restricted.

Bei einem Beispiel der z/Archtecture beinhalten eingeschränkte Anweisungen beispielsweise die folgenden nichtprivilegierten Anweisungen: COMPARE AND SWAP AND STORE; MODIFY RUNTIME INSTRUMENTATION CONTROLS; PERFORM LOCKED OPERATION; PREFETCH DATA (RELATIVE LONG), wenn der Code im M1-Feld 6 oder 7 ist; STORE CHARACTERS UNDER MASK HIGH, wenn das M3-Feld null ist und der Code im R1-Feld 6 oder 7 ist; STORE FACILITY LIST EXTENDED; STORE RUNTIME INSTRUMENTATION CONTROLS; SUPERVISOR CALL; und TEST RUNTIME INSTRUMENTATION CONTROLS.For example, in a z / Archtcture example, restricted statements include the following nonprivileged statements: COMPARE AND SWAP AND STORE; MODIFY RUNTIME INSTRUMENTATION CONTROLS; PERFORM LOCKED OPERATION; PREFETCH DATA (RELATIVE LONG) if the code in the M 1 field is 6 or 7; STORE CHARACTERS UNDER MASK HIGH if the M 3 field is zero and the code in the R 1 field is 6 or 7; STORE FACILITY LIST EXTENDED; STORE RUNTIME INSTRUMENTATION CONTROLS; SUPERVISOR CALL; and TEST RUNTIME INSTRUMENTATION CONTROLS.

In der obigen Liste sind COMPARE AND SWAP AND STORE und PERFORM LOCKED OPERATION komplexe Anweisungen, die unter Verwendung der Grundanweisungen im TX-Modus effizienter implementiert werden können. Die Fälle für PREFETCH DATA und PREFETCH DATA RELATIVE LONG sind eingeschränkt, da die Codes 6 und 7 eine Cachespeicherzeile ausgeben, die das Festschreiben der Daten erforderlich macht, gegebenenfalls vor Ausführen einer Transaktion. SUPERVISOR CALL ist eingeschränkt, da sie eine Unterbrechung bewirkt (die zu einem Transaktionsabbruch führt).In the above list, COMPARE AND SWAP AND STORE and PERFORM LOCKED OPERATION are complex instructions that can be more efficiently implemented using the basic instructions in TX mode. The cases for PREFETCH DATA and PREFETCH DATA RELATIVE LONG are limited because codes 6 and 7 output a cache line that requires the data to be committed, possibly before executing a transaction. SUPERVISOR CALL is restricted because it causes an interruption (resulting in a transaction abort).

Unter den oben aufgelisteten Bedingungen sind die folgenden Anweisungen eingeschränkt:

  • * BRANCH AND LINK (BALR), BRANCH AND SAVE (BASR) und BRANCH AND SAVE AND SET MODE, wenn das R2-Feld der Anweisung ungleich null ist und das Verzweigungs-Tracing aktiviert ist.
  • * BRANCH AND SAVE AND SET MODE und BRANCH AND SET MODE, wenn das R2-Feld ungleich null ist und Modus-Tracing aktiviert ist; SET ADDRESSING MODE, wenn Modus-Tracing aktiviert ist.
  • * MONITOR CALL, wenn eine Überwachungsereignisbedingung erkannt wird.
Under the conditions listed above, the following instructions are restricted:
  • * BRANCH AND LINK (BALR), BRANCH AND SAVE (BASR) and BRANCH AND SAVE AND SET MODE if the R 2 field of the instruction is non-zero and branch tracing is enabled.
  • * BRANCH AND SAVE AND SET MODE and BRANCH AND SET MODE if the R 2 field is nonzero and mode tracing is enabled; SET ADDRESSING MODE when mode tracing is enabled.
  • * MONITOR CALL when a watch event condition is detected.

Die obige Liste enthält Anweisungen, die Trace-Einträge bilden können. Wenn für diese Anweisungen ein transaktionsorientiertes Ausführen und ein Bilden von Trace-Einträgen zugelassen würde und wenn die Transaktion danach abgebrochen werden würde, würde der Trace-Tabellenzeiger im Steuerregister 12 fortschreiten, die Speichervorgänge für die Trace-Tabelle würden jedoch verworfen werden. Dadurch würde eine uneinheitliche Lücke in der Trace-Tabelle zurückgelassen. Somit sind die Anweisungen in jenen Fällen, in denen sie Trace-Einträge bilden würde, beschränkt.The above list contains instructions that can form trace entries. If transaction-oriented execution and trace entry formation were allowed for these instructions, and if the transaction were subsequently aborted, the trace table pointer in the control register 12 would proceed, but the memory operations for the trace table would be discarded. This would leave a patchy gap in the trace table. Thus, the instructions are restricted in those cases where they would form trace entries.

Wenn sich die CPU im Modus der transaktionsorientierten Ausführung befindet, ist es modellabhängig, ob die folgenden Anweisungen eingeschränkt sind: 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; und RUNTIME INSTRUMENTATION ON.When the CPU is in transactional execution mode, it depends on the model, whether the following statements 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.

Jede der obigen Anweisungen wird entweder derzeit durch den Hardware-Coprozessor implementiert oder wurde in früheren Maschinen implementiert und wird somit als eingeschränkt angesehen.Each of the above instructions is either currently being implemented by the hardware co-processor or has been implemented in earlier machines and is thus considered to be limited.

Wenn die effektive Steuerung zum Zulassen einer AR-Änderung (A) null ist, sind die folgenden Anweisungen eingeschränkt: COPY ACCESS; LOAD ACCESS MULTIPLE; LOAD ADDRESS EXTENDED; und SET ACCESS.If the effective control for allowing an AR change (A) is zero, the following instructions are restricted: COPY ACCESS; LOAD ACCESS MULTIPLE; LOAD ADDRESS EXTENDED; and SET ACCESS.

Jede der obigen Anweisungen bewirkt, dass die Inhalte eines Zugriffsregisters geändert werden. Wenn die A-Steuerung in der Anweisung TRANSACTION BEGIN null ist, zeigt das Programm explizit an, dass eine Zugriffsregisteränderung nicht zulässig ist.Each of the above instructions causes the contents of an access register to be changed. If the A-control in the TRANSACTION BEGIN statement is zero, the program explicitly indicates that an access register change is not allowed.

Wenn die effektive Steuerung zum Zulassen einer Gleitkommaoperation (F) null ist, sind Gleitkommaanweisungen eingeschränkt.When the effective control for allowing a floating point operation (F) is zero, floating point instructions are restricted.

Unter bestimmten Umständen können die folgenden Anweisungen eingeschränkt sein: EXTRACT CPU TIME; EXTRACT PSW; STORE CLOCK; STORE CLOCK EXTENDED; und STORE CLOCK FAST.Under certain circumstances, the following instructions may be restricted: EXTRACT CPU TIME; EXTRACT PSW; STORE CLOCK; STORE CLOCK EXTENDED; and STORE CLOCK FAST.

Jede der obigen Anweisungen unterliegt einer Abfangsteuerung in der Statusbeschreibung zur interpretativen Ausführung. Wenn der Hypervisor die Abfangsteuerung für diese Anweisungen festgelegt hat, kann deren Ausführung aufgrund einer Hypervisor-Implementierung verlängert werden; somit werden sie als eingeschränkt angesehen, wenn ein Abfangen erfolgt.Each of the above instructions is subject to intercept control in the interpretive status report. If the hypervisor has set intercept control for these statements, their execution may be extended due to a hypervisor implementation; thus they are considered restricted when intercepted.

Wenn eine nichteingeschränkte Transaktion aufgrund des versuchten Ausführens einer eingeschränkten Anweisung abgebrochen wird, wird der Transaktionsabbruchcode im Transaktionsdiagnoseblock auf 11 (eingeschränkte Anweisung) gesetzt, und der Bedingungscode wird auf 3 gesetzt, mit folgender Ausnahme: wenn eine nichteingeschränkte Transaktion aufgrund des versuchten Ausführens einer Anweisung abgebrochen wird, die ansonsten zu einer Ausnahme einer privilegierten Operation führen würde, ist es nicht vorhersagbar, ob der Abbruchcode auf 11 (eingeschränkte Anweisung) oder 4 (nichtgefilterte Programmunterbrechung, die aus dem Erkennen der Programmunterbrechung einer privilegierten Operation resultiert) gesetzt wird. Wenn eine nichteingeschränkte Transaktion aufgrund des versuchten Ausführens von PREFETCH DATA (RELATIVE LONG) abgebrochen wird, wenn der Code im M1-Feld 6 oder 7 ist, oder STORE CHARACTERS UNDER MASK HIGH, wenn das M3-Feld null ist und der Code im R1-Feld 6 oder 7 ist, ist es nicht vorhersagbar, ob der Abbruchcode auf 11 (eingeschränkte Anweisung) oder 16 (anderweitig cachespeicherbezogen) gesetzt wird. Wenn eine nichteingeschränkte Transaktion aufgrund des versuchten Ausführens von MONITOR CALL abgebrochen wird, und sowohl eine Überwachungsereignisbedingung als auch eine Spezifikationsausnahmebedingung vorliegt, ist es nicht vorhersagbar, ob der Abbruchcode auf 11 oder 4 oder – wenn die Programmunterbrechung gefiltert wird – auf 12 gesetzt wird.If an unrestricted transaction is aborted due to the attempted execution of 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, with the following exception: if an unrestricted transaction is aborted due to the attempted execution of an instruction otherwise, which would result in an exception of a privileged operation, it is unpredictable whether the abort code is set to 11 (restricted instruction) or 4 (unfiltered program interruption resulting from the recognition of the program interruption of a privileged operation). If an unrestricted transaction is aborted due to the attempted execution of PREFETCH DATA (RELATIVE LONG) if the code in the M 1 field is 6 or 7, or STORE CHARACTERS UNDER MASK HIGH if the M 3 field is zero and the code is in the If R 1 field is 6 or 7, it is unpredictable whether the abort code is set to 11 (restricted instruction) or 16 (otherwise, cache related). If an unrestricted transaction is aborted due to attempting to execute MONITOR CALL and there is both a monitoring event condition and a specification exception condition, it is unpredictable whether the abort code is set to 11 or 4 or 12 if the program interrupt is filtered.

Weitere Anweisungen können bei einer eingeschränkten Transaktion eingeschränkt sein. Auch wenn diese Anweisungen aktuell nicht als in einer nichteingeschränkten Transaktion eingeschränkt definiert sind, können sie unter bestimmten Umständen auf künftigen Prozessoren bei einer nichteingeschränkten Transaktion eingeschränkt sein. Additional instructions may be restricted in a limited transaction. Although these instructions are not currently defined as being restricted in an unrestricted transaction, under certain circumstances they may be restricted to future processors in an unrestricted transaction.

Bestimmte eingeschränkte Anweisungen können auf künftigen Prozessoren im Modus der transaktionsorientierten Ausführung zulässig sein. Aus diesem Grund sollte das Programm nicht darauf gestützt sein, dass die Transaktion aufgrund des versuchten Ausführens einer eingeschränkten Anweisung abgebrochen wird. Die Anweisung TRANSACTION ABORT sollte verwendet werden, um zuverlässig den Abbruch einer Transaktion zu bewirken.Certain restricted instructions may be allowed on future processors in transactional execution mode. For this reason, the program should not be relied upon to abort the transaction due to the attempted execution of a restricted instruction. The TRANSACTION ABORT statement should be used to reliably terminate a transaction.

Bei einer nichteingeschränkten Transaktion sollte das Programm einen alternativen nichttransaktionsorientierten Codepfad bereitstellen, um eine Transaktion zu berücksichtigen, die aufgrund einer eingeschränkten Anweisung abgebrochen wird.For a non-restricted transaction, the program should provide an alternative non-transactional code path to account for a transaction that is aborted due to a constrained statement.

In Betrieb bewirkt das Ausführen der zum Bedingungscode null führenden Anweisung TRANSACTION BEGIN (TBEGIN) bei einer Transaktionsverschachtelungstiefe von null, dass die CPU in den Modus der nichteingeschränkten transaktionsorientierten Ausführung übergeht. Bei einer Transaktionsverschachtelungstiefe von null bewirkt das Ausführen der zum Bedingungscode null führenden Anweisung TRANSACTION BEGIN constrained (TBEGINC) bei einer Transaktionsverschachtelungstiefe von null, dass die CPU in den Modus der eingeschränkten transaktionsorientierten Ausführung übergeht.In operation, executing the conditional code zeroing instruction TRANSACTION BEGIN (TBEGIN) at a transaction nesting depth of zero causes the CPU to transition to the unrestricted transactional execution mode. For a transaction nesting depth of zero, executing the conditional code zero-leading TRANSACTION BEGIN constrained (TBEGINC) statement with a transaction nesting depth of zero causes the CPU to transition into the restricted transactional execution mode.

Wenn nicht explizit anderweitig angemerkt, gelten alle Regeln, die für eine nichttransaktionsorientierte Ausführung gelten, auch für die transaktionsorientierte Ausführung. Nachstehend sind weitere Kennzeichen der Verarbeitung angeführt, während sich die CPU im Modus der transaktionsorientierten Ausführung befindet.Unless explicitly stated otherwise, all rules that apply to a non-transactional execution also apply to transactional execution. Listed below are further characteristics of processing while the CPU is in transactional execution mode.

Wenn sich die CPU im Modus der nichteingeschränkten transaktionsorientierten Ausführung befindet, bewirkt das Ausführen der zum Bedingungscode null führenden Anweisung TRANSACTION BEGIN, dass die CPU weiterhin im Modus der nichteingeschränkten transaktionsorientierten Ausführung bleibt.When the CPU is in the unrestricted transactional execution mode, executing the conditional code zeroing instruction TRANSACTION BEGIN will cause the CPU to remain in the unrestricted transactional execution mode.

Wie durch die CPU wahrgenommen, unterscheiden sich im Transaktionsausführungsmodus durchgeführte Abrufe und Speichervorgänge nicht von jenen, die nicht im Modus der transaktionsorientierten Ausführung durchgeführt wurden. Wie durch andere CPUs und das E/A-Teilsystem wahrgenommen, scheinen alle Speicheroperandenzugriffe, die durchgeführt wurden, während sich eine CPU im Modus der transaktionsorientierten Ausführung befindet, ein einziger gleichzeitiger Blockzugriff zu sein. Das heißt, die Zugriffe auf alle Bytes innerhalb des Halbworts, Worts, Doppelworts oder Vierfachworts sind so spezifiziert, dass sie blockgleichzeitig zu sein scheinen, wie durch andere CPUs und E/A-Programme (z. B. Kanalprogramme) wahrgenommen. Das Halbwort, Wort, Doppelwort oder Vierfachwort wird in diesem Abschnitt als Block bezeichnet. Wenn ein Abruftyp-Verweis so spezifiziert ist, dass er gleichzeitig innerhalb eines Blocks zu sein scheint, wird während des Zeitraums, in dem im Block enthaltende Bytes abgerufen werden, kein Speicherzugriff durch eine weitere CPU oder ein E/A-Programm auf den Block zugelassen. Wenn ein Speichertyp so spezifiziert ist, dass er gleichzeitig innerhalb eines Blocks zu sein scheint, wird während des Zeitraums, indem die Bytes innerhalb des Blocks gespeichert werden, kein Abruf- oder Speicherzugriff durch eine weitere CPU oder ein E/A-Programm auf den Block zugelassen.As perceived by the CPU, polls and stores performed in the transaction execution mode are not different from those not performed in the transaction-oriented execution mode. As perceived by other CPUs and the I / O subsystem, all memory operand accesses made while a CPU is in transactional execution mode appear to be a single concurrent block access. That is, the accesses to all bytes within the half word, word, double word or quadword are specified to appear block-like as perceived by other CPUs and I / O programs (eg channel programs). The halfword, word, double word or quadword is referred to as a block in this section. If a fetch type reference is specified to appear within a block at the same time, no memory access by another CPU or I / O program to the block is allowed during the period in which bytes contained in the block are fetched , If a memory type is specified to appear within a block at the same time, no fetch or memory access is made to the block by another CPU or I / O program during the period in which the bytes are stored within the block authorized.

Speicherzugriffe für Tabellenabrufe von Anweisungen und DAT und ART (Access Register Translation – Zugriffsregisterumsetzung) folgen den nichttransaktionsorientierten Regeln.Memory accesses for instructions statements and DAT and ART (Access Register Translation) follow non-transaction-oriented rules.

Die CPU verlässt den Modus der transaktionsorientierten Ausführung für gewöhnlich mithilfe einer Anweisung TRANSACTION END, die bewirkt, dass die Transaktionsverschachtelungstiefe auf null übergeht und die Transaktion somit ausgeführt wird.The CPU typically leaves the transactional execution mode using a TRANSACTION END statement, which causes the transaction nesting depth to pass to zero and the transaction is thus executed.

Wenn die CPU den Modus der transaktionsorientierten Ausführung durch Ausführen einer Anweisung TRANSACTION END verlässt, werden alle im Modus der transaktionsorientierten Ausführung durchgeführten Speichervorgänge festgeschrieben; d. h., die Speichervorgänge scheinen als eine einzige blockgleichzeitige Operation zu erfolgen, wie durch andere CPUs und das E/A-Teilsystem wahrgenommen.When the CPU exits Transactional Execution mode by executing a TRANSACTION END statement, all stores performed in Transactional Execution mode are committed; d. that is, the stores appear to be a single block-concurrent operation as perceived by other CPUs and the I / O subsystem.

Eine Transaktion kann aus diversen Ursachen implizit abgebrochen werden oder sie kann durch eine Anweisung TRANSACTION ABORT explizit abgebrochen werden. Beispielhafte mögliche Ursachen für einen Transaktionsabbruch, der entsprechende Abbruchscode und der Bedingungscode, der in das Transaktionsabbruch-PSW platziert wird, sind im Folgenden beschrieben.A transaction can be implicitly aborted for various reasons or it can be explicitly aborted by a statement TRANSACTION ABORT. Exemplary possible causes for one Transaction abort, the corresponding abort code, and the condition code placed in the Transaction Cancellation PSW are described below.

Externe Unterbrechung: Der Transaktionsabbruchscode wird auf 2 gesetzt, und der Bedingungscode im Transaktionsabbruch-PSW wird auf 2 gesetzt. Das Transaktionsabbruch-PSW wird als altes externes PSW als Teil der Verarbeitung von externen Unterbrechungen gespeichert.External Interrupt: The transaction abort code is set to 2, and the condition code in the transaction abort PSW is set to 2. The transaction abort PSW is stored as an old external PSW as part of the processing of external interrupts.

Programmunterbrechung (nichtgefiltert): Eine Programmausnahmebedingung, die zu einer Unterbrechung führt (d. h. eine nichtgefilterte Bedingung), bewirkt einen Abbruch der Transaktion mit Code 4. Der Bedingungscode im Transaktionsabbruch-PSW wird für den Programmunterbrechungscode spezifisch gesetzt. Das Transaktionsabbruch-PSW wird als altes Programm-PSW als Teil der Verarbeitung von Programmunterbrechungen gespeichert.Program Interrupt (Unfiltered): A program exception that results in an interrupt (i.e., an unfiltered condition) causes the transaction to abort with code 4. The condition code in the transaction abort PSW is set specific to the program interrupt code. The transaction abort PSW is stored as an old program PSW as part of the processing of program interrupts.

Eine Anweisung, die andernfalls zu einem durch eine Operationsausnahme bedingten Transaktionsabbruch führen würde, kann zu alternativen Ergebnissen führen: bei einer nichteingeschränkten Transaktion kann die Transaktion stattdessen mit Abbruchcode 11 (eingeschränkte Anweisung) abgebrochen werden; bei einer eingeschränkten Transaktion kann eine Programmunterbrechung durch eine eingeschränkte Transaktion anstatt der Operationsausnahme erkannt werden.An instruction that would otherwise result in a transaction exception due to an operation exception may produce alternative results: in an unrestricted transaction, the transaction may instead be aborted with abort code 11 (restricted instruction); In a restricted transaction, a program interrupt can be detected by a restricted transaction instead of the operation exception.

Wenn ein PER-Ereignis (Program Event Recording – Programmereignisaufzeichnung) in Verbindung mit einer anderen nichtgefilterten Programmausnahmebedingung erkannt wird, wird der Bedingungscode auf 3 gesetzt.When a Program Event Recording (PER) event is detected in conjunction with another unfiltered program exception, the condition code is set to 3.

Unterbrechung bei Maschinenfehler: Der Transaktionsabbruchscode wird auf 5 gesetzt, und der Bedingungscode im Transaktionsabbruch-PSW wird auf 2 gesetzt. Das Transaktionsabbruch-PSW wird als altes Maschinenfehler-PSW als Teil der Verarbeitung von Unterbrechungen bei Maschinenfehler gespeichert.Machine Error Interrupt: The transaction abort code is set to 5 and the condition code in the transaction abort PSW is set to 2. The transaction abort PSW is stored as old machine error PSW as part of processing machine interruptions.

E/A-Unterbrechung: Der Transaktionsabbruchscode wird auf 6 gesetzt, und der Bedingungscode im Transaktionsabbruch-PSW wird auf 2 gesetzt. Das Transaktionsabbruch-PSW wird als altes E/A-PSW als Teil der Verarbeitung von E/A-Unterbrechungen gespeichert.I / O interruption: The transaction abort code is set to 6 and the condition code in the Transaction Cancellation PSW is set to 2. The transaction abort PSW is stored as an old I / O PSW as part of processing I / O interrupts.

Aufruf der Überlaufroutine: Eine Bedingung des Aufrufs einer Überlaufroutine wird erkannt, wenn die Transaktion versucht, aus mehr Speicherorten abzurufen, als die CPU unterstützt. Der Transaktionsabbruchcode wird auf 7 gesetzt, und der Bedingungscode wird entweder auf 2 oder 3 gesetzt.Calling the overflow routine: A condition of calling an overflow routine is detected when the transaction attempts to fetch more memory locations than the CPU supports. The transaction abort code is set to 7 and the condition code is set to either 2 or 3.

Speichern der Überlaufroutine: Eine Bedingung des Speicherns einer Überlaufroutine wird erkannt, wenn die Transaktion versucht, in mehr Speicherorten zu speichern als die CPU unterstützt. Der Transaktionsabbruchcode wird auf 8 gesetzt, und der Bedingungscode wird entweder auf 2 oder 3 gesetzt.Saving the overflow routine: A condition of saving an overflow routine is detected when the transaction attempts to store in more locations than the CPU supports. The transaction abort code is set to 8 and the condition code is set to either 2 or 3.

Ein Zulassen, dass der Bedingungscode in Reaktion auf einen durch einen Aufruf oder ein Speichern der Überlaufroutine bedingten Abbruch 2 oder 3 ist, ermöglicht der CPU, möglicherweise wiederholbare Situationen anzuzeigen (z. B. Bedingungscode 2 zeigt an, dass ein erneutes Ausführen der Transaktion produktiv sein könnte, während Bedingungscode 2 kein erneutes Ausführen empfiehlt).Allowing the condition code to be 2 or 3 in response to an abort due to a call or save of the overflow routine allows the CPU to indicate potentially repeatable situations (eg, condition code 2 indicates that re-executing the transaction is productive while condition code 2 does not recommend running again).

Abrufkonflikt: Eine Abrufkonfliktbedingung wird erkannt, wenn eine weitere CPU oder das E/A-Teilsystem versucht, an einem Speicherort zu speichern, der von dieser CPU transaktionsorientiert abgerufen wurde. Der Transaktionsabbruchcode wird auf 9 gesetzt, und der Bedingungscode wird auf 2 gesetzt.Polling Conflict: A polling conflict condition is detected when another CPU or the I / O subsystem attempts to save to a location that was retrieved by that CPU in a transaction-oriented manner. The transaction abort code is set to 9 and the condition code is set to 2.

Speicherkonflikt: Eine Speicherkonfliktbedingung wird erkannt, wenn eine weitere CPU oder das E/A-Teilsystem versucht, auf einen Speicherort zuzugreifen, der von dieser CPU während einer transaktionsorientierten Ausführung gespeichert wurde. Der Transaktionsabbruchcode wird auf 10 gesetzt, und der Bedingungscode wird auf 2 gesetzt.Memory Conflict: A memory contention condition is detected when another CPU or the I / O subsystem attempts to access a location that was stored by this CPU during a transactional execution. The transaction abort code is set to 10 and the condition code is set to 2.

Eingeschränkte Anweisung: Wenn sich die CPU im Modus der transaktionsorientierten Ausführung befindet, bewirkt ein versuchtes Ausführen einer eingeschränkten Ausführung, dass die Transaktion abgebrochen wird. Der Transaktionsabbruchcode wird auf 11 gesetzt, und der Bedingungscode wird auf 3 gesetzt.Restricted Instruction: When the CPU is in transactional execution mode, attempting to execute a restricted execution causes the transaction to abort. The transaction abort code is set to 11 and the condition code is set to 3.

Wenn sich die CPU im Modus der eingeschränkten transaktionsorientierten Ausführung befindet, ist es nicht vorhersagbar, ob ein versuchtes Ausführen einer eingeschränkten Anweisung zu einer Programmunterbrechung durch eine eingeschränkte Transaktion oder zu einem durch eine eingeschränkte Anweisung bedingten Abbruch führen. Die Transaktion wird immer noch abgebrochen, aber der Abbruchcode kann jede Ursache anzeigen.When the CPU is in Restricted Transactional Execution mode, it is unpredictable whether an attempted execution of a Restricted instruction to a program interrupt by a Restricted Transaction or to a Restricted Statement cause conditional demolition. The transaction is still aborted, but the abort code can indicate any cause.

Programmausnahmebedingung (gefiltert): Eine Programmausnahmebedingung, die nicht zu einer Unterbrechung führt (d. h. eine gefilterte Bedingung), bewirkt, dass die Transaktion mit einer Transaktionsabbruchcode von 12 abgebrochen wird. Der Bedingungscode wird auf 3 gesetzt.Program Exception (Filtered): A program exception that does not result in an interrupt (i.e., a filtered condition) causes the transaction to be aborted with a transaction abort code of 12. The condition code is set to 3.

Verschachtelungstiefe überschritten: Die Bedingung der überschrittenen Verschachtelungstiefe wird erkannt, wenn sich die Transaktionsverschachtelungstiefe auf dem maximal zulässigen Wert für die Konfiguration befindet und eine Anweisung TRANSACTION BEGIN ausgeführt wird. Die Transaktion wird mit einem Transaktionsabbruchcode von 13 abgebrochen, und der Bedingungscode wird auf 3 gesetzt.Nesting Depth Exceeded: The interleaved nesting exceeded condition is detected when the transaction nesting depth is at the maximum allowed value for the configuration and a TRANSACTION BEGIN statement is executed. The transaction is aborted with a transaction abort code of 13 and the condition code is set to 3.

Auf Cachespeicherabrufe bezogene Bedingung: Eine Bedingung, die sich auf Speicherorte bezieht, die von der Transaktion abgerufen werden, wird vom Cachespeicher-Schaltkreis der CPU erkannt. Die Transaktion wird mit einem Transaktionsabbruchcode von 14 abgebrochen, und der Bedingungscode wird auf 2 oder 3 gesetzt.Cache Fetch Related Condition: A condition relating to memory locations retrieved from the transaction is recognized by the cache circuitry of the CPU. The transaction is aborted with a transaction abort code of 14 and the condition code is set to 2 or 3.

Auf Vorgänge beim Speichern im Cachespeicher bezogene Bedingung: Eine Bedingung, die sich auf Speicherorte bezieht, die von der Transaktion gespeichert werden, wird vom Cachespeicher-Schaltkreis der CPU erkannt. Die Transaktion wird mit einem Transaktionsabbruchcode von 15 abgebrochen, und der Bedingungscode wird auf 2 oder 3 gesetzt.Caching Memory Caching Condition: A condition relating to memory locations stored by the transaction is recognized by the cache circuitry of the CPU. The transaction is aborted with a transaction abort code of 15 and the condition code is set to 2 or 3.

Anderweitig cachespeicherbezogene Bedingung: Eine anderweitig cachespeicherbezogene Bedingung wird vom Cachespeicher-Schaltkreis der CPU erkannt. Die Transaktion wird mit einem Transaktionsabbruchcode von 16 abgebrochen, und der Bedingungscode wird auf 2 oder 3 gesetzt.Caching-Related Condition: An otherwise cache-related condition is detected by the cache circuitry of the CPU. The transaction is aborted with a transaction abort code of 16 and the condition code is set to 2 or 3.

Während einer transaktionsorientierten Ausführung, wenn die CPU auf Anweisungen oder Speicheroperanden unter Verwendung von unterschiedlichen Logiken zugreift, die der gleichen absoluten Adresse zugeordnet sind, ist es modellabhängig, ob die Transaktion abgebrochen wird. Wenn die Transaktion aufgrund von Zugriffen unter Verwendung von unterschiedlichen logischen Adressen abgebrochen wird, die der gleichen absoluten Adresse zugeordnet sind, wird Abbruchcode 14, 15 oder 16 gesetzt, je nach Bedingung.During a transaction-oriented execution, when the CPU accesses instructions or memory operands using different logics associated with the same absolute address, it is model-dependent whether the transaction is aborted. If the transaction is aborted due to accesses using different logical addresses associated with the same absolute address, abort code 14, 15 or 16 is set, depending on the condition.

Sonstige Bedingung: Eine sonstige Bedingung ist eine beliebige andere Bedingung, die von der CPU erkannt wird und einen Abbruch der Transaktion bewirkt. Der Transaktionsabbruchcode wird auf 255 gesetzt, und der Bedingungscode wird entweder auf 2 oder 3 gesetzt.Other condition: Another condition is any other condition recognized by the CPU that causes the transaction to abort. The transaction abort code is set to 255 and the condition code is set to either 2 or 3.

Wenn mehrere Konfigurationen in der gleichen Maschine (z. B. logische Partitionen oder virtuelle Maschinen) ausgeführt werden, kann eine Transaktion bedingt durch eine Unterbrechung bei externem Maschinenfehler oder eine E/A-Unterbrechung abgebrochen werden, die in einer unterschiedlichen Konfiguration aufgetreten ist.If multiple configurations are running on the same machine (such as logical partitions or virtual machines), a transaction may be aborted due to an interruption in an external machine error or an I / O interrupt that has occurred in a different configuration.

Auch wenn im Vorstehenden Beispiele angeführt sind, können andere Ursachen eines Transaktionsabbruchs mit entsprechenden Abbruchcodes und Bedingungscodes bereitgestellt werden. Beispielsweise kann eine Ursache eine Neustartunterbrechung sein, wobei der Transaktionsabbruchcode auf 1 gesetzt wird und der Bedingungscode im Transaktionsabbruch-PSW auf 2 gesetzt wird. Das Transaktionsabbruch-PSW wird als altes Neustart-PSW als Teil der Verarbeitung von Neustarts gespeichert. Ein weiteres Beispiel für eine Ursache kann eine Supervisor-Aufrufbedingung sein, wobei der Abbruchcode auf 3 gesetzt wird und der Bedingungscode im Transaktionsabbruch-PSW auf 3 gesetzt wird. Andere oder unterschiedliche Beispiele sind ebenfalls möglich.Although examples are provided above, other causes of transaction abort may be provided with corresponding abort codes and condition codes. For example, a cause may be a restart interrupt, with the transaction abort code set to 1 and the condition code set to 2 in the transaction abort PSW. The transaction abort PSW is stored as old restart PSW as part of the reboot processing. Another example of a cause may be a supervisor call condition where the abort code is set to 3 and the condition code in the transaction abort PSW is set to 3. Other or different examples are also possible.

Anmerkungen:Remarks:

  • 1. Die sonstige Bedingung kann aus beliebigen des Folgenden entstehen: * Anweisungen in der z/Architecture wie COMPARE AND REPLACE DAT TABLE ENTRY, COMPARE AND SWAP AND PURGE, INVALIDATE DAT TABLE ENTRY, INVALIDATE PAGE TABLE ENTRY, PERFORM FRAME MANAGEMENT FUNCTION, wobei die NQ-Steuerung null ist und die SK-Steuerung eins ist, SET STORAGE KEY EXTENDED, wobei die NQ-Steuerung null ist, durchgeführt von einer weiteren CPU in der Konfiguration; der Bedingungscode wird auf 2 gesetzt. * Eine Operatorfunktion, z. B. Zurücksetzen, Neustart oder Stopp, oder der äquivalente SIGNAL-PROCESSOR-Auftrag wird auf der CPU durchgeführt. * Jedwede andere oben nicht aufgezählte Bedingung; der Bedingungscode wird auf 2 oder 3 gesetzt.1. The other condition may arise from any of the following: * Z / Architecture statements such as COMPARE AND REPLACE DAT TABLE ENTRY, COMPARE AND SWAP AND PURGE, INVALIDATE DAT TABLE ENTRY, INVALIDATE PAGE TABLE ENTRY, PERFORM FRAME MANAGEMENT FUNCTION, where the NQ control is zero and the SK control is one, SET STORAGE KEY EXTENDED, where the NQ control is zero, performed by another CPU in the configuration; the condition code is set to 2. * An operator function, eg. Reset, restart, or stop, or the equivalent SIGNAL PROCESSOR job is performed on the CPU. * Any other condition not listed above; the condition code is set to 2 or 3.
  • 2. Der Speicherort, an dem Abruf- und Speicherkonflikte erkannt werden, kann ein beliebiger innerhalb der gleichen Cachespeicherzeile sein.2. The location where fetch and memory conflicts are detected can be any within the same cache line.
  • 3. Unter bestimmten Umständen ist die CPU eventuell nicht in der Lage, zwischen ähnlichen Abbruchbedingungen zu unterscheiden. Beispielsweise kann ein Aufruf oder Speichern der Überlaufroutine aus Sicht eines jeweiligen Abruf- oder Speicherkonflikts nicht unterscheidbar sein.3. Under certain circumstances, the CPU may not be able to distinguish between similar termination conditions. For example, calling or storing the overflow routine may not be distinguishable from the perspective of a particular polling or memory conflict.
  • 4. Das spekulative Ausführen von mehreren Anweisungspfaden durch die CPU kann dazu führen, dass eine Transaktion aufgrund von Konflikt- oder Überlaufbedingungen abgebrochen wird, auch wenn solche Bedingungen in der konzeptionellen Abfolge nicht auftreten. Während sich die CPU im Modus der eingeschränkten transaktionsorientierten Ausführung befindet, kann sie das spekulative Ausführen vorübergehend verhindern, indem sie den Versuch zulässt, dass die Transaktion ausgeführt wird, ohne dass solche Konflikte oder Überläufe spekulativ erkannt werden.4. Speculative execution of multiple instruction paths by the CPU may cause a transaction to be aborted due to conflict or overflow conditions, even if such conditions do not occur in the conceptual sequence. While the CPU is in Restricted Transactional Execution mode, it can temporarily prevent speculative execution by allowing the transaction to execute without speculating such conflicts or overflows speculatively.

Ein Ausführen einer Anweisung TRANSACTION ABORT bewirkt einen Transaktionsabbruch. Der Transaktionsabbruchcode wird aus der Adresse des zweiten Operanden gesetzt. Der Bedingungscode wird entweder auf 2 oder 3 gesetzt, in Abhängigkeit davon, ob Bit 63 der Adresse des zweiten Operanden null oder eins ist.Executing a TRANSACTION ABORT statement causes a transaction abort. The transaction abort code is set from the address of the second operand. The condition code is set to either 2 or 3, depending on whether bit 63 of the address of the second operand is zero or one.

10 fasst beispielhafte in einem Transaktionsdiagnoseblock gespeicherte Abbruchcodes und den entsprechenden Bedingungscode (CC) zusammen. Die Beschreibung in 10 zeigt eine bestimmte Implementierung. Andere Implementierungen und Codierungen von Werten sind möglich. 10 summarizes example abort codes stored in a transaction diagnostic block and the corresponding condition code (CC). The description in 10 shows a specific implementation. Other implementations and encodings of values are possible.

Bei einer Ausführungsform und wie oben erwähnt stellt die Transaktionseinrichtung sowohl eingeschränkte Transaktionen als auch nichteingeschränkte Transaktionen sowie eine damit in Zusammenhang stehende Verarbeitung bereit. Zunächst werden eingeschränkte Transaktionen erörtert und danach nichteingeschränkte Transaktionen.In one embodiment and as mentioned above, the transaction facility provides both restricted transactions and unrestricted transactions, as well as related processing. First, restricted transactions are discussed, followed by unrestricted transactions.

Eine eingeschränkte Transaktion wird im transaktionsorientierten Modus ohne Ausweichpfad ausgeführt. Es handelt sich um einen Verarbeitungsmodus, der für kompakte Funktionen nützlich ist. Wenn keine wiederholten Unterbrechungen oder Konflikte mit anderen CPUs oder dem E/A-Teilsystem vorliegen (d. h. durch Bedingungen verursacht, die kein erfolgreiches Ausführen der Transaktion ermöglichen), wird schließlich eine eingeschränkte Transaktion ausgeführt; somit ist eine Abbruch-Handler-Routine nicht erforderlich und nicht spezifiziert. Beispielsweise bei Fehlen einer Verletzung einer Bedingung, die nicht adressiert werden kann (z. B. Teilen durch 0); einer Bedingung, die ein Ausführen der Transaktion nicht ermöglicht (z. B. eine Zeitgeberunterbrechung, die das Ausführen einer Anweisung nicht ermöglicht; nichterwartete E/A; usw.); oder einer Verletzung einer Beschränkung oder Einschränkung in Zusammenhang mit einer eingeschränkten Transaktion wird die Transaktion schließlich ausgeführt.A restricted transaction runs in transactional mode without an alternate path. It is a processing mode that is useful for compact functions. If there are no repeated breaks or conflicts with other CPUs or the I / O subsystem (i.e., caused by conditions that do not allow the transaction to be successfully executed), then a limited transaction is executed; thus, an abort handler routine is not required and unspecified. For example, in the absence of a violation of a condition that can not be addressed (eg, divide by 0); a condition that does not allow the transaction to be executed (for example, a timer interrupt that does not allow a statement to be executed, unexpected I / O, etc.); or a violation of a restriction or restriction in connection with a restricted transaction, the transaction will eventually be executed.

Eine eingeschränkte Transaktion wird durch eine Anweisung TRANSACTION BEGIN constrained (TBEGINC) eingeleitet, wenn sich die Transaktionsverschachtelungstiefe anfänglich null ist. Eine eingeschränkte Transaktion unterliegt bei einer Ausführungsform den folgenden Einschränkungen.

  • 1. Die Transaktion führt nicht mehr als 32 Anweisungen aus, wobei die Anweisungen TRANSACTION BEGIN constrained (TBEGINC) und TRANSACTION END nicht mit eingeschlossen sind.
  • 2. Alle Anweisungen in der Transaktion müssen innerhalb von 256 zusammenhängenden Speicherbytes liegen, die Anweisung TRANSACTION BEGIN constrained (TBEGINC) und jedwede Anweisungen TRANSACTION END mit eingeschlossen.
  • 3. Zusätzlich zu den eingeschränkten Anweisungen gelten die folgenden Einschränkungen für eine eingeschränkte Transaktion. a. Anweisungen sind auf jene beschränkt, die als allgemeine Anweisungen bezeichnet werden, beispielsweise Addieren, Subtrahieren, Multiplizieren, Dividieren, Verschieben, Drehen usw. b. Verzweigungsanweisungen sind auf Folgendes beschränkt (die aufgelisteten Anweisungen beziehen sich bei einem Beispiel auf die z/Architecture). * BRANCH RELATIVE ON CONDITION, wobei das M1-Feld ungleich null ist und das RI2-Feld einen positiven Wert enthält. * BRANCH RELATIVE ON CONDITION LONG, wobei das M1-Feld ungleich null ist und das RI2-Feld einen positiven Wert enthält, der keinen Adressenumlauf bewirkt. * COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE und COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE, wobei das M3-Feld ungleich null ist und das RI4-Feld einen positiven Wert enthält. (Das heißt, nur Vorwärtsverzweigungen mit Verzweigungsmasken ungleich null.) c. Mit Ausnahme von TRANSACTION END und Anweisungen, die ein spezifiziertes Serialisieren von Operanden bewirken, sind Anweisungen, die eine Serialisierungsfunktion bewirken, eingeschränkt. d. Anweisungen zu Speicher-und-Speicher-Operationen (SS) und Speicher-und-Speicher-Operationen mit erweitertem Operationscode (SSE) sind eingeschränkt. e. Alle folgenden allgemeinen Anweisungen (die sich bei diesem Beispiel auf die z/Architecture beziehen) sind eingeschränkt: 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; DIVIDE LOGICAL; DIVIDE SINGLE; EXECUTE; EXECUTE RELATIVE LONG; EXTRACT CACHE ATTRIBUTE; EXTRACT CPU TIME; EXTRACT PSW; EXTRACT TRANSACTION NESTING DEPTH; LOAD AND ADD; LOAD AND ADD LOGICAL; LOAD AND AND; LOAD AND EXCLUSIVE OR; LOAD AND OR; LOAD PAIR DISJOINT; LOAD PAIR FROM QUADWORD; MONITOR CALL; MOVE LONG; MOVE LONG EXTENDED; MOVE LONG UNICODE; MOVE STRING; NON-TRANSACTIONAL STORE; PERFORM CRYPTOGRAPHIC COMPUTATION; PREFETCH DATA; PREFETCH DATA RELATIVE LONG; RUNTIME INSTRUMENTATION EMIT; RUNTIME INSTRUMENTATION NEXT; RUNTIME INSTRUMENTATION OFF; RUNTIME INSTRUMENTATION ON; SEARCH STRING; SEARCH; STRING UNICODE; SET ADDRESSING MODE; STORE CHARACTERS UNDER MASK HIGH, wenn das M3-Feld null ist und der Code im R1-Feld 6 oder 7 ist; STORE CLOCK; STORE CLOCK EXTENDED; STORE CLOCK FAST; STORE FACILITY LIST EXTENDED; STORE PAIR TO QUADWORD; TEST ADDRESSING MODE; TRANSACTION ABORT; TRANSACTION BEGIN (sowohl TBEGIN als auch TBEGINC); TRANSLATE AND TEST EXTENDED; TRANSLATE AND TEST REVERSE EXTENDED; TRANSLATE EXTENDED; TRANSLATE ONE TO ONE; TRANSLATE ONE TO TWO TRANSLATE TWO TO ONE; und TRANSLATE TWO TO TWO.
  • 4. Die Speicheroperanden der Transaktion greifen auf nicht mehr als vier Achtfachwörter zu. Anmerkung: LOAD ON CONDITION und STORE ON CONDITION werden als auf Speicher verweisend angesehen, unabhängig vom Bedingungscode. Ein Achtfachwort ist beispielsweise eine Gruppe von 32 aufeinanderfolgenden Bytes auf einer 32-Byte-Grenze.
  • 5. Die auf dieser CPU ausgeführte Transaktion oder Speichervorgänge von anderen CPUs oder dem E/A-Teilsystem greift bzw. greifen nicht auf Zugriffsspeicheroperanden in 4-K-Byte-Blöcken zu, die die 256 Speicherbytes enthalten, beginnend mit der Anweisung TRANSACTION BEGIN constrained (TBEGINC).
  • 6. Die Transaktion greift nicht auf Anweisungen oder Speicheroperanden unter Verwendung unterschiedlicher logischer Adressen zu, die der gleichen absoluten Adresse zugeordnet sind.
  • 7. Von der Transaktion durchgeführte Operandenverweise müssen innerhalb eine einzigen Doppelwortes liegen, mit Ausnahme von LOAD ACCESS MULTIPLE, LOAD MULTIPLE, LOAD MULTIPLE HIGH, STORE ACCESS MULTIPLE, STORE MULTIPLE, und STORE MULTIPLE HIGH, wobei Operandenverweise innerhalb eines einzigen Achtfachworts liegen müssen.
A restricted transaction is initiated by a TRANSACTION BEGIN constrained (TBEGINC) statement when the transaction nesting depth is initially null. A limited transaction is subject to the following restrictions in one embodiment.
  • 1. The transaction does not execute more than 32 statements, with the TRANSACTION BEGIN constrained (TBEGINC) and TRANSACTION END statements not included.
  • 2. All statements in the transaction must be within 256 contiguous memory bytes, including the TRANSACTION BEGIN constrained (TBEGINC) statement and any TRANSACTION END statements.
  • 3. In addition to the limited instructions, the following restrictions apply to a restricted transaction. a. Instructions are restricted to those called general instructions, such as add, subtract, multiply, divide, move, rotate, and so on. B. Branch instructions are limited to the following (the instructions listed refer to z / Architecture in one example). * BRANCH RELATIVE ON CONDITION, where the M 1 field is non-zero and the RI 2 field contains a positive value. * BRANCH RELATIVE ON CONDITION LONG, where the M 1 field is non-zero and the RI 2 field contains a positive value that does not cause address rotation. * COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE, and COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE, where the M 3 field is non-zero and the RI 4 field contains a positive value. (That is, only forward branches with non-zero branch masks.) c. With the exception of TRANSACTION END and statements that cause a specified serialization of operands, statements that cause a serialization function are restricted. d. Instructions for storage and storage operations (SS) and extended operation code (SSE) storage and storage operations are limited. e. All of the following general instructions (which refer to the z / Architecture in this example) are limited: 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; DIVIDE LOGICAL; DIVIDE SINGLE; EXECUTE; EXECUTE RELATIVE LONG; EXTRACT CACHE ATTRIBUTES; 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 QUADWORD; MONITOR CALL; MOVE LONG; MOVE LONG EXTENDED; MOVE LONG UNICODE; MOVE STRING; NON-TRANSACTIONAL STORE; PERFORM CRYPTOGRAPHIC COMPUTATION; PREFETCH DATA; PREFETCH DATA RELATIVE LONG; RUNTIME INSTRUMENTATION EMIT; RUNTIME INSTRUMENTATION NEXT; RUNTIME INSTRUMENTATION OFF; RUNTIME INSTRUMENTATION ON; SEARCH STRING; SEARCH; STRING UNICODE; SET ADDRESSING MODE; STORE CHARACTERS UNDER MASK HIGH if the M 3 field is zero and the code in the R 1 field is 6 or 7; STORE CLOCK; STORE CLOCK EXTENDED; STORE CLOCK FAST; STORE FACILITY LIST EXTENDED; STORE PAIR TO QUADWORD; 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.
  • 4. The transaction operands of the transaction do not access more than four octets. Note: LOAD ON CONDITION and STORE ON CONDITION are considered to be memory-referenced, regardless of the condition code. For example, an eight-word is a group of 32 consecutive bytes on a 32-byte boundary.
  • 5. The transaction or memory operations on this CPU from other CPUs or the I / O subsystem will not access access memory operands in 4K byte blocks containing the 256 memory bytes beginning with the TRANSACTION BEGIN constrained statement (TBEGINC).
  • 6. The transaction does not access instructions or memory operands using different logical addresses associated with the same absolute address.
  • 7. Operand references made by the transaction must be within a single doubleword, except for LOAD ACCESS MULTIPLE, LOAD MULTIPLE, LOAD MULTIPLE HIGH, STORE ACCESS MULTIPLE, STORE MULTIPLE, and STORE MULTIPLE HIGH, where operand references must be within a single eight-word.

Wenn eine eingeschränkte Transaktion eine der oben angeführten Einschränkungen 1 bis 7 verletzt, wird (a) eine Programmunterbrechung durch eine eingeschränkte Transaktion erkannt oder (b) das Ausführen wird fortgesetzt, als wäre die Transaktion nicht eingeschränkt, außer wenn weitere Einschränkungsverletzungen weiterhin zu einer Programmunterbrechung durch eine eingeschränkte Transaktion führen. Es ist nicht vorhersagbar, welche Aktion vorgenommen wird, und die vorgenommene Aktion kann beruhend darauf, welche Einschränkung verletzt wird, unterschiedlich sein.If a restricted transaction violates any of the above restrictions 1 to 7, (a) a program interruption is detected by a constrained transaction, or (b) execution continues as if the transaction were not restricted unless further constraint violations continue to result in a program interruption cause a limited transaction. It is unpredictable what action will be taken, and the action taken may be different based on which restriction is violated.

Liegen keine Einschränkungsverletzungen, wiederholte Unterbrechungen oder Konflikte mit anderen CPUs oder dem E/A-Teilsystem vor, wird eine eingeschränkte Transaktion schließlich wie oben beschrieben ausgeführt.

  • 1. Die Chance für ein erfolgreiches Ausführen einer eingeschränkten Transaktion erhöht sich, wenn die Transaktion die folgenden Kriterien erfüllt: a. Die ausgegebenen Anweisungen übersteigen das Maximum von 32 nicht. b. Die Speicheroperandenverweise übersteigen das Maximum von 4 Achtfachwörtern nicht. c. Die Speicheroperandenverweise befinden sich in der gleichen Cachespeicherzeile. d. Speicheroperandenverweise auf die gleichen Speicherorte erfolgen bei allen Transaktionen in der gleichen Reihenfolge.
  • 2. Bei der ersten Ausführung einer eingeschränkten Transaktion ist deren erfolgreicher Ausführung nicht notwendigerweise gewährleistet. Wenn jedoch eine eingeschränkte Transaktion, die keine der oben aufgelisteten Einschränkten verletzt, abgebrochen wird, verwendet die CPU einen Schaltkreis, um sicherzustellen, dass ein wiederholtes Ausführen der Transaktion danach erfolgreich ist.
  • 3. Im Rahmen einer eingeschränkten Transaktion ist TRANSACTION BEGIN eine eingeschränkte Anweisung, somit kann eine eingeschränkte Transaktion nicht verschachtelt werden.
  • 4. Eine Verletzung einer der oben angeführten Einschränkungen 1 bis 7 durch eine eingeschränkte Transaktion kann zu einer Programmschleife führen.
  • 5. Die Beschränkungen einer eingeschränkten Transaktion ähneln jenen einer Compare-and-Swap-Schleife. Aufgrund einer möglichen Störung aus anderen CPUs und dem E/A-Teilsystem gibt es aus architektonischer Sicht keine Sicherheit, dass eine Anweisung COMPARE AND SWAP jemals mit einem Bedingungscode 0 ausgeführt wird. Bei einer eingeschränkte Transaktion kann eine ähnliche Störung in Form von Abruf- oder Speicherkonfliktabbrüchen oder nicht erwarteten Unterbrechungen auftreten. Die CPU verwendet Ausgleichsalgorithmen, um sicherzustellen, dass eine eingeschränkte Transaktion bei Fehlen von Einschränkungsverletzungen schließlich ausgeführt wird.
  • 6. Um die Anzahl wiederholter Iterationen zu ermitteln, die erforderlich ist, um eine eingeschränkte Transaktion auszuführen, kann das Programm einen Zähler in einem allgemeinen Register verwenden, das nicht der Speichermaske für allgemeine Register unterliegt. Nachstehend ist ein Beispiel gezeigt.
LH1 15,0 Wiederholungszähler null. Schleife TBEGINC 0(0),X'FE00' Allgemeine Register 0 bis 13 beibehalten AHI 15,1 Zähler erhöhen ... ... Code für eine eingeschränkte transaktionsorientierte Ausführung ... TEND Ende der Transaktion. * R15 enthält nun einen Zählwert der Transaktionswiederholungsversuche. Finally, if there are no constraint violations, repeated interrupts, or conflicts with other CPUs or the I / O subsystem, a restricted transaction is executed as described above.
  • 1. The chance of successfully completing a restricted transaction increases if the transaction meets the following criteria: a. The issued instructions do not exceed the maximum of 32. b. The memory operand references do not exceed the maximum of 4 eightfold words. c. The memory operand references are in the same cache line. d. Memory operand references to the same locations occur in the same order for all transactions.
  • 2. The first time a restricted transaction is executed, its successful execution is not necessarily guaranteed. However, if a restricted transaction that does not violate any of the restrictions listed above is aborted, the CPU uses a circuit to ensure that successive transaction execution succeeds thereafter.
  • 3. In a constrained transaction, TRANSACTION BEGIN is a restricted statement, so a restricted transaction can not be nested.
  • 4. A violation of any of the above restrictions 1 through 7 due to a restricted transaction may result in a loop of the program.
  • 5. The constraints of a constrained transaction are similar to those of a compare-and-swap loop. Due to a possible interference from other CPUs and the I / O subsystem, there is no architectural guarantee that a COMPARE AND SWAP statement will ever be executed with a condition code of 0. A restricted transaction may experience a similar disruption in the form of fetch or memory quirks or unexpected interrupts. The CPU uses equalization algorithms to ensure that a constrained transaction is eventually executed in the absence of constraint violations.
  • 6. To determine the number of repetitive iterations required to perform a constrained transaction, the program may use a counter in a general register that is not subject to the general register memory mask. An example is shown below.
LH1 15.0 Repeat counter zero. loop TBEGINC 0 (0) X'FE00 ' Maintain general registers 0 to 13 AHI 15.1 Increase counter ... ... Code for a limited transaction-oriented execution ... TEND End of the transaction. * R15 now contains a count of the transaction retry attempts.

Man bemerke, dass beide Register 14 und 15 bei diesem Beispiel nicht zurückgesetzt werden. Man bemerke darüber hinaus, dass der Zählwert im allgemeinen 15 bei einigen Modellen niedrig sein kann, wenn die CPU die Abbruchbedingung zwar nach Ausführen der Anweisung TBEGINC, aber vor Ausführen der AHI-Anweisung erkennt.Note that both registers 14 and 15 are not reset in this example. Note, in addition, that the count may generally be low on some models if the CPU detects the abort condition after executing the TBEGINC instruction but before executing the AHI instruction.

Wie durch die CPU wahrgenommen, unterscheiden sich im Modus der transaktionsorientierten Ausführung durchgeführte Abrufe und Speichervorgänge nicht von jenen, die nicht im Transaktionsausführungsmodus durchgeführt wurden.As perceived by the CPU, polls and stores made in the transaction-oriented execution mode are not different from those not performed in the transaction execution mode.

Bei einer Ausführungsform wählt der Benutzer (d. h. derjenige, der die Transaktion erstellt) aus, ob eine Transaktion eingeschränkt werden soll. Eine Ausführungsform der Logik, die der Verarbeitung von eingeschränkten Transaktionen und insbesondere der Verarbeitung im Zusammenhang mit einer Anweisung TBEGINC zugehörig ist, wird unter Bezugnahme auf 11 beschrieben. Das Ausführen der Anweisung TBEGINC bewirkt, dass die CPU in den Modus der eingeschränkten transaktionsorientierten Ausführung übergeht oder im Modus der nichteingeschränkten Ausführung bleibt. Die CPU (d. h. der Prozessor), die TBEGINC ausführt, für die Logik von 11 aus.In one embodiment, the user (ie, the one creating the transaction) selects whether to restrict a transaction. An embodiment of the logic associated with the processing of constrained transactions, and more particularly the processing associated with a TBEGINC instruction, will be described with reference to FIG 11 described. Execution of the TBEGINC instruction causes the CPU to enter the restricted transactional execution mode or remain in the unrestricted execution mode. The CPU (ie the processor) executing TBEGINC is for the logic of 11 out.

Unter Bezugnahme auf 11 wird eine Serialisierungsfunktion auf der Grundlage des Ausführens einer Anweisung TBEGINC durchgeführt, SCHRITT 1100. Eine Serialisierungsfunktion oder -operation beinhaltet das Ausführen aller konzeptionell davor liegenden Speicherzugriffe (und bei der z/Architecture beispielsweise entsprechende Referenzbit- und Änderungsbiteinstellungen) durch die CPU, wie von anderen CPUs und dem E/A-Teilsystem wahrgenommen, bevor die konzeptionell nachfolgenden Speicherzugriffe (und entsprechenden Referenzbit- und Änderungsbiteinstellungen) erfolgen. Die Serialisierung betrifft die Abfolge aller CPU-Zugriffe auf einen Speicher und auf die Speicherschlüssel, mit Ausnahme jener, die mit dem Abrufen von ART-Tabelleneinträgen und DAT-Tabelleneinträgen in Zusammenhang stehen.With reference to 11 For example, a serialization function is performed on the basis of executing a TBEGINC instruction, STEP 1100 , A serialization function or operation involves performing all conceptually preceding memory accesses (and, for example, corresponding reference bit and change bit settings in the z / Architecture) as perceived by other CPUs and the I / O subsystem before the conceptually subsequent memory accesses ( and corresponding reference bit and change bit settings). Serialization refers to the sequence of all CPU accesses to memory and to the memory keys, except those associated with retrieving ART table entries and DAT table entries.

Wie von einer CPU im Modus der transaktionsorientierten Ausführung wahrgenommen, arbeitet eine Serialisierung normal (wie oben beschrieben). Wie von anderen CPUs und durch das E/A-Teilsystem wahrgenommen, erfolgt eine Serialisierungsoperation, die durchgeführt wird, während sich eine CPU im Modus der transaktionsorientierten Ausführung befindet, wenn die CPU den Modus der transaktionsorientierten Ausführung verlässt, entweder infolge einer Anweisung TRANSACTION END, die die Transaktionsverschachtelungstiefe auf null senkt (normale Beendigung), oder infolge des Abbruchs der Transaktion. As perceived by a CPU in transactional execution mode, serialization operates normally (as described above). As perceived by other CPUs and by the I / O subsystem, a serialization operation performed while a CPU is in transactional execution mode occurs when the CPU exits transactional execution mode, either as a result of a TRANSACTION END instruction, which lowers the transaction nesting depth to zero (normal termination), or as a result of aborting the transaction.

Nach durchgeführter Serialisierung wird eine Ermittlung durchgeführt, ob eine Ausnahme erkannt wurde, ABFRAGE 1102. Ist dies der Fall, wird die Ausnahme bearbeitet, SCHRITT 1104. Beispielsweise wird eine Ausnahme durch eine spezielle Operation erkannt, und die Operation wird unterdrückt, wenn die Steuerung der transaktionsorientierten Ausführung, Bit 8 von Steuerregister 0, 0 ist. Als weiteres Beispiel wird eine Spezifikationsausnahme erkannt und die Operation unterdrückt, wenn das B1-Feld, Bits 16 bis 19 der Anweisung, ungleich null ist; eine Ausführungsausnahme erkannt und die Operation unterdrückt, wenn die TBEGINC das Ziel einer Anweisung vom Ausführungstyp ist; und eine Operationsausnahme wird erkannt und die Operation unterdrückt, wenn die Einrichtung für transaktionsorientierte Ausführung in der Konfiguration nicht installiert ist. Wenn sich die CPU bereits im eingeschränkten Transaktionsausführungsmodus befindet, wird eine Programmausnahme aufgrund einer durch eine eingeschränkte Transaktion bedingten Ausnahme erkannt und die Operation unterdrückt. Wenn die um 1 erhöhte Transaktionsverschachtelungstiefe eine modellabhängige maximale Transaktionsverschachtelungstiefe überschreitet, wird die Transaktion mit Abbruchcode 13 abgebrochen. Andere oder unterschiedliche Ausnahmen können erkannt und bearbeitet werden.After performing serialization, a determination is made as to whether an exception has been detected, QUERY 1102 , If so, the exception is processed, STEP 1104 , For example, an exception is detected by a special operation, and the operation is suppressed if the control of transaction-oriented execution, bit 8 of control register 0, is 0. As another example, a specification exception is recognized and the operation suppressed if the B 1 field, bits 16 through 19 of the instruction, is non-zero; detects an execution exception and suppresses the operation if the TBEGINC is the target of an execution-type statement; and an operation exception is detected and the operation is suppressed if the transaction-oriented execution device is not installed in the configuration. If the CPU is already in the restricted transaction execution mode, a program exception is detected due to a transaction-constrained exception and the operation is suppressed. If the transaction nesting depth increased by 1 exceeds a model-dependent maximum transaction nesting depth, the abort code 13 transaction is aborted. Other or different exceptions can be detected and edited.

Wenn allerdings keine Ausnahme vorliegt, wird eine Ermittlung durchgeführt, ob die Transaktionsverschachtelungstiefe null ist, ABFRAGE 1106. Wenn die Transaktionsverschachtelungstiefe null ist, wird die Transaktionsdiagnoseblock-Adresse als ungültig angesehen, SCHRITT 1108; das Transaktionsabbruch-PSW wird aus den Inhalten des aktuellen PSW gesetzt, außer wenn die Anweisungsadresse des Transaktionsabbruch-PSW die Anweisung TBEGINC anstatt der nächsten sequenziellen Anweisung ausweist, SCHRITT 1110; und die Inhalte der Paare allgemeiner Register werden, wie durch die Speichermaske für allgemeine Register ausgewiesen, an einem modellabhängigen Speicherort gespeichert, der für das Programm nicht direkt zugänglich ist, SCHRITT 1112. Darüber hinaus wird die Verschachtelungstiefe auf 1 gesetzt, SCHRITT 1114. Ferner werden der effektive Wert der Steuerung zum Zulassen einer Gleitkommaoperation (F) und der Programmunterbrechungsfilterungs-Steuerung (PIFC) auf null gesetzt, SCHRITT 1316. Darüber hinaus wird der effektive Wert der Steuerung zum Zulassen einer AR-Änderung (A), Bit-12-Feld des I2-Feldes der Anweisung, ermittelt, SCHRITT 1118. Beispielsweise ist die effektive A-Steuerung das logische UND der A-Steuerung in der Anweisung TBEGINC für die aktuelle Ebene und für alle äußeren Anweisungen TBEGIN.However, if there is no exception, a determination is made as to whether the transaction nesting depth is zero, REQUEST 1106 , If the transaction nesting depth is zero, the transaction diagnostic block address is considered invalid, STEP 1108 ; the transaction abort PSW is set from the contents of the current PSW, except when the instruction address of the transaction abort PSW identifies the instruction TBEGINC instead of the next sequential instruction, STEP 1110 ; and the contents of the general register pairs are stored, as indicated by the general register storage mask, at a model-dependent storage location that is not directly accessible to the program, STEP 1112 , In addition, the nesting depth is set to 1, STEP 1114 , Further, the effective value of the control for permitting a floating point operation (F) and the program interruption filtering control (PIFC) are set to zero, STEP 1316 , In addition, the effective value of the control to allow an AR change (A), bit 12 field of the I 2 field of the instruction, is determined, STEP 1118 , For example, the effective A-control is the logical AND of the A-control in the TBEGINC instruction for the current level and for all outer TBEGIN statements.

Unter erneuter Bezugnahme auf ABFRAGE 1106 wird die Verschachtelungstiefe um 1 erhöht, SCHRTT 1120, wenn die Verschachtelungstiefe höher als null ist. Darüber hinaus wird der effektive Wert der Steuerung zum Zulassen einer Gleitkommaoperation (F) auf null gesetzt, und der effektive Wert der Programmunterbrechungsfilterungs-Steuerung (PIFC) bleibt unverändert, SCHRITT 1122. Die Verarbeitung fährt mit SCHRITT 1118 fort. Bei einer Ausführungsform führt ein erfolgreiches Einleiten der Transaktion zu Bedingungscode 0. Dies schließt eine Ausführungsform der Logik ab, die dem Ausführen einer Anweisung TBEGINC zugehörig ist.Referring again to QUERY 1106 the nesting depth is increased by 1, SCHRTT 1120 if the nesting depth is higher than zero. In addition, the effective value of the control to allow floating point operation (F) is set to zero, and the effective value of the program interruption filtering control (PIFC) remains unchanged, STEP 1122 , Processing continues with STEP 1118 continued. In one embodiment, successfully initiating the transaction results in condition code 0. This completes one embodiment of the logic associated with executing a TBEGINC instruction.

Bei einer Ausführungsform kann das oben bereitgestellte Prüfen auf Ausnahmen in variierender Reihenfolge stattfinden. Eine bestimmte Reihenfolge für das Prüfen auf Ausnahmen ist wie nachstehend angeführt:
Ausnahmen mit der gleichen Priorität wie die Priorität der Programmunterbrechungsbedingungen für den allgemeinen Fall.
Spezifikationsausnahme aufgrund dessen, dass das B1-Feld einen Wert ungleich null enthält.
Abbruch aufgrund einer Überschreitung der Transaktionsverschachtelungstiefe.
Bedingungscode 0 aufgrund einer normalen Ausführung.
In one embodiment, the checking provided above may be for exceptions in varying order. A specific order for checking exceptions is as follows:
Exceptions with the same priority as the priority of the program interruption conditions for the general case.
Specification exception due to the B 1 field containing a nonzero value.
Abort due to transactional nesting depth being exceeded.
Condition code 0 due to a normal execution.

Darüber hinaus kommt Folgendes bei einer oder mehreren Ausführungsformen zur Anwendung:

  • 1. Register, die von der Speichermaske für allgemeine Register als zu speichern ausgewiesen sind, werden nur zurückgesetzt, wenn die Transaktion abgebrochen wird, und nicht, wenn die Transaktion normal durch TRANSACTION END endet. Nur die von der GRSM der äußersten Anweisung TRANSACTION BEGIN ausgewiesenen Register werden bei einem Abbruch zurückgesetzt. Das I2-Feld sollte alle Registerpaare ausweisen, die Eingabewerte bereitstellen, die durch eine eingeschränkte Transaktion geändert werden. Wenn die Transaktion abgebrochen wird, werden somit die Eingaberegisterwerte auf ihre ursprünglichen Inhalte zurückgesetzt, wenn die eingeschränkte Transaktion erneut ausgeführt wird.
  • 2. Bei den meisten Modellen kann eine verbesserte Leistung sowohl bei TRANSACTION BEGIN als auch bei Transaktionsabbruch dadurch erzielt werden, dass die Mindestanzahl von Registern spezifiziert wird, die in der Speichermaske für allgemeine Register gespeichert und zurückgesetzt werden müssen.
  • 3. Im Folgenden sind die Ergebnisse der Anweisung TRANSACTION BEGIN (sowohl TBEGIN als auch TBEGINC) auf der Grundlage der aktuellen Transaktionsverschachtelungstiefe und bei TND ungleich null gezeigt, unabhängig davon, ob sich die CPU im Modus der nichteingeschränkten oder eingeschränkten transaktionsorientierten Ausführung befindet:
Anweisung: TND = 0 TBEGIN Eintreten in den Modus der nichteingeschränkten transaktionsorientierten Ausführung TBEGINC Eintreten in den Modus der eingeschränkten transaktionsorientierten Ausführung Anweisung: TND > 0 TBEGIN NTX-Modus Fortsetzen im Modus der nichteingeschränkten transaktionsorientierten Ausführung CTX-Modus Ausnahme durch eine eingeschränkte Transaktion TBEGINC Fortsetzen im Modus der nichteingeschränkten transaktionsorientierten Ausführung Ausnahme durch eine eingeschränkte Transaktion Erläuterung: CTX CPU befindet sich im Modus der eingeschränkten transaktionsorientierten Ausführung NTX CPU befindet sich im Modus der nichteingeschränkten transaktionsorientierten Ausführung TND Transaktionsverschachtelungstiefe zu Beginn der Anweisung. Additionally, in one or more embodiments, the following applies:
  • 1. Registers designated as to be stored by the general register memory mask are reset only when the transaction is aborted and not when the transaction ends normally by TRANSACTION END. Only the registers designated by the GRSM of the outermost TRANSACTION BEGIN statement are reset on abort. The I 2 field should identify all register pairs that provide input values that are changed by a constrained transaction. Thus, if the transaction is aborted, the input register values are reset to their original contents when the restricted transaction is re-executed.
  • 2. For most models, improved performance on both TRANSACTION BEGIN and Transaction Cancellation can be achieved by specifying the minimum number of registers to store and reset in the general register memory mask.
  • 3. The following shows the results of the TRANSACTION BEGIN statement (both TBEGIN and TBEGINC) based on the current transaction nesting depth and non-zero TND, regardless of whether the CPU is in the unrestricted or restricted transactional execution mode:
instructions: TND = 0 TBEGIN Entering the mode of unrestricted transactional execution TBEGINC Entering the restricted transactional execution mode instructions: TND> 0 TBEGIN NTX Mode Continue in the unrestricted transactional execution mode CTX mode exception through a restricted transaction TBEGINC Continue in the unrestricted transactional execution mode Exception through a limited transaction Explanation: CTX CPU is in restricted transactional execution mode NTX CPU is in unrestricted transactional execution mode TND Transaction nesting depth at the beginning of the statement.

Zusammenfassend ist die Verarbeitung einer eingeschränkten Transaktion wie folgt:

Figure 00720001
Figure 00730001
Figure 00740001
In summary, the processing of a restricted transaction is as follows:
Figure 00720001
Figure 00730001
Figure 00740001

Wie oben beschrieben, stellt die Transaktionseinrichtung bei einer Ausführungsform zusätzlich zur optionalen Verarbeitung von eingeschränkten Transaktionen auch eine Verarbeitung von nichteingeschränkten Transaktionen bereit. Weitere Details zur Verarbeitung von nichteingeschränkten Transaktionen und insbesondere zur Verarbeitung in Zusammenhang mit einer Anweisung TBEGIN sind unter Bezugnahme auf 12 beschrieben. Das Ausführen der Anweisung TBEGIN bewirkt, dass die CPU in den Modus der nichteingeschränkten transaktionsorientierten Ausführung übergeht oder in diesem bleibt. Die CPU (d. h. der Prozessor), die TBEGIN ausführt, führt die Logik von 12 aus.As described above, in one embodiment, the transaction device also provides processing of unrestricted transactions in addition to the optional processing of restricted transactions. Further details on the processing of unrestricted transactions and in particular on processing associated with a TBEGIN instruction are described with reference to FIG 12 described. Execution of the TBEGIN instruction causes the CPU to enter or remain in the unrestricted transactional execution mode. The CPU (ie the processor) executing TBEGIN executes the logic of 12 out.

Unter Bezugnahme auf 12 wird eine Serialisierungsfunktion (oben beschrieben) auf der Grundlage des Ausführens der Anweisung TBEGIN durchgeführt, SCHRTT 1200. Nach durchgeführter Serialisierung wird eine Ermittlung dahingehend durchgeführt, ob eine Ausnahme erkannt wurde, ABFRAGE 1202. Ist dies der Fall, wird die Ausnahme bearbeitet, SCHRITT 1204. Beispielsweise wird eine Ausnahme durch spezielle Operation erkannt und die Operation unterdrückt, wenn die Steuerung der transaktionsorientierten Ausführung, Bit 8 von Steuerregister 0, null ist. Darüber hinaus wird eine Spezifikationsausnahme erkannt und die Operation unterdrückt, wenn die Programmunterbrechungsfilterungs-Steuerung, Bits 14 bis 15 des I2-Feldes der Anweisung, den Wert 3 enthalten; oder die Adresse des ersten Operanden keine Doppelwortgrenze ausweist. Eine Operationsausnahme wird erkannt und die Operation unterdrückt, wenn die Einrichtung für transaktionsorientierte Ausführung in der Konfiguration nicht installiert ist; und eine Ausführungsausnahme wird erkannt und die Operation unterdrückt, wenn die TBEGIN das Ziel einer Anweisung vom Ausführungstyp ist. Wenn sich die CPU im Modus der eingeschränkten transaktionsorientierten Ausführung befindet, wird darüber hinaus eine Programmausnahme aufgrund einer durch eine eingeschränkte Transaktion bedingten Ausnahme erkannt und die Operation unterdrückt. Wenn die um 1 erhöhte Transaktionsverschachtelungstiefe eine modellabhängige maximale Transaktionsverschachtelungstiefe überschreitet, wird die Transaktion mit Abbruchcode 13 abgebrochen.With reference to 12 a serialization function (described above) is performed on the basis of executing the TBEGIN instruction, SCHRTT 1200 , After performing serialization, a determination is made as to whether an exception was detected, QUERY 1202 , If so, the exception is processed, STEP 1204 , For example, an exception is detected by special operation and the operation is suppressed when the control of transaction-oriented execution, bit 8 of control register is 0, zero. In addition, a specification exception is detected and the operation is suppressed if the program interruption filtering control, bits 14 through 15 of the I 2 field of the instruction, contains the value 3; or the address of the first operand does not identify a double word boundary. An operation exception is detected and the operation is suppressed if the transaction-oriented execution device is not installed in the configuration; and an execution exception is detected and the operation is suppressed if the TBEGIN is the target of an execution type statement. Additionally, if the CPU is in Restricted Transactional Execution mode, a program exception will be detected due to a transaction-constrained exception and the operation will be suppressed. If the transaction nesting depth increased by 1 exceeds a model-dependent maximum transaction nesting depth, the abort code 13 transaction is aborted.

Wenn das B1-Feld der Anweisung ungleich null ist und sich die CPU nicht im Modus der transaktionsorientierten Ausführung befindet, d. h., die Transaktionsverschachtelungstiefe ist null, wird die Speicherzugänglichkeit für den ersten Operanden ermittelt. Wenn auf den ersten Operanden für Speichervorgänge nicht zugegriffen werden kann, wird eine Zugriffsausnahme erkannt, und die Operation wird entweder aufgehoben, unterdrückt oder beendet, je nach spezifischer Zugriffsausnahmebedingung. Darüber hinaus wird jedes PER-Speicheränderungsereignis für den ersten Operanden erkannt. Wenn das B1-Feld ungleich null ist und sich die CPU bereits im Modus der transaktionsorientierten Ausführung befindet, ist es nicht vorhersagbar, ob eine Speicherzugänglichkeit für den ersten Operanden ermittelt wird, und PER-Speicheränderungsereignisse werden für den ersten Operanden ermittelt. Wenn das B1-Feld null ist, wird auf den ersten Operanden nicht zugegriffen.If the B 1 field of the instruction is nonzero and the CPU is not in transactional execution mode, ie the transaction nesting depth is zero, the memory accessibility for the first operand is determined. If the first operand for memory operations can not be accessed, an access exception is detected and the operation is either deasserted, suppressed, or terminated, depending on the specific access exception. In addition, each PER memory change event is detected for the first operand. If the B 1 field is nonzero and the CPU is already in transactional execution mode, it is unpredictable whether memory accessibility for the first operand is determined and PER memory change events are detected for the first operand. If the B 1 field is zero, the first operand is not accessed.

Neben dem Prüfen auf Ausnahmen kann eine Ermittlung dahingehend durchgeführt werden, ob sich die CPU im Modus der transaktionsorientierten Ausführung befindet (d. h., die Transaktionsverschachtelungstiefe ist null), ABFRAGE 1206. Wenn sich die CPU nicht im Modus der transaktionsorientierten Ausführung befindet, werden die Inhalte ausgewählter Paare allgemeiner Register gespeichert, SCHRITT 1208. Insbesondere werden die Inhalte der von der Speichermaske für allgemeine Register ausgewiesenen Paare allgemeiner Register an einem modellabhängigen Speicherort gespeichert, der für das Programm nicht direkt zugänglich ist.In addition to checking for exceptions, a determination can be made as to whether the CPU is in transactional execution mode (ie, the transaction nesting depth is zero), QUERY 1206 , If the CPU is not in transactional execution mode, the contents of selected pairs of common registers are stored, STEP 1208 , In particular, the contents of the common register pairs of general register memory templates are stored in a model-dependent storage location that is not directly accessible to the program.

Darüber hinaus wird eine Ermittlung dahingehend durchgeführt, ob das B1-Feld der Anweisung null ist, ABFRAGE 1210. Wenn das B1-Feld ungleich null ist, wird die Adresse des ersten Operanden im Transaktionsdiagnoseblock platziert, SCHRITT 1214, und die Transaktionsdiagnoseblock-Adresse ist gültig. Darüber hinaus wird das Transaktionsabbruch-PSW aus den Inhalten des aktuellen PSW gesetzt, SCHRITT 1216. Die Anweisungsadresse des Transaktionsabbruch-PSW weist die nächste sequenzielle Anweisung aus (d. h. die Anweisung, die auf die äußerste TBEGIN folgt).In addition, a determination is made as to whether the B 1 field of the instruction is null, QUERY 1210 , If the B 1 field is not equal to zero, the address of the first operand is placed in the transaction diagnostic block, STEP 1214 , and the transaction diagnostic block address is valid. In addition, the transaction abort PSW is set from the contents of the current PSW, STEP 1216 , The instruction address of the transaction abort PSW rejects the next sequential instruction (ie the instruction following the outermost TBEGIN).

Ferner wird eine Ermittlung in Bezug auf den effektiven Wert der Steuerung zum Zulassen einer AR-Änderung (A), Bit 12 des I2-Feldes der Anweisung, durchgeführt, SCHRITT 1218. Die effektive A-Steuerung ist das logische AND der A-Steuerung in der Anweisung TBEGIN für die aktuelle Ebene und für alle anderen äußeren Ebenen. Außerdem wird ein effektiver Wert der Steuerung zum Zulassen einer Gleitkommaoperation (F), Bit 13 des I2. Feldes der Anweisung, ermittelt, SCHRITT 1220. Die effektive F-Steuerung ist das logische UND der F-Steuerung in der Anweisung TBEGIN für die aktuelle Ebene und für alle anderen äußeren Ebenen. Darüber hinaus wird ein effektiver Wert der Programmunterbrechungsfilterung-Steuerung (PIFC), Bits 14 bis 15 des I2-Feldes der Anweisung, ermittelt, SCHRITT 1222. Der effektive PIFC-Wert ist der höchste Wert in der Anweisung TBEGIN für die aktuelle Ebene und für alle äußeren Ebenen.Further, a determination is made as to the effective value of the control for permitting an AR change (A), bit 12 of the I 2 field of the instruction, STEP 1218 , The effective A-control is the logical AND of the A-control in the instruction TBEGIN for the current level and for all other outer levels. In addition, an effective value of the control for permitting a floating point operation (F) becomes bit 13 of I 2 . Field of instruction, determined, STEP 1220 , The effective F control is the logical AND of the F control in the TBEGIN statement for the current level and for all other outer levels. In addition, an effective value of Program Interrupt Filtering Control (PIFC), bits 14 through 15 of the I 2 field of the instruction, is determined, STEP 1222 , The effective PIFC value is the highest value in the TBEGIN statement for the current level and for all outer levels.

Außerdem wird ein Wert von eins zur Transaktionsverschachtelungstiefe addiert, SCHRITT 1224, und die Anweisung wird durch Setzen des Bedingungscodes 0 ausgeführt, SCHRITT 1226. Wenn die Transaktionsverschachtelungstiefe von null auf eins übergeht, tritt die CPU in den Modus der nichteingeschränkten transaktionsorientierten Ausführung ein; andernfalls bleibt die CPU im Modus der nichteingeschränkten transaktionsorientierten Ausführung.In addition, a value of one is added to the transaction nesting depth, STEP 1224 , and the instruction is executed by setting the condition code 0, STEP 1226 , When the transaction nesting depth transitions from zero to one, the CPU enters the unrestricted transactional execution mode; otherwise, the CPU remains in the unrestricted transactional execution mode.

Unter erneuter Bezugnahme auf ABFRAGE 1210 ist die Transaktionsdiagnoseblock-Adresse ungültig, wenn B1 gleich null ist, SCHRITT 1211, und die Verarbeitung fährt mit SCHRITT 1218 fort. Gleichermaßen fährt die Verarbeitung mit SCHRITT 1218 fort, wenn sich die CPU im Modus der transaktionsorientierten Ausführung befindet, ABFRAGE 1206.Referring again to QUERY 1210 if the transaction diagnostic block address is invalid when B 1 is equal to zero, STEP 1211 , and processing continues with STEP 1218 continued. Likewise, processing continues with STEP 1218 when the CPU is in transactional execution mode, REQUEST 1206 ,

Zu den entstehenden Bedingungscodes des Ausführens von TBEGIN gehören beispielsweise:
0 Transaktionseinleitung erfolgreich
1 --
2 --
3 --
The resulting condition codes for running TBEGIN include, for example:
0 transaction initiation successful
1 --
2 -
3 -

Zu Programmausnahmen gehören beispielsweise:

  • * Zugriff (Speichervorgang, erster Operand)
  • * Operation (Einrichtung für transaktionsorientierte Ausführung nicht installiert)
  • * Spezielle Operation
  • * Spezifikation
  • * Transaktionseinschränkung (aufgrund einer eingeschränkten Anweisung)
Program exceptions include, for example:
  • * Access (store, first operand)
  • * Operation (transactional execution setup not installed)
  • * Special operation
  • * Specification
  • * Transaction restriction (due to a restricted instruction)

Bei einer Ausführungsform kann das oben bereitgestellte Prüfen auf Ausnahmen in variierender Reihenfolge stattfinden. Eine bestimmte Reihenfolge für das Prüfen auf Ausnahmen ist wie nachstehend angeführt:

  • * Ausnahmen mit der gleichen Priorität wie die Priorität der Programmunterbrechungsbedingungen für den allgemeinen Fall.
  • * Spezifikationsausnahme aufgrund eines reservierten PIFC-Werts.
  • * Spezifikationsausnahme aufgrund dessen, dass sich die Adresse des ersten Operanden nicht auf einer Doppelwortgrenze befindet.
  • * Zugriffsausnahme (wenn das B1-Feld ungleich null ist).
  • * Abbruch aufgrund einer Überschreitung der maximalen Transaktionsverschachtelungstiefe.
  • * Bedingungscode 0 aufgrund einer normalen Ausführung.
In one embodiment, the checking provided above may be for exceptions in varying order. A specific order for checking exceptions is as follows:
  • * Exceptions with the same priority as the priority of the program interruption conditions for the general case.
  • * Specification exception due to a reserved PIFC value.
  • * Specification exception due to the address of the first operand not being on a double word boundary.
  • * Access exception (if the B 1 field is nonzero).
  • * Canceled due to exceeding the maximum transaction nesting depth.
  • * Condition code 0 due to a normal execution.

Anmerkungen:Remarks:

  • 1. Wenn das B1-Feld ungleich null ist, gilt Folgendes: * Ein zugänglicher Transaktionsdiagnoseblock (TDB) ist bereitzustellen, wenn eine äußerste Transaktion eingeleitet wird – selbst wenn die Transaktion niemals abgebrochen wird. * Da es nicht vorhersagbar ist, ob die Zugänglichkeit des TDB auf verschachtelte Transaktionen getestet ist, sollte ein zugänglicher TDB für alle verschachtelten Anweisungen TBEGIN bereitgestellt werden. * Die Ausführung einer TBEGIN, bei der das B1-Feld ungleich null ist, und die Ausführung einer Abbruchverarbeitung, die für eine Transaktion erfolgt, die durch eine äußerste TBEGIN eingeleitet wurde, bei der das B1-Feld ungleich null ist, können langsamer sein als bei einem B1-Feld von null.1. If the B 1 field is not equal to zero then: * An accessible transaction diagnostic block (TDB) is to be provided when an outermost transaction is initiated - even if the transaction is never aborted. Since it is unpredictable that the accessibility of the TDB is tested for nested transactions, an accessible TDB should be provided for all nested TBEGIN instructions. Execution of a TBEGIN where the B 1 field is non-zero and execution of abort processing for a transaction initiated by an outermost TBEGIN where the B 1 field is non-zero can be slower than a B 1 field of zero.
  • 2. Register, die von der Speichermaske für allgemeine Register als zu speichern ausgewiesen sind, werden bei einer Ausführungsform nur zurückgesetzt, wenn die Transaktion abgebrochen wird, und nicht, wenn die Transaktion normal durch TRANSACTION END endet. Nur die von der GRSM der äußersten Anweisung TRANSACTION BEGIN ausgewiesenen Register werden bei einem Abbruch zurückgesetzt. Das I2-Feld sollte alle Registerpaare ausweisen, die Eingabewerte bereitstellen, die durch die Transaktion geändert werden. Wenn die Transaktion abgebrochen wird, werden somit die Eingaberegisterwerte auf ihre ursprünglichen Inhalte zurückgesetzt, wenn zum Abbruch-Handler übergegangen wird.2. Registers designated as to be stored by the general register memory mask are reset in one embodiment only when the transaction is aborted and not when the transaction ends normally by TRANSACTION END. Only the registers designated by the GRSM of the outermost TRANSACTION BEGIN statement are reset on abort. The I 2 field should identify all register pairs that provide input values that are changed by the transaction. Thus, if the transaction is aborted, the input register values are reset to their original contents when transitioning to the abort handler.
  • 3. Es wird erwartet, dass auf die Anweisung TRANSACTION BEGIN (TBEGIN) eine Anweisung einer bedingten Verzweigung folgt, die ermittelt, ob die Transaktion erfolgreich eingeleitet wurde.3. It is expected that the statement TRANSACTION BEGIN (TBEGIN) is followed by a conditional branch statement that determines whether the transaction was successfully initiated.
  • 4. Wenn eine Transaktion aufgrund von Bedingungen abgebrochen wird, die nicht zu einer Unterbrechung führen, erhält die durch das Transaktionsabbruch-PSW ausgewiesene Anweisung die Steuerung (d. h. die Anweisung, die auf die äußerste TRANSACTION BEGIN (TBEGIN) folgt). Neben dem Bedingungscode, der durch die Anweisung TRANSACTION BEGIN (TBEGIN) gesetzt wird, werden Bedingungscodes 1 bis 3 ebenfalls gesetzt, wenn eine Transaktion abgebrochen wird. Aus diesem Grund sollte die auf die äußerste Anweisung TRANSACTION BEGIN (TBEGIN) folgende Anweisungsabfolge in der Lage sein, alle vier Bedingungscodes zu berücksichtigen, auch wenn die Anweisung TBEGIN bei diesem Beispiel nur Code 0 setzt.4. If a transaction is aborted due to conditions that do not cause an interruption, the instruction designated by the Transaction Break PSW will be given control (i.e., the instruction following the outermost TRANSACTION BEGIN (TBEGIN)). In addition to the condition code set by the TRANSACTION BEGIN (TBEGIN) statement, condition codes 1 through 3 are also set when a transaction is aborted. For this reason, the statement sequence following the outermost TRANSACTION BEGIN statement (TBEGIN) should be able to accommodate all four condition codes, even if the TBEGIN statement sets only code 0 in this example.
  • 5. Bei den meisten Modellen kann eine verbesserte Leistung sowohl bei TRANSACTION BEGIN als auch bei Transaktionsabbruch dadurch erzielt werden, dass die Mindestanzahl von Registern spezifiziert wird, die in der Speichermaske für allgemeine Register gespeichert und zurückgesetzt werden müssen.5. For most models, improved performance on both TRANSACTION BEGIN and Transaction Cancellation can be achieved by specifying the minimum number of registers to store and reset in the General Register Memory Mask.
  • 6. Wenn im Modus der nichteingeschränkten transaktionsorientierten Ausführung befindlich, kann ein Programm eine Servicefunktion aufrufen, die Zugriffregister oder Gleitkommaregister (darunter das Gleitkomma-Steuerregister) ändern kann. Auch wenn eine solche Serviceroutine die geänderten Register beim Eintritt speichern und beim Austritt zurücksetzen kann, kann die Transaktion vor normalem Austritt der Routine abgebrochen werden. Wenn das aufrufende Programm nicht vorsieht, dass diese Register beibehalten werden, während sich die CPU im Modus der nichteingeschränkten transaktionsorientierten Ausführung befindet, ist es eventuell nicht in der Lage, die Änderung der Register durch die Servicefunktion zu tolerieren. Um ein unbeabsichtigtes Ändern von Zugriffsregistern im Modus der nichteingeschränkten Transaktionsausführung zu verhindern, kann das Programm die Steuerung zum Zulassen einer AR-Änderung, Bit 12 des I2-Feldes der Anweisung TRANSACTION BEGIN, auf null setzen. Um ein unbeabsichtigtes Ändern der Gleitkommaregister zu verhindern, kann das Programm gleichermaßen die Gleitkommaoperations-Steuerung, Bit 13 des I2-Feldes der Anweisung TBEGIN, auf null setzen.6. When in the unrestricted transactional execution mode, a program may invoke a service function that may change access registers or floating point registers (including the floating point control register). Even if such a service routine can save the changed registers on entry and reset them on exit, the transaction can be aborted before the routine exits normally. If the calling program does not intend to keep these registers while the CPU is in the unrestricted transactional execution mode, it may not be able to tolerate changing the registers by the service function. To prevent inadvertent modification of access registers in the unrestricted transaction execution mode, the program can set the control to allow an AR change, bit 12 of the I 2 field of the TRANSACTION BEGIN instruction, to zero. Similarly, to prevent inadvertent changing of the floating point registers, the program can set the floating point operation control, bit 13 of the I 2 field of the TBEGIN instruction, to zero.
  • 7. Programmausnahmebedingungen, die während des Ausführen der Anweisung TRANSACTION BEGIN (TBEGIN) erkannt werden, unterliegen der effektiven Programmunterbrechungsfilterungs-Steuerung, die durch äußere Anweisungen TBEGIN gesetzt wird. Programmausnahmebedingungen, die während des Ausführens der äußersten Anweisung TBEGIN erkannt werden, unterliegen keiner Filterung.7. Program exceptions detected during execution of the TRANSACTION BEGIN (TBEGIN) instruction are subject to effective program interruption filtering control set by external instructions TBEGIN. Program exceptions that are detected while executing the outermost TBEGIN instruction are not filtered.
  • 8. Um mehrere Speicherorte auf seriell zu aktualisieren, können herkömmliche Codesequenzen ein Sperrwort (Semaphor) verwenden. Wenn (a) eine transaktionsorientierte Ausführung verwendet wird, um Aktualisierungen mehrerer Speicherorte zu implementieren, (b) das Programm darüber hinaus einen „Ausweich”-Pfad bereitstellt, der bei Abbruch einer Transaktion aufzurufen ist, und (c) der Ausweichpfad ein Sperrwort verwendet, sollte der Pfad für die transaktionsorientierte Ausführung auch die Verfügbarkeit der Sperre testen und die Transaktion mithilfe der Anweisung TRANSACTION END beenden und zum Ausweichpfad verzweigen, wenn die Sperre nicht verfügbar ist. Dies stellt einen einheitlichen Zugriff auf die serialisierten Ressourcen sicher, unabhängig davon, ob sie transaktionsorientiert aktualisiert werden. Alternativ könnte ein Abbruch des Programms stattfinden, wenn die Sperre nicht verfügbar ist, die Abbruchverarbeitung kann jedoch erheblich langsamer sein als das einfache Beenden der Transaktion über TEND.8. In order to serially update multiple memory locations, conventional code sequences may use a semaphore. If (a) a transaction-oriented execution is used to implement updates of multiple memory locations, (b) the program also provides an "escape" path to call upon aborting a transaction, and (c) the escape path uses a lockword, The transaction-oriented execution path should also test the availability of the lock and stop the transaction using the TRANSACTION END statement and branch to the fallback path if the lock is not available. This ensures unified access to the serialized resources, regardless of whether they are updated in a transactional manner. Alternatively, the program could be aborted if the lock is unavailable, but the abort processing can be significantly slower than simply terminating the transaction via TEND.
  • 9. Wenn die effektive Programmunterbrechungsfilterungs-Steuerung (PIFC) größer als null ist, filtert die CPU die meisten Programmunterbrechungen durch Datenausnahme. Wenn die effektive Steuerung zum Zulassen von einer Gleitkommaoperation (F) null ist, wird der Datenausnahmecode (DXE) infolge eines Abbruchs, der durch eine Datenausnahme-Programmausnahme-Bedingung verursacht wird, im Gleitkomma-Steuerregister nicht gesetzt. Bei diesem Szenario (Filterung kommt zur Anwendung, und die effektive F-Steuerung ist null) befindet sich nur der Speicherort im TBEGIN-spezifizierten TDB, bei dem der DXC geprüft wurde. Wenn der Abbruch-Handler des Programms in einer solchen Situation den DXC prüfen soll, sollte das allgemeine Register B1 ungleich null sein, so dass eine gültige Transaktionsdiagnoseblock-Adresse (TDBA) gesetzt wird.9. If the Effective Program Interrupt Filtering Control (PIFC) is greater than zero, the CPU filters most program interrupts by data exception. When the effective control for allowing a floating point operation (F) is zero, the data exception code (DXE) is not set in the floating point control register due to an abort caused by a data exception program exception condition. In this scenario (filtering applies, and the effective F-control is zero), only the location in the TBEGIN-specified TDB where the DXC was tested is located. If the program's abort handler is to check the DXC in such a situation, the general register B 1 should be non-zero, such that a valid transaction diagnostic block address (TDBA) is set.
  • 10. Wenn eine PER-Speicheränderungsbedingung oder Null-Adresse-Erkennungs-Bedingung für den TBEGIN-spezifizierten TDB der äußersten Anweisung TBEGIN vorhanden ist und die PER-Ereignisunterdrückung nicht zur Anwendung kommt, wird das PER-Ereignis während des Ausführens der Anweisung erkannt, wodurch ein sofortiger Abbruch der Transaktion bewirkt wird, unabhängig davon, ob eine andere Abbruchbedingung vorliegt.10. If there is a PER memory change condition or ZERO condition for the TBEGIN specified TDB of the TBEGIN outermost instruction and the PER event suppression is not applied, then the PER event is recognized during execution of the instruction, thereby an immediate termination of the transaction is effected, regardless of whether another termination condition exists.

Gemäß einem Aspekt setzt die Anweisung TBEGIN die Transaktionsabbruchadresse implizit dahingehend, dass sie die nächste sequenzielle Anweisung nach der TBEGIN ist. Diese Adresse ist als Anweisung für eine bedingte Verzweigung vorgesehen, die je nach Bedingungscode (CC) ermittelt, ob eine Verzweigung durchgeführt werden sollte. Eine erfolgreiche TBEGIN setzt CC0, eine abgebrochene Transaktion hingegen setzt CC1, CC2 oder CC3.In one aspect, the instruction TBEGIN implicitly sets the transaction abort address to be the next sequential instruction after the TBEGIN. This address is intended as a conditional branch instruction that determines whether a branch should be performed, depending on the condition code (CC). A successful TBEGIN sets CC0, but a canceled transaction sets CC1, CC2 or CC3.

Bei einer Ausführungsform stellt die Anweisung TBEGIN einen optionalen Speicheroperanden bereit, der die Adresse eines Transaktionsdiagnoseblocks (TDB) ausweist, in den Informationen bei Abbruch der Transaktion gespeichert werden.In one embodiment, the TBEGIN instruction provides an optional memory operand that identifies the address of a transaction diagnostic (TDB) block into which information is stored when the transaction aborts.

Darüber hinaus stellt sie einen Direktoperanden bereit, darunter Folgendes:
Eine Speichermaske für allgemeine Register (GRSM), die anzeigt, welche Paare allgemeiner Register zu Beginn der transaktionsorientierten Ausführung zu speichern und zurückzusetzen sind, wenn die Transaktion abgebrochen wird:
Ein Bit (A), um ein Abbrechen der Transaktion zu ermöglichen, wenn die Transaktion Zugriffsregister ändert;
Ein Bit (F), um ein Abbrechen der Transaktion zu ermöglichen, wenn die Transaktion versucht, Gleitkommaanweisungen auszuführen; und
Eine Programmunterbrechungsfilterungs-Steuerung (PIFC), die ermöglicht, dass einzelne Transaktionsebenen durch tatsächliches Darbieten einer Programmunterbrechung umgangen werden, wenn eine Transaktion abgebrochen wird.
In addition, it provides a direct operand, including:
A general register storage mask (GRSM) which indicates which pairs of general registers to store and reset at the beginning of the transaction-oriented execution when the transaction is aborted:
One bit (A) to allow the transaction to be aborted when the transaction changes access registers;
One bit (F) to allow the transaction to be aborted when the transaction attempts to execute floating point instructions; and
A program interruption filtering (PIFC) control that allows individual transaction levels to be bypassed by actually presenting a program interrupt when a transaction is aborted.

Die A-, F- und PIFC-Steuerungen können bei verschiedenen Verschachtelungsebenen unterschiedlich sein und auf die vorherigen Ebenen zurückgesetzt werden, wenn innere Transaktionsebenen beendet werden.The A, F, and PIFC controls may be different at different nesting levels and revert to the previous levels when internal transaction levels are terminated.

Außerdem wird die TBEGIN (oder bei einer weiteren Ausführungsform TBEGINC) verwendet, um ein Transaktions-Token zu bilden. Gegebenenfalls kann das Token mit einem durch die Anweisung TEND gebildeten Token abgeglichen werden. Für jede Anweisung TBEGIN (oder TBEGINC) beispielsweise wird ein Token aus der Adresse des ersten Operanden gebildet. Dieses Token kann unabhängig davon gebildet werden, ob das Basisregister null ist (im Gegensatz zum Setzen der TDB-Adresse, was nur erfolgt, wenn das Basisregister ungleich null ist). Für jede Anweisung TRANSACTION END, die mit einem Basisregister ungleich null ausgeführt wird, wird ein ähnliches Token aus dessen Speicheroperanden gebildet. Wenn das Token nicht übereinstimmt, kann eine Programmausnahme erkannt werden, um das Programm über eine nicht gepaarte Anweisung zu informieren.In addition, the TBEGIN (or TBEGINC in another embodiment) is used to form a transaction token. If necessary, the token can be terminated with a statement TEND matched tokens. For example, for each TBEGIN (or TBEGINC) instruction, a token is formed from the address of the first operand. This token can be formed regardless of whether the base register is zero (as opposed to setting the TDB address, which occurs only if the base register is non-zero). For each TRANSACTION END statement executed with a non-zero base register, a similar token is formed from its memory operand. If the token does not match, a program exception may be detected to inform the program of a non-paired instruction.

Der Token-Abgleich stellt einen Mechanismus bereit, mit dem die Software-Zuverlässigkeit verbessert werden soll, indem sichergestellt wird, dass eine TEND-Aussage korrekt mit einer TBEGIN (oder TBEGINC) gepaart wird. Wenn eine Anweisung TBEGIN auf einer bestimmten Verschachtelungsebene ausgeführt wird, wird ein Token aus der Speicheroperandenadresse gebildet, die diese Instanz einer Transaktion kennzeichnet. Wenn eine entsprechende Anweisung TEND ausgeführt wird, wird ein Token aus der Speicheroperandenadresse der Anweisung gebildet, und die CPU vergleicht das Start-Token hinsichtlich der Verschachtelungsebene mit dem End-Token. Wenn die Tokens nicht übereinstimmen, wird eine Ausnahmebedingung erkannt. Ein Modell kann einen Token-Abgleich bezüglich nur einer bestimmten Anzahl von Verschachtelungsebenen (oder keiner Verschachtelungsebenen) implementieren. Das Token kann alle Bits der Speicheroperandenadresse beinhalten, oder die Bits können mittels Hashing oder anderer Verfahren kombiniert werden. Ein Token kann durch die Anweisung TBEGIN gebildet werden, auch wenn nicht auf den Speicheroperanden zugegriffen wird.Token matching provides a mechanism to improve software reliability by ensuring that a TEND statement is correctly paired with a TBEGIN (or TBEGINC). When a TBEGIN instruction is executed at a particular nesting level, a token is formed from the memory operand address identifying that instance of a transaction. When a corresponding TEND instruction is executed, a token is formed from the memory operand address of the instruction, and the CPU compares the start token with the end token in terms of the nesting level. If the tokens do not match, an exception is detected. A model can implement a token alignment with respect to only a certain number of nesting levels (or no nesting levels). The token may include all bits of the memory operand address, or the bits may be combined by means of hashing or other methods. A token can be formed by the instruction TBEGIN, even if the memory operand is not accessed.

Zusammenfassend ist die Verarbeitung einer nichteingeschränkten Transaktion wie folgt:

Figure 00840001
Figure 00850001
Figure 00860001
In summary, the processing of an unrestricted transaction is as follows:
Figure 00840001
Figure 00850001
Figure 00860001

Wie oben angezeigt, kann eine entweder eingeschränkte oder nichteingeschränkte Transaktion durch eine Anweisung TRANSACTION END (TEND) beendet werden. Weitere Details zur Verarbeitung einer Anweisung Transaktion end (TEND) sind unter Bezugnahme auf 13 beschrieben. Die CPU (d. h. der Prozessor), die TEND ausführt, führt die Logik von 13 aus.As indicated above, an either restricted or unrestricted transaction can be terminated by a TRANSACTION END (TEND) statement. Further details on processing a transaction end statement (TEND) are given with reference to 13 described. The CPU (ie the processor) executing TEND executes the logic of 13 out.

Unter Bezugnahme auf 13 wird zunächst auf der Grundlage dessen, dass der Prozessor die Anweisung TEND erhält (z. B. abruft, empfängt usw.), ein Prüfen auf verschiedene Ausnahmen durchgeführt, und wenn eine Ausnahme vorliegt, ABFRAGE 1300, wird die Ausnahme bearbeitet, SCHRITT 1302. Wenn beispielsweise die TRANSACTION END das Ziel einer Anweisung vom Ausführungstyp ist, wird die Operation unterdrückt und eine Ausführungsausnahme erkannt, und eine Ausnahme durch eine spezielle Operation wird erkannt und die Operation wird unterdrückt, wenn die Steuerung für transaktionsorientierte Ausführung, Bit 8 bis CR0, null ist. Außerdem wird eine Operationsausnahme erkannt und die Operation unterdrückt, wenn die Einrichtung für transaktionsorientierte Ausführung in der Konfiguration nicht installiert ist.With reference to 13 First, based on the processor receiving the TEND instruction (eg, getting, receiving, etc.), checking for various exceptions, and if there is an exception, QUERY 1300 , the exception is processed, STEP 1302 , For example, if the TRANSACTION END is the target of an execution-type instruction, the operation is suppressed and an execution exception is detected, and an exception is detected by a special operation and the operation is suppressed if the transaction-oriented execution control, bits 8 through CR0, becomes null is. In addition, an operation exception is detected and the operation is suppressed if the transaction-oriented execution device is not installed in the configuration.

Unter erneuter Bezugnahme auf ABFRAGE 1300 wird die Transaktionsverschachtelungstiefe verringert (z. B. um eins), SCHRITT 1304, wenn keine Ausnahme erkannt wird. Es wird eine Ermittlung dahingehend durchgeführt, ob die Transaktionsverschachtelungstiefe nach dem Verringern null ist, ABFRAGE 1306. Wenn die Transaktionsverschachtelungstiefe null ist, werden alle von der Transaktion (und gegebenenfalls anderen Transaktionen innerhalb der Ebene von Transaktionen deren Teil diese Transaktion ist) durchgeführten Speicherzugriffe festgeschrieben, SCHRITT 1308. Darüber hinaus verlässt die CPU den Modus der transaktionsorientierten Ausführung, SCHRITT 1310, und die Anweisung wird ausgeführt, SCHRITT 1312.Referring again to QUERY 1300 the transaction nesting depth is decreased (eg, by one), STEP 1304 if no exception is detected. A determination is made as to whether the transaction nesting depth after decrementing is zero, REQUEST 1306 , If the transaction nesting depth is zero, all memory accesses made by the transaction (and possibly other transactions within the level of transactions that are part of this transaction) are committed, STEP 1308 , In addition, the CPU exits Transactional Execution mode, STEP 1310 , and the statement is executed, STEP 1312 ,

Unter erneuter Bezugnahme auf ABFRAGE 1306 wird die Anweisung TRANSACTION END gerade ausgeführt, wenn die Transaktionsverschachtelungstiefe ungleich null ist.Referring again to QUERY 1306 the statement TRANSACTION END is being executed if the transaction nesting depth is not equal to zero.

Wenn sich die CPU zu Beginn der Operation im Transaktionsausführungsmodus befindet, wird der Bedingungscode auf 0 gesetzt; andernfalls wird der Bedingungscode auf 2 gesetzt. If the CPU is in the transaction execution mode at the beginning of the operation, the condition code is set to 0; otherwise the condition code is set to 2.

Es wird angemerkt, dass die effektive Steuerung zum Zulassen einer Gleitkommaoperation (F), die effektive Steuerung zum Zulassen einer AR-Änderung (A) und die effektive Programmunterbrechungsfilterungs-Steuerung (PIFC) auf ihre jeweiligen Werte vor der Anweisung TRANSACTION BEGIN zurückgesetzt werden, die das Beenden der Ebene eingeleitet hat. Darüber hinaus wird eine Serialisierungsfunktion beim Ausführen der Operation durchgeführt.It is noted that the effective control for permitting a floating point operation (F), the effective control for permitting an AR change (A) and the effective program interruption filtering control (PIFC) are reset to their respective values before the instruction TRANSACTION BEGIN initiated the termination of the level. In addition, a serialization function is performed when the operation is performed.

Die PER-Anweisungsabruf- und Transaktionsende-Ereignisse, die beim Ausführen der äußersten Anweisung TRANSACTION END erkannt werden, führen nicht dazu, dass die Transaktion abgebrochen wird.The PER instruction fetch and transaction end events that are encountered when the extreme statement TRANSACTION END is executed do not cause the transaction to be aborted.

Bei einem Beispiel enthält die Anweisung TEND auch ein Basisfeld B2 und ein Verschiebungsfeld D2, die kombiniert (z. B. addiert) werden, um eine Adresse des zweiten Operanden zu bilden. Bei diesem Beispiel kann ein Token-Abgleich durchgeführt werden. Wenn beispielsweise B2 ungleich null ist, werden ausgewählte Bits der Adresse des zweiten Operanden mit einem Transaktions-Token abgeglichen, der durch die entsprechende TBEGIN gebildet wurde. Wenn eine Fehlpaarung vorliegt, gibt es eine Ausnahme (z. B. PIC 0006).In one example, the TEND instruction also includes a base field B 2 and a displacement field D 2 that are combined (eg, added) to form an address of the second operand. In this example, token matching can be performed. For example, if B 2 is nonzero, then selected bits of the second operand address are matched with a transaction token formed by the corresponding TBEGIN. If there is a mismatch, there is an exception (eg, PIC 0006).

Zusätzlich zu den obigen Ausführungen kann eine Transaktion durch eine Anweisung TRANSACTION ABORT implizit oder explizit abgebrochen werden. Das Abbrechen einer Transaktion durch TABORT oder auf andere Weise beinhaltet das Durchführen einer Reihe von Schritten. Ein allgemeines Beispiel für die Schritte zum Abbrechen der Verarbeitung wird unter Bezugnahme auf 14 beschrieben. Wenn auf der Grundlage dessen, ob der Abbruch durch TABORT oder auf andere Weise eingeleitet wird, ein Verarbeitungsunterschied vorliegt, wird dies in der nachstehenden Beschreibung angezeigt. Bei einem Beispiel führt ein Prozessor (z. B. CPU) die Logik von 14 aus.In addition to the above, a transaction can be implicitly or explicitly aborted by a TRANSACTION ABORT statement. Canceling a transaction by TABORT or otherwise involves performing a series of steps. A general example of the steps for canceling the processing will be described with reference to FIG 14 described. If there is a processing difference based on whether the abort is initiated by TABORT or otherwise, this will be indicated in the description below. In one example, a processor (eg, CPU) executes the logic of 14 out.

Unter Bezugnahme auf 14 werden zunächst auf der Grundlage des Ausführens der Anweisung TABORT oder eines impliziten Abbruchs nichttransaktionsbezogene Speicherzugriffe festgeschrieben, SCHRITT 1400, die durchgeführt wurden, während sich die CPU im Modus der transaktionsbezogenen Ausführung befand. Andere Speichervorgänge (z. B. transaktionsbezogene Speichervorgänge), die durchgeführt wurden, während sich die CPU im Modus der transaktionsorientierten Ausführung befand, werden verworfen, SCHRITT 1402.With reference to 14 First, non-transactional memory accesses are committed based on the execution of the TABORT statement or an implicit abort, STEP 1400 that were performed while the CPU was in transactional execution mode. Other stores (eg, transaction-related stores) that were made while the CPU was in transactional execution mode are discarded, STEP 1402 ,

Die CPU verlässt den Modus der transaktionsorientieren Ausführung, SCHRITT 1404, und nachfolgende Speichervorgänge erfolgen nichttransaktionsorientiert. Das aktuelle PSW wird durch die Inhalte des Transaktionsabbruch-PSW ersetzt, außer wenn der Bedingungscode wie oben beschrieben gesetzt wird (anders als bei der folgenden Situation, bei der CC = 1, wenn die TDBA gültig, aber der Block nicht zugänglich ist), SCHRITT 1406. Als Teil der Abbruchverarbeitung oder danach verzweigt die Verarbeitung zum durch das Transaktionsabbruch-PSW spezifizierten Speicherort, um eine Aktion durchzuführen. Bei einem Beispiel, bei dem die Transaktion eine eingeschränkte Transaktion ist, ist der Speicherort die Anweisung TBEGINC und die Aktion das erneute Ausführen dieser Anweisung; und bei einem weiteren Beispiel, bei dem die Transaktion eine nichteingeschränkte Transaktion ist, ist der Speicherort die Anweisung nach TBEGIN, und die Aktion ist das Ausführen dieser Anweisung, die beispielsweise eine Verzweigung zu einem Abbruch-Handler sein kann.The CPU exits Transactional Execution mode, STEP 1404 , and subsequent stores are non-transaction oriented. The current PSW is replaced by the contents of the transaction abort PSW, except when the condition code is set as described above (unlike the following situation where CC = 1 if the TDBA is valid but the block is not accessible) STEP 1406 , As part of or after the abort processing, the processing branches to the storage location specified by the transaction abort PSW to perform an action. In an example where the transaction is a restricted transaction, the location is the TBEGINC statement and the action is to re-execute that statement; and in another example, where the transaction is an unrestricted transaction, the location is the TBEGIN instruction, and the action is to execute that instruction, which may be, for example, a branch to an abort handler.

Danach wird eine Ermittlung dahingehend durchgeführt, ob die Transaktionsdiagnoseblock-Adresse gültig ist, ABFRAGE 1408. Wenn die Transaktionsdiagnoseblock-Adresse gültig ist, werden Diagnoseinformationen, die den Grund für den Abbruch kennzeichnen, und die Inhalte der allgemeinen Register in den durch TBEGIN spezifizierten Transaktionsdiagnoseblock gespeichert, SCHRITT 1410. Die gespeicherten TDB-Felder und die Bedingungen, unter denen sie gespeichert werden, sind oben unter Bezugnahme auf den Transaktionsdiagnoseblock beschrieben.Thereafter, a determination is made as to whether the transaction diagnostic block address is valid, QUERY 1408 , If the transaction diagnostic block address is valid, diagnostic information identifying the reason for the abort and the contents of the generic registers are stored in the TBEGIN specified transaction diagnostic block, STEP 1410 , The stored TDB fields and the conditions under which they are stored are described above with reference to the transaction diagnostic block.

Wenn die Transaktionsdiagnoseblock-Adresse gültig ist, aber der Block nach Ausführen der äußersten Anweisung TBEGIN unzugänglich geworden ist, wird nicht auf den Block zugegriffen, und Bedingungscode 1 kommt zur Anwendung.If the transaction diagnostic block address is valid but the block has become inaccessible after executing the outermost TBEGIN instruction, the block is not accessed and condition code 1 is used.

Bei Transaktionen, die aufgrund von Programmausnahmebedingungen abgebrochen werden, die zu einer Unterbrechung führen, wird der Programmunterbrechungs-TDB gespeichert.For transactions that are aborted due to program exceptions that cause an interrupt, the program interrupt TDB is stored.

Unter erneuter Bezugnahme auf ABFRAGE 1408 wird bei ungültiger Transaktionsdiagnoseblock-Adresse kein durch TBEGIN spezifizierter TDB gespeichert, und Bedingungscode 2 oder 3 kommt zur Anwendung, je nach Grund für den Abbruch. Referring again to QUERY 1408 if TBEGIN -specified TDB is not stored with invalid transaction diagnostic block address, and condition code 2 or 3 is used depending on the reason for termination.

Zusätzlich zu den obigen Ausführungen wird die Transaktionsverschachtelungstiefe gleich null gesetzt, SCHRITT 1412. Darüber hinaus werden sämtliche Paare allgemeiner Register, die von der äußersten Anweisung TBEGIN als zu speichern ausgewiesen sind, zurückgesetzt, SCHRITT 1414. Paare allgemeiner Register, die von der äußersten Anweisung TBEGIN nicht als zu speichern ausgewiesen wurden, werden bei einem Transaktionsabbruch nicht zurückgesetzt.In addition to the above, the transaction nesting depth is set equal to zero, STEP 1412 , In addition, all pairs of general registers identified by the outermost instruction TBEGIN are reset, STEP 1414 , Pairs of general registers that have not been designated as to be stored by the outermost TBEGIN statement will not be reset on a transaction abort.

Darüber hinaus wird eine Serialisierungsfunktion durchgeführt, SCHRITT 1416. Eine Serialisierungsfunktion oder -operation beinhaltet das Ausführen aller konzeptionell davor liegenden Speicherzugriffe (und bei der z/Architecture beispielsweise entsprechende Referenzbit- und Änderungsbiteinstellungen) durch die CPU, wie von anderen CPUs und dem E/A-Teilsystem wahrgenommen, bevor die konzeptionell nachfolgenden Speicherzugriffe (und entsprechenden Referenzbit- und Änderungsbiteinstellungen) erfolgen. Die Serialisierung betrifft die Abfolge aller CPU-Zugriffe auf einen Speicher und auf die Speicherschlüssel, mit Ausnahme jener, die mit dem Abrufen von ART-Tabelleneinträgen und DAT-Tabelleneinträgen in Zusammenhang stehen.In addition, a serialization function is performed, STEP 1416 , A serialization function or operation involves performing all conceptually preceding memory accesses (and, for example, corresponding reference bit and change bit settings in the z / Architecture) as perceived by other CPUs and the I / O subsystem before the conceptually subsequent memory accesses ( and corresponding reference bit and change bit settings). Serialization refers to the sequence of all CPU accesses to memory and to the memory keys, except those associated with retrieving ART table entries and DAT table entries.

Wie von einer CPU im Modus der transaktionsorientierten Ausführung wahrgenommen, arbeitet eine Serialisierung normal (wie oben beschrieben). Wie von anderen CPUs und durch das E/A-Teilsystem wahrgenommen, erfolgt eine Serialisierungsoperation, die durchgeführt wird, während sich eine CPU im Modus der transaktionsorientierten Ausführung befindet, wenn die CPU den Modus der transaktionsorientierten Ausführung verlässt, entweder infolge einer Anweisung TRANSACTION END, die die Transaktionsverschachtelungstiefe auf null senkt (normale Beendigung), oder infolge des Abbruchs der Transaktion.As perceived by a CPU in transactional execution mode, serialization operates normally (as described above). As perceived by other CPUs and by the I / O subsystem, a serialization operation performed while a CPU is in transactional execution mode occurs when the CPU exits transactional execution mode, either as a result of a TRANSACTION END instruction, which lowers the transaction nesting depth to zero (normal termination), or as a result of aborting the transaction.

Bei einer Abbruchverarbeitung, die nicht durch TABORT eingeleitet wird, werden Unterbrechungscodes oder mit der Unterbrechung in Zusammenhang stehende Parameter entsprechend dem Unterbrechungstyp an den zugewiesenen Speicherorten gespeichert, SCHRITT 1420, wenn die Transaktion aufgrund einer Ausnahmebedingung abgebrochen wird, die zu einer Unterbrechung führt, ABFRAGE 1418. Darüber hinaus wird das aktuelle PSW, wie oben gesetzt, in das alte Unterbrechungs-PSW gespeichert, SCHRITT 1422. Danach oder wenn die Transaktion nicht aufgrund einer Ausnahmebedingung abgebrochen wurde, die zu einer Unterbrechung führte, endet die Anweisung mit Bedingungscode null.In abort processing not initiated by TABORT, interrupt codes or interrupt-related parameters corresponding to the interrupt type are stored in the assigned memory locations, STEP 1420 if the transaction is aborted due to an exception that causes an interruption, QUERY 1418 , In addition, as stated above, the current PSW is stored in the old interrupt PSW, STEP 1422 , Thereafter, or if the transaction was not aborted due to an exception that resulted in an interrupt, the statement ends with condition code zero.

Zusätzlich zu den obigen Ausführungen erfolgt bei einer Ausführung für ein interpretatives Ausführen der z/Architecture kein Abfangen, wenn sich die CPU im Modus der transaktionsorientierten Ausführung befindet und eine Gastbedingung erfolgt, die normalerweise zu Abfangcodes 4, 12, 44, 56, 64, 68 oder 72 führen würde. Stattdessen bleibt die CPU im Modus der interpretativen Ausführung, und die Abbruchbedingungen werden dem Gast wie folgt angezeigt.

  • * Bei einer nichteingeschränkten Transaktion wird die Transaktion aufgrund einer eingeschränkten Anweisung abgebrochen (Abbruchcode 11). Wenn ein gleichzeitiges PER-Ereignis erkannt wurde und die CPU für PER aktiviert ist, erfolgt eine Programmunterbrechung mit Unterbrechungscode 0280 hex.
  • * Bei einer eingeschränkten Transaktion wird eine Transaktionseinschränkungsausnahme erkannt. Wenn ein gleichzeitiges PER-Ereignis erkannt wurde und die CPU für PER aktiviert ist, erfolgt eine Programmunterbrechung mit Unterbrechungscode 0298 hex.
In addition to the above, if the CPU is in transactional execution mode and the guest condition is normal to intercept codes 4, 12, 44, 56, 64, 68, interrupts are not intercepted in an interpretive execution of the z / Architecture or 72 would lead. Instead, the CPU remains in interpretive mode, and the cancellation conditions are displayed to the guest as follows.
  • * For a non-restricted transaction, the transaction is aborted due to a restricted instruction (abort code 11). If a concurrent PER event has been detected and the CPU is enabled for PER, a program interrupt occurs with interrupt code 0280 hex.
  • * A restricted transaction will detect a transaction restriction exception. If a concurrent PER event has been detected and the CPU is enabled for PER, a program interrupt occurs with interrupt code 0298 hex.

Wenn eine Transaktion aufgrund einer Programmausnahmebedingung abgebrochen wird, kann eine Programmunterbrechungsfilterung das Darbieten einer Unterbrechung verhindern. Bei Programmunterbrechungen, die zu einem Abfangen führen, verhindert das Filtern ebenfalls das Abfangen.If a transaction is aborted due to a program exception, program interruption filtering can prevent the presentation of an interrupt. For program interrupts that cause interception, filtering also prevents interception.

Bei einer Ausführungsform kann die Transaktion nach einem Transaktionsabbruch erneut ausgeführt werden, um zu versuchen, die Transaktion erfolgreich auszuführen. Um ein erfolgreiches Ausführen zu fördern, können eine oder mehrere ausgewählte Aktionen durchgeführt werden, um die Verarbeitung innerhalb der Datenverarbeitungsumgebung einzuschränken, bevor die Transaktion erneut ausgeführt wird, um das erfolgreiche Ausführen der Transaktion zu erleichtern. Die ausgewählten Aktionen beruhen beispielsweise auf der Grundlage der Häufigkeit, mit der die Transaktion abgebrochen wird. Darüber hinaus können weitere Aktionen unternommen werden, um die Verarbeitung weiter einzuschränken, wenn die Häufigkeit der Abbrüche der Aktion steigt. Ferner können schwerwiegende oder einschränkende Aktionen unternommen werden, wenn die Häufigkeit von Abbrüchen einer Transaktion steigt.In one embodiment, after a transaction abort, the transaction may be re-executed to try to successfully complete the transaction. To facilitate successful execution, one or more selected actions may be performed to limit processing within the computing environment before the transaction is re-executed to facilitate successful completion of the transaction. For example, the actions selected are based on the number of times that the transaction is aborted. In addition, further action may be taken to further limit processing as the frequency of the cancellation of the action increases. Furthermore, serious or restrictive actions can be taken as the frequency of aborts of a transaction increases.

Für gewöhnlich bieten Architekturen mit transaktionsorientiertem Speicher keine Gewährleistung, dass eine Transaktion ausgeführt wird. Aus diesem Grund liegt es an der Software, einen Ausweichpfad für wiederholte Abbrüche einer Transaktion verfügbar zu halten. Bei einigen Transaktionen, bei einer Ausführungsform beispielsweise eingeschränkte Transaktionen, gewährleistet jedoch die Hardware (z. B. Hardware auf Silizium-Basis und/oder Firmware), dass die Transaktion schließlich erfolgreich ist, d. h., dass sie nur eine begrenzte Anzahl an Malen abgebrochen wird. Typically, transactional storage architectures do not guarantee that a transaction will be executed. For this reason, it is up to the software to maintain a fallback path for repeated killings of a transaction. However, for some transactions, such as restricted transactions in one embodiment, the hardware (eg, silicon-based hardware and / or firmware) will ensure that the transaction is ultimately successful, ie, that it will be aborted only a limited number of times ,

Eine Ausführungsform eines Überblicks über die Logik, mit der ein erfolgreiches Ausführen einer Transaktion zu erleichtern ist, wird unter Bezugnahme auf 15 beschrieben. Bei einem Beispiel führt ein Prozessor, z. B. der den Abbruch erkennende Prozessor, diese Logik aus. Bei dieser Ausführungsform ist die Transaktion eine eingeschränkte Transaktion; bei anderen Ausführungsformen jedoch kann sie ein anderer Transaktionstyp sein, darunter nichteingeschränkte Transaktionen.An embodiment of an overview of the logic with which to facilitate a successful transaction is discussed with reference to FIG 15 described. In one example, a processor, e.g. For example, the processor recognizing the abort, this logic. In this embodiment, the transaction is a restricted transaction; however, in other embodiments, it may be another type of transaction, including unrestricted transactions.

Unter Bezugnahme auf 15 führt zunächst der Prozessor eine eingeschränkte Transaktion aus, die von der Anweisung TBEGINC gestartet wurde, SCHRITT 1500. Wenn eine Abbruchbedingung erkannt wird, ABFRAGE 1502, die nicht zu einer Unterbrechung führt, unternimmt der Prozessor gegebenenfalls (z. B. in Abhängigkeit der Anzahl von Abbrüchen und/oder des Abbruchgrundes) eine oder mehrere Aktionen, wie hier beschrieben, um ein Ausführen sicherzustellen, SCHRITT 1504. Darüber hinaus führt der Prozessor die Anweisung TBEGINC erneut aus, SCHRITT 1506, und die Verarbeitung fährt mit SCHRITT 1500 fort.With reference to 15 First, the processor executes a constrained transaction started by the TBEGINC instruction, STEP 1500 , If an abort condition is detected, QUERY 1502 If necessary, depending on the number of aborts and / or abort reason, the processor may take one or more actions as described herein to ensure execution, STEP 1504 , In addition, the processor executes the instruction TBEGINC again, STEP 1506 , and processing continues with STEP 1500 continued.

Unter erneuter Bezugnahme auf ABFRAGE 1502 fährt die Verarbeitung fort, wenn keine Abbruchbedingung oder eine Abbruchbedingung vorliegt, die zu einer Unterbrechung führt, bis ein Abschluss der Transaktion (z. B. TEND) oder eine Unterbrechung erfolgt, ABFRAGE 1508. Bei einer Unterbrechung lädt die CPU das dem Unterbrechungstyp zugehörige PSW. Die Transaktion endet auf der Grundlage des Ausführens oder der Unterbrechung; andernfalls fährt sie mit der Verarbeitung fort.Referring again to QUERY 1502 Processing continues if there is no abort condition or abort condition that results in an interruption until completion of the transaction (eg, TEND) or an interruption, QUERY 1508 , In the event of an interruption, the CPU loads the PSW associated with the interruption type. The transaction ends on the basis of the execution or the interruption; otherwise, it will continue processing.

Weitere Details zum Auswählen und Durchführen von Aktionen, um das Ausführen von Transaktionen zu erleichtern, werden hier beschrieben. Bei einer Ausführungsform werden ein oder mehrere Techniken bereitgestellt, um das Ausführen von Transaktionen zu erleichtern, beispielsweise: (a) Verwalten eines Abbruchzählers und Darbieten einer Programmunterbrechung auf der Grundlage dessen, dass ein Schwellenwert für Abbrüche erreicht wird; (b) Ausweiten, um Kollisionen einer Transaktion mit Anweisungen zu verhindern, die nichtsequenziell am gleichen Prozessor ausgeführt werden; und/oder (c) eine Sperre von zu Konflikten führenden Prozessoren. Jede dieser Techniken kann separat oder in einer Kombination verwendet werden, und jede wird nachstehend ausführlicher beschrieben.Further details on selecting and performing actions to facilitate the execution of transactions are described herein. In one embodiment, one or more techniques are provided to facilitate the execution of transactions, such as: (a) managing an abort counter and presenting a program interrupt based on an abort threshold being reached; (b) expanding to prevent collisions of a transaction with instructions that are not sequentially executed on the same processor; and / or (c) a lock on conflicting processors. Each of these techniques may be used separately or in combination, and each will be described in more detail below.

Bei einer Ausführungsform wird ein Zähler der Anzahl von Abbrüchen für eine Transaktion verwendet, um das erfolgreiche Ausführen einer Transaktion weiter zu erleichtern. Dieser Zähler wird beispielsweise von einem Abbruch-Handler gepflegt, der beispielsweise in Firmware oder in Hardware und/oder Software implementiert ist. Wenn eine Transaktion abgebrochen wird, wird der dieser Transaktion zugehörige Zähler erhöht. Wenn ein Schwellenwert für Abbrüche erreicht wird, wird eine Unterbrechung dargeboten. Bevor es dazu kommt, können jedoch andere Aktionen unternommen werden, um die Chancen für ein erfolgreiches Ausführen der Transaktion zu erhöhen. Die unternommene Aktion schränkt die Verarbeitung innerhalb der Datenverarbeitungsumgebung nach und nach ein (z. B. innerhalb des gleichen Prozessors, auf dem die Transaktion ausgeführt wird, oder innerhalb anderer Prozessoren). Bei einem Beispiel schränken eine oder mehrere der Aktionen die Handlungsmöglichkeiten eines Prozessors (z. B. wie der Prozessor verarbeiten kann) während des Verarbeitens der Transaktion ein. Mit steigender Anzahl von Abbrüchen kann sich auch der Schweregrad oder die Aggressivität der ausgewählten Aktion erhöhen.In one embodiment, a counter of the number of aborts is used for a transaction to further facilitate the successful execution of a transaction. This counter is maintained, for example, by an abort handler, which is implemented, for example, in firmware or in hardware and / or software. When a transaction is aborted, the counter associated with that transaction is incremented. When an abort threshold is reached, an interrupt is presented. However, before this happens, other actions can be taken to increase the chances of successfully executing the transaction. The action taken gradually restricts processing within the computing environment (eg, within the same processor on which the transaction is executed, or within other processors). In one example, one or more of the actions restrict the capabilities of a processor (eg, how the processor can process) while processing the transaction. As the number of crashes increases, the severity or aggressiveness of the selected action may also increase.

Eine Ausführungsform zu weiteren Details über den Abbruchzähler und das Darbieten einer Programmunterbrechung bei Erreichen eines Schwellenwerts (d. h. eines vorab festgelegten Werts) sind unter Bezugnahme auf 16A beschrieben. Die Logik von 16A wird von einem Prozessor durchgeführt, z. B. vom Prozessor, der die Transaktion einleitet.An embodiment of further details about the abort counter and presenting a program interrupt upon reaching a threshold (ie, a predetermined value) are described with reference to FIG 16A described. The logic of 16A is performed by a processor, e.g. From the processor initiating the transaction.

Unter Bezugnahme auf 16A wird zunächst ein Abbruchzähler (hier auch als Zähler bezeichnet) für die bestimmte Transaktion auf null gesetzt, SCHRITT 1600, und eine Transaktion wird eingeleitet, SCHRITT 1602. Bei einem Beispiel ist die Transaktion eine eingeschränkte Transaktion und aus diesem Grund wird die Transaktion durch eine Anweisung TBEGINC eingeleitet.With reference to 16A First, an abort counter (also referred to herein as a counter) is set to zero for the particular transaction, STEP 1600 , and a transaction is initiated, STEP 1602 , In one example, the transaction is a restricted transaction and therefore the transaction is initiated by a TBEGINC instruction.

Es wird eine Ermittlung dahingehend durchgeführt, ob die Transaktion erfolgreich beendet wurde, ABFRAGE 1604. Wenn sie erfolgreich beendet wurde (z. B. durch TEND), wird der Zähler zurückgesetzt (z. B. auf 0 gesetzt), SCHRITT 1606, und die Verarbeitung ist abgeschlossen. Wenn die Transaktion jedoch abgebrochen wurde, wird eine Abfrage dahingehend durchgeführt, ob der Abbruch bedingt durch eine Unterbrechung erfolgt ist, die das Programm an einen unterschiedlichen Programmspeicherort überführt (z. B. eine Programmunterbrechung, E/A-Unterbrechung), ABFRAGE 1608. Ist dies der Fall, wird die Anweisungsadresse auf den neuen Speicherort gesetzt (d. h. ein anderer als der TBEGINC-Speicherort), SCHRITT 1610, wird der Zähler zurückgesetzt, SCHRITT 1606, und die Verarbeitung ist abgeschlossen.A determination is made as to whether the transaction completed successfully, QUERY 1604 , If completed successfully (eg by TEND), the counter is reset (eg. set to 0), STEP 1606 , and the processing is complete. However, if the transaction has been aborted, a query is made as to whether the abort was due to an interrupt that transfers the program to a different program location (eg, a program interrupt, I / O interruption), QUERY 1608 , If so, the instruction address is set to the new location (ie, other than the TBEGINC location), STEP 1610 , the counter is reset, STEP 1606 , and the processing is complete.

Wenn andererseits der Abbruch nicht durch eine Unterbrechung bedingt ist, ABFRAGE 1608, sondern durch eine Abbruchbedingung, die sofort zur Anweisung TBEGINC zurückkehrt, um die Transaktion erneut auszuführen, wird eine weitere Ermittlung dahingehend durchgeführt, ob sich der Abbruchzähler auf einem Schwellenwert (hier auch als maximaler oder vorab festgelegter Wert bezeichnet) befindet, ABFRAGE 1612. Wenn sich der Abbruchzähler am Schwellenwert befindet, wird eine Unterbrechung dargeboten, SCHRITT 1614, der Zähler zurückgesetzt, SCHRITT 1606, und die Verarbeitung ist abgeschlossen.On the other hand, if the abort is not due to an interruption, QUERY 1608 but by an abort condition that returns immediately to the TBEGINC instruction to re-execute the transaction, a further determination is made as to whether the abort counter is at a threshold (also referred to herein as a maximum or predetermined value), QUERY 1612 , If the abort counter is at the threshold, an interrupt is presented, STEP 1614 , the counter reset, STEP 1606 , and the processing is complete.

Wenn sich der Abbruchzähler jedoch nicht am Schwellenwert befindet, wird der Zähler erhöht (z. B. Zähler = Zähler + 1), SCHRITT 1616, und eine Ermittlung wird dahingehend durchgeführt, ob eine Aktion unternommen werden muss, um die Chancen für ein erfolgreiches Ausführen zu erhöhen, ABFRAGE 1618. Das heißt, vor Wiederholen der Transaktion können je nach Abbruchzählwert bestimmte Aktionen unternommen werden, darunter das Setzen bestimmter Modi im Prozessor, um die Chancen für eine erfolgreiche Transaktionsausführung bei der Wiederholung zu verbessern. Dies wird im Folgenden ausführlicher beschrieben.However, if the abort counter is not at the threshold, the counter is incremented (eg counter = counter + 1), STEP 1616 and a determination is made as to whether an action needs to be taken to increase the chances of successful execution, QUERY 1618 , That is, before repeating the transaction, certain actions may be taken depending on the abort count, including setting certain modes in the processor to improve the chances of a successful transaction execution on replay. This will be described in more detail below.

Wenn eine Aktion zu unternehmen ist, wird die Aktion durchgeführt, SCHRITT 1620. Danach oder wenn keine Aktion durchzuführen ist, wird die Programmanweisungsadresse auf die Anweisung TRANSACTION BEGIN, SCHRITT 1622, gesetzt. Danach wird die Transaktion wiederholt, SCHRITT 1624.When an action is to be taken, the action is taken, STEP 1620 , Thereafter, or if no action is to be taken, the program instruction address is changed to the statement TRANSACTION BEGIN, STEP 1622 , set. Thereafter, the transaction is repeated, STEP 1624 ,

Unter Bezugnahme auf 16B werden weitere Details zur Logik beschrieben, die dem Ermitteln zugehörig ist, ob eine Aktion unternommen werden sollte, um die Chancen für ein erfolgreiches Ausführen der erneut ausgeführten Transaktion zu erhöhen. Diese Logik wird von einem Prozessor durchgeführt, z. B. der Prozessor, der die Logik von 16A durchführt.With reference to 16B Further details on the logic associated with determining if an action should be taken to increase the chances of successfully executing the re-executed transaction are described. This logic is performed by a processor, e.g. B. the processor, the logic of 16A performs.

Zunächst wird über den Abbruchzähler eine Prüfung bezüglich der Anzahl der Male durchgeführt, die die Transaktion abgebrochen wurde, SCHRITT 1640. Eine Ermittlung wird dahingehend durchgeführt, ob aufgrund des Abbruchzählwerts eine Maßnahme zu ergreifen ist, um das Ausführen der Transaktion zu erleichtern, ABFRAGE 1641. Wenn beispielsweise der Abbruchzählwert kleiner als vier ist, wird z. B. keine Aktion unternommen und die Transaktion wieder einfach wiederholt und der Zähler erhöht. Wenn bei diesem Beispiel der Zählwert jedoch vier oder höher ist, ist aufgrund des Abbruchzählwerts eine Maßnahme zu ergreifen. Somit fährt die Verarbeitung mit dem Ermitteln fort, ob aufgrund des Abbruchzählwertes eine Maßnahme innerhalb des Prozessors zu ergreifen ist, um die Chancen für ein erfolgreiches Ausführen der abgebrochenen Aktion zu erhöhen, ABFRAGE 1642. Bei einer Ausführungsform beispielsweise wird dem Prozessor beim Ausführen einer Transaktion erlaubt, eine normale Spekulation oder eine spekulative Verarbeitung durchzuführen (z. B. eine nichtsequenzielle Ausführung, Verzweigungsvorhersage, Vorablesen usw.) Die spekulative Ausführung kann zu Transaktionsabbrüchen führen, z. B. weil ein spekulativer Zugriff einen Konflikt mit der Transaktion bewirken kann. Solche Konflikte können beispielsweise auftreten wegen: a) Zugreifen auf zu viele unterschiedliche Cachezeilen auf spekulativen Pfaden des Programms; b) spekulatives Abrufen von Anweisungen aus Cachezeilen, die Teil des Footprint für transaktionsorientiertes Speichern sind; und/oder c) Zugreifen auf Adressen, die Synonyme virtueller Adressen zum tatsächlichen Transaktions-Footprint sind.First, the break counter checks for the number of times the transaction was aborted, STEP 1640 , A determination is made as to whether action is to be taken due to the abort count to facilitate the execution of the transaction, QUERY 1641 , For example, if the abort count is less than four, z. For example, no action is taken and the transaction simply repeats and the counter increments. However, in this example, when the count value is four or higher, a measure is to be taken based on the abort count value. Thus, processing continues with determining whether action is to be taken within the processor due to the abort count to increase the chances of successful completion of the aborted action, QUERY 1642 , For example, in one embodiment, when a transaction is executed, the processor is allowed to perform normal speculation or speculative processing (eg, non-sequential execution, branch prediction, prefetch, etc.). Speculative execution may lead to transaction aborts, e.g. Because speculative access may conflict with the transaction. Such conflicts may occur, for example, because of: a) accessing too many different cache lines on speculative paths of the program; b) speculatively retrieving instructions from cache lines that are part of the transactional storage footprint; and / or c) accessing addresses that are synonyms of virtual addresses to the actual transaction footprint.

Um ein wiederholten „Fahren” über den gleichen spekulativen Pfad zu verhindern, wird eine Vielzahl von Aktionen (auch als Prozessormodi oder Modi bezeichnet) bei steigendem Abbruchzählwert erfolgreich angewandt. Die Aktionen werden erfolgreich angewandt, da jede Aktion eine Verlangsamung der Verarbeitung bewirkt, so dass ein frühzeitiges Aktivieren zu einer Verringerung der Leistung führt. Die bei anderen beispielhaften Abbruchzählwerten angewandten Modi werden nachstehend gezeigt. Es wird angemerkt, dass eine Überlappung bezüglich der Zählwerte vorliegt; somit können eine oder mehrere der Aktionen durchgeführt werden. Bei einer Ausführungsform werden alle Aktionen für einen bestimmten Zählwert durchgeführt, beispielsweise gleichzeitig. Bei einer weiteren Ausführungsform wird im Fall einer Überlappung eine Aktion einer anderen vorgezogen, beispielsweise durch Auswählen aus einer Liste entsprechend einer Reihenfolge, zufälliges Auswählen auf der Grundlage einer Auswahlfunktion oder andere Techniken.To prevent repeated "driving" through the same speculative path, a variety of actions (also referred to as processor modes or modes) are successfully applied as the abort count increases. The actions are applied successfully as each action slows down the processing so that early activation leads to a decrease in performance. The modes used in other exemplary termination counts are shown below. It is noted that there is an overlap in the counts; thus, one or more of the actions can be performed. In one embodiment, all actions for a given count are performed, for example, simultaneously. In another embodiment, in the case of an overlap, one action is preferred over another, for example by selecting from a list according to an order, random selection based on a selection function, or other techniques.

Bei einer Ausführungsform ersetzen die ausgewählten Aktionen die vorherigen Aktionen, wenn zu einer nächsten Ebene von Abbruchzählwerten übergegangen wird. Beispielsweise wird etwas zuvor Deaktiviertes aktiviert, und die neuen Aktionen werden durchgeführt. Bei einer weiteren Ausführungsform jedoch werden die neuen Aktionen zusätzlich zu den vorherigen Aktionen durchgeführt. Wie hier verwendet, ersetzt somit eine andere Aktion eine vorherige Aktion und erfolgt zusätzlich zu einer vorherigen Aktion oder eine Kombination davon. Darüber hinaus kann sie gegenüber einer vorherigen Aktion gleich oder unterschiedlich sein.In one embodiment, the selected actions replace the previous actions when proceeding to a next level of abort counts. For example, something is previously disabled activated, and the new actions are performed. However, in another embodiment, the new actions are performed in addition to the previous actions. Thus, as used herein, another action replaces a previous action and is in addition to a previous action or a combination thereof. In addition, it may be the same or different from a previous action.

Beispiele für Aktionen, die bei bestimmten Zählwerten durchgeführt werden können, sind im Folgenden angeführt: ZÄHLWERTE AKTION 8 bis 20 Deaktivieren der Verzweigungsvorhersage (z. B. über einen Switch). 8 bis 20 Deaktivieren des spekulativen Abrufens von Anweisungen, das über die Cachezeilengrenze der aktuellen Anweisung hinausgeht. Dies wird erzielt, indem beim Abrufen von Anweisungen nur das Kreuzen einer Cachezeilengrenze zugelassen wird, wenn das Back-End der Pipeline leer ist. 8 bis 20 Deaktivieren der superskalaren Zuteilung (z. B. über einen Switch). 8 bis 20 Deaktivieren der nichtsequenziellen Ausführung (z. B. über einen Switch). 8 bis 20 Ausschließliches Abrufen aller Cachespeicherfehltreffer, selbst bei Nur-Abruf-Anforderungen. 21 bis 23 Ausführen nur jeweils einer einzelnen Anweisung in der gesamten Pipeline (langsamer Modus). 24 bis 28 Deaktivieren der superskalaren Zuteilung (z. B. über einen Switch). 32 bis 63 Ausführen nur jeweils einer einzelnen Anweisung in der gesamten Pipeline und ausschließliches Abrufen aller Cachespeicherfehltreffer. Examples of actions that can be performed on specific counts are listed below: COUNTS ACTION 8 to 20 Disable branch prediction (for example, via a switch). 8 to 20 Disable speculative fetching of instructions beyond the cache line boundary of the current instruction. This is achieved by only allowing a cache line boundary to be crossed when retrieving statements when the pipeline back-end is empty. 8 to 20 Disabling superscalar allocation (eg via a switch). 8 to 20 Disabling non-sequential execution (for example, via a switch). 8 to 20 Exclusive retrieval of all cache misses, even with fetch-only requests. 21 to 23 Perform only one single statement at a time throughout the pipeline (slow mode). 24 to 28 Disabling superscalar allocation (eg via a switch). 32 to 63 Execute only a single statement at a time throughout the pipeline and retrieve all cache misses only.

Jede Ausweitung wird unter den gleichen Bedingungen, die auch den Zähler auf 0 zurücksetzen, automatisch in den „normalen Modus” (Modus mit voller Geschwindigkeit) zurückgesetzt.Any extension will automatically revert to "normal mode" (full speed mode) under the same conditions that also reset the counter to zero.

Wenn aufgrund des Abbruchzählwerts eine Aktion innerhalb des Prozessors auszuführen ist, wird die Aktion auf der Grundlage des Abbruchzählwerts und anderer gewünschter Auswahlkriterien ausgewählt, SCHRITT 1644. Diese ausgewählte Aktion wird sodann durchgeführt. Bei einer weiteren Ausführungsform können eine oder mehrere Aktionen ausgewählt und durchgeführt werden. Bei einer Ausführungsform wird die Aktion durchgeführt, indem Firmware ein Hardware-Bit setzt, das den bestimmten Verarbeitungsmodus ermöglicht (z. B. Deaktivieren der Verzweigungsvorhersage usw.). Die Hardware setzt dieses Bit unter den gleichen Bedingungen, die den Zähler zurücksetzen, automatisch zurück.If, due to the abort count, an action is to be performed within the processor, the action is selected based on the abort count and other desired selection criteria, STEP 1644 , This selected action is then performed. In another embodiment, one or more actions may be selected and performed. In one embodiment, the action is performed by firmware setting a hardware bit that enables the particular processing mode (eg, disabling branch prediction, etc.). The hardware automatically resets this bit under the same conditions that reset the counter.

Unter erneuter Bezugnahme auf ABFRAGE 1642 wird die Aktion jedoch gegen anderen in Konflikt stehenden Prozessoren durchgeführt, wenn aufgrund des Abbruchzählwerts eine Aktion innerhalb des Prozessors nicht ausgeführt werden sollte, SCHRITT 1646. Das heißt, dass Transaktionen in einer Multiprozessorumgebung aufgrund von Konflikten mit Zugriffen abgebrochen werden können, die von anderen Prozessoren durchgeführt werden. Diese anderen Zugriffe können transaktionsorientiert oder nichttransaktionsorientiert sein. Bei einem Beispiel wird eine Zufallsverzögerung (d. h., das erneute Ausführen der Transaktion wird um eine bestimmte Zeit oder eine bestimmte Anzahl von Maschinenzyklen usw. verzögert) eingefügt, bevor die Transaktion erneut versucht wird; mit dieser Technik und dem sukzessiven Erhöhen des Bereichs der Zufallsverzögerung ist es wahrscheinlich, dass eine Transaktion letztendlich ausgeführt wird, wenn sie nur mit anderen Transaktionen in Konflikt steht. Diese Technik ist bei Konflikten mit anderen nichtabbrechenden oder nichttransaktionsorientierten Zugriffen allerdings nicht nützlich. Gemäß einer weiteren Ausführungsform wird die Zufallsverzögerung somit auf heuristischen Verfahren auf der Grundlage bestimmter Abbruchzählwerte (z. B. Zählwerte 4 bis 15) bereitgestellt, wodurch aufwändigere Techniken weniger häufig herangezogen werden müssen.Referring again to QUERY 1642 however, the action is performed against other conflicting processors if an action within the processor should not be performed due to the abort count, STEP 1646 , That is, transactions in a multiprocessor environment can be aborted due to conflicts with accesses made by other processors. These other accesses may be transaction-oriented or non-transaction-oriented. In one example, a random delay (ie, retransmission of the transaction is delayed by a certain time or number of machine cycles, etc.) is inserted before the transaction is retried; with this technique and by gradually increasing the range of random delay, it is likely that a transaction will eventually execute if it conflicts only with other transactions. However, this technique is not useful in conflicts with other non-terminating or non-transactional accesses. Thus, according to another embodiment, the random delay is provided on heuristic methods based on certain abort counts (e.g., counts 4 through 15), which requires less frequent use of more sophisticated techniques.

Gemäß einer Ausführungsform, wenn der Abbruchzählwert derart ist, dass andere Ausweitungen innerhalb des gleichen Prozessors wie oben beschrieben oder die Zufallsverzögerung nicht erfolgreich war bzw. waren, wird bei einer Ausführung ein Semaphor (z. B. eine Sperre) auf die Sperre mit anderen Prozessoren angewandt. Ein Beispiel für diese Verarbeitung wird unter Bezugnahme auf 16C beschrieben. Die Logik von 16C wird von einem Prozessor durchgeführt, z. B. von dem Prozessor, der die Logik von 16A bis 16B durchführt.According to one embodiment, if the abort count is such that other expansions within the same processor as described above or the random delay were unsuccessful, in one embodiment a semaphore (eg, a lock) will lock onto other processors applied. An example of this processing will be made with reference to 16C described. The logic of 16C is performed by a processor, e.g. From the processor that has the logic of 16A to 16B performs.

Unter Bezugnahme auf 16C wird bei einer Ausführungsform eine Firmware-Routine auf der Grundlage dessen aufgerufen, SCHRITT 1660, dass ein bestimmter Abbruchzählwert (z. B. 24 bis 63) oder eine Abbruchebene erreicht wurde, um ein Semaphor zu erhalten, SCHRITT 1662. Das Semaphor wird an einem bestimmten Systemspeicherort gepflegt, und die Firmware verwendet beispielsweise einen Compare-and-Swap-Mechanismus, um die Semaphore zu erhalten. Wenn das Semaphor besetzt ist (d. h., ein weiterer Prozessor besitzt dieses bereits, da der Prozessor aufgrund wiederholter Transaktionsabbrüche auch in diesen Modus eskaliert ist), wartet der Prozessor, ohne dass er mit Ausnahme des Semaphors auf einen Speicherort zugreift. With reference to 16C In one embodiment, a firmware routine is called based on this, STEP 1660 in that a particular abort count (eg, 24 to 63) or abort level has been reached to obtain a semaphore, STEP 1662 , The semaphore is maintained at a particular system memory location, and the firmware uses, for example, a compare-and-swap mechanism to obtain the semaphores. If the semaphore is busy (ie, another processor already owns it, since the processor is escalated to this mode due to repeated transaction aborts), the processor waits without accessing a location other than the semaphore.

Nachdem das Semaphor erhalten wurde, wird eine Unterbrechung an alle anderen Prozessoren rundgesendet, SCHRITT 1664. Die anderen Prozessoren empfangen die Unterbrechung, und beim Empfangen der Unterbrechung prüfen sie das Semaphor und warten, bis das Semaphor wieder freigegeben wird. Sie greifen während des Wartens nur auf das Semaphor und nicht auf einen anderen Speicherort zu. Nachdem das Semaphor freigegeben oder freigesetzt wurde (z. B. auf null gesetzt), fahren die Prozessoren dort fort, wo sie unterbrochen wurden. Wenn die Unterbrechung innerhalb einer Transaktion aufgetreten ist, wird die Transaktion abgebrochen und von vorne begonnen.After the semaphore is received, an interrupt is broadcast to all other processors, STEP 1664 , The other processors receive the interrupt, and upon receiving the interrupt, examine the semaphore and wait for the semaphore to be released. While waiting, you access only the semaphore and not another location. After the semaphore is released or released (for example, set to zero), the processors continue where they left off. If the interrupt has occurred within a transaction, the transaction is aborted and started again.

Der den rundsendende Prozessor verlässt die Firmware-Routine und wiederholt die Transaktion, SCHRITT 1666. Es können mehrere Wiederholungen erforderlich sein, da die anderen Prozessoren eventuell nicht sofort stoppen. Alle anderen Prozessoren werden jedoch letztendlich auf das Semaphor warten; somit treten keine weiteren Konflikte mit den Prozessoren auf, und die Transaktion wird schließlich ausgeführt.The broadcasting processor leaves the firmware routine and repeats the transaction, STEP 1666 , Several repetitions may be required as the other processors may not stop immediately. All other processors, however, will eventually wait for the semaphore; thus, no further conflicts with the processors occur and the transaction is finally executed.

Wenn der sendende Prozessor die Transaktion beendet (z. B. eine erfolgreiche TEND-Ausführung) oder eine Unterbrechung stattfinden lässt, die dazu führt, dass die Transaktion nicht mehr länger wiederholt wird (z. B. Programmunterbrechung), ABFRAGE 1668, setzt die Firmware-Routine das Semaphor zurück, indem sie eine Null darin speichert, wodurch die anderen Prozessoren effektiv mit ihrer Arbeit fortfahren können, SCHRITT 1670.If the sending processor terminates the transaction (eg, a successful TEND execution) or makes an interrupt that causes the transaction to no longer be retried (e.g., program interruption), QUERY 1668 , the firmware routine resets the semaphore by storing a zero in it, which allows the other processors to effectively continue their work, STEP 1670 ,

Bei einer weiteren Ausführungsform können mehrere Semaphor-Speicherorte verwendet werden. Beispielsweise werden bei einer Ausführungsform nicht alle Prozessoren mit den Rundsende-Unterbrechungen adressiert, sondern nur jene, bei denen die Wahrscheinlichkeit für einen Konflikt besteht. Eine Ausführungsform unterbricht alle Prozessoren, die zum gleichen virtualisierten System (z. B. gleiche Partition oder LPAR) in einer Hypervisor-Umgebung gehören. Nachdem alle wahrscheinlichen Prozessoren unterbrochen wurden, die Transaktion immer noch nicht ausgeführt und einen zweiten Schwellenzählwert erreicht wurde, kann der Prozessor ein Master-Semaphor erwerben und alle Prozessoren unterbrechen. Es sind auch andere Variationen möglich.In another embodiment, multiple semaphore memory locations may be used. For example, in one embodiment, not all processors are addressed with the broadcast interrupts, but only those that are likely to conflict. One embodiment breaks all processors that belong to the same virtualized system (eg, same partition or LPAR) in a hypervisor environment. After all probable processors have been interrupted, the transaction has still not been executed, and a second threshold count has been reached, the processor may acquire a master semaphore and interrupt all processors. There are also other variations possible.

Oben sind Ausführungsformen beschrieben, mit denen das erfolgreiche Ausführen von Transaktionen nach wiederholten Abbrüchen erleichtert wird. Bei einer Ausführungsform pflegt die Hardware einen Zähler, der einen Zählwert dessen bereitstellt, wie oft eine Transaktion abgebrochen wurde. Der Zähler erhöht den Zählwert bei jedem Abbruch der Transaktion und wird auf bei erfolgreichem Ausführen der Transaktion oder einer Unterbrechung, die zu keiner weiteren erneuten Ausführung der Transaktion führt, auf null gesetzt. Wenn der Zählwert einen Schwellenwert erreicht (z. B. Zählwert 63), wird eine Unterbrechung dargeboten, die Transaktionsausführung ist nicht erfolgreich, und der Zähler wird zurückgesetzt. Bevor der Zählwert den Schwellenwert erreicht, können jedoch eine Vielzahl von Aktionen durchgeführt Zu diesen Aktionen gehören Aktionen, die innerhalb des die Transaktion ausführenden Prozessors durchzuführen sind, und/oder Aktionen, die gegen in Konflikt stehende Prozessoren (CPUs) durchzuführen sind.In the above, embodiments are described which facilitate the successful execution of transactions after repeated aborts. In one embodiment, the hardware maintains a counter that provides a count of how many times a transaction has been aborted. The counter increments the count each time the transaction is aborted and is set to zero upon successful completion of the transaction or an interrupt that does not result in any further re-execution of the transaction. When the count reaches a threshold (eg, count 63), an interrupt is presented, transaction execution is unsuccessful, and the counter is reset. However, before the count reaches the threshold, a variety of actions may be performed. These actions include actions to be performed within the processor executing the transaction and / or actions to be performed against conflicting processors (CPUs).

Innerhalb des gleichen Prozessors können eine oder mehrere der folgenden Aktionen je nach Abbruchzählwert und Auswahlkriterien für Aktionen mit gleichen oder überlappenden Abbruchzählwerten durchgeführt werden: erneutes Ausführen der Transaktion (Zählwerte 1 bis 3); Deaktivieren der Verzweigungsvorhersage (Zählwerte 8 bis 20); Deaktivieren des spekulativen Abrufens von Anweisungen, das über die Cachespeicherzeilengrenze der aktuellen Anweisung hinausgeht (Zählwerte 8 bis 20); Deaktivieren der superskalaren Zuteilung (Zählwerte 8 bis 20); Deaktivieren der nichtsequenziellen Ausführung (Zählwerte 8 bis 20); ausschließliches Abrufen aller Cachespeicherfehltreffer, sogar bei Nur-Abruf-Anforderungen (Zählwert 8 bis 20); Ausführen von nur jeweils einer Anweisung in der gesamten Pipeline (Zählwerte 21 bis 23); Deaktivieren der superskalaren Zuteilung (Zählwerte 24 bis 28); und Ausführen von nur jeweils einer Anweisung in der gesamten Pipeline, und ausschließliches Abrufen aller Cachespeicherfehltreffer (Zählwerte 32 bis 63). Bei Anwenden einiger dieser Aktionen wird die Spekulationsaggressivität einer Prozessorpipeline bei wiederholten Transaktionsabbrüchen nach und nach eingeschränkt. Die vollständige Spekulationsaggressivität einer Prozessorpipeline wird auf der Grundlage eines erfolgreichen Ausführens der Transaktion oder einer Unterbrechung, die nicht mehr zu einer Transaktionswiederholung führt, zurückgesetzt.Within the same processor, one or more of the following actions may be performed depending on the abort count and selection criteria for actions with equal or overlapping abort counts: re-execute the transaction (counts 1 to 3); Disabling branch prediction (counts 8 to 20); Disabling speculative fetching of instructions that goes beyond the cache line boundary of the current instruction (counts 8 through 20); Disable superscalar allotment (counts 8 to 20); Disable non-sequential execution (counts 8 to 20); exclusive retrieval of all cache misses, even in fetch-only requests (count 8 to 20); Performing only one instruction at a time in the entire pipeline (counts 21 to 23); Disable superscalar allotment (counts 24 to 28); and executing only one instruction at a time throughout the pipeline, and exclusive retrieving all cache misses (counts 32-63). Applying some of these actions gradually restricts the speculative aggressiveness of a processor pipeline on repeated transaction aborts. The full speculative aggressiveness of a processor pipeline becomes reset on the basis of a successful completion of the transaction or an interruption that no longer results in a transaction retry.

Sollte die Transaktion nach Durchführen einer oder mehrerer der obigen Aktionen weiterhin abgebrochen werden und der Zählwert einen ausgewählten Wert oder eine ausgewählte Ebene erreichen, können Aktionen gegen in Konflikt stehende Prozessoren durchgeführt werden. Beispielsweise bei Abbrüchen 4 bis 15 können Zufallsverzögerungen durchgeführt werden; und bei Abbrüchen 16 bis 23 kann ein Semaphor für die anderen Prozessoren der Partition (z. B. LPAR-Zone) erworben werden, auf der dieser Prozessor ausgeführt wird, um Operationen auf den anderen Prozessoren zu beenden. Gleichermaßen kann bei Zählwerten 24 bis 63 ein Semaphor für das gesamte System erworben werden, wobei alle Prozessoren in dem System ihre Operationen beenden, bis das Semaphor freigegeben ist. Bei diesem Verarbeitungsmodus wird eine Firmware-Routine auf der Grundlage dessen aufgerufen, dass die ausgewählte Ebene erreicht wurde, bei der ein Semaphor zu erhalten ist, um das Semaphor unter Verwendung beispielsweise eines Compare-and-Swap-Mechanismus zu erhalten. Wenn das Semaphor erhalten wird, wird eine Unterbrechung an die entsprechenden Prozessoren übertragen (z. B. die Prozessoren innerhalb der gleichen Partition oder alle Prozessoren des Systems oder ein anderer Teilsatz). Danach verlässt der Prozessor die Firmware-Routine und führt die Transaktion einmal oder mehrmals bis zum erfolgreichen Ausführen oder einer Unterbrechung erneut aus. Das Semaphor wird zurückgesetzt, wenn die Transaktion erfolgreich ausgeführt wurde oder nicht länger versucht wird, diese zu wiederholen.Should the transaction continue to be aborted after performing one or more of the above actions and the count reaches a selected value or level, actions may be taken against conflicting processors. For example, at aborts 4 through 15, random delays may be performed; and at aborts 16 to 23, a semaphore may be acquired for the other processors of the partition (eg, LPAR zone) on which this processor is executed to terminate operations on the other processors. Similarly, for counts 24 through 63, a semaphore may be acquired for the entire system, with all processors in the system terminating their operations until the semaphore is released. In this processing mode, a firmware routine is called based on reaching the selected level at which a semaphore is to be obtained to obtain the semaphore using, for example, a compare-and-swap mechanism. When the semaphore is received, an interrupt is transmitted to the appropriate processors (eg, the processors within the same partition or all processors of the system or another subset). Thereafter, the processor exits the firmware routine and reruns the transaction one or more times until successful execution or an interrupt. The semaphore is reset if the transaction succeeds or is no longer attempted to retry.

Durch Durchführen einer oder mehrerer der obigen Aktionen wird das erfolgreiche Ausführen einer Transaktion zumindest verbessert. Diese Aktionen können für unterschiedliche Transaktionstypen durchgeführt werden, beispielsweise nichteingeschränkte und eingeschränkte Transaktionen. Bei einer Ausführungsform gewährleistet das Verwenden der obigen Techniken für eingeschränkte Transaktionen ein erfolgreiches Ausführen der Transaktion, unter der Annahme, dass ein solches Ausführen möglich ist (es liegt z. B. keine Verletzung einer Einschränkungsbeschränkung oder eine andere Verletzung vor).By performing one or more of the above actions, the successful execution of a transaction is at least improved. These actions can be performed on different transaction types, such as unrestricted and restricted transactions. In one embodiment, using the above restricted transaction techniques ensures successful execution of the transaction, assuming that such execution is possible (for example, there is no violation of a restriction constraint or other violation).

Auch wenn bei der obigen Ausführungsform Aktionen auf der Grundlage eines Abbruchzählwerte ausgewählt werden, werden Aktionen bei einer weiteren Ausführungsform beruhend auf Gründen für den Abbruch und/oder des Zählwerts ausgewählt. Somit werden Aktionen beruhend auf einer Abbruchbedingung, bei der die Bedingung der Zählwert ist, dem Abbruchgrund oder einer Kombination aus dem Zählwert und dem Abbruchgrund durchgeführt. Beispielsweise könnte ein Prozessor erkennen, dass der Abbruch bedingt durch eine CPU erfolgt ist, und danach das Semaphor erwerben. Dies kann auch mit einem Zählwert kombiniert werden, z. B. „Wenn Abbruch > 16 und Abbruch durch einen Konflikt mit einer weiteren CPU bedingt ist → Semaphor erwerben”. Es gibt viele Variationen und Möglichkeiten.Although in the above embodiment, actions are selected based on an abort count value, actions in another embodiment are selected based on reasons for the abort and / or the count value. Thus, actions based on an abort condition in which the condition is the count value, the abort reason, or a combination of the count value and the abort reason are performed. For example, a processor could detect that the abort was due to a CPU and then acquire the semaphore. This can also be combined with a count, e.g. For example, "If abort> 16 and Abort is due to a conflict with another CPU → Purchase Semaphore". There are many variations and possibilities.

Bei einem Beispiel wird der Zähler, der zum Verfolgen der Anzahl von Abbrüchen verwendet wird, auf der Grundlage dessen automatisch zurückgesetzt, dass der Zähler einen Schwellenwert für Abbrüche für die Transaktion erreicht hat, die bewirkt, das eine Unterbrechung dargeboten wird, oder eine Unterbrechung wird für die Transaktion dargeboten, wobei die Transaktion nicht erneut ausgeführt wird.In one example, the counter used to track the number of aborts is automatically reset based on the counter having reached a threshold for aborts to the transaction that causes an interrupt to be presented or becomes an interrupt for the transaction, but the transaction will not be executed again.

Zusätzlich zu dem Erleichtern des Ausführens von Transaktionen wird oben ein effizientes Mittel zum Aktualisieren von mehreren nicht zusammenhängenden Objekten im Speicher ohne eine klassische (grobkörnige) Serialisierung wie eine Sperrung bereitgestellt, die Potenzial für eine erhebliche Verbesserung der Multiprozessorleistung bietet. Das heißt, dass mehrere nicht zusammenhängende Objekte aktualisiert werden, ohne dass weitere grobkörnige Speicherzugriffsaufträge umgesetzt werden, wie es bei klassischen Techniken der Fall ist, beispielsweise Sperren und Semaphore. Spekulative Ausführung wird ohne aufwändiges Wiederherstellungs-Setup bereitgestellt, und eingeschränkte Transaktionen werden für einfache Aktualisierungen mit kleinem Footprint geboten.In addition to facilitating the execution of transactions, above is provided an efficient means for updating multiple non-contiguous objects in memory without classical (grainy) serialization such as locking, which offers potential for a significant improvement in multiprocessor performance. That is, multiple non-contiguous objects are updated without further gritty memory access jobs being implemented, as is the case with classical techniques, such as locks and semaphores. Speculative execution is provided without costly recovery setup, and limited transactions are provided for simple updates with a small footprint.

Die transaktionsorientierte Ausführung kann in einer Vielzahl von Szenarien herangezogen werden, z. B. partielles Inlining, spekulative Verarbeitung und Sperrauslassung (lock elision). Beim partiellen Inlining wird die in den ausgeführten Pfad aufzunehmende Teilregion in TBEGIN/TEND verpackt. TABORT kann darin aufgenommen werden, um an einem Status auf einem Nebenpfad eine Rückabwicklung durchzuführen. Bei einer Spekulation, beispielsweise in Java, können Null-Prüfungen auf dereferenzierten Zeigern unter Verwendung einer Transaktion an den Schleifenrand verzögert werden. Wenn der Zeiger null ist, kann die Transaktion unter Verwendung der in TBEGIN/TEND enthaltenen TABORT sicher abgebrochen werden.Transactional execution can be used in a variety of scenarios, e.g. Partial inlining, speculative processing and lock elimination (lock elision). In partial inlining, the subregion to be included in the executed path is packaged in TBEGIN / TEND. TABORT can be included therein to rollback on a status on a minor path. In speculation, for example in Java, null checks on dereferenced pointers may be delayed to the loop edge using a transaction. If the pointer is null, the transaction can be safely aborted using the TABORT contained in TBEGIN / TEND.

Ein Beispiel für die Anwendung einer Sperrauslassung (lock elision) wird in Bezug auf die 17A BIS 17B und dem nachstehenden Codefragment beschrieben.An example of the use of lock elision will be in relation to the 17A TO 17B and the code fragment below.

17A zeigt eine doppelt verknüpfte Liste 1700 aus einer Vielzahl von Warteschlangenelementen 1702a bis 1702d. Ein neues Warteschlangenelement 1702 ist in die doppelt verknüpfte Liste von Warteschlangenelementen 1700 einzusetzen. Jedes Warteschlangenelement 1702a bis 1702e enthält einen Vorwärtszeiger 1704a bis 1704d und einen Rückwärtszeiger 1706a bis 1706e. Wie in 17B gezeigt, wird zum Hinzufügen eines Warteschlangenelements 1702 zwischen Warteschlangenelementen 1702b und 1702c (1) der Rückwärtszeiger 1706e so gesetzt, dass er auf Warteschlangenelement 1702b zeigt, (2) der Vorwärtszeiger 1704e so gesetzt, dass er auf Warteschlangenelement 1702c zeigt, (3) der Rückwärtszeiger 1706c so gesetzt, dass er auf Warteschlangenelement 1702e zeigt; und (4) der Vorwärtszeiger 1704b so gesetzt, dass er auf Warteschlangenelement 1702e zeigt. 17A shows a doubly linked list 1700 from a variety of queue elements 1702a to 1702d , A new queue element 1702 is in the doubly linked list of queue elements 1700 use. Each queue element 1702a to 1702e contains a forward pointer 1704a to 1704D and a backward pointer 1706a to 1706e , As in 17B shown is used to add a queue item 1702 between queue elements 1702b and 1702c (1) the backward pointer 1706e so set it on queuing element 1702b shows, (2) the forward pointer 1704e so set it on queuing element 1702c shows, (3) the backward pointer 1706c so set it on queuing element 1702e shows; and (4) the forward pointer 1704b so set it on queuing element 1702e shows.

Ein beispielhaftes Codefragment, das den 17A bis 17B entspricht, wird im Folgenden gezeigt:

  • * R1 – Adresse des neuen einzufügenden Warteschlangenelements
  • * R2 – Adresse der Einfügungsstelle; neues Element wird vor das Element eingefügt, auf das von R2 gezeigt wird.
NEW USING QEL, R1 CURR USING QEL, R2 LHI R15, 10 Wiederholungszählwert laden. LOOP TBEGIN TDB, X'C000' Transaktion beginnen (AR 0 bis 3 speichern) JNZ ABORTED CC ungleich null bedeutet abgebrochen. LG R3, CURR.BWD Auf vorheriges Element zeigen. PREVUSIN G QEL, R3 Es adressierbar machen STG R1, PREV.FWD Vorherig. Vorwärtszeiger aktualisieren STG R1, CURR.BWD Aktuell. Rückwärtszeiger aktualisieren STG R2, NEW.FWD Neuen Vorwärtszeiger aktualisieren STG R3, NEW.BWD Neuen Rückwärtszeiger aktualisieren TEND Transaktion beenden ... ABORTED JO NO_RETRY CC3: Nicht wiederholbarer Abbruch. JCT R15, LOOP Transaktion ein paar Mal wiederholen. J NO_RETRY Kein Erfolg nach 10 Malen; auf harte Weise durchziehen. An exemplary code snippet containing the 17A to 17B corresponds, is shown below:
  • * R1 - Address of the new queue element to be inserted
  • * R2 - address of the insertion point; new element is inserted before the element pointed to by R2.
NEW USING QEL, R1 CURR USING QEL, R2 LHI R15, 10 Load repeat count. LOOP TBEGIN TDB, X'C000 ' Start transaction (save AR 0 to 3) JNZ ABORTED CC nonzero means canceled. LG R3, CURR.BWD Point to previous element. PREVUSIN G QEL, R3 Make it addressable STG R1, PREV.FWD Previous. Update forward pointer STG R1, CURR.BWD Current. Update backward pointer STG R2, NEW.FWD Update new forward pointer STG R3, NEW.BWD Update new backward pointer TEND end transaction ... ABORTED JO NO_RETRY CC3: Non-repeatable abort. JCT R15, LOOP Repeat transaction a few times. J NO_RETRY No success after 10 times; pull hard.

Bei einem Beispiel ruft die Transaktion, wenn die Transaktion für eine Sperrauslassung (lock elision) verwendet wird, aber der Ausweichpfad eine Sperre verwendet, zumindest das Sperrwort ab, um zu ermitteln, um dieses verfügbar ist. Der Prozessor stellt sicher, dass die Transaktion abgebrochen wird, wenn eine weitere CPU nichttransaktionsorientiert auf die Sperre zugreift.In one example, if the transaction is being used for a lock-out, but the escape path uses a lock, the transaction retrieves at least the lock-word to determine if it is available. The processor ensures that the transaction is aborted when another CPU accesses the lock in a non-transaction-oriented manner.

Wie hier verwendet, werden die Begriffe Speicher, Zentralspeicher und Hauptspeicher austauschbar gebraucht, es sei denn, es wird anderweitig implizit durch Anwendung oder explizit angemerkt. Einerseits beinhaltet bei einer Ausführungsform das effektive Verzögern einer Transaktion das Verzögern des Festschreibens von Transaktionsspeichervorgängen in den Hauptspeicher bis zum Ausführen einer ausgewählten Transaktion; andererseits beinhaltet das effektive Verzögern bei einer weiteren Ausführungsform darüber hinaus das Zulassen von transaktionsorientierten Aktualisierungen des Speichers, wobei die alten Werte aufbewahrt und der Speicher bei einem Abbruch auf die alten Werte zurückgesetzt wird.As used herein, the terms memory, central memory and main memory are used interchangeably unless otherwise implied by application or explicitly noted. On the one hand, in one embodiment, effectively delaying a transaction involves delaying the commit of transaction stores to main memory until a selected transaction is executed; On the other hand, the effective deceleration in a further embodiment further includes allowing transaction-oriented updates of the memory, preserving the old values and reverting the memory to the old values when aborted.

Wie der Fachmann verstehen wird, können eine oder mehrere Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt realisiert werden. Demgemäß können eine oder mehrere Aspekte der vorliegenden Erfindung die Form einer Ausführungsform, die ausschließlich aus Hardware besteht, einer Ausführungsform, die ausschließlich aus Software besteht (darunter Firmware, residente Software, Mikrocode etc.), oder einer Ausführungsform, die Software- und Hardwareaspekte kombiniert, annehmen, die allesamt hierin im Allgemeinen als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Ferner können eine oder mehrere Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das als ein oder mehrere computerlesbare Medien realisiert ist, das mit einem computerlesbaren Programmcode versehen ist.As those skilled in the art will appreciate, one or more aspects of the present invention may be implemented as a system, method, or computer program product. Accordingly, one or more aspects of the present invention may take the form of an embodiment made entirely of hardware, an embodiment consisting solely of software (including firmware, resident software, microcode, etc.), or an embodiment combining software and hardware aspects , which may be collectively referred to herein as "circuitry," "module," or "system." Further, one or more aspects of the present invention may take the form of a computer program product implemented as one or more computer readable media provided with computer readable program code.

Jede beliebige Kombination aus einem oder mehreren computerlesbaren Medien kann verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Speichermedium handeln. Ein computerlesbares Speichermedium kann beispielsweise ein/e elektronische/s, magnetische/s, optische/s, elektromagnetische/s, Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder eine geeignete Kombination des Vorstehenden sein. Spezifischere Beispiele (eine nicht erschöpfende Liste) für das computerlesbare Speichermedium wären eine elektrische Verbindung mit einem oder mehreren Leitungen, eine tragbare Computerdiskette, ein Festplattenlaufwerk, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), eine Lichtwellenleiter, ein tragbarer Compact-Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine geeignete Kombination des Vorstehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium ein physisches Medium sein, das ein Programm zur Verwendung durch ein System, eine Vorrichtung oder eine Einheit zur Ausführung von Anweisungen oder zur Verwendung in Verbindung mit diesem/dieser enthalten oder speichern kann.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, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, device or unit, or a suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer-readable storage medium would be electrical connection to one or more wires, a portable computer diskette, a hard disk drive, random access memory (RAM), read-only memory (ROM), erasable programmable memory Read-only memory (EPROM or flash memory), an optical fiber, a portable compact disc read only memory (CD-ROM), an optical storage unit, a magnetic storage unit, or a suitable combination of the foregoing. In the context of this document, a computer-readable storage medium may be a physical medium that may contain or store a program for use by, or for use by, a system or apparatus or device for executing instructions.

Unter Bezugnahme auf 18 enthält ein Computerprogrammprodukt 1800 bei einem Beispiel beispielsweise ein oder mehrere nichtflüchtige computerlesbare Speichermedien 1802, um ein Mittel oder eine Logik 1804 für einen computerlesbaren Programmcode darauf zu speichern, um eine oder mehrere Ausführungsformen bereitzustellen und zu erleichtern.With reference to 18 contains a computer program product 1800 For example, in one example, one or more non-transitory computer-readable storage media 1802 to a means or a logic 1804 for computer readable program code to provide and facilitate one or more embodiments.

Ein Programmcode, der auf einem computerlesbaren Medium realisiert ist, kann mithilfe eines geeigneten Mediums übertragen werden, z. B. drahtlos, drahtgebunden, Lichtwellenleiter, HF etc. oder einer geeigneten Kombination des Vorstehenden, ohne auf diese beschränkt zu sein.Program code implemented on a computer-readable medium may be transmitted using a suitable medium, e.g. Wireless, wireline, fiber optic, RF, etc., or any suitable combination of the foregoing without limitation.

Ein Computerprogrammcode zum Ausführen von Operationen für einen oder mehrere Ausführungsformen kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder dergleichen, und herkömmliche prozedurale Programmiersprachen wie die „C”-Programmiersprache, Assembler- oder ähnliche Programmiersprachen, geschrieben werden. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letzteren Szenario kann der entfernt angeordnete Computer über einen beliebigen Netzwerktyp, darunter Local Area Network (LAN) oder Wide Area Network (WAN) mit dem Computer des Benutzers verbunden werden, oder die Verbindung kann mit einem externen Computer (beispielsweise über das Internet mithilfe eines Internet-Diensteanbieters) hergestellt werden.Computer program code for performing operations for one or more embodiments may be any combination of one or more programming languages, including an object-oriented programming language such as Java, Smalltalk, C ++, or the like, and conventional procedural programming languages such as the "C" programming language, assembly language, or similar programming languages are written. The program code may be executed entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partly on a remote computer, or entirely on the remote computer or server. In the latter scenario, the remote computer can be connected to the user's computer via any type of network, including Local Area Network (LAN) or Wide Area Network (WAN), or the connection can be made to an external computer (for example, over the Internet using a computer) Internet service provider).

Eine oder mehrere Ausführungsformen werden hier unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukte beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Universalcomputers, einem Spezialcomputer oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zur Herstellung einer Maschine bereitgestellt werden, so dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Implementieren der Funktionen/Aktionen zu bilden, die in dem einen oder den mehreren Ablaufplan- und/oder Blockschaubildblöcken festgelegt sind.One or more embodiments are described herein with reference to flowcharts and / or block diagrams of methods, apparatus (systems), and computer program products. It is understood that each block of the flowcharts and / or block diagrams and combinations of blocks in the flowcharts and / or block diagrams may be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general-purpose computer, a special purpose computer or other programmable data processing device for manufacturing a machine such that the instructions executed via the processor of the computer or other programmable data processing device provide a means for implementing the functions / actions formed in the one or more schedule and / or block diagram blocks.

Diese Computerprogramm-Anweisungen können ebenfalls in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweist, auf eine gewisse Weise zu agieren, so dass die im computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsgegenstand produzieren, darunter Anweisungen, die die in dem einen oder den mehreren Ablaufplan- und/oder Blockschaubildblöcken festgelegte Funktion/Aktion implementieren. These computer program instructions may also be stored in a computer-readable medium that instructs a computer, other programmable computing device, or other entity to act in a manner such that the instructions stored in the computer-readable medium produce an article of manufacture, including instructions that contain the implement the function / action specified in the one or more schedule and / or block diagram blocks.

Die Computerprogrammanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um die Ausführung einer Reihe von Betriebsschritten auf dem Computer, der anderen programmierbaren Vorrichtung oder anderen Einheiten zur Produktion eines auf einem Computer implementierten Verfahrens zu veranlassen, so dass die Anweisungen, die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden, Verfahren zum Implementieren der in dem einen oder den mehreren Ablaufplan- und/oder Blockschaubildblöcken festgelegten Funktionen/Aktionen bereitstellen.The computer program instructions may also be loaded on a computer, other programmable data processing device, or other device to cause the execution of a series of operations on the computer, other programmable device, or other computer-implemented method production units Instructions executed on the computer or other programmable device provide methods for implementing the functions / actions defined in the one or more flowchart and / or block diagram blocks.

Die Ablaufpläne und Blockschaubilder in den Figuren zeigen die Architektur, die Funktionalität und den Betrieb der möglichen Implementierungen von Systemen, Verfahren und Computerprogrammprodukte gemäß verschiedenen Ausführungsformen. In dieser Hinsicht kann jeder Block im Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Teil eines Codes darstellen, das bzw. der eine oder mehrere ausführbare Anweisungen für die Implementierung der einen oder mehreren festgelegten logischen Funktionen aufweist. Es sei ferner angemerkt, dass die im Block angegebenen Funktionen bei einigen alternativen Implementierungen in einer anderen Reihenfolge als in den Figuren auftreten können. Beispielsweise können zwei Blöcke, die aufeinanderfolgend gezeigt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Es sei darüber hinaus angemerkt, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder Ablaufplänen von speziellen auf Hardware beruhenden Systemen, die die angegebenen Funktionen oder Aktionen ausführen, oder von Kombinationen aus spezieller Hardware und Computeranweisungen implementiert werden können.The flowcharts and block diagrams in the figures show the architecture, functionality, and operation of the possible implementations of systems, methods, and computer program products according to various embodiments. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code that has one or more executable instructions for implementation of the one or more specified logical functions. It should also be noted that in some alternative implementations, the functions specified in the block may occur in a different order than in the figures. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may sometimes be executed in reverse order depending on functionality. It is further noted that each block of the block diagrams and / or the flowcharts and combinations of blocks in the block diagrams and / or flowcharts of specific hardware-based systems performing the specified functions or actions, or combinations of specialized hardware and computer instructions can be implemented.

Zusätzlich zu den obigen Ausführungen können ein oder mehrere Aspekte von einem Diensteanbieter bereitgestellt, angeboten, implementiert, verwaltet, gewartet usw. werden, der eine Verwaltung von Kundenumgebungen anbietet. Beispielsweise kann der Diensteanbieter einen Computer-Code und/oder eine Computerinfrastruktur erstellen, warten, unterstützen, der bzw. die eine oder mehrere Aspekte für einen oder mehrere Kunden ausführt. Der Diensteanbieter kann dafür eine Bezahlung vom Kunden erhalten, beispielsweise im Rahmen einer Subskriptions- und/oder Gebührenvereinbarung. Zusätzlich oder alternativ kann der Diensteanbieter Zahlungen aus dem Verkauf und Bewerben von Inhalten an einen oder mehrere Dritte erhalten.In addition to the above, one or more aspects may be provided, offered, implemented, managed, maintained, etc., by a service provider offering customer environment management. For example, the service provider may create, maintain, support a computer code and / or computer infrastructure that performs one or more aspects for one or more customers. The service provider may receive a payment from the customer for this purpose, for example as part of a subscription and / or fee agreement. Additionally or alternatively, the service provider may receive payments from the sale and promotion of content to one or more third parties.

Bei einem Aspekt kann eine Anwendung zum Durchführen einer oder mehrerer Ausführungsformen bereitgestellt werden. Bei einem Beispiel beinhaltet das Implementieren einer Anwendung das Bereitstellen von Computerinfrastruktur, die funktionsmäßig in der Lage ist, eine oder mehrere Ausführungsformen durchzuführen.In one aspect, an application for performing one or more embodiments may be provided. In one example, implementing an application involves providing computer infrastructure that is operable to perform one or more embodiments.

Bei einem weiteren Aspekt kann eine Datenverarbeitungsinfrastruktur implementiert wird, die das Integrieren einen computerlesbaren Codes in ein Datenverarbeitungssystem beinhaltet, wobei der Code in Kombination mit dem Datenverarbeitungssystem in der Lage ist, eine oder mehrere Ausführungsformen durchzuführen.In another aspect, a data processing infrastructure may be implemented that includes integrating computer readable code into a data processing system, wherein the code in combination with the data processing system is capable of performing one or more embodiments.

Bei einem noch weiteren Aspekt kann ein Prozess zum Integrieren von Datenverarbeitungsinfrastruktur bereitgestellt werden, der das Integrieren eines computerlesbaren Codes in ein Computersystem beinhaltet. Das Computersystem weist ein computerlesbares Medium auf, wobei das Computermedium eine oder mehrere Ausführungsformen aufweist. Der Code in Kombination mit dem Computersystem ist in der Lage, eine oder mehrere Ausführungsformen durchzuführen.In yet another aspect, a process for integrating computing infrastructure may be provided that includes integrating computer-readable code into a computer system. The computer system includes a computer-readable medium, the computer medium having one or more embodiments. The code in combination with the computer system is capable of performing one or more embodiments.

Auch wenn verschiedene Ausführungsformen oben beschrieben werden, sind diese lediglich beispielhaft. Beispielsweise können Datenverarbeitungsumgebungen mit anderen Architekturen verwendet werden. Darüber hinaus können unterschiedliche Anweisungen, Anweisungsformate, Anweisungsfelder und/oder Anweisungswerte verwendet werden. Darüber hinaus können unterschiedliche, andere und/oder zusätzliche Aktionen bereitgestellt/verwendet werden. Darüber hinaus können Aktionen bei unterschiedlichen Abbruchzählwerten und/oder beruhend auf verschiedenen Abbruchgründen ausgewählt werden. Es sind viele Variationen möglich.Although various embodiments are described above, these are merely exemplary. For example, computing environments may be used with other architectures. In addition, different instructions, instruction formats, instruction fields, and / or instruction values may be used. In addition, different, different and / or additional actions may be provided / used. In addition, actions may be selected at different abort counts and / or based on different abort reasons. There are many variations possible.

Darüber hinaus können andere Datenverarbeitungsumgebungs-Typen von Vorteil sein und verwendet werden. Beispielsweise kann ein Datenverarbeitungssystem verwendet werden, das sich zum Speichern und/oder Ausführen eines Programmcodes eignet und zumindest zwei Prozessoren enthält, die direkt oder indirekt über einen Systembus mit Speicherelementen verbunden sind. Zu den Speicherelementen gehören beispielsweise ein lokaler Speicher, der während des tatsächlichen Ausführens des Programmcodes verwendet wird, ein Massenspeicher und ein Cachespeicher, der ein vorübergehendes Speichern zumindest eines Programmcodes bereitstellt, um die Anzahl der Male zu verringern, die der Code während des Ausführens aus dem Massenspeicher abgerufen werden muss. In addition, other computing environment types may be beneficial and used. For example, a data processing system suitable for storing and / or executing a program code and containing at least two processors directly or indirectly connected to memory elements via a system bus can be used. The memory elements include, for example, a local memory used during actual execution of the program code, mass storage, and a cache that provides temporary storage of at least one program code to reduce the number of times the code expires during execution Mass storage must be retrieved.

Eingabe/Ausgabe- bzw. E/A-Einheiten (darunter Tastaturen, Anzeigen, Zeigereinheiten, DASD, Band, CDs, DVDs, Thumb-Drives und andere Speichermedien usw., ohne jedoch auf diese beschränkt zu sein) können entweder direkt oder über Zwischen-E/A-Steuerungen mit dem System verbunden werden. Netzadapter können ebenfalls mit dem System verbunden werden, damit das Datenverarbeitungssystem über private oder öffentliche Zwischennetze mit anderen Datenverarbeitungssystemen oder Ferndruckern oder Speichereinheiten verbunden werden kann. Modems, Kabelmodems und Ethernet-Karten sind nur einige der verfügbaren Netzadaptertypen.Input / output or I / O devices (including, but not limited to, keyboards, displays, pointing devices, DASD, tape, CDs, DVDs, thumb drives, and other storage media) can be used either directly or via intermediate I / O controllers are connected to the system. Power adapters can also be connected to the system so that the data processing system can connect to other data processing systems or remote printers or storage devices via private or public subnets. Modems, cable modems, and Ethernet cards are just a few of the types of network adapters available.

Unter Bezugnahme auf 19 sind repräsentative Komponenten eines Host-Computersystems 5000 gezeigt, mit denen einen oder mehrere der dargestellten Ausführungsformen implementiert werden. Der repräsentative Host-Computer 5000 weist eine oder mehrere CPUs 5001 in Verbindung mit einem Computerspeicher (d. h. Zentralspeicher) 5002 sowie E/A-Schnittstellen zu Speichermedieneinheiten 5011 und Netze 5010 zum Datenaustausch mit anderen Computern oder SANs und dergleichen auf. Die CPU 5001 entspricht einer Architektur mit einem architekturdefinierten Anweisungssatz und einer architekturdefinierten Funktionalität. Die CPU 5001 kann eine Zugriffsregisterumsetzung (ART) 5012 aufweisen, die einen ART-Umsetzpuffer (ALB, Lookaside Buffer) 5013 enthält, zum Auswählen eines Adressraums, der für eine dynamische Adressumsetzung (DAT) 5003 zum Umwandeln von Programmadressen (virtuellen Adressen) in reale Speicheradressen zu verwenden ist. Eine DAT beinhaltet für gewöhnlich einen Adressumsetzpuffer (TLB, Translation Lookaside Buffer) 5007 zum Zwischenspeichern von Umsetzungen, so dass spätere Zugriffe auf den Block von Computerspeichern 5002 keine Verzögerung der Adressumsetzung erfordern. Für gewöhnlich wird ein Cachespeicher 5009 zwischen dem Computerspeicher 5002 und dem Prozessor 5001 verwendet. Der Cachespeicher 5009 kann hierarchisch sein, mit einem großen Cachespeicher, der für mehr als eine CPU verfügbar ist, und kleineren, schnelleren Cachespeichern (niedrigerer Ebene) zwischen dem großen Cachespeicher und jeder CPU. Bei einigen Implementierungen werden die Cachespeicher niedrigerer Ebene geteilt, um getrennte Cachespeicher niedrigerer Ebene für das Abrufen von Anweisungen und Datenzugriffe bereitzustellen. Bei einer Ausführungsform können für die TX-Einrichtung ein Transaktionsdiagnoseblock (TDB) 5100 und ein oder mehrere Puffer 5101 in einem oder mehreren der Cachespeicher 5009 und des Speichers 5002 gespeichert werden. Bei einem Beispiel werden Daten im TX-Modus zunächst in einem TX-Puffer gespeichert und wenn der TX-Modus endet (z. B. äußerste TEND), werden die Daten im Puffer im Speicher gespeichert (festgeschrieben) oder im Fall eines Abbruchs werden die Daten im Puffer verworfen.With reference to 19 are representative components of a host computer system 5000 shown, with which one or more of the illustrated embodiments are implemented. The representative host computer 5000 has one or more CPUs 5001 in connection with a computer memory (ie central memory) 5002 and I / O interfaces to storage media devices 5011 and nets 5010 to exchange data with other computers or SANs and the like. The CPU 5001 corresponds to an architecture with an architected statement set and an architecture-defined functionality. The CPU 5001 can an access register conversion (ART) 5012 containing an ART translation buffer (ALB, Lookaside Buffer). 5013 contains, for selecting an address space, for a dynamic address translation (DAT) 5003 to convert program addresses (virtual addresses) into real memory addresses. A DAT usually contains an address translation buffer (TLB, Translation Lookaside Buffer) 5007 for caching conversions so that later accesses to the block of computer memory 5002 do not require a delay of the address translation. Usually becomes a cache 5009 between the computer memory 5002 and the processor 5001 used. The cache 5009 can be hierarchical, with a large cache available for more than one CPU, and smaller, faster (lower level) caches between the large cache and each CPU. In some implementations, the lower level caches are shared to provide separate lower level cache for instruction fetching and data access. In one embodiment, a transaction diagnostic block (TDB) may be provided for the TX device. 5100 and one or more buffers 5101 in one or more of the caches 5009 and the memory 5002 get saved. In one example, data in the TX mode is first stored in a TX buffer, and when the TX mode ends (eg, outermost TEND), the data in the buffer is stored in memory (committed) or in the event of abort Data discarded in the buffer.

Bei einer Ausführungsform wird eine Anweisung aus dem Speicher 5002 durch eine Anweisungsabrufeinheit 5004 über einen Cachespeicher 5009 abgerufen. Die Anweisung wird in einer Adressentschlüsselungseinheit 5006 entschlüsselt und einer oder mehreren Anweisungsausführeinheiten 5008 zugeteilt (bei einigen Ausführungsformen mit anderen Anweisungen). Für gewöhnlich werden mehrere Ausführeinheiten 5008 verwendet, beispielsweise eine Rechenausführeinheit, eine Gleitkomma-Ausführeinheit und eine Verzweigungsanweisungs-Ausführeinheit. Darüber hinaus können bei einer Ausführungsform der TX-Einrichtung mehrere TX-Steuerungen 5110 verwendet werden. Die Anweisung wird von der Ausführeinheit ausgeführt, die nach Bedarf auf Operanden aus anweisungsspezifizierten Registern und Speichern zugreift. Wenn auf einen Operanden aus einem Speicher 5002 zugegriffen werden soll (der Operand geladen oder gespeichert werden soll), bearbeitet eine Lade/Speicher-Einheit 5005 für gewöhnlich den Zugriff unter der Steuerung der Anweisung, die gerade ausgeführt wird. Anweisungen können in Hardware-Schaltungen oder in einem internen Mikrocode (Firmware) oder durch eine Kombination aus beidem ausgeführt werden.In one embodiment, an instruction is retrieved from memory 5002 by an instruction fetch unit 5004 via a cache 5009 accessed. The instruction is in an address decryption unit 5006 decrypted and one or more statement execution units 5008 allocated (in some embodiments with different instructions). Usually, several execution units become 5008 used, for example, a calculation execution unit, a floating point execution unit, and a branch instruction execution unit. In addition, in one embodiment, the TX device may have multiple TX controllers 5110 be used. The instruction is executed by the execution unit, which accesses operands from instruction-specified registers and memories as needed. When to an operand from a memory 5002 is to be accessed (the operand is to be loaded or saved), handles a load / store unit 5005 usually access under the control of the instruction being executed. Instructions may be executed in hardware circuits or in an internal microcode (firmware) or a combination of both.

Gemäß einem Aspekt der TX-Einrichtung enthält der Prozessor 5001 auch ein PSW 5102 (z. B. TX- und/oder Abbruch-PSW), eine Verschachtelungstiefe 5104, eine TDBA 5106 und ein oder mehrere Steuerregister 5108.In one aspect of the TX device, the processor includes 5001 also a PSW 5102 (eg, TX and / or abort PSW), a nesting depth 5104 , a TDBA 5106 and one or more control registers 5108 ,

Wie angemerkt, beinhaltet ein Computersystem Informationen in einem lokalen oder (Haupt-)Speicher sowie eine Adressier-, Schutz- und Verweis- und Änderungsaufzeichnung. Einige Aspekte des Adressierens beinhalten das Format von Adressen, das Konzept von Adressräumen, die verschiedenen Adresstypen und die Art und Weise, mit der ein Adresstyp in einen anderen Adresstyp umgesetzt wird. Ein Teil des Hauptspeichers enthält dauerhaft zugewiesene Speicherorte. Der Hauptspeicher stellt für das System eine direkt adressierbare Speicherung von Daten mit schnellem Zugriff bereit. Sowohl Daten als auch Programme müssen in den Hauptspeicher (aus Eingabeeinheiten) geladen werden, bevor sie verarbeitet werden können.As noted, a computer system includes information in local or main memory as well as addressing, protection, reference, and change records. Some aspects of addressing include the format of addresses, the concept of address spaces, the different types of addresses, and the way in which one address type translates into another address type. Part of the main memory contains permanently assigned memory locations. The main memory provides the system with directly addressable storage of fast access data. Both data and programs must be loaded into main memory (from input devices) before they can be processed.

Der Hauptspeicher beinhaltet einen oder mehrere kleinere Pufferspeicher mit schnellerem Zugriff, die manchmal Cachespeicher genannt werden. Ein Cachespeicher ist für gewöhnlich physisch mit einer CPU oder einem E/A-Prozessor verbunden. Die Auswirkungen der physischen Konstruktion, mit Ausnahme in Bezug auf Leistung, und die Verwendung von einzelnen Speichermedien sind für das Programm im Allgemeinen nicht wahrnehmbar.The main memory includes one or more smaller faster-access buffers, sometimes called caches. A cache is usually physically connected to a CPU or an I / O processor. The effects of physical construction, with the exception of performance, and the use of individual storage media are generally imperceptible to the program.

Separate Cachespeicher können für Anweisungen und Datenoperanden gepflegt werden. Daten in einem Cachespeichers werden in zusammenhängenden Bytes auf einer integralen Grenze aufbewahrt, Cachespeicherblock oder Cachespeicherzeile (oder kurz Zeile) genannt. Ein Modell kann eine Anweisung EXTRACT CACHE ATTRIBUTE bereitstellen, die die Größe einer Cachespeicherzeile in Bytes zurückgibt. Ein Modell kann darüber hinaus Anweisungen PREFETCH DATA und PREFETCH DATA RELATIVE LONG bereitstellen, die das Vorab-Ausführen von Speichervorgängen in den Daten- oder Anweisungscachespeicher oder das Freigeben von Daten aus dem Cachespeicher bewirken.Separate caches can be maintained for statements and data operands. Data in a cache is kept in contiguous bytes on an integral boundary, called cache block or cache line (or line for short). A model can provide an EXTRACT CACHE ATTRIBUTE statement that returns the size of a cache line in bytes. A model may also provide instructions PREFETCH DATA and PREFETCH DATA RELATIVE LONG that cause the memory or data cache to be pre-populated or released from the cache.

Der Speicher wird als lange horizontale Bitfolge angesehen. Bei den meisten Operationen erfolgen Speicherzugriffe in einer Links-nach-Rechts-Abfolge. Die Bitfolge ist in Einheiten aus acht Bits unterteilt. Eine 8-Bit-Einheit wird ein Byte genannt, das den Grundbaustein für alle Informationsformate bildet. Jede Byteposition im Speicher wird durch eine eindeutige nichtnegative ganze Zahl gekennzeichnet, bei der es sich um die Adresse dieser Byteposition handelt, oder einfach die Byteadresse. Benachbarte Bytespeicherorte weisen aufeinanderfolgende Adressen auf, beginnend mit 0 links und weiter in einer Links-nach-Rechts-Abfolge. Adressen sind vorzeichenlose binäre ganze Zahlen und sind 24, 31 oder 64 Bits.The memory is considered a long horizontal bit string. For most operations, memory accesses occur in a left-to-right sequence. The bit sequence is divided into units of eight bits. An 8-bit unit is called a byte, which is the basic building block for all information formats. Each byte location in memory is identified by a unique nonnegative integer, which is the address of that byte position, or simply the byte address. Adjacent byte locations have consecutive addresses beginning with 0 left and continuing in a left-to-right sequence. Addresses are unsigned binary integers and are 24, 31 or 64 bits.

Informationen werden zu jeweils einem Byte oder einer Gruppe aus Bytes zwischen dem Speicher und einer CPU oder einem Kanal-Teilystem übertragen. Eine Gruppe von Bytes im Speicher wird vom ganz linken Byte der Gruppe adressiert, außer wenn beispielsweise in der z/Architecture anderweitig angegeben. Die Anzahl von Bytes in der Gruppe wird entweder impliziert oder durch die auszuführende Operation explizit spezifiziert. Wenn eine Gruppe von Bytes bei einer CPU-Operation verwendet wird, so wird diese als Feld bezeichnet. In der z/Architecture sind die Bits beispielsweise innerhalb jeder Gruppe aus Bytes in eine Links-nach-Rechts-Abfolge nummeriert. In der z/Architecture werden die Bits ganz links manchmal als „höchstwertige” Bits und die Bits ganz rechts als „niedrigstwertige” Bits bezeichnet. Bitzahlen sind jedoch keine Speicheradressen. Nur Bytes können adressiert werden. Um eine Operation an einzelnen Bits eines Byte im Speicher durchzuführen, wird auf das gesamte Byte zugegriffen. Die Bits in einem Byte sind (z. B. in der z/Architecture) von links nach rechts mit 0 bis 7 nummeriert. Die Bits in einer Adresse können mit 8 bis 31 oder 40 bis 63 für 24-Bit-Adressen oder 1 bis 31 oder 33 bis 63 für 31-Bit-Adressen nummeriert werden; für 64-Bit-Adressen werden sie mit 0 bis 63 nummeriert. Bei einem Beispiel gelten Bits 8 bis 31 und 1 bis 31 für Adressen, die sich in einem Speicherort (z. B. einem Register) befinden, das 32 Bit breit ist, wogegen Bits 40 bis 63 und 33 bis 63 für Adressen gelten, die sich an einem 64 Bit breiten Speicherort befinden. Innerhalb eines beliebigen anderen Formats fester Länge aus mehreren Bytes sind die das Format bildenden Bits aufeinanderfolgend bei 0 beginnend nummeriert. Für eine Fehlererkennung und vorzugsweise für eine Korrektur können ein oder mehrere Prüfbits mit jedem Byte oder mit einer Gruppe von Bytes übertragen werden. Solche Prüfbits werden von der Maschine automatisch erzeugt und können nicht direkt vom Programm gesteuert werden. Speicherkapazitäten werden in der Anzahl von Bytes ausgedrückt. Wenn die Länge eines Speicheroperandenfeldes durch den Operationscode einer Anweisung impliziert wird, hat das Feld eine feste Länge, die eins, zwei, vier, acht oder sechzehn Byte betragen kann. Größere Felder können bei einigen Anweisungen impliziert werden. Wenn die Länge eines Speicheroperandenfeldes nicht implizit, sondern explizit angegeben ist, hat das Feld eine variable Länge. Operanden mit variabler Länge können in Bezug auf die Länge in Schritten von einem Byte variieren (oder bei einigen Anweisungen in Vielfachen von zwei Bytes oder anderen Vielfachen). Wenn Daten im Speicher platziert werden, werden nur die Inhalte jener Bytespeicherorte ersetzt, die im ausgewiesenen Feld enthalten sind, selbst wenn die Breite des physischen Pfads zum Speicher größer als die Länge des zu speichernden Felds ist.Information is transferred to each byte or group of bytes between memory and a CPU or channel subsystem. A group of bytes in memory are addressed by the leftmost byte of the group, unless otherwise specified in the z / Architecture, for example. The number of bytes in the group is either implied or explicitly specified by the operation to be performed. When a group of bytes is used in a CPU operation, it is called a field. For example, in the z / Architecture, the bits within each group of bytes are numbered in a left-to-right order. In z / Architecture, the leftmost bits are sometimes referred to as "most significant" bits, and the rightmost bits are referred to as "least significant" bits. Bits are not memory addresses. Only bytes can be addressed. To perform an operation on individual bits of a byte in memory, the entire byte is accessed. The bits in a byte are numbered from 0 to 7 (from left to right, for example, in z / Architecture). The bits in an address may be numbered 8 to 31 or 40 to 63 for 24-bit addresses or 1 to 31 or 33 to 63 for 31-bit addresses; for 64-bit addresses, they are numbered 0 through 63. In one example, bits 8 through 31 and 1 through 31 are for addresses located in a memory location (eg, a register) that is 32 bits wide, while bits 40 through 63 and 33 through 63 are for addresses that are in a 64-bit wide location. Within any other fixed length format of several bytes, the bits forming the format are consecutively numbered beginning at 0. For error detection, and preferably for correction, one or more check bits may be transmitted with each byte or with a group of bytes. Such check bits are automatically generated by the machine and can not be controlled directly by the program. Storage capacities are expressed in the number of bytes. If the length of a memory operand field is implied by the opcode of an instruction, the field has a fixed length which may be one, two, four, eight, or sixteen bytes. Larger fields may be implied in some statements. If the length of a memory operand field is not specified implicitly but explicitly, the field has a variable length. Variable length operands may vary in length in one byte increments (or in some instructions in multiples of two bytes or other multiples). When data is placed in memory, only the contents of those byte locations contained in the designated field are replaced, even if the width of the physical path to the memory is greater than the length of the field to be stored.

Bestimmte Informationseinheiten müssen auf einer integralen Grenze im Speicher vorliegen. Eine Grenze wird in Bezug auf eine Informationseinheit als integral bezeichnet, wenn deren Speicheradresse ein Vielfaches der Länge der Einheit in Bytes ist. Die Felder aus 2, 4, 8, 16 und 32 Bytes auf einer integralen Grenze sind mit speziellen Bezeichnungen versehen. Ein Halbwort ist eine Gruppe aus zwei aufeinanderfolgenden Bytes auf einer 2-Byte-Grenze und ist der Grundbaustein für Anweisungen. Ein Wort ist eine Gruppe aus vier aufeinanderfolgenden Bytes auf einer 4-Byte-Grenze. Ein Doppelwort ist eine Gruppe aus acht aufeinanderfolgenden Bytes auf einer 8-Byte-Grenze. Ein Vierfachwort ist eine Gruppe aus 16 aufeinanderfolgenden Bytes auf einer 16-Byte-Grenze. Ein Achtfachwort ist eine Gruppe von 32 aufeinanderfolgenden Bytes auf einer 32-Byte-Grenze. Wenn Speicheradressen Halbwörter, Wörter, Doppelwörter, Vierfachwörter und Achtfachwörter ausweisen, enthält die binäre Darstellung der Adresse ein, zwei, drei, vier bzw. fünf ganz rechte Null-Bits. Anweisungen müssen auf integralen 2-Byte-Grenzen vorliegen. Die Speicheroperanden der meisten Anweisungen haben keine Anforderungen bezüglich Grenzausrichtung.Certain information units must be on an integral boundary in memory. A boundary is referred to as integral with respect to an information unit if its memory address is a multiple of the unit's length in bytes. The fields of 2, 4, 8, 16 and 32 bytes on an integral boundary are given special names. A halfword is a group of two consecutive Bytes on a 2-byte boundary and is the basic building block for instructions. A word is a group of four consecutive bytes on a 4-byte boundary. A double word is a group of eight consecutive bytes on an 8-byte boundary. A quadword is a group of 16 consecutive bytes on a 16-byte boundary. An eight-word is a group of 32 consecutive bytes on a 32-byte boundary. When memory addresses identify half words, words, double words, quadwords, and eight words, the binary representation of the address includes one, two, three, four, and five rightmost zero bits, respectively. Instructions must be on integral 2-byte boundaries. The memory operands of most instructions have no boundary alignment requirements.

Auf Einheiten, die separate Cachespeicher für Anweisungen und Datenoperanden implementieren, kann eine erhebliche Verzögerung stattfinden, wenn das Programm in eine Cachespeicherzeile speichert, aus der Anweisungen danach abgerufen werden, unabhängig davon, ob der Speichervorgang die Anweisungen ändert, die danach abgerufen werden.On devices that implement separate caches for instructions and data operands, a significant delay may occur if the program saves to a cache line from which instructions are fetched thereafter, regardless of whether the save operation changes the instructions that are fetched thereafter.

Bei einem Beispiel können die Ausführungsformen durch eine Software umgesetzt werden (manchmal auch als lizensierter interner Code, Firmware, Mikrocode, Millicode, Picocode und dergleichen bezeichnet, wobei jedes davon mit einer oder mehreren Ausführungsformen im Einklang steht). Unter Bezugnahme auf 19 kann über einen Prozessor 5001 des Host-Systems 5000 aus Langzeit-Speichermedieneinheiten 5011, z. B. ein CD-ROM-Laufwerk, Bandlaufwerk oder Festplattenlaufwerk, auf einen Software-Programmcode zugegriffen werden, der eine oder mehrere Ausführungsformen realisiert. Der Software-Programmcode kann auf einer Vielzahl von bekannten Medien zur Verwendung mit einem Datenverarbeitungssystem realisiert werden, z. B. Diskette, Festplattenlaufwerk oder CD-ROM. Der Code kann auf solchen Medien verteilt werden oder kann an Benutzer aus dem Computerspeicher 5002 oder Speicher eines Computersystems über ein Netzwerk 5010 an andere Computersysteme verteilt werden, damit er von Benutzern solcher anderen Systeme verwendet werden kann.In one example, the embodiments may be implemented by software (sometimes referred to as licensed internal code, firmware, microcode, millicode, picocode, and the like, each of which is consistent with one or more embodiments). With reference to 19 can have a processor 5001 of the host system 5000 from long-term storage media units 5011 , z. A CD-ROM drive, tape drive or hard disk drive, software program code that implements one or more embodiments. The software program code may be implemented on a variety of known media for use with a data processing system, e.g. Floppy disk, hard disk drive or CD-ROM. The code may be distributed on such media or may be available to users from computer memory 5002 or memory of a computer system over a network 5010 distributed to other computer systems so that it can be used by users of such other systems.

Der Software-Programmcode beinhaltet ein Betriebssystem, das die Funktion und Interaktion der verschiedenen Computerkomponenten und eines oder mehrerer Anwendungsprogramme steuert. Der Programmcode wird für gewöhnlich aus der Speichermedieneinheit 5011 in den Computerspeicher 5002 ausgelagert, der eine verhältnismäßig höhere Geschwindigkeit aufweist, wo er für eine Verarbeitung durch den Prozessor 5001 zur Verfügung steht. Die Techniken und Verfahren zum Realisieren eines Software-Programmcodes im Speicher, auf physischen Medien und/oder zum Verteilen von Software-Code über Netze sind hinlänglich bekannt und werden hier nicht weiter erörtert. Der Programmcode, wenn er und auf einem konkreten Medium (z. B. elektronische Speichermodule, RAM), Flash-Speicher, Compact Disks (CDs), DVDs, Magnetband und dergleichen, ohne jedoch auf diese beschränkt zu sein) erstellt und gespeichert wird, wird häufig als „Computerprogrammprodukt” bezeichnet. Das Computerprogrammprodukt-Medium ist für gewöhnlich für eine Verarbeitungsschaltung lesbar, vorzugsweise in einem Computersystem für eine Ausführung durch die VerarbeitungsschaltungThe software program code includes an operating system that controls the function and interaction of the various computer components and one or more application programs. The program code usually gets out of the storage media unit 5011 in the computer memory 5002 outsourced, which has a relatively higher speed, where it is for processing by the processor 5001 is available. The techniques and methods for implementing software program code in memory, on physical media and / or distributing software code over networks are well known and will not be discussed further here. The program code, if and on a specific medium (eg, electronic memory modules, RAM), flash memory, compact disks (CDs), DVDs, magnetic tape, and the like, is created and stored, is often referred to as a "computer program product". The computer program product medium is usually readable by a processing circuit, preferably in a computer system for execution by the processing circuitry

20 zeigt eine repräsentative Workstation oder ein repräsentatives Server-Hardware-System, in der bzw. dem ein oder mehrere Aspekte realisiert werden können. Das System 5020 von 20 weist ein repräsentatives Basiscomputersystem 5021 auf, z. B. einen Personal Computer, eine Workstation oder einen Server, das optionale Peripherie-Einheiten enthält. Das Basiscomputersystem 5021 enthält einen oder mehrere Prozessoren 5026 und einen Bus, der zu Verbindungszwecken dient und verwendet wird, um einen Datenaustausch zwischen dem einen oder den mehreren Prozessoren 5026 und den anderen Komponenten des Systems 5021 gemäß bekannten Verfahren zu ermöglichen. Der Bus verbindet den Prozessor 5026 mit einem Speicher 5025 und einem Langzeitspeicher 5027, der beispielsweise ein Festplattenlaufwerk (darunter beispielsweise beliebige von Magnetmedien, CD, DV und Flash-Speicher) oder ein Bandlaufwerk enthält. Das System 5021 könnte auch einen Benutzerschnittstellenadapter enthalten, der den Mikroprozessor 5026 über den Bus mit einer oder mehreren Schnittstelleneinheiten, z. B. eine Tastatur 5024, eine Maus 5023, ein Drucker/Scanner 5030 und/oder andere Schnittstelleneinheiten, verbindet, bei denen es sich um eine beliebige Benutzerschnittstelleneinheit handeln kann, z. B. ein berührungsempfindlicher Bildschirm, ein digitalisiertes Eingabe-Pad usw. Der Bus verbindet darüber hinaus eine Anzeigeeinheit 5022, z. B. einen LCD-Bildschirm oder -Monitor, über einen Anzeigenadapter mit dem Mikroprozessor 5026. 20 FIG. 12 illustrates a representative workstation or representative server hardware system in which one or more aspects may be realized. The system 5020 from 20 has a representative base computer system 5021 on, z. A personal computer, a workstation, or a server containing optional peripheral devices. The basic computer system 5021 contains one or more processors 5026 and a bus for connection purposes and used to exchange data between the one or more processors 5026 and the other components of the system 5021 to allow according to known methods. The bus connects the processor 5026 with a memory 5025 and a long-term store 5027 including, for example, a hard disk drive (including, for example, any of magnetic media, CD, DV, and flash memory) or a tape drive. The system 5021 could also include a user interface adapter that supports the microprocessor 5026 over the bus with one or more interface units, e.g. B. a keyboard 5024 , a mouse 5023 , a printer / scanner 5030 and / or other interface units, which may be any user interface unit, e.g. A touch screen, a digitized input pad, etc. The bus also connects a display unit 5022 , z. As an LCD screen or monitor, via a display adapter with the microprocessor 5026 ,

Das System 5021 kann über einen Netzadapter, der in der Lage ist, mit einem Netz 5029 Daten auszutauschen 5028, mit anderen Computern oder Computernetzen Daten austauschen. Beispielhafte Netzadapter sind Datenübertragungskanäle, Token-Ring, Ethernet oder Modems. Alternativ kann das System 5021 unter Verwendung einer drahtlosen Schnittstelle Daten austauschen, z. B. einer CDPD-Karte (Cellular Digital Packet Data Card). Das System 5021 kann mit solchen anderen Computern in einem lokalen Netz (LAN) oder einem Weitverkehrsnetz (WAN) verbunden sein, oder bei dem System 5021 kann es sich um einen Client in einer Client/Server-Anordnung mit einem weiteren Computer usw. handeln. All diese Konfigurationen sowie die entsprechende Datenübertragungs-Hardware und -Software sind auf dem Gebiet bekannt.The system 5021 can have a network adapter that is capable of using a network 5029 Exchange data 5028 to exchange data with other computers or computer networks. Exemplary network adapters include data channels, token ring, Ethernet, or modems. Alternatively, the system can 5021 exchange data using a wireless interface, e.g. B. a CDPD card (Cellular Digital Packet Data Card). The system 5021 can work with such other computers on a local area network (LAN) or be connected to a wide area network (WAN), or to the system 5021 it can be a client in a client / server configuration with another computer, and so on. All of these configurations as well as the corresponding data transfer hardware and software are known in the art.

21 zeigt ein Datenverarbeitungsnetz 5040, in dem ein oder mehrere Ausführungsformen realisiert sein können. Das Datenverarbeitungsnetz 5040 kann eine Vielzahl von einzelnen Netzen enthalten, z. B. ein Drahtlosnetz und ein leitungsgebundenes Netz, wobei jedes davon eine Vielzahl von einzelnen Workstations 5041, 5042, 5043, 5044 enthalten kann. Wie der Fachmann verstehen wird, können ferner ein oder mehrere LANs enthalten sein, wobei ein LAN eine Vielzahl von intelligenten Workstations enthalten kann, die mit einem Host-Prozessor verbunden sind. 21 shows a data processing network 5040 in which one or more embodiments can be realized. The data processing network 5040 can contain a variety of individual networks, eg. A wireless network and a wired network, each of which is a plurality of individual workstations 5041 . 5042 . 5043 . 5044 may contain. As those skilled in the art will appreciate, one or more LANs may further be included, where a LAN may include a plurality of smart workstations connected to a host processor.

Unter weiterer Bezugnahme auf 21 können die Netze darüber hinaus Mainframe-Computer oder -Server enthalten, z. B. einen Gateway-Computer (Client-Server 5046) oder einen Anwendungs-Server (ferner Server 5048, der auf eine Datenablage zugreifen kann und auf den auch direkt von einer Workstation 5045 zugegriffen werden kann). Ein Gateway-Computer 5046 dient als Eintrittspunkt in jedes einzelne Netz. Ein Gateway wird benötigt, um ein Netzprotokoll mit einem anderen zu verbinden. Das Gateway 5046 kann über eine Datenübertragungsverbindung vorzugsweise mit einem weiteren Netz (z. B. dem Internet 5047) verbunden sein. Das Gateway 5046 kann darüber hinaus über eine Datenübertragungsverbindung direkt mit einer oder mehreren Workstations 5041, 5042, 5043, 5044 verbunden sein. Der Gateway-Computer kann unter Verwendung eines IBM eServer System z Server implementiert werden, der von der International Business Machines Corporation verfügbar ist.With further reference to 21 In addition, the networks may also contain mainframe computers or servers, e.g. B. a gateway computer (client-server 5046 ) or an application server (also server 5048 who can access a data storage and access it directly from a workstation 5045 can be accessed). A gateway computer 5046 serves as an entry point into every single network. A gateway is needed to connect one network protocol to another. The gateway 5046 can preferably be connected to another network (eg the Internet via a data transmission connection) 5047 ). The gateway 5046 In addition, you can have a data transfer connection directly to one or more workstations 5041 . 5042 . 5043 . 5044 be connected. The gateway computer may be implemented using an IBM eServer System z server available from International Business Machines Corporation.

Unter gleichzeitiger Bezugnahme auf 20 und 21 kann vom Prozessor 5026 des Systems 5020 aus Langzeit-Speichermedien 5027, z. B. ein CD-ROM-Laufwerk oder eine Festplattenlaufwerk, auf einen Software-Programmiercode 5031 zugegriffen werden, der eine oder mehrere Aspekte realisieren kann. Der Software-Programmiercode kann auf einer Vielzahl von bekannten Medien zur Verwendung mit einem Datenverarbeitungssystem realisiert werden, z. B. Diskette, Festplattenlaufwerk oder CD-ROM. Der Code kann auf solchen Medien verteilt werden oder kann an Benutzer 5050, 5051 aus dem Speicher eines Computersystems über ein Netzwerk an andere Computersysteme verteilt werden, damit er von Benutzern solcher anderen Systeme verwendet werden kann.With simultaneous reference to 20 and 21 can from the processor 5026 of the system 5020 from long-term storage media 5027 , z. As a CD-ROM drive or a hard disk drive, to a software programming code 5031 be accessed, which can realize one or more aspects. The software programming code may be implemented on a variety of known media for use with a data processing system, e.g. Floppy disk, hard disk drive or CD-ROM. The code can be distributed on such media or can be sent to users 5050 . 5051 be distributed from the memory of a computer system via a network to other computer systems so that it can be used by users of such other systems.

Alternativ kann der Programmiercode im Speicher 5025 enthalten sein, und auf diesen kann durch den Prozessor 5026 über den Prozessorbus zugegriffen werden. Ein solcher Programmiercode beinhaltet ein Betriebssystem, das die Funktion und Interaktion der verschiedenen Computerkomponenten und einer oder mehrere Anwendungsprogramme 5032 steuert. Der Programmcode wird für gewöhnlich aus den Speichermedien 5027 in den Hochgeschwindigkeitsspeicher 5025 ausgelagert, wo er für eine Verarbeitung durch den Prozessor 5026 zur Verfügung steht. Die Techniken und Verfahren zum Einbringen eines Software-Programmiercodes in einen Speicher, auf physische Medien und/oder zum Verteilen von Software-Code über Netze sind hinlänglich bekannt und werden hier nicht weiter erörtert. Der Programmcode, wenn er auf einem konkreten Medium, z. B. elektronische Speichermodule (RAM), Flash-Speicher, Compact Disks (CDs), DVDs, Magnetband und dergleichen, ohne jedoch auf diese beschränkt zu sein) erstellt und gespeichert wird, wird häufig als „Computerprogrammprodukt” bezeichnet. Das Computerprogrammprodukt-Medium ist für gewöhnlich für eine Verarbeitungsschaltung lesbar, vorzugsweise in einem Computersystem für eine Ausführung durch die VerarbeitungsschaltungAlternatively, the programming code may be in memory 5025 be included, and on this can be through the processor 5026 accessed via the processor bus. Such a programming code includes an operating system that controls the function and interaction of the various computer components and one or more application programs 5032 controls. The program code usually gets out of the storage media 5027 in the high-speed memory 5025 outsourced where it is for processing by the processor 5026 is available. The techniques and methods for introducing a software programming code into memory, physical media and / or distributing software code over networks are well known and will not be discussed further here. The program code when used on a concrete medium, e.g. For example, electronic memory modules (RAM), flash memories, compact discs (CDs), DVDs, magnetic tape, and the like, without, however, being limited thereto) is often referred to as a "computer program product." The computer program product medium is usually readable by a processing circuit, preferably in a computer system for execution by the processing circuitry

Der Cachespeicher, der dem Prozessor am schnellsten zur Verfügung steht (für gewöhnlich schneller und kleiner als andere Cachespeicher des Prozessors) ist der Cachespeicher der niedrigsten Ebene (L1 oder Ebene eins) und der Hauptspeicher ist der Cachespeicher der höchsten Ebene (L3, wenn 3 Ebenen vorhanden sind). Der Cachespeicher der niedrigsten Ebene ist häufig in einen Anweisungscachespeicher (I-Cachespeicher), der auszuführende Maschinenanweisungen enthält, und einen Datencachespeicher (D-Cachespeicher) unterteilt, der Datenoperanden enthält.The cache memory that is the fastest available to the processor (usually faster and smaller than other processor's cache memories) is the lowest level cache (L1 or level one) and the main memory is the highest level cache (L3 if 3 levels available). The lowest level cache is often subdivided into an instruction cache (I-cache) containing machine instructions to be executed and a data cache (D-cache) containing data operands.

Unter Bezugnahme auf 22 ist eine beispielhafte Prozessorausführung für den Prozessor 5026 gezeigt. Für gewöhnlich werden eine oder mehrere Ebenen des Cachespeichers 5053 verwendet, um Speicherblöcke zur Verbesserung der Prozessorleistung zu puffern. Der Cachespeicher 5053 ist ein Hochgeschwindigkeitspuffer, der Cachespeicherzeilen von Speicherdaten enthält, deren Verwendung wahrscheinlich ist. Typische Cachespeicherzeilen enthalten 64, 128 oder 256 Bytes von Speicherdaten. Separate Cachespeicher werden häufig zum Zwischenspeichern von Anweisungen und nicht von Daten verwendet. Cachespeicherkohärenz (Synchronisation von Kopien von Zeilen im Speicher und in den Cachespeichern) wird häufig durch verschiedene „Snoop”-Algorithmen bereitgestellt, die auf dem Gebiet der Technik hinlänglich bekannt sind. Der Hauptspeicher 5025 eines Prozessorsystems wird häufig als Cachespeicher bezeichnet. In einem Prozessorsystem mit 4 Ebenen des Cachespeichers 5053 wird der Hauptspeicher 5025 manchmal als Level-5-(L5-)Cachespeicher bezeichnet, da er für gewöhnlich schneller ist und nur einen Teil des nichtflüchtigen Speichers enthält, der für ein Computersystem verfügbar ist. Der Hauptspeicher 5025 speichert Seiten von Daten „zwischen”, die vom Betriebssystem in und aus dem Hauptspeicher 5025 ausgelagert wurden.With reference to 22 is an example processor execution for the processor 5026 shown. Usually one or more levels of cache memory are used 5053 used to buffer memory blocks to improve processor performance. The cache 5053 is a high-speed buffer that contains cache lines of memory data that is likely to be used. Typical cache lines contain 64, 128 or 256 bytes of storage data. Separate caches are often used for caching statements, not data. Cache coherency (synchronization of copies of lines in memory and in the cache memories) is often provided by various "snoop" algorithms, which are well known in the art. The main memory 5025 A processor system is often called a cache memory. In a processor system with 4 levels of cache memory 5053 becomes the main memory 5025 sometimes referred to as Level 5 (L5) cache, since it is usually faster and contains only a portion of the non-volatile memory available to a computer system. The main memory 5025 stores pages of data "between" that are from the operating system in and out of main memory 5025 were outsourced.

Ein Programmzähler (Anweisungszähler) 5061 überwacht die Adresse der aktuellen Anweisung, die es auszuführen gilt. Ein Programmzähler in einem z/Architecture-Prozessor hat eine Größe von 64 Bit und kann auf 31 oder 24 Bit gekürzt werden, um vorherige Adressbeschränkungen zu unterstützen. Ein Programmzähler ist für gewöhnlich in einem PSW (Programmstatuswort) eines Computers realisiert, so dass es während eines Kontextwechsels bestehen bleibt. Somit kann ein Programm, das sich gerade in Ausführung befindet und einen Programmzählerwert aufweist, beispielsweise vom Betriebssystem unterbrochen werden (Kontextwechsel aus der Programmumgebung in die Betriebssystemumgebung). Das PSW des Programms pflegt den Programmzählerwert, während das Programm nicht aktiv ist, und der Programmzähler (im PSW) des Betriebssystems wird verwendet, während das Betriebssystem ausgeführt wird. Für gewöhnlich wird der Programmzähler um einen Betrag erhöht, die gleich der Anzahl von Bytes der aktuellen Anweisung ist. RISC-Anweisungen (Reduced Instruction Set Computing instructions) weisen für gewöhnlich eine feste Länge auf, während CISC-Anweisungen (Complex Instruction Set Computing instructions) für gewöhnlich eine variable Länge besitzen. Anweisungen der IBM-z/Architecture sind CICS-Anweisungen mit einer Länge von 2, 4 oder 6 Byte. Der Programmzähler 5061 wird beispielsweise entweder durch eine Kontextwechseloperation oder eine Verzweigung-durchgeführt-Operation einer Verzweigungsanweisung geändert. Bei einer Kontextwechseloperation wird der aktuelle Programmwert im Programmstatuswort gemeinsam mit anderen Statusinformationen über das Programm gespeichert, das gerade ausgeführt wird (z. B. Bedingungscodes), und ein neuer Programmzählerwert wird geladen, der auf eine Anweisung eines neuen Programmmoduls zeigt, die ausgeführt werden soll. Eine Verzweigung-durchgeführt-Operation wird durchgeführt, um dem Programm zu ermöglichen, Entscheidungen zu treffen oder durch Laden der Ergebnisse der Verzweigungsanweisung in den Programmzähler 5061 eine Schleife innerhalb des Programms auszuführen,.A program counter (statement counter) 5061 monitors the address of the current instruction to be executed. A program counter in a z / architecture processor is 64 bits in size and can be truncated to 31 or 24 bits to support prior address restrictions. A program counter is usually implemented in a PSW (Program Status Word) of a computer so that it persists during a context switch. Thus, a program which is currently in execution and has a program counter value can be interrupted, for example, by the operating system (context switch from the program environment to the operating system environment). The PSW of the program 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. Usually, the program counter is incremented by an amount equal to the number of bytes of the current instruction. Reduced Instruction Set Computing Instructions (RISC) instructions are typically of fixed length, while Complex Instruction Set Computing Instructions (CISC) typically have a variable length. IBM z / Architecture instructions are 2, 4, or 6-byte CICS statements. The program counter 5061 For example, it is changed by either a context switch operation or a branch done operation of a branch instruction. In a context switch operation, the current program value in the program status word is stored along with other status information about the program being executed (eg, condition codes) and a new program counter value is loaded pointing to an instruction of a new program module to be executed , A branch done operation is performed to allow the program to make decisions or by loading the results of the branch instruction into the program counter 5061 to execute a loop within the program.

Für gewöhnlich wird eine Anweisungsabrufeinheit 5055 verwendet, um Anweisungen im Namen des Prozessors 5026 abzurufen. Die Abrufeinheit ruft entweder „nächste sequenzielle Anweisungen”, Zielanweisungen von Verzweigung-durchgeführt-Anweisungen oder erste Anweisungen eines Programms nach einem Kontextwechsel ab. Moderne Anweisungsabrufeinheiten verwenden häufig Abruftechniken, um Anweisungen auf der Grundlage der Wahrscheinlichkeit einer Verwendung der vorabgelesenen Anweisungen spekulativ vorabzulesen. Beispielsweise kann eine Abrufeinheit 16 Bytes einer Anweisung abrufen, die die nächsten sequenziellen Anweisungen enthält, und weitere Bytes weiterer sequenzieller Anweisungen.Usually, an instruction fetch unit becomes 5055 used to statements in the name of the processor 5026 retrieve. The fetch unit retrieves either "next sequential instructions," branch instructions' directional statements, or first instructions of a program after a context switch. Modern instruction fetch units often use fetching techniques to speculate instructions speculatively based on the likelihood of using the pre-fetched instructions. For example, a fetch unit may retrieve 16 bytes of an instruction containing the next sequential instructions, and further bytes of other sequential instructions.

Die abgerufenen Anweisungen werden dann vom Prozessor 5026 ausgeführt. Bei einer Ausführungsform werden die eine oder mehreren abgerufenen Anweisungen an eine Zuteileinheit 5056 der Abrufeinheit weitergeleitet. Die Zuteileinheit entschlüsselt die eine oder mehreren Anweisungen und leitet Informationen zu der einen oder den mehreren Anweisungen an entsprechende Einheiten 5057, 5058, 5060 weiter. Eine Ausführeinheit 5057 empfängt für gewöhnlich Informationen zu entschlüsselten Rechenanweisungen von der Anweisungsabrufeinheit 5055 und führt Rechenoperationen an Operanden gemäß dem Operationscode der Anweisung durch. Operanden werden der Ausführeinheit 5057 vorzugsweise entweder aus dem Speicher 5025, architekturdefinierten Registern 5059 oder einem Direktfeld der Anweisung bereitgestellt, die gerade ausgeführt wird. Ergebnisse der Ausführung werden – falls sie gespeichert werden – entweder im Speicher 5025, in den Registern 5059 oder in anderer Maschinen-Hardware (z. B. Steuerregister, PSW-Register und dergleichen) gespeichert.The retrieved instructions are then processed by the processor 5026 executed. In one embodiment, the one or more retrieved instructions to an allocation unit 5056 forwarded to the polling unit. The dispatch unit decrypts the one or more instructions and directs information to the one or more instructions to corresponding units 5057 . 5058 . 5060 further. An execution unit 5057 typically receives information about decrypted computations from the instruction fetch unit 5055 and performs arithmetic operations on operands according to the operation code of the instruction. Operands become the execution unit 5057 preferably either from the store 5025 , archived registers 5059 or a direct field of the statement being executed. Results of execution, if stored, are either stored in memory 5025 , in the registers 5059 or in other machine hardware (eg, control registers, PSW registers, and the like).

Virtuelle Adressen werden mithilfe einer dynamischen Adressumsetzung 5062 und optional unter Verwendung einer Zugriffsregisterumsetzung 5063 in reale Adressen umgewandelt.Virtual addresses are created using a dynamic address translation 5062 and optionally using an access register translation 5063 converted into real addresses.

Ein Prozessor 5026 weist für gewöhnlich eine oder mehrere Einheiten 5057, 5058, 5060 zum Ausführen der Funktion der Anweisung auf. Unter Bezugnahme auf 23A kann eine Ausführeinheit 5057 über eine Schnittstellenlogik 5071 mit konzipierten allgemeinen Registern 5059, einer Entschlüsselungs/Zuteilungs-Einheit 5056, einer Lade/Speicher-Einheit 5060 und anderen 5065 Prozessoreinheiten Daten austauschen. Eine Ausführeinheit 5057 kann mehrerer Registerschaltungen 5067, 5068, 5069 verwenden, um Daten aufzubewahren, mit denen die arithmetisch-logische Einheit (ALU, Arithmetic Logic Unit) 5066 arbeitet. Die ALU führt Rechenoperationen durch, z. B. Addieren, Subtrahieren, Multiplizieren und Dividieren, sowie eine logische Funktion wie UND, ODER und Exklusives ODER (XOR), Drehen und Verschieben. Vorzugsweise unterstützt die ALU spezielle Operationen, die vom jeweiligen Aufbau abhängig sind. Andere Schaltungen können andere architekturdefinierte Einrichtungen 5072 bereitstellen, die beispielsweise Bedingungscodes und eine Wiederherstellungsunterstützungslogik enthalten. Für gewöhnlich wird das Ergebnis einer ALU-Operation in einer Ausgaberegisterschaltung 5070 aufbewahrt, die das Ergebnis an eine Vielzahl von anderen Verarbeitungsfunktionen weiterleiten kann. Es gibt viele Anordnungen von Prozessoreinheiten, wobei die vorliegende Beschreibung lediglich ein repräsentatives Verständnis einer Ausführungsform bereitstellen soll.A processor 5026 usually has one or more units 5057 . 5058 . 5060 to execute the function of the instruction. With reference to 23A can be an execution unit 5057 via an interface logic 5071 with designed general registers 5059 , a decryption / allocation unit 5056 , a load / store unit 5060 and others 5065 Processor units exchange data. An execution unit 5057 can be multiple register circuits 5067 . 5068 . 5069 use to store data used by the Arithmetic Logic Unit (ALU) 5066 is working. The ALU performs arithmetic operations, e.g. Adding, subtracting, multiplying and dividing, as well as a logical function such as AND, OR and Exclusive OR (XOR), rotate and move. Preferably, the ALU supports special operations that depend on the particular design. Other circuits can other architecture-defined facilities 5072 provide, for example, condition codes and recovery support logic. Usually, the result of an ALU operation is in an output register circuit 5070 which can pass the result to a variety of other processing functions. There are many arrangements of processor units, and the present description is intended to provide only a representative understanding of one embodiment.

Eine ADD-Anweisung beispielsweise wird in einer Ausführeinheit 5057 mit einer Rechen- und logischen Funktionalität ausgeführt, eine Gleitkommaanweisung beispielsweise wird hingegen in einer Gleitkommaausführung mit einer speziellen Gleitkommafunktion ausgeführt. Vorzugsweise führt eine Ausführeinheit Aktionen an Operanden durch, die von einer Anweisung gekennzeichnet werden, indem sie durch einen Operationscode definierte Funktion an den Operanden durchführt. Beispielsweise kann eine ADD-Anweisung von einer Ausführeinheit 5057 an Operanden ausgeführt werden, die in zwei Registern 5059 zu finden sind, die durch die Registerfelder der Anweisung gekennzeichnet werden.For example, an ADD statement will be in an execution unit 5057 For example, a floating-point instruction is executed in a floating point execution with a special floating-point function. Preferably, an execution unit performs actions on operands identified by an instruction by performing a function defined by an operation code to the operand. For example, an ADD instruction may be from an execution unit 5057 be executed on operands that are in two registers 5059 which are identified by the register fields of the instruction.

Die Ausführeinheit 5057 führt die arithmetische Addition an zwei Operanden durch und speichert das Ergebnis in einem dritten Operanden, wobei der dritte Operand ein drittes Register oder eines der beiden Quellregister sein kann. Die Ausführeinheit verwendet vorzugsweis eine arithmetisch-logische Einheit (ALU) 5066, die in der Lage ist, eine Vielzahl von logischen Funktionen wie Verschieben, Drehen, UND, ODER und XOR sowie eine Vielzahl von algebraischen Funktionen, darunter Addieren, Subtrahieren, Multiplizieren und Dividieren, auszuführen. Einige ALUs 5066 sind für skalare Operationen und einige für Gleitkomma konzipiert. Die Daten können in Abhängigkeit von der Architektur entsprechend Big-Endian (wobei das niedrigstwertige Byte an der Adresse des höchstwertigsten Byte liegt) oder Little Endian (wobei das niedrigstwertige Byte an der Adresse des niedrigstwertigen Byte liegt) angeordnet sein. Die IBM z/Architecture ist Big Endian. Vorzeichenbehaftete Felder können je nach Architektur ein Vorzeichen und eine Größenordnung, ein Einerkomplement oder ein Zweierkomplement sein. Eine Zweikomplement-Zahl ist dahingehend vorteilhaft, dass die ALU keine Subtrahierfunktion entwickeln muss, da ein negativer Wert oder ein positiver Wert in einem Zweierkomplement nur eine Addition innerhalb der ALU erfordert. Zahlen werden für gewöhnlich in Kurzform beschrieben, wobei ein 12-Bit-Feld eine Adresse aus einem 4096-Byte-Block definiert und beispielsweise für gewöhnlich als ein 4-KByte-(Kilobyte-)Block beschrieben wird.The execution unit 5057 performs the arithmetic addition on two operands and stores the result in a third operand, where the third operand may be a third register or one of the two source registers. The execution unit preferably uses an arithmetic logic unit (ALU) 5066 capable of performing a variety of logical functions such as shift, rotate, AND, OR, and XOR, as well as a variety of algebraic functions including adding, subtracting, multiplying, and dividing. Some ALUs 5066 are designed for scalar operations and some for floating point. The data may be big-endian (the least significant byte is at the most significant byte address) or little endian (where the least significant byte is the least significant byte address), depending on the architecture. The IBM z / Architecture is Big Endian. Signed fields may be a sign and magnitude, one's complement, or two's complement, depending on the architecture. A two's complement number is advantageous in that the ALU does not need to develop a subtract function since a negative value or a positive value in a two's complement requires only one addition within the ALU. Numbers are commonly described in shorthand, where a 12-bit field defines an address from a 4096-byte block and is typically described as a 4-kilobyte (KB) block, for example.

Unter Bezugnahme auf 23B werden Verzweigungsanweisungsinformationen zum Ausführen einer Verzweigungsanweisung für gewöhnlich an eine Verzweigungseinheit 5058 gesendet, die häufig einen Verzweigungsvorhersagealgorithmus wie z. B. eine Verzweigungsverlaufstabelle 5082 verwendet, um das Ergebnis einer Verzweigung vorherzusagen, bevor andere bedingte Operationen ausgeführt wurden. Das Ziel der aktuellen Verzweigungsanweisung wird abgerufen und spekulativ ausgeführt, bevor die bedingten Operationen ausgeführt wurden. Wenn die bedingten Operationen ausgeführt wurden, wurden die spekulativ ausgeführten Verzweigungsanweisungen entweder ausgeführt oder sie werden auf der Grundlage der Bedingungen der bedingten Operation und des spekulierten Ergebnisses verworfen. Eine typische Verzweigungsanweisung kann Bedingungscodes testen und zu einer Zieladresse verzweigen, wenn die Bedingungscodes die Verzweigungsanforderung der Verzweigungsanweisung erfüllen, eine Zieladresse kann auf der Grundlage mehrerer Zahlen berechnet werden, beispielsweise in den Registerfeldern oder einem Direktfeld zu findende Zahlen. Die Verzweigungseinheit 5058 kann eine ALU 5074 verwenden, die eine Vielzahl von Eingaberegisterschaltungen 5075, 5076, 5077 und einen Ausgaberegisterschaltung 5080 aufweist. Die Verzweigungseinheit 5058 kann Daten beispielsweise mit allgemeinen Registern 5059, einer Entschlüsselungszuteileinheit 5056 oder anderen Schaltungen 5073 austauschen 5081.With reference to 23B Branching instruction information for executing a branch instruction is usually sent to a branch unit 5058 which often use a branch prediction algorithm such as B. a branch history table 5082 used to predict the outcome of a branch before other conditional operations were performed. The target of the current branch instruction is retrieved and executed speculatively before the conditional operations have been performed. When the conditional operations have been performed, the speculatively executed branch instructions were either executed or discarded based on the conditions of the conditional operation and the speculated result. A typical branch instruction may test condition codes and branch to a destination address if the condition codes satisfy the branch instruction branch request, a destination address may be calculated based on a plurality of numbers, such as numbers found in the register fields or a direct field. The branching unit 5058 can an ALU 5074 use a variety of input register circuits 5075 . 5076 . 5077 and an output register circuit 5080 having. The branching unit 5058 can, for example, data with general registers 5059 a decryption unit 5056 or other circuits 5073 change 5081 ,

Das Ausführen einer Gruppe von Anweisungen kann aus diversen Gründen unterbrochen werden, beispielsweise durch einen Kontextwechsel, eingeleitet durch ein Betriebssystem, eine Programmausnahme oder einen Fehler, der einen Kontextwechsel verursacht, ein E/A-Unterbrechungssignal, das einen Kontextwechsel verursacht oder eine Multithreading-Aktivität einer Vielzahl von Programmen (in eine Multithread-Umgebung). Vorzugsweise speichert eine Kontextwechselaktion Statusinformationen über ein Programm, das aktuell ausgeführt wird, und lädt danach Statusinformationen über ein anderes Programm ein, das aufgerufen wird. Statusinformationen können beispielsweise in Hardware-Registern oder im Speicher gespeichert werden. Statusinformationen beinhalten vorzugsweise einen Programmzählerwert, der auf eine nächste auszuführende Anweisung, Bedingungscodes, Speicherumsetzinformationen und architekturdefinierten Registerinhalte zeigt. Eine Kontextwechselaktivität kann von Hardware-Schaltungen, Anwendungsprogrammen, Betriebssystemprogrammen oder Firmware-Code (Mikrocode, Picocode oder lizensierter interner Code (LIC) alleine oder in Kombination ausgeführt werden.Execution of a set of instructions may be interrupted for a variety of reasons, such as a context switch initiated by an operating system, a program exception or an error causing a context switch, an I / O interrupt signal causing a context switch, or a multithreading activity a variety of programs (in a multithreaded environment). Preferably, a context switch action stores status information about a program that is currently executing, and then loads status information about another program being invoked. Status information can be stored, for example, in hardware registers or in memory. Status information preferably includes a program counter value that points to a next instruction to be executed, condition codes, memory translation information, and architected register contents. A context switching activity may be performed by hardware circuits, application programs, operating system programs, or firmware code (microcode, picocode, or licensed internal code (LIC) alone or in combination.

Ein Prozessor greift gemäß durch Anweisungen definierten Verfahren auf Operanden zu. Die Anweisung kann unter Verwendung eines Werts eines Teils der Anweisung einen Direktoperanden bereitstellen, kann ein oder mehrere Registerfelder bereitstellen, die explizit auf Universalregister oder architekturdefinierte Register (z. B. Gleitkommaregister) zeigen. Die Anweisung kann implizierte Register verwenden, die von einem Operationscodefeld als Operanden gekennzeichnet sind. Die Anweisung kann Speicherorte für Operanden verwenden. Ein Speicherort eines Operanden kann von einem Register, einem Direktfeld oder einer Kombination aus Registern und Direktfeldern bereitgestellt werden, wie durch die Langverschiebungseinrichtung der z/Architecture beispielhaft gezeigt, wobei die Anweisung beispielsweise ein Basisregister, ein Indexregister und ein Direktfeld (Verschiebungsfeld) definiert, die addiert werden, um die Adresse des Operanden im Speicher bereitzustellen. Speicherorte hierin implizieren für gewöhnlich einen Speicherort im Hauptspeicher sofern nicht anderweitig angegeben. A processor accesses operands according to instructions defined by instructions. The instruction may provide a direct operand using a value of a portion of the instruction, may provide one or more register fields that explicitly point to general purpose registers or architected registers (eg, floating point registers). The instruction may use implied registers identified by an opcode field as operands. The instruction can use memory locations for operands. A location of an operand may be provided by a register, a direct field, or a combination of registers and immediate fields, as exemplified by the z / Architecture long shifter, the instruction defining, for example, a base register, an index register, and a direct field (shift field) are added to provide the address of the operand in memory. Locations herein typically involve a memory location in main memory unless otherwise specified.

Unter Bezugnahme auf 23C greift ein Prozessor unter Verwendung einer Lade/Speicher-Einheit 5060 auf Speicher zu. Die Lade/Speicher-Einheit 5060 kann eine Ladeoperation durchführen, indem sie die Adresse des Zieloperanden im Speicher 5053 erhält und den Operanden in einen Register 5059 oder einen anderen Speicherort eines Speichers 5053 lädt, oder sie kann eine Speicheroperation durchführen, indem sie die Adresse des Zieloperanden im Speicher 5053 erhält und aus einem Register 5059 oder einem anderen Speicherort eines Speichers 5053 erhaltene Daten im Ziel-Operanden-Speicherort im Speicher 5053 speichert. Die Lade/Speicher-Einheit 5060 kann spekulativ sein und auf Speicher in einer Abfolge zugreifen, die in Bezug auf die Anweisungsabfolge nichtsequenziell ist, allerdings muss die Lade/Speicher-Einheit 5060 gegenüber anderen Programmen den Anschein wahren, dass Anweisungen gemäß der Abfolge ausgeführt werden. Eine Lade/Speicher-Einheit 5060 kann Daten mit allgemeinen Registern 5059, Entschlüsselungs/Zuteilungs-Einheit 5056, Cachespeicher/Arbeitsspeicher-Schnittstelle 5053 oder anderen Elementen 5083 austauschen 5084 und beinhaltet verschiedene Registerschaltungen 5086, 5087, 5088 und 5089, ALUs 5085 und eine Steuerlogik 5090, um Speicheradressen zu berechnen und eine Pipeline-Sequenzierung bereitstellen, um Operation sequenziell zu halten. Einige Operationen können nichtsequenziell sein, aber die Lade/Speicher-Einheit stellt eine Funktionalität bereit, mit der die nichtsequenziellen Operationen gegenüber dem Programm als sequenziell durchgeführt darzustellen, wie auf dem Gebiet der Technik hinlänglich bekannt.With reference to 23C a processor accesses using a load / store unit 5060 on memory too. The load / store unit 5060 can perform a load operation by storing the address of the destination operand in memory 5053 gets and the operand in a register 5059 or another location of a memory 5053 or it can perform a memory operation by storing the address of the destination operand in memory 5053 receives and from a register 5059 or another location of a memory 5053 received data in the destination operand location in memory 5053 stores. The load / store unit 5060 may be speculative and access memory in a sequence that is non-sequential with respect to the instruction sequence, however, the load / store unit must 5060 to maintain the appearance, relative to other programs, that instructions are being executed according to the sequence. A loading / storage unit 5060 can data with general registers 5059 , Decryption / Allocation Unit 5056 , Cache / memory interface 5053 or other elements 5083 change 5084 and includes various register circuits 5086 . 5087 . 5088 and 5089 , ALUs 5085 and a control logic 5090 to compute memory addresses and provide pipeline sequencing to keep operation sequential. Some operations may be non-sequential, but the load / store unit provides functionality to represent the non-sequential operations to the program as being sequential, as is well known in the art.

Vorzugsweise werden Adressen, die ein Anwendungsprogramm „sieht”, als virtuelle Adressen bezeichnet. Virtuelle Adressen werden manchmal als „logische Adressen” und „effektive Adressen” bezeichnet. Diese virtuellen Adressen sind dahingehend virtuell, dass sie von einer Vielzahl von Technologien zur dynamischen Adressumsetzung (DAT) an einen physischen Speicherort umgeleitet werden, beispielsweise durch einfaches Voranstellen eines Korrekturwerts vor eine virtuelle Adresse, Umsetzen der virtuellen Adresse über eine oder mehrere Umsetztabellen, wobei die Umsetztabellen vorzugsweise zumindest eine Segmenttabelle und eine Seitentabelle allein oder in Kombination beinhalten, ohne jedoch darauf beschränkt zu sein, wobei die Segmenttabelle vorzugsweise einen Eintrag aufweist, der auf die Seitentabelle zeigt. Bei der z/Architecture wird eine Umsetzhierarchie bereitgestellt, eine Region-eins-Tabelle, eine Region-zwei-Tabelle, eine Region-drei-Tabelle, eine Segmenttabelle und eine optionale Seitentabelle enthält. Die Leistung der Adressumsetzung wird häufig durch Verwenden eines Adressumsetzpuffers (TLB) verbessert, der Einträge beinhaltet, die eine virtuelle Adresse an einen zugehörigen physischen Speicherorts zuordnen. Die Einträge werden erstellt, wenn die DAT eine virtuelle Adresse unter Verwendung der Umsetztabellen umsetzt. Eine darauffolgende Verwendung der virtuellen Adresse kann danach den Eintrag der schnellsten TLB statt der langsamen sequenziellen Umsetztabellenzugriffe heranziehen. Der TLB-Inhalt kann durch eine Vielzahl von Ersatzalgorithmen verwaltet werden, darunter LRU (am längsten nicht verwendet – least recently used).Preferably, addresses "seen" by an application program are referred to as virtual addresses. Virtual addresses are sometimes referred to as "logical addresses" and "effective addresses". These virtual addresses are virtual in that they are redirected to a physical location by a variety of dynamic address translation (DAT) technologies, for example, by simply prefixing a virtual address with a correction value, translating the virtual address over one or more translation tables, the Conversion tables preferably include, but are not limited to, at least one segment table and page table, alone or in combination, with the segment table preferably having an entry pointing to the page table. The z / Architecture provides a transform hierarchy that includes a region one table, a region two table, a region three table, a segment table, and an optional page table. Address translation performance is often improved by using an address translation buffer (TLB) that includes entries that map a virtual address to an associated physical memory location. The entries are created when the DAT translates a virtual address using the translation tables. Subsequent use of the virtual address may then use the entry of the fastest TLB instead of the slow sequential translation table accesses. The TLB content can be managed by a variety of replacement algorithms, including LRU (least recently used).

Wenn es sich bei dem Prozessor um einen Prozessor eines Multiprozessorsystems handelt, hat jeder Prozessor die Aufgabe, gemeinsam genutzte Ressourcen wie E/A, Cachespeicher, TLBs und Speicher zu halten, die der Kohärenz wegen gesperrt sind. Für gewöhnlich werden „Snoop”-Technologien beim Aufrechterhalten der Cachespeicherkohärenz verwendet. Bei einer Snoop-Umgebung kann jede Cachespeicherzeile als in einem gemeinsam genutzten Status, einem exklusiven Status, einem veränderten Status, einem ungültigen Status und dergleichen befindlich gekennzeichnet werden, um die gemeinsame Nutzung zu erleichtern.When the processor is a multiprocessor system processor, each processor has the task of holding shared resources such as I / O, caches, TLBs, and memory that are locked for coherence. Typically, "snoop" technologies are used to maintain cache coherency. In a snoop environment, each cache line may be designated as being in shared status, exclusive status, changed status, invalid status, and the like to facilitate sharing.

Die E/A-Einheiten 5054 (22) stellen für den Prozessor ein Mittel zum Anschließen an Peripherie-Einheiten wie z. B. Band, Platte, Drucker, Anzeigen und Netze bereit. E/A-Einheiten werden dem Computerprogramm häufig durch Software-Treiber präsentiert. Bei Mainframes wie dem System z von IBM® sind Kanaladapter und Adapter offener Systeme E/A-Einheiten des Mainframe, die den Datenaustausch zwischen dem Betriebssystem und Peripherie-Einheiten bereitstellen.The I / O units 5054 ( 22 ) provide a means for the processor to connect to peripheral devices such as a computer. As tape, disk, printer, displays and networks ready. I / O units are often presented to the computer program by software drivers. For mainframes such as IBM ® System z, channel adapters and open system adapters are mainframe I / O units that provide data exchange between the operating system and peripheral devices.

Darüber hinaus können andere Typen von Datenverarbeitungsumgebungen aus einem oder mehreren Aspekten Nutzen ziehen. Beispielsweise kann eine Umgebung einen Emulator (z. B. Software oder andere Emulationsmechanismen) enthalten, wobei eine bestimmte Architektur (z. B. Anweisungsausführung, architekturdefinierte Funktionen wie Adressumsetzung und s architekturdefinierte Register) oder ein Teilsatz davon emuliert wird (z. B. auf einem nativen Computersystem mit einem Prozessor und einem Speicher). Bei einer solchen Ausführungsform können eine oder mehrere Emulationsfunktionen des Emulators eine oder mehrere Ausführungsformen implementieren, auch wenn ein den Emulator ausführender Computer eine andere Architektur als die Funktionen aufweisen kann, die emuliert werden. Im Emulationsmodus beispielsweise wird die spezifische Anweisung oder Operation, die emuliert wird, entschlüsselt und eine entsprechende Emulationsfunktion wird erstellt, um die einzelne Anweisung oder Operation zu implementieren. In addition, other types of computing environments may benefit from one or more aspects. For example, an environment may include an emulator (eg, software or other emulation mechanisms) that emulates a particular architecture (eg, instruction execution, architecture-defined functions such as address translation and s architecture-defined registers) or a subset thereof (e.g. a native computer system with a processor and memory). In such an embodiment, one or more emulation functions of the emulator may implement one or more embodiments, even though a computer executing the emulator may have a different architecture than the functions being emulated. For example, in emulation mode, the specific instruction or operation being emulated is decrypted and a corresponding emulation function is created to implement the single instruction or operation.

Bei einer Emulationsumgebung enthält ein Host-Computer beispielsweise einen Speicher, um Anweisungen und Daten zu speichern; eine Anweisungsabrufeinheit, um Anweisungen aus dem Speicher abzurufen und optional eine lokale Pufferung für die abgerufene Anweisung bereitzustellen; eine Anweisungsentschlüsselungseinheit, um die abgerufenen Anweisungen zu empfangen und den Typ der Anweisungen zu ermitteln, die abgerufen wurden; und eine Anweisungsausführeinheit, um die Anweisungen auszuführen. Das Ausführen kann ein Laden von Daten aus einem Speicher in ein Register; Speichern von Daten aus einem Register zurück in den Speicher; oder Durchführen eines Typs einer arithmetischen oder logischen Operation beinhalten, wie es durch die Entschlüsselungseinheit festgelegt wird. Bei einem Beispiel wird jede Einheit in Software implementiert. Beispielsweise werden die von den Einheiten durchgeführten Operationen als eine oder mehrere Teilroutinen innerhalb einer Emulator-Software implementiert.For example, in an emulation environment, a host computer includes memory for storing instructions and data; an instruction fetch unit for fetching instructions from memory and optionally providing local buffering for the fetched instruction; an instruction decryption unit to receive the fetched instructions and determine the type of instructions that were fetched; and an instruction execution unit to execute the instructions. The execution may involve loading data from a memory into a register; Storing data from a register back into memory; or performing a type of arithmetic or logical operation as determined by the decryption unit. In one example, each unit is implemented in software. For example, the operations performed by the units are implemented as one or more subroutines within emulator software.

Bei einem Mainframe werden insbesondere architekturdefinierte Maschinenanweisungen von Programmierern, heutzutage für gewöhnlich „C”-Programmierer, verwendet, häufig mithilfe einer Compiler-Anwendung. Diese im Speichermedium gespeicherten Anweisungen können nativ in einem z/Architecture IBM® Server oder alternativ in Maschinen ausgeführt werden, die andere Architekturen ausführen. Sie können in den bestehenden und künftigen IBM® Mainframe-Servern und auf anderen Maschinen von IBM® (z. B. Power Systems-Server und System x-Server) emuliert werden. Sie können in Maschinen, die Linux ausführen, auf einer Vielzahl von Maschinen unter Verwendung von Hardware ausgeführt werden, die von IBM®, Intel®, AMD und anderen hergestellt wird. Neben dem Ausführen auf dieser Hardware unter einer z/Architecture kann Linux verwendet werden sowie Emulation nutzende Maschinen von Hercules, UMX oder FSI (Fundamental Software, Inc), die Emulation verwenden, wobei das Ausführen im Allgemeinen in einem Emulationsmodus erfolgt. Im Emulationsmodus wird eine Emulations-Software von einem nativen Prozessor ausgeführt, um die Architektur eines emulierten Prozessors zu emulieren.In a mainframe, in particular, architecture-defined machine instructions are used by programmers, nowadays usually "C" programmers, often using a compiler application. These instructions stored in the storage medium can be natively executed on a z / Architecture IBM® server or, alternatively, on machines running other architectures. They can be emulated on existing and future IBM® mainframe servers and on other IBM® machines (such as Power Systems servers and System x servers). You can run machines running Linux on a variety of machines using hardware manufactured by IBM® , Intel® , AMD, and others. In addition to running on this hardware on a z / Architecture, Linux can use emulation-utilizing machines from Hercules, UMX, or FSI (Fundamental Software, Inc), which generally run in an emulation mode. In emulation mode, emulation software is executed by a native processor to emulate the architecture of an emulated processor.

Der native Prozessor führt für gewöhnlich eine Emulations-Software aus, die entweder Firmware oder ein natives Betriebssystem aufweist, um eine Emulation des emulierten Prozessors durchzuführen. Die Emulations-Software hat die Aufgabe, Anweisungen der emulierten Prozessorarchitektur abzurufen und auszuführen. Die Emulations-Software pflegt einen emulierten Programmzähler, um Anweisungsgrenzen zu überwachen. Die Emulations-Software kann jeweils eine oder mehrere emulierte Maschinenanweisungen gleichzeitig abrufen und die eine oder mehreren emulierten Maschinenanweisungen an eine entsprechende Gruppe nativer Maschinenanweisungen zur Ausführung durch den nativen Prozessor umwandeln. Diese umgewandelten Anweisungen können zwischengespeichert werden, so dass ein schnelleres Umwandeln erzielt werden kann. Nichtsdestotrotz muss die Emulations-Software die Architekturregeln der emulierten Prozessorarchitektur pflegen, um sicherzustellen, dass Betriebssysteme und für den emulierten Prozessor geschriebene Anwendungen korrekt arbeiten. Darüber hinaus muss die Emulations-Software Ressourcen bereitstellen, die von der emulierten Prozessorarchitektur gekennzeichnet werden, beispielsweise Steuerregister, Universalregister, Gleitkommaregister, Funktion der dynamischen Adressumsetzung, darunter beispielsweise Segmenttabellen und Seitentabellen, Unterbrechungsmechanismen, Kontextwechselmechanismen, Tageszeituhren und architekturdefinierte Schnittstellen zu E/A-Teilsystemen, so dass ein Betriebssystem oder ein zur Ausführung auf dem emulierten Prozessor entwickeltes Anwendungsprogramm auf dem nativen Prozessor, der die Emulations-Software aufweist, ausgeführt werden kann, ohne jedoch darauf beschränkt zu sein.The native processor typically executes emulation software that has either firmware or a native operating system to perform emulation of the emulated processor. The emulation software has the task of retrieving and executing instructions of the emulated processor architecture. The emulation software maintains an emulated program counter to monitor statement boundaries. The emulation software may concurrently retrieve one or more emulated machine instructions and convert the one or more emulated machine instructions to a corresponding set of native machine instructions for execution by the native processor. These converted instructions can be cached so that faster conversion can be achieved. Nonetheless, the emulation software must maintain the architecture rules of the emulated processor architecture to ensure that operating systems and applications written for the emulated processor operate correctly. In addition, the emulation software must provide resources designated by the emulated processor architecture, such as control registers, general purpose registers, floating point registers, dynamic address translation functionality including, for example, segment tables and page tables, interrupt mechanisms, context switch mechanisms, time of day clocks, and architecture-defined interfaces to I / O subsystems so that an operating system or application program developed for execution on the emulated processor may be executed on the native processor having the emulation software, but is not limited thereto.

Eine spezifische Anweisung, die emuliert wird, wird entschlüsselt, und eine Teilroutine wird aufgerufen, um die Funktion der einzelnen Anweisung durchzuführen. Eine Emulations-Software-Funktion, die eine Funktion eines emulierten Prozessors emuliert, wird beispielsweise in einer „C”-Teilroutine oder einem „C”-Treiber oder einem anderen Verfahren zum Bereitstellen eines Treibers für die spezifische Hardware implementiert, was der Fachmann nachvollziehen kann, wenn er die Beschreibung der bevorzugten Ausführungsform verstanden hat. In verschiedenen Patentschriften zu Software- und Hardware-Emulation, darunter US-Patentschrift Nr. 5 551 013 mit dem Titel „Multiprocessor for Hardware Emulation” von Beausoleil et al.; und US-Patentschrift Nr. 6 009 261 mit dem Titel „Preprocessing of Stored Target Routines for Emulating Incompatible Instructions an a Target Processor” von Scalzi et al.; und US-Patentschrift Nr. 5 574 873 mit dem Titel „Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions” von Davidian et al.; und US-Patentschrift Nr. 6 308 255 mit dem Titel „Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System” von Gorishek et al.; und US-Patentschrift Nr. 6 463 582 mit dem Titel „Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method” von Lethin et al.; und US-Patentschrift Nr. 5 790 825 mit dem Titel „Method for Emulating Guest Instructions an a Host Computer Through Dynamic Recompilation of Host Instructions” von Eric Traut, ohne jedoch auf diese beschränkt zu sein, wobei jedes davon hier durch Bezugnahme in seiner Gesamtheit aufgenommen ist; und viele andere wird eine Vielfalt von bekannten Wegen veranschaulicht, um eine Emulation eines Anweisungsformats zu erzielen, das für eine unterschiedliche Maschine für eine Zielmaschine konzipiert ist, die dem Fachmann zur Verfügung steht.A specific instruction being emulated is decrypted, 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 "C" subroutine or "C" driver or other method of providing a driver for the specific hardware, as will be understood by those skilled in the art if he has understood the description of the preferred embodiment. In various patents relating to software and hardware emulation, including U.S. Patent No. 5,551,013 entitled "Multiprocessor for Hardware Emulation" by Beausoleil et al .; and U.S. Patent No. 6,009,261 entitled "Preprocessing of Stored Target Routines for Emulating Incompatible Instructions to a Target Processor" by Scalzi et al .; and U.S. Patent No. 5,574,873 entitled "Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions" by Davidian et al .; and U.S. 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 U.S. 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 to a Host Computer Through Dynamic Recompilation of Host Instructions" by, but not limited to, Eric Traut, each of which is incorporated herein by reference in its entirety; and many others illustrate a variety of known ways to achieve an emulation of an instruction format designed for a different machine for a target machine available to those skilled in the art.

In 24 ist ein Beispiel für ein emuliertes Host-Computersystem 5092 bereitgestellt, das ein Host-Computersystem 5000' einer Host-Architektur emuliert. Im emulierten Host-Computersystem 5092 ist der Host-Prozessor (CPU) 5091 ein emulierter Host-Prozessor (oder ein virtueller Host-Prozessor) und weist einem Emulationsprozessor 5093 mit einer anderen nativen Anweisungssatzarchitektur als jene des Prozessors 5091 des Host-Computers 5000' auf. Das emulierte Host-Computersystem 5092 weist einen Speicher 5094 auf, der für den Emulationsprozessor 5093 zugänglich ist. Bei der beispielhaften Ausführungsform ist der Speicher 5094 in einen Abschnitt eines Host-Computerspeichers 5096 und einen Abschnitt von Emulationsroutinen 5097 partitioniert. Der Host-Computerspeicher 5096 ist für Programme des emulierten Host-Computers 5092 gemäß der Host-Computerarchitektur verfügbar. Der Emulationsprozessor 5093 führt native Anweisungen eines architekturdefinierten Anweisungssatzes einer Architektur aus, bei der es sich nicht um jener des emulierten Prozessors 5091 handelt, wobei die nativen Anweisungen aus einem Emulationsroutinenspeicher 5097 erhalten werden, und kann auf eine Host-Infrastruktur zur Ausführung aus einem Programm in einem Host-Computerspeicher 5096 durch Anwenden einer oder mehrerer Anweisungen zugreifen, die in einer Abfolge-und-Zugriff/Entschlüsselungsroutine erhalten werden, die die eine oder mehreren Host-Anweisungen entschlüsseln, auf die zugegriffen wird, um eine native Anweisungsausführungsroutine zum Emulieren der Funktion der Host-Anweisung zu ermitteln, auf die zugegriffen wird. Andere Einrichtungen, die für die Architektur des Host-Computersystems 5000' definiert sind, können durch architekturdefinierte Einrichtung-Routinen emuliert werden, darunter beispielsweise Einrichtungen wie Universalregister, Steuerregister, dynamische Adressumsetzung und E/A-Teilsystem-Unterstützung sowie Prozessorcachespeicher. Die Emulationsroutinen können auch Funktionen nutzen, die im Emulationsprozessor 5093 verfügbar sind (z. B. allgemeine Register und dynamische Umsetzung von virtuellen Adressen), um die Leistung der Emulationsroutinen zu verbessern. Spezielle Hardware und Auslagerungsmodule können auch bereitgestellt werden, um den Prozessor 5093 beim Emulieren der Funktion des Host-Computers 5000' zu unterstützen.In 24 is an example of an emulated host computer system 5092 provided a host computer system 5000 ' emulated a host architecture. In the emulated host computer system 5092 is the host processor (CPU) 5091 an emulated host processor (or virtual host processor) and has an emulation processor 5093 with a different native instruction set architecture than that of the processor 5091 of the host computer 5000 ' on. The emulated host computer system 5092 has a memory 5094 on that for the emulation processor 5093 is accessible. In the exemplary embodiment, the memory is 5094 into a section of a host computer memory 5096 and a section of emulation routines 5097 partitioned. The host computer memory 5096 is for programs of the emulated host computer 5092 available according to the host computer architecture. The emulation processor 5093 executes native statements of an architectural instruction set of an architecture other than the emulated processor 5091 where the native instructions are from an emulation routine memory 5097 can be obtained, and may refer to a host infrastructure for execution from a program in a host computer memory 5096 by accessing one or more instructions received in a sequence-and-access / decryption routine that decrypt the one or more host instructions that are accessed to determine a native instruction execution routine for emulating the function of the host instruction that is accessed. Other facilities responsible for the architecture of the host computer system 5000 ' may be emulated by architecture-defined device routines, including, for example, devices such as general purpose registers, control registers, dynamic address translation and I / O subsystem support, and processor cache memory. The emulation routines can also use functions that are in the emulation processor 5093 available (eg general registers and dynamic translation of virtual addresses) to improve the performance of the emulation routines. Special hardware and swap modules can also be provided to the processor 5093 when emulating the function of the host computer 5000 ' to support.

Die hier verwendete Terminologie dient lediglich der Beschreibung bestimmter Ausführungsformen und soll nicht einschränkend sein. Wie hier verwendet, sollen die Singularformen von Artikeln wie „ein” und „der” auch die Pluralformen mit einschließen, außer wenn der Kontext es eindeutig anders vorgibt. Es sei ferner verstanden, dass die Ausdrücke „weist auf” und/oder „aufweisend”, wie in dieser Schrift verwendet, das Vorhandensein von angegebenen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten festlegen, das Vorhandensein oder das Hinzufügen von einem/r oder mehreren anderen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon jedoch nicht ausschließen.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used herein, the singular forms of articles such as "a" and "the" are also intended to include the plural forms unless the context clearly dictates otherwise. It should also be understood that the terms "pointing" and / or "having" as used in this specification define the presence of indicated features, integers, steps, operations, elements and / or components, presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.

Die entsprechenden Strukturen, Materialien, Aktionen und sämtliche Mittel oder Schritt-plus-Funktion-Elemente in den folgenden Ansprüchen sollen jedwede Struktur, jedwedes Material oder jedwede Aktion für das Durchführen der Funktion in Kombination mit anderen beanspruchten Elementen, wie spezifisch beansprucht, beinhalten. Die Beschreibung der vorliegenden Erfindung ist zum Zwecke der Veranschaulichung und Beschreibung dargeboten, soll jedoch nicht als ausschöpfend oder die Erfindung in der offenbarten Form einschränkend verstanden werden. Für den Fachmann sind viele Änderungen und Variationen ersichtlich, ohne sich vom Umfang und Geist der Erfindung zu entfernen. Die Ausführungsform wurde gewählt und beschrieben, um diverse Aspekte der Erfindung und die praktische Anwendung bestmöglich zu erläutern und um anderen Fachleuten zu ermöglichen, die Erfindung in verschiedenen Ausführungsformen mit verschiedenen Änderungen, wie sie sich für die bestimmte vorgesehene Verwendung eignen, zu verstehen.The corresponding structures, materials, acts, and any means or step-plus-function elements in the following claims are intended to include any structure, material, or action for performing the function in combination with other claimed elements as specifically claimed. The description 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 to the form disclosed. Many changes and variations will be apparent to those skilled in the art without departing from the scope and spirit of the invention. The embodiment has been chosen and described in order to best explain various aspects of the invention and practical application, and to enable others skilled in the art to understand the invention in various embodiments with various changes as appropriate to the particular intended use.

ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturCited patent literature

  • US 5551013 [0412] US 5551013 [0412]
  • US 6009261 [0412] US6009261 [0412]
  • US 5574873 [0412] US 5574873 [0412]
  • US 6308255 [0412] US 6308255 [0412]
  • US 6463582 [0412] US 6463582 [0412]
  • US 5790825 [0412] US 5790825 [0412]

Zitierte Nicht-PatentliteraturCited non-patent literature

  • „z/Architecture – Principles of Operation”, Veröffentlichungsnummer SA22-7932-08, 9. Ausgabe, August 2010 [0059] "Z / Architecture - Principles of Operation", publication number SA22-7932-08, 9th edition, August 2010 [0059]

Claims (11)

Verfahren zum Erleichtern einer Verarbeitung innerhalb einer Datenverarbeitungsumgebung, wobei das Verfahren aufweist: Verfolgen durch einen Prozessor der Datenverarbeitungsumgebung, wie oft eine innerhalb des Prozessors ausgeführte Transaktion abgebrochen wird, wobei die Transaktion ein Festschreiben von transaktionsorientierten Speichervorgängen in den Hauptspeicher bis zum Ausführen einer ausgewählten Transaktion effektiv verzögert; und Verfolgen unter Verwendung eines Zählers innerhalb des Prozessors, um die Anzahl von Abbrüchen zu verfolgen, Ermitteln, ob die Transaktion erfolgreich ausgeführt wurde; auf der Grundlage der erfolgreichen Ausführung der Transaktion automatisches Zurücksetzen des Zählers auf einen vorab festgelegten Wert; und und auf der Grundlage des Abbruchs einer Transaktion automatisches Zurücksetzen des Zählers auf einen vorab definierten Wert auf der Grundlage von einem des Folgenden: Erreichen eines Schwellenwerts durch den Zähler für Abbrüche der Transaktion, die bewirken, dass eine Unterbrechung der Transaktion dargeboten wird; oder Darbieten einer Unterbrechung der Transaktion, wobei die Transaktion nicht erneut ausgeführt wird.A method of facilitating processing within a computing environment, the method comprising: Tracking, by a processor of the computing environment, how often a transaction executed within the processor is aborted, the transaction effectively delaying commit of transaction-oriented stores to main memory until a selected transaction is executed; and tracking, using a counter within the processor to track the number of aborts, determining whether the transaction has been successfully completed; automatically resetting the counter to a predetermined value based on the successful execution of the transaction; and and on the basis of aborting a transaction, automatically resetting the counter to a predefined value based on one of the following: Reaching a threshold by the transaction abort counter that causes the transaction to be suspended; or Present an interruption of the transaction, but the transaction will not be executed again. Verfahren nach Anspruch 1, das ferner ein Ermitteln auf der Grundlage des Abbruchs der Transaktion, ob der Zähler den Schwellenwert für Abbrüche erreicht hat, und ein erneutes Ausführen der Transaktion über eine Anweisung Transaction begin auf der Grundlage dessen aufweist, dass der Zähler den Schwellenwert für Abbrüche nicht erreicht.The method of claim 1, further comprising determining, based on the abort of the transaction, whether the counter has reached the abort threshold, and re-executing the transaction via a Transaction begin statement based on the counter determining the threshold for Aborts not reached. Verfahren nach Anspruch 2, wobei es sich bei der Transaktion um eine eingeschränkte Transaktion mit einer Vielzahl von damit verbundenen Einschränkungen handelt und wobei die Anweisung Transaction begin eine Anweisung Transaction begin constrained ist.The method of claim 2, wherein the transaction is a constrained transaction having a plurality of constraints associated therewith, and wherein the Transaction begin statement is a Transaction begin constrained instruction. Verfahren nach Anspruch 1 ferner aufweisend ein Ermitteln auf der Grundlage des Abbruchs der Transaktion, ob der Zähler den Schwellenwert für Abbrüche erreicht hat, und auf der Grundlage dessen, dass der Zähler den Schwellenwert nicht erreicht hat, Erhöhen des Zählers und Festlegen einer Programmanweisungsadresse für eine Anweisung Transaction begin, um die Transaktion erneu auszuführen.The method of claim 1, further comprising determining, based on the abort of the transaction, whether the counter has reached the threshold for aborts and based on the counter not having reached the threshold, incrementing the counter, and setting a program instruction address for a Transaction begin statement to renew the transaction. Verfahren nach Anspruch 4, das ferner aufweisend ein Ermitteln auf der Grundlage des Abbruchs der Transaktion, ob der Zähler den Schwellenwert für Abbrüche erreicht hat, und auf der Grundlage dessen, dass der Zähler den Schwellenwert für Abbrüche nicht erreicht, Ermitteln, ob eine Aktion ausgeführt werden muss, um die erfolgreiche Ausführung der Transaktion bei der Wiederholung zu erleichtern.The method of claim 4, further comprising determining, based on the abort of the transaction, whether the counter has reached the abort threshold, and determining whether the counter does not reach the abort threshold, determining whether to perform an action must be in order to facilitate the successful execution of the transaction in the repetition. Verfahren nach Anspruch 5, das ferner aufweist: Auswählen einer oder mehrerer Aktionen auf der Grundlage dessen, dass das Ermitteln anzeigt, dass eine Aktion durchzuführen ist; und Durchführen der ausgewählten einen oder mehreren Aktionen.The method of claim 5, further comprising: Selecting one or more actions based on determining that determining indicates that an action is to be taken; and Perform the selected one or more actions. Verfahren nach Anspruch 6, wobei die eine oder mehreren Aktionen eine oder mehrere der folgenden Aktionen aufweisen: Deaktivieren einer Verzweigungsvorhersage oder Deaktivieren des spekulativen Abrufens von Anweisungen oder Deaktivieren der superskalaren Zuteilung oder Deaktivieren der nichtsequenziellen Ausführung oder ausschließliches Abrufen von Cachespeicher-Fehltreffern oder Ausführen einer einzelnen Anweisung durch eine Anweisungs-Pipeline.The method of claim 6, wherein the one or more actions comprise one or more of the following actions: disabling branch prediction or disabling speculative fetching of instructions or disabling superscalar allocation or disabling non-sequential execution or retrieving cache misses only or performing a single one Instruction through an instruction pipeline. Verfahren nach Anspruch 7, wobei die folgenden Aktionen ferner ein Verwenden eines Semaphors aufweist, um einen oder mehrere andere Prozessoren zu blockieren.The method of claim 7, wherein the following actions further comprise using a semaphore to block one or more other processors. Verfahren nach Anspruch 6, das ferner ein Auswählen einer Aktion auf der Grundlage auf eines oder mehreres von einem Wert des Zählers und einem Grund für den Abbruch aufweist.The method of claim 6, further comprising selecting an action based on one or more of a value of the counter and a reason for the abort. Computerprogrammprodukt zum Erleichtern der Verarbeitung innerhalb einer Datenverarbeitungsumgebung, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das von einer Verarbeitungsschaltung lesbar ist und Anweisungen zum Ausführen durch die Verarbeitungsschaltung für das Durchführen eines Verfahrens speichert, das aufweist: Verfolgen durch einen Prozessor der Datenverarbeitungsumgebung, wie oft eine innerhalb des Prozessors ausgeführte Transaktion abgebrochen wird, wobei die Transaktion ein Festschreiben von transaktionsorientierten Speichervorfängen in den Hauptspeicher bis zum Ausführen einer ausgewählten Transaktion effektiv verzögert; und Verfolgen unter Verwendung eines Zählers innerhalb des Prozessors, um die Anzahl von Abbrüchen zu verfolgen, Ermitteln, ob die Transaktion erfolgreich ausgeführt wurde und auf der Grundlage der erfolgreichen Ausführung der Transaktion automatisches Zurücksetzen des Zählers auf einen vorab festgelegten Wert; und auf der Grundlage des Abbruchs einer Transaktion automatisches Zurücksetzen des Zählers auf einen vorab definierten Wert auf der Grundlage von einem des Folgenden: Erreichen eines Schwellenwerts durch einen Zähler für Abbrüche der Transaktion, die bewirken, dass eine Unterbrechung der Transaktion dargeboten wird; oder Darbieten einer Unterbrechung der Transaktion, wobei die Transaktion nicht erneut ausgeführt wird.A computer program product for facilitating processing within a computing environment, the computer program product comprising: a computer readable storage medium readable by a processing circuit and storing instructions for execution by the processing circuitry for performing a method comprising: tracking by a processor the computing environment, as often; a transaction executed within the processor is aborted, whereby the transaction commits transaction-oriented memory patches into main memory until a selected transaction is effectively delayed; and tracking using a counter within the processor to track the number of aborts, determining whether the transaction has been successfully executed, and automatically resetting the counter to a predetermined value based on the successful execution of the transaction; and upon the abort of a transaction, automatically resetting the counter to a predefined value based on one of the following: reaching a threshold by a transaction abort counter that causes an interrupt to the transaction to be presented; or presenting an interruption of the transaction, wherein the transaction is not re-executed. Computersystem zum Erleichtern der Verarbeitung innerhalb einer Datenverarbeitungsumgebung, wobei das Computersystem aufweist: einen Hauptspeicher; und einen Prozessor, der mit dem Speicher Daten austauscht, wobei das Computersystem so konfiguriert ist, dass es ein Verfahren durchführt, wobei das Verfahren aufweist: Verfolgen durch einen Prozessor der Datenverarbeitungsumgebung, wie oft eine innerhalb des Prozessors ausgeführte Transaktion abgebrochen wird, wobei die Transaktion das Festschreiben von transaktionsorientierten Speichervorgängen in den Hauptspeicher bis zum Ausführen einer ausgewählten Transaktion effektiv verzögert; und Verfolgen unter Verwendung eines Zählers innerhalb des Prozessors, um die Anzahl von Abbrüchen zu verfolgen, Ermitteln, ob die Transaktion erfolgreich ausgeführt wurde und auf der Grundlage der erfolgreichen Ausführung der Transaktion automatisches Zurücksetzen des Zählers auf einen vorab festgelegten Wert; und auf der Grundlage des Abbruchs einer Transaktion automatisches Zurücksetzen des Zählers auf einen vorab definierten Wert auf der Grundlage von einem des Folgenden: Erreichen eines Schwellenwerts für Abbrüche der Transaktion, die bewirken, dass eine Unterbrechung der Transaktion dargeboten wird; oder Darbieten einer Unterbrechung der Transaktion, wobei die Transaktion nicht erneut ausgeführt wird.A computer system for facilitating processing within a computing environment, the computer system comprising: a main memory; and a processor that communicates with the memory, wherein the computer system is configured to perform a method, the method comprising: Tracking, by a processor of the computing environment, how often a transaction executed within the processor is aborted, the transaction effectively delaying the commit of transaction-oriented stores to main memory until a selected transaction is executed; and tracking using a counter within the processor to track the number of aborts, determining whether the transaction has been successfully executed, and automatically resetting the counter to a predetermined value based on the successful execution of the transaction; and on the basis of aborting a transaction, automatically resetting the counter to a predefined value based on one of the following: Reaching a threshold for aborting the transaction that causes an interruption of the transaction to be presented; or Present an interruption of the transaction, but the transaction will not be executed again.
DE201310210160 2012-06-15 2013-05-31 Method for facilitating processing of transaction within multiprocessor data processing environment, involves automatically setting counter to predefined value based on presenting interrupt of transaction when transaction is aborted Pending DE102013210160A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/524,857 US9740549B2 (en) 2012-06-15 2012-06-15 Facilitating transaction completion subsequent to repeated aborts of the transaction
US13/524,857 2012-06-15
US13/783,316 US9367378B2 (en) 2012-06-15 2013-03-03 Facilitating transaction completion subsequent to repeated aborts of the transaction
US13/783,316 2013-03-03

Publications (1)

Publication Number Publication Date
DE102013210160A1 true DE102013210160A1 (en) 2013-12-19

Family

ID=49668187

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201310210160 Pending DE102013210160A1 (en) 2012-06-15 2013-05-31 Method for facilitating processing of transaction within multiprocessor data processing environment, involves automatically setting counter to predefined value based on presenting interrupt of transaction when transaction is aborted

Country Status (1)

Country Link
DE (1) DE102013210160A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115994098A (en) * 2023-03-22 2023-04-21 成都大前研软件开发有限公司 Analysis method and system for software operation abnormality based on artificial intelligence

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5574873A (en) 1993-05-07 1996-11-12 Apple Computer, Inc. Decoding guest instruction to directly access emulation routines that emulate the guest instructions
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574873A (en) 1993-05-07 1996-11-12 Apple Computer, Inc. Decoding guest instruction to directly access emulation routines that emulate the guest instructions
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"z/Architecture - Principles of Operation", Veröffentlichungsnummer SA22-7932-08, 9. Ausgabe, August 2010

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115994098A (en) * 2023-03-22 2023-04-21 成都大前研软件开发有限公司 Analysis method and system for software operation abnormality based on artificial intelligence
CN115994098B (en) * 2023-03-22 2024-01-16 天翼安全科技有限公司 Analysis method and system for software operation abnormality based on artificial intelligence

Similar Documents

Publication Publication Date Title
DE112013001941T9 (en) Limited statements in transactional execution
DE112013003079T5 (en) Transaction start / end instructions
DE112013002040T5 (en) Transaction abort processing
US9792125B2 (en) Saving/restoring selected registers in transactional processing
DE112007000812B4 (en) ONE MEMORY DEVICE WITH THREE LOGICS, METHOD FOR PERFORMING THE METHOD STEPS OF THE ONE MEMORY, ONE PROCESSOR DEVICE AND SYSTEM FOR PROVIDING AN EFFICIENT MECHANISM FOR TRANSACTIONAL MEMORY EXECUTIONS IN OUT-OF-ORDER PROCESSORS
US9983882B2 (en) Selectively controlling instruction execution in transactional processing
TWI574207B (en) Nontransactional store instruction
US8880959B2 (en) Transaction diagnostic block
US9336007B2 (en) Processor assist facility
DE102018000886A1 (en) Virtual machine communication on a hardware basis
US10430199B2 (en) Program interruption filtering in transactional execution
DE112015006934T5 (en) Nested virtualization for virtual machine exits
DE112010004963T5 (en) Synchronizing SIMD vectors
DE112015000294T5 (en) Restore hardware transactions
DE112017000163T5 (en) Prioritization of transactions
DE102014003705A1 (en) Processors, methods and systems for command emulation
DE112014000252T5 (en) Instruction "Vector floating point test data class immediate"
DE112015000203T5 (en) "Compare and Delay" commands
DE112010003942T5 (en) Device for setting keys without shutdown
DE102018002525A1 (en) HYBRIDATOMARITY ASSISTANCE FOR A BINARY TRANSLATION-BASED MICROPROCESSOR
US20130339628A1 (en) Determining the logical address of a transaction abort
DE202017007430U1 (en) Detecting bus lock conditions and avoiding bus locks
DE102014003659A1 (en) SYSTEMS, DEVICES AND METHODS FOR DETERMINING A FOLLOWING LOWEST MASKING BITS OF A TYPE TOY REGISTER
DE112015000223T5 (en) Machine command to terminate a conditional command
DE112013007703T5 (en) Command and logic for identifying instructions for retirement in a multi-stranded out-of-order processor

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0011300000

Ipc: G06F0015160000

R016 Response to examination communication
R084 Declaration of willingness to licence