DE112013003079T5 - Anweisungen für Transaktionsbeginn/-ende - Google Patents

Anweisungen für Transaktionsbeginn/-ende Download PDF

Info

Publication number
DE112013003079T5
DE112013003079T5 DE112013003079.9T DE112013003079T DE112013003079T5 DE 112013003079 T5 DE112013003079 T5 DE 112013003079T5 DE 112013003079 T DE112013003079 T DE 112013003079T DE 112013003079 T5 DE112013003079 T5 DE 112013003079T5
Authority
DE
Germany
Prior art keywords
transaction
instruction
memory
field
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112013003079.9T
Other languages
English (en)
Inventor
c/o IBM Corporation Greiner Dan
c/o IBM Corporation Jacobi Christian
c/o IBM Corporation Slegel Timothy
c/o IBM Canada Mitran Marcel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112013003079T5 publication Critical patent/DE112013003079T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms

Abstract

Eine Anweisung TRANSACTION BEGIN und eine Anweisung TRANSACTION END werden bereitgestellt. Die Anweisung TRANSACTION BEGIN verursacht, dass abhängig von einem Feld der Anweisung entweder eine eingeschränkte oder eine nicht eingeschränkte Transaktion eingeleitet wird. Die Anweisung TRANSACTION END beendet die Transaktion, die durch die Anweisung TRANSACTION BEGIN gestartet wurde.

