DE69809450T2 - Datenverarbeitungsvorrichtung - Google Patents

Datenverarbeitungsvorrichtung

Info

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
Application number
DE69809450T
Other languages
English (en)
Other versions
DE69809450D1 (de
Inventor
Muhammad Afsar
Eric Chesters
H. Fleck
Venkat Mattela
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies North America 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 Infineon Technologies North America Corp filed Critical Infineon Technologies North America Corp
Publication of DE69809450D1 publication Critical patent/DE69809450D1/de
Application granted granted Critical
Publication of DE69809450T2 publication Critical patent/DE69809450T2/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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent 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

    HINTERGRUND DER ERFINDUNG
  • 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.
  • KURZE DARSTELLUNG DER ERFINDUNG
  • 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.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 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.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
  • 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)

1. Datenverarbeitungseinrichtung (1), umfassend:
eine Pipeline-Einheit (10, 11) zum Verarbeiten von Daten;
eine an die Pipeline-Einheit (10, 11) angekoppelte Befehlsbereitstellungseinheit (7) zur Bereitstellung von Befehlen dafür;
ein Eingabemittel (3, 5, 6, 13) zur Bereitstellung von Eingangsdaten für die Befehlsbereitstellungseinheit (7); wobei die Befehlsbereitstellungseinheit und das Eingabemittel eine Abrufstufe für die Pipeline-Einheit bildet;
ein erstes Steuermittel (9, 14) zum Steuern der Befehlsbereitstellungseinheit (7); und
ein zweites Steuermittel (2) zum Steuern des Eingabemittels (3, 5, 6, 13), dadurch gekennzeichnet, daß die Einrichtung (1) weiterhin eine Schleifen-Pipeline-Einheit (4, 12) zur Verarbeitung eines Schleifenbefehls umfaßt, wobei die Schleifen-Pipeline-Einheit (4, 12) unabhängig von der Pipeline-Einheit (10, 11) und parallel zu dieser wirkt und an die Befehlsbereitstellungseinheit (7) angekoppelt ist, um Schleifenbefehle von dieser zu erhalten; wobei das Eingabemittel (3, 5, 6, 13) ein Schleifen-Cache- Puffermittel (3) zum Speichern der Schleifenbefehle umfaßt, so daß keine Abrufstufe für die Schleifen-Pipeline-Einheit erforderlich ist; wobei das zweite Steuermittel (2) das Schleifen-Cache- Puffermittel (3) steuert; wobei die Schleifen- Pipeline-Einheit (4, 12) eine an das zweite Steuermittel (2) und an das Schleifen-Cache- Puffermittel (3) angekoppelte Schleifenausführungseinheit (4) enthält; und wobei der Schleifenbefehl bei seinem ersten Vorkommen an die Pipeline-Einheit (10, 11) ausgegeben wird und der Schleifenbefehl bei allen folgenden Vorkommnissen aus dem Befehlsstrom entnommen und an die Schleifen-Pipeline-Einheit (4, 12) ausgegeben wird.
2. Einrichtung nach Anspruch 1, wobei das Schleifen- Cache-Puffermittel (3, 3a, 3b, 3c, 3d, 3e) ein Register (3a, 3b, 3c) mit einem Teil (3a) zum Speichern einer Schleifenbefehlsadresse und einem Teil (3b) zum Speichern einer Schleifen-Zielbefehlsadresse und eines Programmzählerwerts, der der Zielbefehlsadresse folgt, aufweist.
3. Einrichtung nach Anspruch 2, wobei der Teil (3a), der die Schleifenbefehlsadresse speichert, eine vorherige Befehlsadresse speichert.
4. Einrichtung nach Anspruch 3, wobei das Register (3a, 3b, 3c) weiterhin einen Teil (3c) zum Speichern einer Befehlsgröße enthält.
5. Einrichtung nach Anspruch 1, wobei das Eingabemittel (3, 5, 6, 13) einen Befehlsmultiplexer (5) mit zwei Eingängen und einem Ausgang umfaßt, wobei einer der Eingänge mit einem Cache- Teilsystem (13) zum Empfangen einer Befehlssequenz verbunden ist, wobei der andere der Eingänge mit dem Schleifen-Cache-Puffermittel (3, 3a, 3b, 3c, 3d, 3e) verbunden ist, und wobei der Ausgang mit der Befehlsbereitstellungseinheit (7) verbunden ist.
6. Einrichtung nach Anspruch 1, wobei das Schleifen- Cache-Puffermittel (3, 3a, 3b, 3c, 3d, 3e) einen Verzweigungs-Zielpuffer umfaßt.
7. Einrichtung nach Anspruch 6, wobei der Verzweigungs-Zielpuffer ein Register zum Speichern von Programmzählerdaten und vorhergesagten Programmzählerdaten umfaßt.
8. Einrichtung nach Anspruch 1, wobei die Pipeline- Einheit (10, 10a, 10b, 10c, 11, 11a, 11b, 11c) eine erste Pipeline-Einheit (10, 10a, 10b, 10c) und eine zweite Pipeline-Einheit (11, 11a, 11b, 11c) umfaßt, wobei jede Pipeline-Einheit (10, 10a, 10b, 10c, 11, 11a, 11b, 11c) jeweilige Eingangs- und Ausgangsstufen (10a, 11a) aufweist, die mit der Befehlsbereitstellungseinheit (7) verbunden sind.
9. Einrichtung nach Anspruch 1, wobei die Schleifen- Pipeline-Einheit (4, 12, 12a, 12c) ein Speichermittel (4b) zum Speichern eines Schleifenzählerwerts und ein Mittel (4d) zum Vergleichen, und Erniedrigen des Schleifenzählerwerts umfaßt.
10. Verfahren zum Ausführen eines Schleifenbefehls, der einen Teil eines Befehlsdatenstroms bildet, in einer Datenverarbeitungseinrichtung gemäß einem der vorhergehenden Ansprüche, wobei das Verfahren die folgenden Schritte umfaßt:
Vordecodieren des Befehlsdatenstroms;
Bereitstellen von Befehlen für die Pipeline- Einheit (10, 10a, 10b, 10c, 11, 11a, 11b, 11c);
Ausgeben des Schleifenbefehls an die Schleifen- Pipeline-Einheit (4, 12, 12a, 12c) 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 des Schleifenbefehls parallel zu anderen Befehlen des Befehlsdatenstroms.
11. Verfahren nach Anspruch 10, weiterhin mit dem Schritt des parallelen Verteilens von Befehlen zu der Pipeline-Einheit (10, 10a, 10b, 10c, 11, 11a, 11b, 11c).
13. Verfahren nach Anspruch 10, weiterhin mit dem Schritt des Ausführens des Schleifenbefehls in der Pipeline-Einheit (10, 10a, 10b, 10c, 11, 11a, 11b, 11c) und des Speicherns von mit der Schleife zusammenhängenden Daten in dem Schleifen-Cache- Puffermittel (3, 3a, 3b, 3c, 3d, 3e), wenn ein Schleifenbefehl zum ersten Mal vorkommt.
14. Verfahren nach Anspruch 13, wobei der Schleifenbefehl zu Beginn jeder Schleife an die Schleifen- Pipeline-Einheit (4, 12, 12a, 12c) ausgegeben wird.
15. Verfahren nach Anspruch 13, wobei der Schleifenbefehl am Ende jeder Schleife an die Schleifen- Pipeline-Einheit (4, 12, 12a, 12c) ausgegeben wird.
DE69809450T 1997-09-12 1998-09-04 Datenverarbeitungsvorrichtung Expired - Lifetime DE69809450T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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