DE60102777T2 - Vorrichtung und verfahren zur verminderung von datenschreibverkehr in prozessoren mit ausnahmeroutinen - Google Patents

Vorrichtung und verfahren zur verminderung von datenschreibverkehr in prozessoren mit ausnahmeroutinen Download PDF

Info

Publication number
DE60102777T2
DE60102777T2 DE2001602777 DE60102777T DE60102777T2 DE 60102777 T2 DE60102777 T2 DE 60102777T2 DE 2001602777 DE2001602777 DE 2001602777 DE 60102777 T DE60102777 T DE 60102777T DE 60102777 T2 DE60102777 T2 DE 60102777T2
Authority
DE
Germany
Prior art keywords
instruction
result
pipeline
register file
command
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
DE2001602777
Other languages
English (en)
Other versions
DE60102777D1 (de
Inventor
Paul Stravers
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.)
NXP BV
Original Assignee
NXP BV
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 NXP BV filed Critical NXP BV
Application granted granted Critical
Publication of DE60102777D1 publication Critical patent/DE60102777D1/de
Publication of DE60102777T2 publication Critical patent/DE60102777T2/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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

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)
  • Computer And Data Communications (AREA)
  • Executing Machine-Instructions (AREA)

Description

  • ANWENDUNGSGEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf das Gebiet der digitalen Rechnerschaltungen und insbesondere auf ein System und ein Verfahren für eine Befehlsausführungsvorrichtung zur Verwendung mit einem Prozessor mit Ausnahmeroutinen.
  • HINTERGRUND DER ERFINDUNG
  • Es existieren allgemeine Beweggründe für den Entwurf von Mikroprozessoren, zum Beispiel, die Leistungsaufnahme und die Abmessungen dieser Vorrichtungen zu reduzieren und auch die Gesamtkosten zu senken. Insbesondere war eine technologische Entwicklung in dieser Hinsicht die Entwicklung von Befehlsausführungsarchitekturen, die eine Reihe von gleichzeitigen parallelen Befehlen implementieren.
  • Es sind Systeme und Verfahren bekannt, die Befehlsausführungsarchitekturen der oben erwähnten Art schaffen, zum Beispiel Mikroprozessor-Befehlssatz-Architekturen (Instruction Set Architektures, ISA). Typischerweise wird für die Implementierung derartiger ISAs ein sogenanntes Pipeline-Verfahren genutzt, um verschiedene Ausführungsstufen von aufeinanderfolgenden Befehlen zu überlappen.
  • Eine herkömmliche vierstufige Pipeline nutzt (1) Abruf (Fetch), (2) Decodierung (Decode), (3) Ausführung (Execute) und (4) Rückschreiben (Write-back). Für Datenübertragungsbefehle wie zum Beispiel einen Ladebefehl wird normalerweise eine zusätzliche Befehlspipeline-Stufe benötigt.
  • In der ersten Stufe des Zyklus ruft der Prozessor einen Befehl aus dem Speicher ab. Die Adresse des abzurufenden Befehls ist im internen Register gespeichert, das als Programmzähler oder PC (Program Counter) bezeichnet wird. Solange der Prozessor darauf wartet, dass der Speicher mit dem Befehl antwortet, inkrementiert er den PC. Das bedeutet, dass die Abrufphase des nächsten Zyklus den Befehl an dem nächsten sequentiellen Speicherplatz im Speicher abrufen wird (wenn der PC nicht durch eine spätere Phase des Zyklus modifiziert wird).
  • In der Decodierphase speichert der Prozessor die von dem Speicher zurückgesendeten Informationen in einem anderen internen Register, das als Befehlsregister oder IR (Instruction Register) bekannt ist. Das IR enthält jetzt einen einzigen Maschinenbefehl, der als Binärzahl codiert ist. Der Prozessor decodiert den Wert im IR, um herauszufinden, welche Operationen in der nächsten Stufe durchzuführen sind.
  • In der Ausführungsstufe führt der Prozessor den Befehl tatsächlich aus. Dieser Schritt umfasst oft weitere Speicheroperationen; zum Beispiel kann der Befehl den Prozessor anweisen, zwei Operanden aus dem Speicher abzurufen (sie zum Beispiel in Operandenregistern speichern), sie zu addieren und das Ergebnis an einem dritten Speicherplatz zu speichern (die Zieladressen der Operanden und das Ergebnis erden ebenfalls als Teil des Befehls codiert).
  • In der Rückschreibstufe der Pipeline wird das zuvor in der Pipeline berechnete Ergebnis in ein Zielregister in einer Registerdatei geschrieben (zurückgezogen).
  • Bei einem weiteren Pipeline-Verfahren nach dem Stand der Technik ist eine Schaltung vorgesehen, die es ermöglicht, dass Operanden oder Ergebniswerte die Registerdatei umgehen. Mit Hilfe dieser Umgehungsschaltungen stehen die Operanden oder Ergebniswerte bereits nachfolgenden Befehlen zur Verfügung, bevor die Operanden-erzeugenden Befehle zurückgezogen wurden (z. B. in die Registerdatei zurückgeschrieben wurden).
  • Schließlich gibt es zahlreiche Gründe dafür, dass der normale Pipeline-Fluss in einem typischen Prozessor systematisch unterbrochen wird. Der Nachteil dieser Unterbrechungen macht sich in Form von verlorenen oder verzögerten Pipeline-Zyklen bemerkbar. Insbesondere dürfen Ausnahmeroutinen oder Unterbrechungen oft den Befehlsfluss durch die Pipeline auf eine solche Weise unterbrechen, dass ein erster Befehl nicht sofort wieder in die Pipeline eintritt, nachdem die Ausnahme beendet ist, während ein zweiter Befehl, der nach dem ersten Befehl in die Pipeline eingetreten war, dies tut. Dadurch wird die Pipeline komplizierter, weil die Änderung der Befehlsreihenfolge in der Pipeline berücksichtigt werden muss, damit Befehlsoperanden und Ergebniswerte ordnungsgemäß verarbeitet werden.
  • Diese Arten von herkömmlichen Pipelines weisen zahlreiche Nachteile auf. Herkömmliche Pipeline-Verfahren erfordern zum Beispiel oft eine Vielzahl von separaten Registern in einer Registerdatei, um zahlreiche gleichzeitige parallel Befehle in angemessener Weise auszuführen und Daten während der Unterbrechungen zu speichern. Die große Registerdatei wiederum trägt typischerweise erheblich zu der Gesamtleistungsaufnahme und den Abmessungen des Prozessors bei.
  • Es besteht also in der Technik ein Bedarf an verbesserten Systemen, Verfahren und Techniken zur Reduzierung des Schreibverkehrs in herkömmliche Register innerhalb eines Prozessors, wobei die Gesamtleistungsaufnahme reduziert wird und gleichzeitig die Auswirkungen von Unterbrechungen in einer Pipeline-Architektur kompensiert werden.
  • KURZE ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung hat zur Aufgabe, einige der Beschränkungen von herkömmlichen Befehlsausführungsvorrichtungen innerhalb von Prozessoren, wie sie oben beschrieben wurden, zu milder.
  • Die Erfindung hat weiterhin zur Aufgabe, eine Prozessor-Befehlssatz-Architektur zu schaffen, die die Anzahl der Registerdatei-Schreiboperationen in einem Pipeline-Verfahren reduziert und dabei gleichzeitig die Auswirkung von Unterbrechungen in einer Pipeline-Architektur berücksichtigt; vorteilhafterweise ermöglicht sie ihrerseits eine Reduzierung der Gesamtleistungsaufnahme des Prozessors.
  • Die mit dem Registerschreibverkehr in einem Prozessor zusammenhängenden Nachteile werden durch eine Anordnung in Übereinstimmung mit den Prinzipien der vorliegenden Erfindung, bei der eine Befehlsausführungsvorrichtung geschaffen wird, reduziert oder überwunden. Die Befehlsausführungsvorrichtung umfasst eine Befehlspipeline zum Erzeugen eines Ergebnisses für einen Befehl, wobei Ausnahmeroutinen die Befehlspipeline in zufälligen Intervallen unterbrechen können; eine Registerdatei, die mindestens einen Schreib-Port zum Speichern des Ergebnisses umfasst, eine Umgehungsschaltung, um den Zugriff auf das Ergebnis zu erlauben, wobei eine Angabe für eine Registerdatei-Steuerung vorgesehen ist, der zu entnehmen ist, ob das Ergebnis durch nur einen anderen Befehl benutzt wird, und die Registerdatei-Steuerung verhindert, dass das Ergebnis in dem Schreib-Port gespeichert wird, wenn über die Umgehungsschaltung auf das Ergebnis zugegriffen wurde und das Ergebnis durch nur einen anderen Befehl benutzt wird, einen First-In-First-Out-Zwischenspeicher (FIFO) zum Speichern des Ergebnisses und eine FIFO-Steuerung zum Schreiben des Inhalts des FIFO-Zwischenspeichers in die Registerdatei, wenn eine Ausnahme auftritt.
  • Bei einer Ausführungsform der vorliegenden Erfindung umfasst die Angabe, ob das Ergebnis durch nur einen anderen Befehl benutzt wird, die Codierung jedes Befehls.
  • In dem „Operationscode” (Opcode) von jeden Befehl wird zum Beispiel ein so genanntes „Totwert”-Feld bestimmt, um anzugeben, ob das Ergebnis durch nur einen anderen Befehl benutzt wird.
  • Bei einer weiteren Ausführungsform der Erfindung umfasst das Mittel zum Angeben, ob das erste Ergebnis durch nur den zweiten Befehl verwendet wird, dass die Befehlspipeline bestimmt, ob ein Ergebnis eines Befehls in der Befehlspipeline und ein weiteres Ergebnis eines weiteren Befehls in der Befehlspipeline zur Speicherung in dem gleichen Schreib-Port in der Registerdatei vorgesehen sind. Da der Schreib-Port in der Registerdatei durch einen nachfolgenden Befehl, der sich bereits in der Befehlspipeline befindet, „wiederverwendet” wird, wird dies benutzt, um anzugeben, dass das erste Ergebnis durch nur einen anderen Befehl benutzt wird.
  • Diese und andere Ausführungsformen und Aspekte der vorliegenden Erfindung werden im Folgenden ausführlich beschrieben.
  • KURZE BESCHREIBUNG DER ZEICHNUNG
  • Die Merkmale und Vorteile der vorliegenden Erfindung lassen sich unter Bezugnahme auf die nachstehende ausführliche Beschreibung der bevorzugten Ausführungsformen anhand der Zeichnungen nachvollziehen. Es zeigen:
  • 1 ein Blockschaltbild von einer beispielhaften Anordnung einer Befehlsausführungsvorrichtung in Übereinstimmung mit den Erkenntnissen der vorliegenden Erfindung;
  • 2 ein Blockschaltbild von einer weiteren beispielhaften Anordnung einer Befehlsausführungsvorrichtung in Übereinstimmung mit den Erkenntnissen der vorliegenden Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Einige Abschnitte der folgenden ausführlichen Beschreibungen werden in Form von Programmen oder Algorithmen und symbolischen Darstellungen von Operationen an Datenbits in einem Computerspeicher vorgelegt. Diese algorithmischen Beschreibungen und Darstellungen sind die von Fachkundigen auf dem Gebiet der Datenverarbeitung verwendeten Mittel, um den Inhalt ihrer Arbeit anderen Fachkundigen am effizientesten mitteilen zu können. Hier, und im Allgemeinen, ist ein Algorithmus als eine selbstkon sistente Sequenz von Schritten zu verstehen, die zu einem gewünschten Ergebnis führt. Die Schritte sind diejenigen, die physikalische Manipulationen von physikalischen Größen erfordern. Normalerweise – jedoch nicht zwangsläufig – liegen diese Größen in Form von elektrischen, magnetischen oder optischen Signalen vor, die gespeichert, übertragen, kombiniert, verglichen und auf andere Weise manipuliert werden können.
  • Bezug nehmend auf 1 wird ein Blockschaltbild dargestellt, dass eine Ausführungsform einer Befehlsausführungsvorrichtung in Übereinstimmung mit den Erkenntnissen der vorliegenden Erfindung veranschaulicht. Es ist zu erkennen, dass 1 zu Erklärungszwecken vereinfacht wurde und dass die gesamte Prozessorumgebung, die zur Verwendung mit der Erfindung geeignet ist, zum Beispiel Cache-Speicher, RAM- und ROM-Speicher, Compiler oder Assembler, E/A-Vorrichtungen, usw. umfasst, die hier nicht alle darstellt werden müssen. Im Allgemeinen nutzt die Befehlsausführungsvorrichtung 10 eine n-stufige Pipeline-Befehlssatz-Registerarchitektur (ISA) 121 bis 12n (im Folgenden kollektiv als „Pipeline 12” bezeichnet), eine herkömmliche Umgehungsschaltung 14, eine Registerdatei 16, eine Registerdatei-Steuerung 18, einen FIFO-Zwischenspeicher 24 (First-In-First-Out) und eine FIFO-Zwischenspeicher-Steuerung 26.
  • Die Pipeline 12 umfasst eine Reihe von Pipeline-Stufen (zum Beispiel Abrufen, Decodieren, Ausführen und Rückschreiben), die in den Registern 121 bis 12n gespeichert werden. Im Gegensatz zu herkömmlichen Pipelines umfasst Pipeline 12 auch ein „Verbraucherkennung”-Feld in den Pipeline-Stufenregistern, und seine Verwendung wird im Folgenden ausführlich erläutert. Es ist jedoch zu beachten, dass sich die Erfindung nicht auf eine bestimmte Pipeline-Architektur beschränkt. Die Stufen in einer Pipelinke können zum Beispiel umfassen: Befehlsabruf, Decodieren, Operandenabruf, ALU-Ausführung, Speicherzugriff und Rückschreiben der Operationsergebnisse. Außerdem kann die Kette der Stufen in der Pipeline feiner unterteilt oder kombiniert werden. Die Anzahl der Stufen in der Pipeline ist ein architektonisches Merkmal, das entsprechend der beabsichtigten Nutzung der Befehlsebenen-Parallelität geändert werden kann.
  • Die Registerdatei 16 umfasst mindestens einen adressierbaren Ziel-Schreib-Port 20 zum Speichern von Daten. Wie der Fachkundige verstehen wird, kann die Registerdatei jedes beliebige herkömmliche Datenbank/Indexier-Speichermittel sein, das sich zum Speichern von Datensätzen/Daten eignet und den Zugriff darauf erlaubt.
  • Die Registerdatei-Steuerung 18 umfasst die Mehrzahl der Logik-, Steuerungs-, Überwachungs- und Übersetzungsfunktionen, die zur Steuerung der Operation des Rückschreibens von Schreibdaten in die Registerdatei 16 erforderlich sind. Die Registerdatei-Steuerung 18 umfasst auch Programme für die Operationen, die in 3 funktionell beschrieben sind. Wie im Folgenden ausführlich erläutert, wird durch die Ausführung dieser Programme die Funktionalität implementiert, die erforderlich ist, um die Anzahl von Registerdatei-Schreiboperationen in der Pipeline zu reduzieren.
  • Befehle können einem von drei Haupttypen zugerechnet werden: arithmetisch/logisch, Datenübertragung und Steuerung. Arithmetische und logische Befehle wenden primitive Funktionen von ein oder zwei Argumenten an, zum Beispiel Addition, Multiplikation oder logische UND-Verknüpfung.
  • Die Zeitsteuerung jeder Stufe hängt von der internen Konstruktion des Prozessors und von der Komplexität der Befehle ab, die er ausführt. Die Quantenzeiteinheit zum Messen von Operationen wird als Taktzyklus bezeichnet. Die Logik, die Operationen in einem Prozessor lenkt, wird durch einen externen Takt gesteuert, bei dem es sich zum Beispiel um eine Schaltung handeln kann, die ein Rechtecksignal mit einer festen Periode erzeugt. Die Anzahl der zur Ausführung einer Operation erforderlichen Taktzyklen bestimmt die Zeitdauer, die hierfür benötigt wird.
  • Ich habe angemerkt, dass eine große Anzahl von Befehlen einen Ergebniswert ergibt, der nur durch einen einzigen Befehl an späterer Stelle in einem Algorithmus verwendet wird, zum Beispiel einen anderen Befehl, der nachfolgend in die Pipeline eintritt (der erstgenannte Befehl wird hier als „Erzeuger” bezeichnet und der letztgenannte als „Verbraucher”). Eine Analyse des Registerdatenflusses in den SPEC-Benchmarks zeigt, dass 70% aller ganzzahligen Ergebnisse und 80–99% aller Gleitkomma-Ergebnisse nur einmal „verbraucht” werden; siehe hierzu den Artikel von M. Franklin et al. mit dem Titel „Register Traffic Analysis for Streamlining Inter-Operation Communication in Fine Grain Parallel Processors”, der in The 25 Annual Internation Symposium an Microarchitecture (MICRO-25) auf den Seiten 236–245 im Dezember 1992 veröffentlicht wurde. Außerdem betritt in einer sehr großen Anzahl von Fällen der Verbraucher die Pipeline-Architektur, bevor sich der Erzeuger zurückzieht. Dies gilt in noch stärkerem Maße für spezielle Prozessortypen, zum Beispiel Superskalar- und VLIW-Prozessoren. Dementsprechend erhält der Verbraucher den Ergebniswert über ein anderes Verfahren als die Registerdatei, zum Beispiel, durch die Umgehungsschaltung. Das Ergebnis wird jedoch nichtsdestoweniger in die Registerdatei zurückgeschrieben.
  • Wichtiger noch habe ich erkannt, dass der Ergebniswert des Erzeugers in einer derartigen Situation nicht zur Registerdatei zurückgezogen zu werden braucht, weil er nicht durch einen anderen Verbraucher benutzt wird. Der Ergebniswert des Erzeugers wird praktisch zu einem „Totwert”, sobald er zum Verbraucher hin umgangen worden ist. In Übereinstimmung mit einem Aspekt der Erfindung bestimmt also die Registerdatei-Steuerung 18, ob ein bestimmter Befehl von mehr als einem Verbraucher benutzt wird, und wenn dies der Fall ist, wird das Ergebnis in der Stufe n, zum Beispiel der Rückschreib-Stufe, in die Registerdatei 16 zurückgeschrieben. In beiden Fällen wird das Ergebnis (das die Schreibdaten, die Zieladresse und die Verbraucherkennung umfasst) vorübergehend in dem FIFO-Zwischenspeicher 24 gespeichert.
  • In der beispielhaften Ausführungsform aus 1 wird in jedem Befehl eine explizite Codierung verwendet, um anzugeben, ob der Ergebniswert eines bestimmten Befehls durch nur einen Verbraucher benutzt wird (oder nur durch andere Verbraucher in der Pipeline). Vorzugsweise wird ein spezielles „Totwert”-Bit bei der Befehlscodierung (dem so genannten „Operationscode” oder „Opcode” eines Befehls) verwendet, das je nach Maß des Verbrauchs durch einen Compiler oder Assembler (nicht abgebildet) gesetzt oder gelöscht wird. Wenn das Totwert-Bit gesetzt wird, wird der Ergebniswert nicht in Stufe n von Pipeline 12 in die Registerdatei 16 zurückgeschrieben (zum Beispiel über ein Write-Enable-Signal), sondern im FIFO-Zwischenspeicher 24 gespeichert. Insbesondere wird das Totwert-Bit ebenso wie die Befehlskennung des zugehörigen Befehls der Registerdate-Steuerung 18 zugeführt, die ihrerseits die Registerdatei 16 über ein Write-Enable-Signal steuert, um den Ergebniswert zurückzuschreiben oder nicht. Wenn ein spezielles Bit nicht zur Verfügung steht, können alternativ ein paar häufig verwendete Befehle ausgewählt werden (z. B. ADDIEREN und LADEN), die einem alternativen Opcode zugewiesen werden, um das Maß des Verbrauchs anzugeben.
  • Durch Speichern des Ergebnisses im FIFO-Zwischenspeicher 24 berücksichtigt die Erfindung die Auswirkungen von Ausnahmen, die den Befehlsfluss durch die Pipeline unterbrechen dürfen. Ausnahmen können den Befehlsfluss auf eine solche Weise unterbrechen, dass der Erzeuger nicht mehr wieder in die Pipeline eintritt, nachdem die Ausnahme behandelt wurde, der Verbraucher dies aber tut. Wenn der Verbraucher nach Beendigung der Ausnahmeroutine wieder in die Pipeline eintritt, liest er seine Operanden aus der Registerdatei 16, weil jetzt der Erzeuger nicht mehr in der Pipeline dem Verbraucher nachgeschaltet ist. Da aber der Erzeuger die Registerdatei 16 vor dem Auftreten der Ausnahme nicht mehr aktualisiert hat, liest der Verbraucher verzögerte Daten aus der Registerdatei 16, und das Programm verhält sich daher nicht korrekt.
  • Bestimmte Pipeline-Architekturen, zum Beispiel Trimedia ISA, lassen an zufälligen Punkten im Befehlsfluss keine Unterbrechungen zu. Stattdessen schafft die ISA spezielle Befehle, die die CPU veranlassen, sich mit ausstehenden Ausnahmen zu synchronisieren. Solange der Erzeuger und der Verbraucher nicht durch derartige Befehle getrennt sind, kann kein Schaden entstehen und können die Totwerte gefahrlos ausgesondert werden.
  • Die MIPS-ISA (Mikroprozessor ohne Interlocking-Pipeline-Stages) und die meisten anderen herkömmlichen ISAs lassen nicht zu, dass Anwendungsprogramme entscheiden, wann der Prozessor sich mit ausstehenden Ausnahmen synchronisieren sollte. Infolgedessen können die Ausnahmen den Befehlsfluss auf eine solche Weise unterbrechen, dass der Prozessor nach der Behandlung der Ausnahme nicht mehr in die Pipeline eintritt, während der Verbraucher dies tut.
  • Im Betrieb speichert der FIFO-Zwischenspeicher 24 die Ergebnisse jedes Befehls im unteren Bereich des FIFO-Speichers 24. Das Ergebnis umfasst wiederum die Schreibdaten, die Zieladresse der Registerdatei 16 und die Verbraucherkennung aus dem Pipeline-Stufen-Register, die einen Verbraucher eindeutig identifiziert.
  • Die FIFO-Steuerung 26 überwacht ständig den Fluss von zurückziehenden Befehlen und vergleicht ihre Identität mit der „Verbraucherkennung” im oberen Bereich des FIFOs 24. Wenn sie eine Übereinstimmung erkennt, wird der obere Bereich des FIFO-Zwischenspeichers 24 abgehoben und sein Wert ausgesondert.
  • Während einer Ausnahme schreibt die FIFO-Steuerung 26 jedoch den Inhalt des FIFO-Zwischenspeichers 24 in die Registerdatei 16, dabei beginnend mit dem oberen Bereich und zum unteren Bereich hin fortfahrend, bis der FIFO 24 leer ist. Wie der Fachkundige verstehen wird, kann die FIFO-Zwischenspeicher-Schreiboperation auf vielfältige Weise ausgeführt werden, zum Beispiel über die Registerdatei-Steuerung oder eine direkte Verbindung mit der Registerdatei. Anschließend wird ein Verbraucher nach Beendigung der Ausnahmeroutine die korrekten Daten aus der Registerdatei 16 lesen.
  • In einer weiteren beispielhaften Ausführungsform, die in 2 dargestellt ist, wird eine implizite Codierung in jedem Befehl benutzt, um anzugeben, ob der Ergebniswert eines bestimmten Befehls durch nur einen Verbraucher (oder andere Verbraucher in der Pipeline) benutzt wird. Insbesondere bestimmt die Pipeline 12, ob ein anderer Befehl in der Pipeline die gleiche Zieladresse (z. B. Schreib-Port 20) in der Registerdatei 16 verwenden wird wie ein nachfolgender Befehl in der Pipeline. Dies kann auf verschiedene Weisen herausgefunden werden. Wenn zum Beispiel der Ergebniswert des Befehls in Stufe 3 123 für die Zieladresse des Schreib-Ports 20 in der Registerdatei 16 angegeben wird und auch der Ergebniswert des Befehls in Stufe 1 121 ebenfalls für die gleiche Zieladresse in der Registerdatei 16 genannt wird, ist der Ergebniswert des Befehls in Stufe 3 „tot”, weil seine Zieladresse durch einen anderen Befehl in der Pipeline wiederverwendet wird. Mit anderen Worten, nur ein Verbraucher wird den Ergebniswert benutzen. Alternativ wird dieses Verfahren auch verwendet, wenn mehr als ein Verbraucher (in der Pipeline) den Ergebniswert benutzt. Wenn zum Beispiel der Ergebniswert des Befehls in-Stufe n 12n für die Zieladresse von Schreib-Port 20 in der Registerdatei 16 angegeben wird und der Ergebniswert des (früheren) Befehls in Stufe 1 121 ebenfalls für die gleiche Zieladresse in der Registerdatei 16 genannt wird, ist der Ergebniswert des Befehls in Stufe n von Stufe 2 bis Stufe n-1 „lebendig”, aber in Stufe 1 „tot”. Auf dieses Weise kann der Ergebniswert durch zahlreiche Verbraucher genutzt werden, während er „lebendig” ist. Wenn ein Ergebniswert einmal „tot” ist, wird er dementsprechend nicht in die Registerdatei 16 zurückgeschrieben.
  • Bei der beispielhaften Ausführungsform aus 2 werden herkömmliche Gatter- und Logik-Schaltungen 22, zum Beispiel ODER-Gatter, verwendet, um der Registerdatei-Steuerung 18 ein Totwert-Bit zu liefern, wie in 2 dargestellt. Die Befehlskennung des zugehörigen Befehls wird ebenfalls der Registerdatei-Steuerung zugeführt. Wie in der Technik gut bekannt ist, sind allerdings bei Mikro-Architekturen, die Registerumbenennung unterstützen, Gatter- und Logik-Schaltungen nicht erforderlich, weil ein derartiger Prozessor bereits einen Mechanismus zum Erkennen der Register-Wiederverwendung umfasst.
  • Eine Reduzierung der Leistungsaufnahme hängt von den tatsächlichen Eigenschafen der Implementierungstechnologie ab. Die Daten in dem FIFO-Zwischenspeicher werden dort zum Beispiel nur für ein paar Taktzyklen gespeichert, bevor sie ausgesondert werden. Wenn man sich dies vor Augen führt, kann es möglich sein, die Daten in dem FIFO-Zwischenspeicher als dynamische Ladungen ohne Auffrischungsmöglichkeiten zu speichern. Hierdurch könnte die Komplexität des FIFO-Zwischenspeichers erheblich reduziert werden, was insbesondere vorteilhaft für Prozessoren wäre, die ein hohes Maß an Befehlsebenen-Parallelität nutzen und die daher in der Lage sein müssen, viele Befehle pro Taktzyklus zurückzuziehen.
  • Im Folgenden werden nur die Prinzipien der Erfindung veranschaulicht. Es ist also zu beachten, dass der Fachkundige in der Lage sein wird, verschiedene Anordnungen zu erdenken, die – obwohl hier nicht explizit beschrieben oder dargestellt – die Prinzipien der Erfindung verkörpern und in ihrer Wesensart und ihrem Umfang enthalten sind. Darüber hinaus wird beabsichtigt, dass alle Aussagen, in denen Prinzipien, Aspekte und Ausführungsformen der Erfindung sowie spezielle Beispiele hierfür genannt werden, sowohl die strukturellen als auch die funktionellen Äquivalente hiervon umfassen. Außerdem wird beabsichtigt, dass derartige Äquivalente sowohl derzeit bekannte Äquivalente als auch in Zukunft noch zu entwickenlde Äquivalente umfassen, d. h. alle entwickelten Elemente, die die gleiche Funktion ausüben, unabhängig von ihrer Struktur.
  • In den Ansprüchen hierfür soll jedes Element, das als ein Mittel zur Ausführung einer bestimmten Funktion genannt wird, jede Möglichkeit zur Ausführung dieser Funktion umfassen, einschließlich zum Beispiel a) eine Kombination von Schaltungselementen, die diese Funktion ausführen oder b) Software in jeglicher Form, einschließlich Firmware, Microcode oder ähnliches, kombiniert mit entsprechenden Schaltungen zur Ausführung dieser Software, um die Funktion auszuführen. Die Erfindung, wie sie durch derartige Ansprüche definiert ist, liegt in der Tatsache, dass die durch die verschiedenen genannten Mittel gelieferten Funktionalitäten auf eine Weise kombiniert und zusammengeführt werden, wie sie in den Ansprüchen beschrieben wird. Die Anmelderin betrachtet daher alle Mittel, die diese Funktionalitäten liefern können, als den hier dargestellten äquivalent.
  • Text in der Zeichnung
  • Fig. 1
    Pipeline flow Pipeline-Fluss
    Stage Stufe
    Bypass circuit Umgehungsschaltung
    Dead value Totwert
    Instr. ID Befehlskennung
    Result value Ergebniswert
    Register file control Registerdatei-Steuerung
    Write enable Write-Enabel
    FIFO buffer FIFO-Zwischenspeicher
    Register file Registerdatei
    Exception Ausnahme
    Write Port Schreib-Port
    FIFO control FIFO-Steuerung
    FIFO buffer write FIFO-Zwischenspeicher-Write-Signal
    Fig. 2
    Logic circuit Logikschaltung
    Dest addr. Zieladresse
    Stage Stufe
    Bypass circuit Umgehungsschaltung
    Dead value Totwert
    Instr id Befehlskennung
    Result value Ergebniswert
    Register file control Registerdatei-Steuerung
    Write enable Write-Enabel
    FIFO buffer FIFO-Zwischenspeicher
    Register file Registerdatei
    Exception Ausnahme
    Write Port Schreib-Port
    FIFO control FIFO-Steuerung
    FIFO buffer Write FIFO-Zwischenspeicher-Write-Signal