Description

  • TECHNISCHES GEBIET
  • Ein oder mehrere Aspekte betreffen allgemein Mehrprozessor-Datenverarbeitungsumgebungen und insbesondere transaktionsgebundene Verarbeitung innerhalb derartiger Datenverarbeitungsumgebungen.
  • HINTERGRUND
  • Eine ständige Herausforderung in der Mehrprozessor-Programmierung sind Aktualisierungen auf denselben Speicherort durch mehrere Zentraleinheiten (CPUs). Viele Anweisungen, die Speicherorte aktualisieren, unter anderen sogar einfache logische Operationen wie beispielsweise UND-Verknüpfungen, tun dies mit mehrfachen Zugriffen auf den Speicherort. Zum Beispiel wird zuerst der Speicherort abgerufen und anschließend wird das aktualisierte Ergebnis zurückgespeichert.
  • Damit mehrere CPUs denselben Speicherort sicher aktualisieren können, erfolgt der Zugriff auf den Speicherort in serieller Reihenfolge. Eine Anweisung, die Anweisung TEST AND SET, die mit der früher von International Business Machines Corporation angebotenen S/360-Architektur eingeführt wurde, stellte eine verriegelte (interlocked) Aktualisierung eines Speicherorts bereit. Verriegelte Aktualisierung heißt, dass der gesamte Speicherzugriff der Anweisung atomar zu erfolgen scheint, wie von anderen CPUs und dem Eingabe/Ausgabe-(E/A)Subsystem (z. B. Kanalsubsystem) beobachtet. Später führte die von International Business Machines Corporation eingeführte S/370-Architektur die Anweisungen COMPARE AND SWAP und COMPARE DOUBLE AND SWAP ein, die ein differenzierteres Mittel für ein Ausführen einer verriegelten Aktualisierung bereitstellen und die Implementierung dessen ermöglichen, was allgemein als Sperrwort (oder Semaphor) bekannt ist. In letzter Zeit hinzugefügte Anweisungen haben weitere verriegelte Aktualisierungsfunktionen bereitgestellt, unter anderem COMPARE AND SWAP AND PURGE und COMPARE AND SWAP AND STORE. Alle diese Anweisungen stellen jedoch eine Verriegelung für nur einen einzelnen Speicherort bereit.
  • Komplexere Programmtechniken können die verriegelte Aktualisierung von mehreren Speicherorten erfordern, beispielsweise beim Hinzufügen eines Elements zu einer doppeltverknüpften Liste. Bei einer derartigen Operation müssen ein Vorwärts- und ein Rückwärtszeiger so auftreten, als seien sie gleichzeitig aktualisiert worden, wie von anderen CPUs und dem E/A-Subsystem beobachtet. Um eine derartige mehrfache Speicherort-Aktualisierung zu bewerkstelligen, ist das Programm gezwungen, einen separaten einzelnen Serialisierungspunkt zu verwenden wie beispielsweise ein Sperrwort. Sperrwörter können jedoch eine viel gröbere Serialisierungsebene bereitstellen als zugesichert; zum Beispiel können Sperrwörter eine komplette Warteschlange mit Millionen von Elementen in eine serielle Form bringen, selbst wenn nur zwei Elemente aktualisiert werden. Das Programm kann die Daten strukturieren, um eine differenziertere Serialisierung zu verwenden (z. B. eine Hierarchie von Sperrpunkten), doch führt dies zu zusätzlichen Problemen wie beispielsweise potenziellen Deadlock-Situationen (Blockierungssituationen), wenn die Hierarchie nicht eingehalten wird, und zu Problemen bei der Wiederherstellung, wenn das Programm auf einen Fehler trifft, während eine oder mehrere Sperren gehalten werden, oder wenn die Sperre nicht übernommen werden kann.
  • Zusätzlich zum Vorgenannten gibt es zahlreiche Szenarien, in denen ein Programm eine Folge von Anweisungen ausführen kann, die zu einer Ausnahmebedingung führen können. Wenn keine Ausnahmebedingung auftritt, wird das Programm fortgesetzt; wenn jedoch eine Ausnahme erkannt wird, kann das Programm Korrekturmaßnahmen ergreifen, um die Ausnahmebedingung zu beseitigen. Zum Beispiel kann Java® eine derartige Ausführung beispielsweise in einer spekulativen Ausführung, einem teilweisen Inlining (Unterprogrammeinbettung) einer Funktion und/oder der erneuten Sequentialisierung einer Zeiger-Nullprüfung nutzen. Java und alle Marken und Logos auf Java-Grundlage sind Marken oder eingetragene Marken von Oracle und/oder seiner verbundenen Unternehmen.
  • In klassischen Betriebssystemumgebungen wie dem IBM z/OS® und dessen Vorgängern von International Business Machines Corporation erstellt das Programm eine Wiederherstellungsumgebung, um jede Programmausnahmebedingung abzufangen, die auftreten kann. Wenn das Programm die Ausnahme nicht abfängt, beendet das Betriebssystem normalerweise das Programm fehlerhaft für Ausnahmen, auf deren Bearbeitung das Betriebssystem nicht vorbereitet ist. Ein Erstellen und Nutzen einer derartigen Umgebung ist kostspielig und kompliziert. IBM, z/OS, z/Architecture® (mit folgender Bezugnahme), z/VM® (mit folgender Bezugnahme), Processor Resource/Systems ManagerTM (mit folgender Bezugnahme), Power SystemsTM (mit folgender Bezugnahme) und System x® (mit folgender Bezugnahme) sind Marken der International Business Machines Corporation, die weltweit unter zahlreichen Gerichtsbarkeiten registriert sind.
  • Daher besteht beim Stand der Technik ein Bedarf, sich mit dem oben genannten Problem zu beschäftigen.
  • KURZDARSTELLUNG
  • Unzulänglichkeiten nach dem Stand der Technik werden beseitigt und Vorteile werden durch die Bereitstellung eines Computerprogrammprodukts für ein Ausführen einer Maschinenanweisung, der Maschinenanweisung zum Einleiten einer Transaktion, in einer Datenverarbeitungsumgebung bereitgestellt, wobei Speicherungen durch andere Prozessoren in Speicherorten der Transaktion verursachen, dass die Transaktion abgebrochen wird, und wobei Speicherungen durch Anweisungen in der Transaktion effektiv verzögert werden, bis eine ausgewählte Transaktion beendet wird. Das Computerprogrammprodukt enthält ein computerlesbares Speichermedium, das durch eine Verarbeitungsschaltung gelesen werden kann, und Speicheranweisungen für eine Ausführung durch die Verarbeitungsschaltung für ein Ausführen eines Verfahrens. Das Verfahren enthält zum Beispiel ein Erlangen einer Maschinenanweisung zur Ausführung durch einen Prozessor, wobei die Maschinenanweisung zur Computerausführung gemäß einer Computerarchitektur definiert wird, wobei die Maschinenanweisung zum Beispiel einen Operationscode enthält, um eine Transaktionsbeginn-Operation anzugeben; und ein Steuerelement-Feld zum Angeben von einem oder mehreren Steuerelementen, die bei der Transaktionsausführung verwendet werden sollen; und ein Ausführen der Maschinenanweisung durch den Prozessor, wobei das Ausführen enthält: Bestimmen aus einem Feld der Anweisung, ob eine Transaktion, die durch die Transaktionsbeginn-Anweisung eingeleitet werden soll, eine eingeschränkte Transaktion oder eine nicht eingeschränkte Transaktion ist; Einleiten einer eingeschränkten Transaktion auf der Grundlage, dass das Feld ein Wert ist, wobei der eingeschränkten Transaktion eine oder mehrere Einschränkungen zugehörig sind, und Setzen eines Bedingungscodes auf einen Wert, der eine erfolgreiche Ausführung der Maschinenanweisung angibt; und auf der Grundlage, dass das Feld ein weiterer Wert ist, Angeben eines Speicherorts zum Speichern von Diagnoseinformationen in einer abgebrochenen nicht eingeschränkten Transaktion, Einleiten der nicht eingeschränkten Transaktion und Setzen eines Bedingungscodes auf den Wert, der eine erfolgreiche Ausführung der Maschinenanweisung angibt.
  • Verfahren und Systeme, die eine oder mehrere Ausführungsformen betreffen, werden hierin ebenfalls beschrieben und beansprucht. Ferner werden auch Dienste, die eine oder mehrere Ausführungsformen betreffen, hierin ebenfalls beschrieben und können beansprucht werden.
  • Von einem ersten Aspekt aus betrachtet stellt die vorliegende Erfindung ein Verfahren für ein Ausführen einer Maschinenanweisung in einer Datenverarbeitungsumgebung bereit, das aufweist: ein Erlangen einer Maschinenanweisung durch einen Prozessor für eine Operation, wobei die Maschinenanweisung zur Computerausführung gemäß einer Computerarchitektur definiert wird, wobei die Maschinenanweisung aufweist: einen Operationscode zum Angeben einer Transaktionsbeginn-Operation; und ein Steuerelement-Feld zum Angeben von einem oder mehreren Steuerelementen, die bei einer transaktionsgebundenen Ausführung verwendet werden sollen; und ein Ausführen der Maschinenanweisung durch den Prozessor, wobei das Ausführen aufweist: ein Bestimmen aus einem Feld der Anweisung, ob eine Transaktion, die durch die Transaktionsbeginn-Anweisung eingeleitet werden soll, eine eingeschränkte Transaktion oder eine nicht eingeschränkte Transaktion ist; ein Einleiten einer eingeschränkten Transaktion auf der Grundlage, dass das Feld ein Wert ist, wobei der eingeschränkten Transaktion eine oder mehrere Einschränkungen zugehörig sind, und ein Setzen eines Bedingungscodes auf einen Wert, der eine erfolgreiche Ausführung der Maschinenanweisung angibt; und auf der Grundlage, dass das Feld ein weiterer Wert ist, ein Angeben eines Speicherorts zum Speichern von Diagnoseinformationen in einer abgebrochenen nicht eingeschränkten Transaktion, ein Einleiten der nicht eingeschränkten Transaktion und ein Setzen eines Bedingungscodes auf den Wert, der eine erfolgreiche Ausführung der Maschinenanweisung angibt.
  • Von einem weiteren Aspekt aus betrachtet stellt die vorliegende Erfindung ein Computersystem für ein Ausführen einer Maschinenanweisung, der Maschinenanweisung zum Einleiten einer Transaktion, in einer Datenverarbeitungsumgebung bereit, wobei Speicherungen durch andere Prozessoren in Speicherorten der Transaktion verursachen, dass die Transaktion abgebrochen wird, und wobei Speicherungen durch Anweisungen in der Transaktion effektiv verzögert werden, bis eine ausgewählte Transaktion beendet wird, wobei das Computersystem aufweist: einen Arbeitsspeicher; und einen mit dem Arbeitsspeicher in Datenübertragung stehenden Prozessor, wobei das Computersystem so konfiguriert ist, dass es ein Verfahren ausführt, wobei das Verfahren aufweist: ein Erlangen einer Maschinenanweisung zur Ausführung durch einen Prozessor, wobei die Maschinenanweisung zur Computerausführung gemäß einer Computerarchitektur definiert wird, wobei die Maschinenanweisung aufweist: einen Operationscode zum Angeben einer Transaktionsbeginn-Operation; und ein Steuerelement-Feld zum Angeben von einem oder mehreren Steuerelementen, die bei einer transaktionsgebundenen Ausführung verwendet werden sollen; und ein Ausführen der Maschinenanweisung durch den Prozessor, wobei das Ausführen aufweist: ein Bestimmen aus einem Feld der Anweisung, ob eine Transaktion, die durch die Transaktionsbeginn-Anweisung eingeleitet werden soll, eine eingeschränkte Transaktion oder eine nicht eingeschränkte Transaktion ist; ein Einleiten einer eingeschränkten Transaktion auf der Grundlage, dass das Feld ein Wert ist, wobei der eingeschränkten Transaktion eine oder mehrere Einschränkungen zugehörig sind, und ein Setzen eines Bedingungscodes auf einen Wert, der eine erfolgreiche Ausführung der Maschinenanweisung angibt; und auf der Grundlage, dass das Feld ein weiterer Wert ist, ein Angeben eines Speicherorts zum Speichern von Diagnoseinformationen in einer abgebrochenen nicht eingeschränkten Transaktion, ein Einleiten der nicht eingeschränkten Transaktion und ein Setzen eines Bedingungscodes auf den Wert, der eine erfolgreiche Ausführung der Maschinenanweisung angibt.
  • Von einem weiteren Aspekt aus betrachtet stellt die vorliegende Erfindung ein Computerprogrammprodukt für ein Ausführen einer Maschinenanweisung, der Maschinenanweisung zum Einleiten einer Transaktion, in einer Datenverarbeitungsumgebung bereit, wobei Speicherungen durch andere Prozessoren in Speicherorten der Transaktion verursachen, dass die Transaktion abgebrochen wird, und wobei Speicherungen durch Anweisungen in der Transaktion effektiv verzögert werden, bis eine ausgewählte Transaktion beendet wird, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das von einer Verarbeitungsschaltung lesbar ist und Anweisungen zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren auszuführen, das aufweist: ein Erlangen einer Maschinenanweisung durch einen Prozessor für eine Operation, wobei die Maschinenanweisung zur Computerausführung gemäß einer Computerarchitektur definiert wird, wobei die Maschinenanweisung aufweist: einen Operationscode zum Angeben einer Transaktionsbeginn-Operation; und ein Steuerelement-Feld zum Angeben von einem oder mehreren Steuerelementen, die bei einer transaktionsgebundenen Ausführung verwendet werden sollen; und ein Ausführen der Maschinenanweisung durch den Prozessor, wobei das Ausführen aufweist: ein Bestimmen aus einem Feld der Anweisung, ob eine Transaktion, die durch die Transaktionsbeginn-Anweisung eingeleitet werden soll, eine eingeschränkte Transaktion oder eine nicht eingeschränkte Transaktion ist; ein Einleiten einer eingeschränkten Transaktion auf der Grundlage, dass das Feld ein Wert ist, wobei der eingeschränkten Transaktion eine oder mehrere Einschränkungen zugehörig sind, und ein Setzen eines Bedingungscodes auf einen Wert, der eine erfolgreiche Ausführung der Maschinenanweisung angibt; und auf der Grundlage, dass das Feld ein weiterer Wert ist, ein Angeben eines Speicherorts zum Speichern von Diagnoseinformationen in einer abgebrochenen nicht eingeschränkten Transaktion, ein Einleiten der nicht eingeschränkten Transaktion und ein Setzen eines Bedingungscodes auf den Wert, der eine erfolgreiche Ausführung der Maschinenanweisung angibt.
  • Von einem weiteren Aspekt aus betrachtet stellt die vorliegende Erfindung ein Computerprogrammprodukt zum Ausführen einer Maschinenanweisung in einer Datenverarbeitungsumgebung bereit, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium aufweist, das von einer Verarbeitungsschaltung lesbar ist, und Anweisungen zum Ausführen der Schritte der Erfindung durch die Verarbeitungsschaltung speichert, um ein Verfahren auszuführen.
  • Von einem weiteren Aspekt aus betrachtet stellt die vorliegende Erfindung ein Computerprogramm bereit, das auf einem computerlesbaren Medium gespeichert ist und in den internen Arbeitsspeicher eines digitalen Computers ladbar ist, wobei es Softwarecode-Abschnitte für ein Ausführen der Schritte der Erfindung aufweist, wenn das Programm auf einem Computer ausgeführt wird.
  • Zusätzliche Merkmale und Vorteile werden verwirklicht Weitere Ausführungsformen und Aspekte werden hierin ausführlich beschrieben und werden als Bestandteil der beanspruchten Erfindung betrachtet.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird im Folgenden nur zu Beispielzwecken unter Bezugnahme auf bevorzugte Ausführungsformen beschrieben, wie in den folgenden Figuren veranschaulicht:
  • 1 stellt eine Ausführungsform einer Datenverarbeitungsumgebung gemäß dem Stand der Technik dar und in der eine bevorzugte Ausführungsform der vorliegenden Erfindung implementiert werden kann;
  • 2A stellt ein Beispiel für eine Transaktionsbeginn-(TBEGIN)Anweisung gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 2B stellt eine Ausführungsform von weiteren Details eines Felds der Anweisung TBEGIN von 2A gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 3A stellt ein Beispiel für eine eingeschränkte Transaktionsbeginn-(TBEGINC)Anweisung gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 3B stellt eine Ausführungsform von weiteren Details eines Felds der Anweisung TBEGINC von 3A gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 4 stellt ein Beispiel für eine Transaktionsende(TEND)Anweisung gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 5 stellt ein Beispiel für eine Transaktionsabbruch-(TABORT)Anweisung gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 6 stellt ein Beispiel für verschachtelte Transaktionen gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 7 stellt ein Beispiel für eine Anweisung NONTRANSACTIONAL STORE (NTSTG) gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 8 stellt ein Beispiel für eine Anweisung EXTRACT TRANSACTION NESTING DEPTH (ETND) gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 9 stellt ein Beispiel für einen Transaktionsdiagnoseblock gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 10 stellt Beispielgründe für einen Abbruch zusammen mit zugehörigen Abbruchcodes und Bedingungscodes gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 11 stellt eine Ausführungsform der Logik, die einem Erstellen einer eingeschränkten oder nicht eingeschränkten Transaktion zugehörig ist, gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 12 stellt eine Ausführungsform der Logik, die einem Ausführen einer Transaktion zugehörig ist, in der die Ausführung von dem Anweisungstyp abhängt, gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 13 stellt eine Ausführungsform der Logik, die einem Ausführen einer Anweisung TBEGINC zugehörig ist, gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 14 stellt eine Ausführungsform der Logik, die einem Sicherstellen einer Beendigung einer Anweisung TBEGINC zugehörig ist, gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 15 stellt eine Ausführungsform der Logik, die einem Ausführen einer Anweisung TBEGIN zugehörig ist, gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 16 stellt eine Ausführungsform der Logik, die einem Ausführen einer Anweisung TEND zugehörig ist, gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 17A bis 17B stellen ein Beispiel für ein Einfügen eines Warteschlangenelements in eine doppeltverknüpfte Liste von Warteschlangenelementen dar;
  • 18 stellt eine Ausführungsform eines Computerprogrammprodukts gemäß dem Stand der Technik dar und in dem eine bevorzugte Ausführungsform der vorliegenden Erfindung implementiert werden kann;
  • 19 stellt eine Ausführungsform eines Host-Computersystems gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 20 stellt ein weiteres Beispiel für ein Computersystem gemäß dem Stand der Technik dar und in dem eine bevorzugte Ausführungsform der vorliegenden Erfindung implementiert werden kann;
  • 21 stellt ein weiteres Beispiel für ein Computersystem, das ein Computernetzwerk aufweist, gemäß dem Stand der Technik dar und in dem eine bevorzugte Ausführungsform der vorliegenden Erfindung implementiert werden kann;
  • 22 stellt eine Ausführungsform von verschiedenen Elementen eines Computersystems gemäß dem Stand der Technik dar und in dem eine bevorzugte Ausführungsform der vorliegenden Erfindung implementiert werden kann;
  • 23A stellt eine Ausführungsform der Ausführungseinheit des Computersystems von 22 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 23B stellt eine Ausführungsform der Verzweigungseinheit des Computersystems von 22 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar;
  • 23C stellt eine Ausführungsform der Lade-/Speichereinheit des Computersystems von 22 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar; und
  • 24 stellt eine Ausführungsform eines emulierten Host-Computersystems gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einem Aspekt wird eine transaktionsgebundene (TX) Ausführungseinrichtung bereitgestellt. Diese Einrichtung stellt eine transaktionsgebundene Verarbeitung für Anweisungen bereit und bietet in einer oder mehreren Ausführungsformen, wie nachfolgend beschrieben, verschiedene Ausführungsmodi sowie verschachtelte Ebenen einer transaktionsgebundenen Verarbeitungsebene an.
  • Die transaktionsgebundene Ausführungseinrichtung führt einen CPU-Zustand ein, der als transaktionsgebundener (TX) Ausführungsmodus bezeichnet wird. Nach einem Zurücksetzen der CPU befindet sich die CPU nicht im TX-Modus. Die CPU tritt mit einer Anweisung TRANSACTION BEGIN in den TX-Modus ein. Die CPU verlässt den TX-Modus entweder durch (a) eine äußerste Anweisung TRANSACTION END (weitere Details zu innen und außen folgen) oder (b) durch einen Abbruch der Transaktion. Im TX-Modus scheinen Speicherzugriffe durch die CPU für Blöcke gleichzeitig ablaufend zu sein, wie von anderen CPUs und dem E/A-Subsystem beobachtet. Die Speicherzugriffe werden entweder (a) in einen Speicher festgeschrieben, wenn die äußerste Transaktion ohne Abbruch endet (also z. B. in einem Zwischenspeicher oder einem lokalen Puffer für die CPU vorgenommene Aktualisierungen verbreitet und in einem realen Arbeitsspeicher gespeichert und für andere CPUs sichtbar werden) oder (b) werden verworfen, wenn die Transaktion abgebrochen wird.
  • Transaktionen können verschachtelt sein. Die CPU kann also eine weitere Anweisung TRANSACTION BEGIN ausführen, während sie sich im TX-Modus befindet. Die Anweisung, die verursacht, dass die CPU in den TX-Modus eintritt, wird als die äußerste Anweisung TRANSACTION BEGIN bezeichnet; desgleichen wird das Programm als in der äußersten Transaktion befindlich bezeichnet. Nachfolgende Ausführungen von TRANSACTION BEGIN werden als innere Anweisungen bezeichnet; und das Programm führt eine innere Transaktion aus. Das Modell stellt eine mindeste Verschachtelungstiefe und eine modellabhängige maximale Verschachtelungstiefe bereit. Eine Anweisung EXTRACT TRANSACTION NESTING DEPTH gibt den aktuellen Verschachtelungstiefenwert zurück und kann in einer weiteren Ausführungsform einen maximalen Verschachtelungstiefenwert zurückgeben. Diese Technik verwendet ein als „verflachte Verschachtelung” bezeichnetes Modell, in dem eine Abbruchbedingung an einer beliebigen Verschachtelungstiefe verursacht, dass alle Ebenen der Transaktionen abgebrochen werden und die Steuerung an die Anweisung nach dem äußersten TRANSACTION BEGIN zurückgegeben wird.
  • Während einer Verarbeitung einer Transaktion gilt für einen transaktionsgebundenen Zugriff durch eine CPU, dass er entweder (a) mit einem transaktionsgebundenen Zugriff oder einem nicht transaktionsgebundenen Zugriff, der durch eine andere CPU vorgenommen wird oder (b) mit einem nicht transaktionsgebundenen Zugriff, der durch das E/A-Subsystem vorgenommen wird, in Konflikt steht, wenn beide Zugriffe auf einen beliebigen Speicherort innerhalb derselben Zwischenspeicherzeile erfolgen und einer oder beide der Zugriffe eine Speicherung ist oder sind. Mit anderen Worten, damit eine transaktionsgebundene Ausführung produktiv sein kann, dürfen keine transaktionsgebundenen Zugriffe vor einem Festschreiben durch die CPU beobachtet werden. Dieses Programmiermodell kann in bestimmten Umgebungen äußerst wirkungsvoll sein; zum Beispiel bei der Aktualisierung von zwei Punkten in einer doppeltverknüpften Liste von einer Million Elementen. Es kann jedoch weniger wirkungsvoll sein, wenn eine Menge Konflikte für die Speicherorte vorliegen, auf die transaktionsgebunden zugegriffen wird.
  • In einem Modell einer transaktionsgebundenen Ausführung (auf die hierin als nicht eingeschränkte Transaktion Bezug genommen wird) kann das Programm beim Abbrechen einer Transaktion entweder versuchen, die Transaktion weiter auszuführen in der Hoffnung, dass die Abbruchbedingung nicht mehr vorliegt, oder das Programm kann auf einen gleichwertigen nicht transaktionsgebundenen Pfad „zurückfallen”. In einem weiteren Modell einer transaktionsgebundenen Ausführung (auf die hierin als eingeschränkte Transaktion Bezug genommen wird) wird eine abgebrochene Transaktion durch die CPU automatisch neu ausgeführt; falls keine Vorgabenverletzungen vorliegen, wird für die eingeschränkte Transaktion eine letztendliche Beendigung sichergestellt.
  • Beim Starten einer Transaktion kann das Programm verschiedene Steuerelemente angeben, wie beispielsweise (a) welche Allgemeinregister auf ihre ursprünglichen Inhalte zurückgespeichert werden, wenn die Transaktion abgebrochen wird, (b) ob die Transaktion den Gleitkommaregisterkontext modifizieren darf, unter anderem zum Beispiel Gleitkommaregister und das Gleitkomma-Steuerregister, (c) ob die Transaktion Zugriffsregister (ARs) modifizieren darf und (d) ob bestimmte Programmausnahmebedingungen gesperrt werden müssen, um keine Unterbrechung zu verursachen. Wenn eine nicht eingeschränkte Transaktion abgebrochen wird, können verschiedene Diagnoseinformationen bereitgestellt werden. Zum Beispiel kann die äußerste Anweisung TBEGIN, die eine nicht eingeschränkte Transaktion einleitet, einen durch ein Programm angegebenen Transaktionsdiagnoseblock (TDB) angeben. Ferner kann der TDB in dem Präfixbereich der CPU oder der durch die Host-Zustandsbeschreibung angegeben wird, ebenfalls verwendet werden, wenn die Transaktion aufgrund einer Programmunterbrechung oder einer Bedingung abgebrochen wird, die jeweils verursacht, dass eine interpretative Ausführung endet.
  • Oben sind verschiedene Registertypen angegeben. Diese werden hierin im Weiteren ausführlich erklärt. Allgemeinregister können als Akkumulatoren in allgemeinen arithmetischen und logischen Operationen verwendet werden. In einer Ausführungsform enthält jedes Register 64 Bit-Positionen, und es gibt 16 Allgemeinregister. Die Allgemeinregister werden durch die Zahlen 0 bis 15 identifiziert und werden durch ein Vier-Bit-Feld R in einer Anweisung angegeben. Einige Anweisungen stellen eine Adressierung für mehrere Allgemeinregister bereit, indem sie mehrere R-Felder haben. Für einige Anweisungen wird die Verwendung eines spezifischen Allgemeinregisters impliziert statt explizit durch ein R-Feld der Anweisung angegeben zu werden.
  • Zusätzlich zu ihrer Verwendung als Akkumulatoren in allgemeinen arithmetischen und logischen Operationen werden 15 der 16 Allgemeinregister auch als Basisadresse und Indexregister bei einer Adresserzeugung verwendet. In diesen Fällen werden die Register durch ein Vier-Bit-Feld B oder X-Feld in einer Anweisung angegeben. Ein Wert von Null in dem B- oder X-Feld gibt an, dass keine Basis bzw. kein Index angewendet werden muss, und somit muss für ein Allgemeinregister 0 nicht angegeben werden, dass es eine Basisadresse oder einen Index enthält.
  • Gleitkomma-Anweisurigen verwenden eine Gruppe von Gleitkommaregistern. Die CPU hat in einer Ausführungsform 16 Gleitkommaregister. Die Gleitkommaregister werden durch die Nummern 0 bis 15 identifiziert und durch ein Vier-Bit-Feld R in Gleitkomma-Anweisungen angegeben. Jedes Gleitkommaregister ist 64 Bit lang und kann einen kurzen (32-Bit-) oder einen langen (64-Bit-)Gleitkomma-Operanden enthalten.
  • Ein Gleitkommasteuer-(FPC)Register ist ein 32-Bit-Register, das Masken-Bits, Markierungs-Bits, einen Datenausnahmecode und Rundungsmodus-Bits enthält und während einer Verarbeitung von Gleitkomma-Operationen verwendet wird.
  • Ferner hat die CPU in einer Ausführungsform 16 Steuerregister, die jeweils 64 Bit-Positionen haben. Die Bit-Positionen in den Registern werden bestimmten Einrichtungen in dem System zugewiesen, wie beispielsweise einer Programmereignisaufzeichnung (PER) (wird im Folgenden erörtert), und werden entweder für ein Angeben, dass eine Operation stattfinden kann, oder für ein Bereitstellen von speziellen Informationen verwendet, die von der Einrichtung angefordert werden. In einer Ausführungsform werden für die transaktionsgebundene Einrichtung CR0 (Bits 8 und 9) und CR2 (Bits 61 bis 63) verwendet, wie im Folgenden beschrieben.
  • Die CPU hat zum Beispiel 16 Zugriffsregister, die von 0 bis 15 nummeriert sind. Ein Zugriffsregister besteht aus 32 Bit-Positionen, die eine indirekte Angabe eines Adressraum-Steuerelements (ASCE) enthalten. Ein Adressraum-Steuerelement ist ein Parameter, der von dem Mechanismus zur dynamischen Adressumsetzung (DAT) verwendet wird, um Verweise auf einen entsprechenden Adressraum umzusetzen. Wenn sich die CPU in einem Modus befindet, der als Zugriffsregistermodus bezeichnet wird (gesteuert durch Bits in dem Programmstatuswort (PSW)), gibt ein Anweisungsfeld B, das zum Angeben einer logischen Adresse für einen Speicheroperandenverweis verwendet wird, ein Zugriffsregister an, und das durch das Zugriffsregister angegebene Adressraum Steuerelement wird von der DAT für den angegebenen Verweis verwendet. Für einige Anweisungen wird ein R-Feld statt eines B-Felds verwendet. Anweisungen werden für ein Laden und Speichern der Inhalte der Zugriffsregister und für ein Verschieben der Inhalte eines Zugriffsregisters in ein anderes bereitgestellt.
  • Jedes der Zugriffsregister 1 bis 15 kann einen beliebigen Adressraum angeben. Ein Zugriffsregister 0 gibt den primären Anweisungsraum an. Wenn eines der Zugriffsregister 1 bis 15 verwendet wird, um einen Adressraum anzugeben, bestimmt die CPU durch Umsetzen der Inhalte des Zugriffsregisters, welcher Adressraum angegeben wird. Wenn das Zugriffsregister 0 zum Angeben eines Adressraums verwendet wird, behandelt die CPU das Zugriffsregister als Angabe des primären Anweisungsraums, und sie untersucht die tatsächlichen Inhalte des Zugriffsregisters nicht. Daher können die 16 Zugriffsregister jederzeit den primären Anweisungsraum und maximal 15 weitere Räume angeben.
  • In einer Ausführungsform gibt es mehrere Typen von Adressräumen. Ein Adressraum ist eine fortlaufende Folge von Ganzzahlen (virtuellen Adressen) zusammen mit den spezifischen Umsetzungsparametern, die am Zuordnen aller Zahlen zu einem Byte-Speicherplatz im Speicher gestatten. Die Folge beginnt bei Null und fährt von links nach rechts fort.
  • Wenn zum Beispiel in der z/Architecture eine virtuelle Adresse von einer CPU verwendet wird, um auf den Hauptspeicher zuzugreifen (auch bekannt als Hauptarbeitsspeicher), wird sie zuerst durch eine dynamische Adressumsetzung (DAT) in eine reale Adresse und anschließend mittels eines Voranstellens in eine absolute Adresse umgewandelt. Die DAT kann eine bis fünf Ebenen von Tabellen (Seiten-, Segment-, Bereichsdritt-, Bereichszweit- und Bereichsersttabelle) als Umsetzungsparameter verwenden. Die Angabe (Ursprung und Länge) der übergeordneten Tabelle für einen spezifischen Adressraum wird als Adressraum-Steuerelement bezeichnet und ist zum Verwenden durch die DAT in einem Steuerregister oder wie durch ein Zugriffsregister angegeben zu finden. Alternativ kann das Adressraum-Steuerelement für einen Adressraum eine Angabe eines realen Raums sein, die angibt, dass die DAT die virtuelle Adresse umsetzen soll, indem sie sie einfach als eine reale Adresse und ohne Verwendung irgendwelcher Tabellen behandelt.
  • Die DAT verwendet zu unterschiedlichen Zeitpunkten die Adressraum-Steuerelemente in verschiedenen Steuerregistern oder wie durch die Zugriffsregister angegeben. Die Wahl wird durch den Umsetzungsmodus bestimmt, der in dem aktuellen PSW angegeben wird. Es stehen vier Umsetzungsmodi zur Verfügung: Primärbereichsmodus, Sekundärbereichsmodus, Zugriffsregistermodus und Ausgangsspeicherbereichsmodus. Verschiedene Adressräume sind abhängig vom Umsetzungsmodus adressierbar.
  • Wenn sich die CPU im Primärbereichsmodus oder Sekundärbereichsmodus befindet, kann die CPU jederzeit virtuelle Adressen umsetzen, die zu zwei Adressräumen gehören – dem primären Adressraum und dem sekundären Adressraum. Wenn sich die CPU im Zugriffsregistermodus befindet, kann sie jederzeit virtuelle Adressen von bis zu 16 Adressräumen umsetzen – den primären Adressraum und bis zu 15 durch das AR angegebene Adressräume. Wenn sich die CPU im Ausgangsspeicherbereichmodus befindet, kann sie jederzeit virtuelle Adressen des Adress-Ausgangsspeicherbereichs umsetzen.
  • Der primäre Adressraum wird als solcher identifiziert, weil er aus primären virtuellen Adressen besteht, die mithilfe des primären Adressraum-Steuerelements (ASCE) umgesetzt werden. Desgleichen besteht der sekundäre Adressraum aus sekundären virtuellen Adressen, die mithilfe des sekundären ASCE umgesetzt werden; die durch das AR angegebenen Adressräume bestehen aus virtuellen Adressen, die durch das AR angegeben und mithilfe von ASCEs umgesetzt werden, die durch das AR angegeben werden; und der Ausgangsadressraum besteht aus virtuellen Ausgangsadressen, die mithilfe des Ausgangs-ASCE umgesetzt wurden. Die primären und sekundären ASCEs befinden sich jeweils in den Steuerregistern 1 und 7. Durch das AR angegebenen ASCEs befinden sich in ASN-Zweittabelleneinträgen, die über einen Prozess, der als Zugriffsregisterumsetzung (ART) bezeichnet wird, unter Verwendung der Steuerregister 2, 5 und 8 gefunden werden. Das Ausgangs-ASCE steht im Steuerregister 13.
  • Eine Ausführungsform einer Datenverarbeitungsumgebung, die einen oder mehrere Aspekte der hierin beschriebenen transaktionsgebundenen Einrichtung integriert und verwendet, wird unter Bezugnahme auf 1 beschrieben.
  • Unter Bezugnahme auf 1 beruht eine Datenverarbeitungsumgebung 100 in einem Beispiel auf der von International Business Machines (IBM®) Corporation, Armonk, New York angebotenen z/Architecture. Die z/Architecture wird in einer IBM-Veröffentlichung mit dem Titel „z/Architecture – Principles of Operation” beschrieben, Veröffentlichungsnr. SA22-7932-08, 9. Ausgabe, August 2010.
  • Weitere hierin verwendete Namen können eingetragene Marken, Markenzeichen oder Produktnamen von International Business Machines Corporation oder anderen Unternehmen sein.
  • Zum Beispiel enthält die Datenverarbeitungsumgebung 100 einen Zentralprozessorkomplex (CPC) 102, der mit einer oder mehreren Eingabe/Ausgabe-(E/A) Einheiten 106 über eine oder mehrere Steuereinheiten 108 verbunden ist. Der Zentralprozessorkomplex 102 enthält zum Beispiel einen oder mehrere Zentralprozessoren 110, eine oder mehrere Partitionen 112 (z. B. logische Partitionen (LP)), einen Hypervisor 114 für logische Partitionen und ein Eingabe/Ausgabe-Subsystem 115, die jeweils im Folgenden beschrieben werden.
  • Die Zentralprozessoren 110 sind physische Prozessorressourcen, die den logischen Partitionen zugeordnet sind. insbesondere hat jede logische Partition 112 einen oder mehrere logische Prozessoren, von denen jeder die Gesamtheit oder einen Teil eines physischen Prozessors 110 darstellt, der der Partition zugeordnet ist. Die logischen Prozessoren einer bestimmten Partition 112 können entweder der Partition zugeordnet sein, sodass die zugrunde liegende Prozessorressource 110 für diese Partition reserviert ist, oder gemeinsam mit einer anderen Partition genutzt werden, sodass die zugrunde liegende Prozessorressource potenziell für eine andere Partition verfügbar ist.
  • Eine logische Partition funktioniert als separates System und hat eine oder mehrere Anwendungen und optional ein darin residentes Betriebssystem, das für jede logische Partition unterschiedlich sein kann, in einer Ausführungsform ist das Betriebssystem das z/OS-Betriebssystem, das z/VM-Betriebssystem, das z/Linux-Betriebssystem oder das TPF-Betriebssystem, die von IBM erhälitlich sind. Die logischen Partitionen 112 werden durch einen Hypervisor 114 für logische Partitionen verwaltet, der durch Firmware implementiert wird, die auf den Prozessoren 110 ausgeführt wird. Wie hierin verwendet, enthält die Firmware z. B. den Mikrocode und/oder Millicode des Prozessors. Sie enthält zum Beispiel die Anweisungen auf Hardware-Ebene und/oder Datenstrukturen, die in einer Implementierung von übergeordnetem Maschinencode verwendet werden. In einer Ausführungsform enthält sie zum Beispiel proprietären Code, der normalerweise als Mikrocode bereitgestellt wird, der vertrauenswürdige Software enthält oder einen Mikrocode, der für die zugrunde liegende Hardware spezifisch ist und den Betriebssystemzugriff auf die System-Hardware steuert.
  • Die logischen Partitionen und der Hypervisor für logische Partitionen weisen jeweils ein oder mehrere Programme auf, die in jeweiligen Partitionen des zentralen Speichers liegen, der den Zentralprozessoren zugehörig ist. Ein Beispiel für den Hypervisor 114 für logische Partitionen ist der Processor Resource/System Manager (PR/SM), der von International Business Machines Corporation, Armonk, New York angeboten wird.
  • Das Eingabe/Ausgabe-Subsystem 115 überträgt den Informationsfluss zwischen den Eingabe/Ausgabe-Einheiten 106 und dem Hauptspeicher (auch als Hauptarbeitsspeicher bekannt). Es ist mit dem Zentralprozessorkomplex so verbunden, dass es ein Teil des Zentralprozessorkomplexes oder davon getrennt sein kann. Das E/A-Subsystem entlastet die Zentralprozessoren von der Aufgabe des direkten Datenaustauschs mit den Eingabe/Ausgabe-Einheiten und ermöglicht einer Datenerarbeitung ein gleichzeitiges Fortfahren mit der Eingabe/Ausgabe-Verarbeitung. Zum Bereitstellen von Datenübertragungen verwendet das E/A-Subsystem E/A-Datenübertragungsadapter. Es gibt verschiedene Typen von Datenübertragungsadaptern, unter anderem zum Beispiel Kanäle, E/A-Adapter, PCI-Karten, Ethernet-Karten, Small Computer Storage Interface-(SCSI)Karten usw. In dem hierin beschriebenen bestimmten Beispiel sind die E/A-Datenübertragungsadapter Kanäle, und daher wird hierin auf das E/A-Subsystem als ein Kanal-Subsystem Bezug genommen. Dies ist jedoch nur ein Beispiel. Es können weitere Typen von E/A-Subsystemen verwendet werden.
  • Das E/A-Subsystem verwendet einen oder mehrere Eingabe/Ausgabe-Pfade als Datenübertragungsverbindungen beim Verwalten des Informationsflusses zu oder von den Eingabe/Ausgabe-Einheiten 106. In diesem bestimmten Beispiel werden diese Pfade als Kanalpfade bezeichnet, da die Datenübertragungsadapter Kanäle sind.
  • Die oben beschriebene Datenverarbeitungsumgebung ist nur ein Beispiel für eine Datenverarbeitungsumgebung, die verwendet werden kann. Weitere Umgebungen, unter anderem nicht partitionierte Umgebungen, weitere partitionierte Umgebungen und/oder emulierte Umgebungen können verwendet werden, doch sind sie nicht darauf beschränkt; Ausführungsformen sind nicht auf irgendeine Umgebung beschränkt.
  • Gemäß einem oder mehreren Aspekten ist die transaktionsgebundene Ausführungseinrichtung eine CPU-Erweiterung, die das Mittel bereitstellt, mit dem die CPU eine Folge von Anweisungen – bekannt als eine Transaktion – ausführen kann, die auf mehrere Speicherorte zugreifen können, einschließlich der Aktualisierung dieser Speicherorte. Wie von anderen CPUs und dem E/A-Subsystem beobachtet, wird die Transaktion (a) entweder in ihrer Gesamtheit als eine einzelne atomare Operation abgeschlossen oder (b) abgebrochen, wobei potenziell kein Nachweis zurückbleibt, dass sie jemals ausgeführt wurde (ausgenommen bestimmte Bedingungen, die hierin beschrieben werden). Somit kann eine erfolgreich abgeschlossene Transaktion zahlreiche Speicherorte ohne irgendeine bestimmte Sperre aktualisieren, die in dem klassischen Mehrprozessormodell erforderlich ist.
  • Die transaktionsgebundene Ausführungseinrichtung enthält zum Beispiel ein oder mehrere Steuerelemente; eine oder mehrere Anweisungen; eine transaktionsgebundene Verarbeitung einschließlich eingeschränkter und nicht eingeschränkter Ausführung; und eine Abbruchverarbeitung, die alle jeweils im Folgenden beschrieben werden.
  • In einer Ausführungsform werden drei Sondersteuerelemente, unter anderem ein Transaktionsabbruch-Programmstatuswort (PSW), eine Transaktionsdiagnoseblock-(TDB)Adresse und eine Transaktionsverschachtelungstiefe; fünf Steuerregister-Bits; und sechs allgemeine Anweisungen, darunter TRANSACTION BEGIN (eingeschränkt und nicht eingeschränkt), TRANSACTION END, EXTRACT TRANSACTION NESTING DEPTH, TRANSACTION ABORT und NONTRANSACTIONAL STORE zum Steuern der transaktionsgebundenen Ausführungseinrichtung verwendet. Wenn die Einrichtung installiert ist, ist sie zum Beispiel in allen CPUs in der Konfiguration installiert. Eine Einrichtungsangabe, Bit 73 in einer Implementierung, gibt an, wenn sie eins ist, dass die transaktionsgebundene Ausführungseinrichtung installiert ist.
  • Wenn die transaktionsgebundene Ausführungseinrichtung installiert ist, stellt die Konfiguration eine nicht eingeschränkte transaktionsgebundene Ausführungseinrichtung und optional eine eingeschränkte transaktionsgebundene Ausführungseinrichtung bereit, die jeweils im Folgenden beschrieben werden. Wenn die Einrichtungsangaben 50 und 73 zum Beispiel beide eins sind, ist die eingeschränkte transaktionsgebundene Ausführungseinrichtung installiert. Beide Einrichtungsangaben werden im Arbeitsspeicher an bestimmten Speicherorten gespeichert.
  • Wie hierin verwendet bezieht sich der Anweisungsname TRANSACTION BEGIN auf die Anweisungen mit den mnemonischen Zeichen TBEGIN (Transaktionsbeginn für eine nicht eingeschränkte Transaktion) und TBEGINC (Transaktionsbeginn für eine eingeschränkte Transaktion). Einer spezifischen Anweisung zugehörige Erörterungen werden durch den Anweisungsnamen angegeben, gefolgt von den mnemonischen Zeichen in runden oder eckigen Klammern oder einfach durch die mnemonischen Zeichen.
  • Eine Ausführungsform mit einem Format einer Anweisung TRANSACTION BEGIN (TBEGIN) ist in den 2A bis 2B dargestellt. Zum Beispiel enthält eine Anweisung TBEGIN 200 ein Operationscode-Feld 202, das einen Operationscode enthält, der eine nicht eingeschränkte Transaktionsbeginn-Operation angibt; ein Basisfeld (B1) 204; ein Verschiebungsfeld (D1) 206; und ein Direktfeld (I2) 208. Wenn das Feld B1 ungleich null ist, werden die Inhalte des Allgemeinregisters, die durch B1 204 angegeben werden, zu D1 206 hinzugefügt, um die erste Operandenadresse zu erhalten.
  • Wenn das Feld B1 ungleich null ist, gilt Folgendes:
    • • Wenn die Transaktionsverschachtelungstiefe anfänglich null ist, gibt die erste Operandenadresse den Speicherort des 256-Byte-Transaktionsdiagnoseblocks an, der als der durch TBEGIN angegebene TDB bezeichnet wird (im Folgenden ausführlicher beschrieben), in den verschiedene Diagnoseinformationen gespeichert werden können, wenn die Transaktion abgebrochen wird. Wenn sich die CPU im Primärbereichmodus oder im Zugriffsregistermodus befindet, gibt die erste Operandenadresse einen Speicherort in dem primären Adressraum an. Wenn sich die CPU in dem Sekundärbereich- oder Ausgangsspeicherbereichmodus befindet, gibt die erste Operandenadresse jeweils einen Speicherort in dem sekundären oder Ausgangsadressraum an. Wenn die DAT ausgeschaltet ist, gibt die Transaktionsdiagnoseblock-(TDB)Adresse (TDBA) einen Speicherort im realen Speicher an.
  • Eine Speicherzugriffsmöglichkeit durch den ersten Operanden wird bestimmt. Falls zugänglich, wird die logische Adresse des Operanden in die Transaktionsdiagnoseblockadresse (TDBA) gestellt, und die TDBA ist gültig.
    • • Wenn sich die CPU bereits in dem nicht eingeschränkten transaktionsgebundenen Ausführungsmodus befindet, wird die TDBA nicht modifiziert, und es ist unvorhersehbar, ob der erste Operand auf Zugänglichkeit getestet wird.
  • Wenn das Feld B1 null ist, werden keine Zugriffsausnahmen für den ersten Operanden erkannt, und für die äußerste Anweisung TBEGIN ist die TDBA ungültig.
  • Die Bits des Felds I2 werden in einem Beispiel wie folgt definiert:
    Allgemeinregister-Speichermaske (GRSM) 210 (2B): Die Bits 0 bis 7 des Felds I2 enthalten die Allgemeinregister-Speichermaske (GRSM). Jedes Bit der GRSM stellt ein geradzahlig-ungeradzahliges Paar von Allgemeinregistern dar, wobei Bit 0 die Register 0 und 1 darstellt, Bit 1 die Register 2 und 3 darstellt usw. Wenn ein Bit in der GRSM der äußersten Anweisung TBEGIN null ist, wird das entsprechende Registerpaar nicht gespeichert. Wenn ein Bit in der GRSM der äußersten Anweisung TBEGIN eins ist, wird das entsprechende Registerpaar in einem modellabhängigen Speicherort gespeichert, auf den durch das Programm nicht direkt zugegriffen werden kann.
  • Wenn die Transaktion abgebrochen wird, werden gespeicherte Registerpaare wieder auf ihre Inhalte zum Zeitpunkt der Ausführung der äußersten TBEGIN-Anweisungen zurückgespeichert. Die Inhalte aller anderen (nicht gespeicherten) Allgemeinregister werden nicht zurückgespeichert, wenn eine Transaktion abgebrochen wird.
  • Die Allgemeinregister-Speichermaske wird in allen TBEGINs ignoriert mit Ausnahme der äußersten.
  • AR-Modifizierung zulassen (A) 212: Das A-Steuerelement, Bit 12 des Felds I2, steuert, ob die Transaktion ein Zugriffsregister modifizieren darf. Das effektive Steuerelement für AR-Modifizierung zulassen ist die logische UND-Verknüpfung des A-Steuerelements in der Anweisung TBEGIN für die aktuelle Verschachtelungsebene und für alle äußeren Ebenen.
  • Wenn das effektive A-Steuerelement null ist, wird die Transaktion mit dem Abbruchcode 11 abgebrochen (eingeschränkte Anweisung), wenn ein Versuch unternommen wird, irgendein Zugriffsregister zu modifizieren. Wenn das effektive A-Steuerelement eins ist, wird die Transaktion nicht abgebrochen, wenn ein Zugriffsregister modifiziert wird (falls keinerlei andere Abbruchbedingung vorliegt).
  • Gleitkomma-Operation zulassen (F) 214: Das F-Steuerelement, Bit 13 des Felds I2, steuert, ob die Transaktion angegebene Gleitkomma-Anweisungen modifizieren darf. Das effektive Steuerelement für Gleitkomma-Operation zulassen ist die logische UND-Verknüpfung des F-Steuerelements in der Anweisung TBEGIN für die aktuelle Verschachtelungsebene und für alle äußeren Ebenen.
  • Wenn das effektive F-Steuerelement null ist, wird (a) die Transaktion mit dem Abbruchcode 11 abgebrochen (eingeschränkte Anweisung), wenn ein Versuch unternommen wird, eine Gleitkomma-Anweisung auszuführen, und wird (b) der Datenausnahmecode (DXC) in Byte 2 des Gleitkomma-Steuerregisters (FPCR) nicht durch irgendeine Datenausnahme-Programmausnahmebedingung gesetzt. Wenn das effektive F-Steuerelement eins ist, wird (a) die Transaktion nicht abgebrochen, wenn ein Versuch unternommen wird, eine Gleitkomma-Anweisung (falls keine andere Abbruchbedingung vorliegt) auszuführen, und kann (b) der DXC in dem FPCR durch eine Datenausnahme-Programmausnahmebedingung gesetzt werden.
  • Programmunterbrechungs-Filtersteuerelement(PIFC) 216: Die Bits 14 bis 15 des Felds I2 sind das Programmunterbrechungs-Filtersteuerelement (PIFC). Das PIFC steuert, ob bestimmte Klassen von Programmausnahmebedingungen (z. B. Adressierausnahme, Datenausnahme, Operationsausnahme, Schutzausnahme usw.), die auftreten, während sich die CPU im transaktionsgebundenen Ausführungsmodus befindet, zu einer Unterbrechung führen.
  • Das effektive PIFC ist der höchste Wert des PIFC in der Anweisung TBEGIN für die aktuelle Verschachtelungsebene und für alle äußeren Ebenen. Wenn das effektive PIFC null ist, führen alle Programmausnahmebedingungen zu einer Unterbrechung. Wenn das effektive PIFC eins ist, führen Programmausnahmebedingungen mit einer transaktionsgebundenen Ausführungsklasse 1 und 2 zu einer Unterbrechung. (Jeder Programmausnahmebedingung ist mindestens eine transaktionsgebundene Ausführungsklasse zugewiesen, die vom Schweregrad der Ausnahme abhängig ist. Der Schweregrad beruht auf der Wahrscheinlichkeit einer Wiederherstellung während einer wiederholten Ausführung der transaktionsgebundenen Ausführung und darauf, ob des Betriebssystem die Unterbrechung erkennen muss.) Wenn das effektive PIFC zwei ist, führen Programmausnahmebedingungen mit einer transaktionsgebundenen Ausführungsklasse 1 zu einer Unterbrechung. Ein PIFC von 3 ist reserviert.
  • Die Bits 8 bis 11 des Felds I2 (Bits 40 bis 43 der Anweisung) sind reserviert und sollten Nullen enthalten; andernfalls kann das Programm zukünftig nicht kompatibel arbeiten.
  • Eine Ausführungsform eines Formats einer eingeschränkten Transaktionsbeginn-Anweisung (TBEGINC) wird unter Bezugnahme auf die 3A bis 3B beschrieben. In einem Beispiel enthält TBEGINC 300 ein Operationscode-Feld 302, das einen Operationscode enthält, der eine eingeschränkte Transaktionsbeginn-Operation angibt; ein Basisfeld (B1) 304; ein Verschiebungsfeld (D1) 306; und ein Direktfeld (I2) 308. Die Inhalte des Allgemeinregisters, die durch B1 304 angegeben werden, werden zu D1 306 hinzugefügt, um die erste Operandenadresse zu erhalten. Bei einer eingeschränkten Transaktionsbeginn-Anweisung wird die erste Operandenadresse jedoch nicht verwendet, um auf Speicher zuzugreifen. Stattdessen enthält das Feld B1 der Anweisung Nullen; andernfalls wird eine Spezifikationsausnahme erkannt.
  • In einer Ausführungsform enthält das Feld I2 verschiedene Steuerelemente, wofür ein Beispiel in 3B dargestellt ist.
  • Die Bits des Felds I2 werden in einem Beispiel wie folgt definiert:
    Allgemeinregister-Speichermaske (GRSM) 310: Die Bits 0 bis 7 des Felds I2 enthalten die Allgemeinregister-Speichermaske (GRSM). Jedes Bit der GRSM stellt ein geradzahlig-ungeradzahliges Paar von Allgemeinregistern dar, wobei Bit 0 die Register 0 und 1 darstellt, Bit 1 die Register 2 und 3 darstellt usw. Wenn ein Bit in der GRSM null ist, wird das entsprechende Registerpaar nicht gespeichert. Wenn ein Bit in der GRSM eins ist, wird das entsprechende Registerpaar in einem modellabhängigen Speicherort gespeichert, auf den durch das Programm nicht direkt zugegriffen werden kann.
  • Wenn die Transaktion abgebrochen wird, werden gespeicherte Registerpaare wieder auf ihre Inhalte zum Zeitpunkt der Ausführung der äußersten Anweisung TRANSACTION BEGIN zurückgespeichert. Die Inhalte aller anderen (nicht gespeicherten) Allgemeinregister werden nicht zurückgespeichert, wenn eine eingeschränkte Transaktion abgebrochen wird.
  • Wenn TBEGINC verwendet wird, um eine Ausführung in dem nicht eingeschränkten Transaktionsausführungsmodus fortzuführen, wird die Allgemeinregister-Speichermaske ignoriert.
  • AR-Modifizierung zulassen (A) 312: Das A-Steuerelement, Bit 12 des Felds I2, steuert, ob die Transaktion ein Zugriffsregister modifizieren darf. Das effektive Steuerelement für AR-Modifizierung zulassen ist die logische UND-Verknüpfung des A-Steuerelements in der Anweisung TBEGINC für die aktuelle Verschachtelungsebene und für alle äußeren Anweisungen TBEGIN oder TBEGINC.
  • Wenn das effektive A-Steuerelement null ist, wird die Transaktion mit dem Abbruchcode 11 abgebrochen (eingeschränkte Anweisung), wenn ein Versuch unternommen wird, irgendein Zugriffsregister zu modifizieren. Wenn das effektive A-Steuerelement eins ist, wird die Transaktion nicht abgebrochen, wenn ein Zugriffsregister modifiziert wird (falls keinerlei andere Abbruchbedingung vorliegt).
  • Die Bits 8 bis 11 und 13 bis 15 des Felds I2 (Bits 40 bis 43 und 45 bis 47 der Anweisung) sind reserviert und sollten Nullen enthalten.
  • Das Ende einer Transaktionsbeginn-Anweisung wird durch eine Anweisung TRANSACTION END (TEND) angegeben, für die ein Format in 4 dargestellt ist. Zum Beispiel enthält eine Anweisung TEND 400 ein Operationsode-Feld 402, das einen Operationscode enthält, der eine Transaktionsende-Operation angibt.
  • Eine Reihe von Begriffen wird in Bezug auf die transaktionsgebundene Ausführungseinrichtung verwendet, und daher wird nur der Einfachheit halber im Folgenden eine Liste von Begriffen in alphabetischer Reihenfolge bereitgestellt. In einer Ausführungsform haben diese Begriffe die folgende Definition: Abbrechen: Eine Transaktion wird abgebrochen, wenn sie vor einer Anweisung TRANSACTION END endet, was zu einer Transaktionsverschachtelungstiefe von null führt. Wenn eine Transaktion abgebrochen wird, tritt in einer Ausführungsform Folgendes ein:
    • • Transaktionsgebundene Speicherzugriffe, die von irgendeiner und allen Ebenen der Transaktion vorgenommen werden, werden verworfen (also nicht festgeschrieben).
    • • Nicht transaktionsgebundene Speicherzugriffe, die von irgendeiner und allen Ebenen der Transaktion vorgenommen werden, werden festgeschrieben.
    • • Register, die durch die Allgemeinregister-Speichermaske (GRSM) der äußersten Anweisung TRANSACTION BEGIN angegeben werden, werden auf ihre Inhalte wie vor der transaktionsgebundenen Ausführung zurückgespeichert (also auf ihre Inhalte bei Ausführung der äußersten Anweisung TRANSACTION BEGIN). Allgemeinregister, die durch die Allgemeinregister-Speichermaske der äußersten Anweisung TRANSACTION BEGIN nicht angegeben wurden, werden nicht zurückgespeichert.
    • • Zugriffsregister, Gleitkommaregister und Gleitkomma-Steuerregister werden nicht zurückgespeichert. Alle während einer Transaktionsausführung an diesen Registern vorgenommenen Änderungen werden beibehalten, wenn die Transaktion abgebrochen wird.
  • Eine Transaktion kann aufgrund einer Vielfalt von Gründen abgebrochen werden, unter anderem wegen einer versuchten Ausführung einer eingeschränkten Anweisung, einer versuchten Modifizierung einer eingeschränkten Ressource, eines transaktionsgebundenen Konflikts, einer Überschreitung verschiedener CPU-Ressourcen, jeglicher interpretativen Ausführungs-Abfangbedingung, jeglicher Unterbrechung, einer Anweisung TRANSACTION ABORT und weiteren Gründen. Ein Transaktionsabbruchcode stellt spezifische Gründe bereit, warum eine Transaktion abgebrochen werden kann.
  • Ein Beispiel für ein Format einer Anweisung TRANSACTION ABORT (TABORT) wird unter Bezugnahme auf 5 beschrieben. Zum Beispiel enthält eine Anweisung TABORT 500 ein Operationscode-Feld 502, das einen Operationscode enthält, der eine Transaktionsabbruchoperation angibt; ein Basisfeld (B2) 504; und ein Verschiebungsfeld (D2) 506. Wenn das Feld B2 ungleich null ist, werden die Inhalte des Allgemeinregisters, das durch B2 504 angegeben wird, zu D2 506 hinzugefügt, um eine zweite Operandenadresse zu erhalten; andernfalls wird die zweite Operandenadresse allein aus dem Feld D2 gebildet und das Feld B2 wird ignoriert. Die zweite Operandenadresse wird nicht zum Adressieren von Daten verwendet; stattdessen bildet die Adresse den Transaktionsabbruchcode, der während einer Abbruchverarbeitung in einen Transaktionsdiagnoseblock gestellt wird. Eine Adressberechnung für die zweite Operandenadresse folgt den Adress-Arithmetikregeln: im 24-Bit-Adressiermodus werden die Bits 0 bis 29 auf Nullen gesetzt; im 31-Bit-Adressiermodus werden die Bits 0 bis 32 auf Nullen gesetzt.
  • Festschreiben: Bei der Beendigung einer äußersten Anweisung TRANSACTION END schreibt die CPU die durch die Transaktion (d. h. die äußerste Transaktion und alle verschachtelten Ebenen) vorgenommenen Speicherzugriffe fest, sodass sie für andere CPUs und das E/A-Subsystem sichtbar sind. Wie von anderen CPUs und durch das E/A-Subsystem beobachtet, scheinen alle Abruf- und Speicherzugriffe, die von allen verschachtelten Ebenen der Transaktion vorgenommen wurden, als eine einzige gleichzeitige Operation aufzutreten, wenn die Festschreibung erfolgt.
  • Die Inhalte der Allgemeinregister, Zugriffsregister, Gleitkommaregister und des Gleitkomma-Steuerregisters werden durch den Festschreibungsprozess nicht modifiziert. Alle während einer transaktionsgebundenen Ausführung an diesen Registern vorgenommenen Änderungen werden beibehalten, wenn die Speicherungen der Transaktion festgeschrieben werden.
  • Konflikt: Ein transaktionsgebundener Zugriff durch eine CPU steht entweder (a) mit einem transaktionsgebundenen Zugriff oder einem nicht transaktionsgebundenen Zugriff, der durch eine andere CPU vorgenommen wird oder (b) mit einem nicht transaktionsgebundenen Zugriff, der durch das E/A-Subsystem vorgenommen wird, in Konflikt, wenn beide Zugriffe auf einen beliebigen Speicherort innerhalb derselben Zwischenspeicherzeile erfolgen und einer oder mehrere der Zugriffe ein Speichervorgang sind.
  • Ein Konflikt kann durch eine spekulative Ausführung von Anweisungen durch eine CPU erkannt werden, selbst wenn der Konflikt in der konzeptionellen Folge nicht erkannt wird.
  • Eingeschränkte Transaktion: Eine eingeschränkte Transaktion ist eine Transaktion, die in dem eingeschränkten transaktionsgebundenen Ausführungsmodus ausgeführt wird und den folgenden Beschränkungen unterliegt:
    • • Eine Untergruppe von allgemeinen Anweisungen ist verfügbar,
    • • Eine begrenzte Anzahl von Anweisungen kann ausgeführt werden.
    • • Zugriff kann auf eine begrenzte Anzahl von Speicheroperanden-Speicherorten erfolgen.
    • • Die Transaktion ist auf eine einzelne verschachtelte Ebene begrenzt.
  • Falls keine wiederholten Unterbrechungen oder Konflikte mit anderen CPUs oder dem E/A-Subsystem vorliegen, wird eine eingeschränkte Transaktion letztendlich beendet, somit ist eine Abbruchverarbeitungsroutine nicht erforderlich. Eingeschränkte Transaktionen werden im Folgenden ausführlich beschrieben.
  • Wenn eine eingeschränkte Anweisung TRANSACTION BEGIN (TBEGINC) ausgeführt wird, während sich die CPU bereits im nicht eingeschränkten Transaktionsausführungsmodus befindet, fährt die Ausführung als verschachtelte nicht eingeschränkte Transaktion fort.
  • Eingeschränkter transaktionsgebundener Ausführungsmodus: Wenn die Transaktionsverschachtelungstiefe null beträgt und eine Transaktion durch eine Anweisung TBEGINC eingeleitet wird, tritt die CPU in den eingeschränkten transaktionsgebundenen Ausführungsmodus ein. Während sich die CPU in dem eingeschränkten transaktionsgebundenen Ausführungsmodus befindet, ist die Transaktionsverschachtelungstiefe eins.
  • Verschachtelte Transaktion: Wenn die Anweisung TRANSACTION BEGIN ausgegeben wird, während sich die CPU im nicht eingeschränkten transaktionsgebundenen Ausführungsmodus befindet, wird die Transaktion verschachtelt.
  • Die transaktionsgebundene Ausführungseinrichtung verwendet ein Modell, das als verflachte Verschachtelung bezeichnet wird. Im verflachten Verschachtelungsmodus sind von einer inneren Transaktion vorgenommene Speicherungen erst von anderen CPUs oder durch das E/A-Subsystem beobachtbar, wenn die äußerste Transaktion ihre Speicherungen festschreibt. Desgleichen werden alle verschachtelten Transaktionen abgebrochen, wenn eine Transaktion abgebrochen wird, und alle transaktionsgebundenen Speicherungen aller verschachtelten Transaktionen werden verworfen.
  • Ein Beispiel für verschachtelte Transaktionen ist in 6 dargestellt. Wie gezeigt, startet TBEGIN 600 eine äußerste Transaktion 601, TBEGIN 602 startet eine erste verschachtelte Transaktion und TBEGIN 604 startet eine zweite verschachtelte Transaktion. In diesem Beispiel definieren TBEGIN 604 und TEND 606 eine innerste Transaktion 608. Wenn TEND 610 ausgeführt wird, werden transaktionsgebundene Speicherungen für die äußerste Transaktion und alle inneren Transaktionen festgeschrieben 612.
  • Nicht eingeschränkte Transaktion: Eine nicht eingeschränkte Transaktion ist eine Transaktion, die in dem nicht eingeschränkten transaktionsgebundenen Ausführungsmodus ausgeführt wird. Obwohl eine nicht eingeschränkte Transaktion nicht auf die Weise begrenzt ist wie eine eingeschränkte Transaktion, kann sie trotzdem aufgrund einer Vielfalt von Ursachen abgebrochen werden.
  • Nicht eingeschränkter transaktionsgebundener Ausführungsmodus: Wenn eine Transaktion durch die Anweisung TBEGIN eingeleitet wird, tritt die CPU in den nicht eingeschränkten transaktionsgebundenen Ausführungsmodus ein. Während sich die CPU in dem nicht eingeschränkten transaktionsgebundenen Ausführungsmodus befindet, kann die Transaktionsverschachtelungstiefe zwischen eins bis zur maximalen Transaktionsverschachtelungstiefe schwanken.
  • Nicht transaktionsgebundener Zugriff: Nicht transaktionsgebundene Zugriffe sind Speicheroperandenzugriffe, die durch die CPU vorgenommen werden, wenn sie sich nicht im transaktionsgebundenen Ausführungsmodus befindet (also klassische Speicherzugriffe außerhalb einer Transaktion). Ferner sind Zugriffe, die durch das E/A-Subsystem vorgenommen werden, nicht transaktionsgebundene Zugriffe. Des Weiteren kann die Anweisung NONTRANSACTIONAL STORE verwendet werden, um einen nicht transaktionsgebundenen Speicherzugriff zu verursachen, während sich die CPU in dem nicht eingeschränkten transaktionsgebundenen Ausführungsmodus befindet.
  • Eine Ausführungsform eines Formats einer Anweisung NONTRANSACTIONAL STORE wird unter Bezugnahme auf 7 beschrieben. Zum Beispiel enthält eine Anweisung NONTRANSACTIONAL STORE 700 eine Vielzahl von Operationscode-Feldern 702a, 702b, die einen Operationscode angeben, der eine nicht transaktionsgebundene Speicheroperation angibt; ein Registerfeld (R1) 704, das ein Register angibt, dessen Inhalte als erster Operand bezeichnet werden; ein Indexfeld (X2) 706; ein Basisfeld (B2) 708; ein erstes Verschiebungsfeld (DL2) 710; und ein zweites Verschiebungsfeld (DH2) 712. Die Inhalte der Allgemeinregister, die durch die Felder X2 und B2 angegeben werden, werden zu den Inhalten einer Verkettung von Inhalten der Felder DH2 und DL2 hinzugefügt, um die zweite Operandenadresse zu bilden. Wenn entweder eines oder beide der Felder X2 oder B2 null sind, ist das entsprechende Register nicht am Hinzufügen beteiligt.
  • Der erste 64-Bit-Operand wird nicht transaktionsgebunden ungeändert auf den zweiten Operandenspeicherort gestellt.
  • Die Verschiebung, die durch die Verkettung der Felder DH2 und DL2 gebildet wird, wird als binäre 20-Bit-Ganzzahl mit Vorzeichen behandelt.
  • Der zweite Operand muss auf eine Doppelwortgrenze ausgerichtet sein; andernfalls wird eine Spezifikationsausnahme erkannt, und die Operation wird unterdrückt.
  • Außere/Äußerste Transaktion: Eine Transaktion mit einer kleinzahligen Transaktionsverschachtelungstiefe ist eine äußere Transaktion Eine Transaktion mit einem Transaktions-Verschachtelungstiefenwert von eins ist die äußerste Transaktion.
  • 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 verursacht, dass die Transaktionsverschachtelungstiefe von eins auf null übergeht. Eine eingeschränkte Transaktion ist in dieser Ausführungsform die äußerste Transaktion.
  • Programmunterbrechungsfiltern: Wenn eine Transaktion aufgrund bestimmter Programmausnahmebedingungen abgebrochen wird, kann das Programm optional verhindern, dass die Unterbrechung eintritt. Diese Technik wird als Programmunterbrechungsfiltern bezeichnet. Programmunterbrechungsfiltern unterliegt der transaktionsgebundenen Klasse der Unterbrechung, dem effektiven Programmunterbrechungs-Filtersteuerelement aus der Anweisung TRANSACTION BEGIN und einem Überschreiben des Filterns der transaktionsgebundenen Ausführungsprogrammunterbrechung in dem Steuerregister 0.
  • Transaktion: Eine Transaktion enthält die vorgenommenen Speicheroperandenzugriffe und ausgewählten Allgemeinregister, die geändert wurden, während sich die CPU in dem Transaktionsausführungsmodus befindet. Bei einer nicht eingeschränkten Transaktion können die Speicheroperandenzugriffe sowohl transaktionsgebundene Zugriffe als auch nicht transaktionsgebundene Zugriffe enthalten. Bei einer eingeschränkten Transaktion sind die Speicheroperandenzugriffe auf transaktionsgebundene Zugriffe begrenzt. Wie von anderen CPUs und von dem E/A-Subsystem beobachtet, scheinen alle Speicheroperandenzugriffe, die von der CPU vorgenommen werden, während sie sich im Transaktionsausführungsmodus befindet, als eine einzige gleichzeitige Operation aufzutreten. Wenn eine Transaktion abgebrochen wird, werden transaktionsgebundene Speicherzugriffe verworfen, und alle durch die Allgemeinregister-Speichermaske der äußersten Anweisung TRANSACTION BEGIN angegeben Register werden auf ihre Inhalte vor der transaktionsgebundenen Ausführung zurückgespeichert.
  • Transaktionsgebundene Zugriffe: Transaktionsgebundene Zugriffe sind Speicheroperandenzugriffe, die vorgenommen werden, während sich die CPU in dem transaktionsgebundenen Ausführungsmodus befindet, ausgenommen Zugriffe, die durch die Anweisung NONTRANSACTIONAL STORE vorgenommen werden.
  • Transaktionsgebundener Ausführungsmodus: Der Begriff transaktionsgebundener Ausführungsmodus (auch bekannt als Transaktionsausführungsmodus) beschreibt die allgemeine Operation der nicht eingeschränkten und der eingeschränkten transaktionsgebundenen Ausführungsmodi. Daher werden beim Beschreiben der Operation die nicht eingeschränkten und eingeschränkten Begriffe verwendet, um den transaktionsgebundenen Ausführungsmodus zu bezeichnen.
  • Wenn die Transaktionsverschachtelungstiefe null ist, befindet sich die CPU nicht in dem transaktionsgebundenen Ausführungsmodus (der auch als nicht transaktionsgebundener Ausführungsmodus bezeichnet wird).
  • Wie von der CPU beobachtet, sind Abrufe und Speicherungen in dem transaktionsgebundenen Ausführungsmodus nicht verschieden von denjenigen, die vorgenommen werden, wenn sie sich nicht in dem transaktionsgebundenen Ausführungsmodus befindet.
  • In einer Ausführungsform der z/Architecture unterliegt die transaktionsgebundene Ausführungseinrichtung der Steuerung der Bits 8 bis 9 des Steuerregisters 0, der Bits 61 bis 63 des Steuerregisters 2, der Transaktionsverschachtelungstiefe, der Transaktionsdiagnoseblockadresse und des Transaktionsabbruch-Programmstatusworts (PSW).
  • Nach einem anfänglichen CPU-Zurücksetzen werden die Inhalte der Bit-Positionen 8 bis 9 des Steuerregisters 0, der Bitpositionen 62 bis 63 des Steuerregisters 2 und die Transaktionsverschachtelungstiefe auf null gesetzt. Wenn das transaktionsgebundene Ausführungssteuerelement, Bit 8 des Steuerregisters 0, null ist, kann die CPU nicht in den transaktionsgebundenen Ausführungsmodus versetzt werden.
  • Weitere Details in Bezug auf die verschiedenen Steuerelemente werden im Folgenden beschrieben.
  • Wie angegeben, wird die transaktionsgebundene Ausführungseinrichtung von zwei Bits im Steuerregister 0 und drei Bits im Steuerregister 2 gesteuert. Beispiel: Bits des Steuerregisters 0: in einer Ausführungsform lautet die Bit-Zuweisung wie folgt:
    Transaktionsgebundenes Ausführungssteuerelement (TXC): Bit 8 des Steuerregisters 0 ist das transaktionsgebundene Ausführungssteuerelement. Dieses Bit stellt einen Mechanismus bereit, durch den das Steuerprogramm (z. B. Betriebssystem) angeben kann, ob die transaktionsgebundene Ausführungseinrichtung von dem Programm verwendet werden kann. Bit 8 muss eins sein, damit ein erfolgreiches Eintreten in den transaktionsgebundenen Ausführungsmodus erfolgen kann.
  • Wenn Bit 8 des Steuerregisters 0 null ist, führt ein Versuch, die Anweisungen EXTRACT TRANSACTION NESTING DEPTH, TRANSACTION BEGIN und TRANSACTION END auszuführen, zur Ausführung einer speziellen Operation.
  • Eine Ausführungsform eines Formats einer Anweisung EXTRACT TRANSACTION NESTING DEPTH wird unter Bezugnahme auf 8 beschrieben. Zum Beispiel enthält eine Anweisung EXTRACT TRANSACTION NESTING DEPTH 800 ein Operationscode-Feld 802, das einen Operationscode angibt, der die Operation eines Extrahierens der Transaktionsverschachtelungstiefe angibt; und ein Registerfeld R1 804, das ein Allgemeinregister angibt.
  • Die aktuelle Transaktionsverschachtelungstiefe wird in die Bits 48 bis 63 des Allgemeinregisters R1 gestellt. Die Bits 0 bis 31 des Registers bleiben unverändert, und die Bits 32 bis 47 des Registers werden auf null gesetzt.
  • In einer weiteren Ausführungsform wird auch die maximale Transaktionsverschachtelungstiefe in das Allgemeinregister R1 gestellt, wie beispielsweise in die Bits 16 bis 31.
  • Überschreiben des Transaktionsausführungs-Programmunterbrechungsfilterns (PIFO): Bit 9 des Steuerregisters 0 ist das Überschreiben des transaktionsgebundenen Ausführungs-Programmunterbrechungsfilterns. Dieses Bit stellt einen Mechanismus bereit, durch den das Steuerprogramm sicherstellen kann, dass jede Programmausnahmebedingung, die auftritt, während sich die CPU in dem transaktionsgebundenen Ausführungsmodus befindet, ungeachtet des durch die Anweisung(en) TRANSACTION BEGIN angegebenen oder implizierten effektiven Programmunterbrechungs-Filtersteuerelements zu einer Unterbrechung führt.
  • Bits des Steuerregisters 2: In einer Ausführungsform lauten die Zuweisungen wie folgt:
    Transaktionsdiagnoseumfang (TDS): Bit 61 des Steuerregisters 2 steuert die Anwendbarkeit des Transaktionsdiagnosesteuerelements (TDC) in den Bits 62 bis 63 des Registers wie folgt: TDS
    Wert Bedeutung
    0 Die TDC wird ungeachtet dessen angewendet, ob sich die CPU im Problem- oder Überwachungszustand befindet.
    1 Die TDC wird nur angewendet, wenn sich die CPU im Problemzustand befindet. Wenn sich die CPU im Überwachungszustand befindet, erfolgt die Verarbeitung, als ob die TDC null enthielte.
  • Transaktionsdiagnosesteuerelement (TDC): Die Bits 62 bis 63 des Steuerregisters 2 sind eine 2-Bit-Ganzzahl ohne Vorzeichen, die verwendet werden kann, um zu verursachen, dass Transaktionen zu Diagnosezwecken willkürlich abgebrochen werden. Die Verschlüsselung der TDC lautet in einer Ausführungsform wie folgt: TDC
    Wert Bedeutung
    0 Normale Operation, Transaktionen werden infolge der TDC nicht abgebrochen.
    1 Abbruch jeder Transaktion bei einer willkürlichen Anweisung, jedoch vor einer Ausführung der äußersten Anweisung TRANSACTION END.
    2 Abbruch willkürlicher Transaktionen bei willkürlicher Anweisung.
    3 Reserviert
  • Wenn eine Transaktion aufgrund einer TDC ungleich null abgebrochen wird, kann einer der folgenden Fälle eintreten:
    • • Der Abbruchcode wird auf irgendeinen der Codes 7 bis 11, 13 bis 16 oder 255 gesetzt, wobei der Wert des Codes von der CPU willkürlich gewählt wird; der Bedingungscode wird entsprechend dem Abbruchcode gesetzt. Abbruchscodes werden im Folgenden ausführlicher beschrieben.
    • • Für eine nicht eingeschränkte Transaktion wird der Bedingungscode auf eins gesetzt. In diesem Fall ist der Abbruchcode nicht anwendbar.
  • Es hängt vom Modell ab, ob der TDC-Wert 1 implementiert wird. Wenn er nicht Implementiert ist, agiert ein Wert von 1 so, als ob 2 angegeben wäre.
  • Für eine eingeschränkte Transaktion wird ein TDC-Wert von 1 so behandelt, als ob ein TDC Wert von 2 angegeben wäre.
  • Wenn ein TDC-Wert von 3 angegeben ist, sind die Ergebnisse nicht vorhersehbar.
  • Transaktionsdiagnoseblockadresse (TDBA)
  • Eine gültige Transaktionsdiagnoseblockadresse (TDBA) wird von der ersten Operandenadresse der äußersten Anweisung TRANSACTION BEGIN (TBEGIN) gesetzt, wenn das Feld B1 der Anweisung ungleich null ist. Wenn sich die CPU im Primärbereich- oder Zugriffsregistermodus befindet, gibt die TDBA einen Speicherort in dem primären Adressraum an. Wenn sich die CPU in dem Sekundärbereich- oder Ausgangsbereichmodus befindet, gibt die TDBA jeweils einen Speicherort in dem sekundären oder Ausgangsadressraum an. Wenn die DAT (Dynamic Address Translation – dynamische Adressumsetzung) ausgeschaltet ist, gibt die TDBA einen Speicherort im realen Speicher an.
  • Die TDBA wird von der CPU verwendet, um den Transaktionsdiagnoseblock zu suchen – der als von TBEGIN angegebener TDB bezeichnet wird – wenn die Transaktion anschließend abgebrochen wird. Die drei niedrigstwertigen Bits der TDBA sind null, was bedeutet, dass der von TBEGIN angegebene TDB sich auf einer Doppelwortgrenze befindet.
  • Wenn das Feld B1 der äußersten Anweisung TRANSACTION BEGIN (TBEGIN) null ist, ist die transaktionsgebundene Diagnoseblockadresse ungültig, und es wird kein von TBEGIN angegebener TDB gespeichert, wenn die Transaktion anschließend abgebrochen wird.
  • Transaktionsabbruch-PSW (TAPSW)
  • Wenn während einer Ausführung der Anweisung TRANSACTION BEGIN (TBEGIN) die Verschachtelungstiefe anfänglich null beträgt, wird das Transaktionsabbruch-PSW auf die Inhalte des aktuellen PSW gesetzt; und die Anweisungsadresse des Transaktionsabbruch-PSW bezeichnet die nächste folgende Anweisung (also die Anweisung nach der äußersten TBEGIN). Wenn während einer Ausführung der Anweisung TRANSACTION BEGIN (TBEGIN) die Verschachtelungstiefe anfänglich null beträgt, wird das Transaktionsabbruch-PSW auf die Inhalte des aktuellen PSW gesetzt mit Ausnahme dessen, dass die Anweisungsadresse des Transaktionsabbruch-PSW die Anweisung TBEGIN angibt (statt die nächste folgende Anweisung nach TBEGIN).
  • Wenn eine Transaktion abgebrochen wird, wird der Bedingungscode in dem Transaktionsabbruch-PSW durch einen Code ersetzt, der den Schweregrad der Abbruchbedingung angibt. Wenn die Transaktion aufgrund von Ursachen abgebrochen wurde, die nicht zu einer Unterbrechung führen, wird das PSW anschließend aus dem Transaktionsabbruch-PSW geladen; wenn die Transaktion aufgrund von Ursachen abgebrochen wurde, die zu einer Unterbrechung führen, wird das Transaktionsabbruch-PSW als das alte Unterbrechungs-PSW gespeichert.
  • Das Transaktionsabbruch-PSW wird während der Ausführung jeder inneren Anweisung TRANSACTION BEGIN nicht verändert.
  • Transaktionsverschachtelungstiefe (TND)
  • Die Transaktionsverschachtelungstiefe ist zum Beispiel ein 16-Bit-Wert ohne Vorzeichen, der jedes Mal schrittweise erhöht wird, wenn eine Anweisung TRANSACTION BEGIN mit einem Bedingungscode 0 abgeschlossen wird, und jedes Mal schrittweise verringert wird, wenn eine Anweisung TRANSACTION END abgeschlossen wird. Die Transaktionsverschachtelungstiefe wird auf null zurückgesetzt, wenn eine Transaktion abgebrochen oder die CPU zurückgesetzt wird.
  • In einer Ausführungsform wird eine maximale TND von 15 implementiert.
  • Während sich die CPU in dem eingeschränkten transaktionsgebundenen Ausführungsmodus befindet, ist die Transaktionsverschachtelungstiefe in einer Implementierung eins. Obwohl die maximale TND als ein 4-Bit-Wert dargestellt werden kann, wird die TND zusätzlich als ein 16-Bit-Wert definiert, um ihre Untersuchung in dem Transaktionsdiagnoseblock zu erleichtern.
  • Transaktionsdiagnoseblock (TDB)
  • Wenn eine Transaktion abgebrochen wird, können verschiedene Zustandsinformationen wie folgt in einem Transaktionsdiagnoseblock (TDB) gespeichert werden:
    • 1. Von TBEGIN angegebener TDB; Wenn für eine nicht eingeschränkte Transaktion das Feld B1 der äußersten Anweisung TBEGIN ungleich null ist, gibt die erste Operandenadresse der Anweisung den von TBEGIN angegebenen TDB an. Dieser ist ein durch ein Anweisungsprogramm angegebener Speicherort, der durch die Abbruchverarbeitungsroutine der Anwendung untersucht werden kann.
    • 2. Programmunterbrechungs-(PI)TDB: Wenn eine nicht eingeschränkte Transaktion aufgrund einer nicht gefilterten Programmausnahmebedingung abgebrochen wird, oder wenn eine eingeschränkte Transaktion aufgrund Irgendeiner Programmausnahmebedingung abgebrochen wird (also jeder Bedingung, die zu einer Programmunterbrechung führt, die erkannt wird), wird der PI-TDB in Speicherorten in dem Präfix-Bereich gespeichert. Dieser steht dem Betriebssystem für ein Untersuchen und Abmelden in jedem Diagnosebericht zur Verfügung, der eventuell bereitgestellt wird.
    • 3. Abfang-TDB: Wenn die Transaktion aufgrund irgendeiner Programmausnahmebedingung abgebrochen wird, die zu einer Unterbrechung führt (also die Bedingung verursacht, dass die interpretative Ausführung endet und die Steuerung zu dem Host-Programm zurückkehrt), wird ein TDB in einem Speicherort gespeichert, der in dem Zustandsbeschreibungsblock für das Gastbetriebssystem angegeben ist.
  • Der von TBEGIN angegebene TDB wird in einer Ausführungsform nur gespeichert, wenn die TDB-Adresse gültig ist (also wenn das Feld B1 der äußersten Anweisung TBEGIN ungleich null ist).
  • Für Abbrüche aufgrund von nicht gefilterten Programmausnahmebedingungen wird entweder nur der PI-TDB oder der Abfang-TDB gespeichert. Somit können für einen Abbruch null, ein oder zwei TDBs gespeichert werden,
  • Weitere Details in Bezug auf ein Beispiel für jeden der TDBs werden im Folgenden beschrieben:
    Von TBEGIN angegebener TDB: Der 256-Byte-Speicherort, der durch eine gültige Transaktionsdiagnoseblockadresse angegeben wird. Wenn die Transaktionsdiagnoseblockadresse gültig ist, wird der von TBEGIN angegebene TDB auf einem Transaktionsabbruch gespeichert. Der von TBEGIN angegebene TDB unterliegt allen Speicherschutzmechanismen, die bei der Ausführung der äußersten Anweisung TRANSACTION BEGIN wirksam sind. Ein PER-(Program Event Recording – Programmereignisaufzeichnung)Speicheränderungsereignis für jeden Abschnitt des von TBEGIN angegebenen TDB wird während der Ausführung des äußersten TBEGIN erkannt, nicht während der Transaktionsabbruchverarbeitung.
  • Ein Zweck der PER besteht darin, die Fehlerbehebung von Programmen zu unterstützen. Sie ermöglicht, das Programm bei folgenden Typen von Ereignissen zu warnen, wie zum Beispiel:
    • • Ausführung einer erfolgreichen Verzweigungsanweisung. Die Option wird bereitgestellt, damit ein Ereignis nur auftrat, wenn der Verzweigungs-Zielspeicherort sich innerhalb des angegebenen Speicherbereichs befindet.
    • • Abrufen einer Anweisung aus dem angegebenen Speicherbereich.
    • • Änderung der Inhalte des angegebenen Speicherbereichs. Die Option wird bereitgestellt, damit ein Ereignis nur auftritt, wenn der Speicherbereich sich innerhalb der angegebenen Adressräume befindet.
    • • Ausführung einer Anweisung STORE USING REAL ADDRESS.
    • • Ausführung der Anweisung TRANSACTION END.
  • Das Programm kann selektiv angeben, dass ein oder mehrere der oben genannten Typen von Ereignissen erkannt werden, mit Ausnahme dessen, dass das Ereignis für STORE USING REAL ADDRESS nur zusammen mit dem Speicheränderungsereignis angegeben werden kann. Die Informationen in Bezug auf ein PER-Ereignis werden durch das Programm mittels einer Programmunterbrechung bereitgestellt, wobei die Ursache der Unterbrechung in dem Unterbrechungscode identifiziert wird.
  • Wenn die Transaktionsdiagnoseblockadresse nicht gültig ist, wird ein von TBEGIN angegebener TDB nicht gespeichert.
  • 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 anderer Ursachen abgebrochen wird, sind die Inhalte des Programmunterbrechungs-TDB unvorhersehbar.
  • Der Programmunterbrechungs-TDB unterliegt keinerlei Schutzmechanismen. PER-Speicheränderungsereignisse werden für den Programmunterbrechungs-TDB nicht erkannt, wenn sie während einer Programmunterbrechung gespeichert werden.
  • Abfang-TDB: Der reale 256-Byte-Host-Speicherort, der durch die Speicherorte 488 bis 495 der Zustandsbeschreibung angegeben wird. Der Abfang-TDB wird gespeichert, wenn eine abgebrochene Transaktion zu einem Gastprogrammunterbrechungs-Abfangen führt (also einem Abfangcode 8). Wenn eine Transaktion aufgrund anderer Ursachen abgebrochen wird, sind die Inhalte des Abfang-TDB unvorhersehbar. Der Abfang-TDB unterliegt keinerlei Schutzmechanismen.
  • Wie in 9 dargestellt, sind die Felder eines Transaktionsdiagnoseblocks 900 in einer Ausführungsform wie folgt:
    Format 902: Byte 0 enthält eine Gültigkeits- und Format-Angabe wie folgt:
    Wert Bedeutung
    0 Die restlichen Felder des TDB sind unvorhersehbar.
    1 Ein Format-1-TDB, dessen restliche Felder im Folgenden beschrieben werden.
    2 bis 255 Reserviert
  • Ein TDB, in dem das Formatfeld null ist, wird als Null-TDB bezeichnet Markierungen 904: Byte 1 enthält verschiedene Angaben wie folgt:
    Konflikt-Token-Gültigkeit (CTV): Wenn eine Transaktion aufgrund eines Abruf- oder Speicherkonflikts abgebrochen wird (also jeweils Abbruchcode 9 oder 10), ist Bit 0 von Byte 1 die Konflikt-Token-Gültigkeitsangabe. Wenn die CTV-Angabe eins ist, enthält das Konflikt-Token 910 in den Bytes 16 bis 23 des TDB die logische Adresse, an der der Konflikt erkannt wurde. Wenn die CTV-Angabe null ist, sind die Bytes 16 bis 23 des TDB unvorhersehbar.
  • Wenn eine Transaktion abgebrochen wird aufgrund irgendeines anderen Grunds als einem Abruf- oder Speicherkonflikt, wird Bit 0 von Byte 1 als null gespeichert.
  • Angabe für eingeschränkte Transaktion (CTI): Wenn sich die CPU in dem eingeschränkten transaktionsgebundenen Ausführungsmodus befindet, wird Bit 1 von Byte 1 auf eins gesetzt, Wenn sich die CPU in dem nicht eingeschränkten transaktionsgebundenen Ausführungsmodus befindet, wird Bit 1 von Byte 1 auf null gesetzt.
  • Reserviert: Die Bits 2 bis 7 von Byte 1 sind reserviert und werden als Nullen gespeichert.
  • Transaktionsverschachtelungstiefe (TND) 906: Die Bytes 6 bis 7 enthalten die Transaktionsverschachtelungstiefe, wenn die Transaktion abgebrochen wurde.
  • Transaktionsabbruchcode (TAG) 908: Die Bytes 8 bis 15 enthalten einen 64-Bit-Transaktionsabbruchcode ohne Vorzeichen. Jeder Codepunkt gibt einen Grund für einen Abbruch einer Transaktion an.
  • Es hängt vom Modell ab, ob der Transaktionsabbruchcode in dem Programmunterbrechungs-TDB gespeichert wird, wenn eine Transaktion aufgrund anderer Bedingungen als einer Programmunterbrechung abgebrochen wird.
  • Konflikt-Token 910: Für Transaktionen, die aufgrund eines Abruf- oder Speicherkonflikts abgebrochen werden (also jeweils Abbruchcodes 9 und 10), enthalten die Bytes 16 bis 23 die logische Adresse des Speicherorts, an dem der Konflikt erkannt wurde. Das Konflikt-Token ist aussagekräftig, wenn das CTV-Bit, Bit 0 von Byte 1, eins ist.
  • Wenn das CTV-Bit null ist, sind die Bytes 16 bis 23 unvorhersehbar.
  • Wegen der spekulativen Ausführung durch die CPU kann das Konflikt-Token einen Speicherort angeben, auf den nicht notwendigerweise durch die konzeptionelle Ausführungsfolge der Transaktion zugegriffen würde.
  • Anweisungsadresse der abgebrochenen Transaktion (ATIA) 912: Die Bytes 24 bis 31 enthalten eine Anweisungsadresse, die die Anweisung identifiziert, die ausgeführt wurde, als ein Abbruch erkannt wurde. Wenn eine Transaktion aufgrund von Abbruchcodes 2, 5, 6, 11, 13 oder 256 oder höher abgebrochen wird, oder wenn eine Transaktion aufgrund von Abbruchcodes 4 oder 13 abgebrochen wird und die Programmausnahmebedingung auf einen Nullwert gesetzt wird, zeigt die ATIA direkt auf die Anweisung, die ausgeführt wurde. Wenn eine Transaktion aufgrund von Abbruchcodes 4 oder 12 abgebrochen wird und die Programmausnahmebedingung nicht auf einen Nullwert gesetzt wird, zeigt die ATIA hinter die Anweisung, die ausgeführt wurde.
  • Wenn eine Transaktion aufgrund von Abbruchcodes 7 bis 10, 14 bis 16 oder 255 abgebrochen wird, gibt die ATIA nicht notwendigerweise die exakte Anweisung an, die den Abbruch verursacht hat, sondern kann auf eine frühere oder spätere Anweisung innerhalb der Transaktion zeigen.
  • Wenn eine Transaktion aufgrund einer Anweisung abgebrochen wird, die das Ziel einer Anweisung des Typs Ausführen ist, identifiziert die ATIA die Anweisung des Typs Ausführen, indem sie entweder auf die Anweisung oder hinter diese zeigt, was von dem Abbruchcode abhängt, wie oben beschrieben. Die ATIA gibt nicht das Ziel der Anweisung des Typs Ausführen an.
  • Die ATIA unterliegt dem Adressierungsmodus, wenn die Transaktion abgebrochen wird. In dem 24-Bit-Adressierungsmodus enthalten die Bits 0 bis 40 des Felds Nullen. In dem 31-Bit-Adressierungsmodus enthalten die Bits 0 bis 32 des Felds Nullen.
  • Es hängt vom Modell ab, ob die Anweisungsadresse der abgebrochenen Transaktion in dem Programmunterbrechungs-TDB gespeichert wird, wenn eine Transaktion aufgrund anderer Bedingungen als einer Programmunterbrechung abgebrochen wird.
  • Wenn eine Transaktion aufgrund von Abbruchcodes 4 oder 12 abgebrochen wird und die Programmausnahmebedingung nicht auf einen Nullwert gesetzt wird, zeigt die ATIA nicht auf die Anweisung, die den Abbruch verursacht. Durch Subtrahieren der Anzahl von Halbwörtern, die durch den Unterbrechungslängencode (ILC) aus der ATIA angegeben wird, kann die Anweisung, die den Abbruch verursacht, in Bedingungen identifiziert werden, die unterdrücken oder beenden oder für Nicht-PER-Ereignisse, die beendet werden. Wenn eine Transaktion aufgrund eines PER-Ereignisses abgebrochen wird und keine weitere Programmausnahmebedingung vorhanden ist, ist die ATIA unvorhersehbar.
  • Wenn die Adresse des Transaktionsdiagnoseblocks gültig ist, kann der ILC in der Programmunterbrechungskennung (PIID) in den Bytes 36 bis 39 des von TBEGIN angegebenen TDB untersucht werden. Wenn eine Filterung nicht zutrifft, kann der ILC in der PIID am Speicherort 140 bis 143 im realen Speicher untersucht werden.
  • Ausnahmenzugriffskennung (EAID) 914: Für Transaktionen, die aufgrund bestimmter gefilterter Programmausnahmebedingungen abgebrochen werden, enthält Byte 32 des von TBEGIN angegebenen TDB die Ausnahmenzugriffskennung. In einem Beispiel der z/Architecture sind das Format der EAID und die Fälle, für die sie gespeichert wird, dieselben wie diejenigen, die im realen Speicherort 160 beschrieben werden, wenn die Ausnahmebedingung zu einer Unterbrechung führt, wie in den vorgenannten „Principles of Operation” beschrieben.
  • Für Transaktionen, die aus anderen Gründen abgebrochen werden, einschließlich aller Ausnahmebedingungen, die zu einer Programmunterbrechung führen, ist Byte 32 unvorhersehbar. Byte 32 ist im Programmunterbrechungs-TDB unvorhersehbar.
  • Dieses Feld wird nur in dem TDB gespeichert, der durch die Transaktionsdiagnoseblockadresse angegeben wird; andernfalls ist das Feld reserviert. Die EAID wird nur für zugriffslistengesteuerten oder DAT-Schutz, Typ ASCE, Seitenumsetzung, Bereicherstumsetzung, Bereichzweitumsetzung, Bereichsdrittumsetzung und Segmentumsetzungs-Programmausnahmebedingungen gespeichert.
  • Datenausnahmecode (DXC) 916: Für Transaktionen, die aufgrund gefilterter Datenausnahme-Programmausnahmebedingungen abgebrochen werden, enthält Byte 33 des von TBEGIN angegebenen TDB den Datenausnahmecode. In einem Beispiel der z/Architecture sind das Format des DXC und die Fälle, für die er gespeichert wird, dieselben wie diejenigen, die im realen Speicherort 147 beschrieben werden, wenn die Ausnahmebedingung zu einer Unterbrechung führt, wie in den vorgenannten „Principles of Operation” beschrieben. In einem Beispiel enthält der Speicherort 147 den DXC.
  • Für Transaktionen, die aus anderen Gründen abgebrochen werden, einschließlich alter Ausnahmebedingungen, die zu einer Programmunterbrechung führen, ist Byte 33 unvorhersehbar. Byte 33 ist im Programmunterbrechungs-TDB unvorhersehbar.
  • Dieses Feld wird nur in dem TDB gespeichert, der durch die Transaktionsdiagnoseblockadresse angegeben wird; andernfalls ist das Feld reserviert. Der DXC wird nur für Daten-Programmausnahmebedingungen gespeichert.
  • Programmunterbrechungskennung (PIID) 918: Für Transaktionen, die aufgrund gefilterter Programmausnahmebedingungen abgebrochen werden, enthalten die Bytes 36 bis 39 des von TBEGIN angegebenen TDB die Programmunterbrechungskennung. In einem Beispiel der z/Architecture ist des Format der PIID dasselbe wie dasjenige, das in den realen Speicherorten 140 bis 143 beschrieben wird, wenn die Bedingung zu einer Unterbrechung führt (wie in den vorgenannten „Principles of Operation” beschrieben), mit Ausnahme dessen, dass der Anweisungslängencode in den Bits 13 bis 14 der PIID sich auf die Anweisung bezieht, in der die Ausnahmebedingung erkannt wurde.
  • Für Transaktionen, die aus anderen Gründen abgebrochen werden, einschließlich Ausnahmebedingungen, die zu einer Programmunterbrechung führen, sind die Bytes 36 bis 39 unvorhersehbar. Die Bytes 36 bis 39 sind im Programmunterbrechungs-TDB unvorhersehbar.
  • Dieses Feld wird nur in dem TDB gespeichert, der durch die Transaktionsdiagnoseblockadresse angegeben wird; andernfalls ist das Feld reserviert. Die Programmunterbrechungskennung wird nur für Programmausnahmebedingungen gespeichert.
  • Umsetzungsausnahmekennung (TEID) 920: Für Transaktionen, die aufgrund irgendwelcher der folgenden gefilterten Programmausnahmebedingungen abgebrochen werden, enthalten die Bytes 40 bis 47 des von TBEGIN angegebenen TDB die Umsetzungsausnahmekennung.
    • • Zugriffslistengesteuert oder DAT-Schutz
    • • ASCE-Typ
    • • Seitenumsetzung
    • • Bereichserstumsetzung
    • • Bereichszweitumsetzung
    • • Bereichsdrittumsetzung
    • • Segmentumsetzungsausnahme
  • In einem Beispiel der z/Architecture ist das Format der TEID dasselbe wie dasjenige, das in den realen Speicherorten 168 bis 175 beschrieben wird, wenn die Bedingung zu einer Unterbrechung führt, wie in den vorgenannten „Principles of Operation” beschrieben.
  • Für Transaktionen, die aus anderen Gründen abgebrochen werden, einschließlich Ausnahmebedingungen, die zu einer Programmunterbrechung führen, sind die Bytes 40 bis 47 unvorhersehbar. Die Bytes 40 bis 47 sind im Programmunterbrechungs-TDB unvorhersehbar.
  • Dieses Feld wird nur in dem TDB gespeichert, der durch die Transaktionsdiagnoseblockadresse angegeben wird; andernfalls ist das Feld reserviert.
  • Unterbrechungsereignisadresse 922: Für Transaktionen, die aufgrund gefilterter Programmausnahmebedingungen abgebrochen werden, enthalten die Bytes 48 bis 55 des von TBEGIN angegebenen TDB die Unterbrechungsereignisadresse. in einem Beispiel der z/Architecture ist das Format der Unterbrechungsereignisadresse dasselbe wie dasjenige, das in den realen Speicherorten 272 bis 279 beschrieben wird, wenn die Bedingung zu einer Unterbrechung führt, wie in den vorgenannten „Principles of Operation” beschrieben.
  • Für Transaktionen, die aus anderen Gründen abgebrochen werden, einschließlich Ausnahmebedingungen, die zu einer Programmunterbrechung führen, sind die Bytes 48 bis 55 unvorhersehbar. Die Bytes 48 bis 55 sind im Programmunterbrechungs-TDB unvorhersehbar.
  • Dieses Feld wird nur in dem TDB gespeichert, der durch die Transaktionsdiagnoseblockadresse angegeben wird; andernfalls ist das Feld reserviert.
  • Weitere Details in Bezug auf Unterbrechungsereignisse werden im Folgenden beschrieben.
  • Wenn in einer Ausführungsform der z/Architecture die PER-3-Einrichtung installiert ist, stellt sie für das Programm die Adresse der letzten Anweisung bereit, um eine Unterbrechung in der nachfolgenden Ausführung der CPU zu verursachen. Eine Aufzeichnung der Unterbrechungsereignisadresse kann als Fehlerbehebungsunterstützung für eine Erkennung einer fehlerhaften Verzweigung verwendet werden. Diese Einrichtung stellt zum Beispiel ein 64-Bit-Register in der CPU bereit, das als Unterbrechungsereignisadressregister bezeichnet wird. Jedes Mal, wenn eine andere Anweisung als TRANSACTION ABORT eine Unterbrechung in der nachfolgenden Anweisungsausführung verursacht (die Anweisungsadresse in dem PSW wird also ersetzt statt um die Länge der Anweisung erhöht zu werden), wird die Adresse dieser Anweisung in das Unterbrechungsereignisadressregister gestellt. Sobald eine Programmunterbrechung auftritt, unabhängig davon, ob die PER angegeben ist, werden die aktuellen Inhalte des Unterbrechungsereignisadressregisters in die realen Speicherorte 272 bis 279 gestellt.
  • Wenn die Anweisung, die das Unterbrechungsereignis verursacht, das Ziel einer Anweisung des Typs Ausführen ist (EXECUTE oder EXECUTE RELATIVE LONG), wird die Anweisungsadresse, die zum Abrufen der Anweisung des Typs Ausführen verwendet wird, in das Unterbrechungsereignisadressregister gestellt.
  • In einer Ausführungsform der z/Architecture wird davon ausgegangen, dass ein Unterbrechungsereignis auftritt, sobald eine der folgenden Anweisungen eine Verzweigung verursacht: 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).
  • Es wird ebenfalls davon ausgegangen, dass ein Unterbrechungsereignis auftritt, sobald eine der folgenden Anweisungen abgeschlossen wird: 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).
  • Es wird nicht davon ausgegangen, dass ein Unterbrechungsereignis auftritt als Ergebnis einer Transaktion, die abgebrochen wird (entweder implizit oder als Ergebnis der Anweisung TRANSACTION ABORT).
  • Modellabhängige Diagnoseinformationen 924: Die Bytes 112 bis 127 enthalten modellabhängige Diagnoseinformationen.
  • Für alle Abbruchcodes, ausgenommen 12 (gefilterte Programmunterbrechung), werden die modellabhängigen Diagnoseinformationen in jedem gespeicherten TDB gespeichert.
  • In einer Ausführungsform enthalten die modellabhängigen Diagnoseinformationen Folgendes:
    • • Die Bytes 112 bis 119 enthalten einen Vektor von 64 Bit, die als transaktionsgebundene Ausführungsverzweigungsangaben (TXBI) bezeichnet werden. Jedes der ersten 63 Bits des Vektors gibt die Ergebnisse eines Ausführens einer Verzweigungsanweisung wie folgt an, wenn sich die CPU in dem transaktionsgebundenen Ausführungsmodus befunden hat:
    Wert Bedeutung
    0 Die Anweisung wurde ohne Verzweigung beendet.
    1 Die Anweisung wurde mit Verzweigung beendet.
  • Bit 0 stellt das Ergebnis der ersten derartigen Verzweigungsanweisung dar, Bit 1 stellt das Ergebnis der zweiten derartigen Anweisung dar usw.
  • Wenn weniger als 63 Verzweigungsanweisungen ausgeführt wurden, während sich die CPU in dem transaktionsgebundenen Ausführungsmodus befand, werden die niedrigstwertigen Bits, die keinen Verzweigungsanweisungen entsprechen, auf Nullen gesetzt (einschließlich Bit 63). Wenn mehr als 63 Verzweigungsanweisungen ausgeführt wurden, wird Bit 63 der TXBI auf eins gesetzt.
  • Bits in den TXBI werden durch Anweisungen gesetzt, die fähig sind, ein Unterbrechungsereignis wie oben aufgelistet zu verursachen, mit Ausnahme des Folgenden:
    • – Nicht jede eingeschränkte Anweisung verursacht, dass ein Bit in den TXBI gesetzt wird.
    • – Für Anweisungen der z/Architecture ist es beispielsweise modellabhängig, ob die Ausführung der Anweisung verursacht, dass ein Bit in den TXBI gesetzt wird, wenn das Feld M1 der Anweisung BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION oder BRANCH RELATIVE ON CONDITION LONG null ist, oder wenn das Feld R2 der folgenden Anweisungen null ist.
    • • 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).
    • • Für Abbruchbedingungen, die durch eine Host-Zugriffausnahme verursacht wurden, wird die Bitposition 0 von Byte 127 auf eins gesetzt. Für alle anderen Abbruchbedingungen wird die Bitposition 0 von Byte 127 auf null gesetzt.
    • • Für Abbruchbedingungen, die durch die Lade-/Speicher-Einheit (LSU) erkannt wurden, enthalten die fünf niedrigstwertigen Bits von Byte 127 eine Angabe der Ursache. Für Abbruchbedingungen, die von der LSU nicht erkannt wurden, wird Byte 127 reserviert.
  • Allgemeinregister 930: Die Bytes 128 bis 255 enthalten die Inhalte der Allgemeinregister 0 bis 15 zu dem Zeitpunkt, zu dem die Transaktion abgebrochen wurde. Die Register werden in aufsteigender Reihenfolge gespeichert, beginnend mit Allgemeinregister 0 in den Bytes 128 bis 135, Allgemeinregister 1 in den Bytes 126 bis 143 usw.
  • Reserviert: Alle anderen Felder sind reserviert. Sofern nicht anders angegeben, sind die Inhalte von reservierten Feldern unvorhersehbar.
  • Wie von anderen CPUs und dem E/A-Subsystem beobachtet, ist ein Speichern des bzw. der TDB(s) während eines Transaktionsabbruchs eine Mehrfachzugriffreferenz, die nach jedem nicht transaktionsgebundenen Speichern auftritt.
  • Eine Transaktion kann aufgrund von Ursachen abgebrochen werden, die außerhalb des Umfangs der unmittelbaren Konfiguration liegen, in der sie ausgeführt wird. Zum Beispiel können flüchtige Ereignisse, die durch einen Hypervisor (wie beispielsweise LPAR oder z/VM) erkannt werden, einen Abbruch einer Transaktion verursachen.
  • Die Informationen, die in dem Transaktionsdiagnoseblock bereitgestellt werden, sind für Diagnosezwecke gedacht und sind im Wesentlichen korrekt. Da ein Abbruch jedoch von einem Ereignis außerhalb des Umfangs der unmittelbaren Konfiguration verursacht worden sein kann, geben Informationen wie beispielsweise der Abbruchcode oder die Programmunterbrechungskennung möglicherweise Bedingungen innerhalb der Konfiguration nicht genau wieder und sollten somit nicht zum Festlegen einer Programmmaßnahme verwendet werden.
  • Wenn eine Transaktion aufgrund irgendeiner Datenausnahme-Programmausnahmebedingung abgebrochen wird, und sowohl das AFP-Registersteuerelement, Bit 45 von Steuerregister 0, als auch das effektive Steuerelement für Gleitkomma-Operation zulassen (F) eins sind, wird zusätzlich zu den in dem TDB gespeicherten Diagnoseinformationen der Datenausnahmecode (DXC) in Byte 2 des Gleitkomma-Steuerregisters (FPCR) gestellt, unabhängig davon, ob ein Filtern auf die Programmausnahmebedingung zutrifft. Wenn eine Transaktion abgebrochen wird und entweder das AFP-Registersteuerelement und/oder das effektive Steuerelement für Gleitkomma-Operation zulassen null sind, wird der DXC nicht in das FPCR gestellt.
  • Wie hierin angegeben, werden in einer Ausführungsform die folgenden allgemeinen Anweisungen bereitgestellt, wenn die transaktionsgebundene Ausführungseinrichtung installiert ist.
    • • EXTRACT TRANSACTION NESTING DEPTH
    • • NONTRANSACTIONAL STORE
    • • TRANSACTION ABORT
    • • TRANSACTION BEGIN
    • • TRANSACTION END
  • Wenn die CPU sich in dem transaktionsgebundenen Ausführungsmodus befindet, wird eine versuchte Ausführung von bestimmten Anweisungen eingeschränkt und verursacht, dass die Transaktion abgebrochen wird.
  • Wenn eine versuchte Ausführung von eingeschränkten Anweisungen in dem eingeschränkten transaktionsgebundenen Ausführungsmodus ausgegeben wird, kann dies auch zu einer transaktionsvorgabenbedingten Programmunterbrechung führen oder kann dazu führen, dass die Ausführung so fortgesetzt wird, als ob die Transaktion nicht einschränkt wäre.
  • In einem Beispiel der z/Architecture enthalten eingeschränkte Anweisungen zum Beispiel die folgenden nicht privilegierten Anweisungen: COMPARE AND SWAP AND STORE; MODIFY RUNTIME INSTRUMENTATION CONTROLS; PERFORM LOCKED OPERATION; PREFETCH DATA (RELATIVE LONG), wenn der Code im Feld M1 6 oder 7 ist; STORE CHARACTERS UNDER MASK HIGH, wenn das Feld M3 null ist und der Code im Feld R1 6 oder 7 ist; STORE FACILITY LIST EXTENDED; STORE RUNTIME INSTRUMENTATION CONTROLS; SUPERVISOR CALL; und TEST RUNTIME INSTRUMENTATION CONTROLS.
  • In der vorgenannten Liste sind COMPARE AND SWAP AND STORE und PERFORM LOCKED OPERATION komplexe Anweisungen, die wirkungsvoller implementiert werden können durch die Verwendung von grundlegenden Anweisungen im TX-Modus. Die Fälle für PREFETCH DATA und PREFETCH DATA RELATIVE LONG sind eingeschränkt, da die Codes 6 und 7 eine Zwischenspeicherzeile freigeben, was das Festschreiben der Daten möglicherweise vor dem Beenden einer Transaktion erforderlich macht. SUPERVISOR CALL ist eingeschränkt, da eine Unterbrechung verursacht wird (die verursacht, dass eine Transaktion abgebrochen wird).
  • Unter den nachstehend 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 Feld R2 der Anweisung ungleich null ist und die Verzweigungsverfolgung aktiviert ist.
    • • BRANCH AND SAVE AND SET MODE und BRANCH AND SET MODE, wenn das Feld R2 ungleich null ist und Modusverfolgung aktiviert ist; SET ADDRESSING MODE, wenn Modusverfolgung aktiviert ist.
    • • MONITOR CALL, wenn eine Überwachungsereignisbedingung erkannt wird.
  • Die vorgenannte Liste enthält Anweisungen, die Verfolgungseinträge bilden können. Wenn diesen Anweisungen erlaubt würde, dass sie transaktionsgebunden ausgeführt werden, und sie Verfolgungseinträge bildeten und die Transaktion anschließend abgebrochen würde, würde der Verfolgungstabellenzeiger im Steuerregister 12 weiterrücken, die Speicherungen in der Verfolgungstabelle würden jedoch verworfen. Dies würde eine inkonsistente Lücke in der Verfolgungstabelle hinterlassen; daher sind die Anweisungen in den Fällen eingeschränkt, in denen sie Verfolgungseinträge bilden würden.
  • Wenn sich die CPU in dem transaktionsgebundenen Ausführungsmodus befindet, hängt es vom Modell ab, 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.
  • Jede der vorgenannten Anweisungen wird entweder aktuell oder in früheren Maschinen durch den Hardware-Co-Prozessor implementiert und wird somit als eingeschränkt betrachtet.
  • Wenn das effektive Steuerelement für AR-Modifizierung zulassen (A) null ist, sind die folgenden Anweisungen eingeschränkt: COPY ACCESS; LOAD ACCESS MULTIPLE; LOAD ADDRESS EXTENDED; und SET ACCESS.
  • Jede der vorgenannten Anweisungen verursacht, dass die Inhalte eines Zugriffsregisters modifiziert werden. Wenn das A-Steuerelement in der Anweisung TRANSACTION BEGIN null ist, hat das Programm explizit angegeben, dass eine Zugriffsregister-Modifizierung nicht zulässig ist.
  • Wenn das effektive Steuerelement für Gleitkomma-Operation zulassen (F) null ist, sind die Gleitkomma-Anweisungen eingeschränkt.
  • 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.
  • Jede der vorgenannten Anweisungen unterliegt einem Abfangsteuerelement in der interpretativen Ausführungszustandsbeschreibung. Wenn der Hypervisor das Abfangsteuerelement für diese Anweisungen gesetzt hat, kann ihre Ausführung aufgrund der Hypervisor-Implementierung verlängert werden; daher werden sie als eingeschränkt betrachtet, wenn ein Abfangvorgang auftritt.
  • Wenn eine nicht eingeschränkte Transaktion wegen der versuchten Ausführung einer eingeschränkten Anweisung abgebrochen wird, wird der Transaktionsabbruchcode in dem Transaktionsdiagnoseblock auf 11 gesetzt (eingeschränkte Anweisung), und der Bedingungscode wird auf 3 gesetzt, ausgenommen wie folgt: wenn eine nicht eingeschränkte Transaktion aufgrund einer versuchten Ausführung einer Anweisung abgebrochen wird, die ansonsten zu einer privilegierten Operationsausnahme führen würde, ist unvorhersehbar, ob der Abbruchcode auf 11 (eingeschränkte Anweisung) oder auf 4 gesetzt wird (nicht gefilterte Programmunterbrechung, die sich aus dem Erkennen der Programmunterbrechung der privilegierten Operation ergibt). Wenn eine nicht eingeschränkte Transaktion aufgrund der versuchten Ausführung von PREFETCH DATA (RELATIVE LONG) abgebrochen wird, wenn der Code im Feld M1 6 oder 7 ist, oder von STORE CHARACTERS UNDER MASK HIGH, wenn das Feld M3 null ist und der Code im Feld R1 6 oder 7 ist, ist unvorhersehbar, ob der Abbruchcode auf 11 (eingeschränkte Anweisung) oder 16 (sonstiger Zwischenspeicher) gesetzt wird. Wenn eine nicht eingeschränkte Transaktion aufgrund der versuchten Ausführung von MONITOR CALL abgebrochen wird, und sowohl eine Überwachungsereignisbedingung und eine Spezifikationsausnahmebedingung vorhanden sind, ist unvorhersehbar, ob der Abbruchcode auf 11 oder 4 gesetzt wird oder auf 12, wenn die Programmunterbrechung gefiltert wird.
  • Weitere Anweisungen können in einer eingeschränkten Transaktion eingeschränkt werden. Obwohl diese Anweisungen aktuell nicht so definiert sind, dass sie in einer nicht eingeschränkten Transaktion eingeschränkt sind, können sie unter bestimmten Umständen in zukünftigen Prozessoren in einer nicht eingeschränkten Transaktion eingeschränkt werden.
  • Bestimmte eingeschränkte Anweisungen können in zukünftigen Prozessoren in dem transaktionsgebundenen Ausführungsmodus gestattet sein. Daher sollte sich das Programm nicht darauf verlassen, dass die Transaktion wegen der versuchten Ausführung einer eingeschränkten Anweisung abgebrochen wird. Die Anweisung TRANSACTION ABORT sollte verwendet werden, um zuverlässig zu verursachen, dass eine Transaktion abgebrochen wird.
  • In einer nicht eingeschränkten Transaktion sollte das Programm einen alternativen nicht transaktionsgebundenen Code-Pfad bereitstellen, um eine Transaktion aufzunehmen, die aufgrund einer eingeschränkten Anweisung abgebrochen wird.
  • Wenn im Betrieb die Transaktionsverschachtelungstiefe null ist, verursacht ebne Ausführung der Anweisung TRANSACTION BEGIN (TBEGIN), die zu einem Bedingungscode null führt, dass die CPU in den nicht eingeschränkten transaktionsgebundenen Ausführungsmodus eintritt. Wenn die Transaktionsverschachtelungstiefe null ist, verursacht eine Ausführung der eingeschränkten Anweisung TRANSACTION BEGIN (TBEGINC), die zu einem Bedingungscode null führt, dass die CPU in den eingeschränkten transaktionsgebundenen Ausführungsmodus eintritt.
  • Alle Regeln, die für eine nicht transaktionsgebundene Ausführung gelten, gelten auch für eine transaktionsgebundene Ausführung, es sei denn, es wird ausdrücklich anders angegeben. Im Folgenden sind weitere Verarbeitungsmerkmale angegeben, während sich die CPU in dem transaktionsgebundenen Ausführungsmodus befindet.
  • Wenn sich die CPU in dem nicht eingeschränkten transaktionsgebundenen Ausführungsmodus befindet, verursacht die Ausführung der Anweisung TRANSACTION BEGIN, die zu einem Bedingungscode null führt, dass die CPU in dem nicht eingeschränkten transaktionsgebundenen Ausführungsmodus bleibt.
  • Wie von der CPU beobachtet, sind Abrufe und Speicherungen, die in dem Transaktionsausführungsmodus vorgenommen werden, nicht verschieden von denjenigen, die nicht in dem transaktionsgebundenen Ausführungsmodus vorgenommen werden. Wie von anderen CPUs und von dem E/A-Subsystem beobachtet, scheinen alle Speicheroperandenzugriffe, die vorgenommen werden, während sich eine CPU in dem transaktionsgebundenen Ausführungsmodus befindet, ein gleichzeitiger Einzelblockzugriff zu sein. Also werden die Zugriffe auf alle Bytes innerhalb eines Halbworts, Worts, Doppelworts oder Vierfachworts so angegeben, dass sie für einen Block gleichzeitig abzulaufen scheinen, wie von anderen CPUs und E/A-(d. h. Kanal-)Programmen beobachtet. Auf das Halbwort, Wort, Doppelwort oder Vierfachwort wird in diesem Abschnitt als ein Block Bezug genommen. Wenn eine Referenz des Typs Abruf so angegeben wird, dass sie innerhalb eines Blocks gleichzeitig abzulaufen scheint, ist während der Zeit, in der in dem Block enthaltene Bytes abgerufen werden, kein Speicherzugriff auf den Block durch eine andere CPU und/oder ein anderes E/A-Programm gestattet. Wenn eine Referenz des Typs Abruf so angegeben wird, dass sie innerhalb eines Blocks gleichzeitig abzulaufen scheint, ist während der Zeit, in der in dem Block enthaltene Bytes gespeichert werden, kein Zugriff auf den Block, weder Abrufen noch Speichern, durch eine andere CPU und/oder ein anderes E/A-Programm gestattet.
  • Speicherzugriffe für Anweisungs- und DAT- und ART-(Access Register Table – Zugriffsregistertabelle)Tabellenabrufe folgen den nicht transaktionsgebundenen Regeln.
  • Die CPU verlässt den transaktionsgebundenen Ausführungsmodus normalerweise mithilfe einer Anweisung TRANSACTION END, die verursacht, dass die Transaktionsverschachtelungstiefe in null übergeht, in welchem Fall die Transaktion beendet wird.
  • Wenn die CPU den transaktionsgebundenen Ausführungsmodus mithilfe der Beendigung einer Anweisung TRANSACTION END verlasst, werden alle Speicherungen festgeschrieben, die während des transaktionsgebundenen Ausführungsmodus vorgenommen wurden; also scheinen die Speicherungen als eine einzige gleichzeitig ablaufenden Blockoperation aufzutreten, wie von anderen CPUs und von dem E/A-Subsystem beobachtet.
  • Eine Transaktion kann implizit aus einer Vielfalt von Gründen abgebrochen werden, oder sie kann explizit durch die Anweisung TRANSACTION ABORT abgebrochen werden. Mögliche Beispielursachen für einen Transaktionsabbruch, der entsprechende Abbruchcode und der Bedingungscode, der in das Transaktionsabbruch-PSW gestellt wird, werden im Folgenden beschrieben.
  • Externe Unterbrechung: Der Transaktionsabbruchcode wird auf 2 gesetzt, und der Bedingungscode in dem Transaktionsabbruch-PSW wird auf 2 gesetzt. Das Transaktionsabbruch-PSW wird als das externe alte PSW als Teil einer externen Unterbrechungsverarbeitung gespeichert.
  • Programmunterbrechung (ungefiltert): Eine Programmunterbrechungsbedingung, die zu einer Unterbrechung führt (das heißt, eine ungefilterte Bedingung), verursacht, dass die Transaktion mit Code 4 abgebrochen wird. Der Bedingungscode in dem Transaktionsabbruch-PSW wird speziell auf den Programmunterbrechungscode gesetzt. Das Transaktionsabbruch-PSW wird als das alte Programm-PSW als Teil einer Programmunterbrechungsverarbeitung gespeichert.
  • Eine Anweisung, die andernfalls zu einer Transaktion führen würde, die aufgrund eines Operationsfehlers abgebrochen wird, kann alternative Ergebnisse erbringen: für eine nicht eingeschränkte Transaktion kann die Transaktion stattdessen mit Abbruchcode 11 (eingeschränkte Anweisung) abgebrochen werden; für eine eingeschränkte Transaktion kann eine transaktionsvorgabenbedingte Programmunterbrechung statt des Operationsfehlers erkannt werden.
  • Wenn eine PER (Program Event Recording – Programmereignisaufzeichnung) in Verbindung mit einer anderen ungefilterten Programmausnahmebedingung erkannt wird, wird der Bedingungscode auf 3 gesetzt.
  • Unterbrechung bei Maschinenprüfung: Der Transaktionsabbruchcode wird auf 5 gesetzt, und der Bedingungscode in dem Transaktionsabbruch-PSW wird auf 2 gesetzt. Das Transaktionsabbruch-PSW wird als das alte Maschinenprüfungs-PSW als Teil einer Unterbrechungsverarbeitung bei Maschinenprüfung gespeichert.
  • E/A-Unterbrechung: Der Transaktionsabbruchcode wird auf 6 gesetzt, und der Bedingungscode in dem Transaktionsabbruch-PSW wird auf 2 gesetzt. Das Transaktionsabbruch-PSW wird als das alte E/A-PSW als Teil einer E/A-Unterbrechungsverarbeitung gespeichert.
  • Abrufüberlauf: Eine Abrufüberlaufbedingung wird erkannt, wenn die Transaktion versucht, Abrufe von mehr Speicherorten vorzunehmen als die CPU unterstützt. Der Transaktionsabbruchcode wird auf 7 gesetzt, und der Bedingungscode wird entweder auf 2 oder 3 gesetzt.
  • Speicherüberlauf: Eine Speicherüberlaufbedingung wird erkannt, wenn die Transaktion versucht, auf mehr Speicherorten Speicherungen vorzunehmen als die CPU unterstützt. Der Transaktionsabbruchcode wird auf 8 gesetzt, und der Bedingungscode wird entweder auf 2 oder 3 gesetzt.
  • Wenn der Bedingungscode in Reaktion auf einen Abruf- oder Speicherüberlaufabbruch entweder 2 oder 3 sein kann, kann die CPU möglicherweise wiederholbare Situationen angeben (z. B. gibt der Bedingungscode 2 an, dass eine erneute Ausführung der Transaktion produktiv sein kann; dagegen empfiehlt der Bedingungscode 3 eine erneute Ausführung nicht).
  • Abrufkonflikt: Eine Abrufkonfliktbedingung wird erkannt, wenn eine andere CPU oder das E/A-Subsystem versuchen, in einen Speicherort zu speichern, der transaktionsgebunden von dieser CPU abgerufen wurde. Der Transaktionsabbruchcode wird auf 9 gesetzt, und der Bedingungscode wird auf 2 gesetzt.
  • Speicherkonflikt: Eine Speicherkonfliktbedingung wird erkannt, wenn eine andere CPU oder das E/A-Subsystem versuchen, auf einen Speicherort zuzugreifen, der während einer transaktionsgebundenen Ausführung von dieser CPU gespeichert wurde. Der Transaktionsabbruchcode wird auf 10 gesetzt, und der Bedingungscode wird auf 2 gesetzt.
  • Eingeschränkte Anweisung: Wenn die CPU sich in dem transaktionsgebundenen Ausführungsmodus befindet, verursacht eine versuchte Ausführung einer eingeschränkten Anweisung, dass die Transaktion abgebrochen wird. Der Transaktionsabbruchcode wird auf 11 gesetzt, und der Bedingungscode wird auf 3 gesetzt.
  • Wenn sich die CPU in dem eingeschränkten transaktionsgebundenen Ausführungsmodus befindet, ist unvorhersehbar, ob eine versuchte Ausführung einer eingeschränkten Anweisung zu einer transaktionsvorgabenbedingten Programmunterbrechung oder einem Abbruch aufgrund einer eingeschränkten Anweisung führt. Die Transaktion wird immer noch abgebrochen, aber der Abbruchcode kann beide Ursachen angeben.
  • Programmausnahmebedingung (gefiltert): Eine Programmausnahmebedingung, die nicht zu einer Unterbrechung führt (also eine gefilterte Bedingung), verursacht, dass die Transaktion mit einem Transaktionsabbruchcode 12 abgebrochen wird. Der Bedingungscode wird auf 3 gesetzt.
  • Verschachtelungstiefe überschritten: Die Bedingung einer ü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 13 abgebrochen, und der Bedingungscode wird auf 3 gesetzt.
  • Auf Zwischenspeicherabruf bezogene Bedingung: Eine Bedingung, die sich auf Speicherorte bezieht, die von der Transaktion abgerufen werden, wird durch die Zwischenspeicherschaltung der CPU erkannt. Die Transaktion wird mit einem Transaktionsabbruchcode 14 abgebrochen, und der Bedingungscode wird auf 2 oder 3 gesetzt.
  • Auf Zwischenspeicher-Speicherung bezogene Bedingung: Eine Bedingung, die sich auf Speicherorte bezieht, die von der Transaktion gespeichert werden, wird durch die Zwischenspeicherschaltung der CPU erkannt. Die Transaktion wird mit einem Transaktionsabbruchcode 15 abgebrochen, und der Bedingungscode wird auf 2 oder 3 gesetzt.
  • Sonstige Zwischenspeicherbedingung: Eine sonstige Zwischenspeicherbedingung wird durch die Zwischenspeicherschaltung der CPU erkannt. Die Transaktion wird mit einem Transaktionsabbruchcode 16 abgebrochen, und der Bedingungscode wird auf 2 oder 3 gesetzt.
  • Wenn die CPU während einer transaktionsgebundenen Ausführung auf Anweisungen oder Speicheroperanden unter Verwendung verschiedener logischer Adressen zugreift, die derselben absoluten Adresse zugeordnet sind, hängt es vom Modell ab, ob die Transaktion abgebrochen wird. Wenn die Transaktion aufgrund von Zugriffen unter Verwendung verschiedener logischer Adressen abgebrochen wird, die derselben absoluten Adresse zugeordnet sind, wird abhängig von der Bedingung Abbruchcode 14, 15 oder 16 gesetzt.
  • Sonstige Bedingung: Eine sonstige Bedingung Ist jede andere von der CPU erkannte Bedingung, die verursacht, dass eine Transaktion abgebrochen wird. Der Transaktionsabbruchcode wird auf 255 gesetzt, und der Bedingungscode wird entweder auf 2 oder 3 gesetzt.
  • Wenn mehrere Konfigurationen in derselben Maschine ausgeführt werden (zum Beispiel logische Partitionen oder virtuelle Maschinen), kann eine Transaktion aufgrund einer externen Maschinenprüfung oder einer E/A-Unterbrechung abgebrochen werden, die in einer anderen Konfiguration aufgetreten sind.
  • Obwohl oben Beispiele bereitgestellt werden, können weitere Ursachen für einen Transaktionsabbruch mit entsprechenden Abbruchcodes und Bedingungscodes bereitgestellt werden. Zum Beispiel kann eine Ursache eine Neustartunterbrechung sein, bei der der Transaktionsabbruchcode auf 1 gesetzt wird, und der Bedingungscode in dem Transaktionsabbruch-PSW wird auf 2 gesetzt. Das Transaktionsabbruch-PSW wird als das alte Neustart-PSW als Teil einer Neustartverarbeitung gespeichert. Als weiteres Beispiel kann eine Ursache eine Supervisoraufruf-Bedingung sein, in der der Abbruchcode auf 3 gesetzt wird, und der Bedingungscode in dem Transaktionsabbruch-PSW wird auf 3 gesetzt. Weitere oder andere Beispiele sind ebenfalls möglich.
  • Hinweise:
    • 1. Die sonstige Bedingung kann sich aus irgendetwas des Folgenden ergeben:
    • • Anweisungen wie zum Beispiel COMPARE AND REPLACE DAT TABLE ENTRY, COMPARE AND SWAP AND PURGE, INVALIDATE DAT TABLE ENTRY, INVALIDATE PAGE TABLE ENTRY, PERFORM FRAME MANAGEMENT FUNCTION in der z/Architecture, in denen das NQ-Steuerelement null ist und das SK-Steuerelement eins ist, SET STORAGE KEY EXTENDED, in der das NQ-Steuerelement null ist, das durch eine andere CPU in der Konfiguration ausgeführt wird; der Bedingungscode wird auf 2 gesetzt.
    • • Eine Operatorfunktion wie zurücksetzen, neu starten oder stoppen oder der gleichwertige SIGNAL PROCESSOR-Befehl wird auf der CPU ausgeführt.
    • • Jede andere oben nicht aufgezählte Bedingung; der Bedingungscode wird auf 2 gesetzt.
    • 2. Der Speicherort, an dem Abruf- und Speicherkonflikte erkannt werden, kann sich innerhalb derselben Zwischenspeicherzeile überall befinden.
    • 3. Unter bestimmten Bedingungen kann die CPU nicht in der Lage sein, zwischen ähnlichen Abbruchbedingungen zu unterscheiden. Zum Beispiel kann ein Abruf- oder Speicherüberlauf von einem entsprechenden Abruf- oder Speicherkonflikt nicht unterscheidbar sein.
    • 4. Eine spekulative Ausführung von mehreren Anweisungspfaden durch die CPU kann dazu führen, dass eine Transaktion aufgrund von Konflikt- oder Überlaufbedingungen abgebrochen wird, selbst wenn derartige Bedingungen in der konzeptionellen Folge nicht auftreten. Wenn sich die CPU in dem eingeschränkten transaktionsgebundenen Ausführungsmodus befindet, kann die CPU vorübergehend eine spekulative Ausführung blockieren, wodurch der Transaktion gestattet wird, spekulativ eine Beendigung ohne Erkennen derartiger Konflikte oder Überläufe zu versuchen.
  • Eine Ausführung einer Anweisung TRANSACTION ABORT verursacht, dass die Transaktion abgebrochen wird. Der Transaktionsabbruchcode wird von der zweiten Operandenadresse gesetzt. Der Bedingungscode wird entweder auf 2 oder 3 gesetzt, abhängig davon, ob Bit 63 der zweiten Operandenadresse jeweils null oder eins ist.
  • 10 fasst Beispielabbruchcodes, die in einem Transaktionsdiagnoseblock gespeichert sind, und den entsprechenden Bedingungscode (CC) zusammen. Die Beschreibung in 10 veranschaulicht eine bestimmte Implementierung. Weitere Implementierungen und Verschlüsselungen von Werten sind möglich.
  • In einer Ausführungsform, und wie vorher erwähnt, berücksichtigt die transaktionsgebundene Einrichtung sowohl eingeschränkte Transaktionen als auch nicht eingeschränkte Transaktionen sowie die zugehörige Verarbeitung. Zunächst werden eingeschränkte Transaktionen erläutert und anschließend nicht eingeschränkte Transaktionen.
  • Eine eingeschränkte Transaktion wird im transaktionsgebundenen Modus ohne einen Rücksetzungspfad ausgeführt. Es handelt sich um einen Verarbeitungsmodus, der für kompakte Funktionen nützlich ist. Falls keine wiederholten Unterbrechungen oder Konflikte mit anderen CPUs oder dem E/A-Subsystem vorliegen (d. h. verursacht durch Bedingungen, die ein erfolgreiches Beenden der Transaktion nicht erlauben), wird eine eingeschränkte Transaktion letztendlich beendet; somit ist eine Abbruchverarbeitungsroutine nicht erforderlich und wird nicht angegeben. Zum Beispiel wird die Transaktion letztendlich beendet, falls keine Verletzung einer Bedingung, die nicht adressiert werden kann (z. B. dividieren durch 0); keine Bedingung, die ein Beenden der Transaktion nicht erlaubt (z. B. eine Zeitgeber-Unterbrechung, die ein Ausführen einer Anweisung nicht erlaubt; eine unerwartete E/A usw.); oder keine Verletzung einer Einschränkung oder Vorgabe vorliegen, die einer eingeschränkten Transaktion zugehörig ist.
  • Eine eingeschränkte Transaktion wird durch eine eingeschränkte Anweisung TRANSACTION BEGIN (TBEGINC) eingeleitet, wenn die Transaktionsverschachtelungstiefe anfangs null ist. Eine eingeschränkte Transaktion unterliegt in einer Ausführungsform den folgenden Vorgaben:
    • 1. Die Transaktion führt nicht mehr als 32 Anweisungen aus, zu denen die eingeschränkte Anweisung TRANSACTION BEGIN (TBEGINC) und die Anweisung TRANSACTION END nicht zählen.
    • 2. Alle Anweisungen in der Transaktion müssen innerhalb von 256 zusammenhängenden Speicher-Bytes liegen, einschließlich der eingeschränkten Anweisung TRANSACTION BEGIN (TBEGINC) und jeder Anweisung TRANSACTION END.
    • 3. Zusätzlich zu den eingeschränkten Anweisungen gelten die folgenden Einschränkungen für eine eingeschränkte Transaktion.
    • a. Anweisungen sind auf diejenigen begrenzt, die als Allgemeine Anweisungen bezeichnet werden, darunter zum Beispiel Addieren, Subtrahieren, Multiplizieren, Dividieren, Verschieben, Drehen usw.
    • b. Verzweigungsanweisungen sind auf Folgendes begrenzt (die aufgelisteten Anweisungen gehören in einer Ausführungsform zur z/Architecture):
    • • BRANCH RELATIVE ON CONDITION, wobei das Feld M1 ungleich null ist und das Feld RI2 einen positiven Wert enthält.
    • • BRANCH RELATIVE ON CONDITION LONG, wobei das Feld M1 ungleich null ist und das Feld RI2 einen positiven Wert enthält, der keine zyklische Aufeinanderfolge von Adressen verursacht.
    • • COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE und COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE, wobei das Feld M3 ungleich null ist und das Feld RI4 einen positiven Wert enthält. (Also nur Vorwärtsverzweigungen mit Verzweigungsmasken ungleich null.)
    • c. Ausgenommen TRANSACTION END und Anweisungen, die eine spezifizierte Operandenserialisierung verursachen, sind Anweisungen, die eine Serialisierungsfunktion verursachen, eingeschränkt.
    • d. Anweisungen von Speicher-Speicher-Operationen(SS-) und Speicher-Speicher-Operationen mit einem erweiterten Operationscode(SSE-) sind eingeschränkt.
    • e. Alle der folgenden allgemeinen Anweisungen (die in diesem Beispiel zur z/Architecture gehören), 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 Feld M3 null ist und der Code im Feld R1 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. Hinweis: LOAD ON CONDITION und STORE ON CONDITION werden ohne Berücksichtigung des Bedingungscodes als Verweis auf einen Speicher betrachtet. Ein Achtfachwort ist zum Beispiel eine Gruppe von 32 aufeinander folgenden Bytes auf einer 32-Byte-Grenze.
    • 5. Die auf dieser CPU ausgeführte Transaktion oder Speicherungen durch andere CPUs oder das E/A-Subsystem greifen nicht auf Speicheroperanden in irgendwelchen 4-KByte-Blöcken zu, die die 256 Speicherbytes enthalten, die mit der eingeschränkten Anweisung TRANSACTION BEGIN (TBEGINC) beginnen.
    • 6. Die Transaktion greift nicht unter Verwendung verschiedener logischer Adressen, die derselben absoluten Adresse zugeordnet sind, auf Anweisungen oder Speicheroperanden zu.
    • 7. Operandenverweise, die durch die Transaktion vorgenommen werden, müssen innerhalb eines einzigen Doppelworts liegen, mit Ausnahme dessen, dass bei LOAD ACCESS MULTIPLE, LOAD MULTIPLE, LOAD MULTIPLE HIGH, STORE ACCESS MULTIPLE, STORE MULTIPLE und STORE MULTIPLE HIGH Operandenverweise innerhalb eines einzigen Achtfachworts liegen müssen.
  • Wenn eine eingeschränkte Transaktion irgendeine der oben aufgelisteten Vorgaben 1 bis 7 verletzt, wird entweder (a) eine transaktionsvorgabenbedingte Programmunterbrechung erkannt oder (b) die Ausführung wird fortgesetzt, als wäre die Transaktion nicht eingeschränkt, mit Ausnahme dessen, dass weitere Vorgabenverletzungen immer noch zu einer transaktionsvorlagenbedingten Programmunterbrechung führen können. Es ist unvorhersehbar, welche Maßnahme ergriffen wird, und die ergriffene Maßnahme kann auf der Grundlage dessen, welche Vorgabe verletzt worden ist, unterschiedlich sein.
  • Falls keine Vorgabenverletzungen, wiederholten Unterbrechungen oder Konflikte mit anderen CPUs oder dem E/A-Subsystem vorlegen, wird eine eingeschränkte Transaktion letztendlich wie oben beschrieben beendet.
    • 1. Die Chance einer erfolgreichen Beendigung einer eingeschränkten Transaktion verbessert sich, wenn die Transaktion die folgenden Kriterien erfüllt:
    • a. Die Anzahl der ausgegebenen Anweisungen ist kleiner als das Maximum von 32.
    • b. Die Anzahl der Speicheroperandenverweise ist kleiner als das Maximum von 4 Achtfachwörtern.
    • c. Die Speicheroperandenverweise befinden sich auf derselben Zwischenspeicherzeile.
    • d. Speicheroperandenverweise auf dieselben Speicherorte treten in allen Transaktionen in derselben Reihenfolge auf.
    • 2. Bei einer eingeschränkten Transaktion ist nicht notwendigerweise sichergestellt, dass sie bei der ersten Ausführung erfolgreich beendet wird. Wenn jedoch eine eingeschränkte Transaktion abgebrochen wird, die keine der aufgelisteten Vorgaben verletzt, verwendet die CPU eine Schaltung, um sicherzustellen, dass eine wiederholte Ausführung der Transaktion anschließend erfolgreich ist.
    • 3. in einer eingeschränkten Transaktion ist TRANSACTION BEGIN eine eingeschränkte Anweisung, daher kann eine eingeschränkte Transaktion nicht verschachtelt werden.
    • 4. Eine Verletzung irgendeiner der oben genannten Vorgaben 1 bis 7 durch eine eingeschränkte Transaktion kann zu einer Programmschleife führen.
    • 5. Die Beschränkungen einer eingeschränkten Transaktionen ähneln denen einer Vergleich- und-Austausch-Schleife (Compare and Swap). Wegen der potenziellen Beeinflussung durch andere CPUs und das E/A-Subsystem gibt es keine architekturbedingte Garantie, dass eine Anweisung COMPARE AND SWAP jemals mit einem Bedingungscode 0 beendet wird. Eine eingeschränkte Transaktion kann unter einer ähnlichen Beeinflussung in Form von Abbrüchen durch Abruf- oder Speicherkonflikte oder unerwartete Unterbrechungen leiden.
  • Die CPU verwendet Ausgleichsalgorithmen, um sicherzustellen, falls keinerlei Vorgabenverletzungen vorliegen, dass eine eingeschränkte Transaktion letztendlich beendet wird.
    LH1 15,0 Null-Neuversuch-Zähler
    Schleife TBEGINC 0(0),X 'FE00' GRs 0 bis 13 beibehalten
    AHI 15,1 Zähler erhöhen
    ...
    ... Eingeschränkter transaktionsgebundener
    Ausführungscode
    TEND Transaktionsende
    • 6. Um die Anzahl von wiederholten Iterationen zu bestimmen, die erforderlich sind, um eine eingeschränkte Transaktion zu beenden, kann das Programm einen Zähler in einem Allgemeinregister verwenden, das der Allgemeinregister-Speichermaske nicht unterliegt. Ein Beispiel wird im Folgenden gezeigt:
    • • R15 enthält jetzt die Anzahl wiederholter transaktionsgebundener Versuche.
  • Zu beachten ist, dass beide Register 14 und 15 in diesem Beispiel nicht zurückgespeichert werden. Zu beachten ist auch, dass in einigen Modellen die Anzahl im Allgemeinregister 15 niedrig sein kann, wenn die CPU die Abbruchbedingung nach der Beendigung der Anweisung TBEGINC, jedoch vor der Beendigung der Anweisung AHI erkennt.
  • Wie von der CPU beobachtet, sind Abrufe und Speicherungen, die in dem transaktionsgebundenen Ausführungsmodus vorgenommen werden, nicht verschieden von denjenigen, die nicht in dem Transaktionsausführungsmodus vorgenommen werden.
  • In einer Ausführungsform wählt der Benutzer (d. h. die Person, die die Transaktion erstellt), ob eine Transaktion eingeschränkt werden soll. Eine Ausführungsform der Logik, die verwendet wird, um eine derartige Bestimmung vorzunehmen, wird unter Bezugnahme auf 11 beschrieben. Zunächst stellt der Benutzer fest, ob die Transaktion eingeschränkt werden muss, SCHRITT 1100. Zum Beispiel entscheidet der Benutzer, ob die Einschränkungen akzeptabel sind, die eingeschränkten Transaktionen zugehörig sind. Ist dies der Fall, ABFRAGE 1102, wird eine eingeschränkte Transaktion erstellt, SCHRITT 1104. Dazu zählt ein Verwenden der Anweisung TBEGINC, um die eingeschränkte Transaktion zu beginnen, einschließlich einer oder mehreren Anweisungen nach TBEGINC, und ein Beenden der Transaktion mit TEND. Wenn keine eingeschränkte Transaktion erstellt werden soll, wird andernfalls in einer Ausführungsform eine nicht eingeschränkte Transaktion erstellt, SCHRITT 1106. Dazu gehört ein Verwenden von TBEGIN zum Starten einer nicht eingeschränkten Transaktion, einschließlich einer oder mehreren Anweisungen, und ein Beenden mit TEND.
  • In einer weiteren Ausführungsform gibt ein Prozessor für den Benutzer eine Empfehlung dazu ab, ob eine eingeschränkte Transaktion verwendet werden soll. Die Empfehlung beruht auf gespeicherten Vorgaberegeln (z. B. den Einschränkungen), auf die durch den Prozessor zugegriffen werden kann. Zum Beispiel greift der Prozessor auf die Regeln zu und bestimmt, ob alle der Einschränkungen akzeptabel sind. Ist dies der Fall, empfiehlt der Prozessor eine eingeschränkte Transaktion; andernfalls wird eine nicht eingeschränkte Transaktion empfohlen.
  • Eine Übersicht über eine Transaktionen zugehörige Abbruchverarbeitung wird unter Bezugnahme auf 12 beschrieben. Zunächst erhält (z. B. ruft ab, empfängt) ein Prozessor eine Transaktion (z. B. TBEGIN oder TBEGINC), SCHRITT 1200, und ein ausgewähltes Feld (z. B. der Operationscode oder ein anderes Feld als der Operationscode) wird für den Transaktionstyp geprüft, SCHRITT 1201. Wenn das Feld angibt, dass die Transaktion eingeschränkt ist, ABFRAGE 1202, wird die Transaktion als eine eingeschränkte Transaktion verarbeitet, SCHRITT 1204. Für eine eingeschränkte Transaktion wird das Transaktionsabbruch-PSW so gesetzt, dass es auf die Anweisung TBEGINC zeigt, die die Transaktion gestartet hat. Wenn eine Abbruchbedingung erreicht wird, ABFRAGE 1206, wird die Steuerung an dieses PSW übergeben, das auf die Anweisung TBEGINC zeigt, und der Bedingungscode wird gesetzt, um anzugeben, ob die Bedingung voraussichtlich behebbar ist. Für eine eingeschränkte Transaktion wird kein Abbruchverarbeitungsprogramm (außer einer Rückkehr zu TBEGINC) aufgerufen, sondern die Verarbeitung wird mit einer erneuten Ausführung der Anweisung TBEGINC fortgesetzt. Wenn keine Abbruchbedingung erreicht wird, wird in einer Ausführungsform die Transaktion mit einer Anweisung TRANSACTION END beendet.
  • Wenn die Transaktion jedoch nicht eingeschränkt ist, ABFRAGE 1202, wird die Transaktion als eine nicht eingeschränkte Transaktion verarbeitet, SCHRITT 1208. Für eine nicht eingeschränkte Transaktion wird das Transaktionsabbruch-PSW gesetzt, um auf die Anweisung zu zeigen, die auf die Anweisung TBEGIN folgt. Die erwartete Verwendung für eine nicht eingeschränkte Transaktion ist, dass die Anweisung, die auf das TBEGIN folgt, eine Verzweigungsanweisung sein wird, die eine Steuerung auf eine Abbruchverarbeitungsroutine überträgt, wenn der Bedingungscode ungleich null ist. Wenn daher eine Abbruchbedingung erreicht wird, ABFRAGE 1210, fährt die Verarbeitung für eine nicht eingeschränkte Transaktion mit der Anweisung nach der Anweisung TRANSACTION BEGIN fort, SCHRITT 1212. Andernfalls wird die Verarbeitung mit einer Anweisung TRANSACTION END abgeschlossen.
  • In einer weiteren Ausführungsform werden weitere Prüfungen vorgenommen, um festzustellen, ob die Transaktion als eine eingeschränkte Transaktion verarbeitet werden soll. Wenn der Operationscode zum Beispiel angibt, dass es sich um eine eingeschränkte Transaktion handelt, diese aber eine verschachtelte Transaktion ist, wird in einer Ausführungsform die Transaktion als eine nicht eingeschränkte Transaktion ausgeführt. Weitere Prüfungen können ebenfalls vorgenommen werden.
  • Weitere Details in Bezug auf die Verarbeitung von eingeschränkten Transaktionen und insbesondere die der Anweisung TBEGINC zugehörige Verarbeitung werden unter Bezugnahme auf 13 beschrieben. Die Ausführung der Anweisung TBEGINC verursacht, dass die CPU entweder in den eingeschränkten transaktionsgebundenen Ausführungsmodus eintritt oder in dem nicht eingeschränkten Ausführungsmodus verbleibt. Die CPU (d. h. der Prozessor), die TBEGINC ausführt, führt die Logik von 13 aus.
  • Unter Bezugnahme auf 13 wird auf der Grundlage einer Ausführung einer Anweisung TBEGINC eine Serialisierungsfunktion ausgeführt, SCHRITT 1300. Eine Serialisierungsfunktion oder -operation enthält ein Beenden aller konzeptuell vorherigen Speicherzugriffe (und für die z/Architecture von beispielsweise zugehörigen Referenz-Bit- und Änderungs-Bit-Einstellungen) durch die CPU, wie von anderen CPUs und von dem E/A-Subsystem beobachtet, bevor die konzeptuell anschließenden Speicherzugriffe (und zugehörigen Referenz-Bit- und Änderungs-Bit-Einstellungen) auftreten. Eine Serialisierung wirkt sich auf die Folge aller CPU-Zugriffe auf den Speicher und auf die Speicherschlüssel aus, mit Ausnahme von denjenigen, die einem Abrufen aus ART-Tabelleneintrag und DAT-Tabelleneintrag zugehörig sind.
  • Wie von einer CPU in dem transaktionsgebundenen Ausführungsmodus beobachtet, läuft eine Serialisierung normal ab (wie oben beschrieben). Wie von anderen CPUs und von dem E/A-Subsystem beobachtet, tritt eine Serialisierungsoperation auf, die ausgeführt wird, während sich eine CPU in dem transaktionsgebundenen Ausführungsmodus befindet, wenn die CPU den transaktionsgebundenen Ausführungsmodus verlässt, entweder als Ergebnis einer Anweisung TRANSACTION END, die die Transaktionsverschachtelungstiefe auf null verringert (normale Beendigung) oder als Ergebnis dessen, dass die Transaktion abgebrochen wird.
  • Anschließend an ein Ausführen einer Serialisierung wird eine Bestimmung vorgenommen, ob eine Ausnahme erkannt wurde, ABFRAGE 1302. Ist dies der Fall, wird die Ausnahme bearbeitet, SCHRITT 1304. Zum Beispiel wird eine Sonderoperationsausnahme erkannt, und die Operation wird unterdrückt, wenn das transaktionsgebundene Ausführungssteuerelement, Bit 8 des Steuerregisters 0, 0 ist. Als weiteres Beispiel wird eine Spezifikationsausnahme erkannt, und die Operation wird unterdrückt, wenn das Feld B1, Bits 16 bis 19 der Anweisung, ungleich null ist; eine Ausführungsausnahme wird erkannt, und die Operation wird unterdrückt, wenn das TBEGINC das Ziel einer Anweisung des Typs Ausführen ist; und eine Operationsausnahme wird erkannt, und die Operation wird unterdrückt, wenn die transaktionsgebundene Ausführungseinrichtung nicht in der Konfiguration installiert ist. Wenn sich die CPU bereits in dem eingeschränkten Transaktionsausführungsmodus befindet, wird eine Programmausnahme aufgrund einer transaktionsvorgabenbedingten Ausnahme erkannt, und die Operation wird unterdrückt. Wenn ferner die Transaktionsverschachtelungstiefe bei einer Erhöhung um 1 eine modellabhängige maximale Transaktionsverschachtelungstiefe überschreiten würde, wird die Transaktion mit dem Abbruchcode 13 abgebrochen. Weitere oder andere Ausnahmen können erkannt und bearbeitet werden.
  • Wenn jedoch keine Ausnahme vorhanden ist, wird eine Bestimmung vorgenommen, ob die Transaktionsverschachtelungstiefe null beträgt, ABFRAGE 1306. Wenn die Transaktionsverschachtelungstiefe null ist, wird die Transaktionsdiagnoseblockadresse als ungültig betrachtet, SCHRITT 1308; das Transaktionsabbruch-PSW wird aus den Inhalten des aktuellen PSW gesetzt, mit Ausnahme dessen, dass die Anweisungsadresse des Transaktionsabbruch-PSW die Anweisung TBEGINC angibt statt der nächsten fortlaufenden Anweisung, SCHRITT 1310; und die Inhalte der Allgemeinregisterpaare, wie durch die Allgemeinregister-Speichermaske angegeben, werden in einem modellabhängigen Speicherort gespeichert, auf den durch das Programm nicht direkt zugegriffen werden kann, SCHRITT 1312. Ferner wird die Verschachtelungstiefe auf 1 gesetzt, SCHRITT 1314. Zusätzlich wird der effektive Wert der Steuerelemente für Gleitkomma-Operation zulassen (F) und für Programmunterbrechung filtern (PIFC) auf null gesetzt, SCHRITT 1316. Ferner wird der effektive Wert des Steuerelements für AR-Modifizierung zulassen (A), Bit 12 des Felds I2 der Anweisung bestimmt, SCHRITT 1318. Zum Beispiel ist das effektive A-Steuerelement das logische UND des A-Steuerelements in der Anweisung TBEGINC für die aktuelle Ebene und für alle äußeren Anweisungen TBEGIN.
  • Wenn unter erneuter Rückkehr zur ABFRAGE 1306 die Transaktionsverschachtelungstiefe größer als null ist, wird die Verschachtelungstiefe um 1 erhöht, SCHRITT 1320. Ferner wird der effektive Wert für Gleitkomma-Operation zulassen (F) auf null gesetzt, und der effektive Wert des Steuerelements für Programmunterbrechung filtern (PIFC) bleibt unverändert, SCHRITT 1322. Die Verarbeitung wird dann mit SCHRITT 1318 fortgesetzt. In einer Ausführungsform führt eine erfolgreiche Einleitung der Transaktion zu einem Bedingungscode 0. Dies beendet eine Ausführungsform der Logik, die einem Ausführen einer Anweisung TBEGINC zugehörig ist.
  • In einer Ausführungsform kann die oben angegebene Ausnahmenprüfung in unterschiedlicher Reihenfolge auftreten. Eine bestimmte Reihenfolge für die Ausnahmenprüfung lautet wie folgt:
    Ausnahmen mit derselben Priorität wie die Priorität von Programmunterbrechungsbedingungen für den allgemeinen Fall.
    Spezifikationsausnahmen aufgrund des Felds B1, das einen Wert ungleich null enthält.
    Abbruch aufgrund eines Überschreitens einer Transaktionsverschachtelungstiefe.
    Bedingungscode 0 aufgrund einer normalen Beendigung.
  • Zusätzlich gilt Folgendes in einer oder mehreren Ausführungsformen:
    • 1. Register, für die durch die Allgemeinregister-Speichermaske angegeben wird, dass sie zu speichern sind, werden nur zurückgespeichert, wenn die Transaktion abgebrochen wird, nicht aber, wenn die Transaktion mittels TRANSACTION END normal beendet wird. Nur die durch die GRSM angegebenen Register der äußersten Anweisung TRANSACTION BEGIN werden bei einem Abbruch zurückgespeichert. Das Feld I2 sollte alle Registerpaare angeben, die Eingabewerte bereitstellen, die durch eine eingeschränkte Transaktion geändert werden. Wenn die Transaktion abgebrochen wird, werden daher die Eingaberegisterwerte auf ihre ursprünglichen Inhalte zurückgespeichert, wenn die eingeschränkte Transaktion erneut ausgeführt wird.
    • 2. Bei den meisten Modellen kann eine verbesserte Ausführung sowohl für TRANSACTION BEGIN als auch bei Abbruch einer Transaktion verwirklicht werden, indem in der Allgemeinregister-Speichermaske die Mindestanzahl von erforderlichen Registern angegeben wird, die gespeichert und zurückgespeichert werden müssen.
    • 3. Im Folgenden werden die Ergebnisse der Anweisung TRANSACTION BEGIN (sowohl TBEGIN als auch TBEGINC) auf der Grundlage der aktuellen Transaktionsverschachtelungstiefe (TND) veranschaulicht und, wenn die TND ungleich null ist, ob die CPU sich in dem nicht eingeschränkten oder dem eingeschränkten transaktionsgebundenen Ausführungsmodus befindet.
    Anweisung TND = 0
    TBEGIN Nicht eingeschränkten transaktionsgebundenen Ausführungsmodus eingeben
    TBEGINC Eingeschränkten transaktionsgebundenen Ausführungsmodus eingeben
    Anweisung TND > 0
    TBEGIN NTX-Modus CTX-Modus
    Im nicht eingeschränkten transaktionsgebundenen Ausführungsmodus fortfahren Transaktionsvorgabenbedingte Ausnahme
    TBEGINC Im nicht eingeschränkten transaktionsgebundenenAusführungsmodus fortfahren Transaktionsvorgabenbedingte Ausnahme
    Erklärung
    CTX CPU befindet sich im eingeschränkten transaktionsgebundenen Ausführungsmodus
    NTX CPU befindet sich im nicht eingeschränkten transaktionsgebundenen Ausführungsmodus
    TND Transaktionsverschachtelungstiefe zu Beginn der Anweisung.
  • Wie hierin beschrieben, wird in einem Aspekt eine Beendigung einer eingeschränkten Transaktion sichergestellt, vorausgesetzt, dass sie keine Bedingung enthält, die ein Beenden unmöglich macht. Um sicherzustellen, dass sie beendet wird, kann der Prozessor (z. B. CPU), der die Transaktion ausführt, bestimmte Maßnahmen ergreifen. Wenn eine eingeschränkte Transaktion zum Beispiel eine Abbruchbedingung hat, kann die CPU vorübergehend:
    • (a) eine nicht der Reihenfolge entsprechende Ausführung blockieren;
    • (b) den Zugriff anderer CPUs auf die in Konflikt stehenden Speicherorte blockieren;
    • (c) willkürliche Verzögerungen in einer Abbruchverarbeitung hervorrufen; und/oder
    • (d) andere Maßnahmen zum Erleichtern einer erfolgreichen Beendigung aufrufen.
  • Weitere Details in Bezug auf eine Verarbeitung, die einem Ergreifen von Maßnahmen zugehörig ist, um eine Beendigung einer eingeschränkten Transaktion zu erleichtern, werden unter Bezugnahme auf 14 beschrieben.
  • Zunächst führt der Prozessor eine eingeschränkte Transaktion aus, die durch die Anweisung TBEGINC gestartet wurde, SCHRITT 1400. Wenn eine Abbruchbedingung angetroffen wird, die nicht zu einer Unterbrechung führt, ABFRAGE 1402, ergreift der Prozessor optional (z. B. abhängig von der Anzahl von Abbrüchen) eine oder mehrere Maßnahmen, wie hierin beschrieben, um eine Beendigung sicherzustellen, SCHRITT 1404. Ferner führt der Prozessor die Anweisung TBEGINC erneut aus, SCHRITT 1406, und die Verarbeitung wird mit SCHRITT 1400 fortgesetzt.
  • Wenn unter Rückkehr zu ABFRAGE 1402 keine Abbruchbedingung vorliegt oder eine Abbruchbedingung vorhanden ist, die zu einer Unterbrechung führt, fährt die Verarbeitung fort, bis eine Beendigung der Transaktion (z. B. TEND) oder eine Unterbrechung vorlegt, ABFRAGE 1408. Im Falle einer Unterbrechung lädt die CPU das dem Unterbrechungstyp zugehörige PSW. Die Transaktion endet auf der Grundlage einer Beendigung oder Unterbrechung; andernfalls wird die Verarbeitung fortgesetzt.
  • In einer Ausführungsform beruht die Entscheidung, ob eine Maßnahme ausgeführt werden soll, wenn eine Transaktion abgebrochen wird und/oder die Auswahl der Maßnahme, die ausgeführt werden soll, auf dem Wert eines Abbruchzählers, der einen Zählerwert bereitstellt, wie oft die Transaktion abgebrochen worden ist.
  • Der Zähler erhöht den Zählerwert jedes Mal, wenn die Transaktion abgebrochen wird, und wird nach einer erfolgreichen Beendigung der Transaktion oder einer Unterbrechung, die dazu führt, dass keine weiteren erneuten Ausführungen der Transaktion mehr erfolgen, auf null zurückgesetzt. Wenn der Zählerwert einen Schwellenwert erreicht (z. B. 63 Zähler), wird eine Unterbrechung angezeigt, die Transaktionsausführung ist nicht erfolgreich und der Zähler wird zurückgesetzt. Bevor der Zählerwert jedoch den Schwellenwert erreicht, kann eine Anzahl von Maßnahmen ergriffen werden, um die Chancen einer erfolgreichen Ausführung der Transaktion zu erhöhen. Zu diesen Maßnahmen zählen Maßnahmen, die in dem Prozessor ausgeführt werden müssen, der die Transaktion ausführt, und/oder Maßnahmen, die gegen in Konflikt stehende Prozessoren (CPUs) ausgeführt werden müssen.
  • Innerhalb desselben Prozessors können abhängig von dem Abbruchzählerwert und einem Auswahlkriterium für Maßnahmen mit denselben oder überlappenden Abbruchzählerwerten eine oder mehrere der folgenden Maßnahmen ergriffen werden: erneute Ausführung der Transaktion (Zählerwerte 1 bis 3); Deaktivieren einer Verzweigungsvoraussage z. B. über einen Schalter (Zählerwerte 8 bis 20); Deaktivieren von spekulativem Anweisungsabrufen über die Zwischenspeicherzeilengrenze der aktuellen Anweisung hinaus, was in einer Ausführungsform dadurch erreicht wird, dass beim Anweisungsabrufen eine Zwischenspeichergrenzenüberschreitung nur gestattet wird, wenn das Back-End der Pipeline leer ist (Zählerwerte 8 bis 20); Deaktivieren von superskalarem Weiterleiten z. B. über einen Schalter (Zählerwerte 8 bis 20); Deaktivieren einer nicht der Reihenfolge entsprechenden Ausführung z. B. über einen Schalter (Zählerwerte 8 bis 20); exklusives Abrufen aller Zwischenspeicherfehler, selbst für Nur-Abruf-Anforderungen (Zählerwerte 8 bis 20); Ausführen von jeweils einer einzelnen Anweisung während der gesamten Pipeline (Zählerwerte 21 bis 23); Deaktivieren von superskalarem Weiterleiten (Zählerwerte 24 bis 28); und Ausführen von jeweils einer einzelnen Anweisung während der gesamten Pipeline und exklusives Abrufen aller Zwischenspeicherfehler (Zählerwerte 32 bis 63). Durch ein Einsetzen von einigen dieser Maßnahmen wird die Spekulationsaggressivität einer Prozessor-Pipeline bei wiederholten Transaktionsabbrüchen schrittweise eingeschränkt. Volle Spekulationsaggressivität einer Prozessor-Pipeline wird auf der Grundlage einer erfolgreichen Beendigung der Transaktion oder einer Unterbrechung wiederhergestellt, die zu keiner weiteren Transaktionswiederholung führt.
  • In einer Ausführungsform werden alle Maßnahmen für einen bestimmten Zählerwert z. B. gleichzeitig ausgeführt. Wenn in einer weiteren Ausführungsform eine Überlappung vorliegt, wird eine Maßnahme gegenüber einer anderen zum Beispiel auf der Grundlage eines Auswählens aus einer Listenreihenfolge gewählt, wobei ein willkürliches Auswählen auf der Grundlage einer Auswahlfunktion oder anderer Techniken erfolgt.
  • Wenn ferner mit einer nächsten Ebenen von Abbruchzählerwerten fortgefahren wird, ersetzen die ausgewählten Maßnahmen in einem Beispiel die vorherigen Maßnahmen. Zum Beispiel wird alles vorher Deaktivierte aktiviert, und die neuen Maßnahmen werden ergriffen. in einer weiteren Ausführungsform werden die neuen Maßnahmen jedoch zusätzlich zu den vorherigen Maßnahmen ergriffen. Somit, wie hierin verwendet, ersetzt eine andere Maßnahme eine vorherige Maßnahme, erfolgt zusätzlich zu einer vorherigen Maßnahme oder irgendeiner Kombination davon. Ferner kann es sich um dieselbe oder eine andere Maßnahme als die vorherige Maßnahme handeln.
  • Zum Beispiel wird die Maßnahme durch eine Firmware-Einstellung eines Hardware-Bits ausgeführt, das den Sonderverarbeitungsmodus aktiviert (z. B. Deaktivieren von Verzweigungsvoraussage usw.). Die Hardware setzt dieses Bit automatisch unter denselben Bedingungen zurück wie denjenigen, unter denen der Zähler zurückgesetzt wird.
  • Sollte die Transaktion nach einem Ausführen von einer oder mehreren der vorgenannten Maßnahmen weiterhin abgebrochen werden und der Zählerwert einen ausgewählten Wert oder eine ausgewählte Ebene erreichen, können Maßnahmen gegen in Konflikt stehende Prozessoren ergriffen werden. Zum Beispiel können bei Abbrüchen 4 bis 15 willkürliche Verzögerungen (d. h. eine erneute Ausführung der Transaktion wird um eine bestimmte Zeitdauer oder eine bestimmte Anzahl von Maschinenzyklen usw. verzögert) ausgeführt werden; und bei Abbrüchen 16 bis 23 kann ein Semaphor für die anderen Prozessoren der Partition (z. B. LPAR-Bereich) übernommen werden, in der dieser Prozessor ausgeführt wird, und daher Operationen an den anderen Prozessoren einstellen. Desgleichen kann bei Zählerwerten 24 bis 63 am Semaphor für das gesamte System übernommen werden, in dem alle Prozessoren in dem System Operationen einstellen müssen, bis der Semaphor beseitigt ist. in diesem Verarbeitungsmodus wird auf der Grundlage, dass die ausgewählte Ebene erreicht wurde, in der ein Semaphor angefordert werden muss, eine Firmware-Routine aufgerufen, um den Semaphor zum Beispiel unter Verwendung eines Compare-and-Swap-Mechanismus anzufordern. Wenn der Semaphor erhalten wurde, wird eine Unterbrechung an die entsprechenden Prozessoren gemeldet (z. B. die Prozessoren innerhalb derselben Partition oder alle Prozessoren des Systems oder irgendeine Untergruppe). Danach verlässt der Prozessor die Firmware-Routine und führt die Transaktion einmal oder mehrmals erneut bis zur erfolgreichen Beendigung oder einer Unterbrechung aus. Der Semaphor wird zurückgesetzt, wenn die Transaktion erfolgreich beendet worden ist oder sie nicht mehr wiederholt wird.
  • Obwohl in der vorgenannten Ausführungsform Maßnahmen auf der Grundlage eines Abbruchzählerwerts ergriffen werden, werden in einer weiteren Ausführungsform Maßnahmen auf der Grundlage von Gründen für den Abbruch und/oder auf der Grundlage des Zählerwerts ergriffen. Somit wird festgestellt, dass Maßnahmen auf der Grundlage einer Abbruchbedingung ergriffen werden, wobei die Bedingung der Zählerwert, der Abbruchgrund oder eine Kombination aus dem Zählerwert und Abbruchgrund Ist. Zum Beispiel könnte ein Prozessor erkennen, dass der Abbruch aufgrund einer anderen CPU erfolgt ist und dann den Semaphor anfordern. Dies kann ebenfalls mit einer Zählung kombiniert werden, z. B. „wenn Abbruch > 16 und der Abbruch aufgrund eines Konflikts mit einer anderen CPU erfolgt → Semaphor anfordern”. Es gibt viele Variationen und Möglichkeiten.
  • In einer Ausführungsform stellt ein Verwenden der vorgenannten Techniken für eingeschränkte Transaktionen eine erfolgreiche Beendigung der Transaktion sicher, vorausgesetzt, eine derartige Beendigung ist möglich (z. B. es liegt keine Verletzung einer vorgabenbedingten Einschränkung oder irgendeine sonstige Verletzung vor).
  • Zusammengefasst erfolgt die Verarbeitung einer eingeschränkten Transaktion wie folgt:
    • • Wenn bereits der eingeschränkte TX-Modus besteht, wird eine transaktionsvorgabenbedingte Ausnahme erkannt.
    • • Wenn die aktuelle TND (Transaction Nesting Depth – Transaktionsverschachtelungstiefe) > 0 ist, wird die Ausführung fortgesetzt, als wäre es eine nicht eingeschränkte Transaktion
    • – Effektives F-Steuerelement wird auf null gesetzt
    • – Effektives PIFC bleibt unverändert
    • – Ermöglicht einer äußeren nicht eingeschränkten TX eine Dienstfunktion aufzurufen, die eine eingeschränkte TX verwenden kann.
    • • Wenn die aktuelle TND = 0:
    • – Transaktionsdiagnoseblockadresse ist ungültig
    • – Kein von einer Anweisung angegebener TDB bei Abbruch gespeichert
    • – Transaktionsabbruch-PSW wird auf Adresse von TBEGINC gesetzt
    • – Nicht die nächste fortlaufende Anweisung
    • – Durch die GRSM angegebene Allgemeinregisterpaare werden in einem modellabhängigen Speicherort gespeichert, auf den von einem Programm nicht zugegriffen werden kann
    • – Optional gebildetes Transaktions-Token (von D2-Operand). Das Transaktions-Token ist eine Kennung der Transaktion. Es kann der Speicheroperandenadresse oder einem anderen Wert entsprechen.
    • • Effektives A = TBEGINC A und jedes äußere A
    • • TND erhöht
    • – Wenn die TND von 0 auf 1 übergeht, tritt die CPU in den eingeschränkten TX-Modus ein
    • – Andernfalls bleibt die CPU im nicht eingeschränkten TX-Modus
    • • Die Anweisung wird mit CC0 beendet
    • • Ausnahmen:
    • – Spezifikationsausnahme (PIC (Program Interruption Code – Programmunterbrechungscode) 0006), wenn das Feld B1 ungleich null ist
    • – Sonderoperationsausnahme (PIC 0013 hex), wenn das Transaktionsausführungs-Steuerelement (CR0.8) null ist
    • – Transaktionsvorgabenbedingte Ausnahme (PIC 0018 hex), wenn in eingeschränktem TX-Modus ausgegeben
    • – Operationsausnahme (PIC 0001), wenn die eingeschränkte transaktionsgebundene Ausführungseinrichtung nicht installiert ist
    • – Ausführungsausnahme (PIC 0003), wenn die Anweisung das Ziel einer Anweisung des Typs Ausführen ist
    • – Abbruchcode 13, wenn die Verschachtelungstiefe überschritten wird
    • • Abbruchbedingungen in einer eingeschränkten Transaktion:
    • – Abbruch-PSW zeigt auf Anweisung TBEGINC
    • – Nicht die darauffolgende Anweisung
    • – Abbruchbedingung verursacht, dass die gesamt TX neu ausgeführt wird
    • – Kein Fehlerpfad
    • – Die CPU ergreift spezielle Maßnahmen, um bei einer weiteren Ausführung eine erfolgreiche Beendigung sicherzustellen
    • – Unter der Voraussetzung, dass kein permanenter Konflikt, keine Unterbrechung oder Vorgabenverletzung vorliegen, wird für die Transaktion eine letztendliche Beendigung sichergestellt.
    • • Vorgabenverletzung:
    • – PIC 0018 hex – gibt Verletzung einer Transaktionsvorgabe an
    • – Ansonsten wird die Transaktion ausgeführt als wäre sie nicht eingeschränkt
  • Wie oben beschrieben, stellt die transaktionsgebundene Einrichtung zusätzlich zur Verarbeitung von eingeschränkten Transaktionen, die optional ist, in einer Ausführungsform auch die Verarbeitung von nicht eingeschränkten Transaktionen bereit. Weitere Details in Bezug auf die Verarbeitung von nicht eingeschränkten Transaktionen und insbesondere die der Anweisung TBEGIN zugehörige Verarbeitung werden unter Bezugnahme auf 15 beschrieben. Die Ausführung der Anweisung TBEGIN verursacht, dass die CPU entweder in den nicht eingeschränkten transaktionsgebundenen Ausführungsmodus eintritt oder darin verbleibt. Die CPU (d. h. der Prozessor), die TBEGIN ausführt, führt die Logik von 15 aus.
  • Unter Bezugnahme auf 15 wird auf der Grundlage einer Ausführung der Anweisung TBEGIN eine Serialisierungsfunktion (oben beschrieben) ausgeführt, SCHRITT 1500. Anschließend an ein Ausführen einer Serialisierung wird eine Bestimmung vorgenommen, ob eine Ausnahme erkannt worden ist, ABFRAGE 1502. Ist dies der Fall, wird die Ausnahme bearbeitet, SCHRITT 1504. Zum Beispiel wird eine Sonderoperationsausnahme erkannt, und die Operation wird unterdrückt, wenn das transaktionsgebundene Ausführungssteuerelement, Bit 8 des Steuerregisters 0, null ist. Ferner wird eine Spezifikationsausnahme erkannt, und die Operation wird unterdrückt, wenn das Programmunterbrechungs-Filtersteuerelement, Bits 14 bis 15 des Felds I2 der Anweisung, den Wert 3 enthält; oder die erste Operandenadresse keine Doppelwortgrenze angibt. Eine Operationsausnahme wird erkannt, und die Operation wird unterdrückt, wenn die transaktionsgebundene Ausführungseinrichtung nicht in der Konfiguration installiert ist; und eine Ausführungsausnahme wird erkannt, und die Operation wird unterdrückt, wenn das TBEGIN das Ziel einer Anweisung des Typs Ausführen ist. Wenn sich die CPU in dem eingeschränkten transaktionsgebundenen Ausführungsmodus befindet, wird außerdem eine Programmausnahme aufgrund einer transaktionsvorgabenbedingten Ausnahme erkannt, und die Operation wird unterdrückt. Wenn ferner die Transaktionsverschachtelungstiefe bei einer Erhöhung um 1 eine modellabhängige maximale Transaktionsverschachtelungstiefe überschreiten würde, wird die Transaktion mit dem Abbruchcode 13 abgebrochen.
  • Wenn ferner des Weiteren das Feld B1 der Anweisung ungleich null ist und sich die CPU nicht in dem transaktionsgebundenen Ausführungsmodus befindet, d. h. die Transaktionsverschachtelungstiefe ist null, wird die Speicherzugriffsmöglichkeit auf den ersten Operanden bestimmt. Wenn auf den ersten Operanden nicht zu Speicherzwecken zugegriffen werden kann, wird eine Zugriffsausnahme erkannt, und die Operation wird abhängig von der jeweiligen Zugriffsausnahmebedingung entweder auf einen Nullwert gesetzt, unterdrückt oder beendet. Zusätzlich wird jedes PER-Speicheränderungsereignis für den ersten Operanden erkannt. Wenn das Feld B1 ungleich null ist und sich die CPU bereits in dem transaktionsgebundenen Ausführungsmodus befindet, ist unvorhersehbar, ob eine Speicherzugriffsmöglichkeit auf den ersten Operanden bestimmt wird, und PER-Speicheränderungsereignisse werden für den ersten Operanden erkannt. Wenn das Feld B1 null ist, wird auf den ersten Operanden nicht zugegriffen.
  • Zusätzlich zur Ausnahmenprüfung wird eine Bestimmung vorgenommen, ob sich die CPU in dem transaktionsgebundenen Ausführungsmodus befindet (d. h. die Transaktionsverschachtelungstiefe ist null), ABFRAGE 1506. Wenn sich die CPU nicht in dem transaktionsgebundenen Ausführungsmodus befindet, werden die Inhalte der ausgewählten Allgemeinregisterpaare gespeichert, SCHRITT 1508. Insbesondere werden die Inhalte der Allgemeinregisterpaare, die von der Allgemeinregister-Speichermaske angegeben werden, in einem modellabhängigen Speicherort gespeichert, auf den vom Programm nicht direkt zugegriffen werden kann.
  • Ferner wird eine Bestimmung vorgenommen, ob das Feld B1 der Anweisung null ist, ABFRAGE 1510. Wenn das Feld B1 nicht gleich null ist, wird die erste Operandenadresse in die Transaktionsdiagnoseblockadresse gestellt, SCHRITT 1514, und die Transaktionsdiagnoseblockadresse ist gültig. Ferner wird das Transaktionsabbruch-PSW aus den Inhalten des aktuellen PSW gesetzt, SCHRITT 1516. Die Anweisungsadresse des Transaktionsabbruch-PSW gibt die nächstfolgende Anweisung an (also die Anweisung, die auf das äußerste TBEGIN folgt).
  • Des Weiteren wird eine Bestimmung des effektiven Werts des Steuerelements für AR-Modifizierung zulassen (A), Bit 12 des Felds I2 der Anweisung, vorgenommen, SCHRITT 1518. Das effektive A-Steuerelement ist die logische UND-Verknüpfung des A-Steuerelements in der Anweisung TBEGIN für die aktuelle Ebene und für alle äußeren Ebenen. Zusätzlich wird ein effektiver Wert des Steuerelements für Gleitkomma-Operation zulassen (F), Bit 13 des Felds I2 der Anweisung, bestimmt, SCHRITT 1520. Das effektive F-Steuerelement ist die logische UND-Verknüpfung des F-Steuerelements in der Anweisung TBEGIN für die aktuelle Ebene und für alle äußeren Ebenen. Ferner wird ein effektiver Wert des Programmunterbrechungs-Filtersteuerelements (PIFC), Bits 14 bis 15 des Felds I2 der Anweisung, bestimmt, SCHRITT 1522. Der effektive PIFC-Wert ist der höchste Wert in der Anweisung TBEGIN für die aktuelle Ebene und für alle äußeren Ebenen.
  • Zusätzlich wird ein Wert von eins zu der Transaktionsverschachtelungstiefe hinzugefügt, SCHRITT 1524, und die Anweisung wird mit einem Setzen des Bedingungscodes 0 beendet, SCHRITT 1526. Wenn die Transaktionsverschachtelungstiefe von null in eins übergeht, tritt die CPU in den nicht eingeschränkten transaktionsgebundenen Ausführungsmodus ein; andernfalls bleibt die CPU in dem nicht eingeschränkten transaktionsgebundenen Ausführungsmodus.
  • Wenn B1 bei erneuter Rückkehr zu ABFRAGE 1510 gleich null ist, ist die Transaktionsdiagnoseblockadresse ungültig, SCHRITT 1511, und die Verarbeitung wird mit SCHRITT 1518 fortgesetzt. Wenn sich die CPU im transaktionsgebundenen Ausführungsmodus befindet, ABFRAGE 1506, wird die Verarbeitung gleichfalls mit SCHRITT 1518 fortgesetzt.
  • Zu einem sich daraus ergebenden Bedingungscode für die Ausführung von TBEGIN gehört zum Beispiel:
  • 0
    Transaktionseinleitung erfolgreich
    1
    -
    2
    -
    3
    -
  • Zu Programmausnahmen zählen zum Beispiel:
    • • Zugriff (Speichern, erster Operand)
    • • Operation (transaktionsgebundene Ausführungseinrichtung nicht installiert)
    • • Sonderoperation
    • • Spezifikation
    • • Transaktionsvorgabe (aufgrund einer eingeschränkten Anweisung)
  • In einer Ausführungsform kann die oben angegebene Ausnahmenprüfung in unterschiedlicher Reihenfolge auftreten. Eine bestimmte Reihenfolge für die Ausnahmenprüfung ist wie folgt:
    • • Ausnahmen mit derselben Priorität wie die Priorität von Programmunterbrechungsbedingungen für den allgemeinen Fall.
    • • Spezifikationsausnahme aufgrund eines reservierten PIFC-Werts.
    • • Spezifikationsausnahme aufgrund dessen, dass die erste Operandenadresse nicht auf einer Doppelwortgrenze liegt.
    • • Zugriffsausnahme (wenn Feld B1 ungleich null ist).
    • – Abbruch aufgrund eines Überschreitens der maximalen Transaktionsverschachtelungstiefe.
    • • Bedingungscode 0 aufgrund einer normalen Beendigung.
  • Hinweise:
    • 1. Wenn das Feld B1 ungleich null ist, gilt Folgendes:
    • • Ein zugänglicher Transaktionsdiagnoseblock (TDB) muss bereitgestellt werden, wenn eine äußerste Transaktion eingeleitet wird – selbst wenn die Transaktion nie abgebrochen wird.
    • • Da unvorhersehbar ist, ob eine Zugriffsmöglichkeit des TDB für verschachtelte Transaktionen geprüft wird, muss ein zugänglicher TDB für jede verschachtelte Anweisung TBEGIN bereitgestellt werden.
    • • Die Ausführung jedes TBEGIN, in dem das Feld B1 ungleich null ist, und die Ausführung jeder Abbruchverarbeitung, die für eine Transaktion auftritt, die durch ein äußerstes TBEGIN eingeleitet wurde, in dem das Feld B1 ungleich null ist, kann langsamer sein als wenn das Feld B1 null ist.
    • 2. Register, für die durch die Allgemeinregister-Speichermaske angegeben wird, dass sie zu speichern sind, werden in einer Ausführungsform nur zurückgespeichert, wenn die Transaktion abgebrochen wird, nicht aber wenn die Transaktion mittels TRANSACTION END normal beendet wird. Nur die durch die GRSM angegebenen Register der äußersten Anweisung TRANSACTION BEGIN werden bei einem Abbruch zurückgespeichert. Das Feld I2 sollte alle Registerpaare angeben, die Eingabewerte bereitstellen, die durch die Transaktion geändert werden. Wenn die Transaktion abgebrochen wird, werden daher die Eingaberegisterwerte auf ihre ursprünglichen Inhalte zurückgespeichert, wenn der Eintritt in das Abbruch-Verarbeitungsprogramm erfolgt.
    • 3. Bei der Anweisung TRANSACTION BEGIN (TBEGIN) wird erwartet, dass darauf eine bedingte Verzweigungsanweisung folgt, die bestimmt, ob die Transaktion erfolgreich eingeleitet wurde.
    • 4. Wenn eine Transaktion aufgrund von Bedingungen abgebrochen wird, die nicht zu einer Unterbrechung führen, erhält die Anweisung, die durch das Transaktionsabbruch-PSW angegeben wird, ein Steuerelement (also die Anweisung, die auf das äußerste TRANSACTION BEGIN (TBEGIN) folgt). Zusätzlich zu dem Bedingungscode, der durch die Anweisung TRANSACTION BEGIN (TBEGIN) gesetzt wird, werden auch die Bedingungscodes 1 bis 3 gesetzt, wenn eine Transaktion abgebrochen wird.
  • Daher sollte die Anweisungsfolge, die auf die äußerste Anweisung TRANSACTION BEGIN (TBEGIN) folgt, in der Lage sein, alle vier Bedingungscodes aufzunehmen, auch wenn die Anweisung TBEGIN in diesem Beispiel nur den Code 0 setzt.
    • 5. Bei den meisten Modellen kann eine verbesserte Ausführung sowohl für TRANSACTION BEGIN als auch bei Abbruch einer Transaktion verwirklicht werden, indem in der Allgemeinregister-Speichermaske die Mindestanzahl von erforderlichen Registern angegeben wird, die gespeichert und zurückgespeichert werden müssen.
    • 6. Während es sich in dem nicht eingeschränkten transaktionsgebundenen Ausführungsmodus befindet, kann ein Programm eine Dienstfunktion aufrufen, die Zugriffsregister oder Gleitkommaregister (einschließlich das Gleitkomma-Steuerregister) ändern kann. Obwohl eine derartige Dienstroutine die geänderten Register beim Aufrufen speichern und beim Verlassen zurückspeichern kann, kann die Transaktion vor dem normalen Verlassen der Routine abgebrochen werden. Wenn das aufrufende Programm keine Vorkehrung für eine Beibehaltung dieser Register trifft, während sich die CPU in dem nicht eingeschränkten transaktionsgebundenen Ausführungsmodus befindet, ist es möglicherweise nicht in der Lage, eine Änderung der Register durch die Dienstfunktion zuzulassen.
  • Um eine unbeabsichtigte Änderung von Zugriffsregistern zu verhindern, kann das Programm, während es sich im nicht eingeschränkten transaktionsgebundenen Ausführungsmodus befindet, das Steuerelement für AR-Modifizierung zulassen, Bit 12 des Felds I2 der Anweisung TRANSACTION BEGIN, auf null setzen. Desgleichen kann das Programm zum Verhindern der unbeabsichtigten Änderung der Gleitkommaregister das Steuerelement für Gleitkomma-Operation zulassen, Bit 13 des Felds I2 der Anweisung TBEGIN, auf null setzen.
    • 7. Während einer Ausführung der Anweisung TRANSACTION BEGIN (TBEGIN) erkannte Programmausführungsbedingungen unterliegen dem effektiven Programmunterbrechungs-Filtersteuerelement, das durch alle äußeren Anweisungen TBEGIN gesetzt wird. Während der Ausführung der äußersten Anweisung TBEGIN erkannte Programmausführungsbedingungen unterliegen keiner Filterung.
    • 8. Um mehrere Speicherorte in serieller Reihenfolge zu aktualisieren, können herkömmliche Codefolgen ein Sperrwort (Semaphor) verwenden. Wenn (a) eine transaktionsgebundene Ausführung verwendet wird, um Aktualisierungen von mehreren Speicherorten zu implementieren, (b) das Programm auch einen „Rückfall”-Pfad bereitstellt, der bei Abbruch der Transaktion aufgerufen werden soll, und (c) der Rückfallpfad ein Sperrwort verwendet, sollte der transaktionsgebundene Ausführungspfad auch die Verfügbarkeit der Sperre prüfen, und wenn die Sperre nicht verfügbar ist, die Transaktion mittels der Anweisung TRANSACTION END beenden und auf den Rückfallpfad verzweigen. Damit wird ein konsistenter Zugriff auf die in serieller Reihenfolge angegebenen Ressourcen sichergestellt, ohne Berücksichtigung, ob sie transaktionsgebunden aktualisiert werden.
  • Alternativ könnte das Programm abgebrochen werden, wenn die Sperre nicht verfügbar ist, doch kann die Abbruchverarbeitung wesentlich langsamer sein als ein einfaches Beenden der Transaktion mittels TEND.
    • 9. Wenn das effektive Programmunterbrechungs-Filtersteuerelement (PIFC) größer als null ist, filtert die CPU die meisten Datenausnahmen-Programmunterbrechungen. Wenn das Steuerelement für Gleitkomma-Operation zulassen (F) null ist, wird der Datenausnahmecode (DXC) als Ergebnis eines Abbruchs aufgrund einer Datenausnahme-Programmausnahmebedingung nicht in dem Gleitkomma-Steuerregister gesetzt. In diesem Szenario (Flitern wird angewendet und das effektive F-Steuerelement ist null) befindet sich der einzige Speicherort, in dem der DXC untersucht wird, in dem von TBEGIN angegebenen TDB. Wenn das Abbruchverarbeitungsprogramm des Programms den DXC in einer derartigen Situation untersuchen soll, sollte das Allgemeinregister B1 ungleich null sein, sodass eine gültige Transaktionsdiagnoseblockadresse (TDBA) gesetzt wird.
    • 10. Wenn eine PER-Speicheränderung oder Nulladresserkennungsbedingung für den von TBEGIN angegebenen TDB der äußersten Anweisung TBEGIN vorhanden ist und eine PER-Ereignisunterdrückung nicht zutrifft, wird das PER-Ereignis während der Ausführung der Anweisung erkannt und somit verursacht, dass die Transaktion sofort abgebrochen werden muss, gleichgültig, ob noch irgendeine andere Abbruchbedingung vorhanden ist.
  • In einer Ausführungsform setzt die Anweisung TBEGIN implizit die Transaktionsabbruchadresse auf die nächstfolgende Anweisung nach dem TBEGIN. Diese Adresse ist als eine bedingte Verzweigungsanweisung gedacht, die bestimmt, ob abhängig vom Bedingungscode (CC) eine Verzweigung ausgeführt wird. Ein erfolgreiches TBEGIN setzt CC0, wogegen eine abgebrochene Transaktion CC1, CC2 oder CC3 setzt.
  • In einer Ausführungsform stellt die Anweisung TBEGIN einen optionalen Speicheroperanden bereit, der die Adresse eines Transaktionsdiagnoseblocks (TDB) angibt, in dem Informationen gespeichert werden, wenn die Transaktion abgebrochen wird.
  • Ferner stellt sie einen unmittelbaren Operanden bereit, der Folgendes enthält:
    eine Allgemeinregister-Speichermaske (GRSM), die angibt, welche Paare von Allgemeinregistern zu Beginn einer transaktionsgebundenen Ausführung gespeichert und zurückgespeichert werden sollen, wenn die Transaktion abgebrochen wird;
    ein Bit (A), das ein Abbrechen der Transaktion gestattet, wenn die Transaktion Zugriffsregister modifiziert;
    ein Bit (F), das ein Abbrechen der Transaktion gestattet, wenn die Transaktion versucht, Gleitkomma-Anweisungen auszuführen; und
    ein Programmunterbrechungs-Filtersteuerelement (PIFC), das gestattet, dass einzelne Transaktionsebenen das tatsächliche Vorliegen einer Programmunterbrechung umgehen, wenn eine Transaktion abgebrochen wird.
  • Die A-, F- und PIFC-Steuerelemente können auf verschiedenen Verschachtelungsebenen unterschiedlich sein und auf die vorherige Ebene zurückgespeichert werden, wenn die inneren Transaktionsebenen beendet sind.
  • Des Weiteren wird das TBEGIN (oder TBEGINC in einer weiteren Ausführungsform) verwendet, um ein Transaktions-Token zu bilden. Optional kann das Token mit einem Token abgestimmt werden, das durch die Anweisung TEND gebildet wird. Zum Beispiel wird für jede Anweisung TBEGIN (oder TBEGINC) ein Token aus der ersten Operandenadresse gebildet. Dieses Token kann unabhängig davon gebildet werden, ob das Basisregister null ist (ungleich einer TDB-Adresseinstellung, die nur auftritt, 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 ihrem Speicheroperanden gebildet. Wenn die Tokens nicht übereinstimmen, kann eine Programmausnahme erkannt werden, die das Programm vor einer allein stehenden Anweisung warnt.
  • Ein Token-Abgleich stellt einen Mechanismus bereit, der die Software-Zuverlässigkeit verbessern soll, indem sichergestellt wird, dass eine TEND-Anweisung richtig mit einem TBEGIN (oder TBEGINC) paarweise verbunden wird. Wenn eine Anweisung TBEGIN auf einer bestimmten Verschachtelungsebene ausgeführt wird, wird ein Token aus der Speicheroperandenadresse gebildet, die diese Instanz einer Transaktion identifiziert. Wenn eine entsprechende Anweisung TEND ausgeführt wird, wird ein Token aus der Speicheroperandenadresse der Anweisung gebildet, und die CPU vergleicht das Anfangs-Token für die Verschachtelungsebene mit dem End-Token. Wenn die Tokens nicht übereinstimmen, wird eine Ausnahmebedingung erkannt. Ein Modell kann einen Token-Abgleich nur für eine bestimmte Anzahl von Verschachtelungsebenen implementieren (oder für keine Verschachtelungsebenen). Das Token darf nicht alle Bits der Speicheroperandenadresse umfassen, oder die Bits können mittels Hash oder anderen Verfahren kombiniert werden. Ein Token kann durch die Anweisung TBEGIN gebildet werden, selbst wenn auf ihren Speicheroperanden nicht zugegriffen wird.
  • Zusammengefasst erfolgt eine Verarbeitung einer nicht eingeschränkten Transaktion wie folgt:
    • • Wenn TND = 0:
    • – Wenn B1 ≠ 0, wird die Transaktionsdiagnoseblockadresse von der ersten Operandenadresse gesetzt.
    • – Transaktionsabbruch-PSW wird auf nächstfolgende Anweisungsadresse gesetzt.
    • – Allgemeinregisterpaare, die durch das Feld I2 angegeben werden, werden in einem modellabhängigen Speicherort gespeichert.
    • – Darauf kann vom Programm nicht direkt zugegriffen werden
    • • Effektive PIFC-, A- und F-Steuerelemente werden berechnet
    • – Effektives A = TBEGIN A und jedes äußere A
    • – Effektives F = TBEGIN F und jedes äußere F
    • – Effektives PIFC = max (TBEGIN PIFC, jedes äußere PIFC)
    • • Transaktionsverschachtelungstiefe (TND) wird erhöht
    • • Wenn die TND von 0 auf 1 übergeht, tritt die CPU in den transaktionsgebundenen Ausführungsmodus ein
    • • Bedingungscode wird auf null gesetzt
    • – Wenn eine auf TBEGIN folgende Anweisung ein Steuerelement empfängt:
    • – TBEGIN-Erfolg wird durch CC0 angegeben
    • – Abgebrochene Transaktion wird durch CC ungleich null angegeben
    • • Ausnahmen:
    • – Abbruchcode 13, wenn die Verschachtelungstiefe überschritten wird
    • – Zugriffausnahme (eine von verschiedenen PICs), wenn das Feld B1 ungleich null ist und auf den Speicheroperanden für eine Speicheroperation nicht zugegriffen werden kann
    • – Ausführungsausnahme (PIC 0003), wenn die Anweisung TBEGIN das Ziel einer Anweisung des Typs Ausführen ist
    • – Operationsausnahme (PIC 0001), wenn die transaktionsgebundene Ausführungseinrichtung nicht installiert ist
    • – PIC 0006, wenn
    • – PIFC ungültig ist (Wert von 3)
    • – Zweite Operandenadresse nicht auf Doppelwortgrenze ausgerichtet
    • – PIC 0013 hex, wenn transaktionsgebundenes Ausführungssteuerelement (CR0.8) null ist
    • – PIC 0018 hex, wenn in eingeschränktem TX-Modus ausgegeben
  • Wie oben angegeben, kann eine Transaktion, eingeschränkt oder nicht eingeschränkt, durch eine Anweisung TRANSACTION END (TEND) beendet werden. Weitere Details in Bezug auf die Verarbeitung einer Transaktionsende-Anweisung (TEND) werden unter Bezugnahme auf 16 beschrieben. Die CPU (d. h. der Prozessor), die TEND ausführt, führt die Logik von 16 aus.
  • Unter Bezugnahme auf 16 werden zuerst auf der Grundlage dessen, dass der Prozessor die Anweisung TEND erhält (z. B. abruft, empfängt usw.), verschiedene Ausnahmenprüfungen ausgeführt, und wenn eine Ausnahme vorhanden ist, ABFRAGE 1600, wird die Ausnahme bearbeitet, SCHRITT 1602. Wenn zum Beispiel das TRANSACTION END das Ziel einer Anweisung des Typs Ausführen ist, wird die Operation unterdrückt, und eine Ausführungsausnahme wird erkannt, und eine Sonderoperationsausnahme wird erkannt, und die Operation wird unterdrückt, wenn das transaktionsgebundene Ausnahmesteuerelement, Bit 8 von CR0, null ist. Des Weiteren wird ferner eine Operationsausnahme erkannt, und die Operation wird unterdrückt, wenn die transaktionsgebundene Ausführungseinrichtung nicht in der Konfiguration installiert ist.
  • Wenn unter Rückkehr zu ABFRAGE 1600 keine Ausführung erkannt wird, wird die Transaktionsverschachtelungstiefe verringert (z. B. um eins), SCHRITT 1604. Eine Bestimmung wird vorgenommen, ob die transaktionsgebundene Verschachtelungstiefe nach dem Verringern null ist, ABFRAGE 1606. Wenn die Transaktionsverschachtelungstiefe null ist, werden alle Speicherzugriffe festgeschrieben, SCHRITT 1608, die von der Transaktion vorgenommen wurden. Ferner verlässt die CPU den transaktionsgebundenen Ausführungsmodus, SCHRITT 1610, und die Anweisung wird beendet, SCHRITT 1612.
  • Wenn unter Rückkehr zu ABFRAGE 1606 die Transaktionsverschachtelungstiefe nicht gleich null ist, wird die Anweisung TRANSACTION END einfach beendet.
  • Wenn sich die CPU zu Beginn der Operation in dem Transaktionsausführungsmodus befindet, wird der Bedingungscode auf 0 gesetzt, andernfalls wird der Bedingungscode auf 2 gesetzt.
  • Es wird angemerkt, dass das effektive Steuerelement für Gleitkomma-Operation zulassen (F), das Steuerelement für AR-Modifizierung zulassen (A) und das Programmunterbrechungs-Filtersteuerelement (PIFC) auf ihre jeweiligen Werte vor der Anweisung TRANSACTION BEGIN zurückgesetzt werden, die die soeben beendete Ebene eingeleitet hat. Ferner wird eine Serialisierungsfunktion bei Beendigung der Operation ausgeführt.
  • Die PER-Anweisungsabruf- und Transaktionsende-Ereignisse, die bei Beendigung der äußersten Anweisung TRANSACTION END erkannt werden, führen nicht dazu, dass die Transaktion abgebrochen wird.
  • In einem Beispiel enthält die Anweisung TEND auch ein Basisfeld B2 und ein Verschiebungsfeld D2, die kombiniert werden (z. B. addiert), um eine zweite Operandenadresse zu erstellen. In diesem Beispiel kann ein Token-Abgleich ausgeführt werden. Wenn zum Beispiel B2 ungleich null ist, werden ausgewählte Bits der zweiten Operandenadresse mit einem Transaktions-Token abgeglichen, das durch das entsprechende TBEGIN gebildet wird. Wenn keine Übereinstimmung vorliegt, ist eine Ausnahme vorhanden (z. B. PIC 0006)
  • Oben wird ein wirkungsvolles Mittel zum Aktualisieren von mehreren nicht zusammenhängenden Objekten im Arbeitsspeicher ohne klassische (grobkörnige) Serialisierung bereitgestellt, wie beispielsweise Blockieren, das ein Potenzial für eine wesentliche Mehrprozessor-Leistungsverbesserung bereitstellt. Also werden mehrere nicht zusammenhängende Objekte ohne die Durchsetzung von weiterer grobkörniger Speicherzugriffsortierung aktualisiert, die durch klassische Techniken wie Sperren und Semaphore bereitgestellt werden. Eine spekulative Verarbeitung wird ohne mühsame Wiederherstellungseinrichtung bereitgestellt, und eingeschränkte Transaktionen werden für einfache Aktualisierungen mit geringem Speicherbedarf angeboten.
  • Eine transaktionsgebundene Ausführung kann in einer Vielfalt von Szenarios verwendet werden, unter anderem für teilweise Einbettung, spekulative Verarbeitung und Sperrenauslassung, sie ist aber nicht darauf beschränkt. Bei einer teilweisen Einbettung wird der Teilbereich, der in den ausgeführten Pfad aufgenommen werden soll, in TBEGIN/TEND eingeschlossen. TABORT kann darin aufgenommen werden, um den Zustand bei einem vorzeitigen Verlassen rückgängig zu machen. Für eine Spekulation, wie beispielsweise in Java, können Nullprüfungen von dereferenzierten Zeigern unter Verwendung einer Transaktion bis Schleifenkante verzögert werden. Wenn der Zeiger null ist, kann die Transaktion unter Verwendung von TABORT sicher abgebrochen werden, das in TBEGIN/TEND enthalten ist.
  • In Bezug auf eine Sperrenauslassung wird ein Beispiel für ihre Verwendung unter Bezugnahme auf 17A bis 17B und das unten bereitgestellte Codefragment beschrieben.
  • 17A stellt eine doppeltverknüpfte Liste 1700 einer Vielzahl von Warteschlangenelementen 1702a bis 1702d dar. Ein neues Warteschlangenelement 1702e soll in die doppeltverknüpfte Liste von Warteschlangenelementen 1700 eingefügt werden. Jedes Warteschlangenelement 1702a bis 1702e enthält einen Vorwärtszeiger 1704a bis 1704e und einen Rückwärtszeiger 1706a bis 1706e. Wie in 17B gezeigt, wird zum Hinzufügen des Warteschlangenelements 1702e zwischen die Warteschlangenelemente 1702b und 1702c (1) der Rückwärtszeiger 1706e so gesetzt, dass er auf das Warteschlangenelement 1702b zeigt, (2) der Vorwärtszeiger 1704e wird so gesetzt, dass er auf das Warteschlangenelement 1702c zeigt, (3) der Rückwärtszeiger 1706c wird so gesetzt, dass er auf das Warteschlangenelement 1702e zeigt und (4) der Vorwärtszeiger 1704b wird so gesetzt, dass er auf das Warteschlangenelement 1702e zeigt.
  • Ein Beispiel eines Codefragments, das 17A bis 17B entspricht, findet sich nachstehend:
    • – R1 – Adresse des neuen Warteschlangenelements, das eingefügt werden soll.
    • – R2 – Adresse des Einfügungspunkts; das neue Element wird vor dem Element eingefügt, auf das von R2 gezeigt wird.
    NEU VERWEN QEL, R1
    DUNG VON
    AKTUELL VERWEN QEL, R1
    DUNG VON
    LHI R15, Ladewieder
    10 holungsan
    zahl
    SCHLEIFE TBEGIN TDB, Transaktion
    X'C000' starten
    (GRs 0 bis
    3
    speichern)
    JNZ ABGE CC ungleich
    BRO null
    CHEN bedeutet
    ab
    gebrochen.
    LG R3, Auf
    CURR.BWD vorheriges
    Element
    zeigen
    VORHERIG VERWEN QEL, R3 Adressier
    DUNG VON bar machen.
    STG R1, Vorherigen
    PREV.FWD Vorwärts
    zeiger
    aktualisieren
    STG R1, Aktuellen
    CURR.BWD Rückwärts
    zeiger
    aktualisieren
    STG R2, Neuen Vor
    NEW.FWD wärtszeiger
    aktualisieren
    STG R3, Neuen
    NEW.BWD Rückwärts
    zeiger
    aktualisieren
    TEND Transaktion
    beenden
    ABORTED ... NO_RETRY CC3: Nicht
    wiederhol
    barer
    Abbruch.
    JCT R15, LOOP Transaktion
    mehrmals
    wiederholen
    J NO_RETRY Kein Erfolg
    nach 10
    Versuchen;
    auf harte
    Tour
    ausführen.
  • Wenn in einem Beispiel die Transaktion für eine Sperrenauslassung verwendet wird, der Rückfallpfad aber eine Sperre verwendet, muss die Transaktion zumindest das Sperrwort abrufen, um festzustellen, dass es verfügbar ist. Der Prozessor stellt sicher, dass die Transaktion abgebrochen wird, wenn eine weitere CPU nicht transaktionsgebunden auf die Sperre zugreift.
  • Wie hierin verwendet, werden Speicher, zentraler Speicher, Hauptspeicher, Arbeitsspeicher und Hauptarbeitsspeicher untereinander austauschbar verwendet, sofern nicht anders implizit durch Verwendung oder explizit angegeben. Ferner enthält in einer Ausführungsform ein effektives Verzögern einer Transaktion ein Verzögern eines Festschreibens von transaktionsgebundenen Speicherungen in dem Hauptarbeitsspeicher bis zu einer Beendigung einer ausgewählten Transaktion; in einer weiteren Ausführungsform enthält ein effektives Verzögern einer Transaktion ein Zulassen von transaktionsgebundenen Aktualisierungen in einem Arbeitsspeicher, aber ein Beibehalten der alten Werte und ein Zurückspeichern des Arbeitsspeichers auf die alten Werte bei Abbruch.
  • Wie einem Fachmann klar sein wird, können ein oder mehrere Aspekte als ein System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können ein oder mehrere Aspekte in Gestalt einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte kombiniert, auf die alle hierin als „Schaltung”, „Modul” oder „System” Bezug genommen werden kann.
  • Ferner können eine oder mehrere Ausführungsformen die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darin ausgeführten computerlesbaren Programmcode verkörpert ist.
  • Jede Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu spezielleren Beispielen (eine nicht erschöpfende Liste) für das computerlesbare Speichermedium würde Folgendes zählen: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer CD-ROM, eine optische Speichereinheit, eine Magnetspeichereinheit oder jede geeignete Kombination des Vorgenannten. In dem Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes konkrete Medium sein, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung verwendet werden kann.
  • Unter folgender Bezugnahme auf 18 enthält in einem Beispiel ein Computerprogrammprodukt 1800 beispielsweise ein oder mehrere nicht flüchtige computerlesbare Speichermedien 1802, um darauf computerlesbare Programmcodemittel oder Logik 1804 zu speichern, um eine oder mehrere Ausführungsformen bereitzustellen und zu vereinfachen.
  • In einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung eines geeigneten Mediums übertragen werden, einschließlich drahtlos, drahtgebunden, über ein Lichtwellenleiterkabel, HF usw. oder eine geeignete Kombination des Vorgenannten, er ist aber nicht darauf beschränkt.
  • Computerprogrammcode zum Ausführen von Operationen für eine oder mehrere Ausführungsformen kann in jeder Kombination von einer oder mehreren Programmiersprachen geschrieben werden, einschließlich einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C”, Assembler oder ähnlichen Programmiersprachen. 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. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden werden, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters).
  • Eine oder mehrere Ausführungsformen werden hierin unter Bezugnahme auf Ablaufplan-Veranschaulichungen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten beschrieben. Es versteht sich, dass jeder Block in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern und Kombinationen von Blöcken in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, einschließlich Anweisungen, die die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegebene Funktion/Handlung umsetzen.
  • Die Computerprogrammanweisungen können auch auf einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen Vorrichtung, die programmierbare Daten ausführt, oder anderen Einheiten zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Handlungen bereitstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen. Diesbezüglich kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. Es ist ebenfalls anzumerken, dass in einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge auftreten können als in den Figuren angegeben. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block in den Blockschaubildern und/oder in der Veranschaulichung des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder der Veranschaulichung des Ablaufplans durch spezielle Systeme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Handlungen ausführen, oder Kombinationen von spezieller Hardware und Computeranweisungen umgesetzt werden können.
  • Zusätzlich zu Vorgenanntem können ein oder mehrere Aspekte durch einen Dienstanbieter bereitgestellt, angeboten, eingesetzt, verwaltet, gewartet werden usw., der eine Verwaltung von Umgebungen von Kunden anbietet. Zum Beispiel kann der Dienstanbieter Computercode und/oder eine Computer-Infrastruktur erstellen, pflegen, unterstützen usw., die einen oder mehrere Aspekte für einen oder mehrere Kunden ausführen. Im Gegenzug kann der Dienstanbieter zum Beispiel eine Bezahlung von dem Kunden unter einem Abonnement und/oder einer Gebührenvereinbarung erhalten. Zusätzlich oder alternativ kann der Dienstanbieter eine Bezahlung aus dem Verkauf von Werbeinhalten an einen oder mehrere Fremdanbieter erhalten.
  • In einem Aspekt kann eine Anwendung zum Ausführen von einer oder mehreren Ausführungsformen verwendet werden. Zum Beispiel weist die Verwendung einer Anwendung ein Bereitstellen einer Computer-Infrastruktur auf, die fähig ist, eine oder mehrere Ausführungsformen auszuführen.
  • Als weiterer Aspekt kann eine Datenverarbeitungs-Infrastruktur verwendet werden, die ein Integrieren von computerlesbarem Code in ein Datenverarbeitungssystem aufweist, in dem der Code in Kombination mit dem Datenverarbeitungssystem fähig ist, eine oder mehrere Ausführungsformen auszuführen.
  • Als noch weiterer Aspekt kann ein Prozess zum Integrieren einer Datenverarbeitungs-Infrastruktur bereitgestellt werden, die ein Integrieren von computerlesbarem Code in ein Computersystem aufweist. Das Computersystem weist ein computerlesbares Medium auf, wobei das Computer-Medium eine oder mehrere Ausführungsformen aufweist. Der Code in Kombination mit dem Computersystem ist fähig, eine oder mehrere Ausführungsformen auszuführen.
  • Obwohl verschiedene Ausführungsformen oben beschrieben werden, sind dies nur Beispiele. Zum Beispiel können Datenverarbeitungsumgebungen von anderen Architekturen verwendet werden, um eine oder mehrere Ausführungsformen zu integrieren und zu verwenden. Ferner können verschiedene Anweisungen, Anweisungsformate, Anweisungsfelder und/oder Anweisungswerte verwendet werden. Des Weiteren können verschiedene, weitere und/oder zusätzliche Einschränkungen/Vorgaben bereitgestellt/verwendet werden. Viele Variationen sind möglich.
  • Ferner können weitere Typen von Datenverarbeitungsumgebungen daraus Nutzen ziehen und verwendet werden. Zum Beispiel ist ein Datenverarbeitungssystem verwendbar, das zum Speichern und/oder Ausführen von Programmcode geeignet ist, das mindestens zwei Prozessoren enthält, die direkt oder indirekt über einen Systembus mit Arbeitsspeicherelementen verbunden sind. Die Arbeitsspeicherelemente enthalten zum Beispiel einen lokalen Arbeitsspeicher, der während der tatsächlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und einen Cache-Arbeitsspeicher, die eine vorübergehende Speicherung von mindestens einigem Programmcode bereitstellen, um die Anzahl zu verringern, wie oft Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
  • Eingabe-/Ausgabe- oder E/A-Einheiten (einschließlich Tastaturen, Anzeigen, Zeigeeinheiten, DASD, Band, CDs, DVDs, Thumb-Drives und andere Speichermedien usw., die jedoch nicht darauf beschränkt sind) können entweder direkt oder über zwischengeschaltete E/A-Controller mit dem System verbunden werden. Netzwerkadapter können ebenfalls mit dem System verbunden werden, um zu ermöglichen, dass das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder entfernt angeordneten Druckern oder Speichereinheiten über dazwischenliegende private oder öffentliche Netzwerke verbunden werden kann. Modems, Kabelmodems oder Ethernet-Karten sind nur einige der verfügbaren Typen von Netzwerkadaptern.
  • Unter Bezugnahme auf 19 werden repräsentative Komponenten eines Host-Computersystems 5000 zum Implementieren von einer oder mehreren Ausführungsformen dargestellt. Der repräsentative Host-Computer 5000 weist eine oder mehrere CPUs 5001 auf, die in Datenübertragung mit einem Computer-Arbeitsspeicher (d. h. einem zentralen Speicher) 5002 stehen, sowie E/A-Schnittstellen zu Speichermedieneinheiten 5011 und Netzwerken 5010 für einen Datenaustausch mit anderen Computern oder SANs oder dergleichen. Die CPU 5001 ist mit einer Architektur mit einer architekturgebundenen Anweisungsgruppe und einer architekturgebundenen Funktionalität kompatibel. Die CPU 5001 kann eine Zugriffsregisterumsetzung (ART) 5012 haben, die einen ART-Umsetzpuffer (ALB) 5013 zum Auswählen eines Adressraums enthält, der von einer dynamischen Adressumsetzung (DAT) 5003 zum Umsetzen von Programmadressen (virtuellen Adressen) in reale Arbeitsspeicheradressen verwendet werden soll. Eine DAT enthält normalerweise einen Adressumsetzpuffer (TLB) 5007 zum Zwischenspeichern von Umsetzungen, sodass spätere Zugriffe auf den Block des Computer-Arbeitsspeichers 5002 die Verzögerung einer Adressumsetzung nicht erforderlich machen. Normalerweise wird ein Zwischenspeicher 5009 zwischen dem Computer-Arbeitsspeicher 5002 und dem Prozessor 5001 verwendet. Der Zwischenspeicher 5009 kann hierarchisch sein und einen großen Zwischenspeicher haben, der für mehr als eine CPU verfügbar ist, und kleinere, schnellere Zwischenspeicher (auf niedrigerer Ebene) zwischen dem großen Zwischenspeicher und jeder CPU. In einigen Implementierungen werden die Zwischenspeicher der niedrigeren Ebene aufgeteilt, um separate Zwischenspeicher auf niedrigerer Ebene für Anweisungsabruf und Datenzugriffe bereitzustellen. In einer Ausführungsform können ein Transaktionsdiagnoseblock (TDB) 5100 und ein oder mehrere Puffer 5101 für die TX-Einrichtung in einem oder mehreren von Zwischenspeicher 5009 und Arbeitsspeicher 5002 gespeichert werden. In einem Beispiel werden im TX-Modus Daten anfangs in einem TX-Puffer gespeichert, und wenn der TX-Modus endet (z. B. äußerstes TEND), werden die Daten in dem Puffer im Arbeitsspeicher gespeichert (festgeschrieben), oder die Daten in dem Puffer werden im Fall eines Abbruchs verworfen.
  • In einer Ausführungsform wird eine Anweisung aus dem Arbeitsspeicher 5002 durch eine Anweisungsabrufeinheit 5004 über einen Zwischenspeicher 5009 abgerufen. Die Anweisung wird in einer Anweisungsentschlüsselungseinheit 5006 entschlüsselt und (in einigen Ausführungsformen zusammen mit anderen Anweisungen) an eine Anweisungsausführungseinheit oder Anweisungsausführungseinheiten 5008 weitergeleitet. Normalerweise werden mehrere Ausführungseinheiten 5008 verwendet, zum Beispiel eine arithmetische Ausführungseinheit, eine Gleitkomma-Ausführungseinheit und eine Verzweigungsanweisungs-Ausführungseinheit. Ferner können in einer Ausführungsform der TX-Einrichtung verschiedene TX-Steuerelemente 5110 verwendet werden. Die Anweisung wird durch die Ausführungseinheit ausgeführt, die je nach Bedarf auf Operanden aus anweisungsspezifizierten Registern oder Arbeitsspeicher zugreift. Wenn auf einen Operanden vom Arbeitsspeicher 5002 aus zugegriffen werden soll (dieser geladen oder gespeichert werden soll), übernimmt normalerweise eine Lade-/Speichereinheit 5005 die Bearbeitung des Zugriffs unter dem Steuerelement der Anweisung, die ausgeführt wird. Anweisungen können in Hardware-Schaltungen oder in internem Mikrocode (Firmware) oder durch eine Kombination von beidem ausgeführt werden.
  • Gemäß einem Aspekt der TX-Einrichtung enthält der Prozessor 5001 auch ein PSW 5102 (z. B. TX- und/oder Abbruch-PSW), eine Verschachtelungstiefe 5104, eine TDBA 5106 und ein oder mehrere Steuerregister 5108.
  • Wie angemerkt, enthält ein Computersystem Informationen in lokalem (oder Haupt-)Speicher sowie Adressierungs-, Schutz- und Referenz- sowie Änderungsaufzeichnung. Einige Adressierungsaspekte enthalten das Format von Adressen, das Konzept von Adressräumen, die verschiedenen Typen von Adressen und die Art und Weise, wie ein Adresstyp in einen anderen Adresstyp umgesetzt wird. Einiger Hauptspeicher enthält dauerhaft zugewiesene Speicherorte. Der Hauptspeicher stellt dem System eine direkt adressierbare Datenspeicherung mit schnellem Zugriff bereit. Sowohl Daten als auch Programme müssen (von Eingabeeinheiten) in den Hauptspeicher geladen werden, bevor sie verarbeitet werden können.
  • Der Hauptspeicher kann einen oder mehrere kleinere Pufferspeicher mit schnellem Zugriff enthalten, die manchmal als Zwischenspeicher bezeichnet werden. Ein Zwischenspeicher ist normalerweise einer CPU oder einem E/A-Prozessor physisch zugehörig. Ausgenommen in Bezug auf die Leistung sind die Auswirkungen der physischen Konstruktion und der Verwendung von verschiedenen Speichermedien im Allgemeinen nicht durch das Programm beobachtbar.
  • Separate Zwischenspeicher können für Anweisungen und für Datenoperanden verwaltet werden. Informationen in einem Zwischenspeicher werden in zusammenhängenden Bytes auf einer integralen Grenze verwaltet, die als Zwischenspeicherblock oder Zwischenspeicherzeile (oder kurz als Zeile) bezeichnet wird. Ein Modell kann eine Anweisung EXTRACT CACHE ATTRIBUTE bereitstellen, die die Größe einer Zwischenspeicherzeile in Bytes zurückgibt. Ein Modell kann auch Anweisungen PREFETCH DATA und PREFETCH DATA RELATIVE LONG bereitstellen, was sich auf den Vorablesezugriff auf Speicher im Daten- oder Anweisungszwischenspeicher oder die Freigabe von Daten aus dem Zwischenspeicher auswirkt.
  • Der Speicher wird als lange horizontale Folge von Bits gesehen. Bei den meisten Operationen erfolgen Zugriffe auf Speicher in einer Abfolge von links nach rechts. Die Folge von Bits ist in Einheiten von je acht Bits unterteilt. Eine Acht-Bit-Einheit wird als Byte bezeichnet, das der grundlegenden Baustein aller Informationsformate ist. Jeder Byte-Speicherort im Speicher wird durch eine eindeutige nicht negative Ganzzahl identifiziert, die die Adresse dieses Byte-Speicherorts bzw. einfach die Byte-Adresse ist. Aneinander angrenzende Byte-Speicherorte haben aufeinanderfolgende Adressen, beginnend mit 0 auf der linken Seite und fortgeführt in einer Abfolge von links nach rechts. Adressen sind binäre Ganzzahlen ohne Vorzeichen und sind 24, 31 oder 64 Bits.
  • Informationen werden zwischen dem Speicher und einer CPU oder einem Kanal-Subsystem mit jeweils einem Byte oder einer Gruppe von Bytes übertragen. Sofern zum Beispiel in der z/Achitecture nicht anders angegeben, wird eine Gruppe von Bytes im Speicher durch das höchstwertige Byte der Gruppe adressiert. Die Anzahl von Bytes in der Gruppe wird entweder implizit oder explizit durch die auszuführende Operation angegeben. Wenn eine Gruppe von Bytes in einer CPU-Operation verwendet wird, wird sie als Feld bezeichnet. Innerhalb jeder Gruppe von Bytes, beispielsweise in der z/Architecture, werden Bits in einer Abfolge von links nach rechts nummeriert. In der z/Architecture werden die höchstwertigen Bits manchmal als die „höherwertigen Bits” und die niedrigstwertigen Bits als die „niederwertigen Bits” bezeichnet. Bit-Nummern sind jedoch keine Speicheradressen. Nur Bytes können adressiert werden. Um einzelne Bits eines Bytes im Speicher bearbeiten zu können, wird auf das gesamte Byte zugegriffen. Die Bits in einem Byte sind von 0 bis 7 von links nach rechts durchnummeriert (z. B. in der z/Architecture). Die Bits in einer Adresse können von 8 bis 31 oder 40 bis 63 für 24-Bit-Adressen oder von 1 bis 31 oder 33 bis 63 für 31-Bit-Adressen nummeriert sein; sie sind von 0 bis 63 für 64-Bit-Adressen nummeriert. In einem Beispiel gelten die Bits 8 bis 31 und 1 bis 31 für Adressen, die sich in einem Speicherort befinden (z. B. einem Register), der 32 Bit breit ist, wogegen die Bits 40 bis 63 und 33 bis 63 für Adressen gelten, die sich in einem 64 Bit breiten Speicherort befinden. In einem beliebigen anderen Format fester Länge von mehreren Bytes sind die Bits, die das Format bilden, von 0 ausgehend fortlaufend nummeriert. Zum Zweck einer Fehlererkennung und vorzugsweise zur 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 durch das Programm nicht direkt gesteuert werden. Speicherkapazitäten werden in einer Anzahl von Bytes ausgedrückt. Wenn die Länge eines Speicheroperandenfelds durch den Operationscode einer Anweisung impliziert wird, gilt für das Feld eine feste Länge, die ein, zwei, vier, acht oder 16 Bytes betragen kann. Größere Felder können für einige Anweisungen impliziert werden. Wenn die Länge eines Speicheroperandenfelds nicht impliziert, sondern explizit angegeben wird, gilt für das Feld eine variable Länge. Operanden variabler Länge können in der Länge um Erhöhungen von jeweils einem Byte (oder bei einigen Anweisungen in Mehrfachen von zwei Bytes oder anderen Mehrfachen) variieren. Wenn Informationen in den Speicher gestellt werden, werden nur die Inhalte derjenigen Byte-Speicherorte ersetzt, die in dem angegebenen Feld enthalten sind, auch wenn die Breite des physischen Pfads zum Speicher größer als die Länge des Felds ist, das gespeichert wird.
  • Bestimmte Einheiten von Informationen müssen sich auf einer integralen Grenze im Speicher befinden. Eine Grenze wird für eine Einheit von Informationen als integral bezeichnet, wenn deren Speicheradresse ein Mehrfaches der Länge der Einheit in Bytes ist. Felder mit 2, 4, 8, 16 und 32 Bytes auf einer integralen Grenze werden mit einem speziellen Namen bezeichnet. Ein Halbwort ist eine Gruppe von zwei aufeinanderfolgenden Bytes auf einer Zwei-Byte-Grenze und ist der grundlegende Baustein von Anweisungen. Ein Wort ist eine Gruppe von vier aufeinanderfolgenden Bytes auf einer Vier-Byte-Grenze. Ein Doppelwort ist eine Gruppe von acht aufeinanderfolgenden Bytes auf einer Acht-Byte-Grenze. Ein Vierfachwort ist eine Gruppe von 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 angeben, enthält die binäre Darstellung der Adresse jeweils ein, zwei, drei, vier oder fünf niedrigstwertige Null-Bits. Anweisungen müssen sich auf integralen Zwei-Byte-Grenzen befinden. Für die Speicheroperanden der meisten Anweisungen bestehen keine Anforderungen für eine Grenzausrichtung.
  • Bei Einheiten, die separate Zwischenspeicher für Anweisungen und Datenoperanden implementieren, kann eine wesentliche Verzögerung bemerkt werden, wenn das Programm in eine Zwischenspeicherzeile speichert, aus der anschließend Anweisungen abgerufen werden, ohne Berücksichtigung dessen, ob das Speichern die Anweisungen ändert, die anschließend abgerufen werden.
  • In einem Beispiel kann die Ausführungsform durch Software ausgeführt werden (die manchmal als lizenzierter interner Code, Firmware, Mikrocode, Pikocode und dergleichen bezeichnet wird, von denen alle mit einer oder mehreren Ausführungsformen konsistent wären). Unter Bezugnahme auf 19 kann auf Software-Programmcode, der einen oder mehrere Aspekte verkörpert, durch den Prozessor 5001 des Host-Systems 5000 von Langzeitspeicher-Medieneinheiten 5011 aus zugegriffen werden, wie beispielweise einem CD-ROM-Laufwerk, einem Bandlaufwerk oder einem Festplattenlaufwerk. Der Software-Programmcode kann auf einem beliebigen einer Vielfalt von bekannten Medien zur Verwendung mit einem Datenverarbeitungssystein verkörpert sein, wie beispielsweise einer Diskette, einem Festplattenlaufwerk oder einem CD-ROM. Der Code kann auf derartigen Medien verteilt sein oder kann an Benutzer verteilt werden vom Computer-Arbeitsspeicher 5002 oder von einem Speicher eines Computersystems über ein Netzwerk 5010 an andere Computersysteme verteilt werden zur Verwendung durch Benutzer von derartigen anderen Systemen.
  • Der Software-Programmcode enthält ein Betriebssystem, das die Funktion und Interaktion der verschiedenen Computerkomponenten und von einem oder mehreren Anwendungsprogrammen steuert. Programmcode wird in der Regel von der Speichermedieneinheit 5011 auf den Computerspeicher 5002 mit relativ höherer Geschwindigkeit umgelagert, wo er für eine Verarbeitung durch den Prozessor 5001 verfügbar ist. Die Techniken und Verfahren zum Verkörpern von Software-Programmcode im Arbeitsspeicher, auf physischen Medien und/oder zum Verteilen von Software-Code über Netzwerke sind bekannt und werden hierin nicht weiter erörtert. Programmcode, der auf einem konkreten Medium erstellt und gespeichert wird (darunter elektronische Arbeitsspeichermodule (RAM), Flash-Arbeitsspeicher, CDs, DVDs, Magnetband und dergleichen, aber nicht darauf beschränkt), wird oft als „Computerprogrammprodukt” bezeichnet. Das Computerprogrammprodukt-Medium ist normalerweise durch eine Verarbeitungsschaltung für eine Ausführung durch die Verarbeitungsschaltung lesbar, die sich vorzugsweise in einem Computersystem befindet.
  • 20 veranschaulicht ein reprasentatives Workstation- oder Server-Hardwaresystem, in dem eine oder mehrere Ausführungsformen ausgeführt werden können. Das System 5020 von 20 weist ein repräsentatives grundlegendes Computersystem 5021 auf, wie beispielsweise einen PC, eine Workstation oder einen Server einschließlich optionaler Peripherie-Einheiten. Das grundlegende Computersystem 5021 enthält einen oder mehrere Prozessoren 5026 und einen Bus, der zum Verbinden und Ermöglichen einer Datenübertragung zwischen dem bzw. den Prozessoren 5026 und den anderen Komponenten des Systems 5021 gemäß bekannten Techniken verwendet wird. Der Bus verbindet den Prozessor 5026 mit einem Arbeitsspeicher 5025 und einem Langzeitspeicher 5027, der ein Festplattenlaufwerk enthalten kann (darunter beliebige magnetische Medien, CD, DVD und Flash-Arbeitsspeicher) oder beispielsweise ein Bandlaufwerk. Das System 5021 könnte auch einen Benutzerschnittstellen-Adapter enthalten, der den Mikroprozessor 5026 über den Bus mit einer oder mehreren Schnittstelleneinheiten verbindet wie beispielsweise einer Tastatur 5024, einer Maus 5023, einem Drucker/Scanner 5030 und/oder weiteren Schnittstelleneinheiten, die jede Benutzerschnittstelleneinheit sein können, wie beispielsweise ein Berührungsbildschirm, ein Digitaleingabe-Pad usw. Der Bus verbindet auch eine Anzeigeeinheit 5022 wie beispielsweise einen LCD-Bildschirm oder Monitor mit dem Mikroprozessor 5026 über einen Anzeige-Adapter.
  • Das System 5021 kann mit anderen Computern oder Netzwerken von Computern mittels eines Netzwerkadapters, der datenübertragungsfähig 5028 ist, Daten mit einem Netzwerk 5029 austauschen. Beispielhafte Netzwerk-Adapter sind Datenübertragungskanäle, Token-Ring, Ethernet oder Modems. Alternativ kann das System 5021 unter Verwendung einer drahtlosen Schnittstelle Daten austauschen, wie beispielsweise einer CDPD-(Cellular Digital Packet Data)Karte. Das System 5021 kann weiteren derartigen Computern in einem lokalen Netzwerk (LAN) oder einem Weitverkehrsnetzwerk (WAN) zugehörig sein, oder das System 5021 kann ein Client in einer Client/Server-Anordnung mit einem weiteren Computer sein usw. Alle diese Konfigurationen sowie die entsprechende Datenübertragungs-Hardware und -Software sind im Fachgebiet allgemein bekannt.
  • 21 veranschaulicht ein Datenverarbeitungsnetzwerk 5040, in dem eine oder mehrere Ausführungsformen ausgeführt werden können. Das Datenverarbeitungsnetzwerk 5040 kann eine Vielzahl von einzelnen Netzwerken enthalten, wie zum Beispiel ein drahtloses Netzwerk und ein drahtgebundenes Netzwerk, von denen jedes eine Vielzahl von einzelnen Workstations 5041, 5042, 5043, 5044 enthalten kann. Wie einem Fachmann klar sein wird, können zusätzlich ein oder mehrere LANs enthalten sein, wobei ein LAN eine Vielzahl von intelligenten Workstations aufweisen kann, die mit einem Host-Prozessor verbunden sind.
  • Unter weiterer Bezugnahme auf 21 können die Netzwerke auch Mainframe-Computer oder Server enthalten, wie beispielsweise Gateway-Computer (Client-Server 5046) oder Anwendungsserver (entfernt angeordneter Server 5048, der auf ein Datenrepository zugreifen kann und auf den auch direkt von einer Workstation 5045 zugegriffen werden kann). Ein Gateway-Computer 5046 dient als Eingangspunkt in jedes einzelne Netzwerk. Ein Gateway ist erforderlich, wenn ein Netzprotokoll mit einem anderen verbunden wird. Das Gateway 5046 kann vorzugsweise mittels einer Datenübertragungsverbindung mit einem anderen Netzwerk verbunden werden (zum Beispiel dem Internet 5047). Das Gateway 5046 kann auch direkt mit einer oder mehreren Workstations 5041, 5042, 5043, 5044 unter Verwendung einer Datenübertragungsverbindung verbunden werden. Der Gateway-Computer kann unter Verwendung eines IBM eServer System z-Servers implementiert werden, erhältlich von International Business Machines Corporation.
  • Unter gleichzeitiger Bezugnahme auf 20 und 21 kann auf Software-Programmcode 5031, der einen oder mehrere Aspekte verkörpern kann, durch den Prozessor 5026 des Systems 5020 von Langzeitspeicher-Medien 5027 aus zugegriffen werden, wie beispielweise einem CD-ROM-Laufwerk oder einem Festplattenlaufwerk. Der Software-Programmcode kann auf einem beliebigen einer Vielfalt von bekannten Medien zur Verwendung mit einem Datenverarbeitungssystem verkörpert sein, wie beispielsweise einer Diskette, einem Festplattenlaufwerk oder einem CD-ROM. Der Code kann auf derartigen Medien verteilt sein oder kann an Benutzer 5050, 5051 von dem Arbeitsspeicher oder Speicher eines Computersystems über ein Netzwerk an andere Computersysteme verteilt werden zur Verwendung durch Benutzer von derartigen anderen Systemen.
  • Alternativ kann der Programmcode in dem Arbeitsspeicher 5025 verkörpert sein und ein Zugriff darauf durch den Prozessor 5026 unter Verwendung des Prozessorbusses erfolgen. Ein derartiger Programmcode enthält ein Betriebssystem, das die Funktion und Interaktion der verschiedenen Computerkomponenten und von einem oder mehreren Anwendungsprogrammen 5032 steuert. Programmcode wird in der Regel von Speichermedien 5027 auf einen Hochgeschwindigkeits-Arbeitsspeicher 5025 umgelagert, wo er für eine Verarbeitung durch den Prozessor 5026 verfügbar ist. Die Techniken und Verfahren zum Verkörpern von Software-Programmcode im Arbeitsspeicher, auf physischen Medien und/oder zum Verteilen von Software-Code über Netzwerke sind bekannt und werden hierin nicht weiter erörtert. Programmcode, der auf einem konkreten Medium erstellt und gespeichert wird (darunter elektronische Arbeitsspeichermodule (RAM), Flash-Arbeitsspeicher, CDs, DVDs, Magnetband und dergleichen, aber nicht darauf beschränkt), wird oft als „Computerprogrammprodukt” bezeichnet. Das Computerprogrammprodukt-Medium ist normalerweise durch eine Verarbeitungsschaltung für eine Ausführung durch die Verarbeitungsschaltung lesbar, die sich vorzugsweise in einem Computersystem befindet.
  • Der Zwischenspeicher, der am einfachsten für den Prozessor verfügbar ist (in der Regel schneller und kleiner als andere Zwischenspeicher des Prozessors) ist der niedrigste (L1 oder Ebene eins) Zwischenspeicher, und der Hauptspeicher (Hauptarbeitsspeicher) ist der Zwischenspeicher der höchsten Ebene (L3, wenn 3 Ebenen vorhanden sind). Der Zwischenspeicher der niedrigsten Ebene ist oft unterteilt in einen Anweisungs-Zwischenspeicher (I-Cache), der auszuführende Maschinenanweisungen enthält, und einen Daten-Zwischenspeicher (D-Cache), der Datenoperanden enthält.
  • Unter Bezugnahme auf 22 wird eine beispielhafte Prozessor-Ausführungsform für den Prozessor 5026 veranschaulicht. Normalerweise werden eine oder mehrere Ebenen eines Zwischenspeichers 5053 verwendet, um Arbeitsspeicherblöcke zum Verbessern der Prozessorleistung zu puffern. Der Zwischenspeicher 5053 ist ein Hochgeschwindigkeitspuffer, der Zwischenspeicherzeilen mit Arbeitsspeicherdaten enthält, die wahrscheinlich verwendet werden. Typische Zwischenspeicherzeilen sind 64, 128 oder 256 Bytes von Arbeitsspeicherdaten. Separate Zwischenspeicher werden öfter zum Zwischenspeichern von Anweisungen als zum Zwischenspeichern von Daten verwendet. Eine Zwischenspeicher-Kohärenz (Synchronisierung von Kopien von Zeilen in Arbeitsspeicher und den Zwischenspeichern) wird oft durch verschiedene, im Fachgebiet bekannte „Snoop”-Algorithmen bereitgestellt. Der Haupt-Arbeitsspeicher 5025 eines Prozessorsystems wird oft als Zwischenspeicher bezeichnet. in einem Prozessorsystem mit 4 Ebenen des Zwischenspeichers 5053 wird der Hauptspeicher 5025 manchmal als der Ebene-5-(L5)Zwischenspeicher bezeichnet, da er normalerweise schneller ist und nur einen Teil des nicht flüchtigen Speichers (DASD, Band usw.) enthält, der für ein Computersystem verfügbar ist. Der Hauptspeicher 5025 fungiert als ”Zwischenspeicher” für Seiten mit Daten, die durch das Betriebssystem in den und aus dem Hauptspeicher 5025 umgelagert werden.
  • Ein Programmzähler (Anweisungszähler) 5061 verfolgt die Adresse der aktuellen Anweisung, die ausgeführt werden soll. Ein Programmzähler in einem z/Architecture-Prozessor beträgt 64 Bit und kann auf 31 oder 24 Bit abgeschnitten werden, um vorherige Adressierungsgrenzen zu unterstützen. Ein Programmzähler ist normalerweise in einem PSW (Programmstatuswort) eines Computers verkörpert, sodass es während eines Kontextwechsels bestehen bleibt. Daher kann ein in Bearbeitung befindliches Programm, das einen Programmzählerwert hat, zum Beispiel durch das Betriebssystem unterbrochen werden (Kontextwechsel von der Programmumgebung in die Betriebssystemumgebung). Das PSW des Programms verwaltet den Programmzählerwert, während das Programm nicht aktiv ist, und der Programmzähler (in dem PSW) des Betriebssystems wird verwendet, während das Betriebssystem ausgeführt wird. Normalerweise wird der Programmzähler um einen Betrag erhöht, der gleich der Anzahl von Bytes in der aktuellen Anweisung ist. RISC-(Reduced Instruction Set Computing – Datenverarbeitung mit eingeschränktem Befehlsvorrat)Anweisungen haben normalerweise eine feste Länge, wogegen CISC-(Complex Instruction Set Computing – Datenverarbeitung mit uneingeschränktem Befehlsvorrat)Anweisungen normalerweise eine variable Länge haben. Anweisungen der IBM z/Architecture sind CISC-Anweisungen mit einer Länge von 2, 4 oder 6 Byte. Der Programmzähler 5061 wird entweder durch eine Kontextwechseloperation oder zum Beispiel eine betroffene Verzweigungsoperation einer Verzweigungsanweisung modifiziert. In einer Kontextwechseloperation wird der aktuelle Programmzählerwert in dem Programmstatuswort zusammen mit anderen Zustandsinformationen über das ausgeführte Programm gespeichert (wie beispielsweise Bedingungscodes), und ein neuer Programmzählerwert wird geladen, der auf eine Anweisung eines neuen Programmmoduls zeigt, die ausgeführt werden soll. Eine betroffene Verzweigungsoperation wird ausgeführt, um dem Programm zu gestatten, Entscheidungen zu treffen oder in dem Programm eine Schleife zu bilden, indem das Ergebnis der Verzweigungsanweisung in den Programmzähler 5061 geladen wird.
  • Normalerweise wird eine Anweisungsabrufeinheit 5055 verwendet, um Anweisungen für den Prozessor 5026 abzurufen. Die Abrufeinheit ruft entweder „nächste folgende Anweisungen”, Zielanweisungen von betroffenen Verzweigungsanweisungen oder erste Anweisungen eines Programms nach einem Kontextwechsel ab. Moderne Anweisungsabrufeinheiten verwenden Vorablesezugriffs-Techniken, um Anweisungen auf der Grundlage der Wahrscheinlichkeit, dass die vorab gelesenen Anweisungen verwendet werden könnten, spekulativ vorab zu lesen. Zum Beispiel kann eine Abrufeinheit 16 Bytes einer Anweisung abrufen, die die nächste folgende Anweisung und zusätzliche Bytes von weiteren folgenden Anweisungen enthalten.
  • Die abgerufenen Anweisungen werden dann durch den Prozessor 5026 ausgeführt. In einer Ausführungsform wird die abgerufene Anweisung bzw. werden die abgerufenen Anweisungen an eine Weiterleitungseinheit 5056 der Abrufeinheit übergeben. Die Weiterleitungseinheit entschlüsselt die Anweisung(en) und leitet Informationen über die verschlüsselte(n) Anweisung(en) an entsprechende Einheiten 5057, 5058, 5060 weiter. Eine Ausführungseinheit 5057 empfängt normalerweise Informationen über entschlüsselte arithmetische Anweisungen von der Anweisungsabrufeinheit 5055 und führt arithmetische Operationen an Operanden gemäß dem Operationscode der Anweisung aus. Operanden werden für die Ausführungseinheit 5057 vorzugsweise entweder vom Arbeitsspeicher 5025, von architekturgebundenen Registern 5059 oder von einem Direktfeld der Anweisung bereitgestellt, die ausgeführt wird. Wenn Ergebnisse der Ausführung gespeichert werden, werden sie entweder im Arbeitsspeicher 5025, in den Registern 5059 oder in einer anderen Maschinen-Hardware gespeichert (wie beispielsweise Steuerregistern, PSW-Registern und dergleichen).
  • Virtuelle Adressen werden unter Verwendung einer dynamischen Adressumsetzung 5062 und optional unter Verwendung der Zugriffsregisterumsetzung 5063 in reale Adressen umgewandelt.
  • Ein Prozessor 5026 hat normalerweise eine oder mehrere Einheiten 5057, 5058, 5060 zum Ausführen der Funktion der Anweisung. Unter Bezugnahme auf 23A kann eine Ausführungseinheit 5057 mit architekturgebundenen Allgemeinregistern 5059, einer Entschlüsselungs-/Weiterleitungseinheit 5056, eine Lade-/Speichereinheit 5060 und weiteren Prozessoreinheiten 5065 mittels einer Schnittstellenlogik 5071 in Datenaustausch stehen 5071. Eine Ausführungseinheit 5057 kann mehrere Registerschaltungen 5067, 5068, 5059 verwenden, um Informationen zu verwalten, auf deren Grundlage die arithmetische Logikeinheit (ALU) 5066 ausgeführt wird. Die ALU führt arithmetische Operationen wie Addieren, Subtrahieren, Multiplizieren und Dividieren sowie logische Funktionen wie beispielsweise UND, ODER und exklusives ODER (XOR), Drehen und Verschieben aus. Vorzugsweise unterstützt die ALU spezialisierte Operationen, die konstruktionsabhängig sind. Weitere Schaltungen können weitere architekturgebundene Einrichtungen 5072 bereitstellen, darunter zum Beispiel Bedingungscodes und Wiederherstellungs-Unterstützungslogik. Normalerweise wird das Ergebnis einer ALU-Operation in einer Ausgaberegisterschaltung 5070 verwaltet, die das Ergebnis zu einer Vielzahl von weiteren Verarbeitungsfunktionen weiterleiten kann. Es gibt viele Anordnungen von Prozessoreinheiten, die vorliegende Beschreibung ist nur dazu gedacht, für ein repräsentatives Verständnis einer Ausführungsform zu sorgen.
  • Eine Anweisung ADD würde zum Beispiel in einer Ausführungseinheit 5057 mit einer arithmetischen und logischen Funktionalität ausgeführt, wogegen eine Gleitkomma-Anweisung zum Beispiel in einer Gleitkomma-Ausführung mit einer speziellen Gleitkomma-Funktion ausgeführt würde. Vorzugsweise arbeitet eine Ausführungseinheit an Operanden, die von einer Anweisung identifiziert werden, indem eine durch einen Operationscode definierte Funktion an den Operanden ausgeführt wird. Zum Beispiel kann eine Anweisung ADD durch eine Ausführungseinheit 5057 an Operanden ausgeführt werden, die in zwei Registern 5059 zu finden sind, die durch Registerfelder der Anweisung identifiziert werden.
  • Die Ausführungseinheit 5057 führt die arithmetische Addition an zwei Operanden aus und speichert das Ergebnis in einem dritten Operanden, wobei der dritte Operand ein drittes Register oder eines der beiden Quellenregister sein kann. Die Ausführungseinheit verwendet vorzugsweise eine arithmetische Logikeinheit (ALU) 5066, die eine Vielfalt von logischen Funktionen ausführen kann wie beispielsweise Verschieben, Drehen, UND, ODER und XOR sowie eine Vielfalt von algebraischen Funktionen, darunter Addieren, Subtrahieren, Multiplizieren, Dividieren. Einige ALUs 5066 sind für skalare und einige für Gleitkomma-Operationen ausgelegt. Abhängig von der Architektur können Daten Big-Endian-Daten sein (bei denen das niedrigstwertige Byte an der höchsten Byte-Adresse steht) oder Little-Endian-Daten (bei denen das niedrigstwertige Byte an der niedrigsten Byte-Adresse steht). Die IBM z/Architecture ist Big Endian. Signierte Felder können architekturabhängig Vorzeichen und Größe, Einerkomplement oder Zweierkomplement sein. Eine Zweierkomplementzahl ist dadurch von Vorteil, dass die ALU keine Subtraktionsfunktion entwickeln muss, da entweder ein negativer Wert oder ein positiver Wert im Zweierkomplement nur eine Addition innerhalb der ALU erfordert. Zahlen werden im Allgemeinen in Kurzform beschrieben, wobei ein 12-Bit-Feld eine Adresse eines 4.096-Byte-Blocks definiert und im Allgemeinen als ein 4-Kbyte-(Kilobyte) Block beschrieben wird.
  • Unter Bezugnahme auf 23B werden Verzweigungsanweisungs-Informationen zum Ausführen einer Verzweigungsanweisung normalerweise an eine Verzweigungseinheit 5058 gesendet, die oft einen Verzweigungsvorhersage-Algorithmus verwendet, wie beispielsweise eine Verzweigungsverlaufstabelle 5082, um das Resultat der Verzweigung vorherzusagen, bevor weitere bedingte Operationen abgeschlossen sind. Das Ziel der aktuellen Verzweigungsanweisung wird abgerufen und spekulativ ausgeführt, bevor die bedingten Operationen abgeschlossen sind. Wenn die bedingten Operationen abgeschlossen sind, werden die spekulativ ausgeführten Verzweigungsanweisungen auf der Grundlage der Bedingungen der bedingten Operation und des vermuteten Resultats entweder abgeschlossen oder verworfen. Eine typische Verzweigungsanweisung kann Bedingungscodes prüfen und auf eine Zieladresse verzweigen, wenn die Bedingungscodes der Verzweigungsanforderung der Verzweigungsanweisung entsprechen, eine Zieladresse kann auf der Grundlage von mehreren Zahlen berechnet werden, darunter solchen, die zum Beispiel in Registerfeldern oder einem unmittelbaren Feld der Anweisung zu finden sind. Die Verzweigungseinheit 5058 kann eine ALU 5074 verwenden, die eine Vielzahl von Eingaberegisterschaltungen 5075, 5076, 5077 und eine Ausgaberegisterschaltung 5080 hat. Die Verzweigungseinheit 5085 kann zum Beispiel mit Allgemeinregistern 5059, der Entschlüsselungs-/Weiterleitungseinheit 5056 oder anderen Schaltungen 5073 Daten austauschen 5081.
  • Die Ausführung einer Gruppe von Anweisungen kann aus einer Vielfalt von Gründen abgebrochen werden, darunter zum Beispiel ein Kontextwechsel, der durch ein Betriebssystem eingeleitet wird, eine Programmausnahme oder ein Fehler, die einen Kontextwechsel verursachen, ein E/A-Unterbrechungssignal, das einen Kontextwechsel verursacht oder eine Multithreading-Aktivität einer Vielzahl von Programmen (in einer Multithread-Umgebung). Vorzugsweise speichert eine Kontextwechselaktion Zustandsinformationen über ein aktuell ausführendes Programm und lädt dann Zustandsinformationen über ein weiteres Programm, das aufgerufen wird. Zustandsinformationen können zum Beispiel in Hardware-Registern oder im Arbeitsspeicher gespeichert werden. Statusinformationen weisen vorzugsweise einen Programmzählerwert auf, der auf eine nächste Anweisung, die ausgeführt werden soll, Bedingungscodes, Umsetzungsinformationen und auf architekturgebundenen Registerinhalt zeigt. Eine Kontextwechselaktivität kann durch Hardware-Schaltungen, Anwendungsprogramme, Betriebssystemprogramme oder Firmware-Code (Mikrocode, Pikocode oder lizenzierten internen Code (LIC)) alleine oder in Kombination ausgeführt werden.
  • Ein Prozessor greift gemäß anweisungsdefinierten Verfahren auf Operanden zu. Die Anweisung kann unter Verwendung des Werts eines Abschnitts der Anweisung einen unmittelbaren Operanden bereitstellen, kann ein oder mehrere Registerfelder bereitstellen, die explizit entweder auf Mehrzweckregister oder Sonderzweckregister (zum Beispiel Gleitkommaregister) zeigen. Die Anweisung kann implizite Register verwenden, die durch ein Operationscode-Feld als Operanden identifiziert werden. Die Anweisung kann Arbeitsspeicher-Speicherorte für Operanden verwenden. Ein Arbeitsspeicher-Speicherort eines Operanden kann durch ein Register, ein Direktfeld oder eine Kombination aus Registern und einem Direktfeld bereitgestellt werden, wie als Beispiel durch die lange Verschiebeeinrichtung der z/Architecture gezeigt, wobei die Anweisung zum Beispiel ein Basisregister, ein Indexregister und ein Direktfeld (Verschiebefeld) definiert, die zusammenaddiert werden, um die Adresse des Operanden im Arbeitsspeicher bereitzustellen. Ein Speicherort impliziert hierin normalerweise einen Speicherort im Hauptarbeitsspeicher (Hauptspeicher), es sei denn, es wird anderes angegeben.
  • Unter Bezugnahme auf 23C greift ein Prozessor unter Verwendung einer Lade-/Speichereinheit 5060 auf einen Speicher zu. Die Lade-/Speichereinheit 5060 kann eine Ladeoperation ausführen, indem sie die Adresse des Zieloperanden im Arbeitsspeicher 5053 erhält und den Operanden in ein Register 5059 oder einen anderen Speicherort des Arbeitsspeichers 5053 lädt, oder sie kann eine Speicheroperation ausführen, indem sie die Adresse des Zieloperanden im Arbeitsspeicher 5053 erhält und Daten, die von einem Register 5059 oder einem Speicherort eines anderen Arbeitsspeichers 5053 erhalten wurden, in dem Zieloperanden-Speicherort im Arbeitsspeicher 5053 speichert. Die Lade-/Speichereinheit 5060 kann spekulativ sein und auf Arbeitsspeicher in einer Folge zugreifen, die in Bezug auf die Anweisungsfolge nicht der Reihenfolge entspricht, doch muss die Lade-/Speichereinheit 5060 die äußere Erscheinung für Programme aufrechterhalten, dass die Anweisungen der Reihe nach ausgeführt wurden. Eine Lade-/Speichereinheit 5060 kann mit Allgemeinregistern 5059, einer Entschlüsselungs-/Weiterleitungseinheit 5056, einer Zwischenspeicher/Arbeitsspeicher-Schnittstelle 5053 und weiteren Elementen 5083 Daten austauschen 5084 und weist verschiedene Registerschaltungen 5086, 5087, 5088 und 5089, ALUs 5085 und eine Steuerlogik 5090 auf, um Speicheradressen zu berechnen und eine Pipeline-Abfolge bereitzustellen, um die Operationen in Reihenfolge zu halten. Einige Operationen können sich außerhalb der Reihenfolge befinden, aber die Lade-/Speichereinheit stellt eine Funktionalität bereit, die nicht in der Reihenfolge ausgeführte Operationen für das Programm so aussehen lässt, als wären sie der Reihenfolge nach ausgeführt worden, wie im Fachgebiet bekannt ist.
  • Vorzugsweise werden Adressen, die ein Anwendungsprogramm „sieht”, oft als virtuelle Adressen bezeichnet. Virtuelle Adressen werden manchmal als „logische Adressen” und „effektive Adressen” bezeichnet. Diese virtuellen Adressen sind insofern virtuell, als sie auf einen physischen Arbeitsspeicher-Speicherplatz umadressiert werden durch eine von einer Vielfalt von dynamischen Adressumsetzungs-(DAT)Technologien, unter anderem durch einfaches Voranstellen eines Offset-Werts vor eine virtuelle Adresse, ein Umsetzen der virtuellen Adresse über eine oder mehrere Umsetzungstabellen, wobei die Umsetzungstabellen vorzugsweise mindestens eine Segmenttabelle und eine Seitentabelle alleine oder in Kombination aufweisen, wobei die Segmenttabelle einen Eintrag hat, der auf die Seitentabelle zeigt, sie sind aber nicht darauf beschränkt. In der z/Architecture wird eine Umsetzungsstruktur bereitgestellt, die eine Bereichsersttabelle, eine Bereichszweittabelle, eine Bereichsdritttabelle, eine Segmenttabelle und eine optionale Seitentabelle enthält. Die Leistung der Adressumsetzung wird oft durch die Verwendung eines Adressumsetzpufferspeichers (TLB) verbessert, der Einträge aufweist, die eine virtuelle Adresse einem zugehörigen physischen Arbeitsspeicher-Speicherplatz zuordnen. Die Einträge werden erstellt, wenn die DAT eine virtuelle Adresse unter Verwendung der Umsetzungstabellen umsetzt. Eine anschließende Verwendung der virtuellen Adresse kann dann den Eintrag des schnellen TLB verwenden statt der langsamen sequenziellen Zugriffe einer Umsetzungstabelle. TLB-Inhalt kann durch eine Vielfalt von Ersetzungsalgorithmen verwaltet werden, darunter LRU (Least Recently Used – am längsten nicht verwendet).
  • In dem Fall, in dem der Prozessor ein Prozessor eines Mehrfachprozessorsystems ist, ist jeder Prozessor dafür zuständig, gemeinsam genutzte Ressourcen wie E/A, Zwischenspeicher, TLBs und Arbeitsspeicher aus Kohärenzgründen ineinandergreifend zu halten. Normalerweise werden „Snoop”-Technologien zum Verwalten einer Zwischenspeicherkohärenz verwendet. In einer Snoop-Umgebung kann jede Zwischenspeicherzeile so markiert werden, als hätte sie irgendeinen eines gemeinsam genutzten Status, eines exklusiven Status, eines geänderten Status, eines ungültigen Status und dergleichen, um eine gemeinsam Nutzung zu erleichtern.
  • Die E/A-Einheiten 5054 (22) stellen dem Prozessor ein Mittel zum Verbinden mit peripheren Einheiten bereit, darunter zum Beispiel Band, Diskette, Drucker, Anzeigen und Netzwerke. E/A-Einheiten werden für das Computerprogramm oft als Software-Treiber dargestellt. In Mainframes wie dem System z von IBM® sind Kanaladapter und Adapter für offene Systeme E/A-Einheiten des Mainframe, die die Datenübertragung zwischen dem Betriebssystem und den peripheren Einheiten bereitstellen.
  • Ferner können weitere Typen von Datenverarbeitungsumgebungen von einem oder mehreren Aspekten profitieren. Als Beispiel kann eine Umgebung einen Emulator (z. B. Software oder andere Emulationsmechanismen) enthalten, durch den eine bestimmte Architektur (beispielsweise einschließlich Anweisungsausführung, in einer Architektur angeordnete Funktionen wie Adressübersetzung und in einer Architektur angeordnete Register) oder eine Untergruppe davon emuliert wird (z. B. auf einem nativen Computersystem mit einem Prozessor und Speicher). In einer derartigen Umgebung können eine oder mehrere Emulationsfunktionen des Emulators eine oder mehrere Ausführungsformen implementieren, auch wenn ein Computer, der den Emulator ausführt, eine andere Architektur haben kann als die emulierten Funktionen. Zum Beispiel wird im Emulationsmodus die spezifische emulierte Anweisung oder Operation entschlüsselt, und eine entsprechende Emulationsfunktion wird erstellt, um die einzelne Anweisung oder Operation umzusetzen.
  • In einer Emulationsumgebung enthält ein Host-Computer zum Beispiel einen Speicher zum Speichern von Anweisungen und Daten; eine Anweisungsabrufeinheit zum Abrufen von Anweisungen aus dem Speicher und zum optionalen Bereitstellen einer lokalen Pufferung für die abgerufene Anweisung; eine Anweisungsentschlüsselungseinheit zum Empfangen der abgerufenen Anweisungen und zum Ermitteln des Typs von Anweisungen, die abgerufen wurden; und eine Anweisungsausführungseinheit zum Ausführen der Anweisungen. Die Ausführung kann ein Laden von Daten aus dem Speicher in ein Register enthalten; ein Zurückspeichern der Daten aus dem Register in den Speicher; oder ein Ausführen eines arithmetischen oder logischen Operationstyps, wie durch die Entschlüsselungseinheit ermittelt. In einem Beispiel ist jede Einheit in Software umgesetzt. Zum Beispiel werden die Operationen, die durch die Einheiten ausgeführt werden als eine oder mehrere Subroutinen in der Emulator-Software umgesetzt.
  • Insbesondere werden in einem Mainframe architekturgebundene Maschinenanweisungen von Programmierern, heutzutage für gewöhnlich „C”-Programmierern, oft mittels einer Compiler-Anwendung verwendet. Diese in dem Speichermedium gespeicherten Anweisungen können nativ in einem z/Architecture IBM Server oder alternativ in Maschinen ausgeführt werden, die weitere Architekturen ausführen. Sie können in den vorhandenen und in zukünftigen IBM Mainframe-Servern und auf weiteren Maschinen von IBM® emuliert werden (z. B. IBM Power SystemsTM Server und IBM System x® Server). Sie können in Maschinen ausgeführt werden, die unter Linux unter Verwendung von Hardware, die von IBM®, Intel®, AMD und anderen hergestellt wird, auf einer großen Vielfalt von Maschinen ausgeführt werden. Abgesehen von einer Ausführung auf dieser Hardware unter einer z/Architecture kann Linux® ebenso wie Maschinen verwendet werden, die eine Emulation durch Hercules, UMX oder FSI (Fundamental Software, Inc) verwenden, wobei die Ausführung im Allgemeinen in einem Emulationsmodus erfolgt. Im Emulationsmodus wird Emulations-Software durch einen nativen Prozessor ausgeführt, um die Architektur eines emulierten Prozessors zu emulieren. Intel ist eine Marke oder eingetragene Marke der Intel Corporation oder deren Tochtergesellschaften in den USA und in anderen Ländern. Linux ist eine eingetragene Marke von Linus Torvalds in den Vereinigten Staaten, anderen Ländern oder beidem.
  • Der native Prozessor führt normalerweise Emulations-Software aus, die entweder Firmware oder ein natives Betriebssystem aufweist, um eine Emulation des emulierten Prozessors auszuführen. Die Emulations-Software ist zuständig für ein Abrufen und Ausführen von Anweisungen der emulierten Prozessorarchitektur. Die Emulations-Software verwaltet einen emulierten Programmzähler, um Anweisungsgrenzen zu verfolgen. Die Emulations-Software kann gleichzeitig eine oder mehrere emulierte Maschinenanweisungen abrufen und die eine oder die mehreren emulierten Maschinenanweisungen in eine entsprechende Gruppe von nativen Maschinenanweisungen zur Ausführung durch den nativen Prozessor umwandeln. Diese umgewandelten Anweisungen können zwischengespeichert werden, sodass eine schnellere Umwandlung erreicht werden kann. Dennoch muss die Emulations-Software die Architekturregeln der emulierten Prozessorarchitektur beibehalten, um sicherzustellen, dass für den emulierten Prozessor geschriebene Betriebssysteme und Anwendungen richtig funktionieren. Ferner muss die Emulations-Software Ressourcen bereitstellen, die durch die emulierte Prozessorarchitektur identifiziert werden, darunter Steuerregister, Allgemeinregister, Gleitkommaregister, dynamische Adressumsetzungsfunktion einschließlich zum Beispiel Segmenttabellen und Seitentabellen, Unterbrechungsmechanismen, Kontextwechselmechanismen, Tageszeit-(TOD)Zeitgeber und architekturgebundene Schnittstellen zu E/A-Subsystemen, sodass ein Betriebssystem oder ein Anwendungsprogramm, die zur Ausführung auf dem emulierten Prozessor entwickelt wurden, auf dem nativen Prozessor mit der Emulations-Software laufen können, sie sind jedoch nicht darauf beschränkt.
  • Eine spezifische emulierte Anweisung wird entschlüsselt, und eine Subroutine wird aufgerufen, um die Funktion der bestimmten Anweisung auszuführen. Eine Emulations-Softwarefunktion, die eine Funktion eines emulierten Prozessors emuliert, wird zum Beispiel in einer „C”-Subroutine oder einem Treiber oder irgendeinem anderen Verfahren zum Bereitstellen eines Treibers für die spezifische Hardware implementiert, wie für einen Fachmann umsetzbar sein wird, nachdem er die Beschreibung der bevorzugten Ausführungsform verstanden hat. Verschiedene Software- und Hardware-Emulationspatente, darunter, aber nicht darauf beschränkt, US-Patentschrift Nr. 5 551 013 mit dem Titel „Multiprocessor for Hardware Emulation” von Beausoleil et al.; und US-Patentschrift Nr. 6 009 261 mit dem Titel „Preprocessing of Stored Target Routines for Emulating Incompatible Instructions an a Target Processor” von Scalzi et al; und US-Patentschrift Nr. 5 574 873 mit dem Titel „Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions” von Davidian et al; und US-Patentschrift Nr. 6 308 255 mit dem Titel „Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System” von Gorishek et al; und US Letters Patentschrift Nr. 6 463 582 mit dem Titel ”Dynamit Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method” von Lethin et al; und US-Patentschrift Nr. 5 790 825 mit dem Titel „Method for Emulating Guest Instructions an a Host Computer Through Dynamic Recompilation of Host Instructions” von Eric Traut; und viele weitere veranschaulichen eine Vielfalt von bekannten Möglichkeiten, eine Emulation eines für eine andere Maschine architekturgebundenen Anweisungsformats für eine Zielmaschine zu erreichen, die für einen Fachmann verfügbar ist.
  • In 24 wird ein Beispiel eines emulierten Host-Computersystems 5092 bereitgestellt, das ein Host-Computersystem 5000' einer Host-Architektur emuliert. In dem emulierten Host-Computersystem 5092 ist der Host-Prozessor (CPU) 5091 ein emulierter Host-Prozessor (oder virtueller Host-Prozessor) und weist einen Emulationsprozessor 5093 auf, der eine andere native Anweisungsgruppenarchitektur hat als diejenige des Prozessors 5091 des Host-Computers 5000'. Das emulierte Host-Computersystem 5092 hat einen Arbeitsspeicher 5094, auf den vom Emulationsprozessor 5093 zugegriffen werden kann. In der Beispielausführungsform ist der Arbeitsspeicher 5094 in einen Abschnitt eines Host-Computerarbeitsspeichers 5096 und einen Abschnitt von Emulationsroutinen 5097 partitioniert. Der Host-Computerarbeitsspeicher 5096 ist für Programme des emulierten Host-Computers 5092 gemäß der Host-Computerarchitektur verfügbar. Der Emulationsprozessor 5093 führt native Anweisungen einer architekturgebundenen Anweisungsgruppe einer anderen Architektur als der des emulierten Prozessors 5091 aus, wobei die nativen Anweisungen vom Arbeitsspeicher 5097 der Emulationsroutinen erhalten werden, und kann auf eine Host-Anweisung zur Ausführung von einem Programm im Host-Computerarbeitsspeicher 5096 aus zugreifen, indem eine oder mehrere Anweisungen verwendet werden, die in einer Folge- und Zugriffs-/Entschlüsselungsroutine erhalten werden, die die Host-Anweisung(en) entschlüsseln kann (können), auf die zugegriffen wurde, um eine native Anweisungs-Ausführungsroutine zum Emulieren der Funktion der Host-Anweisung zu bestimmen, auf die zugegriffen wurde. Weitere Einrichtungen, die für die Architektur des Host-Computersystems 5000' definiert werden, können durch architekturgebundene Einrichtungsroutinen emuliert werden, darunter zum Beispiel solche Einrichtungen wie Allgemeinregister, Steuerregister, dynamische Adressumsetzung und E/A-Subsystem-Unterstützung und Prozessor-Zwischenspeicher. Die Emulationsroutinen können auch Funktionen nutzen, die in dem Emulationsprozessor 5093 verfügbar sind (beispielsweise Allgemeinregster und dynamische Umsetzung von virtuellen Adressen), um die Leistung der Emulationsroutinen zu verbessern. Spezielle Hardware und Auslagerungs-Engines können ebenfalls bereitgestellt werden, um den Prozessor 5093 beim Emulieren der Funktion des Host-Computers 5000' zu unterstützen.
  • Die hierin verwendete Terminologie dient nur zum Zweck der Beschreibung von bestimmten Ausführungsformen und soll keinesfalls einschränken. Wie hierin verwendet sollen die Singularformen „ein”, „eine” und „der/die/das” auch die Pluralformen mit einschließen, es sei denn, der Kontext gibt eindeutig anderes vor. Es versteht sich des Weiteren, dass die Begriffe „weist auf” und/oder „aufweisend” bei Verwendung in dieser Patentschrift das Vorhandensein ausgewiesener Merkmale, Ganzzahlen, Schritte, Vorgänge, Elemente und/oder Komponenten angeben, das Vorhandensein oder die Hinzufügung von einem oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Vorgängen, Elementen, Komponenten und/oder Gruppen davon aber nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Handlungen und Entsprechungen aller Mittel oder Schritt-plus-Funktion-Elemente, in den nachstehenden Ansprüchen sollen, sofern vorhanden, alle Strukturen, Materialien oder Handlungen zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen enthalten, wie speziell beansprucht. Die Beschreibung von einer oder mehreren Ausführungsformen wurde zum Zweck der Veranschaulichung und Beschreibung erstellt, sie soll aber keineswegs erschöpfend oder auf die offenbarte Form eingeschränkt sein. Viele Modifizierungen und Variationen werden für den Fachmann offenkundig sein. Die Ausführungsform wurde ausgewählt und beschrieben, um verschiedene Aspekte und die praktische Anwendung bestmöglich zu erklären und andere Fachleute in die Lage zu versetzen, verschiedene Ausführungsformen mit verschiedenen Modifizierungen zu verstehen, die für die vorgesehene bestimmte Verwendung geeignet sind.

