DE69837138T2 - Unterbrechbare mehrfache Ausfuehrungseinheitverarbeitung waehrend mehrfacher Zuweisung von Register verwendenden Operationen - Google Patents

Unterbrechbare mehrfache Ausfuehrungseinheitverarbeitung waehrend mehrfacher Zuweisung von Register verwendenden Operationen Download PDF

Info

Publication number
DE69837138T2
DE69837138T2 DE69837138T DE69837138T DE69837138T2 DE 69837138 T2 DE69837138 T2 DE 69837138T2 DE 69837138 T DE69837138 T DE 69837138T DE 69837138 T DE69837138 T DE 69837138T DE 69837138 T2 DE69837138 T2 DE 69837138T2
Authority
DE
Germany
Prior art keywords
loop
core
pipeline
pipeline loop
execution
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
DE69837138T
Other languages
English (en)
Other versions
DE69837138D1 (de
Inventor
Eric Houston Stotzer
Richard H. c/o Texas Instruments Stafford Scales
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of DE69837138D1 publication Critical patent/DE69837138D1/de
Application granted granted Critical
Publication of DE69837138T2 publication Critical patent/DE69837138T2/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • G06F8/4452Software pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft im Allgemeinen den Betrieb von Mikroprozessoren mit mehreren Ausführungseinheiten, wobei sie insbesondere Verfahren betrifft, die in derartigen Mikroprozessoren verwendbar sind, um in Reaktion auf Laufzeitbedingungen Software-Pipelineschleifen zu verlassen und wieder in sie einzutreten.
  • HINTERGRUND DER ERFINDUNG
  • Ein Mikroprozessor ist eine Schaltung, die die Befehlsabwicklung, arithmetische Operationen und logische Operationen eines Computers auf einem einzigen Chip kombiniert. Ein digitaler Signalprozessor (DSP) ist ein Mikroprozessor, der optimiert ist, um große Datenvolumina effizient zu handhaben. Derartige Prozessoren sind für den Betrieb von vielen heutigen elektronischen Produkten zentral, die z. B. Hochgeschwindigkeitsmodems, Plattenlaufwerke mit hoher Dichte, digitale Zellulartelephone und komplexe Kraftfahrzeugsysteme, wobei sie eine umfassende Vielfalt anderer digitaler Systeme in der Zukunft ermöglichen werden. Die an die DSPs gerichteten Ansprüche in diesen Umgebungen wachsen fortgesetzt, wie die Verbraucher eine vergrößerte Leistung von ihren digitalen Produkten verlangen.
  • Die Entwickler sind bei der Vergrößerung der Leistung von DSPs erfolgreich gewesen, indem sie im Allgemeinen die Taktfrequenzen vergrößert, Architektur-Engpässe in der DSP-Schaltungskonstruktion beseitigt, mehrere Ausführungseinheiten in eine einzige Prozessorschaltung aufgenommen und Optimierungs-Kompilierer, die die durch den Prozessor auszuführenden Operationen in einer effizienten Weise planen, entwickelt haben. Da weitere Zunahmen der Taktfrequenz schwieriger zu erreichen sind, haben die Entwickler den Prozessor mit mehreren Ausführungseinheiten als ein Mittel erfasst, um eine verbesserte DSP-Leistung zu erreichen. 1 zeigt z. B. einen Blockschaltplan eines DSP, der acht Ausführungseinheiten L1, S1, M1, D1, L2, S2, M2 und D2 besitzt. Diese Ausführungseinheiten arbeiten parallel, um mehrere Operationen, wie z. B. Addition, Multiplikation, Adressierung, Logikfunktionen und die Datenspeicherung und -wiedergewinnung, gleichzeitig auszuführen.
  • Theoretisch ist die Leistung eines Prozessors mit mehreren Ausführungseinheiten proportional zur Anzahl der verfügbaren Ausführungseinheiten. Die Verwendung dieses Leistungsvorteils hängt jedoch von der effizienten Planung der Operationen ab, so dass die meisten der Ausführungseinheiten während jedes Taktzyklus eine auszuführende Aufgabe besitzen. Die effiziente Planung ist für Schleifenbefehle besonders wichtig, weil in einer typischen Laufzeitanwendung der Prozessor die Mehrheit seiner Zeit in der Schleifenausführung verwendet.
  • Eine effektive Art, in der Schleifenbefehle angeordnet werden können, um die mehreren Ausführungseinheiten auszunutzen, ist eine Software-Pipelineschleife. In einer herkömmlichen skalaren Schleife werden alle Befehle für eine einzige Iteration ausgeführt, bevor irgendwelche Befehle für die folgenden Iterationen ausgeführt werden. In einer Software-Pipelineschleife wird die Reihenfolge der Operationen neu geplant, so dass eine oder mehrere Iterationen der ursprünglichen Schleife die Ausführung beginnen, bevor die vorhergehende Iteration vollendet worden ist.
  • In 2a ist eine einfache Schleife, die die 7 Iterationen der Operationen A, B und C enthält, gezeigt. 2b stellt einen alternativen Ausführungsplan für die Schleife nach 2a dar, bei dem eine neue Iteration der ursprünglichen Schleife in jedem Taktzyklus begonnen wird. Für die Taktzyklen I3-I7 wird der gleiche Befehl (An, Bn-1, Cn-2) in jedem Taktzyklus in diesem Plan ausgeführt; falls mehrere Ausführungseinheiten verfügbar sind, um diese Operationen parallel auszuführen, kann der Code umstrukturiert werden, um diesen wiederholten Befehl in einer Schleife auszuführen. Das sich wiederholende Muster A, B, C (zusammen mit den Schleifensteueroperationen) bildet folglich den Schleifen-Kern einer neuen Software-Pipelineschleife, die die Befehle in den Taktzyklen I3-I7 in 5 Schleifen ausführt. 2c stellt eine derartige Schleife dar. Die in den Taktzyklen I1 und I2 nach 2b ausgeführten Befehle müssen trotzdem zuerst ausgeführt werden, um die Software-Pipelineschleife richtig zu "füllen"; diese Befehle werden als der Schleifen-Prolog bezeichnet. Ebenso müssen die in den Taktzyklen I8 und I9 nach 2b ausgeführten Befehle trotzdem ausgeführt werden, um die Software-Pipeline richtig zu "leeren"; diese Befehle werden als der Schleifen-Epilog bezeichnet (es wird angegeben, dass in vielen Situationen der Schleifenepilog durch eine Technik, die als spekulative Ausführung bekannt ist, gelöscht werden kann).
  • Das einfache Beispiel nach den 2a-2c veranschaulicht die Grundprinzipien der Software-Pipeline, wobei jedoch andere Überlegungen, wie z. B. Abhängigkeiten und Konflikte, eine spezielle Planungslösung einschränken können. Für eine ausführlichere Erklärung der Software-Pipeline siehe Vicki N. Allan, Software Pipelining, 27 ACM Computing Surveys 367 (1995).
  • Eine weitere im Allgemeinen bei Prozessoren mit mehreren Ausführungseinheiten und Software-Pipelineschleifen verwendete Technik ist die Mehrfachzuweisung von Registern. Abermals in 1 sind die Register A0-A15 und B0-B15 mit den Ausführungseinheiten L1, S1, M1, D1, L2, S2, M2 und D2 verbunden. Diese Register werden verwendet, um z. B. Operanden, Ergebnisse von Operationen, Zählerwerte und bedingte Werte während der Ausführung zu speichern. Typischerweise ist die Einzelzuweisung derartiger Register bevorzugt; bei der Einzelzuweisung kann, sobald eine Ausführungseinheit ein Register in einer Operation verwendet, dieses Register nicht erneut verwendet werden, bis die ursprüngliche Operation abgeschlossen ist. Bei der Mehrfachzuweisung von Registern können die Register jedoch entsprechend den bekannten Hardware-Verzögerungen erneut verwendet werden. Eine erste Operation kann z. B. die Ausführung in der Einheit D1 beginnen, um einen Wert aus dem Speicher in das Register A4 zu laden, eine Operation, die fünf Taktzyklen erfordert, um abgeschlossen zu werden (falls eine Operation mehr als einen Taktzyklus erfordert, um abgeschlossen zu werden, werden die zusätzlichen Taktzyklen typischerweise als Verzögerungsschlitze bezeichnet). Bei der Einzelzuweisung könnte A4 während dieser fünf Taktzyklen für keinen anderen Zweck verwendet werden, obwohl der vom Speicher geladene Wert bis zum Ende des fünften Zyklus tatsächlich nicht im Register A4 erscheint. Bei der Mehrfachzuweisung könnte A4 während der Verzögerungsschlitze der Operation des Ladens vom Speicher für andere Zwecke verwendet werden, solange wie das Register vor dem Abschluss der Ladeoperation freigegeben wird.
  • Die Mehrfachzuweisung von Registern ist oft in Pipelineschleifen erwünscht, wo die Überlappung von vielen Befehlen mit mehreren Taktzyklen, wie z. B. Ladeoperationen, Multiplikationen und Verzweigungen, erforderlich ist. Die Einzel zuweisung von Registern unter diesen Bedingungen kann erfordern, dass die Parallelität verringert wird, da einige Pläne infolge der großen Anzahl von Registern, die für die Einzelzuweisung erforderlich ist, unmöglich zu implementieren sind. Die Mehrfachzuweisung führt unter diesen Bedingungen oft zu einem verringerten Registerdruck und einer vergrößerten Parallelität. Der Hauptnachteil der Mehrfachzuweisung ist, dass sie erfordert, dass die Befehle in einer erwarteten Reihenfolge ausgeführt werden – falls einer unerwarteten Reihenfolge der Ausführung begegnet wird, gibt es eine hohe Möglichkeit, dass die Registerdaten verfälscht werden.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Besondere und bevorzugte Aspekte der Erfindung sind in den beigefügten unabhängigen und abhängigen Ansprüchen dargelegt. Der Merkmale der abhängigen Ansprüche können mit denjenigen der unabhängigen Ansprüche, wie es geeignet ist, und in Kombinationen, die von denjenigen verschieden sind, die explizit in den Ansprüchen dargelegt sind, kombiniert werden.
  • Beim Mikroprozessor-Betrieb ist es oft erwünscht, eine schnelle Reaktion auf das Auftreten von Laufzeitbedingungen (z. B. Unterbrechungen, Datenbedingungen oder Verarbeitungsunregelmäßigkeiten) zu erlauben. Infolge des Zustands der Datenverfälschung, der sich aus einer unerwarteten Ausführungsreihenfolge ergeben kann, müssen leider die Reaktionen auf Laufzeitbedingungen, wie z. B. Unterbrechungen, im Allgemeinen um Codeblöcke gesperrt sein, die die Mehrfachzuweisung von Registern verwenden. Es ist nun erkannt worden, dass, falls ein derartiger Codeblock eine Software-Pipelineschleife ist, die eine große Anzahl von Iterationen erfordert, um abgeschlossen zu werden, die Zeitverzögerung beim Reagieren auf Laufzeitbedingungen, die auf das Sperren um einen derartigen Codeblock zurückzuführen ist, unannehmbar sein kann.
  • Im Stand der Technik ist versucht wurden, dieses Problem unter Verwendung von Software-Pipelineschleifen mit der Einzelzuweisung von Registern zu lösen. Obwohl dieser Zugang einem Mikroprozessor erlaubt, relativ schnell auf Laufzeitbedingungen, wie z. B. Unterbrechungen, zu reagieren, wird hierin erkannt, dass dieser Zugang oft zu einer suboptimalen Planung für eine Software-Pipelineschleife selbst führt. Weil die Leistung einer Software-Pipelineschleife so ent scheidend wie die Unterbrechbarkeit sein kann, kann der Zugang der Einzelregisterzuweisung außerdem unannehmbar sein.
  • Im Stand der Technik ist außerdem versucht worden, dieses Problem durch das Hinzufügen von zustandssichernder Hardware zu einer Prozessorarchitektur zu lösen. Diese spezialisierte Hardware sichert den ganzen Betriebszustand des Prozessors, bevor sie auf eine Unterbrechung reagiert, wobei sie diesen Zustand bei der Rückkehr von der Unterbrechung wiederherstellt. Dieser Zugang kann beträchtliche hinzugefügte Hardware-Komplexität und -Kosten für einen großen Pipelineprozessor erfordern. Es ist deshalb eine Aufgabe der vorliegenden Erfindung, den Bedarf an einer derartigen zustandssichernden Hardware zu beseitigen.
  • Ein Beispiel eines Verfahrens zum Betreiben eines Mikroprozessors gemäß der vorliegenden Erfindung erlaubt sowohl die Unterbrechbarkeit als auch die effiziente Zuweisung von Registern. Dieses Verfahren erlaubt die Mehrfachzuweisung von Registern innerhalb von Software-Pipelineschleifen. Dieses Verfahren erlaubt jedoch außerdem, dass beim Auftreten einer Laufzeitbedingung derartige Schleifen verlassen und wieder in diese Schleifen eingetreten wird. Es wird geglaubt, dass die vorliegende Erfindung die Erste ist, die das Verlassen und das Wiedereintreten in eine Software-Pipelineschleife bei mehrfach zugewiesenen Registern erlaubt, ohne spezielle zustandssichernde Hardware zu verwenden.
  • Eine Ausführungsform der Erfindung schafft ein Verfahren zum Betreiben eines Prozessors, der mehrere Ausführungseinheiten besitzt, die mit mehreren Registern in einer Datenaustauschbeziehung stehen. Das Verfahren umfasst den Schritt des Ausführens eines Pipelineschleifenkerns, der eine Menge von Kernbefehlen für eine erste Vielzahl von Iterationen umfasst, wobei dieser Schleifenkern mehrere Ausführungseinheiten mit Mehrfachregisterzuweisungen verwendet, um ein Ausgangsergebnis zu erzeugen. Das Verfahren umfasst ferner den Schritt des vorzeitigen Verlassens des Pipelineschleifenkerns in Reaktion auf eine Laufzeitbedingung, so dass wenigstens einige der Iterationen der Pipelineschleife unvollendet verbleiben. Das Verfahren umfasst ferner (z. B. nachdem der Prozessor irgendeine Funktion in Reaktion auf die Laufzeitbedingung ausgeführt hat) das Ausführen von Füllbefehlen, um den Prozessor in einem Betriebszustand zu versetzen, der mit jenem äquivalent ist, der existieren würde, wenn das Auftreten des vorzeitigen Verlassens aus der Pipelineschleife nicht gewesen wäre. Schließlich umfasst das Verfahren das Wiedereintreten in den Pipelineschleifenkern und das Fortsetzen des Ausführens der unvollendeten Iterationen (vorzugsweise von einer weiteren Unterbrechung abhängig). Obwohl die Laufzeitbedingung selbst Unterschiede in der Prozessorausführung beim Rücksprung in die Schleife verursachen kann, ist es eine Aufgabe der Erfindung, dass die Schritte des Verlassens des Pipelineschleifenkerns und das Wiedereintretens in den Pipelineschleifenkern keine Unterschiede im Ausgangsergebnis der Pipelineschleife verursachen.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • Beispielhafte Ausführungsformen der Erfindung werden im Folgenden lediglich beispielhaft unter Bezugnahme auf die beigefügte Zeichnung beschrieben, worin:
  • 1 ein Blockschaltplan ist, der die Ausführungseinheiten und Register eines Prozessors mit mehreren Ausführungseinheiten darstellt;
  • 2a eine einfache skalare Schleife von Computer-Befehlen darstellt; und
  • 2b und 2c einen alternativen Ausführungsplan für die skalare Schleife nach 2a bzw. eine neue Software-Pipelineschleife, die auf diesem Ausführungsplan basiert, darstellen.
  • AUSFÜHRLICHE BESCHREIBUNG DER SPEZIELLEN AUSFÜHRUNGSFORMEN
  • Mehrere veranschaulichende Ausführungsformen sind hierin für die vorliegende Erfindung beschrieben. Obwohl geglaubt wird, dass die vorliegende Erfindung im Zusammenhang mit praktisch jedem Prozessor, der mehrere Ausführungseinheiten besitzt und zur Mehrfachregisterzuweisung fähig ist, verwendet werden kann, werden für veranschaulichende Zwecke diese Ausführungsformen unter Bezugnahme auf eine spezifische Prozessorfamilie, die Texas Instruments TMS320C62xx, beschrieben. Die Durchschnittsfachleute auf dem einschlägigen Gebiet werden die folgende Beschreibung in ausreichenden Einzelheiten verstehen, um es ihnen zu ermöglichen, die Erfindung zu reproduzieren. Für spezifi sche Daten, die mit der Prozessorarchitektur, dem Befehlsvorrat und dem Betrieb in Beziehung stehen, wird der interessierte Leser auf Texas Instruments TMS320C62xx CPU and Instruction Set Reference Guide (1997) verwiesen.
  • Für den Leser sollten außerdem mehrere Definitionen nützlich sein. Eine Operation ist, wie sie hierin verwendet wird, eine durch eine Ausführungseinheit in einem Prozessor in einem oder mehreren Taktzyklen ausführbare Funktion. Eine Operation während des Ausführens ist eine, deren Ausführung begonnen, aber nicht vollendet worden ist. Ein Befehl ist eine Menge von einer oder mehreren Operationen, die während desselben Taktzyklus zu den Ausführungseinheiten abgesendet werden. Eine Laufzeitbedingung ist, wie sie hierin verwendet wird, ein Zustand, entweder intern oder extern zum Prozessor, der auftreten kann, während ein Prozessor Befehle ausführt, wobei aber der genaue Zeitpunkt oder die genaue Häufigkeit seines Auftretens durch den Ausführungscode im Wesentlichen nicht vorhersagbar ist. Beispiele derartiger Bedingungen sind Unterbrechungen, Datenbedingungen oder Nichtzähler-Registerbedingungen (z. B. Überlauf oder Unterlauf).
  • In Fortsetzung der Definitionen ist ein Betriebszustand durch die Befehle, die in allen Prozessoren zu einem gegebenen Taktzyklus ausgeführt werden, definiert – weil einige Befehle mehrere Taktzyklen erfordern, um abgeschlossen zu werden, sind die Operation während des Ausführens außerdem im Betriebszustand eingeschlossen. Ein äquivalenter Betriebszustand reproduziert die Zeitsteuerung der Operationen während des Ausführens eines ursprünglichen Betriebszustands, obwohl sich die tatsächlichen Datenwerte infolge der dazwischenliegenden Verarbeitung unterscheiden können. Eine Schleife kann z. B. unterbrochen werden, wenn sie dabei ist, das k-te Element eines Feldes zu verwenden, wobei die Unterbrechungsroutine einen neuen Wert in das k-te Element setzen kann. Wenn der Betriebszustand wiederhergestellt wird, ist das k-te Element immer noch das nächste zu verwendende Element, so dass ein äquivalenter Betriebszustand vorhanden ist, selbst wenn sich der Wert des Elements k geändert haben kann.
  • Die folgenden Beispiele implementieren alle die gleiche skalare Schleife, die ein Skalarprodukt aus zwei Feldern a[i] und b[i] für i = 600 in einem Prozessor mit acht Ausführungseinheiten, wie z. B. demjenigen, der in 1 dargestellt ist, implementiert. Obwohl die Komplexität einer Software-Pipelineschleife, die von der vorliegenden Erfindung profitiert, viel größer als die eines Skalarprodukts sein kann, ist diese Funktion wegen ihrer Einfachheit gewählt worden, so dass die Erfindung leicht in den Beispielen erkannt werden kann.
  • Das Vergleichs-Codebeispiel 1 im Folgenden veranschaulicht die Implementierung einer einfachen Software-Pipelineschleife des Skalarprodukts. Diese Implementierung umfasst einen Prolog und einen Einzelbefehl-Schleifenkern, der die Operationen in allen acht Prozessoren ausführt (das Symbol || zeigt die Operationen an, die mit einer unmittelbar vorhergehenden Operation parallel ausgeführt werden). Es wird angegeben, dass diese Implementierung die spekulative Ausführung verwendet und folglich keinen Schleifenepilog enthält. Weil die Multiplikations-(MPY- und MPHY-), Verzweigungs-(B-) und Ladeoperationen (LDW-Operationen) in dieser Schleife alle mit Verzögerungsschlitzen arbeiten, werden die Register mehrfach zugewiesen. Damit die Schleife richtig arbeitet, kann sie nicht unterbrochen werden, wobei die Unterbrechungen vor der Ausführung des Schleifenprologs gesperrt werden. Der Hauptnachteil dieser Schleife besteht darin, dass das Skalarprodukt nicht unterbrochen werden kann, bevor alle Iterationen abgeschlossen sind. Die Vorteile dieser Schleife sind, dass der Kern nur neun Register verwendet und dass die Codegröße relativ klein ist. Das Vergleichs-Codebeispiel 1:
    Figure 00090001
    Figure 00100001
  • Das Vergleichs-Codebeispiel 2 im Folgenden veranschaulicht eine Software-Pipelineschleifen-Implementierung des Skalarprodukts, die eingeschränkt ist, um die Einzelzuweisung die Register zu verwenden. Weil die Schleife die Einzelzuweisung verwendet, ist sie unterbrechbar. Die Kernbefehle in dieser Schleife sind jedoch "entrollt" oder kopiert, so dass der Kern wenigstens einen Befehl enthält, der nicht in den Verzögerungsschlitzen eines Verzweigungsbefehls ausgeführt wird – andernfalls würde infolge der Hardware-Beschränkungen eine Unterbre chung im Schleifenkern nicht bedient werden. Die Unterbrechungs-Latenzzeit dieser Schleife beträgt etwa 12 Zyklen. Es wird angegeben, dass zusätzlich zur größeren Codegröße diese Implementierung 18 Register verwendet – das Doppelte der Anzahl, die für die oben erklärte Mehrfachzuweisungs-Implementierung notwendig ist. Das Vergleichs-Codebeispiel 2:
    Figure 00110001
    Figure 00120001
    Figure 00130001
  • Das im Beispiel 1 im Folgenden gezeigte Codebeispiel arbeitet gemäß der vorliegenden Erfindung; folglich verwendet dieses Beispiel das Konzept der Mehrfachzuweisung des Vergleichsbeispiels 1, es ist aber wie das Vergleichsbeispiel 2 UNTERBRECHBAR. Dieses Codebeispiel erfordert wie das Vergleichsbeispiel 1 die explizite Sperrung der Unterbrechungen während seiner Ausführung; andernfalls könnte die Unterbrechungsbehandlung die bekannte Ausführungsreihenfolge stören, die für die Mehrfachzuweisung der Register erforderlich ist. Der Schleifenkern des Beispiels 1 prüft jedoch das Vorhandensein von Unterbrechungen und reagiert explizit auf Unterbrechungen. Folglich arbeitet das Beispiel 1 mit etwa der gleichen Unterbrechungs-Latenzzeit wie das Vergleichsbeispiel 2, 12 Zyklen, wobei es anstelle der durch das Vergleichsbeispiel 2 benötigten neun zusätzlichen Register dennoch nur drei zusätzliche Register benötigt, um die Unterbrechungen zu behandeln. Beispiel 1
    Figure 00140001
    Figure 00150001
    Figure 00160001
  • Bei der Konstruktion einer Schleife werden verschiedene Konzepte verwendet, wie z. B. das obige Beispiel, das gemäß der vorliegenden Erfindung arbeitet. Ein Konzept besteht darin, dass, obwohl die bekannte Ausführungsreihenfolge durch die asynchrone Unterbrechung nicht gestört werden kann, während die Register mehrfach zugewiesen werden, der Kern frei ist, eine alternative bekannte Ausführungsreihenfolge in Reaktion auf eine Bedingung zu verfolgen, die er selbst erfasst. Das zweite Konzept besteht darin, dass die Operationen während des Ausführens durch eine alternative Ausführungsreihenfolge verbraucht werden müssen, d. h., es sollte irgendeine Art von Unterbrechungsepilog verwendet werden, um die Pipeline vor der Verzweigung zur Unterbrechung effizient zu "leeren". Das letzte Konzept besteht darin, dass die Wiederaufnahme der Schleifenausführung nach der Unterbrechungsverarbeitung unter diesen Bedingungen die Erzeugung eines äquivalenten Betriebszustands erfordert, d. h., es sollte irgendeine Art von Unterbrechungsprolog ausgeführt werden, um die Pipe-line zu "füllen", bevor die Kernoperation wiederaufgenommen wird.
  • Die alternative Ausführungsreihenfolge, die für die Unterbrechungsbehandlung gemäß der vorliegenden Erfindung erforderlich ist, kann in einer Vielzahl von Arten eingeleitet werden. Der Schleifenkern des obigen Beispiels 1 liest das Unterbrechungsmerker-Register, wobei, falls die Unterbrechungsbits gesetzt sind, die Schleifenadresse modifiziert wird, um anstelle zurück zur Spitze der Schleife zu einem Unterbrechungsepilog zu verzweigen. Die Unterbrechungsbehandlung kann außerdem eingeleitet werden, indem der Schleifenverzweigungsbefehl am Zustand der Unterbrechungsbits konditioniert wird, so dass die Ausführung von Natur aus in einen Schleifenepilog fällt, falls eine Unterbrechung angefordert wird. Dieser Epilog könnte ein herkömmlicher Schleifenepilog (mit einigen bedingten Operationen, die das Unterbrechungs-Dienstprogramm konfigurieren und zum Unterbrechungs-Dienstprogramm verzweigen) oder ein spezialisierter Unterbrechungsepilog, der während der normalen Ausführung einer Schleife umgangen wird, die keinen herkömmlichen Epilog besitzt (z. B. eine Schleife, die die spekulative Ausführung verwendet), sein. Andere Verfahren des Einleitens einer alternativen Ausführungsreihenfolge, um eine Software-Pipelineschleife zu verlassen, sind für die Durchschnittsfachleute auf dem Gebiet beim Lesen dieser Beschreibung offensichtlich.
  • Der Unterbrechungsepilog dient wenigstens zwei Zwecken. Zuerst sichert er, dass die Operationen während des Ausführens, wie z. B. die Multiplikationen und die Ladeoperationen, in einer deterministischen Weise abgeschlossen werden. Zweitens konfiguriert der Epilog eine Rücksprungadresse, die beim Rücksprung von einer Unterbrechung das richtige erneute Füllen der Pipeline verursacht. Vorzugsweise "leert" der Unterbrechungsepilog außerdem die Pipeline vollständig unter Verwendung der Werte von den Ladeoperationen während des Ausführens, so dass sie nach der Unterbrechungsbehandlung nicht erneut geladen werden müssen. Die Vorliebe für letzte Aufgabe beruht jedoch in erster Linie auf der Effizienz – in den meisten Schleifen könnten diese Werte weggeworfen und nach der Unterbrechungsbehandlung mit der richtigen Einstellung des Schleifenzählers neu geladen werden. Ein Grund für das Wählen des "Wegwerf"-Zugangs kann sein, die Unterbrechungs-Latenzzeit noch weiter zu verringern.
  • Die Unterbrechungs-Rücksprungsadresse sollte auf einen Punkt zum Unterbrechungsprolog gesetzt sein, um die richtige Wiederherstellung des Betriebszustands des Prozessors sicherzustellen. Ein möglicher bevorzugter Zugang besteht darin, den Unterbrechungs-Rücksprungzeiger auf die Adresse eines separaten Unterbrechungsprologs zu setzen, der zurück zur Schleife verzweigt. In einem besonders bevorzugten Zugang, wie er im obigen Beispiel 1 gezeigt ist, ist der Unterbrechungsprolog tatsächlich eine Untermenge des Schleifenprologs, so dass kein zusätzlicher Code erforderlich ist, um den Wiedereintritt in die Schleife zu erlauben.
  • Der Unterbrechungsprolog sollte so konstruiert sein, dass er einen äquivalenten Betriebszustand im Prozessor wiederherstellt, d. h. der zur einem äquivalent ist, der in der Pipelineschleife vorhanden gewesen wäre, wäre die Unterbrechung nicht genommen worden. Obwohl der Unterbrechungsprolog fast wie der Schleifenprolog arbeitet, füllt er notwendigerweise die Pipeline anstatt unter Verwendung des anfänglichen Schleifenzählerwertes unter Verwendung des Schleifenzählerwertes, der zum Zeitpunkt der Unterbrechung vorhanden ist. Falls der Schleifenprolog mit allen Initialisierungsbefehlen konstruiert ist, die den Pipelinefüllbefehlen vorangehen, wie im Beispiel 1, kann der Unterbrechungsprolog normalerweise die völlig gleichen Pipelinefüllbefehle für den Wiedereintritt ausführen. Diese Codekonstruktion erlaubt vorteilhaft eine verringerte Codegröße.
  • Gemäß einem Aspekt der Erfindung ist ein Verfahren, um in einer Pipelineschleife einen Prozessor zu betreiben, der mehrere Ausführungseinheiten besitzt, die mit mehreren Registern in einer Datenaustauschbeziehung stehen, beschrieben worden, wobei das Verfahren die folgenden Schritte umfasst: Ausführen eines Pipelineschleifenkerns, der eine Menge von Kernbefehlen für eine erste Anzahl von Iterationen umfasst, wobei der Kern mehrere Ausführungseinheiten mit Mehrfachregisterzuweisungen verwendet, um ein Ausgangsergebnis zu erzeugen; vorzeitiges Verlassen des Pipelineschleifenkerns in Reaktion auf eine Laufzeitbedingung, wodurch wenigstens eine der ersten Anzahl von Iterationen unvollendet bleibt; Ausführen einer Menge von Füllbefehlen, um den Prozessor in einen Betriebszustand zu versetzen, der mit jenem äquivalent ist, der existieren würde, wenn das Verlassen in Reaktion auf einen Laufzeitbedingungsschritt nicht aufgetreten wäre; und Wiedereintreten in den Pipelineschleifenkern und Fortsetzen des Ausführens eines Pipelineschleifenkern-Schrittes, um dadurch das Ausgangsergebnis ohne Veränderung auf Grund des Schrittes des Verlassens und des Schrittes des Wiedereintretens zu erzeugen.
  • Gemäß einem weiteren Aspekt der Erfindung ist ein Verfahren, um in einer Pipelineschleife einen Prozessor zu betreiben, der mehrere Ausführungseinheiten besitzt, die mit mehreren Registern in einer Datenaustauschbeziehung stehen, beschrieben worden, wobei das Verfahren die folgenden Schritte umfasst: Ausführen eines Schleifenprologs; Ausführen eines Pipelineschleifenkerns für eine vorgegebene Anzahl von Iterationen, wobei der Kern mehrere Ausführungseinheiten mit Mehrfachregisterzuweisungen verwendet, um ein Ausgangsergebnis zu erzeugen; während des Schleifenkerns Prüfen des Auftretens einer Laufzeitbedingung; bei Auftreten der Laufzeitbedingung vorzeitiges Verlassen des Pipelineschleifenkerns und Ausführen einer Funktion in Reaktion auf das Auftreten der Laufzeitbedingung; und Ausführen eines Unterbrechungsprologs, dadurch Wiedereintreten in den Pipelineschleifenkern und Fortsetzen des Ausführens eines Kernschrittes, um dadurch das Ausgangsergebnis ohne Veränderung auf Grund des Schrittes des Verlassens und des Schrittes des Wiedereintretens zu erzeugen.
  • Gemäß einem weiteren Aspekt der Erfindung ist ein Verfahren, um in einer Pipelineschleife einen Prozessor zu betreiben, der mehrere Ausführungseinheiten, die mit mehreren Registern in einer Datenaustauschbeziehung stehen, und maskierbare Unterbrechungen besitzt, beschrieben worden, wobei das Verfahren die folgenden Schritte umfasst: Maskieren der maskierbaren Unterbrechungen; Ausführen eines Schleifenprologs; Ausführen eines Pipelineschleifenkerns für eine vorgegebene Anzahl von Iterationen, wobei der Kern mehrere Ausführungseinheiten mit Mehrfachregisterzuweisungen verwendet, um ein Ausgangsergebnis zu erzeugen; während des Schleifenkerns Prüfen des Auftretens einer Unterbrechungsanforderung; bei Auftreten der Unterbrechungsanforderung vorzeitiges Verlassen des Pipelineschleifenkerns und Verbrauchen aller Registerwerte während des Ausführens; Behandeln der Unterbrechungsanforderung; und Ausführen eines Unterbrechungsprologs, dadurch Wiedereintreten in den Pipelineschleifenkern und Fortsetzen des Ausführens eines Kernschrittes, um dadurch das Ausgangsergebnis ohne Veränderung auf Grund des Schrittes des Verlassens und des Schrittes des Wiedereintretens zu erzeugen.
  • Obwohl die Erfindung hierin unter Bezugnahme auf einen spezifischen Prozessor beschrieben worden ist, wird erkannt, dass ein Durchschnittsfachmann die beschriebenen Ausführungsformen leicht anpassen kann, damit sie in anderen Prozessoren mit mehreren Ausführungseinheiten arbeiten können, um die Mehrfachzuweisung der Register zu erlauben. Ebenso ist die Verwendung des Skalarprodukts veranschaulichend und nicht einschränkend – es wird erkannt, dass die Erfindung leicht mit Software-Pipelineschleifen im Allgemeinen praktiziert werden kann. Obwohl die bevorzugten Ausführungsformen als auf den Wert der Unterbrechungsbits in einem Register reagierend beschrieben worden sind, kann der Durchschnittsfachmann auf dem Gebiet in einer Ausführungsform der Erfindung leicht andere Laufzeitbedingungen ersetzen, die durch den Mikroprozessor erfassbar sind. Andere offensichtliche Modifikationen werden für die Durchschnittsfachleute auf dem Gebiet beim Lesen dieser Offenbarung offensichtlich sein; es ist vorgesehen, dass dieselben in den Umfang der vorliegenden Erfindung fallen.

Claims (9)

  1. Verfahren, um in einer Pipelineschleife einen Prozessor zu betreiben, der mehrere Ausführungseinheiten besitzt, die mit mehreren Registern in einer Datenaustauschbeziehung stehen, wobei das Verfahren die folgenden Schritte umfasst: Ausführen eines Pipelineschleifenkerns, der eine Menge von Kernbefehlen für eine erste Anzahl von Iterationen umfasst, wobei der Kern mehrere Ausführungseinheiten mit Mehrfachegisterzuweisungen verwendet, um ein Ausgangsergebnis zu erzeugen; vorzeitiges Verlassen des Pipelineschleifenkerns in Reaktion auf eine Laufzeitbedingung und Ausführen einer Menge von Unterbrechungsepilog-Befehlen, um während des Ausführens Registerwerte zu verbrauchen, wodurch wenigstens eine der ersten Anzahl von Iterationen unvollendet bleibt; Ausführen einer Menge von Befehlen, um den Prozessor in einen Betriebszustand zu versetzen, der mit jenem äquivalent ist, der existieren würde, wenn das Verlassen in Reaktion auf einen Laufzeitbedingungsschritt nicht aufgetreten wäre; und Wiedereintreten in den Pipelineschleifenkern und Fortsetzen des Ausführens eines Pipelineschleifenkern-Schrittes, um dadurch das Ausgangsergebnis ohne Veränderung auf Grund des Schrittes des Verlassens und des Schrittes des Wiedereintretens zu erzeugen.
  2. Verfahren nach Anspruch 1, das ferner den Schritt des Ausführens einer Menge von Schleifenprolog-Befehlen unmittelbar vor dem Ausführen eines Pipelineschleifenkern-Schrittes umfasst.
  3. Verfahren nach Anspruch 2, bei dem der Schritt des Ausführens einer Menge von Befehlen das erneute Ausführen einer Untermenge der Menge von Schleifenprolog-Befehlen umfasst.
  4. Verfahren nach einem vorhergehenden Anspruch, bei dem: die Laufzeitbedingung eine maskierbare Unterbrechung ist; die maskierbare Unterbrechung während der Ausführung eines Pipelineschleifenkern-Schrittes maskiert wird; und der Pipelineschleifenkern das Vorhandensein einer Unterbrechungsanforderung in der Menge von Kernbefehlen explizit prüft.
  5. Verfahren nach einem vorhergehenden Anspruch, bei dem die Kernbefehle einen Schleifenverzweigungsbefehl umfassen und bei dem der Schritt des vorzeitigen Verlassens des Pipelineschleifenkerns das Modifizieren der Verzweigungsadresse des Schleifenverzweigungsbefehls umfasst, um aus der Pipelineschleife abzuzweigen.
  6. Verfahren nach einem vorhergehenden Anspruch, bei dem die Kernbefehle einen Schleifenverzweigungsbefehl umfassen und bei dem der Schritt des vorzeitigen Verlassens des Pipelineschleifenkerns das Konditionieren des Ausführens des Schleifenverzweigungsbefehls bei einem Nichtauftreten der Laufzeitbedingung umfasst.
  7. Verfahren nach einem vorhergehenden Anspruch, bei dem: der Schritt des Ausführens des Pipelineschleifenkerns das Verwenden mehrerer Ausführungseinheiten mit Mehrfachzuweisung von Registern umfasst, um ein Ausgangsergebnis zu erzeugen; der Schritt des vorzeitigen Verlassens des Pipelineschleifenkerns umfasst: während des Schleifenkerns Prüfen des Auftretens einer Laufzeitbedingung; bei Auftreten der Laufzeitbedingung vorzeitiges Verlassen des Pipelineschleifenkerns und Ausführen einer Funktion in Reaktion auf das Auftreten der Laufzeitbedingung; und der Schritt des erneuten Eintretens in den Pipelineschleifenkern das Ausführen einer Menge von Unterbrechungsprolog-Befehlen, um den Prozessor in einen Betriebszustand zu versetzen, der mit jenem äquivalent ist, der existiert hätte, wenn der Schritt des Verlassens in Reaktion auf eine Laufzeitbedingung nicht aufgetreten wäre.
  8. Verfahren nach Anspruch 7, bei dem die Laufzeitbedingung eine Unterbrechung ist.
  9. Verfahren nach Anspruch 7 oder Anspruch 8, bei dem der Pipelineschleifenkern einen Befehl umfasst, der mit einer ersten Adresse, die den Schleifenkern erneut ausführt, wiederholt verzweigt, bis die vorgegebene Anzahl von Iterationen ausgeführt worden ist, wobei der Schritt des vorzeitigen Verlassens des Pipelineschleifenkerns durch Modifizieren der ersten Adresse bei Auftreten einer Laufzeitbedingung ausgeführt wird, derart, dass der Verzweigungsbefehl stattdessen die Ausführung bei der Adresse eines Bedingungsepilogs fortsetzt.
DE69837138T 1997-12-31 1998-12-14 Unterbrechbare mehrfache Ausfuehrungseinheitverarbeitung waehrend mehrfacher Zuweisung von Register verwendenden Operationen Expired - Lifetime DE69837138T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US7008997P 1997-12-31 1997-12-31
US70089P 1997-12-31

Publications (2)

Publication Number Publication Date
DE69837138D1 DE69837138D1 (de) 2007-04-05
DE69837138T2 true DE69837138T2 (de) 2007-08-16

Family

ID=22093054

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69837138T Expired - Lifetime DE69837138T2 (de) 1997-12-31 1998-12-14 Unterbrechbare mehrfache Ausfuehrungseinheitverarbeitung waehrend mehrfacher Zuweisung von Register verwendenden Operationen

Country Status (4)

Country Link
US (1) US6178499B1 (de)
EP (1) EP0927931B1 (de)
JP (1) JPH11272474A (de)
DE (1) DE69837138T2 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571385B1 (en) * 1999-03-22 2003-05-27 Intel Corporation Early exit transformations for software pipelining
US6820250B2 (en) * 1999-06-07 2004-11-16 Intel Corporation Mechanism for software pipelining loop nests
US6317876B1 (en) * 1999-06-08 2001-11-13 Hewlett-Packard Company Method and apparatus for determining a maximum number of live registers
US6378022B1 (en) * 1999-06-17 2002-04-23 Motorola, Inc. Method and apparatus for processing interruptible, multi-cycle instructions
US20030154469A1 (en) * 2001-12-20 2003-08-14 Timothy Anderson Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor
US20030120899A1 (en) * 2001-12-20 2003-06-26 Stotzer Eric J. Apparatus and method for processing an interrupt in a software pipeline loop procedure in a digital signal processor
US20030120882A1 (en) * 2001-12-20 2003-06-26 Granston Elana D. Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor
US20030182511A1 (en) * 2001-12-20 2003-09-25 Asal Michael D. Apparatus and method for resolving an instruction conflict in a software pipeline nested loop procedure in a digital signal processor
US7178135B2 (en) * 2002-05-16 2007-02-13 International Business Machines Corporation Scope-based breakpoint selection and operation
KR100681199B1 (ko) * 2006-01-11 2007-02-09 삼성전자주식회사 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치
EP2106584A1 (de) * 2006-12-11 2009-10-07 Nxp B.V. Pipeline-prozessor und compiler/planer für branch-delay-slots mit veränderlicher anzahl
KR101335001B1 (ko) * 2007-11-07 2013-12-02 삼성전자주식회사 프로세서 및 인스트럭션 스케줄링 방법
GB2474522B (en) * 2009-10-19 2014-09-03 Advanced Risc Mach Ltd Register state saving and restoring
US8887142B2 (en) * 2010-03-10 2014-11-11 Microsoft Corporation Loop control flow diversion
KR101991680B1 (ko) 2012-01-25 2019-06-21 삼성전자 주식회사 소프트웨어 파이프라인된 프로그램의 하드웨어 디버깅 장치 및 방법
JP6117432B2 (ja) * 2013-05-30 2017-04-19 インテル コーポレイション パイプラインソフトウェアの動的な最適化

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4984151A (en) * 1985-03-01 1991-01-08 Advanced Micro Devices, Inc. Flexible, next-address generation microprogram sequencer
US5226128A (en) * 1987-05-01 1993-07-06 Hewlett-Packard Company Horizontal computer having register multiconnect for execution of a loop with a branch
EP0429733B1 (de) * 1989-11-17 1999-04-28 Texas Instruments Incorporated Multiprozessor mit Koordinatenschalter zwischen Prozessoren und Speichern
US5333280A (en) * 1990-04-06 1994-07-26 Nec Corporation Parallel pipelined instruction processing system for very long instruction word
JPH06180653A (ja) * 1992-10-02 1994-06-28 Hudson Soft Co Ltd 割り込み処理方法および装置
US5644193A (en) * 1993-12-17 1997-07-01 Kabushiki Kaisha Toshiba Phosphor, cathode-ray tube, fluorescent lamp and radiation intensifying screen
JPH07253922A (ja) * 1994-03-14 1995-10-03 Texas Instr Japan Ltd アドレス生成回路
US5889973A (en) * 1995-03-31 1999-03-30 Motorola, Inc. Method and apparatus for selectively controlling interrupt latency in a data processing system
US5920724A (en) * 1996-03-28 1999-07-06 Intel Corporation Software pipelining a hyperblock loop
US5774711A (en) * 1996-03-29 1998-06-30 Integrated Device Technology, Inc. Apparatus and method for processing exceptions during execution of string instructions
US5958048A (en) * 1996-08-07 1999-09-28 Elbrus International Ltd. Architectural support for software pipelining of nested loops
WO1998006038A1 (en) * 1996-08-07 1998-02-12 Sun Microsystems, Inc. Architectural support for software pipelining of loops
US6055628A (en) * 1997-01-24 2000-04-25 Texas Instruments Incorporated Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
US6003128A (en) * 1997-05-01 1999-12-14 Advanced Micro Devices, Inc. Number of pipeline stages and loop length related counter differential based end-loop prediction
US5898865A (en) * 1997-06-12 1999-04-27 Advanced Micro Devices, Inc. Apparatus and method for predicting an end of loop for string instructions
US6044222A (en) * 1997-06-23 2000-03-28 International Business Machines Corporation System, method, and program product for loop instruction scheduling hardware lookahead
US6032252A (en) * 1997-10-28 2000-02-29 Advanced Micro Devices, Inc. Apparatus and method for efficient loop control in a superscalar microprocessor

Also Published As

Publication number Publication date
US6178499B1 (en) 2001-01-23
EP0927931B1 (de) 2007-02-21
EP0927931A2 (de) 1999-07-07
JPH11272474A (ja) 1999-10-08
DE69837138D1 (de) 2007-04-05
EP0927931A3 (de) 2004-04-14

Similar Documents

Publication Publication Date Title
DE69837138T2 (de) Unterbrechbare mehrfache Ausfuehrungseinheitverarbeitung waehrend mehrfacher Zuweisung von Register verwendenden Operationen
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
Baer A survey of some theoretical aspects of multiprocessing
Espasa et al. Out-of-order vector architectures
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE69627807T2 (de) Datenprozessor zum gleichzeitigen Dataladen und Durchführung einer multiplizier-addier Operation
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
Denning Third generation computer systems
DE112005002403B4 (de) Prozessor-Pipeline mit konstantem Durchsatz
DE3210816C2 (de)
DE68929483T2 (de) Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist.
DE60217157T2 (de) Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts
DE4434895C2 (de) Verfahren und Vorrichtung zur Behandlung von Ausnahmebedingungen
DE60131214T2 (de) Verfahren und Anordnung zur Freilassung von Funktionseinheiten in einem multithreaded VLIW-Prozessor
DE19534752A1 (de) Verfahren und System zum Liefern einer Unterstützung für eine spekulative Ausführung
DE102018126003A1 (de) Kombinieren von Zuständen mehrerer Threads in einem Multithread-Prozessor
DE19506990A1 (de) Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten
DE4409586C2 (de) Verfahren und Verarbeitungssystem zum Vereinfachen von Verknüpfungshardware
DE19842254A1 (de) Datenverarbeitungsgerät
DE19824289C2 (de) Pipelineverarbeitungsmaschine
DE69936952T2 (de) Verfahren und Vorrichtung zur Verarbeitung von Programmschleifen
DE4430195A1 (de) Computersystem und Verfahren zur Auswertung von Vorhersagen und Booleschen Ausdrücken
DE10303053A1 (de) Registerumbenennung zum Reduzieren einer Umgehung und Erhöhen einer scheinbaren physischen Registergröße
DE60005830T2 (de) Verfahren und vorrichtung zum steuern eines sprungverzögerungsschlitzes in einem pipelineprozessor
DE10085438B4 (de) Prozessor mit Wiederholarchitektur mit schnellen und langsamen Wiederholpfaden

Legal Events

Date Code Title Description
8364 No opposition during term of opposition