Claims (16)

  1. Befehlsausführungsvorrichtung zur Verwendung in einem Prozessor mit einer Ausnahmeroutine, wobei die Befehlsausführungsvorrichtung Folgendes umfasst: eine Befehlspipeline (12) zum Erzeugen eines ersten Ergebnisses für einen ersten Befehl, wobei die Ausnahmeroutine die Befehlspipeline in zufälligen Intervallen unterbricht; eine Registerdatei (16), die mit der Befehlspipeline (12) verbunden ist, wobei die Registerdatei mindestens einen ersten Schreib-Port (20) zum Speichern des ersten Ergebnisses umfasst; eine Umgehungsschaltung (14), die mit der Befehlspipeline (12) verbunden ist, wobei die Umgehungsschaltung (14) den Zugriff auf das erste Ergebnis erlaubt; Mittel zum Angeben, ob das erste Ergebnis durch nur einen zweiten Befehl benutzt wird; eine Registerdatei-Steuerung (18), die mit der Befehlspipeline (12) und mit der Registerdatei (16) verbunden ist, wobei die Registerdatei-Steuerung verhindert, dass das erste Ergebnis in dem Schreib-Port gespeichert wird, wenn über die Umgehungsschaltung (14) auf das erste Ergebnis zugegriffen wurde und es durch nur den zweiten Befehl benutzt wird; einen Zwischenspeicher (24) zum Speichern des ersten Ergebnisses; und eine Zwischenspeicher-Steuerung (26) zum Schreiben des ersten Ergebnisses aus dem Zwischenspeicher in die Registerdatei, wenn eine Ausnahme auftritt.
  2. Befehlsausführungsvorrichtung nach Anspruch 1, wobei der Prozessor ein MIPS ist.
  3. Befehlsausführungsvorrichtung nach Anspruch 1, wobei der Zwischenspeicher ein First-In-First-Out-Zwischenspeicher (24) ist.
  4. Befehlsausführungsvorrichtung nach Anspruch 1, wobei die Befehlspipeline (12) eine Vielzahl von Stufen hat.
  5. Befehlsausführungsvorrichtung nach Anspruch 4, wobei die Befehlspipeline (12) eine Vielzahl von Befehlen in der Vielzahl von Stufen verarbeitet.
  6. Befehlsausführungsvorrichtung nach Anspruch 1, wobei die Mittel zum Angeben, ob das erste Ergebnis durch nur den zweiten Befehl benutzt wird, das Codieren des ersten Befehls umfasst, um anzugeben, ob das erste Ergebnis durch nur den zweiten Befehl benutzt wird.
  7. Befehlsausführungsvorrichtung nach Anspruch 6, wobei das Codieren des ersten Befehls das Festlegen eines Felds in dem Operationscode des ersten Befehls umfasst, um anzugeben, ob das erste Ergebnis durch nur den zweiten Befehl benutzt wird.
  8. Befehlsausführungsvorrichtung nach Anspruch 7, wobei jeder Befehl codiert wird, um anzugeben, ob sein jeweiliges Ergebnis durch nur einen anderen Befehl benutzt wird.
  9. Befehlsausführungsvorrichtung nach Anspruch 5, wobei das Mittel zum Angeben, ob das erste Ergebnis durch nur den zweiten Befehl benutzt wird, beinhaltet, dass die Befehlspipeline (12) bestimmt, ob das erste Ergebnis des ersten Befehls in der Befehlspipeline (12) und ein zweites Ergebnis des zweiten Befehls in der Befehlspipeline zur Speicherung in dem ersten Schreib-Port (20) in der Registerdatei (16) vorgesehen sind.
  10. Befehlsausführungsvorrichtung nach Anspruch 9, wobei das Mittel zum Angeben, ob das erste Ergebnis durch nur den zweiten Befehl benutzt wird, außerdem Gatter- und Logik-Schaltungen (22) umfasst.
  11. Verfahren zur Ausführung eines Befehls in einem Prozessor mit einer Ausnahmeroutine, wobei das Verfahren die folgenden Schritte umfasst: Erzeugen eines ersten Ergebnisses aus einem ersten Befehl mit Hilfe einer Befehlspipeline (12), wobei die Ausnahmeroutine die Befehlspipeline in zufälligen Intervallen unterbricht; Ermöglichen des Zugriffs auf das erste Ergebnis mit Hilfe einer Umgehungsschaltung (14); Bestimmen, ob das erste Ergebnis durch nur einen zweiten Befehl in der Befehlspipeline (12) benutzt wird; Verhindern, dass das erste Ergebnis in einer Registerdatei (16) gespeichert wird, und Speichern des ersten Ergebnisses in einem Zwischenspeicher (24), wenn auf das erste Ergebnis zugegriffen wurde und es durch nur den zweiten Befehl benutzt wird; und Schreiben des ersten Ergebnisses aus dem Zwischenspeicher (24) in die Registerdatei (16), wenn eine Ausnahme auftritt.
  12. Verfahren nach Anspruch 11, wobei der Schritt des Bestimmens das Codieren des ersten Befehls umfasst, um anzugeben, ob das erste Ergebnis durch nur den zweiten Befehl benutzt wird.
  13. Verfahren nach Anspruch 11, wobei der Schritt des Bestimmens beinhaltet, dass die Befehlspipeline (12) bestimmt, ob das erste Ergebnis des ersten Befehls in der Befehlspipeline (12) und ein zweites Ergebnis des zweiten Befehls in der Befehlspipeline (12) die gleiche Speicheradresse in der Registerdatei (16) haben.
  14. Computer-lesbares Speichermedium mit Code zur Verarbeitung eines Befehls auf einer Vorrichtung mit einer Ausnahmeroutine, wobei der Code Folgendes umfasst: Befehlspipeline-Code zum Erzeugen eines ersten Ergebnisses aus einem ersten Befehl; Code, der den Zugriff auf das erste Ergebnis erlaubt, während sich das erste Ergebnis in der Befehlspipeline befindet; Angabecode zum Erkennen, ob das erste Ergebnis durch nur einen zweiten Befehl in der Befehlspipeline benutzt wird; Verhinderungscode zum Verhindern, dass das erste Ergebnis in einer Registerdatei gespeichert wird und Speichern des ersten Ergebnisses in einem Zwischenspeicher, wenn auf das erste Ergebnis zugegriffen wurde und es durch nur den zweiten Befehl benutzt wird; und Übertragungscode zum Schreiben des ersten Ergebnisses aus dem Zwischenspeicher in die Registerdatei, wenn eine Aufnahme auftritt.
  15. Speichermedium nach Anspruch 14, wobei der Angabecode das Codieren des ersten Befehls umfasst, um anzugeben, ob das erste Ergebnis durch nur den zweiten Befehl benutzt wird.
  16. Speichermedium nach Anspruch 14, wobei der Angabecode beinhaltet, dass die Befehlspipeline (1) bestimmt, ob das erste Ergebnis des ersten Befehls in der Befehlspipeline (12) und ein zweites Ergebnis des zweiten Befehls in der Befehlspipeline (12) die gleiche Speicheradresse in der Registerdatei (16) haben.