Claims (18)

  1. Verfahren für ein Ausführen einer Maschinenanweisung in einer Datenverarbeitungsumgebung, wobei das Verfahren aufweist: ein Erlangen einer Maschinenanweisung durch einen Prozessor für eine Operation, wobei die Maschinenanweisung zur Computerausführung gemäß einer Computerarchitektur definiert wird, wobei die Maschinenanweisung aufweist: einen Operationscode zum Angeben einer Transaktionsbeginn-Operation; und ein Steuerelement-Feld zum Angeben von einem oder mehreren Steuerelementen, die bei einer transaktionsgebundenen Ausführung verwendet werden sollen; und ein Ausführen der Maschinenanweisung durch den Prozessor, wobei die Ausführung aufweist: ein Bestimmen aus einem Feld der Anweisung, ob eine Transaktion, die durch die Transaktionsbeginn-Anweisung eingeleitet werden soll, eine eingeschränkte Transaktion oder eine nicht eingeschränkte Transaktion ist; ein Einleiten einer eingeschränkten Transaktion auf der Grundlage, dass das Feld ein Wert ist, wobei der eingeschränkten Transaktion eine oder mehrere Einschränkungen zugehörig sind, und ein Setzen eines Bedingungscodes auf einen Wert, der eine erfolgreiche Ausführung der Maschinenanweisung angibt; und auf der Grundlage, dass das Feld ein anderer Wert ist, ein Angeben eines Speicherorts zum Speichern von Diagnoseinformationen in einer abgebrochenen nicht eingeschränkten Transaktion, ein Einleiten der nicht eingeschränkten Transaktion und ein Setzen eines Bedingungscodes auf den Wert, der eine erfolgreiche Ausführung der Maschinenanweisung angibt.
  2. Verfahren nach Anspruch 1, wobei das Feld den Operationscode aufweist.
  3. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Steuerelementfeld eines oder mehreres des Folgenden aufweist: eine Allgemeinregister-Speichermaske zum Angeben von einem oder mehreren Paaren von Registern, die zu Beginn der Transaktion gespeichert und bei einem Abbruch zurückgespeichert werden sollen; und ein Feld für Zugriffsregistermodifizierung zulassen, um zu kontrollieren, ob die Transaktion berechtigt ist, ein Zugriffsregister zu modifizieren.
  4. Verfahren nach Anspruch 3, wobei das Feld eine nicht eingeschränkte Transaktion angibt, und wobei das Steuerelementfeld ferner aufweist: ein Feld für Gleitkomma-Operation zulassen, um zu kontrollieren, ob die Transaktion berechtigt ist, angegebene Gleitkomma-Anweisungen auszuführen; und ein Steuerelement-Feld für Programmunterbrechungsfiltern, um zu kontrollieren, ob bestimmte Klassen von Programmunterbrechungsbedingungen zu einer Unterbrechung führen.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Feld eine nicht eingeschränkte Transaktion angibt, und wobei die Maschinenanweisung ferner ein Basisfeld aufweist, das beim Ausführen der Transaktion verwendet werden soll, und wobei auf der Grundlage des Basisfelds, das einen Wert aufweist, Inhalte eines Registers, das durch das Basisfeld angegeben wird, mit Inhalten eines Verschiebungsfelds kombiniert werden, um eine erste Operandenadresse zu erstellen, wobei die erste Operandenadresse einen Speicherort eines Transaktionsdiagnoseblocks angibt, der zum Speichern der Diagnoseinformationen bei einem Abbruch verwendbar ist
  6. Verfahren nach einem der vorhergehenden Ansprüche, wobei die eine oder die mehreren Einschränkungen aufweisen: eine begrenzte Anzahl von Anweisungen in der Transaktion; Anweisungen in der Transaktion müssen innerhalb eines vordefinierten Arbeitsspeicherbereichs liegen; bestimmte vorab angegebene Anweisungen können in die Transaktion aufgenommen werden, andere werden eingeschränkt; eine Zugriffsbegrenzung nach Speicheroperanden der Transaktion; die Transaktion greift nicht auf Speicheroperanden in Arbeitsspeicherblöcken zu, die den vordefinierten Arbeitsspeicherbereich enthalten; die Transaktion greift nicht unter Verwendung verschiedener logischer Adressen, die derselben absoluten Adresse zugeordnet sind, auf Anweisungen oder Speicheroperanden zu; und Operandenverweise durch die Transaktionen müssen innerhalb einer angegebenen Größe liegen.
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Verfahren ferner aufweist: ein Ausführen einer weiteren Maschinenanweisung zum Beenden der Transaktion, die durch die Transaktionsbeginn-Anweisung eingeleitet wurde, wobei die weitere Maschinenanweisung eine Transaktionsende-Anweisung aufweist, wobei die Transaktionsende-Anweisung einen Operationscode zum Angeben der Transaktionsende-Anweisung aufweist.
  8. Verfahren nach Anspruch 7, wobei das Ausführen der weiteren Maschinenanweisung aufweist: ein schrittweises Verringern einer transaktionsgebundenen Verschachtelungstiefe; ein Bestimmen, ob die schrittweise verringerte transaktionsgebundene Verschachtelungstiefe null ist; und ein Festschreiben von Speicherzugriffen, die durch die Transaktion vorgenommen wurden, auf der Grundlage, dass die schrittweise verringerte transaktionsgebundene Verschachtelungstiefe null ist.
  9. Computersystem für ein Ausführen einer Maschinenanweisung, der Maschinenanweisung zum Einleiten einer Transaktion, in einer Datenverarbeitungsumgebung, wobei Speicherungen durch andere Prozessoren in Speicherorten der Transaktion verursachen, dass die Transaktion abgebrochen wird, und wobei Speicherungen durch Anweisungen in der Transaktion effektiv verzögert werden, bis eine ausgewählte Transaktion beendet wird, wobei das Computersystem aufweist: einen Arbeitsspeicher; und einen mit dem Arbeitsspeicher in Datenübertragung stehenden Prozessor, wobei das Computersystem so konfiguriert ist, dass es ein Verfahren ausführt, wobei das Verfahren aufweist: ein Erlangen einer Maschinenanweisung zur Ausführung durch einen Prozessor, wobei die Maschinenanweisung zur Computerausführung gemäß einer Computerarchitektur definiert wird, wobei die Maschinenanweisung aufweist: einen Operationscode zum Angeben einer Transaktionsbeginn-Operation; und ein Steuerelement-Feld zum Angeben von einem oder mehreren Steuerelementen, die bei einer transaktionsgebundenen Ausführung verwendet werden sollen; und ein Ausführen der Maschinenanweisung durch den Prozessor, wobei die Ausführung aufweist: ein Bestimmen aus einem Feld der Anweisung, ob eine Transaktion, die durch die Transaktionsbeginn-Anweisung eingeleitet werden soll, eine eingeschränkte Transaktion oder eine nicht eingeschränkte Transaktion ist; ein Einleiten einer eingeschränkten Transaktion auf der Grundlage, dass das Feld ein Wert ist, wobei der eingeschränkten Transaktion eine oder mehrere Einschränkungen zugehörig sind, und ein Setzen eines Bedingungscodes auf einen Wert, der eine erfolgreiche Ausführung der Maschinenanweisung angibt; und auf der Grundlage, dass das Feld ein anderer Wert ist, ein Angeben eines Speicherorts zum Speichern von Diagnoseinformationen in einer abgebrochenen nicht eingeschränkten Transaktion, ein Einleiten der nicht eingeschränkten Transaktion und ein Setzen eines Bedingungscodes auf den Wert, der eine erfolgreiche Ausführung der Maschinenanweisung angibt.
  10. Computersystem nach Anspruch 9, wobei das Feld ferner eines aufweist von: dem Operationscode oder einem von dem Operationscode separaten Feld der Anweisung.
  11. Computersystem nach einem der Ansprüche 9 oder 10, wobei das Steuerelement-Feld eines oder mehreres des Folgenden aufweist: eine Allgemeinregister-Speichermaske zum Angeben von einem oder mehreren Paaren von Registern, die zu Beginn der Transaktion gespeichert und bei einem Abbruch zurückgespeichert werden sollen; und ein Feld für Zugriffsregistermodifizierung zulassen, um zu kontrollieren, ob die Transaktion berechtigt ist, ein Zugriffsregister zu modifizieren.
  12. Computersystem nach Anspruch 11, wobei das Feld eine nicht eingeschränkte Transaktion angibt, und wobei das Steuerelement-Feld ferner aufweist: ein Feld für Gleitkomma-Operation zulassen, um zu kontrollieren, ob die Transaktion berechtigt ist, angegebene Gleitkomma-Anweisungen auszuführen; und ein Steuerelement-Feld für Programmunterbrechungsfiltern, um zu kontrollieren, ob bestimmte Klassen von Programmunterbrechungsbedingungen zu einer Unterbrechung führen.
  13. Computersystem nach einem der Ansprüche 9 bis 12, wobei das Feld eine nicht eingeschränkte Transaktion angibt, und wobei die Maschinenanweisung ferner ein Basisfeld aufweist, das beim Ausführen der Transaktion verwendet werden soll, und wobei auf der Grundlage des Basisfelds, das einen Wert aufweist, Inhalte eines Registers, das durch das Basisfeld angegeben wird, mit Inhalten eines Verschiebungsfelds kombiniert werden, um eine erste Operandenadresse zu erstellen, wobei die erste Operandenadresse einen Speicherort eines Transaktionsdiagnoseblocks angibt, der zum Speichern der Diagnoseinformationen bei einem Abbruch verwendbar ist.
  14. Computersystem nach einem der Ansprüche 9 bis 13, wobei das Verfahren ferner aufweist: ein Ausführen einer weiteren Maschinenanweisung zum Beenden der Transaktion, die durch die Transaktionsbeginn-Anweisung eingeleitet wurde, wobei die weitere Maschinenanweisung eine Transaktionsende-Anweisung aufweist, wobei die Transaktionsende-Anweisung einen Operationscode zum Angeben der Transaktionsende-Anweisung aufweist.
  15. Computersystem nach Anspruch 14, wobei das Ausführen der weiteren Maschinenanweisung aufweist: ein schrittweises Verringern einer transaktionsgebundenen Verschachtelungstiefe; ein Bestimmen, ob die schrittweise verringerte transaktionsgebundene Verschachtelungstiefe null ist; und ein Festschreiben von Speicherzugriffen, die durch die Transaktion vorgenommen wurden, auf der Grundlage, dass die schrittweise verringerte transaktionsgebundene Verschachtelungstiefe null ist.
  16. Computersystem nach einem der Ansprüche 9 bis 15, wobei die eine oder die mehreren Einschränkungen aufweisen: eine begrenzte Anzahl von Anweisungen in der Transaktion; Anweisungen in der Transaktion müssen innerhalb eines vordefinierten Arbeitsspeicherbereichs liegen; bestimmte vorab angegebene Anweisungen können in die Transaktion aufgenommen werden, andere werden eingeschränkt; eine Zugriffsbegrenzung nach Speicheroperanden der Transaktion; die Transaktion greift nicht auf Speicheroperanden in Arbeitsspeicherblöcken zu, die den vordefinierten Arbeitsspeicherbereich enthalten; die Transaktion greift nicht unter Verwendung verschiedener logischer Adressen, die derselben absoluten Adresse zugeordnet sind, auf Anweisungen oder Speicheroperanden zu; und Operandenverweise durch die Transaktionen müssen innerhalb einer angegebenen Größe liegen.
  17. Computerprogrammprodukt für ein Ausführen einer Maschinenanweisung in einer Datenverarbeitungsumgebung, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das von einer Verarbeitungsschaltung lesbar ist und Anweisungen zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren nach einem der Ansprüche 1 bis 8 auszuführen.
  18. Computerprogramm, das auf einem computerlesbaren Medium gespeichert und in den internen Arbeitsspeicher eines digitalen Computers ladbar ist, das Softwarecode-Abschnitte aufweist, um das Verfahren nach einem der Ansprüche 1 bis 8 auszuführen, wenn das Programm auf einem Computer ausgeführt wird.
DE112013003079.9T 2012-06-15 2013-05-21 Anweisungen für Transaktionsbeginn/-ende Pending DE112013003079T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/524,845 2012-06-15
US13/524,845 US9348642B2 (en) 2012-06-15 2012-06-15 Transaction begin/end instructions
PCT/EP2013/060373 WO2013186018A1 (en) 2012-06-15 2013-05-21 Transaction begin/end instructions

Publications (1)

Publication Number Publication Date
DE112013003079T5 true DE112013003079T5 (de) 2015-05-07

Family

ID=48470976

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013003079.9T Pending DE112013003079T5 (de) 2012-06-15 2013-05-21 Anweisungen für Transaktionsbeginn/-ende

Country Status (6)

Country Link
US (4) US9348642B2 (de)
JP (1) JP6218816B2 (de)
CN (1) CN104335165B (de)
DE (1) DE112013003079T5 (de)
GB (1) GB2512799B (de)
WO (1) WO2013186018A1 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9772854B2 (en) * 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US20140281236A1 (en) * 2013-03-14 2014-09-18 William C. Rash Systems and methods for implementing transactional memory
US9600286B2 (en) 2014-06-30 2017-03-21 International Business Machines Corporation Latent modification instruction for transactional execution
US10942744B2 (en) 2014-12-24 2021-03-09 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10387156B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10387158B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US9785442B2 (en) 2014-12-24 2017-10-10 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061583B2 (en) * 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061589B2 (en) 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10303525B2 (en) 2014-12-24 2019-05-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10706041B1 (en) 2015-02-11 2020-07-07 Gravic, Inc. Systems and methods to profile transactions for end-state determination and latency reduction
US10318430B2 (en) * 2015-06-26 2019-06-11 International Business Machines Corporation System operation queue for transaction
US10067744B2 (en) * 2016-12-08 2018-09-04 International Business Machines Corporation Overflow detection for sign-magnitude adders
US10579377B2 (en) * 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US11947978B2 (en) 2017-02-23 2024-04-02 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US10831509B2 (en) 2017-02-23 2020-11-10 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
EP3462312B1 (de) * 2017-09-29 2022-08-17 ARM Limited Ermöglichung einer nicht-abgebrochenen verarbeitung einer transaktion nach einem ausnahmemaskenaktualisierungsbefehl
EP3462308B1 (de) * 2017-09-29 2022-03-02 ARM Limited Transaktionsverschachtelungstiefentestanweisung
KR102435021B1 (ko) 2017-12-05 2022-08-22 삼성전자주식회사 부스트된 전압을 이용하여 동작하도록 구성되는 회로를 포함하는 전자 장치
US11194584B1 (en) * 2019-07-19 2021-12-07 Marvell Asia Pte, Ltd. Managing out-of-order retirement of instructions
US20210365440A1 (en) * 2020-05-22 2021-11-25 Couchbase, Inc. Distributed transaction execution management in distributed databases
US11681687B2 (en) 2020-08-31 2023-06-20 Couchbase, Inc. Executing transactions on distributed databases

