DE112013002155T5 - Befehl zur Art des Zugriffs auf den nächsten Befehl - Google Patents

Befehl zur Art des Zugriffs auf den nächsten Befehl Download PDF

Info

Publication number
DE112013002155T5
DE112013002155T5 DE112013002155.2T DE112013002155T DE112013002155T5 DE 112013002155 T5 DE112013002155 T5 DE 112013002155T5 DE 112013002155 T DE112013002155 T DE 112013002155T DE 112013002155 T5 DE112013002155 T5 DE 112013002155T5
Authority
DE
Germany
Prior art keywords
access
operand
next sequential
cache
command
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
DE112013002155.2T
Other languages
English (en)
Inventor
c/o IBM Corporation Jacobi Christian
c/o IBM Corporation Slegel Timothy
c/o IBM Corporation Shum Chung-Lung Kevin
c/o IBM Corp. IP Law Department Sittmann Gustav
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 DE112013002155T5 publication Critical patent/DE112013002155T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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
    • 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
    • G06F9/30047Prefetch instructions; cache control 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

Ausführen eines Befehls zur Art des Zugriffs auf den nächsten Befehl durch einen Computer. Der Prozessor bezieht einen Zugriffsartbefehl, der eine Zugriffsart angibt. Die Zugriffsart ist einem Operanden eines nächsten sequenziellen Befehls zugehörig. Die Zugriffsart gibt eine Verwendung des Operanden durch einen oder mehrere Befehle im Anschluss an den nächsten sequenziellen Befehl an. Der Computer führt den Zugriffsartbefehl aus. Der Computer bezieht den nächsten sequenziellen Befehl. Der Computer führt den nächsten sequenziellen Befehl aus, was ein Anpassen einer oder mehrerer Cache-Verhaltensweisen für den Operanden des nächsten sequenziellen Befehls auf Grundlage der Zugriffsart aufweist.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung bezieht sich allgemein auf Computersysteme und im Besonderen auf eine Verarbeitungsfunktionalität für Computersystem-Prozessorbefehle.
  • Von den 1960ern bis heute wurde ein Typ eines Computersystems dank seiner wesentlichen Besonderheit einer großen Datenverarbeitungsleistung als „Großrechner” bekannt. Dieser Großrechner arbeitet mit einer Reihe von Operationsprinzipien, die die Architektur der Maschine festlegen, indem sie die Befehle beschreiben, die auf dem Großrechner ausgeführt werden können.
  • KURZDARSTELLUNG
  • Gemäß einer Ausführungsform werden ein Verfahren, ein System und ein Programmprodukt bereitgestellt. Ein Computer bezieht einen Zugriffsartbefehl, der eine Zugriffsart angibt. Die Zugriffsart ist einem Operanden eines nächsten sequenziellen Befehls zugehörig. Die Zugriffsart gibt eine Verwendung des Operanden durch einen oder mehrere Befehle im Anschluss an den nächsten sequenziellen Befehl an. Der Computer führt den Zugriffsartbefehl aus. Der Computer bezieht den nächsten sequenziellen Befehl. Der Computer führt den nächsten sequenziellen Befehl aus. Diese Ausführung weist ein Anpassen einer oder mehrerer Cache-Verhaltensweisen für den Operanden des nächsten sequenziellen Befehls auf Grundlage der Zugriffsart auf.
  • Gemäß einer Ausführungsform speichert der Computer die Zugriffsart in einem internen Steuerregister.
  • Gemäß einer Ausführungsform weist der Zugriffsartbefehl einen Zugriffsartoperanden auf, der die Zugriffsart angibt.
  • Gemäß einer Ausführungsform gibt der Zugriffsartbefehl eine weitere Zugriffsart an. Die weitere Zugriffsart ist einem weiteren Operanden des nächsten sequenziellen Befehls zugehörig. Die weitere Zugriffsart gibt eine Verwendung des weiteren Operanden durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl an.
  • Gemäß einer Ausführungsform gibt die Zugriffsart an, dass durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl so auf den Operanden des nächsten sequenziellen Befehls zugegriffen wird, dass: auf den Operanden des nächsten sequenziellen Befehls durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl zu einem Operandenspeicherzugriff zugegriffen wird, auf den Operanden des nächsten sequenziellen Befehls durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl zu einem Operandenabrufzugriff zugegriffen wird, auf den Operanden des nächsten sequenziellen Befehls nicht durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl zugegriffen wird, oder eine Kombination davon.
  • Gemäß einer Ausführungsform weist das Anpassen einer oder mehrerer Cache-Verhaltensweisen für den Operanden des nächsten sequenziellen Befehls auf Grundlage der Zugriffsart des Weiteren auf Grundlage dessen, dass es sich bei der Zugriffsart um einen ersten Wert handelt, ein Anpassen durch den Computer eines Zuletzt-verwendet-Status einer Cache-Zeile, auf die zugegriffen wird, so, dass er sich bei oder in der Nähe von „am längsten nicht verwendet” befindet, und auf Grundlage dessen, dass es sich bei der Zugriffsart um einen zweiten Wert handelt, ein Nichtanpassen durch den Computer des Zuletzt-verwendet-Status der Cache-Zeile, auf die zugegriffen wird, so auf, dass er „zuletzt verwendet” lautet.
  • Gemäß einer Ausführungsform weist das Anpassen einer oder mehrerer Cache-Verhaltensweisen für den Operanden des nächsten sequenziellen Befehls auf Grundlage der Zugriffsart auf Grundlage eines Cache-Fehltreffers und der Zugriffsart ein Anfordern durch den Computer auf, dass eine Cache-Zeile aus einem nächstübergeordneten Cache schreibgeschützt oder exklusiv sein soll.
  • Gemäß einer Ausführungsform weist der Computer einen Prozessor und einen Coprozessor auf.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
  • 1A veranschaulicht eine Ausführungsform eines Host-Computersystems.
  • 1B veranschaulicht eine Ausführungsform eines Emulations-Host-Computersystems.
  • 1C veranschaulicht eine Ausführungsform eines Computernetzwerks.
  • 2A veranschaulicht einen Cache.
  • 2B veranschaulicht einen 2-fach satzassoziativen Cache.
  • 3 veranschaulicht eine Ausführungsform von Elementen eines Computersystems.
  • 4A bis 4C veranschaulichen Ausführungsformen von ausführlichen Elementen eines Computersystems.
  • 5A bis 5F veranschaulichen Ausführungsformen eines Maschinenbefehlsformats eines Computersystems.
  • 6 veranschaulicht eine Ausführungsform eines Befehlsformats gemäß einer Ausführungsform.
  • 7 veranschaulicht eine Ausführungsform eines Zugriffsart-Steuerfeldes eines Befehlsformats gemäß einer Ausführungsform.
  • 8 veranschaulicht eine Ausführungsform eines Ablaufplans gemäß einer Ausführungsform.
  • 9 veranschaulicht eine Ausführungsform eines Computerprogrammprodukts, das ein oder mehrere Aspekte einer Ausführungsform enthalten soll.
  • 10 veranschaulicht eine Ausführungsform eines Computersystems.
  • 11 veranschaulicht eine Ausführungsform eines Mehrprozessorsystems.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einer Ausführungsform werden ein Verfahren, ein System und ein Computerprogrammprodukt zum Durchführen einer Cache-Verwaltung bei Großrechnern, im Besonderen eine Cache-Zeilen(Cache-Zeilen)-Verwaltung, bereitgestellt. Spezifische Einzelheiten in Hinblick auf die Operationsprinzipien eines Großrechners, zum Beispiel eines IBM Großrechners, die Befehle beinhalten, die an den Großrechner gerichtet sind, lassen sich „IBM z/Architecture Principles of Operation”, veröffentlicht im August 2010, mit der Referenznummer SA22-7832-08 entnehmen. Die Begriffe CPU und Prozessor können in der gesamten Beschreibung austauschbar verwendet werden.
  • Unter Bezugnahme auf 1A werden charakteristische Komponenten eines Host-Computersystems 50 dargestellt. Sonstige Anordnungen von Komponenten können ebenfalls in einem Computersystem eingesetzt werden, die sämtlich nach dem Stand der Technik allgemein bekannt sind. Der charakteristische Host-Computer 50 weist eine oder mehrere CPUs 1 auf, die mit einem Hauptspeicher (Computerspeicher 2) wie auch mit E/A-Schnittstellen zu Speichereinheiten 11 und Netzwerken 10 zum Austauschen von Daten mit anderen Computern oder SANs und dergleichen in Verbindung stehen. Die CPU 1 entspricht einer Architektur, die einen architekturdefinierten Befehlssatz und eine architekturdefinierte Funktionalität aufweist. Die CPU 1 kann eine dynamische Adressumsetzung (DAT) 3 zum Umsetzen von Programmadressen (virtuellen Adressen) in reale Adressen eines Speichers aufweisen. Eine DAT beinhaltet üblicherweise einen Adressumsetzpuffer (Translation Lookaside Buffer, TLB) 7 zum Zwischenspeichern von Umsetzungen, sodass für spätere Zugriffe auf den Block des Computerspeichers 2 keine Verzögerung der Adressumsetzung erforderlich ist. Üblicherweise wird ein Cache 9 zwischen dem Computerspeicher 2 und dem Prozessor 1 eingesetzt. Der Cache 9 kann hierarchisch mit einem großen Cache, der für mehr als eine CPU bereitgestellt wird, und kleineren, schnelleren (untergeordneten) Caches zwischen dem großen Cache und jeder CPU sein. Bei einigen Implementierungen sind die untergeordneten Caches aufgeteilt, um getrennte untergeordnete Caches zum Abrufen von Befehlen und für Datenzugriffe bereitzustellen. Bei einer Ausführungsform wird ein Befehl durch eine Befehlsabrufeinheit 4 über einen Cache 9 aus dem Speicher 2 abgerufen. Der Befehl wird in einer Befehlsentschlüsselungseinheit (6) entschlüsselt und (bei einigen Ausführungsformen mit sonstigen Befehlen) Befehlsausführungseinheiten 8 zugeteilt. Üblicherweise werden mehrere Ausführungseinheiten 8 eingesetzt, zum Beispiel eine arithmetische Ausführungseinheit, eine Gleitkomma-Ausführungseinheit und eine Verzweigungsbefehls-Ausführungseinheit. Der Befehl wird durch die Ausführungseinheit ausgeführt, indem sie gegebenenfalls auf Operanden aus befehlsspezifizierten Registern oder dem Speicher zugreift. Wenn von dem Speicher 2 auf einen Operanden zugegriffen (geladen oder gespeichert) werden soll, verarbeitet üblicherweise eine Ladespeichereinheit 5 den Zugriff unter Steuerung des Befehls, der ausgeführt wird. Befehle können in Hardware-Schaltungen oder in internem Mikrocode (Firmware) oder durch eine Kombination aus beidem ausgeführt werden.
  • In 1B wird eine Ausführungsform eines emulierten Host-Computersystems 21 bereitgestellt, das ein Host-Computersystem 50 einer Host-Architektur emuliert. In dem emulierten Host-Computersystem 21 ist der Host-Prozessor (CPU) 1 ein emulierter Host-Prozessor (oder virtueller Host-Prozessor) und weist einen Emulationsprozessor 27 mit einer anderen nativen Befehlssatzarchitektur als derjenigen des Prozessors 1 des Host-Computers 50 auf. Das emulierte Host-Computersystem 21 weist einen Speicher 22 auf, auf den der Emulationsprozessor 27 zugreifen kann. Bei der beispielhaften Ausführungsform ist der Speicher 22 in einen Abschnitt eines Host-Computerspeichers 2 und einen Abschnitt von Emulationsroutinen 23 partitioniert. Der Host-Computerspeicher 2 ist für Programme des emulierten Host-Computers 21 gemäß der Host-Computerarchitektur verfügbar.
  • Der Emulationsprozessor 27 führt native Befehle eines architekturdefinierten Befehlssatzes einer anderen Architektur als derjenigen des emulierten Prozessors 1 aus, wobei die nativen Befehle von einem Emulationsroutinenspeicher 23 bezogen werden, und kann auf einen Host-Befehl zum Ausführen von einem Programm im Host-Computerspeicher 2 durch Einsetzen eines oder mehrerer Befehle zugreifen, die in einer Sequenz- & Zugriffs-/Entschlüsselung-Routine bezogen werden, die den/die Host-Befehl(e) entschlüsseln kann, auf die zugegriffen wird, um eine Ausführungsroutine für native Befehle zum Emulieren der Funktion des Host-Befehls zu ermitteln, auf den zugegriffen wird. Sonstige Einrichtungen, die für die Architektur des Host-Computersystems 50 definiert sind, können durch architekturdefinierte Einrichtungsroutinen, darunter zum Beispiel solche Einrichtungen wie Allgemeinregister, Steuerregister, dynamische Adressumsetzung und E/A-Teilsystemunterstützung und einen Prozessor-Cache emuliert werden. Die Emulationsroutinen können auch eine Funktion nutzen, die in dem Emulationsprozessor 27 verfügbar ist (wie zum Beispiel Allgemeinregister und dynamische Umsetzung von virtuellen Adressen), um die Leistungsfähigkeit der Emulationsroutinen zu verbessern. Spezielle Hardware und Offload-Engines können ebenfalls bereitgestellt werden, um den Prozessor 27 beim Emulieren der Funktion des Host-Computers 50 zu unterstützen.
  • Bei einem Großrechner werden architekturdefinierte Maschinenbefehle von Programmierern wie zum Beispiel von „C”-Programmierern durch eine Compiler-Anwendung verwendet. Diese in dem Speichermedium gespeicherten Befehle können nativ in einem Großrechner-Server oder alternativ in Maschinen ausgeführt werden, die sonstige Architekturen ausführen. Sie können in den bestehenden und in künftigen Großrechner-Servern und auf sonstigen Maschinen emuliert werden. Sie können in Maschinen, die auf Betriebssystemen wie zum Beispiel Open Source ausgeführt werden, einer großen Vielfalt von Maschinen, die von verschiedenen Unternehmen gefertigte Hardware verwenden, in einem Emulationsmodus ausgeführt werden. Im Emulationsmodus wird eine Emulations-Software durch einen nativen Prozessor ausgeführt, um die Architektur eines emulierten Prozessors zu emulieren.
  • Der native Prozessor 27 führt die Emulations-Software 23, die entweder Firmware oder ein natives Betriebssystem aufweist, üblicherweise aus, um eine Emulation des emulierten Prozessors durchzuführen. Die Emulations-Software 23 ist für das Abrufen und Ausführen von Befehlen der emulierten Prozessorarchitektur zuständig. Die Emulations-Software 23 führt einen emulierten Programmzähler, um Befehlsgrenzen nachzuverfolgen. Die Emulations-Software 23 kann einen oder mehrere emulierte Maschinenbefehle gleichzeitig abrufen und den einen oder die mehreren emulierten Maschinenbefehle in eine entsprechende Gruppe von nativen Maschinenbefehlen zur Ausführung durch den nativen Prozessor 27 umwandeln. Die umgewandelten Befehle können im Cache gespeichert werden, sodass eine schnellere Umwandlung erreicht werden kann. Nichtdestotrotz muss die Emulations-Software die Architekturregeln der emulierten Prozessorarchitektur so einhalten, dass sichergestellt wird, dass Betriebssysteme und für den emulierten Prozessor geschriebene Anwendungen korrekt funktionieren. Des Weiteren muss die Emulations-Software Ressourcen bereitstellen, die durch die Architektur des emulierten Prozessors 1 identifiziert werden, darunter Steuerregister, Allgemeinregister, Gleitkommaregister, eine dynamische Adressumsetzungsfunktion, die zum Beispiel Segmenttabellen und Seitentabellen beinhaltet, Interrupt-Mechanismen, Kontextwechselmechanismen, Tageszeitgeber (Time of Day, TOD clocks) und architekturdefinierte Schnittstellen zu E/A-Teilsystemen, ohne auf diese beschränkt zu sein, sodass ein Betriebssystem oder ein Anwendungsprogramm, das dazu konzipiert ist, auf dem emulierten Prozessor ausgeführt zu werden, auf dem nativen Prozessor ausgeführt werden kann, der die Emulations-Software aufweist.
  • Ein spezifischer Befehl, der emuliert wird, wird entschlüsselt, und ein Unterprogramm wird aufgerufen, um die Funktion des jeweiligen Befehls durchzuführen. Eine Emulations-Software-Funktion 23, die eine Funktion eines emulierten Prozessors 1 emuliert, wird zum Beispiel in einem „C”-Unterprogramm oder -Treiber oder einem anderen Verfahren zum Bereitstellen eines Treibers für die spezifische Hardware implementiert, wie es Fachleuten möglich sein wird, nachdem sie die Beschreibung der bevorzugten Ausführungsform nachvollzogen haben. Verschiedene Patente zur Software- und Hardware-Emulation, darunter (1) US-Pat. Nr. 5 551 013 für eine „Multiprocessor for hardware emulation” von Beausoleil et al.; (2) US-Pat. Nr. 6 009 261 : „Preprocessing of stored target routines for emulating incompatible instructions an a target processor” von Scalzi et al; (3) US-Pat. Nr. 5 574 873 : „Decoding guest instruction to directly access emulation routines that emulate the guest instructions” von Davidian et al; (4) US-Pat. Nr. 6 308 255 : „Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system” von Gorishek et al; (5) US-Pat. Nr. 6 463 582 : „Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method” von Lethin et al; (6) US-Pat. Nr. 5 790 825 : „Method for emulating guest instructions an a host computer through dynamic recompilation of host instructions” von Eric Traut; und viele andere, ohne auf diese beschränkt zu sein, veranschaulichen eine Vielfalt von bekannten Möglichkeiten, eine Emulation eines Befehlsformats, dessen Architektur für eine andere Maschine definiert worden ist, für eine Zielmaschine zu definieren, die für Fachleute verfügbar sind, wie auch diejenigen handelsüblichen Software-Techniken, die durch die oben genannten verwendet werden.
  • 1C veranschaulicht ein Datenverarbeitungs-Netzwerk 100, in dem eine Ausführungsform umgesetzt werden kann. Das Datenverarbeitungs-Netzwerk 100 kann eine Mehrzahl von einzelnen Netzwerken wie zum Beispiel ein drahtloses Netzwerk und ein drahtgebundenes Netzwerk beinhalten, die jeweils eine Mehrzahl von einzelnen Arbeitsplatzrechnern 101, 102, 103, 104, 105 beinhalten können. Darüber hinaus können, wie Fachleuten ersichtlich ist, ein oder mehrere LANs enthalten sein, wobei ein LAN eine Mehrzahl von intelligenten Arbeitsplatzrechnern aufweisen kann, die mit einem Host-Prozessor verbunden sind.
  • Weiterhin unter Bezugnahme auf 1 können die Netzwerke außerdem Großrechen-Computer oder -Server wie einen Gateway-Computer (Client-Server 106) oder einen Anwendungs-Server (einen entfernt angeordneten Server 108, der auf eine Datenablage zugreifen kann und auf den auch direkt von einem Arbeitsplatzrechner 105 zugegriffen werden kann) beinhalten. Ein Gateway-Computer 106 dient als Einstiegspunkt in jedes Netzwerk 107. Ein Gateway ist erforderlich, wenn ein Netzwerkprotokoll mit einem anderen verbunden wird. Das Gateway 106 kann bevorzugt mithilfe einer Datenübertragungsverbindung mit einem weiteren Netzwerk (zum Beispiel dem Internet 107) verbunden werden. Das Gateway 106 kann mithilfe einer Datenübertragungsverbindung auch direkt mit dem einen oder den mehreren Arbeitsplatzrechnern 101, 102, 103, 104 verbunden werden.
  • In dem US-Pat. Nr. 6 578 111 , „Cache memory system and method for managing streaming-data”, 10. Juni 2003, wird ein Cache-Speichersystem wie folgt beschrieben: Ein System und ein Verfahren werden zum effizienten Verarbeiten von Streaming-Daten in einem Cache-Speichersystem bereitgestellt, das einen Cache mit mehreren Cache-Zeilen aufweist, die in der Lage sind, Daten zu speichern. In einem Aspekt wird ein Verfahren bereitgestellt, um vor einem Speichern von Daten in einer Cache-Zeile zu ermitteln, ob das Speichern von Daten frühere Daten ersetzt, die bereits in dem Cache gespeichert sind. Wenn das Speichern von Daten Daten in dem Cache ersetzt, wird ermittelt, ob es sich bei den Daten, die ersetzt werden, um Streaming-Daten handelt. Wenn es sich bei den zu ersetzenden Daten nicht um Streaming-Daten handelt, werden sie in einem Auswahl-Cache gespeichert. Wenn es sich bei den zu ersetzenden Daten jedoch um Streaming-Daten handelt, werden sie nicht in dem Auswahl-Cache gespeichert, wodurch die Systemeffizienz verbessert wird, indem das Kopieren von zu ersetzenden Daten beseitigt wird und ein Ersetzen anderer früherer Daten in dem Auswahl-Cache vermieden wird, die möglicherweise zukünftig benötigt werden.
  • Moderne Computersysteme beinhalten im Allgemeinen eine Zentraleinheit (central processing unit, CPU) oder einen Prozessor zum Verarbeiten von Daten und ein Speichersystem zum Speichern von Operationsbefehlen und Daten. Üblicherweise überschreitet die Geschwindigkeit, mit der der Prozessor in der Lage ist, Befehle zum Verarbeiten von Daten zu entschlüsseln und auszuführen, die Geschwindigkeit, mit der Befehle und Daten zwischen dem Speichersystem und dem Prozessor übertragen werden. Folglich ist der Prozessor häufig gezwungen, auf eine Antwort des Speichersystems zu warten. Eine Möglichkeit, diese Speicherlatenzzeit zu verringern, besteht darin, einen Computerspeicher in einer Speicherhierarchie zu gliedern. Eine Speicherhierarchie besteht aus mehreren Speicherebenen, die jeweils verschiedene Einheiten zum Speichern von Daten verwenden und jeweils verschiedene Geschwindigkeiten, Kapazitäten und damit verbundene Kosten aufweisen. Allgemein ist der Speicher der untersten Ebene, der gemeinhin als Cache bezeichnet wird, eng mit dem Prozessor verbunden und verwendet relativ teure, schnellere Einheiten, die Informationen, entweder Daten oder Befehle, in kürzerer Zeit für den Prozessor verfügbar machen. Die übergeordneten Ebenen beinhalten üblicherweise einen Hauptspeicher und Massendaten-Speichereinheiten, die, obwohl sie größer sind, langsamer und daher entsprechend preiswerter sind.
  • Die Verwendung eines Cache verringert die Speicherlatenzzeit, indem vorübergehend ein kleiner Teilsatz von Daten aus übergeordneten Ebenen des Speichersystems gespeichert wird. Wenn der Prozessor Informationen für eine Anwendung benötigt, überprüft er zunächst den Hochgeschwindigkeits-Cache. Wenn die Informationen in dem Cache gefunden werden (als Cache-Treffer bezeichnet), werden die Informationen aus dem Cache abgerufen, und die Ausführung wird fortgesetzt. Wenn die Informationen nicht in dem Cache gefunden werden (als Cache-Fehltreffer bezeichnet), geht der Prozessor dazu über, auf die langsameren, übergeordneten Speicher zuzugreifen. Informationen, auf die in den übergeordneten Speichern zugegriffen wird, werden gleichzeitig in dem untergeordneten Cache gespeichert oder geschrieben, sodass, falls die Informationen zukünftig erneut benötigt würden, sie direkt aus dem untergeordneten Cache bezogen werden, wodurch jegliche Speicherlatenzzeit verringert oder beseitigt wird.
  • In ähnlicher Weise kann die Verwendung eines Cache die Speicherlatenzzeit während einer Schreiboperation durch Schreiben in den Cache verringern. Dies verringert die Speicherlatenzzeit in zweifacher Hinsicht. Erstens dadurch, dass der Prozessor in die Lage versetzt wird, in der erheblich größeren Geschwindigkeit des Cache zu schreiben, und zweitens dadurch, dass die Informationen so in dem Cache gespeichert oder in diesen geladen werden, dass, falls der Prozessor die Informationen zukünftig benötigt, sie direkt aus dem Cache bezogen werden.
  • Heutzutage werden drei Haupttechnologietypen in Speichern verwendet. Der Hauptspeicher wird üblicherweise mithilfe von langsameren, preiswerteren dynamischen Direktzugriffsspeicher(DRAM)-Einheiten implementiert. Der Cache wird mithilfe von schnelleren Direktzugriffsspeichereinheiten wie zum Beispiel statischen Direktzugriffsspeicher(SRAM)-Einheiten implementiert, sodass ein Zugreifen auf einen Cache erheblich weniger Zeit für seine Durchführung in Anspruch nimmt, als es bei einem Zugriff auf den Hauptspeicher der Fall ist. SRAMs erfordern üblicherweise eine größere Anzahl von Einheiten je Bit gespeicherter Informationen und sind folglich kostspieliger als DRAM. Um die Speicherlatenzzeit weiter zu verringern, kann sich der Cache auf demselben Chip wie die CPU befinden. Die Nähe des Cache zu der CPU erhöht die Geschwindigkeit, mit der die CPU auf den Cache zugreifen kann, indem Verzögerungen aufgrund einer Übertragung über externe Schaltungen beseitigt werden. Ein Cache, der sich auf demselben Chip wie die CPU befindet, wird häufig als primärer oder Level-1-Cache (L1-Cache) bezeichnet, da das Speichersystem üblicherweise einen größeren, langsameren Level-2-Cache (L2-Cache) außerhalb des CPU-Chips beinhaltet. Einige Speichersysteme beinhalten zusätzliche Caches, beispielsweise einen Level-(L3-Cache) oder Auswahl-Cache zum vorübergehenden Speichern von Daten, die aus dem L2-Cache verschoben werden.
  • Wie der Name andeutet, stellen Massenspeichereinheiten auf der höchsten Ebene im Speicher die größte Datenspeicherkapazität bereit und verwenden üblicherweise die langsamste und daher preiswerteste Technologie. Beispielsweise magnetische, optische oder magnetooptische Technologien zum Speichern von großen Mengen an Befehlen und Daten auf Bändern oder Fest- oder Wechselplatten.
  • Unter Bezugnahme auf 2A wird ein Cache 210 logisch in zwei Hauptkomponenten oder Funktionseinheiten unterteilt. In einen Datenspeicher 215, in dem die zwischengespeicherten Informationen tatsächlich gespeichert werden, und ein Kennungsfeld 220, einen kleinen Bereich des Speichers, der durch den Cache dazu verwendet wird, die Position im Speicher nachzuverfolgen, an der die zugehörigen Daten zu finden sind. Der Datenspeicher ist als Anzahl von Cache-Zeilen 225 oder als Sätze von Cache-Zeilen strukturiert oder angeordnet, denen jeweils ein Kennungsfeld 220 zugehörig ist, und die jeweils in der Lage sind, mehrere Blöcke oder Bytes von Daten zu speichern. Üblicherweise kann bei modernen Computern jede Cache-Zeile 225 32 oder 64 Byte an Daten speichern. Jeder Cache-Zeile ist ein Kennungsfeld 220 zugehörig. Bei einem n-fach-Cache sind n Kennungen für jeden Satz vorhanden. Das Kennungsfeld 220 für jede Cache-Zeile 225 beinhaltet einen Index 230, der jede Cache-Zeile oder Sätze von Cache-Zeilen in dem Cache 210 eindeutig identifiziert, und eine Kennung 235, die in Kombination mit dem Index verwendet wird, um eine Adresse in einem übergeordneten Speicher 240 zu kennzeichnen, von dem in der Cache-Zeile gespeicherte Daten gelesen oder in den sie geschrieben worden sind. Häufig wird der Index 230 nicht in dem Cache 210 gespeichert, sondern wird impliziert, wobei die Adresse der Cache-Zeile 225 selbst den Index bereitstellt. Üblicherweise beinhaltet das Kennungsfeld 220 für jede Cache-Zeile 225 außerdem ein oder mehr Bits, die allgemein als Gültigkeits-Bit 245 bezeichnet werden, um anzugeben, ob die Cache-Zeile gültige Daten enthält. Darüber hinaus kann das Kennungsfeld 220 sonstige (nicht dargestellte) Bits enthalten, um beispielsweise anzugeben, ob Daten an dieser Position geändert worden sind, dass sie modifiziert, jedoch nicht in den übergeordneten Speicher 240 zurückgeschrieben worden sind.
  • Um Speicherzugriffsoperationen zu beschleunigen, setzen Caches auf Prinzipien zeitlicher und räumlicher Lokalität. Diese Prinzipien der Lokalität beruhen auf der Annahme, dass ein Computerprogramm im Allgemeinen nur auf einen relativ kleinen Abschnitt der Informationen zugreift, die in einem Computerspeicher in einem bestimmten Zeitraum verfügbar sind. Im Besonderen gilt für die zeitliche Lokalität, dass, wenn auf bestimmte Informationen einmal zugegriffen wird, wahrscheinlich bald erneut auf sie zugegriffen wird, und für die räumliche Lokalität gilt, dass, wenn auf eine Speicherposition zugegriffen wird, wahrscheinlich auch auf andere Speicherpositionen in der Nähe zugegriffen wird. Um die zeitliche Lokalität auszunutzen, speichern Caches daher vorübergehend Informationen aus einem übergeordneten Speicher, wenn zum ersten Mal darauf zugegriffen wird, sodass sie, wenn bald erneut darauf zugegriffen wird, nicht aus dem übergeordneten Speicher abgerufen werden müssen. Um die räumliche Lokalität auszunutzen, übertragen Caches jedes Mal, wenn Daten aus einem übergeordneten Speicher in den Cache geschrieben werden, mehrere Blöcke von Daten von zusammenhängenden Adressen in einem übergeordneten Speicher zusätzlich zu dem angeforderten Block von Daten.
  • Die wichtigste Eigenschaften eines Cache sind seine Trefferrate, das heißt, der Anteil sämtlicher Speicherzugriffe, die aus dem Cache über einen bestimmten Zeitraum erfüllt werden, und seine Zugriffszeit, das heißt, die Zeit, die zum Lesen aus dem oder zum Schreiben in den Cache benötigt wird. Diese hängen wiederum zum großen Teil davon ab, wie der Cache auf Adressen in dem übergeordneten Speicher abgebildet wird. Die Wahl der Abbildungstechnik ist für die Konstruktion des Cache so entscheidend, dass der Cache häufig nach dieser Wahl benannt wird. Es bestehen allgemein drei verschiedene Möglichkeiten, den Cache auf die Adressen im Speicher abzubilden.
  • Direktes Abbilden, in 2A dargestellt, ist die einfachste Möglichkeit, einen Cache auf Adressen im Hauptspeicher abzubilden. Beim Verfahren des direkten Abbildens wird die Anzahl von Cache-Zeilen ermittelt, die Adressen im Speicher werden in dieselbe Anzahl von Gruppen von Adressen aufgeteilt, und Adressen in jeder Gruppe werden mit einer Cache-Zeile verknüpft. Für einen Cache mit 2^n Cache-Zeilen werden die Adressen zum Beispiel in 2^n Gruppen aufgeteilt, und jede Adresse in einer Gruppe wird mit einer einzelnen Cache-Zeile verknüpft. Die niedrigsten n Adress-Bits einer Adresse entsprechen dem Index der Cache-Zeile, in der Daten von der Adresse gespeichert werden. Die verbleibenden obersten Adress-Bits werden als Kennung gespeichert, die angibt, von welcher der mehreren möglichen Adressen in der Gruppe die Daten stammen. Um zum Beispiel einen 64-Megabyte(MB)-Hauptspeicher auf einen direkt abgebildeten 512-Kilobyte(KB)-Cache mit 16.384 Cache-Zeilen abzubilden, wird jede Cache-Zeile durch eine Gruppe von 4.096 Adressen im Hauptspeicher gemeinsam genutzt. Für eine Adressierung von 64 MB Speicher sind 26 Adress-Bits erforderlich, da 64 MB 2^26 Byte entsprechen. Die niedrigsten fünf dieser Adress-Bits, A0 bis A4, werden beim Abbildungsprozess ignoriert, wenngleich der Prozessor sie später dazu verwendet zu ermitteln, auf welche der 32 Byte Daten in der Cache-Zeile zugegriffen werden soll. Die nächsten 14 Adress-Bits, A5 bis A18, stellen den Index der Cache-Zeile bereit, auf die die Adresse abgebildet ist. Da jede Cache-Zeile Daten von jeder beliebigen der 4.096 möglichen Adressen im Hauptspeicher enthalten kann, werden die nächsten sieben höchsten Adress-Bits, A19 bis A25, als Kennung verwendet, um dem Prozessor anzugeben, von welcher der Adressen die Cache-Zeile Daten enthält. Dieses Schema ist zwar einfach, hat jedoch den Nachteil, dass, wenn das Programm abwechselnd auf verschiedene Adressen zugreift, die auf dieselbe Cache-Position abgebildet sind, d. h. Adressen innerhalb derselben Gruppe, ein Cache-Fehltreffer bei jedem Zugriff auf diese Positionen auftritt.
  • Ein vollassoziativ abgebildeter Cache (nicht dargestellt) vermeidet den Cache-Konflikt des direkt abgebildeten Cache, indem er zulässt, dass Blöcke von Daten von einer beliebigen Adresse im Hauptspeicher an einer beliebigen Position im Cache gespeichert werden. Ein Problem bei vollassoziativen Caches besteht jedoch darin, dass die gesamte Hauptspeicheradresse als Kennung verwendet werden muss, wodurch die Größe des Kennungsfeldes erhöht wird und die Cache-Kapazität zum Speichern von Daten abnimmt. Da die angeforderte Adresse gleichzeitig (assoziativ) mit sämtlichen Kennungen in dem Cache verglichen werden muss, wird zudem die Zugriffszeit für den Cache erhöht.
  • Ein 2-fach satzassoziativer Cache, dargestellt in 2B, ist ein Kompromiss zwischen der direkt abgebildeten und der vollassoziativen Konstruktion. Bei dieser Konstruktion wird der Cache 210 in Sätze 250 unterteilt, die jeweils eine Nummer oder ID, 2, 4, 8 usw. von Cache-Zeilen 225 aufweisen, und jede Adresse im Hauptspeicher 240 wird einem Satz zugewiesen und ist in der Lage, in einer beliebigen der Cache-Zeilen innerhalb des Satzes gespeichert zu werden. Üblicherweise wird ein solcher Cache als n-fach satzassoziativer Cache bezeichnet, wobei n die Anzahl der Cache-Zeilen in jedem Satz ist. 2B stellt ein Beispiel für einen 2-fach satzassoziativen Cache dar.
  • Speicheradressen werden in dem Cache in ähnlicher Weise abgebildet wie bei dem direkt abgebildeten Cache. Um zum Beispiel einen 64-MB-Hauptspeicher mit 26 Adress-Bits auf einen 4-fach satzassoziativen 512-KB-Cache abzubilden, wird der Cache in 4.096 Sätze von jeweils 4 Cache-Zeilen aufgeteilt, und 16.384 Adressen im Hauptspeicher werden mit jedem Satz verknüpft. Die Adress-Bits A5 bis A16 einer Speicheradresse stellen den Index des Satzes dar, auf die die Adresse abgebildet ist. Die Speicheradresse könnte auf eine beliebige der vier Cache-Zeilen in dem Satz abgebildet werden. Da jede Cache-Zeile innerhalb eines Satzes Daten von jeder beliebigen der 16.384 möglichen Speicheradressen enthalten kann, werden die nächsten neun höchsten Adress-Bits, A17 bis A25, als Kennung verwendet, um dem Prozessor anzugeben, von welcher der Speicheradressen die Cache-Zeile Daten enthält. Die niedrigsten fünf Adress-Bits, A0 bis A4, werden wiederum beim Abbildungsprozess ignoriert, wenngleich der Prozessor sie später dazu verwendet zu ermitteln, auf welche der 32 Byte Daten in der Cache-Zeile zugegriffen werden soll.
  • Wenn ein vollassoziativer oder ein satzassoziativer Cache voll ist und eine weitere Cache-Zeile von Daten in dem Cache gespeichert werden soll, wird eine Cache-Zeile ausgewählt, die in den Hauptspeicher oder einen übergeordneten Auswahl-Cache zurückgeschrieben oder geleert werden soll. Anschließend werden die neuen Daten anstelle der geleerten Cache-Zeile gespeichert. Die zu leerende Cache-Zeile wird auf Grundlage einer Ersetzungsrichtlinie ausgewählt, die über einen Ersetzungsalgorithmus implementiert wird.
  • Es sind mehrere verschiedene Ersetzungsalgorithmen vorhanden, die verwendet werden können. Ein genutzter Ersetzungsalgorithmus wird als „Am längsten ungenutzt”(Least Recently Used, LRU)-Ersetzungsalgorithmus bezeichnet. Gemäß dem LRU-Ersetzungsalgorithmus führt die Cache-Steuereinheit für jede Cache-Zeile in einem Register mehrere Status-Bits, die die Häufigkeit nachverfolgen, mit der zuletzt auf die Cache-Zeile zugegriffen wurde, einen Cache-Zeilenstatus. Jedes Mal, wenn auf eine der Cache-Zeilen zugegriffen wird, wird sie als „zuletzt verwendet” (most recently used, MRU) gekennzeichnet, und die anderen Cache-Zeilen in demselben Satz von Cache-Zeilen werden entsprechend angepasst. Eine Cache-Zeile wird als zu leerend ausgewählt, wenn vor weniger kurzer Zeit auf sie zugegriffen (gelesen oder geschrieben) worden ist als auf jede andere Cache-Zeile in dem Satz von Cache-Zeilen, d. h. die LRU-Cache-Zeile. Die LRU-Ersetzungsrichtlinie beruht auf der Annahme, dass es im Allgemeinen am unwahrscheinlichsten ist, dass in Kürze auf die Cache-Zeile zugegriffen wird, auf die am längsten nicht zugegriffen worden ist. Bei einem 8-fach satzassoziativen Cache verfolgt die LRU-Logik zum Beispiel die Reihenfolge der jüngsten Nutzung jeder der 8 Satz-IDs für jede Zeile des Cache.
  • Zu sonstigen verwendeten Ersetzungsschemata zählen zufälliges Ersetzen, ein Algorithmus, der eine beliebige Cache-Zeile mit gleicher Wahrscheinlichkeit auswählt; First-In-First-Out (FIFO, zuerst hinein, zuerst hinaus), ein Algorithmus, der einfach die erste Cache-Zeile ersetzt, die in eine(n) bestimmte(n) Satz oder Gruppe von Cache-Zeilen geladen wird; und Least-Frequently-Used (LFU, am seltensten verwendet), ein Algorithmus, der die am wenigsten verwendete Cache-Zeile ersetzt, indem er zählt (mit einem oberen Grenzwert), wie häufig eine Cache-Zeile verwendet worden ist.
  • Unter Bezugnahme auf 3 wird eine beispielhafte Prozessorausführungsform für den Prozessor 106 dargestellt. Üblicherweise werden eine oder mehrere Ebenen des Cache 303 zum Zwischenspeichern von Speicherblöcken eingesetzt, um die Prozessorleistungsfähigkeit zu verbessern. Der Cache 303 ist ein Hochgeschwindigkeits-Zwischenspeicher, der Cache-Zeilen von Speicherdaten enthält, die wahrscheinlich verwendet werden. Typische Cache-Zeilen sind 32, 64, 128 oder 256 Byte an Speicherdaten. Häufiger werden getrennte Caches zum Zwischenspeichern von Befehlen als zum Zwischenspeichern von Daten eingesetzt. Cache-Kohärenz (Synchronisation von Kopien von Zeilen im Speicher und den Caches) zwischen mehreren Prozessoren wird häufig durch verschiedene „Snoop”-Algorithmen bereitgestellt, die nach dem Stand der Technik allgemein bekannt sind.
  • Ein Programmzähler (Befehlszähler) 311 verfolgt die Adressen des aktuellen auszuführenden Befehls nach. Ein Programmzähler in einem z/Architecture-Prozessor ist 64 Bit groß und kann auf 31 oder 24 Bit gekürzt werden, um frühere Adressierungsgrenzen zu unterstützen. Ein Programmzähler wird üblicherweise so in einem PSW (Programmstatuswort) eines Computers verkörpert, dass er während eines Kontextwechsels bestehen bleibt. Auf diese Weise kann ein Programm, das ausgeführt wird und einen Programmzählerwert aufweist, zum Beispiel durch das Betriebssystem unterbrochen werden (Kontextwechsel von der Programmumgebung zu der Betriebssystemumgebung). Das PSW des Programms erhält den Programmzählerwert aufrecht, 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. Üblicherweise wird der Programmzähler um einen Betrag erhöht, der gleich der Anzahl der Bytes des aktuellen Befehls ist. RISC(Reduced-Instruction-Set-Computing)-Befehle weisen üblicherweise eine feste Länge auf, wohingegen CISC(Complex-Instruction-Set-Computing)-Befehle üblicherweise eine veränderliche Länge aufweisen. Bei Befehlen der IBM z/Architecture handelt es sich um CISC-Befehle mit einer Länge von 2, 4 oder 6 Byte. Der Programmzähler 311 wird zum Beispiel entweder durch eine Kontextwechseloperation oder durch eine Verzweigung-ausgeführt-Operation eines Verzweigungsbefehls modifiziert. Bei einer Kontextwechseloperation wird der aktuelle Programmzählerwert zusammen mit anderen Statusinformationen über das Programm, das ausgeführt wird (wie zum Beispiel Bedingungscodes), in einem Programmstatuswort (PSW) gespeichert, und ein neuer Programmzählerwert wird geladen, der auf einen Befehl eines neuen Programmmoduls zeigt, das ausgeführt werden soll. Eine Verzweigung-ausgeführt-Operation wird durchgeführt, um dem Programm zu gestatten, Entscheidungen zu treffen oder innerhalb des Programms eine Schleife zu durchlaufen, indem das Ergebnis des Verzweigungsbefehls in den Programmzähler 311 geladen wird.
  • Üblicherweise wird eine Befehlsabrufeinheit 305 eingesetzt, um Befehle im Namen des Prozessors 106 abzurufen. Die Abrufeinheit ruft entweder „nächste sequenzielle Befehle”, Zielbefehle von Verzweigung-ausgeführt-Befehlen oder erste Befehle eines Programms im Anschluss an einen Kontextwechsel ab. Moderne Befehlsabrufeinheiten setzen häufig Vorababruftechniken ein, um Befehle auf Grundlage der Wahrscheinlichkeit, dass die vorab abgerufenen Befehle verwendet werden könnten, spekulativ vorab abzurufen. Eine Abrufeinheit kann zum Beispiel 16 Bytes eines Befehls, der den nächsten sequenziellen Befehl enthält, und zusätzliche Bytes von weiteren sequenziellen Befehlen abrufen.
  • Die abgerufenen Befehle werden dann durch den Prozessor 106 ausgeführt. Bei einer Ausführungsform wird/werden der/die abgerufene(n) Befehl(e) an eine Zuteilungseinheit 306 der Abrufeinheit übergeben. Die Zuteilungseinheit entschlüsselt den/die Befehl(e) und leitet Informationen über den/die decodierten Befehl(e) an entsprechende Einheiten 307 308 310 weiter. Eine Ausführungseinheit 307 empfängt üblicherweise Informationen über entschlüsselte arithmetische Befehle von der Befehlsabrufeinheit 305 und führt entsprechend dem Op-Code des Befehls arithmetische Operationen an Operanden aus. Operanden werden der Ausführungseinheit 307 bevorzugt aus dem Speicher 105, den architekturdefinierten Registern 309 oder aus einem Direktfeld des Befehls, der ausgeführt wird, bereitgestellt. Ergebnisse der Ausführung werden, wenn sie gespeichert werden, entweder im Speicher 105, in den Registern 309 oder in sonstiger Maschinen-Hardware (wie zum Beispiel in Steuerregistern, PSW-Registern und dergleichen) gespeichert.
  • Ein Prozessor 106 weist üblicherweise eine oder mehrere Ausführungseinheiten 307 308 310 auf, um die Funktion des Befehls auszuführen. Unter Bezugnahme auf 4A kann eine Ausführungseinheit 307 mit architekturdefinierten Allgemeinregistern 309, einer Entschlüsselungs-/Zuteilungseinheit 306, einer Lade/Speicher-Einheit 310 und sonstigen 401 Prozessoreinheiten über eine Schnittstellenlogik 407 Daten austauschen. Eine Ausführungseinheit 307 kann mehrere Registerschaltungen 403 404 405 einsetzen, um Informationen aufzunehmen, an denen die arithmetisch-logische Einheit (ALU) 402 Operationen durchführen wird. Die ALU führt arithmetische Operationen wie zum Beispiel Addieren, Subtrahieren, Multiplizieren und Dividieren wie auch logische Funktionen wie Und, Oder und exklusives Oder (xor), Rotieren und Verschieben durch. Die ALU unterstützt bevorzugt spezielle Operationen, die von der Konstruktion abhängig sind. Sonstige Schaltungen können andere architekturdefinierte Einrichtungen 408 bereitstellen, darunter zum Beispiel Bedingungscodes und Wiederherstellungs-Unterstützungslogik. Üblicherweise wird das Ergebnis einer ALU-Operation in einer Ausgaberegisterschaltung 406 gehalten, die das Ergebnis an eine Vielfalt von sonstigen Verarbeitungsfunktionen weiterleiten kann. Es bestehen zahlreiche Anordnungen von Prozessoreinheiten, die vorliegende Beschreibung soll lediglich ein repräsentatives Verständnis einer Ausführungsform ermöglichen.
  • Ein ADD-Befehl würde beispielsweise in einer Ausführungseinheit 307 ausgeführt, die über eine arithmetische und logische Funktionalität verfügt, wohingegen ein Gleitkommabefehl beispielsweise in einer Gleitkommaausführung ausgeführt würde, die spezielle Gleitkommafunktionen aufweist. Eine Ausführungseinheit führt bevorzugt Operationen an Operanden aus, die durch einen Befehl gekennzeichnet werden, indem sie eine durch einen Op-Code definierte Funktion an den Operanden ausführt. Beispielsweise kann ein ADD-Befehl durch eine Ausführungseinheit 307 an Operanden ausgeführt werden, die in zwei Registern 309 zu finden sind, die durch Registerfelder des Befehls gekennzeichnet sind. Die Ausführungseinheit 307 führt die arithmetische Addition an zwei Operanden durch und speichert das Ergebnis in einem dritten Operanden, wobei es sich bei dem dritten Operanden um ein drittes Register oder um eines der beiden Quellregister handeln kann.
  • Einige ALUs 402 sind für skalare Operationen und einige für Gleitkommaoperationen konstruiert. Bei den Daten kann es sich abhängig von der Architektur um „Big Endian” (wobei sich das niederwertigste Byte an der höchsten Byte-Adresse befindet) oder um „Little Endian” (wobei sich das niederwertigste Byte an der niedrigsten Byte-Adresse befindet) handeln. Die IBM z/Architecture verwendet „Big Endian”. Bei Feldern mit Vorzeichen kann es sich abhängig von der Architektur um Vorzeichen und Betrag, Einerkomplement oder Zweierkomplement handeln. Eine Zweierkomplement-Zahl ist insofern vorteilhaft, als die ALU keine Subtraktions-Funktion konzipieren muss, da sowohl ein negativer Wert als auch ein positiver Wert in dem Zweierkomplement lediglich eine Addition innerhalb der ALU erfordert. Zahlen werden üblicherweise in verkürzter Schreibweise dargestellt, wobei zum Beispiel ein 12-Bit-Feld eine Adresse eines 4.096-Byte-Blocks definiert und üblicherweise als 4-KByte(Kilobyte)-Block beschrieben wird.
  • Unter Bezugnahme auf 4B werden Verzweigungsbefehlsinformationen zum Ausführen eines Verzweigungsbefehls üblicherweise an eine Verzweigungseinheit 308 gesendet, die häufig einen Verzweigungsvorhersage-Algorithmus wie zum Beispiel eine Verzweigungsverlaufstabelle 432 einsetzt, um den Ausgang der Verzweigung vorherzusagen, bevor sonstige bedingte Operationen abgeschlossen sind. Das Ziel des aktuellen Verzweigungsbefehls wird abgerufen und spekulativ ausgeführt, bevor die bedingten Operationen abgeschlossen sind. Wenn die bedingten Operationen abgeschlossen sind, werden die spekulativ ausgeführten Verzweigungsbefehle auf Grundlage der Bedingungen der bedingten Operation und des spekulierten Ausgangs entweder abgeschlossen oder verworfen. Ein typischer Verzweigungsbefehl kann Bedingungscodes prüfen und zu einer Zieladresse verzweigen, wenn die Bedingungscodes die Verzweigungsvoraussetzung des Verzweigungsbefehls erfüllen, eine Zieladresse kann auf Grundlage von mehreren Zahlen, darunter solchen, die beispielsweise in Registerfeldern oder in einem Direktfeld des Befehls zu finden sind, berechnet werden. Die Verzweigungseinheit 308 kann eine ALU 426 einsetzen, die eine Mehrzahl von Eingaberegisterschaltungen 427 428 429 und eine Ausgaberegisterschaltung 430 aufweist. Die Verzweigungseinheit 308 kann zum Beispiel mit den Allgemeinregistern 309, der Entschlüsselungs-/Zuteilungs-Einheit 306 oder sonstigen Schaltungen 425 Daten austauschen.
  • Die Ausführung einer Gruppe von Befehlen kann aus einer Vielfalt von Gründen unterbrochen werden, darunter zum Beispiel ein von einem Betriebssystem veranlasster Kontextwechsel, eine Programmausnahme oder ein Fehler, die/der einen Kontextwechsel bewirkt, ein E/A-Unterbrechungssignal, das einen Kontextwechsel bewirkt, oder ein Multithreading-Vorgang einer Mehrzahl von Programmen (in einer Multithread-Umgebung). Ein Kontextwechselvorgang speichert bevorzugt Statusinformationen über ein Programm, das gerade ausgeführt wird, und lädt dann die Statusinformationen über ein weiteres Programm, das aufgerufen wird. Statusinformationen können zum Beispiel in Hardware-Registern oder im Speicher gespeichert werden. Statusinformationen weisen bevorzugt einen Programmzählerwert, der auf einen nächsten auszuführenden Befehl zeigt, Bedingungscodes, Speicherumsetzungs-Informationen und den Inhalt von architekturdefinierten Registern auf. Ein Kontextwechselvorgang kann durch Hardware-Schaltungen, Anwendungsprogramme, Betriebssystemprogramme oder Firmware-Code (Mikrocode, Picocode oder lizenzierten internen Code (LIC)) allein oder in Kombination durchgeführt werden.
  • Ein Prozessor greift entsprechend Verfahren, die von Befehlen festgelegt werden, auf Operanden zu. Der Befehl kann einen Direktoperanden bereitstellen, der den Wert eines Abschnitts des Befehls verwendet, oder er kann ein oder mehrere Registerfelder bereitstellen, die ausdrücklich auf Allgemeinregister oder Spezialregister (beispielsweise Gleitkommaregister) zeigen. Der Befehl kann implizierte Register nutzen, die durch ein Op-Codefeld als Operanden gekennzeichnet werden. Der Befehl kann Speicherpositionen für Operanden nutzen. Eine Speicherposition eines Operanden kann durch ein Register, ein Direktfeld oder eine Kombination aus Registern und einem Direktfeld bereitgestellt werden, wie es die Einrichtung für lange Verschiebung der z/Architecture beispielhaft zeigt, bei der der Befehl ein Basisregister, ein Indexregister und ein Direktfeld (Verschiebungsfeld) definiert, die addiert werden, um zum Beispiel die Adresse des Operanden im Speicher bereitzustellen. Eine Position bedeutet hier üblicherweise eine Position im Hauptspeicher (Hauptspeicherplatz), sofern nichts anderes angegeben ist.
  • Unter Bezugnahme auf 4C greift ein Prozessor mithilfe einer Lade-/Speicher-Einheit 310 auf den Speicher zu. Die Lade-/Speicher-Einheit 310 kann eine Ladeoperation durchführen, indem sie die Adresse des Zieloperanden im Speicher 303 abruft und den Operanden in ein Register 309 oder in eine andere Position des Speichers 303 lädt, oder sie kann eine Speicheroperation durchführen, indem sie die Adresse des Zieloperanden im Speicher 303 bezieht und Daten, die sie aus einem Register 309 oder einer anderen Position des Speichers 303 bezogen hat, in der Position des Zieloperanden im Speicher 303 speichert. Die Lade-/Speicher-Einheit 310 kann spekulativ sein und auf den Speicher in einer Abfolge zugreifen, die in Bezug auf die Befehlsfolge außerhalb der Reihenfolge ist, jedoch muss die Lade-/Speicher-Einheit 310 gegenüber Programmen den Anschein wahren, dass Befehle in der vorgesehenen Reihenfolge ausgeführt worden sind. Eine Lade-/Speicher-Einheit 310 kann mit den Allgemeinregistern 309, der Entschlüsselungs-/Zuteilungs-Einheit 306, der Cache-/Speicher-Schnittstelle 303 oder sonstigen Elementen 455 Daten austauschen und weist verschiedene Registerschaltungen, ALUs 458 und eine Steuerlogik 463 auf, um Speicheradressen zu berechnen und eine Reihenfolgeplanung in der Pipeline bereitzustellen, um die Reihenfolge der Operationen aufrechtzuerhalten. Einige Operationen können außerhalb der Reihenfolge ablaufen, die Lade-/Speicher-Einheit stellt jedoch Funktionen bereit, damit die außerhalb der Reihenfolge befindlichen Operationen gegenüber dem Programm so dargestellt werden, als wären sie in der vorgesehenen Reihenfolge durchgeführt worden, wie nach dem Stand der Technik allgemein bekannt ist.
  • Adressen, die ein Anwendungsprogramm „sieht”, werden häufig bevorzugt als virtuelle Adressen bezeichnet. Virtuelle Adressen werden bisweilen als „logische Adressen” und „effektive Adressen” bezeichnet. Diese virtuellen Adressen sind insofern virtuell, als sie durch eine von einer Vielfalt von Technologien zur dynamischen Adressumsetzung (Dynamic Address Translation, DAT) 312 zu einer physischen Speicherposition umgeleitet werden, zu denen ein einfaches Versehen einer virtuellen Adresse mit einem Offset-Wert als Präfix, ein Umsetzen der virtuellen Adresse über eine oder mehrere Umsetzungstabellen zählen, ohne auf diese beschränkt zu sein, wobei die Umsetzungstabellen bevorzugt zumindest eine Segmenttabelle und eine Seitentabelle allein oder in Kombination aufweisen, wobei die Segmenttabelle bevorzugt einen Eintrag aufweist, der auf die Seitentabelle zeigt. Bei der z/Architecture wird eine Umsetzungshierarchie bereitgestellt, die eine erste Bereichstabelle, eine zweite Bereichstabelle, eine dritte Bereichstabelle, eine Segmenttabelle und eine optionale Seitentabelle beinhaltet. Die Leistungsfähigkeit der Adressumsetzung wird häufig durch die Nutzung eines Adressumsetz-Pufferspeichers (TLB) verbessert, der Einträge aufweist, die eine virtuelle Adresse auf eine zugehörige physische Speicherposition abbilden. Die Einträge werden erstellt, wenn die DAT 312 eine virtuelle Adresse mithilfe der Umsetzungstabellen umsetzt. Bei einer späteren Verwendung der virtuellen Adresse kann dann anstelle der langsamen sequenziellen Zugriffe auf die Umsetzungstabelle der Eintrag des schnellen TLB verwendet werden. Der Inhalt des TLB kann durch eine Vielfalt von Ersetzungsalgorithmen einschließlich LRU (Least Recently Used) verwaltet werden.
  • Falls es sich bei dem Prozessor um einen Prozessor eines Mehrprozessorsystems handelt, ist jeder Prozessor dafür zuständig, gemeinsam genutzte Ressourcen zu unterhalten, wie zum Beispiel E/A, Caches, TLBs und Speicher, die zum Zweck der Kohärenz ineinandergreifen. Üblicherweise werden „Snooping”-Technologien eingesetzt, um die Cache-Kohärenz aufrechterhalten. In einer Snooping-Umgebung kann jede Cache-Zeile mit einem Status „gemeinsam genutzt”, einem Status „exklusiv”, einem Status „geändert”, einem Status „ungültig” und dergleichen gekennzeichnet werden, um eine gemeinsame Nutzung zu vereinfachen.
  • Die E/A-Einheiten 304 stellen dem Prozessor Mittel zum Anbinden an Peripherieeinheiten, darunter ein Band, eine Platte, Drucker, Anzeigen und Netzwerke, bereit. Die E/A-Einheiten werden dem Computerprogramm häufig durch Software-Treiber übergeben. Bei Großrechnern wie zum Beispiel der z/Series von IBM handelt es sich bei Kanaladaptern und Open-System-Adaptern um EIA-Einheiten des Großrechners, die die Datenübertragungen zwischen dem Betriebssystem und den Peripherieeinheiten bereitstellen.
  • Die folgende Beschreibung, die zum Teil aus „IBM z/Architecture Principles of Operation”, veröffentlicht im August 2010, mit der Referenznummer SA22-7832-08, stammt, beschreibt eine Architekturansicht eines Computersystems:
  • Speicher:
  • Ein Computersystem beinhaltet Informationen in einem Hauptspeicher wie auch Adressierungs-, Schutz- und Verweis- und Änderungsaufzeichnung. Zu einigen Aspekten der Adressierung zählen das Format von Adressen, das Konzept von Adressräumen, die verschiedenen Typen von Adressen und die Art, in der ein Typ einer Adresse in einen anderen Adresstyp umgesetzt wird. Ein Teil des Hauptspeichers beinhaltet dauerhaft zugewiesene Speicherpositionen. Der Hauptspeicher stellt dem System eine direkt adressierbare Speicherung von Daten mit Schnellzugriff bereit. Daten und 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 schnellerem Zugriff beinhalten, die bisweilen als Caches bezeichnet werden. Ein Cache ist üblicherweise physisch einer CPU oder einem E/A-Prozessor zugehörig. Die Auswirkungen der physischen Konstruktion und der Verwendung verschiedener Speichermedien, abgesehen von der Leistungsfähigkeit, sind im Allgemeinen für das Programm nicht zu erkennen.
  • Für Befehle und für Datenoperanden können getrennte Caches vorgehalten werden. Informationen innerhalb eines Cache werden in zusammenhängenden Bytes an einer integralen Grenze vorgehalten, die als Cache-Block oder Cache-Zeile (oder kurz als Zeile) bezeichnet wird. Ein Modell kann einen EXTRACT-CACHE-ATTRIBUTE-Befehl bereitstellen, der die Größe einer Cache-Zeile in Bytes zurückgibt. Ein Modell kann auch PREFETCH-DATA- und PREFETCH-DATA-RELATIVE-LONG-Befehle bereitstellen, die das Vorabrufen von Speicher in den Daten- oder Befehls-Cache oder das Freigeben von Daten aus dem Cache bewirken.
  • Ein Speicher wird als lange horizontale Folge von Bits gesehen. Für die meisten Operationen verlaufen Zugriffe auf den Speicher in einer Abfolge von links nach rechts. Die Bitfolge ist in Einheiten von acht Bit unterteilt. Eine Acht-Bit-Einheit wird als Byte bezeichnet, wobei es sich um den Grundbaustein aller Informationsformate handelt. Jede Byte-Position im Speicher wird durch eine eindeutige, nichtnegative Ganzzahl gekennzeichnet, wobei es sich um die Adresse dieser Byte-Position oder einfach um die Byte-Adresse handelt. Angrenzende Byte-Positionen weisen aufeinanderfolgende Adressen auf, beginnend bei 0 auf der linken Seite und in einer Abfolge von links nach rechts fortlaufend. Bei den Adressen handelt es sich um binäre Ganzzahlen ohne Vorzeichen mit einer Größe von 24, 31 oder 64 Bit.
  • Informationen werden zwischen dem Speicher und einer CPU oder einem Kanalteilsystem Byte für Byte oder Byte-Gruppe für Byte-Gruppe übertragen. Sofern nicht anderes angegeben wird, wird eine Gruppe von Bytes im Speicher durch das ganz linke Byte der Gruppe adressiert. Die Anzahl der Bytes in der Gruppe wird entweder impliziert oder ausdrücklich durch die durchzuführende Operation angegeben. Wenn sie in einer CPU-Operation verwendet wird, wird eine Gruppe von Bytes als Feld bezeichnet. Innerhalb jeder Gruppe von Bytes sind die Bits in einer Abfolge von links nach rechts durchnummeriert. Die ganz linken Bits werden bisweilen als „höchstwertige” Bits und die ganz rechten Bits als „niedrigstwertige” Bits bezeichnet. Bei Bit-Nummern handelt es sich jedoch nicht um Speicheradressen. Nur Bytes können adressiert werden. Um Operationen an einzelnen Bits eines Bytes im Speicher durchzuführen, muss auf das gesamte Byte zugegriffen werden. Die Bits in einem Byte sind von links nach rechts von 0 bis 7 durchnummeriert. Die Bits in einer Adresse können bei 24-Bit-Adressen von 8 bis 31 oder von 40 bis 63 oder bei 31-Bit-Adressen von 1 bis 31 oder von 33 bis 63 durchnummeriert sein; bei 64-Bit-Adressen sind sie von 0 bis 63 durchnummeriert. Innerhalb eines beliebigen anderen Formats mehrerer Bytes mit fester Länge sind die Bits, die das Format ausmachen, bei 0 beginnend fortlaufend durchnummeriert. Zur Fehlererkennung und bevorzugt zur -korrektur können mit jedem Byte oder mit einer Gruppe von Bytes ein oder mehr Prüf-Bits übertragen werden. Solche Prüf-Bits werden automatisch durch die Maschine generiert und können nicht direkt durch das Programm gesteuert werden. Speicherkapazitäten werden in einer Anzahl von Bytes ausgedrückt. Wenn die Länge eines Speicheroperandenfeldes durch den Operationscode eines Befehls impliziert wird, sagt man, das Feld habe eine feste Länge, wobei es sich um ein, zwei, vier, acht oder sechzehn Bytes handeln kann. Für einige Befehle können größere Felder impliziert werden. Wenn die Länge eines Speicheroperandenfeldes nicht impliziert wird, sondern ausdrücklich angegeben wird, sagt man, das Feld habe eine variable Länge. Operanden mit variabler Länge können durch Inkrementierungen von einem Byte in der Länge variieren. Wenn Informationen im Speicher abgelegt werden, wird der Inhalt nur derjenigen Byte-Positionen ersetzt, die in dem benannten Feld enthalten sind, selbst wenn die Breite des physischen Pfades zu dem Speicher größer als die Länge des Feldes ist, das gespeichert wird.
  • Bestimmte Einheiten von Informationen müssen sich im Speicher an einer integralen Grenze befinden. Eine Grenze wird bei einer Informationseinheit als integral bezeichnet, wenn ihre Speicheradresse ein Vielfaches der Länge der Einheit in Bytes ist. Felder von 2, 4, 8 und 16 Bytes an einer integralen Grenze erhalten besondere Bezeichnungen. Ein Halbwort ist eine Gruppe von zwei aufeinanderfolgenden Bytes an einer Zwei-Byte-Grenze und ist der Grundbaustein von Befehlen. Ein Wort ist eine Gruppe von vier aufeinanderfolgenden Bytes an einer Vier-Byte-Grenze. Ein Doppelwort ist eine Gruppe von acht aufeinanderfolgenden Bytes an einer Acht-Byte-Grenze. Ein Vierfachwort ist eine Gruppe von 16 aufeinanderfolgenden Bytes an einer 16-Byte-Grenze. Wenn Speicheradressen Halbwörter, Wörter, Doppelwörter und Vierfachwörter angeben, enthält die binäre Darstellung der Adresse ganz rechts ein, zwei, drei bzw. vier Null-Bits. Befehle müssen sich an integralen Zwei-Byte-Grenzen befinden. Die Speicheroperanden der meisten Befehle weisen keine Anforderungen an die Ausrichtung auf die Byte-Grenze auf.
  • Bei Modellen, die getrennte Caches für Befehle und Datenoperanden implementieren, kann eine erhebliche Verzögerung auftreten, wenn das Programm in eine Cache-Zeile speichert, aus der nachfolgend Befehle abgerufen werden, unabhängig davon, ob die Speicherung die Befehle ändert, die nachfolgend abgerufen werden.
  • Befehle:
  • Üblicherweise wird die Vorgehensweise der CPU durch Befehle im Speicher gesteuert, die sequenziell, nacheinander, von links nach rechts in aufsteigender Reihenfolge der Speicheradressen ausgeführt werden. Eine Änderung in der sequenziellen Vorgehensweise kann durch Verzweigen, LOAD PSW, Unterbrechungen, SIGNAL-PROCESSOR-Befehle oder manuelles Eingreifen bewirkt werden.
  • Ein Befehl weist bevorzugt zwei Hauptteile auf:
    Einen Operationscode (Op-Code), der die durchzuführende Operation angibt.
  • Optional die Bezeichnung der beteiligten Operanden.
  • Befehlsformate der z/Architecture werden in 5A bis 5F dargestellt. Ein Befehl kann einfach einen Op-Code 501 oder einen Op-Code und eine Vielfalt von Feldern bereitstellen, die Direktoperanden oder Registerkennungen zum Auffinden von Operanden in Registern oder im Speicher beinhalten. Der Op-Code kann der Hardware angeben, dass implizierte Ressourcen (Operanden usw.) verwendet werden sollen, beispielsweise ein oder mehrere spezifische Allgemeinregister (GPRs). Operanden können in drei Klassen gegliedert werden: Operanden, die sich in Registern befinden, Direktoperanden und Operanden im Speicher. Operanden können entweder explizit oder implizit bezeichnet werden. Registeroperanden können sich in Allgemein-, Gleitkomma-, Zugriffs- oder Steuerregistern befinden, wobei der Typ des Registers durch den Op-Code angegeben wird. Das Register, das den Operanden enthält, wird durch Kennzeichnen des Registers in einem Vier-Bit-Feld, das als Feld R bezeichnet wird, in dem Befehl benannt. Bei einigen Befehlen befindet sich ein Operand in einem implizit bezeichneten Register, wobei das Register durch den Op-Code impliziert wird. Direktoperanden sind in dem Befehl enthalten, und das 8-Bit-, 16-Bit- oder 32-Bit-Feld, das den Direktoperanden enthält, wird als Feld I bezeichnet. Operanden im Speicher können eine implizierte Länge aufweisen; durch eine Bit-Maske angegeben werden: durch eine Vier-Bit- oder Acht-Bit-Längenbezeichnung in dem Befehl angegeben werden, die als Feld L bezeichnet wird; oder eine Länge aufweisen, die durch den Inhalt eines Allgemeinregisters angegeben wird. Die Adressen von Operanden im Speicher werden mithilfe eines Formats angegeben, das den Inhalt eines Allgemeinregisters als Teil der Adresse verwendet. Dadurch wird Folgendes ermöglicht:
    • 1. Angeben einer vollständigen Adresse mithilfe einer abgekürzten Schreibweise.
    • 2. Durchführen einer Adressmanipulation mithilfe von Befehlen, die Allgemeinregister für Operanden einsetzen.
    • 3. Modifizieren von Adressen durch Programmmittel ohne Änderung des Befehlsstroms.
    • 4. Arbeiten unabhängig von der Position von Datenbereichen durch direktes Verwenden von Adressen, die von anderen Programmen empfangen werden.
  • Die Adresse, die zum Verweisen auf den Speicher verwendet wird, ist entweder in einem Register enthalten, das durch das Feld R in dem Befehl bezeichnet ist, oder wird aus einer Basisadresse, einem Index und einer Verschiebung berechnet, die durch die Felder B, X bzw. D in dem Befehl angegeben werden. Wenn sich die CPU im Zugriffsregistermodus befindet, kann ein Feld B oder R zusätzlich dazu, dass es zum Angeben einer Adresse verwendet wird, ein Zugriffsregister bezeichnen. Um die Ausführung von Befehlen zu beschreiben, werden Operanden bevorzugt als erste und zweite Operanden und in einigen Fällen als dritte und vierte Operanden bezeichnet. Im Allgemeinen sind an einer Befehlsausführung zwei Operanden beteiligt, und das Ergebnis ersetzt den ersten Operanden.
  • Ein Befehl weist eine Länge von einem, zwei oder drei Halbwörtern auf, und er muss sich im Speicher an einer Halbwortgrenze befinden. Unter Bezugnahme auf 5A bis 5F, die Befehlsformate darstellen, weist jeder Befehl eines von 25 Basisformaten auf: E 501, I 502, RI 503 504, RIE 505 551 552 553 554, RIL 506 507, RIS 555, RR 510, RRE 511, RRF 512 513 514, RRS, RS 516 517, RSI 520, RSL 521, RSY 522 523, RX 524, RXE 525, RXF 526, RXY 527, S 530, SI 531, SIL 556, SIY 532, SS 533 534 535 536 537, SSE 541 und SSF 542, mit drei Varianten von RRF, zwei von RI, RIL, RS und RSY, fünf von RIE und SS.
  • Die Formatnamen geben, allgemein ausgedrückt, die Klassen der Operanden, die an der Operation beteiligt sind, und einige Einzelheiten über Felder an: RIS bezeichnet eine Register- und Direktoperation und eine Speicheroperation.
  • RRS bezeichnet eine Register- und Registeroperation und eine Speicheroperation.
  • SIL bezeichnet eine Speicher- und Direktoperation mit einem 16-Bit-Direktfeld.
  • Bei den Formaten I, RR, RS, RSI, RX, SI und SS enthält das erste Byte eines Befehls den Op-Code. Bei den Formaten E, RRE, RRF, S, SIL und SSE enthalten die beiden ersten Bytes eines Befehls den Op-Code, abgesehen davon, dass bei einigen Befehlen im Format S der Op-Code nur das erste Byte ausmacht. Bei den Formaten RI und RIL befindet sich der Op-Code im ersten Byte und in den Bit-Positionen 12 bis 15 eines Befehls. Bei den Formaten RIE, RIS, RRS, RSL, RSY, RXE, RXF, RXY und SIY befindet sich der Op-Code im ersten Byte und im sechsten Byte eines Befehls. Die beiden ersten Bits des ersten oder einzigen Bytes des Op-Codes geben die Länge und das Format des Befehls wie folgt an:
    Bei den Formaten RR, RRE, RRF, RRR, RX, RXE, RXF, RXY, RS, RSY, RSI, RI, RIE und RIL wird der Inhalt des Registers, das durch das Feld R1 bezeichnet wird, als erster Operand bezeichnet. Das Register, das den ersten Operanden enthält, wird bisweilen als „erste Operandenposition” und bisweilen als „Register R1” bezeichnet. Bei den Formaten RR, RRE, RRF und RRR bezeichnet das Feld R2 das Register, das den zweiten Operanden enthält, und das Feld R2 kann dasselbe Register wie R1 bezeichnen. Bei den Formaten RRF, RXF, RS, RSY, RSI und RIE hängt die Verwendung des Feldes R3 von dem Befehl ab. Bei den Formaten RS und RSY kann es sich bei dem Feld R3 stattdessen um ein Feld M3 handeln, das eine Maske angibt. Das Feld R bezeichnet in den Allgemeinbefehlen ein Allgemein- oder Zugriffsregister, in den Steuerbefehlen ein Allgemeinregister und in den Gleitkommabefehlen ein Gleitkommaregister oder ein Allgemeinregister. Bei Allgemein- und Steuerregistern befindet sich der Registeroperand abhängig von dem Befehl in den Bit-Positionen 32 bis 63 des 64-Bit-Registers oder nimmt das gesamte Register ein.
  • Bei dem Format I wird der Inhalt des Acht-Bit-Direktdatenfeldes, das Feld I des Befehls, direkt als Operand verwendet. Bei dem Format SI wird der Inhalt des Acht-Bit-Direktdatenfeldes, das Feld I2 des Befehls, direkt als zweiter Operand verwendet. Die Felder B1 und D1 geben den ersten Operanden an, der eine Länge von einem Byte aufweist. Bei dem Format SIY ist die Operation identisch, abgesehen davon, dass anstelle eines Feldes D1 die Felder DH1 und DL1 verwendet werden. Bei dem Format RI wird bei den Befehlen ADD HALFWORD IMMEDIATE, COMPARE HALFWORD IMMEDIATE, LOAD HALFWORD IMMEDIATE und MULTIPLY HALFWORD IMMEDIATE der Inhalt des 16-Bit-Feldes I2 des Befehls direkt als binäre Ganzzahl mit Vorzeichen verwendet, und das Feld R1 gibt den ersten Operanden an, der abhängig von dem Befehl eine Länge von 32 oder 64 Bit aufweist. Bei dem Befehl TEST UNDER MASK (TMHH, TMHL, TMLH, TMLL) wird der Inhalt des Feldes I2 als Maske verwendet, und das Feld R1 gibt den ersten Operanden an, der eine Länge von 64 Bit aufweist.
  • Bei den Befehlen INSERT IMMEDIATE, AND IMMEDIATE, OR IMMEDIATE und LOAD LOGICAL IMMEDIATE wird der Inhalt des Feldes I2 als binäre Ganzzahl ohne Vorzeichen oder als logischer Wert verwendet, und das Feld R1 gibt den ersten Operanden an, der eine Länge von 64 Bit aufweist. Bei den relativen Verzweigungsbefehlen in den Formaten RI und RSI wird der Inhalt des 16-Bit-Feldes I2 als binäre Ganzzahl mit Vorzeichen verwendet, die eine Anzahl von Halbwörtern bezeichnet. Diese Anzahl gibt die Verzweigungsadresse an, wenn sie zu der Adresse des Verzweigungsbefehls addiert wird. Bei relativen Verzweigungsbefehlen im Format RIL weist das Feld I2 32 Bit auf und wird auf dieselbe Weise verwendet.
  • Bei den relativen Verzweigungsbefehlen in den Formaten RI und RSI wird der Inhalt des 16-Bit-Feldes I2 als binäre Ganzzahl mit Vorzeichen verwendet, die eine Anzahl von Halbwörtern bezeichnet. Diese Anzahl gibt die Verzweigungsadresse an, wenn sie zu der Adresse des Verzweigungsbefehls addiert wird. Bei relativen Verzweigungsbefehlen im Format RIL weist das Feld I2 32 Bit auf und wird auf dieselbe Weise verwendet. Bei den Befehlen COMPARE IMMEDIATE AND BRANCH RELATIVE und COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE im Format RIE wird der Inhalt des 8-Bit-Feldes I2 direkt als zweiter Operand verwendet. Bei den Befehlen COMPARE IMMEDIATE AND BRANCH, COMPARE IMMEDIATE AND TRAP, COMPARE LOGICAL IMMEDIATE AND BRANCH und COMPARE LOGICAL IMMEDIATE AND TRAP im Format RIE wird der Inhalt des 16-Bit-Feldes I2 direkt als zweiter Operand verwendet. Bei den Befehlen COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE und COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE im Format RIE wird der Inhalt des 16-Bit-Feldes I4 als binäre Ganzzahl mit Vorzeichen verwendet, die eine Anzahl von Halbwörtern bezeichnet, die zu der Adresse des Befehls addiert wird und so die Verzweigungsadresse bildet.
  • Bei den Befehlen ADD IMMEDIATE, ADD LOGICAL IMMEDIATE, ADD LOGICAL WITH SIGNED IMMEDIATE, COMPARE IMMEDIATE, COMPARE LOGICAL IMMEDIATE, LOAD IMMEDIATE und MULTIPLY SINGLE IMMEDIATE im Format RIL wird der Inhalt des 32-Bit-Feldes I2 direkt als zweiter Operand verwendet.
  • Bei den Befehlen im Format RIS wird der Inhalt des 8-Bit-Feldes I2 direkt als zweiter Operand verwendet. Bei den Befehlen im Format SIL wird der Inhalt des 16-Bit-Feldes I2 direkt als zweiter Operand verwendet. Die Felder B1 und D1 geben den ersten Operanden an, wie im Folgenden beschrieben.
  • Bei den Formaten RSL, SI, SIL, SSE und den meisten SS-Formaten wird der Inhalt des Allgemeinregisters, das durch das Feld B1 bezeichnet wird, zu dem Inhalt des Feldes D1 addiert und bildet so die Adresse des ersten Operanden. Bei den Formaten RS, RSY, S, SIY, SS und SSE wird der Inhalt des Allgemeinregisters, das durch das Feld B2 bezeichnet wird, zu dem Inhalt des Feldes D2 oder der Felder DH2 und DL2 addiert und bildet so die Adresse des zweiten Operanden. Bei den Formaten RX, RXE, RXF und RXY wird der Inhalt des Allgemeinregisters, das durch die Felder X2 und B2 bezeichnet wird, zu dem Inhalt des Feldes D2 oder der Felder DH2 und DL2 addiert und bildet so die Adresse des zweiten Operanden. Bei den Formaten RIS und RRS und bei einem SS-Format wird der Inhalt des Allgemeinregisters, das durch das Feld B4 bezeichnet wird, zu dem Inhalt des Feldes D4 addiert und bildet so die Adresse des vierten Operanden.
  • Bei dem Format SS mit einem einzigen Feld mit einer Länge von acht Bit gibt L bei den Befehlen AND (NC), EXCLUSIVE OR (XC), MOVE (MVC), MOVE NUMERICS, MOVE ZONES und OR (OC) die Anzahl von zusätzlichen Operanden-Bytes rechts von dem Byte an, das durch die Adresse des ersten Operanden bezeichnet wird. Daher beträgt die Länge des ersten Operanden in Bytes 1 bis 256, was einem Längencode bei L von 0 bis 255 entspricht. Die Speicherergebnisse ersetzen den ersten Operanden und werden nie außerhalb des Feldes gespeichert, das durch die Adresse und die Länge angegeben wird. Bei diesem Format weist der zweite Operand dieselbe Länge auf wie der erste Operand. Es sind Varianten der vorhergehenden Definition vorhanden, die für EDIT, EDIT AND MARK, PACK ASCII, PACK UNICODE, TRANSLATE, TRANSLATE AND TEST, UNPACK ASCII und UNPACK UNICODE gelten.
  • Bei dem Format SS mit zwei Längenfeldern und bei dem Format RSL gibt L1 die Anzahl zusätzlicher Operanden-Bytes rechts von dem Byte an, das durch die Adresse des ersten Operanden bezeichnet wird. Daher beträgt die Länge des ersten Operanden in Bytes 1 bis 16, was einem Längencode bei L1 von 0 bis 15 entspricht. In ähnlicher Weise gibt L2 die Anzahl zusätzlicher Operanden-Bytes rechts von der Position an, die durch die Adresse des zweiten Operanden bezeichnet wird. Die Ergebnisse ersetzen den ersten Operanden und werden nie außerhalb des Feldes gespeichert, das durch die Adresse und die Länge angegeben wird. Wenn der erste Operand länger als der zweite ist, wird der zweite Operand links mit Nullen bis zu der Länge des ersten Operanden erweitert. Diese Erweiterung verändert den zweiten Operanden im Speicher nicht. Bei dem Format SS mit zwei R-Feldern, wie es durch die Befehle MOVE TO PRIMARY, MOVE TO SECONDARY und MOVE WITH KEY verwendet wird, handelt es sich bei dem Inhalt des Allgemeinregisters, das durch das Feld R1 angegeben wird, um einen 32-Bit-Wert ohne Vorzeichen, der als wahre Länge bezeichnet wird. Beide Operanden weisen eine Länge auf, die als effektive Länge bezeichnet wird. Die effektive Länge entspricht der wahren Länge oder 256, je nachdem, welches niedriger ist. Die Befehle legen den Bedingungscode fest, um das Programmieren einer Schleife zu vereinfachen, um die Gesamtzahl der Bytes zu verschieben, die durch die wahre Länge angegeben wird. Das Format SS mit zwei R-Feldern wird auch dazu verwendet, einen Bereich von Registern und zwei Speicheroperanden für den Befehl LOAD MULTIPLE DISJOINT anzugeben und ein oder zwei Register und einen oder zwei Speicheroperanden für den Befehl PERFORM LOCKED OPERATION anzugeben.
  • Eine Null in einem beliebigen der Felder B1, B2, X2 oder B4 gibt das Fehlen der entsprechenden Adresskomponente an. Für die fehlende Komponente wird unabhängig vom Inhalt des Allgemeinregisters 0 eine Null zum Bilden der Zwischensumme verwendet. Eine Verschiebung von null hat keine besondere Bedeutung.
  • Bei den Bits 31 und 32 des aktuellen PSW handelt es sich um die Bits des Adressierungsmodus. Das Bit 31 ist das Bit des erweiterten Adressierungsmodus, und das Bit 32 ist das Bit des Basis-Adressierungsmodus. Diese Bits steuern die Größe der effektiven Adresse, die durch Adressengenerierung erzeugt wird. Wenn die Bits 31 und 32 des aktuellen PSW beide Nullen sind, befindet sich die CPU im 24-Bit-Adressierungsmodus, und es werden effektive 24-Bit-Befehls- und Operandenadressen generiert. Wenn das Bit 31 des aktuellen PSW null ist und das Bit 32 eins ist, befindet sich die CPU im 31-Bit-Adressierungsmodus, und es werden effektive 31-Bit-Befehls- und Operandenadressen generiert. Wenn die Bits 31 und 32 des aktuellen PSW beide eins sind, befindet sich die CPU im 64-Bit-Adressierungsmodus, und es werden effektive 64-Bit-Befehls- und Operandenadressen generiert. Die Ausführung von Befehlen durch die CPU geht mit einer Generierung der Adressen von Befehlen und Operanden einher.
  • Wenn ein Befehl von der durch das aktuelle PSW bezeichneten Position abgerufen wird, wird die Befehlsadresse um die Anzahl von Bytes in dem Befehl erhöht, und der Befehl wird ausgeführt. Dieselben Schritte werden dann mithilfe des neuen Wertes der Befehlsadresse wiederholt, um den nächsten Befehl in der Folge abzurufen. Im 24-Bit-Adressierungsmodus folgen die Befehlsadressen zyklisch aufeinander, wobei auf das Halbwort an der Befehlsadresse 2^24 – 2 das Halbwort an der Befehlsadresse 0 folgt. Folglich geht im 24-Bit-Adressierungsmodus jede Ausführung der PSW-Bit-Position 104 infolge einer Aktualisierung der Befehlsadresse verloren. Im 31-Bit- oder 64-Bit-Adressierungsmodus folgen die Befehlsadressen in ähnlicher Weise zyklisch aufeinander, wobei auf das Halbwort an den Befehlsadressen 2^31 – 2 bzw. 2^64 – 2 das Halbwort an der Befehlsadresse 0 folgt. Eine Ausführung der PSW-Bit-Position 97 bzw. 64 geht verloren.
  • Eine Operandenadresse, die sich auf einen Speicher bezieht, wird aus einem Zwischenwert abgeleitet, der entweder in einem Register enthalten ist, das durch ein Feld R in dem Befehl bezeichnet wird, oder aus der Summe aus drei Binärzahlen berechnet wird: Basisadresse, Index und Verschiebung. Bei der Basisadresse (B) handelt es sich um eine 64-Bit-Zahl, die in einem Allgemeinregister enthalten ist, das durch das Programm in einem Vier-Bit-Feld, das als Feld B bezeichnet wird, in dem Befehl angegeben wird. Basisadressen können als Mittel zum unabhängigen Adressieren jedes Programms und Datenbereichs verwendet werden. Bei einer Matrizenrechnung kann sie die Position einer Matrix bezeichnen, und bei einer Datensatzverarbeitung kann sie den Datensatz kennzeichnen. Die Basisadresse stellt den gesamten Speicher zum Adressieren bereit. Die Basisadresse kann auch zum Indexieren verwendet werden.
  • Bei dem Index (X) handelt es sich um eine 64-Bit-Zahl, die in einem Allgemeinregister enthalten ist, das durch das Programm in einem Vier-Bit-Feld, das als Feld X bezeichnet wird, in dem Befehl bezeichnet wird. Sie ist nur in der Adresse enthalten, die durch die Befehle in den Formaten RX-, RXE- und RXY angegeben wird. Die Befehle in den Formaten RX-, RXE-, RXF- und RXY gestatten eine doppelte Indexierung; das heißt, der Index kann dazu verwendet werden, die Adresse eines Elements innerhalb einer Matrix bereitzustellen.
  • Bei der Verschiebung (D) handelt es sich um eine 12-Bit- oder 20-Bit-Zahl, die in einem Feld, das als Feld D bezeichnet wird, in dem Befehl enthalten ist. Eine 12-Bit-Verschiebung hat kein Vorzeichen und ermöglicht eine relative Adressierung von bis zu 4.095 Byte jenseits der Position, die durch die Basisadresse bezeichnet wird. Eine 20-Bit-Verschiebung hat ein Vorzeichen und ermöglicht eine relative Adressierung von bis zu 524.287 Byte jenseits der Basisadressenposition oder bis zu 524.288 Byte davor. Bei Matrizenrechnungen kann die Verschiebung dazu verwendet werden, eines von zahlreichen Objekten anzugeben, die einem Element zugehörig sind. Beim Verarbeiten von Datensätzen kann die Verschiebung dazu verwendet werden, Objekte innerhalb eines Datensatzes zu identifizieren. Eine 12-Bit-Verschiebung erfolgt an den Bit-Positionen 20 bis 31 von Befehlen bestimmter Formate. Bei Befehlen einiger Formate erfolgt auch eine zweite 12-Bit-Verschiebung in dem Befehl an den Bit-Positionen 36 bis 47.
  • Eine 20-Bit-Verschiebung erfolgt nur in Befehlen der Formate RSY, RXY oder SIY. Bei diesen Befehlen besteht das Feld D aus einem Feld DL (LOW) an den Bit-Positionen 20 bis 31 und einem Feld DH (HIGH) an den Bit-Positionen 32 bis 39. Wenn die Einrichtung für lange Verschiebung installiert ist, wird der Zahlenwert der Verschiebung durch Anhängen des Inhalts des Feldes DH links des Inhalts des Feldes DL gebildet. Wenn die Einrichtung für lange Verschiebung nicht installiert ist, wird der Zahlenwert der Verschiebung durch Anhängen von acht Null-Bits links des Inhalts des Feldes DL gebildet, und der Inhalt des Feldes DH wird ignoriert.
  • Beim Bilden der Zwischensumme werden die Basisadresse und der Index als binäre 64-Bit-Ganzzahlen behandelt. Eine 12-Bit-Verschiebung wird als binäre 12-Bit-Ganzzahl ohne Vorzeichen behandelt, und es werden 52 Null-Bits links angehängt. Eine 20-Bit-Verschiebung wird als binäre 20-Bit-Ganzzahl mit Vorzeichen behandelt, und es werden 44 Bits links angehängt, die dem Vorzeichen-Bit entsprechen. Die drei werden als 64-Bit-Binärzahlen addiert, wobei ein Überlauf ignoriert wird. Die Summe weist immer eine Länge von 64 Bit auf und wird als Zwischenwert verwendet, um die generierte Adresse zu bilden. Die Bits des Zwischenwertes sind von 0 bis 63 durchnummeriert. Eine Null in einem beliebigen der Felder B1, B2, X2 oder B4 gibt das Fehlen der entsprechenden Adresskomponente an. Für die fehlende Komponente wird unabhängig vom Inhalt des Allgemeinregisters 0 eine Null zum Bilden der Zwischensumme verwendet. Eine Verschiebung von null hat keine besondere Bedeutung.
  • Wenn eine Befehlsbeschreibung angibt, dass der Inhalt eines Allgemeinregisters, das durch ein Feld R bezeichnet wird, dazu verwendet wird, einen Operanden im Speicher zu adressieren, wird der Registerinhalt als 64-Bit-Zwischenwert verwendet.
  • Ein Befehl kann dasselbe Allgemeinregister sowohl für eine Adressberechnung als auch als Position eines Operanden bezeichnen. Eine Adressberechnung wird abgeschlossen, bevor gegebenenfalls Register durch die Operation geändert werden. Sofern in einer einzelnen Befehlsdefinition nichts anderes angegeben ist, bezeichnet die generierte Operandenadresse das ganz linke Byte eines Operanden im Speicher.
  • Die generierte Operandenadresse weist immer eine Länge von 64 Bit auf, und die Bits sind von 0 bis 63 durchnummeriert. Die Weise, in der die generierte Adresse aus dem Zwischenwert gewonnen wird, hängt von dem aktuellen Adressierungsmodus ab. Im 24-Bit-Adressierungsmodus werden die Bits 0 bis 39 des Zwischenwertes ignoriert, es wird erzwungen, dass die Bits 0 bis 39 der generierten Adresse Nullen sind, und die Bits 40 bis 63 des Zwischenwertes werden zu den Bits 40 bis 63 der generierten Adresse. Im 31-Bit-Adressierungsmodus werden die Bits 0 bis 32 des Zwischenwertes ignoriert, es wird erzwungen, dass die Bits 0 bis 32 der generierten Adresse Nullen sind, und die Bits 33 bis 63 des Zwischenwertes werden zu den Bits 33 bis 63 der generierten Adresse. Im 64-Bit-Adressierungsmodus werden die Bits 0 bis 63 des Zwischenwertes zu den Bits 0 bis 63 der generierten Adresse. In Index- und Basisadressregistern können negative Werte verwendet werden. Die Bits 0 bis 32 dieser Werte werden im 31-Bit-Adressierungsmodus ignoriert, und die Bits 0 bis 39 werden im 24-Bit-Adressierungsmodus ignoriert.
  • Bei Verzweigungsbefehlen wird die Adresse des nächsten auszuführenden Befehls, wenn die Verzweigung durchgeführt wird, als Verzweigungsadresse bezeichnet. Abhängig von dem Verzweigungsbefehl kann es sich bei dem Befehlsformat um die Formate RR, RRE, RX, RXY, RS, RSY, RSI, RI, RIE oder RIL handeln. Bei den Formaten RS, RSY, RX und RXY wird die Verzweigungsadresse durch eine Basisadresse, eine Verschiebung und, bei den Formaten RX und RXY, einen Index angegeben. Bei diesen Formaten folgt die Generierung des Zwischenwertes denselben Regeln wie bei der Generierung des Zwischenwertes der Operandenadresse. Bei den Formaten RR und RRE wird der Inhalt des Allgemeinregisters, das durch das Feld R2 bezeichnet wird, als Zwischenwert verwendet, aus dem die Verzweigungsadresse gebildet wird. Das Allgemeinregister 0 kann nicht als eine Verzweigungsadresse enthaltend bezeichnet werden. Ein Wert von null in dem Feld R2 führt dazu, dass der Befehl ohne Verzweigung ausgeführt wird.
  • Die relativen Verzweigungsbefehle haben die Formate RSI, RI, RIE und RIL. Bei den Formaten RSI, RI und RIE für die relativen Verzweigungsbefehle wird der Inhalt des Feldes I2 als binäre 16-Bit-Ganzzahl mit Vorzeichen behandelt, die eine Anzahl von Halbwörtern bezeichnet. Beim Format RIL wird der Inhalt des Feldes I2 als binäre 32-Bit-Ganzzahl mit Vorzeichen behandelt, die eine Anzahl von Halbwörtern bezeichnet. Bei der Verzweigungsadresse handelt es sich um die Anzahl von Halbwörtern, die durch das Feld I2 bezeichnet wird, die zu der Adresse des relativen Verzweigungsbefehls addiert wird.
  • Der 64-Bit-Zwischenwert für einen relativen Verzweigungsbefehl im Format RSI, RI, RIE oder RIL ist die Summe aus zwei Summanden, wobei ein Überlauf von der Bit-Position 0 ignoriert wird. Beim Format RSI, RI oder RIE ist der erste Summand der Inhalt des Feldes I2, wobei ein Null-Bit rechts angehängt wird und 47 Bits, die dem Vorzeichen-Bit des Inhalts entsprechen, links angehängt werden, abgesehen davon, dass bei COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE und COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE der erste Summand der Inhalt des Feldes I4 ist, wobei, wie oben für das Feld I2 beschrieben, Bits angehängt werden. Beim Format RIL ist der erste Summand der Inhalt des Feldes I2, wobei ein Null-Bit rechts angehängt wird und 31 Bits, die dem Vorzeichen-Bit des Inhalts entsprechen, links angehängt werden. Bei allen Formaten ist der zweite Summand die 64-Bit-Adresse des Verzweigungsbefehls. Die Adresse des Verzweigungsbefehls ist die Befehlsadresse in dem PSW, bevor diese Adresse auf die Adresse des nächsten sequenziellen Befehls aktualisiert wird, oder sie ist die Adresse des Ziels des Befehls EXECUTE, falls EXECUTE verwendet wird. Falls EXECUTE im 24-Bit- oder 31-Bit-Adressierungsmodus verwendet wird, ist die Adresse des Verzweigungsbefehls die Zieladresse, wobei 40 bzw. 33 Nullen links angehängt werden.
  • Die Verzweigungsadresse weist immer eine Länge von 64 Bit auf, und die Bits sind von 0 bis 63 durchnummeriert. Die Verzweigungsadresse ersetzt die Bits 64 bis 127 des aktuellen PSW. Die Weise, in der die Verzweigungsadresse aus dem Zwischenwert gewonnen wird, hängt von dem Adressierungsmodus ab. Für diejenigen Verzweigungsbefehle, die den Adressierungsmodus wechseln, wird der neue Adressierungsmodus verwendet. Im 24-Bit-Adressierungsmodus werden die Bits 0 bis 39 des Zwischenwertes ignoriert, die Bits 0 bis 39 der Verzweigungsadresse werden in Nullen umgewandelt, und die Bits 40 bis 63 des Zwischenwertes werden zu den Bits 40 bis 63 der Verzweigungsadresse. Im 31-Bit-Adressierungsmodus werden die Bits 0 bis 32 des Zwischenwertes ignoriert, die Bits 0 bis 32 der Verzweigungsadresse werden in Nullen umgewandelt, und die Bits 33 bis 63 des Zwischenwertes werden zu den Bits 33 bis 63 der Verzweigungsadresse. Im 64-Bit-Adressierungsmodus werden die Bits 0 bis 63 des Zwischenwertes zu den Bits 0 bis 63 der Verzweigungsadresse.
  • Bei mehreren Verzweigungsbefehlen hängt die Verzweigung davon ab, ob eine bestimmte Bedingung erfüllt wird. Wenn die Bedingung nicht erfüllt wird, wird die Verzweigung nicht genommen, die normale sequenzielle Befehlsausführung wird fortgesetzt, und die Verzweigungsadresse wird nicht verwendet. Wenn eine Verzweigung genommen wird, ersetzen die Bits 0 bis 63 der Verzweigungsadresse die Bits 64 bis 127 des aktuellen PSW. Die Verzweigungsadresse wird nicht dazu verwendet, als Teil der Verzweigungsoperation auf den Speicher zuzugreifen. Eine Spezifikationsausnahme aufgrund einer ungeraden Verzweigungsadresse und Zugriffsausnahmen aufgrund eines Abrufens des Befehls an der Verzweigungsposition werden nicht als Teil der Verzweigungsoperation betrachtet, sondern werden stattdessen als Ausnahmen betrachtet, die der Ausführung des Befehls an der Verzweigungsposition zugehörig sind.
  • Ein Verzweigungsbefehl wie zum Beispiel BRANCH AND SAVE kann dasselbe Allgemeinregister sowohl für eine Verzweigungsadressberechnung als auch als Position eines Operanden bezeichnen. Die Verzweigungsadressberechnung wird abgeschlossen, bevor die restliche Operation durchgeführt wird.
  • Das Programmstatuswort (PSW) enthält Informationen, die für eine ordnungsgemäße Programmausführung erforderlich sind. Das PSW wird dazu verwendet, die Befehlsreihenfolgeplanung zu steuern und den Status der CPU zu halten und in Bezug auf das zurzeit ausgeführte Programm anzugeben. Das aktive oder steuernde PSW wird als aktuelles PSW bezeichnet. Verzweigungsbefehle führen die Funktionen der Entscheidungsfindung, Schleifensteuerung und Unterroutinenverknüpfung durch. Ein Verzweigungsbefehl wirkt sich auf die Befehlsreihenfolgeplanung dadurch aus, dass er eine neue Befehlsadresse in das aktuelle PSW einführt. Die relativen Verzweigungsbefehle mit einem 16-Bit-Feld I2 ermöglichen ein Verzweigen zu einer Position mit einem Offset von bis zu plus 64 K – 2 Byte oder minus 64 K Byte in Bezug auf die Position des Verzweigungsbefehls ohne Verwendung eines Basisregisters. Die relativen Verzweigungsbefehle mit einem 32-Bit-Feld I2 ermöglichen ein Verzweigen zu einer Position mit einem Offset von bis zu plus 4 G-2 Byte oder minus 4 G Byte in Bezug auf die Position des Verzweigungsbefehls ohne Verwendung eines Basisregisters.
  • Einrichtungen zur Entscheidungsfindung werden durch die Befehle BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION und BRANCH RELATIVE ON CONDITION LONG bereitgestellt. Diese Befehle untersuchen einen Bedingungscode, der das Ergebnis der Mehrzahl der arithmetischen, logischen und E/A-Operationen widerspiegelt. Der Bedingungscode, der aus zwei Bits besteht, stellt vier mögliche Bedingungscodeeinstellungen bereit: 0, 1, 2 und 3.
  • Die spezifische Bedeutung jeglicher Einstellung hängt von der Operation ab, die den Bedingungscode festlegt. Beispielsweise spiegelt der Bedingungscode solche Bedingungen wie „null”, „nichtnull”, „erster Operand HIGH”, „gleich”, „Überlauf” und „Unterkanal ausgelastet” wider. Nachdem er festgelegt ist, bleibt der Bedingungscode unverändert, bis er durch einen Befehl modifiziert wird, der bewirkt, dass ein anderer Bedingungscode festgelegt wird.
  • Eine Schleifensteuerung kann mithilfe von BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION und BRANCH RELATIVE ON CONDITION LONG durchgeführt werden, um den Ausgang von Adressrechnungen und Zähloperationen zu testen. Für einige besonders häufige Kombinationen von Rechnungen und Tests werden BRANCH ON COUNT, BRANCH ON INDEX HIGH und BRANCH ON INDEX LOW OR EQUAL bereitgestellt und außerdem Entsprechungen der relativen Verzweigung dieser Befehle bereitgestellt. Da es sich um spezialisierte Verzweigungen handelt, stellen sie eine verbesserte Leistungsfähigkeit für diese Aufgaben bereit.
  • Unterroutinenverknüpfung wird, wenn ein Wechsel des Adressierungsmodus nicht erforderlich ist, durch die Befehle BRANCH AND LINK und BRANCH AND SAVE bereitgestellt. (Diese Erörterung von BRANCH AND SAVE gilt auch für BRANCH RELATIVE AND SAVE und BRANCH RELATIVE AND SAVE LONG.) Diese beiden Befehle gestatten nicht nur die Einführung einer neuen Befehlsadresse, sondern auch die Aufrechterhaltung einer Rückkehradresse und zugehöriger Informationen. Bei der Rückkehradresse handelt es sich um die Adresse des Befehls, der auf den Verzweigungsbefehl im Speicher folgt, abgesehen davon, dass sie die Adresse des Befehls ist, der auf einen Befehl EXECUTE folgt, der den Verzweigungsbefehl als Ziel hat.
  • Sowohl BRANCH AND LINK als auch BRANCH AND SAVE weisen ein Feld R1 auf. Sie bilden eine Verzweigungsadresse mithilfe von Feldern, die von dem Befehl abhängen. Die Operationen der Befehle werden wie folgt zusammengefasst: Im 24-Bit-Adressierungsmodus platzieren beide Befehle die Rückkehradresse in den Bit-Positionen 40 bis 63 des Allgemeinregisters R1 und lassen die Bits 0 bis 31 dieses Registers unverändert. BRANCH AND LINK platziert den Befehlslängencode für den Befehl und auch den Bedingungscode und die Programmmaske aus dem aktuellen PSW in den Bit-Positionen 32 bis 39 des Allgemeinregisters R1, BRANCH AND SAVE platziert Nullen in diesen Bit-Positionen.
  • Im 31-Bit-Adressierungsmodus platzieren beide Befehle die Rückkehradresse in den Bit-Positionen 33 bis 63 und eine Eins in der Bit-Position 32 des Allgemeinregisters R1, und sie lassen die Bits 0 bis 31 des Registers unverändert.
  • Im 64-Bit-Adressierungsmodus platzieren beide Befehle die Rückkehradresse in den Bit-Positionen 0 bis 63 des Allgemeinregisters R1.
  • In jeglichem Adressierungsmodus generieren beide Befehle die Verzweigungsadresse unter Steuerung durch den aktuellen Adressierungsmodus. Die Befehle platzieren die Bits 0 bis 63 der Verzweigungsadresse in den Bit-Positionen 64 bis 127 des PSW. Im Format RR führen beide Befehle keine Verzweigung durch, wenn das Feld R2 des Befehls null ist.
  • Es ist zu erkennen, dass im 24-Bit- oder 31-Bit-Adressierungsmodus BRANCH AND SAVE das Bit des Basisadressierungsmodus, das Bit 32 des PSW, in der Bit-Position 32 des Allgemeinregisters R1 platziert wird. BRANCH AND LINK führt dies im 31-Bit-Adressierungsmodus durch. Die Befehle BRANCH AND SAVE AND SET MODE und BRANCH AND SET MODE sind zur Verwendung gedacht, wenn während einer Verknüpfung eine Änderung des Adressierungsmodus erforderlich ist. Diese Befehle weisen die Felder R1 und R2 auf. Die Operationen der Befehle werden wie folgt zusammengefasst:
    BRANCH AND SAVE AND SET MODE legt den Inhalt des Allgemeinregisters R1 auf dieselbe Weise fest wie BRANCH AND SAVE. Darüber hinaus platziert der Befehl das Bit des erweiterten Adressierungsmodus, das Bit 31 des PSW, an der Bit-Position 63 des Registers.
  • Wenn R1 nichtnull ist, führt BRANCH AND SET MODE Folgendes durch. Im 24- oder 31-Bit-Modus platziert er das Bit 32 des PSW an der Bit-Position 32 des Allgemeinregisters R1 und lässt die Bits 0 bis 31 und 33 bis 63 des Registers unverändert. Es ist zu beachten, dass das Bit 63 des Registers null sein sollte, wenn das Register eine Befehlsadresse enthält. Im 64-Bit-Modus platziert der Befehl das Bit 31 des PSW (eine Eins) an der Bit-Position 63 des Allgemeinregisters R1 und lässt die Bits 0 bis 62 des Registers unverändert.
  • Wenn R2 nichtnull ist, legen beide Befehle wie folgt den Adressierungsmodus fest und führen eine Verzweigung durch. Das Bit 63 des Allgemeinregisters R2 wird an der Bit-Position 31 des PSW platziert. Wenn das Bit 63 null ist, wird das Bit 32 des Registers an der Bit-Position 32 des PSW platziert. Wenn das Bit 63 eins ist, wird das PSW-Bit 32 auf eins gesetzt. Dann wird die Verzweigungsadresse unter Steuerung durch den neuen Adressierungsmodus aus dem Inhalt des Registers generiert, abgesehen davon, dass das Bit 63 des Registers als Null behandelt wird. Die Befehle platzieren die Bits 0 bis 63 der Verzweigungsadresse in den Bit-Positionen 64 bis 127 des PSW. Das Bit 63 des Allgemeinregisters R2 bleibt unverändert und kann daher beim Eintritt in das aufgerufene Programm eins sein. Wenn R2 mit R1 übereinstimmt, sind die Ergebnisse in dem angegebenen Allgemeinregister wie für das Register R1 angegeben.
  • Unterbrechungen (Kontextwechsel):
  • Der Unterbrechungsmechanismus ermöglicht der CPU, ihren Status infolge von Bedingungen außerhalb der Konfiguration, innerhalb der Konfiguration oder innerhalb der CPU selbst zu ändern. Um eine schnelle Reaktion auf Bedingungen mit hoher Priorität und eine sofortige Erkennung des Typs der Bedingung zu ermöglichen, werden Unterbrechungsbedingungen in sechs Klassen zusammengefasst: extern, Eingabe/Ausgabe, Maschinenprüfung, Programm, Neustart und Supervisor-Aufruf.
  • Eine Unterbrechung besteht aus einem Speichern des aktuellen PSW als altes PSW, Speichern von Informationen, die die Ursache der Unterbrechung angeben, und Abrufen eines neuen PSW. Die Verarbeitung wird fortgesetzt, wie durch das neue PSW angegeben. Das alte PSW, das bei einer Unterbrechung gespeichert wird, enthält normalerweise die Adresse des Befehls, der als Nächstes ausgeführt worden wäre, wenn die Unterbrechung nicht aufgetreten wäre, wodurch die Fortsetzung des unterbrochenen Programms ermöglicht wird. Bei Programm- und Supervisor-Aufruf-Unterbrechungen enthalten die gespeicherten Informationen auch einen Code, der die Länge des zuletzt ausgeführten Befehls angibt, wodurch dem Programm ermöglicht wird, auf die Ursache der Unterbrechung zu reagieren. Bei einigen Programmbedingungen, bei denen die normale Reaktion eine erneute Ausführung des Befehls ist, der die Unterbrechung verursacht hat, gibt die Befehlsadresse den zuletzt ausgeführten Befehl direkt an.
  • Abgesehen von einem Neustart kann eine Unterbrechung nur auftreten, wenn die CPU in Betrieb ist. Die Neustartunterbrechung kann auftreten, wenn die CPU entweder angehalten oder in Betrieb ist.
  • Jegliche Zugriffsausnahme wird als Teil der Ausführung des Befehls betrachtet, dem die Ausnahme zugehörig ist. Eine Zugriffsausnahme wird nicht erkannt, wenn die CPU versucht, einen Abruf von einer nicht verfügbaren Position durchzuführen, oder eine sonstige Zugriffsausnahmebedingung erkennt, ein Verzweigungsbefehl oder eine Unterbrechung ändert jedoch die Befehlsfolge, sodass der Befehl nicht ausgeführt wird. Aufgrund eines Befehlsabrufs kann jeder Befehl bewirken, dass eine Zugriffsausnahme erkannt wird. Darüber hinaus können Zugriffsausnahmen, die der Befehlsausführung zugehörig sind, aufgrund eines Zugriffs auf einen Operanden im Speicher auftreten. Eine Zugriffsausnahme aufgrund eines Abrufens eines Befehls wird angegeben, wenn das erste Befehlshalbwort nicht abgerufen werden kann, ohne dass die Ausnahme eintritt. Wenn das erste Halbwort des Befehls keine Zugriffsausnahmen aufweist, können Zugriffsausnahmen für zusätzliche Halbwörter entsprechend der Befehlslänge angegeben werden, die durch die ersten beiden Bits des Befehls angegeben wird; wenn die Operation jedoch durchgeführt werden kann, ohne auf das zweite oder dritte Halbwort des Befehls zuzugreifen, ist nicht vorhersehbar, ob die Zugriffsausnahme für den nicht verwendeten Teil angegeben wird. Da alle Befehle die Angabe von Zugriffsausnahmen für einen Befehlsabruf gemein haben, ist sie nicht in den einzelnen Befehlsdefinitionen abgedeckt.
  • Außer, wenn es in der einzelnen Befehlsbeschreibung anders angegeben ist, gelten die folgenden Regeln für Ausnahmen, die einem Zugriff auf eine Operandenposition zugehörig sind. Bei einem Abrufoperanden werden Zugriffsausnahmen nur für denjenigen Abschnitt des Operanden zwingend angegeben, der zum Abschließen der Operation erforderlich ist. Es ist nicht vorhersehbar, ob Zugriffsausnahmen für diejenigen Abschnitte eines Abrufoperanden angegeben werden, die nicht zum Abschließen der Operation erforderlich sind.
  • Bei einem Speicheroperanden werden Zugriffsausnahmen für den gesamten Operanden erkannt, selbst wenn die Operation ohne Verwendung des nicht zugänglichen Teils des Operanden abgeschlossen werden könnte. In Situationen, in denen der Wert eines Speicheroperanden so definiert ist, dass er nicht vorhersehbar ist, ist nicht vorhersehbar, ob eine Zugriffsausnahme angeben wird. Immer, wenn ein Zugriff auf eine Operandenposition bewirken kann, dass eine Zugriffsausnahme erkannt wird, ist das Wort „Zugriff” in der Liste der Programmausnahmen in der Beschreibung des Befehls enthalten. Dieser Eintrag gibt außerdem an, welcher Operand bewirken kann, dass die Ausnahme erkannt wird, und ob die Ausnahme bei einem Abruf- oder einem Speicherzugriff auf diese Operandenposition erkannt wird. Zugriffsausnahmen werden nur für den Abschnitt des Operanden erkannt, wie es für den jeweiligen Befehl definiert ist.
  • Eine Operationsausnahme wird erkannt, wenn die CPU versucht, einen Befehl mit einem ungültigen Operationscode auszuführen. Der Operationscode ist möglicherweise nicht zugewiesen, oder der Befehl mit diesem Operationscode ist möglicherweise auf der CPU nicht installiert. Die Operation wird unterdrückt. Der Befehlslängencode ist 1, 2 oder 3. Die Operationsausnahme wird durch einen Programmunterbrechungscode 0001 hex (oder 0081 hex, wenn ein gleichzeitiges PER-Ereignis angegeben wird) angegeben.
  • Einige Modelle können Befehle bieten, die in dieser Veröffentlichung nicht beschrieben werden, beispielsweise diejenigen, die zur Unterstützung oder als Teil von speziellen oder angepassten Funktionen bereitgestellt werden. Demzufolge bewirken Operationscodes, die nicht in dieser Veröffentlichung beschrieben werden, nicht zwingend, dass eine Operationsausnahme erkannt wird. Des Weiteren können diese Befehle bewirken, dass Operationsmodi eingerichtet werden, oder sie können die Maschine auf andere Weise so verändern, dass sich Auswirkungen auf die Ausführung von nachfolgenden Befehlen ergeben. Um zu vermeiden, dass eine solche Operation bewirkt wird, sollte ein Befehl mit einem Operationscode, der nicht in dieser Veröffentlichung beschrieben wird, nur ausgeführt werden, wenn die spezifische Funktion erwünscht ist, die dem Operationscode zugehörig ist.
  • Eine Spezifikationsausnahme wird erkannt, wenn eines der folgenden wahr ist:
    • 1. Eine Eins wird in jede nicht zugewiesene Bit-Position des PSW eingesetzt (das heißt, in jede der Bit-Positionen 0, 2 bis 4, 24 bis 30 oder 33 bis 63). Dies wird als frühe PSW-Spezifikationsausnahme verarbeitet.
    • 2. Eine Eins wird in die Bit-Position 12 des PSW eingesetzt. Dies wird als frühe PSW-Spezifikationsausnahme verarbeitet.
    • 3. Das PSW ist auf eine der folgenden Weisen ungültig: a. Das Bit 31 des PSW ist eins, und das Bit 32 ist null. b. Die Bits 31 und 32 des PSW sind null, wodurch der 24-Bit-Adressierungsmodus angegeben wird, und die Bits 64 bis 103 des PSW sind nicht sämtlich Nullen. c. Das Bit 31 des PSW ist null, und das Bit 32 ist eins, wodurch der 31-Bit-Adressierungsmodus angegeben wird, und die Bits 64 bis 96 des PSW sind nicht sämtlich Nullen. Dies wird als frühe PSW-Spezifikationsausnahme verarbeitet.
    • 4. Das PSW enthält eine ungerade Befehlsadresse.
    • 5. Eine Operandenadresse bezeichnet keine integrale Grenze in einem Befehl, der eine solche Bezeichnung einer integralen Grenze erfordert.
    • 6. Ein ungeradzahliges Allgemeinregister wird durch ein Feld R eines Befehls bezeichnet, der eine Bezeichnung eines geradzahligen Registers erfordert.
    • 7. Ein anderes Gleitkommaregister als 0, 1, 4, 5, 8, 9, 12 oder 13 wird für einen erweiterten Operanden bezeichnet.
    • 8. Der Multiplikator oder Divisor in einer Dezimalrechnung übersteigt 15 Stellen und Vorzeichen.
    • 9. Die Länge des ersten Operandenfeldes ist kürzer als oder gleich wie die Länge des zweiten Operandenfeldes in einer Dezimalmultiplikation oder -division.
    • 10. Es wird versucht, CIPHER MESSAGE, CIPHER MESSAGE WITH CHAINING, COMPUTE INTERMEDIATE MESSAGE DIGEST, COMPUTE LAST MESSAGE DIGEST oder COMPUTE MESSAGE AUTHENTICATION CODE auszuführen, und der Funktionscode in den Bits 57 bis 63 des Allgemeinregisters 0 enthält einen nicht zugewiesenen oder nicht installierten Funktionscode.
    • 11. Es wird versucht, CIPHER MESSAGE oder CIPHER MESSAGE WITH CHAINING auszuführen, und das Feld R1 oder R2 bezeichnet ein ungeradzahliges Register oder das Allgemeinregister 0.
    • 12. Es wird versucht, CIPHER MESSAGE, CIPHER MESSAGE WITH CHAINING, COMPUTE INTERMEDIATE MESSAGE DIGEST oder COMPUTE MESSAGE AUTHENTICATION CODE auszuführen, und die Länge des zweiten Operanden ist kein Vielfaches der Datenblockgröße der bezeichneten Funktion. Diese Spezifikationsausnahmebedingung gilt nicht für die Abfragefunktionen.
    • 13. Es wird versucht, COMPARE AND FORM CODEWORD auszuführen, und die Allgemeinregister 1, 2 und 3 enthalten anfänglich keine geradzahligen Werte.
    • 32. Es wird versucht, COMPARE AND SWAP AND STORE auszuführen, und es besteht eine der folgenden Bedingungen: Der Funktionscode gibt einen nicht zugewiesenen Wert an. Das Speichermerkmal gibt einen nicht zugewiesenen Wert an. Der Funktionscode lautet 0, und der erste Operand ist nicht an einer Wortgrenze bezeichnet. Der Funktionscode lautet 1, und der erste Operand ist nicht an einer Doppelwortgrenze bezeichnet. Der zweite Operand ist nicht entsprechend der Größe des Speicherwertes an einer integralen Grenze bezeichnet.
    • 33. Es wird versucht, COMPARE LOGICAL LONG UNICODE oder MOVE LONG UNICODE auszuführen, und der Inhalt entweder des Allgemeinregisters R1 + 1 oder R3 + 1 gibt keine gerade Anzahl von Bytes an. 34. Es wird versucht, COMPARE LOGICAL STRING, MOVE STRING oder SEARCH STRING auszuführen, und die Bits 32 bis 55 des Allgemeinregisters 0 sind nicht sämtlich Nullen. 35. Es wird versucht, COMPRESSION CALL auszuführen, und die Bits 48 bis 51 des Allgemeinregisters 0 weisen einen beliebigen der Binärwerte 0000 und 0110 bis 1111 auf. 36. Es wird versucht, COMPUTE INTERMEDIATE MESSAGE DIGEST, COMPUTE LAST MESSAGE DIGEST oder COMPUTE MESSAGE AUTHENTICATION CODE auszuführen, und eines des Folgenden ist wahr: Das Feld R2 bezeichnet ein ungeradzahliges Register oder das Allgemeinregister 0. Das Bit 56 des Allgemeinregisters 0 ist nicht null.
    • 37. Es wird versucht, CONVERT HFP TO BFP, CONVERT TO FIXED (BFP oder HFP) oder LOAD FP INTEGER (BFP) auszuführen, und das Feld M3 bezeichnet keinen gültigen Modifikator.
    • 38. Es wird versucht, DIVIDE TO INTEGER auszuführen, und das Feld M4 bezeichnet keinen gültigen Modifikator.
    • 39. Es wird versucht, EXECUTE auszuführen, und die Zieladresse ist ungeradzahlig.
    • 40. Es wird versucht, EXTRACT STACKED STATE auszuführen, und der Code an den Bit-Positionen 56 bis 63 des Allgemeinregisters R2 ist höher als 4, wenn die ASN-and-LX-reuse-Einrichtung nicht installiert ist, oder höher als 5, wenn die Einrichtung installiert ist.
    • 41. Es wird versucht, FIND LEFTMOST ONE auszuführen, und das Feld R1 bezeichnet ein ungeradzahliges Register.
    • 42. Es wird versucht, INVALIDATE DAT TABLE ENTRY auszuführen, und die Bits 44 bis 51 des Allgemeinregisters R2 sind nicht sämtlich Nullen.
    • 43. Es wird versucht, LOAD FPC auszuführen, und ein oder mehr Bits des zweiten Operanden, die nicht unterstützten Bits im Register FPC entsprechen, sind eins.
    • 44. Es wird versucht, LOAD PAGE-TABLE-ENTRY ADDRESS auszuführen, und das Feld M4 des Befehls enthält einen beliebigen anderen Binärwert als 0000 bis 0100.
    • 45. Es wird versucht, LOAD PSW auszuführen, und das Bit 12 des Doppelworts an der zweiten Operandenadresse ist null. Es hängt vom Modell ab, ob diese Ausnahme erkannt wird.
    • 46. Es wird versucht, MONITOR CALL auszuführen, und die Bit-Positionen 8 bis 11 des Befehls enthalten keine Nullen.
    • 47. Es wird versucht, MOVE PAGE auszuführen, und die Bit-Positionen 48 bis 51 des Allgemeinregisters 0 enthalten keine Nullen, oder die Bits 52 und 53 des Registers sind beide eins.
    • 48. Es wird versucht, PACK ASCII auszuführen, und das Feld L2 ist größer als 31.
    • 49. Es wird versucht, PACK UNICODE auszuführen, und das Feld L2 ist größer als 63 oder ist geradzahlig.
    • 50. Es wird versucht, PERFORM FLOATING POINT OPERATION auszuführen, das Bit 32 des Allgemeinregisters 0 ist null, und ein oder mehr Felder in den Bits 33 bis 63 sind ungültig oder bezeichnen eine nicht installierte Funktion.
    • 51. Es wird versucht, PERFORM LOCKED OPERATION auszuführen, und ein beliebiges des Folgenden ist wahr: Das T-Bit, das Bit 55 des Allgemeinregisters 0, ist null, und der Funktionscode in den Bits 56 bis 63 ist ungültig. Die Bits 32 bis 54 des Allgemeinregisters 0 sind nicht sämtlich Nullen. Im Zugriffsregistermodus ist das Feld R3 null bei Funktionscodes, die die Verwendung einer Parameterliste bewirken, die ein ALET enthält.
    • 52. Es wird versucht, PERFORM TIMING FACILITY FUNCTION auszuführen, und eines des Folgenden ist wahr: Das Bit 56 des Allgemeinregisters 0 ist nicht null. Die Bits 57 bis 63 des Allgemeinregisters 0 geben einen nicht zugewiesenen oder nicht installierten Funktionscode an.
    • 53. Es wird versucht, PROGRAM TRANSFER oder PROGRAM TRANSFER WITH INSTANCE auszuführen, und alles des Folgenden ist wahr: Das Bit des erweiterten Adressierungsmodus in dem PSW ist null. Das Bit des Basisadressierungsmodus, das Bit 32, im Allgemeinregister, das durch das Feld R2 des Befehls bezeichnet wird, ist null. Die Bits 33 bis 39 der Befehlsadresse in demselben Register sind nicht sämtlich Nullen.
    • 54. Es wird versucht, RESUME PROGRAM auszuführen, und eines des Folgenden ist wahr: Die Bits 31, 32 und 64 bis 127 des Feldes PSW im zweiten Operanden sind nicht zur Platzierung im aktuellen PSW zugelassen. Die Ausnahme wird erkannt, wenn eines des Folgenden wahr ist: – Die Bits 31 und 32 sind beide null, und die Bits 64 bis 103 sind nicht sämtlich Nullen. – Die Bits 31 und 32 sind null und eins, und die Bits 64 bis 96 sind nicht sämtlich Nullen. – Die Bits 31 und 32 sind eins bzw. null. – Das Bit 127 ist eins. Die Bits 0 bis 12 der Parameterliste sind nicht sämtlich Nullen.
    • 55. Es wird versucht, SEARCH STRING UNICODE auszuführen, und die Bits 32 bis 47 des Allgemeinregisters 0 sind nicht sämtlich Nullen.
    • 56. Es wird versucht, SET ADDRESS SPACE CONTROL oder SET ADDRESS SPACE CONTROL FAST auszuführen, und die Bits 52 und 53 der zweiten Operandenadresse sind nicht beide Nullen.
    • 57. Es wird versucht, SET ADDRESSING MODE (SAM24) auszuführen, und die Bits 0 bis 39 der nicht aktualisierten Befehlsadresse in dem PSW, die Bits 64 bis 103 des PSW, sind nicht sämtlich Nullen.
    • 58. Es wird versucht, SET ADDRESSING MODE (SAM31) auszuführen, und die Bits 0 bis 32 der nicht aktualisierten Befehlsadresse in dem PSW, die Bits 64 bis 96 des PSW, sind nicht sämtlich Nullen.
    • 59. Es wird versucht, SET CLOCK PROGRAMMABLE FIELD auszuführen, und die Bits 32 bis 47 des Allgemeinregisters 0 sind nicht sämtlich Nullen.
    • 60. Es wird versucht, SET FPC auszuführen, und ein oder mehr Bits des ersten Operanden, die nicht unterstützten Bits in dem Register FPC entsprechen, sind eins.
    • 61. Es wird versucht, STORE SYSTEM INFORMATION auszuführen, und der Funktionscode im Allgemeinregister 0 ist gültig, und eines des Folgenden ist wahr: Die Bits 36 bis 55 des Allgemeinregisters 0 und die Bits 32 bis 47 des Allgemeinregisters 1 sind nicht sämtlich Nullen. Die zweite Operandenadresse ist nicht an einer 4-K-Byte-Grenze ausgerichtet.
    • 62. Es wird versucht, TRANSLATE TWO TO ONE oder TRANSLATE TWO TO TWO auszuführen, und die Länge im Allgemeinregister R1 + 1 gibt keine gerade Anzahl von Bytes an.
    • 63. Es wird versucht, UNPACK ASCII auszuführen, und das Feld L1 ist höher als 31.
    • 64. Es wird versucht, UNPACK UNICODE auszuführen, und das Feld L1 ist höher als 63 oder ist geradzahlig.
    • 65. Es wird versucht, UPDATE TREE auszuführen, und der anfängliche Inhalt der Allgemeinregister 4 und 5 ist im 24-Bit- oder 32-Bit-Adressierungsmodus kein Vielfaches von 8 oder ist im 64-Bit-Adressierungsmodus kein Vielfaches von 16. Die Ausführung des durch das alte PSW angegebenen Befehls wird unterdrückt. Bei frühen PSW-Spezifikationsausnahmen (Ursachen 1 bis 3) wird die Operation, die das neue PSW einführt, jedoch abgeschlossen, anschließend tritt jedoch sofort eine Unterbrechung auf. Der Befehlslängencode (instruction-length code, ILC) lautet bevorzugt 1, 2 oder 3, wodurch die Länge des Befehls angegeben wird, der die Ausnahme verursacht. Wenn die Befehlsadresse ungeradzahlig ist (Ursache 4), ist nicht vorhersehbar, ob der ILC 1, 2 oder 3 lautet. Wenn die Ausnahme aufgrund einer frühen PSW-Spezifikationsausnahme (Ursachen 1 bis 3) erkannt wird und die Ausnahme durch LOAD PSW, LOAD PSW EXTENDED, PROGRAM RETURN oder eine Unterbrechung eingeleitet worden ist, ist der ILC gleich 0. Wenn die Ausnahme durch SET ADDRESSING MODE (SAM24, SAM31) eingeleitet wird, lautet der ILC 1, oder er lautet 2, wenn SET ADDRESSING MODE das Ziel von EXECUTE war. Wenn die Ausnahme durch SET SYSTEM MASK oder durch STORE THEN OR SYSTEM MASK eingeleitet wird, lautet der ILC 2.
  • Programmunterbrechungen werden dazu verwendet, Ausnahmen und Ereignisse zu melden, die während der Ausführung des Programms auftreten. Eine Programmunterbrechung bewirkt, dass das alte PSW in den realen Positionen 336 bis 351 gespeichert wird und ein neues PSW von den realen Positionen 464 bis 479 abgerufen wird. Die Ursache der Unterbrechung wird durch den Unterbrechungscode angegeben. Der Unterbrechungscode ist in den realen Positionen 142 bis 143 platziert, der Befehlslängencode ist in den Bit-Positionen 5 und 6 des Bytes an der realen Position 141 platziert, wobei die übrigen Bits auf Nullen gesetzt sind, und Nullen werden an der realen Position 140 gespeichert. Bei einigen Ursachen werden zusätzliche Informationen, die den Grund für die Unterbrechung angeben, an den realen Positionen 144 bis 183 gespeichert. Wenn die PER-3-Einrichtung installiert ist, wird der Inhalt des Registers für Unterbrechungsereignisadressen als Teil des Programmunterbrechungsvorgangs in den realen Speicherpositionen 272 bis 279 platziert. Abgesehen von PER-Ereignissen und der Verschlüsselungsoperationsausnahme wird die Bedingung, die die Unterbrechung verursacht, durch einen codierten Wert angegeben, der in den sieben ganz linken Bit-Positionen des Unterbrechungscodes platziert ist. Es kann jeweils nur eine Bedingung angegeben werden. Die Bits 0 bis 7 des Unterbrechungscodes sind auf Nullen gesetzt. PER-Ereignisse werden dadurch angegeben, dass das Bit 8 des Unterbrechungscodes auf eins gesetzt wird. Wenn dies die einzige Bedingung ist, werden die Bits 0 bis 7 und 9 bis 15 ebenfalls auf Nullen gesetzt. Wenn ein PER-Ereignis gleichzeitig mit einer weiteren Programmunterbrechungsbedingung angegeben wird, ist das Bit 8 eins, und die Bits 0 bis 7 und 9 bis 15 sind wie für die andere Bedingung festgelegt. Die Verschlüsselungsoperationsausnahme wird durch einen Unterbrechungscode 0119 hex, oder 0199 hex, wenn auch ein PER-Ereignis angegeben wird, angegeben.
  • Wenn ein entsprechendes Masken-Bit vorhanden ist, kann eine Programmunterbrechung nur auftreten, wenn das Masken-Bit eins ist. Die Programmmaske in dem PSW steuert vier der Ausnahmen, die IEEE-Masken in dem FPC-Register steuern die IEEE-Ausnahmen, das Bit 33 im Steuerregister 0 steuert, ob SET SYSTEM MASK eine Spezialoperationsausnahme verursacht, die Bits 48 bis 63 im Steuerregister 8 steuern Unterbrechungen aufgrund von Überwachungsereignissen, und eine Hierarchie von Masken steuert Unterbrechungen aufgrund von PER-Ereignissen. Wenn ein beliebiges Masken-Bit null ist, wird die Bedingung ignoriert; die Bedingung bleibt nicht anstehend.
  • Wenn das neue PSW für eine Programmunterbrechung einen PSW-Formatfehler aufweist oder bewirkt, dass eine Ausnahme im Prozess des Befehlsabrufs erkannt wird, kann eine Kette von Programmunterbrechungen auftreten.
  • Einige der als Programmausnahmen angegebenen Bedingungen können auch durch das Kanalteilsystem erkannt werden, wobei die Ausnahme in diesem Fall in dem Unterkanal-Statuswort oder dem erweiterten Statuswort angegeben wird.
  • Wenn eine Datenausnahme eine Programmunterbrechung verursacht, wird der Datenausnahmecode (DXC) an der Position 147 gespeichert, und Nullen werden an den Positionen 144 bis 146 gespeichert. Der DXC unterscheidet zwischen den verschiedenen Typen von Datenausnahmebedingungen. Wenn das Steuer-Bit des AFP-Registers (additional floating-point register, zusätzliches Gleitkommaregister), das Bit 45 des Steuerregisters 0, eins ist, wird der DXC auch in dem Feld DXC des Gleitkommasteuer(floating-point-control, FPC)-Registers platziert. Das Feld DXC in dem FPC-Register bleibt unverändert, wenn eine beliebige sonstige Programmausnahme gemeldet wird. Der DXC ist ein 8-Bit-Code, der die spezifische Ursache einer Datenausnahme angibt.
  • DXC 2 und 3 schließen sich gegenseitig aus und haben eine höhere Priorität als jeder andere DXC. So hat zum Beispiel DXC 2 (BFP-Befehl) Vorrang vor allen IEEE-Ausnahmen; und DXC 3 (DFP-Befehl) hat Vorrang vor allen IEEE-Ausnahmen oder simulierten IEEE-Ausnahmen. Als weiteres Beispiel wird DXC 3 gemeldet, wenn die Bedingungen sowohl für DXC 3 (DFP-Befehl) als auch für DXC 1 (AFP-Register) vorliegen. Wenn sowohl eine Spezifikationsausnahme als auch eine AFP-Registerdatenausnahme zutreffen, ist nicht vorhersehbar, welche gemeldet wird.
  • Eine Adressierungsausnahme wird erkannt, wenn die CPU versucht, eine Hauptspeicherposition zu referenzieren, die in der Konfiguration nicht verfügbar ist. Eine Hauptspeicherposition ist in der Konfiguration nicht verfügbar, wenn die Position nicht installiert ist, wenn sich die Speichereinheit nicht in der Konfiguration befindet oder wenn der Strom in der Speichereinheit abgeschaltet ist. Eine Adresse, die eine Speicherposition bezeichnet, die in der Konfiguration nicht verfügbar ist, wird als ungültig bezeichnet. Die Operation wird unterdrückt, wenn die Adresse des Befehls ungültig ist. In ähnlicher Weise wird die Operation unterdrückt, wenn die Adresse des Zielbefehls von EXECUTE ungültig ist. Außerdem wird die Operationseinheit unterdrückt, wenn eine Adressierungsausnahme beim Zugreifen auf eine Tabelle oder einen Tabelleneintrag auftritt. Bei den Tabellen und Tabelleneinträgen, für die die Regel gilt, handelt es sich um die Steuertabelle für zuteilbare Einheiten, den primären Eintrag der zweiten ASN-Tabelle und Einträge in der Zugriffsliste, der ersten Bereichstabelle, der zweiten Bereichstabelle, der dritten Bereichstabelle, der Segmenttabelle, der Seitentabelle, der Verbindungstabelle, der ersten Verbindungstabelle, der zweiten Verbindungstabelle, der Eintragstabelle, der ersten ASN-Tabelle, der zweiten ASN-Tabelle, der Berechtigungstabelle, dem Verbindungsstapel und der Trace-Tabelle. Adressierungsausnahmen führen zu einer Unterdrückung, wenn sie bei Verweisen auf die erste Bereichstabelle, die zweite Bereichstabelle, die dritte Bereichstabelle, die Segmenttabelle und die Seitentabelle, bei impliziten Verweisen auf eine dynamische Adressumsetzung wie auch bei Verweisen im Zusammenhang mit der Ausführung von LOAD PAGE-TABLE-ENTRY ADDRESS, LOAD REAL ADDRESS, STORE REAL ADDRESS und TEST PROTECTION auftreten. In ähnlicher Weise führen Adressierungsausnahmen für Zugriffe auf die Steuertabelle für zuteilbare Einheiten, den primären Eintrag der zweiten ASN-Tabelle, die Zugriffsliste, die zweite ASN-Tabelle oder die Berechtigungstabelle zu einer Unterdrückung, wenn sie bei einer Zugriffsregisterumsetzung auftreten, die entweder implizit oder als Teil von LOAD PAGE-TABLE-ENTRY ADDRESS, LOAD REAL ADDRESS, STORE REAL ADDRESS, TEST ACCESS oder TEST PROTECTION durchgeführt wird. Abgesehen von einigen spezifischen Befehlen, deren Ausführung unterdrückt wird, wird die Operation für eine Operandenadresse abgeschlossen, die umgesetzt werden kann, jedoch eine nicht verfügbare Position bezeichnet. Bei einem Abschluss können Änderungen nur in Ergebnisfeldern auftreten. In diesem Zusammenhang beinhaltet der Begriff „Ergebnisfeld” den Bedingungscode, Register und jegliche Speicherpositionen, die bereitgestellt werden und die als durch den Befehl zu ändern bezeichnet sind.
  • Speicheroperanden-Abrufverweise:
  • Wenn die Bytes eines Speicheroperanden an der Befehlsausführung nur als Quelle beteiligt sind, wird der Operand als Abrufoperand bezeichnet, und der Verweis auf die Position wird als Speicheroperanden-Abrufverweis bezeichnet. Ein Abrufoperand ist in einzelnen Befehlsdefinitionen durch die Angabe gekennzeichnet, dass die Zugriffsausnahme für einen Abruf gilt.
  • Auf alle Bits in einem einzelnen Byte eines Abrufoperanden wird gleichzeitig zugegriffen. Wenn ein Operand aus mehr als einem Byte besteht, können die Bytes einzeln, ein Byte nach dem anderen, aus dem Speicher abgerufen werden. Sofern nichts anderes angegeben ist, werden die Bytes nicht zwingend in einer bestimmten Reihenfolge abgerufen.
  • Die Speicheroperanden-Abrufverweise eines Befehls treten nach denjenigen aller vorausgehenden Befehle und vor denjenigen von nachfolgenden Befehlen auf, wie durch andere CPUs und durch Kanalprogramme beobachtet. Die Operanden eines beliebigen Befehls werden in der Reihenfolge abgerufen, die für diesen Befehl angegeben ist. Die CPU kann die Operanden von Befehlen abrufen, bevor die Befehle ausgeführt werden. Es besteht keine definierte Obergrenze für die Dauer zwischen dem Abruf eines Operanden und seiner Verwendung. Dennoch werden, wie durch die CPU selbst beobachtet, ihre Speicheroperandenverweise in der konzeptionellen Reihenfolge durchgeführt.
  • Bei bestimmten Sonderbefehlen können die Abrufverweise für mehrere Operanden gegenüber bestimmten Zugriffen durch andere CPUs und durch Kanalprogramme als gesperrt dargestellt werden. Ein solcher Abrufverweis wird als Sperrabrufverweis bezeichnet. Die Abrufzugriffe, die einem Sperrabrufverweis zugehörig sind, treten nicht zwingend unmittelbar nacheinander auf, jedoch dürfen sämtliche Speicherzugriffe durch andere CPS zwischen den Abrufzugriffen des Sperrabrufverweises nicht an denselben Positionen wie der Sperrabrufverweis erfolgen.
  • Der Speicheroperanden-Abrufverweis für den Befehl LOAD PAIR DISJOINT kann als Sperrabrufverweis dargestellt werden. Ob LOAD PAIR DISJOINT in der Lage ist, beide Operanden mithilfe eines Sperrabrufs abzurufen, wird durch den Bedingungscode angegeben.
  • Speicheroperanden-Speicherverweise:
  • Wenn die Bytes eines Speicheroperanden an der Befehlsausführung nur als Ziel in dem Umfang beteiligt sind, dass sie durch das Ergebnis ersetzt werden, wird der Operand als Speicheroperand bezeichnet, und der Verweis auf die Position wird als Speicheroperanden-Speicherverweis bezeichnet. Ein Speicheroperand ist in einzelnen Befehlsdefinitionen durch die Angabe gekennzeichnet, dass die Zugriffsausnahme für eine Speicherung gilt.
  • Auf alle Bits in einem einzelnen Byte eines Speicheroperanden wird gleichzeitig zugegriffen. Wenn ein Operand aus mehr als einem Byte besteht, können die Bytes einzeln, ein Byte nach dem anderen, im Speicher platziert werden. Sofern nichts anderes angegeben ist, werden die Bytes nicht zwingend in einer bestimmten Reihenfolge gespeichert.
  • Die CPU kann ein Platzieren von Ergebnissen im Speicher verzögern. Es besteht keine definierte Obergrenze für die Dauer, während der Ergebnisse anstehend bleiben können, bevor sie gespeichert werden. Diese Verzögerung wirkt sich nicht auf die Reihenfolge aus, in der die Ergebnisse im Speicher platziert werden.
  • Die Ergebnisse eines Befehls werden im Speicher platziert, nachdem die Ergebnisse aller vorhergehenden Befehle im Speicher platziert worden sind und bevor jegliche Ergebnisse der nachfolgenden Befehle gespeichert werden, wie durch andere CPUs und durch Kanalprogramme beobachtet. Die Ergebnisse eines beliebigen Befehls werden in der Reihenfolge gespeichert, die für diesen Befehl angegeben ist.
  • Die CPU ruft keine Operanden, ART-Tabelleneinträge oder DAT-Tabelleneinträge von einer Speicherposition ab, bevor sämtliche Informationen gespeichert worden sind, die durch die CPU für diese Position bestimmt sind. Vorabgerufene Befehle können aktualisiert dargestellt werden, bevor die Informationen im Speicher dargestellt werden.
  • Die Speicherungen werden zwingend nur als Ergebnis einer Serialisierungsoperation und, bevor die CPU in den Stoppstatus übergeht, abgeschlossen.
  • Blockparallelverweise
  • Bei einigen Verweisen ist angegeben, dass die Zugriffe auf sämtliche Bytes innerhalb eines Halbwortes, Wortes, Doppelwortes oder Vierfachwortes als blockparallel dargestellt werden, wie durch andere CPUs und Kanalprogramme beobachtet. Das Halbwort, Wort, Doppelwort oder Vierfachwort wird in diesem Abschnitt als Block bezeichnet. Wenn angegeben ist, dass ein Abrufverweis als gleichzeitig innerhalb eines Blocks dargestellt werden soll, wird während der Zeit, in der die in dem Block enthaltenen Bytes abgerufen werden, kein Speicherzugriff auf den Block durch eine andere CPU oder ein anderes Kanalprogramm zugelassen. Wenn angegeben ist, dass ein Speicherverweis als gleichzeitig innerhalb eines Blocks dargestellt werden soll, wird während der Zeit, in der in dem Block enthaltene Bytes gespeichert werden, kein Zugriff auf den Block, weder zum Abrufen noch zum Speichern, durch eine andere CPU oder ein anderes Kanalprogramm zugelassen.
  • CPU-Serialisierung:
  • In der folgenden Erörterung bezieht sich der Begriff Serialisierungsbefehl auf einen Befehl, der bewirkt, dass eine oder mehrere Serialisierungsfunktionen durchgeführt werden. Der Begriff Serialisierungsoperation bezieht sich auf eine Operationseinheit innerhalb eines Befehls oder auf eine Maschinenoperation wie zum Beispiel eine Unterbrechung, die bewirkt, dass eine Serialisierungsfunktion durchgeführt wird.
  • Die Abfolge der Ereignisse, die einer Serialisierungsoperation zugehörig sind, ist wie folgt:
    • 1. Alle konzeptionell vorhergehenden Speicherzugriffe durch die CPU werden abgeschlossen, wie durch andere CPUs und durch Kanalprogramme beobachtet. Dazu zählen alle konzeptionell vorhergehenden Speicherungen und Änderungen an den Speicherschlüsseln.
    • 2. Es wird die normale Funktion durchgeführt, die der Serialisierungsoperation zugehörig ist. Bei einer Befehlsausnahme werden Operanden abgerufen, und das Speichern von Ergebnissen wird abgeschlossen. Bei den Ausnahmen handelt es sich um LOAD PSW, LOAD PSW EXTENDED und SET PREFIX, bei denen der Operand abgerufen werden darf, bevor vorhergehende Speicherungen abgeschlossen worden sind, und um Unterbrechungen, bei denen der Unterbrechungscode und zugehörige Felder vor der Serialisierung gespeichert werden dürfen. Das Abrufen des Serialisierungsbefehls erfolgt vor der Ausführung des Befehls und darf der Ausführung von vorhergehenden Befehlen vorangehen, darf jedoch nicht dem Abschluss jeglicher vorhergehender Serialisierungsoperationen vorangehen. Bei einer Unterbrechung werden das alte PSW, der Unterbrechungscode und gegebenenfalls sonstige Informationen gespeichert und das neue PSW abgerufen, jedoch nicht zwingend in dieser Reihenfolge.
    • 3. Abschließend können Befehlsabruf- und Operandenzugriffe für konzeptionell nachfolgende Operationen beginnen.
  • Eine Serialisierungsfunktion wirkt sich auf die Reihenfolge von Speicherzugriffen aus, die der Steuerung durch die CPU unterliegen, in der die Serialisierungsfunktion erfolgt. Sie wirkt sich nicht auf die Reihenfolge von Speicherzugriffen aus, die der Steuerung durch andere CPUs und Kanalprogramme unterliegen.
  • Serialisierung von spezifischen Operanden
  • Bestimmte Befehle bewirken, dass eine Serialisierung von spezifischen Operanden für einen Operanden des Befehls durchgeführt wird. Wir durch andere CPUs und durch das Kanalteilsystem beobachtet, besteht eine Serialisierungsoperation von spezifischen Operanden darin, alle konzeptionell vorhergehenden Speicherzugriffe durch die CPU abzuschließen, bevor konzeptionell nachfolgende Zugriffe auf den spezifischen Speicheroperanden des Befehls auftreten dürfen. Bei Abschluss eines Befehls, der eine Serialisierung von spezifischen Operanden bewirkt, wird die Speicherung des Befehls abgeschlossen, wie durch andere CPUs und Kanalprogramme beobachtet.
  • Eine Ausführungsform eines Befehlsformats gemäß einer Ausführungsform wird unter Bezugnahme auf 6 beschrieben. Dieses Befehlsformat kann auch als Befehl zur Art des Zugriffs auf den nächsten Befehl (Next Instruction Access Intent instruction, NIAI) bezeichnet werden. Dieses Befehlsformat kann ein Operationscodefeld 601 aufweisen, das angibt, dass es sich um einen Befehl „zur Art des Zugriffs auf den nächsten Befehl” handelt. Dieses kann sich in Bit 0 bis und einschließlich in Bit 15 des Befehls befinden. Es kann auch ein reserviertes Feld 602 vorhanden sein, das sich in Bit 16 bis und einschließlich in Bit 24 befindet und das Nullen enthalten kann. Dieses Befehlsformat kann auch Felder oder Operanden wie zum Beispiel ein Zugriffsart-Steuerfeld 603 (I1), das sich in Bit 24 bis und einschließlich in Bit 2 befinden kann, und ein weiteres Zugriffsart-Steuerfeld 604 (I2) aufweisen, das sich in Bit 28 bis und einschließlich in Bit 31 befinden kann.
  • Bei dieser Befehlsformat-Ausführungsform bedeutet der Begriff Primärzugriffsoperand den Speicheroperanden mit der niedrigsten Nummer eines Befehls. In ähnlicher Weise bedeutet der Begriff Sekundärzugriffsoperand den Speicheroperanden mit der nächstniedrigsten Nummer eines Befehls. Diese Begriffe haben nicht dieselbe Bedeutung wie die Begriffe erster Operand und zweiter Operand, wenngleich eine gewisse Übereinstimmung bestehen kann. Beispielsweise ist bei dem Befehl MOVE der erste Operand der Primärzugriffsoperand, und der zweite Operand ist der Sekundärzugriffsoperand. Jedoch ist bei dem Befehl LOAD MULTIPLE DISJOINT der zweite Operand der Primärzugriffsoperand, und der vierte Operand ist der Sekundärzugriffsoperand.
  • Unter den Steuerungen in den Feldern I1 603 und I2 604 wird der CPU die künftige Zugriffsart auf einen oder beide des Primärzugriffsoperanden und des Sekundärzugriffsoperanden des nächsten sequenziellen Befehls mitgeteilt. Bei dem nächsten sequenziellen Befehl kann es sich um den Befehl handeln, der nach dem NIAI-Befehl abgerufen und ausgeführt wird. Das Feld I1 603 enthält einen Code, um der CPU die Zugriffsart für den Primärzugriffsoperanden des nächsten sequenziellen Befehls mitzuteilen. Das Feld I2 604 enthält einen Code, um der CPU die Zugriffsart für den Sekundärzugriffsoperanden des nächsten sequenziellen Befehls mitzuteilen. Wenn der nächste sequenzielle Befehl nur einen einzigen Speicheroperanden aufweist, wird das Feld I2 604 ignoriert.
  • Eine Ausführungsform eines Befehlsformats kann ein einziges Zugriffsartfeld beinhalten. Eine weitere Ausführungsform eines Befehlsformats kann zwei Zugriffsartfelder beinhalten. Eine weitere Ausführungsform eines Befehlsformats kann mehrere Zugriffsartfelder beinhalten. Eine weitere Ausführungsform eines Befehlsformats kann ein Feld oder einen Operanden beinhalten, das/der einen Wert enthält, der die Anzahl von nachfolgenden nächsten sequenziellen Befehlen angibt.
  • Eine Ausführungsform eines Zugriffsart-Steuerfeldes eines Befehlsformats gemäß einer Ausführungsform wird unter Bezugnahme auf 7 beschrieben. Ein Zugriffsartfeld kann ein reserviertes Feld 701 aufweisen und kann sich in den Bits 0 bis 1 befinden, die Nullen aus Gründen der Programmkompatibilität enthalten können. Es kann ferner ein Zugriffsartfeld 702 (AI) aufweisen und sich in den Bits 2 bis 3 befinden.
  • Die Zugriffsart-Steuerfelder (I1 603 und I2 604) können eine Ganzzahl ohne Vorzeichen enthalten, die als Code verwendet wird, um der CPU die Zugriffsart für den entsprechenden Operanden des nächsten sequenziellen Befehls wie folgt mitzuteilen:
    • – Wenn das Zugriffsart-Steuerfeld einen Wert 0 enthält, kann auf den entsprechenden Operanden des nächsten sequenziellen Befehls als Befehlsoperand durch einen oder mehrere nachfolgende Befehle nach dem nächsten sequenziellen Befehl zugegriffen werden. Bei einer Ausführungsform kann der nächste sequenzielle Befehl normal behandelt werden, beispielsweise arbeitet der Cache so, als hätte nie ein NIAI-Befehl vorgelegen.
    • – Wenn das Zugriffsart-Steuerfeld einen Wert 1 enthält, wird auf den entsprechenden Operanden des nächsten sequenziellen Befehls durch einen oder mehrere nachfolgende Befehle für einen Operandenspeicherzugriff zugegriffen, und es kann auch für einen Operandenabrufzugriff auf ihn zugegriffen werden. Bei einer Ausführungsform kann der Wert 1 den Prozessor anweisen, den Operanden des nächsten sequenziellen Befehls in dem Cache des Prozessors zu speichern, Alleineigentum an der Cache-Zeile für den Prozessor anzufordern und den nächsten sequenziellen Befehl in dem Prozessor auszuführen. Bei einer Ausführungsform mit einem Prozessor und einem Coprozessor kann der Wert 1 den Prozessor anweisen, den Operanden des nächsten sequenziellen Befehls in dem Cache des Prozessors zu speichern, Alleineigentum an der Cache-Zeile für den Prozessor anzufordern und den nächsten sequenziellen Befehl in dem Prozessor statt in dem Coprozessor auszuführen, wenn es sich bei dem Coprozessor zum Beispiel um eine spezielle Engine oder eine Prozessorerweiterung handelt. Bei einer Ausführungsform mit einem Prozessor und einem Coprozessor kann der Wert 1 den Prozessor anweisen, den Operanden des nächsten sequenziellen Befehls in dem Cache des Prozessors zu speichern, Alleineigentum an der Cache-Zeile für den Prozessor anzufordern und den nächsten sequenziellen Befehl in dem Coprozessor auszuführen, wenn es sich bei dem Coprozessor zum Beispiel um eine spezielle Engine oder eine Prozessorerweiterung handelt. Bei einer Ausführungsform enthält der Coprozessor einen unabhängigen Cache, sodass der in dem unabhängigen Cache gespeicherte Operand, wenn der Coprozessor den nächsten sequenziellen Befehl ausführt, zu dem Cache migriert wird, der sich in dem Prozessor in einem Alleineigentumsstatus befindet. Bei einer Ausführungsform nutzt der Coprozessor einen Cache mit dem Prozessor gemeinsam, sodass keine Migration erforderlich ist. Bei einer Ausführungsform handelt es sich bei dem Coprozessor um einen zweiten Prozessor.
    • – Wenn das Zugriffsart-Steuerfeld einen Wert 2 enthält, wird auf den entsprechenden Operanden des nächsten sequenziellen Befehls durch einen oder mehrere nachfolgende Befehle für einen Operandenabrufzugriff zugegriffen. Bei einer Ausführungsform kann in dem Fall, in dem der nächste sequenzielle Befehl in dem Hauptspeicher oder in dessen Nähe durchgeführt werden kann, wenn das Zugriffsart-Steuerfeld eine 2 enthält, der Prozessor angewiesen werden, beim Verarbeiten des nächsten sequenziellen Befehls einen lokalen Cache statt des Hauptspeichers zu verwenden und eine gemeinsam genutzte Cache-Zeile für den Prozessor anzufordern. Bei einer Ausführungsform kann der Wert 2 den Prozessor anweisen, eine bestimmte Ebene des Cache statt des lokalen Cache zu verwenden und eine gemeinsam genutzte Cache-Zeile für den Prozessor anzufordern. Bei einer Ausführungsform ermöglicht die gemeinsam genutzte Cache-Zeile, dass Daten von mehreren Prozessoren in einem schreibgeschützten Zustand gemeinsam genutzt werden. Bei einer Ausführungsform kann der Wert 2 den Prozessor anweisen, den Operanden des nächsten sequenziellen Befehls in dem Cache des Prozessors zu speichern, gemeinsamen Zugriff auf die Cache-Zeile für den Prozessor anzufordern und den nächsten sequenziellen Befehl in dem Prozessor auszuführen. Bei einer Ausführungsform mit einem Prozessor und einem Coprozessor kann der Wert 2 den Prozessor anweisen, den Operanden des nächsten sequenziellen Befehls in dem Cache des Prozessors zu speichern, gemeinsamen Zugriff auf die Cache-Zeile für den Prozessor anzufordern und den nächsten sequenziellen Befehl in dem Prozessor statt in dem Coprozessor auszuführen, wenn es sich bei dem Coprozessor zum Beispiel um eine spezielle Engine oder eine Prozessorerweiterung handelt. Bei einer Ausführungsform mit einem Prozessor und einem Coprozessor kann der Wert 2 den Prozessor anweisen, den Operanden des nächsten sequenziellen Befehls in dem Cache des Prozessors zu speichern, gemeinsamen Zugriff auf die Cache-Zeile für den Prozessor anzufordern und den nächsten sequenziellen Befehl in dem Coprozessor auszuführen, wenn es sich bei dem Coprozessor zum Beispiel um eine spezielle Engine oder eine Prozessorerweiterung handelt. Bei einer Ausführungsform enthält der Coprozessor einen unabhängigen Cache, sodass der in dem unabhängigen Cache gespeicherte Operand, wenn der Coprozessor den nächsten sequenziellen Befehl ausführt, zu dem Cache migriert wird, der sich in dem Prozessor befindet. Bei einer Ausführungsform nutzt der Coprozessor einen Cache mit dem Prozessor gemeinsam, sodass keine Migration erforderlich ist. Bei einer Ausführungsform handelt es sich bei dem Coprozessor um einen zweiten Prozessor.
    • – Wenn das Zugriffsart-Steuerfeld einen Wert 3 enthält, wird nicht auf den entsprechenden Operanden des nächsten sequenziellen Befehls durch einen oder mehrere nachfolgende Befehle zugegriffen. Dies kann den Prozessor anweisen, ein Eigentum an einer Cache-Zeile aus dem Cache für den angegebenen Operanden in dem nächsten sequenziellen Befehl aktiv freizugeben, nachdem er beendet ist. Es kann dem Prozessor auch mitteilen, dass er nicht aktiv versuchen soll, diese Cache-Zeile im Cache zu halten. Bei einer Ausführungsform wird der LRU-Status beim Verwenden des LRU-Ersetzungsalgorithmus möglicherweise im Cache nicht aktualisiert. Bei einer Ausführungsform kann der LRU-Status auf einen beliebigen anderen Status als den MRU-Status aktualisiert werden, beispielsweise kann er in Ersetzungsalgorithmen mit mehreren LRU-Status auf einen ersten, zweiten, dritten usw. LRU-Status aktualisiert werden. Bei einer Ausführungsform kann der Wert 3 den Prozessor anweisen, den Operanden des nächsten sequenziellen Befehls nicht in den Cache zu laden, und er kann den Prozessor anweisen, den nächsten sequenziellen Befehl außerhalb des Prozessors auszuführen. Bei einer Ausführungsform kann der Wert 3 den Prozessor anweisen, den Operanden des nächsten sequenziellen Befehls nicht in den Cache zu laden, und er kann den Prozessor anweisen, den nächsten sequenziellen Befehl im Speicher statt im Prozessor auszuführen. Bei einer Ausführungsform mit einem Prozessor und einem Coprozessor kann der Wert 3 den Prozessor anweisen, den Operanden des nächsten sequenziellen Befehls nicht in den Cache zu laden, und kann den Prozessor anweisen, den nächsten sequenziellen Befehl in dem Coprozessor durch den Cache des Coprozessors auszuführen, wenn es sich bei dem Coprozessor zum Beispiel um eine spezielle Engine oder eine Prozessorerweiterung handelt.
  • In einem Beispiel für eine Nutzung, wenn ein beliebiges Zugriffsart-Steuerfeld einen Wert 1 oder 2 enthält, kann es sich bei einem nächsten sequenziellen Befehl um einen Befehl „Move long” handeln, der in einer normalen Umgebung dazu verwendet wird, Daten ohne Verwendung des lokalen Cache von einer Speicherposition zu einer zweiten Speicherposition direkt in den Speicher oder in dessen Nähe zu verschieben. Wenn das Zugriffsart-Steuerfeld jedoch 1 oder 2 enthält, können die Daten von einer Speicherposition in den Cache und dann von dem Cache an die zweite Speicherposition verschoben werden, wodurch die Wiederverwendung des in dem Cache gespeicherten Operanden in einem oder mehreren nachfolgenden Befehlen ermöglicht wird. Wenn das Zugriffsart-Steuerfeld keine 1 oder 2 enthält, werden die Daten ohne jegliche Aktualisierungen des Cache direkt von Speicher zu Speicher übertragen. Folglich ermöglicht in diesem Beispiel der Wert 1 oder 2, das Speichern verschobener Daten in den Cache zu steuern, wenn ein Verschiebebefehl verarbeitet wird. Dies ist nur ein Beispiel für einen nächsten sequenziellen Befehl und ist nicht nur auf den Verschiebebefehl beschränkt.
  • Abhängig von dem Modell der CPU erkennt die CPU möglicherweise nicht alle Zugriffsarten bei einem Operanden. Bei Zugriffsarten, die nicht durch die CPU erkannt werden, kann der Befehl als Nulloperation fungieren. Eine Nulloperation liegt vor, wenn ein Befehl genaugenommen keine Operation durchführt, z. B. ein ADD-Befehl mit einer 0. Wenn der Befehl mehr als zwei Speicheroperanden aufweist, muss bei der Ausführungsform mit zwei Zugriffsart-Steuerfeldern (I1 603 und I2 604) keine Zugriffsart für die zusätzlichen Operanden angegeben werden. Abhängig von dem Modell erkennt die CPU möglicherweise Zugriffsarten bei einem bestimmten Befehl nicht. In solchen Fällen kann der Befehl als Nulloperation fungieren. Der Befehl zur Art des Zugriffs auf den nächsten Befehl kann sich nur auf Operandenzugriffe nachfolgender Befehle auswirken.
  • Bei einer Ausführungsform kann der NIAI(„Next Instruction Access Intent”, Art des Zugriffs auf den nächsten Befehl)-Befehl auf „Art des Zugriffs auf den nächsten Satz von Befehlen” erweitert werden. Bei dieser Ausführungsform wird die Art einer Reihe von sequenziellen Befehlen zusammen mithilfe eines NIAI-Befehls angegeben. Bei einer Ausführungsform kann die Anzahl von nachfolgenden Befehlen maschinenabhängig sein. Bei einer Ausführungsform kann die Anzahl von nachfolgenden Befehlen durch denselben oder einen weiteren Befehl angegeben werden, zum Beispiel in einem Operanden in dem NIAI-Befehl oder in einem zurzeit reservierten Befehlsfeld.
  • Eine Ausführungsform eines Ablaufplans gemäß einer Ausführungsform wird unter Bezugnahme auf 8 beschrieben. Die CPU bezieht einen Zugriffsartbefehl, der eine Zugriffsart angibt, 801. Die Zugriffsart kann einem Operanden eines nächsten sequenziellen Befehls zugehörig sein. Die Zugriffsart kann auch eine Nutzung des Operanden durch Befehle angeben, die dem nächsten sequenziellen Befehl nachfolgen. Die CPU führt dann den Zugriffsartbefehl aus, 802. Bei einer Ausführungsform kann der Prozessor die Zugriffsart speichern, indem er sie intern, zum Beispiel in einem internen Speicher oder in einem internen Steuerregister, speichert. Die CPU bezieht den nächsten sequenziellen Befehl, 803. Der nächste sequenzielle Befehl wird ausgeführt, und als Teil der Ausführung wird das Cache-Verhalten, zum Beispiel das Verhalten eines untergeordneten Cache, auf Grundlage der Zugriffsart in dem Zugriffsartbefehl gesteuert, 804.
  • Bei einer Ausführungsform kann der Cache einen LRU-Ersetzungsalgorithmus verwenden. Daher kann das Cache-Verhalten, das angepasst wird 804, sich abhängig von der Zugriffsart auf ein Aktualisieren oder Nichtaktualisieren der LRU/MRU-Tabelle für die Cache-Zeile (den Status der Cache-Zeile, auf die zugegriffen wird) während eines Cache-Treffers beziehen. Üblicherweise würde ein Cache-Treffer die Cache-Zeile in den MRU-Status versetzen. Die LRU/MRU-Tabelle nicht zu aktualisieren, würde ermöglichen, dass eine Cache-Zeile schneller an die LRU-Position verschoben wird, wenn sie sich noch nicht dort befindet. Dies würde ermöglichen, dass die Cache-Zeile bei nachfolgenden Cache-Fehltreffern überschrieben oder entfernt wird, die neue Zeilen aus den übergeordneten Caches oder dem Hauptspeicher einbringen. Bei einer Ausführungsform kann die Cache-Zeile aktiv aus dem lokalen Cache freigegeben werden. Bei einer Ausführungsform kann die LRU/MRU-Tabelle so aktualisiert werden, dass sie andere LRU-Status als MRU angibt.
  • Bei einer Ausführungsform beinhaltet diese Anpassung ein Anpassen des Cache während eines Cache-Fehltreffers. Wenn es sich bei dem nächsten sequenziellen Befehl um einen Speicherbefehl handelt, wird üblicherweise ein Alleineigentum an der Cache-Zeile angefordert. Wenn es sich bei dem nächsten sequenziellen Befehl um einen Abrufbefehl handelt, wird üblicherweise ein schreibgeschütztes oder ein bedingt exklusives (conditionally exclusive, CEX) Alleineigentum an der Cache-Zeile angefordert. CEX bedeutet für den übergeordneten Cache, dass eine schreibgeschützte oder exklusive Cache-Zeile zurückgegeben werden kann, abhängig davon, welches eine bessere Leistungsfähigkeit für den übergeordneten Cache bereitstellt. Bei einer Ausführungsform bedeutet bessere Leistungsfähigkeit für den übergeordneten Cache, dass, wenn keine andere CPU Eigentümer der Cache-Zeile ist, diese Cache-Zeile bei einem CEX exklusiv der anfordernden CPU übergeben wird, und wenn bereits eine andere CPU die Cache-Zeile besitzt, die anfordernde CPU sie schreibgeschützt bekommt, wodurch beiden CPUs ermöglicht wird, den Zugriff auf die Cache-Zeile gemeinsam zu nutzen. Dadurch, dass die Zugriffsart künftiger Befehle auf den Speicher bekannt ist, können Abrufe, die Fehltreffer im lokalen Cache erzielen, ein Anfordern eines Alleineigentums statt einer bedingt exklusiven Anforderung beinhalten.
  • Bei einer Ausführungsform kann ein Anpassen der Cache-Zeile in einem Cache beide oben genannten Anpassungsausführungsformen beinhalten. Bei einer Ausführungsform kann ein anderer Ersetzungsalgorithmus als der des LRU durch den Cache verwendet werden.
  • Bei einer Ausführungsform handelt es sich bei dem untergeordneten Speicher um einen 6-fach assoziativen 96-KB-Cache. Auf ihn kann durch zwei Lade- oder Speicherbefehle in jedem Zyklus zugegriffen werden, wobei jeder Befehl eine zugehörige Zugriffsart aufweist, die durch einen vorherigen NIAI angegeben werden kann.
  • Eine Ausführungsform wird unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammbefehle implementiert werden kann/können. Diese Computerprogrammbefehle können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Befehle, die über den Prozessor des Computers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Implementieren der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • Wie für einen Fachmann zu erkennen ist, können die Ausführungsformen als System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können die Ausführungsformen eine reine Hardware-Ausführungsform, eine reine Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform annehmen, in der Software- und Hardware-Aspekte kombiniert werden, die sämtlich hierin verallgemeinernd als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Des Weiteren kann die Ausführungsform die Form eines Computerprogrammprodukts annehmen, das in einem beliebigen physischen Ausdrucksmedium verkörpert ist, wobei computerverwendbarer Programmcode in dem Medium verkörpert ist.
  • Ein Beispiel für ein Computerprogrammprodukt, das einen oder mehrere Aspekte einer Ausführungsform beinhaltet, wird unter Bezugnahme auf 9 beschrieben. Ein Computerprogrammprodukt 900 beinhaltet zum Beispiel ein oder mehrere computerlesbare Speichermedien 902 zum Speichern eines/einer computerlesbaren Programmcodemittels oder -logik 904 darauf, um einen oder mehrere Aspekte einer Ausführungsform bereitzustellen und zu vereinfachen. Es kann eine beliebige Kombination eines oder mehrerer computerverwendbarer oder computerlesbarer Medien verwendet werden. Bei dem computerverwendbaren oder computerlesbaren Medium kann es sich zum Beispiel um ein(e) elektronische(s), magnetische(s), optische(s), Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit handeln, ohne auf diese beschränkt zu sein. Zu konkreteren Beispielen (einer nicht erschöpfenden Liste) des computerlesbaren Mediums würden folgende gehören: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (random access memory, RAM), ein Festwertspeicher (read-only memory, ROM), ein löschbarer, programmierbarer Festwertspeicher (erasable programmable read-only memory, EPROM oder Flash-Speicher), ein tragbarer Compact-Disk-Festwertspeicher (CD-ROM), eine optische Speichereinheit oder eine Magnetspeichereinheit. Im Rahmen dieses Dokuments kann ein computerverwendbares oder computerlesbares Medium ein beliebiges Speichermedium sein, das das Programm zur Verwendung durch das System, die Vorrichtung oder Einheit zur Befehlsausführung bzw. in Verbindung mit diesen enthalten oder speichern kann.
  • Computerprogrammcode zum Ausführen von Operationen der Ausführungsform kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben werden, zum Beispiel in einer objektorientierten Programmiersprache wie etwa Java, Smalltalk, C++ oder dergleichen und in herkömmlichen verfahrensorientierten Programmiersprachen wie zum Beispiel der Programmiersprache „C” oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, zum Teil auf dem Computer des Benutzers, als eigenständiges Software-Paket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jede Art von Netzwerk verbunden sein, zum Beispiel durch ein lokales Netzwerk (LAN) oder ein Weitverkehrs-Netzwerk (WAN), oder die Verbindung kann mit einem externen Computer (zum Beispiel über das Internet mithilfe eines Internet-Diensteanbieters) hergestellt werden.
  • Die Computerprogrammbefehle können außerdem auf einen Computer oder eine sonstige programmierbare Datenverarbeitungsvorrichtung geladen werden, um zu bewirken, dass eine Reihe von Schritten eines Vorgangs auf dem Computer oder einer sonstigen programmierbaren Vorrichtung ausgeführt wird, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer oder einer sonstigen programmierbaren Vorrichtung ausgeführten Befehle Prozesse bereitstellen, um die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Vorgänge zu implementieren.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Abschnitt eines Codes darstellen, der einen oder mehrere ausführbare Befehle zum Implementieren der angegebenen logischen Funktion(en) aufweist. Es ist außerdem zu beachten, dass bei einigen alternativen Implementierungen die in dem Block vermerkten Funktionen in einer anderen Reihenfolge als in den Figuren vermerkt auftreten können. Beispielsweise können je nach einbezogener Funktionalität zwei nacheinander dargestellte Blöcke sogar im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können bisweilen in der umgekehrten Reihenfolge ausgeführt werden. Es ist ferner zu beachten, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder in den Ablaufplänen durch Spezialsysteme auf Grundlage von Hardware, die die angegebenen Funktionen oder Vorgänge ausführen, oder durch Kombinationen von Spezial-Hardware und Computerbefehlen implementiert werden können.
  • 10 veranschaulicht eine Ausführungsform eines Arbeitsplatzrechners, eines Server-Hardware-Systems, in der eine Ausführungsform umgesetzt werden kann. Das System weist ein Computersystem 1001 wie zum Beispiel einen Personal Computer, einen Arbeitsplatzrechner, einen Server, eine Speichereinheit oder einen Host einschließlich optionaler Peripherieeinheiten auf. Das Computersystem 1001 beinhaltet einen oder mehrere Prozessoren 1006 und einen Bus, der dazu eingesetzt wird, eine Verbindung herzustellen und eine Datenübertragung zwischen dem/den Prozessor(en) 1006 und den sonstigen Komponenten des Computersystems 1001 gemäß bekannten Techniken zu ermöglichen. Der Bus verbindet den Prozessor 1006 mit einem Speicher 1005 und einem Langzeitspeicher 1007, zu dem zum Beispiel eine Festplatte (darunter etwa magnetische Medien, eine CD, DVD und ein Flash-Speicher) oder ein Bandlaufwerk zählen können. Das Computersystem 1001 kann außerdem einen Benutzerschnittstellenadapter beinhalten, der den Mikroprozessor 1006 über den Bus mit einer oder mehreren Schnittstelleneinheiten verbindet, zum Beispiel mit einer Tastatur 1004, einer Maus 1003, einem Drucker/Scanner 1010 und/oder sonstigen Schnittstelleneinheiten, bei denen es sich um eine beliebige Benutzerschnittstelleneinheit handeln kann, beispielsweise einen berührungsempfindlichen Bildschirm, einen digitalisierten Eingabeblock usw. Der Bus verbindet außerdem eine Anzeigeeinheit 1002 wie zum Beispiel einen LCD-Bildschirm oder einen Monitor mit dem Mikroprozessor 1006 über einen Anzeigeadapter.
  • Das Computersystem 1001 kann Daten mit anderen Computern oder Netzwerken von Computern mithilfe eines Netzwerkadapters austauschen, der in der Lage ist, Daten mit einem Netzwerk 1009 auszutauschen 1008. Beispielsweise können Netzwerkadapter Datenübertragungskanäle, einen Token-Ring, ein Ethernet oder Modems beinhalten. Alternativ kann das Computersystem 1001 mithilfe einer drahtlosen Schnittstelle wie zum Beispiel einer CDPD(cellular digital packet data)-Karte Daten austauschen. Das Computersystem 1001 kann solchen anderen Computern in einem lokalen Netzwerk (LAN), einem VLAN oder einem Weitverkehrs-Netzwerk (WAN) zugehörig sein, oder es kann sich bei dem Computersystem 601 um einen Client in einer Client-/Server-Anordnung mit einem weiteren Computer usw. handeln. Alle diese Konfigurationen wie auch die entsprechende Datenübertragungs-Hardware und -Software sind nach dem Stand der Technik bekannt.
  • Auf Software-Programmierungscode, der eine Ausführungsform verkörpert, kann üblicherweise durch den Prozessor 1006 von dem Langzeitspeicher 1007 zugegriffen werden. Der Software-Programmierungscode kann auf einer beliebigen von einer Vielfalt von bekannten Medien zur Verwendung mit einem Datenverarbeitungssystem verkörpert sein, wie zuvor oben unter Bezugnahme auf 9 beschrieben. Der Code kann auf solchen Medien verteilt werden oder kann an Benutzer von dem Speicher oder der Speicherung eines Computersystems über ein Netzwerk an andere Computersysteme verteilt werden.
  • Alternativ kann der Programmierungscode 1011 in dem Speicher 1005 verkörpert sein, und es kann mithilfe des Prozessorbusses durch den Prozessor 1006 auf ihn zugegriffen werden. Ein solcher Programmierungscode kann ein Betriebssystem beinhalten, das die Funktion und das Zusammenwirken der verschiedenen Computerkomponenten und einem oder mehreren Anwendungsprogrammen 1012 steuert. Programmcode kann normalerweise von dem Speichermedium 1007 zum Speicher 1005 ausgelagert werden, wo er zum Verarbeiten durch den Prozessor 1006 verfügbar sein kann. Die Techniken und Verfahren zum Verkörpern von Software-Programmierungscode im Speicher, auf physischen Medien und/oder zum Verteilen von Software-Code über Netzwerke sind allgemein bekannt und werden hierin nicht weiter erörtert. Das Medium des Computerprogrammprodukts kann üblicherweise durch eine Verarbeitungsschaltung bevorzugt in einem Computersystem zur Ausführung durch die Verarbeitungsschaltung lesbar sein.
  • Unter Bezugnahme auf 11 beinhaltet eine Ausführungsform eine Vielzahl von n Prozessoren (P1 bis Pn) 1101, 1102, 1103, 1104, die einen Speicher 1105 gemeinsam nutzen, jeder Prozessor 1101 kann Caches zum Zwischenspeichern von Speicheroperanden, Lade-/Speicher-Einheiten zum Zugreifen auf Daten im Speicher, Ausführungseinheiten zum Durchführen einer Funktion von Befehlen auf Grundlage des Befehlsoperationscodes und dynamische Adressumsetzung (DAT) zum Umsetzen von virtuellen (logischen) Adressen in reale (absolute) Speicheradressen einschließlich eines TLB zum Zwischenspeichern von DAT-Umsetzungen für eine verbesserte Leistungsfähigkeit beinhalten. Die Prozessoren können Peripherieeinheiten 1006 (DASD/Band) über einen Systembus gemeinsam nutzen oder können lokale Peripherieeinheiten aufweisen.
  • Die hierin dargestellten Ablaufpläne sind nur Beispiele. Es sind viele Änderungen an diesen Schaubildern oder den darin beschriebenen Schritten (oder Operationen) möglich, ohne vom Umfang der bevorzugten Ausführungsformen abzuweichen. Die Schritte können beispielsweise in einer abweichenden Reihenfolge durchgeführt werden, oder es können Schritte hinzugefügt, gelöscht oder modifiziert werden. Alle diese Änderungen werden als Teil der beanspruchten Ausführungsform betrachtet.
  • Es ist zwar die beispielhafte Ausführungsform beschrieben worden, es versteht sich jedoch, dass Fachleute jetzt und in Zukunft verschiedene Verbesserungen und Erweiterungen vornehmen dürfen, die in den Umfang der folgenden Ansprüche fallen.

