DE10201439B4 - Mikroprozessor - Google Patents

Mikroprozessor Download PDF

Info

Publication number
DE10201439B4
DE10201439B4 DE10201439A DE10201439A DE10201439B4 DE 10201439 B4 DE10201439 B4 DE 10201439B4 DE 10201439 A DE10201439 A DE 10201439A DE 10201439 A DE10201439 A DE 10201439A DE 10201439 B4 DE10201439 B4 DE 10201439B4
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.)
Expired - Fee Related
Application number
DE10201439A
Other languages
English (en)
Other versions
DE10201439A1 (de
Inventor
Yoshiyuki Haraguchi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of DE10201439A1 publication Critical patent/DE10201439A1/de
Application granted granted Critical
Publication of DE10201439B4 publication Critical patent/DE10201439B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative 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

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 auf eine Adresse im Hauptspeicher (1) verweist, in der ein als nächster auszuführender Befehl gespeichert ist;
– einen Befehlsdecodierer (6), der vom Warteschlangenpuffer (2) ausgegebene Befehle empfängt und decodiert, wobei durch das Decodieren beurteilt wird, ob ein Befehl ein Sprungbefehl ist oder nicht; und
– einen Warteschlangen-Controller (5), der die Eingabe und Ausgabe von Befehlen an den Warteschlangen-Puffer (2) basierend auf der Adresse steuert, die vom Befehlszähler (8) erzeugt und ausgegeben wurde,
dadurch gekennzeichnet, dass
auf den Empfang eines vorbestimmten Sprungbefehls (BJMP), dessen Operandenabschnitt ein Sprungende festlegt, Befehlscodes hinter dem Sprungbefehl bis zu dem Sprungende von dem Befehlsdecodierer (6) als Operand verarbeitet werden, indem der Befehlsdecodierer (6) alle diese Befehlscodes verarbeitet, die somit nicht ausgeführt werden,...

Description

  • 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

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 auf eine Adresse im Hauptspeicher (1) verweist, in der ein als nächster auszuführender Befehl gespeichert ist; – einen Befehlsdecodierer (6), der vom Warteschlangenpuffer (2) ausgegebene Befehle empfängt und decodiert, wobei durch das Decodieren beurteilt wird, ob ein Befehl ein Sprungbefehl ist oder nicht; und – einen Warteschlangen-Controller (5), der die Eingabe und Ausgabe von Befehlen an den Warteschlangen-Puffer (2) basierend auf der Adresse steuert, die vom Befehlszähler (8) erzeugt und ausgegeben wurde, dadurch gekennzeichnet, dass auf den Empfang eines vorbestimmten Sprungbefehls (BJMP), dessen Operandenabschnitt ein Sprungende festlegt, Befehlscodes hinter dem Sprungbefehl bis zu dem Sprungende von dem Befehlsdecodierer (6) als Operand verarbeitet werden, indem der Befehlsdecodierer (6) alle diese Befehlscodes verarbeitet, die somit nicht ausgeführt werden, und – eine Befehlswortlänge des Sprungbefehls an den Befehlszähler (8) ausgibt, die der Summe aus Länge des Sprungbefehls, Länge des das Sprungende festlegenden Operandenabschnitts und der Länge der als Operanden zu verarbeitenden Befehlscodes entspricht, wodurch die Adresse, auf die der Befehlszähler (8) verweist, entsprechend aktualisiert wird; und – ein Steuersignal bereitstellt, den Warteschlangenpuffer (2) nicht zu leeren.
  2. 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 auf eine Adresse im Hauptspeicher (1) verweist, in der ein als nächster auszuführender Befehl gespeichert ist; – einen Befehlsdecodierer (6), der vom Warteschlangenpuffer (2) ausgegebene Befehle empfängt und decodiert, wobei durch das Decodieren beurteilt wird, ob ein Befehl ein Sprungbefehl ist oder nicht; und – einen Warteschlangen-Controller (5), der die Eingabe und Ausgabe von Befehlen an den Warteschlangen-Puffer (2) basierend auf der Adresse steuert, die vom Befehlszähler (8) erzeugt und ausgegeben wurde, dadurch gekennzeichnet, dass auf den Empfang eines vorbestimmten Sprungbefehls (BJMP), dessen Operandenabschnitt ein Sprungende festlegt, Befehlscodes hinter dem Sprungbefehl bis zu dem Sprungende von dem Befehlscodierer (6) als NOP-Befehle verarbeitet werden.
  3. Mikroprozessor nach Anspruch 1 oder 2, bei dem eine Sprungmarke verwendet wird, um das Sprungende festzulegen.
  4. Mikroprozessor nach Anspruch 1 oder 2, bei dem eine relative Adresse zwischen dem Sprungbefehl und dem Sprungende festgelegt ist, um das Sprungende festzulegen.
  5. Mikroprozessor nach Anspruch 4, wenn bezogen auf Anspruch 1, bei dem der Warteschlangen-Controller (5) die Eingabe- und Ausgabesteuerung von Befehlen an den Warteschlangenpuffer (2) so durchführt, daß eine Vielzahl vorhergehender Befehle, die einer vorbestimmten Anzahl an relativen Adressen aus dem Befehl entsprechen, der momentan ausgeführt wird, bestehen bleiben und somit eine relative Minusadresse als relative Adresse festgelegt werden kann.
DE10201439A 2001-05-11 2002-01-16 Mikroprozessor Expired - Fee Related DE10201439B4 (de)

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 DE10201439A1 (de) 2002-11-21
DE10201439B4 true 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)

