-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung betrifft einen Mikroprozessor nach dem Oberbegriff
von Anspruch 1 bzw. Anspruch 2.
-
HINTERGRUND
DER ERFINDUNG
-
Bekanntlich
erhöht
das Verfahren des Vorauslesens von Befehlen die Verarbeitungsgeschwindigkeit
eines Mikroprozessors. Eine Gruppe von Befehlen, die in sequentiellen
Adressen gespeichert wurden, werden in gewöhnlichen sequentiellen Computern
der Reihe nach ausgeführt.
Im Gegensatz dazu wird beim Befehlsvorauslesesystem ein Befehl, der
sich mehrere Stellen weiter vorn befindet und der in der Zukunft
verwendet werden soll, parallel mit den Ausführungs- und Decodierungsprozessen
des vorhergehenden Befehls herausgenommen.
-
Mit
anderen Worten wird ein Befehl, der vorab aus einem Hauptspeicher
oder einem Cache-Speicher vorausgelesen wurde, in einem Befehlsvorauslesepuffer
(Warteschlangenpuffer) mit geringer Kapazität gespeichert, der einen Schnellzugriff
zuläßt; auf
diese Weise wird versucht, eine Verzö gerung bei der Ausführung, die
durch einen Speicherzugriff zum Zeitpunkt des Befehlsvorauslesens verursacht
wird, praktisch zu reduzieren.
-
Wenn
in der herkömmlichen
Technik ungeachtet der Adresse des Sprungendes ein Sprungbefehl
ausgeführt
wird, wird die Ausführung
vorausgelesener und nachfolgender Befehle beendet, wodurch der Warteschlangenpuffer
geleert (gelöscht)
wird; auf diese Weise werden Befehle, die vorher gespeichert wurden,
annulliert, und nachdem ein neues Vorauslesen aus der Sprungendenadresse
stattgefunden hat und der Sprungendebefehl im Warteschlangenpuffer gespeichert
wurde, wird die Ausführung
des Befehls fortgesetzt.
-
Auf
diese Weise wird der Warteschlangenpuffer bei der herkömmlichen
Technik vor der Ausführung
eines Sprungbefehls geleert. wenn deshalb die Anzahl der Vorauslesebefehle
unvorteilhaft zunimmt, entsteht eine Störung in der Fließband-Verarbeitung und
es kann keine hohe Geschwindigkeit realisiert werden.
-
Die
japanische Offenlegungsschrift JP 07073034-A offenbart einen Prozessor,
in dem bei der Abarbeitung eines Sprungbefehls ein Komparator das
Sprungziel daraufhin überprüft, ob es
noch innerhalb des Bereiches liegt, der in einer Befehlsqueue gepuffert
ist. Ist das der Fall, so wird der Befehlszähler auf das Sprungziel gesetzt
und die Verarbeitung an dieser Stelle fortgesetzt, ohne daß die Befehlsqueue
geleert wird. Auf diese Weise kann erreicht werden, daß auch bei
der Abarbeitung eines Sprungbefehls zumindest bei kurzen Sprüngen die Befehlsqueue
nicht automatisch geleert werden muß. Dieser herkömmliche
Prozessor hat allerdings den Nachteil, daß jedesmal verglichen werden
muß, ob
das Sprungziel noch innerhalb des Bereichs der Befehlsqueue liegt.
Dabei wird also die Anzahl der Vorauslesebefehle nach dem Sprung
zwar reduziert, da der Befehl aber als normaler nicht bedingter Sprungbefehl
behandelt wird, wird nach der Decodierung des Befehls ein komplexer
Adreßerzeugungsprozeß notwendig,
und die entsprechenden Schaltungen werden komplex und sehr umfangreich.
Es erfordert also nicht nur den Komparator als zusätzliches
Bauteil des Prozessors, sondern kostet zur Laufzeit auch Rechenzeit,
weil der Adreßerzeugungsprozeß mehr Aufwand
erfordert.
-
Der
Konferenzbeitrag „Classification
and Performance Evaluation of Instruction Buffering Techniques" von L. Kurian et
al., erschienen in "Proceedings
of the 18th Annual International Symposium on
Computer Architecture",
1991, Seiten 150 bis 159, zeigt einen Prozessor, welcher Befehle
aus dem Hauptspeicher vorausliest und in einem Warteschlangenpuffer
speichert. Dabei ist allerdings noch vorgesehen, daß im Falle
eines Sprungbefehls der Warteschlangenpuffer geleert wird. Dies
zieht natürlich
den Nachteil nach sich, daß dieser
Puffer vor allem bei kurzen Sprüngen
ganz unnötig
geleert wird und dabei Rechenzeit verlorengeht, um die nächsten Befehle
aus dem Hauptspeicher zu lesen.
-
Die
Intel-Befehlssätze
in „Intel
Architecture Software Developer's
Manual – Volume
2: Instruction Set Reference, Order Number 243191; Intel, 1997; Seiten
B-1 bis B-10" umfassen
einen Vergleichsbefehl CMP für
Mikroprozessoren. Der Opcode für
diesen Befehl schließt
ein sogenanntes Operand Size Bit ein, welches festlegt, ob der nachfolgende
Operand kurz oder lang ist. Dabei bedeutet ein kurzer Operand eine
Breite von 8 Bits, und ein langer Operand je nach Architektur eine
solche von 16 oder 32 Bits. Da weiterhin die beiden Operanden des CMP-Befehls
Registerinhalte, Speicheradressen oder feste Parameter in beliebiger
Paarung sein können,
kann die effektive Gesamtlänge
der beiden Operanden erheblich schwanken. Die Ausführung eines solchen
CMP-Befehls in einem Mikroprozessor sorgt also dafür, daß nach einer
Vergleichsoperation entsprechende Vergleichsflags gesetzt werden
und der Befehlszähler
anschließend
auf die Adresse nach dem CMP-Befehl springt. Insofern wird durch
die Ausführung
des CMP-Befehls insoweit ein einem Sprungbefehl analoges Ergebnis
erreicht, daß der Befehlszähler auf
eine Zieladresse gesetzt wird, welche um die effektive Größe der beiden
Operanden des CMP-Befehls hinter dem CMP-Befehl selbst liegt. Dabei
werden allerdings entgegen der Erwartung bei einem Sprungbefehl
Befehlsauswertungen vorgenommen, d.h. eine Subtraktion im Ausführungsabschnitt
durchgeführt
und die Vergleichsflags entsprechend manipuliert. Dadurch kann der
Programmfluß durcheinandergebracht
werden. Darüber hinaus
ist das Sprungziel auf eine sehr undurchsichtige Weise codiert und
muß im übrigen auch
sehr nahe bei dem Ausgangspunkt des Sprungbefehls liegen.
-
Es
ist daher Aufgabe der Erfindung, einen Mikroprozessor anzugeben,
welcher auf schnelle und transparente weise einen Sprungbefehl abarbeiten
kann, der ein unnötiges
Leeren des Warteschlangenpuffers vermeidet.
-
Diese
Aufgabe wird durch Mikroprozessoren gemäß der unabhängigen Ansprüche gelöst. Dabei ist
eine Lösung
gemäß einer
ersten Ausführungsform in
Anspruch 1 angegeben. Anders als ein normaler Sprungbefehl wird
dem Mikroprozessor ein neuer Sprungbefehl (z.B. BJMP) hinzugefügt, der
auf dieselbe Weise wie ein normaler Datenübertragungsbefehl, Betriebsbefehl,
etc., funktioniert. Die Anwendung dieses Sprungbefehls macht die
Befehlsanzahl im Warteschlangenpuffer variabel. Wenn anders ausgedrückt der
Befehlsdecodierer erkennt, daß ein
vom Warteschlangenpuffer eingegebener Befehl ein vorbestimmter Markenbefehl
ist, verarbeitet er vorhergehende Befehle bis zum Sprungende, das
durch diesen Sprungbefehl als einem Operanden des entsprechenden Sprungbefehls
so festgelegt ist, daß die
Befehlsanzahl im Warteschlangenpuffer variabel wird. Dann wird die
Befehlswortlänge
des entsprechenden Sprungbefehls einschließlich des Operandenabschnitts
an den Befehlszähler
ausgegeben, wodurch die Adresse des Befehlszählers aktualisiert wird. Darüber hinaus
verhindert der Befehlsdecodierer zum Zeitpunkt dieses Sprungbefehls
das Leeren des Warteschlangenpuffers.
-
Eine
Lösung
gemäß einer
weiteren Ausführungsform
ist in Anspruch 2 angegeben. Wenn der Befehlsdecodierer erkennt,
daß ein
vom Warteschlangenpuffer eingegebener Befehl ein vorbestimmter Markenbefehl
(BJMP) ist, verarbeitet er vorhergehende Befehle bis zum Sprungende,
das durch diesen Sprungbefehl (BJMP) als ein NOP-Befehl spezifiziert
ist, und die Befehlswortlänge
des entsprechenden Sprungbefehls (BJMP) und die dem NOP-Befehl entsprechende
Befehlswortlänge
werden an den Befehlszähler
ausgegeben, wodurch die Adresse des Befehlszählers aktualisiert wird. Darüber hinaus
verhindert der Befehlsdecodierer zum Zeitpunkt dieses Sprungbefehls
(BJMP), daß der Warteschlangenpuffer
geleert wird.
-
Weitere
Aufgaben und Merkmale dieser Erfindung werden aus der folgenden
Beschreibung mit Bezug auf die beigefügten Zeichnungen deutlich.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
1 ist ein Blockschaltbild,
das ein Beispiel eines inneren Aufbaus eines Mikroprozessors nach der
vorliegenden Erfindung zeigt;
-
2 ist eine Zeichnung, die
eine Befehlssequenz zeigt, die eine erste Ausführungsform der vorliegenden
Erfindung erklärt;
-
3 ist eine Zeichnung, die
eine Befehlssequenz zeigt, die eine zweite Ausführungsform der vorliegenden
Erfindung erklärt;
-
4 ist eine Zeichnung, die
eine Befehlssequenz zeigt, die eine dritte Ausführungsform der vorliegenden
Erfindung erklärt;
-
5 ist eine Zeichnung, die
eine Befehlssequenz zeigt, die eine vierte Ausführungsform der vorliegenden
Erfindung erklärt.
-
BESCHREIBUNG DER BEVORZUGTEN
AUSFÜHRUNGSFORMEN
-
Ausführungsformen
des Mikroprozessors nach der vorliegenden Erfindung werden weiter
unten mit Bezug auf die beigefügten
Zeichnungen ausführlich
erläutert.
-
1 ist ein Blockschaltbild,
das ein Beispiel des inneren Aufbaus des Mikroprozessors nach der vorliegenden
Erfindung zeigt. In dieser Figur stellt die Bezugszahl 1 einen
Hauptspeicher dar, 2 einen Warteschlangenpuffer (Befehlswarteschlange), 3 einen Eingabe-Pointer, 4 einen
Ausgabe-Pointer, 5 einen Warteschlangen-Controller, 6 einen
Decodierer, 7 einen Ausführungsabschnitt und 8 einen
Befehlszähler.
Der Warteschlangen-Controller 5, der Eingabe-Pointer 3 und
der Ausgabe-Pointer 4 bilden einen Warteschlangen-Controller-Abschnitt,
der in Ansprüchen
offenbart ist.
-
Der
Hauptspeicher 1 speichert Befehlsfolgen zum Ausführen von
Programme. Der Warteschlangenpuffer 2 ist ein Pufferspeicher,
der beispielsweise 32 Befehle speichern kann, und einen aus den Hauptspeicher 1 vorausgelesenen
Befehl speichert. Der Befehlsdecodierer decodiert (interpretiert)
Befehlscodes von Befehlen, die aus dem Warteschlangenpuffer 2 ausgelesen
werden. Der Betrieb des Befehlsdecodierers 6, welcher einen
wesentlichen Gegenstand der vorliegenden Erfindung darstellt, wird später beschrieben.
-
Die
im Befehlsdecodierer 6 anliegenden Decodierergebnisse und
der Operandenabschnitt des Befehls werden in den Ausführungsabschnitt 7 eingegeben.
Durch die Verwendung der Eingabeergebnisse des Decodierens und Operandenabschnitts, führt der
Ausführungsabschnitt 7 Prozesse
wie Datenübertragungen,
Vierfunktionsoperationen, logische Operationen, Größenvergleiche
und Schiebeoperationen durch, um die Befehle auszuführen.
-
Der
Befehlszähler 8 ist
ein Register zum Speichern von Ausführungsadressen des im Hauptspeicher 1 anliegenden
nächsten
Befehls, und führt eine
Operation durch, um die Länge
des vom Befehlsdecodierer 6 ausgegebenen Befehlsworts zum laufenden
Zählerwert
(Registerwert) des Befehlszählers
hinzuzufügen.
-
Basierend
auf der Ausgabe des Befehlszählers 8 oder
des Befehlsdecodierers 6 steuert der Warteschlangen-Controller 5 den
Eingabe-Pointer 3 und den Ausgabe-Pointer 4 so
an, dass im Warteschlangenpuffer 2 anliegende Eingabe-Ausgabe-Steuerbefehle durchgeführt werden.
Der Eingabe-Pointer 3 wird durch ein Schreibsteuersignal
aus dem Warteschlangenpuffer 5 inkrementiert (oder dekrementiert),
so dass an dem aus dem Hauptspeicher 1 in den Warteschlangenpuffer 2 vorausgelesen
Befehl eine Schreibsteueroperation durchgeführt wird. Der Ausgabe-Pointer 4 wird
von einem Lesesteuersignal aus dem Warteschlangenpuffer 5 inkrementiert
(oder dekrementiert), so dass eine Lesesteueroperation an der im Warteschlangenpuffer 2 gespeicherten
Befehl im Hinblick auf den Befehlsdecodierer 6 durchgeführt wird.
-
Mit
Bezug auf 2 wird zusätzlich zur 1 eine Erläuterung
zu einer ersten Ausführungsform
der vorliegenden Erfindung gegeben. In der ersten Ausführungsform
wird dem Mikroprozessor von 1 (2) ein neuer Sprungbefehl „BJMP" hinzugefügt. Dieser
Sprungbefehl „BJMP" führt Prozesse aus,
die sich von einem normalen Sprungbefehl unterscheiden; im Ergebnis
wird jedoch derselbe Sprungprozess ausgeführt wie beim normalen Sprungbefehl.
Nichtsdestoweniger wird beim Sprungbefehl „BJMP" der Warteschlangenpuffer 2 zum
Zeitpunkt der Befehlsausführung
nicht geleert. 2 zeigt
im Konzept Befehlsfolgen, die im Warteschlangenpuffer 2 gespeichert
sind.
-
Bei
der ersten Ausführungsform
ist eine Sprungmarke, die das Sprungende des Sprungbefehls „BJMP" anzeigt, auf dem
Operandenabschnitt festgelegt.
-
Im
Befehlsdecodierer 6 von 1 wird
der aus dem Warteschlangenpuffer 2 eingegebene Befehl decodiert,
und wenn erkannt wird, dass der eingegebene Befehl ein wie oben
beschriebener Sprungbefehl „BJMP" ist, werden vorausgehende Befehle
(in diesem Fall Inkrementierungsbefehle INX und INY), die bis zu
einer relativen Adresse anliegen, die durch die Sprungmarke des
Operandenabschnitts dieses Sprungbefehls „BJMP" festgelegt ist, als ein Operand des
Sprungbefehls „BJMP" verarbeitet.
-
Mit
anderen Worten überträgt der Befehlsdecodierer 6 ein
Steuersignal zur Aktualisierung des Ausgabe-Pointers 4 an
den Warteschlangen-Controller 5. Der Warteschlangen-Controller 5 aktualisiert den
Ausgabe-Pointer 4 basierend auf diesem Steuersignal. Als
Ergebnis davon wird der nächste Befehl (in
diesem Fall INX) aus dem Warteschlangenpuffer 2 in den
Befehlsdecodierer 6 eingegeben. Durch das Decodieren dieses
eingegebenen Befehls wird beurteilt, ob der Befehl eine Sprungmarke
ist oder nicht. Wenn der Befehl (INX) keine Sprungmarke ist, überträgt der Befehlsdecodierer 6 wieder
ein Steuersignal an den Warteschlangen-Controller 5 und
aktualisiert dadurch den Ausgabe-Pointer 4. Auf diese Weise überträgt der Befehlsdecodierer 6 das
Steuersignal an den Warteschlangen-Controller, bis eine Sprungmarke
erfasst wird, um die vorhergehenden Befehle zu lesen, die sich bis
zu der relativen, durch die Sprungmarke festgelegte Adresse befinden.
So erfasst der Befehlsdecodierer 6 die Anzahl an Befehlen des
Befehlsabschnitts (in diesem Fall INX und INY), der als Operand
verarbeitet werden soll und die Befehlswortlänge des Befehlsabschnitts,
der als Operand verarbeitet werden soll.
-
Dann
fügt der
Befehlsdecodierer 6 die Befehlswortlänge des Befehlsabschnitts (in
diesem Fall INX und INY), der als Operand verarbeitet werden soll,
der Befehlswortlänge
des Sprungbefehls „BJMP" hinzu und gibt die
Ergebnisse dieses Hinzufügens
an den Befehlszähler 8 als
Befehlswortlänge des
entsprechenden Sprungbefehls „BJMP" aus. Darüber hinaus
gibt der Befehlsdecodierer 6 an den Warteschlangen-Controller 5 ein
vorbestimmtes Steuersignal aus, um eine Leerungsoperation zu verhindern.
-
Der
Befehlszähler 8 fügt die aus
dem Befehlsdecodierer 6 eingegebene Befehlswortlänge des
Sprungbefehls „BJMP" dem laufenden Adressenwert
hinzu und aktualisiert dadurch den Adressenwert. Darüber hinaus
führt der
Warteschlangen-Controller 5 basierend
auf der Eingabe des Steuersignals aus dem Befehlsdecodierer 6 keine
Leerungsoperation am Warteschlangenpuffer 2 durch.
-
Daher
wird in diesem Fall der nächste
Befehl (in diesem Fall der Ladebefehl LDA) an die durch die Sprungmarke
festgelegte relativen Adresse aus dem Warteschlangenpuffer 2 ausgelesen
und durch den Befehlsdecodierer 6 decodiert; im Ergebnis
wird so derselbe Prozess ausgeführt
wie bei einem normalen Sprungbefehl.
-
Auf
diese Weise werden in der ersten Ausführungsform die vorhergehenden
Befehlscodes bis zu dem durch die Sprungmarke des Sprungbefehls „BJMP" festgelegten Sprungende
als Operand des Sprungbefehls „BJMP" so verarbeitet,
dass die Befehlscodes bis zum Sprungende als ein Befehl des Sprungbefehls „BJMP" behandelt werden;
so ist es im Ergebnis möglich,
eine variable Anzahl an zu verarbeitenden Befehlen bereitzustellen.
Mit anderen Worten ermöglicht
es die variable Auslegung der Anzahl an Befehlen, dieselbe Sprungoperation
zu erzielen wie bei der nichtbedingten Sprungoperation.
-
Bei
der ersten Ausführungsform
wird der Sprungbefehl „BJMP" nicht als normaler
Sprungbefehl betrieben, sondern auf dieselbe Weise wie andere Datenübertragungsbefehle,
Operationsbefehle, etc., und er wird nicht als normaler Sprungbefehl
behandelt, so dass kein Leeren im Warteschlangenpuffer 2 stattfindet;
von daher ist es möglich,
die Adressenoperation zum Sprungzeitpunkt im Vergleich mit dem herkömmlichen
Verfahren noch weiter zu vereinfachen und folglich eine unnötige Leerungsoperation
des Warteschlangenpuffers zum Sprungzeitpunkt auszuschalten, ohne
dass darin eine komplexe Struktur eingebaut werden müsste. Deshalb
wird es möglich,
Vorausleseprozesse zum Sprungzeitpunkt durch Verwendung einer einfachen
Struktur zu reduzieren und demzufolge die Verarbeitungsgeschwindigkeit
zu erhöhen.
-
2 zeigt einen Fall, bei
dem die Anzahl der vorausgehenden Befehle bis zu der relativen, durch
eine Sprungmarke festgelegte Adresse, zwei beträgt. Die Befehlsanzahl kann
selbstverständlich auf
eins, drei oder mehr gesetzt werden. Darüber hinaus ist der Befehl,
dem der Operand des Sprungbefehls „BJMP" zugeteilt ist, nicht auf die in 2 gezeigten Inkrementierungsbefehle
INX, INY beschränkt.
-
Mit
Bezug auf 1 und 3 wird eine Erläuterung
zur zweiten Ausführungsform
der vorliegenden Erfindung gegeben. Wie in 3 dargestellt ist, ist das Sprungende
des Sprungbefehls „BJMP" durch eine relative
Adresse festgelegt. In 3,
ist „3" als eine relative
Adresse im Operandenabschnitt des Sprungbefehls „BJMP" festgelegt.
-
Nachdem
der Befehlsdecodierer 6 einen aus dem Warteschlangenpuffer 2 eingegebenen
Befehl decodiert und erkannt hat, dass es sich bei dem eingegebenen
Befehl um den oben erwähnten
Sprungbefehl „BJMP" handelt, verarbeitet
er die vorhergehenden Befehle (in diesem Fall die Inkrementierungsbefehle
INX und INY), die bis zur relativen Adresse vorliegen, die durch
die relative Adresse (in diesem Fall „3") des Operandenabschnitts des Sprungbefehls „BJMP" festgelegt ist,
als Operand des Sprungbefehls „BJMP".
-
Anders
ausgedrückt
erkennt der Befehlsdecodierer 6 basierend auf der relativen
Adresse (in diesem Fall „3") des Operandenabschnitts
des Sprungbefehls „BJMP" die Anzahl an Befehlen
(in diesem Fall „2") und die Befehlswortlänge des
als Operand zu verarbeitenden Befehlsabschnitts (in diesem Fall
INX und INY) im Hinblick auf den Warteschlangen-Controller 5.
-
Dann
fügt der
Befehlsdecodierer 6 die Befehlswortlänge des als Operand verarbeiteten
Befehlsabschnitts (in diesem Fall INX und INY) der Befehlswortlänge des
Sprungbefehls „BJMP" hinzu, und gibt
das Ergebnis des Hinzufügens
als die Befehlswortlänge
des jeweiligen Sprungbefehls „BJMP" an den Befehlszähler 8 aus.
Darüber
hinaus gibt der Befehlsdecodierer 6 ein vorbestimmtes Steuersignal
an den Warteschlangen-Controller 5 aus, um eine Leerungsoperation
zu verhindern.
-
Der
Befehlszähler 8 fügt die Befehlswortlänge (einschließlich der
Befehlswortlängen
von INX und INY) des vom Befehlsdecodierer 6 eingegebenen
Sprungbefehls zum laufenden Adresswert hinzu und aktualisiert dadurch
den Adresswert. Darüber
hinaus führt
der Warteschlangen-Controller 5 basierend
auf der Eingabe des Steuersignals aus dem Befehlsdecodierer 6 keine
Leerungsoperation am Warteschlangenpuffer 2 durch.
-
Deshalb
wird hier der Befehl (in diesem Fall der Ladebefehl LDA) der durch
den Operandenabschnitt des Sprungbefehls „BJMP" festgelegten relativen Adresse aus
dem Warteschlangenpuffer 2 ausgelesen und durch den Befehlsdecodierer 6 decodiert;
so wird im Ergebnis derselbe Prozess ausgeführt wie bei einem normalen
Sprungbefehl.
-
Auf
diese Weise werden bei der zweiten Ausführungsform die vorausgehenden
Befehlscodes bis zu einem als relative Adresse im Operandenabschnitt
des Sprungbefehls „BJMP" festgelegten Sprungende
als ein Operand des Sprungbefehls „BJMP" so verarbeitet, dass die Befehlscodes
bis zum Sprungende als ein Befehl des Sprungbefehls „BJMP" behandelt werden;
so ist es im Ergebnis möglich,
eine variable Anzahl an zu verarbeitenden Befehlen bereitzustellen.
Mit anderen Worten ermöglicht
es die variable Auslegung der Anzahl an Befehlen, dieselbe Sprungoperation
wie bei einer nichtbedingten Sprungoperation auf dieselbe Weise
wie bei der ersten Ausführungsform
durchzuführen.
-
Bei
der zweiten Ausführungsform
kann die sich ergebende Operandenlänge des Sprungbefehls „BJMP" eine Länge haben,
die einer durch den ursprünglichen
Operandenabschnitt des Sprungbefehls „BJMP" festgelegten relativen Adresse entspricht,
so dass die Operation durchgeführt
wird, die einem normalen Sprungbefehl entspricht; von daher ist
es möglich,
die Adressenoperation zum Sprungzeitpunkt im Vergleich mit dem herkömmlichen
Verfahren noch weiter zu vereinfachen und folglich eine unnötige Leerungsoperation
des Warteschlangenpuffers zum Sprungzeitpunkt auszuschalten, ohne dass
darin eine komplexe Struktur eingebaut werden müsste. Deshalb wird es möglich, Vorausleseprozesse
zum Sprungzeitpunkt durch Verwendung einer einfachen Struktur zu
reduzieren und demzufolge die Verarbeitungsgeschwindigkeit zu erhöhen.
-
3 zeigt einen Fall, bei
dem die Anzahl vorausgehender Befehle bis zu der durch eine Sprungmarke
festgelegte relativen Adresse zwei beträgt. Die Anzahl an Befehlen
kann jedoch selbstverständlich
auf eins, drei oder mehr gesetzt werden. Darüber hinaus ist der Befehl,
dem der Operand des Sprungbefehls „BJMP" zugeteilt wurde, nicht auf die in 3 gezeigten Inkrementierungsbefehle
INX, INY beschränkt.
-
Mit
Bezug auf 1 und 4 wird eine Erläuterung
zur dritten Ausführungsform
der vorliegenden Erfindung gegeben.
-
Wie
in 4 dargestellt ist,
ist bei der dritten Ausführungsform
das Sprungende des Sprungbefehls „BJMP" durch eine relative Adresse (in diesem Fall "–3") festgelegt. Im Unterschied zur zweiten
Ausführungsform
ist es in diesem Fall aber möglich,
zur Minusadressenseite zu springen.
-
Bei
der dritten Ausführungsform
führt der Warteschlangen-Controller 5 die
Eingabe-Ausgabe-Steueroperationen
des Warteschlangenpuffers so aus, dass dem momentanen Ausführungsbefehl
vorausgehende Befehle, die einer vorbestimmten Anzahl (z.B. „5") an relativen Adressen
entsprechen, bestehen bleiben dürfen.
Mit anderen Worten dürfen die
Ausgaben der jeweiligen Pointer 3, 4 immer mit einem
Zwischenraum vorlaufen, der mindestens 5 Adressen zwischen Pointer 3 und 4 entspricht.
-
Nachdem
der Befehlsdecodierer 6 einen aus dem Warteschlangenpuffer 2 eingegebenen
Befehl decodiert und erkannt hat, dass es sich bei dem eingegebenen
Befehl um den oben erwähnten
Sprungbefehl „BJMP" handelt, verarbeitet
er die vorhergehenden Befehle (in diesem Fall die Inkrementierungsbefehle
INX und INY), die bis zur relativen Adresse vorliegen, die durch
die relative Adresse (in diesem Fall „–3") des Operandenabschnitts des Sprungbefehls „BJMP" festgelegt ist,
als Operand des Sprungbefehls „BJMP".
-
Anders
ausgedrückt
erkennt der Befehlsdecodierer 6 basierend auf der relativen
Adresse (in diesem Fall „–3") des Operandenabschnitts
des Sprungbefehls „BJMP" die Anzahl an Befehlen
und die Befehlswortlänge
des als Operand zu verarbeitenden Befehlsabschnitts (in diesem Fall
INX und INY) im Hinblick auf den Warteschlangen-Controller 5.
-
Dann
fügt der
Befehlsdecodierer 6 die Befehlswortlänge des als Operand verarbeiteten
Befehlsabschnitts (in diesem Fall INX und INY) der Befehlswortlänge des
Sprungbefehls „BJMP" hinzu, und gibt
das Ergebnis des Hinzufügens,
dem das Minuszeichen hinzugefügt
ist, als die Befehlswortlänge
des entsprechenden Sprungbefehls „BJMP" an den Befehlszähler 8 aus. Darüber hinaus
gibt der Befehlsdecodierer 6 ein vorbestimmtes Steuersignal
an den Warteschlangen-Controller 5 aus, um eine Leerungsoperation
zu verhindern.
-
Der
Befehlszähler 8 fügt die Befehlswortlänge des
vom Befehlsdecodierer 6 eingegebenen Sprungbefehls „BJMP" zum laufenden Adresswert hinzu
und aktualisiert dadurch den Adresswert. Darüber hinaus führt der
Warteschlangen-Controller 5 basierend
auf der Eingabe des Steuersignals aus dem Befehlsdecodierer 6 keine
Leerungsoperation am Warteschlangenpuffer 2 durch.
-
Deshalb
wird hier der Befehl (in diesem Fall der Ladebefehl LDA) der durch
den Operandenabschnitt des Sprungbefehls „BJMP" festgelegten relativen Adresse (–3) aus
dem Warteschlangenpuffer 2 ausgelesen und durch den Befehlsdecodierer 6 decodiert;
so wird im Ergebnis derselbe Prozess ausgeführt wie bei einem normalen
Sprungbefehl.
-
Auf
diese Weise werden auch bei der dritten Ausführungsform die vorausgehenden
Befehlscodes bis zu einem als relative Adresse im Operandenabschnitt
des Sprungbefehls „BJMP" festgelegten Sprungende
mit einer Minusadresse als ein Operand des Sprungbefehls „BJMP" so verarbeitet,
dass die Befehlscodes bis zum Sprungende als ein Befehl des Sprungbefehls „BJMP" behandelt werden;
so ist es im Ergebnis möglich,
eine variable Anzahl an zu verarbeitenden Befehlen bereitzustellen.
-
Bei
der dritten Ausführungsform
kann die sich ergebende Operandenlänge des Sprungbefehls „BJMP" eine Länge haben, die
einer durch den ursprünglichen
Operandenabschnitt des Sprungbefehls „BJMP" festgelegten relativen Adresse entspricht,
so dass die Operation durchgeführt
wird, die einem Sprungbefehl zur Minusadresse entspricht; von daher
ist es möglich,
die Adressenoperation zum Sprungzeitpunkt im Vergleich mit dem herkömmlichen
Verfahren noch weiter zu vereinfachen und folglich eine unnötige Leerungsoperation
des Warteschlangenpuffers zum Sprungzeitpunkt auszuschalten, ohne
dass darin eine komplexe Struktur eingebaut werden müsste. Deshalb
wird es möglich,
Vorausleseprozesse zum Sprungzeitpunkt durch Verwendung einer einfachen
Struktur zu reduzieren und demzufolge die Verarbeitungsgeschwindigkeit
zu erhöhen.
-
4 zeigt einen Fall, bei
dem die Anzahl vorausgehender Befehle bis zu der durch eine Sprungmarke
festgelegten relativen Adresse zwei beträgt. Die Anzahl an Befehlen
kann jedoch selbstverständlich
auf eins, drei oder mehr gesetzt werden. Die Obergrenze davon ist
durch die Anzahl an Befehlen geregelt, die im Warteschlangenpuffer
zurückbleiben
sollen. Darüber
hinaus ist der Befehl, dem der Operand des Sprungbefehls „BJMP" zugeteilt wurde, nicht
auf die in 4 gezeigten
Inkrementierungsbefehle INX, INY beschränkt.
-
Mit
Bezug auf 1 und 5 wird eine Erläuterung
der vierten Ausführungsform
der vorliegenden Erfindung gegeben. Bei den ersten bis dritten Ausführungsformen
werden vorausgehende Befehle, die bis zum Sprungende vorliegen,
als ein Operand des Sprungbefehls „BJMP" verarbeitet. Da aber diese operandenverarbeiteten
Befehle keinen wirklichen Befehl ausführen, entsteht kein Problem,
selbst dann nicht, wenn sie durch keine Operation (NOP) ersetzt werden.
-
Im
Fall eines Prozessors beispielsweise, der einen hochgradigen Befehlssatz
auf Assemblerebene wie den CISCs (Complex Instruction Set Computer – konventioneller
Computer mit uneingeschränktem
Befehlsvorrat) bereitstellt, macht es ein Assemblercode für einen
Befehl möglich,
einen Prozess auf einer sehr hohen Ebene ablaufen zu lassen. In
diesem Fall wird jeder Befehl im Operanden, der nur Beschreibungen
enthält
aber nicht ausgeführt
wird, durch NOP ersetzt und dann werden die Befehle ausgeführt; so
wird es möglich,
dieselbe Sprungoperation durchzuführen wie bei den vorher erwähnten Ausführungsformen,
ohne dass die Befehlsanzahl verändert
werden müsste.
-
Wie
in 5 dargestellt ist,
ist bei der vierten Ausführungsform
eine Sprungmarke, die das Sprungende des Sprungbefehls „BJMP" anzeigt, auf dem Operandenabschnitt
festgelegt.
-
In
diesem Fall wird im Befehlsdecodierer 6 von 1 der aus dem Warteschlangenpuffer 2 eingegebene
Befehl decodiert, und wenn erkannt wird, dass der eingegebene Befehl
ein wie oben beschriebener Sprungbefehl „BJMP" ist, werden vorausgehende Befehle (in
diesem Fall Inkrementierungsbefehle; INX und INY), die bis zu einer
relativen Adresse anliegen, die durch die Sprungmarke des Operandenabschnitts
dieses Sprungbefehls „BJMP" festgelegt ist,
als NOP verarbeitet.
-
Mit
anderen Worten überträgt der Befehlsdecodierer 6 ein
Steuersignal zur Aktualisierung des Ausgabe-Pointers 4 an
den Warteschlangen-Controller 5. Der Warteschlangen-Controller 5 aktualisiert den
Ausgabe-Pointer 4 basierend auf diesem Steuersignal. Als
Ergebnis davon wird der nächste
Befehl (in diesem Fall INX) aus dem Warteschlangenpuffer 2 in
den Befehlsdecodierer 6 eingegeben. Der eingegebene Befehl
INX wird als NOP verarbeitet. Darüber hinaus überträgt der Befehlsdecodierer 6 ein
Steuersignal an den Warteschlangen-Controller 5, um den Ausgangs-Pointer 4 zu
aktualisieren. Der Warteschlangen-Controller 5 aktualisiert
den Ausgangs-Pointer 4 durch Verwendung dieses Steuersignals.
Als Ergebnis davon wird der nächste
Befehl (in diesem Fall INY) aus dem Warteschlangenpuffer 2 in den
Befehlsdecodierer 6 eingegeben. Der eingegebene Befehl
INY wird als NOP verarbeitet.
-
Auf
diese Weise überträgt der Befehlsdecodierer 6 bis
zur Erfassung einer Sprungmarke das Steuersignal an den Warteschlangen-Controller 5, um
die vorausgehenden Befehle, die bis zu der durch eine Sprungmarke
festgelegte relativen Adresse vorliegen, zu lesen; so werden alle
diese Befehle als NOP verarbeitet. In diesem Fall schickt jedes
Mal, wenn der Befehl aus dem Warteschlangenpuffer 2 eingegeben
wird, der Befehlsdecodierer 6 die jedem Befehl entsprechende
Befehlswortlänge
an den Befehlszähler 8.
Darüber
hinaus gibt der Befehlsdecodierer 6 an den Warteschlangen-Controller 5 ein
vorbestimmtes Steuersignal aus, um eine Leerungsoperation zu verhindern.
-
Jedes
Mal, wenn die Befehlswortlänge
(in diesem Fall eine normale Wortlänge, die einem Befehl entspricht)
vom Befehlsdecodierer 6 dorthin geschickt wird, fügt der Befehlszähler 8 die
Befehlswortlänge
dem laufenden Adresswert hinzu und aktualisiert dadurch den Adresswert.
Darüber
hinaus führt der
Warteschlangen-Controller 5, basierend auf der Eingabe
des Steuersignals aus dem Befehlsdecodierer 6, keine Leerungsoperation
am Warteschlangenpuffer 2 durch.
-
Dadurch
wird hier nur der Befehl (in diesem Fall der Ladebefehl LDA) an
der durch eine Sprungmarke festgelegten relativen Adresse aus dem
Warteschlangenpuffer 2 ausgelesen und durch den Befehlsdecodierer 6 decodiert;
so wird im Ergebnis derselbe Prozess wie bei einem normalen Sprungbefehl durchgeführt, ohne
dass die Befehlsanzahl verändert ist.
-
Auf
diese Weise werden bei der vierten Ausführungsform die vorausgehenden
Befehlscodes bis zu dem durch die Sprungmarke des Sprungbefehls „BJMP" festgelegten Sprungende
so als NOP verarbeitet, dass dieselbe Sprungoperation wie bei der nichtbedingten
Sprungoperation erzielt wird, ohne dass die Befehlsanzahl verändert ist.
Von daher ist es möglich,
die Adressenoperation zum Zeitpunkt des Sprunges noch weiter zu
vereinfachen und folglich eine unnötige Leerungsoperation des
Warteschlangenpuffers zum Sprungzeitpunkt auszuschalten, ohne dass
darin eine komplexe Struktur eingebaut werden müsste. Deshalb wird es möglich, Vorausleseprozesse
zum Sprungzeitpunkt durch Verwendung einer einfachen Struktur zu
reduzieren und demzufolge die Verarbeitungsgeschwindigkeit zu erhöhen.
-
5 zeigt einen Fall, bei
dem die Anzahl vorausgehender Befehle bis zu der durch eine Sprungmarke
festgelegte relativen Adresse zwei beträgt. Die Anzahl an Befehlen
kann jedoch selbstverständlich
auf eins, drei oder mehr gesetzt werden. Darüber hinaus ist der Befehl,
dem der NOP-Prozess zugeteilt wurde, nicht auf die in 5 gezeigten Inkrementierungsbefehle
INX, INY beschränkt.
-
Bei
den oben angeführten
jeweiligen Ausführungsformen
gibt der Befehlsdecodierer 6 bei Erhalt des Sprungbefehls „BJMP" ein vorbestimmtes
Steuersignal an den Warteschlangen- Controller 5 ab, um das Leeren
zu verhindern; die Leerungsoperation im Warteschlangenpuffer 2 kann
aber auch verhindert werden, ohne dass das Steuersignal an den Warteschlangen-Controller 5 speziell
ausgegeben wird. In diesem Fall führt der Warteschlangen-Controller 5 die
Leerungsoperation nach Erhalt eines Steuersignals durch.
-
Wie
vorstehend beschrieben wurde, wird bei einem Mikroprozessor nach
der vorliegenden Erfindung dem Mikroprozessor ein neuer Sprungbefehl (z.B.
BJMP) hinzugefügt
und vorhergehende Befehle bis zu dem durch diesen Sprungbefehl (BJMP)
festgelegten Sprungende werden als ein Operand des entsprechenden
Sprungbefehls (BJMP) so verarbeitet, dass die Anzahl an Befehlen
im Warteschlangenpuffer variabel wird, und die Befehlswortlänge des entsprechenden
Sprungbefehls einschließlich
des Operandenabschnitts wird an den Befehlszähler ausgegeben, wodurch die
Adresse des Befehlszählers aktualisiert
sowie verhindert wird, dass der Warteschlangenpuffer zum Zeitpunkt
dieses Sprungbefehls (BJMP) geleert wird. Deshalb ist es möglich, die Adressenoperation
zum Zeitpunkt des Sprunges im Vergleich zum herkömmlichen Verfahren weiter zu vereinfachen
und folglich ein unnötiges
Leeren des Warteschlangenpuffers zum Zeitpunkt des Sprunges auszuschalten,
ohne dass darin eine komplexe Struktur eingebaut werden müsste. So
wird es möglich,
die Vorausleseprozesse durch Verwendung einer einfachen Struktur
zum Sprungzeitpunkt zu reduzieren und demzufolge die Verarbeitungsgeschwindigkeit
zu erhöhen.
-
Da
darüber
hinaus eine Sprungmarke verwendet wird, um den Sprung festzulegen,
ist es möglich,
die Sprungoperation durchzuführen,
ohne relative Adressen bis zum Sprungende festzulegen. Darüber hinaus
wird es möglich,
die Vorausleseprozesse durch Verwendung einer einfachen Struktur
zum Sprungzeitpunkt zu reduzieren und demzufolge die Verarbeitungsgeschwindigkeit
zu erhöhen.
-
Ferner
ist zur Festlegung des Sprungendes eine relative Adresse zwischen
dem Sprungbefehl und dem Sprungende festgelegt. Deshalb ist es möglich, die
Vorausleseprozesse durch Verwendung einer einfachen Struktur zum
Sprungzeitpunkt zu reduzieren und demzufolge die Verarbeitungsgeschwindigkeit
zu erhöhen.
-
Ferner
führt der
Warteschlangen-Controller-Abschnitt die Eingabe-Ausgabe-Steueroperation am
Warteschlangenpuffer so durch, dass eine Mehrzahl der vorhergehenden
Befehle, die einer vorbestimmten Anzahl an relativen Adressen aus
dem Befehl entsprechen, der momentan ausgeführt wird, bestehen bleiben
dürfen,
und eine relative Minusadresse als relative Adresse festgelegt wird.
Deshalb ist es möglich,
einen Sprung zur Minusadressenseite zu machen. Darüber hinaus
wird es möglich,
die Vorausleseprozesse durch Verwendung einer einfachen Struktur
zum Sprungzeitpunkt zu reduzieren und demzufolge die Verarbeitungsgeschwindigkeit
zu erhöhen.
-
Ferner
wird dem Mikroprozessor ein neuer Sprungbefehl (z.B. BJMP) hinzugefügt und vorhergehende
Befehle bis zu einem durch diesen Sprungbefehl (BJMP) festgelegten
Sprungende werden als NOP-Befehl verarbeitet, und die Befehlswortlänge des
entsprechenden Sprungbefehls und der NOP-Befehl wird an den Befehlszähler ausgegeben, wodurch
die Adresse des Befehlszählers
aktualisiert sowie verhindert wird, dass der Warteschlangenpuffer
zum Zeitpunkt dieses Sprungbefehls (BJMP) geleert wird. Deshalb
ist es möglich,
die Adressenoperation zum Zeitpunkt des Sprunges im Vergleich zum herkömmlichen
Verfahren weiter zu vereinfachen und folglich ein unnötiges Leeren
des Warteschlangenpuffers zum Zeitpunkt des Sprunges auszuschalten,
ohne dass darin eine komplexe Struktur eingebaut werden müsste. So
wird es möglich,
die Vorausleseprozesse durch Verwendung einer einfachen Struktur
zum Sprungzeitpunkt zu reduzieren und demzufolge die Verarbeitungsgeschwindigkeit
zu erhöhen.
-
Obwohl
die Erfindung für
eine vollständige und
klare Offenbarung im Hinblick auf eine spezifische Ausführungsform
beschrieben wurde, sind die beigefügten Ansprüche dahingehend nicht beschränkt, sondern
sind so zu verstehen, dass sie alle für den Fachmann offensichtlichen
Abänderungen und
alternative Konstruktionen beinhalten können, die unter die hier dargelegte
Grundlehre fallen.
-
- 1
- Hauptspeicher
- 2
- Warteschlangenpuffer
- 3
- Eingabe-Pointer
- 4
- Ausgabe-Pointer
- 5
- Warteschlangen-Controller
- 6
- Decodierer
- 7
- Ausführungsabschnitt
- 8
- Befehlszähler