DE69530895T2 - Befehlsvorausladungsschaltung und Cachespeicher - Google Patents

Befehlsvorausladungsschaltung und Cachespeicher Download PDF

Info

Publication number
DE69530895T2
DE69530895T2 DE69530895T DE69530895T DE69530895T2 DE 69530895 T2 DE69530895 T2 DE 69530895T2 DE 69530895 T DE69530895 T DE 69530895T DE 69530895 T DE69530895 T DE 69530895T DE 69530895 T2 DE69530895 T2 DE 69530895T2
Authority
DE
Germany
Prior art keywords
instruction
address
prefetch
signal
branch
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 - Lifetime
Application number
DE69530895T
Other languages
English (en)
Other versions
DE69530895D1 (de
Inventor
Kazuhiko Minato-ku Maki
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.)
Lapis Semiconductor Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Application granted granted Critical
Publication of DE69530895D1 publication Critical patent/DE69530895D1/de
Publication of DE69530895T2 publication Critical patent/DE69530895T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • Die vorliegende Erfindung betrifft eine Anweisungs-Vorausleseschaltung und eine Cache-Vorrichtung.
  • 11 ist ein Blockdiagramm, das eine herkömmliche Anweisungs-Vorausleseschaltung zeigt. Diese ist an die CPU (zentrale Verarbeitungseinheit) eines Mikrocomputers oder ähnliches angeschlossen, um im Voraus Anweisungsdaten D zu holen, d. h. vorauszulesen, die für die CPU beim nächsten Zyklus erforderlich sind, um die Anweisungsausführungsgeschwindigkeit zu erhöhen. Die Anweisungs-Vorausleseschaltung kann auch auf eine Cache-Vorrichtung angewendet werden. In diesem Fall liest die Cache-Vorrichtung Anweisungsdaten D im Voraus, um ihren Betrieb zu beschleunigen.
  • In 11 enthält die Anweisungs-Vorausleseschaltung einen Adressen-Erzeugungsabschnitt 10, der ein Signal FA empfängt, das eine von der CPU (nicht gezeigt) gesendete Holadresse anzeigt, und eine Vorausleseadresse erzeugt. Die Vorausleseadresse wird in einem Speicher 20 gespeichert und wird auch zu einem Bestimmungssignal-Erzeugungsabschnitt 30 gesendet, der ein Signal erzeugt, das schließlich als Signal VALID zur CPU ausgegeben wird, das anzeigt, ob die zur CPU ausgegebene Anweisung D gültig oder ungültig ist. Der Ausgang des Datenregisters 40 ist auch an einen Vor-Decodierer 51 angeschlossen. Der Ausgang des Vor-Decodierers 51 ist an ein synchrones D-Typ-Flip-Flop 51a angeschlossen, dessen Ausgang an einen Eingang eines ODER-Gatters 52 angeschlossen ist, sowie an den invertierten Eingang eines UND-Gatters 32a. Der andere Eingang des ODER-Gatters 52 ist an ein Rücksetzsignal RST von der CPU angeschlossen. Der andere Eingang zum UND-Gatter 32a kommt vom Bestimmungssignal-Erzeugungsabschnitt 30 und wird nachfolgend detaillierter beschrieben. Der Ausgang des ODER-Gatters 52 ist an den "Rücksetz"-Anschluss eines synchronen RS-FF (Rücksetz-Setz-Flip-Flops) 54 angeschlossen. Der "Setz"-Anschluss des Flip-Flops 54 empfängt das Signal VALID vom Ausgang des UND-Gatters 32a über einen Inverter 53. Der Ausgang des Flip-Flops 54 ist ein Signal SEL0, das zum nachfolgend beschriebenen Adressen-Erzeugungsabschnitt 10 eingegeben wird.
  • Der Adressen-Erzeugungsabschnitt 10 weist einen Selektor 11 auf, der zwei Eingangssignale empfängt und in Abhängigkeit vom Signal SEL0 vom Flip-Flop 54 zwischen den Signalen auswählt. Das erste Eingangssignal ist das Holsignal FA von der CPU. Das zweite Eingangssignal ist das Ergebnis einer am Ausgangssignal vom Selektor 11 durchgeführten Verarbeitung. Der Ausgang des Selektors 11 ist an ein Vorausleseadressenregister (PFA) 12 angeschlossen. Der Ausgang des Registers 12 ist an einen Inkrementierer 13 angeschlossen, der eine Eins zu einer vom Register 12 ausgegebenen Adresse addiert. Dieses Signal dient als das zweite Eingangssignal zum Selektor. Die Ausgabe des Registers 12 wird auch als Vorausleseadresse zum Speicher 20 ausgegeben und wird auch zum Tag- bzw. Etikettenregister 31 im Bestimmungssignal-Erzeugungsabschnitt 30 geführt. Das Etikettenregister 31 hält die Ausgabe vom Register 12 und gibt sie zu einer Anpassungseinheit 32 aus. Die Anpassungseinheit 32 empfängt auch das Signal FA direkt von der CPU und vergleicht die Etikettenregisteradresse mit der Holadresse FA. Die Ausgabe der Anpassungseinheit 32 ist die andere Eingabe zum UND-Gatter 32a, das oben angegeben ist. Die Ausgabe des UND-Gatters 32a erzeugt das Signal VALID. Wenn die Etikettenregisteradresse an die Holadresse FA angepasst ist, ist das Anpassungseinheitssignal auf einem logischen Pegel "1 ", wohingegen das Anpassungseinheitssignal dann, wenn die Adressen nicht angepasst sind, einen logischen Pegel "0" annimmt.
  • Der Betrieb der Vorausleseschaltung der 11 kann unter Bezugnahme auf das Zeitdiagramm in 12 erklärt werden.
  • In 12 sind das Holsignal FA, die im Register 12 geladene Vorausleseadresse, die vom Register 40 gesendeten Anweisungsdaten D und die Signale VALID, SEL0 und RST gezeigt. Wenn das Rücksetzsignal RST "1" ist, wird das Signal SEL0 des RS-FF 54, welches Signal als das Ladeauswahlsignal für das Register 12 arbeitet, auf "0" rückgesetzt. Bei dieser Stufe gibt das Register 40 keine effektive Daten aus. Wenn das Rücksetzsignal RST "0" wird, wird das Holsignal FA in das Register 12 geladen. Während das Auswahlsignal SEL0 "1" ist, arbeitet die Schaltung der 11 in einem Vorauslesemode, so dass das Register 12 fortgesetzt mit den inkrementierten Adressen geladen wird. Der Speicher 20 gibt die Daten D entsprechend der vom Register 12 eingegebenen Adresse zum Register 40 aus.
  • Wenn die Anweisungsdaten D entsprechend (2) in 12 eine Verzweigungsanweisung sind, erfasst der Vor-Decodierer 51 dies aus der Ausgabe des Registers 40, und der Vorauslesemode wird freigegeben. Danach erscheint eine Adresse A, die eine Verzweigungs-Zielortadresse darstellt, im Holsignal FA von der CPU. Die Verzweigungs-Zielortadresse A wird in das Register 12 geladen und die Schaltung beginnt wieder im Vorauslesemode zu arbeiten, wie es aus der 12 zu sehen ist.
  • Jedoch leidet die vorangehende herkömmliche Anweisungs-Vorausleseschaltung an dem Problem, dass der Vorauslesebetrieb der Schaltung nicht nur dann gestoppt wird, wenn die durch den Vor-Decodierer 51 erfasste vorausgelesene Anweisung eine unbedingte Verzweigungsanweisung ist, sondern sogar dann, wenn sie eine bedingte Verzweigungsanweisung ist. Als Ergebnis wird selbst dann, wenn die Bedingung nicht erfüllt ist und somit die Verzweigung nicht genommen wird, der Vorauslesebetrieb gestoppt, was zu einer unnötigen Verzögerung führt, die unvermeidbar die Verarbeitungsleistung der CPU erniedrigt.
  • IBM Technical Disclosure Bulletin Vol. 33, No. 3B, August 1990, "Efficient Scheme to Reduce Over-Prefetching of Instructions for Loading an Instruction Buffer" beschreibt eine Technik und Hardware zum Eliminieren eines Vorauslesens von Anweisungen aus einem Speicher in einem auf einem Mikroprozessor basierenden System nach einer unbedingten Verzweigungsanweisung. Dies beruht auf einem Prüfen jeder Anweisung, um zu bestimmen, ob sie eine unbedingte Verzweigungsanweisung ist, und wenn es so ist, auf einem Beendigen des Vorausleseprozesses, um zu verhindern, dass nachfolgende Anweisungen nicht richtig im Anweisungspuffer gespeichert und dann zum Mikroprozessor zugeführt werden.
  • EP-A-0 320 098 offenbart eine Sprungvorhersageschaltung, die bestimmt, ob ein Sprung in Abhängigkeit von einer Bestimmung diesbezüglich, ob eine spezifizierte Sprungbedingung erfüllt worden ist, durchgeführt worden ist. Dies erfordert eine Berücksichtigung jeder aus dem Speicher wiedergewonnenen Anweisung.
  • Ein weiteres Vorausleseschema, das eine Sprungvorhersage enthält und eine Berücksichtigung der Art der Anweisung erfordert, ist von Scott McFarling und John Hennessy, Computer Systems Laboratory, Stanford University: "Reducing the Cost of Branches", Conference Proceedings of the 13th Annual International Symposium on Computer Architecture, 2.–5. Juni 1986, Tokyo, Japan offenbart.
  • Eine Anzahl von heuristischen Algorithmen, die für eine Verzweigungsvorhersage zu verwenden sind, ist in "Branch Prediction Strategies and Branch Target Buffer Design", 8153 Computer 17 (1984), Jan., No. 1, Long Beach, California, USA, Johnny Lee und Alan Jay Smith offenbart. Diese Algorithmen basieren auf einer Abbildung der Zustände der bestimmten Verzweigung und einer Funktion, die die Vorhersage ergibt.
  • Gemäß der vorliegenden Erfindung ist eine Anweisungs-Vorausleseschaltung nach Anspruch 1 geschaffen.
  • Die Anweisungs-Vorausleseschaltung kann eine Cache-Vorrichtung aufweisen.
  • Die vorliegende Erfindung wird vollständiger aus der hierin nachfolgend angegebenen detaillierten Beschreibung, genommen in Zusammenhang mit den beigefügten Zeichnungen, verstanden werden.
  • In den Zeichnungen ist:
  • 1 ein Blockdiagramm, das eine Anweisungs-Vorausleseschaltung gemäß der vorliegenden Erfindung zeigt;
  • 2 ein Zeitdiagramm zum Erklären eines Betriebs der in 1 gezeigten Anweisungs-Vorausleseschaltung;
  • 3 ein Blockdiagramm, das eine Anweisungs-Vorausleseschaltung zeigt, die einen Vor-Decodierer verwendet;
  • 4 eine Blockdiagramm, das die Struktur eines in 3 gezeigten Vor-Decodierers zeigt;
  • 5 ein Zeitdiagramm zum Erklären eines Betriebs der in 3 gezeigten Anweisungs-Vorausleseschaltung;
  • 6 ein Blockdiagramm, das einen weiteren Typ von Anweisungs-Vorausleseschaltung zeigt;
  • 7 ein Blockdiagramm, das eine Schaltung zum Erzeugen eines Signals MISS (= NICHTTREFFER) zeigt, das bei der in 6 gezeigten Anweisungs-Vorausleseschaltung verwendet wird;
  • 8 ein Blockdiagramm, das einen weiteren Typ von Anweisungs-Vorausleseschaltung zeigt;
  • 9 ein Blockdiagramm, das eine Verzweigungsvorhersageeinrichtung zeigt, die bei der in 8 gezeigten Anweisungs-Vorausleseschaltung verwendet wird;
  • 10 ein Diagramm, das einen weiteren Typ von Verzweigungsvorhersageeinrichtung zeigt, die bei einer Anweisungs-Vorausleseschaltung verwendet wird;
  • 11 ein Blockdiagramm, das eine herkömmliche Anweisungs-Vorausleseschaltung zeigt; und
  • 12 ein Zeitdiagramm zum Erklären eines Betriebs der in 11 gezeigten herkömmlichen Anweisungs-Vorausleseschaltung.
  • Nachfolgend werden Ausführungsbeispiele der vorliegenden Erfindung anhand eines Beispiels unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
  • 1 ist ein Blockdiagramm, das eine Anweisungs-Vorausleseschaltung gemäß der vorliegenden Erfindung zeigt. In 1 sind dieselben oder ähnliche Elemente durch dieselben Symbole wie diejenigen in 11 dargestellt.
  • Wie bei der in 11 gezeigten Schaltung enthält die Anweisungs-Vorausleseschaltung der 1 einen Adressen-Erzeugungsabschnitt 10, der ein Signal FA empfängt, das eine von einer CPU (nicht gezeigt) gesendete Holanweisungsadresse anzeigt, und eine Vorausleseadresse erzeugt, einen Speicher 20, der an eine Ausgangsseite des Adressen-Erzeugungsabschnitts 10 angeschlossen ist und in der CPU zu verwendende Anweisungen entsprechend Adressen speichert, einen Bestimmungssignal-Erzeugungsabschnitt 30, der auch an die Ausgangsseite des Adressen-Erzeugungsabschnitts 10 angeschlossen ist und zur CPU ein Signal VALID ausgibt, das anzeigt, ob die zur CPU ausgegebenen Anweisungsdaten D gültig oder ungültig sind, und ein Datenregister 40, das an eine Ausgangsseite des Speichers 20 angeschlossen ist und die aus dem Speicher 20 ausgelesenen Daten D zum Zuführen zur CPU hält.
  • Bei der Anweisungs-Vorausleseschaltung dieses Ausführungsbeispiels ist eine Auswahlsignal-Erzeugungseinrichtung 60 anstelle des Vor-Decodierers 51 und der zugehörigen Elemente in 11 vorgesehen. Die Auswahlsignal-Erzeugungseinrichtung 60 erzeugt ein Auswahlsignal SEL1, das seinen Pegel bei einer Änderung des Signals VALID von "gültig" zu "ungültig" ändert, um eine beim Adressen-Erzeugungsabschnitt 10 zu ladende Adresse zu der von der CPU gesendeten Holadresse FA umzuschalten, was später detailliert beschrieben wird.
  • Der Adressen-Erzeugungsabschnitt 10 enthält einen Selektor 11 mit einem Eingangsanschluss, der das Holsignal FA von der CPU empfängt. Der Adressen-Erzeugungsabschnitt 10 enthält weiterhin ein Vorausleseadressenregister 12, das an eine Ausgangsseite des Selektors 11 angeschlossen ist, und einen Inkrementierer 13, der eine Ausgabe des Registers 12 empfängt. Der Inkrementierer 13 addiert 1 (Eins) zu einer vom Register 12 ausgegebenen Adresse und gibt die um Eins inkrementierte Adresse zu einem weiteren Eingangsanschluss des Selektors 11 aus. Der Selektor 11 empfängt weiterhin das Ausgangssignal SEL1 und wählt in Abhängigkeit vom Ausgangssignal SEL1 entweder das Holsignal FA von der CPU oder das Ausgangssignal vom Inkrementierer 13 zum Zuführen zum Register 12 aus. Das Register 12 wird mit der vom Selektor 11 ausgegebenen ausgewählten Adresse geladen und gibt die geladene Adresse als Vorausleseadresse zum Speicher 20 aus.
  • Der Bestimmungssignal-Erzeugungsabschnitt 30 enthält ein Etikettenregister 31 und eine Anpassungseinheit 32. Das Etikettenregister 31 hält die Ausgabe vom Register 12 und gibt sie zur Anpassungseinheit 32 aus. Die Anpassungseinheit 32 vergleicht die ausgegebene Adresse vom Etikettenregister 31 mit der Holadresse FA von der CPU. Wenn die vom Etikettenregister 31 ausgegebene Adresse an die Holadresse FA angepasst ist oder mit dieser übereinstimmt, erzeugt die Anpassungseinheit 32 das Signal VALID auf einem Pegel "1". Andererseits, nämlich dann, wenn das Ergebnis negativ ist, erzeugt die Anpassungseinheit 32 das Signal VALID auf einem Pegel "0". Das Signal VALID wird zur CPU gesendet.
  • Die Auswahlsignal-Erzeugungseinrichtung 60 enthält ein RS-FF 62, dem das Signal VALID über einen Inverter 61 eingegeben wird, und ein D-FF 63 (Datenverzögerungs-Flip-Flop), dem das Signal VALID direkt eingegeben wird. Das RS-FF 62 hat einen Rücksetzanschluss R, dem selektiv ein Rücksetzsignal RST zum Einstellen eines Rücksetz- oder Setzmodes eingegeben wird. Andererseits ist das D-FF 63 zum Zwischenspeichern eines Zustands des Signals VALID vorgesehen, und es hat einen Ausgangsanschluss, der an einen der Eingangsanschlüsse eines UND-Gatters 64 mit zwei Eingängen angeschlossen ist. Dem anderen Eingangsanschluss des UND-Gatters 64 wird ein invertierter Wert des Signals VALID eingegeben. Ein Ausgangssignal des UND-Gatters 64 wird invertiert und zu einem der Eingangsanschlüsse eines UND-Gatters 65 mit zwei Eingängen eingegeben. Weiterhin ist ein Ausgangsanschluss des RS-FF 62 an den anderen Eingangsanschluss des UND-Gatters 64 angeschlossen. Das Auswahlsignal SEL1 wird vom UND-Gatter 65 zum Selektor 11 zugeführt.
  • Nun wird hierin nachfolgend ein Betrieb der in 1 gezeigten Anweisungs-Vorausleseschaltung unter Bezugnahme auf ein in 2 gezeigtes Zeitdiagramm erklärt.
  • In 2 sind das Holsignal FA, die im Register 12 geladene Vorausleseadresse, die vom Register 40 gesendeten Anweisungsdaten D und die Signale VALID, SEL1 und RST gezeigt. Wenn das Rücksetzsignal RST "1" ist, wird das Auswahlsignal SEL1 des UND-Gatters 65 auf "0" rückgesetzt. Bei dieser Stufe gibt das Register 40 keine effektiven Daten aus. Wenn das Rücksetzsignal RST "0" wird, wird das Holsignal FA in das Register 12 geladen und wird das Auswahlsignal SEL1 auf "1" gesetzt. Während das Ausgangsignal SEL1 "1" ist, arbeitet die Schaltung der 1 in einem Vorauslesemode, so dass das Register 12 fortgesetzt mit den inkrementierten Adressen geladen wird. Der Speicher 20 gibt die Daten D entsprechend der vom Register 12 eingegebenen Adresse zum Register 40 aus.
  • Wenn die Anweisungsdaten D entsprechend (2) in 2 eine unbedingte Verzweigungsanweisung sind, oder eine bedingte Verzweigungsanweisung sind und die Verzweigung ausgeführt wird, sind die Holadresse FA von der CPU und die vom Register 12 ausgegebene Adresse voneinander unterschiedlich, so dass die Anpassungseinheit 32 einen Pegel des Signals VALID von "1" zu "0" ändert, was "ungültig" darstellt. Insbesondere wird dann, wenn die Verzweigung ausgeführt wird, die Holadresse FA A, während die vom Register 12 ausgegebene Adresse in 2 4 wird, so dass sich beide Adressen voneinander unterscheiden, um zu veranlassen, dass die Anpassungseinheit 32 den Pegel des Signals VALID von "1" zu "0" ändert. Die Änderung bezüglich des Pegels des Signals VALID wird durch die Operationen des D-FF 63 und des AND-Gatters 64 erfasst, um das Auswahlsignal SEL1 bei einem Zyklus zwangsweise von "1" zu "0" zu ändern, wie es in 2 ge zeigt ist. Insbesondere ist es so eingerichtet, dass sich dann, wenn das Signal VALID von "1" zu "0" geändert wird, ein Pegel am Eingangsanschluss des UND-Gatters 64, der den invertierten Wert des Signals VALID empfängt, von "0" zu "1" ändert, während ein Pegel am Eingangsanschluss des am D-FF 63 angeschlossenen UND-Gatters 64 aufgrund der Zwischenspeicheroperation des D-FF 63 bei einem Zyklus "1" bleibt. Somit wird ein Pegel am Eingangsanschluss des am UND-Gatter 64 angeschlossenen UND-Gatters 65 "0", während ein Pegel am Eingangsschluss des am RS-FF 62 angeschlossenen UND-Gatters 65 "1" bleibt, so dass das Auswahlsignal SEL1 bei einem Zyklus "0" wird, wie es in 2 gezeigt ist.
  • Demgemäß wählt der Selektor 11 die Holadresse FA zum Zuführen zum Register 12 so aus, dass das Register 12 mit der Adresse A geladen wird und die Vorausleseoperation wieder durchgeführt wird, wie es in 2 gezeigt ist. Wie es erkannt wird, stellt das Signal VALID dann, wenn die Anweisungsdaten D entsprechend (2) in 2 die bedingte Verzweigungsanweisung sind und die Verzweigung nicht ausgeführt wird, fortgesetzt "gültig" dar, was entgegengesetzt zur vorangehenden Beschreibung ist, so dass die Vorausleseoperation fortgesetzt normal durchgeführt wird.
  • Beim oben beschriebenen Ausführungsbeispiel dauert selbst dann, wenn der Verzweigungsbefehl vorausgelesen wird, die Vorausleseoperation an, bis tatsächlich eine Diskrepanz zwischen der Holadresse FA und der vom Register 12 ausgegebenen Adresse auftritt, um zu veranlassen, dass die Anpassungseinheit 32 das Signal VALID von "gültig" zu "ungültig" zu ändern. Demgemäß kann dann, wenn die Anweisung die bedingte Verzweigungsanweisung ist und die Verzweigung nicht ausgeführt wird, die Anweisung verglichen mit der in 11 gezeigten herkömmlichen Anweisungs-Vorausleseschaltung effizient zur CPU zugeführt werden. Weiterhin kann deshalb, weil die Anweisung nicht vor-decodiert werden muss, wie bei der Schaltung der 11, die Hardware vereinfacht werden und kann die Verarbeitungsverzögerung vermieden werden. Weiterhin wird dann, wenn die in 1 gezeigte Schaltung auf eine im Voraus beschreibbare Cache-Vorrichtung angewendet wird, da ein Updaten fortgeführt werden kann, um ein Trefferverhältnis der Vorrichtung zu erhöhen, ihre Leistungsfähigkeit verbessert.
  • 3 ist ein Blockdiagramm, das eine Anweisungs-Vorausleseschaltung zeigt, die einen Vor-Decodierer verwendet. In 3 sind dieselben oder ähnliche Elemente durch dieselben Symbole wie diejenigen in 1 dargestellt.
  • Wie es in 3 gezeigt ist, enthält die Anweisungs-Vorausleseschaltung weiterhin einen Vor-Decodierer 71, einen Selektor 72 und ein UND-Gatter 73. Die andere Struktur ist im Wesentlichen dieselbe wie diejenige, die in 1 gezeigt ist.
  • Der Vor-Decodierer 71 ist an eine Ausgangsseite des Datenregisters 40 angeschlossen. Der Vor-Decodierer 71 ist vorgesehen, um zu erfassen, dass die vorausgelesene Anweisung D vom Datenregister 40 eine unbedingte Verzweigungsanweisung ist, und um eine Verzweigungs-Zielortadresse von der unbedingten Verzweigungsanweisung zu extrahieren. Der Selektor 72 ist zwischen einer Ausgangsseite des Inkrementierers 13 und einer Eingangsseite des Selektors 11 vorgesehen. Der Selektor 72 empfängt die inkrementierte Adresse vom Inkrementierer 13 und empfängt weiterhin die Verzweigungs-Zielortadresse vom Vor-Decodierer 71, wenn die vorausgelesene Anweisung D die unbedingte Verzweigungsanweisung ist. Der Selektor 72 wählt eine von ihnen zum Zuführen zum Selektor 11 aus.
  • Ein Erfassungssignal, das anzeigt, ob die Anweisungsdaten D die unbedingte Verzweigungsanweisung sind, des Vor-Decodierers 71 wird zu einem der Eingangsanschlüsse eines UND-Gatters 73 mit zwei Eingängen eingegeben. Dem anderen Eingangsanschluss des UND-Gatters 73 wird das Signal VALID eingegeben. Das UND-Gatter 73 gibt ein Auswahlsignal SEL2 zum Selektor 72 aus, der eine Auswahl zwischen den Adressen vom Inkrementierer 13 und vom Vor-Decodierer 71 basierend auf dem Auswahlsignal SEL2 umschaltet. Andererseits wird das Auswahlsignal SEL1 zum Selektor 11 eingegeben. Bei dieser Schaltung wird das Auswahlsignal SEL1 unter Verwendung der Auswahlsignal-Erzeugungseinrichtung 60 erzeugt, die unter Bezugnahme auf 1 beschrieben ist, kann aber unter Verwendung des Vor-Decodierers 51 bei der in 11 gezeigten herkömmlichen Schaltung erzeugt werden.
  • 4 ist ein Blockdiagramm, das eine Struktur des Vor-Decodierers 71 zeigt.
  • Der Vor-Decodierer 71 enthält eine Koinzidenzschaltung 71-1. Die Koinzidenzschaltung 71-1 extrahiert beispielsweise 6 Bits, die eine Eigenschaft der vom Datenregister 40 ausgegebenen Anweisung darstellen, zum Erfassen einer Koinzidenz mit einer vorausgewählten Bit-Eigenschaft der unbedingten Verzweigungsanweisung. Die Koinzidenzschaltung 71-1 gibt ein Koinzidenzsignal S71-1 als Ergebnis der Erfassung zum UND-Gatter 73 aus. Der Vor-Decodierer 71 enthält weiterhin ein Adressen-Extraktionsregister 71-2 und einen Bit-Erweiterer 71-3. Dem Register 71-2 werden beispielsweise 26 Bits eingegeben, die einer Adresse eines Anweisungsfelds der vom Datenregister 40 ausgegebenen Anweisung zeigen, um eine durch eine Anweisung bestimmte Verzweigungs-Zielortadresse zu holen, wenn das Signal S71-1 "Koinzidenz" anzeigt. Ein Strom von 26 Bits, die vom Register 71-2 ausgegeben werden, wird durch den Bit-Erweiterer zu einem Strom von 32 Bits erweitert, um zum Selektor 72 zugeführt zu werden.
  • Nun wird hierin nachfolgend ein Betrieb der in 3 gezeigten Anweisungs-Vorausleseschaltung unter Bezugnahme auf ein in 5 gezeigtes Zeitdiagramm erklärt.
  • In 5 erfasst der Vor-Decodierer 71 dann, wenn beispielsweise die Anweisungsdaten D entsprechend (2) die unbedingte Verzweigungsanweisung sind, dies, und das UND-Gatter 73 gibt das entsprechende Auswahlsignal SEL2 zum Selektor 72 aus. Gleichzeitig extrahiert der Vor-Decodierer 71 die durch diese unbedingte Verzweigungsanweisung bestimmte Verzweigungs-Zielortadresse und führt sie zum Selektor 72 zu. Der Selektor 72 wählt die Verzweigungs-Zielortadresse basierend auf dem Auswahlsignal SEL2 zum Zuführen zum Selektor 11 aus. Demgemäß gibt der Selektor 11 die Verzweigungs-Zielortadresse aus, so dass das Register 12 mit der Verzweigungs-Zielortadresse zum Zuführen zum Speicher 20, zum Inkrementierer 13 und zum Etikettenregister 31 geladen wird.
  • Bei dieser Schaltung fährt die Anweisungs-Vorausleseschaltung selbst dann damit fort, die Vorausleseoperation durchzuführen, wenn die unbedingte Verzweigungsanweisung vorausgelesen wird. Insbesondere wird die Vorausleseoperation unter Verwendung der durch die unbedingte Verzweigungsanweisung bestimmten Verzweigungs-Zielortadresse durchgeführt. Wie es erkannt wird, arbeitet die Anweisungs-Vorausleseschaltung dann, wenn die Anweisungsdaten D entsprechend (2) in 5 die bedingte Verzweigungsanweisung sind, im Wesentlichen auf dieselbe Weise wie diejenige der 1. Weiterhin wird dann, wenn die in 3 gezeigte Schaltung auf eine im Voraus beschreibbare Cache-Vorrichtung angewendet wird, da ein Updaten fortgeführt werden kann, um ein Trefferverhältnis der Vorrichtung selbst dann zu erhöhen, wenn eine unbedingte Verzweigungsanweisung vorausgelesen wird, ihre Leistungsfähigkeit verbessert.
  • 6 ist ein Blockdiagramm, das einen weiteren Typ von Anweisungs-Vorausleseschaltung zeigt. In 6 sind die gleichen oder ähnliche Elemente durch dieselben Symbole wie diejenigen in 3 dargestellt.
  • Wie es in 6 gezeigt ist, enthält die Anweisungs-Vorausleseschaltung den Adressen-Erzeugungsabschnitt 10, den Speicher 20, den Bestimmungssignal-Erzeugungsabschnitt 30 und das Datenregister 40, wie die in 3 gezeigte Schaltung. Die Schaltung enthält einen Vor-Decodierer 81 und einen Selektor 82. Der Vor-Decodierer 81 ist an eine Ausgangsseite des Datenregisters 40 angeschlossen. Der Vor-Decodierer 81 ist vorgesehen, um zu erfassen, dass die vorausgelesene Anweisung D vom Datenregister 40 eine bedingte Verzweigungsanweisung ist, und um eine Verzweigungs-Zielortadresse von der bedingten Verzweigungsanweisung zu extrahieren. Der Selektor 82 ist zwischen eine Ausgangsseite des Inkrementierers 30 und eine Eingangsseite des Selektors 11 vorgesehen. Der Selektor 82 empfängt die inkrementierte Adresse vom Inkrementierer 13 und empfängt weiterhin die Verzweigungs-Zielortadresse vom Vor-Decodierer 81, wenn die vorausgelesene Anweisung D die bedingte Verzweigungsanweisung ist. Der Selektor 82 wählt eine von ihnen zum Zuführen zum Selektor 11 aus.
  • Ein Erfassungssignal, das anzeigt, ob die Anweisungsdaten D die bedingte Verzweigungsanweisung sind, des Vor-Decodierers 81 wird zu einem der Eingangsanschlüsse eines UND-Gatters 83 mit zwei Eingängen eingegeben. Dem anderen Eingangsanschluss des UND-Gatters 83 wird ein gegebenes Verzweigungsvorhersage-Bit der vom Datenregister 40 ausgegebenen vorausgelesenen Anweisung D eingegeben. Eine Ausgabe des UND-Gatters 83 und das Signal VALID werden zu Eingangsanschlüssen eines UND-Gatters 84 mit zwei Eingängen eingegeben. Das UND-Gatter 84 gibt ein Auswahlsignal SEL2 zum Selektor 82 aus, der eine Auswahl zwischen den Adressen vom Inkrementierer 13 und vom Vor-Decodierer 81 basierend auf dem Auswahlsignal SEL2 umschaltet. Andererseits wird ein Auswahlsignal SEL1 zum Selektor 11 eingegeben. Bei dieser Schaltung wird deshalb, weil eine Vorhersage diesbezüglich durchgeführt wird, ob die bedingte Verzweigungsanweisung tatsächlich ausgeführt wird oder nicht, weiterhin ein Signal MISS zum Laden der Holadresse FA zur Verfügung gestellt, wenn die Vorhersage falsch ist. Das Signal MISS und das Rücksetzsignal RST werden zu einem ODER-Gatter 85 eingegeben, von welchem eine Ausgabe dann wieder zu einem Rücksetzanschluss R eines synchronen RS-FF 86 eingegeben wird. Das RS-FF 86 gibt das Auswahlsignal SEL1 zum Selektor 11 aus, der eine Auswahl zwischen der Adresse von Selektor 82 und der Holadresse FA basierend auf dem Auswahlsignal SEL1 umschaltet. Als Eingangssignal zu einem Setzanschluss S des RS-FF 86 wird ein Moden-Einstellsignal SEL1 beim vorangehenden Zyklus verwendet.
  • 7 ist ein Blockdiagramm, das eine Schaltung zum Erzeugen des Signals MISS (= NICHTTREFFER) zeigt.
  • Die Schaltung enthält einen FA-Änderungs-Extraktionsabschnitt 91, der die Holadresse FA empfängt und ihre Änderung extrahiert, einen Zähler 92 zum Zählen einer Ausgabe des FA-Änderungs-Extraktionsabschnitts 91, d. h. der Anzahl der von der CPU gesendeten Holadressen FA, eine Koinzidenzschaltung 93 zum Erfassen, dass eine Ausgabe des Zählers 92 "1" ist, ein ODER-Gatter 94 zum Ableiten der logischen Summe einer Ausgabe der Koinzidenzschaltung 93 und des Rücksetzsignals RST und ein synchrones RS-FF 95 mit einem Rücksetzanschluss R, dem eine Ausgabe des ODER-Gatters 94 eingegeben wird. Diese Elemente arbeiten zusammen, um eine Zeitgabe des Signals MISS einzustellen. Das RS-FF 95 hat einen Setzanschluss S, dem das Erfassungsergebnis vom Vor-Decodierer 81 eingegeben wird, d. h. das Erfassungssignal, das anzeigt, ob die Anweisungsdaten D die bedingte Verzweigungsanweisung sind. Eine Ausgangsseite des RS-FF 95 ist an einen Freigabeanschluss E des Zählers 92 und an einen der Eingangsanschlüsse eines UND-Gatters 96 mit zwei Eingängen angeschlossen. Ein invertierter Wert des Signals VALID wird zum anderen Eingangsanschluss des UND-Gatters 96 eingegeben. Das Signal MISS wird vom UND-Gatter 96 ausgegeben. Die Schaltung der 7 prüft, ob die Verzweigungsvorhersage falsch gewesen ist oder nicht, und erzeugt das Signal MISS dann, wenn sich herausstellt, dass die Verzweigungsvorhersage falsch gewesen ist.
  • Nun wird hierin nachfolgend ein Betrieb der in 6 gezeigten Anweisungs-Vorausleseschaltung beschrieben.
  • Wenn die bedingte Verzweigungsanweisung erfasst wird, während im Vorauslesemode gearbeitet wird, wird basierend auf dem Verzweigungsvorhersage-Bit im Anweisungsfeld der Anweisung D abgeschätzt, ob die Verzweigung ausgeführt wird. Das Verzweigungsvorhersage-Bit wird gemäß dem bekannten Vorhersagealgorithmus vorbereitet, wenn ein Compiler oder ein Programmierer ein Programm herstellt. Gemäß einer Anweisungsgruppe kann das Verzweigungsvorhersage-Bit in der Form eines Vorzeichen-Bits sein, das eine Richtung (Plus- oder Minus-Richtung) der Verzweigungs-Zielortadresse anzeigt.
  • Wenn die bedingte Verzweigungsanweisung erfasst wird, wie es oben angegeben ist, wird das entsprechende Erfassungssignal vom Vor-Decodierer 81 zum Setzanschluss S des RS-FF 95 zugeführt, um das RS-FF 95 zu setzen und um somit den Zähler 92 zum Zählen der Anzahl von von der CPU gesendeten Holadressen FA zu setzen. Danach wird deshalb, weil bei diesem Ausführungsbeispiel die Verzweigungs-Zielortadresse dann, wenn die Verzweigung ausgeführt wird, in der zweiten Holadresse FA von der Holadresse FA erscheint, die die entsprechende bedingte Verzweigungsanweisung anzeigt, das RS-FF 95 rückgesetzt, wenn der Zählerwert "1" wird. Demgemäß wird dann, wenn das Signal VALID "0" wird, was "ungültig" bedeutet, während das RS-FF 95 gesetzt bleibt und somit den entsprechenden Eingangsanschluss des UND-Gatters 96 auf dem Pegel "1" hält, das Signal MISS vom UND-Gatter 96 zum Rücksetzen des RS-FF 86 ausgegeben, so dass der Selektor 11 die von der CPU gesendete Holadresse FA auswählt.
  • Wie es erkannt wird, führt die Anweisungs-Vorausleseschaltung der 6, solange die Verzweigungsvorhersage richtig ist, den Betrieb durch, der im Wesentlichen derselbe wie derjenige ist, der in 5 gezeigt ist. Insbesondere holt der Vor-Decodierer 81 die durch die vorausgelesene bedingte Verzweigungsanweisung bestimmte Verzweigungs-Zielortadresse und führt sie zum Selektor 82 zu. Der Selektor 82 wählt die Verzweigungs-Zielortadresse basierend auf dem Auswahlsignal SEL2 zum Zuführen zum Selektor 11 aus. Demgemäß gibt der Selektor 11 die Verzweigungs-Zielortadresse aus, so dass das Register 12 mit der Verzweigungs-Zielortadresse zum Zuführen zum Speicher 20, zum Inkrementierer 13 und zum Etikettenregister 31 geladen wird.
  • Die Anweisungs-Vorausleseschaltung fährt ungeachtet dessen, ob die vorausgelesene bedingte Verzweigungsanweisung ausgeführt wird oder nicht, damit fort, die Vorausleseoperation durchzuführen, solange die Verzweigungsvorhersage nicht falsch ist. Weiterhin kann die Anweisungs-Vorausleseschaltung dann, wenn diese Schaltung mit der unter Bezugnahme auf 3 beschriebenen Schaltung kombiniert wird, die Vorausleseoperation unter irgendeiner der gespeicherten Anweisungen so lange fortführen, wie die Verzweigungsvorhersage nicht falsch ist. Wenn die in 6 gezeigte Schaltung auf eine im Voraus beschreibbare Cache-Vorrichtung angewendet wird, wird deshalb, weil ein Updaten fortgeführt werden kann, um ein Trefferverhältnis der Vorrichtung zu erhöhen, selbst wenn eine bedingte Verzweigungsanweisung vorausgelesen wird, ihre Leistungsfähigkeit verbessert.
  • 8 ist ein Blockdiagramm, das einen weiteren Typ von Anweisungs-Vorausleseschaltung zeigt. In 8 sind dieselben oder ähnliche Elemente durch dieselben Symbole wie diejenigen in 6 dargestellt.
  • Bei der in 6 dargestellten Schaltung wird das Verzweigungsvorhersage-Bit als ein Vorhersagewert für die Verzweigungsvorhersage verwendet. Eine Verzweigungsvorhersageeinrichtung 100 ist für die Verzweigungsvorhersage vorgesehen. Insbesondere wird in 8 anstelle des Verzweigungsvorhersage-Bits eine Ausgabe der Verzweigungsvorhersageeinrichtung 100 zu einem der Eingangsanschlüsse des UND-Gatters 83 eingegeben. Die andere Struktur ist im Wesentlichen dieselbe wie diejenige, die in 6 gezeigt ist.
  • 9 ist ein Blockdiagramm, das die Verzweigungsvorhersageeinrichtung 100 zeigt. Die Verzweigungsvorhersageeinrichtung 100 ist in der Form eines Zufallswertgenerators, der durch ein D-FF gebildet ist. Ein Ausgangsanschluss Q des D-FF ist an seinen Datenanschluss D angeschlossen. Die Verzweigungsvorhersage wird unter Verwendung einer Ausgabe des Zufallswertgenerators als Vorhersagewert durchgeführt.
  • Insbesondere stellt die Ausgabe des Zufallswertgenerators in Abhängigkeit von der Zeitgabe einen Zufallswert "1" oder "0" dar. Da die mittlere Wahrscheinlichkeit von "1" oder "0" in diesem Zufallswertgenerator 0,5 ist, wird in dem Fall, dass eine Bestimmung des Vorhersagewerts schwierig ist, ein Trefferverhältnis eher höher, als dass ein Vorhersagewert auf "1" oder "0" festgelegt wird.
  • Wie es erkannt wird, führt die in 8 gezeigte Anweisungs-Vorausleseschaltung die Vorausleseoperation gleich derjenigen der unter Bezugnahme auf 6 beschriebenen Schaltung durch. Im Fall einer Anweisungsgruppe ohne Verzweigungsvorhersage-Bit im Anweisungsfeld kann die Verzweigungsvorhersage mit der vereinfachten Hardware bei diesem Ausführungsbeispiel erreicht werden.
  • 10 ist ein Diagramm, das einen weiteren Typ von Verzweigungsvorhersageeinrichtung 100 zeigt.
  • Wie es in 10 gezeigt ist, enthält die Verzweigungsvorhersageeinrichtung 100 einen Vorgeschichten-Tabellenspeicher 111, einen Komparator 112 und ein UND-Gatter 113 mit zwei Eingängen. Der Vorgeschichten-Tabellenspeicher 111 speichert vergangene Vorgeschichten von "verzweigt" oder "nicht verzweigt" in Form von Adressen-Etiketten 1~N. Dem Vorgeschichten-Tabellenspeicher 111 werden die niederwertigen Bits der Holadresse FA zum Ausgeben eines entsprechenden Adressen-Etiketts und einer vergangenen Vorgeschichte davon eingegeben. Dem Komparator 112 werden hochwertige Bits der Holadresse FA und das vom Vorgeschichten-Tabellenspeicher 111 ausgegebene Adressen-Etikett für einen Vergleich zwischen diesen eingegeben. Ein Ergebnis des Vergleichs beim Komparator 112 wird zu einem der Eingangsanschlüsse des UND-Gatters 113 eingegeben. Zum anderen Eingangsanschluss des UND-Gatters 113 wird die vom Vorgeschichten-Tabellenspeicher 111 ausgegebene entsprechende vergangene Vorgeschichte eingegeben. Wie es erkannt wird, stellt eine Ausgabe des UND-Gatters 113 einen Verzweigungsvorhersagewert dar und wird zu einem der Eingangsanschlüsse des UND-Gatters 83 in 8 zugeführt.
  • Bei dieser Schaltung kann die Verzweigungsvorhersage selbst im Fall einer Anweisungsgruppe ohne Verzweigungsvorhersage-Bit im Anweisungsfeld basierend auf der vergangenen Verzweigungsvorgeschichte durchgeführt werden. In 10 wird deshalb, weil es unpraktisch ist, den Vorgeschichten-Tabellenspeicher 111 für alle Adressen vorzusehen, der sogenannte Gruppenassoziativmode angenommen. Natürlich ist es effizienter, den sogenannten vollen Assoziativmode anzunehmen. Wenn die Holadresse FA nicht im Vorgeschichten-Tabellenspeicher 111 gefunden wird, wird es eingerichtet, dass "nicht verzweigt" vom Vorgeschichten-Tabellenspeicher 111 ausgegeben wird.
  • Wie es oben beschrieben ist, ist der Vorgeschichten-Tabellenspeicher 111 zum Durchführen der Verzweigungsvorhersage basierend auf der vergangenen Verzweigungsvorgeschichte vorgesehen. Demgemäß kann die vorausgelesene Anweisung selbst in einem Fall effizient zur CPU zugeführt werden, in welchem die Anweisungsgruppe kein Verzweigungsvorhersage-Bit hat. Wie es erkannt wird, wird im Fall eines Programms, das eine Ausführung einer Schleife für mehrere Male erfordert, ein Trefferverhältnis der Verzweigungsvorhersage verbessert. Weiterhin wird im Fall einer im Voraus beschreibbaren Cache-Vorrichtung, da ein Updaten selbst dann fortgeführt werden kann, wenn eine bedingte Verzweigungsanweisung vorausgelesen wird, ein Trefferverhältnis der Vorrichtung erhöht, um ihre Leistungsfähigkeit zu verbessern.
  • Wie es oben beschrieben ist, ist es dann, wenn die Holadresse FA nicht im Vorgeschichten-Tabellenspeicher 111 gefunden wird, so eingerichtet, dass "nicht verzweigt" vom Vorgeschichten-Tabellenspeicher 111 ausgegeben wird. Jedoch kann "verzweigt" vom Vorgeschichten-Tabellenspeicher 111 ausgegeben werden, indem das UND-Gatter 113 durch ein ODER-Gatter ersetzt wird und die Ausgabe des Komparators 112 invertiert wird.
  • Während die vorliegende Erfindung in Bezug auf die bevorzugten Ausführungsbeispiele beschrieben worden ist, soll die Erfindung nicht darauf beschränkt sein, sondern sie kann auf verschiedene Weisen ausgeführt werden, ohne vom Prinzip der Erfindung abzuweichen, wie es in den beigefügten Ansprüchen definiert ist.