* Cited by examiner, † Cited by third party
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 中国科学院计算技术研究所 对复杂指令译码生成微码的译码装置和方法
US8209488B2 (en) * 2008-02-01 2012-06-26 International Business Machines Corporation Techniques for prediction-based indirect data prefetching
US8166277B2 (en) * 2008-02-01 2012-04-24 International Business Machines Corporation Data prefetching using indirect addressing
US20170075572A1 (en) * 2015-09-11 2017-03-16 Sandisk Technologies Inc. Extending hardware queues with software queues

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0773034A (ja) * 1993-09-07 1995-03-17 Nec Corp 情報処理装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
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 株式会社日立製作所 データプロセッサ
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 松下電器産業株式会社 プログラム制御方法およびその装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0773034A (ja) * 1993-09-07 1995-03-17 Nec Corp 情報処理装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
In: Proc. of The 18th Annual International Symposium on Computer Architecture,1991,S.150-159 *
Intel Architecture Software Developer's Manual - Volume 2: Instruction Set Reference, Order number 243191, Intel, 1997, S. B-1 - B-10
KURIAN, L. et al.: Classification and performance evaluation of instruction buffering techniques *
ntel Architecture Software Developer's Manual - Volume 2: Instruction Set Reference, Order number 243191, Intel, 1997, S. B-1 - B-10 *

Also Published As

Publication number Publication date
TW530263B (en) 2003-05-01
JP2002342075A (ja) 2002-11-29
KR20020086214A (ko) 2002-11-18
DE10201439A1 (de) 2002-11-21
KR100465250B1 (ko) 2005-01-13
US6862680B2 (en) 2005-03-01
US20020169945A1 (en) 2002-11-14
CN1385782A (zh) 2002-12-18

Similar Documents

Publication Publication Date Title
DE10084556B4 (de) Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen
DE602004008711T2 (de) Anordnung, Verfahren und Rechnerdatensignal zur selektiven Annullierung der Vorhersage eines Rücksprungstapelspeichers als Antwort auf die Erkennung einer nicht-standard Rücksprungsbefehlsreihe
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE60014005T2 (de) Verfahren und Vorrichtung zur Befehlsvorabholung
DE2424931C2 (de) Mikroprogrammierbare Datenverarbeitungsanlage
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE2935906C2 (de) Mikroprozessor
DE1299146B (de) Befehlssteuereinheit
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE2630323B2 (de) Datenspeichereinrichtung mit einem Hauptspeicher, einem Hilfsspeicher und einer Vorausschaulogik
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE4345028A1 (de) Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen
DE19526008C2 (de) Befehlsvorholeinheit für einen Computer
DE10201439B4 (de) Mikroprozessor
DE3307194C2 (de)
DE4034009C2 (de) Verfahren zur Befehlsabrufsteuerung
EP1079307B1 (de) Verfahren zum Betrieb eines Speichersystems sowie Speichersystem
DE102005001679B4 (de) Mikroprozessor-Einrichtung, und Verfahren zur Branch-Prediktion für conditional Branch-Befehle in einer Mikroprozessor-Einrichtung
DE112006000514T5 (de) CPU-Architektur mit einzelnem Zyklus und geringer Leistungsaufnahme
DE4010895C2 (de) Mikroprozessor mit Befehlsdecodiereinrichtung
DE19580638B4 (de) Computersystem und Verfahren zum Steuern eines Peripheriegeräts in einem Computersystem
EP0936539B1 (de) Vorrichtung und Verfahren zum Holen von Befehlen für eine programmgesteuerte Einheit
DE3104256C2 (de)

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