Claims (24)

  1. Computerimplementiertes Verfahren, wobei das Verfahren aufweist: Beziehen eines Zugriffsartbefehls, der eine Zugriffsart angibt, durch einen Computer, wobei die Zugriffsart einem Operanden eines nächsten sequenziellen Befehls zugehörig ist, wobei die Zugriffsart eine Verwendung des Operanden durch einen oder mehrere Befehle im Anschluss an den nächsten sequenziellen Befehl angibt; Ausführen des Zugriffsartbefehls durch den Computer; Beziehen des nächsten sequenziellen Befehls durch den Computer; und Ausführen des nächsten sequenziellen Befehls durch den Computer, wobei das Ausführen aufweist: Anpassen einer oder mehrerer Cache-Verhaltensweisen für den Operanden des nächsten sequenziellen Befehls auf Grundlage der Zugriffsart.
  2. Verfahren nach Anspruch 1, das des Weiteren ein Speichern der Zugriffsart in einem internen Steuerregister durch den Computer aufweist.
  3. Verfahren nach Anspruch 1, wobei der Zugriffsartbefehl einen Zugriffsartoperanden aufweist, der die Zugriffsart angibt.
  4. Verfahren nach Anspruch 1, wobei der Zugriffsartbefehl eine weitere Zugriffsart angibt, wobei die weitere Zugriffsart einem weiteren Operanden des nächsten sequenziellen Befehls zugehörig ist, wobei die weitere Zugriffsart eine Verwendung des weiteren Operanden durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl angibt.
  5. Verfahren nach Anspruch 1, wobei die Zugriffsart angibt, dass durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl so auf den Operanden des nächsten sequenziellen Befehls zugegriffen wird, dass: auf den Operanden des nächsten sequenziellen Befehls durch die Befehle im Anschluss an den nächsten sequenziellen Befehl zu einem Operandenspeicherzugriff zugegriffen wird, auf den Operanden des nächsten sequenziellen Befehls durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl zu einem Operandenabrufzugriff zugegriffen wird, auf den Operanden des nächsten sequenziellen Befehls nicht durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl zugegriffen wird, oder eine Kombination davon.
  6. Verfahren nach Anspruch 1, wobei das Anpassen einer oder mehrerer Cache-Verhaltensweisen für den Operanden des nächsten sequenziellen Befehls auf Grundlage der Zugriffsart des Weiteren aufweist: auf Grundlage dessen, dass es sich bei der Zugriffsart um einen ersten Wert handelt, ein Anpassen durch den Computer eines Zuletzt-verwendet-Status einer Cache-Zeile, auf die zugegriffen wird, so, dass er sich bei oder in der Nähe von „am längsten nicht verwendet” befindet, und auf Grundlage dessen, dass es sich bei der Zugriffsart um einen zweiten Wert handelt, ein Nichtanpassen durch den Computer des Zuletzt-verwendet-Status der Cache-Zeile, auf die zugegriffen wird, so, dass er „zuletzt verwendet” lautet.
  7. Verfahren nach Anspruch 1, wobei das Anpassen einer oder mehrerer Cache-Verhaltensweisen für den Operanden des nächsten sequenziellen Befehls auf Grundlage der Zugriffsart des Weiteren aufweist: auf Grundlage eines Cache-Fehltreffers und der Zugriffsart ein Anfordern durch den Computer, dass eine Cache-Zeile aus einem nächstübergeordneten Cache schreibgeschützt oder exklusiv sein soll.
  8. Verfahren nach Anspruch 1, wobei der Computer einen Prozessor und einen Coprozessor aufweist.
  9. Computersystem, das aufweist: einen Speicher; einen Prozessor, der mit dem Speicher in Verbindung steht, wobei der Prozessor eine Befehlsabrufeinheit zum Abrufen von Befehlen aus dem Speicher und eine oder mehrere Befehlsausführungseinheiten zum Ausführen von abgerufenen Befehlen aufweist; wobei das Computersystem in der Lage ist, ein Verfahren durchzuführen, das aufweist: Beziehen eines Zugriffsartbefehls, der eine Zugriffsart angibt, wobei die Zugriffsart einem Operanden eines nächsten sequenziellen Befehls zugehörig ist, wobei die Zugriffsart eine Verwendung des Operanden durch einen oder mehrere Befehle im Anschluss an den nächsten sequenziellen Befehl angibt; Ausführen des Zugriffsartbefehls; Beziehen des nächsten sequenziellen Befehls; und Ausführen des nächsten sequenziellen Befehls, wobei das Ausführen aufweist: Anpassen einer oder mehrerer Cache-Verhaltensweisen für den Operanden des nächsten sequenziellen Befehls auf Grundlage der Zugriffsart.
  10. Computersystem nach Anspruch 9, das des Weiteren ein Speichern der Zugriffsart in einem internen Steuerregister durch den Computer aufweist.
  11. Computersystem nach Anspruch 9, wobei der Zugriffsartbefehl einen Zugriffsartoperanden aufweist, der die Zugriffsart angibt.
  12. Computersystem nach Anspruch 9, wobei der Zugriffsartbefehl eine weitere Zugriffsart angibt, wobei die weitere Zugriffsart einem weiteren Operanden des nächsten sequenziellen Befehls zugehörig ist, wobei die weitere Zugriffsart eine Verwendung des weiteren Operanden durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl angibt.
  13. Computersystem nach Anspruch 9, wobei die Zugriffsart angibt, dass durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl so auf den Operanden des nächsten sequenziellen Befehls zugegriffen wird, dass: auf den Operanden des nächsten sequenziellen Befehls durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl zu einem Operandenspeicherzugriff zugegriffen wird, auf den Operanden des nächsten sequenziellen Befehls durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl zu einem Operandenabrufzugriff zugegriffen wird, auf den Operanden des nächsten sequenziellen Befehls nicht durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl zugegriffen wird, oder eine Kombination davon.
  14. Computersystem nach Anspruch 9, wobei das Anpassen einer oder mehrerer Cache-Verhaltensweisen für den Operanden des nächsten sequenziellen Befehls auf Grundlage der Zugriffsart des Weiteren aufweist: auf Grundlage dessen, dass es sich bei der Zugriffsart um einen ersten Wert handelt, ein Anpassen durch den Computer eines Zuletzt-verwendet-Status einer Cache-Zeile, auf die zugegriffen wird, so, dass er sich bei oder in der Nähe von „am längsten nicht verwendet” befindet, und auf Grundlage dessen, dass es sich bei der Zugriffsart um einen zweiten Wert handelt, ein Nichtanpassen durch den Computer des Zuletzt-verwendet-Status der Cache-Zeile, auf die zugegriffen wird, so, dass er „zuletzt verwendet” lautet.
  15. Computersystem nach Anspruch 9, wobei das Anpassen einer oder mehrerer Cache-Verhaltensweisen für den Operanden des nächsten sequenziellen Befehls auf Grundlage der Zugriffsart des Weiteren aufweist: auf Grundlage eines Cache-Fehltreffers und der Zugriffsart ein Anfordern, dass eine Cache-Zeile aus einem nächstübergeordneten Cache schreibgeschützt oder exklusiv sein soll.
  16. Computersystem nach Anspruch 9, wobei das Computersystem des Weiteren einen Coprozessor aufweist.
  17. Computerprogrammprodukt, wobei das Computerprogrammprodukt aufweist: ein Speichermedium, das von einer Verarbeitungsschaltung gelesen werden kann und das Befehle zum Ausführen durch die Verarbeitungsschaltung zum Durchführen eines Verfahrens speichert, das aufweist: Beziehen eines Zugriffsartbefehls, der eine Zugriffsart angibt, wobei die Zugriffsart einem Operanden eines nächsten sequenziellen Befehls zugehörig ist, wobei die Zugriffsart eine Verwendung des Operanden durch einen oder mehrere Befehle im Anschluss an den nächsten sequenziellen Befehl angibt; Ausführen des Zugriffsartbefehls; Beziehen des nächsten sequenziellen Befehls; und Ausführen des nächsten sequenziellen Befehls, wobei das Ausführen aufweist: Anpassen einer oder mehrerer Cache-Verhaltensweisen für den Operanden des nächsten sequenziellen Befehls auf Grundlage der Zugriffsart.
  18. Computerprogrammprodukt nach Anspruch 17, das des Weiteren ein Speichern der Zugriffsart in einem internen Steuerregister durch den Computer aufweist.
  19. Computerprogrammprodukt nach Anspruch 17, wobei der Zugriffsartbefehl einen Zugriffsartoperanden aufweist, der die Zugriffsart angibt.
  20. Computerprogrammprodukt nach Anspruch 17, wobei der Zugriffsartbefehl eine weitere Zugriffsart angibt, wobei die weitere Zugriffsart einem weiteren Operanden des nächsten sequenziellen Befehls zugehörig ist, wobei die weitere Zugriffsart eine Verwendung des weiteren Operanden durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl angibt.
  21. Computerprogrammprodukt nach Anspruch 17, wobei die Zugriffsart angibt, dass durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl so auf den Operanden des nächsten sequenziellen Befehls zugegriffen wird, dass: auf den Operanden des nächsten sequenziellen Befehls durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl zu einem Operandenspeicherzugriff zugegriffen wird, auf den Operanden des nächsten sequenziellen Befehls durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl zu einem Operandenabrufzugriff zugegriffen wird, auf den Operanden des nächsten sequenziellen Befehls nicht durch den einen oder die mehreren Befehle im Anschluss an den nächsten sequenziellen Befehl zugegriffen wird, oder eine Kombination davon.
  22. Computerprogrammprodukt nach Anspruch 17, wobei das Anpassen einer oder mehrerer Cache-Verhaltensweisen für den Operanden des nächsten sequenziellen Befehls auf Grundlage der Zugriffsart des Weiteren aufweist: auf Grundlage dessen, dass es sich bei der Zugriffsart um einen ersten Wert handelt, ein Anpassen durch den Computer eines Zuletzt-verwendet-Status einer Cache-Zeile, auf die zugegriffen wird, so, dass er sich bei oder in der Nähe von „am längsten nicht verwendet” befindet, und auf Grundlage dessen, dass es sich bei der Zugriffsart um einen zweiten Wert handelt, ein Nichtanpassen durch den Computer des Zuletzt-verwendet-Status der Cache-Zeile, auf die zugegriffen wird, so, dass er „zuletzt verwendet” lautet.
  23. Computerprogrammprodukt nach Anspruch 17, wobei das Anpassen einer oder mehrerer Cache-Verhaltensweisen für den Operanden des nächsten sequenziellen Befehls auf Grundlage der Zugriffsart des Weiteren aufweist: auf Grundlage eines Cache-Fehltreffers und der Zugriffsart ein Anfordern, dass eine Cache-Zeile aus einem nächstübergeordneten Cache schreibgeschützt oder exklusiv sein soll.
  24. Computerprogrammprodukt nach Anspruch 9, wobei die Verarbeitungsschaltung einen Prozessor und einen Coprozessor aufweist.