Claims (6)

  1. Anweisungs-Vorausleseschaltung zum Liefern von Anweisungen zu einem Prozessor, die folgendes aufweist: einen Speicher (20) zum Speichern von Anweisungen im Voraus, die im Prozessor zu verwenden sind, wobei die Anweisungen Adressen entsprechen; eine Adressen-Erzeugungseinrichtung (10) zum Erzeugen einer Vorausleseadressensequenz zum Adressieren des Speichers (20) beginnend ab einer vom Prozessor eingegebenen Holadresse; eine Anweisungs-Wiedergewinnungseinrichtung (40) zum Lesen der Anweisungen entsprechend jeder der erzeugten Vorausleseadressen aus dem Speicher (20) und zum Präsentieren der Anweisungen auf einem Ausgangspfad zur Verwendung durch den Prozessor; eine Einrichtung (30) zum Vergleichen jeder Vorausleseadresse mit der entsprechenden Holadresse vom Prozessor, um ein Gültigkeitssignal zu erzeugen, das anzeigt, dass eine Anweisung auf dem Ausgangspfad ungültig ist, wenn die Hol- und Vorausleseadressen nicht übereinstimmen; und eine Auswahlsignal-Erzeugungseinrichtung (60) zum Veranlassen, dass die Adressen-Erzeugungseinrichtung (10) in Reaktion auf das Gültigkeitssignal, das anzeigt, dass eine gegebene vorausgelesene Anweisung ungültig ist, eine neue Anfangs-Holadresse vom Prozessor eingibt, dadurch gekennzeichnet, dass die Vorausleseschaltung keine Einrichtung zum Vor-Decodieren von durch die Anweisungs-Wiedergewinnungseinrichtung aus dem Speicher gelesenen Anweisungen aufweist, um zu bestimmen, ob sie Verzweigungsanweisungen aufweisen.
  2. Anweisungs-Vorausleseschaltung nach Anspruch 1, wobei die Adressen-Erzeugungseinrichtung (10) eine Einrichtung zum aufeinanderfolgenden Inkrementieren von Adressen enthält, um die Vorausleseadressensequenz zu erzeugen.
  3. Anweisungs-Vorausleseschaltung nach Anspruch 1 oder 2, wobei das Gültigkeitssignal anzeigt, dass eine Anweisung auf dem Ausgangspfad gültig ist, wenn die Hol- und Vorausleseadressen übereinstimmen.
  4. Anweisungs-Vorausleseschaltung nach einem der vorangehenden Ansprüche, wobei der Ausgangspfad an einen Eingang des Prozessors angeschlossen ist.
  5. Anweisungs-Vorausleseschaltung nach einem der vorangehenden Ansprüche, wobei das Gültigkeitssignal an einen Eingang des Prozessors angeschlossen ist.
  6. Anweisungs-Vorausleseschaltung nach einem der vorangehenden Ansprüche, die eine Cache-Vorrichtung aufweist.