Family Cites Families (282)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1174370A (en) 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
US4488227A (en) 1982-12-03 1984-12-11 Honeywell Information Systems Inc. Program counter stacking method and apparatus for nested subroutines and interrupts
US4764861A (en) 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
US4740893A (en) 1985-08-07 1988-04-26 International Business Machines Corp. Method for reducing the time for switching between programs
US5063497A (en) 1987-07-01 1991-11-05 Digital Equipment Corporation Apparatus and method for recovering from missing page faults in vector data processing operations
US5321823A (en) 1988-07-20 1994-06-14 Digital Equipment Corporation Digital processor with bit mask for counting registers for fast register saves
US5117498A (en) 1988-08-19 1992-05-26 Motorola, Inc. Processer with flexible return from subroutine
US5163140A (en) 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
JPH0437927A (ja) 1990-06-01 1992-02-07 Sony Corp プロセッサの処理方法
US5283873A (en) 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
US5471591A (en) 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
DE69026379T2 (de) 1990-08-07 1996-08-29 Bull Hn Information Syst Nachrichtenorientierte Fehlerbeseitigungsverfahren
DE4216871C2 (de) 1991-05-21 2001-09-06 Digital Equipment Corp Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen
US5701480A (en) 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
US5274817A (en) 1991-12-23 1993-12-28 Caterpillar Inc. Method for executing subroutine calls
US5423011A (en) 1992-06-11 1995-06-06 International Business Machines Corporation Apparatus for initializing branch prediction information
US5359608A (en) 1992-11-24 1994-10-25 Amdahl Corporation Apparatus for activation and deactivation of instruction tracing through use of conditional trace field in branch instructions
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5925125A (en) 1993-06-24 1999-07-20 International Business Machines Corporation Apparatus and method for pre-verifying a computer instruction set to prevent the initiation of the execution of undefined instructions
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5748964A (en) 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US5655100A (en) 1995-03-31 1997-08-05 Sun Microsystems, Inc. Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
EP0870228B1 (de) 1995-10-06 2003-08-13 Advanced Micro Devices, Inc. Vereinheitlichter multifunktions-operationsverteiler für die ungeordnete befehlsexekution in einem superskalaren prozessor
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
TW384447B (en) 1996-01-22 2000-03-11 Infinite Technology Inc Processor with reconfigurable arithmetic data path
JP3676882B2 (ja) * 1996-06-12 2005-07-27 株式会社リコー マイクロプロセッサ及びその周辺装置
JPH103416A (ja) 1996-06-14 1998-01-06 Canon Inc 情報処理装置およびその方法
US6035313A (en) 1997-03-24 2000-03-07 Motorola, Inc. Memory address generator for an FFT
US5870582A (en) 1997-03-31 1999-02-09 International Business Machines Corporation Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
JPH10333908A (ja) 1997-05-30 1998-12-18 Mitsubishi Electric Corp 分岐予測方法
US5937199A (en) 1997-06-03 1999-08-10 International Business Machines Corporation User programmable interrupt mask with timeout for enhanced resource locking efficiency
US6073230A (en) 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
JP3546678B2 (ja) 1997-09-12 2004-07-28 株式会社日立製作所 マルチos構成方法
US6772419B1 (en) 1997-09-12 2004-08-03 Hitachi, Ltd. Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
US6094730A (en) 1997-10-27 2000-07-25 Hewlett-Packard Company Hardware-assisted firmware tracing method and apparatus
US7076784B1 (en) 1997-10-28 2006-07-11 Microsoft Corporation Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment
US6000029A (en) 1997-11-03 1999-12-07 Motorola, Inc. Method and apparatus for affecting subsequent instruction processing in a data processor
US5938778A (en) 1997-11-10 1999-08-17 International Business Machines Corporation System and method for tracing instructions in an information handling system without changing the system source code
KR100246537B1 (ko) 1997-11-25 2000-03-15 정선종 코드분할 다중접속 시스템에서 파일럿 심벌을 이용한 동기식이중 채널 큐피에스케이 송수신기의 구조
SE9704476L (sv) 1997-12-02 1999-06-23 Ericsson Telefon Ab L M Utökad instruktionsavkodning
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
KR100329496B1 (ko) 1998-03-17 2002-03-23 마츠시타 덴끼 산교 가부시키가이샤 장치에 대해 적응하는 명령을 사용하는 데이터 전송장치 및 그 방법
US6202067B1 (en) 1998-04-07 2001-03-13 Lucent Technologies, Inc. Method and apparatus for correct and complete transactions in a fault tolerant distributed database system
US6119129A (en) 1998-05-14 2000-09-12 Sun Microsystems, Inc. Multi-threaded journaling in a configuration database
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
EP0992916A1 (de) 1998-10-06 2000-04-12 Texas Instruments Inc. Digitaler Signalprozessor
EP0992907B1 (de) 1998-10-06 2005-09-28 Texas Instruments Inc. Verwaltung eines FIFO zur Abalufverfolgung
US6151669A (en) 1998-10-10 2000-11-21 Institute For The Development Of Emerging Architectures, L.L.C. Methods and apparatus for efficient control of floating-point status register
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
JP3504519B2 (ja) 1998-12-04 2004-03-08 富士通株式会社 取引支援システム及びこのシステムに接続される情報端末装置
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6732307B1 (en) 1999-10-01 2004-05-04 Hitachi, Ltd. Apparatus and method for storing trace information
US7761857B1 (en) 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US6604188B1 (en) 1999-10-20 2003-08-05 Transmeta Corporation Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction
US6738892B1 (en) 1999-10-20 2004-05-18 Transmeta Corporation Use of enable bits to control execution of selected instructions
JP3776653B2 (ja) 1999-11-24 2006-05-17 富士通株式会社 演算処理装置
US6601149B1 (en) 1999-12-14 2003-07-29 International Business Machines Corporation Memory transaction monitoring system and user interface
US6754809B1 (en) 1999-12-30 2004-06-22 Texas Instruments Incorporated Data processing apparatus with indirect register file access
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6581138B2 (en) 2000-02-29 2003-06-17 Stmicroelectronics, Inc. Branch-prediction driven instruction prefetch
US6665863B1 (en) * 2000-05-31 2003-12-16 Microsoft Corporation Data referencing within a database graph
US6826682B1 (en) 2000-06-26 2004-11-30 Transmeta Corporation Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state
US7246123B2 (en) 2000-08-04 2007-07-17 Carr Scott Software Incorporated Automatic transaction management
SG99941A1 (en) 2000-08-30 2003-11-27 Ibm Transaction support on logical disks
US6886094B1 (en) 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
US6671686B2 (en) * 2000-11-02 2003-12-30 Guy Pardon Decentralized, distributed internet data management
US7346632B2 (en) 2001-02-22 2008-03-18 International Business Machines Corporation Mechanism for executing nested transactions in an execution environment supporting flat transactions only
US6963919B1 (en) 2001-02-28 2005-11-08 Agilent Technologies, Inc. Method and system for improving computer network performance
US6745272B2 (en) 2001-04-04 2004-06-01 Advanced Micro Devices, Inc. System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system
US7185234B1 (en) 2001-04-30 2007-02-27 Mips Technologies, Inc. Trace control from hardware and software
US7165168B2 (en) 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
US6874081B2 (en) 2001-05-17 2005-03-29 Broadcom Corporation Selection of link and fall-through address using a bit in a branch address for the selection
US7305678B2 (en) 2001-05-17 2007-12-04 International Business Machines Corporation Method and system for reducing synchronization waits when allocating sequenced identifiers in a multi-threaded server
US7613762B2 (en) 2001-05-25 2009-11-03 Sun Microsystems, Inc. Floating point remainder with embedded status information
KR100625595B1 (ko) 2001-05-28 2006-09-20 한국전자통신연구원 트랜잭션 처리 시스템의 병렬 로깅 방법 및 트랜잭션 로그 처리 시스템
US6826681B2 (en) 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US7185183B1 (en) 2001-08-02 2007-02-27 Mips Technologies, Inc. Atomic update of CPO state
US20060218556A1 (en) 2001-09-28 2006-09-28 Nemirovsky Mario D Mechanism for managing resource locking in a multi-threaded environment
US7174463B2 (en) 2001-10-04 2007-02-06 Lenovo (Singapore) Pte. Ltd. Method and system for preboot user authentication
US6898699B2 (en) 2001-12-21 2005-05-24 Intel Corporation Return address stack including speculative return address buffer with back pointers
US7313734B2 (en) 2002-01-14 2007-12-25 International Business Machines Corporation Method and system for instruction tracing with enhanced interrupt avoidance
US7546446B2 (en) 2002-03-08 2009-06-09 Ip-First, Llc Selective interrupt suppression
US20040049666A1 (en) 2002-09-11 2004-03-11 Annavaram Murali M. Method and apparatus for variable pop hardware return address stack
US7496494B2 (en) 2002-09-17 2009-02-24 International Business Machines Corporation Method and system for multiprocessor emulation on a multiprocessor host system
US6892286B2 (en) 2002-09-30 2005-05-10 Sun Microsystems, Inc. Shared memory multiprocessor memory model verification system and method
US7103597B2 (en) * 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
US7634638B1 (en) 2002-10-22 2009-12-15 Mips Technologies, Inc. Instruction encoding for system register bit set and clear
US7149862B2 (en) 2002-11-18 2006-12-12 Arm Limited Access control in a data processing apparatus
US8332464B2 (en) 2002-12-13 2012-12-11 Anxebusiness Corp. System and method for remote network access
US7568023B2 (en) 2002-12-24 2009-07-28 Hewlett-Packard Development Company, L.P. Method, system, and data structure for monitoring transaction performance in a managed computer network environment
US6862664B2 (en) 2003-02-13 2005-03-01 Sun Microsystems, Inc. Method and apparatus for avoiding locks by speculatively executing critical sections
US7269693B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring stores to support transactional program execution
US6938130B2 (en) 2003-02-13 2005-08-30 Sun Microsystems Inc. Method and apparatus for delaying interfering accesses from other threads during transactional program execution
US7398355B1 (en) 2003-02-13 2008-07-08 Sun Microsystems, Inc. Avoiding locks by transactionally executing critical sections
US7089374B2 (en) 2003-02-13 2006-08-08 Sun Microsystems, Inc. Selectively unmarking load-marked cache lines during transactional program execution
US7269717B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Method for reducing lock manipulation overhead during access to critical code sections
US7143273B2 (en) 2003-03-31 2006-11-28 Intel Corporation Method and apparatus for dynamic branch prediction utilizing multiple stew algorithms for indexing a global history
US7398359B1 (en) 2003-04-30 2008-07-08 Silicon Graphics, Inc. System and method for performing memory operations in a computing system
US7480785B2 (en) 2003-05-23 2009-01-20 Nippon Telegraph And Telephone Corporation Parallel processing device and parallel processing method
CA2472887A1 (en) 2003-06-30 2004-12-30 Gravic, Inc. Methods for ensuring referential integrity in multithreaded replication engines
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7197586B2 (en) 2004-01-14 2007-03-27 International Business Machines Corporation Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler
CN1947144A (zh) 2004-02-24 2007-04-11 第一数据公司 事务处理的系统和方法
US8825615B2 (en) 2004-05-11 2014-09-02 Oracle International Corporation Simplifying implementation of custom atomic transactions in a programming environment
US7703098B1 (en) 2004-07-20 2010-04-20 Sun Microsystems, Inc. Technique to allow a first transaction to wait on condition that affects its working set
US7206903B1 (en) 2004-07-20 2007-04-17 Sun Microsystems, Inc. Method and apparatus for releasing memory locations during transactional execution
US7395382B1 (en) 2004-08-10 2008-07-01 Sun Microsystems, Inc. Hybrid software/hardware transactional memory
US7840785B1 (en) 2004-09-14 2010-11-23 Azul Systems, Inc. Transparent concurrent atomic execution
US20060064508A1 (en) 2004-09-17 2006-03-23 Ramesh Panwar Method and system to store and retrieve message packet data in a communications network
US7373554B2 (en) 2004-09-24 2008-05-13 Oracle International Corporation Techniques for automatic software error diagnostics and correction
US7856537B2 (en) 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
EP1657118A1 (de) 2004-11-11 2006-05-17 IEE INTERNATIONAL ELECTRONICS & ENGINEERING S.A. Vorrichtung zur Aufprallerkennung für ein Fahrzeug
US7984248B2 (en) 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US7631073B2 (en) 2005-01-27 2009-12-08 International Business Machines Corporation Method and apparatus for exposing monitoring violations to the monitored application
US20060212757A1 (en) 2005-03-15 2006-09-21 International Business Machines Corporation Method, system, and program product for managing computer-based interruptions
US7421544B1 (en) 2005-04-04 2008-09-02 Sun Microsystems, Inc. Facilitating concurrent non-transactional execution in a transactional memory system
US7496726B1 (en) 2005-04-18 2009-02-24 Sun Microsystems, Inc. Controlling contention via transactional timers among conflicting transactions issued by processors operating in insistent or polite mode
GB0509738D0 (en) 2005-05-12 2005-06-22 Cambridge Consultants Processor and interface
US7464161B2 (en) 2005-06-06 2008-12-09 International Business Machines Corporation Enabling and disabling byte code inserted probes based on transaction monitoring tokens
US7350034B2 (en) 2005-06-20 2008-03-25 International Business Machines Corporation Architecture support of best-effort atomic transactions for multiprocessor systems
US7882339B2 (en) 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US7702825B2 (en) 2005-06-29 2010-04-20 Intel Corporation Enhancements to universal serial bus (USB) suspend and resume operations
US20070005828A1 (en) 2005-06-30 2007-01-04 Nimrod Diamant Interrupts support for the KCS manageability interface
CN1713164A (zh) 2005-07-21 2005-12-28 复旦大学 可自主处理多事务传输要求的dma控制器及数据传输方法
JP2009508187A (ja) * 2005-08-01 2009-02-26 サン・マイクロシステムズ・インコーポレーテッド クリティカルセクションをトランザクション的に実行することによるロックの回避
US20070061555A1 (en) 2005-09-15 2007-03-15 St Clair Michael Call return tracking technique
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
CN100365604C (zh) 2005-12-02 2008-01-30 北京中星微电子有限公司 一种中断控制处理装置和方法
US20070136289A1 (en) 2005-12-14 2007-06-14 Intel Corporation Lock elision with transactional memory
US7870545B2 (en) 2005-12-16 2011-01-11 Intel Corporation Protecting shared variables in a software transactional memory system
US20070143755A1 (en) 2005-12-16 2007-06-21 Intel Corporation Speculative execution past a barrier
US8117605B2 (en) 2005-12-19 2012-02-14 Oracle America, Inc. Method and apparatus for improving transactional memory interactions by tracking object visibility
US7730286B2 (en) 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US7810072B2 (en) 2006-01-06 2010-10-05 International Business Machines Corporation Exception thrower
US20070186056A1 (en) * 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US7617383B2 (en) 2006-02-16 2009-11-10 Vns Portfolio Llc Circular register arrays of a computer
US8065499B2 (en) 2006-02-22 2011-11-22 Oracle America, Inc. Methods and apparatus to implement parallel transactions
US7533798B2 (en) 2006-02-23 2009-05-19 Rockwell Automation Technologies, Inc. Data acquisition and processing system for risk assessment
US8099538B2 (en) 2006-03-29 2012-01-17 Intel Corporation Increasing functionality of a reader-writer lock
US8180967B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US8180977B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US7930695B2 (en) 2006-04-06 2011-04-19 Oracle America, Inc. Method and apparatus for synchronizing threads on a processor that supports transactional memory
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US7594094B2 (en) 2006-05-19 2009-09-22 International Business Machines Corporation Move data facility with optional specifications
US7707394B2 (en) 2006-05-30 2010-04-27 Arm Limited Reducing the size of a data stream produced during instruction tracing
US7849446B2 (en) 2006-06-09 2010-12-07 Oracle America, Inc. Replay debugging
MY149658A (en) 2006-06-12 2013-09-30 Mobile Money Internat Sdn Bhd Transaction server
US20070300013A1 (en) 2006-06-21 2007-12-27 Manabu Kitamura Storage system having transaction monitoring capability
US20080005504A1 (en) 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US20080016325A1 (en) 2006-07-12 2008-01-17 Laudon James P Using windowed register file to checkpoint register state
US7617421B2 (en) 2006-07-27 2009-11-10 Sun Microsystems, Inc. Method and apparatus for reporting failure conditions during transactional execution
US7748618B2 (en) 2006-08-21 2010-07-06 Verizon Patent And Licensing Inc. Secure near field transaction
US7865885B2 (en) 2006-09-27 2011-01-04 Intel Corporation Using transactional memory for precise exception handling in aggressive dynamic binary optimizations
US20080086516A1 (en) * 2006-10-04 2008-04-10 Oracle International Automatically changing a database system's redo transport mode to dynamically adapt to changing workload and network conditions
EP1918540B1 (de) 2006-11-06 2009-08-26 GM Global Technology Operations, Inc. Verfahren zum Betreiben eines Partikelfilters, Programm für einen Rechner und dafür vorgesehene Regelvorrichtung
CN101178787A (zh) 2006-11-10 2008-05-14 上海市卢湾区东南医院 用于社区老干部保健管理的信息沟通方法
US7669040B2 (en) 2006-12-15 2010-02-23 Sun Microsystems, Inc. Method and apparatus for executing a long transaction
JP2008165370A (ja) 2006-12-27 2008-07-17 Internatl Business Mach Corp <Ibm> オンライントランザクション処理を分割し、分散環境で実行するための方法および装置。
US8086827B2 (en) 2006-12-28 2011-12-27 Intel Corporation Mechanism for irrevocable transactions
US7802136B2 (en) 2006-12-28 2010-09-21 Intel Corporation Compiler technique for efficient register checkpointing to support transaction roll-back
US7627743B2 (en) 2007-01-12 2009-12-01 Andes Technology Corporation Method and circuit implementation for multiple-word transfer into/from memory subsystems
US20080244544A1 (en) 2007-03-29 2008-10-02 Naveen Neelakantam Using hardware checkpoints to support software based speculation
US8332374B2 (en) 2007-04-13 2012-12-11 Oracle America, Inc. Efficient implicit privatization of transactional memory
US8117403B2 (en) 2007-05-14 2012-02-14 International Business Machines Corporation Transactional memory system which employs thread assists using address history tables
US9009452B2 (en) 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US7814378B2 (en) 2007-05-18 2010-10-12 Oracle America, Inc. Verification of memory consistency and transactional memory
US20080320282A1 (en) 2007-06-22 2008-12-25 Morris Robert P Method And Systems For Providing Transaction Support For Executable Program Components
US8266387B2 (en) 2007-06-27 2012-09-11 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization emulation
US7779232B2 (en) 2007-08-28 2010-08-17 International Business Machines Corporation Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches
US8209689B2 (en) 2007-09-12 2012-06-26 Intel Corporation Live lock free priority scheme for memory transactions in transactional memory
US7904434B2 (en) * 2007-09-14 2011-03-08 Oracle International Corporation Framework for handling business transactions
US7890472B2 (en) 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
US20090127332A1 (en) 2007-11-16 2009-05-21 Kyung Yang Park System for processing payment employing off-line transaction approval mode of mobile card and method thereof
US20090138890A1 (en) 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory
CN101170747A (zh) 2007-11-30 2008-04-30 中兴通讯股份有限公司 中继状态调节方法和装置
US9391789B2 (en) 2007-12-14 2016-07-12 Qualcomm Incorporated Method and system for multi-level distribution information cache management in a mobile environment
US8145878B2 (en) 2007-12-17 2012-03-27 Intel Corporation Accessing control and status register (CSR)
US8195898B2 (en) 2007-12-27 2012-06-05 Intel Corporation Hybrid transactions for low-overhead speculative parallelization
US8065491B2 (en) 2007-12-30 2011-11-22 Intel Corporation Efficient non-transactional write barriers for strong atomicity
US8706982B2 (en) 2007-12-30 2014-04-22 Intel Corporation Mechanisms for strong atomicity in a transactional memory system
US8140497B2 (en) 2007-12-31 2012-03-20 Oracle America, Inc. System and method for implementing nonblocking zero-indirection transactional memory
US7966459B2 (en) 2007-12-31 2011-06-21 Oracle America, Inc. System and method for supporting phased transactional memory modes
US20090182983A1 (en) 2008-01-11 2009-07-16 International Business Machines Corporation Compare and Branch Facility and Instruction Therefore
US8041900B2 (en) 2008-01-15 2011-10-18 Oracle America, Inc. Method and apparatus for improving transactional memory commit latency
US20090187906A1 (en) 2008-01-23 2009-07-23 Sun Microsystems, Inc. Semi-ordered transactions
US8176279B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Managing use of storage by multiple pageable guests of a computing environment
US8161273B2 (en) 2008-02-26 2012-04-17 Oracle America, Inc. Method and apparatus for programmatically rewinding a register inside a transaction
US8380907B2 (en) 2008-02-26 2013-02-19 International Business Machines Corporation Method, system and computer program product for providing filtering of GUEST2 quiesce requests
US8688628B2 (en) 2008-02-29 2014-04-01 Red Hat, Inc. Nested queued transaction manager
EP2096564B1 (de) 2008-02-29 2018-08-08 Euroclear SA/NV Verbesserungen im Zusammenhang mit der Handhabung und Verarbeitung von sehr großen Mengen von Verarbeitungsanweisungen in Echtzeit
US8316366B2 (en) 2008-04-02 2012-11-20 Oracle America, Inc. Facilitating transactional execution in a processor that supports simultaneous speculative threading
US20090260011A1 (en) 2008-04-14 2009-10-15 Microsoft Corporation Command line transactions
JP5385545B2 (ja) 2008-04-17 2014-01-08 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションの実行を制御する装置及び方法
US9367363B2 (en) 2008-05-12 2016-06-14 Oracle America, Inc. System and method for integrating best effort hardware mechanisms for supporting transactional memory
US8612950B2 (en) 2008-06-19 2013-12-17 Intel Corporation Dynamic optimization for removal of strong atomicity barriers
US7996686B2 (en) 2008-07-07 2011-08-09 International Business Machines Corporation Branch trace methodology
KR20110044884A (ko) 2008-07-28 2011-05-02 어드밴스드 마이크로 디바이시즈, 인코포레이티드 가상화가능한 진보된 동기화 기능
US9449314B2 (en) 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
US8191046B2 (en) 2008-10-06 2012-05-29 Microsoft Corporation Checking transactional memory implementations
US20100205628A1 (en) 2009-02-12 2010-08-12 Davis Bruce L Media processing methods and arrangements
US20100122073A1 (en) 2008-11-10 2010-05-13 Ravi Narayanaswamy Handling exceptions in software transactional memory systems
JP4702962B2 (ja) 2008-11-12 2011-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリ制御装置、プログラム及び方法
US8789057B2 (en) 2008-12-03 2014-07-22 Oracle America, Inc. System and method for reducing serialization in transactional memory using gang release of blocked threads
US8672820B2 (en) 2008-12-04 2014-03-18 Honda Motor Co., Ltd. Tool stocker, machine tool system, and tool damage detecting apparatus
US20100153776A1 (en) 2008-12-12 2010-06-17 Sun Microsystems, Inc. Using safepoints to provide precise exception semantics for a virtual machine
US10210018B2 (en) 2008-12-24 2019-02-19 Intel Corporation Optimizing quiescence in a software transactional memory (STM) system
US9274855B2 (en) 2008-12-24 2016-03-01 Intel Corporation Optimization for safe elimination of weak atomicity overhead
US8914620B2 (en) 2008-12-29 2014-12-16 Oracle America, Inc. Method and system for reducing abort rates in speculative lock elision using contention management mechanisms
US8799582B2 (en) 2008-12-30 2014-08-05 Intel Corporation Extending cache coherency protocols to support locally buffered data
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
CN101710433A (zh) 2008-12-31 2010-05-19 深圳市江波龙电子有限公司 一种电子支付卡的交易方法及电子支付卡
US9170844B2 (en) 2009-01-02 2015-10-27 International Business Machines Corporation Prioritization for conflict arbitration in transactional memory management
CN101819518B (zh) 2009-02-26 2013-09-11 国际商业机器公司 在事务内存中快速保存上下文的方法和装置
US8266107B2 (en) 2009-03-11 2012-09-11 International Business Machines Corporation Method for mirroring a log file by threshold driven synchronization
US9940138B2 (en) 2009-04-08 2018-04-10 Intel Corporation Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations
US20100307689A1 (en) 2009-06-06 2010-12-09 Michael James Huebner Pivoting tape dispenser
US8356166B2 (en) 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
DE112009005006T5 (de) 2009-06-26 2013-01-10 Intel Corporation Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM)
US8973004B2 (en) 2009-06-26 2015-03-03 Oracle America, Inc. Transactional locking with read-write locks in transactional memory systems
US8489864B2 (en) 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US8281185B2 (en) 2009-06-30 2012-10-02 Oracle America, Inc. Advice-based feedback for transactional execution
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8688964B2 (en) 2009-07-20 2014-04-01 Microchip Technology Incorporated Programmable exception processing latency
GB2472620B (en) 2009-08-12 2016-05-18 Cloudtran Inc Distributed transaction processing
US8392694B2 (en) 2009-09-15 2013-03-05 International Business Machines Corporation System and method for software initiated checkpoint operations
GB2474446A (en) 2009-10-13 2011-04-20 Advanced Risc Mach Ltd Barrier requests to maintain transaction order in an interconnect with multiple paths
US8327188B2 (en) 2009-11-13 2012-12-04 Oracle America, Inc. Hardware transactional memory acceleration through multiple failure recovery
US8516202B2 (en) 2009-11-16 2013-08-20 International Business Machines Corporation Hybrid transactional memory system (HybridTM) and method
US9529839B2 (en) 2009-12-07 2016-12-27 International Business Machines Corporation Applying limited-size hardware transactional memory to arbitrarily large data structure
US9092253B2 (en) 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8290991B2 (en) 2009-12-15 2012-10-16 Juniper Networks, Inc. Atomic deletion of database data categories
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
US8095824B2 (en) 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system
US8521995B2 (en) 2009-12-15 2013-08-27 Intel Corporation Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode
US8301849B2 (en) 2009-12-23 2012-10-30 Intel Corporation Transactional memory in out-of-order processors with XABORT having immediate argument
US20110161371A1 (en) 2009-12-29 2011-06-30 Microgen Plc Sql generation
KR101639672B1 (ko) 2010-01-05 2016-07-15 삼성전자주식회사 무한 트랜잭션 메모리 시스템 및 그 동작 방법
CN101826000A (zh) 2010-01-29 2010-09-08 北京龙芯中科技术服务中心有限公司 流水线微处理器的中断响应确定方法、装置及微处理器核
US8549468B2 (en) 2010-02-08 2013-10-01 National Tsing Hua University Method, system and computer readable storage device for generating software transaction-level modeling (TLM) model
US8850166B2 (en) 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
US20110208921A1 (en) 2010-02-19 2011-08-25 Pohlack Martin T Inverted default semantics for in-speculative-region memory accesses
US8438568B2 (en) 2010-02-24 2013-05-07 International Business Machines Corporation Speculative thread execution with hardware transactional memory
US8739164B2 (en) 2010-02-24 2014-05-27 Advanced Micro Devices, Inc. Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof
US8402227B2 (en) 2010-03-31 2013-03-19 Oracle International Corporation System and method for committing results of a software transaction using a hardware transaction
US8464261B2 (en) 2010-03-31 2013-06-11 Oracle International Corporation System and method for executing a transaction using parallel co-transactions
US8631223B2 (en) 2010-05-12 2014-01-14 International Business Machines Corporation Register file supporting transactional processing
US9626187B2 (en) 2010-05-27 2017-04-18 International Business Machines Corporation Transactional memory system supporting unbroken suspended execution
US20110302143A1 (en) 2010-06-02 2011-12-08 Microsoft Corporation Multi-version concurrency with ordered timestamps
US9880848B2 (en) 2010-06-11 2018-01-30 Advanced Micro Devices, Inc. Processor support for hardware transactional memory
US8560816B2 (en) 2010-06-30 2013-10-15 Oracle International Corporation System and method for performing incremental register checkpointing in transactional memory
US8479053B2 (en) 2010-07-28 2013-07-02 Intel Corporation Processor with last branch record register storing transaction indicator
US8561033B2 (en) 2010-07-30 2013-10-15 International Business Machines Corporation Selective branch-triggered trace generation apparatus and method
US8549504B2 (en) 2010-09-25 2013-10-01 Intel Corporation Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
US8424015B2 (en) 2010-09-30 2013-04-16 International Business Machines Corporation Transactional memory preemption mechanism
US9552206B2 (en) 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US9122476B2 (en) 2010-12-07 2015-09-01 Advanced Micro Devices, Inc. Programmable atomic memory using hardware validation agent
US8788794B2 (en) 2010-12-07 2014-07-22 Advanced Micro Devices, Inc. Programmable atomic memory using stored atomic procedures
US8442962B2 (en) 2010-12-28 2013-05-14 Sap Ag Distributed transaction management using two-phase commit optimization
US8818867B2 (en) 2011-11-14 2014-08-26 At&T Intellectual Property I, L.P. Security token for mobile near field communication transactions
US9442824B2 (en) 2012-03-16 2016-09-13 International Business Machines Corporation Transformation of a program-event-recording event into a run-time instrumentation event
US9158660B2 (en) 2012-03-16 2015-10-13 International Business Machines Corporation Controlling operation of a run-time instrumentation facility
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US8688661B2 (en) * 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US8964390B2 (en) 2012-11-08 2015-02-24 International Business Machines Corporation Sectioned manifolds facilitating pumped immersion-cooling of electronic components
US9348522B2 (en) 2013-12-12 2016-05-24 International Business Machines Corporation Software indications and hints for coalescing memory transactions

