-
Die vorliegende Erfindung betrifft
die Steuerung einer Verzweigungsoperation bei einem Prozessor. Insbesondere
betrifft sie die Steuerung einer verzögerten Verzweigungsoperation
bei einem Prozessor, der ein verzögertes Verzweigungsverfahren
verwendet.
-
Bei der sogenannten Pipelineverarbeitung (pipeline
processing), bei der Befehle (Instruktionen) bereits ausgeführt werden,
während
der Vorgänger noch
bearbeitet wird, wird herkömmlicherweise
ein Verfahren, das verzögertes
Verzweigungsverfahren genannt wird, verwendet. Beispielhaft wird
der in 6 gezeigte Fall
betrachtet wird, bei dem Befehle über Pipelineverarbeitung, die
aus den drei Arbeitsschritten Befehlsabruf (F), Befehlsdecodierung
(D), und Befehldurchführung
(E) besteht, durchgeführt werden.
Entsprechend der Pipelineverarbeitung, die in 6 gezeigt wird, folgt auf die Decodierung
eines Verzweigungsbefehls (Verzweigungsinstruktion) das Holen eines
Befehls am Verzweigungsbestimmungsort. Daraus resultiert ein unbelegter
Slot (Delay-Slot) bei wenigstens einem Arbeitsschritt. Die Zahl
der resultierenden unbelegten Slots ist durch die Zahl der Arbeitsschritte
ungleich den Abruf- und Durchführungsarbeitsschritten
bei der Pipelineverarbeitung gegeben.
-
„Verzögerte Verzweigung" ist ein Verfahren, bei
dem ein ungebrauchter unbelegter Slot eliminiert wird, indem in
den Delay-Slot ein Befehl eingefügt wird,
der an einer Adresse steht, die einem Verzweigungsbefehl folgt.
Indem man dieses Verfahren verwendet, wird eine verbesserte Arbeitsleistung
von einem Prozessor erwartet (vgl. Japan. offengelegte Patentveröffentlichung
HEI 4-127237 und Japan. offengelegte Patentveröffentlichung HEI 3-122718).
-
Ein bedingter Verzweigungsbefehl
stellt fest, ob eine Verzweigung auf Grundlage einer bedingten Markierungsfahne,
die das Resultat der Durchführung
eines Ausführungsbefehls,
eines Übergangsbefehls
oder der dergleichen reflektiert, implementiert ist oder nicht.
Es gab ein herkömmliches
Verfahren, bei dem die Flexibilität, mit der die Befehlsabarbeitungsreihenfolge
festgelegt ist, durch das Steuern des Überschreibens einer bedingten
Markierungsfahne erhöht
wird. Bei einem RISC Prozessor SPARC wird z. B. ein Steuerungsbit
für die
Bestimmung, ob eine bedingte Markierungsfahne überschrieben wurde oder nicht,
im Code eines Ausführungsbefehls
bereit gestellt. Wenn der Wert des Kontrollbits "1" ist,
so spiegelt sich das Resultat der Operation in der bedingten Markierungsfahne
wieder. Wenn der Wert des Kontrollbits "0" ist,
so wird die bedingte Markierungsfahne nicht überschrieben (vgl. "SPARK Architecture
Manual," Sun Microsystems Inc.,
1991). Dieses Verfahren ermöglicht,
zu ermitteln, ob die bedingte Markierungsfahne für jeder Befehl neu geschrieben
wird oder nicht, so dass die Flexibilität, mit der die Befehlsabarbeitungsreihenfolge in
einem Compiler oder in dergleichen festgelegt ist, erhöht wird.
-
Jedoch treten bei den herkömmlichen
Verfahren die folgenden Probleme auf.
-
Erstens ist bei dem erwähnten verzögerten Verzweigungsverfahren
die Befehlsabarbeitungsreihenfolge komplex, wenn eine Reihe von
verzögerten Verzweigungsbefehlen
nacheinander ausgegeben wird.
-
7 zeigt
ein Beispiel eines Programms auf dem Assemblerniveau, wenn eine
Reihe von verzögerten
Verzweigungsbefehlen nacheinander gegeben wird. Ein erster verzögerter Verzweigungsbefehl br200
(der eine Verzweigung zu einer Adresse 200 spezifiziert, wenn eine
Bedingung erfüllt
ist), liegt an einer Adresse 100. Ein zweiter verzögerter Verzweigungsbefehl
br400 (der eine Verzweigung zu einer Adresse 400 spezifiziert, wenn
eine Bedingung erfüllt ist),
liegt an einer Adresse 101. 8 zeigt
eine Beziehung zwischen dem Auftreten oder dem Nicht-Auftreten einer
Verzweigung, die durch jeden der verzögerten Verzweigungsbefehle
und die Befehlsabarbeitungsreihenfolge bei der Durchführung des
Programms, das in 7 gezeigt
ist, spezifiziert ist. Die Arbeitsweise des Programms, das in 7 gezeigt wird, ist in die
zwei Fälle
aufgeteilt, in denen eine Verzweigung durch den ersten verzögerten Verzweigungsbefehl
br200 verursacht wird oder nicht, und dann weiter in die zwei Fälle geteilt,
in denen eine Verzweigung durch den zweiten verzögerten Verzweigungsbefehl br400
verursacht wird oder nicht. Infolgedessen muss eine Gesamtanzahl
von vier Fällen
berücksichtigt
werden, wie in 8 gezeigt
ist.
-
Im Fall, bei dem die Bedingung für jeden
der ersten und zweiten verzögerten
Verzweigungsbefehle br200 und br400 erfüllt ist und Verzweigungen auftreten,
wird der Befehl an der Adresse 200 geholt, weil die Verzweigungsbedingung
für den
ersten verzögerten
Verzweigungsbefehl br200 erfüllt
ist (der Befehl an der Adresse 200 wird mit (200) gekennzeichnet),
und dann wird der Befehl an der Adresse 400 geholt, weil die Verzweigungsbedingung
für den zweiten
verzögerten
Verzweigungsbefehl br400 erfüllt
ist (der Befehl an der Adresse 400 wird mit (400) gekennzeichnet),
wie in 9 gezeigt ist.
Infolgedessen führt
der Prozessor eine schwierige Operation durch, bei der er zum Bestimmungsort
(Adresse 200) der Verzweigung springt, die durch den ersten verzögerten Verzweigungsbefehl
br200 verursacht wird, um nur einen Befehl auszuführen, und
springt dann weiter zum Bestimmungsort (Adresse 400) der Verzweigung,
die durch den zweiten verzögerten
Verzweigungsbefehl br400 verursacht wird, um einen Befehl auszuführen, wie
in 8 gezeigt ist.
-
Dies beeinträchtigt die Lesbarkeit des Programms
auf dem Assemblerniveau gravierend und verursacht einen Programmfehler
im Programm.
-
Insbesondere würde ein unerfahrener Programmierer,
der keine umfassende Kenntnisse über verzögerte Verzweigungsverfahren
hat, ein Programm schreiben, ohne mit solch einer Operation zu rechnen,
so dass das Programm unvermeidlich an einem Programmfehler leidet.
Da zusätzlich
der Programmfehler nur dann erkannt wird, wenn einzelne Bedingungen
für aufeinanderfolgende
verzögerte Verzweigungsbefehle
erfüllt
sind, um Verzweigungen zu bewirken, ist es extrem schwierig, den
Programmfehler vorab zu beheben. Oft kann der Programmfehler nicht
entdeckt werden, bevor der Apparat aktiviert ist.
-
Ein erfahrener Programmierer, der
umfassenderes Wissen über
verzögerte
Verzweigungsverfahren hat, würde
zum Vermeiden des Problems eine geeignete Änderung im Programm durchführen, indem
er einen Nicht-Ausführ-Befehl
(NOP: no-operate) zwischen den aufeinanderfolgenden verzögerten Verzweigungsbefehlen
einfügt.
Da jedoch die Änderung
mühsam
ist, wird dies häufig
vergessen. Wenn der Prozessor außerdem eine erhöhte Zahl
von Verzögerungslots
hat, so ist es notwendig, so viele Nicht-Ausführ-Befehle einzufügen, wie Delay-Slots vorhanden
sind, so dass das Programm unnötig
aufgebläht
wird und der Speicherplatz zum Speichern des Programms demzufolge
erhöht
wird.
-
Das Problem kann selbst dann auftreten, wenn
die verzögerten
Verzweigungsbefehle nicht nacheinander erteilt werden, aber im Programm
in der Reihenfolge verhältnismäßig nahe
beieinander sind. Obgleich die 8 und 9 auf der Annahme basieren,
dass die Anzahl der Delay-Slots im Prozessor gleich 1 ist, tritt
ein ähnliches
Problem auf, wenn der Prozessor eine größere Zahl von Delay-Slots aufweist
und der Abstand zwischen aufeinanderfolgenden verzögerten Verzweigungsbefehlen
im Vergleich zur Anzahl der Delay-Slots im Prozessor klein ist, was
die Reihenfolge verkompliziert, in der die Befehle durchgeführt werden,
wenn einzelne Verzweigungsbedingungen für die Befehle erfüllt sind.
-
Es gibt einen anderen Typ von Prozessor,
in dem ein Kontrollbit im Code eines verzögerten Verzweigungsbefehls
vorgesehen ist, um zu ermitteln, ob eine verzögerte Verzweigung implementiert
ist oder nicht (vgl. Japan. offengelegte Patentveröffentlichung
HEI 4-127237). Wenn das Kontrollbit 0 ist, so führt der Prozessor einen Befehl,
der in einem Delay-Slot abgelegt ist, nicht durch, wenn eine Verzweigung
aktiviert ist. 10 zeigt
eine Beziehung zwischen dem Auftreten oder dem Nicht-Auftreten einer Verzweigung,
die durch jeden der verzögerten
Verzweigungsbefehle spezifiziert ist, und der Befehlsabarbeitungsreihenfolge,
wenn das in 7 gezeigte Programm
von einem derartigen Prozessor durchgeführt wird. In 10, zeigt "***" an,
dass der im Delay-Slot abgelegte Befehl nicht durchgeführt wird. Falls
das Kontrollbit für
den ersten verzögerten
Verzweigungsbefehl br200 auf 0 eingestellt ist, stellt in diesem
Fall des ersten verzögerten
Verzweigungsbefehl br200 fest, ob eine Verzweigung zur Adresse 200 implementiert
ist oder nicht, und der zweite verzögerte Verzweigungsbefehl br400
wird nur dann durchgeführt,
wenn keine Verzweigung auftritt, damit die Lesbarkeit des Programms
auf Assemblerniveau nicht beeinträchtigt wird.
-
Jedoch erhöht das Vorsehen des Kontrollbits für das Ermitteln
des Auftretens oder des Nicht-Auftretens einer verzögerten Verzweigung
im Befehlscode die Bitbreite des Befehlscodes um 1 Bit, so dass die
Speicherkapazität
zum Speichern des Programms nachteilig erhöht wird. Insbesondere stellt eine
erhöhte
Speicherkapazität
eine fatale Beeinträchtigung
für eine
tragbare Telekommunikationsvorrichtung dar, was Größe, Energieverbrauch,
Produktionskosten und dergleichen anbelangt. Außerdem benötigt der Prozessor wegen des
Kontrollbits im Befehlscode der verzögerten Verzweigung einen zusätzlichen
Schaltkreis zum Steuern der verzögerten
Verzweigung, der im Befehlsdecoder des Prozessors bereitgestellt
werden muss.
-
In dem Fall, bei dem die Bitbreite
des Befehlscodes vorab durch Spezifikationen festgelegt ist, schränkt selbst
das Bereitstellen eines einzigen Kontrollbits das Vorrichtungsdesign
ein. Wenn der Befehlscode z. B. aus 24 Bits besteht, so können höchstens
die wenigen Bits, die nicht benötigt
werden, um einen Befehlstyp, eine spezifizierte Adresse und dergleichen
darzustellen, für
das Design verwendet werden. Daher kann sogar ein einziges Kontrollbit
die Flexibilität
beim Design erheblich verringern.
-
Die vorliegende Erfindung wurde gemacht, um
eine Steuerung von verzögerten
Verzweigungen bei einem Prozessor, der ein verzögertes Verzweigungsverfahren
verwendet, zu implementieren, bei der eine Befehlsabarbeitungsreihenfolge
nicht kompliziert ist und die Lesbarkeit eines Programms auf Assemblerniveau
verbessert wird, ohne dass dafür ein
Kontrollbit in einem Befehlscode bereitgestellt werden muss.
-
Dies wird durch das Verfahren zum
Steuern einer Verzweigungsoperation mit den Merkmalen des Anspruchs
1 und durch den verzögerten
Verzweigungssteuerschaltkreis mit den Merkmalen des Anspruchs 2
gelöst.
-
Weitere Ausführungsformen werden in den abhängigen Ansprüchen beschrieben.
-
Speziell stellt die vorliegende Erfindung
ein Verfahren zum Steuern einer verzögerten Verzweigungsoperation
bei einem Prozessor, der ein verzögerten Verzweigungsverfahren
verwendet, bereit. Wenn eine Verzweigung in einem spezifizierten
Zyklus oder in spezifizierten Zyklen aus einer ununterbrochenen
Reihenfolge von Zyklen, deren Anzahl gleich der Anzahl der Delay-Slots
im Prozessor ist, unmittelbar vor einem Durchführungszyklus für einen verzögerten Verzweigungsbefehl
aufgetreten ist, so wird beim Durchführen des verzögerten Verzweigungsbefehls
die Verzweigung deaktiviert, die durch den verzögerten Verzweigungsbefehl spezifiziert wird.
-
Selbst wenn die Verzweigungsbedingung
für den
verzögerten
Verzweigungsbefehl erfüllt
ist, wird gemäß dem Verfahren
die Verzweigung deaktiviert, wenn eine Verzweigung im spezifizierten
Zyklus vor dem Ausführungszyklus
für den
verzögerten
Verzweigungsbefehl aufgetreten ist, so dass die Verzweigung nicht
implementiert wird. befehl aufgetreten ist, so dass die Verzweigung
nicht implementiert wird. Daher wird die Befehlsabarbeitungsreihenfolge selbst
in dem Fall nicht verkompliziert, bei dem einzelne Verzweigungsbedingungen
für verzögerte Verzweigungsbefehle
erfüllt
sind, die im Verhältnis
zur Anzahl der Delay-Slots im Prozessor nahe beieinander liegen,
was die Lesbarkeit des Programms auf Assemblerniveau verbessert.
-
Die vorliegende Erfindung stellt
auch – als
einen Schaltkreis, der das verzögerte
Verzweigungssteuerverfahren implementiert – einen Verzögerte-Verzweigung-Steuerschaltkreis
(nachfolgend als verzögerter
Verzweigungssteuerschaltkreis bezeichnet) bereit, der in einem Prozessor
vorgesehen wird, der ein verzögertes
Verzweigungsverfahren verwendet, um eine Verzweigungsoperation zu
steuern, wobei der Schaltkreis umfasst: einen Verzweigungsinformationsspeicherschaltkreis
zum Speicherung von Information, welche angibt, ob eine Verzweigung
in einem spezifizierten Zyklus oder in spezifizierten Zyklen einer
ununterbrochenen Reihe von Zyklen, deren Anzahl gleich der Anzahl
der Delay-Slots im Prozessor ist, unmittelbar vor einem aktuellen
Durchführungszyklus
aufgetreten ist oder nicht; und einen Verzweigungsbeurteilungsschaltkreis,
um den Prozessor beim Ausführen
eines verzögerten
Verzweigungsbefehls anzuweisen, eine Verzweigung nur dann zu implementieren,
wenn eine Verzweigungsbedingung für den verzögerten Verzweigungsbefehl erfüllt ist
und der Verzweigungsinformationsspeicherschaltkreis Information
speichert, die angibt, dass keine Verzweigung im spezifizierten
Zyklus oder in den spezifizierten Zyklen implementiert worden ist.
-
Vorzugsweise umfasst der Verzweigungsinformationsspeicherschaltkreis
ein Schieberegister, das aus Flip-Flops besteht, die in Reihe geschaltet sind
und deren Anzahl gleich der Anzahl der Delay-Slots im Prozessor
ist, wobei das Schieberegister ein Ausgangssignal vom Verzweigungsbeurteilungsschaltkreis
empfängt
und ein dabei gehaltenes Signal jedes Mal, wenn ein Befehl im Prozessor
durchgeführt
wird, verschiebt.
-
Bei dieser Anordnung zeigt das Signal,
das durch jeden Flip-Flop des Schieberegister gehalten wird, das
Auftreten oder Nicht-Auftreten einer Verzweigung in jeder der ununterbrochenen
Reihen von Zyklen, deren Anzahl gleich der Anzahl der Delay-Slots
im Prozessor ist, unmittelbar vor einem aktuellen Durchführungszyklus
an. Folglich kann der Verzweigungsinformationsspeicherschaltkreis
einfach strukturiert sein.
-
Vorzugsweise umfasst der Verzweigungsinformationsspeicherschaltkreis:
einen Zähler
für das Einleiten
des Zählens
der Zahl der Befehle, die vom Prozessor durchgeführt werden, wenn der Verzweigungsbeurteilungsschaltkreis,
den Prozessor anleitet, eine Verzweigung zum implementieren und
das Zählen
zu beenden, wenn die abgezählte
Zahl die Zahl der Delay-Slots im Prozessor erreicht; und einen Verriegelungsschaltkreis
zum Löschen
eines Ausgangssignals aus diesem, wenn der Verzweigungsbeurteilungsschaltkreis
den Prozessor anleitet, eine Verzweigung zu implementieren, und
zum Einstellen des Ausgangssignals, wenn der Zähler das Zählen beendet.
-
Mit dieser Anordnung wird das Ausgangssignal
vom Verriegelungsschaltkreis während
der Periode, nachdem der Verzweigungsbeurteilungsschaltkreis den
Prozessor angeleitet hat, eine Verzweigung zu implementieren, bis
die Anzahl von Befehlen durchgeführt
wurde, die gleich der Anzahl der Slots im Prozessor ist, gelöscht. Mit
anderen Worten: das Ausgangssignal des Verriegelungsschaltkreises
wird gelöscht,
wenn eine Verzweigung unmittelbar vor dem aktuellen Durchführungszyklus
aufgetreten ist in irgendeiner der ununterbrochenen Reihen von Zyklen,
deren Anzahl gleich der Anzahl von Delay-Slots im Prozessor ist, während es
eingestellt wird, wenn keine Verzweigung aufgetreten ist. Folglich
kann der Verzweigungsinformationsspeicherschaltkreis einfach strukturiert
sein.
-
1 zeigt
die Struktur eines verzögerten Verzweigungssteuerschaltkreises
gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
2 veranschaulicht
die Arbeitsweise des verzögerten
Verzweigungssteuerschaltkreises gemäß der Ausführungsform der vorliegenden
Erfindung, die in 1 gezeigt
wird;
-
3 zeigt
ein anderes Beispiel des verzögerten
Verzweigungssteuerschaltkreises gemäß der Ausführungsform der vorliegenden
Erfindung;
-
4 ist
ein Blockdiagramm, welches die Struktur eines Prozessors zeigt,
der eine Pipelineverarbeitungsverfahren verwendet und der den verzögerten Verzweigungssteuerschaltkreis
gemäß der Ausführungsform
der vorliegenden umfasst;
-
5 ist
ein Flussdiagramm, welches die Arbeitsweise des verzögerten Verzweigungssteuerschaltkreises
gemäß der Ausführungsform
der vorliegenden Erfindung im Prozessor veranschaulicht, der in 4 gezeigt wird;
-
6 zeigt
den Fluss der Pipelineverarbeitung während der Ausführung eines
Verzweigungsbefehls;
-
7 zeigt
ein Beispiel eines Programms auf Assemblerniveau, bei dem nacheinander
verzögerte
Verzweigungsbefehle ausgegeben werden;
-
8 zeigt
eine Beziehung zwischen dem Auftreten oder dem Nicht-Auftreten einer
Verzweigung bei einem verzögerten
Verzweigungsbefehl und eine Befehlsabarbeitungsreihenfolge, wenn
das in 7 gezeigte Programm
ausgeführt
wird;
-
9 zeigt
den Fluss der Pipelineverarbeitung, wenn einzelne Verzweigungszustände für die aufeinanderfolgenden
verzögerten
Verzweigungsbefehle während
der Ausführung
des Programms erfüllt sind,
das in 7 gezeigt ist;
und
-
10 zeigt
eine Beziehung zwischen dem Auftreten oder dem Nicht-Auftreten einer
Verzweigung bei verzögerten
Verzweigungsbefehlen und Befehlsabarbeitungsreihenfolge, wenn das
Programm, das in 7 gezeigt
ist, durch einen Prozessortyp ausgeführt wird, der einen Befehlscode,
der mit einen verzögerten
Verzweigungskontrollbit versehen ist, ausführt.
-
Zuerst wird das Prinzip der Steuerung
von verzögerten
Verzweigungen (kurz: verzögerte
Verzweigungssteuerung) gemäß der vorliegenden
Erfindung beschrieben.
-
Wie eingangs bei der Beschreibung
des Standes der Technik beschrieben wurde, führt ein Prozessor, der ein
verzögertes
Verzweigungsverfahren verwendet, eine so schwierige Operation durch, dass
dies ernsthaft die Lesbarkeit eines Programms auf Assemblerniveau
beeinträchtigt,
nur wenn einzelne Verzweigungsbedingungen für aufeinanderfolgende verzögerte Verzweigungsbefehle
erfüllt
sind. Wenn die Verzweigungsbedingungen nicht erfüllt sind, ist die Operation,
die durch die verzögerten
Verzweigungsbe fehle bewirkt wird, dieselbe wie diejenige, die durch
einen NOP-Befehl (Nicht Ausführen) bewirkt
wird, die mit im wesentlichen keiner Ausführung vergleichbar ist.
-
Wenn die einzelnen Zweibedingungen
für die verzögerten Verzweigungsbefehlen
erfüllt
sind, so kann die Operation, die die Lesbarkeit des Programms auf
Assemblerniveau gravierend beeinträchtigt, unter solcher Steuerung
verhindert werden, dass die Verzweigungsbedingung für den verzögerten Verzweigungsbefehl
im Delay-Slot ständig
nicht erfüllt ist.
-
1 zeigt
die Struktur eines verzögerten Verzweigungssteuerschaltkreises
gemäß einer
Ausführungsform
der vorliegenden Erfindung, die auf diesem Prinzip basiert. In der
Zeichnung sind gezeigt: ein Schieberegister 11 als Verzweigungsinformationsspeicherschaltkreis;
ein UND-Gate 12 als ein Verzweigungsbeurteilungsschaltkreis,
der ein Verzweigungshinweissignal SI ausgibt; ein Inverter 13 für das Invertieren
des Verzweigungshinweissignal SI, das vom UND-Gate ausgegeben wurde,
und das Eingeben des erhaltenen Signal in das Schieberegister 11.
-
Das Schieberegister 11 besteht
aus Flip-Flops, die in gleicher Anzahl wie die Delay-Slots in einem Prozessor
vorliegen. In jedem Zyklus oder jedes Mal, wenn ein Befehl vom Prozessor
ausgeführt
wird, empfängt
das Schieberegister 11 das Verzweigungshinweissignal SI,
das durch den Inverter 13 bei der Verschiebung des Signals
invertiert wird, während
das gehaltene Signal verschoben wird. Kurz gesagt: das Schieberegister 11 speichert
die Informationen, die das Auftreten oder Nicht-Auftreten einer
Verzweigung in jedem Zyklus aus einer ununterbrochenen Reihe von
Zyklen, die genau so zahlreich sind wie die Delay-Slots im Prozessor,
unmittelbar bevor der aktuelle Zyklus ausgeführt wird, anzeigt und gibt
die gespeicherten Informationen als ein Verzweigungsinformationsspeichersignal
SR in das UND-Gate 12 ein.
-
Das UND-Gate 12 gibt das
Verzweigungshinweissignal SI nur aus, wenn es ein Verzweigungsausführsignal
SEa wegen der erfüllten
Verzweigungsbedingung für
den Verzweigungsbefehl empfängt
und das Verzweigungsinformationsspeichersignal SR, das vom Schieberegister 11 empfangen
wird, anzeigt, dass zuvor keine Verzweigung aufgetreten ist.
-
So speichert der verzögerte Verzweigungssteuerschaltkreis,
der in 1 gezeigt ist,
im Schieberegister 11 Information, die anzeigt, ob eine
vorangegangene Verzweigung durch einen Verzweigungsbefehl in jeder
der ununterbrochenen Reihenfolge von Zyklen, die genauso zahlreich
wie Delay-Slots im Prozessor sind, unmittelbar vor dem Ausführen des aktuellen
Zyklus bewirkt wurde oder nicht, und deaktiviert unbedingt eine
Verzweigung, solange das Schieberegister 11 das Auftreten
einer vorangegangenen Verzweigung speichert.
-
2 veranschaulicht
die Arbeitsweise des verzögerten
Verzweigungssteuerschaltkreises, der in 1 gezeigt ist, wenn das Programm, das
in 7 gezeigt ist, über Pipelineverarbeitung
ausgeführt wird.
In 2 wird die Zahl von
Delay-Slots im Prozessor zu 1 angenommen. Wie in 2 gezeigt ist, wird, wenn eine Verzweigungsbedingung
beim Betrieb des in 1 gezeigten
verzögerten
Verzweigungssteuerschaltkreis erfüllt ist, eine Verzweigung aktiviert,
wenn die Verzweigungsinformation, die im Schieberegister 11 gespeichert
ist, „unwahr" ist, während eine
Verzweigung deaktiviert wird, wenn die Verzweigungsinformation,
die im Schieberegister 11 gespeichert ist, „wahr" ist. Demzufolge
ist, wenn die verzögerten
Verzweigungsbefehle nacheinander erteilt werden und eine Verzweigung
durch den ersten bedingten Verzweigungsbefehl br200 verursacht worden
ist, der zweite bedingte Verzweigungsbefehl br400 ständig unerfüllt.
-
Obgleich das Schieberegister 11,
das aus Flip-Flops besteht, die in gleicher Anzahl wie die Delay-Slots
vorliegen, bei dem in 1 gezeigten
verzögerten
Verzweigungssteuerschaltkreis bereit gestellt wird, um Verzweigungsinformation
für die
Anzahl von Delay-Slots
zu speichern, so können
ein Zähler 16 und
ein RS Verriegelungsschaltkreis 17 anstelle des Schieberegisters 11 benutzt
werden, wie in 3 gezeigt
ist. Im verzögerten
Verzweigungssteuerschaltkreis, der in 3 gezeigt
ist, besteht der Verzweigungsinformationsspeicherschaltkreis aus dem
Zähler 16 und
dem RS Verriegelungsschaltkreis 17. Das Verzweigungshinweissignal
SI löscht
den RS Verriegelungsschaltkreis 17, während die Zähloperation des Zählers 16 beginnt.
Der Zähler 16 führt jedes Mal
eine Zähloperation
durch, wenn der Prozessor einen Befehl ausführt und stellt den RS Verriegelungsschaltkreis 17 ein,
wenn die abgezählte
Zahl die Anzahl der Delay-Slots erreicht. Infolgedessen wird ein
Ausgangssignal des RS Verriegelungsschaltkreis 17 nur dann
eingestellt, wenn keine Verzweigung in den Zyklen, die genauso zahlreich
wie die Delay-Slots sind, unmittelbar vor dem aktuellen Zyklus aufgetreten
ist. Das Ausgangs signal des RS Verriegelungsschaltkreises 17 wird
als das Verzweigungsinformationsspeichersignal SR in das UND-Gate 18 eingegeben,
das die Ausgabe des Verzweigungshinweissignal SI, das auf dem Verzweigungsinformationsspeichersignal
SR basiert, steuert. Auf diese Weise ist eine Verzweigung während der
Periode deaktiviert, nachdem eine Verzweigung durchgeführt wurde,
bis Befehle in einer Anzahl, die genauso groß ist, wie die Zahl der Delay-Slots,
ausgeführt
worden sind.
-
Selbst wenn der Verzweigungsbefehl
ein unbedingter Verzweigungsbefehl im verzögerten Verzweigungssteuerschaltkreis
ist, der in den 1 und 3 gezeigt ist, so ist es
nicht notwendig, bestimmte Maßnahmen
zu ergreifen, wenn der unbedingte Verzweigungsbefehl als ein bedingter
Verzweigungsbefehl betrachtet wird, der ständig eine Verzweigung aktiviert.
-
Es ist nicht unbedingt erforderlich,
das Auftreten oder Nicht-Auftreten einer Verzweigung in jedem aus
der ununterbrochenen Reihe von Zyklen, deren Anzahl gleich der Anzahl
der Delay-Slots ist, unmittelbar vor dem Ausführen des aktuellen Zyklus zu
speichern. Es ist auch möglich,
das Auftreten oder Nicht-Auftreten einer Verzweigung in einem Teil
der ununterbrochenen Reihe von Zyklen, deren Anzahl gleich der Anzahl
der Delay-Slots
ist, unmittelbar vor dem Ausführen
des aktuellen Zyklus als Bedingung für das Aktivieren oder Deaktivieren
einer Verzweigung zu verwenden. Beim verzögerten Verzweigungssteuerschaltkreis,
der in 1 gezeigt ist,
werden z. B. nur Ausgangssignale von den Flip-Flops, die das Schieberegister 11 bilden
und den Zyklen entsprechen, in denen das Auftreten oder das Nicht-Auftreten
einer Verzweigung als die Bedingung verwendet wird, richtig als
das Verzweigungsinformationsspeichersignal SR in das UND-Gate eingegeben.
-
4 ist
ein Blockdiagramm, welches die Struktur eines Prozessors zeigt,
der die Pipelineverarbeitung durchführt und der den verzögerten Verzweigungssteuerschaltkreis
gemäß der Ausführungsform
der vorliegenden Erfindung umfasst. In 4 werden die Teile, die nicht unmittelbar
mit der verzögerten
Verzweigungssteuerung und der Bedingungsfahneüberschreibsteuerung, die in 4 gezeigt sind, zusammenhängen, in
einer vereinfachten Darstellung gezeigt.
-
In 4 ist
ein Befehlsspeicher 101 ein Speicher für die Speicherung eines Befehlscodes, der
einen Befehl ausgibt, der von einem Programmzähler (PC) 102 an einen
Befehlsdecoder 110 adressiert wird. Der Befehlsdecoder 110 umfasst:
einen Verzweigungsbefehlsdecoder 111, einen Vergleichsbefehlsdecoder 112;
und einen Ausführungsbefehlsdecoder 113.
Der Verzweigungsbefehlsdecoder 111 decodiert selektiv einen
Verzweigungsbefehl unter den Befehlen, die vom Befehlsspeicher 101 eingegeben
werden, und gibt das Verzweigungssignal SDb aus, während durch
Referenzieren des Bedingungsfahnenregisters 103 beurteilt
wird, ob eine Verzweigung aktiviert ist oder nicht, und ein Verzweigungsaktivierungssignal
SDa ausgegeben wird, wenn eine Verzweigung aktiviert ist. Der Vergleichsbefehlsdecoder 112 decodiert
selektiv eine Vergleichsbefehl unter den Befehlen, die vom Befehlsspeicher 101 eingegeben
werden, und gibt das Vergleichssignal aus. Der Ausführungsbefehlsdecoder 113 decodiert
einen Ausführungsbefehl
unter den Befehlen, die vom Befehlsspeicher 101 eingegeben
werden, und gibt das Ausführungssignal
SDd aus. Das Verzweigungsaktiviersignal SDa, das Verzweigungssignal
SDb, das Vergleichssignal SDc und das Ausführungssignal SDd werden durch
ein Verzweigungsaktivierausführsignal
SEa bzw. Verzweigungsausführsignal
SEd bzw. Vergleichsdurchführsignal
SEc und Operationssignal SDd, welche Taktsignale beim Durchführungsstadium
sind, werden durch einen Verzögerungsschaltkreis
(FF) 104 zeitlich festgelegt (getaktet).
-
Ein verzögerte Verzweigungssteuerschaltkreis 120 hat
die gleiche Struktur wie der verzögerte Verzweigungssteuerschaltkreis,
der in 1 gezeigt ist.
Der verzögerte
Verzweigungssteuerschaltkreis 120 besteht aus einem Verzweigungsinformationsspeicherschaltkreis 121,
der aus einem einzelnen Flip-Flop besteht, einem invertierenden
Gate 122 und einem UND-Gate 123, und gibt als
ein Verzweigungsaktivierausführsignal
SEa und ein UND-Signal zwischen dem Verzweigungsaktivierausführsignal SEa
und einem Ausgangssignal des Verzweigungsinformationsspeicherschaltkreises 121 aus.
Ein Wähler 105 wählt auf
das Verzweigungshinweissignal SI hin ein Eingangssignal zu einem
PC102. Das Verzweigungshinweissignal SI wird im Verzweigungsinformationsspeicherschaltkreis 121 gehalten.
-
Die Operation der verzögerten Verzweigungssteuerung
gemäß der Ausführungsform
der vorliegenden Erfindung im Prozessor, der in 4 gezeigt ist, wird unter Bezugnahme
auf das Flussdiagramm beschrieben, das in 5 gezeigt ist.
-
Zuerst wird im Schritt ST11 beurteilt,
ob der durchzuführende
Befehl ein verzögerter
Verzweigungsbefehl ist oder nicht. Wenn der durchzuführende Befehl
kein verzögerter
Verzweigungsbefehl ist, geht der ganze Prozess ohne Verzweigung
richtig zum Schritt ST15 über.
Wenn der durchzuführende Befehl
ein verzögerter
Verzweigungsbefehl ist, fährt der
ganze Prozess mit dem Schritt ST12 fort, in dem beurteilt wird,
ob der Befehl, der im unmittelbar vorangegangenen Zyklus ausgeführt wurde,
eine verzögerter
Verzweigungsbefehl ist und eine Verzweigung aufgetreten ist, oder
nicht. Wenn der Befehl, der im unmittelbar vorangegangenen Zyklus
ausgeführt wurde,
ein verzögerter
Verzweigungsbefehl ist und eine Verzweigung aufgetreten ist, fährt der
ganze Schritt ohne Verzweigung mit Schritt ST15 fort. Wenn der Befehl,
der im unmittelbar vorangegangenen Zyklus ausgeführt wurde, kein verzögerten Verzweigungsbefehl
ist, fährt
der ganze Prozess mit dem Schritt ST13 fort, in dem beurteilt wird,
ob die Verzweigungsbedingung erfüllt
ist oder nicht. Wenn die Verzweigungsbedingung erfüllt ist,
fährt der
ganze Prozess mit den Schritt ST14 mit einer Verzweigung fort. Wenn
die Verzweigungsbedingung nicht erfüllt ist, fährt der ganze Prozess mit dem
Schritt ST15 ohne Verzweigung fort.
-
Bei einer speziellen Operation des
Prozessors, der in 4 gezeigt
ist, wird das Verzweigungshinweissignal SI „unwahr", wenn verzögerte Verzweigungsbefehle nacheinander
erteilt werden und der erste verzögerte Verzweigungsbefehl keine
Verzweigung bewirkt hat. Demgemäß wird ein
Ausgangssignal vom invertierenden Schaltkreis 122, der
mit dem Verzweigungsinformationsspeicherschaltkreis 121 im
verzögerten
Verzweigungssteuerschaltkreis 120 verbunden ist, auf den
folgenden verzögerten
Verzweigungsbefehl hin „wahr", so dass das Auftreten oder
Nicht-Auftreten einer Verzweigung durch das Verzweigungsausführsignal
SEa bestimmt wird. Wenn der erste verzögerte Verzweigungsbefehl andererseits
eine Verzweigung bewirkt hat, wird das Verzweigungshinweissignal
SI „wahr", so dass ein Ausgangssignal
vom invertierenden Schaltkreis 122, der mit dem Verzweigungsinformationsspeicherschaltkreis 121 im
verzögerten
Verzweigungssteuerschaltkreis 120 verbunden ist, als Antwort
auf den nachfolgenden verzögerten
Verzweigungsbefehl „unwahr" wird. Daher wird
das Verzweigungshinweissignal SI „unwahr", ungeachtet des Verzweigungsausführsignal
SEa, das ständig
eine Verzweigung deaktiviert. Wenn die verzögerte Verzweigungsbefehle nacheinander
ausgegeben werden, so verursacht der erste verzögerte Verzweigungsbefehl ofensicht lich
die gleiche Operation, die durch einen nicht-verzögerten Verzweigungsbefehl
verursacht wird.
-
Obgleich angenommen wird, dass die
Zahl von Delay-Slots beim Prozessor, der in 4 gezeigt ist, gleich 1 ist, und der
Verzweigungsinformationsspeicherschaltkreis 121 aus einem
einzigen Flip-Flop besteht, versteht es sich von selbst, dass das
Schieberegister 11, wenn die Anzahl von Delay-Slots 2 oder
mehr beträgt,
mit einer gleichen Anzahl von Flip-Flops wie die der Delay-Slots
ausgestattet werden kann, statt dass das UND Signal zwischen einzelnen
Ausgangssignalen der Flip-Flops als ein Deaktiviersignal für das Verzweigungsaktivierausführsignal
SEa, wie in 1 gezeigt,
oder stattdessen der Zähler 16 und
der RS Verriegelungsschaltkreis 17 bereitgestellt werden
können,
um den verzögerten
Verzweigungssteuerschaltkreis 120 zu implementieren, wie
in 3 gezeigt.
-
Wie vorangehend beschrieben wurde,
kann mit der verzögerten
Verzweigungssteuerung gemäß der vorliegenden
Ausführungsform,
das Programm auf Assemblerniveau seine Lesbarkeit beibehalten, selbst
wenn verzögerte
Verzweigungsbefehle nacheinander erteilt werden. Außerdem kann
ein Schaltkreis, der das verzögerte
Verzweigungssteuerverfahren gemäß der vorliegenden
Ausführungsform
implementiert, durch eine einfache Struktur implementiert werden.
Wenn z. B. die Zahl von Delay-Slots im Prozessor gleich 1 ist, so
kann der Schaltkreis durch einen einfachen Schaltkreis implementiert
werden, der aus einem einzigen Flip-Flop mit einem invertierenden
Ausgang und einem einzigen UND-Gate besteht.