DE2001602777 2000-02-16 2001-01-24 Vorrichtung und verfahren zur verminderung von datenschreibverkehr in prozessoren mit ausnahmeroutinen Expired - Lifetime DE60102777T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US505986 2000-02-16
US09/505,986 US6851044B1 (en) 2000-02-16 2000-02-16 System and method for eliminating write backs with buffer for exception processing
PCT/EP2001/000775 WO2001061469A2 (en) 2000-02-16 2001-01-24 Apparatus and method for reducing register write traffic in processors with exception routines

Publications (2)

Publication Number Publication Date
DE60102777D1 DE60102777D1 (de) 2004-05-19
DE60102777T2 true DE60102777T2 (de) 2009-10-08

Family

ID=24012699

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2001602777 Expired - Lifetime DE60102777T2 (de) 2000-02-16 2001-01-24 Vorrichtung und verfahren zur verminderung von datenschreibverkehr in prozessoren mit ausnahmeroutinen

Country Status (6)

Country Link
US (1) US6851044B1 (de)
EP (1) EP1208424B1 (de)
JP (1) JP2004508607A (de)
AT (1) ATE264520T1 (de)
DE (1) DE60102777T2 (de)
WO (1) WO2001061469A2 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644190B2 (en) 2002-07-19 2010-01-05 Xelerated Ab Method and apparatus for pipelined processing of data packets
WO2004010287A1 (en) * 2002-07-19 2004-01-29 Xelerated Ab A processor and a method in the processor, the processor comprising a programmable pipeline and at least one interface engine
US7290153B2 (en) * 2004-11-08 2007-10-30 Via Technologies, Inc. System, method, and apparatus for reducing power consumption in a microprocessor
US8250231B2 (en) 2004-12-22 2012-08-21 Marvell International Ltd. Method for reducing buffer capacity in a pipeline processor
WO2007057831A1 (en) * 2005-11-15 2007-05-24 Nxp B.V. Data processing method and apparatus
CN104216681B (zh) * 2013-05-31 2018-02-13 华为技术有限公司 一种cpu指令处理方法和处理器

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228497A (en) * 1977-11-17 1980-10-14 Burroughs Corporation Template micromemory structure for a pipelined microprogrammable data processing system
AU553416B2 (en) * 1984-02-24 1986-07-17 Fujitsu Limited Pipeline processing
US6370623B1 (en) 1988-12-28 2002-04-09 Philips Electronics North America Corporation Multiport register file to accommodate data of differing lengths
JPH0719222B2 (ja) * 1989-03-30 1995-03-06 日本電気株式会社 ストアバッフア
AU629007B2 (en) 1989-12-29 1992-09-24 Sun Microsystems, Inc. Apparatus for accelerating store operations in a risc computer
US5222240A (en) 1990-02-14 1993-06-22 Intel Corporation Method and apparatus for delaying writing back the results of instructions to a processor
GB2241801B (en) 1990-03-05 1994-03-16 Intel Corp Data bypass structure in a register file on a microprocessor chip to ensure data integrity
JPH04367936A (ja) * 1991-06-17 1992-12-21 Mitsubishi Electric Corp スーパースカラープロセッサ
US5471626A (en) * 1992-05-06 1995-11-28 International Business Machines Corporation Variable stage entry/exit instruction pipeline
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
JPH08212083A (ja) 1995-02-07 1996-08-20 Oki Electric Ind Co Ltd 割り込み処理装置
JP3490191B2 (ja) 1995-06-30 2004-01-26 株式会社東芝 計算機
US20020161985A1 (en) * 1999-10-01 2002-10-31 Gearty Margaret Rose Microcomputer/floating point processor interface and method for synchronization of cpu and fpu pipelines

