DE69809450T2 - Datenverarbeitungsvorrichtung - Google Patents
DatenverarbeitungsvorrichtungInfo
- Publication number
- DE69809450T2 DE69809450T2 DE69809450T DE69809450T DE69809450T2 DE 69809450 T2 DE69809450 T2 DE 69809450T2 DE 69809450 T DE69809450 T DE 69809450T DE 69809450 T DE69809450 T DE 69809450T DE 69809450 T2 DE69809450 T2 DE 69809450T2
- Authority
- DE
- Germany
- Prior art keywords
- loop
- instruction
- unit
- pipeline unit
- pipeline
- 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
Links
- 238000000034 method Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
- Die vorliegende Erfindung betrifft eine Datenverarbeitungseinrichtung mit Pipeline-Struktur. Pipeline-Strukturen sind wohlbekannt und werden in Mikroprozessoren und Mikrosteuerungen verwendet. Um mit größtmöglicher Effizienz zu arbeiten, wird eine Pipeline mit einer Befehlssequenz aufgefüllt. Sobald die Sequenz unterbrochen wird, wird die Pipeline wieder aufgefüllt. Dadurch entsteht ein Verlust an Verarbeitungsgeschwindigkeit für den Mikroprozessor. Solche Unterbrechungen erfolgen hauptsächlich, wenn ein Sprung-, Verzweigungs- oder Schleifenbefehl ausgeführt wird, da der folgende Befehl häufig nicht der Befehl ist, der dem Sprung-, Verzweigungs- oder Schleifenbefehl folgt.
- Sprung- und Verzweigungsbefehle hängen im allgemeinen von einer Bedingung für seine Entscheidung ab, ob ein Sprung oder eine Verzweigung ausgeführt werden soll. Andererseits enthält ein Schleifenbefehl einen Parameter, der angibt, wie oft die Schleife ausgeführt wird, und einen Parameter, der den Anfang der Schleife angibt. Insbesondere verwenden digitale Signalprozessoren häufig Schleifenbefehle. Deshalb können Schleifenbefehle einen wichtigen Einfluß auf die resultierende Ausführungsgeschwindigkeit eines Prozessors oder einer Datenverarbeitungseinheit haben. Eine Aufgabe der vorliegenden Erfindung besteht deshalb darin, eine Datenverarbeitungseinrichtung mit Mitteln zur schnellstmöglichen Ausführung von Schleifenbefehlen bereitzustellen.
- Gemäß einem ersten Aspekt der vorliegenden Erfindung umfaßt eine Datenverarbeitungseinrichtung eine Pipeline-Einheit zum Verarbeiten von Daten; eine an die Pipeline-Einheit angekoppelte Befehlsbereitstellungseinheit zum Bereitstellen von Befehlen für diese; ein Eingabemittel zum Bereitstellen von Eingangsdaten für die Befehlsbereitstellungseinheit; wobei die Befehlsbereitstellungseinheit und das Eingabemittel eine Abrufstufe für die Pipeline-Einheit bilden; ein erstes Steuermittel zum Steuern der Befehlsbereitstellungseinheit; und ein zweites Steuermittel zur Steuerung des Eingabemittels; dadurch gekennzeichnet, daß die Einrichtung weiterhin eine Schleifen-Pipeline-Einheit zur Verarbeitung eines Schleifenbefehls umfaßt, wobei die Schleifen-Pipeline-Einheit unabhängig von der Pipeline-Einheit und parallel zu dieser wirkt und an die Befehlsbereitstellungseinheit angekoppelt ist, um von dieser Schleifenbefehle zu erhalten; wobei das Eingabemittel ein Schleifen-Cache-Puffermittel zum Speichern der Schleifenbefehle umfaßt, so daß für die Schleifen-Pipeline-Einheit keine Abrufstufe erforderlich ist; wobei das zweite Steuermittel das Schleifen- Cache-Puffermittel steuert; wobei die Schleifen- Pipeline-Einheit eine an das zweite Steuermittel und an das Schleifen-Cache-Puffermittel angekoppelte Schleifenausführungseinheit enthält; und wobei der Schleifenbefehl bei seinem ersten Vorkommen an die Pipeline- Einheit ausgegeben wird und der Schleifenbefehl bei allen folgenden Vorkommnissen aus dem Befehlsstrom entnommen und an die Schleifen-Pipeline-Einheit ausgegeben wird.
- Bei einer Ausführungsform umfaßt eine Datenverarbeitungseinrichtung eine Befehlsabrufeinheit (z. B. mit einem Befehlsdemultiplexer) mit mindestens einem Eingang und einem Ausgang, eine Pipeline-Einheit zum Verarbeiten von Daten mit mindestens Eingangs- und Ausgangsstufen und eine Schleifen-Pipeline-Einheit zum Verarbeiten eines Schleifenbefehls mit mindestens Eingangs- und Ausgangsstufen. Die Eingangsstufen der Pipeline-Einheiten sind mit dem Ausgang der Befehlsbereitstellungseinheit verbunden, die Daten für alle Pipeline-Einheiten bereitstellt. Die Pipeline-Einheiten können die bereitgestellten Daten unabhängig parallel verarbeiten. Die Schleifen-Pipeline kann eine Pipeline mit Funktionalität sein, die nur den speziellen Schleifenbefehl betrifft. Sie benötigt deshalb nicht unbedingt alle Betriebseinheiten einer regulären Pipeline. Die Schleifen-Pipeline behandelt die Schleifen mit einem Overhead von Null, so daß während der Wiederholung einer Schleife kein Verzweigungs- oder Sprungbefehl und keine Bedingungsprüfung in der Haupt- Pipeline ausgeführt werden. Die Schleifen-Pipeline dient zum Herausfalten des Schleifenbefehls aus dem Ausführungsfluß, um eine parallele Ausführung eines Schleifenbefehls zum Beispiel mit einer Integer- und Lade-/Speicheroperation durchzuführen. Ein Schleifenbefehls-Cache wird bereitgestellt, der den Schleifenbefehl cache-speichert, so daß keine Abrufeinheit in der Schleifen-Pipeline notwendig ist. Es kann ein Multiplexer vorgesehen werden, der der Befehlsbereitstellungseinheit entweder die Befehlssequenz oder den cache-gespeicherten Schleifenbefehl zuführt.
- Gemäß einem zweiten Aspekt der vorliegenden Erfindung umfaßt ein Verfahren zur Ausführung eines Schleifenbefehls, der einen Teil eines Befehlsdatenstroms bildet, in einer Datenverarbeitungseinrichtung gemäß dem ersten Aspekt die folgenden Schritte: Vordecodieren des Befehlsdatenstroms; Bereitstellen von Befehlen für die Pipeline-Einheit; Ausgeben des Schleifenbefehls an die Schleifen-Pipeline-Einheit bei seinem ersten Vorkommen; Entnehmen des Schleifenbefehls aus dem Befehlsdatenstrom bei allen folgenden Vorkommnissen; Cache-speichern des Schleifenbefehls in dem Schleifen- Cache-Puffermittel; Ausgeben des Schleifenbefehls aus dem Schleifen-Cache-Puffermittel an die Schleifen- Pipeline-Einheit; und Ausführen der Schleife parallel mit anderen Befehlen des Befehlsdatenstroms.
- Ein Verfahren zur Ausführung einer Schleife umfaßt die folgenden Schritte: wenn ein Schleifenbefehl zum ersten Mal vorkommt, dann wird der Schleifenbefehl in der Pipeline-Einheit ausgeführt, und dadurch werden die die Schleife betreffenden Daten in einem Schleifen- Zielpuffer gespeichert. Während der Ausführung der Schleife wird der Schleifenbefehl in der Schleifen- Pipeline ausgeführt, und die in der Schleife enthaltenen Befehle werden parallel in der Pipeline- Einheit ausgeführt. Während der Ausführung der Schleife entsteht somit kein Overhead. Anders ausgedrückt erscheint der Schleifenbefehl an sich niemals in der Befehls-Pipeline-Einheit, da er parallel mit anderen Befehlen an die Schleifen-Pipeline ausgegeben wird. Wenn ein Schleifenbefehl angetroffen wird, wird der Schleifenbefehl abgerufen und an die Lade-Speicher- Pipeline ausgegeben. In nachfolgenden Schleifeniterationen wird der Schleifenbefehl jedoch in der Schleifen-Pipeline ausgeführt. Deshalb können die Schleifen sehr schnell mit einem Overhead von Null ausgeführt werden.
- Fig. 1 zeigt ein Funktionsblockschaltbild eines Befehlsabrufmoduls gemäß der vorliegenden Erfindung;
- Fig. 2 zeigt einen Schleifen-Zielpuffer ausführlicher;
- Fig. 3 zeigt eine Schleifenausführungseinheit, einen Schleifen-Cache-Puffer und die Programmzähleraktualisierungs- und Steuereinheit ausführlicher;
- Fig. 4 zeigt eine Tabelle des Inhalts der Pipelines während der ersten Iteration der Schleife;
- Fig. 5 zeigt eine Tabelle des Inhalts der Pipelines während der zweiten und folgenden Iterationen der Schleife; und
- Fig. 6 zeigt eine Tabelle des Inhalts der Pipelines während des Verlassens der Schleife.
- Die Schleifenbefehle sind so ausgelegt, daß sie innere Schleifen zum Beispiel in digitalen Signalprozessoralgorithmen usw. optimieren. Eine Menge eigener Hardware ist den Schleifenbefehlen zugeordnet. Diese Menge eigener Hardware implementiert Schleifen mit einem Overhead von Null.
- Solche Hardware kann ein Befehlsabrufmodul enthalten, das ein integraler Bestandteil einer bevorzugten Ausführungsform einer Mikrosteuerung ist und schematisch in Fig. 1 gezeigt ist. Für eine bessere Übersicht zeigt Fig. 1 nur die Hauptverbindungen zwischen den Haupteinheiten. Bei der bevorzugten Ausführungsform umfaßt dieses Befehlsabrufmodul 1 drei Pipeline-Einheiten 10, 11 und 12. Der Mikroprozessor kann jedoch nur eine Haupt-Pipeline aufweisen, oder die Haupt-Pipeline kann aus mehreren Pipelines bestehen.
- Die erste Einheit stellt die Integer-Pipeline 10 dar und umfaßt drei Stufen, nämlich eine Decodierungsstufe 10a, eine Ausführungsstufe 10b und eine Zurückschreibstufe 10c. Die vorliegende Erfindung ist jedoch nicht auf eine bestimmte Anzahl von Pipeline-Stufen beschränkt. Die zweite Einheit stellt die Lade- Speicher-Pipeline 11 dar und umfaßt ebenfalls drei Stufen, nämlich eine Decodierungsstufe 11a, eine Ausführungsstufe 11b und eine Zurückschreibstufe 11c. Die dritte Einheit stellt die Schleifen-Pipeline 12 dar und umfaßt zwei Stufen, nämlich eine Decodierungs- /Ausführungsstufe 12a und eine Zurückschreibstufe 12c.
- Ein Befehlsdemultiplexer 7, der die Befehlsbereitstellungseinheit darstellt, gibt den verschiedenen Pipeline-Einheiten 10, 11 und 12 ihre jeweiligen Befehle. Dieser Befehlsdemultiplexer 7 wird durch eine Ausgabesteuereinheit 9 gesteuert, die an eine Pipeline- Steuereinheit 14 angekoppelt ist. Der Befehlsdemultiplexer 7 ist an den Ausgang eine Multiplexers 5 angekoppelt, der entweder einen Befehl aus einem Cache- Teilsystem 13 oder aus einer Schleifen-Cache-Puffereinheit 3 weiterleitet. Die Schleifen-Cache-Puffereinheit 3 ist an eine Programmsteueraktualisierungs- und Steuereinheit 2 angekoppelt, die außerdem an das Cache- Teilsystem 13 angekoppelt ist. Als Teil der Schleifen- Pipeline 12 ist eine Schleifen-Ausführungseinheit 4 einerseits an die Programmzähleraktualisierungs- und Steuereinheit 2 und andererseits an den Schleifen- Cache-Puffer 3 angekoppelt. Der Schleifen-Cache-Puffer 3 kann auch einen Verzweigungszielpuffer (BTB) enthalten. Der Ausgang des Multiplexers 5 ist mit einem Eingang eines Vordecodierers 6 verbunden, der einen Ausgang aufweist, der mit dem Befehlsdemultiplexer 7 verbunden ist. Weiterhin ist der Vordecodierer 6 an die Programmzähleraktualisierungs- und Steuereinheit 2 angekoppelt. Ein Schutzregister 8 ist an die Programmzähleraktualisierungs- und Steuereinheit 2 und an die drei Pipelines 10, 11 und 12 angekoppelt. Weitere Portverbindungen zwischen der Programmzähleraktualisierungs- und Steuereinheit 2 und dem Schutzregister 8 sind in Fig. 1 gezeigt.
- Diese Einheit 1 ist für das Einspeisen von Befehlen in die verschiedenen Pipelines 10, 11 und 12 verantwortlich. Die Hauptpipelines 10 und 11 dieser Ausführungsform weisen vier Stufen auf. Die erste Stufe wird durch den Befehlsdemultiplexer 7, den Vordecodierer 6 und die Logik, die die Pipelines 10, 11 und 12 mit dem Cache-Teilsystem 13 verbindet, gebildet. Diese Stufe wird im allgemeinen als die Abrufstufe bezeichnet, die die Befehle an die jeweiligen Hauptpipelines 10 und 11 ausgibt. Die zweite Stufe ist durch die Einheiten 10a und 11a abgebildet und wird als die Decodierungsstufe bezeichnet, in der die Befehle decodiert werden. Die dritte Stufe ist durch die Einheiten 10b und 11b abgebildet und wird als die Ausführungsstufe bezeichnet, in der die Befehle ausgeführt werden. Anders ausgedrückt wird die Operation an sich zum Beispiel durch Berechnung einer Adresse in einem Lade- /Speicherbefehl oder Durchführen einer Multiplikation durchgeführt. Die vierte Stufe ist durch die Einheiten 10c und 11c abgebildet und wird als die Zurückschreibstufe bezeichnet, wobei die Ergebnisse der jeweiligen Operation zum Beispiel in das Register-File oder in eine Speicherstelle zurückgeschrieben werden.
- Bei dieser spezifischen Ausführungsform wird, immer wenn ein Schleifenbefehl zum ersten Mal vorkommt, er als ein normaler Befehl in der Lade-/Speicher-Pipeline 11 ausgeführt. Während der Decodierung in der Decodierungsstufe 11a wird das Schleifenziel berechnet, der neue Programmzähler wird gesetzt und der Wert für den Schleifenzählwert aus einem Register des Register- File, das durch den Schleifenbefehl adressiert wird, geladen. Während der folgenden Ausführungsstufe 11b wird der Schleifen-Cache-Puffer 3 aktualisiert und der neue Schleifenzählwert in das Register-File zurückgeschrieben. Bei einer anderen Ausführungsform könnte die Schleifen-Pipeline jedoch eine voll funktionsfähige Pipeline sein, die die vollständige Ausführung von Schleifenbefehlen parallel zu anderen Pipelines behandelt.
- Fig. 2 zeigt das spezielle Register, das Teil des Schleifen-Cache-Puffers 3 ist. Ein erster Teil 3a des Registerinhalts stellt die vorherige Befehlsadresse dar. Ein zweiter Teil 3b stellt die Zielbefehlsadresse dar. Ein dritter Teil 3c stellt die Schleifenbefehlsgröße dar, und ein vierter Teil 3d zeigt an, daß die Einträge gültig sind. Vorzugsweise entspricht die Größe der Adressenteile 3a und 3b dem jeweiligen Adressenumfang oder Programmzähler. Der Schleifenbefehlsgrößenteil 3c zeigt die Wortgröße des Schleifenbefehls an. Ein Schleifenbefehl kann zum Beispiel ein 16-Bit- oder ein 32-Bit-Befehl sein. Abhängig von diesen Informationen wird die Adresse des folgenden Befehls berechnet. Anders ausgedrückt wird der Befehlsgrößenwert zu dem aktuellen Programmzählerwert addiert, um die Adresse des folgenden Befehls in der Sequenz zu erhalten. In der letzten Pipeline-Stufe 11c wird der neue Wert für den Schleifenzählwert in das jeweilige Register zurückgeschrieben.
- Fig. 3 zeigt Teile der Programmzähleraktualisierungs- und Steuereinheit 2, Teile des Schleifen-Zielpuffers 3 und Teile der Schleifenausführungseinheit 4 ausführlicher. Dieselben Elemente tragen dieselben Bezugszahlen. Der Schleifen-Zielpuffer 3 enthält die Register 3a, 3b, 3c, 3d (siehe Fig. 2). Zusätzlich ist ein Register 3e vorgesehen, das den während der ersten Iteration erkannten Schleifenbefehl speichert. Bezugszahl 2a zeigt den Programmzähler (PC) der Programmzähleraktualisierungs- und Steuereinheit 2. Bestimmte Teile der Schleifenausführungseinheit 4 werden als Elemente der Schleifen-Pipe-Einheit 12 angesehen. Diese sind zum Beispiel ein Komparator 4d, der den Inhalt des Schleifenzählwertregisters 4b mit Null vergleicht, und ein mit dem Schleifenzählwertregister 4b verbundener Erniedriger 4c, der den Schleifenzählwert 4b jedes Mal, wenn die Schleife ausgeführt wurde, erniedrigt. Der Komparator 4d erzeugt ein Signal, das der Programmzähleraktualisierungs- und Steuereinheit 2 zugeführt wird. Zusätzlich ist ein Adressenkomparator 4a vorgesehen, der die vorherige Befehlsadresse 3a des Schleifen-Cache-Puffers 3 mit dem tatsächlichen Programmzähler 2a vergleicht. Der Adressenkomparator 4a erzeugt ein Signal, das der Programmzähleraktualisierungs- und Steuereinheit 2 zugeführt wird. Die Programmzähleraktualisierungs- und Steuereinheit 2 berechnet und/oder setzt einen neuen Programmzähler abhängig von dem Signal der Komparatoren 4a und 4d. Um eine neue Adresse zu berechnen oder eine neue Zieladresse zu setzen, holt die Programmzähleraktualisierungs- und Steuereinheit 2 die Zielbefehlsadresse aus dem Teil 3b und die Befehlsgröße aus dem Teil 3c in dem speziellen Register des Schleifen-Cache-Puffers 3.
- Nachdem die Schleife zum ersten Mal verarbeitet wurde, wird der Schleifen-Cache-Puffer 3 gesetzt. Anders ausgedrückt wird die Zieladresse in dem Registerteil 3b gespeichert, die vorherige Befehlsadresse wird in dem Registerteil 3a gespeichert, und die Schleifenbefehlsgröße wird in dem Registerteil 3c gespeichert. Außerdem wird der Registerteil 3c, der ein Flag sein kann, gesetzt, um anzuzeigen, daß die Einträge gültig sind. Zusätzlich wird der Schleifenbefehl selbst in einem Register 3e gespeichert, das seinen Inhalt an den Multiplexer 5 ausgibt. Dieser Multiplexer wird durch das Ausgangssignal des Komparators 4a gesteuert.
- Während der Schleifenausführung vergleicht die Einheit 4 den Inhalt des Programmzählers 2a mit dem Inhalt des Registerteils 3a, der die vorherige Befehlsadresse anzeigt. Wenn eine Übereinstimmung besteht, dann setzt das Ausgangssignal des Komparators 4a den folgenden Programmzählerwert auf die in dem Registerteil 3b gespeicherte Zielbefehlsadresse und der Schleifenbefehl wird aus dem Register 3e in dem Schleifen-Cache-Puffer 3 durch den Multiplexer 5 in die Schleifen-Pipeline 12 injiziert. Somit wird der Schleifenbefehl nicht in der Lade-/Speicher-Pipeline 11 ausgeführt. Die Schleifen- Pipeline 12 benötigt keine Abrufstufe, da der Schleifenbefehl während der Ausführung der Schleife in dem Register 3e cache-gespeichert wird. Während der nächsten Zyklen werden der erste Befehl oder die ersten zwei Befehle der Schleife in der Integer-Pipeline 10 und/oder der Lade-/Speicher-Pipeline 11 ausgeführt. Während dies stattfindet, wird der Schleifenbefehl parallel in der Schleifen-Pipeline 12 ausgeführt.
- Während der Ausführungsstufe wird der Schleifenzählwert aus dem Register des Register-File, das durch den Schleifenbefehl angegeben wird, abgerufen. Der Schleifenwert wird dann von dem Erniedriger 4c erniedrigt und durch den Komparator 4d mit Null verglichen. Während des folgenden Zyklus (Zurückschreiben) wird das Ergebnis des neuen Schleifenzählwerts in das jeweilige Register in dem Register-File zurückgeschrieben. Wenn das Komparatorergebnis eine Übereinstimmung anzeigt, wird ein Signal zu der Programmzähleraktualisierungs- und Steuereinheit 2 gesendet, um anzuzeigen, daß dies das letzte Mal ist, daß die Schleife ausgeführt wird. Außerdem wird das Flag 3d, das einen gültigen Eintrag anzeigt, zurückgesetzt. Dadurch wird außerdem verhindert, daß der Multiplexer 5 weiter durch den Komparator 4a gesteuert wird. Da dies geschieht, wenn bestimmte Befehle der Schleife bereits in die Pipeline- Einheiten geladen sind, ist es notwendig, diese in die Abruf- und Decodierungsstufen der Pipeline-Einheiten 10 und 11 geladenen Befehle durch No-Operation-Befehle (NOP) zu ersetzen. Wenn der Komparator 4a ein Übereinstimmungssignal ausgibt, wird außerdem eine neue Zieladresse durch Addieren des Werts des Schleifenbefehlsgrößenregisterteils 3c zu dem Programmzählerwert berechnet, und diese neue Adresse wird in dem Programmzähler gespeichert. Dies bewirkt, daß die Abrufstufe 10a, 11a der Pipeline-Einheiten den jeweiligen neuen Zielbefehl bzw. die jeweiligen neuen Zielbefehle abruft bzw. abrufen.
- Die Ausführung einer Schleife in einem Programm wird ausführlicher anhand eines Beispielprogramms erläutert. Das Beispielprogramm enthält die folgende Sequenz:
- Dieses beispielhafte Programm enthält drei verschiedene Arten von Befehlen. Die Mikrosteuerung dieser Ausführungsform kann bis zu drei Befehle parallel ausführen. Zwei Befehle können parallel zu den Haupt-Pipeline-Einheiten 10 und 11 ausgegeben werden. Der erste Typ (Lade-/Speicherbefehle) verschiebt Daten aus dem Register-File zu dem Speicher bzw. den Peripheriegeräten oder umgekehrt. Außerdem können Daten zwischen dem Register-File oder zwischen Speicher/Peripheriegeräten transferiert werden. Der zweite Typ (Integer-Befehle) verarbeitet Daten auf definierbare Weise, wie zum Beispiel Berechnung, Manipulation einzelner Bit, Berechnen von Bedingungen usw. Die Integer-Befehle A1, A2 und N aus dem Demonstrationsprogramm werden in der Integer-Pipeline- Einheit 10 ausgeführt. Die Lade-/Speicherbefehle L1 und L2 aus dem Demonstrationsprogramm werden in der Lade- /Speicher-Pipeline-Einheit 11 ausgeführt. Für einen optimierten Programmfluß wird ein Befehlspaar (ein Lade-/Speicherbefehl und ein Integer-Befehl) immer parallel an die Pipelines 10 und 11 ausgegeben. Anders ausgedrückt folgen niemals zwei Befehle desselben Typs aufeinander. Das obenerwähnte Demonstrationsprogramm zeigt eine solche Anordnung. Wenn zwei Befehle derselben Art einander folgen müssen, wird ein No- Operation-Befehl (NOP) an die jeweilige andere Pipeline-Einheit ausgegeben. Die dritte Pipeline 12 kann nur einen Typ von Befehl ausführen, nämlich den Schleifenbefehl B. Der Befehl B ist eine Art von Lade- /Speicherbefehl. Deshalb wird er entweder in der Lade- /Speicher-Pipeline-Einheit 11 oder in der Schleifen- Pipeline-Einheit 12 ausgeführt.
- Fig. 4 zeigt eine Tabelle mit der ersten Iteration der Schleife. Die Bezugszahlen A1, A2, L1, L2, B und N zeigen die an die Pipeline ausgegebenen Befehle an, während ein "-" einen No-Operation-Befehl (NOP) anzeigt. Bei dieser ersten Iteration der Schleife im Zyklus C1 befinden sich die Befehle A1 und L1 in den Decodierungsstufen 10b und 11b bzw. die Befehle A2 und L2 in den Abrufstufen 10a und 11a. Im folgenden Zyklus C2 werden die Befehle A1 und L1 zu den Ausführungsstufen 10c und 11c weitergeleitet und der Schleifenbefehl B wird zum ersten Mal an die Lade- /Speicher-Pipeline-Stufe 11a ausgegeben und der folgende Befehl N wird an die Abrufstufe 10a ausgegeben. Im nächsten Zyklus C3 wird der Schleifenbefehl B decodiert und ein neuer Programmzähler, der die Zielschleifenadresse (100p start) enthält, berechnet. Zur selben Zeit ersetzen No-Operation- Befehle (NOP) den Decodierungs- und Abrufstufeninhalt der Integer-Pipeline und der Abrufstufe der Lade- /Speicher-Pipeline. Im nächste n Zyklus C4 führt der neue Programmzähler zu einer Ausgabe der Befehle A1 und L1 an die jeweiligen Abrufstufen der Integer- und der Lade-/Speicher-Pipeline 10, 11. Während der Ausführung des Schleifenbefehls B wird der Schleifen-Zielpuffer wie oben beschrieben aktualisiert.
- Fig. 5 zeigt die zweite und nachfolgende Iterationen der Schleife. Der Schleifenhauptteil, der aus den Befehlen A1, L1, A2 und L2 besteht, wird auf normale Weise ausgeführt, bis der Befehl oder das Befehlspaar vor der Schleife abgerufen wird und die Adresse in PC 2 mit der in dem Registerteil 3a des Schleifenzielpuffers 3 gespeicherten Adresse übereinstimmt. Wenn diese Bedingung erkannt wird, wird die Schleifenzieladresse aus dem Registerteil 3b des Schleifen-Cache-Puffers 3 gelesen und als die neue Adresse in PC 2 verwendet. Die Schleifen-Zielbefehle werden im folgenden Zyklus abgerufen und zusammen mit dem cache-gespeicherten Schleifenbefehl, der an die Schleifen-Pipeline 12 im Zyklus C7, C9 usw. ausgegeben wird, an die Decodierungsstufe ausgegeben. Die Schleife wird dann in der Decodierungsphase unter Verwendung des Komparators 4d und des Erniedrigers 4c ausgeführt. Wenn die Schleife genommen wird, dann befinden sich sowohl die Integer-Pipeline 10 als auch die Lade-/Speicher-Pipeline 11 im normalen Zustand und die ersten beiden Befehle der Schleife werden an die Ausführungsstufe ausgegeben. Wenn die Schleife nicht genommen wird, dann werden die beiden Haupt-Pipelines 10 und 11 in den Cancel-Zustand versetzt und der Befehlsdemultiplexer 7 wird so eingerichtet, daß er den ersten Befehl nach der Schleife abruft.
- Fig. 6 zeigt dieses Szenario. Im Zyklus CN+1 erniedrigt der Erniedriger 4c den Schleifenzählwert und das Ergebnis ist gleich Null. Deshalb erzeugt der Komparator 4d ein Signal, das eine Löschung des Abruf- und Decodierinhalts der Integer- und der Lade-/Speicher- Pipeline-Stufen und eine Berechnung des neuen nachfolgenden Programmzählers (PC) bewirkt. Im Zyklus CN+2 bewirkt dies eine Ausgabe des der Schleife folgenden Befehls N an die Integer-Pipeline 10. Die Verarbeitung weiterer Befehle ist in Fig. 6 nicht gezeigt.
- Bei der bevorzugten Ausführungsform und dem obigen beispielhaften Programm wird der tatsächliche Programmzähler mit der Adresse des Befehls A2 verglichen, wodurch das letzte Befehlspaar vor dem Schleifenbefehl B dargestellt wird. Jede andere Adresse zwischen der Schleife kann für diesen Zweck verwendet werden. Zum Beispiel könnte die Startadresse der Schleife (loop_start) zum Auslösen der Ausgabe des Schleifenbefehls verwendet werden. Dennoch hat die Verwendung der Befehlsadresse vor dem Schleifenbefehl den Vorteil, daß bei der Ausführung des Schleifenbefehls aus dem Register 3e des Schleifen-Zielpuffers 3 der Schleifenbefehl mit dem Zielbefehl injiziert wird und deshalb der älteste Befehl in der Pipeline ist. Somit sind keine zusätzlichen Mittel zum Behandeln von Ausnahmeroutinen notwendig.
Claims (1)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/928,444 US6085315A (en) | 1997-09-12 | 1997-09-12 | Data processing device with loop pipeline |
PCT/US1998/018673 WO1999014664A1 (en) | 1997-09-12 | 1998-09-04 | Data processing device |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69809450D1 DE69809450D1 (de) | 2002-12-19 |
DE69809450T2 true DE69809450T2 (de) | 2003-07-03 |
Family
ID=25456239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69809450T Expired - Lifetime DE69809450T2 (de) | 1997-09-12 | 1998-09-04 | Datenverarbeitungsvorrichtung |
Country Status (7)
Country | Link |
---|---|
US (1) | US6085315A (de) |
EP (1) | EP1012705B1 (de) |
JP (1) | JP2001517819A (de) |
KR (1) | KR20010030587A (de) |
DE (1) | DE69809450T2 (de) |
IL (1) | IL134459A0 (de) |
WO (1) | WO1999014664A1 (de) |
Families Citing this family (95)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000034854A2 (en) * | 1998-12-08 | 2000-06-15 | Koninklijke Philips Electronics N.V. | Method of executing an interpreter program |
EP1163577B1 (de) * | 1999-03-17 | 2003-11-26 | Infineon Technologies AG | Cachen kurzer programmschleifen innerhalb eines instruktions-fifos |
EP1039375A1 (de) * | 1999-03-19 | 2000-09-27 | Motorola, Inc. | Verfahren und Vorrichtung zur Durchführung von Schleifen mit kleinem Verwaltungsaufwand |
US6393551B1 (en) * | 1999-05-26 | 2002-05-21 | Infineon Technologies North America Corp. | Reducing instruction transactions in a microprocessor |
US6598155B1 (en) * | 2000-01-31 | 2003-07-22 | Intel Corporation | Method and apparatus for loop buffering digital signal processing instructions |
US6963965B1 (en) * | 1999-11-30 | 2005-11-08 | Texas Instruments Incorporated | Instruction-programmable processor with instruction loop cache |
US7302557B1 (en) * | 1999-12-27 | 2007-11-27 | Impact Technologies, Inc. | Method and apparatus for modulo scheduled loop execution in a processor architecture |
US6732203B2 (en) * | 2000-01-31 | 2004-05-04 | Intel Corporation | Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus |
US6918028B1 (en) * | 2000-03-28 | 2005-07-12 | Analog Devices, Inc. | Pipelined processor including a loosely coupled side pipe |
US6757817B1 (en) * | 2000-05-19 | 2004-06-29 | Intel Corporation | Apparatus having a cache and a loop buffer |
US7065636B2 (en) * | 2000-12-20 | 2006-06-20 | Intel Corporation | Hardware loops and pipeline system using advanced generation of loop parameters |
US6842895B2 (en) * | 2000-12-21 | 2005-01-11 | Freescale Semiconductor, Inc. | Single instruction for multiple loops |
TW567695B (en) * | 2001-01-17 | 2003-12-21 | Ibm | Digital baseband system |
JP2002229779A (ja) * | 2001-02-02 | 2002-08-16 | Mitsubishi Electric Corp | 情報処理装置 |
US6950929B2 (en) * | 2001-05-24 | 2005-09-27 | Samsung Electronics Co., Ltd. | Loop instruction processing using loop buffer in a data processing device having a coprocessor |
US7249248B2 (en) * | 2002-11-25 | 2007-07-24 | Intel Corporation | Method, apparatus, and system for variable increment multi-index looping operations |
US7159103B2 (en) * | 2003-03-24 | 2007-01-02 | Infineon Technologies Ag | Zero-overhead loop operation in microprocessor having instruction buffer |
DE102005001679B4 (de) * | 2005-01-13 | 2008-11-13 | Infineon Technologies Ag | Mikroprozessor-Einrichtung, und Verfahren zur Branch-Prediktion für conditional Branch-Befehle in einer Mikroprozessor-Einrichtung |
US7711934B2 (en) * | 2005-10-31 | 2010-05-04 | Mips Technologies, Inc. | Processor core and method for managing branch misprediction in an out-of-order processor pipeline |
US7734901B2 (en) * | 2005-10-31 | 2010-06-08 | Mips Technologies, Inc. | Processor core and method for managing program counter redirection in an out-of-order processor pipeline |
US7562191B2 (en) * | 2005-11-15 | 2009-07-14 | Mips Technologies, Inc. | Microprocessor having a power-saving instruction cache way predictor and instruction replacement scheme |
US7873820B2 (en) * | 2005-11-15 | 2011-01-18 | Mips Technologies, Inc. | Processor utilizing a loop buffer to reduce power consumption |
US7496771B2 (en) * | 2005-11-15 | 2009-02-24 | Mips Technologies, Inc. | Processor accessing a scratch pad on-demand to reduce power consumption |
US20070204139A1 (en) | 2006-02-28 | 2007-08-30 | Mips Technologies, Inc. | Compact linked-list-based multi-threaded instruction graduation buffer |
US7721071B2 (en) * | 2006-02-28 | 2010-05-18 | Mips Technologies, Inc. | System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor |
CN103646009B (zh) | 2006-04-12 | 2016-08-17 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
US20080016326A1 (en) | 2006-07-14 | 2008-01-17 | Mips Technologies, Inc. | Latest producer tracking in an out-of-order processor, and applications thereof |
US7370178B1 (en) * | 2006-07-14 | 2008-05-06 | Mips Technologies, Inc. | Method for latest producer tracking in an out-of-order processor, and applications thereof |
US7657708B2 (en) * | 2006-08-18 | 2010-02-02 | Mips Technologies, Inc. | Methods for reducing data cache access power in a processor using way selection bits |
US7650465B2 (en) | 2006-08-18 | 2010-01-19 | Mips Technologies, Inc. | Micro tag array having way selection bits for reducing data cache access power |
US7647475B2 (en) * | 2006-09-06 | 2010-01-12 | Mips Technologies, Inc. | System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue |
US8032734B2 (en) * | 2006-09-06 | 2011-10-04 | Mips Technologies, Inc. | Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor |
US20080082793A1 (en) * | 2006-09-29 | 2008-04-03 | Mips Technologies, Inc. | Detection and prevention of write-after-write hazards, and applications thereof |
US9946547B2 (en) | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
US8078846B2 (en) | 2006-09-29 | 2011-12-13 | Mips Technologies, Inc. | Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated |
US7594079B2 (en) | 2006-09-29 | 2009-09-22 | Mips Technologies, Inc. | Data cache virtual hint way prediction, and applications thereof |
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 |
US7987347B2 (en) * | 2006-12-22 | 2011-07-26 | Broadcom Corporation | System and method for implementing a zero overhead loop |
US7991985B2 (en) * | 2006-12-22 | 2011-08-02 | Broadcom Corporation | System and method for implementing and utilizing a zero overhead loop |
KR100861073B1 (ko) * | 2007-01-23 | 2008-10-01 | 충북대학교 산학협력단 | 적응형 파이프라인을 적용한 병렬 처리 프로세서 구조 |
ATE463788T1 (de) * | 2007-06-26 | 2010-04-15 | Ericsson Telefon Ab L M | Datenverarbeitungseinheit für anweisungen in geschachtelten schleifen |
US20090109996A1 (en) * | 2007-10-29 | 2009-04-30 | Hoover Russell D | Network on Chip |
US20090125706A1 (en) * | 2007-11-08 | 2009-05-14 | Hoover Russell D | Software Pipelining on a Network on Chip |
US20090125703A1 (en) * | 2007-11-09 | 2009-05-14 | Mejdrich Eric O | Context Switching on a Network On Chip |
US8261025B2 (en) | 2007-11-12 | 2012-09-04 | International Business Machines Corporation | Software pipelining on a network on chip |
US8526422B2 (en) * | 2007-11-27 | 2013-09-03 | International Business Machines Corporation | Network on chip with partitions |
US7917703B2 (en) * | 2007-12-13 | 2011-03-29 | International Business Machines Corporation | Network on chip that maintains cache coherency with invalidate commands |
US8473667B2 (en) * | 2008-01-11 | 2013-06-25 | International Business Machines Corporation | Network on chip that maintains cache coherency with invalidation messages |
US8010750B2 (en) * | 2008-01-17 | 2011-08-30 | International Business Machines Corporation | Network on chip that maintains cache coherency with invalidate commands |
US8018466B2 (en) * | 2008-02-12 | 2011-09-13 | International Business Machines Corporation | Graphics rendering on a network on chip |
US7913010B2 (en) * | 2008-02-15 | 2011-03-22 | International Business Machines Corporation | Network on chip with a low latency, high bandwidth application messaging interconnect |
US8490110B2 (en) * | 2008-02-15 | 2013-07-16 | International Business Machines Corporation | Network on chip with a low latency, high bandwidth application messaging interconnect |
US20090245257A1 (en) * | 2008-04-01 | 2009-10-01 | International Business Machines Corporation | Network On Chip |
US20090260013A1 (en) * | 2008-04-14 | 2009-10-15 | International Business Machines Corporation | Computer Processors With Plural, Pipelined Hardware Threads Of Execution |
US8078850B2 (en) * | 2008-04-24 | 2011-12-13 | International Business Machines Corporation | Branch prediction technique using instruction for resetting result table pointer |
US20090271172A1 (en) * | 2008-04-24 | 2009-10-29 | International Business Machines Corporation | Emulating A Computer Run Time Environment |
US8423715B2 (en) * | 2008-05-01 | 2013-04-16 | International Business Machines Corporation | Memory management among levels of cache in a memory hierarchy |
US8392664B2 (en) * | 2008-05-09 | 2013-03-05 | International Business Machines Corporation | Network on chip |
US20090282419A1 (en) * | 2008-05-09 | 2009-11-12 | International Business Machines Corporation | Ordered And Unordered Network-Addressed Message Control With Embedded DMA Commands For A Network On Chip |
US7991978B2 (en) * | 2008-05-09 | 2011-08-02 | International Business Machines Corporation | Network on chip with low latency, high bandwidth application messaging interconnects that abstract hardware inter-thread data communications into an architected state of a processor |
US7861065B2 (en) * | 2008-05-09 | 2010-12-28 | International Business Machines Corporation | Preferential dispatching of computer program instructions |
US8020168B2 (en) * | 2008-05-09 | 2011-09-13 | International Business Machines Corporation | Dynamic virtual software pipelining on a network on chip |
US20090282211A1 (en) * | 2008-05-09 | 2009-11-12 | International Business Machines | Network On Chip With Partitions |
US8494833B2 (en) * | 2008-05-09 | 2013-07-23 | International Business Machines Corporation | Emulating a computer run time environment |
US7958340B2 (en) * | 2008-05-09 | 2011-06-07 | International Business Machines Corporation | Monitoring software pipeline performance on a network on chip |
US8214845B2 (en) * | 2008-05-09 | 2012-07-03 | International Business Machines Corporation | Context switching in a network on chip by thread saving and restoring pointers to memory arrays containing valid message data |
US8040799B2 (en) * | 2008-05-15 | 2011-10-18 | International Business Machines Corporation | Network on chip with minimum guaranteed bandwidth for virtual communications channels |
US8230179B2 (en) * | 2008-05-15 | 2012-07-24 | International Business Machines Corporation | Administering non-cacheable memory load instructions |
US8438578B2 (en) * | 2008-06-09 | 2013-05-07 | International Business Machines Corporation | Network on chip with an I/O accelerator |
US8195884B2 (en) * | 2008-09-18 | 2012-06-05 | International Business Machines Corporation | Network on chip with caching restrictions for pages of computer memory |
US9170816B2 (en) * | 2009-01-15 | 2015-10-27 | Altair Semiconductor Ltd. | Enhancing processing efficiency in large instruction width processors |
US8966228B2 (en) * | 2009-03-20 | 2015-02-24 | Arm Limited | Instruction fetching following changes in program flow |
JP5423156B2 (ja) * | 2009-06-01 | 2014-02-19 | 富士通株式会社 | 情報処理装置及び分岐予測方法 |
WO2012037491A2 (en) * | 2010-09-17 | 2012-03-22 | Soft Machines, Inc. | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
KR101638225B1 (ko) | 2011-03-25 | 2016-07-08 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행 |
EP2689326B1 (de) | 2011-03-25 | 2022-11-16 | Intel Corporation | Speicherfragmente zur unterstützung einer codeblockausführung mittels durch partitionierbare engines realisierter virtueller kerne |
KR101639853B1 (ko) | 2011-05-20 | 2016-07-14 | 소프트 머신즈, 인크. | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당 |
US9442772B2 (en) | 2011-05-20 | 2016-09-13 | Soft Machines Inc. | Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines |
CN104040491B (zh) | 2011-11-22 | 2018-06-12 | 英特尔公司 | 微处理器加速的代码优化器 |
US10191746B2 (en) | 2011-11-22 | 2019-01-29 | Intel Corporation | Accelerated code optimizer for a multiengine microprocessor |
US9575755B2 (en) * | 2012-08-03 | 2017-02-21 | International Business Machines Corporation | Vector processing in an active memory device |
US9632777B2 (en) | 2012-08-03 | 2017-04-25 | International Business Machines Corporation | Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry |
US9569211B2 (en) | 2012-08-03 | 2017-02-14 | International Business Machines Corporation | Predication in a vector processor |
US9594724B2 (en) | 2012-08-09 | 2017-03-14 | International Business Machines Corporation | Vector register file |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
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 |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
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 |
WO2014151018A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for executing multithreaded instructions grouped onto blocks |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
EP2972836B1 (de) | 2013-03-15 | 2022-11-09 | Intel Corporation | Verfahren zur emulierung einer zentralisierten gast-flag-architektur mithilfe einer nativen verteilten flag-architektur |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
WO2023049422A2 (en) * | 2021-09-26 | 2023-03-30 | Ceremorphic, Inc | Core processor and redundant branch processor with control flow attack detection |
US11921843B2 (en) | 2021-09-26 | 2024-03-05 | Ceremorphic, Inc. | Multi-threaded secure processor with control flow attack detection |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3593306A (en) * | 1969-07-25 | 1971-07-13 | Bell Telephone Labor Inc | Apparatus for reducing memory fetches in program loops |
US4626988A (en) * | 1983-03-07 | 1986-12-02 | International Business Machines Corporation | Instruction fetch look-aside buffer with loop mode control |
US4566063A (en) * | 1983-10-17 | 1986-01-21 | Motorola, Inc. | Data processor which can repeat the execution of instruction loops with minimal instruction fetches |
FR2557712B1 (fr) * | 1983-12-30 | 1988-12-09 | Trt Telecom Radio Electr | Processeur pour traiter des donnees en fonction d'instructions provenant d'une memoire-programme |
US5131086A (en) * | 1988-08-25 | 1992-07-14 | Edgcore Technology, Inc. | Method and system for executing pipelined three operand construct |
JPH0475139A (ja) * | 1990-07-18 | 1992-03-10 | Toshiba Corp | ループ並列化装置 |
JP3032031B2 (ja) * | 1991-04-05 | 2000-04-10 | 株式会社東芝 | ループ最適化方法及び装置 |
US5898882A (en) * | 1993-01-08 | 1999-04-27 | International Business Machines Corporation | Method and system for enhanced instruction dispatch in a superscalar processor system utilizing independently accessed intermediate storage |
US5485629A (en) * | 1993-01-22 | 1996-01-16 | Intel Corporation | Method and apparatus for executing control flow instructions in a control flow pipeline in parallel with arithmetic instructions being executed in arithmetic pipelines |
JPH06243036A (ja) * | 1993-02-12 | 1994-09-02 | Hitachi Ltd | キャッシュ制御システム |
EP0623874A1 (de) * | 1993-05-03 | 1994-11-09 | International Business Machines Corporation | Verfahren zur Ausführung von Befehlen in einer Schleife |
JP2987311B2 (ja) * | 1995-05-12 | 1999-12-06 | 松下電器産業株式会社 | プロセッサ及び翻訳装置 |
US5809308A (en) * | 1995-11-17 | 1998-09-15 | Sun Microsystems, Inc. | Method and apparatus for efficient determination of an RMII vector for modulo scheduled loops in an optimizing compiler |
-
1997
- 1997-09-12 US US08/928,444 patent/US6085315A/en not_active Expired - Lifetime
-
1998
- 1998-09-04 JP JP2000512133A patent/JP2001517819A/ja active Pending
- 1998-09-04 IL IL13445998A patent/IL134459A0/xx unknown
- 1998-09-04 WO PCT/US1998/018673 patent/WO1999014664A1/en not_active Application Discontinuation
- 1998-09-04 DE DE69809450T patent/DE69809450T2/de not_active Expired - Lifetime
- 1998-09-04 EP EP98946886A patent/EP1012705B1/de not_active Expired - Lifetime
- 1998-09-04 KR KR1020007002609A patent/KR20010030587A/ko not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
DE69809450D1 (de) | 2002-12-19 |
JP2001517819A (ja) | 2001-10-09 |
KR20010030587A (ko) | 2001-04-16 |
WO1999014664A1 (en) | 1999-03-25 |
EP1012705B1 (de) | 2002-11-13 |
US6085315A (en) | 2000-07-04 |
EP1012705A1 (de) | 2000-06-28 |
IL134459A0 (en) | 2001-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69809450T2 (de) | Datenverarbeitungsvorrichtung | |
DE68927492T2 (de) | Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten | |
DE69622663T2 (de) | Zweistufige vorausholungspufferstruktur und verfahren mit bypass | |
DE3210816C2 (de) | ||
DE3750935T2 (de) | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. | |
DE69534113T2 (de) | Kompression der Befehlswörter eines Rechners | |
DE68927911T2 (de) | Datenverarbeitungssystem | |
DE69534148T2 (de) | Rechnersystem zur Ausführung von Verzweigungsbefehlen | |
DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
DE68928677T2 (de) | Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle | |
DE3751503T2 (de) | Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen. | |
DE69325086T2 (de) | Verfahren und System für spekulative Befehlsausführung | |
DE69624158T2 (de) | Superskalarer Prozessor mit mehreren Registerblöcken und Erzeugung von spekulativen Antwortadressen | |
DE69329778T2 (de) | System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor | |
DE69738188T2 (de) | Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor | |
DE3650232T2 (de) | Rechnersteuerung mit Verzweigung in einem einzigen Zyklus. | |
DE68928812T2 (de) | Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu | |
DE69133302T2 (de) | Registerabbildung in einem einzigen Taktzyklus | |
DE69228360T2 (de) | Registerlesekontrolle | |
DE3851746T2 (de) | Sprungvorhersage. | |
DE4206062C2 (de) | Pipelineverarbeitung von Instruktionen | |
DE69028138T2 (de) | Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen | |
DE69231197T2 (de) | Verfahren und Vorrichtung für eine verbesserte Speicherarchitektur | |
DE3587167T2 (de) | Geraet zur vektorverarbeitung. | |
DE4211245B4 (de) | Prozessorsystem in Parallelverarbeitungsbauart und Verfahren zu dessen Steuerung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
R082 | Change of representative |
Ref document number: 1012705 Country of ref document: EP Representative=s name: EPPING HERMANN FISCHER, PATENTANWALTSGESELLSCH, DE |
|
R081 | Change of applicant/patentee |
Ref document number: 1012705 Country of ref document: EP Owner name: INFINEON TECHNOLOGIES AG, DE Free format text: FORMER OWNER: INFINEON TECHNOLOGIES NORTH AMERICA CORP., SAN JOSE, US Effective date: 20121128 |
|
R082 | Change of representative |
Ref document number: 1012705 Country of ref document: EP Representative=s name: EPPING HERMANN FISCHER, PATENTANWALTSGESELLSCH, DE Effective date: 20121128 |