Also Published As

Publication number Publication date
US10185588B2 (en) 2019-01-22
GB2512799A (en) 2014-10-08
JP2015523651A (ja) 2015-08-13
GB2512799B (en) 2015-01-14
CN104335165A (zh) 2015-02-04
US20190114201A1 (en) 2019-04-18
WO2013186018A1 (en) 2013-12-19
US20130339960A1 (en) 2013-12-19
US9477514B2 (en) 2016-10-25
US11080087B2 (en) 2021-08-03
GB201414237D0 (en) 2014-09-24
US20130339326A1 (en) 2013-12-19
US9348642B2 (en) 2016-05-24
CN104335165B (zh) 2017-03-01
JP6218816B2 (ja) 2017-10-25
US20160266927A1 (en) 2016-09-15

Similar Documents

Publication Publication Date Title
DE112013001941T9 (de) Eingeschränkte Anweisungen in Transaktionsgebundener Ausführung
DE112013003079T5 (de) Anweisungen für Transaktionsbeginn/-ende
DE112013002040T5 (de) Transaktionsabbruchverarbeitung
US9792125B2 (en) Saving/restoring selected registers in transactional processing
DE112007000812B4 (de) Vorrichtung mit einer speichereinheit und drei logiken, verfahren zum durchführen der verfahrensschritte der vorrichtung undsystem mit einem speicher und einem prozessor zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren
US9286076B2 (en) Intra-instructional transaction abort handling
JP6176637B2 (ja) トランザクション環境内でのプログラム・イベント記録
EP2862071B1 (de) Selektive steuerung von befehlsausführungen in einer transaktionsverarbeitung
DE112017000163T5 (de) Priorisierung von Transaktionen
TWI574207B (zh) 非異動儲存指令
US8880959B2 (en) Transaction diagnostic block
DE112015001548T5 (de) Partitionsmobilität für Partitionen mit erweitertem Code
DE102016219651A1 (de) Für Vorabzugriff unempfindlicher transaktionsgebundener Speicher
DE112018004384B4 (de) Schützen von arbeitsspeicherinternen konfigurationsstatusregistern
US10430199B2 (en) Program interruption filtering in transactional execution
DE112015000294T5 (de) Wiederherstellen von Hardware-Transaktionen
DE112018000848T5 (de) Registerkontextwiederherstellung auf der Grundlage der Wiedergewinnung von Umbenennungsregistern
DE112015000203T5 (de) &#34;Compare and Delay&#34;-Befehle
US9223687B2 (en) Determining the logical address of a transaction abort
DE112013005500T5 (de) Anweisung zum Drehen und Einfügen eines Vektorelements unter einer Maske
DE112018004364B4 (de) Vereinfachung einer verarbeitung in einer datenverarbeitungsumgebung durch gruppierung eines konfigurationsstatusregisters auf grundlage von funktionaler affinität
DE112018004388T5 (de) Globale speicher- und ladeoperationen von konfigurationsstatusregistern
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor
DE112018005758T5 (de) Konfigurationsstatusregister auf arbeitsspeichergrundlage
DE112015000223T5 (de) Maschinenbefehl zum Beenden eines bedingten Befehls

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication