DE112010003942T5 - Einrichtung zum Setzen von Schlüsseln ohne Stilllegung - Google Patents

Einrichtung zum Setzen von Schlüsseln ohne Stilllegung Download PDF

Info

Publication number
DE112010003942T5
DE112010003942T5 DE112010003942T DE112010003942T DE112010003942T5 DE 112010003942 T5 DE112010003942 T5 DE 112010003942T5 DE 112010003942 T DE112010003942 T DE 112010003942T DE 112010003942 T DE112010003942 T DE 112010003942T DE 112010003942 T5 DE112010003942 T5 DE 112010003942T5
Authority
DE
Germany
Prior art keywords
memory
key
command
computer
processor
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.)
Ceased
Application number
DE112010003942T
Other languages
English (en)
Inventor
Timothy Siegel
Dan Greiner
Chung-Lung Kevin Shum
Christian Jacobi
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 DE112010003942T5 publication Critical patent/DE112010003942T5/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • 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
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

Eine Einrichtung zum Setzen von Schlüsseln ohne Stilllegung wird bereitgestellt, die es ermöglicht, eine Veränderung von Speicherschlüsseln ohne Stilllegungs-Operationen von anderen Prozessoren eines Mehrprozessor-Systems durchzuführen. Mit dieser Einrichtung wird ein Speicherschlüssel, auf den eine Vielzahl von Prozessoren des Mehrprozessor-Systems zugreifen kann, aktualisiert, ohne Operationen der Vielzahl der Prozessoren stillzulegen. Da der Speicherschlüssel ohne Stilllegung von anderen Operationen aktualisiert wird, kann der Speicherschlüssel von einem Prozessor als ein Speicherschlüssel festgestellt werden, der zu Beginn einer von dem Prozessor durchgeführten Operation einen Wert und am Ende der Operation einen zweiten Wert hat. Ein Mechanismus wird bereitgestellt, um die Fortsetzung der Operation zu ermöglichen, wodurch eine schwerwiegende Ausnahmebedingung vermieden wird.

