-
Diese
Erfindung betrifft eine Computersystemarchitektur und insbesondere
die Verarbeitung neuer 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.
-
Die
Quellenangabe „IBM
PCI Cryptographic Coprocessor CCA Basic Services Reference and Guide
for IBM Models 002 and 023 with Release 2.40" [Online] September 2001, International
Business Machines Corporation, Charlotte, NC 28262-8563 USA, XP002291430
Abruf aus dem Internet: URL: http://www.zoneh.org/files/33/CCA_Bas ic_Services_240.pdf>, beschreibt die allgemeine Verschlüsselungsarchitektur
von IBM.
-
Die
Quellenangabe WU L. et al: „CryptoManiac:
a fast flexible architecture for secure communication", PROCEEDINGS OF
THE 28TH. INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE, ISCA
2001, Göteborg,
Schweden, 30. Juni bis 4. Juli 2001, INTERNATIONAL SYMPOSIUM ON COMPUTER
ARCHITECTURE (ISCA), Los Alamitos, Kalifornien, IEEE COMP. SOC,
USA, 30. Juni 2001, Seiten 104 bis 113, XP010553867 ISBN: 0-7695-1162-7,
beschreibt einen Verschlüsselungsmikroprozessor
gemäß der Einleitung
von Anspruch 1.
-
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.
-
Die
vorliegende Erfindung stellt ein Verfahren, wie es in Anspruch 1
beansprucht wird, und ein entsprechendes Computerprogramm und eine
Vorrichtung bereit, wie sie in den Ansprüchen 6 bzw. 7 beansprucht werden.
-
Die
Merkmale der bevorzugten Ausführungsformen
der Erfindung gehen für
Fachleute aus der folgenden ausführlichen
Beschreibung der Erfindung in Verbindung mit den begleitenden Zeichnungen hervor,
in denen:
-
1 der
Befehl „Nachricht
verschlüsseln" (Cipher Message – KM) im
RRE-Befehlsformat ist;
-
2 der
Befehl „Nachricht
verschlüsseln mit
Verkettung" (Cipher
Message with Chaining – KMC)
im RRE-Befehlsformat
ist;
-
3 eine
Tabelle ist, die die Funktionscodes für den Befehl „Nachricht
verschlüsseln" von 1 zeigt;
-
4 eine
Tabelle ist, die die Funktionscodes für den Befehl „Nachricht
verschlüsseln
mit Verkettung" von 2 zeigt;
-
5 eine
Darstellung der Allgemeinregisterzuordnungen für den KM- und den KMC-Befehl
ist;
-
6 das
Symbol für
die binäre
EXKLUSIV-ODER-Verknüpfung
(Bit-Wise Exclusive Or) darstellt;
-
7 die
Symbole für
die DEA-Verschlüsselung
und -Entschlüsselung
darstellt;
-
8 das
Format für
den Parameterblock der KM-Abfrage darstellt;
-
9 den
Parameterblock für
KM-DEA darstellt;
-
10 den
KM-DEA-Verschlüsselungsvorgang
(KM-DEA Encipher Operation) darstellt;
-
11 den
KM-DEA-Entschlüsselungsvorgang
darstellt;
-
12 das
Format für
den Parameterblock für
KM-TDA-128 darstellt;
-
13 den
KM-TDEA-128-Verschlüsselungsvorgang
darstellt;
-
14 den
KM-TDEA-128-Entschlüsselungsvorgang
darstellt;
-
15 das
Format für
den Parameterblock für
KM-TDEA-192 darstellt;
-
16 den
KM-TDEA-192-Verschlüsselungsvorgang
darstellt;
-
17 den
KM-TDEA-192-Entschlüsselungsvorgang
darstellt;
-
18 das
Format für
den Parameterblock für
eine KMC-Abfrage darstellt;
-
19 das
Format für
den Parameterblock für
KMC-DEA darstellt;
-
20 den
KMC-DEA-Verschlüsselungsvorgang
darstellt;
-
21 den
KMC-DEA-Entschlüsselungsvorgang
darstellt;
-
22 das
Format für
den Parameterblock für
KMC-TDEA-128 darstellt;
-
23 den
KM-TDEA-128-Verschlüsselungsvorgang
darstellt;
-
24 den
KM-TDEA-128-Entschlüsselungsvorgang
darstellt;
-
25 das
Format für
den Parameterblock für
KMC-TDEA-128 darstellt;
-
26 den
KMC-TDEA-192-Verschlüsselungsvorgang
darstellt;
-
27 den
KMC-TDEA-192-Entschlüsselungsvorgang
darstellt;
-
28 eine
Tabelle ist, die die Ausführungspriorität von KM
und KMC zeigt;
-
29 unseren
Verschlüsselungscoprozessor
veranschaulicht; und
-
30 die
verallgemeinerte bevorzugte Ausführungsform
eines Computerspeichers zeigt, der Befehle gemäß der bevorzugten Ausführungsform
und Daten sowie den Mechanismus zum Abrufen, Decodieren und Ausführen dieser
Befehle enthält,
entweder in einem diese architekturdefinierten Befehle verwendenden
Computersystem oder wie sie in der Emulation unserer architekturdefinierten Befehle
verwendet wird.
-
Der
Befehl NACHRICHT VERSCHLÜSSELN
(CIPHER MESSAGE – KM)
und der Befehl NACHRICHT VERSCHLÜSSELN
MIT VERKETTUNG (CIPHER MESSAGE WITH CHAINING – KMC) werden als Erstes erläutert, gefolgt
von einer Erläuterung
des bevorzugten Computersystems zum Ausführen dieser Befehle. Alternativ
wird ein zweites bevorzugtes Computersystem erläutert, das ein anderes Computersystem
zum Ausführen
dieser Befehle emuliert.
-
NACHRICHT VERSCHLÜSSELN (KM)
-
1 ist
der Befehl „Nachricht
verschlüsseln" (KM) im RRE-Befehlsformat.
-
NACHRICHT VERSCHLÜSSELN MIT
VERKETTUNG (KMC)
-
2 ist
der Befehl „Nachricht
verschlüsseln mit
Verkettung" (KMC)
im RRE-Befehlsformat.
-
Eine
durch den Funktionscode im Allgemeinregister 0 angegebene Funktion
wird ausgeführt.
-
Die
Bits 16 bis 23 des Befehls werden ignoriert. Die Bitpositionen 57
bis 63 des Allgemeinregisters 0 enthalten den Funktionscode. Die 3 und 4 zeigen
die zugeordneten Funktionscodes für NACHRICHT VERSCHLÜSSELN bzw.
NACHRICHT VERSCHLÜSSELN
MIT VERKETTUNG. Alle anderen Funktionscodes werden nicht zugeordnet.
Bei Verschlüsselungsfunktionen
ist das Bit 56 das Änderungsbit
(modifier bit), das angibt, ob ein Verschlüsselungs- oder ein Entschlüsselungsvorgang
ausgeführt
werden muss. Das Änderungsbit
wird für
alle anderen Funktionen ignoriert. Alle anderen Bits des Allgemeinregisters
0 werden ignoriert. Das Allgemeinregister 1 enthält die logische Adresse des höchstwertigen
Bytes des Parameterblock 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.
-
Die
Funktionscodes für
NACHRICHT VERSCHLÜSSELN
werden in 3 gezeigt.
-
Die
Funktionscodes für
NACHRICHT VERSCHLÜSSELN
MIT VERKETTUNG werden in 4 gezeigt.
-
Alle
anderen Funktionscodes werden nicht zugeordnet. Die Abfragefunktion
stellt das Mittel zum Angeben der Verfügbarkeit der anderen Funktionen bereit.
Der Inhalt der Allgemeinregister R1, R2 und R1 + 1 wird für die Abfragefunktion
ignoriert.
-
Für alle anderen
Funktionen wird der zweite Operand verschlüsselt, wie durch den Funktionscode angegeben
wird, wobei ein Verschlüsselungsschlüssel im
Parameterblock verwendet wird, und das Ergebnis an der Position
des ersten Operanden platziert. Bei NACHRICHT VERSCHLÜSSELN MIT VERKETTUNG
verwendet die Verschlüsselung
außerdem
einen anfänglichen
Verkettungswert im Parameterblock, und der Verkettungswert wird
als Teil des Vorgangs aktualisiert.
-
Das
Feld R1 bezeichnet ein Allgemeinregister und muss ein Register mit
einer geraden Nummerierung bezeichnen; andernfalls wird ein Spezifikationsfehler
erkannt.
-
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 ersten und zweiten Operanden wird durch den Inhalt der
Allgemeinregister R1 bzw. R2 angegeben. Die Anzahl von Bytes an
der Position des zweiten Operanden wird im Allgemeinregister R2
+ 1 angegeben. Der erste Operand hat dieselbe Länge wie der zweite Operand.
-
Als
Teil des Vorgangs werden die Adressen in den Allgemeinregistern
R1 und R2 um die Anzahl der verarbeiteten Bytes erhöht, und
die Länge
im Allgemeinregister R2 + 1 wird um die gleiche Anzahl vermindert.
Die Bildung und Aktualisierung der Adressen und der Länge sind
abhängig
vom Adressiermodus.
-
Im
24-Bit-Adressiermodus bildet der Inhalt der Bitpositionen 40 bis
63 der Allgemeinregisters R1 und R2 die Adresse des ersten bzw.
zweiten Operanden, und der Inhalt der Bitpositionen 0 bis 39 wird
ignoriert; die Bits 40 bis 63 der aktualisierten Adressen ersetzen
die entsprechenden Bits in den Allgemeinregistern R1 und R2, Übertragausgaben
(carries out) der Bitposition 40 der aktualisierten Adresse werden ignoriert,
und der Inhalt der Bitpositionen 32 bis 39 der Allgemeinregister
R1 und R2 wird auf null gesetzt. Im 31-Bit-Adressiermodus bildet der Inhalt der Bitpositionen
33 bis 63 der Allgemeinregister R1 und R2 die Adresse des ersten
bzw. zweiten Operanden, und der Inhalt der Bitpositionen 0 bis 32
wird ignoriert; die Bits 33 bis 63 der aktualisierten Adressen ersetzen
die entsprechenden Bits in den Allgemeinregistern R1 und R2, Übertragausgaben
der Bitposition 33 der aktualisierten Adressen werden ignoriert,
und der Inhalt der Bitposition 32 der Allgemeinregister R1 und R2
wird auf null gesetzt. Im 64-Bit-Adressiermodus
bildet der Inhalt der Bitpositionen 0 bis 63 der Allgemeinregister
R1 und R2 die Adresse des ersten bzw. zweiten Operanden; die Bits
0 bis 63 der aktualisierten Adressen ersetzen den Inhalt der Allgemeinregister
R1 und R2, und Übertragausgaben
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 ersten und zweiten Operanden angibt, und der Inhalt
der Bitpositionen 0 bis 31 wird ignoriert; die Bits 32 bis 63 des
aktualisierten Wertes ersetzen die entsprechenden Bits im Allgemeinregister
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 ersten und 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 R1, R2 und R2 + 1 stets unverändert. 5 zeigt
den Inhalt der gerade beschriebenen Allgemeinregister.
-
Im
Zugriffsregistermodus (access-register mode) geben die Zugriffsregister
1, R1 und R2 die Adressbereiche an, die den Parameterblock und den ersten
bzw. zweiten Operanden enthalten.
-
Das
Ergebnis wird erhalten, als ob die Verarbeitung auf der linken Seite
sowohl des ersten als auch des zweiten Operanden beginnt und Block
für Block
nach rechts weitergeht. Der Vorgang ist beendet, wenn die Anzahl
von Bytes im zweiten Operanden gemäß der Angabe im Allgemeinregister
R2 + 1 verarbeitet und an der Position des ersten Operanden platziert
wurde (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.
-
Die
Ergebnisse an der Position des ersten Operanden und im Verkettungsfeld
sind nicht vorhersehbar, falls eine der folgende Situationen auftritt:
- 1. Das Feld des Verschlüsselungsschlüssels überlagert
einen Teil des ersten Operanden.
- 2. Das Verkettungswertfeld überlagert
einen Teil des ersten Operanden oder des zweiten Operanden.
- 3. Der erste und der zweite Operand überlappen sich unzulässig. Operanden überlappen
sich unzulässig,
wenn die Position des ersten Operanden als eine Quelle verwendet
würde,
nachdem Daten in diesen übertragen
worden wären,
unter der Voraussetzung, dass die Verarbeitung von links nach rechts
und Byte pro Byte ausgeführt
werden muss.
-
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
ein PER-Speicheränderungsereignis erkannt
wird, werden weniger als 4 Kilobyte zusätzliche Bytes in die Positionen
der ersten Operanden gespeichert, bevor das Ereignis gemeldet wird.
-
Wenn
die Länge
des zweiten Operanden anfänglich
null ist, wird auf den Parameterblock, den ersten und den zweiten
Operanden nicht zugegriffen, die Allgemeinregister R1, R2 und R2
+ 1 werden nicht geändert,
und der Bedingungscode 0 wird gesetzt.
-
Wenn
der Inhalt der Felder R1 und R2 gleich ist, wird der Inhalt der
bezeichneten Register nur um die Anzahl von verarbeiteten Bytes
und nicht um die doppelte Anzahl verarbeiteter Bytes erhöht.
-
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.
-
In
bestimmten ungewöhnlichen
Situationen kann die Befehlsausführung
durch Setzen des Bedingungscodes 3 beendet werden, ohne die Register und
den Verkettungswert zu aktualisieren, um die letzte verarbeitete
Einheit des ersten und zweiten Operanden widerzuspiegeln. Die Größe der verarbeiteten
Einheit hängt
in diesem Fall von der Situation und dem Modell ab, ist jedoch so
begrenzt, dass die Teile des ersten und zweiten Operanden, die verarbeitet
und nicht gemeldet wurden, sich im Speicher nicht überlappen.
In allen Fällen
werden Änderungsbits
gesetzt und gegebenenfalls PER-Speicheränderungsereignisse
für alle
verarbeiteten Positionen des ersten Operanden gemeldet.
-
Zugriffsfehler
können
für einen
größeren Teil eines
Operanden gemeldet werden, als in einer einzigen Ausführung des
Befehls verarbeitet wird; Zugriffsfehler werden jedoch weder für Positionen
erkannt, die über
die Länge
eines Operanden hinausgehen, noch für Positionen, die um mehr als
4 Kilobyte über
die gerade verarbeitete Position hinausgehen.
-
In Funktionsbeschreibungen
verwendete Symbole
-
Die
folgenden Symbole werden in der nachfolgenden Beschreibung der Funktionen
NACHRICHT VERSCHLÜSSELN
und NACHRICHT VERSCHLÜSSELN
MIT VERKETTUNG verwendet. Für Datenverschlüsselungsalgorithmus-Funktionen
(data-encryption-algorithm
(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.
-
6 stellt
das Symbol für
die binäre
Exklusiv-ODER-Verknüpfung dar, 7 stellt
die Symbole für
die DEA-Verschlüsselung
und -Entschlüsselung dar.
-
KM-Abfrage (KM-Funktionscode
0)
-
Die
Positionen der vom Befehl verwendeten Operanden und Adressen werden
in 5 gezeigt.
-
Der
für die
KM-Abfragefunktion verwendete Parameterblock hat das in 8 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 Befehls NACHRICHT VERSCHLÜSSELN. 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 KM-Abfragefunktion beendet
ist; der Bedingungscode 3 kann auf diese Funktion nicht angewandt
werden.
-
KM-DEA (KM-Funktionscode
1)
-
Die
Positionen der vom Befehl verwendeten Operanden und Adressen werden
in 5 gezeigt.
-
Der
für die
Funktion KM-DEA verwendete Parameterblock hat das in 9 gezeigte
Format.
-
Wenn
das Änderungsbit
im Allgemeinregister 0 null ist, wird ein Verschlüsselungsvorgang
ausgeführt.
Die 8-Byte-Blöcke
aus unverschlüsseltem Text
(P1, P2, ..., Pn) im Operand 2 werden unter Verwendung des DEA-Algorithmus
mit dem 64-Bit-Verschlüsselungsschlüssel im
Parameterblock verschlüsselt.
Jeder Block aus unverschlüsseltem
Text wird unabhängig verschlüsselt; das
heißt,
der Verschlüsselungsvorgang
wird ohne Verkettung ausgeführt.
Die Blöcke
aus verschlüsseltem
Text (C1, C2, ..., Cn) werden im Operand 1 gespeichert. Der Vorgang
wird in 10 gezeigt.
-
Wenn
das Änderungsbit
im Allgemeinregister 0 eins ist, wird ein Entschlüsselungsvorgang
ausgeführt.
Die 8-Byte-Blöcke
aus verschlüsseltem
Text (C1, C2, ..., Cn) im Operand 2 werden unter Verwendung des
DEA-Algorithmus mit dem 64-Bit-Verschlüsselungsschlüssel im
Parameterblock entschlüsselt.
Jeder Block aus verschlüsseltem
Text wird unabhängig
entschlüsselt;
das heißt,
der Entschlüsselungsvorgang
wird ohne Verkettung ausgeführt.
Die Blöcke
aus entschlüsseltem
Text (P1, P2, ..., Pn) werden im Operand 1 gespeichert. Der KM-DEA-Entschlüsselungsvorgang
wird in 11 gezeigt.
-
KM-TDEA-128 (KM-Funktionscode
2)
-
Die
Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen
den in 5 gezeigten. Der für die Funktion KM-TDEA-128
verwendete Parameterblock wird in 12 gezeigt.
-
Wenn
das Änderungsbit
im Allgemeinregister 0 null ist, wird ein Verschlüsselungsvorgang
ausgeführt.
Die 8-Byte-Blöcke
aus unverschlüsseltem Text
(P1, P2, ..., Pn) im Operand 2 werden unter Verwendung des TDEA-(Dreifach-DEA-)Algorithmus
mit den beiden 64-Bit-Verschlüsselungsschlüsseln im Parameterblock
verschlüsselt.
Jeder Block aus unverschlüsseltem
Text wird unabhängig
verschlüsselt; das
heißt,
der Verschlüsselungsvorgang
wird ohne Verkettung ausgeführt.
Die Blöcke
aus verschlüsseltem
Text (C1, C2, ..., Cn) werden im Operand 1 gespeichert. Der KM-TDEA-128-Verschlüsselungsvorgang
wird in 13 gezeigt.
-
Wenn
das Änderungsbit
im Allgemeinregister 0 eins ist, wird ein Entschlüsselungsvorgang
ausgeführt.
Die 8-Byte-Blöcke
aus verschlüsseltem
Text (C1, C2, ..., Cn) im Operand 2 werden unter Verwendung des
TDEA-Algorithmus mit den beiden 64-Bit-Verschlüsselungsschlüsseln im
Parameterblock entschlüsselt.
Jeder Block aus verschlüsseltem Text
wird unabhängig
entschlüsselt;
das heißt,
der Entschlüsselungsvorgang
wird ohne Verkettung ausgeführt.
Die Blöcke
aus entschlüsseltem
Text (P1, P2, ..., Pn) werden im Operand 1 gespeichert. Der KM-TDEA-128-Entschlüsselungsvorgang
wird in 14 gezeigt.
-
KM-TDEA-192 (KM-Funktionscode
3)
-
Die
Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen
den in 5 gezeigten.
-
Der
für die
Funktion KM-TDEA-192 verwendete Parameterblock hat das in 15 gezeigte
Format.
-
Wenn
das Änderungsbit
im Allgemeinregister 0 null ist, wird ein Verschlüsselungsvorgang
ausgeführt.
Die 8-Byte-Blöcke
aus unverschlüsseltem Text
(P1, P2, ..., Pn) im Operand 2 werden unter Verwendung des TDEA-Algorithmus
mit den drei 64-Bit-Verschlüsselungsschlüsseln im
Parameterblock verschlüsselt.
Jeder Block aus unverschlüsseltem
Text wird unabhängig
verschlüsselt;
das heißt, der
Verschlüsselungsvorgang
wird ohne Verkettung ausgeführt.
Die Blöcke
aus verschlüsseltem
Text (C1, C2, ..., Cn) werden im Operand 1 gespeichert. Der KM-TDEA-192-Verschlüsselungsvorgang
wird in 16 gezeigt.
-
Wenn
das Änderungsbit
im Allgemeinregister 0 eins ist, wird ein Entschlüsselungsvorgang
ausgeführt.
Die 8-Byte-Blöcke
aus verschlüsseltem
Text (C1, C2, ..., Cn) im Operand 2 werden unter Verwendung des
TDEA-Algorithmus mit den drei 64-Bit-Verschlüsselungsschlüsseln im
Parameterblock entschlüsselt.
Jeder Block aus verschlüsseltem
Text wird unabhängig
entschlüsselt;
das heißt,
der Entschlüsselungsvorgang
wird ohne Verkettung ausgeführt.
Die Blöcke
aus entschlüsseltem
Text (P1, P2, ..., Pn) werden im Operand 1 gespeichert. Der KM-TDEA-192-Entschlüsselungsvorgang
wird in 17 gezeigt.
-
KMC-Abfrage (KMC-Funktionscode
0)
-
Die
Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen
den in 5 gezeigten.
-
Der
für die
KMC-Abfragefunktion verwendete Parameterblock hat das in 18 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 Befehls NACHRICHT VERSCHLÜSSELN MIT VERKETTUNG. 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 KMC-Abfragefunktion
beendet ist; der Bedingungscode 3 kann auf diese Funktion nicht
angewandt werden.
-
KMC-DEA (KMC-Funktionscode
1)
-
Die
Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen
den in 5 gezeigten.
-
Der
für die
KMC-DEA-Funktion verwendete Parameterblock hat das in 19 gezeigte
Format.
-
Wenn
das Änderungsbit
im Allgemeinregister 0 null ist, wird ein Verschlüsselungsvorgang
ausgeführt.
Die 8-Byte-Blöcke
aus unverschlüsseltem Text
(P1, P2, ..., Pn) im Operand 2 werden unter Verwendung des DEA-Algorithmus
mit dem 64-Bit-Verschlüsselungsschlüssel und
dem 64-Bit-Verkettungswert im Parameterblock verschlüsselt.
-
Der
als anfänglicher
Verkettungswert (initial chaining value – ICV) bezeichnete Verkettungswert zum
Ableiten des ersten Blocks aus verschlüsseltem Text ist der Verkettungswert
im Parameterblock; der Verkettungswert zum Ableiten jedes nachfolgenden Blocks
aus verschlüsseltem
Text ist der entsprechende vorhergehende Block aus verschlüsseltem
Text. Die Blöcke
aus verschlüsseltem
Text (C1, C2, ..., Cn) werden im Operand 1 gespeichert. Der letzte
Block aus verschlüsseltem
Text ist der Ausgabeverkettungswert (output chaining value – OCV) und
wird im Verkettungswert-Feld des Parameterblocks gespeichert. Der
KMC-DEA-Verschlüsselungsvorgang
wird in 20 gezeigt.
-
Wenn
das Änderungsbit
im Allgemeinregister 0 eins ist, wird ein Entschlüsselungsvorgang
ausgeführt.
Die 8-Byte-Blöcke
aus verschlüsseltem
Text (C1, C2, ..., Cn) im Operand 2 werden unter Verwendung des
DEA-Algorithmus mit dem 64-Bit- Verschlüsselungsschlüssel und
dem 64-Bit-Verkettungswert im Parameterblock entschlüsselt.
-
Der
als anfänglicher
Verkettungswert (ICV) bezeichnete Verkettungswert zum Ableiten des
ersten Blocks aus unverschlüsseltem
Text befindet sich im Parameterblock; der Verkettungswert zum Ableiten
jedes nachfolgenden Blocks aus unverschlüsseltem Text ist der entsprechende
vorhergehende Block aus verschlüsseltem
Text. Die Blöcke
aus unverschlüsseltem
Text (P1, P2, ..., Pn) werden im Operand 1 gespeichert. Der letzte
Block aus verschlüsseltem
Text ist der Ausgabeverkettungswert (OCV) und wird im Verkettungswert-Feld
im Parameterblock gespeichert. Der KMC-DEA-Entschlüsselungsvorgang wird in 21 gezeigt.
-
KMC-TDEA-128 (KMC-Funktionscode
2)
-
Die
Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen
den in 5 gezeigten.
-
Der
für die
KMC-TDER-128-Funktion verwendete Parameterblock hat das in 22 gezeigte Format.
-
Wenn
das Änderungsbit
im Allgemeinregister 0 null ist, wird ein Verschlüsselungsvorgang
ausgeführt.
Die 8-Byte-Blöcke
aus unverschlüsseltem Text
(P1, P2, ..., Pn) im Operand 2 werden unter Verwendung des TDEA-Algorithmus
mit den beiden 64-Bit-Verschlüsselungsschlüsseln und
dem 64-Bit-Verkettungswert im Parameterblock verschlüsselt.
-
Der
als anfänglicher
Verkettungswert (ICV) bezeichnete Verkettungswert zum Ableiten des
ersten Blocks aus verschlüsseltem
Text ist der Verkettungswert im Parameterblock; der Verkettungswert zum
Ableiten jedes nachfolgenden Blocks aus verschlüsseltem Text ist der entsprechende
vorhergehende Block aus verschlüsseltem
Text. Die Blöcke aus
verschlüsseltem
Text (Cl, C2, ..., Cn) werden im Operand 1 gespeichert. Der letzte
Block aus verschlüsseltem
Text ist der Ausgabeverkettungswert (OCV) und wird im Verkettungswert-Feld
des Parameterblocks gespeichert. Der KMC-TDEA-128-Verschlüsselungsvorgang wird in 23 gezeigt.
-
Wenn
das Änderungsbit
im Allgemeinregister 0 eins ist, wird ein Entschlüsselungsvorgang
ausgeführt.
Die 8-Byte-Blöcke
aus verschlüsseltem
Text (C1, C2, ..., Cn) im Operand 2 werden unter Verwendung des
TDEA-Algorithmus mit den beiden 64-Bit-Verschlüsselungsschlüsseln und
dem 64-Bit-Verkettungswert im Parameterblock entschlüsselt.
-
Der
als anfänglicher
Verkettungswert (ICV) bezeichnete Verkettungswert zum Ableiten des
ersten Blocks aus unverschlüsseltem
Text befindet sich im Parameterblock; der Verkettungswert zum Ableiten
jedes nachfolgenden Blocks aus unverschlüsseltem Text ist der entsprechende
vorhergehende Block aus verschlüsseltem
Text. Die Blöcke
aus unverschlüsseltem
Text (P1, P2, ..., Pn) werden im Operand 1 gespeichert. Der letzte
Block aus verschlüsseltem
Text ist der Ausgabeverkettungswert (OCV) und wird im Verkettungswert-Feld
im Parameterblock gespeichert. Der KMC-TDEA-128-Entschlüsselungsvorgang wird in 24 gezeigt.
-
KMC-TDEA-192 (KMC-Funktionscode
3)
-
Die
Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen
den in 5 gezeigten.
-
Der
für die
Funktion KMC-TDEA-192 verwendete Parameterblock hat das in 25 gezeigte Format.
-
Wenn
das Änderungsbit
im Allgemeinregister 0 null ist, wird ein Verschlüsselungsvorgang
ausgeführt.
Die 8-Byte-Blöcke
aus unverschlüsseltem Text
(P1, P2, ..., Pn) im Operand 2 werden unter Verwendung des TDEA-Algorithmus
mit den drei 64-Bit-Verschlüsselungsschlüsseln und
dem 64-Bit-Verkettungswert im Parameterblock verschlüsselt.
-
Der
als anfänglicher
Verkettungswert (ICV) bezeichnete Verkettungswert zum Ableiten des
ersten Blocks aus verschlüsseltem
Text ist der Verkettungswert im Parameterblock; der Verkettungswert zum
Ableiten jedes nachfolgenden Blocks aus verschlüsseltem Text ist der entsprechende
vorhergehende Block aus verschlüsseltem
Text. Die Blöcke aus
verschlüsseltem
Text (C1, C2, ..., Cn) werden im Operand 1 gespeichert. Der letzte
Block aus verschlüsseltem
Text ist der Ausgabeverkettungswert (OCV) und wird im Verkettungswert-Feld
des Parameterblocks gespeichert. Der KMC-TDEA-192-Verschlüsselungsvorgang wird in 26 gezeigt.
-
Wenn
das Änderungsbit
im Allgemeinregister 0 eins ist, wird ein Entschlüsselungsvorgang
ausgeführt.
Die 8-Byte-Blöcke
aus verschlüsseltem
Text (C1, C2, ..., Cn) im Operand 2 werden unter Verwendung des
TDEA-Algorithmus mit den drei 64-Bit-Verschlüsselungsschlüsseln und
dem 64-Bit-Verkettungswert im Parameterblock entschlüsselt.
-
Der
als anfänglicher
Verkettungswert (ICV) bezeichnete Verkettungswert zum Ableiten des
ersten Blocks aus unverschlüsseltem
Text befindet sich im Parameterblock; der Verkettungswert zum Ableiten
jedes nachfolgenden Blocks aus unverschlüsseltem Text ist der entsprechende
vorhergehende Block aus verschlüsseltem
Text. Die Blöcke
aus unverschlüsseltem
Text (P1, P2, ..., Pn) werden im Operand 1 gespeichert. Der letzte
Block aus verschlüsseltem
Text ist der Ausgabeverkettungswert (OCV) und wird im Verkettungswert-Feld
im Parameterblock gespeichert. Der KMC-TDEA-192-Entschlüsselungsvorgang wird in 27 gezeigt.
-
Spezielle
Bedingungen für
KM und KMC
-
Ein
Spezifikationsfehler wird erkannt und keine andere Maßnahme ergriffen,
falls eine der folgenden Bedingungen auftritt:
- 1.
Die Bits 57 bis 63 des Allgemeinregisters 0 geben einen nichtzugewiesenen
oder nichtinstallierten Funktionscode an.
- 2. Das Feld R1 oder R2 bezeichnet ein Register mit ungerader
Nummerierung oder das Allgemeinregister 0.
- 3. Die Länge
des zweiten Operanden ist kein Vielfaches der Datenblockgröße der bezeichneten Funktion
(siehe 7–3 auf
Seite 7–35
zur Ermittlung der Datenblockgrößen für Funktionen NACHRICHTEN
VERSCHLÜSSELN;
siehe 7–4 auf
Seite 7–35
zur Ermittlung der Datenblockgrößen für Funktionen
NACHRICHTEN VERSCHLÜSSELN
MIT VERKETTUNG). Diese Spezifikationsfehler-Bedingung kann nicht auf
die Abfragefunktionen angewandt werden.
-
Resultierender Bedingungscode:
-
- 0 Normale Beendigung
- 1 –
- 2 –
- 3 Teilweise Beendigung
-
Programmfehler:
-
- • Zugriff
(Abrufen, Operand 2 und Verschlüsselungsschlüssel; Speichern,
Operand 1; Abrufen und Speichern, Verkettungswert)
- • Vorgang
(falls die Nachrichtensicherheitsunterstützung (message security assist)
nicht installiert ist)
- • Spezifikation
-
28 ist
eine Tabelle, die die Ausführungspriorität von KM
und KMC zeigt.
-
Programmierhinweise:
-
- 1. Wenn der Bedingungscode 3 gesetzt ist, werden
die die Operandenadressen und -länge
enthaltenden Allgemeinregister sowie bei NACHRICHT VERSCHLÜSSELN MIT
VERKETTUNG 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 und schützt
auch vor dem Setzen des Bedingungscodes 3, wenn die erneut zu verarbeitenden Teile
des ersten und zweiten Operanden sich im Speicher überlappen. Folglich
kann das Programm bei jedem Setzen des Bedingungscodes 3 sicher
zum Befehl zurück verzweigen,
ohne einer Endlosschleife oder eines fehlerhaften erneuten Versuchs
des Befehls ausgesetzt zu sein.
- 2. 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. Bei NACHRICHT VERSCHLÜSSELN
MIT VERKETTUNG ist der Verkettungswert in diesem Fall so, dass zusätzliche
Operanden verarbeitet werden können,
als wären
sie Teil derselben Kette.
- 3. Zur Einsparung von Speicherplatz können sich der erste und der
zweite Operand genau überlappen,
oder der Anfangspunkt des ersten Operanden kann sich links vom Anfangspunkt
des zweiten Operanden befinden. In jedem Fall ist die Überlappung
nicht unzulässig.
-
VERSCHLÜSSELUNGSCOPROZESSOR
(CRYPTO COPROCESSOR):
-
Die
bevorzugte Ausführungsform
stellt einen Verschlüsselungscoprozessor
bereit, der mit den hierin beschriebenen Befehlen sowie zur Ausführung verschlüsselter
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.
-
29 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
unserer 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 üblichsten
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 Kosten
verursachende Latenzzeit zum Aufrufen von externer Hardware sowie
der Zeitaufwand zum Ausführen
des Software-Algorithmus entfallen bei dieser Erfindung.
-
In
30 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/Architektur 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 p-Serie und der
x-Serie) 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 Ausführungsform
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 30 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 30 wird
bei 501 ein Computerspeicher gezeigt, der Befehle und Daten
enthält.
Die in dieser Erfindung 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 Erfindung
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 30 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 Computerarchitektur
der bevorzugten Ausführungsform
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 zweite 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
als DL2 bezeichnete erste Teil sich in den Bitpositionen 20 bis 31
und der als DH2 bezeichnete zweite Teil sich in den Bitpositionen
32 bis 39 befindet.
-
Außerdem weisen
unsere Computerarchitekturbefehle 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
als DL2 bezeichnete erste Teil sich in den Bitpositionen 20 bis
31 und der als DH2 bezeichnete zweite 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
als DL1 bezeichnete erste Teil sich in den Bitpositionen 20 bis
31 und der als DH1 bezeichnete zweite 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.
-
Eine
Vorrichtung zum Verschlüsseln
oder Entschlüsseln
des Speichers einer Datenverarbeitungsumgebung, wobei die Vorrichtung
Folgendes umfasst:
ein Mittel zum Angeben einer zu verschlüsselnden oder
zu entschlüsselnden
Speichereinheit über
einen Befehl; und
ein Mittel zum Verschlüsseln oder Entschlüsseln der Speichereinheit.