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 PDFInfo
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 94
- 238000000034 method Methods 0.000 title claims abstract description 49
- 206010000210 abortion Diseases 0.000 claims abstract description 21
- 238000004590 computer program Methods 0.000 claims abstract description 20
- 230000015654 memory Effects 0.000 claims description 220
- 230000009471 action Effects 0.000 claims description 83
- 238000003860 storage Methods 0.000 claims description 52
- 230000003111 delayed effect Effects 0.000 claims description 3
- 238000007667 floating Methods 0.000 description 40
- 230000006870 function Effects 0.000 description 40
- 238000013519 translation Methods 0.000 description 30
- 230000008859 change Effects 0.000 description 29
- 238000001914 filtration Methods 0.000 description 24
- 238000005192 partition Methods 0.000 description 23
- 239000000872 buffer Substances 0.000 description 13
- 230000001419 dependent effect Effects 0.000 description 13
- 230000007246 mechanism Effects 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000012360 testing method Methods 0.000 description 10
- 230000007704 transition Effects 0.000 description 6
- 238000006073 displacement reaction Methods 0.000 description 5
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 description 5
- 238000011084 recovery Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 241001136792 Alle Species 0.000 description 3
- 102000004137 Lysophosphatidic Acid Receptors Human genes 0.000 description 3
- 108090000642 Lysophosphatidic Acid Receptors Proteins 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000007774 longterm Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000001343 mnemonic effect Effects 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000010926 purge Methods 0.000 description 2
- 210000002023 somite Anatomy 0.000 description 2
- BUHVIAUBTBOHAG-FOYDDCNASA-N (2r,3r,4s,5r)-2-[6-[[2-(3,5-dimethoxyphenyl)-2-(2-methylphenyl)ethyl]amino]purin-9-yl]-5-(hydroxymethyl)oxolane-3,4-diol Chemical compound COC1=CC(OC)=CC(C(CNC=2C=3N=CN(C=3N=CN=2)[C@H]2[C@@H]([C@H](O)[C@@H](CO)O2)O)C=2C(=CC=CC=2)C)=C1 BUHVIAUBTBOHAG-FOYDDCNASA-N 0.000 description 1
- 102100032303 26S proteasome non-ATPase regulatory subunit 2 Human genes 0.000 description 1
- 208000015976 Corneal dystrophy-perceptive deafness syndrome Diseases 0.000 description 1
- 101001074449 Crotalus durissus terrificus Phospholipase A2 inhibitor CNF Proteins 0.000 description 1
- 101000590272 Homo sapiens 26S proteasome non-ATPase regulatory subunit 2 Proteins 0.000 description 1
- 101001093690 Homo sapiens Protein pitchfork Proteins 0.000 description 1
- 206010021703 Indifference Diseases 0.000 description 1
- 101100496104 Mus musculus Clec2d gene Proteins 0.000 description 1
- 102100036065 Protein pitchfork Human genes 0.000 description 1
- 101100274534 Rattus norvegicus Clec2d11 gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 208000012886 Vertigo Diseases 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 208000014674 injury Diseases 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- QWXYZCJEXYQNEI-OSZHWHEXSA-N intermediate I Chemical compound COC(=O)[C@@]1(C=O)[C@H]2CC=[N+](C\C2=C\C)CCc2c1[nH]c1ccccc21 QWXYZCJEXYQNEI-OSZHWHEXSA-N 0.000 description 1
- 230000002147 killing effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 229920000638 styrene acrylonitrile Polymers 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0721—Error 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/076—Error 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
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:
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
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
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
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 (
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
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
Eine Ausführungsform einer Datenverarbeitungsumgebung, die eine oder mehrere Aspekte der hier beschriebenen Transaktionseinrichtung integriert und verwendet, wird in Bezug auf
Unter Bezugnahme auf
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
Die Zentralprozessoren
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
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
Das Eingabe/Ausgabe-Teilsystem
Das E/A-Teilsystem verwendet einen oder mehrere Eingabe/Ausgabe-Pfade wie Datenübertragungsverbindungen beim Verwalten des Datenflusses zu den Eingabe/Ausgabe-Einheiten
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
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 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)
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)
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)
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
Programmunterbrechungsfilterungs-Steuerung (PIFC, Programm Interruption Filtering Control)
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
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.
Eine Ausführungsform eines Formats einer Anweisung Transaction Begin constrained (TBEGINC) wird unter Bezugnahme auf die
Bei einer Ausführungsform enthält das I2-Feld verschiedene Steuerungen, wobei ein Beispiel davon in
Die Bits des I2-Felds sind bei einem Beispiel wie im Folgenden definiert:
Speichermaske für allgemeine Register (GRSM)
Memory mask for general registers (GRSM)
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)
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.
Das Ende einer Anweisung Transaction Begin wird durch eine Anweisung TRANSACTION END (TEND) spezifiziert, ein Format, das in
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.
- * 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
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.
- * 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
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
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
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
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):
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
Eine Ausführungsform eines Formats einer Anweisung EXTRACT TRANSACTION NESTING DEPTH ist in Bezug auf
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
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
Ü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):
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:
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:
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:
Wenn eine Transaktion abgebrochen wird, da TDC ungleich null ist, kann eines des Folgenden auftreten:
- * Der Abbruchcode wird auf einen der
Codes 7bis 11, 13bis 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.
- * 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
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.
- 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.
- * 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
Format
format
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
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
Conflict Token Validity (CTV): When a transaction is aborted due to a retrieve or memory conflict (ie, abort
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,
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,
Reserviert: Bits 2 bis 7 von Byte 1 sind reserviert und als Nullen gespeichert.Reserved:
Transaktionsverschachtelungstiefe (TND)
Transaktionsabbruchcode (TAC)
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
Wenn das CTV-Bit null ist, sind Bytes 16 bis 23 nicht vorhersagbar.If the CTV bit is zero,
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)
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
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,
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
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)
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,
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)
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)
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)
- * Zugriffslistengesteuert oder DAT-Schutz
- * ASCE-Typ
- * Seitenumsetzung
- * Region-eins-Umsetzung
- * Region-zwei-Umsetzung
- * Region-drei-Umsetzung
- * Segmentumsetzungsausnahme
- * 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,
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
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,
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
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:
-
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:
Bit 0 stellt das Ergebnis der ersten solchen Verzweigungsanweisung dar, Bit 1 das Ergebnis der zweiten solchen Anweisung usw.
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 (
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.
- - 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
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
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
- * 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
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.
- * 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
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
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,
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
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
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.
- 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
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 übersteigendas 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.
- 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.
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
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
Unter Bezugnahme auf
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
Wenn allerdings keine Ausnahme vorliegt, wird eine Ermittlung durchgeführt, ob die Transaktionsverschachtelungstiefe null ist, ABFRAGE
Unter erneuter Bezugnahme auf ABFRAGE
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.
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:
- 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:
Zusammenfassend ist die Verarbeitung einer eingeschränkten Transaktion wie folgt: In summary, the processing of a restricted transaction is as follows:
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
Unter Bezugnahme auf
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
Darüber hinaus wird eine Ermittlung dahingehend durchgeführt, ob das B1-Feld der Anweisung null ist, ABFRAGE
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
Außerdem wird ein Wert von eins zur Transaktionsverschachtelungstiefe addiert, SCHRITT
Unter erneuter Bezugnahme auf ABFRAGE
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)
- * 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.
- * 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 setsonly 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: In summary, the processing of an unrestricted transaction is as follows:
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
Unter Bezugnahme auf
Unter erneuter Bezugnahme auf ABFRAGE
Unter erneuter Bezugnahme auf ABFRAGE
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
Unter Bezugnahme auf
Die CPU verlässt den Modus der transaktionsorientieren Ausführung, SCHRITT
Danach wird eine Ermittlung dahingehend durchgeführt, ob die Transaktionsdiagnoseblock-Adresse gültig ist, ABFRAGE
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
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
Zusätzlich zu den obigen Ausführungen wird die Transaktionsverschachtelungstiefe gleich null gesetzt, SCHRITT
Darüber hinaus wird eine Serialisierungsfunktion durchgeführt, SCHRITT
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
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.
- * 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
Unter Bezugnahme auf
Unter erneuter Bezugnahme auf ABFRAGE
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
Unter Bezugnahme auf
Es wird eine Ermittlung dahingehend durchgeführt, ob die Transaktion erfolgreich beendet wurde, ABFRAGE
Wenn andererseits der Abbruch nicht durch eine Unterbrechung bedingt ist, ABFRAGE
Wenn sich der Abbruchzähler jedoch nicht am Schwellenwert befindet, wird der Zähler erhöht (z. B. Zähler = Zähler + 1), SCHRITT
Wenn eine Aktion zu unternehmen ist, wird die Aktion durchgeführt, SCHRITT
Unter Bezugnahme auf
Zunächst wird über den Abbruchzähler eine Prüfung bezüglich der Anzahl der Male durchgeführt, die die Transaktion abgebrochen wurde, SCHRITT
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:
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
Unter erneuter Bezugnahme auf ABFRAGE
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
Unter Bezugnahme auf
Nachdem das Semaphor erhalten wurde, wird eine Unterbrechung an alle anderen Prozessoren rundgesendet, SCHRITT
Der den rundsendende Prozessor verlässt die Firmware-Routine und wiederholt die Transaktion, SCHRITT
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
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
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
Ein beispielhaftes Codefragment, das den
- * 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.
- * 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.
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
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
Bei einer Ausführungsform wird eine Anweisung aus dem Speicher
Gemäß einem Aspekt der TX-Einrichtung enthält der Prozessor
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,
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
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
Das System
Unter weiterer Bezugnahme auf
Unter gleichzeitiger Bezugnahme auf
Alternativ kann der Programmiercode im Speicher
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
Ein Programmzähler (Anweisungszähler)
Für gewöhnlich wird eine Anweisungsabrufeinheit
Die abgerufenen Anweisungen werden dann vom Prozessor
Virtuelle Adressen werden mithilfe einer dynamischen Adressumsetzung
Ein Prozessor
Eine ADD-Anweisung beispielsweise wird in einer Ausführeinheit
Die Ausführeinheit
Unter Bezugnahme auf
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
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
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
In
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)
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)
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)
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 |
-
2013
- 2013-05-31 DE DE201310210160 patent/DE102013210160A1/en active Pending
Patent Citations (6)
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)
Title |
---|
"z/Architecture - Principles of Operation", Veröffentlichungsnummer SA22-7932-08, 9. Ausgabe, August 2010 |
Cited By (2)
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 |