DE69530895T 1994-10-06 1995-10-04 Befehlsvorausladungsschaltung und Cachespeicher Expired - Lifetime DE69530895T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP6242553A JPH08106387A (ja) 1994-10-06 1994-10-06 命令プリフェッチ回路及びキャッシュ装置
JP24255394 1994-10-06

Publications (2)

Publication Number Publication Date
DE69530895D1 DE69530895D1 (de) 2003-07-03
DE69530895T2 true DE69530895T2 (de) 2004-05-19

Family

ID=17090820

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69530895T Expired - Lifetime DE69530895T2 (de) 1994-10-06 1995-10-04 Befehlsvorausladungsschaltung und Cachespeicher
DE69535932T Expired - Fee Related DE69535932D1 (de) 1994-10-06 1995-10-04 Befehlsvorausladungs- und Verzweigungsvorhersageschaltung

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE69535932T Expired - Fee Related DE69535932D1 (de) 1994-10-06 1995-10-04 Befehlsvorausladungs- und Verzweigungsvorhersageschaltung

Country Status (5)

Country Link
US (1) US5729707A (de)
EP (2) EP0706121B1 (de)
JP (1) JPH08106387A (de)
KR (1) KR100346561B1 (de)
DE (2) DE69530895T2 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2759176B1 (fr) * 1997-02-05 1999-04-09 Sgs Thomson Microelectronics Micro-processeur faisant une prediction d'adresse rapide
US5951678A (en) * 1997-07-25 1999-09-14 Motorola, Inc. Method and apparatus for controlling conditional branch execution in a data processor
US6134649A (en) * 1997-11-17 2000-10-17 Advanced Micro Devices, Inc. Control transfer indication in predecode which identifies control transfer instruction and an alternate feature of an instruction
US6167506A (en) 1997-11-17 2000-12-26 Advanced Micro Devices, Inc. Replacing displacement in control transfer instruction with encoding indicative of target address, including offset and target cache line location
US6061786A (en) * 1998-04-23 2000-05-09 Advanced Micro Devices, Inc. Processor configured to select a next fetch address by partially decoding a byte of a control transfer instruction
US6175908B1 (en) 1998-04-30 2001-01-16 Advanced Micro Devices, Inc. Variable byte-length instructions using state of function bit of second byte of plurality of instructions bytes as indicative of whether first byte is a prefix byte
US6141745A (en) * 1998-04-30 2000-10-31 Advanced Micro Devices, Inc. Functional bit identifying a prefix byte via a particular state regardless of type of instruction
JP3867427B2 (ja) * 1999-01-11 2007-01-10 ソニー株式会社 プロセッサ装置および集積回路
US7085915B1 (en) * 2000-02-29 2006-08-01 International Business Machines Corporation Programmable prefetching of instructions for a processor executing a non-procedural program
US6988189B1 (en) * 2000-10-31 2006-01-17 Altera Corporation Ternary content addressable memory based multi-dimensional multi-way branch selector and method of operating same
US20020073301A1 (en) * 2000-12-07 2002-06-13 International Business Machines Corporation Hardware for use with compiler generated branch information
US7984279B2 (en) 2006-11-03 2011-07-19 Qualcomm Incorporated System and method for using a working global history register
JP2010020432A (ja) 2008-07-09 2010-01-28 Nec Electronics Corp キャッシュメモリ装置
US11550577B2 (en) * 2019-05-15 2023-01-10 Western Digital Technologies, Inc. Memory circuit for halting a program counter while fetching an instruction sequence from memory
US11403103B2 (en) 2020-04-14 2022-08-02 Shanghai Zhaoxin Semiconductor Co., Ltd. Microprocessor with multi-step ahead branch predictor and having a fetch-target queue between the branch predictor and instruction cache

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DD98576A1 (de) * 1972-08-15 1973-06-20
JPS58129660A (ja) * 1982-01-29 1983-08-02 Nec Corp 情報処理装置
EP0109655B1 (de) * 1982-11-17 1991-07-24 Nec Corporation Anordnung zum Vorabholen von Befehlen mit Vorhersage einer Verzweigungszieladresse
EP0258453B1 (de) * 1986-02-28 1993-05-19 Nec Corporation Steuervorrichtung zum vorabruf von befehlen
JPS6393038A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
JPS63170740A (ja) * 1987-01-07 1988-07-14 Mitsubishi Electric Corp デ−タ処理装置
GB8728493D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Jump prediction
JPH0769810B2 (ja) * 1988-11-25 1995-07-31 日本電気株式会社 マイクロプロセッサ
JPH0384630A (ja) * 1989-08-28 1991-04-10 Nec Corp マイクロプロセッサ
JP2560889B2 (ja) * 1990-05-22 1996-12-04 日本電気株式会社 マイクロプロセッサ
US5283873A (en) * 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
JPH04348430A (ja) * 1991-02-25 1992-12-03 Matsushita Electric Ind Co Ltd データ処理装置
JPH0588891A (ja) * 1991-09-30 1993-04-09 Toshiba Corp キヤツシユメモリ制御装置
US5507028A (en) * 1992-03-30 1996-04-09 International Business Machines Corporation History based branch prediction accessed via a history based earlier instruction address
US5586278A (en) * 1994-03-01 1996-12-17 Intel Corporation Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor
US5542109A (en) * 1994-08-31 1996-07-30 Exponential Technology, Inc. Address tracking and branch resolution in a processor with multiple execution pipelines and instruction stream discontinuities