DE112013002155.2T 2012-06-15 2013-06-12 Befehl zur Art des Zugriffs auf den nächsten Befehl Pending DE112013002155T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/524,105 US10656945B2 (en) 2012-06-15 2012-06-15 Next instruction access intent instruction for indicating usage of a storage operand by one or more instructions subsequent to a next sequential instruction
US13/524,105 2012-06-15
PCT/EP2013/062165 WO2013186266A2 (en) 2012-06-15 2013-06-12 Next instruction access intent instruction

Publications (1)

Publication Number Publication Date
DE112013002155T5 true DE112013002155T5 (de) 2015-01-15

Family

ID=48669903

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013002155.2T Pending DE112013002155T5 (de) 2012-06-15 2013-06-12 Befehl zur Art des Zugriffs auf den nächsten Befehl

Country Status (4)

Country Link
US (2) US10656945B2 (de)
DE (1) DE112013002155T5 (de)
GB (1) GB2519017B (de)
WO (1) WO2013186266A2 (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101612594B1 (ko) 2011-01-27 2016-04-14 소프트 머신즈, 인크. 프로세서의 변환 룩 어사이드 버퍼를 이용하는 게스트 명령-네이티브 명령 레인지 기반 매핑
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
WO2012103373A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
WO2012103245A2 (en) 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
EP2972798B1 (de) 2013-03-15 2020-06-17 Intel Corporation Verfahren und vorrichtung für eine gastadressenstapelemulation mit unterstützung einer spekulation
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
US9600286B2 (en) * 2014-06-30 2017-03-21 International Business Machines Corporation Latent modification instruction for transactional execution
US9772824B2 (en) * 2015-03-25 2017-09-26 International Business Machines Corporation Program structure-based blocking
US10310854B2 (en) 2015-06-30 2019-06-04 International Business Machines Corporation Non-faulting compute instructions
US10061539B2 (en) 2015-06-30 2018-08-28 International Business Machines Corporation Inaccessibility status indicator
US10002076B2 (en) * 2015-09-29 2018-06-19 Nxp Usa, Inc. Shared cache protocol for parallel search and replacement
US9898563B2 (en) 2015-11-13 2018-02-20 Mentor Graphics Corporation Modeling memory in emulation based on cache
US9767237B2 (en) 2015-11-13 2017-09-19 Mentor Graphics Corporation Target capture and replay in emulation
US9990452B2 (en) * 2015-11-13 2018-06-05 Mentor Graphics Corporation Low power corruption of memory in emulation
KR102457183B1 (ko) * 2016-01-05 2022-10-21 한국전자통신연구원 공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법
US10853267B2 (en) * 2016-06-14 2020-12-01 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Adaptive method for selecting a cache line replacement algorithm in a direct-mapped cache
US10621090B2 (en) 2017-01-12 2020-04-14 International Business Machines Corporation Facility for extending exclusive hold of a cache line in private cache
US10521351B2 (en) * 2017-01-12 2019-12-31 International Business Machines Corporation Temporarily suppressing processing of a restrained storage operand request
US10572387B2 (en) 2018-01-11 2020-02-25 International Business Machines Corporation Hardware control of CPU hold of a cache line in private cache where cache invalidate bit is reset upon expiration of timer
US10922078B2 (en) * 2019-06-18 2021-02-16 EMC IP Holding Company LLC Host processor configured with instruction set comprising resilient data move instructions
US11669331B2 (en) * 2021-06-17 2023-06-06 International Business Machines Corporation Neural network processing assist instruction

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4928239A (en) * 1986-06-27 1990-05-22 Hewlett-Packard Company Cache memory with variable fetch and replacement schemes
JP3219826B2 (ja) * 1992-02-21 2001-10-15 日本電気株式会社 情報処理装置
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6088789A (en) * 1998-05-13 2000-07-11 Advanced Micro Devices, Inc. Prefetch instruction specifying destination functional unit and read/write access mode
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
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6526481B1 (en) * 1998-12-17 2003-02-25 Massachusetts Institute Of Technology Adaptive cache coherence protocols
US6615340B1 (en) 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
US6578111B1 (en) 2000-09-29 2003-06-10 Sun Microsystems, Inc. Cache memory system and method for managing streaming-data
US7080210B2 (en) 2002-02-12 2006-07-18 Ip-First, Llc Microprocessor apparatus and method for exclusive prefetch of a cache line from memory
US7315921B2 (en) 2002-02-19 2008-01-01 Ip-First, Llc Apparatus and method for selective memory attribute control
US20070110639A1 (en) 2005-10-14 2007-05-17 Pennsylvania State University System and method for positioning and synthesizing of nanostructures
US8122195B2 (en) 2007-12-12 2012-02-21 International Business Machines Corporation Instruction for pre-fetching data and releasing cache lines
US9952977B2 (en) 2009-09-25 2018-04-24 Nvidia Corporation Cache operations and policies for a multi-threaded client

Also Published As

Publication number Publication date
GB201500634D0 (en) 2015-03-04
US10656945B2 (en) 2020-05-19
US20140115306A1 (en) 2014-04-24
GB2519017B (en) 2019-12-25
US10430188B2 (en) 2019-10-01
WO2013186266A3 (en) 2014-02-13
WO2013186266A2 (en) 2013-12-19
GB2519017A (en) 2015-04-08
US20130339672A1 (en) 2013-12-19

Similar Documents

Publication Publication Date Title
DE112013002155T5 (de) Befehl zur Art des Zugriffs auf den nächsten Befehl
CN104364775B (zh) 具有段偏移寻址的专用存储器访问路径
DE102015007571B4 (de) Keine-lokalität-hinweis-vektor-speicherzugriff-prozessoren, -verfahren, -systeme und -befehle
DE112013000381B4 (de) Datenverschlüsselung auf der Grundlage einer Speicheradressumsetzung
DE112017001027B4 (de) Seitenfehlerbehebung
DE112013002956T5 (de) Vorabladen von Verzweigungsvorhersagen
DE112013001442T5 (de) Kopieren von Zeichendaten, die ein Abschlusszeichen aufweisen, von einer Speicherposition zu einer anderen
DE112013001466T5 (de) Vergleichen von Gruppen von Zeichendaten, die Abschlusszeichen aufweisen
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE102014109083A1 (de) Bilden von Anweisungsgruppen basierend auf der Optimierung von Anweisungen bei der Dekodierung
DE102018126731A1 (de) Freigabeanweisung, um Seitenblock während des Auslagerns umzukehren
DE112015001548T5 (de) Partitionsmobilität für Partitionen mit erweitertem Code
CN101911025A (zh) 带有取回保护的动态地址转换
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE112012007119T5 (de) Threadmigration-Unterstützung für Kerne unterschiedlicher Architektur
DE102018132521A1 (de) Vorrichtung und verfahren zur verflachung und reduktion von schleifen in einer single instruction, multiple data- (simd-) pipeline
CN101911024A (zh) 带有帧管理的动态地址转换
DE112019002389T5 (de) Architektur zur dynamischen umwandlung einer speicherkonfiguration
DE102020122311A1 (de) Sicheres-netzwerken-protokoll-optimierung über nic-hardware-auslagern
CN1266589C (zh) 多重高速缓冲存储器线写回和作废技术
DE102018001537A1 (de) System, vorrichtung und verfahren zum selektiven freigeben einer instruktionshandhabung auf lokalitäts-basis
DE112010003942T5 (de) Einrichtung zum Setzen von Schlüsseln ohne Stilllegung
DE112018004364B4 (de) Vereinfachung einer verarbeitung in einer datenverarbeitungsumgebung durch gruppierung eines konfigurationsstatusregisters auf grundlage von funktionaler affinität
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
US10474575B2 (en) Cache-based communication between execution threads of a data processing system

Legal Events

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