DE19983476B4 - Verfahren und Schaltungsanordnung zur Einplanung von Operationen unter Verwendung einer Abhängigkeitsmatrix - Google Patents

Verfahren und Schaltungsanordnung zur Einplanung von Operationen unter Verwendung einer Abhängigkeitsmatrix Download PDF

Info

Publication number
DE19983476B4
DE19983476B4 DE19983476T DE19983476T DE19983476B4 DE 19983476 B4 DE19983476 B4 DE 19983476B4 DE 19983476 T DE19983476 T DE 19983476T DE 19983476 T DE19983476 T DE 19983476T DE 19983476 B4 DE19983476 B4 DE 19983476B4
Authority
DE
Germany
Prior art keywords
entry
scheduling
operations
dependency
uop
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 - Fee Related
Application number
DE19983476T
Other languages
English (en)
Other versions
DE19983476T1 (de
Inventor
Amit A. Portland Merchant
David J. Portland Sager
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE19983476T1 publication Critical patent/DE19983476T1/de
Application granted granted Critical
Publication of DE19983476B4 publication Critical patent/DE19983476B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding

Abstract

Verfahren zum Einplanen von Operationen in einem Prozessor, wobei jede Operation wenigstens eine Quelle und einen Bestimmungsort definiert, wobei:
a) eine einzuplanende Operation empfangen und einem verfügbaren Eintrag in einer mehrere Einträge aufweisenden Außer-der-Reihe-Einplanungswarteschlange (510) einer Einplanungsschaltung zugeteilt wird (910) und dabei:
a1) die Quelle bzw. Quellen der zugeteilten Operation mit Bestimmungsorten von in der Einplanungswarteschlange (510) anhängigen Operationen verglichen wird, bzw. werden (920), um zu bestimmen, ob die Ausführung der empfangenen Operationen von einem Ergebnis der Ausführung einer oder mehrerer der zuvor anhängigen Operationen abhängig ist;
a2) dann, wenn die Quelle bzw. eine der Quellen mit einem Bestimmungsort einer anhängigen Operation übereinstimmt, eine Anzeige (D) dieser Abhängigkeit in einem Speicherplatz einer dem Eintrag zugeordneten Zeile einer Abhängigkeitsmatrix (520) gespeichert wird (930), wobei der Speicherplatz in einer Spalte der Abhängigkeitsmatrix angeordnet ist, der derjenigen Operation zugeordnet ist, von welcher die empfangene und zugeteilte Operation abhängt; und...