Also Published As

Publication number Publication date
KR100346561B1 (ko) 2002-12-05
DE69535932D1 (de) 2009-05-07
EP1109095A3 (de) 2001-10-24
EP0706121A3 (de) 1997-01-15
EP0706121A2 (de) 1996-04-10
KR960015238A (ko) 1996-05-22
JPH08106387A (ja) 1996-04-23
EP1109095B1 (de) 2009-03-25
EP1109095A2 (de) 2001-06-20
US5729707A (en) 1998-03-17
EP0706121B1 (de) 2003-05-28
DE69530895D1 (de) 2003-07-03

Similar Documents

Publication Publication Date Title
DE69530895T2 (de) Befehlsvorausladungsschaltung und Cachespeicher
DE4447238B4 (de) Schaltungsanordnung und Verfahren zum Gewinnen von Informationen zur Verzweigungsvorhersage
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE69719235T2 (de) Prozessor und Verfahren zur spekulativen Ausführung von bedingten Verzweigungsbefehlen unter Verwendung einer von mehreren Verzweigungsvorhersageverfahren
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69229198T2 (de) Verzweigungsbefehlprozessor und Verfahren
DE10084556B4 (de) Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen
DE69028138T2 (de) Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen
DE69033443T2 (de) Mechanismus zur Verzweigungsrücksetzung in einem Prozessor mit gepaarten Befehlen
DE69033398T2 (de) Rechnerarchitektur mit Mehrfachbefehlsausgabe
DE69420540T2 (de) Verfahren und Vorrichtung zum Implementieren eines vierstufigen Verzweigungsauflosungssystem in einem Rechnerprozessor
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
DE69805275T2 (de) Verfahren und Anordnung zur Reduzierung von Störungen in einer Verzweigungsgeschichtstabelle eines Mikroprozessors
DE69325086T2 (de) Verfahren und System für spekulative Befehlsausführung
DE69227429T2 (de) Anordnung und Verfahren zur Auflösung von Abhängigkeiten unter mehreren Befehlen in einer Speicheranordnung
DE68928812T2 (de) Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu
DE102004013676B4 (de) Schaltung in einem Prozessor zur Steuerung einer iterativen Ausführung einer Gruppe von Programmanweisungen
DE69028153T2 (de) Cache-Speicherfehlgriffsvorhersageverfahren und -vorrichtung
DE69227465T2 (de) Cpu mit pipeline-einheit und effektiv-adressenrechnungseinheit mit möglichkeit zur beibehaltung von virtuellen operandenadressen.
DE4222776C2 (de) Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen
DE3851746T2 (de) Sprungvorhersage.
DE69130757T2 (de) Ausführungsvorrichtung für bedingte Verzweigungsbefehle
DE3588182T2 (de) Vorausschauende Speicherabrufmethode und System für Verzweigung mit Ausführungsbefehlen
DE69702350T2 (de) Verzweigungsvorhersageschema für cachespeicherzeile, das von sätzen eines set-assoziativen cachespeichers gemeinsam verwendet wird
DE69327927T2 (de) Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: OKI SEMICONDUCTOR CO.,LTD., TOKYO, JP