-
Gebiet der
Erfindung
-
Die Erfindung betrifft eine Vorrichtung
und ein Verfahren für
verschlüsselte
Befehle, insbesondere während
Refetch-Operationen.
-
Hintergrund
der Erfindung
-
Zentrale Verarbeitungseinheiten (CPU's: central processing
units) von Computersystemen weisen im Allgemeinen Adressregister
auf, um die Adressen der letzten von der CPU gelesenen A Befehle
zu speichern. Wenn eine Notwendigkeit besteht, einen der letzten
A Befehle erneut abzurufen ("refetch"), wird die Adresse
dieses Befehls an den Speicher gesendet, was veranlasst, dass der
Befehl erneut zu der CPU abgerufen wird. Oft wird ein Befehl erneut
abgerufen, wenn er eine Ausnahme verursacht; die Ausnahme kann ein
Fehler, ein ungewöhnlicher
Zustand oder ein externes Signal sein, das ein CPU-Statusbit setzt
und dadurch einen Interrupt verursacht.
-
Es besteht eine Notwendigkeit, Information, d.
h. Daten und Befehle, in codierter oder chiffrierter oder verschlüsselter
Form zu speichern. Diese kann aufgrund eines Wunsches auftreten,
die Information für
ungewollte Benutzer undurchsichtig zu machen oder um durch irgendwelche
Mittel der Redundanzelimination oder Kompressionscodierung Speicherplatz
zu sparen oder aus anderen Gründen.
-
Das Speichern von Informationen in
codierter oder verschlüsselter
Form verursacht mehrere Probleme unter denen sich die Notwendigkeit
befindet, die Information zu decodieren, wenn sie aus dem Speicher
abgerufen wird, wenn sie von Peripheriegeräten oder anderen Einheiten
bearbeitet werden soll, die nur Klartextinformation (d. h. decodiert)
behandeln können.
Wenn codierte Information erneut abgerufen werden muss, besteht
eine Notwendigkeit, sie erneut zu decodieren, wodurch eine Zeitverschwendung
und eine Verschlechterung der Systemleistungen verursacht werden.
-
Ein weiteres Problem tritt auf, wenn
ein Peripheriegerät,
welches nicht mit dem Ausgang des Decodierers verbunden ist, Information
benötigt,
die in codierter Form im Speicher gehalten wird. Dieses Peripheriegerät kann die
codierte Information nicht direkt lesen oder bearbeiten.
-
Diese Probleme sind insbesondere
aktuell, wenn Information erneut abgerufen wird, da bei Refetch-Operationen,
z. B. wenn ein Interrupt aufgetreten ist, die Bearbeitungszeit üblicherweise
kritischer ist. Wenn beispielsweise ein Befehl eine Ausnahme verursacht,
so dass eine Adresse eines Befehls aus einem CPU-Adressregister
erneut abgerufen wird, wird der erneut abgerufene Befehl noch immer
in codierter Form vorliegen, wenn er erneut direkt aus dem Speicher
abgerufen und beispielsweise an eine Lade-/Speichereinheit innerhalb
der CPU gesendet wird.
-
Entsprechend besteht ein fortgesetzter
Bedarf nach verbesserten Verfahren und Vorrichtungen zur Behandlung
von Refetch-Operationen und anderen Operationen, bei denen codierte
oder verschlüsselte
Information mehrmals benutzt werden muss.
-
Aus Patents Abstracts of Japan Band
018, Nr. 153 (P-1709)
und der japanischen Patentanmeldung Nr. 05 324314 A ist ein Datenverarbeitungssystem
bekannt, dessen Betrieb durch Verkürzung von Befehlsauslesezeit
beschleunigt wird, indem ein Prozessor mit einer Funktion zum Einlesen
einer komprimierten Befehlssequenz und zum Entwickeln dieser in
eine Originalbefehlssequenz bereitgestellt wird.
-
Aus dem US Patent Nr. 5,012,403 sind
eine Anordnung und ein Verfahren zum Decodieren codierter Befehle
und zum Abspielen und erneuten Spielen decodierter Befehle an eine
einen Speicher für
decodierte Befehle verwendende Maschine bekannt.
-
Das Wort "Information", wie es hier verwendet wird, soll jegliche
Art von Daten oder Befehlen oder von beiden einschließen. Die
Worte codieren, verschlüsseln,
chiffrieren und die Worte decodieren, entschlüsseln und dechiffrieren und
verwandte Formen sollen jegliche Art von Codierung für jeglichen Zweck,
einschließlich
jedoch nicht beschränkt
auf Bedeutungsverschleierung, Komprimierung, um weniger Raum oder
Sendezeit zu besetzen oder jegliche andere Informationsverarbeitungstechnik,
einschließen.
Die Worte codieren, chiffrieren und verschlüsseln sollen dieselbe Bedeu tung
haben, ebenso wie ihre inversen Formen z. B. decodieren, dechiffrieren
und entschlüsseln.
-
Zusammenfassung
der Erfindung
-
Das der Erfindung zugrundeliegende
Problem wird grundsätzlich
durch Anwendung der in den unabhängigen
Ansprüchen
niedergelegten Merkmale gelöst.
Bevorzugte Ausführungsbeispiele
sind in den abhängigen
Ansprüchen
angegeben.
-
Ein Vorteil der vorliegenden Erfindung
ist, dass sie eine effiziente Vorrichtung und ein effizientes Verfahren
zum Speichern von und Zugreifen auf codierte Information, insbesondere
Befehle und andere in einem Speicher Bespeicherte Information, die erneut
abgerufen werden muss, zur Verfügung
stellt.
-
Kurze Beschreibung
der Zeichnungen
-
1 ist
ein schematisches Diagramm einer Vorrichtung zum Speichern und Abrufen
codierter Information gemäß einer
ersten Ausführungsform
der Erfindung;
-
2 ist
ein schematisches Diagramm einer Vorrichtung zum Speichern und Abrufen
codierter Information gemäß einer
bevorzugten Ausführungsform
der Erfindung.
-
3 ist
ein vereinfachtes schematisches Diagramm eines Teils der Vorrichtung
der 1 und 2, welches weitere Details
zeigt; und
-
4 ist
ein vereinfachtes Flussdiagramm eines Verfahrens gemäß der vorliegenden
Erfindung, bei dem Befehle normalerweise in codierter Form gespeichert
und in decodierter Form erneut abgerufen werden.
-
Beschreibung
einer bevorzugten Ausführungsform
-
1 ist
ein schematisches Diagramm einer Vorrichtung 19 zum Speichern,
Abrufen und Verarbeiten chiffrierter oder codierter Information,
insbesondere chiffrierter oder codierter Befehle, gemäß einer
ersten Ausführungsform
der Erfindung. Die Vorrichtung 19 umfasst einen Hauptspeicher 40 mit Ein-/Ausgängen (d.
h. I/O's) 42, 44;
eine Codiereinheit (z. B. Decodierer) 50 mit I/O 52,
Ausgang 54 und I/O 56; einem temporären Speicher
(d. h. TSM: temporary storage memory) 60 mit Eingang 62,
I/O's 64, 66;
und Peripheriegeräte 10, 20, 30 mit
I/O's 12–16, 22–26 bzw. 32, 36;
und einen Controller 70 mit I/O's 71–76. Der Hauptspeicher 40 enthält M Worte
und TSM 60 enthält
N Worte, wobei N < M
und M und N günstigerweise
ganzzahlig sind. TSM 60 enthält optional einen Sortierer 61.
-
Die in TSM 60 gespeicherten
Worte sind günstigerweise
(jedoch nicht notwendigerweise) mittels des Sortierers 61 sortiert,
so dass aus dem Hauptspeicher 40 ausgelesene und decodierte
N Worte in TSM 60 in decodierter Form gespeichert sind.
Der Inhalt von TSM 60 wird vorzugsweise konstant aktualisiert,
sobald Information aus dem Hauptspeicher 40 ausgelesen
wird. In diesem Kontext sind "decodiert" und "Klartext" ("plain language") als eine Form zu
verstehen, wobei das Peripheriegerät oder ein Befehlsprozessor,
an welches/n der Befehl adressiert ist, den Befehl interpretieren
kann.
-
Die Funktion des Sortierers 61 ist
es, aus dem Strom von M Befehlen, der aus dem Hauptspeicher 40 abgerufen
und von dem Decodierer 50 decodiert wird, eine Teilmenge
von N Befehlen auszuwählen,
für die
eine signifikante Wahrscheinlichkeit besteht, erneut abgerufen zu
werden. Beispielsweise kann der Sortierer 61 durch Vergleichen
von Folgebefehlen mit einer vorbestimmten Liste von Befehlen für die es
wahrscheinlich ist, dass sie Interrupts verursachen, Befehle auswählen, die
eine hohe Wahrscheinlichkeit haben, einen Refetch zu verursachen. Alternativ
kann der Sortierer 61 einfach die N jüngst decodierten Befehle auswählen, indem
er beispielsweise einen einfachen, N Elemente hohen Stapelspeicher
(FIFO) verwendet. Die genaue Form des Sortierers 61 wird
von den besonderen Befehlen abhängen,
die auszuführen
erwünscht
sind und von der Natur der Befehle, die am wahrscheinlichsten erneut abgerufen
werden. Basierend auf der hiesigen Offenbarung liegt die Auswahl
der geeigneten Implementation des Sortierers 61 innerhalb
der fachmännischen
Kompetenz.
-
Obgleich die Chiffriereinheit 50 hier
als ein "Decodierer" bezeichnet wird,
geschieht dies lediglich zur Bequemlichkeit der Erläuterung,
und der Fachmann wird verstehen, dass sie sowohl ein Codieren als
auch ein Decodieren durchführen
kann, um die Information in codierter Form in den Hauptspeicher 40 zu
platzieren und codierte Information im Hauptspeicher 40 in
decodierte Form zur Speicherung im TSM 60 und zur Verwendung
in anderen Teilen der Vorrichtung 90 konvertieren kann.
-
Bei Echtzeitanwendungen ist es oft
der Fall, dass die Befehle im Hauptspeicher 40 fixierte
Programmbefehle sind und dass der Hauptspeicher 40 ein
PROM- oder EPROM-artiger Speicher ist. Unter diesen Umständen ist
der Hauptspeicher 40 bereits mit Befehlen in codierter
Form beladen, und der Decodierer 50 kann auf Decodierungsgeschwindigkeit optimiert
werden.
-
Die Vorrichtung 19 umfasst
einen ersten Bus 80, einen zweiten Bus 90 und
einen dritten Bus 100, die mit Peripheriegeräten 10, 20, 30,
dem Hauptspeicher 40, dem Decodierer 50, dem TSM 60 und
dem Controller 70 verbunden sind. Der Controller 70 weist einen
mit dem I/O 16 des ersten Peripheriegerätes 10 verbundenen
I/O 71 auf, einen mit dem I/O 26 des zweiten Peripheriegerätes 20 verbundenen
I/O 72, einen mit dem I/O 36 des dritten Peripheriegerätes 30 verbundenen
I/O 73, einen mit dem I/O 44 des Hauptspeichers 40 verbundenen
I/O 74, einen mit dem I/O 56 des Decodierers 50 verbundenen
I/O 75 und einen mit dem I/O 66 des TSM 60 verbundenen
I/O 76 auf. Der I/O 42 des Hauptspeichers 40 ist
mit dem dritten Bus 100, dem Eingang 52 des Decodierers 50 und
dem I/O 12 des ersten Peripheriegerätes 10 verbunden.
Der Ausgang 54 des Decodierers 50 ist mit dem
I/O 62 des TSM 60, dem zweiten Bus 90 und dem
I/O 22 des zweiten Peripheriegerätes 20 verbunden.
Der I/O 64 des TSM 60 ist mit dem ersten Bus 80,
dem I/O 32 des dritten Peripheriegerätes 30, dem I/O 22 des
zweiten Peripheriegerätes 20 und
dem I/O 12 des ersten Peripheriegerätes 10 verbunden.
-
Das erste Peripheriegerät 10 kann
von dem Ausgang 42 des Hauptspeichers 40 (beispielsweise über den
Bus 100) gesendete, codierte Information oder von dem Ausgang 64 des
TSM 60 gesendete, decodierte Information lesen und verarbeiten.
Das zweite Peripheriegerät 20 kann
von dem Ausgang 54 des Decodierers 50 oder dem
Ausgang 64 des TSM gesendete, entschlüsselte Information lesen und
verarbeiten. Das dritte Peripheriegerät kann von dem Ausgang 64 des
TSM gesendete Information lesen und verarbeiten. Die Peripherie geräte 10, 20, 30 repräsentieren
jegliche erwünschte
elektronische Vorrichtungen (einschließlich einer CPU), die mit dem Speicher 40 kommunizieren
muss.
-
Der Controller 70 steuert
das Lesen und Schreiben in den Hauptspeicher 40 und in
den TSM 60. Der Controller 70 steuert günstigerweise
den Datentransfer zwischen dem ersten Peripheriegerät 10, dem
zweiten Peripheriegerät 20,
dem dritten Peripheriegerät 30,
dem Decodierer 50, dem TSM 60 und dem Hauptspeicher 40.
Der Controller 70 arbeitet gemäß wohlbekannten Kommunikationsprotokollen und
kann von einem der Geräte
unterbrochen werden, wenn eine Notwendigkeit besteht, zu lesen oder an
das Gerät
zu schreiben. Er kann auch in einer vorbestimmten Weise die Einheiten 10–60 scannen,
um zu entscheiden, ob sie Information lesen oder an Speicher 40 oder 60 schreiben
müssen.
-
Es sei beispielsweise angenommen,
dass das erste Peripheriegerät 10 in
dem TSM 60 gespeicherte, decodierte Information lesen möchte. Die Adresse
dieser Information erscheint am I/O 14 des ersten Peripheriegerätes 10.
Das erste Peripheriegerät 10 zeigt über I/O 16 an,
dass es die Information lesen möchte,
und der Controller 70 befähigt das erste Peripheriegerät 10 dazu,
die Adresse über
I/O 14 an den ersten Bus 80 auszugeben. Der Controller 70 benachrichtigt
den TSM 60, dass diese Adresse auf dem ersten Bus 80 vorliegt.
Der TSM 60 liest dann diese Adresse über I/O 64 und benachrichtigt
den Controller über
I/O 66, dass er bereit ist, die gewünschte Information über I/O 64 auszugeben.
Der Controller 70 befähigt
TSM 60, die Information über I/O 64 an den
ersten Bus 80 zu senden und benachrichtigt das erste Peripheriegerät 10 darüber, dass die
Information auf dem ersten Bus 80 vorliegt. Das erste Periphe riegerät liest
die Information auf dem ersten Bus 80 über I/O 14 und benachrichtigt
den Controller 70, wenn die Leseoperation vollendet ist.
-
Der Fachmann wird verstehen, dass
der Controller 70 einfach mit einigen oder allen Einheiten 10–60 verbunden
sein kann, um den Informationsfluss zwischen diesen Einheiten zu
steuern. Es kann auch weitere Einheiten oder Peripheriegeräte (nicht dargestellt)
geben, die nicht mit dem Controller 70 verbunden sind,
die jedoch ihre eigenen Steuerausgänge- und Eingänge haben
und das Information an sie geschrieben oder von ihnen gelesen werden kann.
-
Wenn ein Informationswort am Ausgang 54 des
Decodierers 50 erscheint, wird es gemäß von dem Controller 70 gesendeten
Steuersignalen an den TSM 60 geschrieben. Bei der bevorzugten
Ausführungsform
werden die letzten N Informationsworte aus dem Hauptspeicher 40 abgerufen
und von dem Decodierer 50 dechiffriert und in N Speicherworten
in dem TSM 60 gespeichert.
-
Falls eines der Peripheriegeräte 10, 20, 30 eines
der letzten N dechiffrierten Informationsworte lesen möchte, sendet
der Controller über
I/O 64 ein Steuersignal an den TSM 60, das anzeigt,
welches der N gespeicherten Informationsworte von dem TSM 60 ausgegeben
werden soll. Der TSM 60 sendet das ausgewählte Informationswort über den
I/O 64 an die anfragende Einheit 10, 20 oder 30.
Der TSM 60 erlaubt ein schnelles Lesen eines in dem Hauptspeicher 40 in
codierter Form gespeicherten Informationswortes ohne die Notwendigkeit
es mehr als einmal zu decodieren, vorausgesetzt, dass es sich unter
den in dem TSM 60 gespeicherten N Worten befindet.
-
Der TSM 60 ermöglicht daher
in Kombination mit dem Controller 50 und dem Speicher 40 ein schnelles
erneutes Abrufen in decodierter Form von zuvor bereits abgerufenen
Befehlen, die sich z. B. unter den letzten N abgerufenen Informationen
befinden. Es besteht keine Notwendigkeit, sie direkt aus dem Hauptspeicher 40 abzurufen
und sie für
die Refetch-Operation ein weiteres Mal zu decodieren.
-
In den 1–3 werden doppelköpfige Pfeile auf
den Kommunikationsleitungen und Bussen zwischen den verschiedenen
Elementen verwendet, um anzuzeigen, dass, selbst wenn es die primäre Funktion
eines Anschlusses ist, ein Eingang oder ein Ausgang zu sein, eine
bidirektionale Kommunikation zum Zwecke des Handshake ("hand-shake"), der Bestätigung oder
zu anderen Zwecken auftreten kann.
-
2 ist
ein vereinfachtes schematisches Diagramm einer Vorrichtung 21 zum
Speichern und Abrufen chiffrierter Information gemäß einer
bevorzugten Ausführungsform
der Erfindung. Die Vorrichtung 21 umfasst eine CPU 300 mit
einem CPU-Datenbus (d. h. DBUS) 370, einem CPU-Befehlsbus
(d. h. IBUS) 360, einem CPU-Datenadressbus (d. h. DABUS) 380,
einem CPU-Befehlsadressbus (d. h. IABUS) 390, einer Interrupt-Steuerleitung oder
-Bus (d. h. INT) 365 und einem Adress-I/O-Anschluss 306, einem Interrupt-I/O-Anschluss 304 und
einem Informations-I/O-Anschluss 302.
-
Ein Adressspeicher (d. h. ASM) 330 weist
einen I/O 332 und einen Eingang 334 auf. Ein Controller 350 weist
I/O's 352, 356, 358 auf.
Ein Decodierer 310 weist einen Eingang 312 und
Ausgänge 314, 318 auf.
Ein Hauptspeicher 320 weist einen Eingang 322 und
einen Ausgang 328 auf. Ein Speicher für dechiffrierte Befehle (d.
h. DISM: Decrypted Instruction Storage Memory) 340 weist
I/O's 342, 344 und
einen Eingang
346 auf. DISM 340, ASM 330,
Controller 350, Decodierer 310 und Speicher 320 können jeweils
separat oder innerhalb der CPU 300 oder auf demselben Chip
wie die CPU 300 implementiert sein, wie dies mittels der
gestrichelten Linie 364 angedeutet ist; dies ist jedoch
für die
vorliegende Erfindung nicht essentiell.
-
Der Ausgang 328 des Befehlshauptspeichers 320 ist
mit dem Eingang 312 des Decodierers 310 verbunden.
Der Ausgang 318 des Decodierers 310 ist mit dem
IBUS 360 verbunden. Der Ausgang 413 des Decodierers 310 ist
mit dem Eingang 346 des DISM 340 verbunden. Der
I/O-Anschluss 342 des DISM 340 ist mit dem IBUS 360 verbunden.
Der IBUS 360 ist günstigerweise über den
Informations-I/O-Anschluss 302 der CPU 300 mit
diesen Einheiten verbunden. Der I/O 332 des ASM 330 ist,
beispielsweise über
den Adress-I/O-Anschluss 306 der CPU 300 mit dem
IABUS 390 verbunden. Der I/O-Anschluss 358 des
Controllers 350 ist mit dem Eingang 334 des ASM 330 verbunden.
Der Ausgang 356 des Controllers 350 ist mit Eingang 344 des
DISM 340 verbunden. Der I/O 352 des Controllers 350 ist über den
CPU-Anschluss 304 mit dem INT-BUS oder der -Leitung 365 der
CPU 300 verbunden. Der Eingang 322 der Speicherbank 320 ist
mit dem IABUS 390 verbunden.
-
Die Adresse jedes Befehls, der von
der CPU 300 gelesen werden soll, wird an den ASM 330 geschrieben.
Der ASM 330 speichert die Adressen der letzten B Befehle,
die von der CPU 300 gelesen wurden. Jeder Befehl, der von
der CPU 300 gelesen wird, wird an den CPU-Anschluss 302 und
den DISM 340 geschrieben. Die Befehle können den DISM 340 beispielsweise
direkt über
den DISM-Eingang 346 oder über die CPU 300 von
dem CPU-Anschluss 302 und der DISM-I/O 342 erreichen.
Jede der dieser Anordnungen ist nützlich.
-
Der DISM 340 speichert die
letzten C Befehle (oder andere Daten), die von der CPU 300 gelesen wurden,
wobei C kleiner oder gleich B ist und B und C vorzugsweise ganze
Zahlen sind. Der Controller 350 sendet über die Ausgänge 356 bzw. 358 Steuersignale
an den DISM 340 bzw. den ASM 330. Vorzugsweise,
jedoch nicht erforderlicherweise werden aufeinanderfolgende Befehle
in aufeinanderfolgender Reihenfolge in dem DISM 340 gespeichert.
-
Wenn eine Notwendigkeit besteht,
einen Befehl erneut abzurufen, wird der Befehl von dem DISM 340 abgerufen.
Vorzugsweise wird ein Befehl erneut abgerufen, falls er von der
CPU 300 ausgeführt
wurde und eine Ausnahme (z. B. einen Interrupt) verursacht hat.
Der Controller 350 empfängt
günstigerweise
von der CPU-Interruptleitung oder dem -BUS 365 über den
CPU-Anschluss 302 und den Controller-I/O-Anschluss 352 eine
Eingabe, die anzeigt, dass ein Befehl erneut abgerufen werden muss.
Der Controller 340 sendet dann über die I/O's 356, 344 ein Steuersignal
an DISM 340, welches veranlasst, dass der erneut abgerufene
Befehl (aus den C in dem DISM 340 gespeicherten Befehlen)
von dem DISM 340 über
die I/O's 342, 302 an
den IBUS 360 gesendet wird. Die Adresse des Refetch-Befehls
wird günstigerweise
von dem ASM 330 geliefert, wobei jedoch, wie der Fachmann
verstehen wird, auch andere günstige
Mittel zur Identifizierung des Refetch-Befehls verwendet werden
können.
Beispielsweise kann die Adresse des Refetch-Befehls von der CPU 300 über die
Anschlüsse 304 oder 306 an
den Controller 350 gesendet werden.
-
Der Controller 350 kann
auch ein Steuersignal an den ASM 330 senden, welches veranlasst, dass
eine Befehlsadresse an den IABUS 390 ausgegeben wird. Diese
Adresse kann die Adresse eines Befehls sein, der ausgeführt wird,
nachdem die CPU 300 die Verarbeitung desjenigen Befehls,
der von dem DISM 340 erneut abgerufen wurde, beendet. Der
I/O 342 des DISM 340 ist mit dem IBUS 360 verbunden
und kann mit dem DBUS 340 ausgangsgekoppelt sein, was es
mit dem DBUS 370 verbundenen Einheiten, wie etwa einer
Lade-Speichereinheit erlaubt,
Befehle in decodierter Form zu lesen.
-
3 ist
ein vereinfachtes schematisches Diagramm eines Teils 800 der
Vorrichtung von 2, welches
weitere Details zeigt. Der Teil 800 weist einen Speicher
für dechiffrierte
Befehle (d. h. DISM) 840, einen Befehlsadressenspeicher
(d. h. ASM) 830 und einen Controller 790 auf,
die zu dem DISM 340, dem ASM 330 bzw. dem Controller 350 von 2 analog sind. Ein Befehlsbus
(IBUS) 730, ein Befehlsadressbus (IABUS) 740 und
ein Interruptbus oder eine -Leitung
(INT) 735 sind analog zu IBUS 360, IABUS 380 bzw.
INT 365 von 2.
Der Teil 800 kann optional einen Hilfsbus (AUXBUS) 710 aufweisen.
-
Der Controller 790 weist
I/O's 794, 796, 798 auf.
Der DISM 840 weist einen Befehlspuffer (d. h. IBUFF) 700 mit
I/O 701 und C I/O's 704–709 auf,
die mit C Speicherworten 7010 verbunden sind, wobei C vorzugsweise
eine ganze Zahl ist. Der DISM 840 weist einen Befehlsmultiplexer
(d. h. IMUX) 720 mit C I/O's 724–729, einem I/O 722 und
einem optionalen I/O 723 auf. Der ASM 830 weist
einen Befehlsadresspuffer (d. h. ABUFF) 760 mit einem I/O 761 und
B I/O's 764–769 auf,
die mit B Speicherworten 7610 verbunden sind, wobei B ein
ganze Zahl ist. Der ASM 830 weist einen Befehlsadressmultiplexer
(d. h. AMUX) 750 mit B I/O's 754–759 und I/O's 751, 752 auf.
-
Der I/O 721 des IMUX 720 ist
vorzugsweise über
den I-BUS 730 mit
dem I/O 782 eines Befehlsregisters (d. h. IREG) 780 verbunden.
Der Ausgang 751 des AMUX 750 ist vorzugsweise
mit dem I/O 772 eines Befehlsadressregisters (d. h. A-REG) 770 verbunden.
-
C I/O's 704–709 des IBUFF 700 sind
mit C I/O's 724–729 des
IMUX 720 verbunden. Der I/O 721 des IMUX 720 ist
mit dem IBUS 730 verbunden. Der I/O 723 ist optional
mit dem AUXBUS 710 verbunden. Der I/O 722 des
IMUX 720 und der I/O 701 des IBUFF 700 sind
mit dem I/O 796 des Controllers 790 verbunden.
Der I/O 752 des AMUX 750 und der I/O 761 des
A-BUFF 760 sind
mit dem I/O 798 des Controllers 790 verbunden.
Der I/O 794 des Controllers 790 ist günstigerweise
mit der INT-Leitung oder dem -BUS 735 verbunden.
-
B I/O's 763–769 des ABUFF 760 sind
mit B I/O's 754–759 des
AMUX 750 verbunden. Der I/O 751 des AMUX 750 ist
mit dem IABUS 740 verbunden und ist wünschenswerterweise mit dem
I/O 772 des AREG 770 verbunden.
-
Wenn die Notwendigkeit besteht, einen
Befehl erneut abzurufen, empfängt
der Controller 790 günstigerweise
von der INT-Leitung oder dem -Bus 735 über den Eingang 794 ein
Interrupt-Zustandssignal oder ein Flag und gibt über den I/O 796 an
den I/O 701 des IBUFF 700 ein Signal aus, welches
anzeigt, dass ein Befehl gelesen wurde und welches dem IMUX 720 mitteilt,
welcher I/O von den C Ein-/Ausgängen 704–709 auszuwählen ist.
Der in einem der C Speicherworte 7010 des IBUFF 700,
welches mit dem ausgewählten
I/O des IMUX 720 verbunden ist, gespeicherte Befehl wird über den
I/O 721 an den IBUS 730 ausgegeben und wird optional über den
I/O 723 an AUXBUS 710 und günstigerweise, an das IREG 780 ausgegeben.
Der Controller 790 kann auch über den Aus gang 798 an
den Eingang 761 des ABUFF 760 ein Signal ausgeben,
welches anzeigt, dass eine Befehlsadresse gelesen werden muss und welches
dem AMUX 750 über
den I/O 752 mitteilt, welcher I/O von den B Ein-/Ausgängen 754–759 auszuwählen ist.
Die Adresse eines in einem der B Speicherworte des ABUFF 760,
welches mit dem ausgewählten
I/O des AMUX 750 verbunden ist, gespeicherten Befehls wird über den
I/O 751 des IMUX 750 an den IABUS und optional
an den AREG 770 ausgegeben.
-
Die oben beschriebene Ausführungsform
der Erfindung wird mittels des nachfolgenden Beispiels besser verstanden:
-
Ein Mikroprozessorbereich, analog
dem Teil 800 von 3 umfasst:
einem dem IBUFF 700 analogen Befehlspuffer mit 6 Speicherworten;
einem dem IMUX 720 analogen 6-zu-1-Multiplexer; einem dem IBUS 730 analogen
Befehlsbus, einen dem IBUS 740 analogen Befehlsadressbus;
ein dem IREG 780 analoges Befehlsregister; einen dem ABUFF 760 analogen
Adressbefehlsbus mit 6 Speicherworten. Einen dem AMUX 750 analogen
6-zu-1-Multiplexer; ein dem AREG 770 analoges Befehlsadressregister,
das mit dem IBUS verbunden ist und eine dem Controller 790 analoge
Steuerlogik.
-
Der Befehlspuffer kann die letzten
6 Befehle, die von dem Sequenzierer des Mikroprozessorkerns abgerufen
wurden, speichern. Wenn einer der Befehle erneut abgerufen werden
muss, wenn er beispielsweise von der CPU ausgeführt wurde und eine Ausnahme
oder z. B. einen Interrupt verursacht hat, sendet die Steuerlogik
ein Signal, das anzeigt, welches der 6 Speicherworte des Befehls
denjenigen Befehl enthält,
der die Ausnahme verursacht hat. Wenn beispielsweise der dritte
Befehl abgerufen werden muss, wird der dritte Eingang des Befehlsmultiplexers
(IMUX) aktiviert, so dass der Inhalt des dritten Speicherwortes
(d. h. Befehl [3] in dem IMUX 700 von 3) des Befehlspuffers (z. B. IBUFF 700) über den Befehlsmultiplexer
an den Befehlsbus (z. B. IBUS 730) ausgegeben wird und
an den Hilfsbus und/oder an das Befehlsregister ausgegeben werden
kann.
-
Wenn die Ausführung des Befehls eine Änderung
des Mikroprozessorflusses mit sich bringt, kann der Adresspuffer
die Adresse eines Befehls ausgeben, der nach der Behandlung der
Ausnahme ausgeführt
werden muss, wobei die Adresse günstigerweise
in dem Programmzählerregister
des Mikroprozessors gespeichert wird.
-
Wenn beispielsweise der Mikroprozessor nach
der Behandlung der von dem dritten Befehl verursachten Ausnahme
den vierten Befehl ausführen muss,
wird der vierte Eingang des Befehlsadressmultiplexers aktiviert,
so dass der Inhalt des vierten Speicherwortes des Befehlsadresspuffers über den
Befehlsadressmultiplexer an den Befehlsadressbus ausgegeben wird.
-
4 ist
ein vereinfachtes Flussdiagramm eines Verfahrens 900 zum
Speicher und erneuten Abrufen codierter Befehle in decodierter Form
gemäß der vorliegenden
Erfindung. Das Verfahren 900 bezieht sich auf Situationen,
in denen Befehle normalerweise in codierter Form in einem Speicher
gespeichert werden und decodiert werden müssen, bevor sie ausgeführt werden
können.
Die Codierung wird aus einer Vielzahl von Gründen angewendet, einschließlich Kompression,
wie beispielsweise das Verwenden eines Hoffman-Codes.
-
Das Verfahren 900 beginnt
bei "START" 901, und
bei Schritt 902 wird ein codierter Befehl aus den in dem
Hauptspeicher, beispielsweise Speicher 40, 320,
gespeicherten M codierten Befehlen abgerufen. Der abgerufene Befehl
wird im Schritt 904 decodiert. Der decodierte Befehl wird
in Schritt 906 an den temporären Speicher, z. B. Speicher 60, 340, 700,
weitergeleitet, wo eine Teilmenge N von abgerufenen und decodierten
Befehlen gespeichert wird. Diese Teilmenge kann beispielsweise aus
den letzten N abgerufenen und decodierten Befehlen oder denjenigen
N Befehlen, die am wahrscheinlichsten Interrupts verursachen oder
denjenigen N Befehlen, die wahrscheinlich einen Refetch-Zyklus anstoßen werden, oder
irgendeiner anderen Teilmenge von N Befehlen bestehen, für die es
wahrscheinlich ist, dass sie während
einer bestimmten Operation des Computersystems mehr als einmal verwendet
werden. Die N Befehle werden in decodierter Form gespeichert. Bei der
bevorzugten Ausführungsform
werden die letzten N decodierten Befehle gespeichert; dies ist jedoch nicht
essentiell.
-
Der Unterschritt 905 ist
günstigerweise
ein Auswahl- oder
Sortierschritt vor einem Speicherschritt 906 (z. B. durchgeführt von
dem Sortierer 61), in welchem die erwünschte Teilmenge von in dem temporären Speicher 60, 340, 700 zu
speichernden Befehlen aus dem Strom der aus dem Speicher 40, 320 abgerufenen
Befehle ausgewählt
und in den Schritten 902 bzw. 904 in dem Decodierer 50, 310, decodiert
wird. Die Teilmenge von N decodierten Befehlen, die in Schritt 906 gespeichert
werden sollen, besteht vorzugsweise aus denjenigen Befehlen, die eine
signifikante Wahrscheinlichkeit aufweisen, erneut abgerufen zu werden.
Wie der Fachmann verstehen wird, können viele verschiedene Sortier- oder Auswahlverfahren
verwendet werden, um die N decodierten Befehle, die in Schritt 906 gespeichert
werden sollen, auszuwählen,
abhängig
von den von dem Computersystem 19, 21 ausgeführten Funktionen und
von der Natur der verwendeten Befehle. Basierend auf der hiesigen
Beschreibung liegen die Details der Durchführung solch eines Sortier-
oder Auswahlschrittes im Rahmen der fachmännischen Kompetenz.
-
In Schritt 908 wird der
abgerufene, decodierte Befehl ausgeführt. Ein Abfrageschritt 910 bestimmt,
ob es notwendig ist, einen Befehl erneut abzurufen, entweder denselben
Befehl, der ausgeführt wurde
oder einen anderen Befehl. Falls das Ergebnis des Abfrageschrittes 910 JA
ist, bestimmt ein Abfrageschritt 912, ob sich der Refetch-Befehl
unter den N in dem temporären
Speicher in Schritt 906 gespeicherten, decodierten Befehlen
befindet. Wenn das Ergebnis des Abfrageschrittes 912 JA
ist, wird in Schritt 914 der gewünschte Befehl aus dem temporären Speicher 60, 340, 700 erneut
abgerufen und zur erneuten Ausführung
in Schritt 908 zurückgegeben.
-
Der Abfrageschritt 912 ist
nicht in allen Situationen notwendig. Wo beispielsweise eine Befehls-Pipeline
verwendet wird, die N Befehle enthält und ein Speicher 60, 340 die
letzten N Befehle, in decodierter Form umspeichert, befindet sich
ein erneut abgerufener Befehl stets unter den letzten N Befehlen
und es wird kein Abfrageschritt 912 benötigt. Dies ist äquivalent
zu einem JA-Ergebnis von 912, und kein anderes Ergebnis
ist möglich.
-
Falls das Ergebnis des Abfrageschrittes 910 NEIN
ist, wird in Abfrageschritt 916 bestimmt, ob oder ob nicht
der Befehl der letzte Befehl ist und, falls das Ergebnis des Abfrageschrittes 916 NEIN
ist, geht der Prozess schleifenartig über 917 zurück, um den nächsten Befehl
abzurufen, d. h. Schritt 902 wird für den nächsten Befehl wiederholt, der
dann in Schritt 904 decodiert und in Schritt 908 ausgeführt wird
etc. Der Prozess wiederholt sich bis alle Befeh le ausgeführt wurden,
wobei die möglichen
Ergebnisse des Abfrageschrittes 910 wie oben beschrieben
berücksichtigt
werden. Jedes Mal, wenn ein Befehl in Schritt 904 decodiert
wird, aktualisiert der Speicherschritt 906 den temporären Speicher 60, 340, 700,
abhängig von
den durch den Designer oder Benutzer ausgewählten Speicherkriterien, z.
B. die letzten N Befehle oder Befehle die am wahrscheinlichsten
Interrupts verursachen etc.
-
Es sei angenommen, dass der Abfrageschritt 912 benötigt wird,
d. h. dass es möglich
ist, dass ein erwünschter
Refetch-Befehl außerhalb
der Teilmenge von in dem temporären
Speicher 60, 340, 700 N gespeicherten
Befehlen liegt. Das Ergebnis des Abfrageschritts 912 ist
dann NEIN, und der Prozess geht schleifenartig über 919 zurück, um den
verschlüsselten
Befehl in Schritt 902 abzurufen und ihn in Schritt 904 zu
decodieren bevor er in Schritt 908 erneut ausgeführt wird.
-
Der Prozess fährt fort bis der letzte Befehl
erreicht ist (Ergebnis des Abfrageschrittes 916 ist JA), worauf
der Prozess bei 918 endet.