Description

  • Die vorliegende Erfindung bezieht sich auf ein Verfahren zum Einplanen (scheduling) von Operationen in einem Prozessor, bei dem einzuplanende Operationen empfangen, in einer Warteschlange gespeichert und für eine Ausführung eingeplant werden, wenn es keine Abhängigkeiten von früher empfangenen Operationen gibt. Ferner bezieht sich die Erfindung auf eine Schaltungsanordnung zur Durchführung eines solchen Verfahrens.
  • Eine primäre Funktion eines Prozessors ist es, einen Strom von Operationen durchzuführen, wie beispielsweise einen Strom von Computerbefehlen. Einige Prozessoren sind so ausgebildet, daß sie eine Operation in dem Strom vollständig ausführen, bevor sie damit beginnen, die nächste Operation auszuführen. Bei diesen "In-der-Reihenfolge"-Prozessoren wird das Ergebnis einer Operation korrekt durch spätere Operationen, die von ihr "abhängen", verwendet. Es seien die folgenden Befehle betrachtet:
    Lade Speicher-1 → Register-X
    Addiere Register-X Register-Y → Register Z.
  • Der erste Befehl lädt den Inhalt des Speichers-1 in das Register-X. Der zweite Befehl addiert den Inhalt des Registers-X zu dem Inhalt des Registers-Y und speichert das Ergebnis im Register-Z. Der zweite Befehl ist eine "Kind"-Operation, die von dem ersten Befehl oder der "Eltern"-Operation abhängig ist. Sofern das Ergebnis des ersten Befehls nicht in dem Register-X gespeichert wird, bevor der zweite Befehl ausgeführt wird, so wird ein falsches Ergebnis in dem Register-Z gespeichert. Man beachte, daß eine einzelne Operation mehr als nur eine Elternoperation und mehr als nur eine Kindoperation haben kann und daß sie sowohl Eltern- als auch Kind-Operation in Bezug auf verschiedene Operationen sein kann. Um die Leistung eines Prozessors zu verbessern, können Operationen "außer-der- Reihe" ausgeführt werden. Wenn beispielsweise die Daten für einen Befehl in einem Strom zu einem bestimmten Zeitpunkt nicht bereit sind, kann der Prozessor einen anderen Befehl ausführen, der sich an einem späteren Ort in dem Strom befindet. In diesem Fall kann ein "Einplaner" ("Scheduler") Befehle derart einplanen, daß ein Kind-Befehl nicht vor seinem Eltern-Befehl ausgeführt wird. Dies verbessert die Prozessorleistung, da der Prozessor nicht untätig bleibt, bis die Daten eines ersten Befehls bereitstehen.
  • Computerbefehle sind nicht die einzigen Operationen, die derartige Abhängigkeiten aufweisen. Beispielsweise ist es möglich, daß Speicheroperationen derart eingeplant werden, daß Informationen in einen Speicherplatz eingespeichert werden, bevor Informationen aus diesem Speicherplatz durch eine spätere Operation gelesen werden. Andere Beispiele umfassen Einplanungsoperationen auf der Grundlage begrenzter Ausführungsressourcen, Speicherressourcen, Registerressourcen, einer Verfügbarkeit von Zeitschlitzen oder einer Busverfügbarkeit. Im Sinne eines Beispiels wird hier die Einplanung von Mikrobefehlen, die auch als "μops" oder "uops" bekannt sind, verwendet, um bekannte Einplanungstechniken zu beschreiben.
  • 1 ist eine Übersicht über ein bekanntes System zum Verarbeiten von Befehlen und uops. Das System enthält eine Befehlsabruf- und -dekodiermaschine 110, die einen Befehlsstrom in eine Serie von in einer Reihenfolge befindlichen ops dekodiert, die den Datenfluß des Befehlsstrom repräsentiert. Die Befehle können beispielsweise in uops mit zwei logischen Quellen und einem logischen Bestimmungsort (Destination) dekodiert werden. Die uops werden aus der Befehlsabruf- und Dekodiermaschine 110 an eine Umbenennungs- und Zuweisungseinheit 120 "ausgegeben". Sofern ein Prozessor nur eine begrenzte Anzahl von physikalischen Registern aufweist, bildet die Umbenennungs- und Zuweisungseinheit 120 logische Registerreferenzen auf physikalische Registerreferenzen ab.
  • Die uops werden dann an einen Einplaner 130 gesendet, welcher verschiedene anhängige uops speichert und aus dieser Gruppe und/oder "Warteschlange" diejenige uop oder diejenigen uops auswählt, die als nächstes ausgeführt wird bzw. werden. Der Einplaner 130 wählt uops derart aus, daß eine Kind-uop nicht vor ihrer Eltern-uop ausgeführt wird. Das heißt, der Einplaner 130 entscheidet, ob jedes Quellregister, das von einer uop verwendet wird, bereit ist, verwendet zu werden. Wenn sämtliche Quellen der uop bereit sind und wenn die Ausführungsressourcen verfügbar sind, wird die uop an eine Ausführungsressource 140 gesendet oder "abgefertigt" ("dispatched"), in der die Operation durchgeführt wird. Somit werden uops auf der Grundlage von Datenflußeinschränkungen und einer Ressourcenverfügbarkeit und nicht in der ursprünglichen Reihenfolge des Stroms abgefertigt.
  • Bekannte Einplaner basieren typischerweise auf dem "Tomasulo"-Einplaner. 2, eine Blockdarstellung eines derartigen Tomasulo-Einplaners, zeigt zwei ausgegebene uops, Add1 und Add2, die von einem Einplaner 200 empfangen worden sind. Jeder uop weist zwei Quellen und einen Bestimmungsort auf. Add1 summiert die Inhalte des Registers 1 (r1) zu den Inhalten von r2. Das Ergebnis wird in r3 gespeichert. Add2 summiert den Inhalt von r3 mit dem Inhalt von r2 und speichert das Ergebnis in r4. Wie zu sehen ist, hängt Add2 von Add1 ab und ist deren Kind. Der Einplaner 200 enthält eine 10-Bit-Anzeigetafel (Scoreboard) 210, die verwendet wird, um zu verfolgen, welche Register bereit sind. Jedes Bit repräsentiert ein Register, und beispielsweise eine "0" zeigt an, daß das Register nicht bereit ist, während eine "1" anzeigt, daß das Register bereit ist. Sofern Add1 nicht ausgeführt worden ist, wird das r3 zugegeordnete Bit in der Anzeigetafel 210 auf "0" gesetzt, um anzuzeigen, daß r3 nicht bereit ist.
  • Der aktive Einplaner 220 verwendet die Anzeigetafel 210 um zu bestimmen, ob eine uop zur Abfertigung bereit ist. Beispielsweise sieht der aktive Einplaner 220 bei den r3 und r2 zugeordneten Bits nach, wenn er Add2 betrachtet. Sofern die Anzeigetafel 210 wiedergibt, daß beide Quellen bereit sind, fertigt der aktive Einplaner 220 die uop zur Ausführung ab. Wenn eine der Quellen nicht verfügbar ist, wird die uop nicht abgefertigt. Nachdem die uop ausgeführt ist, wird die Anzeigetafel 210 derart aktualisiert, daß sie nunmehr wiedergibt, daß r4 jetzt bereit ist.
  • 3 veranschaulicht eine Schaltung, die einem Tomasulo-Einplaner zugeordnet ist. Wenn eine uop in den Tomasulo-Einplaner eingeschrieben oder zugewiesen wird, werden ihre Quellen aus der Anzeigetafel 210 gelesen. Sofern die Anzeigetafel 210 anzeigt, daß die Quellen bereit sind, ist die uop zur Einplanung bereit. Quellen, die in der Anzeigetafel 210 bereit sind, werden in dem Einplaner als bereit markiert. Quellen, die nicht bereit sind, überwachen den Ergebnisbus. Der Wert eines Quellregisters 310 einer anhängigen uop wird mit dem Wert der abgeschlossenen uops auf dem Bestimmungsort oder Ziel-Bus unter Verwendung einer Gruppe von Komparatoren 320 verglichen. Die Ausgangssignale aus der Gruppe der Komparatoren 320 werden einem breiten ODER-Gatter 330 eingegeben, und der Ausgang des breiten ODER wird als Bereit-Bit 340 für die erste Quelle gespeichert. Eine ähnliche (nicht in 3 gezeigte) Logik wird ausgeführt, um ein Bereit-Bit für die zweite Quelle der anhängigen uop zu erzeugen. Wenn sämtliche Quellen der anhängigen uop bereit sind, wie es von den Ausgangssignalen der logischen Gatter 350 bestimmt wird, ist die uop zur Abfertigung bereit. Diese Logik wird für jede anhängige uop, wie beispielsweise die Einträge 1 bis n wiederholt. Wenn mehrere uops bereit sind, abgefertigt zu werden, bestimmt eine Prioritätslogik 360, welche uop abgefertigt wird. Es wird ein Nachschlagen durchgeführt, um das Bestimmungsregister 370 der gerade abgefertigten uop zu bestimmen, und dieser Wert wird auf einen Ergebnisbus ausgegeben.
  • Der Tomasulo-Einplaner verwendet eine enge Einplanungsschleife, wie es in 4 gezeigt ist. Für jede anhängige uop überwacht der Einplaner den Ergebnisbus und vergleicht den Bestimmungsort ausgeführter uops mit den Quellen anhängiger uops bei 410. Als nächstes führt der Einplaner eine Bereit-Bestimmungs-Logik 420 aus, um die Abfertigungsbereitschaft der anhängigen uop zu bestimmen. Für jede von der anhängigen uop verwendete Quelle werden die Ergebnisse der bei 410 durchgeführten Vergleiche bei 430 ODER-verknüpft. Die Ergebnisse für jede Quelle werden dann bei 440 UND-verknüpft. Nur dann, wenn jede Quelle bereit ist, bestimmt der Einplaner, daß die uop zur Abfertigung bereit ist.
  • Es können jeweils verschiedene uops zu einem Zeitpunkt zur Abfertigung bereit sein. Wenn mehr als eine uop bereit ist, wird bei 450 eine Priorisierung durchgeführt, um zu bestimmen, welche der bereiten uops als erste abgefertigt werden sollte. Schließlich wird die anhängige uop bei 460 abgefertigt. Wenn eine uop abgefertigt ist, wiederholt der Einplaner die oben beschriebenen Aktivitäten, die zu der engen Einplanungsschleife führen, die bestimmt, wann anhängige uops zur Ausführung bereit sind.
  • Ein Stand der Technik, wie er anhand der 2 bis 4 beschrieben worden ist, ist beispielweise in der US-Patentschrift Nr. 5,745,726 offenbart. Aus der US-Patentschrift 5,710,902 ist ferner ein Verfahren und eine Vorrichtung bekannt, die Abhängigkeiten in einer Sequenz von Befehlen mit Hilfe eines Abhängigkeitskettendetektors (DCD; dependency chain detector) erfaßt. Zu jedem Befehl wird ein Vektor erstellt, in dem bestimmte Bits anzeigen, ob dieser Befehl von früheren Befehlen abhängig ist. Die Druckschrift läßt allerdings offen, wie diese Vektoranzeigen verwendet werden sollen. Darüber hinaus eignet sich die dort offenbarte Struktur nicht für eine Einrichtung, die eine Entscheidung über die als nächstes einzuplanenden Befehle treffen kann, die also diejenigen Befehle einplant, bei denen keine Abhängigkeiten vorhanden sind oder diejenigen Beffehle, von denen sie abhängen, bereits ausgeführt worden sind.
  • Es gibt jedoch eine Reihe von Nachteilen bei bekannten Einplanungstechniken. Beispielsweise ist die Grundmotivation für eine Erhöhung der Taktfrequenz die Verringerung der Befehlsverzögerung. Angenommen, ein Abschnitt eines Programms enthält eine Sequenz von N Befehlen I1, I2, ..., IN. Dieser Teil des Programms kann darüber hinaus irgendwelche weiteren Befehle enthalten. Ferner sei angenommen, daß jeder Befehl als Eingabe das Ergebnis des vorhergehenden Befehls erfordert. Ein derartiges Programm kann nicht in einer geringeren Zeit als T = L1 + L2 + ... + LN ausgeführt werden, wobei Ln die Verzögerung (Latenz) eines Befehls In ist, selbst dann, wenn der Prozessor in der Lage wäre, eine sehr große Anzahl von Befehlen parallel auszuführen. Somit besteht der einzige Weg, das Programm schneller auszuführen, darin, die Verzögerungen der Befehle zu verringern.
  • Darüber hinaus muß dann, wenn jede uop in einem Strom von der vorhergehenden uop abhängig ist, ein Einplaner eine vollständige Iteration der Einplanungsschleife für jede abgefertigte uop ausführen. Dies wird zur minimalen "Verzögerung" jeder uop. Die Verzögerung einer uop kann als diejenige Zeit definiert werden, die von dem Zeitpunkt, wenn ihre Eingangsoperanden bereit sind, bis zu dem Zeitpunkt, zu dem ihr Ergebnis bereit ist, durch eine andere uop verwendet zu werden, vergeht. Darüber hinaus ist die Geschwindigkeit eines Befehls durch das in 1 gezeigte mehrstufige System durch die Geschwindigkeit der langsamsten Einheit oder des "schwächsten Gliedes" in der Kette beschränkt.
  • Die Geschwindigkeit eines Prozessors in uops pro Sekunde oder S kann ausgedrückt werden durch S = P/L, wobei P die mittlerere Parallelität und L die durchschnittliche uop-Verzögerung in Sekunden ist. Ein Schlüsselvorteil eines Einplaners besteht darin, daß er den Wert P erhöht, was die Leistung des Prozessors verbessert. Jedoch ist eine Ausführungseinheit typischerweise in der Lage, eine übliche uop, wie beispielsweise eine Addition, mit einer Verzögerung auszuführen, die geringer ist, als die Verzögerung der engen Einplanungsschleife. Folglich erhöht die Verwendung des Einplaners auch den Wert von L, was die Leistung des Prozessors einschränkt.
  • Beispielsweise kann das Vergleichen des Zielregisters der abgefertigten uops mit sämtlichen Quellen aller anhängigen uops eine lange Zeit erfordern, wie beispielsweise die für 4–6 Gatteroperationen. Diese – zusätzlich zu der Bereit-Bestimmungslogik, welche 1 oder 2 Gatter benötigen kann, der Priorisierung, welche weitere 1 oder 2 Gatter benötigen kann, und dem Bestimmungsort-Nachschlagen von 2 bis 3 Gattern – führt zu einer engen Schleife, die zwischen 8 und 13 Gatteroperationen benötigt. Darüber hinaus kann es sein, daß der Einplaner eine Anzahl verschiedener Ergebnisbusse überwachen muß, welches die Menge des Vergleichens, das ausgeführt werden muß, erhöht. Die wachsende Anzahl der Register, die in den Prozessoren verwendet werden, sowie die sich erhöhenden Frequenzen der Prozessoroperation machen das gegenwärtige System der Einplanungsoperationen unausführbar.
  • Aufgabe der Erfindung ist es, die bei dem bekannten Einplaner („Tomasulo-Einplaner") auftretenden Verzögerungen zu vermeiden und somit eine schnellere Abfertigung zu erreichen.
  • Diese Aufgabe wird erfindungsgemäß durch ein Verfahren mit den Merkmalen des Anspruchs 1 bzw. einen Einplaner mit den Merkmalen des Anspruchs 5 gelöst. Bevorzugte Weiterbildungen des erfindungsgemäßen Verfahrens sind in den Unteransprüchen 2 bis 4 gekennzeichnet.
  • Im folgenden wird die Erfindung anhand eines in den Zeichnungen dargestellten bevorzugten Ausführungsbeispiels näher erläutert.
  • 1 ist eine Übersicht eines bekannten Systems zum Verarbeiten von Befehlen und uops.
  • 2 ist eine Blockdarstellung eines bekannten Tomasulo-Einplaners, der Operationen in einem Prozessor einplant.
  • 3 veranschaulicht eine einem Tomasulo-Einplaner zugeordnete Schaltung.
  • 4 ist ein Ablaufdiagramm eines bekannten Verfahrens zum Einplanen von Operationen in einem Prozessor.
  • 5 zeigt einen Matrixeinplaner gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
  • 6A bis 6C veranschaulichen die Verwendung einer Abhängigkeitsmatrix zum Einplanen von Operationen gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
  • 7 ist eine Blockdarstellung der Einplanungsschaltung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
  • 8 veranschaulicht eine Fünf-Stufen-Pipeline für einen Matrixeinplaner gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
  • 9 ist ein Ablaufdiagramm eines Verfahrens zum Einplanen von Operationen gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
  • Ein Ausführungsbeispiel der vorliegenden Erfindung ist auf ein Verfahren und eine Einrichtung zum Einplanen von Operationen unter Verwendung einer Abhängigkeitsmatrix gerichtet. Es wird jetzt im Detail auf die Zeichnungen Bezug genommen, in denen gleiche Teile durchgängig mit gleichen Bezugszeichen gekennzeichnet sind. 5 zeigt einen Matrixeinplaner 500 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Jede uop, die in den Matrixeinplaner 500 eintritt, wird in eine Position oder einen Eintrag in einer Einplanungswarteschlange 510 gebracht. Der in 5 gezeigte Matrixeinplaner weist 4 derartige Einträge auf, die mit "0" bis "3" bezeichnet sind. Jeder Eintrag enthält ein Gültig-Bit, das anzeigt, ob es eine uop in dieser Position gibt oder nicht. Wie es durch ein "V" in 5 angezeigt ist, enthält die Position 1 uopB. Es ist klar, daß "V" beispielsweise ein Bit mit einem Wert von "1" repräsentieren könnte. In ähnlicher Weise enthält die Position 3 uopA, und die Positionen 0 und 2 sind leer. Die Einplanungswarteschlange 510 enthält darüber hinaus für jeden Eintrag ein Bestimmungsort- oder Ziel-Register, und die Sammlung der Bestimmungsregister wird als "Bestimmungsregistersatz" bezeichnet. Wie es in 5 gezeigt ist, wird das Ergebnis der uopB in das Register 1 (r1) gebracht, und das Ergebnis der uopA wird in Register r3 gebracht.
  • Der Strom der eintretenden uops befindet sich in der ursprünglichen Reihenfolge, so daß eine Elternoperation einer eintretenden uop entweder in dem Matrixeinplaner 500 anhängig ist oder bereits abgefertigt worden ist. Das heißt, eine Eltern-uop betritt den Matrixeinplaner 500 niemals nach ihrem Kind. Wenn Abhängigkeiten zwischen den Einträgen in der Einplanungswarteschlange 510 auf einfache Weise eingerichtet und gehalten werden, können die zeitaufwendigen Vergleichsoperationen in der Einplanungsschleife, wie sie unter Bezugnahme auf 4 beschrieben worden sind, beseitigt werden. Gemäß einem Ausführungsbeispiel der vorliegenden Erfindung wird dies unter Verwendung einer Abhängigkeitsmatrix 520 ausgeführt.
  • Jedes Bit oder Element in der Abhängigkeitsmatrix 520 entspricht der Abhängigkeit einer uop in einer Warteschlangenposition von einer uop in einer anderen Warteschlangenposition. Beispielsweise zeigt "D" in Zeile 1, Spalte 3 an, daß die uop im Eintrag 1 oder die uopB, von dem Ergebnis abhängig ist, was von der uop im Eintrag 3 oder der uopA erzeugt wird. Das heißt, die uopB verwendet den Bestimmungsort von uopA beziehungsweise r3 als Quelle. Es ist klar, daß "D" beispielsweise ein Bit mit einem Wert "1" repräsentieren könnte. Da eine uop nicht von sich selbst abhängen kann, ist jeder Kasten entlang der Diagonalen der Abhängigkeitsmatrix 520 mit einem "x" markiert. Während hier eine Abhängigkeitsmatrix mit "Zeilen" und "Spalten" mit einer speziellen Beziehung zu Abhängigkeiten als Beispiel verwendet wird, ist zu beachten, daß stattdessen andere Strukturen, wie beispielsweise eine Matrix, bei welcher die Begriffe "Zeilen" und "Spalten" ausgetauscht sind, verwendet werden können.
  • Wenn eine neue uop die Einplanungswarteschlange 510 betritt, bestimmt eine Zuweisungslogik, welche verfügbare Position verwendet werden sollte. Die eintretende uop wird dann in diese Position unter Verwendung von (nicht in 5 gezeigten) Schreib-Ports eingeschrieben, und die Quellen der eintretenden uop werden mit dem Bestimmungsregistersatz unter Verwendung von Vergleichs(CAM)-Ports (die ebenfalls nicht in 5 gezeigt sind) verglichen. Eine Übereinstimmung zwischen einer Quelle einer eintretenden uop und einem Bestimmungsort einer anhängigen uop zeigt an, daß die eintretende uop von dem anhängigen Eintrag abhängig ist, und es wird ein "D" an der richtigen Position in der Abhängigkeitsmatrix 520 gespeichert.
  • Auf diese Weise spiegelt die Abhängigkeitsmatrix 520 wieder, welche uops bereit sind, abgefertigt zu werden. Eine uop, bei der irgendein Abhängigkeitsbit gesetzt ist, muß darauf warten, daß die diesem Bit zugeordnete Elternoperation abgefertigt wird. Wie es in 5 gezeigt ist, ist uopA bereit, abgefertigt zu werden, weil es kein "D" in Zeile 3 gibt, aber uopB ist nicht bereit, weil es darauf warten muß, daß eine Abhängigkeit von uopA aufgelöst wird, wie es durch das "D" in Zeile 1, Spalte 3 gezeigt ist. Der Abfertigungsstatus jedes Eintrags in dem Matrixeinplaner 500, wie er durch die Bereit-Bestimmungslogik festgestellt wird, kann als Abfertigungslogikbit 530 gespeichert werden. Sofern eine Reihe von uops zu einem Zeitpunkt zur Abfertigung bereit ist, kann eine Prioritätslogik verwendet werden, um zu bestimmen, welche uop zuerst abgefertigt wird. Schließlich bestimmt eine Logik zur Aufhebung der Zuweisung, welche Einträge in der Einplanungswarteschlange 510 "freigegeben" werden müssen, oder welche Positionen in der Warteschlange jetzt leer und bereit sind, erneut verwendet zu werden.
  • Wenn eine uop abgefertigt wird, wird die entsprechende Spalte in der Abhängigkeitsmatrix 520 gelöscht, da irgendein Bit, das in dieser Spalte gesetzt war, einer uop entspricht, die von der abgefertigten uop abhängig war. Wie es durch einen Pfeil in 5 gezeigt ist, wird Spalte 3 gelöscht, wenn uopA abgefertigt wird. Dies löscht das "D" in Zeile 1, Spalte 3 und setzt die Stufe für uopB auf Abfertigung im nächsten Zyklus. Dies ist die Einplanungsschleife für den Matrixeinplaner 500, und sie ist schneller als der herkömmliche Tomasulo-Einplaner, da die Vergleichs- und Bestimmungsortnachschlageoperationen, die in 4 gezeigt sind, beide beseitigt worden sind. Die Bereit-Bestimmungslogik, welche bloß überprüft, ob eine vollständige Zeile gelöscht ist, kann als einfache Struktur eines verdrahteten ODER in Dominologik implementiert werden. Eine derartige Schaltung kann für sehr hohe Frequenzen ausgebildet sein.
  • 6A bis 6C veranschaulichen, wie uops durch einen Einplaner mit einer Abhängigkeitsmatrix 620 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung hindurchlaufen. Wie es in 6A gezeigt ist, enthält der Einplaner eine Außer-der-Reihe-Einplanungswarteschlange 610 mit 8 Positionen, die mit "0" bis "7" bezeichnet sind, wobei aber eine beliebige Anzahl von Positionen verwendet werden kann. Jede Position in der Einplanungswarteschlange 610 enthält eine Gültigkeitsanzeige und Informationen über die uop, die den Bestimmungsort (Destination) der uop einschließen. Zum Zeitpunkt T = 0 weist die Einplanungswarteschlange 610 fünf Einträge auf, deren Gültigkeitsbit auf "V" (= Valid) gesetzt ist. So ist beispielsweise die Warteschlangenposition 0 leer und die Warteschlangenposition 1 enthält einen Eintrag, welcher Register 11 als Bestimmungsort verwendet.
  • Jede Zeile in der Abhängigkeitsmatrix 620 entspricht einer Position in der Einplanungswarteschlange 610. Jede Spalte in der Abhängigkeitsmatrix 620 ist einer Abhängigkeit von einer Position in der Einplanungswarteschlange 610 zugeordnet. Wie zuvor ist deshalb, weil eine uop nicht von sich selbst abhängig sein kann, jeder Kasten entlang der Diagonale der Abhängigkeitsmatrix 620 mit einem "x" markiert. Das "D" in Zeile 1, Spalte 7 zeigt an, daß die uop in der Warteschlangenposition 1 von der uop in der Warteschlangenposition 7 abhängig ist. Das heißt, die Operation in der Warteschlangenposition 1 ist das Kind der Operation in der Warteschlangenposition 7. Von den 5 Einträgen in der Einplanungswarteschlange 610 hängt nur der Eintrag in der Warteschlangenposition 7 von keinem anderen Eintrag ab. Somit ist nur der Eintrag in der Warteschlangenposition 7 mit "Bereit" bezeichnet und kann durch den Einplaner abgefertigt werden.
  • Nun seien zwei neu ausgegebene uops betrachtet, die bereit sind, in die Einplanungswarteschlange 610 gebracht zu werde. Die erste Quelle der ersten uop (S11) ist Register 11 und die zweite Quelle (S12) ist Register 2. Der Bestimmungsort der ersten uop (D1) ist Register 17. Das heißt, die erste uop verwendet Register 11 und 2, um einen Wert zu erzeugen, der in Register 17 gebracht wird. Die erste Quelle der zweiten uop (S21) ist Register 14, die zweite Quelle (S22) ist Register 12 und das Ziel (D2) ist Register 19. Die Einplanungswarteschlange 610 und die Abhängigkeitsmatrix 620, die in 6A gezeigt sind, verwenden aus Gründen der Veranschaulichung einen superskalaren Prozessor, der zwei uops gleichzeitig verarbeiten kann. Auf diese weise können zwei uops in dem Einplaner zugewiesen werden, und zwei uops können in einem beliebigen Zyklus eingeplant werden. Die erste uop wird in die Warteschlangenposition 0 gebracht, obwohl sie stattdessen in die Warteschlangenposition 3 gebracht werden könnte. Die zweite uop wird in die Warteschlangenposition 6 gebracht.
  • Es wird jetzt auf 6B Bezug genommen; zum Zeitpunkt T = 1 wurde der Eintrag in der Warteschlangenposition 7 abgefertigt, und die Position ist jetzt leer. Man beachte, daß die Spalte in der Abhängigkeitsmtrix 620, die der Warteschlangenposition 7 zugeordnet ist, oder die Spalte 7 ebenfalls gelöscht worden ist, und daß "D" in den Zeilen 1 und 4 entfernt worden ist. Dies beruht darauf, daß irgendeine Kindoperation, die von der abgefertigten uop abhängig ist, nicht länger darauf zu warten braucht, daß dieser Bestimmungsort bereit wird. Somit wird jedes Mal dann, wenn ein Eintrag in der Warteschlange abgefertigt wird, die gesamte Spalte in der Matrix, die diesem Eintrag zugeordnet ist, gelöscht. Da Spalte 7 gelöscht worden ist, sind jetzt zwei neue Einträge in den Zeilen 1 und 4 zur Abfertigung bereit.
  • Wenn eine uop in den Einplaner eintritt, wird die Abhängigkeit in der Form der Abhängigkeitsmatrix 620 aufgezeichnet. Da die uop, die in die Warteschlangenposition 0 gebracht wurde, Register 11 als Quelle hat, wird das Bit in der Matrix, das der Warteschlangenposition 1 zugeordnet ist, auf "D" gesetzt. Die beruht darauf, daß die Warteschlangenposition 1 Register 11 als ihren Bestimmungsort aufweist, und folglich die uop in Position 0, welche den Wert des Registers 11 verwenden muß, nicht vor der uop in Position 1 ausgeführt werden sollte. Die uop, die in die Warteschlangenposition 0 eingegeben wurde, weist darüber hinaus Register 2 als Quelle auf, aber kein Eintrag in der Warteschlange weist Register 2 als Bestimmungsort auf. Folglich ist der Wert im Register 2 stets gültig und es wird keine Abhängigkeit erzeugt. Bezüglich der uop, die in die Warteschlangenposition 6 eingegeben wurde, werden die Kästen in den Spalten 2 und 4 gekennzeichnet, um die Abhängigkeit von den Registern 14 bzw. 12 anzumerken.
  • Der Zeitpunkt T = 2 ist in 6C gezeigt. Die uops in den Warteschlangenpositionen 1 und 4 wurden abgefertigt und die zwei diesen Einträgen zugeordneten Spalten wurden gelöscht. Die uop, die in die Warteschlangenposition 0 gebracht wurde, ist folglich zur Abfertigung bereit. Die uops, die in die Warteschlangenpositionen 5 und 6 gebracht wurden, hängen jedoch noch von dem Eintrag in der Warteschlangenposition 2 ab, da sie den Wert im Register 14 als Quelle benötigen.
  • Man beachte, daß bei einem superskalaren Prozessor, bei dem zwei uops gleichzeitig an dem Einplaner eintreffen können, Vorsorge für den Fall getroffen werden muß, bei dem eine Elternoperation in einem Kanal zum gleichen Zeitpunkt eintrifft, zu dem ihr Kind in dem anderen Kanal eintrifft. In diesem Fall findet die eintretende Kind-uop ihre Eltern-uop nicht in der Einplanungswarteschlange 610, aber diese Information wird noch benötigt, um die Abhängigkeitsmatrix 620 korrekt einzurichten. In diesem Fall ist es erforderlich, Abhängigkeitsüberprüfungen zwischen gleichzeitigen uops auszuführen, wenn sie in die Abhängigkeitsmatrix 620 gebracht werden. Die Programmreihenfolge garantiert, daß nur die Quellen der späteren uop mit dem Bestimmungsort der früheren uop verglichen werden müssen, so daß der Vergleich nicht in beiden Richtungen ausgeführt werden muß. Das Ergebnis des Vergleichs oder Gleichzeitigkeitsbit kann dann berücksichtigt werden, wenn die Abhängigkeitsmatrix 620 eingerichtet wird.
  • 7 ist eine Blockdarstellung der Einplanungsschaltung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Die Schaltung enthält eine Abhängigkeitsmatrix 710, die mit einer Bereit-Bestimmungseinheit 720 gekoppelt ist. Die Bereit-Bestimmungseinheit 720 erfaßt, wenn sämtliche Bits in einer Zeile gelöscht sind. Wenn die Bereit-Bestimmungseinheit 720 erfaßt, daß sämtliche Bits einer Zeile gelöscht sind, ist die dieser Zeile zugeordnete Operation zur Abfertigung bereit. Wenn mehr als eine Operation bereit ist, bestimmt die Prioritätslogik 730, welche der bereiten Operationen eingeplant werden sollte. Die abgefertigten Operationen löschen darüber hinaus die zugehörige Spalte in der Abhängigkeitsmatrix 710, da weitere Einträge nicht länger auf den abgefertigten Eintrag warten müssen.
  • Es wird jetzt auf 8 Bezug genommen, welche eine Fünf-Stufen-Pipeline für einen Matrixeinplaner gemäß einem Ausführungsbeispiel der vorliegenden Erfindung veranschaulicht. Die erste Stufe der Pipeline weist uops den Warteschlangenpositionen in dem Einplaner zu. Leere Schlitze (Slots) werden auf der Grundlage der Freigabe (Deallocation) von Positionen in dem vorgehenden Zyklus bestimmt und es wird entschieden, wie viele uops, sofern vorhanden, zugewiesen werden können. Eingehende uops werden freien Positionen in der Warteschlange zugewiesen und geeignete Schreib-Vektoren werden erzeugt, um in der nächsten Stufe der Pipeline verwendet zu werden.
  • In der zweiten Stufe der Pipeline werden die Quellen der eingehenden uops mit dem vorhandenen Bestimmungsregistersatz verglichen, und die Ergebnisse der Vergleiche werden zu Verwendung in der nächsten Stufe gespeichert. Gleichzeitig werden die Bestimmungsorte in die zugewiesenen Einträge unter Verwendung der Schreibvektoren, die während der letzten Stufe erzeugt worden sind, geschrieben. Da die Gültig-Bits für die neu eingeschriebenen Bestimmungsorte nicht geschrieben worden sind, können Quellen nicht mit neu eingeschriebenen Bestimmungsorten verglichen werden.
  • In der dritten Stufe der Pipeline werden Vergleichsergebnisse verwendet, um die Matrix für die neu eingeschriebenen Einträge einzurichten. Die Gültig-Bits werden dann geschrieben, um eine Bewertung der Matrix in dem nächsten Zyklus zu ermöglichen.
  • Die vierte Stufe der Pipeline ist die Einplanungsschleife. Irgendwelche Spaltenlöschungen, die von abgefertigten uops verursacht sind, werden zu den Matrixbits weitergeleitet. Jede Zeile wird dann hinsichtlich der Bereitschaft bewertet. Sofern eine uop nicht bereit ist, wird die Bewertung im nächsten Zyklus erneut durchgeführt. Sofern eine uop bereit ist, wird sie gegenüber anderen zur Abfertigung bereiten uops priorisiert. Sobald die uop zur Abfertigung bereit ist, wird ein Abfertigungsvektor an den Registersatz gesendet, um die erforderlichen Informationen zu lesen und den Eintrag freizugeben (deallocate). Dies erzeugt darüber hinaus ein Signal, das die zugehörigen Spalten in der Matrix löscht, was es irgendwelchen Kindern oder abhängigen uops ermöglicht, sich auf eine Abfertigung in nachfolgenden Zyklen vorzubereiten.
  • Die fünfte Stufe der Pipeline ist die Freigabe (Deallocation) der zuvor abgefertigten Einträge aus dem Einplaner. Diese Stufe liest darüber hinaus gleichzeitig erforderliche Informationen aus einem Registersatz, die an die Ausführungseinheiten gesendet werden sollen. Diese Informationen können beispielsweise Operanden, Quellen, Bestimmungsregister, Direktwerte und Identifizierer umfassen.
  • 9 ist ein Ablaufdiagramm eines Verfahrens zum Einplanen von Operationen gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Anfänglich wird festgestellt, welche Einträge in dem Einplaner leer sind oder verfügbar sind, um eine eingehende uop zu speichern, wie es bei 910 angezeigt ist. Dies kann beispielsweise der ersten Stufe der Pipeline, die in 8 gezeigt ist, entsprechen.
  • Es wird wieder auf 9 Bezug genommen; die Quellen der neuen uops werden mit den Bestimmungsorten der gültigen Einträge, die sich bereits in der Einplanungswarteschlange befinden, bei 920 verglichen, und die Vergleichsergebnisse oder Treffer werden für die weitere Verarbeitung protokolliert. Wie es bei 922 angezeigt ist, werden die Bestimmungs- oder Ergebnisregister ebenfalls in den zugewiesenen Eintrag eingeschrieben. Diese Aktionen können der zweiten Stufe der in 8 gezeigten Pipeline entsprechen. Die Matrix wird dann bei 930 eingerichtet, und die Gültig-Bits werden bei 932 unter Verwendung dieser zuvor berechneten Bits eingeschrieben. Diese Aktionen können der dritten Stufe der in 8 gezeigten Pipeline entsprechen.
  • Die Matrix wird bewertet, wie es bei 940 gezeigt ist, indem die Abhängigkeitsbits in der Abhängigkeitsmatrix in jedem Zyklus überwacht werden. Sofern nicht sämtliche Bits in einer Zeile einer uop gelöscht sind, wird die Bewertung fortgesetzt. Wenn sämtliche Bits in einer Zeile gelöscht sind, ist die uop bereit, abgefertigt zu werden, und bei 942 wird die Priorisierung ausgeführt. Die uop wird bei 944 abgefertigt, und die zugehörigen Spalten in der Abhängigkeitsmatrix werden gelöscht. Dies wiederum kann es weiteren uops ermöglichen, abgefertigt zu werden. Diese Aktionen bilden eine Einplanungsschleife in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung und können der vierten Stufe der in 8 gezeigten Pipeline entsprechen. Als nächstes wird bei 950 die uop freigegeben (deallocated) und das Gültig-Bit wird zurückgesetzt, was eine erneute Verwendung des Eintrags ermöglicht. Bei 952 werden die Informationen der abgefertigten uop zur Ausgabe an die Ausführungseinheit ausgelesen. Dies kann der fünften Stufe der in 8 gezeigten Pipeline entsprechen.
  • Obwohl hier verschiedene Ausführungsbeispiele speziell veranschaulicht und beschrieben sind, ist es klar, daß Modi fikationen und Variationen der vorliegenden Erfindung von den obigen Lehren abgedeckt werden und innerhalb des Schutzumfangs der anhängigen Ansprüche liegen, ohne vom Geist und beabsichtigten Umfang der Erfindung abzuweichen. Obwohl beispielsweise ein Einplaner für uops verwendet wurde, um ein Ausführungsbeispiel der vorliegenden Erfindung zu veranschaulichen, ist es klar, daß Einplaner für andere Arten von Operationen ebenfalls in den Umfang der Erfindung hineinfallen. Es sollte in ähnlicher Weise klar sein, daß die oben beschriebenen speziellen Architekturen nur der Veranschaulichung dienen. Andere Matrixeinplanerarchitekturen fallen ebenfalls in den Umfang der vorliegenden Erfindung. Obwohl die Erfindung unter Bezugnahme auf eine spezielle Prozessorarchitektur beschrieben worden ist, ist sie darüber hinaus bei einer beliebigen Anzahl alternativer Architekturen mit jeweils einer großen Vielzahl von Mikroarchitekturen nützlich. Obwohl Software oder Hardware zum Steuern bestimmter Funktionen beschrieben wurde, können schließlich solche Funktionen unter Verwendung entweder von Software, Hardware oder Kombinationen von Soft- und Hardware ausgeführt werden, wie es im Stand der Technik gut bekannt ist. Wie es ebenfalls bekannt ist, kann Software auf ein Medium, wie beispielsweise einer Festplatte oder einer Diskette oder einer CD-ROM in Form von Befehlen, die von einem Prozessor ausgeführt werden können, gespeichert werden. Die Befehle können auf dem Medium in einem komprimierten und/oder verschlüsselten Format gespeichert werden. In der hier verwendeten Weise sollen die Worte "ausgebildet, um durch einen Prozessor ausgeführt zu werden" sich auch auf Befehle erstrecken, die in einem komprimierten und/oder verschlüsselten Format gespeichert sind, sowie auf Befehle, die compiliert oder von einem Installierer installiert werden müssen, bevor sie durch den Prozessor ausgeführt werden können.

Claims (5)

  1. Verfahren zum Einplanen von Operationen in einem Prozessor, wobei jede Operation wenigstens eine Quelle und einen Bestimmungsort definiert, wobei: a) eine einzuplanende Operation empfangen und einem verfügbaren Eintrag in einer mehrere Einträge aufweisenden Außer-der-Reihe-Einplanungswarteschlange (510) einer Einplanungsschaltung zugeteilt wird (910) und dabei: a1) die Quelle bzw. Quellen der zugeteilten Operation mit Bestimmungsorten von in der Einplanungswarteschlange (510) anhängigen Operationen verglichen wird, bzw. werden (920), um zu bestimmen, ob die Ausführung der empfangenen Operationen von einem Ergebnis der Ausführung einer oder mehrerer der zuvor anhängigen Operationen abhängig ist; a2) dann, wenn die Quelle bzw. eine der Quellen mit einem Bestimmungsort einer anhängigen Operation übereinstimmt, eine Anzeige (D) dieser Abhängigkeit in einem Speicherplatz einer dem Eintrag zugeordneten Zeile einer Abhängigkeitsmatrix (520) gespeichert wird (930), wobei der Speicherplatz in einer Spalte der Abhängigkeitsmatrix angeordnet ist, der derjenigen Operation zugeordnet ist, von welcher die empfangene und zugeteilte Operation abhängt; und b) die Operationen auf der Basis der gespeicherten Abhängigkeitsanzeigen (D) eingeplant werden, wobei eine Operation als zur Abfertigung bereit angesehen wird, wenn es keine Abhängigkeitsanzeigen gibt, die anzeigen, daß die Operation von einer anderen Operation in der Einplanungswarteschlange abhängig ist, und wobei dann, wenn eine Operation für die Ausführung abgefertigt wird (944), die zugehörige Spalte in der Abhängigkeitsmatrix gelöscht und der Eintrag in der Einplanungswarteschlange freigegeben wird (950).
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß ein Eintrag aus der Einplanungswarteschlange entfernt wird, wenn die dem Eintrag zugeordnete Operation ausgeführt worden ist; und die der ausgeführten Operation zugeordnete Spalte in der Abhängigkeitsmatrix gelöscht wird.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Operationen Mikrooperationen sind.
  4. Verfahren nach einem der Ansprüche 1–3, gekennzeichnet durch: Priorisieren bereiter Einträge in der Einplanungswarteschlange, wenn mehr als ein Eintrag bereit ist, eingeplant zu werden.
  5. Eine Matrixeinplaner-Schaltungsanordnung zum Einplanen von Operationen nach einem Verfahren nach einem der Ansprüche 1–4, aufweisend: eine Einplanungswarteschlange (510) mit mehreren Einträgen zum Halten von empfangenen und zur Ausführung abzufertigenden Operationen; eine Abhängigkeitsmatrix (520) mit Zeilen, die jeweils einem Eintrag in der Einplanungswarteschlange (510) entsprechen, und Spalten, wobei jede Spalte eine Abhängigkeit von einer Operation in einem Eintrag in der Einplanungswarteschlange entspricht, wobei diejenigen Felder einer Zeile der Abhängigkeitsmatrix eine Anzeige (D) einer Abhängigkeit von einer zuvor in die Einplanungswarteschlange aufgenommenen Operation enthalten, die einer Spalte angehören, die dem Eintrag der zuvor in die Einplanungswarteschlange aufgenommenen Operation entspricht; und eine Einplaneinheit, die einen Eintrag in der Einplanungswarteschlange auf der Grundlage der gespeicherten Abhängigkeitsanzeigen (D), in der Abhängigkeitsmatrix auswählt.