Description

  • HINTERGRUND
  • Diese Erfindung betrifft allgemein die Vereinfachung der Verarbeitung in einer Datenverarbeitungsumgebung und insbesondere die Vereinfachung der Verarbeitung in Verbindung mit dem Setzen von Speicherschlüsseln, die in der Datenverarbeitungsumgebung verwendet werden.
  • Speicherschlüssel werden in Datenverarbeitungsumgebungen wie zum Beispiel Mehrprozessor-Systemen verwendet, die auf der z/Architecture® der International Business Machines Corporation mit Sitz in Armonk, New York, beruhen, um die Verarbeitung in der Umgebung zu vereinfachen. Ein Speicherschlüssel wird beispielsweise jedem Block des realen Speichers (der auch als ein Rahmen bezeichnet wird) zugeordnet. Durch eine solche Zuordnung von Schlüsseln wird ein Zuverlässigkeitsmechanismus vorgesehen, mittels dem Speicherblöcke getrennt werden, wodurch sichergestellt wird, dass Programme, die in einem Schlüssel ausgeführt werden, keine unzulässigen Speicheroperationen in Blöcke, die einen anderen Schlüssel haben, oder, vorbehaltlich eines Steuerelements in dem Schlüssel, Abrufoperationen aus Blöcken durchführen, die einen anderen Schlüssel haben. Ein Speicherschlüssel kann auch einem Betriebssystem Hinweise darauf geben, auf welche Blöcke Bezug genommen wurde und welche Blöcke geändert wurden, was dem Betriebssystem ermöglicht, festzustellen, welche Blöcke gegebenenfalls in den Zusatzspeicher geschrieben werden müssen.
  • Ein Speicherschlüssel kann über Befehle, die in der Datenverarbeitungsumgebung ausgeführt werden, gesetzt (aktualisiert) werden. In der z/Architecture® verändern beispielsweise ein Befehl ”Set Storage Key Extended” (”Erweiterten Speicherschlüssel setzen”) und ein Befehl ”Perform Frame Management Function” (”Rahmenverwaltungsfunktion ausführen”) den Speicherschlüssel, auf den mehrere Prozessoren der Datenverarbeitungsumgebung zugreifen können.
  • Um die Leistungsfähigkeit des Systems zu verbessern, kann ein Prozessor eine Untergruppe der Speicherschlüssel in einem lokalen (vom Prozessor angegeben) Bereich puffern. Wenn ein Speicherschlüssel gesetzt wird (was den tatsächlichen Wert des Schlüssels gegebenenfalls ändern kann), sollen üblicherweise jedoch alle Prozessoren in der Mehrprozessor-Konfiguration diese Änderung tatsächlich gleichzeitig feststellen, so dass veraltete lokale Kopien des Schlüssels verworfen werden. Um diese Verarbeitung zu vereinfachen, wird eine Stilllegungs-Operation durchgeführt, bei der der den Befehl einleitende Prozessor (Initiator) zur Veränderung des Speicherschlüssels ein Stilllegungs-Signal an die anderen Prozessoren der Datenverarbeitungsumgebung sendet. Als Reaktion auf den Empfang des Signals legen die anderen Prozessoren ihre Verarbeitung still, löschen lokal im Cachespeicher abgelegte Kopien des Schlüssels und bestätigen dies. Wenn alle Prozessoren, die das Stilllegungs-Signal empfangen haben, eine Bestätigung abgegeben haben, setzt der Initiator den Speicherschlüssel auf einen gewünschten Wert und sendet ein Stilllegung-aufheben-Signal an die anderen Prozessoren, damit die anderen Prozessoren die Ausführung wieder aufnehmen können.
  • Die Stilllegungs-Operation, die bei der Aktualisierung von Speicherschlüsseln verwendet wird, wirkt sich nachteilig auf die Leistungsfähigkeit des Systems aus. Gemäß einer Erscheinungsform der vorliegenden Erfindung wird eine Einrichtung bereitgestellt, welche die Veränderung von Speicherschlüsseln ermöglicht, ohne die anderen Prozessoren, die den Speicherschlüssel beobachten können, stillzulegen. Es ist nicht länger notwendig, dass alle Prozessoren die Änderung tatsächlich gleichzeitig feststellen.
  • Durch die Bereitstellung eines Verfahrens zur Vereinfachung der Verarbeitung in einer Datenverarbeitungsumgebung nach Anspruch 1 werden die Unzulänglichkeiten nach dem Stand der Technik überwunden und zusätzliche Vorteile geschaffen.
  • Ein System und ein Computerprogramm, die dem Verfahren nach Anspruch 1 entsprechen, werden hier ebenfalls beschrieben und beansprucht.
  • Zusätzliche Merkmale und Vorteile werden durch die Techniken der vorliegenden Erfindung realisiert. Weitere Ausführungs- und Erscheinungsformen der Erfindung werden hier ausführlich beschrieben und als ein Teil der beanspruchten Erfindung betrachtet.
  • KURZE BESCHREIBUNG DER DIVERSEN ANSICHTEN DER ZEICHNUNGEN
  • Eine oder mehrere Erscheinungsformen der vorliegenden Erfindung werden in den Ansprüchen am Ende der Beschreibung besonders als Beispiele hervorgehoben und gesondert beansprucht. Die vorstehenden und andere Aufgaben, Merkmale und Vorteile der Erfindung gehen, in Verbindung mit den beiliegenden Zeichnungen betrachtet, aus der folgenden ausführlichen Beschreibung hervor, bei denen:
  • 1A eine Ausführungsform einer Datenverarbeitungsumgebung zur Aufnahme und Verwendung von einer oder mehreren Erscheinungsformen der vorliegenden Erfindung zeigt;
  • 1B ein Beispiel eines Prozessors der Datenverarbeitungsumgebung von 1A gemäß einer Erscheinungsform der vorliegenden Erfindung zeigt;
  • 1C ein Beispiel eines logisch partitionierten Systems zeigt, das eine oder mehrere Erscheinungsformen der vorliegenden Erfindung beinhalten und verwenden kann;
  • 2 eine Ausführungsform von weiteren Einzelheiten in Verbindung mit einer Steuereinheit von 1A oder 1C gemäß einer Erscheinungsform der vorliegenden Erfindung zeigt;
  • 3 eine Ausführungsform eines Hostcomputers, der einen anderen Computer nachbilden kann, gemäß einer Erscheinungsform der vorliegenden Erfindung zeigt;
  • 4 ein Beispiel der verschiedenen Komponenten eines Speicherschlüssels gemäß einer Erscheinungsform der vorliegenden Erfindung zeigt;
  • 5 bildhaft ein Beispiel der Auswirkung einer Stilllegungs-Operation an einem Prozessor der Datenverarbeitungsumgebung zeigt;
  • 6 bildhaft ein Beispiel der Auswirkung der Veränderung eines Speicherschlüssels ohne Stilllegung von irgendeinem der Prozessoren gemäß einer Erscheinungsform der vorliegenden Erfindung zeigt;
  • 7A eine Ausführungsform eines Formats von einem Befehl ”Set Storage Key Extended” (SSKE) zeigt, der gemäß einer Erscheinungsform der vorliegenden Erfindung verwendet wird;
  • 7B eine Ausführungsform der zu dem Operanden M3 des SSKE-Befehls von 7A gehörenden Felder gemäß einer Erscheinungsform der vorliegenden Erfindung zeigt;
  • 8 eine Ausführungsform der Logik in Verbindung mit einem Nichtstilllegungs-SSKE-Befehl gemäß einer Erscheinungsform der vorliegenden Erfindung zeigt;
  • die 9A bis 9B gemäß einer Erscheinungsform der vorliegenden Erfindung eine Ausführungsform der Logik zeigen, die dazu dient, die von einer Nichtstilllegungs-Aktualisierung des Speicherschlüssels betroffene Verarbeitung zu verwalten;
  • 10 eine Ausführungsform eines Computerprogrammprodukts zeigt, das eine oder mehrere Erscheinungsformen der vorliegenden Erfindung beinhaltet;
  • 11 eine Ausführungsform eines Host-Computersystems zur Aufnahme und Verwendung von einer oder mehreren Erscheinungsformen der vorliegenden Erfindung zeigt;
  • 12 ein weiteres Beispiel eines Computersystems zur Aufnahme und Verwendung von einer oder mehreren Erscheinungsformen der vorliegenden Erfindung zeigt;
  • 13 ein anderes Beispiel eines Computersystems zeigt, das ein Computernetzwerk zur Aufnahme und Verwendung von einer oder mehreren Erscheinungsformen der vorliegenden Erfindung umfasst;
  • 14 eine Ausführungsform von verschiedenen Elementen eines Computersystems zur Aufnahme und Verwendung von einer oder mehreren Erscheinungsformen der vorliegenden Erfindung zeigt;
  • 15A eine Ausführungsform der Ausführungseinheit des Computersystems von 14 zur Aufnahme und Verwendung von einer oder mehreren Erscheinungsformen der vorliegenden Erfindung zeigt;
  • 15B eine Ausführungsform der Verzweigungseinheit des Computersystems von 14 zur Aufnahme und Verwendung von einer oder mehreren Erscheinungsformen der vorliegenden Erfindung zeigt;
  • 15A eine Ausführungsform der Lade-/Speichereinheit des Computersystems von 14 zur Aufnahme und Verwendung von einer oder mehreren Erscheinungsformen der vorliegenden Erfindung zeigt; und
  • 16 eine Ausführungsform eines nachgebildeten Host-Computersystems zur Aufnahme und Verwendung von einer oder mehreren Erscheinungsformen der vorliegenden Erfindung zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einer Erscheinungsform der vorliegenden Erfindung wird eine Einrichtung zum Setzen von Schlüsseln ohne Stilllegung bereitgestellt, die es ermöglicht, eine Veränderung von Speicherschlüsseln ohne Stilllegungs-Operationen von anderen Prozessoren eines Mehrprozessor-Systems durchzuführen. Mit dieser Einrichtung wird ein Speicherschlüssel, auf den eine Vielzahl von Prozessoren des Mehrprozessor-Systems zugreifen kann, aktualisiert, ohne Operationen der Vielzahl der Prozessoren stillzulegen. Da ein Speicherschlüssel ohne Stilllegung der anderen Operationen aktualisiert wird, kann der Speicherschlüssel von einem Prozessor als ein Speicherschlüssel festgestellt werden, der zu Beginn einer von dem Prozessor durchgeführten Operation einen Wert und am Ende der Operation einen zweiten Wert hat. Bewerkstelligt wird dies gemäß einer Erscheinungsform der vorliegenden Erfindung, bei der ein Mechanismus bereitgestellt wird, um eine Fortsetzung der Operation zu ermöglichen, wodurch eine schwerwiegende Ausnahmebedingung vermieden wird.
  • Der Speicherschlüssel ist beispielsweise eine Steuerstruktur mit verschiedenen Feldern oder er kann ein beliebiges Merkmal oder eine beliebige Ressource sein, die zum Schutz des Speichers verwendet wird. In der hier verwendeten Weise bezieht sich Speicher auf den Speicher eines Computersystems wie zum Beispiel den zentralen oder Hauptspeicher und/oder den Cachespeicher. Die Stilllegung ist zum Beispiel ein Mittel zur Serialisierung, die durchgeführt werden kann, um sicherzustellen, dass Aktualisierungen an einer konfigurationsweit genutzten Ressource für die CPUs der Konfiguration sofort sichtbar sind. Eine von einer CPU eingeleitete Stilllegungs-Operation bewirkt, dass auf den anderen CPUs in der Konfiguration Folgendes geschieht: jeder Befehl oder jede Arbeitseinheit, der beziehungsweise die auf der CPU ausgeführt wird, wird abgearbeitet; lokal im Cachespeicher abgelegte Kopien der konfigurationsweit genutzten Ressource, die aktualisiert wird, werden verworfen; und die Wiederaufnahme der Befehlsausführung wird verzögert, bis die Aktualisierung der konfigurationsweit genutzten Ressource für die CPUs sichtbar ist.
  • In einer Ausführungsform wird die Nichtstilllegungs-Einrichtung für Befehle realisiert, für die zuvor eine Stilllegung erforderlich war. Der Befehl Set Storage Key Extended (SSKE) und der Befehl Perform Frame Management Function (PFMF) beispielsweise, die von der International Business Machines Corporation angeboten werden, haben gewöhnlich eine Stilllegung erforderlich gemacht, um eine Aktualisierung eines Speicherschlüssels vorzunehmen. Gemäß einer Erscheinungsform der vorliegenden Erfindung können diese Befehle und möglicherweise auch andere Befehle wahlweise jedoch als Nichtstilllegungs-Befehle realisiert werden. In einer Erscheinungsform der vorliegenden Erfindung kann jeder Befehl in beiden Verarbeitungsmodi (Stilllegung und Nichtstilllegung) ausgeführt werden, und der jeweilige Modus, der bei einer bestimmten Ausführung des Befehls verwendet werden soll, wird durch Setzen eines Anzeigers in dem Befehl ausgewählt.
  • Eine Ausführungsform einer Datenverarbeitungsumgebung zur Aufnahme und Verwendung von einer oder mehreren Erscheinungsformen der vorliegenden Erfindung wird mit Bezug auf 1A beschrieben. Die Datenverarbeitungsumgebung ist beispielsweise ein Mehrprozessor-System, wie zum Beispiel ein Symmetric Multiprocessor System (SMP), das auf der von der International Business Machines Corporation mit Sitz in Armonk, New York, angebotenen z/Architecture® beruht. Als ein bestimmtes Beispiel ist das System ein Server vom Typ System z®, der von der International Business Machines Corporation angeboten wird. Die z/Architecture® ist in einer von IBM® veröffentlichten Schrift mit dem Titel "z/Architecture® Principles of Operation", IBM-Veröffentlichungs-Nr. SA22-7832-07, Februar 2009, beschrieben. IBM®, z/Architecture® und System z® sind eingetragene Warenzeichen der International Business Machines Corporation mit Sitz in Armonk, New York, U.S.A. Andere hier verwendete Namen können eingetragene Warenzeichen, Warenzeichen oder Produktnamen der International Business Machines Corporation oder anderer Unternehmen sein.
  • Das Mehrprozessor-System 100 enthält beispielsweise mehrere Prozessoren 110, eine Speichersteuereinheit 120 und einen zentralen Speicher 130. Die Prozessoren 110 sind miteinander und mit dem zentralen Speicher 130 über einen oder mehrere Busse 115 und über die Speichersteuereinheit 120 verbunden. Jeder Prozessor, der in 1B gezeigt ist, enthält zum Beispiel eine Zentraleinheit (central processing unit (CPU)) 140, die beispielsweise über einen oder mehrere Busse oder andere Verbindungen 144 mit einem lokalen Cachespeicher 142 verbunden werden kann.
  • In einer anderen Ausführungsform enthält das System eine oder mehrere Partitionen oder Zonen. Beispielsweise ist das System ein logisch partitionierter Server vom Typ System z®, der von der International Business Machines Corporation angeboten wird. In diesem Beispiel, das in 1C gezeigt ist, enthält ein Server 150 zum Beispiel eine oder mehrere Partitionen oder Zonen 152 (z. B. die logischen Partitionen LP0 bis LP3), einen Hypervisor 156 (z. B. eine Verwaltungseinheit für die logischen Partitionen) und einen oder mehrere Zentralprozessoren 158 (z. B. CP0 bis CP3). Es sind zwar vier Partitionen und vier Zentralprozessoren gezeigt, doch kann das System mehr oder weniger Partitionen und/oder mehr oder weniger Zentralprozessoren enthalten.
  • Jede logische Partition 152 ist in der Lage, als ein getrenntes System zu funktionieren. Das heißt, jede logische Partition kann unabhängig zurückgesetzt, zu Beginn auf Wunsch mit einem Betriebssystem geladen und mit verschiedenen Programmen betrieben werden. Ein Betriebssystem oder ein Anwendungsprogramm, das in einer logischen Partition ausgeführt wird, scheint Zugriff auf ein ganzes und vollständiges System zu haben, doch steht in Wirklichkeit nur ein Teil davon zur Verfügung. Eine Kombination aus Hardware und Licensed Internal Code (der auch als Mikrocode und Millicode bezeichnet wird) hält ein Programm in einer logischen Partition davon ab, dass es ein Programm in einer anderen logischen Partition störend beeinflusst. Dadurch können mehrere verschiedene logische Partitionen auf einem einzigen oder auf mehreren physischen Prozessoren im Zeitscheibenverfahren arbeiten. In diesem speziellen Beispiel verfügt jede logische Partition über ein darin befindliches Betriebssystem (operating system (OS)) 160, wobei eine oder mehrere logische Partitionen ein voneinander abweichendes Betriebssystem haben können. In einer Ausführungsform ist das Betriebssystem 160 das Betriebssystem z/OS®, das von der International Business Machines Corporation mit Sitz in Armonk, New York, angeboten wird. z/OS® ist ein eingetragenes Warenzeichen der International Business Machines Corporation aus Armonk, New York.
  • Jede logische Partition kann einen oder mehrere Zentralprozessoren enthalten. Die Zentralprozessoren 158 sind physische Prozessor-Ressourcen, die den logischen Partitionen zugeteilt werden. Zum Beispiel enthält eine logische Partition 152 einen oder mehrere logische Prozessoren, von denen jeder die gesamte oder einen Teil einer physischen Prozessor-Ressource darstellt, die der Partition zugeteilt wird.
  • Die logischen Partitionen 152 werden von dem Hypervisor 156 verwaltet, der mittels Mikrocode realisiert wird, welcher auf den Prozessoren 158 läuft. Die logischen Partitionen 152 und der Hypervisor 156 umfassen jeweils ein oder mehrere Programme, die sich in entsprechenden Teilen des Zentralspeichers befinden, der zu den Zentralprozessoren gehört. Der Hypervisor 156 beispielsweise ist der Processor Resource/Systems Manager (PR/SM), der von der International Business Machines Corporation aus Armonk, New York, angeboten wird.
  • In einer Ausführungsform ist der Server mit einer Speichersteuereinheit 170 verbunden, die zentralisierte Logik enthält, welche für die Zuteilung von Ressourcen zwischen verschiedenen Prozessoren, die Anforderungen ausgeben, verantwortlich ist. Wenn die Steuereinheit 170 beispielsweise eine Anforderung empfängt, stellt sie fest, dass der Anforderer der Initiator für diese Anforderung ist und dass die anderen Prozessoren Empfänger sind; sie verschickt Nachrichten im Rundsendeverfahren; und ansonsten verarbeitet sie Anforderungen. Weitere Einzelheiten in Bezug auf eine Speichersteuereinheit (z. B. die Speichersteuereinheit 120 oder die Speichersteuereinheit 170) werden mit Bezug auf 2 beschrieben.
  • 2 zeigt ein Beispiel einer Steuereinheit 200, die mit einer Vielzahl von Prozessoren (CPUs) 201 verbunden ist. In diesem Beispiel sind zwei Zentralprozessoren gezeigt. Es versteht sich jedoch, dass mehr als zwei Prozessoren mit der Steuereinheit 200 verbunden sein können. Die Steuereinheit 200 enthält verschiedene Steuerelemente, und eines dieser Steuerelemente sind zum Beispiel die System-Serialisierungssteuerelemente 202. Die System-Serialisierungssteuerelemente dienen der Sicherstellung, dass Operationen, die zeitlich aufeinanderfolgend durchgeführt werden sollen wie zum Beispiel Aktualisierungsoperationen dahingehend serialisiert werden, dass jeweils nur eine solche Operation (oder eine begrenzte Anzahl von Operationen) in der Datenverarbeitungsumgebung in Ausführung befindlich ist. Sie überwacht auch die Abfolge von Ereignissen für diese Operation und ist Teil des Mechanismus, der die Stilllegungs-Funktion ausführt.
  • Die Steuereinheit 200 ist über verschiedene Schnittstellen mit jedem Zentralprozessor verbunden. Eine Schnittstelle 204 wird beispielsweise von dem Licensed Internal Code in einem Zentralprozessor verwendet, um ”Steuer”-Befehle an die Steuereinheit zu senden, die eine durchzuführende Maßnahme angeben, und um ”Abfrage”-Befehle zu senden, die Informationen von der Steuereinheit zurückschicken. Eine weitere Schnittstelle ist ein Antwort-Bus 206, der verwendet wird, um Informationen von der Steuereinheit für die ”Abfrage”-Befehle zurückzusenden. Der Antwort-Bus wird auch zur Übertragung des Befehlsstatus für ”Steuer”-Befehle verwendet und kann von einer Vielzahl von Quellen in der Steuereinheit, einschließlich der System-Serialisierungssteuerelemente, gesetzt werden. Ein Zentralprozessor kann diese Schnittstelle verwenden, um den Zustand der System-Serialisierungssteuerelemente in der Steuereinheit 200 abzufragen.
  • Eine weitere Schnittstelle ist die Schnittstelle 208, die von der Steuereinheit verwendet wird, um Befehle an jeden Prozessor zu senden. Dies kann ebenfalls von einer Vielzahl von Quellen in der Steuereinheit, einschließlich der System-Serialisierungssteuerelemente 202, gesteuert werden. Noch eine weitere Schnittstelle ist die Schnittstelle 210, die den Cachespeicher-Steuerelementen 212 des Zentralprozessors 201 Signale zuführt. Als Reaktion auf die Signale verarbeiten die Cachespeicher-Steuerelemente 212 Befehle. In einem Beispiel verarbeiten die Cachespeicher-Steuerelemente 212 Befehle, die einen oder mehrere Pufferspeicher wie zum Beispiel die Adressenumsetzungs-Pufferspeicher (Translation Lookaside Buffers (TLBs)) 213 betreffen.
  • Neben den Cachespeicher-Steuerelementen 212 enthält der Prozessor 201 verschiedene andere Steuerelemente, darunter zum Beispiel die Unterbrechungs-Steuerelemente 220 und die Ausführungs-Steuerelemente 222. Als Reaktion auf bestimmte Ereignisse bewirken die Unterbrechungs-Steuerelemente 220, dass eine interne Unterbrechung in der CPU ansteht, die wiederum die Ausführungs-Steuerelemente 222 veranlasst, die Verarbeitung von Programmbefehlen an dem nächsten Unterbrechungspunkt zeitweilig einzustellen. Gemäß einer Erscheinungsform der vorliegenden Erfindung enthalten die Unterbrechungs-Steuerelemente 220 eine Markierung (flag) 223, die zur Feststellung verwendet wird, ob eine Schutz-Ausnahmebedingung blockiert werden soll, was nachstehend beschrieben wird.
  • Als Reaktion auf die Unterbrechung rufen die Ausführungs-Steuerelemente 222 eine Licensed-Internal-Code-Routine auf, um einen für Rundsende-Operationen zugelassenen Signalspeicher (latch) 224 zu setzen, um den Cachespeicher-Steuerelementen 212 die Verarbeitung von anstehenden Befehlen zu ermöglichen.
  • Der Zentralprozessor 201 enthält auch einen von der CPU stillgelegten Signalspeicher 226, der anzeigt, ob der Zentralprozessor stillgelegt ist.
  • Die vorstehend beschriebenen Datenverarbeitungsumgebungen stellen lediglich Beispiele dar. Viele Variationen sind möglich, ohne vom Wesen der vorliegenden Erfindung abzuweichen. Beispielsweise muss es sich nicht um eine Umgebung auf der Grundlage der z/Architecture® handeln, sondern kann stattdessen auf anderen Architekturen beruhen, die von Intel, Sun Microsystems sowie anderen Unternehmen angeboten werden. Überdies kann eine Umgebung einen Emulator (z. B. Software- oder andere Emulationsmechanismen) beinhalten, in dem eine bestimmte Architektur oder eine Untergruppe dieser Architektur nachgebildet wird. In einer solchen Umgebung können eine oder mehrere Emulationsfunktionen des Emulators eine oder mehrere Erscheinungsformen der vorliegenden Erfindung realisieren, auch wenn ein Computer, der den Emulator ausführt, möglicherweise eine andere Architektur aufweist als die Funktionen, die nachgebildet werden. Beispielsweise werden der spezielle Befehl oder die spezielle Operation, der beziehungsweise die nachgebildet wird, im Emulationsmodus decodiert, und eine entsprechende Emulationsfunktion wird eingerichtet, um den einzelnen Befehl oder die einzelne Operation zu realisieren.
  • Weitere Einzelheiten einer Emulationsumgebung werden mit Bezug auf 3 beschrieben. Ein Hostcomputer 300 kann beispielsweise eine andere Architektur und/oder andere Verarbeitungsfunktionen eines anderen Computers nachbilden. Der Hostcomputer 300 beruht beispielsweise auf einer Intel-Architektur; einer RISC-Architektur wie zum Beispiel PowerPC; einer SPARC-Architektur, die von Sun Microsystems angeboten wird; oder auf einer anderen Architektur, die die z/Architecture® von IBM® oder eine andere Architektur von IBM® oder eines anderen Unternehmens nachbilden kann.
  • Der Hostcomputer 300 enthält beispielsweise einen Computerspeicher 302, um Befehle und Daten zu speichern; eine Befehls-Abrufeinheit 304, um Befehle aus dem Computerspeicher 302 abzurufen und um optional eine lokale Zwischenspeicherung im Pufferspeicher für die abgerufenen Befehle zu ermöglichen; eine Befehls-Decodiereinheit 306, um Befehle von der Befehls-Abrufeinheit 304 zu empfangen und um den Typ der abgerufenen Befehle festzustellen; und eine Befehls-Ausführungseinheit 308, um die Befehle auszuführen. Die Ausführung kann das Laden der Daten aus dem Computerspeicher 302 in ein Register; das Zurückspeichern der Daten aus einem Register in den Computerspeicher; oder das Durchführen einer bestimmten Art einer arithmetischen oder logischen Operation, die von der Decodiereinheit festgelegt wird, beinhalten.
  • In einem Beispiel wird jede vorstehend beschriebene Einheit in Software realisiert. Die Operationen, die von den Einheiten durchgeführt werden, werden beispielsweise als eine oder mehrere Unterroutinen in der Emulator-Software realisiert. In einem anderen Beispiel werden eine oder mehrere der Operationen in Firmware, Hardware, Software oder einer Kombination daraus realisiert.
  • Obgleich 3 mit Bezug auf eine Emulation beschrieben wird, braucht die Umgebung von 3 überdies keine Emulations-Umgebung zu sein. In einem weiteren Beispiel werden Befehle in einer programmspezifischen (native) Umgebung ausgeführt, und die Operationen werden in Hardware, Firmware, Software oder einer Kombination daraus realisiert.
  • Wie vorstehend beschrieben wurde, hat jeder Speicherblock wie zum Beispiel jeder 4-KByte-Block des realen oder absoluten Speichers in einer Ausführungsform einen zugehörigen Speicherschlüssel. Der Speicherschlüssel stellt einen Zuverlässigkeitsmechanismus bereit, mittels dem Speicherblöcke getrennt werden, wodurch sichergestellt wird, dass Programme, die in einem Schlüssel ausgeführt werden, nicht versehentlich Speicheroperationen in Blöcke, die einen anderen Schlüssel haben, durchführen. Ein Speicherschlüssel gibt einem Betriebssystem außerdem Hinweise darauf, auf welche Blöcke Bezug genommen wurde und welche Blöcke geändert wurden, was dem Betriebssystem ermöglicht, festzustellen, welche Blöcke gegebenenfalls in den Zusatzspeicher geschrieben werden müssen.
  • Ein Beispiel eines Speicherschlüssels wird mit Bezug auf 4 beschrieben. Ein Speicherschlüssel 400 enthält beispielsweise eine Zugriffssteuerungs-(ACC-)Komponente 402, eine Abrufschutz-(F-)Komponente 404, eine Verweis-(R-)Komponente 406 und eine Änderungs-(C-)Komponente 408, von denen jede nachstehend beschrieben wird:
    Zugriffssteuerbits (ACC) 402 (z. B. die Bits 0 bis 3): Wenn ein Verweis einem schlüsselgesteuerten Schutz unterliegt, werden die Zugriffssteuerbits mit einem Zugriffsschlüssel (z. B. von dem Programmstatuswort oder einem Befehls-Operanden) verglichen, wenn Daten gespeichert oder wenn Daten aus einem Speicherplatz abgerufen werden, der abrufgeschützt ist.
  • Abrufschutzbit (F) 404 (z. B. das Bit 4): Wenn ein Verweis einem schlüsselgesteuerten Schutz unterliegt, steuert das Abrufschutzbit, ob der schlüsselgesteuerte Schutz auf Verweise vom Typ Abrufen gilt; eine 0 zeigt an, dass nur Verweise vom Typ Speichern überwacht werden und dass das Abrufen mit einem beliebigen Zugriffsschlüssel erlaubt ist; eine 1 zeigt an, dass der schlüsselgesteuerte Schutz sowohl für das Abrufen als auch das Speichern gilt. Zwischen dem Abrufen von Befehlen und dem Abrufen von Operanden wird kein Unterschied gemacht.
  • Verweisbit (R) 406 (z. B. das Bit 5): Das Verweisbit wird normalerweise jedes Mal auf 1 gesetzt, wenn entweder zum Speichern von Daten oder zum Abrufen von Daten auf einen Speicherplatz in dem entsprechenden Speicherblock verwiesen wird.
  • Änderungsbit (C) 408 (z. B. das Bit 6): Das Änderungsbit wird jedes Mal auf 1 gesetzt, wenn Daten an einem Speicherplatz in dem entsprechenden Speicherblock gespeichert werden.
  • Speicherschlüssel sind nicht Teil des adressierbaren Speichers. In einem Beispiel werden folglich Befehle verwendet, um einen Speicherschlüssel zu setzen. Ein solcher Befehl ist ein Befehl ”Set Storage Key Extended”, wobei eine Ausführungsform dieses Befehls in der von IBM® veröffentlichten Schrift mit dem Titel "z/Architecture Principles of Operation", IBM-Veröffentlichungs-Nr. SA22-7832-07, Februar 2009, beschrieben ist. Dieser Befehl setzt alle Komponenten des Speicherschlüssels, selbst wenn eine oder mehrere der Komponenten auf denselben Wert, den sie schon vorher hatten, aktualisiert werden. Dieser Befehl macht es überdies erforderlich, dass das System, das serialisiert wird, sicherstellt, dass alle CPUs die Änderungen an dem Schlüssel feststellen. Die Serialisierung verwendet Stilllegungs-Operationen.
  • In einer weiteren Ausführungsform kann ein bedingter SSKE-Befehl verwendet werden, um einen Speicherschlüssel zu setzen. Dieser Befehl ermöglicht dem Programm, die Aktualisierung von beispielsweise der Verweiskomponente, der Änderungskomponente oder von beiden Komponenten unter bestimmten Bedingungen zu umgehen, wenn die Umstände dies zulassen. Das heißt, Software (z. B. das Betriebssystemprogramm) kann angeben, dass eine oder beide dieser Komponenten nicht aktualisiert zu werden brauchten Dies verleiht der CPU Flexibilität bei der Umsetzung, wenn der Zugriffsschlüssel und die Abrufschutz-Steuerelemente, die von dem SSKE-Befehl gesetzt werden, mit denjenigen übereinstimmen, die sich gerade in dem Schlüssel befinden, der aktualisiert werden soll. In Abhängigkeit von den Feldern, die gesetzt werden, verwendet dieser Befehl wahlweise Stilllegungs-Operationen. Es gibt jedoch viele Fälle, in denen die Software die Zugriffssteuerung und die Abrufschutz-Steuerelemente des Speicherschlüssels ändern muss, weshalb der bedingte SSKE-Befehl nicht verwendet werden kann.
  • Ein Überblick über ein Beispiel der Verarbeitung in Verbindung mit einem Befehl ”Set Storage Key Extended”, der eine Stilllegungs-Operation verwendet, wird mit Bezug auf 5 beschrieben. Wie in diesem bestimmten Beispiel gezeigt ist, gibt es vier Zentraleinheiten, die CPU 0 bis CPU 3. Die CPU 0 führt eine SSKE-Operation durch (500). Folglich leitet sie bei Nr. 1 eine Stilllegungs-Operation an alle anderen Zentraleinheiten ein. Nach Beendigung von allen aktuellen Arbeitseinheiten bestätigen die anderen CPUs in der Konfiguration den Empfang der Stilllegung (z. B. Nr. 2a, Nr. 2b, Nr. 2c). Im Anschluss an die Bestätigung löscht jede CPU alle lokal im Cachespeicher abgelegten Kopien des Schlüssels. Die CPUs, mit Ausnahme der CPU 0, können mit der Ausführung von Operationen fortfahren, die keinen Zugriff auf den Block benötigten, der von dem SSKE betroffen ist (Nr. 3a und Nr. 3b). Wenn die CPU jedoch auf denselben Block zugreifen muss, in dem der Schlüssel gerade gesetzt wird, wird die nachfolgende Operation verzögert (502).
  • Die Ausführung des SSKE-Befehls wird verzögert (Nr. 4), bis alle CPUs den Empfang der Stilllegung bestätigt haben, wobei der Speicherschlüssel für den Block an diesem Punkt gesetzt werden kann (Nr. 5). Die CPU, die den SSKE ausführt, signalisiert den anderen CPUs dann, die Stilllegung aufzuheben (Nr. 6). Für die CPU 2, die auf denselben Block zugreifen muss, in dem der Schlüssel gerade gesetzt wird, wird die nachfolgende Operation verzögert (Nr. 7), bis eine Aufhebung der Stilllegung signalisiert wird.
  • Es wird davon ausgegangen, dass diese Stilllegungs-Operation eine beträchtliche Verzögerung in einer großen Mehrprozessor-Konfiguration verursacht. Gemäß einer Erscheinungsform der vorliegenden Erfindung wird eine SSKE-Operation vorgesehen, die keine Stilllegung durchführt. Dies ist in 6 veranschaulicht. In dieser Darstellung werden folgende Bedingungen angenommen:
    A, B und C sind aufsteigende Speicherplätze, die in einem einzelnen 4-KByte-Block enthalten sind. In diesem Beispiel hat der Schlüssel für den Block ursprünglich einen beliebigen Wert mit Ausnahme von 1.
  • An die Empfänger-CPUs wird keine Stilllegung im Rundsendeverfahren verschickt, die Initiator-CPU sendet jedoch Signale zum kreuzweisen Ungültigerklären (XI-Signale, crossinvalidate signals) an die Empfänger-CPUs, um sie zu veranlassen, alle im Cachespeicher abgelegten Kopien des Schlüssels zu löschen.
  • Ein neues Steuerelement (Nr. 1) von SSKE, das nachstehend beschrieben wird, ermöglicht die Nichtstilllegungs-Operation. Wenn das Bit den Wert null hat oder wenn der Operand M3 nicht codiert ist, wird die ursprüngliche Stilllegungs-Operation durchgeführt.
  • Das Setzen des Schlüssels folgt den vorhandenen Regeln.
  • Nachdem die CPU 0 den Schlüssel gesetzt und Signale zum kreuzweisen Ungültigerklären an die anderen CPUs (600) gesendet hat, kann die CPU 1 den neuen Schlüssel im allgemeinen Register 3 (Nr. 2) feststellen und auch das Änderungsbit feststellen, das von dem MVCL-Befehl (Move Character Long) gesetzt wurde, der gleichzeitig in der CPU 2 ausgeführt wird.
  • Die gesamte Schlüsselprüfung für eine Arbeitseinheit wird zu Beginn der Operation durchgeführt. Nachfolgende Zugriffe für eine Arbeitseinheit verwenden den ursprünglich festgestellten Schlüssel (Nr. 3). Unter der Annahme, dass der PSW-Schlüssel für die CPU 2 anfangs mit dem Schlüssel des Blocks, der A enthält, übereingestimmt hat, wird der MVCL-Befehl weiterhin ausgeführt, selbst nachdem die CPU 0 den Schlüssel geändert hat.
  • Obgleich die CPU 3 den neuen Schlüssel im allgemeinen Register 5 feststellen kann, können die in das allgemeine Register 7 und das allgemeine Register 8 abgerufenen Ergebnisse (Nr. 4) alte/alte, alte/neue, neue/alte beziehungsweise neue/neue Daten enthalten, was von dem Verlauf des MVCL-Befehls und dem Zeitpunkt, zu dem die Abrufoperationen durchgeführt wurden, abhängt.
  • Gemäß einer Erscheinungsform der vorliegenden Erfindung wird zum Zeitpunkt der SSKE-Ausführung festgestellt, ob diese bestimmte SSKE-Ausführung eine Stilllegung oder keine Stilllegung bewirken soll. Diese Feststellung wird von einem Anzeiger getroffen, der in dem Befehl gesetzt wird und Kompatibilität mit anfänglichen Konfigurationen ermöglicht.
  • Eine Ausführungsform eines Formats eines Nichtstilllegungs-Set-Storage-Key-Extended-(SSKE-)Befehls 700 wird mit Bezug auf 7A beschrieben. In diesem Beispiel hat der Befehl ein RRF-Format, das eine Register-und-Register-Operation, ein erweitertes Operationscode-Feld und ein zusätzliches R-Feld, M-Feld oder beides angibt. Der Nichtstilllegungs-SSKE-Befehl 700 enthält zum Beispiel einen Operations-Code 702, der den Set-Storage-Key-Extended-Befehl (z. B. 'B22B') bezeichnet; einen Operanden M3 704, der von dem Programm (z. B. dem Betriebssystem) verwendet wird, um beispielsweise festzustellen, ob diese SSKE-Operation eine Stilllegungs-Operation oder keine Stilllegungs-Operation sein soll; eine Register-Bezeichnung (R1) 706, die ein Register auswählt, das Werte enthält, die in dem Speicherschlüssel gesetzt werden sollen; und eine Register-Bezeichnung (R2) 708, die ein Register auswählt, das die Adresse des Speicherschlüssels, der gesetzt werden soll, enthält.
  • Weitere Einzelheiten, die den Operanden M3 betreffen, werden mit Bezug auf 7B beschrieben. In einem Beispiel enthält der Operand M3 704 ein Nichtstilllegungs-Steuerelement (NQ) 710 (z. B. das Bit 0), das steuert, ob eine Stilllegungs-Operation durchgeführt werden soll; eine Verweisbit-Aktualisierungsmaske (MR) 712 (z. B. das Bit 1), die steuert, ob Aktualisierungen des Verweisbits in dem Speicherschlüssel umgangen werden können; eine Änderungsbit-Aktualisierungsmaske (MC) 714 (z. B. das Bit 2), die steuert, ob Aktualisierungen an dem Änderungsbit in dem Speicherschlüssel umgangen werden können; und ein Mehrfachblock-Steuerelement (MB) 716 (z. B. das Bit 3), das steuert, ob die Speicherschlüssel für mehrere 4-KByte-Speicherblöcke gesetzt werden können.
  • Als Reaktion darauf, dass das Nichtstilllegungs-Steuerelement beispielsweise auf eins gesetzt wird, wird die Stilllegungs-Operation des SSKE-Befehls nicht durchgeführt. Dies wird mit Bezug auf 8 ausführlicher beschrieben. Zunächst beginnt der SSKE-Millicode (z. B. vertikaler Mikrocode, der auf dem Prozessor ausgeführt wird) mit der Ausführung, SCHRITT 800, und es wird festgestellt, ob sich das Nichtstilllegungs-Steuerelement auf dem SSKE-Befehl befindet, ABFRAGE 802. Wenn das Steuerelement nicht eingeschaltet ist, was anzeigt, dass die Stilllegungs-Operation des SSKE-Befehls durchgeführt werden soll, wird ein Befehl zum Löschen des Schlüssels im Rundsendeverfahren an alle Prozessoren des Systems geschickt, um die Verarbeitung stillzulegen, SCHRITT 804.
  • Anschließend wartet der Prozessor, der den SSKE-Befehl einleitet, auf eine Antwort aller Prozessoren, an die der Befehl zum Löschen gesendet wurde, dass sie ihren Stilllegungspunkt erreicht haben, SCHRITT 806. Als Reaktion auf den Empfang der Bestätigungen, dass alle Prozessoren eine Stilllegung durchgeführt haben, ändert der den Befehl einleitende Prozessor den Speicherschlüssel, SCHRITT 808. Überdies sendet er im Rundsendeverfahren einen Befehl, die Stilllegung zu beenden, was den Prozessoren gestattet, wieder mit der Verarbeitung zu beginnen, SCHRITT 810. Daraufhin endet der Befehl, SCHRITT 812.
  • Nochmals auf die ABFRAGE 802 zurückkommend werden, wenn das Nichtstilllegungs-Steuerelement eingeschaltet ist, was anzeigt, dass eine Stilllegung umgangen werden soll, der im Rundsendeverfahren verschickte Befehl zum Löschen des Schlüssels, das Warten darauf, dass die Prozessoren die Verarbeitung stilllegen, und das Aufheben der Stilllegung nicht durchgeführt. Stattdessen wird der Speicherschlüssel einfach geändert, und in einer Ausführungsform kann ein Signal zum kreuzweisen Ungültigerklären (XI-Signal) an die anderen CPUs gesendet werden, um sie zu veranlassen, alle lokal im Cachespeicher abgelegten Kopien des Speicherschlüssels zu löschen, SCHRITT 820. Der Befehl endet, SCHRITT 812. Dieses Umgehen der Stilllegungs-Operation geschieht ungeachtet der Felder des Speicherschlüssels, die geändert werden sollen. Das einzige Steuerelement für dieses Umgehen ist der Wert des NQ-Feldes (und die Annahme, dass die Nichtstilllegung unterstützt wird). Eine Prüfung, welche Felder des Speicherschlüssels geändert werden sollen, und/oder eine Prüfung ihrer Werte finden bei der Entscheidung, ob eine Stilllegung für die Nichtstilllegungs-Einrichtung umgangen werden soll, nicht statt.
  • Weitere Einzelheiten in Bezug auf die Ausführung eines SSKE-Befehls einschließlich eines Nichtstilllegungs-SSKE-Befehls von einer Erscheinungsform der vorliegenden Erfindung werden nun beschrieben. Bei dieser Beschreibung werden der Vollständigkeit des SSKE-Befehls halber auch Einzelheiten bezüglich der herkömmlichen Einrichtung des bedingten SSKE-Befehls sowie die herkömmliche Einrichtung zur erweiterten DAT beschrieben. Die Ausführung eines SSKE-Befehls führt dazu, dass der Speicherschlüssel für einen oder mehrere 4-KByte-Blöcke durch den Wert in dem Register des ersten Operanden des Befehls ersetzt wird.
  • Bei der Ausführung können bestimmte Funktionen der Operation zum Setzen des Schlüssels umgangen werden, wenn die Einrichtung des bedingten SSKE-Befehls installiert ist. Wenn die Einrichtung des bedingten SSKE-Befehls nicht installiert ist oder wenn die Einrichtung des bedingten SSKE-Befehls installiert ist und sowohl das MR-Bit als auch das MC-Bit des M3-Feldes den Wert null haben, wird der Speicherschlüssel für den 4-KByte-Block, der vom Inhalt des allgemeinen Registers R2 adressiert wird, durch Bits aus dem allgemeinen Register R1 ersetzt. Der Befehl wird ausgeführt, ohne dass der Bedingungscode geändert wird.
  • Wenn die Einrichtung des bedingten SSKE-Befehls installiert ist und entweder das MR-Bit oder das MC-Bit oder aber beide Bits den Wert eins haben, werden die Zugriffssteuerbits, das Abrufschutzbit und optional das Verweisbit und das Änderungsbit des Speicherschlüssels, der vom Inhalt des allgemeinen Registers R2 adressiert wird, mit entsprechenden Bits im allgemeinen Registers R1 verglichen. Wenn die miteinander verglichenen Bits gleich sind, wird der Schlüssel nicht geändert; andernfalls werden ausgewählte Bits des Schlüssels durch die entsprechenden Bits in dem allgemeinen Register R1 ersetzt. Der Speicherschlüssel wird vor jeder Änderung in das allgemeine Register R1 eingegeben, und das Ergebnis wird von dem Bedingungscode angegeben.
  • Wenn die Einrichtung zur erweiterten DAT installiert ist, können die vorstehenden Operationen für die Speicherschlüssel von mehreren 4-KByte-Blöcken in demselben 1-MB-Block in Abhängigkeit von der Steuerung des Mehrfachblock-Steuerelements des M3-Feldes wiederholt werden.
  • Wenn die Einrichtung zum Setzen des Schlüssels ohne Stilllegung nicht installiert ist, wird das Bit 0 des M3-Feldes ignoriert. Wenn die Einrichtung des bedingten SSKE-Befehls nicht installiert ist, werden die Bitstellen 1 und 2 des M3-Feldes ignoriert. Wenn die Einrichtung zur erweiterten DAT nicht installiert ist, wird die Bitstelle 3 des M3-Feldes ignoriert.
  • Wenn die Einrichtung des bedingten SSKE-Befehls installiert ist, geht die Verarbeitung wie folgt vonstatten:
    • 1. Wenn sowohl das MR-Bit als auch das MC-Bit, die Bits 1 und 2 des M3-Feldes, den Wert null haben, wird der Befehl so ausgeführt, als wäre die Einrichtung des bedingten SSKE-Befehls nicht installiert. Der Speicherschlüssel für den 4-KByte-Block, der vom Inhalt des allgemeinen Registers R2 adressiert wird, wird durch Bits aus dem allgemeinen Register R1 ersetzt, und der Befehl wird ausgeführt, ohne dass der Bedingungscode geändert wird.
    • 2. Wenn entweder das MR-Bit oder das MC-Bit oder aber beide Bits den Wert eins haben, geht die Verarbeitung wie folgt vonstatten: a. Vor einer Änderung wird der Inhalt des Speicherschlüssels für den 4-KByte-Block, der von dem allgemeinen Register R2 adressiert wird, an die Bitstellen 48 bis 54 des allgemeinen Registers R1 gestellt, und das Bit 55 des allgemeinen Registers R1 wird auf null gesetzt. Die Bits 0 bis 47 und die Bits 56 bis 63 des Registers bleiben unverändert. Wenn beim Abrufen des Speicherschlüssels ein ungültiger Prüfblock-Code (CBC) festgestellt wird, wird (a) der ganze Speicherschlüssel für den 4-KByte-Block durch die Bits 56 bis 62 des allgemeinen Registers R1 ersetzt, kann (b) der Inhalt der Bitstellen 48 bis 55 des allgemeinen Registers R1 nicht vorhergesagt werden und wird (c) der Befehl ausgeführt, indem der Bedingungscode 3 gesetzt wird. b. Die Zugriffssteuerbits und das Abrufschutzbit des Speicherschlüssels für den bezeichneten 4-KByte-Block werden mit den entsprechenden Feldern in den Bits 56 bis 60 des allgemeinen Registers R1 verglichen. Wenn die jeweiligen Felder nicht gleich sind, wird der ganze Speicherschlüssel für den 4-KByte-Block durch Bits aus dem allgemeinen Register R1 ersetzt, und der Befehl wird ausgeführt, indem der Bedingungscode 1 gesetzt wird. Wenn die Zugriffssteuerbits und das Abrufschutzbit in dem Speicherschlüssel gleich den jeweiligen Bits in dem allgemeinen Register R1 sind, wird die Verarbeitung so fortgesetzt, wie nachstehend beschrieben ist. c. Wenn sowohl das MR-Bit als auch das MC-Bit den Wert eins haben, wird der Befehl ausgeführt, indem der Bedingungscode 0 gesetzt wird. Der Speicherschlüssel bleibt in diesem Fall unverändert. d. Wenn das MR-Bit den Wert null und das MC-Bit den Wert eins hat, wird das Verweisbit des Speicherschlüssels für den bezeichneten 4-KByte-Block mit dem Bit 61 des allgemeinen Registers R1 verglichen. Wenn die Bits gleich sind, wird der Befehl ausgeführt, indem der Bedingungscode 0 gesetzt wird. Der Speicherschlüssel bleibt in diesem Fall unverändert. Wenn die Bits nicht gleich sind, wird entweder (a) der ganze Speicherschlüssel für den bezeichneten 4-KByte-Block durch die Bits in dem allgemeinen Register R1 ersetzt, und der Befehl wird ausgeführt, indem der Bedingungscode 1 gesetzt wird; oder (b) das Verweisbit für den Speicherschlüssel wird durch das Bit 61 des allgemeinen Registers R1 ersetzt, das Änderungsbit für den Schlüssel kann nicht vorhergesagt werden, und der Befehl wird ausgeführt, indem der Bedingungscode 2 gesetzt wird. Es kann nicht vorhergesagt werden, ob der Bedingungscode 1 oder 2 gesetzt wird. e. Wenn das MC-Bit den Wert null und das MR-Bit den Wert eins hat, wird das Änderungsbit des Speicherschlüssels für den bezeichneten 4-KByte-Block mit dem Bit 62 des allgemeinen Registers R1 verglichen. Wenn die Bits gleich sind, wird der Befehl ausgeführt, indem der Bedingungscode 0 gesetzt wird. Der Speicherschlüssel bleibt in diesem Fall unverändert, mit der Ausnahme, dass das Verweisbit nicht vorhergesagt werden kann. Wenn die Bits nicht gleich sind, wird entweder (a) der ganze Speicherschlüssel für den bezeichneten 4-KByte-Block durch die Bits in dem allgemeinen Register R1 ersetzt, und der Befehl wird ausgeführt, indem der Bedingungscode 1 gesetzt wird; oder (b) das Änderungsbit für den Speicherschlüssel wird durch das Bit 62 des allgemeinen Registers R1 ersetzt, das Verweisbit für den Schlüssel kann nicht vorhergesagt werden, und der Befehl wird ausgeführt, indem der Bedingungscode 2 gesetzt wird. Es kann nicht vorhergesagt werden, ob der Bedingungscode 1 oder 2 gesetzt wird.
  • Wenn die Einrichtung zur erweiterten DAT nicht installiert ist oder wenn die Einrichtung installiert ist, das Mehrfachblock-Steuerelement aber den Wert null hat, enthält das allgemeine Register R2 eine reale Adresse. Wenn die Einrichtung zur erweiterten DAT installiert ist und das Mehrfachblock-Steuerelement den Wert eins hat, enthält das allgemeine Register R2 eine absolute Adresse.
  • Im 24-Bit-Adressierungsmodus bezeichnen die Bits 40 bis 51 des allgemeinen Registers R2 einen 4-KByte-Block im realen oder im absoluten Speicher, und die Bits 0 bis 39 sowie die Bits 52 bis 63 des Registers werden ignoriert. Im 31-Bit-Adressierungsmodus bezeichnen die Bits 33 bis 51 des allgemeinen Registers R2 einen 4-KByte-Block im realen oder im absoluten Speicher, und die Bits 0 bis 32 sowie die Bits 52 bis 63 des Registers werden ignoriert. Im 64-Bit-Adressierungsmodus bezeichnen die Bits 0 bis 51 des allgemeinen Registers R2 einen 4-KByte-Block im realen oder im absoluten Speicher, und die Bits 52 bis 63 des Registers werden ignoriert.
  • Da es sich um eine reale oder absolute Adresse handelt, unterliegt die Adresse, die den Speicherblock bezeichnet, keiner dynamischen Adressenumsetzung. Der Verweis auf den Speicherschlüssel unterliegt keiner Schutz-Ausnahmebedingung.
  • Den neuen Sieben-Bit-Speicherschlüsselwert oder ausgewählte Bits davon erhält man aus den Bitstellen 56 bis 62 des allgemeinen Registers R1. Der Inhalt der Bitstellen 0 bis 55 sowie der Bitstelle 63 des Registers wird ignoriert. Wenn die Einrichtung des bedingten SSKE-Befehls installiert ist und entweder das MR-Bit oder das MC-Bit oder beide Bits den Wert eins haben, muss die Bitstelle 63 eine Null enthalten; andernfalls ist die Arbeitsweise des Programms in der Zukunft möglicherweise nicht kompatibel.
  • Eine Serialisierungs- und Prüfpunktsynchronisations-Funktion wird vor dem Beginn der Operation und erneut nach dem Abschluss der Operation ausgeführt, mit der Ausnahme, dass, wenn die Einrichtung des bedingten SSKE-Befehls installiert ist und der sich ergebende Bedingungscode den Wert 0 hat, nicht vorhergesagt werden kann, ob eine Serialisierungs- und Prüfpunktsynchronisations-Funktion nach Abschluss der Operation tatsächlich ausgeführt wird.
  • Wenn die Einrichtung zum Setzen von Schlüsseln ohne Stilllegung nicht installiert ist oder wenn die Einrichtung installiert ist und das Nichtstilllegungs-Steuerelement (NQ) den Wert null hat, gilt Folgendes: Eine Stilllegungs-Operation wird durchgeführt.
  • Bei jedem Speicherzugriff durch eine CPU oder ein Kanalprogramm, der auf den bezeichneten 4-KByte-Block entweder bevor der Schlüssel von diesem Befehl gesetzt wird oder nachdem der Schlüssel von diesem Befehl gesetzt wurde, durchgeführt wird, wird auch das zugehörige Setzen des Verweis- und des Änderungsbits auf eins in dem Speicherschlüssel für den Block vor beziehungsweise nach der Ausführung dieses Befehls vorgenommen.
  • Wenn die Einrichtung zum Setzen von Schlüsseln ohne Stilllegung installiert ist und das NQ-Steuerelement den Wert eins hat, wird keine Stilllegungs-Operation durchgeführt.
  • Verweise auf den Speicherschlüssel bei einer Operation zum Setzen von Schlüsseln ohne Stilllegung (und bei anderen Operationen) werden wie folgt gehandhabt:
    • 1. Immer wenn ein Verweis auf den Speicher vorgenommen wird und der schlüsselgesteuerte Schutz für den Verweis gilt, werden die vier Zugriffssteuerbits und das Abrufschutzbit, die zu dem Speicherplatz gehören, gleichzeitig geprüft. Die Prüfung der Zugriffssteuerbits und des Abrufschutzbits geschieht gleichzeitig mit dem Verweis auf den Speicherplatz, mit der Ausnahme, dass, wenn eine Operation zum Setzen von Schlüsseln ohne Stilllegung durch eine CPU bei einem Speicherplatz durchgeführt wird, Folgendes gilt: – Die Prüfung der Zugriffssteuerbits und des Abrufschutzbits bei dem Speicherplatz durch eine beliebige CPU kann einem Speicherverweis auf den Speicherplatz vorausgehen. In dem Fall, in dem die Prüfung der Zugriffssteuerbits und des Abrufschutzbits der Speicheroperation vorausgeht, findet die Prüfung erst nach der letzten Serialisierungsoperation auf der CPU und nicht vor der letzten Operation zum Setzen von Schlüsseln mit Stilllegung bei demselben Speicherplatz auf einer beliebigen CPU statt. – Wenn die Ausführung einer Arbeitseinheit oder eines Befehls auf einer beliebigen CPU mehrere Zugriffe auf denselben 4-KByte-Block wie bei der Operation zum Setzen von Schlüsseln bewirkt, prüft die andere CPU die Zugriffssteuerbits und das Abrufschutzbit nur bei dem ersten Verweis auf den Block. Die andere CPU prüft nicht unbedingt die Zugriffssteuerbits und das Abrufschutzbit bei den nachfolgenden Zugriffen innerhalb des Blocks durch dieselbe Arbeitseinheit.
    • 2. Wenn eine CPU eine Speicheroperation durchführt, wird das Änderungsbit in dem zugehörigen Speicherschlüssel gleichzeitig mit dem Beenden des Speicherzugriffs auf eins gesetzt, was von der CPU selbst festgestellt wird. Wenn die Speicheroperation von einer CPU oder einem Kanalprogramm durchgeführt wird, wird das Änderungsbit in dem zugehörigen Speicherschlüssel entweder vor oder nach dem Beenden des Speicherzugriffs auf eins gesetzt, was von anderen CPUs (wenn die Speicheroperation von einer CPU durchgeführt wurde) oder von allen CPUs (wenn die Speicheroperation von einem Kanalprogramm durchgeführt wurde) festgestellt wird. Wie von anderen oder allen CPUs festgestellt wird, wird das Änderungsbit erst (1) nach der letzten Serialisierungsfunktion, die zuvor von dem CPU-Kanalprogramm, welches die Speicheroperation vornimmt, durchgeführt wurde, und (2) nach der durch eine beliebige CPU in der Konfiguration vorgenommene Ausführung eines Befehls zum Setzen von Schlüsseln mit Stilllegung, der den zugehörigen Speicherschlüssel vor dem Beenden der Speicheroperation zuletzt gesetzt hat, gesetzt. Wie von anderen oder allen CPUs festgestellt wird, wird das Änderungsbit notwendigerweise nur dann gesetzt, wenn im Anschluss an die Speicheroperation eines von Folgendem geschieht: – Die CPU oder das Kanalprogramm, die beziehungsweise das die Speicheroperation durchgeführt hat, führt eine Serialisierungsfunktion aus. – Die Speicheroperation wurde von einer CPU oder einem Kanalprogramm durchgeführt, und jede beliebige CPU in der Konfiguration setzt das betreffende Änderungsbit, indem sie einen Befehl zum Setzen von Schlüsseln ausführt, nachdem der Speicherzugriff beendet ist. Das Setzen des Änderungsbits aufgrund des Speicherzugriffs findet vor dem Setzen durch den Befehl zum Setzen von Schlüssel statt, mit der Ausnahme, dass es vorkommen kann, dass das Änderungsbit im Anschluss an einen Befehl zum Setzen von Schlüsseln ohne Stilllegung gesetzt wird, wenn die Einrichtung zum Setzen von Schlüsseln ohne Stilllegung installiert ist. – Die Speicheroperation wurde von einer CPU durchgeführt und ist abgeschlossen oder wird abgeschlossen, und jede beliebige CPU in der Konfiguration führt einen Befehl COMPARE AND SWAP AND PURGE, INVALIDATE DAT TABLE ENTRY oder INVALIDATE PAGE TABLE ENTRY aus, der jeden Eintrag, der zum Beenden der Speicheroperation verwendet wird, in dem ALB (ART-Lookaside Buffer) oder dem TLB der speichernden CPU löscht. Das Beenden des Löschbefehls wird verzögert, bis die betreffende Speicheroperation und das Setzen des Änderungsbits abgeschlossen sind. – Die Speicheroperation wurde von einer CPU durchgeführt, und diese CPU prüft das betreffende Änderungsbit mittels eines Befehls INSERT STORAGE KEY EXTENDED oder RESET REFERENCE BIT EXTENDED.
  • Wenn ein Befehl zum Setzen von Schlüsseln verwendet wird, während das Nichtstilllegungs-Steuerelement auf eins gesetzt ist, kann das Programm in einem Beispiel sicherstellen, dass keine anderen CPUs oder Kanalprogramme auf den Speicher verweisen, für den gerade Schlüssel gesetzt werden. In einer virtuellen Speicherumgebung kann der Zugriff auf einen Speicherplatz beispielsweise eingeschränkt werden, indem er einfach nicht auf einen virtuellen Adressraum abgebildet wird.
  • Das folgende Beispiel veranschaulicht die Feststellung von geänderten Daten im Anschluss an eine Operation zum Setzen von Schlüsseln ohne Stilllegung. Die Anfangsbedingungen des Beispiels sind wie folgt:
    • – Der Speicherplatz A ist ein 256-Byte-Bereich, der sich vollständig in einem einzelnen 4-KByte-Block befindet. Die Zugriffssteuerbits in dem Speicherschlüssel für diesen Block haben den Binärwert 0001. B und C sind Speicherplätze in aufsteigender Reihenfolge innerhalb des Bereichs A.
    • – Der PSW-Schlüssel für die CPU 1 hat den Wert 1. Die CPU 1 stellt fest, dass auf A zugegriffen werden kann, bevor der Nichtstilllegungs-SSKE auf der CPU 2 die Zugriffssteuerung des Speicherschlüssels für A in 2 ändert.
    CPU 1 (PSW-Schlüssel = 1 CPU 2
    LA 1, X'20'
    MVC A, X LA 2, A
    SSKE 1, 2, 8
    L 3, B
    L 4, C
  • Bei einem Stilllegungs-SSKE enthalten das allgemeine Register 3 und auch das allgemeine Register 4 die neuen Daten, wenn der MVC (Move Character) vor dem SSKE ausgeführt wird, oder beide Register enthalten die alten Daten, wenn der SSKE zuerst ausgeführt wird (und der MVC zu einer schlüsselgesteuerten Schutz-Ausnahmebedingung führt).
  • In diesem Szenario jedoch, in dem ein Nichtstilllegungs-SSKE verwendet wird, können die in die allgemeinen Register 3 und 4 geladenen (L) Werte in Abhängigkeit von der Zeitsteuerung der Abrufoperationen durch die CPU 2 alte/alte, alte/neue, neue/alte oder neue/neue Daten enthalten. Sobald die CPU 1 festgestellt hat, dass der MVC auf den Block A zugreifen kann, kann der MVC bis zu seinem Beenden fortgesetzt werden, ohne dass eine schlüsselgesteuerte Schutz-Ausnahmebedingung erkannt wird – obgleich die CPU 2 den Schlüssel des Blocks ändert, während der MVC auf der CPU 1 weiterhin nachfolgende Zugriffe durchführt.
  • Das folgende Beispiel veranschaulicht die mögliche Überanzeige des Änderungsbits, wenn eine Operation zum Setzen von Schlüsseln ohne Stilllegung durchgeführt wird. In diesem Beispiel haben sowohl der anfängliche PSW-Schlüssel für die CPU 1 als auch die anfänglichen Zugriffssteuerbits in dem Speicherschlüssel für den Speicherplatz BLOCK den Wert 1. Die CPU 2 führt einen Nichtstilllegungs-SSKE aus, um die Zugriffssteuerbits des Speicherschlüssels für BLOCK auf 2 zu setzen.
    CPU 1 CPU 2
    LA 2, BLOCK LA 1, X'20'
    ST 0, 0(, 2) LA 2, BLOCK
    SSKE 1, 2, 8
    ISKE 1, 2
  • In diesem Szenario geben die Ergebnisse des ISKE (Insert Storage Key Extended) auf der CPU 1 den neuen Zugriffssteuerungswert (2) in den Bits 56 bis 59 des allgemeinen Registers 1 an, aber das Änderungsbit im Bit 62 des Registers kann den Wert eins haben. Diese Überanzeige des Änderungsbits – ein Ergebnis des späten Setzens des Bits durch die Speicheroperation auf der CPU 1 – kann zu einem unnötigen Seitenwechsel des Speicherrahmens, der BLOCK enthält, führen.
  • Auf bestimmten Modellen können mehrere Kopien eines Speicherschlüssels für einen einzelnen 4-KByte-Block im Anschluss an eine Operation zum Setzen von Schlüsseln ohne Stilllegung festgestellt werden. Die Zugriffssteuerbits und das Abrufschutzbit für einen Block können beispielsweise zwischen den Einträgen im Cachespeicher-Verzeichnis für beliebige im Cachespeicher abgelegte Zeilen des Blocks verteilt sein. Das folgende Beispiel veranschaulicht, wie abweichende Werte eines Speicherschlüssels für denselben 4-KByte-Block festgestellt werden könnten. Die Anfangsbedingungen des Beispiels sind wie folgt:
    Der Speicherplatz A befindet sich in einem 4-KByte-Block.
    Die Zugriffssteuerbits in dem Speicherschlüssel für den Block haben den Binärwert 0001, und das Abrufschutzbit hat den Wert 1.
    Der Speicherplatz B befindet sich in demselben Block wie A, aber in einer anderen Zeile des Cachespeichers.
    Der PSW-Schlüssel für die CPU 2 hat den Wert 2.
    CPU 1 CPU 2 (PSW-Schlüssel = 2
    LA 1, X'28'
    LA 2, A
    SSKE 1, 2, 8 L 3, A
    L 4, B
  • In diesem Szenario kann die Abrufoperation aus dem Speicherplatz B auf der CPU 2 zu einer Schutz-Ausnahmebedingung führen, obwohl die Abrufoperation aus dem Speicherplatz A erfolgreich war. Der Grund dafür ist, dass der Schlüssel in dem Eintrag des Cachespeicher-Verzeichnisses für A mit dem neuen Schlüssel aktualisiert worden ist, wohingegen der Eintrag des Cachespeicher-Verzeichnisses für B noch nicht aktualisiert worden ist. Ein Beispiel für den Umgang mit dieser möglichen Schutz-Ausnahmebedingung wird nachstehend beschrieben.
  • Das folgende Szenario veranschaulicht ebenfalls, wie mehrere Kopien eines Schlüssels festgestellt werden können, wenn die Option zum Setzen von Schlüsseln ohne Stilllegung verwendet wird. Die Anfangsbedingungen des Beispiels sind wie folgt:
    Der Speicherplatz A und der Speicherplatz B sind zwei getrennte 4-KByte-Blöcke.
    Sowohl bei A als auch B haben die Zugriffssteuerbits und das Abrufschutzbit anfangs den Binärwert 0001 beziehungsweise 1.
    Die PSW-Schlüssel für die CPUs 3 und 4 haben jeweils den Wert 2.
    CPU 1 CPU 2 CPU 3 CPU 4
    LA 1, X'28' LA 3, X'28'
    LA 2, A LA 4, B
    SSKE 1, 2, 8 SSKE 3, 4, 8 L 5, 4 L 7, B
    L 6, B L 8, A
  • Es ist möglich, dass die Abrufoperation der CPU 3 aus dem Speicherplatz A erfolgreich ist (was anzeigt, dass die Ergebnisse des SSKE auf der CPU 1 festgestellt worden sind), während die Abrufoperation der CPU 3 aus dem Speicherplatz B nicht erfolgreich ist (was anzeigt, dass die Ergebnisse des SSKE auf der CPU 2 noch nicht festgestellt worden sind). Es ist ferner ebenfalls möglich, dass die Abrufoperation der CPU 4 aus den Speicherplätzen A und B in beiden Fällen erfolgreich ist. Wenn die Abrufoperation der CPU 4 aus dem Speicherplatz B erfolgreich ist, trifft die Abrufoperation aus dem Speicherplatz A keine schlüsselgesteuerte Schutz-Ausnahmebedingung an.
  • Wie vorstehend beschrieben wurde, leitet ein Befehl zum Setzen von Schlüsseln ohne Stilllegung (wie zum Beispiel ein SSKE-Befehl) gemäß einer Erscheinungsform der vorliegenden Erfindung keine Stilllegungs-Anforderung an die anderen CPUs des Systems weiter, wenn er auf einem Prozessor ausgeführt wird. Er ändert einfach den Speicherschlüssel (und kann ein Signal zum kreuzweisen Ungültigerklären senden). Andere CPUs können diese Änderung entweder sofort oder irgendwann in der Zukunft sehen. Als Reaktion auf diese Verarbeitung könnte ein anderer Prozessor einen Maschinenfehler aufgrund einer verzögerten Zugriffs-Ausnahmebedingung (delayed access exception machine check (DAE)) empfangen. Für Software ist dies im Allgemeinen verhängnisvoll und sollte vermieden werden. Eine DAE tritt beispielsweise ein, wenn der Zugriff auf einen Speicherplatz gestattet ist, wenn die Ausführung eines Befehls beginnt, zu einem späteren Zeitpunkt seiner Ausführung aber untersagt wird. Bei einem von Hardware ausgeführten Befehl stellt dies kein Problem dar, da ein solcher Befehl gewöhnlich jederzeit während seiner Ausführung ungültig gemacht werden kann. Wenn der Befehl jedoch von Millicode (oder anderer Software) ausgeführt wird, ist es üblicherweise unmöglich, ihn ungültig zu machen, nachdem eine architekturdefinierte Einrichtung (z. B. ein Speicher oder ein Register) geändert worden ist. Gemäß einer Erscheinungsform der vorliegenden Erfindung enthält jeder Prozessor folglich eine Funktion, um mit dieser Situation umzugehen. Ein Beispiel dieser Funktion wird mit Bezug auf die 9A bis 9B beschrieben.
  • Bezug nehmend auf 9A prüft ein Millicode-Befehl (wie zum Beispiel ein Befehl, der mehrere Zugriffe auf den Speicher durchführt (z. B. ein Move-Character-Long-(MVCL-)Befehl)), wenn er mit der Ausführung beginnt, vorab die Speicherplätze, auf die er zugreifen wird, um festzustellen, ob auf sie zugegriffen werden kann, SCHRITT 900. In einem Beispiel beinhaltet dies das Prüfen des ersten Bytes, auf das zugegriffen werden soll, sowie das Prüfen des letzten Bytes. Wenn diese beiden Tests erfolgreich verlaufen, ist der Vorabtest erfolgreich.
  • Wenn während des Vorabtests ein Problem auftritt, endet der Befehl mit einer Schutz-Ausnahmebedingung. Wenn der Vorabtest jedoch erfolgreich ist, kann die Ausführung des Befehls fortgesetzt werden, da dem Befehl gestattet ist (zumindest implizit, wenn nicht explizit), auf diese Speicherplätze zuzugreifen.
  • Während der Ausführung ändert der Befehl einen Speicherplatz im Speicher oder in einem Register, SCHRITT 902. Als Reaktion darauf, dass der Millicode die erste architekturdefinierte Einrichtung ändert, ergreift die Hardware automatisch eine Maßnahme, SCHRITT 904. Diese Verarbeitung wird mit Bezug auf 9B beschrieben.
  • Als Reaktion darauf, dass Millicode die erste architekturdefinierte Einrichtung ändert, SCHRITT 920, setzt die Hardware automatisch einen Anzeiger, SCHRITT 922, um anzuzeigen, dass sie sich in einem Zustand befindet, in dem sie die Speicherplätze bereits vorab geprüft und die erste architekturdefinierte Einrichtung aktualisiert hat. Dieser Anzeiger ist beispielsweise die Markierung 223 in den Unterbrechungs-Steuerelementen 220 (2).
  • Mit Bezug auf 9B fortfahrend, wird die Ausführung des Befehls fortgesetzt, SCHRITT 924, und als Reaktion darauf, dass die Hardware den Anzeiger setzt, wenn eine Schlüsselschutz-Ausnahmebedingung übergeben werden soll, blockiert die Hardware in der Ausführung dieses Befehls automatisch die Schlüsselschutz-Ausnahmebedingung. Eine Schlüsselschutz-Ausnahmebedingung könnte selbst als solche in Erscheinung treten, wenn ein anderer Prozessor tatsächlich einen Speicherschlüssel über einen Nichtstilllegungs-SSKE ändern würde, während dieser Prozessor auf diesen Speicher in der Millicode-Routine zugreifen würde.
  • Sollte die Hardware feststellen, dass der Speicherschlüssel geändert wurde, während dieser Millicode-Befehl auf den Speicher zugriff, der von diesem Speicherschlüssel geschützt wurde, ABFRAGE 926, stellt die Hardware fest, ob der Anzeiger gesetzt ist, ABFRAGE 928. Wenn der Anzeiger nicht gesetzt ist, wird eine Schlüsselschutz-Ausnahmebedingung ausgegeben, SCHRITT 930, und der Millicode-Befehl wird nicht erfolgreich beendet.
  • Überdies wird die Schlüsselschutz-Ausnahmebedingung blockiert, SCHRITT 932, wenn der Anzeiger gesetzt ist, ABFRAGE 928. Die Unterbrechungs-Steuerelemente 220 stellen beispielsweise fest, dass die Markierung gesetzt ist und senden einen Anzeiger an die Ausführungs-Steuerelemente 222, um die Schlüsselschutz-Ausnahmebedingung zu blockieren. Dadurch kann der Millicode-Befehl die Verarbeitung fortsetzen, SCHRITT 934, obwohl er einen geänderten Speicherschlüssel feststellt.
  • Vorstehend ist eine Einrichtung zum Setzen von Schlüsseln ohne Stilllegung ausführlich beschrieben, bei der Speicherschlüssel gesetzt werden, wobei ungeachtet der Felder des Speicherschlüssels oder der Werte dieser Felder, die gesetzt werden, keine Stilllegungs-Operation erforderlich wird. Da dies eine Nichtstilllegungs-Operation ist, wird, wenn festgestellt wird, dass sich ein Speicherschlüssel für einen Speicherplatz geändert hat, in dem einem Befehl der Zugriff gewährt wurde, ein Mechanismus bereitgestellt, um eine Schlüsselschutz-Ausnahmebedingung zu blockieren. Das Betriebssystem, das diesen Befehl ausführt, muss dann Probleme bezüglich einer möglichen Datenverfälschung lösen.
  • Obgleich die vorstehenden Beispiele mit Bezug auf einen SSKE-Befehl beschrieben wurden, gilt eine ähnliche Logik für andere Befehle, die den Speicherschlüssel aktualisieren, so zum Beispiel für den PFME-Befehl oder andere Befehle. Zwar werden Speicherschlüssel in diesem Schriftstück aktualisiert, doch können in anderen Beispielen außerdem auch andere Arten von Merkmalen oder Ressourcen, die zum Schutz des Speichers verwendet werden, von einem oder mehreren Erscheinungsformen der vorliegenden Erfindung Gebrauch machen.
  • Der Fachmann wird als vorteilhaft erkennen, dass Erscheinungsformen der vorliegenden Erfindung als ein System, ein Verfahren oder ein Computerprogrammprodukt realisiert werden können. Folglich können Erscheinungsformen der vorliegenden Erfindung die Form einer ganz in Hardware realisierten Ausführung, einer ganz in Software realisierten Ausführung (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführung annehmen, die Software- und Hardware-Erscheinungsformen kombiniert, die hier alle allgemein als eine ”Schaltung”, ein ”Modul” oder ein ”System” bezeichnet werden können. Überdies können Erscheinungsformen der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das sich auf einem oder mehreren computerlesbaren Datenträger(n) befindet, auf dem beziehungsweise denen sich computerlesbarer Programmcode befindet.
  • Jede beliebige Kombination aus einem oder mehreren computerlesbaren Datenträgern kann verwendet werden. Bei dem computerlesbaren Datenträger kann es sich um ein computerlesbares Speichermedium handeln. Ein computerlesbares Speichermedium kann zum Beispiel, ohne auf diese beschränkt zu sein, ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, -vorrichtung, -einheit oder eine beliebige geeignete Kombination des Vorstehenden sein. Zu konkreteren Beispielen (wobei die Liste keinen Anspruch auf Vollständigkeit erhebt) für das computerlesbare Speichermedium gehören folgende: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine Diskette eines tragbaren Computers, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede beliebige geeignete Kombination des Vorstehenden. Im Kontext dieses Schriftstücks kann ein computerlesbares Speichermedium jedes physisch greifbare Medium sein, das ein Programm zur Verwendung durch oder zur Verwendung in Verbindung mit einem Befehlsausführungssystem, einer Befehlsausführungsvorrichtung oder -einheit enthalten oder speichern kann.
  • Nun Bezug nehmend auf 10 enthält ein Computerprogrammprodukt 1000 in einem Beispiel beispielsweise ein oder mehrere computerlesbare Speichermedien 1002, um ein computerlesbares Programmcode-Mittel oder eine computerlesbare Programmcode-Logik 1004 darauf zu speichern, um eine oder mehrere Erscheinungsformen der vorliegenden Erfindung bereitzustellen und zu vereinfachen.
  • Auf einem computerlesbaren Datenträger enthaltener Programmcode kann mittels eines geeigneten Mediums, darunter drahtlose, drahtgebundene, Lichtwellenleiter-, Hochfrequenz-(HF-)Medien usw., ohne auf diese beschränkt zu sein, oder mittels jeder beliebigen geeigneten Kombination der Vorstehenden übertragen werden.
  • Computerprogrammcode zur Durchführung von Operationen für Erscheinungsformen der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen, darunter eine objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache ”C” und Assembler-Programmiersprachen oder in ähnlichen Programmiersprachen geschrieben sein. Die Ausführung des Programmcodes kann komplett auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder komplett auf dem entfernt angeordneten Computer oder Server erfolgen. Im letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jede beliebige Art eines Netzwerks, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), verbunden werden oder die Verbindung kann zu einem externen Computer (zum Beispiel über das Internet mittels eines Internet-Diensteanbieters) hergestellt werden.
  • Erscheinungsformen der vorliegenden Erfindung werden hier mit Bezug auf Darstellungen in Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Darstellungen in den Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen aus Blöcken in den Darstellungen der Ablaufpläne und/oder den Blockschaubildern mittels Computerprogrammbefehlen realisiert werden können. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputers, eines Computers für spezielle Anwendungen oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Diese Computerprogrammbefehle können auch auf einem computerlesbaren Datenträger gespeichert werden, der einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem computerlesbaren Datenträger gespeicherten Befehle einen Herstellungsgegenstand erzeugen, der Befehle enthält, die die Funktion/den Vorgang ausführen, welche beziehungsweise welcher in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben ist.
  • Die Computerprogrammbefehle können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder auf andere Einheiten geladen werden, um die Ausführung einer Reihe von Betriebsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder auf anderen Einheiten zu bewirken, um einen von einem Computer ausgeführten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ermöglichen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Die Ablaufpläne und die Blockschaubilder in den Figuren zeigen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Ablaufplan oder den Blockschaubildern ein Modul, ein Segment oder einen Code-Teil darstellen, das beziehungsweise der einen oder mehrere ausführbare Befehle zur Ausführung der angegebenen logischen Funktion(en) umfasst. Es sei auch angemerkt, dass die in dem Block angegebenen Funktionen in manchen alternativen Ausführungsarten nicht in der in den Figuren angegebenen Reihenfolge auftreten können. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Man wird auch feststellen, dass jeder Block der Blockschaubilder/und oder der Darstellung in den Ablaufplänen sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder der Darstellung in den Ablaufplänen von Systemen, die auf Hardware für spezielle Anwendungen beruhen, welche die angegebenen Funktionen oder Vorgänge durchführen, oder von Kombinationen aus Hardware für spezielle Anwendungen und Computerbefehlen ausgeführt werden können.
  • Neben dem Vorstehenden können eine oder mehrere Erscheinungsformen der vorliegenden Erfindung von einem Diensteanbieter, der die Verwaltung von Kundenumgebungen anbietet, bereitgestellt, angeboten, installiert, verwaltet, bedient usw. werden. Zum Beispiel kann der Diensteanbieter Computercode und/oder eine Computerinfrastruktur, die eine oder mehrere Erscheinungsformen der vorliegenden Erfindung für einen oder mehrere Kunden ausführt, erzeugen, unterhalten, unterstützen usw. Der Diensteanbieter wiederum kann die Zahlungen von dem Kunden im Rahmen eines Abonnement- und/oder Gebührenvertrags – als Beispiele – erhalten. Darüber hinaus oder alternativ kann der Diensteanbieter die Zahlungen aus dem Verkauf von Werbeinhalten an einen oder mehrere Dritte erhalten.
  • In einer Erscheinungsform der vorliegenden Erfindung kann eine Anwendung zur Durchführung von einer oder mehreren Erscheinungsformen der vorliegenden Erfindung installiert werden. Das Installieren einer Anwendung umfasst beispielsweise das Bereitstellen von Computerinfrastruktur, die so beschaffen ist, dass sie eine oder mehrere Erscheinungsformen der vorliegenden Erfindung ausführen kann.
  • Als eine weitere Erscheinungsform der vorliegenden Erfindung kann eine Datenverarbeitungs-Infrastruktur installiert werden, die das Einbinden von computerlesbarem Code in ein Datenverarbeitungssystem umfasst, in dem der Code in Kombination mit dem Datenverarbeitungssystem in der Lage ist, eine oder mehrere Erscheinungsformen der vorliegenden Erfindung auszuführen.
  • Als noch eine weitere Erscheinungsform der vorliegenden Erfindung kann ein Prozess zum Einbinden einer Datenverarbeitungs-Infrastruktur bereitgestellt werden, die das Einbinden von computerlesbarem Code in ein Computersystem umfasst. Das Computersystem umfasst einen computerlesbaren Datenträger, in dem der Computer-Datenträger eine oder mehrere Erscheinungsformen der vorliegenden Erfindung umfasst. Der Code ist in Kombination mit dem Computersystem in der Lage, eine oder mehrere Erscheinungsformen der vorliegenden Erfindung auszuführen.
  • Zwar wurden vorstehend verschiedene Ausführungsformen beschrieben, doch handelt es sich dabei lediglich um Beispiele. Zum Beispiel können Datenverarbeitungsumgebungen anderer Architekturen eine oder mehrere Erscheinungsformen der vorliegenden Erfindung aufnehmen und verwenden. Darüber hinaus können andere Befehle oder Operationen von einer oder mehreren Erscheinungsformen der vorliegenden Erfindung profitieren. Überdies können andere Formate der Befehle verwendet werden und/oder zusätzliche, weniger oder andere Felder können aufgenommen werden. Viele abweichende Gestaltungsformen sind möglich.
  • Ferner können andere Arten von Datenverarbeitungsumgebungen von einer oder mehreren Erscheinungsformen der vorliegenden Erfindung profitieren. So kann beispielsweise ein Datenverarbeitungssystem verwendet werden, das zum Speichern und/oder Ausführen von Programmcode geeignet ist und mindestens zwei Prozessoren enthält, die über einen Systembus direkt oder indirekt mit Speicherelementen verbunden sind. Die Speicherelemente beinhalten zum Beispiel einen lokalen Speicher, der während der tatsächlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und einen Cachespeicher, die eine vorübergehende Speicherung von mindestens einem Teil des Programmcodes ermöglichen, um die Häufigkeit zu verringern, mit der Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
  • Eingabe/Ausgabe- oder E/A-Einheiten (darunter Tastaturen, Bildschirme, Zeigegeräte, Direktzugriff-Speichereinheiten (DASDs), Bänder, CDs, DVDs, Speichersticks und andere Speichermedien usw., jedoch nicht auf diese beschränkt) können entweder direkt oder über dazwischenliegende E/A-Steuereinheiten mit dem System verbunden werden. Netzwerkadapter können ebenfalls mit dem System verbunden werden, damit das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder entfernt angeordneten Druckern oder Speichereinheiten über dazwischenliegende private oder öffentliche Netzwerke verbunden werden kann. Modems, Kabelmodems und Ethernet-Karten sind nur einige der verfügbaren Arten von Netzwerkadaptern.
  • Bezug nehmend auf 11 sind repräsentative Komponenten eines Host-Computersystems 1100 zur Realisierung von einer oder mehreren Erscheinungsformen der vorliegenden Erfindung dargestellt. Der repräsentative Hostcomputer 1100 umfasst eine oder mehrere CPUs 1101, die mit dem Computerspeicher (d. h. dem zentralen Speicher) 1102 Daten austauschen, sowie E/A-Schnittstellen zu Speichermedien-Einheiten 1111 und Netzwerken 1110, um mit anderen Computern oder SANs und dergleichen zu kommunizieren. Die CPU 1101 entspricht einer Architektur, die über einen architekturdefinierten Befehlssatz und architekturdefinierte Funktionalität verfügt. Die CPU 1101 kann eine dynamische Adressenumsetzung (DAT) 1103 vornehmen, um Programmadressen (virtuelle Adressen) in reale Adressen des Speichers umzusetzen. Eine DAT beinhaltet üblicherweise einen Adressen-Umsetzungspufferspeicher (TLB) 1107, um Umsetzungen zwischenzuspeichern, so dass spätere Zugriffe auf den Block des Computerspeichers 1102 keine Verzögerung der Adressenumsetzung erforderlich machen. Üblicherweise wird ein Cachespeicher 1109 zwischen dem Computerspeicher 1102 und dem Prozessor 1101 verwendet. Der Cachespeicher 1109 kann hierarchisch aufgebaut sein und über einen großen Cachespeicher, der mehr als einer CPU zur Verfügung steht, sowie kleinere, schnellere Cachespeicher (einer niedrigeren Stufe) zwischen dem großen Cachespeicher und einer jeden CPU verfügen. In manchen Ausführungsformen werden die Cachespeicher einer niedrigeren Stufe aufgeteilt, um getrennte Cachespeicher der unteren Stufe für das Abrufen von Befehlen und für Datenzugriffe bereitzustellen. In einer Ausführungsform wird ein Befehl von einer Befehls-Abrufeinheit 1104 über einen Cachespeicher 1109 aus dem Computerspeicher 1102 abgerufen. Der Befehl wird in einer Befehls-Decodiereinheit 1106 decodiert und (in manchen Ausführungsformen mit anderen Befehlen) der Befehls-Ausführungseinheit oder den Befehls-Ausführungseinheiten 1108 zugeteilt. Üblicherweise werden sieben Ausführungseinheiten 1108 verwendet, zum Beispiel eine arithmetische Ausführungseinheit, eine Gleitkomma-Ausführungseinheit und eine Verzweigungsbefehl-Ausführungseinheit. Der Befehl wird von der Ausführungseinheit ausgeführt, wobei nach Bedarf auf Operanden aus den von dem Befehl angegebenen Registern oder dem von dem Befehl angegebenen Speicher zugegriffen wird. Wenn auf einen Operanden aus dem Computerspeicher 1102 zugegriffen werden muss (wenn dieser geladen oder gespeichert werden muss), führt eine Lade/Speicher-Einheit 1105 den Zugriff üblicherweise aus, wobei sie von dem Befehl, der gerade ausgeführt wird, gesteuert wird. Befehle können in Hardware-Schaltungen oder in internem Mikrocode (Firmware) oder von einer Kombination aus beidem ausgeführt werden.
  • Wie erwähnt wurde, enthält ein Computersystem Daten im lokalen (oder Haupt-) Speicher sowie Adressierungs-, Schutz-, Verweis- und Änderungsaufzeichnungen. Manche Erscheinungsformen der Adressierung beinhalten das Format von Adressen, das Konzept von Adressräumen, die verschiedenen Arten von Adressen sowie die Art und Weise, in der eine Adressenart in eine andere Adressenart umgesetzt wird. Ein Teil des Hauptspeichers enthält dauerhaft zugewiesene Speicherplätze. Der Hauptspeicher ermöglicht dem System die direkt adressierbare Speicherung von Daten und schnellen Zugriff auf die Daten. Sowohl die Daten als auch die Programme müssen in den Hauptspeicher (von den Eingabeeinheiten) geladen werden, bevor sie verarbeitet werden können.
  • Der Hauptspeicher kann einen oder mehrere kleinere Pufferspeicher für schnelleren Zugriff beinhalten, die manchmal auch als Cachespeicher bezeichnet werden. Ein Cachespeicher ist üblicherweise physisch einer CPU oder einem E/A-Prozessor zugeordnet. Die Auswirkungen, mit Ausnahme der Auswirkungen auf die Leistungsfähigkeit, des physischen Aufbaus und der Verwendung von verschiedenen Speichermedien können von dem Programm im Allgemeinen nicht festgestellt werden.
  • Für Befehle und für Daten-Operanden können getrennte Cachespeicher unterhalten werden. Daten in einem Cachespeicher werden in zusammenhängenden Bytes an einer integralen Grenze, die als Cachespeicher-Block oder Cachespeicher-Zeile (oder kurz Zeile) bezeichnet wird, gespeichert. Ein Modell kann einen Befehl EXTRACT CACHE ATTRIBUTE bereitstellen, der die Größe einer Cachespeicher-Zeile in Bytes zurückgibt. Ein Modell kann auch einen Befehl PREFETCH AREA und einen Befehl PREFETCH DATA RELATIVE LONG bereitstellen, die den Vorab-Abruf von Daten in den Daten- oder Befehls-Cachespeicher oder die Freigabe von Daten aus dem Cachespeicher bewirken.
  • Der Speicher wird als eine lange waagerechte Folge von Bits angesehen. Bei den meisten Operationen finden die Zugriffe auf den Speicher von links nach rechts statt. Die Folge von Bits wird in Einheiten zu acht Bit unterteilt. Eine Acht-Bit-Einheit wird als Byte bezeichnet, das den grundlegenden Baustein aller Datenformate darstellt. Jeder Byte-Speicherplatz wird von einer eindeutigen, nicht negativen ganzen Zahl gekennzeichnet, bei der es sich um die Adresse dieses Byte-Speicherplatzes oder einfach die Byte-Adresse handelt. Benachbarte Byte-Speicherplätze haben fortlaufende Adressen, wobei links mit 0 begonnen und von links nach rechts fortgefahren wird. Adressen sind vorzeichenfreie, ganze Binärzahlen und haben eine Länge von 24, 31 oder 64 Bit.
  • Daten werden zwischen dem Speicher und einer CPU oder einem Kanal-Teilsystem jeweils byteweise oder bytegruppenweise übertragen. Sofern nichts anderes angegeben ist, wird eine Gruppe von Bytes im Speicher von dem äußersten linken Byte der Gruppe adressiert. Die Anzahl der Bytes in der Gruppe ist entweder eine implizite Zahl oder wird ausdrücklich von der durchzuführenden Operation angegeben. Wenn eine Gruppe von Bytes bei einer CPU-Operation verwendet wird, wird sie als Feld bezeichnet. Innerhalb einer jeden Gruppe von Bytes werden die Bits von links nach rechts nummeriert. Die äußersten linken Bits werden manchmal als die ”höherwertigen” Bits und die äußersten rechten Bits als die ”niederwertigen” Bits bezeichnet. Bitnummern sind jedoch keine Speicheradressen. Nur Bytes können adressiert werden. Um Operationen an einzelnen Bits eines Bytes im Speicher durchzuführen, wird auf das ganze Byte zugegriffen. Die Bits in einem Byte werden von links nach rechts mit 0 bis 7 nummeriert. Die Bits in einer Adresse können mit 8 bis 31 oder mit 40 bis 63 bei 24-Bit-Adressen oder mit 1 bis 31 oder 33 bis 63 bei 31-Bit-Adressen nummeriert werden; bei 64-Bit-Adressen werden sie mit 0 bis 63 nummeriert. Innerhalb eines beliebigen anderen aus mehreren Bytes bestehenden Formats fester Länge werden die Bits, die das Format bilden, fortlaufend nummeriert, wobei bei 0 begonnen wird. Zum Zweck der Fehlererkennung und vorzugsweise zu Korrekturzwecken können mit jedem Byte oder mit einer Gruppe von Bytes ein oder mehrere Prüfbits übertragen werden. Solche Prüfbits werden automatisch von der Maschine erzeugt und können vom Programm nicht direkt gesteuert werden. Speicherkapazitäten werden in der Anzahl von Bytes ausgedrückt. Wenn die Länge des Feldes eines Speicher-Operanden von dem Operationscode eines Befehls implizit vorgegeben ist, gilt das Feld als ein Feld fester Länge, wobei die Länge ein Byte, zwei, vier, acht oder sechzehn Bytes betragen kann. Für manche Befehle können größere Felder einbezogen werden. Wenn die Länge des Feldes eines Speicher-Operanden nicht implizit vorgegeben ist, sondern ausdrücklich angegeben wird, gilt das Feld als ein Feld veränderlicher Länge. Die Länge von Operanden veränderlicher Länge kann in Schrittweiten von einem Byte (oder bei manchen Befehlen in Schrittweiten von einem Mehrfachen von zwei Bytes oder einem anderen Mehrfachen) abweichen. Wenn Daten in den Speicher gestellt werden, wird nur der Inhalt von denjenigen Byte-Speicherplätzen ersetzt, die in dem bezeichneten Feld enthalten sind, obgleich die Breite des physischen Pfads zum Speicher größer als die Länge des Feldes sein kann, das gerade gespeichert wird.
  • Bestimmte Dateneinheiten müssen an einer integralen Grenze im Speicher ausgerichtet sein. Eine Grenze wird für eine Dateneinheit als integral bezeichnet, wenn ihre Speicheradresse ein Mehrfaches von der Länge der Einheit in Bytes ist. Spezielle Namen werden für 2, 4, 8 und 16 Bytes umfassende Felder an einer integralen Grenze vergeben. Ein Halbwort ist eine Gruppe von zwei fortlaufenden Bytes an einer Zwei-Byte-Grenze und stellt den grundlegenden Baustein aller Datenformate dar. Ein Wort ist eine Gruppe von vier fortlaufenden Bytes an einer Vier-Byte-Grenze. Ein Doppelwort ist eine Gruppe von acht fortlaufenden Bytes an einer Acht-Byte-Grenze. Ein 16-Byte-Wort ist eine Gruppe von sechzehn fortlaufenden Bytes an einer 16-Byte-Grenze. Wenn Speicheradressen Halbworte, Worte, Doppelworte und 16-Byte-Worte angeben, enthält die Binärdarstellung der Adresse ein, zwei, drei beziehungsweise vier äußerste(s) rechte(s) Null-Bit(s). Befehle müssen an integralen Zwei-Byte-Grenzen ausgerichtet sein. Bei den Speicher-Operanden der meisten Befehle sind keine Erfordernisse hinsichtlich der Grenzausrichtung zu erfüllen.
  • Bei Einheiten mit getrennten Cachespeichern für Befehle und Daten-Operanden können beträchtliche Verzögerung auftreten, wenn das Programm eine Speicheroperation in eine Zeile des Cachespeichers durchführt, aus der anschließend Befehle abgerufen werden, und zwar ungeachtet dessen, ob der Speicher die Befehle, die anschließend abgerufen werden, ändert.
  • In einer Ausführungsform kann die Erfindung mittels Software (die manchmal als lizenzierter interner Code, Firmware, Mikrocode, Millicode, Picocode und dergleichen bezeichnet wird, wobei alle Bezeichnungen mit der vorliegenden Erfindung vereinbar wären) in die Praxis umgesetzt werden. Bezug nehmend auf 11 greift der Prozessor 1101 des Host-Systems 1100 üblicherweise auf Software-Programmcode, der die vorliegende Erfindung enthält, aus den dauerhaften Speichermedien-Einheiten 1111 wie zum Beispiel einem CD-ROM-Laufwerk, einem Bandlaufwerk oder einem Festplattenlaufwerk zu. Der Software-Programmcode kann sich auf beliebigen einer Vielzahl von bekannten Datenträgern zur Verwendung mit einem Datenverarbeitungssystem wie zum Beispiel einer Diskette, einem Festplattenlaufwerk oder einer CD-ROM befinden. Der Code kann auf solchen Datenträgern vertrieben werden oder er kann an Benutzer aus dem Computerspeicher 1102 oder dem Speicher von einem Computersystem über ein Netzwerk 1110 an andere Computersysteme zur Verwendung durch Benutzer dieser anderen Systeme vertrieben werden.
  • Der Software-Programmcode beinhaltet ein Betriebssystem, das die Funktion und die interaktive Kommunikation von den verschiedenen Computerkomponenten und von einem oder mehreren Anwendungsprogrammen steuert. Programmcode wird normalerweise aus der Speichermedien-Einheit 1111 in den Computerspeicher 1102, der verhältnismäßig schneller ist, umgelagert, wo er zur Verarbeitung durch den Prozessor 1101 zur Verfügung steht. Die Techniken und Verfahren zur Aufnahme von Software-Programmcode in den Computerspeicher und auf physische Datenträger und/oder für den Vertrieb von Software-Code über Netzwerke sind bekannt und werden hier nicht weiter erörtert. Programmcode wird häufig als ”Computerprogrammprodukt” bezeichnet, wenn er erzeugt und auf einem physisch greifbaren Medium (darunter elektronische Speichermodule (RAM), Flash-Speicher, Picocode-Discs (CDs), DVDs, Magnetband und dergleichen, jedoch nicht auf diese beschränkt) gespeichert wird. Der Datenträger mit dem Computerprogrammprodukt kann üblicherweise von einer Verarbeitungsschaltung vorzugsweise in einem Computersystem gelesen werden, um von der Verarbeitungsschaltung ausgeführt zu werden.
  • 12 veranschaulicht einen repräsentativen Arbeitsplatzcomputer oder ein repräsentatives Server-Hardwaresystem, in denen die vorliegende Erfindung in die Praxis umgesetzt werden kann. Das System 1200 von 12 umfasst ein repräsentatives Basiscomputer 1201 wie zum Beispiel einen Personal Computer, einen Arbeitsplatzcomputer oder einen Server, einschließlich optionaler peripherer Einheiten. Das Basiscomputersystem 1201 enthält einen oder mehrere Prozessoren 1206 und einen Bus, der verwendet wird, um den/die Prozessor(en) 1206 und die anderen Komponenten des Systems 1201 gemäß bekannter Techniken zu verbinden und den Datenaustausch zwischen ihnen zu ermöglichen. Der Bus verbindet den Prozessor 1206 mit dem Computerspeicher 1205 und dem dauerhaften Speicher 1207, bei dem es sich beispielsweise um ein Festplattenlaufwerk (darunter beliebige magnetischer Datenträger, CDs, DVDs und Flash-Speicher zum Beispiel) oder ein Bandlaufwerk handeln kann. Das System 1201 könnte auch einen Benutzerschnittstellen-Adapter enthalten, der den Mikroprozessor 1206 über den Bus mit einer oder mehreren Schnittstelleneinheiten wie zum Beispiel einer Tastatur 1204, einer Maus 1203, einem Drucker/Scanner 1210 und/oder anderen Schnittstelleneinheiten, bei denen es sich um eine beliebige Benutzerschnittstellen-Einheit wie zum Beispiel einen berührungsempfindlichen Bildschirm, ein digitalisiertes Eingabetablett usw. handeln kann, verbindet. Der Bus verbindet auch eine Anzeigeeinheit 1202 wie zum Beispiel einen LCD-Bildschirm oder LCD-Monitor, mit dem Mikroprozessor 1206 über einen Bildschirm-Adapter.
  • Das System 1201 kann mit anderen Computern oder Computernetzwerken mittels eines Netzwerkadapters, der mit einem Netzwerk 1209 kommunizieren 1208 kann, Daten austauschen. Beispiele für Netzwerkadapter sind Übertragungskanäle, Token Ring, Ethernet oder Modems. Alternativ kann das System 1201 mit Hilfe einer drahtlosen Schnittstelle wie zum Beispiel einer CDPD-(Cellular-Digital-Packet-Data-)Karte kommunizieren. Das System 1201 kann diesen anderen Computern in einem lokalen Netzwerk (Local Area Network (LAN)) oder in einem Weitverkehrsnetz (Wide Area Network (WAN)) zugeordnet oder das System 1201 kann ein Client in einer Client/Server-Anordnung mit einem weiteren Computer usw. sein. All diese Konfigurationen sowie die entsprechende Übertragungs-Hardware und -Software sind in der Technik bekannt.
  • 13 stellt ein Datenverarbeitungsnetzwerk 1300 dar, in dem die vorliegende Erfindung in die Praxis umgesetzt werden kann. Das Datenverarbeitungsnetzwerk 1300 kann eine Vielzahl von einzelnen Netzwerken wie zum Beispiel ein drahtloses Netzwerk und ein drahtgebundenes Netzwerk enthalten, von denen jedes eine Vielzahl von einzelnen Arbeitsplatzcomputern 1301, 1302, 1303, 1304 enthalten kann. Der Fachmann wird als vorteilhaft erkennen, dass ferner ein oder mehrere LANs eingebunden werden können, wobei ein LAN eine Vielzahl von intelligenten Arbeitsplatzcomputern umfassen kann, die mit einem Hostprozessor verbunden sind.
  • Weiterhin Bezug nehmend auf 13 können die Netzwerke auch Großcomputer oder Server wie zum Beispiel einen Gateway-Computer (Client-Server 1306) oder einen Anwendungsserver (den entfernt angeordneten Server 1308, der auf ein Datenarchiv (data repository) zugreifen kann und auf den auch direkt von einem Arbeitsplatzcomputer 1305 zugegriffen werden kann) beinhalten. Ein Gateway-Computer 1303 dient als Einstiegspunkt in jedes einzelne Netzwerk. Ein Gateway (Netzbrücke) wird beim Verbinden von einem Netzwerkprotokoll mit einem anderen Netzwerkprotokoll benötigt. Das Gateway 1306 ist vorzugsweise über eine Datenübertragungsverbindung mit einem anderen Netzwerk (zum Beispiel dem Internet 1307) verbunden. Das Gateway 1306 kann über eine Datenübertragungsverbindung auch direkt mit einem oder mehreren Arbeitsplatzcomputern 1301, 1302, 1303, 1304 verbunden werden. Der Gateway-Computer kann unter Verwendung eines Servers vom Typ IBM eServerTM zSeries® z9®, der von der International Business Machines Corporation erhältlich ist, realisiert werden.
  • Gleichzeitig Bezug nehmend auf 12 und 13 kann von dem Prozessor 1206 des Systems 1201 auf Software-Programmiercode, der die vorliegende Erfindung enthalten kann, aus den dauerhaften Speichermedien 1207 wie zum Beispiel einem CD-ROM-Laufwerk oder einem Festplattenlaufwerk zugegriffen werden. Der Software-Programmiercode kann sich auf beliebigen einer Vielzahl von bekannten Datenträgern zur Verwendung mit einem Datenverarbeitungssystem wie zum Beispiel einer Diskette, einem Festplattenlaufwerk oder einer CD-ROM befinden. Der Code kann auf solchen Datenträgern vertrieben werden oder er kann an Benutzer 1310, 1311 aus dem Computerspeicher oder dem Speicher von einem Computersystem über ein Netzwerk an andere Computersysteme zur Verwendung durch Benutzer dieser anderen Systeme vertrieben werden.
  • Alternativ kann der Programmiercode im Computerspeicher 1205 enthalten sein und der Prozessor 1206 kann mittels des Prozessorbusses auf ihn zugreifen. Dieser Programmiercode enthält ein Betriebssystem, das die Funktion und die interaktive Kommunikation von den verschiedenen Computerkomponenten und von einem oder mehreren Anwendungsprogrammen 1212 steuert. Programmcode wird normalerweise aus den Speichermedien 1207 in den Hochgeschwindigkeits-Computerspeicher 1205 umgelagert, wo er zur Verarbeitung durch den Prozessor 1206 zur Verfügung steht. Die Techniken und Verfahren zur Aufnahme von Software-Programmiercode in den Computerspeicher und auf physische Datenträger und/oder für den Vertrieb von Software-Code über Netzwerke sind bekannt und werden hier nicht weiter erörtert. Programmcode wird häufig als ”Computerprogrammprodukt” bezeichnet, wenn er erzeugt und auf einem physisch greifbaren Medium (darunter elektronische Speichermodule (RAM), Flash-Speicher, Picocode-Discs (CDs), DVDs, Magnetband und dergleichen, jedoch nicht auf diese beschränkt) gespeichert wird. Der Datenträger mit dem Computerprogrammprodukt kann üblicherweise von einer Verarbeitungsschaltung vorzugsweise in einem Computersystem gelesen werden, um von der Verarbeitungsschaltung ausgeführt zu werden.
  • Der Cachespeicher, der dem Prozessor am leichtesten zur Verfügung steht (der normalerweise schneller und kleiner als andere Cachespeicher des Prozessors ist), ist der Cachespeicher der untersten Stufe (L1-Cachespeicher oder Cachespeicher der Stufe eins), und der Hauptspeicher (Hauptcomputerspeicher) ist der Cachespeicher der höchsten Stufe (L3-Cachespeicher, wenn es 3 Stufen gibt). Der Cachespeicher der untersten Stufe wird häufig in einen Befehls-Cachespeicher (I-Cachespeicher), der auszuführende Maschinenbefehle speichert, und einen Daten-Cachespeicher (D-Cachespeicher), der Daten-Operanden speichert, aufgeteilt.
  • Bezug nehmend auf 14 ist eine beispielhafte Ausführungsform eines Prozessors für den Prozessor 1206 gezeigt. Üblicherweise werden eine oder mehrere Stufen des Cachespeichers 1403 verwendet, um Speicherblöcke zu puffern und dadurch die Leistungsfähigkeit des Prozessors zu verbessern. Der Cachespeicher 1403 ist ein Hochgeschwindigkeits-Pufferspeicher, der Cachespeicher-Zeilen mit Daten des Computerspeichers hält, die wahrscheinlich verwendet werden. Übliche Cachespeicher-Zeilen enthalten 64, 128 oder 256 Bytes an Daten des Computerspeichers. Für die Zwischenspeicherung von Befehlen und für die Zwischenspeicherung von Daten werden oftmals getrennte Cachespeicher verwendet. Cachespeicher-Kohärenz (die Synchronisation von Kopien von Zeilen im Computerspeicher und in den Cachespeichern) wird häufig von verschiedenen ”Abhör”-Algorithmen, die in der Technik bekannt sind, erreicht. Der Hauptspeicher 1205 eines Prozessorsystems wird oftmals als Cachespeicher bezeichnet. In einem Prozessorsystem, das über einen Cachespeicher 1403 mit 4 Stufen verfügt, wird der Hauptspeicher 1205 manchmal als Cachespeicher der Stufe 5 (L5-Cachespeicher) bezeichnet, da er gewöhnlich schneller ist und nur einen Teil des nichtflüchtigen Speichers (DASD, Band usw.) hält, der einem Computersystem zur Verfügung steht. Der Hauptspeicher 1205 nimmt eine ”Zwischenspeicherung” von Seiten von Daten, die vom Betriebssystem in den Hauptspeicher 1205 ein- und aus dem Hauptspeicher 1205 ausgelagert werden, vor.
  • Ein Programmzähler (Befehlszähler) 1411 überwacht die Adresse des aktuellen auszuführenden Befehls. Ein Programmzähler in einem z/Architecture®-Prozessor beinhaltet 64 Bits und kann auf 31 oder 24 Bits gekürzt werden, um frühere Adressierungsgrenzen zu unterstützen. Ein Programmzähler ist üblicherweise in einem PSW (Programmstatuswort) eines Computers in der Weise realisiert, dass er während einem Kontextwechsel bestehen bleibt. Ein in Ausführung befindliches Programm, das einen Wert eines Programmzählers hat, kann folglich zum Beispiel vom Betriebssystem unterbrochen werden (Kontextwechsel von der Programmumgebung zur Betriebssystem-Umgebung). Das PSW des Programms hält den Wert des Programmzählers fest, 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 haben gewöhnlich eine feste Länge, während CISC-(Complex-Instruction-Set-Computing-)Befehle gewöhnlich eine veränderliche Länge haben. Befehle der z/Architecture® von IBM sind CISC-Befehle mit einer Länge von 2, 4 oder 6 Byte. Der Programmzähler 1411 wird zum Beispiel entweder von einer Kontextwechsel-Operation oder von einer Verzweigung-genommen-Operation eines Verzweigungsbefehls geändert. Bei einer Kontextwechsel-Operation wird der aktuelle Wert des Programmzählers zusammen mit anderen Zustandsinformationen über das Programm, das gerade ausgeführt wird (wie zum Beispiel Bedingungscodes), in dem Programmstatuswort gesichert, und ein neuer Wert des Programmzählers wird geladen, der auf einen Befehl eines neuen Programm-Moduls zeigt, das ausgeführt werden soll. Eine Verzweigung-genommen-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 1411 geladen wird.
  • Üblicherweise wird eine Befehls-Abrufeinheit 1405 verwendet, um Befehle im Namen des Prozessors 1206 abzurufen. Die Abrufeinheit ruft entweder ”nächste sequenzielle Befehle”, Zielbefehle oder Verzweigung-genommen-Befehle oder aber erste Befehle eines Programms im Anschluss an einen Kontextwechsel ab. Moderne Befehls-Abrufeinheiten setzen oftmals Vorababruf-Techniken ein, um Befehle auf der Grundlage der Wahrscheinlichkeit, dass die vorab abgerufenen Befehle verwendet werden könnten, spekulativ vorab abzurufen. Eine Abrufeinheit kann zum Beispiel 16 Bytes eines Befehls abrufen, der den nächsten sequenziellen Befehl und zusätzliche Bytes von weiteren sequenziellen Befehlen enthält.
  • Die abgerufenen Befehle werden dann vom Prozessor 1206 ausgeführt. In einer Ausführungsform wird/werden der/die abgerufene(n) Befehl(e) an eine Zuteilungseinheit 1406 der Abrufeinheit übergeben. Die Zuteilungseinheit decodiert den/die Befehl(e) und leitet Informationen über den/die decodierten Befehl(e) an entsprechende Einheiten 1407, 1408, 1410 weiter. Eine Ausführungseinheit 1407 empfängt üblicherweise Informationen über decodierte arithmetische Befehle von der Befehls-Abrufeinheit 1405 und führt entsprechend dem Operationscode des Befehls arithmetische Operationen an Operanden aus. Operanden werden der Ausführungseinheit 1407 vorzugsweise aus dem Computerspeicher 1205, den architekturdefinierten Registern 1409 oder aber aus einem unmittelbaren Feld des Befehls, der gerade ausgeführt wird, bereitgestellt. Ergebnisse der Ausführung werden, sofern sie gespeichert werden, entweder im Computerspeicher 1205, in den Registern 1409 oder in anderer Maschinen-Hardware (wie zum Beispiel in Steuerregistern, PSW-Registern und dergleichen) gespeichert.
  • Ein Prozessor 1206 verfügt gewöhnlich über eine oder mehrere Einheiten 1407, 1408, 1410, um die Funktion des Befehls auszuführen. Bezug nehmend auf 15A kann eine Ausführungseinheit 1407 mit architekturdefinierten allgemeinen Registern 1409, einer Decodier-/Zuteilungseinheit 1406, einer Lade/Speicher-Einheit 1410 und anderen Prozessoreinheiten (1501) mittels der Schnittstellenlogik 1507 Daten austauschen. Eine Ausführungseinheit 1407 kann mehrere Registerschaltungen 1503, 1504, 1505 verwenden, um Daten zu halten, an denen das Rechenwerk (arithmetic logic unit (ALU)) 1502 Operationen ausführen wird. Die ALU führt arithmetische Operationen wie zum Beispiel Addieren, Subtrahieren, Multiplizieren und Dividieren sowie logische Funktionen wie UND, ODER und EXKLUSIV-ODER (XOR), Rotieren und Verschieben durch. Vorzugsweise unterstützt die ALU spezielle Operationen, die von der individuellen Ausgestaltung abhängig sind. Andere Schaltungen können andere architekturdefinierte Einrichtungen 1508 einschließlich zum Beispiel Bedingungscodes und Wiederherstellungs-Unterstützungslogik bereitstellen.
  • Üblicherweise wird das Ergebnis einer ALU-Operation in einer Ausgaberegister-Schaltung 1506 gehalten, die das Ergebnis an eine Vielzahl von anderen Verarbeitungsfunktionen weiterleiten kann. Es gibt viele Anordnungen von Prozessoreinheiten; die vorliegende Beschreibung soll lediglich ein repräsentatives Verständnis einer Ausführungsform ermöglichen.
  • Ein ADD-(Hinzufüge-)Befehl würde beispielsweise in einer Ausführungseinheit 1407 ausgeführt werden, die über arithmetische und logische Funktionalität verfügt, während ein Gleitkomma-Befehl beispielsweise in einer Gleitkomma-Ausführungseinheit ausgeführt würde, die über spezielle Gleitkomma-Funktionen verfügt. Eine Ausführungseinheit führt vorzugsweise Operationen an Operanden aus, die von einem Befehl gekennzeichnet werden, indem eine von einem Operationscode angegebene Funktion an den Operanden ausgeführt wird. Ein ADD-Befehl kann zum Beispiel von einer Ausführungseinheit 1407 an Operanden ausgeführt werden, die man in zwei Registern 1409 vorfindet, welche von Registerfeldern des Befehls gekennzeichnet werden.
  • Die Ausführungseinheit 1407 führt die arithmetische Addition an zwei Operanden durch und speichert das Ergebnis in einem dritten Operanden, wobei der dritte Operand ein drittes Register oder eines der beiden Quellenregister sein kann. Die Ausführungseinheit verwendet vorzugsweise ein Rechenwerk (ALU) 1502, das eine Vielzahl von logischen Funktionen wie zum Beispiel Verschieben, Rotieren, UND, ODER und XOR sowie eine Vielzahl von algebraischen Funktionen einschließlich beliebige der Funktionen Addieren, Subtrahieren, Multiplizieren, Dividieren durchführen kann. Manche ALUs 1502 sind für skalare Operationen und manche für Gleitkomma-Operationen ausgelegt. Bei den Daten kann die Byte-Reihenfolge in Abhängigkeit von der Architektur ”Big Endian” (wobei sich das niederwertigste Byte an der höchsten Byte-Adresse befindet) oder ”Little Endian” (wobei sich das niederwertigste Byte an der niedrigsten Byte-Adresse befindet) sein. Die z/Architecture® von IBM verwendet ”Big Endian”. Bei vorzeichenbehafteten Feldern kann die Darstellung des Vorzeichens in Abhängigkeit von der Architektur in Form von Vorzeigen-Betrag, Einserkomplement oder Zweierkomplement erfolgen. Eine Zweierkomplement-Zahl ist vorteilhaft, da die ALU keine Subtraktions-Funktion konzipieren muss, da ein negativer Wert oder aber ein positiver Wert in dem Zweierkomplement lediglich eine Addition in der ALU erforderlich macht. Zahlen werden gemeinhin in verkürzter Schreibweise dargestellt, wobei beispielsweise ein 12-Bit-Feld eine Adresse eines 4.096-Byte-Blocks angibt und gewöhnlich als ein 4-KByte-(Kilobyte-)Block beschrieben wird.
  • Bezug nehmend auf 15B werden Verzweigungsbefehl-Informationen zur Ausführung eines Verzweigungsbefehls üblicherweise an eine Verzweigungseinheit 1408 gesendet, die häufig einen Verzweigungs-Vorhersage-Algorithmus wie zum Beispiel eine Verzweigungsverlaufstabelle (branch history table) 1532 verwendet, um den Ausgang der Verzweigung vorherzusagen, bevor andere 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 der 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 Verzweigungs-Voraussetzung des Verzweigungsbefehls erfüllen; eine Zieladresse kann auf der Grundlage von mehreren Zahlen, darunter Zahlen, die beispielsweise in Registerfeldern oder in einem unmittelbaren Feld des Befehls vorgefunden werden, berechnet werden. Die Verzweigungseinheit 1408 kann eine ALU 1526 verwenden, die über eine Vielzahl von Eingaberegister-Schaltungen 1527, 1528, 1529 und eine Ausgaberegister-Schaltung 1530 verfügt. Die Verzweigungseinheit 1408 kann beispielsweise mit den allgemeinen Registern 1409, der Decodier/Zuteilungs-Einheit 1406 oder anderen Schaltungen 1525 Daten austauschen.
  • Die Ausführung einer Gruppe von Befehlen kann aus vielen verschiedenen Gründen, darunter ein von einem Betriebssystem veranlasster Kontextwechsel, eine Programm-Ausnahmebedingung oder ein Fehler, der einen Kontextwechsel bewirkt, ein E/A-Unterbrechungssignal, das beispielsweise einen Kontextwechsel oder eine Multithreading-Aktivität einer Vielzahl von Programmen (in einer Umgebung mit mehreren Bearbeitungssträngen (threads)) bewirkt, unterbrochen werden. Ein Kontextwechsel-Vorgang sichert vorzugsweise Zustandsinformationen über ein gerade in Ausführung befindliches Programm und lädt dann die Zustandsinformationen über ein anderes Programm, das aufgerufen wird. Zustandsinformationen können zum Beispiel in Hardware-Registern oder im Computerspeicher gesichert werden. Zustandsinformationen umfassen vorzugsweise einen Wert eines Programmzählers, welcher auf einen nächsten auszuführenden Befehl zeigt, Bedingungscodes, Speicherumsetzungs-Informationen und den Inhalt von architekturdefinierten Registern. Eine Kontextwechsel-Aktivität kann von Hardware-Schaltungen, Anwendungsprogrammen, Betriebssystem-Programmen oder von Firmware-Code (Mikrocode, Picocode oder lizenziertem 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 unmittelbaren Operanden bereitstellen, der den Wert eines Teils des Befehls verwendet, oder er kann ein oder mehrere Registerfelder bereitstellen, die ausdrücklich auf Mehrzweckregister oder Sonderregister (Gleitkomma-Register beispielsweise) zeigen. Der Befehl kann implizit enthaltene Register verwenden, die von einem Operationscode-Feld als Operanden gekennzeichnet werden. Der Befehl kann Speicherplätze für Operanden verwenden. Ein Speicherplatz eines Operanden kann von einem Register, einem unmittelbaren Feld oder einer Kombination aus Registern und einem unmittelbaren Feld bereitgestellt werden, wie es die Long Displacement Facility der z/Architecture® beispielhaft zeigt, bei der der Befehl ein Basisregister, ein Indexregister und ein unmittelbares Feld (Versatz-Feld) festlegt, die zusammengefügt werden, um die Adresse des Operanden im Computerspeicher bereitzustellen. Speicherplatz bedeutet hier üblicherweise ein Speicherplatz im Hauptcomputerspeicher (Hauptspeicher), sofern nichts anderes angegeben ist.
  • Bezug nehmend auf 15C greift ein Prozessor mittels einer Lade/Speicher-Einheit 1410 auf den Speicher zu. Die Lade/Speicher-Einheit 1410 kann eine Ladeoperation durchführen, indem sie die Adresse des Zieloperanden im Computerspeicher 1403 abruft und den Operanden in ein Register 1409 oder in einen anderen Speicherplatz des Computerspeichers 1403 lädt, oder sie kann eine Speicheroperation durchführen, indem sie die Adresse des Zieloperanden im Computerspeicher 1403 abruft und Daten, die sie aus einem Register 1409 oder einem anderen Speicherplatz des Computerspeichers 1403 abgerufen hat, in dem Speicherplatz des Zieloperanden im Computerspeicher 1403 speichert. Die Lade/Speicher-Einheit 1410 kann spekulativ sein und auf den Computerspeicher in einer Abfolge zugreifen, die in Bezug auf die Befehlsfolge außerhalb der Reihenfolge ist, jedoch muss die Lade/Speicher-Einheit 1410 gegenüber Programmen den Anschein wahren, dass Befehle in der vorgesehenen Reihenfolge ausgeführt werden. Eine Lade/Speicher-Einheit 1410 kann mit den allgemeinen Registern 1409, der Decodier/Zuteilungs-Einheit 1406, der Cachespeicher/Computerspeicher-Schnittstelle 1403 oder anderen Elementen 1555 Daten austauschen, und sie umfasst verschiedene Registerschaltungen, ALUs 1558 und Steuerlogik 1563, um Speicheradressen zu berechnen und die Reihenfolgesicherung in der Pipeline zu ermöglichen, damit die Operationen in der vorgesehenen Reihenfolge durchgeführt werden können. Manche Operationen können außerhalb der Reihenfolge ablaufen, aber die Lade/Speicher-Einheit stellt Funktionen bereit, damit die außerhalb der Reihenfolge befindlichen Operationen dem Programm so erscheinen, als wären sie reihenfolgekonform durchgeführt worden, wie in der Technik bekannt ist.
  • Vorzugsweise werden Adressen, die ein Anwendungsprogramm ”sieht”, oft als virtuelle Adressen bezeichnet. Virtuelle Adressen werden manchmal als ”logische Adressen” und ”effektive Adressen” bezeichnet. Diese virtuellen Adressen sind virtuell, da sie von einer Technologie einer Vielzahl von dynamischen Adressenumsetzungs-(DAT-)Technologien an einen physischen Speicherplatz umgeleitet werden, wobei zu den Technologien folgende gehören, ohne auf diese beschränkt zu sein: einfaches Versehen einer virtuellen Adresse mit einem Offset-Wert als Vorsatz, Umsetzen der virtuellen Adresse über eine oder mehrere Umsetzungstabellen, wobei die Umsetzungstabellen vorzugsweise mindestens eine Segmenttabelle und eine Seitentabelle allein oder in Kombination umfassen, wobei die Segmenttabelle vorzugsweise über einen Eintrag verfügt, der auf die Seitentabelle zeigt. Bei der z/Architecture® wird eine Umsetzungs-Hierarchie bereitgestellt, die eine Bereichs-Ersttabelle, eine Bereichs-Zweittabelle, eine Bereichs-Dritttabelle, eine Segmenttabelle und eine optionale Seitentabelle beinhaltet. Die Leistungsfähigkeit der Adressenumsetzung wird oftmals durch die Verwendung eines Adressenumsetzungs-Pufferspeichers (TLB) verbessert, der Einträge umfasst, die eine virtuelle Adresse auf einen zugehörigen physischen Speicherplatz abbilden. Die Einträge werden erzeugt, wenn die DAT eine virtuelle Adresse mit Hilfe 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 von einer Vielzahl von Ersatz-Algorithmen einschließlich LRU (Least Recently Used) verwaltet werden.
  • Falls es sich bei dem Prozessor um einen Prozessor eines Mehrprozessor-Systems handelt, ist jeder Prozessor dafür zuständig, gemeinsam genutzte Ressourcen zu unterhalten, wie zum Beispiel E/A, Cachespeicher, TLBs und Computerspeicher, die zum Zweck der Kohärenz ineinandergreifen. Üblicherweise kommen ”Abhör”-Technologien zur Anwendung, um die Kohärenz des Cachespeichers zu wahren. In einer Abhörumgebung kann jede Cachespeicher-Zeile als eine Zeile gekennzeichnet werden, die sich in einem von folgenden Zuständen, einem gemeinsam genutzten Zustand, einem ausschließenden Zustand, einem geänderten Zustand, einem ungültigen Zustand und dergleichen, befindet, um die gemeinsame Nutzung zu vereinfachen.
  • Die E/A-Einheiten 1404 (14) stellen dem Prozessor ein Mittel zur Anbindung an periphere Einheiten, darunter zum Beispiel Band, Platte, Drucker, Bildschirme und Netzwerke, bereit. E/A-Einheiten werden dem Computerprogramm oftmals von Software-Treibern übergeben. Bei Großcomputern wie zum Beispiel Großcomputern der z/Series® von IBM® sind Kanaladapter und Adapter für offene Systeme E/A-Einheiten des Großcomputers, die die Datenübertragungen zwischen dem Betriebssystem und den peripheren Einheiten ermöglichen.
  • Ferner können andere Arten von Datenverarbeitungsumgebungen von einer oder mehreren Erscheinungsformen der vorliegenden Erfindung profitieren. Eine Umgebung kann beispielsweise einen Emulator (z. B. Software oder andere Emulationsmechanismen) enthalten, in dem eine bestimmte Architektur (darunter beispielsweise die Befehlsausführung, architekturdefinierte Funktionen wie zum Beispiel die Adressenumsetzung und architekturdefinierte Register) oder eine Untergruppe dieser Architektur nachgebildet wird (z. B. auf einem programmspezifischen (native) Computersystem, das über einen Prozessor und einen Computerspeicher verfügt). In einer solchen Umgebung können eine oder mehrere Emulationsfunktionen des Emulators eine oder mehrere Erscheinungsformen der vorliegenden Erfindung realisieren, auch wenn ein Computer, der den Emulator ausführt, möglicherweise eine andere Architektur aufweist als die Funktionen, die nachgebildet werden. Beispielsweise wird der spezielle Befehl oder die spezielle Operation, der beziehungsweise die nachgebildet wird, im Emulationsmodus decodiert und eine entsprechende Emulationsfunktion wird eingerichtet, um den einzelnen Befehl oder die einzelne Operation zu realisieren.
  • In einer Emulationsumgebung enthält ein Hostcomputer beispielsweise einen Computerspeicher, um Befehle und Daten zu speichern; eine Befehls-Abrufeinheit, um Befehle aus dem Computerspeicher abzurufen und um optional eine lokale Zwischenspeicherung im Pufferspeicher für die abgerufenen Befehle zu ermöglichen; eine Befehls-Decodiereinheit, um die abgerufenen Befehle zu empfangen und um den Typ der abgerufenen Befehle festzustellen; und eine Befehls-Ausführungseinheit, um die Befehle auszuführen. Die Ausführung kann das Laden der Daten aus dem Computerspeicher in ein Register; das Zurückspeichern der Daten aus einem Register in den Computerspeicher; oder das Durchführen einer bestimmten Art einer arithmetischen oder logischen Operation, die von der Decodiereinheit festgelegt wird, beinhalten. In einem Beispiel wird jede Einheit in Software realisiert. Die Operationen, die von den Einheiten durchgeführt werden, werden beispielsweise als eine oder mehrere Unterroutinen in der Emulator-Software realisiert.
  • Genauer gesagt, in einem Großcomputer werden architekturdefinierte Maschinenbefehle von Programmierern, heute gewöhnlich Programmierer in der Programmiersprache ”C”, oftmals mittels einer Compiler-Anwendung verwendet. Diese in dem Speichermedium gespeicherten Befehle können programmspezifisch (natively) in einem IBM®-Server der z/Architecture® oder alternativ in Maschinen, die andere Architekturen ausführen, ausgeführt werden. Sie können in den vorhandenen und in zukünftigen IBM®-Großcomputer-Servern und auf anderen Maschinen von IBM® (z. B. Server der pSeries® und Server der xSeries®) emuliert werden. Sie können in Maschinen, auf denen Linux läuft, auf einer großen Vielzahl von Maschinen unter Verwendung von Hardware, die von IBM®, Intel®, AMDTM, Sun Microsystems und anderen hergestellt wird, ausgeführt werden. Neben der Ausführung auf dieser Hardware unter einer z/Architecture® können Linux sowie Maschinen verwendet werden, die eine Emulation von Hercules (siehe www.hercules-390.org), UMX oder FSI (Fundamental Software, Inc) (siehe www.funsoft.com) verwenden, bei denen die Ausführung im Allgemeinen in einem Emulationsmodus erfolgt. Im Emulationsmodus wird Emulations-Software von einem programmspezifischen Prozessor ausgeführt, um die Architektur eines emulierten Prozessors nachzubilden.
  • Der programmspezifische Prozessor führt üblicherweise Emulations-Software aus, die entweder Firmware oder ein programmspezifisches Betriebssystem umfasst, um die Nachbildung des emulierten Prozessors vorzunehmen. Die Emulations-Software ist für das Abrufen und Ausführen von Befehlen der nachgebildeten Prozessor-Architektur zuständig. Die Emulations-Software unterhält einen nachgebildeten Programmzähler, um Befehlsgrenzen zu überwachen. Die Emulations-Software kann jeweils einen oder mehrere nachgebildete Maschinenbefehle abrufen und den einen oder die mehreren nachgebildeten Maschinenbefehle in eine entsprechende Gruppe von programmspezifischen Maschinenbefehlen zur Ausführung durch den programmspezifischen Prozessor umwandeln. Diese umgewandelten Befehle können so im Cachespeicher abgelegt werden, dass eine schnellere Umwandlung erreicht werden kann. Nichtsdestotrotz soll die Emulations-Software die Architektur-Regeln der nachgebildeten Prozessor-Architektur bewahren, um sicherzustellen, dass Betriebssysteme und Anwendungen, die für den nachgebildeten Prozessor geschrieben wurden, korrekt arbeiten. Außerdem soll die Emulations-Software von der nachgebildeten Prozessor-Architektur gekennzeichnete Ressourcen bereitstellen, darunter, ohne auf diese beschränkt zu sein, Steuerregister, Mehrzweckregister, Gleitkomma-Register, eine dynamischen Adressenumsetzungsfunktion einschließlich beispielsweise Segmenttabellen und Seitentabellen, Unterbrechungsmechanismen, Kontextwechsel-Mechanismen, Zeituhren und architekturdefinierte Schnittstellen zu E/A-Teilsystemen, so dass ein Betriebssystem oder ein Anwendungsprogramm, das für die Ausführung auf dem nachgebildeten Prozessor bestimmt ist, auf dem programmspezifischen Prozessor ausgeführt werden kann, welcher über die Emulations-Software verfügt.
  • Ein bestimmter Befehl, der nachgebildet wird, wird decodiert, und eine Unterroutine wird aufgerufen, um die Funktion des einzelnen Befehls auszuführen. Eine Funktion einer Emulations-Software, die eine Funktion eines nachgebildeten Prozessors nachbildet, wird beispielsweise in einer ”C”-Unterroutine oder einem ”C”-Treiber oder irgendeinem anderen Verfahren zur Bereitstellung eines Treibers für die bestimmte Hardware realisiert, wobei ein Fachmann, nachdem er die Beschreibung der bevorzugten Ausführungsform verstanden hat, diese Realisierung aufgrund seiner Qualifikation vornehmen kann. Verschiedene Patentschriften im Bereich Software- und Hardware-Emulation, darunter, ohne auf diese beschränkt zu sein, die US-Patentschrift Nr. 5 551 013 mit dem Titel ”Multiprocessor for Hardware Emulation” von Beausoleil u. a.; und die US-Patentschrift Nr. 6 009 261 mit dem Titel ”Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor” von Scalzi u. a.; und die US-Patentschrift Nr. 5 574 873 mit dem Titel ”Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions” von Davidian u. a.; die US-Patentschrift Nr. 6 308 255 mit dem Titel ”Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System” von Gorishek u. a.; und die US-Patentschrift Nr. 6 463 582 mit dem Titel ”Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method” von Lethin u. a.; und die US-Patentschrift Nr. 5 790 825 mit dem Titel ”Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions” von Eric Traut; sowie viele andere veranschaulichen eine Vielfalt von bekannten Möglichkeiten, die Emulation eines Befehlsformats, das für eine andere Maschine entwickelt wurde, für eine Zielmaschine zu erreichen, die einem Fachmann zur Verfügung steht.
  • In 16 ist ein Beispiel eines nachgebildeten Host-Computersystems 1620 gezeigt, das ein Host-Computersystem 1100' einer Host-Architektur nachbildet. In dem nachgebildeten Host-Computersystem 1620 ist der Host-Prozessor (CPU) 1601 ein nachgebildeter Host-Prozessor (oder ein virtueller Host-Prozessor) und umfasst einen Emulations-Prozessor 1621, der über eine andere Architektur mit programmspezifischem Befehlssatz als der Prozessor 1601 des Hostcomputers 1100' verfügt. Das nachgebildete Host-Computersystem 1620 hat einen Speicher 1622, auf den der Emulations-Prozessor 1621 zugreifen kann. In der beispielhaften Ausführungsform wird der Speicher 1622 in einen Teil, den der Host-Computerspeicher 1625 bildet, und einen Teil, den die Emulationsroutinen 1626 bilden, geteilt. Der Host-Computerspeicher 1625 steht entsprechend der Architektur des Hostcomputers Programmen des nachgebildeten Hostcomputers 1620 zur Verfügung. Der Emulations-Prozessor 1621 führt programmspezifische Befehle eines architekturdefinierten Befehlssatzes einer anderen Architektur als der des nachgebildeten Prozessors 1601 aus, wobei er die programmspezifischen Befehle aus dem Computerspeicher 1626 für die Emulations-Routinen erhält, und er kann von einem Programm im Host-Computerspeicher 1625 auf einen Befehl des Hostcomputers zur Ausführung zugreifen, indem er einen oder mehrere in einer Abfolge- und Zugriffs/Decodier-Routine erhaltenen Befehl(e) verwendet, die den beziehungsweise die Befehl(e) des Hostcomputers, auf den/die zugegriffen wurde, decodieren können, um eine Ausführungsroutine für einen programmspezifischen Befehl festzulegen, um die Funktion des Hostcomputer-Befehls, auf den zugegriffen wurde, nachzubilden. Andere für die Architektur des Host-Computersystems 1100' festgelegte Einrichtungen können von architekturdefinierten Routinen für die Einrichtungen, darunter Einrichtungen wie beispielsweise Mehrzweckregister, Steuerregister, dynamische Adressenumsetzung, Unterstützung des E/A-Teilsystems sowie der Cachespeicher des Prozessors, nachgebildet werden. Die Emulations-Routinen können auch von Funktionen profitieren, die in dem Emulations-Prozessor 1621 zur Verfügung stehen (wie zum Beispiel allgemeine Register und die dynamische Umsetzung von virtuellen Adressen), um die Leistungsfähigkeit der Emulations-Routinen zu verbessern. Spezielle Hardware und Entlastungscomputer können ebenfalls bereitgestellt werden, um dem Prozessor 1621 bei der Nachbildung der Funktion des Hostcomputers 1100' behilflich zu sein.
  • Die hier verwendete Terminologie dient lediglich dazu, bestimmte Ausführungsformen zu beschreiben und ist nicht als Einschränkung der Erfindung zu verstehen. Die Singular-Formen ”ein”, ”eine” und ”der”, ”die”, ”das” sollen in der hier verwendeten Weise auch die Pluralformen einschließen, sofern der Kontext nicht eindeutig etwas anderes angibt. Des Weiteren versteht es sich, dass die Begriffe ”umfasst” und/oder ”umfassen”, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von angegebenen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten bezeichnen, das Vorhandensein oder das Hinzufügen von einem oder mehreren anderen/weiteren Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen der Vorgenannten jedoch nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Vorgänge und Gleichwertiges von allen Mitteln oder Schritten sowie Funktionselementen in den nachstehenden Ansprüchen, sofern vorhanden, sollen jedwede Struktur, jedwedes Material oder jedweden Vorgang zur Durchführung der Funktion in Kombination mit anderen beanspruchten Elementen, die im Einzelnen beansprucht werden, beinhalten. Die Beschreibung der vorliegenden Erfindung erfolgte zum Zweck der Veranschaulichung und Erläuterung, erhebt jedoch keinen Anspruch auf Vollständigkeit und ist auch nicht als auf die Erfindung in der offengelegten Form beschränkt zu verstehen. Viele Ab- und Veränderungen sind für den Fachmann erkennbar, ohne vom Umfang und Wesen der Erfindung abzuweichen. Die Ausführungsform wurde gewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung bestmöglich zu erklären und um anderen Fachleuten das Verständnis der Erfindung hinsichtlich verschiedener Ausführungsformen mit verschiedenen Änderungen, wie sie für die jeweilige vorgesehene Verwendung geeignet sind, zu ermöglichen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 5551013 [0161]
    • US 6009261 [0161]
    • US 5574873 [0161]
    • US 6308255 [0161]
    • US 6463582 [0161]
    • US 5790825 [0161]
  • Zitierte Nicht-Patentliteratur
    • ”z/Architecture® Principles of Operation”, IBM-Veröffentlichungs-Nr. SA22-7832-07, Februar 2009 [0034]
    • ”z/Architecture Principles of Operation”, IBM-Veröffentlichungs-Nr. SA22-7832-07, Februar 2009 [0057]
    • www.hercules-390.org [0159]
    • www.funsoft.com [0159]

Claims (14)

  1. Verfahren zur Vereinfachung der Verarbeitung in einer Datenverarbeitungsumgebung, wobei das Verfahren die folgenden Schritte umfasst: Erhalten einer Anforderung durch einen Prozessor für das Ändern eines Speicherschlüssels, wobei der Speicherschlüssel einem Speicherplatz zugehörig ist und eine Vielzahl von Prozessoren auf den Speicherschlüssel zugreifen können; und Ändern des Speicherschlüssels durch den Prozessor, wobei das Ändern durchgeführt wird, ohne dass die Verarbeitung durch die Vielzahl der Prozessoren stillgelegt wird; wobei der Speicherschlüssel eine Zugriffssteuerungs-Komponente (402), die für einen Schlüsselvergleich verwendet wird, und eine Abrufschutz-Komponente (404) enthält, die verwendet wird, um anzuzeigen, ob das Abrufen von Daten, die in dem Speicherplatz gespeichert sind, welcher dem Speicherschlüssel zugeordnet ist, einer Schlüsselsteuerung unterliegt; wobei der Schritt des Änderns mindestens eine von beiden, die Zugriffssteuerungs-Komponente (402) oder die Abrufschutz-Komponente (404), ändert.
  2. Verfahren nach Anspruch 1, wobei das Verfahren des Weiteren das Festlegen von einem Verarbeitungsmodus einer Vielzahl von Verarbeitungsmodi für die Anforderung umfasst, wobei die Vielzahl der Verarbeitungsmodi eine Stilllegung und eine Nichtstilllegung umfasst, und wobei das Ändern als Reaktion auf die Festlegung, die angibt, dass der Verarbeitungsmodus für die Anforderung Nichtstilllegung ist, durchgeführt wird.
  3. Verfahren nach Anspruch 2, wobei die Anforderung ein Befehl zum Ändern des Speicherschlüssels ist und wobei der Verarbeitungsmodus für eine bestimmte Ausführung des Befehls in dem Befehl angegeben wird.
  4. Verfahrensprodukt nach Anspruch 3, wobei es sich bei dem Befehl um einen Befehl ”Set Storage Key Extended” handelt, der ein Maskenfeld umfasst, wobei das Maskenfeld ein Nichtstilllegungs-Steuerbit umfasst, um eine Nichtstilllegungs- oder Stilllegungs-Verarbeitung anzuzeigen.
  5. Verfahrensprodukt nach Anspruch 3, wobei der Befehl einen Befehl ”Perform Frame Management Function” umfasst.
  6. Verfahren nach Anspruch 1, wobei das Verfahren des Weiteren Folgendes umfasst: Einleiten durch einen anderen Prozessor der Vielzahl der Prozessoren einer Operation zum Zugreifen auf den Speicherplatz; im Anschluss an das Einleiten Feststellen, ob sich der Speicherschlüssel für diesen Speicherplatz geändert hat; und als Reaktion auf das Feststellen Fortsetzen der Ausführung der Operation.
  7. Verfahren nach Anspruch 6, wobei das Verfahren des Weiteren Folgendes umfasst: als Reaktion auf das Einleiten Erhalten einer Erlaubnis für den Zugriff auf den Speicherplatz; und im Anschluss an eine Änderung des Speicherschlüssels Fortsetzen der Ausführung der Operation auf der Grundlage der Erlaubnis, die als Reaktion auf das Einleiten erteilt wurde.
  8. Verfahren nach Anspruch 7, wobei das Erhalten der Erlaubnis Folgendes umfasst: als Reaktion auf das Einleiten Vorabprüfen von einem oder mehreren Speicherplätzen, auf die von der Operation zugegriffen werden soll, um festzustellen, ob der Zugriff gestattet ist; und als Reaktion auf ein erfolgreiches Vorabprüfen Erhalten der Erlaubnis, wobei die Erlaubnis für einen Bereich von Speicherplätzen erteilt wird.
  9. Verfahren nach Anspruch 6, wobei das Fortsetzen der Ausführung das Blockieren einer Schutz-Ausnahmebedingung umfasst.
  10. Verfahren nach Anspruch 9, wobei das Fortsetzen der Ausführung Folgendes umfasst: als Reaktion auf die Feststellung, dass sich der Speicherschlüssel geändert hat, Entscheiden, ob ein Anzeiger zur Angabe der fortgesetzten Ausführung, der als Reaktion auf das Ändern eines ausgewählten Speicherplatzes gesetzt wurde, angibt, dass die Ausführung trotz eines geänderten Speicherschlüssels fortgesetzt werden kann; und als Reaktion auf die Entscheidung, die angibt, dass die Ausführung fortgesetzt werden kann, Blockieren der Schutz-Ausnahmebedingung.
  11. Verfahren nach Anspruch 1, wobei als Reaktion auf das Ändern des Speicherschlüssels mehrere unterschiedliche Werte des Speicherschlüssels von einem oder mehreren Prozessoren festgestellt werden können.
  12. Verfahren nach Anspruch 1, wobei die Anforderung einen Befehl zum Ändern des Speicherschlüssels umfasst, wobei der Befehl von dem Prozessor nachgebildet wird, um den Speicherschlüssel zu ändern.
  13. System, das Mittel umfasst, welche so ausgelegt sind, dass sie alle Schritte des Verfahrens nach einem der vorhergehenden Verfahrensansprüche durchführen können.
  14. Computerprogramm, das Befehle zur Durchführung aller Schritte des Verfahrens nach einem der vorhergehenden Verfahrensansprüche umfasst, wenn das Computerprogramm auf einem Computersystem ausgeführt wird.
DE112010003942T 2009-12-15 2010-12-14 Einrichtung zum Setzen von Schlüsseln ohne Stilllegung Ceased DE112010003942T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/638,314 US8806179B2 (en) 2009-12-15 2009-12-15 Non-quiescing key setting facility
US12/638,314 2009-12-15
PCT/EP2010/069565 WO2011073161A1 (en) 2009-12-15 2010-12-14 Non-quiescing key setting facility

Publications (1)

Publication Number Publication Date
DE112010003942T5 true DE112010003942T5 (de) 2012-11-22

Family

ID=43799712

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112010003942T Ceased DE112010003942T5 (de) 2009-12-15 2010-12-14 Einrichtung zum Setzen von Schlüsseln ohne Stilllegung

Country Status (6)

Country Link
US (2) US8806179B2 (de)
CN (1) CN102713838B (de)
DE (1) DE112010003942T5 (de)
GB (1) GB2488458B (de)
RU (1) RU2542953C2 (de)
WO (1) WO2011073161A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8806179B2 (en) 2009-12-15 2014-08-12 International Business Machines Corporation Non-quiescing key setting facility
US9104513B1 (en) 2014-03-14 2015-08-11 International Business Machines Corporation Managing quiesce requests in a multi-processor environment
US10025608B2 (en) 2014-11-17 2018-07-17 International Business Machines Corporation Quiesce handling in multithreaded environments
US10437729B2 (en) 2017-04-19 2019-10-08 International Business Machines Corporation Non-disruptive clearing of varying address ranges from cache
CN108776665B (zh) * 2018-04-20 2021-01-12 北京奇艺世纪科技有限公司 一种数据处理方法及装置
US10838631B2 (en) 2019-02-25 2020-11-17 International Business Machines Corporation Detection of alteration of storage keys used to protect memory
US10831480B2 (en) 2019-02-25 2020-11-10 International Business Machines Corporation Move data and set storage key instruction
US11042483B2 (en) 2019-04-26 2021-06-22 International Business Machines Corporation Efficient eviction of whole set associated cache or selected range of addresses
US11593275B2 (en) 2021-06-01 2023-02-28 International Business Machines Corporation Operating system deactivation of storage block write protection absent quiescing of processors
US20220382682A1 (en) * 2021-06-01 2022-12-01 International Business Machines Corporation Reset dynamic address translation protection instruction

Citations (6)

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

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5008811A (en) * 1988-02-10 1991-04-16 International Business Machines Corp. Control mechanism for zero-origin data spaces
US5966515A (en) * 1996-12-31 1999-10-12 Unisys Corporation Parallel emulation system and method
US6079013A (en) * 1998-04-30 2000-06-20 International Business Machines Corporation Multiprocessor serialization with early release of processors
US6088792A (en) * 1998-04-30 2000-07-11 International Business Machines Corporation Avoiding processor serialization after an S/390 SPKA instruction
US6119219A (en) * 1998-04-30 2000-09-12 International Business Machines Corporation System serialization with early release of individual processor
US6996698B2 (en) * 2003-05-12 2006-02-07 International Business Machines Corporation Blocking processing restrictions based on addresses
US7020761B2 (en) * 2003-05-12 2006-03-28 International Business Machines Corporation Blocking processing restrictions based on page indices
US7284100B2 (en) * 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US7454393B2 (en) 2003-08-06 2008-11-18 Microsoft Corporation Cost-benefit approach to automatically composing answers to questions by extracting information from large unstructured corpora
US8527855B2 (en) 2004-08-16 2013-09-03 Koninklijke Philips N.V. Interleaving and parsing for MIMO-OFDM systems
JP4144609B2 (ja) * 2004-09-29 2008-09-03 ソニー株式会社 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム
US7581074B2 (en) * 2006-05-19 2009-08-25 International Business Machines Corporation Facilitating use of storage access keys to access storage
US8335906B2 (en) * 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US8417916B2 (en) * 2008-01-11 2013-04-09 International Business Machines Corporation Perform frame management function instruction for setting storage keys and clearing blocks of main storage
US8151083B2 (en) * 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8140834B2 (en) 2008-02-26 2012-03-20 International Business Machines Corporation System, method and computer program product for providing a programmable quiesce filtering register
US8572624B2 (en) * 2008-02-26 2013-10-29 International Business Machines Corporation Providing multiple quiesce state machines in a computing environment
US8806179B2 (en) * 2009-12-15 2014-08-12 International Business Machines Corporation Non-quiescing key setting facility

Patent Citations (6)

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

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"z/Architecture Principles of Operation", IBM-Veröffentlichungs-Nr. SA22-7832-07, Februar 2009
"z/Architecture(RTM) Principles of Operation", IBM-Veröffentlichungs-Nr. SA22-7832-07, Februar 2009
www.funsoft.com
www.hercules-390.org

Also Published As

Publication number Publication date
GB2488458A (en) 2012-08-29
US20110145550A1 (en) 2011-06-16
US20120204010A1 (en) 2012-08-09
RU2012147517A (ru) 2014-05-20
WO2011073161A1 (en) 2011-06-23
US8751775B2 (en) 2014-06-10
CN102713838A (zh) 2012-10-03
US8806179B2 (en) 2014-08-12
CN102713838B (zh) 2015-01-07
GB201207328D0 (en) 2012-06-13
GB2488458B (en) 2017-08-23
RU2542953C2 (ru) 2015-02-27

Similar Documents

Publication Publication Date Title
DE112010003942T5 (de) Einrichtung zum Setzen von Schlüsseln ohne Stilllegung
DE112013001941T9 (de) Eingeschränkte Anweisungen in Transaktionsgebundener Ausführung
DE102018126731A1 (de) Freigabeanweisung, um Seitenblock während des Auslagerns umzukehren
DE202019005671U1 (de) Koexistenz von Vertrauensdomänenarchitektur mitMehrschlüssel-Gesamtspeicherverschlüsselungstechnologieauf Servern
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE112013002040T5 (de) Transaktionsabbruchverarbeitung
DE112017003483T5 (de) Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten
DE112015001548T5 (de) Partitionsmobilität für Partitionen mit erweitertem Code
DE112013003079T5 (de) Anweisungen für Transaktionsbeginn/-ende
DE112015006934T5 (de) Verschachtelte Virtualisierung für virtuelle Maschinenexits
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE102014108753A1 (de) Vorhersageeinheiten-Datenstruktur zur Verwendung bei der Verarbeitung im Pipelinesystem
DE112013002956T5 (de) Vorabladen von Verzweigungsvorhersagen
DE102014108785A1 (de) Vorausschauendes abrufen und decodieren bei ausgewählten anweisungen
DE112013001442T5 (de) Kopieren von Zeichendaten, die ein Abschlusszeichen aufweisen, von einer Speicherposition zu einer anderen
DE112012007119T5 (de) Threadmigration-Unterstützung für Kerne unterschiedlicher Architektur
DE202016009016U1 (de) Befehle und Logik für wiederkehrende benachbarte Sammlungen
DE112014000252T5 (de) Anweisung "Vector floating point test data class immediate"
DE112013005466T5 (de) Anweisung "Vector generate mask"
DE112015000203T5 (de) "Compare and Delay"-Befehle
DE112013005500T5 (de) Anweisung zum Drehen und Einfügen eines Vektorelements unter einer Maske
DE112018004384T5 (de) Schützen von arbeitsspeicherinternen konfigurationsstatusregistern
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor
DE112018004364B4 (de) Vereinfachung einer verarbeitung in einer datenverarbeitungsumgebung durch gruppierung eines konfigurationsstatusregisters auf grundlage von funktionaler affinität

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final