-
Diese
Erfindung betrifft eine Computersystemarchitektur und insbesondere
neue Befehle, die die IBM z/Architektur erweitern und durch andere
Architekturen emuliert werden können.
-
Vor
unserer Erfindung hat IBM durch die Arbeit vieler hochtalentierter
Ingenieure, beginnend in den 60er Jahren mit den als IBM System
360 bekannten Maschinen bis hin zur Gegenwart, eine spezielle Architektur
geschaffen, die aufgrund ihrer Beschaffenheit als Datenverarbeitungssystem
als „Großrechner" bekannt wurde, dessen
Arbeitsweise die Architektur der Maschine durch Beschreibung der Befehle
darlegt, die in der „Großrechner"-Realisierung der
Befehle ausgeführt
werden können,
die von Erfindern der IBM erfunden und aufgrund ihres erheblichen
Beitrags zur Verbesserung des Zustands der durch den „Großrechner" dargestellten Datenverarbeitungsmaschine
im Lauf der Jahre in die Funktionsprinzipien (Principles of Operation)
von IBM aufgenommen wurden. Die im Dezember 2000 veröffentlichte
erste Ausgabe von „z/Architecture
Principles of Operation" wurde
zur Standardquellenangabe als SA22-7832-00.
-
Wir
stellten fest, dass weitere neue Befehle den Stand der Technik unterstützen würden und
in eine Maschine der z/Architektur aufgenommen sowie auch von anderen
Architekturen in einfacheren Maschinen emuliert werden könnten, wie
hierin beschrieben wird.
-
Ein
bekannter Befehl zum Berechnen eines Nachrichten-Berechtigungsüberprüfungscodes, der einen zugeordneten
Funktionscode aufweist, ist aus dem am 14. Februar 1990 veröffentlichten
Dokument
EP 035 477 4 bekannt.
-
Die
vorliegende Erfindung stellt ein Verfahren bereit, wie es in Anspruch
1 beansprucht wird.
-
Die
Merkmale der bevorzugten Ausführungsformen
der Erfindung gehen für
Fachleute aus der folgenden ausführlichen
Beschreibung in Verbindung mit den begleitenden Zeichnungen hervor,
in denen:
-
1 eine
Darstellung des Befehls „Nachrichten-Berechtigungsüberprüfungscode
berechnen" (Compute
Message Authentication Code – KMAC)
im RRE-Befehlsformat
ist;
-
2 eine
Tabelle ist, die die Funktionscodes für den Befehl KMAC von 1 zeigt;
-
3 eine
Darstellung der Allgemeinregisterzuordnung für den Befehl KMAC von 1 ist;
-
4 das
für die
geeignete EXKLUSIV-ODER-Verknüpfung
verwendete Symbol darstellt;
-
5 das
Symbol für
die DEA-Verschlüsselung
und -Entschlüsselung
darstellt;
-
6 das
Format für
den Parameterblock für eine
KMAC-Abfrage (KMAC-Query)
darstellt;
-
7 das
Format für
den Parameterblock für KMAC-DEA
darstellt;
-
8 die
Funktionsweise von KMAC-DEA darstellt;
-
9 das
Format für
den Parameterblock für KMAC-TDEA-128
darstellt;
-
10 die
Funktionsweise von KMAC-TDEA-128 darstellt;
-
11 das
Format für
den Parameterblock für
KMAC-TDEA-192 darstellt;
-
12 die
Funktionsweise von KMAC-TDEA-192 darstellt;
-
13 eine
Tabelle ist, die die Ausführungspriorität für KMAC darstellt;
-
14 unseren
Verschlüsselungscoprozessor
darstellt; und
-
15 die
verallgemeinerte bevorzugte Ausführungsform
eines Computerspeichers, der Befehle gemäß der bevorzugten Ausführungsform
und Daten enthält,
sowie den Mechanismus zum Abrufen, Entschlüsseln und Ausführen dieser
Befehle zeigt, entweder in einem Computersystem, das diese architekturdefinierten
Befehle verwendet, oder gemäß der Verwendung
in der Emulation unserer architekturdefinierten Befehle.
-
Als
Erstes wird der Befehl NACHRICHTEN-BERECHTIGUNGSÜBERPRÜFUNGSCODE BERECHNEN (COMPUTE
MESSAGE AUTHENTICATION CODE – KMAC)
erläutert,
anschließend
ein bevorzugtes Computersystem und als Alternative ein Computersystem
zum Emulieren eines Computersystems mit einer anderen Architektur
zum Ausführen
des Befehls.
-
NACHRICHTEN-BERECHTIGUNGSÜBERPRÜFUNGSCODE
BERECHNEN (KMAC)
-
1 ist
eine Darstellung des Befehls „Nachrichten-Berechtigungsüberprüfungscode
berechnen" (KMAC)
in RRE-Befehlsformat.
-
Eine
durch den Funktionscode im Allgemeinregister 0 angegebene Funktion
wird ausgeführt.
Die Bits 16 bis 23 des Befehls und das Feld R1 werden ignoriert.
-
Die
Bitpositionen 57 bis 63 des Allgemeinregisters 0 enthalten den Funktionscode. 2 zeigt die
zugeordneten Funktionscodes. Alle anderen Funktionscodes werden
nicht zugeordnet. Das Bit 56 des Allgemeinregisters 0 muss null
sein; andernfalls wird ein Spezifikationsfehler (specification exception) erkannt.
Alle anderen Bits des Allgemeinregisters 0 werden ignoriert.
-
Das
Allgemeinregister 1 enthält
die logische Adresse des höchstwertigen
Bytes des Parameterblocks im Speicher. Im 24-Bit-Adressiermodus stellt der Inhalt
der Bitpositionen 40 bis 63 des Allgemeinregisters 1 die Adresse
dar, und der Inhalt der Bitpositionen 0 bis 39 wird ignoriert. Im
31-Bit-Adressiermodus
stellt der Inhalt der Bitpositionen 33 bis 63 des Allgemeinregisters
1 die Adresse dar, und der Inhalt der Bitpositionen 0 bis 32 wird
ignoriert.
-
Im
64-Bit-Adressiermodus stellt der Inhalt der Bitpositionen 0 bis
63 des Allgemeinregisters 1 die Adresse dar.
-
Der
Funktionscode für
NACHRICHTEN-BERECHTIGUNGSÜBERPRÜFUNGSCODE
BERECHNEN wird in 2 gezeigt.
-
Alle
anderen Funktionscodes werden nicht zugeordnet. Die Abfragefunktion
stellt das Mittel zum Angeben der Verfügbarkeit aller anderen Funktionen bereit.
Der Inhalt der Allgemeinregister R2 und R2 + 1 wird ignoriert.
-
Für alle anderen
Funktionen wird der zweite Operand verarbeitet, wie durch den Funktionscode angegeben
wird, wobei ein anfänglicher
Verkettungswert im Parameterblock verwendet wird und das Ergebnis
den Verkettungswert ersetzt. Der Vorgang verwendet außerdem einen
Verschlüsselungsschlüssel im
Parameterblock. Der Vorgang wird fortgesetzt, bis das Ende der Position
des zweiten Operanden erreicht wird oder eine von der CPU festgelegte
Anzahl von Bytes verarbeitet wurde, je nachdem welches von beiden
Ereignissen zuerst eintritt. Das Ergebnis wird im Bedingungscode
(condition code) angegeben.
-
Das
Feld R2 bezeichnet ein gerades/ungerades Paar von Allgemeinregistern
und muss Register mit einer geraden Nummerierung bezeichnen; andernfalls
wird ein Spezifikationsfehler erkannt.
-
Die
Position des höchstwertigen
Bytes des zweiten Operanden wird durch den Inhalt des Allgemeinregisters
R2 angegeben. Die Anzahl von Bytes an der Position des zweiten Operanden
wird im Allgemeinregister R2 + 1 angegeben.
-
Als
Teil des Vorgangs wird die Adresse im Allgemeinregister R2 um die
Anzahl der vom zweiten Operanden verarbeiteten Bytes erhöht, und
die Länge
im Allgemeinregister R2 + 1 wird um die gleiche Anzahl vermindert.
Die Bildung und Aktualisierung der Adresse und der Länge ist
abhängig
vom Adressiermodus.
-
Im
24-Bit-Adressiermodus bildet der Inhalt der Bitpositionen 40 bis
63 des Allgemeinregisters R2 die Adresse des zweiten Operanden und
wird ignoriert; die Bits 40 bis 63 der aktualisierten Adresse ersetzen
die entsprechenden Bits im Allgemeinregister R_, Übertragungsausgänge (carries
out) der Bitposition 40 der aktualisierten Adresse werden ignoriert, und
der Inhalt der Bitpositionen 32 bis 39 des Allgemeinregisters R_
wird auf null gesetzt. Im 31-Bit-Adressiermodus
bildet der Inhalt der Bitpositionen 33 bis 63 des Allgemeinregisters
R_ die Adresse des zweiten Operanden, und der Inhalt der Bitpositionen
0 bis 32 wird ignoriert; die Bits 33 bis 63 der aktualisierten Adresse
ersetzen die entsprechenden Bits im Allgemeinregister R_, Übertragungsausgänge der
Bitposition 33 der aktualisierten Adresse werden ignoriert, und
der Inhalt der Bitposition 32 des Allgemeinregisters R_ wird auf
null gesetzt. Im 64-Bit-Adressiermodus
bildet der Inhalt der Bitpositionen 0 bis 63 des Allgemeinregisters
R_ die Adresse des zweiten Operanden; die Bits 0 bis 63 der aktualisierten
Adresse ersetzen den Inhalt des Allgemeinregisters R_, und Übertragungsausgänge der
Bitposition 0 werden ignoriert.
-
Sowohl
im 24-Bit- als auch im 31-Bit-Adressiermodus bildet der Inhalt der
Bitpositionen 32 bis 63 des Allgemeinregisters R2 + 1 eine vorzeichenlose binäre ganze
Zahl mit 32 Bit (32-bit unsigned binary integer), die die Anzahl
von Bytes im zweiten Operanden angibt; und der aktualisierte Wert
ersetzt den Inhalt der Bitpositionen 32 bis 63 des Allgemeinregisters
R2 + 1. Im 64-Bit-Adressiermodus bildet der Inhalt der Bitpositionen
0 bis 63 des Allgemeinregisters R2 + 1 eine vorzeichenlose binäre ganze
Zahl mit 64 Bit, die die Anzahl von Bytes im zweiten Operanden angibt;
und der aktualisierte Wert ersetzt den Inhalt des Allgemeinregisters
R2 + 1.
-
Im
24-Bit- oder im 31-Bit-Adressiermodus bleibt der Inhalt der Bitpositionen
0 bis 31 der Allgemeinregister R2 und R3 stets unverändert.
-
3 zeigt
den Inhalt der gerade beschriebenen Allgemeinregister.
-
Im
Zugriffsregistermodus (access-register mode) geben die Zugriffsregister
1 und R2 die Adressbereiche an, die den Parameterblock bzw. den
zweiten Operanden enthalten.
-
Das
Ergebnis wird erhalten, als ob die Verarbeitung auf der linken Seite
des zweiten Operanden beginnt und Block für Block nach rechts weitergeht. Der
Vorgang ist beendet, wenn alle Quellenbytes im zweiten Operanden
verarbeitet wurden (als normale Beendigung bezeichnet) oder wenn
eine von der CPU festgelegte Anzahl von Blöcken, die geringer als die
Länge des
zweiten Operanden ist, verarbeitet wurden (als teilweise Beendigung
bezeichnet). Die von der CPU festgelegte Anzahl von Blöcken hängt vom
Modell ab, und es kann sich bei jeder Ausführung des Befehls um eine andere
Anzahl handeln. Die von der CPU festgelegte Anzahl von Blöcken ist normalerweise
verschieden von null. In bestimmten unüblichen Situationen kann diese
Anzahl null sein, und der Bedingungscode 3 kann ohne Fortschritt
gesetzt werden. Die CPU schützt
jedoch vor einem endlosen Wiederholung dieses Falles ohne Fortschritt.
-
Wenn
das Feld für
den Verkettungswert einen Teil des zweiten Operanden überlagert,
ist das Ergebnis in diesem Feld nicht vorhersehbar.
-
Eine
normale Beendigung findet statt, wenn die im Allgemeinregister R
+ 1 angegebene Anzahl von Bytes im zweiten Operanden verarbeitet
wurde.
-
Wenn
der Vorgang aufgrund einer normalen Beendigung endet, wird der Bedingungscode
0 gesetzt, und der sich ergebende Wert in R2 + 1 ist null. Wenn
der Vorgang aufgrund einer teilweisen Beendigung endet, wird der
Bedingungscode 3 gesetzt, und der sich ergebende Wert in R2 + 1
ist verschieden von null.
-
Wenn
die Länge
des zweiten Operanden anfänglich
null ist, wird auf den zweiten Operanden und den Parameterblock
nicht zugegriffen, die Allgemeinregister R2 und R2 + 1 werden nicht
geändert,
und der Bedingungscode 0 wird gesetzt.
-
Im
Falle einer Überwachung
durch andere CPUs und Kanalprogramme können Bezugnahmen auf den Parameterblock
und Speicheroperanden Bezugnahmen mit Mehrfachzugriff sein, Zugriffe
auf diese Speicherpositionen laufen bezüglich der Blöcke nicht
unbedingt gleichzeitig ab, und die Abfolge dieser Zugriffe oder
Bezugnahmen ist nicht festgelegt.
-
Zugriffsfehlers
können
für einen
größeren Teil
des zweiten Operanden berichtet werden, als in einer einzigen Ausführung des
Befehls verarbeitet wird; Zugriffsfehler werden jedoch weder für Positionen
erkannt, die über
die Länge
des zweiten Operanden hinausgehen, noch für Positionen, die um mehr als
4 Kilobyte über
die gerade verarbeitete Position hinausgehen.
-
In Funktionsbeschreibungen
verwendete Symbole
-
Die
Symbole der 4 und 5 werden
in der nachfolgenden Beschreibung der Funktionen NACHRICHTEN-BERECHTIGUNGSÜBERPRÜFUNGSCODE
BERECHNEN verwendet. Für
Datenverschlüsselungsalgorithmus-Funktionen
(data-encryptionalgorithm (DEA) functions) wird das DEA-Schlüsselparitätsbit (DEA-key-parity
bit) in jedem Byte des DEA-Schlüssels
ignoriert, und der Vorgang wird unabhängig von der DEA-Schlüsselparität des Schlüssels normal
fortgesetzt.
-
Eine
weitere Beschreibung des Datenverschlüsselungsalgorithmus ist in
Data Encryption Algorithm, ANSI-X3.92.1981, American National Standard
for Information Systems, zu finden.
-
KMAC-Abfrage (Funktionscode
0)
-
Die
Positionen der vom Befehl verwendeten Operanden und Adressen werden
in 3 gezeigt. Der für die KMAC-Abfragefunktion verwendete Parameterblock
hat das in 3 gezeigte Format.
-
Ein
128-Bit-Statuswort wird im Parameterblock gespeichert. Die Bits
0 bis 127 dieses Feldes entsprechen jeweils den Funktionscodes 0
bis 127 des KMAC-Befehls. Wenn ein Bit eins ist, wird die entsprechende
Funktion installiert, andernfalls wird die Funktion nicht installiert.
-
Der
Bedingungscode 0 wird gesetzt, wenn die Ausführung der KMAC-Abfragefunktion
beendet ist; der Bedingungscode 3 kann auf diese Funktion nicht
angewandt werden.
-
KMAC-DEA (Funktionscode
1)
-
Die
Positionen der vom Befehl verwendeten Operanden und Adressen werden
in 3 gezeigt.
-
Der
für die
KMAC-DEA-Funktion verwendete Parameterblock hat das in 7 gezeigte
Format.
-
Der
Nachrichten-Berechtigungsüberprüfungscode
für die
8-Byte-Nachrichtenblöcke (M1, M2,...,
Mn) im Operand 2 wird unter Verwendung des DEA-Algorithmus mit dem
64-Bit-Verschlüsselungsschlüssel und
dem 64-Bit-Verkettungswert im Parameterblock berechnet.
-
Der
auch als Ausgabeverkettungswert (output chaining value – OCV) bezeichnete
Nachrichten-Berechtigungsüberprüfungscode
wird im Feld „Verkettungswert" des Parameterblocks
gespeichert. Der KMAC-DEA-Vorgang wird in 8 gezeigt.
-
KMAC-TDEA-128 (Funktionscode
2)
-
Die
Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen
den in 3 gezeigten.
-
Der
für die
Funktion KMAC-TDEA-128 verwendete Parameterblock hat das in 9 gezeigte Format.
-
Der
Nachrichten-Berechtigungsüberprüfungscode
für die
8-Byte-Nachrichtenblöcke (M1, M2,...,
Mn) im Operand 2 wird unter Verwendung des TDEA-Algorithmus mit
den beiden 64-Bit-Verschlüsselungsschlüsseln und
dem 64-Bit-Verkettungswert im Parameterblock berechnet.
-
Der
auch als Ausgabeverkettungswert (OCV) bezeichnete Nachrichten-Berechtigungsüberprüfungscode
wird im Feld „Verkettungswert" des Parameterblocks
gespeichert. Der KMAC-TDEA-128-Vorgang
wird in 10 gezeigt.
-
KMAC-TDES-192 (Funktionscode
3)
-
Die
Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen
den in 3 gezeigten.
-
Der
für die
Funktion KMAC-TDEA-192 verwendete Parameterblock hat das in 11 gezeigte Format.
-
Der
Nachrichten-Berechtigungsüberprüfungscode
für die
8-Byte-Nachrichtenblöcke (M1, M2,...,
Mn) im Operand 2 wird unter Verwendung des TDEA-Algorithmus mit
den drei 64-Bit-Verschlüsselungsschlüsseln und
dem 64-Bit-Verkettungswert im Parameterblock berechnet.
-
Der
auch als Ausgabeverkettungswert (OCV) bezeichnete Nachrichten-Berechtigungsüberprüfungscode
wird im Feld „Verkettungswert" des Parameterblocks
gespeichert. Der KMAC-TDEA-192-Vorgang
wird in 12 gezeigt.
-
Spezielle Bedingungen
für KMAC
-
Ein
Spezifikationsfehler wird erkannt und keine andere Maßnahme ergriffen,
falls eine der folgenden Bedingungen auftritt:
- 1.
Das Bit 56 des Allgemeinregisters 0 ist nicht null.
- 2. Die Bits 57 bis 63 des Allgemeinregisters 0 geben einen nichtzugewiesenen
oder nichtinstallierten Funktionscode an.
- 3. Das Feld R_ bezeichnet ein Register mit ungerader Nummerierung
oder das Allgemeinregister 0.
- 4. Die Länge
des zweiten Operanden ist kein Vielfaches der Datenblockgröße der bezeichneten Funktion
(siehe 7 -54 auf Seite 7–92 zur Ermittlung der Datenblockgröße für. Funktionen NACHRICHTEN-BERECHTIGUNGSÜBERPRÜFUNGSCODE
BERECHNEN).
-
Resultierender Bedingungscode:
-
-
- 0
- Normale Beendigung
- 1
- –
- 2
- –
- 3
- Teilweise Beendigung
-
Programmfehler:
-
- • Zugriff
(Abrufen, Operand 2, Verschlüsselungsschlüssel; Abrufen
und Speichern, Verkettungswert)
- • Vorgang
(falls die Nachrichtensicherheitsunterstützung (message security assist)
nicht installiert ist)
- • Spezifikation
-
Programmierhinweise:
-
- 1. Das Bit 56 des Allgemeinregisters 0 ist
für eine zukünftige Erweiterung
reserviert und muss auf null gesetzt werden.
- 2. Wenn der Bedingungscode 3 gesetzt ist, werden die Adresse
und die Länge
des zweiten Operanden in den Allgemeinregistern R2 bzw. R2 + 1 und
der Verkettungswert im Parameterblock normalerweise aktualisiert,
so dass das Programm einfach zurück
zum Befehl verzweigen kann, um den Vorgang fortzusetzen. Bei ungewöhnlichen Situationen
schützt
die CPU gegen ein endloses Wiederauftreten im Falle eines fehlenden
Fortschritts. Folglich kann das Programm bei jedem Setzen des Bedingungscodes
3 sicher zum Befehl zurück
verzweigen, ohne einer Endlosschleife ausgesetzt zu sein.
- 3. Falls die Länge
des zweiten Operanden anfänglich
verschieden von null ist und der Bedingungscode 0 gesetzt wird,
werden die Register auf dieselbe Weise aktualisiert wie beim Bedingungscode
3; der Verkettungswert ist in diesem Fall so, dass zusätzliche
Operanden verarbeitet werden können,
als wären
sie Teil derselben Kette.
- 4. Vor der Verarbeitung des ersten Teils einer Nachricht muss
das Programm die Anfangswerte für
das Feld „Verkettungswert" einstellen. Um ANSI
X9.9 oder X9.19 zu erfüllen,
muss der anfängliche
Verkettungswert auf binäre
Nullen gesetzt werden.
-
VERSCHLÜSSELUNGSCOPROZESSOR
(CRYPTO COPROCESSOR):
-
Die
bevorzugte Ausführungsform
stellt einen Verschlüsselungscoprozessor
bereit, der mit den hierin beschriebenen Befehlen sowie zur Ausführung chiffrierter
Nachrichten und zur Unterstützung
in einer Vielfalt von Verkettungsnachrichten-Tasks verwendet werden
kann, die mit den entsprechenden Befehlen für Verkettungen und Verschlüsselungen verwendet
werden können.
-
14 stellt
unseren Verschlüsselungscoprozessor
dar, der direkt mit einem Datenpfad verbunden ist, der allen internen
Ausführungseinheiten im
Universalmikroprozessor mit mehreren Befehlsausführungsketten (execution pipelines)
gemeinsam ist. Der interne Bus (1) des Mikroprozessors
ist allen anderen mit der Verschlüsselungssteuereinheit (2) verbundenen
Ausführungseinheiten
gemeinsam, und die Steuereinheit überwacht den Bus auf Prozessorbefehle,
die sie ausführen
muss.
-
Die
Verschlüsselungssteuereinheit
stellt einen Verschlüsselungscoprozessor
bereit, der direkt mit einem Datenpfad verbunden ist, der allen
internen Ausführungseinheiten
der Zentraleinheit in einem Universalmikroprozessor gemeinsamen
ist, der die verfügbare
Hardware (E0... En oder
eine Kombination davon in der bevorzugten Ausführungsform mit mehreren Befehlsausführungsketten)
für die
Zentraleinheit bereitstellt. Wenn ein Verschlüsselungsbefehl im Befehlsregister
(3) gefunden wird, ruft die Steuereinheit (2)
den entsprechenden Algorithmus aus der verfügbaren Hardware auf. Die Operandendaten werden über denselben
internen Mikroprozessorbus über
ein Eingabe-FIFO-Register (4) bereitgestellt. Wenn ein
Vorgang ausgeführt
worden ist, wird eine Markierung in einem Statusregister (6)
gesetzt, und die Ergebnisse können
aus dem Ausgabe-FIFO-Register (5) gelesen werden.
-
Die
dargestellte bevorzugte Ausführungsform
der vorliegenden Erfindung ist erweiterbar gestaltet, so dass sie
so viele Hardwareeinrichtungen aufnehmen kann, wie von einer bestimmten
Ausführung
in Abhängigkeit
von der gewünschten
Leistungsfähigkeit
des Systems benötigt
werden. Die Datenpfade zu den Eingangs- und Ausgangsregistern (7)
sind allen Einrichtungen gemeinsam.
-
Die
Verschlüsselungsfunktionen
der bevorzugten Ausführungsform
der Erfindung werden in der Ausführungseinheit-Hardware
in der CPU realisiert, und diese Realisierung ermöglicht eine
kürzere
Latenzzeit zum Aufrufen und Ausführen
von Verschlüsselungsvorgängen und
erhöht
die Leistungsfähigkeit.
-
Diese
verminderte Latenzzeit verbessert in hohem Maße die Funktionseigenschaften
von Universalprozessoren in Systemen, die häufig viele Verschlüsselungsvorgänge ausführen, insbesondere wenn
es sich nur um geringe Datenmengen handelt. Dies ermöglicht eine
Ausführung,
die die an sicheren Online-Transaktionen
beteiligten Prozesse deutlich beschleunigen kann. Die meisten allgemeinen
Verfahren zur Sicherung von Online-Transaktionen beinhalten einen
Satz von drei Algorithmen. Der erste Algorithmus wird nur einmal
in einer Sitzung verwendet und kann in Form von Hardware oder Software
realisiert werden, während
die anderen Vorgänge
mit jeder Transaktion der Sitzung aufgerufen werden, und die Latenzzeit
zum Aufrufen von externer Hardware sowie der Zeitaufwand zum Ausführen des
Software-Algorithmus entfallen bei dieser Erfindung.
-
In
15 wurde
konzeptionell die Realisierung dessen gezeigt, was in einer bevorzugten
Ausführungsform
in einem Großrechner
mit dem oben beschriebenen Mikroprozessor realisiert wurde, der, wie
wir innerhalb der IBM experimentell bewiesen haben, in einer handelsüblichen
Ausführung
des computerarchitekturdefinierten Befehlsformates der Einrichtung
mit langer Verschiebung (long displacement facility) wirkungsvoll
verwendet werden kann, wobei die Befehle von Programmierern verwendet
werden, heutzutage normalerweise von „C"-Programmierern. Diese im Speichermedium
gespeicherten Befehlsformate können
ursprünglich
in einem Server der IBM z/Architekur oder alternativ in Maschinen
mit anderen Architekturen ausgeführt
werden. Sie können
in den vorhandenen und in künftigen
IBM Großrechnern und
in anderen Maschinen von IBM (z.B. Server der pSerie und der xSerie)
emuliert werden. Sie können in
Maschinen mit dem Betriebsystem Linux in einer großen Vielfalt
von Maschinen unter Verwendung von Hardware von IBM, Intel, AMD,
Sun Microsystems u.a. ausgeführt
werden. Neben der Ausführung in
dieser Hardware in einer z/Architektur kann Linux ebenso verwendet
werden wie Maschinen, die eine Emulation von Hercules, UMX, FXI
oder Platform Solutions verwenden, wobei die Ausführung im
Allgemeinen in einem Emulationsmodus erfolgt. Im Emulationsmodus
wird der spezifische emulierte Befehl decodiert und eine Teilroutine
zum Ausführen
des einzelnen Befehls erstellt, wie in einer „C"-Teilroutine oder einem Treiber oder
in einem anderen Verfahren zur Bereitstellung eines Treibers für die spezifische Hardware,
wie Fachleute nach dem Lesen der Beschreibung der bevorzugten Ausführungsform
verstehen werden. Verschiedene Software- und Hardwareemulationspatente,
darunter – jedoch
nicht ausschließlich –
US 5 551 013 ,
US 6 009 261 ,
US 5 574 873 ,
US 6 308 255 ,
US 6 463 582 und
US 5 790 825 , veranschaulichen die
Vielfalt bekannter Möglichkeiten
zum Ausführen
einer Emulation eines Befehlsformates, dessen Architektur für eine andere
Maschine, für
eine für
Fachleute erhältliche
Zielmaschine sowie jene von den oben erwähnten Herstellern verwendeten
handelsüblichen
Softwareverfahren definiert wurde.
-
In
der bevorzugten Computerarchitektur bilden die bestehenden Befehlsformate
mit langer Verschiebung für
einen nichtsuperskalaren Befehl die Speicheradresse des Operanden
durch Addition des Basisregisters und der vorzeichenlosen 12-Bit-Verschiebung
(12 bit unsigned displacement) oder des Basisregisters, des Indexregisters
und der vorzeichenlosen 12-Bit-Verschiebung,
und die neuen Befehlsformate mit langer Verschiebung bilden die Speicheradresse
des Operanden durch das Addieren des Basisregisters und der vorzeichenbehafteten 20-Bit-Verschiebung
oder des Basisregisters, des Indexregisters und der vorzeichenbehafteten 20-Bit-Verschiebung.
-
Wie
durch 15 gezeigt wird, werden diese Befehle
in Hardware von einem Prozessor oder durch die Emulation des Befehlssatzes
durch Software ausgeführt,
die in einem Computer mit einem anderen ursprünglichen Befehlssatz ausgeführt wird.
-
In 15 wird
bei 501 ein Computerspeicher gezeigt, der Befehle und Daten
enthält.
Die in dieser Computerarchitektur beschriebenen Befehle mit langer
Verschiebung würden
anfangs in diesem Computer gespeichert. Bei 502 wird ein
Mechanismus zum Abrufen von Befehlen aus einem Computerspeicher gezeigt,
dies kann außerdem
die lokale Zwischenspeicherung dieser abgerufenen Befehle beinhalten. Anschließend werden
die unbearbeiteten Befehle an einen Befehlsdecodierer 503 übertragen,
wo festgestellt wird, welcher Typ von Befehl abgerufen wurde. Bei 504 wird
ein Mechanismus zum Ausführen
von Befehlen gezeigt. Dazu kann das Laden von Daten aus dem Speicher 501 in
ein Register, das Rückspeichern
von Daten aus einem Register in den Speicher oder das Ausführen eines
bestimmten Typs von arithmetischem oder logischem Vorgang gehören. Der genaue
Typ von auszuführendem
Vorgang wurde zuvor vom Befehlsdecodierer festgelegt. Die in dieser Computerarchitektur
beschriebenen Befehle mit langer Verschiebung würden hier ausgeführt werden. Falls
die Befehle mit langer Verschiebung in einem Computersystem ursprünglich ausgeführt werden,
ist diese Darstellung gemäß der obigen
Beschreibung vollständig.
Falls jedoch eine Befehlssatzarchitektur, die Befehle mit langer
Verschiebung enthält,
in einem anderen Computer emuliert wird, würde der obige Prozess in Form
von Software in einem Hostcomputer 505 realisiert werden.
In diesem Fall würde
der oben dargelegte Mechanismus normalerweise als eine oder mehrere
Software-Teilroutinen
innerhalb der Emulationssoftware realisiert werden. In beiden Fällen wird
ein Befehl abgerufen, decodiert und ausgeführt.
-
Insbesondere
können
diese architekturdefinierten Befehle in einer Computerarchitektur
mit vorhandenen Befehlsformaten mit einer vorzeichenlosen 12-Bit-Verschiebung,
die zum Bilden der Operandenspeicheradresse verwendet wird, sowie
in einer Architektur mit zusätzlichen
Befehlsformaten verwendet werden, die zusätzliche Verschiebungsbits bereitstellen,
vorzugsweise 20 Bits, die eine erweiterte vorzeichenbehaftete Verschiebung
(extended signed displacement) umfassen, die zum Bilden der Operandenspeicheradresse
verwendet wird. Diese computerarchitekturdefinierten Befehle umfassen
in einem Computerspeichermedium gespeicherte Computersoftware zum Erzeugen
des Codes, der in dem die Computersoftware verwendenden Prozessor ausgeführt wird,
und den Befehlscode zur Verwendung durch einen Compiler oder Emulator/Interpreter,
der in einem Computerspeichermedium 501 gespeichert ist,
und wobei der erste Teil des Befehlscodes einen Operationscode umfasst,
der den auszuführenden
Vorgang angibt, und der zweite Teil die beteiligten Operanden bezeichnet.
Die Befehle mit langer Verschiebung ermöglichen die direkte Adressierung
zusätzlicher
Adressen unter Verwendung der Einrichtung für Befehle mit langer Verschiebung.
-
Wie
in 15 gezeigt wird, werden diese Befehle in Hardware
von einem Prozessor oder durch die Emulation des Befehlssatzes durch
Software ausgeführt,
die in einem Computer mit einem anderen ursprünglichen Befehlssatz ausgeführt wird.
-
Gemäß der bevorzugten
Computerarchitektur wird das Verschiebungsfeld als zweiteilig definiert, wobei
der aus 12 Bits bestehende niedrigstwertige Teil als DL bezeichnet
wird, DL1 für
den Operand 1 oder DL2 für
den Operand 2, und der aus 8 Bits bestehende höchstwertige Teil als DH bezeichnet
wird, DH1 für
den Operand 1 oder DH2 für
den Operand 2.
-
Außerdem weist
die bevorzugte Computerarchitektur das folgende Befehlsformat auf:
der Operationscode befindet sich in den Bitpositionen 0 bis 7 und
40 bis 47, ein als R1 bezeichnetes Zielregister in den Bitpositionen
8 bis 11, ein als X2 bezeichnetes Indexregister in den Bitpositionen
12 bis 15, ein als B2 bezeichnetes Basisregister in den Bitpositionen 16
bis 19, eine aus zwei Teilen bestehende Verschiebung, wobei der
erste als DL2 bezeichnete Teil sich in den Bitpositionen 20 bis
31 und der als DH2 bezeichnete Teil sich in den Bitpositionen 32
bis 39 befindet.
-
Diese
Computerarchitektur hat das folgende Befehlsformat: der Operationscode
befindet sich in den Bitpositionen 0 bis 7 und 40 bis 47, ein als
R1 bezeichnetes Zielregister in den Bitpositionen 8 bis 11, ein
als R3 bezeichnetes Quellenregister in den Bitpositionen 12 bis
15, ein als B2 bezeichnetes Basisregister in den Bitpositionen 16
bis 19, eine aus zwei Teilen bestehende Verschiebung, wobei der
erste als DL2 bezeichnete Teil sich in den Bitpositionen 20 bis 31
und der als DH2 bezeichnete Teil sich in den Bitpositionen 32 bis
39 befindet.
-
Außerdem weist
die vorliegende Computerarchitektur mit einer Einrichtung für lange
Verschiebung das folgende Befehlsformat auf: der Operationscode
befindet sich in den Bitpositionen 0 bis 7 und 40 bis 47, ein als
R1 bezeichnetes Zielregister in den Bitpositionen 8 bis 11, ein
als M3 bezeichneter Maskenwert (mask value) in den Bitpositionen
12 bis 15, ein als B2 bezeichnetes Basisregister in den Bitpositionen
16 bis 19, eine aus zwei Teilen bestehende Verschiebung, wobei der
erste als DL2 bezeichnete Teil sich in den Bitpositionen 20 bis
31 und der als DH2 bezeichnete Teil sich in den Bitpositionen 32
bis 39 befindet.
-
Wie
dargestellt wird, hat unsere bevorzugte Computerarchitektur mit
ihrer Einrichtung für
lange Verschiebung das folgende Befehlsformat: der Operationscode
befindet sich in den Bitpositionen 0 bis 7 und 40 bis 47, ein als
I2 bezeichneter Direktwert (immediate value) in den Bitpositionen
8 bis 15, ein als B2 bezeichnetes Basisregister in den Bitpositionen 16
bis 19, eine aus zwei Teilen bestehende Verschiebung, wobei der
erste als DL1 bezeichnete Teil sich in den Bitpositionen 20 bis
31 und der als DH1 bezeichnete Teil sich in den Bitpositionen 32
bis 39 befindet.
-
Unsere
Computerarchitektur mit der Einrichtung für lange Verschiebung arbeitet
leistungsfähig, wenn
neu erzeugte Befehle verwendet werden, die ausschließlich das
Befehlsformat mit der neuen vorzeichenlosen 20-Bit-Verschiebung
verwenden.
-
Ein
spezifisches Beispiel unserer Computerarchitektur verwendet vorhandene
Befehle mit Befehlsformaten, die nur die vorzeichenlose 12-Bit-Verschiebung
aufweisen und nun in den neuen Befehlsformaten definiert werden,
so dass sie den vorhandenen vorzeichenlosen 12-Bit-Verschiebungswert
aufweisen, wenn die 8 höchstwertigen
Bits der Verschiebung, Feld DH, alle null sind, oder einen vorzeichenbehafteten
20-Bit-Wert aufweisen,
wenn die höchstwertigen
8 Bits der Verschiebung, Feld DH, verschieden von null sind.