DE19983476T 1998-08-18 1999-08-18 Verfahren und Schaltungsanordnung zur Einplanung von Operationen unter Verwendung einer Abhängigkeitsmatrix Expired - Fee Related DE19983476B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/135,170 US6334182B2 (en) 1998-08-18 1998-08-18 Scheduling operations using a dependency matrix
US09/135,170 1998-08-18
PCT/US1999/018715 WO2000011545A1 (en) 1998-08-18 1999-08-18 Scheduling operations using a dependency matrix

Publications (2)

Publication Number Publication Date
DE19983476T1 DE19983476T1 (de) 2001-07-26
DE19983476B4 true DE19983476B4 (de) 2006-12-14

Family

ID=22466869

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19983476T Expired - Fee Related DE19983476B4 (de) 1998-08-18 1999-08-18 Verfahren und Schaltungsanordnung zur Einplanung von Operationen unter Verwendung einer Abhängigkeitsmatrix

Country Status (6)

Country Link
US (1) US6334182B2 (de)
CN (1) CN1158596C (de)
DE (1) DE19983476B4 (de)
GB (1) GB2357869B (de)
HK (1) HK1042566B (de)
WO (1) WO2000011545A1 (de)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060165606A1 (en) 1997-09-29 2006-07-27 Nektar Therapeutics Pulmonary delivery particles comprising water insoluble or crystalline active agents
US6356900B1 (en) * 1999-12-30 2002-03-12 Decode Genetics Ehf Online modifications of relations in multidimensional processing
US6434557B1 (en) 1999-12-30 2002-08-13 Decode Genetics Ehf. Online syntheses programming technique
US7016910B2 (en) * 1999-12-30 2006-03-21 Decode Genetics Ehf. Indexing, rewriting and efficient querying of relations referencing semistructured data
US7871598B1 (en) 2000-05-10 2011-01-18 Novartis Ag Stable metal ion-lipid powdered pharmaceutical compositions for drug delivery and methods of use
AU6124601A (en) 2000-05-10 2001-11-20 Alliance Pharmaceutical Corporation Phospholipid-based powders for drug delivery
US8404217B2 (en) 2000-05-10 2013-03-26 Novartis Ag Formulation for pulmonary administration of antifungal agents, and associated methods of manufacture and use
GB0022189D0 (en) * 2000-09-11 2000-10-25 Univ Loughborough Method and apparatus for analytical problem solving
JP3567878B2 (ja) * 2000-10-02 2004-09-22 日本電気株式会社 パケット交換装置
US6950927B1 (en) * 2001-04-13 2005-09-27 The United States Of America As Represented By The Secretary Of The Navy System and method for instruction-level parallelism in a programmable multiple network processor environment
GB2380825B (en) * 2001-10-12 2004-07-14 Siroyan Ltd Processors and compiling methods for processors
US7055021B2 (en) * 2002-02-05 2006-05-30 Sun Microsystems, Inc. Out-of-order processor that reduces mis-speculation using a replay scoreboard
JP3577052B2 (ja) * 2002-03-19 2004-10-13 株式会社東芝 命令発行装置及び命令発行方法
US7571302B1 (en) * 2004-02-04 2009-08-04 Lei Chen Dynamic data dependence tracking and its application to branch prediction
US20050216900A1 (en) * 2004-03-29 2005-09-29 Xiaohua Shi Instruction scheduling
US7730282B2 (en) * 2004-08-11 2010-06-01 International Business Machines Corporation Method and apparatus for avoiding data dependency hazards in a microprocessor pipeline architecture using a multi-bit age vector
US20070043932A1 (en) * 2005-08-22 2007-02-22 Intel Corporation Wakeup mechanisms for schedulers
US20070136699A1 (en) * 2005-12-08 2007-06-14 International Business Machines Corporation Dependency matrices and methods of using the same for testing or analyzing an integrated circuit
US20080320016A1 (en) * 2007-06-19 2008-12-25 Raza Microelectronics, Inc. Age matrix for queue dispatch order
US20080320274A1 (en) * 2007-06-19 2008-12-25 Raza Microelectronics, Inc. Age matrix for queue dispatch order
JP5142132B2 (ja) * 2007-11-01 2013-02-13 インターナショナル・ビジネス・マシーンズ・コーポレーション 設計プロセスの順序の決定を支援する技術
US7958336B2 (en) * 2008-06-30 2011-06-07 Intel Corporation System and method for reservation station load dependency matrix
US8135942B2 (en) 2008-08-28 2012-03-13 International Business Machines Corpration System and method for double-issue instructions using a dependency matrix and a side issue queue
US8239661B2 (en) * 2008-08-28 2012-08-07 International Business Machines Corporation System and method for double-issue instructions using a dependency matrix
US8099582B2 (en) * 2009-03-24 2012-01-17 International Business Machines Corporation Tracking deallocated load instructions using a dependence matrix
US20100257341A1 (en) * 2009-04-03 2010-10-07 International Business Machines Corporation Selective Execution Dependency Matrix
US20100257339A1 (en) * 2009-04-03 2010-10-07 International Business Machines Corporation Dependency Matrix with Improved Performance
US8127116B2 (en) * 2009-04-03 2012-02-28 International Business Machines Corporation Dependency matrix with reduced area and power consumption
US9286075B2 (en) * 2009-09-30 2016-03-15 Oracle America, Inc. Optimal deallocation of instructions from a unified pick queue
WO2013106032A2 (en) * 2011-04-08 2013-07-18 Altera Corporation Systems and methods for using memory commands
US10235180B2 (en) * 2012-12-21 2019-03-19 Intel Corporation Scheduler implementing dependency matrix having restricted entries
US20140258697A1 (en) * 2013-03-07 2014-09-11 Mips Technologies, Inc. Apparatus and Method for Transitive Instruction Scheduling
US9400653B2 (en) 2013-03-14 2016-07-26 Samsung Electronics Co., Ltd. System and method to clear and rebuild dependencies
US9665280B2 (en) * 2014-09-30 2017-05-30 International Business Machines Corporation Cache coherency verification using ordered lists
US10296337B2 (en) 2016-03-21 2019-05-21 International Business Machines Corporation Preventing premature reads from a general purpose register
US11803389B2 (en) * 2020-01-09 2023-10-31 Microsoft Technology Licensing, Llc Reach matrix scheduler circuit for scheduling instructions to be executed in a processor
US11934834B2 (en) * 2021-10-19 2024-03-19 Ampere Computing Llc Instruction scheduling in a processor using operation source parent tracking
US20230195517A1 (en) * 2021-12-22 2023-06-22 Advanced Micro Devices, Inc. Multi-Cycle Scheduler with Speculative Picking of Micro-Operations
US20240004657A1 (en) * 2022-06-30 2024-01-04 Advanced Micro Devices, Inc. Encoded data dependency matrix for power efficiency scheduling

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997013201A1 (en) * 1995-10-06 1997-04-10 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
US5655096A (en) * 1990-10-12 1997-08-05 Branigin; Michael H. Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
US5710902A (en) * 1995-09-06 1998-01-20 Intel Corporation Instruction dependency chain indentifier
US5745726A (en) * 1995-03-03 1998-04-28 Fujitsu, Ltd Method and apparatus for selecting the oldest queued instructions without data dependencies

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546597A (en) * 1994-02-28 1996-08-13 Intel Corporation Ready selection of data dependent instructions using multi-cycle cams in a processor performing out-of-order instruction execution
US6216200B1 (en) * 1994-10-14 2001-04-10 Mips Technologies, Inc. Address queue
US5884059A (en) * 1996-01-26 1999-03-16 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
US5778438A (en) 1995-12-06 1998-07-07 Intel Corporation Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests
US5796975A (en) * 1996-05-24 1998-08-18 Hewlett-Packard Company Operand dependency tracking system and method for a processor that executes instructions out of order
US5913925A (en) * 1996-12-16 1999-06-22 International Business Machines Corporation Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
US6016540A (en) * 1997-01-08 2000-01-18 Intel Corporation Method and apparatus for scheduling instructions in waves
US5923862A (en) * 1997-01-28 1999-07-13 Samsung Electronics Co., Ltd. Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions
US5850533A (en) * 1997-06-25 1998-12-15 Sun Microsystems, Inc. Method for enforcing true dependencies in an out-of-order processor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5655096A (en) * 1990-10-12 1997-08-05 Branigin; Michael H. Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
US5745726A (en) * 1995-03-03 1998-04-28 Fujitsu, Ltd Method and apparatus for selecting the oldest queued instructions without data dependencies
US5710902A (en) * 1995-09-06 1998-01-20 Intel Corporation Instruction dependency chain indentifier
WO1997013201A1 (en) * 1995-10-06 1997-04-10 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor

Also Published As

Publication number Publication date
DE19983476T1 (de) 2001-07-26
WO2000011545A1 (en) 2000-03-02
HK1042566B (zh) 2005-04-22
GB2357869A (en) 2001-07-04
GB0103430D0 (en) 2001-03-28
CN1158596C (zh) 2004-07-21
HK1042566A1 (en) 2002-08-16
CN1331816A (zh) 2002-01-16
GB2357869B (en) 2003-05-21
US6334182B2 (en) 2001-12-25

Similar Documents

Publication Publication Date Title
DE19983476B4 (de) Verfahren und Schaltungsanordnung zur Einplanung von Operationen unter Verwendung einer Abhängigkeitsmatrix
DE102014011332B4 (de) Priorisieren von anweisungen basierend auf typ
DE2714805C2 (de)
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE69926365T2 (de) Software-konfigurierbare technik zum priorisieren von unterbrechungen in einem auf einem mikroprozessor basierten system
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE60115982T2 (de) Verfahren und Vorrichtung zum Zuordnen funktioneller Einheiten in einem Mehrfachthread-VLIM-Prozessor
DE10297597T5 (de) Suspendieren der Ausführung eines Threads in einem Mehrfach-Thread-Prozessor
DE4410775C2 (de) Steuergerät und Arbeitsverfahren eines Betriebssystems für dieses Steuergerät
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren
DE19534752A1 (de) Verfahren und System zum Liefern einer Unterstützung für eine spekulative Ausführung
DE3508640A1 (de) Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus
DE19860062A1 (de) Verfahren der erzwungenen Registerteilung für die Konstruktion von leistungsarmen VLSI
DE1549474C3 (de) Anordnung In einer elektronischen digitalen Datenverarbeitungsanlage zur Ausführung eines ersten Befehls und gleichzeitigen Decodierung eines folgenden Befehls
DE112020005987T5 (de) Setzen von prüfpunkten in akkumulatorregister-ergebnissen in einem mikroprozessor
DE10085273B4 (de) Verfahren und Einrichtung zum Einplanen und Abfertigen von Befehlen in einer Prozessor-Pipeline
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
DE3307194C2 (de)
DE10063915A1 (de) Informationsverarbeitungsgerät, das eine Mehrzweckverarbeitung und Transaktionsverarbeitung ausführt
DE60201511T2 (de) Verfahren, system und computerprogrammprodukt zum manipulieren eines anweisungsflusses in einer pipeline eines prozessors
EP0664905B1 (de) Verfahren zur durchfürhung von tests an auf einem rechner parallel ablauffähigen objekten eines objektorientierten programmes
DE69836056T2 (de) Prozessor mit verringerter Zahl von bedingten Befehlen
DE10110578B4 (de) Hierarchisches Prioritätsfilter mit integrierter Serialisierung

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06F 922

8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20110301