DE10201439A1 - Mikroprozessor - Google Patents
MikroprozessorInfo
- Publication number
- DE10201439A1 DE10201439A1 DE10201439A DE10201439A DE10201439A1 DE 10201439 A1 DE10201439 A1 DE 10201439A1 DE 10201439 A DE10201439 A DE 10201439A DE 10201439 A DE10201439 A DE 10201439A DE 10201439 A1 DE10201439 A1 DE 10201439A1
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- jump
- command
- address
- queue buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 26
- 238000007796 conventional method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 208000003580 polydactyly Diseases 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Ein neuer Sprungbefehl (BJMP), der ein Sprungende festlegt, wird hinzugefügt. Beim Empfang dieses Sprungbefehls (BJMP) werden alle Befehle, die dem festgelegten Sprungende vorausgehen, als ein Operand des Sprungsbefehls (BJMP) verarbeitet. Darüber hinaus wird die Befehlswortlänge des Sprungsbefehls (BJMP) einschließlich des Befehls, der als Operand verarbeitet wurde, an den Befehlszähler (8) ausgegeben und der Warteschlangenpuffer (2) wird nicht geleert.
Description
Die vorliegende Erfindung bezieht sich auf einen
Mikroprozessor mit einer Befehlsvorauslesefunktion. Im
Spezielleren bezieht sich die vorliegende Erfindung auf
einen Mikroprozessor, der während der Ausführung eines
Sprungbefehls, das Leeren eines Warteschlangenpuffers, der
die Vorauslesebefehle speichert, verhindert.
Bekanntlich erhöht das Verfahren des Vorauslesens der
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ässt; 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.
In der japanischen Offenlegungsschrift Nr. 7-73034 wird
ein Vergleich angestellt zwischen der Sprungendenadresse zum
Zeitpunkt des Ausführens eines Sprungbefehls und dem
entsprechenden Adressbereich des im Warteschlangenpuffer
befindlichen Befehls, und wenn sich die Sprungendenadresse
im entsprechenden Adressbereich befindet, wird der Befehl im
Warteschlangenpuffer verwendet ohne den Warteschlangenpuffer
freizumachen, wodurch es möglich wird, die Anzahl der
Vorauslesebefehle nach dem Sprung zu reduzieren.
Obwohl bei dieser herkömmlichen Technik die Anzahl der
Vorauslesebefehle nach dem Sprung sicherlich reduziert ist,
wird jedoch, da der Markenbefehl als normaler nichtbedingter
Sprungbefehl behandelt wird, nach der Decodierung des
Befehls für einen Sprung ein komplexer
Adresserzeugungsprozess notwendig, und die entsprechenden
Schaltungen werden komplex und sehr umfangreich.
Es ist eine Aufgabe der vorliegenden Erfindung, einen
Mikroprozessor bereitzustellen, der zum Zeitpunkt eines
nichtbedingten Sprungprozesses kein unnötiges Leeren eines
Warteschlangenpuffer durchführt, ohne dass darin eine
komplexe Struktur eingebaut werden müsste.
Der Mikroprozessor nach einem Aspekt dieser Erfindung
umfasst einen Hauptspeicher, der Befehle speichert; einen
Warteschlangenpuffer, der Befehle aus dem Hauptspeicher
vorausliest und speichert; einen Befehlszähler, der eine
Adresse im Hauptspeicher erzeugt, in der ein als nächster
auszuführender Befehl gespeichert ist; einen
Befehlsdecodierer, der vom Warteschlangenpuffer ausgegebene
Befehle empfängt und decodiert; und ein Warteschlangen-
Controller steuert die Eingabe und Ausgabe von Befehlen an
den Warteschlangenpuffer basierend auf der Adresse, die vom
Befehlszähler erzeugt und ausgegeben wurde. Der
Befehlsdecodierer erkennt den Empfang eines vorbestimmten
Sprungbefehls, er verarbeitet alle die Befehle, die einem
Sprungende vorausgehen, das durch den Sprungbefehl als einem
Operanden des Sprungbefehls festgelegt ist, gibt eine
Befehlswortlänge des Sprungbefehls einschließlich des
Operanden an den Befehlszähler aus, wodurch die Adresse des
Befehlszählers aktualisiert wird, und stellt ein
Steuersignal bereit, den Warteschlangenpuffer nicht zu
leeren.
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, dass 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, dass 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.
Der Mikroprozessor nach einem anderen Aspekt dieser
Erfindung umfasst einen Hauptspeicher, der Befehle
speichert; einen Warteschlangenpuffer, der Befehle aus dem
Hauptspeicher vorausliest und speichert; einen
Befehlszähler, der eine Adresse im Hauptspeicher erzeugt, in
der ein als nächster auszuführender Befehl gespeichert ist;
einen Befehlsdecodierer, der vom Warteschlangenpuffer
ausgegebene Befehle empfängt und decodiert; und ein
Warteschlangen-Controller steuert die Eingabe und Ausgabe
von Befehlen an den Warteschlangenpuffer basierend auf der
Adresse, die vom Befehlszähler erzeugt und ausgegeben wurde.
Der Befehlsdecodierer erkennt den Empfang eines
vorbestimmten Sprungbefehls, er verarbeitet alle die
Befehle, die einem Sprungende vorausgehen, das durch den
Sprungbefehl als NOP-Befehle spezifiziert ist, gibt eine
Befehlswortlänge aus, die dem Sprungbefehl und den NOP-
Befehlen entspricht, an den Befehlszähler aus, wodurch die
Adresse des Befehlszählers aktualisiert wird, und stellt ein
Steuersignal bereit, den Warteschlangenpuffer nicht zu
leeren.
Wenn der Befehlsdecodierer erkennt, dass 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), dass der Warteschlangenpuffer geleert wird.
Weitere Aufgaben und Merkmale dieser Erfindung werden
aus der folgenden Beschreibung mit Bezug auf die beigefügten
Zeichnungen deutlich.
Fig. 1 ist ein Blockschaltbild, das ein Beispiel eines
inneren Aufbaus eines Mikroprozessors nach der vorliegenden
Erfindung zeigt;
Fig. 2 ist eine Zeichnung, die eine Befehlssequenz
zeigt, die eine erste Ausführungsform der vorliegenden
Erfindung erklärt;
Fig. 3 ist eine Zeichnung, die eine Befehlssequenz
zeigt, die eine zweite Ausführungsform der vorliegenden
Erfindung erklärt;
Fig. 4 ist eine Zeichnung, die eine Befehlssequenz
zeigt, die eine dritte Ausführungsform der vorliegenden
Erfindung erklärt;
Fig. 5 ist eine Zeichnung, die eine Befehlssequenz
zeigt, die eine vierte Ausführungsform der vorliegenden
Erfindung erklärt.
Ausführungsformen des Mikroprozessors nach der
vorliegenden Erfindung werden weiter unten mit Bezug auf die
beigefügten Zeichnungen ausführlich erläutert.
Fig. 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 Fig. 2 wird zusätzlich zur Fig. 1 eine
Erläuterung zu einer ersten Ausführungsform der vorliegenden
Erfindung gegeben. In der ersten Ausführungsform wird dem
Mikroprozessor von Fig. 1 (Fig. 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. Fig. 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 Fig. 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 Operandenabschnitt 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 "BJNP" 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.
Fig. 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 Fig. 2 gezeigten Inkrementierungsbefehle INX, INY
beschränkt.
Mit Bezug auf Fig. 1 und 3 wird eine Erläuterung zur
zweiten Ausführungsform der vorliegenden Erfindung gegeben.
Wie in Fig. 3 dargestellt ist, ist das Sprungende des
Sprungbefehls "BJMP" durch eine relative Adresse festgelegt.
In Fig. 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.
Fig. 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 Fig. 3 gezeigten Inkrementierungsbefehle INX, INY
beschränkt.
Mit Bezug auf Fig. 1 und 4 wird eine Erläuterung zur
dritten Ausführungsform der vorliegenden Erfindung gegeben.
Wie in Fig. 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.
Fig. 4 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. 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 Fig. 4 gezeigten Inkrementierungsbefehle INX, INY
beschränkt.
Mit Bezug auf Fig. 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 Fig. 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 Fig. 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.
Fig. 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 Fig. 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
Claims (5)
1. Mikroprozessor, umfassend:
einen Hauptspeicher (1), der Befehle speichert;
einen Warteschlangenpuffer (2), der Befehle aus dem Hauptspeicher (1) vorausliest und speichert;
einen Befehlszähler (8), der eine Adresse im Hauptspeicher (1) erzeugt, in der ein als nächster auszuführender Befehl gespeichert ist;
einen Befehlsdecodierer (6), der vom Warteschlangenpuffer (2) ausgegebene Befehle empfängt und decodiert; und
einen Warteschlangen-Controller (5), der die Eingabe und Ausgabe von Befehlen an den Warteschlangenpuffer (2) basierend auf der Adresse, die vom Befehlszähler (8) erzeugt und ausgegeben wurde,
bei dem, wenn der Befehlsdecodierer (6) den Empfang eines vorbestimmten Sprungbefehls erkennt, der Befehlsdecodierer (6) alle die Befehle verarbeitet, die einem Sprungende vorausgehen, das durch den Sprungbefehl als einem Operanden des Sprungbefehls festgelegt ist, eine Befehlswortlänge des Sprungbefehls einschließlich des Operanden an den Befehlszähler (8) ausgibt, wodurch die Adresse des Befehlszählers (8) aktualisiert wird, und ein Steuersignal bereitstellt, den Warteschlangenpuffer (2) nicht zu leeren.
einen Hauptspeicher (1), der Befehle speichert;
einen Warteschlangenpuffer (2), der Befehle aus dem Hauptspeicher (1) vorausliest und speichert;
einen Befehlszähler (8), der eine Adresse im Hauptspeicher (1) erzeugt, in der ein als nächster auszuführender Befehl gespeichert ist;
einen Befehlsdecodierer (6), der vom Warteschlangenpuffer (2) ausgegebene Befehle empfängt und decodiert; und
einen Warteschlangen-Controller (5), der die Eingabe und Ausgabe von Befehlen an den Warteschlangenpuffer (2) basierend auf der Adresse, die vom Befehlszähler (8) erzeugt und ausgegeben wurde,
bei dem, wenn der Befehlsdecodierer (6) den Empfang eines vorbestimmten Sprungbefehls erkennt, der Befehlsdecodierer (6) alle die Befehle verarbeitet, die einem Sprungende vorausgehen, das durch den Sprungbefehl als einem Operanden des Sprungbefehls festgelegt ist, eine Befehlswortlänge des Sprungbefehls einschließlich des Operanden an den Befehlszähler (8) ausgibt, wodurch die Adresse des Befehlszählers (8) aktualisiert wird, und ein Steuersignal bereitstellt, den Warteschlangenpuffer (2) nicht zu leeren.
2. Mikroprozessor nach Anspruch 1, bei dem eine
Sprungmarke
verwendet wird, um das Sprungende festzulegen.
3. Mikroprozessor nach Anspruch 1, bei dem eine relative
Adresse
zwischen dem Sprungbefehl und dem Sprungende festgelegt ist,
um das Sprungende festzulegen.
4. Mikroprozessor nach Anspruch 3, bei dem der
Warteschlangen-Controller (5) die Eingabe- und
Ausgabesteuerung von Befehlen an den Warteschlangenpuffer
(2) so durchführt, 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 werden kann.
eine relative Minusadresse als relative Adresse festgelegt werden kann.
5. Mikroprozessor, umfassend:
einen Hauptspeicher (1), der Befehle speichert; einen Warteschlangenpuffer (2), der Befehle aus dem Hauptspeicher (1) vorausliest und speichert;
einen Befehlszähler (8), der eine Adresse im Hauptspeicher (1) erzeugt, in der ein als nächster auszuführender Befehl gespeichert ist;
einen Befehlsdecodierer (6), der vom Warteschlangenpuffer (2) ausgegebene Befehle empfängt und decodiert; und
einen Warteschlangen-Controller (5), der die Eingabe und Ausgabe von Befehlen an den Warteschlangenpuffer (2) basierend auf der Adresse, die vom Befehlszähler (8) erzeugt und ausgegeben wurde,
bei dem, wenn der Befehlsdecodierer (6) den Empfang eines vorbestimmten Sprungbefehls erkennt, der Befehlsdecodierer (6) alle die Befehle verarbeitet, die einem Sprungende vorausgehen, das durch den Sprungbefehl als NOP-Befehle festgelegt ist, eine Befehlswortlänge, die dem Sprungbefehl und den NOP-Befehlen entspricht, an den Befehlszähler (8) ausgibt, wodurch die Adresse des Befehlszählers (8) aktualisiert wird, und ein Steuersignal bereitstellt, den Warteschlangenpuffer (2) nicht zu leeren.
einen Hauptspeicher (1), der Befehle speichert; einen Warteschlangenpuffer (2), der Befehle aus dem Hauptspeicher (1) vorausliest und speichert;
einen Befehlszähler (8), der eine Adresse im Hauptspeicher (1) erzeugt, in der ein als nächster auszuführender Befehl gespeichert ist;
einen Befehlsdecodierer (6), der vom Warteschlangenpuffer (2) ausgegebene Befehle empfängt und decodiert; und
einen Warteschlangen-Controller (5), der die Eingabe und Ausgabe von Befehlen an den Warteschlangenpuffer (2) basierend auf der Adresse, die vom Befehlszähler (8) erzeugt und ausgegeben wurde,
bei dem, wenn der Befehlsdecodierer (6) den Empfang eines vorbestimmten Sprungbefehls erkennt, der Befehlsdecodierer (6) alle die Befehle verarbeitet, die einem Sprungende vorausgehen, das durch den Sprungbefehl als NOP-Befehle festgelegt ist, eine Befehlswortlänge, die dem Sprungbefehl und den NOP-Befehlen entspricht, an den Befehlszähler (8) ausgibt, wodurch die Adresse des Befehlszählers (8) aktualisiert wird, und ein Steuersignal bereitstellt, den Warteschlangenpuffer (2) nicht zu leeren.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JPP01-142188 | 2001-05-11 | ||
JP2001142188A JP2002342075A (ja) | 2001-05-11 | 2001-05-11 | マイクロプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
DE10201439A1 true DE10201439A1 (de) | 2002-11-21 |
DE10201439B4 DE10201439B4 (de) | 2005-03-03 |
Family
ID=18988537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10201439A Expired - Fee Related DE10201439B4 (de) | 2001-05-11 | 2002-01-16 | Mikroprozessor |
Country Status (6)
Country | Link |
---|---|
US (1) | US6862680B2 (de) |
JP (1) | JP2002342075A (de) |
KR (1) | KR100465250B1 (de) |
CN (1) | CN1385782A (de) |
DE (1) | DE10201439B4 (de) |
TW (1) | TW530263B (de) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7162617B2 (en) * | 2003-02-14 | 2007-01-09 | Fine Arc Incorporated | Data processor with changeable architecture |
JP2005149297A (ja) * | 2003-11-18 | 2005-06-09 | Renesas Technology Corp | プロセッサおよびそのアセンブラ |
CN100492279C (zh) * | 2006-07-27 | 2009-05-27 | 中国科学院计算技术研究所 | 对复杂指令译码生成微码的译码装置和方法 |
US8166277B2 (en) * | 2008-02-01 | 2012-04-24 | International Business Machines Corporation | Data prefetching using indirect addressing |
US8209488B2 (en) * | 2008-02-01 | 2012-06-26 | International Business Machines Corporation | Techniques for prediction-based indirect data prefetching |
US20170075572A1 (en) * | 2015-09-11 | 2017-03-16 | Sandisk Technologies Inc. | Extending hardware queues with software queues |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61211744A (ja) * | 1985-03-18 | 1986-09-19 | Nec Corp | 命令先取り制御装置 |
JPS63178335A (ja) * | 1987-01-20 | 1988-07-22 | Mitsubishi Electric Corp | マイクロプロセツサ |
JPH0540624A (ja) * | 1991-02-05 | 1993-02-19 | V M Technol Kk | 集積回路マイクロプロセツサの命令フエツチ装置 |
JP3182438B2 (ja) * | 1991-10-28 | 2001-07-03 | 株式会社日立製作所 | データプロセッサ |
JP2694799B2 (ja) | 1993-09-07 | 1997-12-24 | 日本電気株式会社 | 情報処理装置 |
JPH07239781A (ja) | 1994-02-25 | 1995-09-12 | Hitachi Ltd | 情報処理装置 |
US5764946A (en) * | 1995-04-12 | 1998-06-09 | Advanced Micro Devices | Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address |
US5889986A (en) * | 1997-01-28 | 1999-03-30 | Samsung Electronics Co., Ltd. | Instruction fetch unit including instruction buffer and secondary or branch target buffer that transfers prefetched instructions to the instruction buffer |
JP3498831B2 (ja) | 1998-06-30 | 2004-02-23 | 松下電器産業株式会社 | プログラム制御方法およびその装置 |
-
2001
- 2001-05-11 JP JP2001142188A patent/JP2002342075A/ja active Pending
- 2001-09-13 TW TW090122725A patent/TW530263B/zh not_active IP Right Cessation
- 2001-09-21 US US09/956,908 patent/US6862680B2/en not_active Expired - Fee Related
-
2002
- 2002-01-15 KR KR10-2002-0002197A patent/KR100465250B1/ko not_active IP Right Cessation
- 2002-01-16 DE DE10201439A patent/DE10201439B4/de not_active Expired - Fee Related
- 2002-01-16 CN CN02101873A patent/CN1385782A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
TW530263B (en) | 2003-05-01 |
CN1385782A (zh) | 2002-12-18 |
US6862680B2 (en) | 2005-03-01 |
KR20020086214A (ko) | 2002-11-18 |
US20020169945A1 (en) | 2002-11-14 |
JP2002342075A (ja) | 2002-11-29 |
DE10201439B4 (de) | 2005-03-03 |
KR100465250B1 (ko) | 2005-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE10084556B4 (de) | Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen | |
DE69534113T2 (de) | Kompression der Befehlswörter eines Rechners | |
DE69325086T2 (de) | Verfahren und System für spekulative Befehlsausführung | |
DE69904189T2 (de) | Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern | |
DE69031991T2 (de) | Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen | |
DE69929936T2 (de) | Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem | |
DE2424931A1 (de) | Datenverarbeitungsanlage, insbesondere mikroprogramm-datenverarbeitungseinheit mit parallelen befehlsstroemen fuer mehrere ebenen von subbefehlsvorraeten | |
DE69805275T2 (de) | Verfahren und Anordnung zur Reduzierung von Störungen in einer Verzweigungsgeschichtstabelle eines Mikroprozessors | |
DE69534148T2 (de) | Rechnersystem zur Ausführung von Verzweigungsbefehlen | |
DE69308548T2 (de) | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. | |
DE3750935T2 (de) | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. | |
DE68928677T2 (de) | Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle | |
DE69719239T2 (de) | Hardware-Anordnung zur optimierten Vorausholung von Befehlen und Daten | |
DE69738188T2 (de) | Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor | |
DE69129519T2 (de) | Vorrichtung zur wirksamen Übertragung von Programmabläufen zwischen Unterprogrammen | |
DE69702350T2 (de) | Verzweigungsvorhersageschema für cachespeicherzeile, das von sätzen eines set-assoziativen cachespeichers gemeinsam verwendet wird | |
DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
DE69523690T2 (de) | Mikroprozessor mit Registerspeicher | |
DE102004013676A1 (de) | Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer | |
DE2630323B2 (de) | Datenspeichereinrichtung mit einem Hauptspeicher, einem Hilfsspeicher und einer Vorausschaulogik | |
DE4222776A1 (de) | Verfahren und anordnung fuer eine verzweigungsbefehlsverarbeitung in einer parallelverarbeitungseinheit | |
DE69130757T2 (de) | Ausführungsvorrichtung für bedingte Verzweigungsbefehle | |
DE2424810A1 (de) | Datenverarbeitungsanlage, insbesondere kleine mikroprogramm-datenverarbeitungsanlage mit mehrsilbenmikrobefehlen | |
DE69621405T2 (de) | Verarbeitungssystem, prozessor, befehlsstromspeicher und kompilierer | |
DE69230238T2 (de) | Informationsverarbeitungsvorrichtung mit Verzweigungsziel-Befehlspufferspeicher |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |