-
Hintergrund
der Erfindung
-
Die Erfindung betrifft CPUs (Zentraleinheiten),
wie sie in Minicomputern oder Mikrocomputern eingesetzt werden,
und insbesondere einen für Hochgeschwindigkeitsanwendungen
geeigneten Datenprozessor.
-
Bisher wurden verschiedene Vorrichtungen für die Hochgeschwindigkeitsbearbeitung
in Computern eingesetzt. Typisch hierfür ist ein Pipeline-System.
Das Pipeline-System beendet die Verarbeitung eines Befehls nicht,
bevor die Ausführung
des nächsten
Befehls begonnen wurde, sondern führt die Befehle in der Art
einer Eimerkette durch, so dass, wenn die Ausführung eines Befehls, der in
mehrere Stufen unterteilt ist, in die zweite Stufe übergeht,
die erste Stufe des nächsten
Befehls, der ähnlich
in mehrere Stufen unterteilt ist, auszuführen begonnen wird. Dieses
System ist im Detail in dem Buch "On the Parallel Computer Structure" von Shingi Tomita,
Shokodo, S. 25-68 beschrieben. Durch Verwendung des n-stufigen Pipeline-Systems
ist es möglich,
n Befehle über alle
Stufen gleichzeitig durchzuführen
und die Verarbeitung eines Befehls bei jedem Pipeline-Abschnitt zu
vollenden, obgleich ein Befehl bei jeder Pipeline-Stufe verarbeitet
wird.
-
Wie allgemein bekannt, hat die Befehlsarchitektur
eines Computers einen großen
Effekt auf das Verarbeitungsverfahren und die Verarbeitungsleistung.
Vom Standpunkt der Befehlsarchitektur können Computer in CISC (Complex
Instruction Set Computer) und RISC (Reduced Instruction Set Computer) unterteilt
werden. CISC-Prozessoren
verarbeiten komplizierte Befehle unter Verwendung von Mikrobefehlen,
wogegen RISC-Computer einfache Befehle verarbeiten und stattdessen
Hochgeschwindigkeitsberechnungen mit fest verdrahte er Steuerlogik
ohne Mikrobefehle durchführen.
Im folgenden wird e Überblick über die
Hardware und Pipeline-Operationen sowohl
von konventionellen CISC- als auch RISC-Computern gegeben.
-
2 zeigt
den generellen Aufbau eines CISC-Computers. Es gibt eine dargestellte
Speicherschnittstelle 200, einen Programmzähler (PC) 201, einen
Befehls-Cache 202, ein Befehlsregister 203, einen
Befehlsdecoder 204, einen Adressberechnungssteuerschaltkreis 205,
einen Steuerspeicher (CS) 206, in welchem Mikrobefehle
gespeichert sind, einen Mikroprogrammzähler (MPC) 207, ein
Mikrobefehlsregister 208, einen Decodierer 209,
ein Register MDR (Memory Data Register) 210, welches Daten
mit dem Speicher austauscht, ein Register MAR (Memory Address Register) 211,
welches die Operandenadresse in dem Speicher angibt, einen Adressaddierer 12,
eine Registerdatei 213 und eine ALU (Arithmetic Logical
Unit) 214.
-
Die Funktionsweise eines solchen
Aufbaus wird kurz erläutert.
Der durch den PC 201 bezeichnete Befehl wird durch den
Befehls-Cache entnommen und über
eine Signalleitung 217 zu dem Befehlsregister 203 geleitet,
wo er gesetzt wird. Der Befehlsdecoder 204 empfängt den
Befehl über
eine Signalleitung 218 und setzt die Kopfadresse des Mikrobefehls über eine
Signalleitung 220 in den Mikroprogrammzähler 207. Der Adressenberechnungssteuerschaltkreis 205 erhält über eine
Signalleitung 219 den Befehl, den Weg zur Berechnung der
Adresse abzuarbeiten. Der Adressenberechnungssteuerschaltkreis 205 liest das
Register aus, das notwendig für
die Adressenberechnung ist, und steuert den Adressenaddierer 212. Der
für die
Adressberechnung erforderliche Inhalt des Registers wird von der
Registerdatei 213 über die
Busse 226, 227 an den Adressenaddierer 212 weitergeleitet.
Auf der anderen Seite wird der Mikrobefehl von der CS 206 bei
jedem Maschinenzyklus ausgelesen und durch den Decodierer 209 decodiert und
verwendet, um die ALU 214 und die Registerdatei 213 zu
steuern. In diesem Fall wird ein Steuersignal 224 hier
angelegt. Die ALU 214 berechnet die Daten, die ihr von
dem Register über
die Busse 228, 229 zugeführt werden und speichert sie über den
Bus 230 wieder in der Registerdatei 213 ab. Die
Speicherschnittstelle 200 ist der Schaltkreis zum Austausch mit
dem Speicher z.B. beim Holen von Befehlen und Operanden.
-
Die Pipeline-Operation des Computers
gemäß 2 wird unter Bezugnahme
auf die 3, 4 und 5 erläutert.
Die Pipeline besteht aus sechs Stufen. Bei der IF-Stufe (Instruction
Fetch) wird ein Befehl durch den Befehls-Cache 202 gelesen
und in dem Befehlsregister 203 gesetzt. Bei der D-Stufe (Decode)
decodiert der Befehlsdecoder 204 den Befehl. Bei der A-Stufe
(Address) führt
der Adressenaddierer 221 die Berechnung der Adresse des
Operanden durch. Bei der OF-Stufe (Operand Fetch) wird der Operand,
auf dessen Adresse das MAR 211 zeigt, durch die Speicherschnittstelle 200 geholt
und in dem MDR 210 gesetzt. Bei der EX-Stufe (Execution)
werden Daten durch die Registerdatei 213 und das MDR 210 gelesen
und der ALU 214 zugeführt, wo
die Berechnung stattfindet. Bei der letzten W-Stufe (Write) wird
das Rechenergebnis über
den Bus 230 in einem Register der Registerdatei 213 abgespeichert.
-
3 zeigt
die fortlaufende Verarbeitung von Additionsbefehlen ADD als einem
Basisbefehl. Bei jedem Maschinenzyklus wird ein Befehl verarbeitet,
und die ALU 214 und der Adressenaddierer 212 arbeiten
parallel.
-
4 zeigt
die Verarbeitung des bedingten Sprungbefehls BRAcc. Ein Flag wird
durch den TEST-Befehl gesetzt. 4 zeigt
den Ablauf zu der Zeit, zu der diese Bedingung erfüllt ist.
Da das Flag bei der EX-Stufe gesetzt wurde, sind drei Zyklen Wartezeit
notwendig, bis der Sprungbefehl geholt wird; je größer die
Zahl der Stufen ist, desto größer wird
die Zahl der abzuwartenden Zyklen, was zu einem Engpass bei Verbesserung
der Leistungsfähigkeit
wird.
-
5 zeigt
den Ausführungsablauf
eines komplizierten Befehls. Der Befehl 1 ist der komplizierte Befehl.
Der komplizierte Befehl erfordert eine große Anzahl von Speicherzugriffen
wie String Copy und wird normalerweise durch mehrfaches Ausdehnen der
EX-Stufe ausgeführt.
Die EX-Stufe wird durch das Mikroprogramm gesteuert. Auf das Mikroprogramm
wird einmal pro Maschinenzyklus zugegriffen. Mit anderen Worten,
der komplizierte Befehl wird durch mehrfaches Lesen des Mikroprogramms
ausgeführt.
Zu dieser Zeit muss der nächste
Befehl (Befehl 2 in 5)
warten, da ein Befehl bei der EX-Stufe ausgeführt wird. In einem solchen
Fall arbeitet die ALU 214 fortwährend, und der Adressenaddierer 212 wartet.
-
Im folgenden wird der RISC-Computer
beschrieben. 6 zeigt
den allgemeinen Aufbau des RISC-Computers. Gezeigt sind eine Speicherschnittstelle 601,
ein Programmzähler 602,
ein Befehls-Cache 603,
ein Sequenzierer 604, ein Befehlsregister 605,
ein Decodierer 606, eine Registerdatei 607, eine ALU 608,
ein MDR 609 und ein MAR 610.
-
7 zeigt
den Prozessablauf für
Basisbefehle. Bei der IF-Stufe (Instruction Fetch) wird der Befehl,
auf den der Programmzähler 602 zeigt,
durch den Befehls-Cache ausgelesen und in den Befehlsregister 605 gesetzt.
Der Sequenzierer 604 steuert den Programmzähler 602 in
Abhängigkeit
von einem Befehlssignal 615 und einem Flag-Signal 616 von
der ALU 608. Bei der R-Stufe (Read) wird der Inhalt des Befehlszeigeregisters
durch die Busse 618, 619 zu der ALU 108 transferiert.
Bei der E-Stufe (Execution) führt
die ALU 608 die arithmetische Operation durch. Schließlich wird
bei der W-Stufe (Write) das berechnete Resultat über einen Bus 620 in
der Registerdatei 607 gespeichert.
-
In dem RISC-Computer sind die Befehle
auf Basisbefehle beschränkt.
Die Arithmetikoperation wird nur zwischen Registern ausgeführt, und
der Befehl inklusive Operand Fetch ist auf den Ladebefehl und den
Speicherbefehl beschränkt.
Der komplizierte Befehl kann durch eine Kombination von Basisbefehlen
realisiert werden. Ohne Verwendung des Mikrobefehls wird der Inhalt
des Befehlsregisters 605 direkt durch den Decodierer 606 decodiert
und zur Steuerung der ALU 608 verwendet usw.
-
7 zeigt
den Verarbeitungsablauf für
eine Register-Registerarithmetische Operation. Die Pipeline besteht
aus vier Stufen, da der Befehl einfach ist.
-
8 zeigt
den Verarbeitungsablauf bei einem bedingten Sprungbefehl. Verglichen
mit dem CISC-Computer ist die Zahl von Pipeline-Stufen klein, und
so ist die Wartezeit nur ein Zyklus. In diesem Fall ist es zusätzlich zu
der Operation zwischen den Registern (inter-register-Operation)
notwendig, den Operanden aus dem Speicher zu laden und den Operanden
in dem Speicher zu speichern. Bei dem CISC-Computer kann das Laden
des Operanden aus dem Speicher wegen des vorhandenen Adressenaddierers
in einem Maschinenzyklus erfolgen, während bei dem RISC-Computer
in 6 der Ladebefehl zwei
Maschinenzyklen erfordert, da er in Adressberechnungsbefehl und
Ladebefehl zerlegt wurde.
-
Die Probleme bei dem oben beschriebenen Stand
der Technik werden im folgenden kurz erläutert. Bei dem CISC-Computer
ist, obwohl der Speicherregisterbefehl wegen des vorhandenen Adressenaddierers
in einem Maschinenzyklus ausgeführt werden
kann, der Overhead bei einer Verzweigung wegen der großen Zahl
von Pipeline-Stufen groß. Darüber hinaus
wird nur die E-Stufe wiederholt, wenn ein komplizierter Befehl ausgeführt wird,
und als Folge wartet der Adressenaddierer.
-
Bei dem RISC-Computer ist der Overhead bei
einer Verzweigung klein, da es nur eine kleine Anzahl von Pipeline-Stufen
gibt. Jedoch sind für
die Speicherregisteroperation ohne Verwendung des Adressenaddierers
zwei Befehle erforderlich, nämlich
ein Ladebefehl und ein Befehl für
die Operation zwischen den Registern.
-
In US-A-4 677 545 (Blahut, Donald
E.) vom 30. Juni 1987 (1987-06-30)
wird ein Datenprozessor offenbart, der zwei Befehlsschlangen aufweist,
eine für
sequentielle Befehle und eine für
Subroutinen-Befehle,
wobei letztere in einem Makro-ROM angelegt ist. Ein Selektor ist
vorgesehen, um auszuwählen, aus
welcher der Schlangen ein Befehl geholt und ausgeführt wird.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Dementsprechend ist es die erste
Aufgabe dieser Erfindung, einen Datenprozessor zu schaffen, der
zur Verbesserung der Verarbeitungskapazität für die effektive Nutzung mehrerer
Arithmetikoperationseinheiten geeignet ist.
-
Als zweite Aufgabe dieser Erfindung
soll ein Datenprozessor geschaffen werden, der zur Reduzierung des
Overhead bei einer Verzweigung geeignet ist.
-
Als dritte Aufgabe der Erfindung
soll ein Datenprozessor geschaffen werden, der zur Reduzierung der
Verarbeitungszeit bei einem komplizierten Befehl zur Speicherregisteroperation
geeignet ist.
-
Die obigen Aufgaben werden erfindungsgemäß wie in
Patentanspruch 1 ausgeführt
gelöst.
Die abhängigen
Ansprüche
beziehen sich auf bevorzugte Ausführungsformen der Erfindung.
-
Entsprechend den bevorzugten Ausführungsformen
dieser Erfindung werden der komplexe Befehl in Basisbefehle zerlegt
und mehrere Befehle gleichzeitig in einem Maschinenzyklus gelesen
und ausgeführt,
so dass mehrere Arithmetikoperationseinheiten gleichzeitig betrieben
werden können,
wodurch die Verarbeitungskapazität
verbessert wird.
-
Darüber hinaus kann, da die Funktion
des Befehls einfach ist und da die Zahl von Pipeline-Stufen reduziert
werden kann, der Overhead bei einer Verzweigung reduziert werden.
-
Darüber hinaus kann, da mehrere
Arithmetikoperationseinheiten parallel betrieben werden, die Verarbeitungszeit
für den
komplizierten Befehl reduziert werden.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
1 ist
ein Blockdiagramm des gesamten Aufbaus einer Ausführungsform
dieser Erfindung.
-
2 ist
ein Blockdiagramm des gesamten Aufbaus eines konventionellen Beispiels.
-
3 bis 5 sind Zeitdiagramme für dessen Betrieb.
-
6 ist
ein Blockdiagramm des gesamten Aufbaus eines weiteren konventionellen
Beispiels.
-
7 und 8 sind Zeitdiagramme für dessen Betrieb.
-
9 zeigt
die Liste von Befehlen, die in einer Ausführungsform dieser Erfindung
verwendet werden sollen.
-
10 zeigt
das Format des Befehls, der mit der Ausführungsform dieser Erfindung
zusammenhängt.
-
11 bis 14 sind Zeitdiagramme für den Betrieb
dieser Ausführungsform
der Erfindung.
-
15 ist
ein Zeitdiagramm für
den Betrieb des konventionellen Beispiels.
-
16 bis 18 sind Zeitdiagramme für den Betrieb
der Ausführungsform
dieser Erfindung.
-
19 ist
ein Aufbaudiagramm der ersten Arithmetikoperationseinheit 110 in 1.
-
20 ist
ein Aufbaudiagramm der zweiten Arithmetikeinheit 112 in 1.
-
21 ist
ein Aufbaudiagramm der Registerdatei 111 in 1.
-
22 bis 25 sind Diagramme zur Erläuterung
der Ausführungsform
dieser Erfindung nach 1.
-
26 ist
ein Aufbaudiagramm der Befehlseinheit 103 in 1.
-
27 ist
ein Diagramm zur Erläuterung
des Betriebs derselben.
-
28 ist
ein Aufbaudiagramm des Cache 2301 in 26.
-
29 ist
ein weiteres Aufbaudiagramm der Befehlseinheit 103 in 1.
-
30 ist
ein Zeitdiagramm für
den Betrieb dieser Ausführungsform
der Erfindung.
-
31a und 31b zeigen Befehlsformate.
-
32 ist
ein Blockdiagramm des gesamten Aufbaus einer weiteren Ausführungsform
der Erfindung.
-
33 bis 36 sind Diagramme weiterer
Ausführungsformen
der Erfindung, die simultan Teilverarbeitung von mehreren Befehlen
durchführen.
-
BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Eine Ausführungsform dieser Erfindung
wird nun erläutert.
-
9 ist
die Liste von Befehlen, die durch den Prozessor dieser Ausführungsform
ausgeführt werden
sollen. Die Basisbefehle werden alle durch die Zwischenregisteroperation
ausgeführt.
Die Verzweigungsbefehle beinhalten vier Verzweigungsbefehle: einen
unbedingten Sprungbefehl BRA, einen bedingten Sprungbefehl BRAcc
(cc bezeichnet die Verzweigungsbedingung), einen Sprung-zur-Subroutine-Befehl
CALL, und einen Rücksprung-von-Subroutine-Befehl
RTN. Zusätzlich
zu diesen Befehlen sind ein Ladebefehl LOAD und ein Speicherbefehl STORE
vorgesehen. Obgleich zur Vereinfachung der Erläuterung das Datenformat nur
insgesamt 32 Bit ist, ist dies keine Einschränkung. Die Adresse hat 32 Bit
(4 Byte) für
jeden Befehl. Zur Vereinfachung ist die Zahl der Befehle wie oben
beschränkt,
kann aber so lange vergrößert werden,
solange der Inhalt in einem Maschinenzyklus abgearbeitet werden
kann.
-
10 zeigt
das Befehlsformat. Die Befehle haben alle eine feste Länge von
32 Bit. Die F-, S1-, S2- und D-Felder des Basisbefehls sind jeweils
das Bit oder die Bits, anzeigend ob das Arithmetikoperationsergebnis
auf dem Flag, dem Feld zur Anzeige des ersten Quellenregisters,
dem Feld zur Anzeige des zweiten Quellenregisters oder dem Feld
zur Anzeige des Zielregisters angegeben werden soll.
-
1 zeigt
den Aufbau dieser Ausführungsform.
Es sind eine Speicherschnittstelle 100, ein 32-Bit-Programmzähler 101,
ein Sequenzierer 102, eine Befehlseinheit 103,
ein 32 Bit-Erstbefehlsregister 104,
ein 32-Bit-Zweitbefehlsregister 105, ein erster Decodierer 106,
ein zweiter Decodierer 107, ein MDR 108, ein MAR 109,
eine erste Arithmetikoperationseinheit 110, eine Registerdatei 111 und
eine zweite Arithmetikoperationseinheit 112 dargestellt.
-
Bei dieser Ausführungsform werden in einem Maschinenzyklus
zwei Befehle parallel ausgelesen und ausgeführt. Die 11 bis 14 zeigen
die Pipeline-Verarbeitung bei dieser Ausführungsform. Die Pipeline enthält vier
Stufen, nämlich
IF (Instruction Fetch), R (Read), EX (Execution), W (Write).
-
Die Funktionsweise dieser Ausführungsform wird
unter Bezugnahme auf 1 beschrieben.
-
Bei der IF-Stufe werden zwei Befehle
gelesen, auf die der Programmzähler
zeigt, und über
die Busse 115 bzw. 117 in den ersten und zweiten
Befehlsregistern 104 und 105 gesetzt. Wenn der
Inhalt des PC gerade ist, wird der Befehl bei der PC-Adresse in
dem ersten Befehlsregister gespeichert, und der Befehl bei der Adresse
PC + 1 wird in dem zweiten Befehlsregister gespeichert. Wenn der
PC ungerade ist, wird der NOP-Befehl in das erste Befehlsregister gesetzt,
und der Befehl bei der PC-Adresse wird in das zweite Befehlsregister
gesetzt. Der Sequenzierer 102 ist der Schaltkreis zur Steuerung
des Programmzählers.
Wenn das erste und zweite Befehlsregister beide keinen Verzweigungsbefehl
anzeigen, wird der Programmzähler
auf den vorigen Zählerstand
+ 2 inkrementiert. Bei der Verzweigung wird die Verzweigungsadresse
berechnet und in den Programmzähler
gesetzt. Wenn ein bedingter Sprungbefehl auftritt, wird entschieden,
ob die Verzweigung ausgeführt wird
oder nicht, und zwar aufgrund der Flag-Information 123 von
der ersten Arithmetikoperationseinheit und der Flag-Information 124 von
der zweiten Arithmetikoperationseinheit. Das Signal 116 von
der Befehlseinheit ist das Konfliktsignal, das verschiedene und
unterschiedliche Konflikte zwischen dem ersten und zweiten Befehl
anzeigt. Wenn dieses Konfliktsignal gesetzt ist, wird durch die
Hardware versucht, den Konflikt zu vermeiden. Das Verfahren zum
Vermeiden von Konflikten wird in Einzelheiten später erläutert.
-
Die Operation der R-Stufe bei der
Ausführung
des Basisbefehls folgt weiter unten. Bei der R-Stufe wird der Inhalt
des ersten Befehlsregisters 104 durch den ersten Decodierer 106 decodiert,
und der Inhalt des zweiten Befehlsregisters 105 wird durch
den zweiten Decodierer 107 decodiert. Als Ergebnis wird
der Inhalt des Registers, auf den das erste Quellenregisterfeld
S1 des ersten Befehlsregisters 104 zeigt, durch einen Bus 125 in
die erste Arithmetikoperationseinheit 110 gespeist, und
der Inhalt des Registers, auf den das zweite Quellenregisterfeld
S2 zeigt, wird durch einen Bus 126 dorthin gespeist. Darüber hinaus
wird der Inhalt des Registers, auf den das erste Quellenregisterfeld
S1 des zweiten Befehlsregisters zeigt, durch einen Bus 127 in
die zweite Arithmetikoperationseinheit 112 gespeist, und
der Inhalt des Registers, auf den das zweite Quellenregisterfeld
S2 zeigt, wird durch einen Bus 128 dorthin gespeist.
-
Die Operation der EX-Stufe wird im
folgenden beschrieben. Bei der EX-Stufe führt die erste Arithmetikoperationseinheit 110 eine
Arithmetikoperation mit den Daten durch, die durch die Busse 125 und 126 in Übereinstimmung
mit den Inhalten des OP-Code des ersten Befehlsregisters eingespeist wurden.
Zur gleichen Zeit führt die
zweite Arithmetikoperationseinheit 112 eine arithmetische
Operation mit den Daten durch, die in Übereinstimmung mit den Inhalten
des OP-Code des zweiten Befehlsregisters 105 durch die
Busse 127 und 128 eingespeist wurden.
-
Schließlich wird nachstehend die
Operation der W-Stufe erläutert.
Bei der W-Stufe wird das Ergebnis der Arithmetikoperation der ersten
Arithmetikoperationseinheit 110 über einen Bus 129 in
dem Register abgespeichert, auf den durch das Bestimmungsfeld D
des ersten Befehlsregisters gezeigt wird. Auch wird das Ergebnis
der Arithmetikoperation der zweiten Operationseinheit 112 über einen
Bus 131 in dem Register abgelegt, auf den das Bestimmungsfeld
D des zweiten Befehlsregisters zeigt.
-
11 zeigt
das Flussdiagramm für
die fortlaufende Verarbeitung von Basisbefehlen. Zwei Befehle werden
zu einer Zeit in einem Maschinenzyklus verarbeitet. Bei diesem Beispiel
sind die erste Arithmetikoperationseinheit und die zweite Arithmetikoperationseinheit
immer parallel in Betrieb.
-
12 ist
das Flussdiagramm für
die kontinuierliche Verarbeitung sowohl des Lade- als auch des Speicherbefehls
als erstem Befehl und des Basisbefehls als einem zweiten Befehl.
Wenn der Ladebefehl ausgeführt
wird, wird in der R-Stufe der Inhalt des Registers, das durch das
S2-Feld des ersten Befehlsregisters spezifiziert ist, über den
Bus 126 zu dem MAR 109 übertragen. Bei der EX-Stufe
wird der Operand durch die Speicherschnittstelle 100 geholt. Schließlich wird
der Operand, der in der W-Stufe geholt wird, über den Bus 129 in
dem Register abgelegt, das durch das Bestimmungsfeld D des ersten
Befehlsregisters spezifiziert ist.
-
In der EX-Stufe kann der Operand
in einem Maschinenzyklus geholt werden, wenn ein Hochgeschwindigkeits-Cache
in der Speicherschnittstelle vorgesehen ist. Insbesondere kann dies
leicht erfolgen, wenn der gesamte Computer gemäß 1 in einem Haltleitersubstrat mit Befehls-Cache
und Daten-Cache auf dem Chip integriert wurde. Natürlich kann,
wenn der Cache verfehlt wurde, das Holen des Operanden nicht in
einem Maschinenzyklus beendet werden. In einem solchen Fall werden
die Systemuhr angehalten und die EX-Stufe ausgedehnt. Diese Operation
wird auch in einem konventionellen Computer durchgeführt.
-
Wenn der Speicherbefehl ausgeführt wird,
so wird in der R-Stufe der Inhalt des Registers, auf den durch das
erste Quellenregisterfeld S1 des ersten Befehlsregisters gezeigt
wird, als Datensatz durch den Bus 125 in das MDR 108 übertragen.
Zur gleichen Zeit wird der Inhalt des Registers, auf das durch das
zweite Quellenregisterfeld S2 des ersten Befehlsregisters gezeigt
wird, über
den Bus 126 als Adresse zu dem MAR 109 übertragen.
In der EX-Stufe werden Daten in dem MDR 108 an die Adresse
geschrieben, auf die das MAR 109 zeigt.
-
Wie in 12 dargestellt,
können,
selbst wenn der Ladebefehl oder Speicherbefehl der erste Befehl
ist, zwei Befehle zur Zeit in einem Maschinenzyklus abgearbeitet
werden. Der Fall, wo der Ladebefehl oder Speicherbefehl als der
zweite Befehl auftritt, wird im einzelnen später erläutert.
-
13 zeigt
den Arbeitsablauf der Ausführung
des unbedingten Sprungbefehls BRA als zweitem Befehl. Wenn der BRA-Befehl
gelesen wird, so führt
in der R-Stufe der Sequenzierer 102 die Addition zwischen
Verschiebungsfeld d und Programmzähler aus und setzt den Programmzähler 101.
Während
dieser Zeit werden der Befehl, der der nächste zu der Adresse des BRA-Befehls
ist, und der übernächste Befehl
(Befehle 1 und 2 in 13)
ausgelesen. In diesem nächsten
Zyklus werden zwei Befehle bei der Adresse gelesen, an welche das
Programm gesprungen ist. Bei dieser Ausführungsform ist die Hardware
in der Lage, die Befehle 1 und 2 auszuführen. Mit anderen Worten, es
tritt kein Wartezyklus auf, nicht einmal zur Zeit der Verarbeitung
des Sprungbefehls. Dieser Ansatz wird Verzögerungssprung genannt und bei
konventionellen RISC-Computern verwendet. Jedoch kann bei konventionellen RISC-Computern nur ein
Befehl während
der Berechnung der Adresse des Sprungbefehls ausgeführt werden.
Bei dieser Ausführungsform
können
zwei Befehle gleichzeitig während
der Berechnung der Adresse des Sprungbefehls ausgeführt werden,
wodurch eine höhere
Verarbeitungskapazität
erreicht wird. Das Gleiche gilt für den Verarbeitungsablauf des
CALL-Befehls und des RTN-Befehls. Der Compiler erzeugt Codes, so
dass Befehle so effektiv wie möglich
während
der Berechnung der Adresse des Sprungbefehls ausgeführt werden
können,
aber wenn es nichts zu tun gibt, werden die Befehle 1 und 2 in 13 zu NOP-Befehlen. Zu dieser
Zeit tritt im wesentlichen ein Maschinenwartezyklus auf. Da jedoch
die Zahl der Pipeline-Stufen klein ist, kann der Overhead zur Zeit
der Verzweigung verglichen zum CISC-Computer, der als konventionelles
Beispiel erwähnt
wurde, reduziert werden.
-
14 zeigt
den Verarbeitungsablauf des bedingten Sprungbefehls BRAcc. Das Flag
wird durch den Befehl gesetzt, der mit ADD, F bezeichnet ist, und
die Entscheidung, ob die Sprungbedingung erfüllt ist oder nicht, hängt von
dem Ergebnis ab. Zu dieser Zeit werden ähnlich wie zur Zeit des unbedingten
Sprungbefehls und dessen Verarbeitung, was in Bezug auf 13 erläutert wurde, der Befehl, der
als nächster
bei der Adresse des BRAcc-Befehls steht, der Befehl 1 in 14, der nächste Befehl,
und der Befehl 2 in 14 gelesen
und verarbeitet. Jedoch wird in der W-Stufe während des Verarbeitungsablaufs
der zwei Befehle das Ergebnis der Arithmetikoperation nur in die
Registerdatei geschrieben, wenn die Verzweigungsbedingung des BRAcc-Befehls nicht
erfüllt
ist. Mit anderen Worten, wenn der Verzweigungsbefehl erfüllt ist,
wird das Ergebnis der Berechnung nicht geschrieben.
-
Wie in 11 bis 14 gezeigt, verarbeitet daher
diese Ausführungsform
zwei Befehle zur Zeit während
eines Maschinenzyklus, was den Vorteil hat, dass die Verarbeitungskapazität maximal
verdoppelt wurde. Darüber
hinaus, da einfache Befehle verwendet werden und die Zahl der Pipeline-Stufen, die unter
Steuerung der verdrahteten Logik sind, die Größe 4 hat, kann der Overhead
zur Zeit der Verzweigung auf einen Maschinenzyklus maximal beschränkt werden.
Darüber
hinaus kann, wenn die verzögerte
Verzweigung durch den Compiler optimiert wird, der Overhead eliminiert
werden.
-
Da darüber hinaus selbst komplizierte
Verarbeitungen durch eine Kombination von einfachen Befehlen durchgeführt werden
können, können parallele
Operationen der ersten Arithmetikoperationseinheit 110 und
der zweiten Arithmetikoperationseinheit 112 in 1 mit weniger Verzögerung im
Vergleich zu der des Adressenaddierers und der ALU durch die parallele
Pipeline in dem konventionellen CISC-Computer ausgeführt werden.
Dieser Aspekt wird etwas näher
erläutert.
Wenn das Laden vom Speicher in das Register wiederholt wird, so
kann der konventionelle CISC-Computer in 15 einen Teil der Daten zu einer Zeit
während
eines Maschinenzyklus laden. Dagegen braucht diese Ausführungsform
zwei Befehle, nämlich
Adressenberechnung ADD und Ladebefehl unter Verwendung der Adresse
für das
Laden eines Teils der Daten, ist aber in der Lage, zwei Befehle
zu einer Zeit während
eines Maschinenzyklus wie in 16 gezeigt
auszuführen,
so dass sie immer noch in der Lage ist, einen Teil von Daten zu
laden zu einer Zeit während
eines Maschinenzyklus. Von dem Standpunkt des parallelen Betriebes
von Arithmetikoperationseinheiten arbeiten beide Arithmetikoperationseinheiten
parallel und sind so gleich.
-
Die 17 und 18 zeigen den Vergleich von weiteren
komplizierten Verarbeitungen. Der Befehl 1, der wie in 17 gezeigt in dem konventionellen CISC-Computer 6 Zyklenverarbeitung
bei der EX-Stufe benötigt,
kann bei dieser Ausführungsform nach 18 in 3 Zyklen verarbeitet
werden. Dies folgt daraus, dass der konventionelle CISC-Computer
die Operation des Adressenaddierers während der Ausführung des
Befehls 1 unterbricht, während bei
dieser Ausführungsform
zwei Arithmetikoperationseinheiten in jedem Zyklus parallel betrieben
werden können.
-
19 zeigt
den Aufbau der ersten Arithmetikoperationseinheit 110 in 1. Gezeigt sind eine ALU 1500,
ein Schieberegister 1501 und ein Flagsetzschaltkreis 1502.
Die Daten, die durch die Busse 125 und 126 übertragen
werden, werden durch die ALU 1500 für die Addition, Subtraktion
und logische Operation und durch das Schieberegister für den SFT-Befehl
verarbeitet. Das Ergebnis dieser Verarbeitung wird an den Bus 130 übertragen.
Ein Flag wird von dem Flagsetzschaltkreis 1502 bei Ergebnis der
Arithmetikoperation gesetzt und als das Signal 123 weitergeleitet.
-
20 zeigt
ein Beispiel des Aufbaus der zweiten Arithmetikoperationseinheit 112 in 1. Gezeigt sind eine ALU 1600 und
ein Flagsetzschaltkreis 1601. Die zweite Arithmetikoperationseinheit unterscheidet
sich von der ersten Arithmetikoperationseinheit darin, dass sie
kein Schieberegister hat. Dies kommt daher, dass der SFT-Befehl
seltener als der Befehl für
eine arithmetische Logikoperation auftritt. Somit können zwei
SFT-Befehle nicht
in einem Maschinenzyklus ausgeführt
werden, aber der Vorteil ist der, dass der Umfang der Hardware reduziert
werden kann. Das Steuerverfahren, das angewendet werden muss, wenn
zwei SFT-Befehle auftreten, wird später erläutert. Natürlich kann die zweite Arithmetikeinheit 112 die
in 19 gezeigt Einheit
sein.
-
21 zeigt
den Aufbau der Registerdatei 111 in 1. Es sind dargestellt Register 1708 und Busschalter 1700 bis 1709.
Jedes Register hat vier Leseports und zwei Schreibports. Der Busschalter wird
verwendet, um die Registerdatei zu umgehen, wenn das durch das Bestimmungsfeld
spezifizierte Register des vorigen Befehls sofort für den nächsten Befehl
verwendet wird. Zum Beispiel ist der Busschalter 1702 der
Umleitungsschalter von dem Bus 129 zu dem Bus 127,
der öffnet,
wenn das Bestimmungsortregisterfeld D des ersten Befehls mit dem ersten
Quellenregisterfeld S1 des zweiten Befehls zusammenfällt.
-
Das Verfahren zum Eliminieren des
Konflikts zwischen dem ersten und zweiten Befehl wird mit Bezug
auf die 22 bis 29 beschrieben. Beide Befehle können manchmal
nicht zur gleichen Zeit ausgeführt werden,
je nach Kombination des ersten und zweiten Befehls. Dieses wird
Konflikt genannt. Der Konflikt tritt in den folgenden Fällen auf.
- (1) Der Lade- oder Speicherbefehl erscheint
als zweiter Befehl.
- (2) Der SFT-Befehl erscheint als zweiter Befehl.
- (3) Das Register, auf das durch das Bestimmungsregisterfeld
D des ersten Befehls gezeigt wird, fällt mit dem Register zusammen,
das durch das erste Quellenregisterfeld S1 des zweiten Befehls spezifiziert
ist, oder mit dem Register, auf das durch das zweite Quellenregisterfeld
S2 des zweiten Befehls gezeigt wird.
-
Die obigen Fälle (1) und (2), bei denen
ein Konflikt auftritt, sind Probleme, die typisch für diese Ausführungsform
sind und auftreten, wenn der Lade- und Speicherbefehl und der SET-Befehl
nicht durch die zweite Arithmetikoperationseinheit abgearbeitet werden
können.
Wenn in 1 das zweite
MDR zu dem Bus 127 addiert wird, das zweite MAR zu dem Bus 128 addiert
wird und auf zwei Teile von Daten in einem Maschinenzyklus durch
die Speicherschnittstelle zugegriffen wird, dann kann die Konfliktbedingung
(1) eliminiert werden. Wenn darüber
hinaus das Schieberegister in der zweiten Arithmetikoperationseinheit
vorgesehen ist, kann die Konfliktbedingung (2) eliminiert werden.
Bei dieser Ausführungsform
tritt die Konfliktbedingung wegen der Reduzierung der Hardware auf.
In einem solchen Fall wird, da der Konflikt, wie später erläutert, leicht
eliminiert werden kann, nur die Hardware, die mit den auszuführenden Befehlen
zur Zeit zusammenhängt,
in Übereinstimmung
mit der notwendigen Leistungsfähigkeit
und dem zulässigen
Umfang der Hardware verdoppelt werden, und so wird die Hardware
im wesentlichen ohne Einbuße
an Leistungsfähigkeit
reduziert.
-
Das Steuerverfahren, das verwendet
werden muss, wenn der SFT-Befehl
als zweiter Befehl auftritt, wird mit Bezug auf 22 erläutert.
-
Der obere Teil von 22 zeigt den Fall, wo der SFT-Befehl
sich an der Adresse "3" für den zweiten
Befehl befindet. Der untere Teil von 22 zeigt die
zur Zeit der Ausführung
in dem ersten und zweiten Befehlsregister zu speichernden Befehle.
Wenn der Programmzähler 2 ist,
erkennt die Hardware, dass der zweite Befehl der SFT-Befehl ist,
und der Befehl bei der Adresse 2 wird in dem ersten Befehlsregister
gesetzt, wobei der NOP-Befehl in dem zweiten Befehlsregister gesetzt
wird. In dem nächsten Maschinenzyklus
wird der Programmzähler
um "1" inkrementiert oder
die Adresse 3 in dem Programmzähler
gesetzt. Darüber
hinaus werden der SFT-Befehl bei der Adresse 3 in dem ersten Befehlsregister und
der NOP-Befehl in dem zweiten Befehlsregister gesetzt. Somit kann
die Verarbeitung korrekt in zwei separaten Maschinenzyklen durchgeführt werden. Natürlich erfolgt
eine Optimierung durch den Compiler, so dass, wenn möglich, der
SFT-Befehl nicht auftritt.
-
Ein anderes Verfahren zur Eliminierung
eines Konflikts wird mit Bezug auf 23 beschrieben. Es
wird verhindert, dass der SFT-Befehl
an der ungeraden Adresse des zweiten Befehls gespeichert wird, und
wenn kein Befehl ausgeführt
werden soll, wird der NOP-Befehl
darin abgespeichert. Somit erhöht sich
die Programmgröße etwas,
aber die Hardware für
die Eliminierung des Konflikts kann fortgelassen werden.
-
24 zeigt
das Verarbeitungsverfahren, das verwendet werden muss, wenn der
Ladebefehl als zweiter Befehl auftritt. Der Ladebefehl wird in der Adresse
3 gespeichert. Das Verarbeitungsverfahren ist das gleiche wie für den SFT-Befehl.
-
25 zeigt
das Verarbeitungsverfahren, das verwendet werden muss, wenn der
Registerkonflikt auftritt. Der Befehl bei der Adresse 2 wird in
dem Nummer-8-Register abgespeichert, und der Befehl bei der Adresse
3 liest dasselbe Nummer-8-Register. In diesem Fall erfolgt die Ausführung in
zwei separaten Maschinenzyklen, wie bei dem SFT-Befehl.
-
Zu dem Lade-, Speicherbefehl und
auch dem Registerkonflikt ist festzuhalten, dass eine Speicherung
an ungeraden Adressen aus Gründen
der Eliminierung des Konflikts vermieden werden kann. Der Effekt
ist der gleiche wie der beim SFT-Befehl beschriebene.
-
Eine Beschreibung des Hardwaresystems zum
Umsetzen des Verarbeitungssystems, erwähnt mit Bezug auf 22 bis 25, folgt. 26 zeigt
den Aufbau der Befehlseinheit 103 in 1. Gezeigt ist ein Konflikterfassungsschaltkreis 2300,
ein Cache-Speicher 2301, ein erster Maskenschaltkreis 2302 und
ein zweiter Maskenschaltkreis 2303. Der Inhalt des Programmzählers wird
normalerweise durch den Bus 113 eingegeben, und der Befehl,
auf den der Programmzähler
zeigt, und der Befehl an der nächsten
Adresse werden in den Bus 2305 und 2306 gespeist.
Zu der Zeit eines Fehlgriffes auf den Cache wird der Befehl durch
die Speicherschnittstelle 100 geholt und durch den Bus 113 in
den Cache 2301 geschrieben. Zu dieser Zeit prüft der Konflikterfassungsschaltkreis,
ob der Konflikt zwischen dem ersten und zweiten Befehl vorhanden
ist. Wenn der Konflikt vorhanden ist, wird das Konfliktsignal 2304 gesetzt.
In dem Cache sind Bits vorgesehen, die jeweils die Konfliktbedingung
von zwei Befehlen anzeigen. Zu der Zeit eines Fehlgriffs auf den
Cache wird das Konfliktsignal 2304 hierin gespeichert.
Der erste Maskenschaltkreis empfängt
den ersten Befehl, den zweiten Befehl, das Konfliktbit und das kleinste
Bit des Programmzählers
und steuert die Signalleitung 115 zu dem ersten Befehlsregister 104,
wie in 27 gezeigt. Der
zweite Maskenschaltkreis empfängt
den zweiten Befehl, das Konfliktbit und das kleinste Bit des Programmzählers und
versorgt noch das zweite Register 105, wie in 27 gezeigt, mit dem Signal 117.
-
Wenn, wie in 27 gezeigt, das Konfliktbit und das kleinste
Bit des PC beide 0 sind, wird der erste Befehl in das erste Befehlsregister und
der zweite Befehl in das zweite Befehlsregister gespeist. Diese Operation
ist der Normalfall. Wenn das Konfliktbit 1' und das kleinste Bit des PC 0 ist,
wird der erste Befehl in das erste Befehlsregister und der NOP-Befehl in
das zweite Befehlsregister gespeist. Diese Operation ist die Verarbeitung
in dem ersten Maschinenzyklus zu der Zeit der Verarbeitung des Konfliktbefehls. Wenn
das Konfliktbit 1 und das leichteste Bit des PC 1 ist, so wird der
zweite Befehl in das erste Befehlsregister und der NOP-Befehl in
das zweite Befehlsregister gespeist. Diese Operation ist die Verarbeitung in
dem zweiten Maschinenzyklus zur Zeit der Verarbeitung des Konfliktbefehls.
Somit ist der Verarbeitungsablauf des Konfliktbefehls, erläutert mit
Bezug auf die 22, 23 und 25, durch die Verarbeitung möglich.
-
Wenn der Verzweigungsbefehl zu einer
ungeraden Adresse abzweigt, wie in 27 gezeigt, wird
nur der zweite Befehl umgesetzt, unabhängig von dem Konfliktbit, und
damit ist eine korrekte Verarbeitung möglich. Der Cache wird in jedem
Zyklus ausgelesen, aber er wird beschrieben, wenn ein Fehlzugriff
auf den Cache erfolgt, in welchem Fall dies sich über mehrere
Maschinenzyklen hinzieht. Wenn damit der Konflikterfassungsschaltkreis
zur Zeit des Schreibens in den Cache betrieben wird, so dass das
Konfliktbit im Cache gehalten wird, kann der Maschinenzyklus effektiv
gekürzt
werden.
-
28 zeigt
die Konstruktion des Befehls-Cache 2301 in 26. Gezeigt sind ein Verzeichnis 2500,
ein Datenspeicher 2501, ein Selektor 2502, ein
Adressregister 2503, ein Schreibregister 2504,
ein Komparator 2505 und ein Cache-Steuerschaltkreis 2506.
Der Cache in 28 hat
im wesentlichen denselben Aufbau wie der normale Cache, unterscheidet
sich aber darin, dass der Datenspeicher 2501 ein Feld für das Halten
eines Konfliktbits bei allen 2-Befehls-8-Byte hat und dass zum Zeitpunkt
des Lesens des Cache das leichteste Bit (0 Bit) des PC vernachlässigt wird,
so dass der erste Befehl 2305, der zweite Befehl 2306 und
das Konfliktsignal 116 eingespeist werden.
-
In 28 hat
der Datenspeicher 8 K Worte und ist die Blockgröße 32 Byte (8 Worte). Das Signal 113 von
dem Programmzähler
wird in dem Adressregister 2503 gesetzt. Die Ausgänge des
Verzeichnisses 2500 und Datenspeichers 2501 sind
mit 3 bis 12 Bit der Adresse bezeichnet. Der Komparator 2505 vergleicht
den Ausgang des Verzeichnisses und die Bits 13 bis 31 des Adressregisters.
Wenn das Ergebnis des Vergleichs keine Koinzidenz zeigt, wird ein
Signal 2508 an den Cache-Steuerschaltkreis 2506 ausgegeben.
Der Cache-Steuerschaltkreis 2506 liest
einen Block mit einem Befehlsfehlzugriff von dem Hauptspeicher und
setzt ihn in dem Datenspeicher 2501. Der Selektor 2502 empfängt das
erste und zweite Bit des Adressregisters und wählt zwei notwendige Befehle
aus dem Block. Der erste und zweite Befehl sind sicher innerhalb
desselben Blocks und nur einer von ihnen erzeugt nie einen Fehlzugriff.
-
29 zeigt
einen anderen Aufbau der Befehlseinheit 103 in 1. Gezeigt sind ein Cache-Speicher 2600,
ein Konflikterfassungsschaltkreis 2604, ein erster Maskenschaltkreis 2302 und
ein zweiter Maskenschaltkreis 2303. Der Aufbau in 29 unterscheidet sich von
dem in 26 darin, dass
der Cache kein Feld zum Halten des Konfliktbits hat und dass der
erste Befehl 2601 und der zweite Befehl 2602 des
Cache-Ausgangs angezeigt werden durch den Zykluskonflikterfassungsschaltkreis 2604. Die
Operationen des ersten Maskenschaltkreises 2302 und des
zweiten Maskenschaltkreises 2303 sind die gleichen wie
in 26. Gemäß dieser
Ausführungsform
wird, da der All-Zykluskonflikterfassungsschaltkreis
nach Lesen des Cache betrieben wird, der Maschinenzyklus ausgedehnt,
aber das Konfliktbitfeld kann innerhalb des Cache fehlen.
-
Darüber hinaus kann es gemäß dieser
Erfindung durch effektive Nutzung der Tatsache, dass zwei Befehle
zur gleichen Zeit in einem Maschinenzyklus abgearbeitet werden,
möglich
sein, den bedingten Sprungbefehl in einem speziellen Fall schneller
zu verarbeiten. Das heißt,
wenn bei dem bedingten Sprungbefehl der Bestimmungsort des Sprungs
für den
Fall, dass die Bedingung erfüllt
ist, der nächste
ist, und der nächste
Befehl (Befehl 2 in 30),
so werden die Befehle 2 und 3 unabhängig davon ausgeführt, ob
die Bedingung erfüllt
ist oder nicht und ob die W-Stufe des Befehls 1 unterdrückt wurde
oder nicht, was durch die Erfüllung
der Bedingung gesteuert wird, so dass bei Eintreten der Bedingung
der Wartezyklus eliminiert werden kann. In diesem Fall jedoch ist
der bedingte Sprungbefehl sicherlich der erste Befehl. Bei der normalen
bedingten Verzweigung tritt ein Wartezyklus auf, wenn die Bedingung
erfüllt
ist, was mit Bezug auf 14 beschrieben
wurde. Mit anderen Worten, da bei dieser Erfindung zwei Befehle
in einem Maschinenzyklus zur gleichen Zeit abgearbeitet werden,
kann die Ausführung
der Befehle auf der zweiten Befehlsseite gesteuert werden, ob die
Bedingung für
den bedingten Sprungbefehl auf der ersten Befehlsseite erfüllt ist oder
nicht, ohne fehlenden Effekt auf den Befehlsverarbeitungsablauf
von zwei Befehlseinheiten.
-
Darüber hinaus kann es bei dieser
Ausführungsform
durch effektive Nutzung der Verarbeitung von zwei Befehlen in einem
Maschinenzyklus gleichzeitig möglich
werden, das "atomare" Verarbeiten leicht
umzusetzen. Das atomare Verarbeiten ist das Verarbeiten, das immer
sequentiell abläuft
und zur Synchronisierung zwischen Prozessen herangezogen wird. 31a zeigt die Verarbeitung
in dem konventionellen Computer, und 31 zeigt
sie für
diese Ausführungsform.
In 31a gibt es die Möglichkeit, dass
ein Interrupt zwischen den Befehlen auftritt, während in 31b kein Interrupt zwischen den Befehlen
1 und 2 und zwischen den Befehlen 3 und 4 auftritt. Somit kann in 31a ein Programm für andere
Verarbeitungen zwischen beliebige Befehle treten, während in 31b der Vorteil besteht,
dass die Befehle 1 und 2 oder die Befehle 3 und 4 sicherlich hintereinander
ausgeführt
werden.
-
32 zeigt
den Aufbau einer anderen Ausführungsform
dieser Erfindung. Bei dieser Ausführungsform können 4 Befehle
in einem Maschinenzyklus gleichzeitig ausgeführt werden. Es sind eine Speicherschnittstelle 3200,
ein Programmzähler 3201,
ein Sequenzierer 3202, eine Befehlseinheit 3203,
ein erstes bis viertes Befehlsregister 3204 bis 3207,
ein erster bis vierter Decodierer 3208 bis 3211, ein
MDR 3212, ein MAR 3213, eine erste bis vierte Arithmetikoperationseinheit 3214, 3215, 3217 und 3218 und
eine Registerdatei 3216 gezeigt. Jede Arithmetikoperationseinheit
teilt sich die Registerdatei 3216. Die Operation jedes
Abschnitts ist die Gleiche wie bei der Ausführungsform in 1 und wird daher nicht noch einmal erläutert.
-
Ähnlich
kann die Parallelität
weiter gesteigert werden, aber da es ein Programm gibt, bei dem
ein Sprungbefehl in jedem mehrerer Befehle vorhanden ist, wird eine
extreme Vergrößerung der
Parallelität
in einem solchen Programm nicht sehr effektiv sein. Es ist vorzuziehen,
etwa 2 bis 4 Befehle gleichzeitig abzuarbeiten. Wenn der Grad der
Parallelität
in dem Programm mit wenigen Verzweigungen und wenigen Konflikten
weiter erhöht
wird, so wird die Leistungsfähigkeit
effektiv erhöht.
Darüber
hinaus kann, wenn der Grad der Parallelität als 2n (n
ist eine natürliche Zahl)
gewählt
wird, die Befehlseinheit leicht gesteuert werden.
-
Es wird noch eine weitere Ausführungsform dieser
Erfindung erläutert.
Bei den obigen Ausführungsformen,
soweit beschrieben, werden immer mehrere Befehle gleichzeitig verarbeitet.
Es ist auch möglich,
von normaler Verarbeitung eines Befehls in einem Maschinenzyklus
und in manchen Fällen
von der Verarbeitung von mehreren Befehlen gleichzeitig zu profitieren. 33 zeigt drei Beispiele.
In dem Beispiel in 33a wird
der erste Befehl in einem Hauptspeicher gespeichert, und der zweite
Befehl wird nur in dem Kopfabschnitt des Adressraums und in einem
ROM gespeichert. In dem Beispiel in 33b werden
der erste und zweite Befehl in dem Kopfabschnitt des Adressraums
und in einem ROM gespeichert, und in den anderen Abschnitten des Hauptspeichers
wird nur der erste Befehl gespeichert. Das Beispiel von 33c ist im wesentlichen das
Gleiche wie in 33a,
wobei der zweite Befehl, der in einem ROM gespeichert werden soll,
in den mittleren Abschnitt des Adressraums geschrieben wird. Der
Gesamtaufbau des Computers ist der gleiche wie in 1, und nur die Befehlseinheit 103 muss
verändert
werden. In dem ROM-Abschnitt ist ein Programm mit einer hohen Nutzungsrate
und mit einem hohen Grad an Parallelität geschrieben, welches Programm
durch den Aufruf einer Subroutine aus einer Routine ausgeführt wird.
Da der ROM-Abschnitt eine niedrige Kapazität haben kann, kann ein bestens
geeignetes Programm durch einen Assembler selbst ohne Compiler erzeugt
werden.
-
34 zeigt
den Aufbau der Befehlseinheit 103 in 1 zur Umsetzung des Beispiels in 33a. Gezeigt sind ein Cache 2900,
ein 4-K-Wort-ROM 2901, ein Maskenschaltkreis 2903 und ein
Maskenschaltkreissteuerschaltkreis 2902. Der Maskenschaltkreissteuerschaltkreis überwacht immer
die Adresse 113. Nur wenn die höheren Bits 12 bis 31 der Adresse
alle Null sind, wird ein effektives Signal 2904 gesetzt.
Der Maskenschaltkreis 2903 versorgt, nur wenn das effektive
Signal 2904 gesetzt ist, das zweite Register mit einem
ROM-Ausgang 2905 als Ausgang 117. Zu anderen Zeiten
liegt der NOP-Befehl an.
-
Um das Beispiel in 33c zu realisieren, muss der Maskenschaltkreissteuerschaltkreis 2902 in 34 wie in 35 gezeigt aufgebaut sein. Gezeigt sind
ein Komparator 3000 und ein Basisregister 3001.
Wenn die höheren
Bits 12 bis 31 des Basisregisters mit den höheren Bits 12 bis 31 der Adresse 113 zusammenfallen,
setzt der Komparator 3000 das effektive Signal 2904.
-
Um das Beispiel nach 33b zu realisieren, muss die Befehlseinheit 103 in 1 wie in 36 gezeigt aufgebaut sein. Die Funktionen
des ROM 2901, des Maskenschaltkreissteuerschaltkreises 2902 und
des Maskenschaltkreises 2903 sind die gleichen wie die,
die in 29 durch die
gleichen Bezugszeichen bezeichnet sind. In 36 sind ein Cache 3100, ein
4-K-Wort-ROM 3101, ein Selektorsteuerschaltkreis 3102 und
ein Selektor 3107 gezeigt. Der Selektorsteuerschaltkreis 3102 überwacht
immer die höheren
Bits 12 bis 31 der Adresse 113. Nur wenn alle diese Bits
0 sind, wird ein ROM-Auswahlsignal 3105 gesetzt. Der Selektor 3107 versorgt
das erste Befehlsregister nur mit einem ROM-Ausgangssignal 3104 als
Ausgang 115, wenn der ROM-Auswahlschaltkreis 3105 gesetzt
ist. Ansonsten wird der Cache-Ausgang 3103 angelegt.
-
Wie mit Bezug auf 33 bis 36 beschrieben
wurde, kann die Hardware reduziert werden durch gleichzeitige Verarbeitung
von mehreren Befehlen für
einen Abschnitt und Bildung dieses Abschnittes als ein ROM. Da außerdem nur
für den ROM-Abschnitt
ein am besten geeigneter Aufbau durch Assembler erreicht werden
kann, ergibt sich der Vorteil, dass es nicht notwendig ist, den
Compiler zu entwickeln, der die gleichzeitige Verarbeitung von mehreren
Befehlen betrifft. Darüber
hinaus ist es durch Umschreiben des ROM-Abschnitts möglich, die
Hochgeschwindigkeitsoperation für
jede Anwendung umzusetzen und für
jede Anwendung zu optimieren.
-
Gemäß dieser Erfindung kann, da
komplizierte Befehle in Basisbefehle zerlegt werden und mehrere
Befehle in einem Maschinenzyklus gleichzeitig gelesen und ausgeführt werden,
eine Vielzahl von Arithmetikoperationseinheiten gleichzeitig betrieben
werden und so die Verarbeitungskapazität erhöht werden.
-
Da darüber hinaus die Befehle einfache Funktionen
darstellen und so die Zahl von Pipeline-Stufen reduziert werden
kann, kann der Overhead bei Verzweigung klein gemacht werden.
-
Da darüber hinaus eine Vielzahl von
Arithmetikoperationseinheiten parallel betrieben werden, kann die
Verarbeitungszeit für
komplizierte Verarbeitungen gesenkt werden.