Also Published As

Publication number Publication date
EP1208424B1 (de) 2004-04-14
ATE264520T1 (de) 2004-04-15
EP1208424A2 (de) 2002-05-29
WO2001061469A3 (en) 2002-02-21
JP2004508607A (ja) 2004-03-18
US6851044B1 (en) 2005-02-01
WO2001061469A2 (en) 2001-08-23
DE60102777D1 (de) 2004-05-19

Similar Documents

Publication Publication Date Title
DE69308548T2 (de) Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE3853529T2 (de) Dynamische Mehrbefehle-Mehrdaten-Mehrpipeline-Gleitpunkteinheit.
DE68927415T2 (de) Kontextumschaltungsverfahren und -anordnung zur Verwendung in einem Vektorverarbeitungssystem
DE68926063T2 (de) Verfahren und Gerät zur Steuerung von prozessoren mittels Vorhersagen von Ausnahmen bei der gleitkomma-Arithmetik
DE68929483T2 (de) Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist.
DE68927911T2 (de) Datenverarbeitungssystem
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE3650413T2 (de) Verfahren und Vorrichtung zur Annulierung eines Befehls.
DE3889578T2 (de) Vorrichtung zur Sicherung und Rückspeicherung einer Registerinformation.
DE3689923T2 (de) Dreiphasen-Pipeline-Signalprozessor.
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE68924546T2 (de) Verfahren und Vorrichtung zur Ausführung von Befehlen für ein Vektorverarbeitungssystem.
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE4301417C2 (de) Computersystem mit Einrichtung zur parallelen Befehlsausführung
DE69724771T2 (de) Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE112017003340T5 (de) Unterbrechungsfähige und neustartfähige matrix-multiplikationsinstruktionen, prozessoren, verfahren, und systeme
DE102015111333A1 (de) Betreiben eines 32-bit betriebssystems auf einer 64-bit maschine
DE60032794T2 (de) Bit-dekompression-verarbeitung mit einem vielseitigen ausrichtungswerkzeug
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE4211245B4 (de) Prozessorsystem in Parallelverarbeitungsbauart und Verfahren zu dessen Steuerung
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE2234867A1 (de) Anordnung in datenverarbeitungsanlagen zum steuern der verarbeitung zweier voneinander unabhaengiger programme
DE4207148A1 (de) Superscalar-prozessor
DE112004001040B4 (de) Verfahren und Datenprozessor mit reduzierter Operationsunterbrechung auf Grund von Operanden-Abhängigkeiten

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: EISENFUEHR, SPEISER & PARTNER, 10178 BERLIN

8327 Change in the person/name/address of the patent owner

Owner name: NXP B.V., EINDHOVEN, NL