DE69929936T2 - Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem - Google Patents

Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem Download PDF

Info

Publication number
DE69929936T2
DE69929936T2 DE69929936T DE69929936T DE69929936T2 DE 69929936 T2 DE69929936 T2 DE 69929936T2 DE 69929936 T DE69929936 T DE 69929936T DE 69929936 T DE69929936 T DE 69929936T DE 69929936 T2 DE69929936 T2 DE 69929936T2
Authority
DE
Germany
Prior art keywords
branch
instructions
commands
cache
instruction
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
DE69929936T
Other languages
English (en)
Other versions
DE69929936D1 (de
Inventor
Robert Greg Austin McDonald
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE69929936D1 publication Critical patent/DE69929936D1/de
Application granted granted Critical
Publication of DE69929936T2 publication Critical patent/DE69929936T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Description

  • Die vorliegende Erfindung betrifft ein System und ein Verfahren zum Abrufen von nichtangrenzenden Befehlen in einem Datenverarbeitungssystem.
  • Superskalarprozessoren bedienen sich aggressiver Techniken zur parallelen Verwendung von Befehlen. In Spitzenzeiten stößt die Befehlszuteilung und -ausgabe auf breiten Datenpfaden an ihre oberen Grenzen. Um ein Befehlsfenster zur Erkennung parallel laufender Befehle zu betreiben, werden große Ausgabepuffer verwendet, und eine große Gruppe von physischen Registern liefert die Ziele für alle von dem Fenster ausgegebenen laufenden Befehle. Um die gleichzeitige Ausführung von Befehlen zu ermöglichen, besteht die Befehlsausführungseinheit aus vielen parallelen Funktionseinheiten. Die Abrufeinheit prüft spekulativ über mehrere vorangehende Verzweigungen hinweg, um dem Fenster einen ununterbrochenen Befehlsstrom zuzuleiten.
  • Die Entwicklung von Superskalarprozessoren geht dahin, den Umfang dieser Verfahren zu erweitern: breitere Zuteilungs-/Ausgabepfade, größere Fenster, mehr physische Register, mehr Funktionseinheiten und weiter reichende Verzweigungsprüfung. Zur Unterstützung dieser Entwicklung müssen alle Teile des Prozessors ausgewogen sein, da der Nutzen von aggressiven Verfahren durch jeden Engpass verringert wird.
  • Die Leistungsfähigkeit beim Abrufen von Befehlen hängt von mehreren Faktoren ab. Die Trefferrate von Befehls-Cachespeichern und die Genauigkeit der Verzweigungsvorhersage sind lange Zeit als wichtige Probleme der Abrufleistung angesehen worden und sind daher sehr gut untersucht.
  • Befehle, die während eines bestimmten Zyklus abgerufen werden sollen, befinden sich wegen Verzweigungen und Sprüngen möglicherweise nicht in angrenzenden Speicherbereichen. Daher werden entsprechende Pfade und eine Logik benötigt, um nichtangrenzende Basisblöcke abzurufen und sie in die Pipelines zu senden. Es reicht also nicht aus, dass die Befehle im Cachespeicher vorliegen, sondern man muss auch parallel auf sie zugreifen können.
  • Moderne Mikroprozessoren verwenden routinemäßig Verzweigungsprotokolltabellen und Verzweigungszieladress-Cachespeicher, um vorangehende Verzweigungsbefehle besser abrufen zu können. Durch Verzweigungsprotokolltabellen und andere Vorhersagemechanismen ist ein Prozessor in der Lage, Befehle über einen Verzweigungsbefehl hinaus abzurufen, bevor das Ergebnis der Verzweigung bekannt ist. Verzweigungszieladress-Cachespeicher ermöglichen einem Prozessor, Befehle über eine Verzweigung hinaus spekulativ abzurufen, bevor die Zieladresse der Verzweigung berechnet worden ist. Diese beiden Verfahren verwenden ein Laufzeitprotokoll zur spekulativen Vorhersage, welche Befehle abgerufen werden sollen, und vermeiden „tote" Taktzyklen, die normalerweise verloren gegangen wären. Aber auch mittels dieser Verfahren können moderne Mikroprozessoren während eines Taktzyklus nur angrenzende Befehle abrufen.
  • Je aggressiver Superskalarprozessoren vorgehen und je mehr Befehle sie pro Taktzyklus ausführen wollen, desto mehr Befehle müssen sie pro Taktzyklus abrufen können. Häufige Verzweigungsbefehle können die effektive Abrufbandbreite eines Prozessors stark einschränken. Statistisch gesehen ist jeder vierte Befehl ein Verzweigungsbefehl und mehr als die Hälfte dieser Verzweigungen wird ausgeführt. Ein Prozessor mit einer großen Verzweigungsbandbreite, beispielsweise 8 angrenzende Befehle pro Taktzyklus, könnte bis zur Hälfte der durch ihn abgerufenen Befehle und damit bis zur Hälfte der Zeit vergeuden.
  • Hochleistungsrechner mit Superskalarprozessoren sind von Hause aus in einen Befehlsabrufmechanismus und einen Befehlsausführungsmechanismus eingeteilt. Der Abruf- und der Ausführungsmechanismus sind durch (einen) Befehlsausgabepuffer, zum Beispiel Warteschlangen, Reservierungsstationen usw. voneinander getrennt. Gemäß den ihm zugewiesenen Aufgaben fungiert der Befehlsabrufmechanismus als „Hersteller", der Befehle abruft, decodiert und im Puffer ablegt. Der Befehlsausführungsmechanismus hingegen fungiert als „Verbraucher", der aus dem Puffer Befehle abruft und entsprechend Datenabhängigkeiten und Quelleneinschränkungen ausführt. Steuerungsabhängigkeiten (Verzweigungen und Sprünge) bieten einen Rückkopplungsmechanismus zwischen Hersteller und Verbraucher.
  • Frühere konstruktive Lösungen verwenden einen herkömmlichen Befehls-Cachespeicher, in dem eine statische Form des Programms enthalten ist, mit dem gearbeitet wird. Während jedes Taktzyklus müssen aus dem Befehls-Cachespeicher Befehle von nichtangrenzenden Speicherplätzen abgerufen und zu der vorhergesagten dynamischen Folge zusammengesetzt werden. Bei diesem Ansatz treten die folgenden Probleme auf:
    Bevor mit dem Abrufen begonnen wird, müssen Zeiger auf alle nichtangrenzenden Befehlsblöcke erzeugt werden. Das bedeutet gewissermaßen einen Umweg über eine Art Verzweigungszieltabelle (Verzweigungszielpuffer, Verzweigungsadress-Cachespeicher usw.), die in eine zusätzliche Warteschlangenstufe vor dem Befehls-Cachespeicher umgesetzt wird.
  • Der Befehls-Cachespeicher muss gleichzeitig den Zugriff auf mehrere nichtangrenzende Cachespeicherleitungen unterstützen. Dadurch benötigt der Cachespeicher mehrere Anschlüsse: wenn diese mehreren Anschlüsse durch Verschachtelung realisiert werden, kann es zu Gruppenkonflikten kommen.
  • Nach dem Abrufen der nichtangrenzenden Befehle aus dem Cachespeicher müssen diese zu der dynamischen Sequenz zusammengesetzt werden. Befehle müssen verschoben und ausgerichtet werden, damit der Decoder sie als angrenzend erkennt. Dies führt aller Wahrscheinlichkeit nach zu einer zusätzlichen Warteschlangenstufe nach dem Befehls-Cachespeicher.
  • Eine Trace-Cachespeicher-Lösung vermeidet diese Probleme, indem die dynamischen Sequenzen selbst zwischengespeichert werden, die der Decoder erkennen soll. Wenn die vorhergesagte dynamische Sequenz im Trace-Cachespeicher vorliegt, muss sie nicht erst neu aus der statischen Darstellung des Befehls-Cachespeichers erzeugt werden. Insbesondere werden dabei zum Abrufen nichtangrenzender Befehle keine zusätzlichen Stufen vor oder nach dem Befehls-Cachespeicher benötigt. Die Stufen existieren zwar, aber nicht auf dem kritischen Pfad der abrufenden Einheit, sondern auf der Eingangsseite des Trace-Cachespeichers. Diese Lösung wird durch redundante Befehlsspeicherbereiche erkauft: ein und dieselben Befehle müssen sowohl im primären Cachespeicher als auch im Trace-Cachespeicher gespeichert sein, wobei es auch zwischen Leitungen im Trace-Cachespeicher zur Redundanz kommen kann. Demzufolge werden bei dem Ansatz mit einem Trace-Cachespeicher Befehle entsprechend einem sehr wahrscheinlichen Pfad zu einer Gruppe zusammengefasst. Dann werden sie zusammen im Trace-Cachespeicher gespeichert. Dieses System erfordert zum Zusammenstellen und Zwischenspeichern der Befehlsfolgen einen komplexen Mechanismus.
  • Demzufolge besteht ein Bedarf an einem Verfahren zur Erhöhung des Gesamtdurchsatzes eines Superskalarprozessors. Ganz besonders werden ein System und ein verfahren zum erfolgreichen Abrufen nichtangrenzender Befehle in einem solchen Prozessor benötigt.
  • In der US-Patentschrift 4 719 570 werden Befehlsstromnummern und -markierungen beschrieben, die anzeigen, dass eine Abrufanforderung einem Vorabzugriff eines Befehls nach einer bedingten Verzweigung entspricht. Es werden zwei Befehlsspeicher eingerichtet, von denen der eine einer Zieladresse einer Verzweigung und der andere einem Hauptbefehlsstrom zugewiesen wird.
  • Gemäß einem ersten Aspekt wird in einem Datenverarbeitungssystem, das n Befehle während eines einzigen Taktzyklus ausführen kann, eine Vorrichtung zum Abrufen nichtangrenzender Befehlsblöcke bereitgestellt, wobei das System Folgendes umfasst: ein Befehls-Cachespeichermittel (106) zum Bereitstellen einer ersten Vielzahl von n Befehlen (606), die einen Verzweigungsbefehl enthalten; ein Verzweigungslogikmittel (116) zum Empfangen der ersten Vielzahl von n Befehlen (606) zum Bereitstellen von Verzweigungsprotokollinformationen über die erste Vielzahl von n Befehlen (606) und zum Ausgeben der ersten Vielzahl von n Befehlen auf n Befehlsleitungen (118); gekennzeichnet durch ein Hilfs-Cachespeichermittel (417) zum Empfangen einer zweiten Vielzahl von Befehlen (608), die das Ziel der Verzweigungsbefehle darstellen; und ein Mittel zum Multiplexen (425) der Ausgabewerte des Befehls-Cachespeichers (106) mit den Ausgabewerten des Hilfs-Cachespeichermittels (417) auf den n Befehlsleitungen (118), wenn die Verzweigungsprotokollinformationen eine Verzweigung vorhersagen; wobei die Vielzahl von Befehlen aus dem Hilfs-Cachespeichermittel (417) einen Teil der n Befehle aus dem Befehls-Cachespeichermittel (106) so überschreibt, dass dem Datenverarbeitungssystem während eines Taktzyklus zwei nichtangrenzende Blöcke von n Befehlen auf n Befehlsleitungen zugeleitet werden.
  • Gemäß einem zweiten Aspekt wird in einem Datenverarbeitungssystem, das n Befehle während eines Taktzyklus ausführen kann, ein Verfahren zum Abrufen nichtangrenzender Befehlsblöcke bereitgestellt, wobei das Verfahren Folgendes umfasst: Bereitstellen (502) einer ersten Vielzahl von n Befehlen (606), die einen Verzweigungsbefehl enthalten; Empfangen (508/510) der ersten Vielzahl von n Befehlen (606), welche Verzweigungsprotokollinformationen über die erste Vielzahl von Befehlen (606) und zum Ausgeben der ersten Vielzahl von n Befehlen auf n Befehlsleitungen (118) liefern; gekennzeichnet durch das Empfangen (506) einer zweiten Vielzahl von Befehlen (608), welche das Ziel des Verzweigungsbefehls darstellen; und Multiplexen (508) der ersten Vielzahl von Befehlen (606) mit der zweiten Vielzahl von Befehlen (608) auf den n Befehlsleitungen (118), wenn die Verzweigungsprotokollinformationen die Verzweigung vorhersagen; wobei Befehle der zweiten Vielzahl (608) einen Teil der ersten Vielzahl von n Befehlen (606) so überschreiben, dass dem Datenverarbeitungssystem während eines Taktzyklus zwei nichtangrenzende Blöcke von n Befehlen auf n Befehlsleitungen zugeleitet werden.
  • Die oben beschriebene vorliegende Erfindung ermöglicht einem Prozessor die Verwendung von Verzweigungsprotokollinformationen und eines Hilfs-Cachespeichers, um während eines einzigen Taktzyklus mehrere nichtangrenzende Gruppen von Befehlen abzurufen. Außerdem ermöglicht das Verfahren das Abrufen nichtangrenzender Befehle, ohne dass während eines Taktzyklus mehrere Stufen einer verschachtelten Verzweigungsvorhersagelogik geprüft werden müssen.
  • Im Folgenden wird als Beispiel eine Ausführungsart der Erfindung unter Bezug auf die beiliegenden Zeichnungen beschrieben, in denen:
  • 1 ein Blockschaltbild eines Superskalarprozessors ist;
  • 2A ein Blockschaltbild eines herkömmlichen Mechanismus innerhalb eines Prozessors zum Abrufen nichtangrenzender Befehle ist;
  • 2B eine Darstellung einer Speicherposition des Befehls-Cachespeichers und des Verzweigungszieladress-Cachespeichers ist;
  • 3 ein Flussdiagramm eines Verzweigungsvorhersage-Algorithmus für den herkömmlichen Mechanismus von 2 ist;
  • 4 ein Blockschaltbild eines Mechanismus innerhalb eines Prozessors zum Abrufen nichtangrenzender Befehle während eines einzigen Taktzyklus gemäß der Ausführungsart der vorliegenden Erfindung ist;
  • 5 ein Flussdiagramm des Verzweigungsvorhersage-Algorithmus für den Mechanismus zum Abrufen nichtangrenzender Befehle von 5 ist; und
  • 6 eine Tabelle ist, die den Befehlsfluss zeigt, wenn der Verzweigungsvorhersage-Algorithmus von 5 verwendet wird.
  • 1 ist ein Blockschaltbild eines Superskalarprozessors 10. Die Figur zeigt, dass der Superskalarprozessor 10 wie üblich einen mit einer Busschnittstelleneinheit (Bus Interface Unit, BIU) 12 verbundenen Systembus 11 beinhaltet. Die BIU 12 steuert die Datenübertragung zwischen dem Prozessor 10 und dem Systembus 11. Die BIU 12 ist mit einem Befehls-Cachespeicher 14 und einem Daten-Cachespeicher 16 des Prozessors 10 verbunden. Der Befehls-Cachespeicher 14 gibt Befehle an eine Abfolgesteuereinheit 18 aus. Als Reaktion auf solche Befehle aus dem Befehls-Cachespeicher 14 gibt die Abfolgesteuereinheit 18 selektiv Befehle an andere Ausführungsschaltungen des Prozessors 10 aus.
  • Außer der Abfolgesteuereinheit 18, in der als Ausführungseinheiten eine Zuteilungseinheit 46 und eine Durchführungseinheit 48 enthalten sind, beinhalten die Ausführungsschaltungen des Prozessors 10 bei der bevorzugten Ausführungsart mehrere Ausführungseinheiten, d.h. eine Verzweigungseinheit 20, eine Festkommaeinheit A (FXUA) 22, eine Festkommaeinheit B (FXUB), eine Komplexfestkommaeinheit (CFXU) 26, eine Lade-Speichereinheit (LSU) 28 und eine Fließkommaeinheit (FPU) 30. In die FXUA 22, die FXUB 24, die CFXU 26 und die LSU 28 werden die Quellenoperanddaten aus den Universalarchitekturregistern (GPR) 32 und den Festkomma-Umbenennungspuffern 34 eingegeben. Außerdem wird in die FXUA 22 und die FXUB 24 ein „Übertragsbit" aus dem Übertragsbitregister (Carry Bit, CA) 42 eingegeben. Die FXUA 22, die FXUB 24, die CFXU 26 und die LSU 28 geben die Ergebnisse (Zieloperanddaten) ihrer Operationen zur Speicherung an ausgewählten Speicherplätzen in den Festkommaumbenennungspuffern 34 aus. Ferner werden Quellenoperanddaten und Zieloperanddaten aus speziellen Registern (Special Purpose Register, SPR) 40 in die CFXU 26 eingegeben und von dieser wiederum in die Register eingegeben.
  • In die FPU 30 werden aus den Fließkomma-Architekturregistern (Floating Point architectural Register, FPR) 36 und den Fließkomma-Umbenennungspuffern 38 ihre Quellenoperanddaten eingegeben. Die FPU 30 gibt die Ergebnisse (Zieloperanddaten) ihrer Operation zur Speicherung an ausgewählten Speicherplätzen in den Festkomma-Umbenennungspuffern 34 aus.
  • Prozesse
  • Der Prozessor 10 wird üblicherweise durch eine große Anzahl von Ablaufsteuereinheiten (state machines) realisiert, welche relativ unabhängige Prozesse steuern. Der Prozessor lässt sich als komplexer paralleler Algorithmus darstellen, in welchem gleichzeitig mehrere Prozesse ablaufen.
  • Befehlsabruf
  • Dieser Prozess liefert einen kontinuierlichen Befehlsstrom aus dem Befehls-Cachespeicher und verwendet als Abrufvorhersagemechanismus den Verzweigungszieladress-Cachespeicher (Branch Target Address Cache, BTAC).
  • Verzweigungsvorhersage
  • Dieser Prozess ermittelt Verzweigungen und sagt sie voraus und prüft, ob die entsprechenden Befehle abgerufen wurden, aktualisiert Informationen und stellt Informationen über spekulativ ermittelte Verzweigungen in eine Verzweigungswarteschlange ein.
  • Verzweigungsauflösung
  • Dieser Prozess prüft, ob die Vorhersage mit dem tatsächlichen Verzweigungsergebnis übereinstimmt und nimmt bei einer falschen Vorhersage Korrekturen vor.
  • Verzweigungsausführung
  • Dieser Prozess schreibt Informationen für ausgeführte Verzweigungen in die BHT und entfernt die entsprechenden Einträge aus der Verzweigungswarteschlange.
  • Die vorliegende Erfindung betrifft allgemein den Abrufzyklus und die Fähigkeit zum Abrufen nichtangrenzender Befehle. 2A zeigt im System 100 die Hardwaremechanismen für das herkömmliche Verfahren zum Abrufen von Befehlsgruppen. Bei dieser Ausführungsart sind acht Befehle dargestellt, die gleichzeitig abgerufen werden. Darüber hinaus wird die vorliegende Erfindung unter Bezug auf Befehle mit einer Länge von vier Byte erörtert. Dem Fachmann ist jedoch klar, dass gleichzeitig eine beliebige Anzahl von Befehlen abgerufen werden kann, die eine beliebige Länge haben können, und dass sowohl die Anzahl als auch die Länge im Geltungsbereich der vorliegenden Erfindung liegen.
  • In 2A wird ein Abrufadresssignal 102 in eine Verzweigungsprotokolltabelle (Branch History Table, BHT) 104, einen Befehls-Cachespeicher 106, einen Verzweigungszieladress-Cachespeicher (Branch Target Address Cache, BTAC) 108, ein Verzeichnis für den Befehls-Cachespeicher (INST Dir) 110 und einen +32-Zähler 111 geschrieben. Zum besseren Verständnis der Funktion des oben dargelegten Mechanismus, insbesondere des Befehls-Cachespeichers 106, wird im Folgenden ein Eintrag im herkömmlichen Befehls-Cachespeicher beschrieben.
  • 2B zeigt eine einfache Anordnung für den von einer Befehlsabrufeinheit benötigten Eintrag 200 für einen Befehl für den Befehls-Cachespeicher und den BTAC (dieser Eintrag kann auch andere, für die vorliegende Erörterung unwesentliche, Informationen enthalten). 2B zeigt eine Abrufinformation 201, die eine Musteradressmarkierung 202, einen Nachfolgerindex 204 und Indexeinträge 206 des Verzweigungsblocks für eine Codefolge unter der Annahme eines direkt adressierten 64-KByte-Cachespeichers und der gezeigten Befehlsadressen. Im vorliegenden Beispiel umfasst der Eintrag des Cachespeichers vier Befehle 208, 210, 212 und 214. Der Eintrag enthält auch eine Information für den Befehlsabruf. Die Abrufinformation enthält zwei (nicht gezeigte) zusätzliche Felder, die von der Befehlsabrufeinheit genutzt werden.
  • Das Feld Nachfolgerindex 204 gibt sowohl den Cachespeicherblock, der laut Vorhersage als nächster abgerufen werden soll, als auch den Befehl innerhalb dieses nächsten Blocks an, der laut Vorhersage als erster ausgeführt werden soll. Das Feld Nachfolgerindex 204 gibt keine vollständige Befehlsadresse an, ist jedoch groß genug, um jeden Befehl innerhalb des Cachespeichers auszuwählen. Zum Beispiel erfordert ein direkt adressierter 64-KByte-Cachespeicher einen 14-Bit-Nachfolgerindex, wenn alle Befehle 32 Bit lang sind (12 Bits zum Adressieren des Cachespeicherblocks und 2 Bits zum Adressieren des Befehls im Block, wenn der Block 4 Worte groß ist).
  • Bei einer bevorzugten Ausführungsart zeigt das Feld Verzweigungsblockindex 206 die Lage eines Verzweigungspunktes innerhalb des entsprechenden Befehlsblocks an. Die Vorhersage für Befehle jenseits des Verzweigungspunktes lautet, dass sie nicht ausgeführt werden sollen.
  • Die BHT 104 in 2A empfängt auch ein BHT-Aktualisierungssignal und gibt ein Lesesignal aus. Das Lesesignal von der BHT 104 wird in die Verzweigungslogik 116 gelesen. Der Befehls-Cachespeicher 106 empfängt ein Schreibsignal von einer externen Quelle, zum Beispiel von einem L2-Cachespeicher. Der Befehls-Cachespeicher 106 gibt acht Befehle (Befehlsgruppe 0) an die Verzweigungslogik 116 aus. Ein Signal Adresse 0 wird direkt in die Verzweigungslogik 116 gelesen. Die Verzweigungslogik 116 sendet ein Signal Adresse überschreiben zum Multiplexer 120. Der Multiplexer 120 empfängt auch Signale 32 vom Zähler 111 und das Ausgangssignal vom BTAC 108. Ein Signal Adresse 1 wird vom BTAC 108 zur Verzweigungslogik 116 gesendet. Das Befehlsverzeichnis 110 liefert ein Treffersignal zur Verzweigungslogik 116. Die Verzweigungslogik 116 empfängt auch das Signal Verzweigungsergebnis, liefert die Verzweigungsinformation zu einer Verzweigungswarteschlange 1 216, gibt eine BTAC-Adresse 128 aus und liefert gültige Befehle 124. Ein solcher Mechanismus ist in der Lage, während jedes Taktzyklus acht angrenzende Befehle abzurufen, kann jedoch nur Befehle bis zur ersten vorhergesagten ausgeführten Verzweigung in der Gruppe nutzen. In der folgenden Erörterung in Verbindung mit den beiliegenden Figuren wird dies ausführlich erläutert.
  • Gemäß der obigen Beschreibung gibt es beim Abrufen von Befehlsgruppen mehrere Prozesse. Die vorliegende Erfindung betrifft eine Verbesserung des Verzweigungsvorhersage-Algorithmus und eine entsprechende Änderung des herkömmlichen Abrufmechanismus von 2A.
  • Zur besseren Veranschaulichung der mit dem Abrufen nichtangrenzender Befehle verbundenen Probleme bei den herkömmlichen Mechanismen von 2A siehe 3.
  • 3 ist ein Flussdiagramm eines Verzweigungsvorhersage-Algorithmus für den herkömmlichen Mechanismus von 2A. Zuerst wird in den 2A und 3 in Schritt 302 ermittelt, ob sich im Befehls-Cachespeicher gültige Befehle befinden.
  • Wenn im Befehls-Cachespeicher keine gültigen Befehle zu finden sind, werden in Schritt 304 alle abgerufenen Befehle für ungültig erklärt und die Fehlerbehandlungsroutine gestartet. Wenn jedoch im Befehls-Cachespeicher gültige Befehle gefunden werden, werden in Schritt 306 die Verzweigungen ermittelt, die Zieladressen berechnet und mittels der Verzweigungslogik 116 und der Verzweigungsprotokolltabellen 104 als ausgeführt oder nicht ausgeführt vorhergesagt. Anschließend wird in Schritt 308 ermittelt, ob es in der Befehlsgruppe 0 (der ersten Befehlsgruppe) eine vorhergesagte ausgeführte Verzweigung gibt. Wenn es eine vorhergesagte ausgeführte Verzweigung gibt, werden in Schritt 310 alle nachfolgenden Befehle storniert. Dann wird in Schritt 312 ermittelt, ob die Adresse 1 (Adresse der zweiten Befehlsgruppe) vom BTAC 108 gleich dem Ziel 0 des Befehlsverzeichnisses ist. Wenn die Antwort JA lautet, werden in Schritt 314 die Verzweigungsadressen gespeichert und Vorhersageinformationen für alle Verzweigungen in die Verzweigungswarteschlange 126 gelesen. Wenn die Adresse 1 jedoch nicht gleich dem Ziel 0 ist, werden in Schritt 316 die während des nächsten Taktzyklus abgerufenen Befehle storniert und die überschriebene Adresse gleich dem Ziel 0 gesetzt. Anschließend wird die BTAC-Adresse in Schritt 318 so aktualisiert, dass sie gleich dem Ziel 0 ist, und in Schritt 314 werden die Verzweigungsadressen und die Vorhersageinformationen in der Verzweigungswarteschlange gespeichert. Wenn in Schritt 308 hingegen keine vorhergesagten ausgeführten Verzweigungen in Gruppe 0 gefunden werden, wird ermittelt, ob die Adresse 1 gleich der Adresse 0 plus 32 ist. Lautet die Antwort hingegen NEIN, werden in Schritt 322 alle während des nächsten Taktzyklus abgerufenen Befehlsgruppen storniert und die überschriebene Adresse gleich der Adresse 0 + 32 gesetzt. Anschließend wird in Schritt 324 die BTAC- Adresse auf ungültig gesetzt, und der Prozess springt zurück zu Schritt 314.
  • Mit Hilfe dieses Algorithmus von 3 können nichtangrenzende Befehle nicht während eines Taktzyklus abgerufen werden. Wenn bei diesem Vorhersagealgorithmus ein Verzweigungsbefehl gefunden wird, können immer nur die Befehle bis zur Verzweigung verwendet werden. Es gibt jedoch wie oben erwähnt Mechanismen wie beispielsweise den Trace-Cachespeicher usw., mit deren Hilfe nichtangrenzende Befehle während eines Taktzyklus abgerufen werden können, jedoch nehmen dabei die Komplexität und die Aufwendungen des Systems zu.
  • Die vorliegende Erfindung löst dieses Problem durch Bereitstellung eines Hilfs-Cachespeichers und eines Überschreibverfahrens, welches den Hilfs-Cachespeicher zum Abrufen nichtangrenzender Befehle während eines einzigen Taktzyklus nutzt.
  • Bei der vorliegenden Ausführungsart erfordert dieses Verfahren drei wesentliche Hardwaremechanismen:
    • (1) einen Standard-Befehls-Cachespeicher (oder eine andere Speicherquelle),
    • (2) einen Verzweigungszieladress-Cachespeicher, und
    • (3) einen Hilfs-Cachespeicher.
  • Ein Standard-Befehls-Cachespeicher und ein Verzweigungszieladress-Cachespeicher sind in den meisten Mikroprozessoren gebräuchlich und können für dieses Verfahren ohne Änderung eingesetzt werden. Der Hilfs-Cachespeicher ist ein neuer Hardwaremechanismus, der mehrere Einträge mit einem oder mehreren Befehlen und eine zugehörige Adresse enthält. Der Hilfs-Cachespeicher kann einen sehr hohen Zuordnungsgrad aufweisen und im Verhältnis zum Haupt-Befehls-Cachespeicher relativ klein sein.
  • Die vorliegende Ausführungsart funktioniert allgemein wie folgt:
    • 1. Wenn ein Verzweigungsbefehl in einer ersten Befehlsgruppe (aufgrund des Verzweigungsprotokolls oder anderer Informationen) mit hoher Wahrscheinlichkeit als ausgeführt gilt und vom Hilfs-Cachespeicher keine Befehle geliefert wurden, wird der Abrufindex verwendet, um die Zieladresse der Verzweigung und einen oder mehrere Befehle unter dieser Adresse in den Hilfs-Cachespeicher zu lesen. Außerdem wird bei Bedarf eine geeignete sequenzielle Adresse (z.B. Verzweigungsziel plus 16 Bytes) in den BTAC gelesen.
    • 2. Wenn dies nicht der Fall ist und ein Verzweigungsbefehl in einer zweiten Befehlsgruppe mit hoher Wahrscheinlichkeit als ausgeführt gilt, wird der Abrufindex dazu verwendet, die Zieladresse der Verzweigung in den BTAC zu lesen.
    • 3. Wenn dies nicht der Fall ist und es in keiner Befehlsgruppe Verzweigungsbefehle gibt, wird der Abrufindex dazu verwendet, den BTAC zu löschen und als Standardwert eine geeignete sequenzielle Adresse einzutragen.
  • Die folgende Erörterung in Verbindung mit den beiliegenden Figuren dient der ausführlichen Beschreibung der Merkmale und der Arbeitsweise der vorliegenden Ausführungsart.
  • 4 ist ein Blockschaltbild eines Mechanismus 400 gemäß der vorliegenden Erfindung innerhalb eines Prozessors zum Abrufen nichtangrenzender Befehle während eines Taktzyklus. Die Elemente des Mechanismus 400 sind vielen der Elemente im Mechanismus 100 gleich. Diese gleichen Elemente werden durch dieselben Bezugsnummern bezeichnet. Gemäß dem oben Gesagten besteht der Hauptunterschied in dem zusätzlichen Hilfs-Cachespeicher 415 und seinem Verzeichnis 417.
  • Außerdem sind die Befehlsgruppen 0 und 1 zu sehen sowie vier Multiplexer 425, die das Überschreiben der Befehle aus dem Hilfs-Cachespeicher 417 in der Befehlsgruppe 1 aus dem Befehls-Cachespeicher 106' ausgehend von den von der BHT 104' und der Verzweigungslogik 116' abgeleiteten Verzweigungsprotokollinformation ermöglichen. Desgleichen überschreibt das Hilfsverzeichnis mit seiner Adresse das Signal Adresse 1 des +16-Zählers 321 ausgehend von der Verzweigungsprotokollinformation. Außerdem liefert der FTAC 419 anstelle des vom BTAC 108' von 2A gelieferten Signals Adresse 1 ein Signal Adresse 2. Demzufolge können nun wie oben erwähnt durch den zusätzlichen Hilfs-Cachespeicher 415 und die Verwendung des Hilfs-Cachespeichers und des Hilfsverzeichnisses 417 Informationen gesammelt werden, um nun nichtangrenzende Befehle abrufen zu können. Im Folgenden wird dieses Merkmal unter Bezug auf 5 ausführlicher beschrieben.
  • 5 ist ein Flussdiagramm des Verzweigungsvorhersage-Algorithmus für den Abrufmechanismus für nichtangrenzende Befehle von 4. Gemäß 4 und 5 wird in Schritt 502 zuerst ermittelt, ob im Befehls-Cachespeicher 106' gültige Befehle gespeichert sind. Wenn im Befehls-Cachespeicher 106' keine gültigen Befehle gefunden wurden, werden alle Befehle storniert und eine Fehlerbehandlungsroutine gestartet. Wenn hingegen im Befehls-Cachespeicher 106' gültige Befehle gibt, wird anschließend in Schritt 506 ermittelt, ob es im Hilfs-Cachespeicher 417 gültige Befehle gibt. Wenn im Hilfs-Cachespeicher 417 gültige Befehle gefunden wurden, werden die Befehle aus dem Hilfs-Cachespeicher 417 in Schritt 508 der Befehlsgruppe aus dem Befehls-Cachespeicher 106' überschrieben. Wenn hingegen keine gültigen Befehle im Hilfs-Cachespeicher gefunden wurden, werden in Schritt 510 alle Befehle aus dem Befehls-Cachespeicher aufbewahrt.
  • Nach Schritt 508 bzw. 510 werden in Schritt 512 auf herkömmliche Weise mit Hilfe der Verzweigungslogik 106' und der BHT 104' die nächsten Verzweigungen ermittelt, die Zieladressen berechnet und die Ausführung oder Nichtausführung der Verzweigungsbefehle vorhergesagt. Anschließend wird in Schritt 514 ermittelt, ob es in der Befehlsgruppe 0 eine vorhergesagte ausgeführte Verzweigung gibt. Wenn es in der Befehlsgruppe 0 eine vorhergesagte ausgeführte Verzweigung gibt, werden in Schritt 516 die nachfolgenden Befehle storniert.
  • Als Nächstes wird in Schritt 518 ermittelt, ob die Adresse 1 gleich der Zieladresse 0 der Verzweigung ist. Wenn die Antwort JA lautet, wird in Schritt 520 ermittelt, ob es in der Befehlsgruppe 1 oder in der nächsten Befehlsgruppe eine vorhergesagte ausgeführte Verzweigung gibt. Wenn die Antwort hierauf JA lautet, werden in Schritt 522 die nachfolgenden Befehle in der Befehlsgruppe 1 storniert. Dann wird in Schritt 524 ermittelt, ob die Adresse 2 gleich der Zieladresse 1 der Verzweigung ist. Wenn die Antwort hierauf JA lautet, speichert die Verzweigungswarteschlange in Schritt 526 die Verzweigungsadressen und die Vorhersageinformationen für alle Verzweigungen. Wenn die Antwort jedoch NEIN lautet, wird in Schritt 528 die Gruppe des nächsten Taktzyklus storniert und die Überschreibadresse gleich der Zieladresse 1 gesetzt. Anschließend wird in Schritt 530 die FTAC-Adresse so aktualisiert, dass sie den Wert der Zieladresse 1 einnimmt, und zum Schritt 526 zurückgesprungen.
  • Wenn die Adresse 1 in Schritt 518 nicht gleich der Zieladresse 0 ist, werden in Schritt 521 alle Befehle in der Gruppe 1 und den Gruppen des nächsten Taktzyklus storniert, die Überschreibadresse gleich der Zieladresse 0 gesetzt und die Speicherung der nächsten Gruppe im Hilfs-Cachespeicher vorbereitet. Anschließend wird in Schritt 523 die Hilfsadresse gleich der Zieladresse 0 und die FTAC-Adresse gleich der Zieladresse 0 + 16 gesetzt.
  • Wenn in Schritt 520 hingegen keine vorhergesagte ausgeführte Verzweigung in der Gruppe 1 gefunden wird, wird in Schritt 532 ermittelt, ob die Adresse 2 gleich der Adresse 1 plus 16 ist. Wenn die Antwort hierauf JA lautet, springt der Prozess zurück zu Schritt 526. Wenn die Antwort hingegen NEIN lautet, werden in Schritt 534 alle Gruppen des nächsten Taktzyklus storniert und die Überschreibadresse gleich der Adresse 1 + 16 gesetzt. Anschließend wird in Schritt 536 die FTAC-Adresse gleich der Adresse 1 + 16 gesetzt, und der Prozess springt zurück zu Schritt 526.
  • Wenn in Schritt 514 keine vorhergesagten ausgeführten Verzweigungen in der Gruppe 0 gefunden werden, wird ermittelt, ob die Adresse 1 gleich der Adresse 0 + 16 ist. Wenn die Adresse 1 gleich der Adresse 0 + 16 ist, springt der Prozess zurück zu Schritt 520 und arbeitet die Schritte dieser Entscheidungskette ab. Wenn die Antwort hingegen NEIN lautet, ist die Adresse 1 nicht gleich der Adresse 0 + 16, worauf in Schritt 540 alle Befehle in der Gruppe 1 und den Gruppen des nächsten Taktzyklus storniert werden und die Überschreibadresse gleich der Adresse 0 + 16 gesetzt wird. Anschließend wird in Schritt 542 die Hilfsadresse auf und die FTAC-Adresse auf ungültig gesetzt. Dann springt der Prozess zurück zu Schritt 526. Durch diesen Verzweigungsvorhersageprozess ist das System somit in der Lage, Verzweigungsprotokollinformationen derart zu sammeln, dass der Überschreibbefehl des Hilfs-Cachespeichers nichtangrenzende Befehle erfolgreich abrufen kann. Im Folgenden wird in Verbindung mit 6 die Funktionsweise anhand eines konkreten Beispiels ausführlich beschrieben.
  • 6 ist ein Beispiel 600, dass den Befehlsfluss bei Verwendung des Verzweigungsvorhersage-Algorithmus von 5 veranschaulicht. Das in 6 gezeigte Beispiel 600 stellt eine Reihe von Abrufschritten 602 für ein Programmsegment 604 in aufeinander folgenden Taktzyklen gemäß der vorliegenden Erfindung dar. Dabei ist zu beachten, dass alle Adressen im Hexadezimalformat (Basis 16) dargestellt sind. Sterne im Beispiel 600 zeigen abgerufene Befehle im Befehlsstrom an, die storniert wurden.
  • Aus 6 ist zu ersehen, dass das Programmsegment eine Vielzahl von Basisblöcken 606, 608, 610 und 612 umfasst. Jeder der Basisblöcke 606 bis 612 beginnt mit einem Ladebefehl und endet mit einem Verzweigungsbefehl. Die Basisblöcke werden in Verbindung mit der vorliegenden Erfindung dazu verwendet, nichtangrenzende Befehle während eines Taktzyklus abzurufen.
  • Durch die Nutzung des Verzweigungsvorhersage-Algorithmus von 5 in Verbindung mit den Hardwaremechanismen von 4 zum Sammeln von Verzweigungsprotokollinformationen ist es möglich, nichtangrenzende Befehle von 6 während eines Taktzyklus abzurufen.
  • Das Verfahren zum Abrufen von Befehlen während eines Taktzyklus wird durch die 4, 5 und 6 veranschaulicht. Im Zyklus 000 werden acht Befehle bereitgestellt. Es wird davon ausgegangen, dass sich im Hilfs-Cachespeicher 417 zu Anfang keine Befehle befinden, sodass zu diesem Zeitpunkt in Schritt 502 ungültige Befehle im Befehls-Cachespeicher gefunden werden, dann wird in Schritt 506 ermittelt, ob sich im Hilfs-Cachespeicher gültige Befehle befinden, was zur Antwort NEIN führt. In diesem Fall werden dann alle Befehle aus dem Befehls-Cachespeicher zurückgehalten. Zu diesem Zeitpunkt werden in Schritt 512 die Verzweigungen ermittelt, die Zieladressen berechnet und als ausgeführt oder nicht ausgeführt vorhergesagt. Es ist bekannt, dass sich das Ziel für die Verzweigung in der ersten Befehlsgruppe unter der Adresse 0x100 befindet. Dann wird ermittelt, ob sich in der Gruppe 0 eine vorhergesagte ausgeführte Verzweigung befindet, und die Antwort lautet JA. Das entspricht dem dritten Befehl unter der Adresse 0x000. Durch den Verzweigungsvorhersageprozess wird der Befehl unter der Adresse 0x000 in den Hilfs-Cachespeicher gelesen und die Adresse im Hilfs-Verzeichnis gespeichert. Durch den Verzweigungsvorhersageprozess wird ferner in Schritt 530 die Adresse 110 im BTAC 108 gespeichert.
  • Dann wird im Taktzyklus 003 der nächste Basisblock 608 zum Laden der Befehle unter der Zieladresse 0x100 verwendet. Der letzte Befehl im Basisblock 608 ist eine Verzweigung zur Adresse 200. Dann werden wie zuvor erwähnt die Adresse 100 abgerufen und für diese entsprechende Informationen im Hilfs-Cachespeicher, im Hilfs-Verzeichnis und im BTAC gesammelt. Dementsprechend werden während der Taktzyklen 003 bis 007 Informationen gesammelt und während des einen Taktzyklus 008 zwei nichtangrenzende Befehle (0x000 und 0x100) abgerufen.
  • Dieser Verzweigungsvorhersageprozess wird mit den Basisblöcken 610 und 612 wiederholt, wobei während der Taktzyklen 020 bis 024 nichtangrenzende Befehle abgerufen werden. Das Beispiel zeigt, dass zuerst ausreichend Verzweigungsprotokollinformationen gesammelt werden müssen und anschließend während eines Taktzyklus nichtangrenzende Befehle abgerufen werden können. Dieser Prozess kann wiederholt werden, insbesondere in solchen Fällen, in denen Befehle wiederholt vorkommen, sodass die meisten nichtangrenzenden Befehle während eines Taktzyklus abgerufen werden können. Dies wird durch die Verwendung des Hilfs-Cachespeichers und der Universalverzweigungslogik in Verbindung mit den Verzweigungsprotokolltabellen erreicht, während der Verzweigungsvorhersageprozess gemäß der vorliegenden Erfindung ausgeführt wird.
  • Es sind auch andere Verfahren wie beispielsweise Trace-Cachespeicher und mehrstufige Verzweigungsvorhersageroutinen vorgeschlagen worden, damit ein Prozessor nichtangrenzende Befehle während eines Taktzyklus abrufen kann. Das oben beschriebene Verfahren mit Hilfs-Cachespeicher und Überschreiben von Befehlen ist jedoch einfacher als andere Verfahren und genauso wirksam.

Claims (10)

  1. Vorrichtung zum Abrufen nichtangrenzender Befehlsblöcke in einem Datenverarbeitungssystem, das in der Lage ist, n Befehle während eines Taktzyklus auszuführen, wobei das System Folgendes umfasst: ein Befehls-Cachespeichermittel (106) zum Bereitstellen einer ersten Vielzahl von n Befehlen (606), die einen Verzweigungsbefehl enthalten; ein Verzweigungslogikmittel (116) zum Empfangen der ersten Vielzahl von n Befehlen (606) zum Bereitstellen von Verzweigungsprotokollinformationen über die erste Vielzahl von n Befehlen (606) und zum Ausgeben der ersten Vielzahl von n Befehlen auf n Befehlsleitungen (118); gekennzeichnet durch ein Hilfs-Cachespeichermittel (417) zum Empfangen einer zweiten Vielzahl von Befehlen (608), die das Ziel der Verzweigungsbefehle darstellen; und ein Mittel zum Multiplexen (425) der Ausgabewerte des Befehls-Cachespeichers (106) mit den Ausgabewerten des Hilfs-Cachespeichermittels (417) auf den n Befehlsleitungen (118), wenn die Verzweigungsprotokollinformationen eine Verzweigung vorhersagen; wobei die Vielzahl der vom Hilfs-Cachespeichermittel (417) kommenden Befehle einen Teil der vom Befehls- Cachespeichermittel (106) kommenden n Befehle so überschreibt, dass dem Datenverarbeitungssystem während eines Taktzyklus zwei nichtangrenzende Blöcke von n Befehlen auf n Befehlsleitungen zugeleitet werden.
  2. Vorrichtung nach Anspruch 1, bei welcher das Hilfs-Cachespeichermittel einen Hilfs-Cachespeicher und ein Hilfsverzeichnis umfasst.
  3. Vorrichtung nach Anspruch 1 oder Anspruch 2, bei welcher die erste Vielzahl von n Befehlen zwei Befehlsblöcke umfasst.
  4. Vorrichtung nach einem der vorangehenden Ansprüche, bei welcher die zweite Vielzahl von Befehlen einen Befehlsblock umfasst.
  5. Vorrichtung nach einem der vorangehenden Ansprüche, welche ferner einen mit der Verzweigungslogik verbundenen Verzweigungsadressziel-Cachespeicher umfasst.
  6. Verfahren zum Abrufen nichtangrenzender Befehlsblöcke in einem Datenverarbeitungssystem, wobei das Datenverarbeitungssystem in der Lage ist, während eines Taktzyklus n Befehle auszuführen und das Verfahren Folgendes umfasst: Bereitstellen (502) einer ersten Vielzahl von n Befehlen (606), die einen Verzweigungsbefehl enthalten; Empfangen (508/510) der ersten Vielzahl von n Befehlen (606), welche Verzweigungsprotokollinformationen über die erste Vielzahl von Befehlen (606) und zum Ausgeben der ersten Vielzahl von Befehlen auf n Befehlsleitungen (118) liefern; gekennzeichnet durch Empfangen (506) einer zweiten Vielzahl von Befehlen (608), welche das Ziel der Verzweigungsbefehle darstellen; und Multiplexen (508) der ersten Vielzahl von Befehlen (606) mit der zweiten Vielzahl von Befehlen (608) auf den n Befehlsleitungen (118), wenn die Verzweigungsprotokollinformationen die Verzweigung vorhersagen; wobei Befehle der zweiten Vielzahl (608) einen Teil der ersten Vielzahl von n Befehlen (606) so überschreiben, dass dem Datenverarbeitungssystem während eines Taktzyklus zwei nichtangrenzende Blöcke von n Befehlen zugeleitet werden.
  7. Verfahren nach Anspruch 6, bei welchem der erste Cachespeicher einen Befehls-Cachespeicher und der zweite Cachespeicher einen Hilfs-Cachespeicher umfasst.
  8. Verfahren nach Anspruch 7, bei welchem der Hilfs-Cachespeicher ein Hilfsverzeichnis beinhaltet.
  9. Verfahren nach einem der Ansprüche 6 bis 8, bei welchem die erste Vielzahl von n Befehlen zwei Befehlsblöcke umfasst.
  10. Verfahren nach einem der Ansprüche 6 bis 9, bei welchem die zweite Vielzahl von Befehlen einen Befehlsblock umfasst.
DE69929936T 1998-05-12 1999-04-19 Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem Expired - Lifetime DE69929936T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/076,593 US6256727B1 (en) 1998-05-12 1998-05-12 Method and system for fetching noncontiguous instructions in a single clock cycle
US76593 1998-05-12

Publications (2)

Publication Number Publication Date
DE69929936D1 DE69929936D1 (de) 2006-04-27
DE69929936T2 true DE69929936T2 (de) 2006-08-24

Family

ID=22133020

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69929936T Expired - Lifetime DE69929936T2 (de) 1998-05-12 1999-04-19 Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem

Country Status (5)

Country Link
US (1) US6256727B1 (de)
EP (1) EP0957428B1 (de)
JP (1) JP3182740B2 (de)
KR (1) KR100431168B1 (de)
DE (1) DE69929936T2 (de)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6609177B1 (en) * 1999-11-12 2003-08-19 Maxtor Corporation Method and apparatus for extending cache history
US6622236B1 (en) * 2000-02-17 2003-09-16 International Business Machines Corporation Microprocessor instruction fetch unit for processing instruction groups having multiple branch instructions
US6647462B1 (en) 2000-06-29 2003-11-11 Motorola, Inc. Apparatus and a method for providing decoded information
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
US7707397B2 (en) * 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US7165168B2 (en) * 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US7165169B2 (en) * 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US6823444B1 (en) * 2001-07-03 2004-11-23 Ip-First, Llc Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US7234045B2 (en) * 2001-07-03 2007-06-19 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7203824B2 (en) * 2001-07-03 2007-04-10 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7159097B2 (en) * 2002-04-26 2007-01-02 Ip-First, Llc Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
US7185186B2 (en) * 2003-01-14 2007-02-27 Ip-First, Llc Apparatus and method for resolving deadlock fetch conditions involving branch target address cache
US7143269B2 (en) * 2003-01-14 2006-11-28 Ip-First, Llc Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
US7152154B2 (en) * 2003-01-16 2006-12-19 Ip-First, Llc. Apparatus and method for invalidation of redundant branch target address cache entries
US7178010B2 (en) * 2003-01-16 2007-02-13 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack
US7237098B2 (en) * 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US7133969B2 (en) * 2003-10-01 2006-11-07 Advanced Micro Devices, Inc. System and method for handling exceptional instructions in a trace cache based processor
US7555633B1 (en) 2003-11-03 2009-06-30 Advanced Micro Devices, Inc. Instruction cache prefetch based on trace cache eviction
US8069336B2 (en) * 2003-12-03 2011-11-29 Globalfoundries Inc. Transitioning from instruction cache to trace cache on label boundaries
US7213126B1 (en) 2004-01-12 2007-05-01 Advanced Micro Devices, Inc. Method and processor including logic for storing traces within a trace cache
US7197630B1 (en) 2004-04-12 2007-03-27 Advanced Micro Devices, Inc. Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
US7365007B2 (en) * 2004-06-30 2008-04-29 Intel Corporation Interconnects with direct metalization and conductive polymer
US8295484B2 (en) * 2004-12-21 2012-10-23 Broadcom Corporation System and method for securing data from a remote input device
US20070186050A1 (en) * 2006-02-03 2007-08-09 International Business Machines Corporation Self prefetching L2 cache mechanism for data lines
EP2477109B1 (de) 2006-04-12 2016-07-13 Soft Machines, Inc. Vorrichtung und Verfahren zur Verarbeitung einer Anweisungsmatrix zur Spezifizierung von parallelen und abhängigen Betriebsabläufen
US20080077778A1 (en) * 2006-09-25 2008-03-27 Davis Gordon T Method and Apparatus for Register Renaming in a Microprocessor
US20080215804A1 (en) * 2006-09-25 2008-09-04 Davis Gordon T Structure for register renaming in a microprocessor
US7644233B2 (en) * 2006-10-04 2010-01-05 International Business Machines Corporation Apparatus and method for supporting simultaneous storage of trace and standard cache lines
US8386712B2 (en) * 2006-10-04 2013-02-26 International Business Machines Corporation Structure for supporting simultaneous storage of trace and standard cache lines
US7610449B2 (en) * 2006-10-04 2009-10-27 International Business Machines Corporation Apparatus and method for saving power in a trace cache
US20080250206A1 (en) * 2006-10-05 2008-10-09 Davis Gordon T Structure for using branch prediction heuristics for determination of trace formation readiness
US7934081B2 (en) * 2006-10-05 2011-04-26 International Business Machines Corporation Apparatus and method for using branch prediction heuristics for determination of trace formation readiness
EP2523101B1 (de) 2006-11-14 2014-06-04 Soft Machines, Inc. Vorrichtung und Verfahren zum Verarbeiten von komplexen Anweisungsformaten in einer Multi-Thread-Architektur, die verschiedene Kontextschaltungsmodi und Visualisierungsschemen unterstützt
US20080250207A1 (en) * 2006-11-14 2008-10-09 Davis Gordon T Design structure for cache maintenance
US20080114964A1 (en) * 2006-11-14 2008-05-15 Davis Gordon T Apparatus and Method for Cache Maintenance
US20080120468A1 (en) * 2006-11-21 2008-05-22 Davis Gordon T Instruction Cache Trace Formation
US20080235500A1 (en) * 2006-11-21 2008-09-25 Davis Gordon T Structure for instruction cache trace formation
US8756404B2 (en) 2006-12-11 2014-06-17 International Business Machines Corporation Cascaded delayed float/vector execution pipeline
US7783870B2 (en) * 2007-08-13 2010-08-24 International Business Machines Corporation Branch target address cache
EP2616928B1 (de) 2010-09-17 2016-11-02 Soft Machines, Inc. Mehrfach verzweigte einzelzyklus-vorhersage mit einem latenten cache für frühe und entfernte verzweigungsvorhersage
WO2012051262A2 (en) 2010-10-12 2012-04-19 Soft Machines, Inc. An instruction sequence buffer to enhance branch prediction efficiency
CN103262027B (zh) 2010-10-12 2016-07-20 索夫特机械公司 用于存储具有可可靠预测的指令序列的分支的指令序列缓冲器
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
EP2689326B1 (de) 2011-03-25 2022-11-16 Intel Corporation Speicherfragmente zur unterstützung einer codeblockausführung mittels durch partitionierbare engines realisierter virtueller kerne
WO2012135031A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
CN103649932B (zh) 2011-05-20 2017-09-26 英特尔公司 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
WO2012162189A1 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. An interconnect structure to support the execution of instruction sequences by a plurality of engines
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
US8935574B2 (en) 2011-12-16 2015-01-13 Advanced Micro Devices, Inc. Correlating traces in a computing system
US10331891B2 (en) * 2012-02-06 2019-06-25 Microsoft Technology Licensing, Llc Branch target computation in secure start-up using an integrity datum and an adjustment datum
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US8832500B2 (en) 2012-08-10 2014-09-09 Advanced Micro Devices, Inc. Multiple clock domain tracing
US8959398B2 (en) 2012-08-16 2015-02-17 Advanced Micro Devices, Inc. Multiple clock domain debug capability
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
KR102063656B1 (ko) 2013-03-15 2020-01-09 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9934041B2 (en) * 2015-07-01 2018-04-03 International Business Machines Corporation Pattern based branch prediction
US10241796B2 (en) * 2017-02-13 2019-03-26 Yong-Kyu Jung Compiler-assisted lookahead (CAL) memory system apparatus for microprocessors

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU529675B2 (en) * 1977-12-07 1983-06-16 Honeywell Information Systems Incorp. Cache memory unit
JPS54100082A (en) 1977-12-24 1979-08-07 Yaichi Watanabe Amphibious bicycle
US4313158A (en) 1978-12-11 1982-01-26 Honeywell Information Systems Inc. Cache apparatus for enabling overlap of instruction fetch operations
JPS5927935B2 (ja) 1980-02-29 1984-07-09 株式会社日立製作所 情報処理装置
US4755935A (en) 1986-01-27 1988-07-05 Schlumberger Technology Corporation Prefetch memory system having next-instruction buffer which stores target tracks of jumps prior to CPU access of instruction
JPS63189943A (ja) 1987-02-02 1988-08-05 Mitsubishi Electric Corp 分岐予測制御方式
WO1991004536A1 (en) 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
EP0459232B1 (de) 1990-05-29 1998-12-09 National Semiconductor Corporation Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
EP0529303A3 (en) 1991-08-29 1993-09-22 International Business Machines Corporation Checkpoint synchronization with instruction overlap enabled
US5544342A (en) * 1993-06-30 1996-08-06 International Business Machines Corporation System and method for prefetching information in a processing system
JP2596712B2 (ja) 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
US5689680A (en) * 1993-07-15 1997-11-18 Unisys Corp. Cache memory system and method for accessing a coincident cache with a bit-sliced architecture
US5574883A (en) 1993-11-30 1996-11-12 Unisys Corporation Single chip processing unit providing immediate availability of frequently used microcode instruction words
US5913925A (en) * 1996-12-16 1999-06-22 International Business Machines Corporation Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
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
US5935238A (en) * 1997-06-19 1999-08-10 Sun Microsystems, Inc. Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US5890008A (en) * 1997-06-25 1999-03-30 Sun Microsystems, Inc. Method for dynamically reconfiguring a processor
US5918062A (en) * 1997-10-23 1999-06-29 Advanced Micro Devices, Inc. Microprocessor including an efficient implemention of an accumulate instruction

Also Published As

Publication number Publication date
KR19990087940A (ko) 1999-12-27
DE69929936D1 (de) 2006-04-27
US6256727B1 (en) 2001-07-03
KR100431168B1 (ko) 2004-05-12
EP0957428A3 (de) 2000-03-08
EP0957428B1 (de) 2006-02-22
EP0957428A2 (de) 1999-11-17
JP3182740B2 (ja) 2001-07-03
JP2000029701A (ja) 2000-01-28

Similar Documents

Publication Publication Date Title
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE69332663T2 (de) Datenprozessor mit einem Cachespeicher
DE602004008711T2 (de) Anordnung, Verfahren und Rechnerdatensignal zur selektiven Annullierung der Vorhersage eines Rücksprungstapelspeichers als Antwort auf die Erkennung einer nicht-standard Rücksprungsbefehlsreihe
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE60102017T2 (de) Räumungsfilter für adressenübersetzungspuffer
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE60036016T2 (de) Schnell multithreading für eng gekoppelte multiprozessoren
DE69628480T2 (de) Ausnahmebehandlung in einem Datenprozessor
DE4330751C2 (de) Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicherpuffersystem zu einem Datenverarbeitungssystem
DE69835100T2 (de) Prozessor konfiguriert um vorausschauende resultate von zusammengefassten übertragungs-, vergleichs- und einfachen arithmetischen befehlen zu produzieren
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE19527031C2 (de) Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems
DE69636416T2 (de) Mikroprozessor ausgelegt zum erkennen eines unterprogramm-aufrufs einer dsp-routine und zum ansteuern eines dsp, diese routine auszuführen
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE69908175T2 (de) Verbesserte befehlsdekodierung durch paralleldekodierungsalgorithmus
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE3114921C2 (de) Mikroprogramm-Speicheranordnung
DE2360303A1 (de) Datenverarbeitungssystem mit dynamischer adressuebersetzung
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
DE2926351A1 (de) Look-ahead-speicheradressen- steuereinrichtung
DE10303053B4 (de) Prozessorarchitektur mit einem Array von Pipelines und einer Registerdatei zum Vermeiden von Datenrisiken und Verfahren zur Datenweiterleitung in einer derartigen Prozessorarchitektur
DE69626263T2 (de) System zur Zuteilung mehrerer Befehle ohne Verzweigungsunterbrechung in einem Pipelineprozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)